I mentioned this here:
http://chipmusic.org/forums/post/189085/#p189085
And now I've finally gotten around to writing the code to get it off the ground, so here is some information and some demonstration:
FamiiDI: MIDI Input & Wii Nunchuk arduino shield for the NES / Famicom
FamiiDI (Famicom / Wii Nunchuk / MIDI) is an Arduino shield that reads in data from a MIDI serial connection, or a Wii Nunchuk controller, and translates that data to the 15-pin 'Famicom Expansion Port' standard.
All of the 15-pin Famicom Expansion Port signals are also present on the 48-pin NES Expansion Port that lurks hidden on the console's underside - and there is a great little device called the 'ENIO EXP Board' that acts as a 48-pin to 15-pin converter if you don't like the idea of soldering directly to the NES motherboard (or cutting the cable off a joypad to build your own 15-pin to 7-pin cable to connect directly to the NES Controller Port).
The FamiiDI shield appears to the NES as a joypad connected to Controller Port 2, so you can still have a regular joypad connected to Controller Port 1 without any conflicts. Demonstration # 1 in the video shows a MIDI sequence being played from a laptop into the FamiiDI board. The Arduino then maps the MIDI Note On / Off data received (note numbers 59-66, or B3-F#4) to each of the eight joypad buttons (A, B, Select, Start, Up, Down, Left, Right) the NES is running a Controller Test ROM which plays a different musical pitch for each button pressed.
The video also demonstrates sending a proportional analog input (rather than just digital on / off button presses) to emulate an Arkanoid Paddle by taking an 8-bit value (0-255) and mapping each of the 8 bits to the eight button presses read in by the NES input register at $4017.0 (a separate on / off value for the Paddle Button is sent to input register $4016.1).
PS. The 15-pin Expansion Port standard also means there is the potential to map another four Note On / Off signals, so rather than just eight notes (only the white piano keys) you could send a full twelve notes (both the black and white keys). The four additional pins present on the FamiiDI shield are:
$4016.1 (traditionally used for the Arkanoid Paddle Button)
$4017.1
$4017.3 (traditionally used for the Zapper Gun Light Sensor)
$4017.4 (traditionally used for the Zapper Gun Trigger)
PPS. Because of the potential for so many 'modes' I've also put 3 dip switches on board to allow for code that reads the state of the switches and changes mode accordingly, and there is also an RGB LED on board wired directly to the dip switches for quick and easy representation of the selected mode by color:
(0. 000, Off)
1. 001, Green
2. 010, Blue
3. 011, Blue + Green = Cyan
4. 100, Red
5. 101, Red + Green = Yellow
6. 110, Red + Blue = Pink
7. 111, Red + Blue + Green = White
Last edited by uXe (Dec 20, 2013 12:11 am)