FYI, I created libraries for Arduino that let you interface with a Nintendo or Super Nintendo joystick. It's not all that complicated, but the joysticks use a shift register to send the button and joystick states serially. This library takes care of that communication so you can easily find out the state of the game pad. There are some interesting possibilities since some Nintendo joysticks have features like Turbo and Slow Motion and there are accessories for things like wireless joysticks using RF. All of these things can be found at thrift stores pretty cheaply, so I think this could come in handy.
You can download it here: http://www.rahji.com/NESpad
Let me know if you have any problems with it. One thing I'll probably do if someone asks for it is make the NESpad object take the pin numbers as an argument.. this would (a) allow you to use multiple joysticks at the same time by creating multiple NESpad object instances using different pin numbers and (b) keep you from having to edit the line in the C source if you use different pin numbers than I've hard coded.
This is a quick test that I did to show that the library works - a MIDI controller using an NES Advantage joystick as the input device:http://www.rahji.com/wordpress/2007/09/21/nes-midi/