10 Console Multi-Cabinet - controller switching - electronics experts needed

<div>EDIT:  This project is still alive, but is being completely reworked.  There will no longer be any rotary switches.  An Arduino will handle switching of controls and audio/video, as well providing programmable turbo buttons which are timed to v-sync.</div><div><br></div><div>-</div><div><br></div>DISCLAIMER: The ideas presented here are currently in the prototype design stage; they are incomplete and untested. It is possible that this could fry every console connected to it, electrocute you, and burn your house down. DON’T TRY THIS AT HOME.<br>
<br>
I’m building a custom arcade cabinet. A MAME PC will be inside, and several consoles will be on shelves next to it. Basically, I want all of them to be hooked up at the same time. I want to be able to select one to play with the flip of a switch, instead of changing around a bunch of connections. I have the audio/video side covered (I’ll be using an XRGB-Mini and a few switches), the problem is switching the controller connections.<br>
<br>
I’ve designed a circuit to accomplish this, but I’m hoping for some feedback as to whether it will work or not before I start building.<br>
<br>
First, here is a “concept diagram.” I made it to explain the project to a friend who’s an electronics guru, but isn’t familiar with video games. It’s pretty oversimplified for anyone here, but it’s a good starting point:<br>
<br>
<img src=“http://rcadegaming.com/images/concept_diagram.jpg” alt=“concept_diagram.jpg” class=“bbcode_img”><br>
<br>
Here is the actual circuit:<br>
<br>
<img src=“http://rcadegaming.com/images/player_controls_beta_7.0_color.jpg” alt=“player_controls_beta_7.0_color.jpg” class=“bbcode_img”><br>
<br>
You may need to open it in another window and view it at 100% to see it clearly.<br>
<br>
Note that this circuit is for one player. It will have to be duplicated for the other player. The two circuits will be completely isolated from each other, except for both using (but not being connected in) the 4PDT switch (at the top left, marked as a “shared component”). The purpose of this switch is to connect the menu buttons to the consoles and lock them out from the PC, or vice versa.<br>
<br>
At the top are the momentary contact switches representing the joystick and buttons. These are connected to all four controller PCB’s, which all share power and ground at all times. Power, ground, and signal lines exit from the controller PCB’s, and connect to their respective consoles, identified at the bottom.<br>
<br>
On the right is a two deck, ten position rotary switch, which is used to select which console will be connected. At the bottom are groups of solid-state relays for each console, these connect the console’s signal lines to its PCB when that console is selected.<br>
<br>
Near the relays, the voltage line coming from each console splits into two lines. One (which I will still call the voltage line - V) runs straight to the top deck of the rotary switch; while the other (which I will call the control line - CON) runs through the console’s relays in parallel before reaching the bottom deck of the rotary switch.<br>
<br>
When is a console is selected with the rotary switch, the top deck connects that console’s voltage line to the PCB’s; while the bottom deck connects its control line to ground, powering its relays and connecting its signal lines to its PCB.<br>
<br>
On the power line, connected between the rotary switch and the PCB’s, there is another momentary contact switch. The idea is that the rotary switch will be underneath of a door which holds the momentary contact switch closed. To turn the rotary switch, the door must be opened, cutting power during switching.<br>
<br>
Here is the information on the solid state-relays relays:<br>
<a href=“http://search.digikey.com/us/en/products/CPC1002NTR/CLA230CT-ND/1212841” rel=“nofollow” class=“bbcode_url”>http://search.digikey.com/us/en/products/CPC1002NTR/CLA230CT-ND/1212841</a><br>
<br>
-<br>
<br>
Anyone have any thoughts? Do you think this will work? Any potential problems or suggestions?

You can take out the Dreamcast controller board since the MC Cthulhu already handles Dreamcast.

…Or use a modded xbox1 with all the emulators/games in the machine, use the mc cthulhu on it and call it a day. Dont put all your eggs in one basket.

maybe I’m a perfectionist but i would actually do this on one micro controller with a lot of relays. choose the right tool for the job and forget about the 4066. forget the 2P10T rotary switch. I would use a psx to xbox 360 converter when using the 360. you can lift the pins on the converter when using the PSX. the 360 converter should be good for the computer too. but you dont have a psx so maybe thats not worth doing.

I’m pretty sure that the genesis is covered as well by the MC…

edit: Nope its the saturn, my bad…

I know that the MC Cthulhu can do Dreamcast, but then you have to connect another controller to port 3 with a VMU and tell it to load from there every time you boot up a game. It’s much easier to have an internal VMU for port 1.

Why would I use an XBox with emulators? Clearly I want to use original hardware, and if I did use emulators I have the PC.

I think I’ll be using a brawl pad for the 360 PCB as they’re lagless, wired, and common ground. How would the converter handle the Home Button?

