Using PSX or SNES controller on other consoles cheaply

Discussion in 'Modding and Hacking - Consoles and Electronics' started by wilykat, Apr 13, 2013.

  1. wilykat

    wilykat Site Supporter 2013

    Joined:
    Mar 25, 2012
    Messages:
    991
    Likes Received:
    45
    For those who are not familar with Arduino or ATMega328 that I am using, this Wiki should help you understand. Original source of hardware, libraries, programming guides, and forum for programming the chip to help and troubleshooting is arduino.cc

    Now to my project!

    https://www.youtube.com/watch?v=tPzF-bBYbO0

    I have a test working showing output from PSX (digital controller) to LEDs. I also did the same for SNES but decided to keep working on PSX as the older models are friendly with 5v. Some Sony branded anaolog (DS1) controllers and many PS2 (including DS2) are temperamental and would have a hard time working on 5v, and I'd have to build level shifter to get 3.3v controller to work with consoles that uses 5v for controllers. Extra parts = more work, more chance of something not working [​IMG]

    The video shows the direction, 4 action buttons, and start button working. It'd correspond to Lynx direction, A, B, Option 1 and 2, and pause. Select, L1, L2, R1, and R2 is available for other controllers that needs it. I also have the sketch for SNES controller (2 less shoulder buttons) for use on other consoles but it's still bugged and needs time to fix.

    I planned to add this into Atari Lynx to replace the built in controller. This project can also be adapted to use with other consoles although most of them uses negative logic (0 when pressed, 5v when not pressed) so the codes would have to be modified to have inverted output. It's as simple as adding an ! to every output so it'd go low when it's true, else go high.

    Some consoles like SMS, 2600 and 7800 would be easy to wire straight in. Genesis would require shifting to get ABC and Start button working. 6 button's XYZ is a whole another can of worm I am not touching. I don't know about Saturn yet, and only nerd or idiot would use this to connect PSX controller to... PSX!!! XBox probably won't work well without 2 analog sticks, which the library currently doesn't support.

    NES, SNES, and Virtualboy can be handled with a regular off the shelf parallel to serial shift register chip. Intellivision uses 16 directions and would suffer from reduced accuracy in some games like Vectron plus you'd need to add keypad. Colecovision also needs keypad but is doable as well.

    Atari 5200 could work as digital only controller with all buttons but no keypad either.

    A chip ATMega328 is about $5, plus extra for wires, connectors, and you could probably figure out the rest if you can find the pinout and know how controller is read on console side. You'd need something to program though, an Uno board with DIP chip will work. That is, not the SMD version of Uno. A clone can be found for as little as $15 on eBay while genuine Arduino can run around $30, which goes toward helping those Italian developer make more revisions, improvements, and other versions.

    The Arduino I was using in the video is Nano version, ideal for breadboard experiment as it has onboard USB for on the spot reprogramming but it's about $15 for the clone. I plan to use a stand alone $5 chip in final form.

    Attached is the sketch plus library. The original source of the library is http://playground.arduino.cc/Main/PSXLibrary but I had to tweak it a bit so I'm including the modified library.

    PS yes LED in the video were bright. 3mm LED + 1k resistor on 5v is still dang bright!
     
  2. gorgyrip

    gorgyrip Gutsy Member

    Joined:
    Oct 26, 2007
    Messages:
    446
    Likes Received:
    14
    Very nice project. Great for mvs. I hope in the future you will add support for DS1 and DS2
     
sonicdude10
Draft saved Draft deleted
Insert every image as a...
  1.  0%

Share This Page