VOGONS


First post, by Oddwarg

User metadata
Rank Newbie
Rank
Newbie

I'm somewhat of an enthusiast for unusual input devices. A couple years ago I found a cheap Microsoft SideWinder Dual Strike on ebay:
vogonsdualstrike.png
I love the thing, but of course it requires the SideWinder Game Software to function the way it was intended, and that only runs on older versions of Windows. I wanted to try it for modern games as well, so I wrote my own simple command line software to be used alongside Joy2Key to get the proper mouse cursor movement.

Nobody asked for this, but today I would like to share with you a slightly more refined version of my custom Dual Strike Mouse software (now includes a GUI!). Maybe one or two of you will get some fun out of it:
https://dualstrike-mouse.sourceforge.io
It still needs Joy2Key or similar to accompany it, since it only handles the mouse side of things. I have verified that it works on Windows 7, 10, and Linux Mint.

I have seen this device compared to the more modern Steam Controller, which I think makes a lot of sense. They're both effectively mouse inputs for playing on the couch, and perform best in games that were meant for mouse input. It takes some getting used to, but I'd say it greatly outperforms a regular dual analog controller for that specific purpose.

Being vintage hardware, mine has had some issues. To start, the potentiometers were not in great condition, and I can't seem to find any modern equivalents. They're a bit strange, maybe a custom part. However, they improved a lot after being soaked in WD-40 for a bit. The thumbstick also needed some grease. Two of the internal wires broke off at different points, but they were relatively easy to reattach. Finally, the right shoulder button is in poor condition, but I believe it is a relatively standard 90 degree tactile switch internally. I might even have a compatible part lying about.

The game I've played the most with this is Sublevel Zero Redux. It works great, although I do wish it had a couple extra buttons on the shoulders or on the back (You typically have to use the Shift modifier intensively). I'm currently using it for my playthrough of Duke Nukem 3D (on era-accurate hardware with the original SideWinder software), which I didn't play back in the day, but I can definitely see why it's a classic.

Last edited by Oddwarg on 2022-11-18, 06:02. Edited 1 time in total.

Reply 1 of 7, by the3dfxdude

User metadata
Rank Member
Rank
Member

If I am understanding what you did -- this joystick is basically mostly an hid joystick from the sidewinder family. So the OS sees only a joystick? Is that correct? Since the software is no longer updated, there is no way to map the controller position to mouse movements?

In linux, what modules are loaded when you plug it in? Stock usbhid? Does it work as a normal joystick automatically when plugged? I wonder how reconfigurable the input backend in linux actually is. There are xorg drivers for example to use a joystick as a mouse. But I think this one should be switchable on the fly for both types of games.

Here is a possible driver:
https://www.x.org/releases/current/doc/man/ma … oystick.4.xhtml

Reply 2 of 7, by Oddwarg

User metadata
Rank Newbie
Rank
Newbie

That is correct, the OS automatically detects it as a regular USB joystick in both Windows and Linux (lsusb reports Driver=usbhid), no special driver is required.

Without any special software, the swivel acts as the X/Y axes, but in this form it isn't really useful for much since the axis values are basically just the absolute potentiometer readings, and it doesn't have a return to center spring so it's really difficult to tell where the center is.

The way the controller is meant to control the mouse cursor is very specific. It's difficult to explain, but: It has a central "aiming zone" where the handle rotates freely, and relative axis movements translate to relative cursor movements (holding it still in any position produces no cursor movement), while pushing the handle towards the outer edges makes it enter the "spin zone" (Microsoft's terminology), where it acts more like a regular joystick mouse (the cursor keeps traveling in the direction you push). The spin zone is equipped with springs that push the handle back to the aiming zone, so it's a tactile experience. To the OS, the distinction doesn't really exist, the spin zone is just any value that exceeds about 85% amplitude. Finally, you're meant to assign a "return to center" button, which lets go of the cursor so you can re-center the handle without moving the cursor. A good analogy is how you can lift a regular mouse to reposition it without moving the cursor.

I am not that deeply familiar with Linux, but I doubt there's a driver that can do all of that without being specifically built for it.

Reply 3 of 7, by Pierre32

User metadata
Rank Oldbie
Rank
Oldbie

This controller and its functionality looks really interesting. I love that you've created and shared this software. I'm also a fan of unusual input devices, so I'll be keeping an eye out for one of these locally.

Re: WD-40, not the best product for electronics, unless it was this one: https://www.wd40.com/products/contact-cleaner/

This is the one I go for: https://www.jaycar.com.au/contact-cleaner-lub … ay-can/p/NA1012

Reply 4 of 7, by Oddwarg

User metadata
Rank Newbie
Rank
Newbie

I'm happy it piqued your interest, heh.

Someone actually gave me a proper contact cleaner recently, so I'll be sure to use that in the future.

(Also, I neglected to mention the amazingly campy video it came with: https://www.youtube.com/watch?v=MShp4F4cUDE)

Reply 5 of 7, by the3dfxdude

User metadata
Rank Member
Rank
Member

Sure, there might not be a driver that translates the joystick's axes into mouse movements. Your github description says that your program won't work in all games because it is not a mouse driver. So I guess you are trying to force mouse movements on reading the joystick data.

There are several examples of joystick as mouse, both with in kernel drivers and out of kernel in linux. If this joystick is not detected as a mouse, then maybe it should be, and perhaps you can get your code upstream. Because then, you will then have support for the device on all application layers.

I'm probably the only one in the world playing with an original sidewinder gamepad on steam in linux. Where else would this be possible? Windows does not support it with a driver and does not support the gameport. It isn't a good options for shooters. But maybe a dual strike? Never tried it. I also have a sidewinder 3dpro that I want to play around with it more.

Reply 6 of 7, by Oddwarg

User metadata
Rank Newbie
Rank
Newbie

My software uses an old library called jinput to read the joystick, and then java.awt.Robot to simulate a mouse. I'm not sure exactly how the latter works under the hood on Linux, but my guess would be it uses some xlib functions to do its thing. In my experience it works for most applications, but in the game Overload, for instance, it only worked in the menus.

I agree that ideally this device should have its own driver that allows it to be used as a mouse the way it was intended, but that's outside of my comfort zone and outside of the scope of what I hoped to achieve. I really don't intend to spend much more time on this, I just thought I'd share it as it is in case it inspires someone to have some fun with an old piece of hardware.

It's great that Linux still supports gameport devices. Does the 3D Pro work natively in Linux? For my Force Feedback Pro I built a special USB adapter using the instructions found here, and apparently that also supports the 3D Pro (unlike off-the-shelf adapters). However the actual force feedback feature doesn't seem to work under Linux (or at least I haven't figured it out), and this is a problem since it just goes limp, making it unusable...

Reply 7 of 7, by BrunFBk

User metadata
Rank Newbie
Rank
Newbie

My God I was waiting for this for years (+ decades to get the joystick) and you have no idea how happy I am to see this happen, no one had done this and I had done some mods but my programming area is more focused on creating games so I didn't have much time or good results in a proper "driver".
This controller was part of my childhood in magazines, articles and advertisements, this remained in a part of my childhood, a good time with good memories, my friends and I wanted to buy one but now I don't see many of my friends anymore, many things no longer exist but I have my memories. The Dual Strike is an incredible control, poorly executed and with poor button distribution (and a terrible digital directional pad) but incredible as it is the best and most efficient controller (with the driver of course), I see that it is very unfairly treated by people on the internet in amateur articles, "journalists" talking nonsense. Thank you very much

The past defines our future, those who do not have or do not keep theirs memories will not have a future...