I’d like to stick with the PCB’s shown, I think it’s the best way to support all the consoles listed.

If this is doable, that would be awesome, can you show me how you would do this?

you just gotta put in work to reverse engineer the format of the serial data each controller sends to the console. all the old consoles transmit controller data over one wire. they just have different clock rates, V+ voltage, different pinouts etc… put in the work to get the information and you can make the guts of this project look really minimal. but to be honest, that could be a LOT of time. if you don’t enjoy it as a hobby then you can just buy the stuff. either way works. the PDP versus pad is $15 so still cheaper than the brawl pad. I have not confirmed if the guide (home) button is common ground. the rest is common ground but there is writing on the PCB under the guide button that says 9v. very strange for a common ground 5v device.

Well, there will be plenty of extra room for this in the cabinet (only the PC will be inside, the consoles will plug into it and sit next to it), and it will be concealed. I’m not really concerned with what’s underneath the panel, as long it’s lagless and reliable. Above the panel, I think just turning the rotaries will be elegant enough. 10 pole 2 deck rotaries are expensive, but I was already given some very high quality ones as a gift.

That being said, what do you think of what is laid out for this method? Will it work?

ok I took a good look at the schematic and it is very cool how you use the relays to plug the multiconsole board into each console. but this also drives up the price a lot. relays can be $2 or $4 each for something nice like panasonic. if you count the relays, you can count the $. thats like $50 just in relays. then add a MC-cthulu and a genesis PCB. I could spend $90 on a microcontroller with enough I/O to dedicate things. you do not need to pull V+ from each console to the controller PCB’s. you just need to share a ground reference with the microcontroller and the consoles. as long as you provide power to the mcrocontroller, it will work. make sure all your controller PCB’s are 5v if your mixing in USB stuff. I don’t know how much max current a console can put out through the controller port so it may not always work on every relay. its also good to consider the total average current consumption of all the relays in the system. you can limit your current to the relays to save on the electric bill and keep the heat down.

I haven’t gone through the list of controllers, but if they’re all common ground pull-down, it seems like you should mostly be able to just use a bucket of isolation diodes, tie all the grounds together, and use the switch to control which controller pcb gets power.

common ground controllers have pull-up resistors. there are no “pull-downs”. unless you mean that the button pulls it to ground? what exactly do you mean by isolation diode? do you mean schottky diode? silicon diode? small signal diode? if you walk into a store and ask for isolation diodes they will ask what you really want.

anyway, I’m still looking at all the possible ways to do it and it just makes more sense to do all your serial data in one place. you can tie all the grounds together from the consoles to the microcontroller. run the data, clock, and enable lines from each console to the microcontroller on dedicated pins. thats just 3 pins per console. you do not need to connect V+ from the consoles. you could even interface all 10 consoles at one time.

http://beagleboard.org/bone <----- $90 , 106 IO pins! but is 1.8v native so you might need to run opamps on the data line only since that is the only one going into the console. you can buy two TL074’s and one TL072 for less than $1. that gives you 10 opamps. the clock and enable lines that come from the console can be conditioned with a 1.8vf diode. you can buy TVS diodes at exactly 1.8v or you can use an LED that drops 1.8v. this is a very cheap, very simple way of taking your 3.3v and 5v signals from the console and just shorting the excess voltage to ground to avoid damaging the 1.8v microcontroller.

the beaglebone also has 2 USB ports, Ethernet, a web interface, linux remote desktop from a PC. you can code in any language you like and the performance is not an issue like it would be on the ATmega328P AVR. you could make a website that you can get into from your phone or ipad so you can monitor temperature and remap your controls on the fly. just plug in the ethernet cable to the wireless router and your all set.

R-CADE, the schematic you laid out has some good ideas in it, but the lines that activate each gate in all of the 4066’s is directly connected to ground; those pull ups will never overpower that and all of them will be low voltage at all times. I have no idea how the unpowered analog switches will behave with no voltage on the VCC pin but voltages on the A-F pins; it could try to leech power from them, hurting chips and/or dropping the voltages on the signal lines causing them to not work. I hope you understand, I dont want to help because I know only enough to know this is something that should be done by someone who definitely knows what they’re doing, and Im not that guy. I know fire, fried components, and even physical harm is a possibility, which is why I wanted nothing to do with it; even if you wouldn’t hold me responsible, I would. But some of what Im hearing here makes me nervous. For low voltages, go nuts. When dealing with the power of a wall outlet, leave it to professionals and people who truly know what they’re talking about.

  1. They’re analog switch chips, not relays.
  2. And rewrite the code for everything from scratch, which I personally feel is not a trivial task, and what does he benefit by doing that? In the end, he’ll still have to deal with the exact same problems he’s trying to address here.

