I have been trying to interface a ps2 controller to my mega (1280) using bill porters ps2x library.
I eventually manged to get a hard wired controller working. It was a pelican brand from wally world.
it didn't seem to like 5 volts and I couldnt find a relaitivly simple way to convert without having to buy the tsx0104 as shown here. http://www.wegmuller.org/arduino/Arduino-Playstation_gameport.html
doing some more research on level shifting I found what these guys were doing with an I2C circuit. http://www.google.com/m/url?ei=CQLVTvCZB6SuNZUr&q=http://ics.nxp.com/support/documents/interface/pdf/an97055.pdf&ved=0CBoQFjAD&usg=AFQjCNEFePVS1vee0VS57JEjTsMddGSPGA
so what I ended up doing was merging these two ideas and getting it working. the hard wire model worked fine with only level shifting the command, attention, and clock line. the data line was wired directly to the arduino.
I used a 2n6660 fet. tied the gate to 3.3 volts. the source tied to the controller with a 10k resistor pulling the line up to 3.3. the drain is tied directly to the arduino with no pull up.
I went ahead and shifted all 4 lines when I made the shield just to be sure I wouldn't have any issues with wireless controllers.
I made a quick hand drawn diagram and scanned it in for reference. It only shows one circuit but that same thing is repeated 4 times. 1 for each com line.
It has been tested with the two controller i have. One wireless Pelican, One wired Pelican.