I "hacked" this a few weeks ago and already posted on NFG forums, but I know people here may have a use for this thing too, so here goes: Picture of my supergun design: http://picasaweb.google.com/lh/photo/7gb_iXk1QbMQwN0Oxnme4Q?authkey=Gv1sRgCMuBmdKfnOzFIg&feat=directlink Picture contains: CPS2 game Custom built RGB to CVBS/S-Video encoder based on CXA1645 Custom built Saturn DPAD to JAMMA converter board Generic AT Power Supply The schematics: http://picasaweb.google.com/lh/photo/2e_z7-w-RvKAkuX05KQM6w?authkey=Gv1sRgCMuBmdKfnOzFIg&feat=directlink (due to forum restrictions on size of uploaded files I had to off-link it to Picasa.) A zip file with the bitmap version of the file is on the attachment. While it's fully functional as it is, suggestions and ideas are welcome.
work of doing what? anyway....next step is a case. Definitely the most cost effective model I've ever seen made *edit* also some arcade style sticks if you can come across the parts. And what cps2 game(s)/other pcbs do you have?
I did the SATURN D-PAD decoder because I did not feel the need of having a arcade style controller... The feeling of playing the real thing on pads I like to use is enough for me. Yes I had cost in mind, but if I really wanted the "arcade feel" I could just make wooden boxes and put arcade controller buttons on them. Not the fine japanese stuff you guys use (Sanwa buttons and actuators/levers) but I can find good arcade buttons here. Other point on using the PADs were the fact that arcade buttons are quite noisy. Playing at the late night with original NEO GEO AES controllers can be quite annoying if you live with other people (haha) Now, without the power supply I think I can easily fit that stuff into a plastic box of the size of an shoe box. Well, I'll think of something. I don't know if you noticed but my A/V encoder has a PlayStation style AV multi out port along with the generic S-Video and CVBS connectors. It will affect the kind of box I can use. As of JAMMA games I currently own, I have: Scramble Formation (Tokyo - Taito. I believe this board is a Korean botleg) MV-1F MVS NEO with 4 original cartridges: Waku Waku 7 Samurai Shodown 2 Money Idol Exchanger Fatal Fury 3 CPS2-D&D Shadow over Mistara (Japan, Green) CPS2-Hyper Street Fighter 2 Anniversary Edition (this is a phoenix edition botleg sadly. Seems like it used to be a Green SFZ2) CPS2-Marvel VS Capcom (Blue - USA) CPS2-Street Fighter Zero 2 (Green - Japan) And finally an Korean botleg Golden Axe with severe graphics corruption I plan on trying to fix eventually.
Tips: -74LS/HCT parts are OK to float and the pullups aren't helping. To help the HC controllers drive the LS inputs you'd want weak pulldowns. -Lose the 555! They're relatively expensive and frankly are unitaskers in digital electronics. -Avoid glitches by synchronously resetting your counter, since you have 4 states you don't even need to reset it, just ignore the high bits. -You're creating a race condition by asynchronously clocking the registers, if you had a fast controller and slow decoder there'd be a problem. -What if the controllers shorted eachother over S0 and S1? Maybe each pad should get it's own series resistor. -74139 and 74161 are more common, generic and cheaper than 74138 and 74393 which is why I used them here: http://nfggames.com/forum2/index.php?topic=3238.0
No pullups mean all buttons detected as pressed when no pad is connected. I judged this an unwanted behavior so I added the pullup. They're fine floating, indeed but sometimes they get noise from elsewhere and things get a bit random. I dislike randomness on my projects, honestly... Aw come on, the 555 is a classic... Think of it like when people want to put tube amplifiers as output for their CD players.... I liked the solution on the circuit you posted at NFG, but I think that decodes only one pad at once. Mine decode two pads in parallel. You would probably find amusing the fact that I first considered using an pair of 74LS670/74LS170 (4-by-4 Register Files With 3-State Outputs) instead of the 4 octal flip-flops... I may shamelessly copy your clock circuit as it look like a great solution to reduce the parts count on my circuit. By removing the 555, replacing the 74LS138 with the 74LS139 I can put half of the 139 as the oscillator and the other half may replace the 138 perfectly. Maybe this would save me from connecting one wire... Nothing that bothers much but yes now that you mention it ... But it does not glitch at the counter part, as it is. The only annoying glitch I had was caused by the fact that the 374s latch on the rise of the clock pin and that was causing some of them to accidentally latch the status of the button on the next row. The LEDs on the outputs of the 138 saturate them, bogging/slowing down the outputs a bit. That's a dirty hack but solved the problem. If the parts blow they're cheap enough to be replaced and it's socketed after all. I even had the choice of using the 374 or the 274. I choose the 374 over the 274 because it has tri-state outputs for bus connection, which means that the outputs are buffered. Since the circuit is clocked at a fairly slow frequency (94hz), each latch see only 1/4 of that frequency on their clock pins. I pushed the circuit well above 100khz and everything would still run fine. 100khz is overkill so I reduced the frequency to what I believe is still higher than the original pad refresh frequency on the SATURN, but slow enough to make sure all parts run cold. Even the 74LS138 with 4 of it's ports overloaded by the LEDs don't even get warm. Good call. While I'm only using original SEGA pads with this, third party pads have bad cables indeed. In case of a short circuit on such lines the decoder circuit would still operate correctly, but both pads would have the wrong buttons detected. I'll modify that, by moving the resistors to the pad connector board, one separated pair to each joystick port connector. Honestly I used parts I have here from scrap. Botleg arcade boards have plenty of 74LS374s, 74LS138s 74LS393 even. All TTL parts came from dead/unrepairable CPS1 botlegs. I have so many of them I could even pick the parts to make the board and have all parts be of the same brand. The one on the picture contains only Motorola TTL chips and an Goldstar 555. At the time I took the picture the 74LS138 chip was a TI part. But I put the Motorola one back. I thank you for the comments. I hope you also understand the reasoning for my choices on this project. Btw I love to talk about this kind of stuff (Engineering choices and related subjects) so if you have anything else to comment (or anyone else wish to) please comment.
Well it's just a matter of replacing the 161s with 374s. I've done plenty of those hah, it's a shame the right part for the job never exists. It probably won't work since 139 don't have schmitt trigger inputs. You'll have to play with it to get it working. At most you'll need another RC and maybe a T. My choice of RC wasn't very good either... I'd use a 4.7/10K and .1u for 2/1 kHz. This is the problem I was talking about with asynchronously clocking the registers. You could solve it by doing what I did, shift S0 and S1 up to Q1 and Q2 then use Q0 to clock the regs (using 8 states). That's it? Since you have 4 states, 94 Hz really isn't enough, you want at the very minimum 2x oversampling for effectively no lag which is 120 Hz x the number of states or 480 Hz for your circuit. o_0 CPS1 bootlegs must be awesome to reverse engineer, hope you aren't throwing out the boards!
Indeed... But that's where the creativity comes in. Most people I know who see me tinker with these TTL chips say "go play with FPGA instead" or "Micro controllers are better" but both MCUs and FPGA/CPLDs miss the point which is: TTLs are the LEGO of digital electronics. More analogic crap to tinker with ? No, thanks... The 555 may stay, then. I'll try to implement that ASAP. Sounds like a pretty good idea (now that I understand it better) But... (read rest on next quote reply) Implementing Q0 as clock for the registers (I'll feed it to the 74LS138 CS pin) and shift S0 and S1 to Q1 and Q2 but then that means the 24hz for each latch will reduce to 12hz. That will surely cause lag. My conclusion after using the board for two weeks is that 24hz is fast enough to be not noticed by anyone playing a fighting game such as Street Fighter. I even ran my Scramble Formation board on the JAMMA converter and never noticed any lag. But indeed I'll have some lag after the modification. I'll change the frequency after I finsh the counter modifications. Maybe set it to be 150hz. No, I'm not... But mostly they have CPLDs and lots of PALs making reverse engineering quite difficult. At least it should allow for a good understanding of the video generation circuit as you can see a bunch of shift registers, adders, buffers and memory.
I hate to butt-in, but just wanted to say this is pretty awesome. Man, that must have been a lot of stripping>tinning>soldering. It's the only thing that keeps me from projects nowadays, I can only go for so many hours doing that stuff.
After considering Calpis suggestions, PAD decoder logic was updated yet again: http://picasaweb.google.com/lh/photo/eTBAXhUEKwCPoHjVFBdj4g?authkey=Gv1sRgCMuBmdKfnOzFIg&feat=directlink This time it's working perfectly without any hacks. The LEDs are gone and I have the feeling that the decoder is going to last forever. Also, no lag at all. Currently each latch is being pooled at approximately 120hz. Resetting or not the counter does not mater at all as only the lower outputs are used and in sequence so I decided to ground the clear pin just to allow the counter to run. If I don't discover anything wonky on this design (I'm using it currently) I'll consider this the final diagram.