The name: DMPATCH.EXE The purpose: To allow simple, consistent ways to patch the DOOM executable. The program: This is a very simple patch program. It was written with DOOM in mind, but should be able to be used with almost any file (with some things in mind, see caveats). I wrote it to be flexible, and made it allow easy patches to different versions of the executable. This program takes either 1 or 2 command line arguments. If there are two command line arguments, the first is the name of the file, and the second is the offset in the file to make the modifications. If there is only one argument, it is the offset into the file. In this case, the file 'doom.exe' in the current directory is assumed to be the file to edit. After the program starts, and it does a few things, it will ask you how many bytes you want to change. Enter the amount you desire. Now the program will put you in a rather crude editing mode. The current values at the requested address will be display, and a "_" will be shown a couple of lines below. This represents the current editing position. You may enter in the patch values you want. If you make a mistake, the backspace should work; however, I wouldn't count on it 100%. Try not to make mistakes, and don't start without backing up the original. After you have entered the correct number of bytes, the program will display what you entered and ask if that is OK to patch. If you say yes, the program will patch the addresses and drop you out on the DOS command line. Otherwise, it will just drop you out in DOS that much faster. The good: I am trying to get a consistent way to publish the many things I have found about the executable in a way that will help most people. I will organize this into some sort of table ASAP. I am always welcome to new entries from anyone, and will also field requests to figure out patches to do new things. The bad: This program will modify your executable. If you enter erroneous information, you could DESTROY your executable. Please backup the DOOM.EXE (or whatever other file you are patching) before beginning. I have tried to make sure it is stable, but we all know how that goes. If anyone catches anything I missed (bugs that is), I would appreciate a line. The ugly: MY INTERFACE. This program is crude. It is not user friendly. I did not spend a lot of time on it. If you have suggestions for interface or other modifications/additions, I would love to hear them (particularly if they are not too complex to implement). The example: Say I want to change 4 bytes at hex offset 8ab48 in doom.exe (which is in the current directory) dmpatch 8ab48 Then enter 4 when it asks how many bytes to change, etc, etc. Say I want to change 6 bytes at hex offset 12af9 in \games\doom\doom.exe (which is NOT in the current directory) dmpatch \games\doom\doom.exe 12af9 Then enter 6 when it asks how many bytes to change, etc, etc. The caveats: I wrote this for my own use. For this reason, I wrote it to be most compatible with the disassembler I use. The disassembler that I use does some weird segmenting stuff with the DOS4GW header, and hence, subtracts 1dd0 (hex) from each address (ie: offset 5dd0 in the file appears as 4000). So, the patch values that I supply will be 1dd0 (hex) less than their actual offset in the file. If you are going to use this program on a file other than DOOM, keep this in mind. The request: I would love to have some help disassembling doom.exe. If anyone has done any of this and would like to share it with me, I will add it to what I have already (and of course give credit where due). I think we could get a pretty decent list pretty quick with a few peoples input. The BS: I wrote this program for my own use. I am releasing it into public domain so that others can use it to. I make no guarantees express or otherwise about its operation. If you can't deal with that, don't use it. I will not accept responsibility for how this program is used (particularly if it is illegal), or what it does to your information if you use it wrong or there is a bug in it. The program may be freely distributed. ID software has no knowledge (to my knowledge) of this software and is in no way affiliated with it. They cannot be held responsible for it in any way. Please any suggestions/observations/etc e-mail to me. Steve Larsen larsen@sunset.cs.utah.edu larsen@unislc.slc.unisys.com