Movement

Scale

Speed

Primary direction

Each direction has associated primary direction. This is the direction "use" command searches for object (door, elevator, secret door, etc...)
So for instance, if strafing West at 135 degree angle, you can open door pointing to West, but if strafing West at 225 degree angle, you can't open that door without turning.
Also, doors to East (like the normal elevator door and elevator in E1L1) can't be opened at either 45 degree angle suitable for straferunning East.

Weapons

Pistol

Has no rapid fire ability. Fires every 25 frames.

Machine Gun

While holding down the fire button, fires every 12 frames. Fires every 25 frames if the fire button is released and pushed again. As a result of this, it's slightly more efficient to hold down the fire button even if every other shot misses.

Chaingun

While holding down the fire button, fires every 6 frames. Acts like the machine gun, except with an involuntary second bullet, so each volley is an even number of bullets. Volleys start 25 frames apart from each other if the fire button is released and pressed again (or 19 frames after the second bullet of the last volley).

Player-to-enemy damage calculation

All random numbers are 0-255.
The numbers are pulled from a table-based pseudo-random number generator. The table of values is (pulled from the source):
  0,   8, 109, 220, 222, 241, 149, 107,  75, 248, 254, 140,  16,  66
 74,  21, 211,  47,  80, 242, 154,  27, 205, 128, 161,  89,  77,  36
 95, 110,  85,  48, 212, 140, 211, 249,  22,  79, 200,  50,  28, 188
 52, 140, 202, 120,  68, 145,  62,  70, 184, 190,  91, 197, 152, 224
149, 104,  25, 178, 252, 182, 202, 182, 141, 197,   4,  81, 181, 242
145,  42,  39, 227, 156, 198, 225, 193, 219,  93, 122, 175, 249,   0
175, 143,  70, 239,  46, 246, 163,  53, 163, 109, 168, 135,   2, 235
 25,  92,  20, 145, 138,  77,  69, 166,  78, 176, 173, 212, 166, 113
 94, 161,  41,  50, 239,  49, 111, 164,  70,  60,   2,  37, 171,  75
136, 156,  11,  56,  42, 146, 138, 229,  73, 146,  77,  61,  98, 196
135, 106,  63, 197, 195,  86,  96, 203, 113, 101, 170, 247, 181, 113
 80, 250, 108,   7, 255, 237, 129, 226,  79, 107, 112, 166, 103, 241
 24, 223, 239, 120, 198,  58,  60,  82, 128,   3, 184,  66, 143, 224
145, 224,  81, 206, 163,  45,  63,  90, 168, 114,  59,  33, 159,  95
 28, 139, 123,  98, 125, 196,  15,  70, 194, 253,  54,  14, 109, 226
 71,  17, 161,  93, 186,  87, 244, 138,  20,  52, 123, 251,  26,  36
 17,  46,  52, 231, 232,  76,  31, 221,  84,  37, 216, 165, 212, 106
197, 242,  98,  43,  39, 175, 254, 145, 190,  84, 118, 222, 187, 136
120, 163, 236, 249
The RNG index is a value from 0-255. It increases at least once every frame and also whenever a random number is required, and wraps back around after it hits 255.

Enemy-to-player damage

Enemy AI

Enemies behave differently depending on if they can see you or not. Note that AI decisions are based on entire tiles, and the subposition of the player is not used as a tiebreaker if they line up with the enemy.

Enemy sees player

Enemy is awake but cannot see player

Enemy reaction times

Enemies will react if they see you or if you fire a bullet within their floor code (enemies placed on deaf tiles will not react to bullets). Floor codes and deaf tiles can be viewed in the map editor. If a door is even slightly open between two floor codes, they will be considered conjoined and firing within one code will awaken enemies in both. Errors in floor code design can be exploited to awaken enemies behind locked doors and do some easy door tricks (see E3L3).
Different enemies have different reaction times once they're aware of your presence, with some of them incorporating randomness. All reaction times here are given in frames.

Level editor

Havoc's Wolf3D Editor gives you detailed level maps, object locations, and enemy patrols: http://hwolf3d.dugtrio17.com/index.php?section=hwe

Memory addresses:

Wolfenstein 3D
System: DOS
Domain Address Data Type Signed Endian Description
System Bus 288930 Word Signed Little Player health
System Bus 297006 DWord Unsigned Little Player X position
System Bus 297010 DWord Unsigned Little Player Y position
System Bus 297032 Word Unsigned Little Player heading (degrees)
System Bus 292836 Word Signed Little Player sub-heading
System Bus 296994 Word Unsigned Little Object types (150 entries, 60 byte stride)
System Bus 297034 Word Signed Little Object health (150 entries, 60 byte stride)
System Bus 271862 Word Unsigned Little Door openness table (64 entries)
System Bus 297007 Word Unsigned Little Object X (150 entries, 60 byte stride)
System Bus 297011 Word Unsigned Little Object Y (150 entries, 60 byte stride)
System Bus 297004 Byte Unsigned Little Object direction (150 entries, 60 byte stride) from 0 to 7, 0 being east and increasing 45 degrees counter-clockwise
System Bus 291294 Word Unsigned Little Level timer
System Bus 280712 Byte Unsigned Little Tile data (4096 entries)
System Bus 159344 Byte Unsigned Little RNG index

GameResources/DOS/Wolfenstein3D last edited by slamo on 9/5/2016 12:47 AM
Page History Latest diff List referrers View Source