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:

DomainAddressData TypeSignedEndianDescription
System Bus288930WordSignedLittlePlayer health
System Bus297006DWordUnsignedLittlePlayer X position
System Bus297010DWordUnsignedLittlePlayer Y position
System Bus297032WordUnsignedLittlePlayer heading (degrees)
System Bus292836WordSignedLittlePlayer sub-heading
System Bus296994WordUnsignedLittleObject types (150 entries, 60 byte stride)
System Bus297034WordSignedLittleObject health (150 entries, 60 byte stride)
System Bus271862WordUnsignedLittleDoor openness table (64 entries)
System Bus297007WordUnsignedLittleObject X (150 entries, 60 byte stride)
System Bus297011WordUnsignedLittleObject Y (150 entries, 60 byte stride)
System Bus297004ByteUnsignedLittleObject direction (150 entries, 60 byte stride) from 0 to 7, 0 being east and increasing 45 degrees counter-clockwise
System Bus291294WordUnsignedLittleLevel timer
System Bus280712ByteUnsignedLittleTile data (4096 entries)
System Bus159344ByteUnsignedLittleRNG index

GameResources/DOS/Wolfenstein3D last edited by adelikat on 7/17/2022 10:11 PM
Page History Latest diff List referrers View Source