Hacking game port peripherals to work with modern PCs

gameport_hack

[Atiti] has a bad habit of hanging on to old things. Some people call this sort of behavior “hoarding”, but around here we understand his affliction. It turns out that in his collection of old computer peripherals, he located a Thrustmaster Formula 1 racing wheel he used back in the day. Analog racing wheels can cost a pretty penny nowadays, depending on what you buy, so he decided to see if he could hack this outdated controller to work with his new PC.

You see, the problem with this wheel is that it utilized a “game port” connecter to interface with the computer. If you don’t remember the game port, go dig up an old PCI sound card and take a look on the back. That 15-pin connector? That’s a game port. Microsoft discontinued support for the game port once Vista was released, so [Atti] had to figure out how in the world he would get it to work on his new PC.

His solution was an Arduino, which is used to read the analog signals output by the wheel. Those signals are processed and sent to a parallel port joystick emulator, enabling him to use the wheel with any game supporting a standard joystick.

Obviously he could have just gone out to the store and bought a USB wheel, but where’s the fun in that?

Stay tuned for a video demo of his refreshed wheel in action.

Comments

  1. ftorama says:

    Hey I had a project like this in a part of my head….but I would have used a Teensyduino or Teensy++ to get the HID class directly

  2. nitori says:

    I’ve owned a device that does this for around 4 years now to salvage my old game pad.

    http://sewelldirect.com/USB-to-Gameport-Adapter-for-Joysticks-Controllers-and-Gamepads.asp

  3. Omni5cience says:

    Bah, I this is nothing. I remember hacking new USB joysticks to use Gameport. (For my FIRST Robotics team.)

  4. Johannes says:

    I remember seeing a proper gamepad USB conversion with no arduinos used :)

    This one used a avr with the USB library and custom HID programming.. Now THATS a hack :)

  5. blue_carbuncle says:

    Good on the builder for solving the problem but I am a bit on nitori’s side on this one. Also could this not be solved by a virtual machine maybe that does support MPU401? I wouldn’t be a huge fan of using vista to run as a gaming rig without some tweaking. But again, good on our “hoarder” friend :) and keeping things working and useful beyond their scoped lifetime :)

  6. Loki says:

    IIRC (and it has been a while), the ‘game port’ on the back of a soundcard was actually a MIDI I/O which had been (generally) repurposed for controllers – a CC for pitch, one for yaw, etc, with 128 discrete values in each one.

  7. adam outler says:

    Why do people block videos on mobile devices?

  8. BadWolf says:

    I’m actually happy I suggested that the UNO get a HID function and that they decided to implement it. That’s exactly why I asked them. Good job!

  9. atiti says:

    Hehe yea, I could have reflashed the avr on the Uno to do HID, but since I needed to use the Arduino in another project, I didn’t want to modify it. :)

  10. Jaspel says:

    This is a great project for HAD.

  11. Elias says:

    Nice, you could also program additional features like throttle blip at down changes etc :)

  12. LordNothing says:

    i hope hes not down sampling his 10-bit adc readings to 8 bit. a common method for doing this kinda thing tends to emulate a specific ppjoy interface module by formatting a serial packet in just the right way and doing no actual programming at the pc end.

    to get around this issue i simply created my own packet format and i wrote a serial -> ppjoy interface program to send the values through at a full 10 bit resolution.

  13. Amos says:

    Good for [Atiti] for keeping something useful out of a landfill. It’s probably better quality than most wheels on the market now, to boot.

    @blue_carbuncle: MPU401 is a MIDI interface standard and has nothing to do with joysticks (other than the use of the joystick connector to carry MIDI signals on many sound cards).

    @Loki: Actually, it’s the other way around: Creative Labs re-purposed some duplicate power supply pins on their Sound Blaster’s on-board joystick port to carry MIDI data (to save a few cents per unit on MIDI connectors and optoisolators; which they sold as an adapter cable to those who wanted MIDI).

  14. jeditalian says:

    if i go look in my garage, i’ll find my old steering wheel or giant joystick that came with a gameport to usb adapter back in 2001. the one in the link, at 14.95- way overpriced. i would rather buy a pci to usb card and blow it up attempting to guess which wire to put where from usb to gameport.

  15. anti-fanboi says:

    @Amos: While it’s a common sentiment, sending all Arduinos to landfill is a bit harsh ;)

  16. blue_carbuncle says:

    @amos sorry. I used the wrong nomenclature for brevity’s sake. I’m an audio guy. Feel free to reply to any of the other part of the post tho.

  17. Mike says:

    “don’t remember [what the game/midi port is]” … “old” … “pci sound card”

    You goddamn kids. Stay off my lawn this time.

  18. Coda says:

    Using an Arduino for this is overkill. There are dozens of cheap analogue->usb HID devices on the market, they are plug and play, and show up as HID devices in windows. No need for programming the device yourself, and no need for 3rd party software to interface it. Of course if this was just an exercise in DIY, then it’s all good.

  19. Scott V. says:

    The real thing I’m curious about is if anyone has tried to do this kind of hacking on some of the last rounds of game port devices, stuff like the Sidewinder Game Pad that ran through a game port but was “digital” in nature, meaning it didn’t work with these typical USB to Game Port converters.

  20. Amr B says:

    I did a similar thing a couple of years ago, but I used a USB PIC and programmed it as a HID device, so I had full control over the USB descriptor and the configuration of the joystick. With that you could easily replicate the functionality of the Sidewinder and similar devices.

    http://helmpcb.com/electronics/usb-joystick

  21. darksakul says:

    @ Scott V. about the Sidewinder…

    If you purchase a cheap USB game pad (or a USB PIC), you could wire the pins from the sidewinder directly to the corresponding buttons on the USB game pad.

    I did something similar when I wired up a Mad Catz Xbox 360 game pad to take input from a old NeoGeo game pad, same concept as the Sidewinder just the pin out is different. Why an Xbox 360 pad, the client wanted to use a NeoGeo pad on the 360.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 96,656 other followers