Advertisement
Guest User

SDVX DIY controller

a guest
Jul 22nd, 2018
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.46 KB | None | 0 0
  1. So you've decided that Dao/Virgoo/Yuan SDVX controller is pricier than you want to pay? Well, you can build your own if you're willing to do a little bit of work by yourself.
  2.  
  3. Table Of Contents
  4.  
  5. Housing
  6.  
  7. Buttons
  8. -Sanwa
  9. -Knockoffs
  10.  
  11. Springs/Switches
  12.  
  13. Encoders
  14. -24PPR
  15. -Copal
  16.  
  17. PCB
  18. -Cannibalized
  19. -Arduino Leo
  20. -Arcin
  21.  
  22. Assembly
  23. -Arduino
  24. -Arcin
  25.  
  26. All images are hidden behind spoiler tags for organization's sake.
  27.  
  28. HOUSING:
  29. The housing (Or "shell") of the controller is the part that you'll be putting all the other components into. There's a wide variety of options available when building your shell, you can make them either extremely basic and the extreme of function before form, or you can make an exact replica of the arcade control panel. Alternately, some people make mini-sized controllers.
  30.  
  31. For this guide, the standard arcade measurements are provided. They can be scaled down or flat-out ignored if you're trying to build a miniature controllers, but with this info you can at least see what the button spacing is in the arcade.
  32.  
  33. Hidden text: Show
  34. Spacing measurements
  35.  
  36. I recommend simply marking these spacings out for now, and keep in mind that the buttons all have a 2mm 'lip' that has to be accounted for (And can also hide some bad detail work).
  37. Hidden text: Show
  38. Pics of the 2mm lip
  39.  
  40. Because of this, the width of each button hole is going to be 4mm shorter than what's pictured.
  41.  
  42. For optimal measuring, I'd recommend a Triangle ruler and Calipers. If you can't get either of those, it's doable with a ruler that has mm markings, but your margin of error will be larger.
  43.  
  44. Alternately, if you have a friend with a finished controller, you can ask to borrow it to trace out where the buttons are.
  45.  
  46. The nitty-gritty of actually building a box is outside the scope of this particular guide, but This guide covers just about everything you'd need regarding building a wooden box to act as a controller housing. My personal recommended design is based off This design but if you don't care what your box looks like and just want to play, slapping together some MDF with some wood glue will still work.
  47.  
  48. One major difference between a SDVX controller and a fightstick is the fact that SDVX uses square/rectangular buttons which are a bit harder to cut than the simple circular ones for fightsticks. Ideally, a CNC would be used to cut out each button, but it's also possible to cut them out with a dremel and This tool. It takes a while and is harder to keep as straight, but those 2mm button lips help hide slips of the hand. If you have clamps available, you can use them to fasten a guide to help keep straight.
  49.  
  50. Regardless of which method you choose, remember that due to the size of encoders and buttons, the absolute smallest an arcade-accurate box can be is 16" wide by 8" long, and in any case should should be at least 4" tall to accommodate for button and switch heights unless you pick shorter buttons.
  51.  
  52. The holes drilled for the encoders will be a bit unusual as well; if you use the encoders that get linked in this guide, you'll need to drill a hole 6mm in diameter through the board, and then a hole at least 32mm across drilled from the underside, leaving around 3 mm of board available to create a "well" for the encoder to sit in.
  53.  
  54. Like so:
  55. Hidden text: Show
  56. Pics of encoder holes
  57.  
  58.  
  59. BUTTONS:
  60. There are a couple of different sources you can go with for buttons, but the gold standard is Sanwa. Sanwa's buttons are very high quality and last for a long time; no surprise it's what the arcades use. For convenience's sake, here's links to each of the buttons you'll need.
  61.  
  62. Sanwa Buttons
  63. 60mm squares (Need 4)
  64. Rectangular (Need 2)
  65. Square (Need 1)
  66.  
  67. As you probably noticed, Sanwa buttons are a little pricey. However, Sanwa's buttons come with springs and microswitches so you don't have to buy those separately. The only catch to that is that the included set is not arcade-accurate for SDVX. If you're just looking to play though, you can always replace the springs and microswitches sometime in the future as you see fit. See the next section for more info regarding springs and switches.
  68.  
  69. If Sanwa is a little out of your price range, there are buttons available from other sellers as well. The switches included with them tend to be absolute garbage and extremely heavy though, so you'll probably want to go ahead and grab the switches linked in the next section if you go this route.
  70.  
  71. The four main face buttons (BT-A through BT-D) are 60mm white square buttons.
  72. The two FX Buttons are 30mm rectangular buttons.
  73. the Start button is a 30mm blue square button.
  74. ALL OF THESE ARE SURFACE-MOUNT BUTTONS. If they are NOT surface-mount buttons, they will NOT fit with the measurements provided above and end up being more trouble than they're worth. MAKE SURE YOU GET SURFACE-MOUNT BUTTONS.
  75.  
  76. Hidden text: Show
  77. GET THIS. Note the bottom part of the button is a nut.
  78.  
  79. Hidden text: Show
  80. NOT THIS. This is not surface-mount and is way more trouble than it's worth to put into a board.
  81.  
  82. For convenience's sake, here's some links for the correct buttons. I'll try to keep this list updated, but due to the nature of certain online retailers, I can't always guarantee that the links won't die between me writing this and you reading it. If there's a broken link, please pm me (chao77) and I'll look for a new source.
  83.  
  84. Generic Buttons
  85. 60mm Squares (Need 4)
  86. Rectangle 30 mm (Need 2) - This button is red instead of black, but you can order individually
  87. Rectangle 30 mm (need 2) - Still not black, but costs the same as two of the individual ones from above and you get 5. Plus, more colors to choose from. Still no black though.
  88. 30mm Square (Need 1)
  89.  
  90. NOTE: How to use the nuts for each button
  91. I'll admit, when I built my first controller I had no idea what the purpose of the nut included with each button was. Allow me to show you what they're actually used for:
  92. Hidden text: Show
  93.  
  94. SPRINGS/SWITCHES
  95. With each button, I recommend getting a spring and you'll absolutely need a microswitch. While you can play without springs, the microswitches are what actually make the button presses register. Inside each button is a hollow space where you can insert the spring. Typically you'll have to take the button at least partially apart to get to it. Here's how to get to the spring in the 60mm buttons. The same general process applies to all types:
  96. Hidden text: Show
  97. Microswitches are easier to swap out, as they typically hang from the bottom of the button and require the end-user to install them in the first place. This is the microswitch:
  98. Hidden text: Show
  99. Microswitches
  100.  
  101. I highly recommend swapping out the switches that come with your buttons unless you went with the Sanwa buttons linked in the previous section.
  102.  
  103. Available Switches:
  104. 10g
  105. 25g
  106. 50g
  107. 200g
  108.  
  109. Available spring weights
  110.  
  111. 20g
  112. 60g
  113. 100g
  114. 200g
  115. 400g
  116.  
  117.  
  118. If you're looking for arcade accuracy, 100g springs with 25g switches seems to be the norm. I personally use 50g springs and 25g switches, as this is supposed to feel like a worn-in arcade machine's buttons. Spring and button weights are almost entirely up to personal preference though, so experiment with them a bit if you can and see what weight you prefer.
  119.  
  120.  
  121. Quick disconnects for the switches are also very handy, they make it so you don't have to permanently connect the individual wires to a switch but they hold very well. You can grab a large bag for pretty cheap from a hardware store or from here
  122.  
  123. Link to Quick disconnects on Amazon
  124. Crimpers for the quick disconnects.
  125.  
  126. There are much better crimpers available, and truth be told the one linked above is terrible. If you're willing to dish out a bit more, I use these:
  127.  
  128. Better Crimpers for quick disconnects
  129.  
  130.  
  131. ENCODERS
  132. There's a wide variety of rotary encoders available, but only two different kinds that I would actually recommend. When I first started, I was under the impression that a larger PPR value meant a better encoder. While a larger PPR value means that the encoder is more sensitive, playing Voltex doesn't really require a high sensitivity. In fact, a lot of the time it's recommended to turn down the encoder's sensitivity in bemanitools to help keep the lasers on track.
  133.  
  134. What's really important for SDVX encoders is to have something to make them stop spinning when you aren't actively turning them anymore. There are two different ways to do this: Dampers and Detents. In the arcade the encoders have dampers on them to keep them from free-spinning, and one of the cheaper methods for home-built setups is to use encoders with detents. There are hundreds of 24PPR encoders with detents available for extremely cheap online that work just fine, but they click as you turn them (due to the detents). The clicking isn't loud, but some people don't like the feeling.
  135.  
  136. There aren't many encoders available that use dampers and the only arcade-accurate encoders I've seen are the ones offered by Dao or Virgoo for extremely high prices. The general consensus for home-built SDVX controllers is to use Copal encoders. They have great dampening that's completely smooth, and the only trade-off is that they aren't as abuse-resistant as the arcade-accurate rigs. As long as they're used properly, Copal Encoders last a long time and feel great.
  137.  
  138. The only other thing you'll need for an encoder is a knob to put over top of it for when you're playing the game. They don't' need to be fancy, they just need to have a bolt to tighten them on to the encoder's post. Links to either recommended encoder types as well as recommended knobs are provided below:
  139.  
  140. Encoders:
  141. 24ppr cheapos
  142. Copals
  143. DJ Dao also offers arcade-accurate encoders, but you have to email him to ask about them. I don't know if he sells them by themselves.
  144.  
  145. [/b]Knobs:[/b]
  146. Silver Knobs
  147. Black knobs
  148.  
  149.  
  150.  
  151. PCB
  152. The last thing you'll need is a PCB to act as the "brain" for your controller. You can cannibalize an old USB controller, use an Arduino Leonardo, or buy a dedicated board such as the USBemani or Arcin. The USBemani is difficult to find anymore due to being discontinued, but Zyp still makes Arcin boards in batches based on demand. This is probably the simplest method as it's a simple drop-in board, but you'll need to make sure that your buttons and encoders are set up in jst-xh harnesses in order to actually connect to the board (more on jst xh in the next section).
  153.  
  154. If you're going to cannibalize and old USB controller, you'll need a soldering iron, a ball mouse, and the controller must have at least 7 standard button inputs. This method is rather difficult due to how the encoders have to interface with a board and is not recommended for the average person. If there is demand for elaboration on this method I will fill it out, but for now I'd recommend something else.
  155.  
  156. Using an Arduino Leonardo is probably the simplest and cheapest method to getting a working controller. The largest drawback is that the board may have slightly variable lag which will affect your scores, but the game will be perfectly playable up to at least level 13 (I didn't have any issues when I used a Leonardo as a PCB, but I switched to an Arcin right around the time I was starting to play 14s. Keep in mind this is purely anecdotal though.)
  157.  
  158. In order to get the Leonardo up and running as your controller's PCB, you'll need the code from [here] installed on your board, and then wires connected to the appropriate ports. In order to keep the wires connected to the board despite moving around, I recommend the Screw shield. A more detailed guide is provided in the next section.
  159.  
  160. Arduino Leonardo Clone
  161. Screw Shield
  162.  
  163.  
  164. Arcin is probably the best board to use for any home bemani controller. The timing on the board is excellent and it even supports HID lighting if you want to set up arcade-accurate lighting on your controller, but you can skip over that if you're not interested. An Arcin costs $50 USD from Zyp and connects to the buttons and encoders using JST XH connectors. If you're not familiar with that, it's the same connector that is used in many of Dao's controllers. They look like this:
  165. Hidden text: Show
  166.  
  167. If you're building your controller from scratch, you probably don't have JST XH harnesses set up for your buttons. You'll need to pick up some JST XH harnesses, crimps and crimpers in order to set up the buttons correctly for an Arcin, unless you figure out a way to make sure that the button wires attach to the appropriate terminals. A more detailed guide is provided in the next section.
  168.  
  169. Arcin Order Thread
  170. JST XH crimps/terminals
  171. Not quite JST XH Crimpers, but they work just fine.
  172.  
  173. SETTING UP YOUR BOARD/WIRING BASICS
  174. Super basics:
  175.  
  176. So, how does a microswitch work exactly?
  177.  
  178. Like this:
  179. Hidden text: Show
  180. Switch Mechanics
  181.  
  182. The metal inside the switch is conductive, meaning that when the switch is pressed down, current flows from the signal wire to the ground wire. When a signal is grounded, the board recognizes this as the button being pressed.
  183.  
  184.  
  185. What about encoders?
  186.  
  187. Here's a large-scale version of a rotary encoder:
  188. Hidden text: Show Encoder
  189.  
  190. There are IR LEDs and receptors inside the "reader" labeled above. Based on how the LED and receiver are interrupted by the spokes of the encoder wheel, signal is sent through the wires to indicate what direction the encoder is being turned as well as how fast.
  191.  
  192.  
  193. Why do Dao/Arcin boards have four pins per button?
  194.  
  195. 3.3v and ground to power the LED, signal and ground to respond to a button press.
  196.  
  197.  
  198. What about the encoders?
  199.  
  200. 3.3v and ground to power the encoder, then signal wires for clockwise rotation and counterclockwise rotation.
  201.  
  202.  
  203. How do I get LEDs working in my board?
  204.  
  205. You'll need to have an Arcin board to get lights but if you do, you'll just need a 5v and ground wire connected to the posts on the side of the lamp holder. Keep in mind that LEDs only work one way, if you have the LED in backwards it's not going to light up but it's not broken.
  206.  
  207.  
  208.  
  209. With that out of the way,
  210. Leonardo setup
  211.  
  212. First off, you're going to need to install the Arduino software to your computer in order to load any code into it. You can download the software from here and you can choose which code to use. There's RigoHoward's code here (Credit to RigoHoward) or LeonardoJoy here. I have not personally used RigoHoward's code, so from here on out I'm referring to LeonardoJoy's code.
  213.  
  214. Once the software's installed, launch it and connect the Leonardo to your computer through USB. Windows may try to install drivers for it but it won't be able to; you'll be interfacing with it through the Arduino software anyways.
  215.  
  216. Select the "Tools" dropdown menu and make sure that the "Board: " option is set to "Arduino Leonardo" and the "Port" can say whatever it needs to, as long as it ends in "(Arduino Leonardo). Once that's done, erase everything in the window, then copy the entirety of the code from pastebin into the editor window. If you're feeling somewhat enterprising, you can modify the code a little bit to your liking but everything will run just fine as-is.
  217.  
  218. Click on "File" and choose "Upload." A save dialogue will appear so you can save your finished code, but you don't have to if you don't want to. The board is now ready to be wired to. Keep in mind that while the ports on the arduino are listed as "Analog" and "Digital", it has no significance in the case of this particular code. "D4" and "4" both refer to the same port as well.
  219.  
  220.  
  221. As defined by the code (Assuming you haven't modified it), the ports on the Leonardo board will correspond with the following key presses:
  222.  
  223. D4 -> A
  224. A0 -> B
  225. A1 -> C
  226. A2 -> D
  227. A3 -> I
  228. A4 -> F
  229. A5 -> G
  230.  
  231. Due to how Bemanitools works, you can wire any of these ports to any button and then define them during controller config since these button presses register the same as a typing on your keyboard. The encoders are a bit different though: instead of a single signal wire and a ground, you'll need a signal A and signal B wire, plus ground. If you're using anything other than the 24 ppr encoders, you'll also need 3.3v connections. The wiring scheme for the 24 PPR encoders is like this:
  232.  
  233. Hidden text: Show24PPR outputs
  234.  
  235. For a copal encoder,
  236.  
  237. Red is 3.3v
  238. White is Data A
  239. Green is Data B
  240. Black is Ground.
  241.  
  242. To wire your encoders to the Leonardo, you need to connect:
  243. Right Data A -> D0
  244. Right Data B -> D1
  245. Ground -> Any ground (Can share with buttons/left encoder)
  246.  
  247. Left Data A -> D3
  248. Left Data B ->D2
  249. Ground -> Any ground (Can share with buttons/right encoder)
  250.  
  251. 3.3v -> 3.3v
  252.  
  253.  
  254.  
  255. Once you've gotten all the button wires connected where they need to be, you should be able to plug the controller into your computer and have the button presses register as keyboard presses and encoder movement as mouse movement. Go ahead and set everything up in bemanitools and you're good to go!
  256.  
  257.  
  258. Arcin setup
  259.  
  260. Arcin doesn't require any software installation like the Leonardo does, but in order to get your buttons and encoders to work with the board you'll need to use JST XH terminals. JST XH is convenient once prepared, but is somewhat annoying to get set up in the first place. They were linked earlier but in case you need them again, here's the tools you'll need:
  261.  
  262. JST XH crimps/terminals
  263. Not quite JST XH Crimpers, but they work just fine.
  264.  
  265. The pinout for the Arcin is the same as a dao for the buttons. Assuming that the text on your Arcin is right-side up, the pins from left to right should be Signal, Ground, 5v, Ground. The two inner wires are intended for LED, the two outer wires are intended for button signals.
  266.  
  267. So first things first, you're going to need to put the crimps on one end and the quick disconnects on the other. Once you have that done, if you're not going to put LEDs in then you can connect just the signal and ground to the harness, in pins 1 and 4. Due to the nature of how the button presses work, even if they're backwards the button will still register.
  268.  
  269. You can always add the LED wires later if you like, or now if you feel so inclined. Color-coded wiring helps keep things straight as well.
  270.  
  271. Putting the harness on the Copal encoder is just as easy, just make sure that the wires match the pins correctly when you set up the harness (Black, Green, White, Red from left to right if the release tabs are on top). If you make a mistake in putting wires into the harness, they can easily be removed like so:
  272. Hidden text: Show JST XH removing pin from harness
  273.  
  274. Once you've gotten all your microswitches connected to the Arcin through JST XH, you're all set! Connect the controller and set up inputs in bemanitools and you'll be good to go. Unlike the Leonardo boards, button presses on this controller won't show up as keyboard presses.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement