Arch-vile fire spawned at the wrong location


A screenshot of this bug in Doom II MAP16: Suburbs.

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)
       A_FaceTarget (actor);
       fog = P_SpawnMobj (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]


  1. Labonté-Lamoureux, Alexandre-Xavier (29 November 2019). "Fixing the Arch-Vile fire bug in Doom II." Retrieved 19 January 2024.