Newest Title : Doom Keyboard Spinner v0.50Beta
FileName : DKS050.com 07/31/95
Modified by: : Phil Pattengale & Gary Gesmundo
Email Address: : firstname.lastname@example.org
How to Use this? : Copy to your Doom2 directory and run it. <GRIN>
Release Notes DKS v0.50
: Works with DOOM2 (tested)
: Doesn't work with Ultimate Doom or Heretic v1.2
Don't know why - haven't investigated yet.
Should work with original doom - but can't test it.
: Doesn't work with Sirdoom. Don't know about
Dwango or ACPI. Sorry.
: Modifications to remove mouse functionality.
Mouse.sys and KEYBOARD+MOUSE still required to
perform the actual flip itself.
These mods appear to significantly reduce the
"sticky key" problem that plagued DMS v0.15
Future plans for DKS
: -U Unload tsr option
: if possible, mouse calls determine number of
"mickeys" based upon mouse driver resolution, rather
than the fixed value being used now.
: Masm 6.11
: exe2com 1.04 by Chris Dunford/The Cove Software Group
New Title : DOOM Mouse Spinner v0.15 with KEYBOARD Support,
: AND toggle key to disable mouse forward/backward movement!
Filename : DMS015.com
Modified by : Lincoln Yeoh
Email Address : email@example.com
Title : Doom Mouse Spinner (DMS) v0.12 beta
Filename : DMS.COM
Authors : Tom Klok and Dave 'Zoid' Kirsch
Email Address : firstname.lastname@example.org
Description : Ever had the problem of a monster or
deathmatch opponent sneaking up behind
you? Ever needed to turn around *now*?
With DMS, you can rotate your player
180 degrees with a click of the mouse!
Release note : This is a *BETA* release. DMS has been
tested with Logitech 3-button and
Microsoft 2-button mice. It should work
with others without problems. I don't
know what it would do with a CyberMan.
Release note for DMS v0.13
: Modified by Lincoln Yeoh so you can use a
user definable key on the keyboard to flip!
And added -n for people who don't want to use
the mouse buttons to flip.
Seems to work. If it doesn't. Tough! Go fix it.
: More modification so you can use a definable key
to disable/enable mouse y-movement.
Shortcomings - my code is ugly.
Does not clear left over keypresses after getting key
Construction : TASM 3.1, TLINK 5.1
What it is
DMS is a tiny TSR (1.3K bytes resident) that intercepts Doom's
calls to the mouse driver. By clicking the mouse buttons that you
define, it will instantly turn you 180 degrees -- facing the exact
opposite direction. Cranking up your mouse driver sensitivity can
allow you to do the same, but then your accuracy may fall off.
With this you don't have to make that compromise.
It supports mouse "chords". For example, if you have a 2-button
mouse you can set it up to spin you only when you press the left and
right mouse button at the same time. 3-button mice permit even more
combinations. I prefer the Middle+Right button chord on my Logitech.
LY> I prefer to flip with the keyboard, and leave the mouse buttons
for other stuff. That explains this patch :-). This makes it easier
to run forward, flip, run backward facing opponent, aim, fire, flip
back again to see where you're going. Also convenient if you back into
a door- flip, press spacebar..
Also seems like some people had problems staying on top of platforms
(tsk tsk), so I decided to add this for them.
Does it work for Deathmatch?
Sure, why not? It shouldn't cause consistency failure. Some
might consider it cheating, though.
LY> I think adding the keyboard support makes it a bit more fair now...
Mouse AND Keyboard is still better!
It'll only be cheating if I manage to add another feature.
How it works
Doom uses two standard Mouse API services:
function AX=0003h - mouse button status
function AX=000Bh - mouse delta mickey counts
A 'mickey' is the smallest unit of mouse movement... sort of like
a pixel on the screen. Every time Doom requests the new delta mickey
counts, the mouse driver returns the number of mickeys (X and Y,
positive and negative) the mouse has moved since the last request.
DMS hooks interrupt 33h, the mouse driver interrupt, and watches
for those two function requests. Whenever Doom asks for the latest
button status, DMS passes the request on to the mouse driver and then
checks to see if the special button(s) have been pressed. If they
have, it masks them out (tells Doom they never happened) and adds 180
degrees to the X-axis mickeys the next time Doom asks for them.
DMS 0.13 does that too, and also checks the keyboard- in al,060h
DMS was written in assembly language for small size. Source code
How to install it
Put DMS015.COM in your Doom directory, or some other directory in your
DOS path. Simply type 'DMS015' to load it. Be sure you load it AFTER your
mouse driver, not before, or it won't work. <-- Important!
'dms015 -?' or 'dms015 -h' will display some simple usage help. To
configure your own button preferences, run DMS with a parameter
indicating which buttons you want. The default is the right mouse
button. For example, if you prefer the Left+Right buttons to spin
you, enter 'dms015 -lr'. I use 'dms015 -n' for none - no spin using mouse
You can change your button definitions by running DMS again. It
will detect that it is already loaded and just update the buttons.
Same goes for the keyboard. However the message is wrong - default
means previous key setting not those stated in the message.
DMS may be loaded into conventional memory, or high memory (UMB's).
There really isn't any point in loading it high, however, as Doom doesn't
need much conventional memory and DMS only consumes 512 bytes resident.
Make sure you maximize the mouse sensitivity setting in Doom.
Anything less than full sensitivity will mean you'll turn less than 180
ENSURE that you have set your controller type to Keyboard and Mouse
in your DOOM config setup. Even if you are just using the keyboard
you need the mouse driver and mouse enabled under DOOM for it to work!
It should work with controller type set to just plain Mouse...
But that's a weird thing to do!
How to uninstall it
DMS doesn't include software to release itself. Sorry. Go
download the MARK/RELEASE tools, or just reboot after you're done.
[NOTE: I will hopefully adding this feature to a later release of DKS - pcp]
DMS is Copyright (c) 1994 Tom Klok and Dave Kirsch. Permission
is granted to distribute it via any media (Internet, BBS, CDROM, etc)
as long as full attributions are maintained and the source code is
included. If you modify the source and build something new with it,
please have the courtesy of leaving our names on it as well and
mailing us a copy. If you are a CDROM producer and include this
package with your distribution, we expect a free copy of your disk as
compensation. Write to Tom Klok at email@example.com to notify
us and get a shipping address.
-- tk 12Aug94Th
I did try to email Tom and Dave a copy, but their email addresses don't seem
to work anymore. Anyone know their email addresses?
Thanks to you two anyway. Nice code - finally some PC code that even I can
Thinking of adding auxiliary keys/button for forward and backwards. Nah,
DOOM isn't a flight simulator!! :-). Tried that with DMS014. Doesn't work well
sometimes the keys are lost - lose key up events.. So forget that one.
Typing DMS015 by itself doesn't seem to select right button by default.
Can't be bothered to fix that!
-- LY 19 June 1995
Given that Lincoln couldn't email the originals, I haven't tried. Thanks
Most thanks go to Lincoln for the keyboard idea, and I did try to send him
In order to do this most correctly, the keyboard interupt should be hooked,
rather than the mouse call. Will investigate such a piece of code in the
future. Would still require Mouse.sys & KEYBOARD+MOUSE in order to flip
The problem with sticky keys is the reason I undertook this adventure. It
appears that the hook for the mouse delta mickeys call behaves oddly when
it gets back to DOOM. Hooking that call and sending out the "proper" # of
mickeys to initiate a 180 works, but somewhere a keyboard buffer gets stuffed
I removed all the mouse button functionality in order to try and minimize or
eliminate the problem. As a result, the code is MUCH smaller, and it appears
that the sticky key problem still exists, but occurs less frequently. I
suspect that your keyboarding style may affect the frequency of sticky keys.
I always have the shift key down, frequently in conjuction with the alt key,
the up arrow, the left arrow, and the fire key. All at once. It is during
frequent manuvering with heavy keyboard activity, that I will experience
sticky keys. Simply tapping the "stuck" key should free it, returning
A final note. Some have opinioned that the use of DKS(DMS) is/should be
considered cheating. Their reasoning is that a flip key isn't part of id's
original code. While thier point is well taken, I put forth that the
mousers have such an advantage, and this simply gives a more level playing
field. Trust me Mousers, this code CAN'T work miracles for the novice
keyboarder <GRIN>. It offers no "uncompetitive" advantage, the mouser has
the ability, so should the keyboarders. This code simply fixes an id
oversight. It's not like we can see in the dark with it!
-- pcp 07/31/95