SNES to CD-i adapter
The World of CD-i member Lerry Erb using LarryE as username shared with us his work, and it is a pleasure for us to publish it right here!
You can download all the necessary documents to make your own SNES to CD-i adapter right here:
SNEStoCDi-master
SNEStoCDi is an Arduino-based project that allows to use a Nintendo SNES (Super NES) / SFC (Super Famicom) gamepad on a Philips CD-i player. SNEStoCDi requires no more electronic than the Arduino itself. It’s a pretty easy project for anyone with basic knowledge about Arduino and soldering.
SNEStoCDi is released under Creative Common CC-BY 4.0 licence:
http://creativecommons.org/licenses/by/4.0/legalcode
How to make your own SNEStoCDi adapter
First of all, you need the Arduino IDE:
https://www.arduino.cc/en/Main/Software
You also need an Arduino, of course. I use Arduinos UNO and Nano but SNEStoCDi should work with most 5v Arduino versions.
To do a good and durable adapter, you will need a SNES/SFC gamepad connector (a simple way is to recycle an extension cable) and a Mini-DIN 8-pin male connector.
DO THE WIRING:
- Connect the SNES/SFC connector to your Arduino:
Please report to wiring.jpg for more information. - Connect the Mini-DIN 8-pin CD-i connector to your Arduino:
Please report to wiring.jpg for more information.
IMPORTANT:
- The RTS line from the CD-i must be connected to an analog input. If you’re curious about that, report to the Tech Stuff part.
- The Arduino will be powered by the VCC provided by the CD-i. Do not connect any other power source to the Arduino !
UPLOAD SNEStoCDi SOFTWARE TO YOUR ARDUINO:
- Connect the Arduino to your computer.
- Add the SNESpad library (by Rob Duarte) to the Arduino IDE. The library provided with SNEStoCDi is a modified version of SNESpad, optimized for performances and better compatibility with the current Arduino IDE.
For information on installing libraries, see:
http://arduino.cc/en/Guide/Libraries - Open the SNEStoCDi sketch.
- Check that the Arduino pins on the sketch match your wiring, if not adjust the sketch with the right pins. The sketch matches the pinout showed on the “wiring.jpg” file.
- Upload the compiled sketch to your Arduino.
That’s it, you already finished 🙂 the SNEStoCDi adapter is an plug-and-play: just plug it to your CD-i, plug your SNES/SFC pad, start your CD-i and go suffer on some terrible games… 🙂
I’d be happy to know about your build, so don’t hesitate to contact me to let me know how you made your own SNEStoCDi adapter.
SNEStoCDi has been tested successfully with Arduinos UNO and Nano, on a 470 Philips CD-i.
SNEStoCDi MAPPING & FANCY STUFF
The buttons mapping is probably exactly what you expect:
- The Dpad acts as a Dpad.
- The “Y” button acts as “Button 1”.
- The “B” button acts as “Button 2”.
- The “A” and “X” buttons both act as “Button 3”, which is in fact “Button 1 + Button 2”.
The SNES/SFC provides way more buttons than a CD-i gamepad, so I had the opportunity to add some fancy stuff:
- The cursor speed is adjustable in 5 steps. the “L” trigger shifts one step down, the “R” trigger shifts one step up.
- The “start” button resets the speed to the default one (step 3).
- The speed setting is saved into the Arduino’s EEPROM, so SNEStoCDi will apply your last speed setting the next time you will use it.
- The “select” button changes the buttons mapping and inverts “B” and “Y”. another “select” press changes the mapping again.
TECH STUFF
You might be curious about the use of an analog input where there is no analog signal. The reason is that the CD-i and the Arduino have different logical levels: The CD-i asserts the RTS line at about 2.4 volts when the Arduino needs about 3 volts on digital inputs. By reading the RTS line on an analog input, I’ve been able to set manually a lower “Virtual Logical Level”. This allows to use the Arduino alone, without any other electronic component to adapt the levels.
For some reason, all my attempts to use the hardware UART to send data to the CD-i failed. This is why I used NewSoftSerial (called SoftwareSerial in the Arduino IDE) to emulate another UART. As it is only used to send data, the RX interrupt is not really used and this is why the RX pin is not connected. The CD-i doesn’t send anything on its TX, it only communicates on the RTS line, this is the reason why the communication between the Arduino and the CD-i is kind of asymmetrical.
THANKS
This project is a work of Laurent Berta’s SNEStoCDi project, so I would like to thank him for his fantastic code base which I could lightly tweak and create PCBs for. I would also like to thank Rob Duarte and Paul Hackmann who provided libraries, code, and documentation which allowed him to create the SNEStoCDi project.
Hi, how do I get in contact with LarryE?
Hello Chiemsee,
You just need to use our “Messages Tool” in the right side of the site, under “Guess the Picture”.
Create a new message and write his name under “to”.