I created a prototype controller interface for xbox based on a hacked smartjoy frag keyboard adaptor.
These smartjoys (also known as smartbox II) were designed to allow peeps to play FPS titles via a connected PS/2 keyboard and mouse. I mentioned this project in my other post for a DIY USB Keyboard Encoder (for MAME). The smartjoy is a neat little device and you can get hold of these very cheap.
I made a previous xbox prototype based on an AVR development board and a hacked smartjoy (I called it Minty Fresh Interface). If you want the background you can find this on my project site at
https://sites.google.com/site/degenatrons/controller-interfaces/xbox-interface Unfortunately, I had some issues with this so had to go back to the drawing board.

This time I had more success and the device is now tested and working with xbox.

So I had to come up with a way to get the inputs from arcade controls to connect to the PS/2 keyboard input ports on the smartjoy. I figured I could create my own PS/2 keyboard encoder circuit (a bit like a keyboard hack) to connect the arcade controls to the smartjoy.
I found a PS/2 integrated circuit at Farnell Electronics, it is Holtek model HT82K628A. It is a 40 Pin Dip IC. This is an old chip which was used in Windows 95/98/2000 keyboards. It is also very cheap. It accepts input from pins (via matrix) and communicates PS/2 to host. It does some other neat stuff too.
I built a breadboard circuit around this IC and tested with with a PC and it worked. The circuit includes the chip, a couple of capacitors (0.1uf and 10uf) and a resistor (58.3k) to control the clock speed. If you get the spec for the chip it includes a schematic for this circuit.
My breadboard circuit looks like this. Very simple.

I connected the smartjoy to this test circuit and bridge a couple of pins. Woohoo! everything was looking good, so I set about hacking the smartjoy adaptor.
There was a bit of room inside the smartjoy so I managed to get my additional components inside the original case.
In the pictures below, you can see that I mounted the chip its back (like a dead bug) so that I could solder wires to the legs. To make space I removed the nasty memory card slot. The chip is quite large but I was surprised by how well this fit.
The hole at the top of the smart joy (were the memory card slot was) is a convenient exit hole for the wires to the arcade controls.
I screwed some terminal blocks on the outside of the smartjoy.

I only paid a few pounds for the parts and I did not need a PS/2 cable. You can see that I just glued wires into the port.
Total cost for me was not more than £4 - but I did buy a bunch of smartjoys to get some discount.
This is very functional, I tested using the gamepad test tool on xbox.
Mappings working for:
* Dpad (up/down/left/right)
* Analog Stick (up/down/left/right)
* Left and Right Triggers
* Left and Right Thumb Buttons
* A,B,X,Y
* Black, White
* Back, Start
* PS/2 or USB Trackball/Mouse
That's 20 inputs! Plus the trackball/mouse. Not bad eh!
Some other neat features:
* Analog sticks can be inverted
* Deadzone/Mouse sensitivity can be adjusted
* Left and Right sticks can be swapped (invert look/move)
* I found that the buttons on mouse/trackball can sometimes be assigned to xbox button. This feature depends on device.
For all this to work, it needs a mouse (PS/2 or USB) connected to the mouse port - even if it is not used. If you have a trackball then great, otherwise you can grab a PS/2 mouse for almost nothing - if you don't have one in the loft already. EDIT: It will now work without the need for a connected trackball/mouse. This is done by spoofing the mouse by bridinging 2 pins (clock and data) on the mouse port with 10ohm (or other low value) resistor. Credit to "John" on the CoinOps forum for this awesome contribution. If you have a mouse or trackball then obviously you won't need to spoof.For reference, You can see a picture at the bottom of my project page at
https://sites.google.com/site/degenatrons/controller-interfaces/xbox-gamepad-encoder-mkiiHere is a demo video.
I am happy with this so it will be going inside my CoinOps arcade cab.