If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Bugs:Doom (PC, 1993)

From The Cutting Room Floor
Jump to navigation Jump to search

This page details bugs of Doom (PC, 1993).

This cactus is UNDER CONSTRUCTION
This article is a work in progress.
...Well, all the articles here are, in a way. But this one moreso, and the article may contain incomplete information and editor's notes.
Cactus feels all lost and stuff.
This page documents Ultimate Doom bugs only.
These bugs also apply to Doom 2, but specific bugs like Mancubus fireballs no-clipping are on its own page.
Hmmm...
To do:

Doom is great, but also a buggy mess within its engine.

Doomguy Status Bar Face Oversights

Doomguy's status bar faces has a bunch of coding oversights that are not really bugs, but are still worth noting as id Software didn't fix these. First, while loading a save after you picked up a weapon, the evil grin face will still display when you loaded the save. Second, the "ouch" face. The ouch faces are supposed to display when the player takes over 20% damage, but because of the said oversight, this face is never displayed when you take that much damage and only displays the STKILL face. However, the coding oversight will show the ouch face when you pick up health items after taking 20% damage. The conditions should've been applied to make the function work:

// being attacked

priority = 7;

if (plyr->health - st_oldhealth > ST_MUCHPAIN)

{

SHOULD have been:

// being attacked

priority = 7;

if (st_oldhealth - plyr->health > ST_MUCHPAIN)

{

Along side the code, the ouch face has unused variants that were seen from the main page. Most modern source ports have also fixed this oversight and thus these unused variants can be seen.

Doom ouchface.png

Immobile Monsters on Doors (DOOR STUCK! DOOR STUCK!)

At 9:33, Decino explains that monsters can get stuck in doors. A monster can get stuck in a door by having it touch a door rail and the door at the same time, the monster is triggering a linedef and sets their movement to none, and thus they are stuck. This commonly happens within MAP02: Underhalls in Doom 2.

Intercepts Overflow (The All-Ghosts Effect. Free Noclip for all!)

Unlike the ghost monster effect that happens when an Arch-Vile resurrects a crushed corpse in Doom 2 seen from the start video, the intercepts overflow bug doesn't involve Arch-Viles.

To give a brief overview on how this oversight happens, when a weapon is fired (using the pistol as an example), its hitscan travels across for 128 map units in a blockmap. Along the way it would hit an intercept, or anything that gets in the way of where the gunshot fired at. The intercepts are stored in an array which can hold 128 intercepts at maximum and it is emptied as soon as the next shot is fired. The oversight is that the array doesn't have limit checking functions for detecting if more than 128 intercepts were reached, and thus if the hitscan crosses more than 128 intercepts, extra memory will be overwritten over the main memory of the game and thus will cause an overflow and trigger the bug.

As a result, this bug would make the monsters and player able to walk through walls, with the sector height and effect is still active. That means secret sectors can be triggered even in this state, and thus explore the maps' unreachable secrets, such as the torch secrets in E4M3.

Both monsters and players are invulnerable to most forms of attacks, except for melee attacks and Arch-Vile's blast damage. Crushers also become ineffective, switches and teleporters cannot be operated, respawning becomes broken and only damaging floor sectors can hurt you. Thus, when the intercepts overflow is in effect, the only way to exit a map is if the map has a death exit damaging floor sector. Thankfully, the bug can be remedied by saving and then loading that save.

Monster Paralysis

Monsters have their own AI, and each monster calculates a few steps from 0 to 15 in order to do a ranged attack (excluding Nightmare mode). Each step decreases the counter by 1, and when the counter hits 0, the demon performs the ranged attack. Monsters will never perform ranged attacks if their move counter isn't 0, but monsters with melee attacks can skip this state to use their melee attack. If the step counter reached negative, a new value will be calculated to identify the shortest distance to the target (which most of the time this will be the player, but remember, monsters can also infight). If a monster can't find a target, the monster will try again from different angles and paths to find the target it's objecting towards.

This is also why monsters spin around in high platforms and why some monsters can't seem to reach you when you are close to certain walls on certain corridors. Now, if all ways for a monster to travel are blocked off, then the monster cannot move and thus nothing will happen to the monster. The monster's step counter is in the negative, and is completely immobile (similar to the doors) and cannot attack. If the monsters step counter at some point will reach -32,768, it will underflow to 32,767. Once the step counter reaches 0 in this case, the monster will attack. This bug can come in handy for larger enemies such as the Spiderdemon or Arachnotrons, and you can even have Cyberdemons paralyzed and have monsters infight them! The monster common way is to have a hitscan enemy or a guided Revenant missile hit your desired enemy, and then paralyzed the monster with colliding objects and have those other monsters kill your paralyzed monster.

The blockmap can also cause monsters to be paralyzed if a monster is placed in a specific spot, or if the map maker places an enemy too close to a wall (e.g. the Shotgun guy by the sewer hole in MAP 02: Underhalls and the two overlapping Pinky Demons in MAP 31: Wolfenstein in Doom 2). More common ways of paralysis is through monsters getting crushed by a lowering ceiling, or funky Arch-Vile resurrection that have a monster too close to a lowering ceiling.

Vanishing Projectiles

This strange bug allows projectiles to just vanish out of thin air upon touching a wall. Simply put, if a sky wall is behind a regular wall within a sector, the projectile disappears because it thinks it's touching the sky. This also happens in part with how the projectiles move in the game. A projectile determines its next move each tick, and if goes into contact with part of the sky, it disappears.

Various Buggy Explosions

Explosions are very cool, but what if they were even more fun? Explosions in Doom simply work by checking to see where an explosion (either caused by rockets from the player or the Cyberdemon, Arch-Vile blasts, or Icon of Sin wall explosions) hit upon an area, checking how far the blast damage reaches, and detecting if any monsters were hit within a block within the blockmap. Within those blockmaps, some rare but broken side effects can happen if multiple monsters are placed upon one another. A monster can get hit multiple times as if multiple rockets were used upon it, meaning it can deal more damage than intended due to this priority function, which this must be caused within the same blockmap, cannot play its pain state, idle animation, and it has to take damage on its first idle frame to have it wake up.

Basically, the monster absorbs damage, other monsters from the same blockmap also absorb the damage, then the monster you hit reabsorbs the damage again and again until all monsters from the same blockmap were hit. Another really odd bug is with rockets traveling up walls or stairs. If the player shoots a rocket into some specific walls (e.g. Dead Simple's Mancubus platforms) while facing it, the game checks if a rocket is going to touch a floor or ceiling and if the wall is under 24 map units, then puts the rocket into the wall, makes it travel upwards since it confirms that the wall is under 24 map units, and explodes. The line of sight check is omitted since the player is facing a wall and not the floor, so no damage will also be done towards the player. Line of sight checks are very strange when it comes to explosions.

Monsters that are performing line of sight checks that can see a projectile can take damage, while those who do not see the projectile, yet have part of their collision exposed, do not take damage. Line of sight checks can also literally fail at random, and sometimes even barrel explosions won't even hurt the player, and this also can happen to rockets and will only have monster intake impact damage and no blast damage, and can even be flip-flopped and only blast damage can be taken.

No-clipping Projectiles

This is very widely known bug within the entire game, as it can be a curse and useful in some ways. Projectiles have a given width and also to determine their next position when they're up and about. Some projectiles within Doom 1 such as imp fireballs and baron fireballs have a small width, and in some cases can pass through thin walls as there is a chance if the imp or baron shoots their projectile, there is a chance for the projectile's calculations that it's next position will pass through a wall, hence why they seem to "no-clip". This more commonly happens on nightmare difficulty, so there is a greater chance for a projectile to pass through walls. In Doom 2, Mancubus fireballs are more commonly seen on MAP 7, Dead Simple to slip through walls. The Mancubi on the platforms are close to the walls, and the projectiles have more lineage to have greater chances to calculate through the walls.

"Wallrunning"

A very fun bug that allows you to travel faster speeds on straight walls when in contact and at a certain angle (specifically, holding W and D when strafing on a north-south side wall, or holding W and A while on an east-west side wall). You can even outrun projectiles or even rockets from ones that you (the player) have launched, another player's in multiplayer, or a Cyberdemon's. The rocket doesn't explode when you hit it, and even if it hits the wall you don't receive any damage.

(Source: The Doom Wiki page on Wallrunning)

Wall Wiggle (Wiggle Wiggle)

When a player is standing in the middle of two-sided linedef, and if a floor with stairs can be seen with the wall not being visible in sight, the floor texture can clip and bleed through the wall texture, causing a "wiggle" and weird sight on the player's view. The most common way of seeing this is from the first map of Doom 2.


(Source: The Doom Wiki page on Wall wiggling)

Several Geometry Bugs

Time stamps to the video will be provided in each of these sections.

"Buggy Stairbuilder" (9:11)

An exploit was found that map makers can use that can allow stairs to go beyond their usual height, and the developers of the Boom source port decided to fix this bug and use Doom's exact stair building method on how the engine iterates steps. If this bug was fixed, TNT Evilution MAP 30's stairs to the red key wouldn't function.

Floors Preventing To Move (9:48)

There is a weird bug that doesn't allow rising floors to move when hit by a switch when monsters or other entities hit a wall or reach the ceiling.

Movement Clipping (10:03)

A fluke in Doom's code allows players to partially clip (different from no-clipping, as you don't go directly through the wall) through walls and have the ability to pick up items through those walls. This has been exploited to receive E4M1 and E4M6's red skull keys without needing to travel to their intended routes to obtain them.

Linedef? More like Line-deaf (10:27)

Doors in Doom usually check their surroundings for sectors to see where their intended height should raise to. If a sector has a linedef placed on it, the door's sector check cannot find anything and will cause the door to be jammed and won't open all the way.

2-Sided Middle Textures Being Unable to Animate (12:11)

In Doom v1.2, 2-sided mid-textures wouldn't animate, and was fixed in Doom v1.666.

Lost Bounce

Hmmm...
To do:
Check to see if the code is bugged in the current release of Doom 2.

(Time stamp 11:49) Lost Souls during Doom v1.9 used to have buggy code that had their vertical moment is set to 0 when charging at the player or another monster, and wouldn't let them bounce off of floors and ceilings like how they used to prior. This was fixed in the main release in Ultimate Doom and not within a source port, for once.