I have successfully interfaced arduino between PSX controller and Atari Lynx handheld portal system (PSX controller is more comfortable)
Anyway when I was going through the schematic for wiring into Lynx controller, I did see a possible issue:
Arduino works by decoding PSX controller and pulling the lines high or low. If I press a button on the PSX controller, the line is pulled high as if I pressed the button on my Lynx. But when not pressing any button, the line is pulled low.
If I press a button on Lynx, it'd pull to high and create a short between Lynx 5v and the 0v output of Arduino pin. Either the pin would burn out, the whole ATMega chip would burn out, or Lynx would crash.
One solution would be tri-stating the pins. But I'd need 9 tri-state buffers for this and using 3x quad tri-state buffer chips (such as 74125 series) it'd add a bit of bulk to Lynx, which doesn't have much room inside. Can Arduino tri-state the pin internally?
Alternatively can something be done externally between Arduino and Lynx so if a button on Lynx was accidentally pressed, it won't fry the chip? I can't remove the button matrix because it also contains power on/off and I wanted to leave it unmodified. It'd be no fun if I accidentally turned off the lynx from PSX controller.
Ultimately it'd have a stand alone ATMega328 chip with just clock, 3 caps, and the required wiring since I won't be using USB connection on Arduino board once it's finalized. Not using the whole board saves me about $30 and saves me a lot of room inside.
PS before anyone asks why put an external controller to a portable system. It's because I'm also getting video out board for the Lynx. Someone on AtariAge forum figured out a way to make video decoder out of fpga and can have video out mod installed. I am among the few who will be beta testing the first batch. Using Playstation controller is far more comfortable than using Lynx controller, especially when playing on a 32" LCD TV.