As some may recall, the mouse controls for The Classic game of DOOM are kind of weird, by modern standards. Moving the mouse left/right quite reasonably makes the view look left/right, but moving the mouse forwards/back, makes the player walk. While 20 years ago this is just how it was, these days we are used to more standard ‘mouse=look’ controls. I decided to do something about it.
Now, when running Doom under DOS, there is a well-known component that can be run which blocks the mouse’s vertical axis. Modern ports have changed the control all together, or allow options to enable/disable such behavior. There is no such solution for Doom95 (from ‘The Ultimate Doom’ CD), and seemingly no way to change this in software.
Fortunately, with a little knowledge of how a ball mouse works and a little time, we can make a mouse which only has an x-axis. First we need a spare PS/2 ball mouse, such as the one seen above recovered from the trash at work. After verifying it to be fully functional, the process begins.
Biting into the creamy nougat center of the mouse yields no surprises. For those not familiar - here’s what we’re looking at: in the large hump in the center, the ball resides. The lower-left white wheel-on-a-spring holds the rubber ball snug against the two black rollers. When the mouse is moved, the ball rolls, and spins these rollers. There is one roller for the X-axis, and one for the Y-axis. On the large end of each roller, there is an optical encoder.
An optical encoder is a wonderful, simple way to track something which is rotating. As can be seen above, the wheel has many little cuts in it. The clear part (near the print “D2") is an LED - it simply shines a light on the wheel. The magic happens in the black plastic part on the other side of the slotted wheel - as the wheel turns, the light pulses on this part, known as a photo-receptor. Some other circuitry then converts this pulse speed into how quickly the wheel is turning, which then determines how quickly the cursor will move on your screen in that axis.
So how do we disable the Y-axis? Well, there are a lot of ways you could do it, such as removing that roller, removing the diode, removing the photocell, or a host of other options. There is an easier, reversible way, though.
Since the LED just shines a light through the wheel, if we put some electrical tape around it, the light will not flicker on the other side, so the mouse will never register this axis as moving. We have now made an x-axis-only mouse.
After cleaning where the ball rides on the rollers (for smoother action!) and some quick re-assembly of the mouse, it’s time for testing. Upon plugging into the computer, both buttons and the wheel work as before, however moving the mouse in circles results it the cursor only moving exactly left and right - no vertical movement. This means, in Doom, no more accidental walking.