Arch-vile fire spawned at the wrong location
From DoomWiki.org
Due to a bug in the Doom engine, the fire from the arch-vile's attack can be spawned at the wrong location. When the fog is initially spawned, the following code is used, which contains a blatant programming error:
// // A_VileTarget // Spawn the hellfire // void A_VileTarget (mobj_t* actor) { mobj_t* fog; if (!actor->target) return; A_FaceTarget (actor); fog = P_SpawnMobj (actor->target->x, actor->target->x, actor->target->z, MT_FIRE); actor->tracer = fog; fog->target = actor; fog->tracer = actor->target; A_Fire (fog); }
On the line in bold, the actor's target's x coordinate is used again where the code should instead use the target's y coordinate. This causes the initial position of the fire to be shifted on the x-y plane relative to the target of the arch-vile's attack. Should the target become hidden from the arch-vile's line of sight before the fire's position is updated, the fire will remain in this incorrect position until it dissipates completely.
As an exercise, Alexandre-Xavier Labonté-Lamoureux (axdoomer) determined how to fix this bug manually in the executable using IDA Pro in 2019.[1]
External links[edit]
- YouTube video demonstrating the bug
References[edit]
- ↑ Labonté-Lamoureux, Alexandre-Xavier (29 November 2019). "Fixing the Arch-Vile fire bug in Doom II." Retrieved 19 January 2024.