One of the biggest reasons for playing older video games on original hardware is that emulators and modern controllers can’t replicate the exact feel of how those games would have been originally experienced. This is true of old PC games as well, so if you want to use your original Sidewinder steering wheel or antique Logitech joystick, you’ll need something like [Necroware]’s GamePort adapter to get them to communicate with modern hardware.
In a time before USB was the standard, the way to connect controllers to PCs was through the GamePort, typically found on the sound card. This has long since disappeared from modern controllers, so the USB interface [Necroware] built relies on an Arduino to do the translating. Specifically, the adapter is designed as a generic adapter for several different analog joysticks, and a series of DIP switches on the adapter select the appropriate mode. Check it out in the video after the break. The adapter is also capable of automatically calibrating the joysticks, which is necessary as the passive components in the controllers often don’t behave the same way now as they did when they were new.
Plenty of us have joysticks and steering wheels from this era stored away somewhere, so if you want to experience Flight Simulator 5.0 like it would have been experienced in 1993, all it takes is an Arduino. And, if you want to run these programs on bare metal rather than in an emulator, it is actually possible to build a new Intel 486 gaming PC, which operates almost exactly like a PC from the 90s would have.
Variations of PC gameport to USB adapters have been around for a while, including ones that support oddball sticks like the Sidewinder 3D. But none of them support any force feedback because nobody wants to tackle the task of writing the software that would be required to make FF work with newer versions of Windows, even tougher for the oldest FF sticks that only had FF support for DOS.
Before Microsoft and others figured out ways to get non-analog data read through the analog gameport, there were methods of having more than four buttons. One was simply connecting up 2 or 3 simultaneously which the DOS games or Windows game controller support would interpret as buttons 5 and up. Some electronic wizardry was required to ensure that pressing button 5 and up wasn’t read like pushing the the 2 to 4 of the regular buttons.
In early releases of DirectX the controller test only had four “lights” for the buttons and with a multi-button controller it would show the combinations used for buttons 5 and up. But that was quickly changed so it had one “light” per button for your Wingman or Sidewinder or Cyborg.
I happen to have a Wingman 3D and a Cyborg 3D. The Cyborg is nice because the head angle can be adjusted in 2 axes and the throttle and palm rest can be flipped for left or right hand use.
I also have a Microsoft Strategic Commander. Windows 10 support for that would be nice.
Cool. Reminds me of my old Gravis game pad. :)
USB interface ffb2 is a good choice, and the correct feedback can be alive in win10
Awesome, thanks for this! I have been sorely disappointed with the commercial offerings I’ve tried and this looks like a perfect solution.
Oops, responded to the wrong chain.
Well, if you look around you will not really find a lot of such adapters out there. There are some proprietary devices like RockFire, which was made for the analogue joysticks only and there are two or three projects where people tried to make it work with one of the Sidewinder devices. Not all of them were successful and I think only one was a good open sourced solution. But it was made for the Sidewinder 3D Pro only (if I remember right).
This adapter on the other hand is the most versatile one. It supports all the analog joysticks (btw. also the ones which made buttons magic, which you describe) and a full load of digital devices. Not only Sidewinder (3D Pro, 3D Pro+ Gamepad, Precision Pro, Wheel), but also the Gravis (GrIP protocol) and Logitech (ADI protocol) devices. The list of currently supported joysticks is quite long and will be extended in the future. I also prepared it for FFB support, I just don’t have any device to start the implementation.
Furthermore it is built on a simple Arduino Pro Micro and I put a lot of effort to make it possible, since previously it was meant to be too slow at least for the Sidewinder 3D Pro. Others tried to take STM32 or a Teensy, which made the adapter twice as expensive.
This project is not only completely open source and well documented, it is also implemented purely in C++, without a line in assembler. So it might be also very interesting for the less experienced people, who want to start to experiment with the Arduino.
Eventually, if I take all that points into account, then there were actually no projects like this one made before. Only some which would meet the one point or another.
The sidewinder pro have a weird arrangement inside instead of the usual rotary encoder or servo style pot. The motor for the force feedback is surprisingly large.
When these came out, they had huge setups in stores where you could push buttons labelled “machine gun”, “chopper”, “laser sword”, etc, and it would make sounds and give corresponding force feedback to demonstrate the different ways the joystick could be used in games. It was pretty impressive, no wonder it has a huge motor inside.
It’s a little weird that Sidewinders are being used to test this since most of them had passive adapters to USB which can probably be reconstructed if you find the right pinout.
That’s not the case. Only the latter models had it, but the 3D Pro, 3D Pro+, Presision Pro 1, GamePad, Racing Wheel and many others were not USB compatible. You can find the detailed list on Wikipedia: https://en.wikipedia.org/wiki/Microsoft_SideWinder
The logitech wingman extreme Digital seem have a analoge mode, so i can test gameports in DOS with Checkit 3.0.
But great project!
Yeah, this is true, many digital joysticks have a fallback functionality to be able to use them in pure DOS. Logitech Wingman Digital Extreme and MS Sidewinder 3D Pro are just two examples, but in the compatibility mode they are very limited. Half of the buttons don’t work, the hat switch is only four directional and on Logitech the throttle control doesn’t work as well. Don’t actually know why since one axis would be still free, but Logitech seemed not to bother. The good thing is, that with this adapter you can use all that joysticks both in digital and in analogue compatibility mode.