This is incorrect, almost 100% incorrect depending on how strictly you interpret what you said. Please spend some time over at gamesx.com; they have some great explanations of how many of the older consoles communicate with controller.

That’s the part that makes me nervous; I dont have complete faith that all of these grounds wont cause a short in the mains. Many consoles use a two prong power cable that is reversable. I can’t be certain that what is ‘ground’ on one is actually the hot wire, and the ‘ground’ on the other is the earth ground (three prong) or neutral (two or three prong) line on the mains. AC and home electrical is definitely an area I dont have any expertise in, but that sort of question is what bugs me.

R-CADE, what I’d suggest is different, but will likely be a bit more expensive, but will end up being more modular; you could start with a single console and easily add the additionals as you go. The downside is that you wouldn’t be able to use an MC to cover the majority of the consoles at once; each console would need it’s own 2x controller pcbs. But, everything would be electrically separate

First, youd need a power supply, preferably 5v, just 5v wall wart. Doesn’t need to be super buff, but it’d need to be JUST for the player buttons/stick section. Use that power supply for the pull up resistors for the buttons and sticks. Have the signals going to the inputs of daisy chained 4021 or similar serial shift registers, just like SNES controllers use. Use a small cheap microcontroller that does absolutely nothing except repeated sending a pulse on the Latch line and many clock pulses on the Clock line. Make a bunch of 5 pin connectors with the control’s +5v, Gnd, Data, Clock, and Latch lines. That’d be your controler bus, and each console would need to be connected to it.

For each console, you’d plug into that bus, and the Clock, Data, and Latch lines would go to an opto-isolater that is powered by the +5v and Gnd from the controller bus. The other side of the opto isolator is where you’d get the Clock, Data, and Latch information for that console. The console’s ground and power DO NOT CONNECT with the +5v and Gnd from the controller bus! The entire idea is that the power and grounds remain separate between each console.

Now you’d have to convert the Clock, Data, and Latch lines back to a common ground type setup that controls the direction and button signal lines on the console’s controller pcb.74HC595’s should do nicely. Connect the outputs of the shift registers to their matching direction and button signal lines on the common ground controller pcb.

How you’d wire sound and video and all, even more out of my league. But that might get the controllers wired up safely.

I see now that I was looking at a few things wrong. I’m working on a new revision to fix this.

Not sure what you mean. You’re talking about the 4066 chips here? All of them get power on their VCC pins at all times, regardless of which system is selected.

I do understand, and that you replied here is greatly appreciated.

As far as your suggested alternative, unfortunately that’s far beyond my understanding and capability at this point. I think if I fix the problems present in my current circuit it can be made to work, and be simpler than that, i.e. within my understanding and capability.

How you’d wire sound and video and all, even more out of my league.
[/quote]

This is the easy part. PC and Dreamcast via VGA+audio to T-SLG/SLG-3000 to VGA+audio switcher to TV (VGA+3.5mm in on LG 32LD450). Nintendo via composite to XRGB-mini. PC Engine, Sega Genesis, Super Nintendo, and Sega Saturn via RGB-SCART to SCART switcher to XRGB-mini. Wii via component to XRGB-mini. 360 and PS3 via HDMI to HDMI switcher to XRGB-mini. XRGB-mini via HDMI to TV. TV out via optical to sound system.

Alternatively, if I find the XRGB-mini’s scanlines to be as nice as the T-SLG/SLG-3000’s, I can run the PC via HDMI to the HDMI switcher to the XRGB-mini; and the Dreamcast via VGA+audio to a VGA to component transcoder to a component switcher shared with the Wii to the XRGB-mini.

I’m familiar with the way a NES and SNES controller send data. my wording could have been beter. there is a clock, reset (also called enable), data. after the reset (or enable), the controller sends the data back one bit at a time on every leading clock pulse. now that I said it more clearly, is it still incorrect for the SNES? so yeah there are 3 wires but the data is not on 8 lines like a parallel interface. its on 1 wire. with power and ground, its 5 wires total. I know what the code looks like for a SNES to USB written in AVR C. I even got my hands on the encryption library that was written for the wiimote. I have never built anything for the PSX but I’m like %90 sure its pretty much identical to the SNES but with lower voltage and faster clock. I fully acknowledge however that you are doing this on a daily basis and I have only just begun writing code for controller adapters.

In consideration of the issues pointed out, mainly by Toodles, I’ve finished a revision of the switching circuit which should work much better. The 4066 chips have been scrapped in favor of solid-state relays which simplify things somewhat.

I updated my original with the new circuit diagram, as well as the description. Please look at the new diagram there. Here is the updated portion of the description, so you don’t have reread all of it:

Any thoughts?