Accepted into the Kernel
A slightly modified version of the patch was accepted by Vojtech Pavlik into his input tree and Linus then accepted the changes from Vojtech. This means that as of 2.6.9 the patch is included in the kernel. I'd like to thanks yS who updated my patch for 2.6.7/8 while I was gone. I'll leave the rest of the page here for historical sake.
2.6.9 Bugfix
So my patch was accepted into the kernel and is included in 2.6.9, but the version included had two small bugs. One was simply a missing comma that causes a crash and the other was a logic error comparing only against GC_PSX instead of both GC_PSX and GC_DDR. Quick patch to fix these (which has been accepted by Vojtech, but isn't in the kernel yet):
2.6.9-fix∞
Original Page
I've been into the game Dance Dance Revolution for a few years now and played quite a bit on my Play Station using some generic pads. Problem is that my Play Station broke and I got tired of paying $1 / 3 songs at our school's archade, so I built a PSX controller > parallel port adapter using my broken playstation's connectors. You can find schematics with pictures
here∞ (Supported interfaces > Playstation > Linux) or only text in the linux documentation. Once I built and tried to use them I found the linux driver, gamecon.c, was fairly useless. First, it initialized both controllers, but only actually talked to one. Second, arrow presses were registered on two axes so up + down = nothing. I fixed both of these and also some other small bugs.
Features
- Adds support for more than one controller. Previously more than one controller was initialized and the docs said they worked, but only one was actually read.
- Removes unnecessary detection on initialization. This allows the module to be initialized without controllers plugged in (hot swapping controllers works). This removes a warning if the user has an unrecognized controller plugged in, but the only unrecognized controller I have been able to find information about online is the PSX mouse, which I've never actually seen.
- Adds a new GC_DDR type (type 8, GC_PSX is type 7) to have direction presses register as buttons instead of axes. Allows the module to be used for Dance Dance Revolution emulators like Stepmania.
- Adds psx_* to documentation.
I created this patch using 2.6.2 and it works for me and a few friends. I also back-ported it to 2.4 and although it should work, I have not had a chance to test it.
Patches:
2.6.7/2.6.8∞ (modified in 20040815)
2.6.6∞
2.6.2∞
2.4.24∞
Simply download the patch then apply using `patch -p1 < gamecon.diff` in your kernel directory. I'll update these if a major change happens that breaks the patch.