I bought an old v1.0 Xbox off of ebay a few weeks ago. I had already gather the requisite USB to Xbox adapter
(not GOTY edition) and did a nice install of Xebian
. Since then, I have been working to get it to play SNES, NES, and Genesis games in a reasonable manner.
The first problem that I ran into was the controller. For whatever reason, the xpad driver for linux in Xebian is broken. The up and down directions sent to /dev/jo* are flipped. Also, the shoulder triggers are mapped as axes rather than as buttons. Last, but not least, the xpad is by default configured to emulate a mouse. This is useful if you want to use it as mouse and incredibly irritating if you want to use it as a gamepad. Just today I finally found how to fix all of this.
- Get the kernel source that matches your installed version (mine was 2.4.31)
- Get the kernel patch from the xbox-linux sourceforge project cvs repository which is tagged with your kernel revision
- Open kernel.config and change the line that says
- Apply this patch by hand to xpad-core.c. (Note that you may be able to apply it using patch(1) but it failed for me)
- (optional) add your controller's device id to the list of devices registered for control by the xpad driver
- make dep modules
- Copy the module over your old one in /lib/modules/<kernel revision>
As it currently stands, I have it working successfully to play SNES games. I am using snes9express
as a front end for the linux port of snes9x
. I have not yet found a suitable emulator for the genesis or nes yet. I may use dgen
as a front end, though it has the distinct problem of being unable to set the joystick device without a recompile. I am currently looking into using the gens
and it looks very promising. The downside is that I will have to manually configure the key codes for the game pad. For some reason, the xpad registers several button presses and this confuses the auto configuration program. As for the nes, since it is my lowest priority I have not yet put much effort into it.
Currently, I get my games by mounting a read only share on magi. This is done automatically on boot so that I don't have to log in as root to use the device. I plan to eventually use a usb harddrive to store the games, but until I get my usb hub I will continue with this method.
Note: This is crossposted on livejournal.com