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.
Jake Allen built one of these and it looks very nice:
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 attemps 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 asymetrical.
[Thanks, Jake Allen]