Par times hidden in Final Doom after idclev or reload


In Final Doom, par times are not shown after using the IDCLEV cheat code. This bug was introduced in The Ultimate Doom when making changes to accommodate a fourth episode. Doom II is also victim of this bug if one of the affected executable is used to play this game.

When playing Final Doom or Doom II, the engine internally sets the episode in the epsd variable to 1 and it normally remains like this. When warping to a level using the IDCLEV cheat, this variable is changed to 0.

   if (cht_CheckCheat(&cheat_clev, ev->data1))
       char		buf[3];
       int		epsd;
       int		map;
       cht_GetParam(&cheat_clev, buf);
       if (gamemode == commercial)
           epsd = 0;
           map = (buf[0] - '0')*10 + buf[1] - '0';
           epsd = buf[0] - '0';
           map = buf[1] - '0';

The variable epsd is then modified somewhere else in the source code and is set to 3 (episode 4). A check was added in The Ultimate Doom so par times would not be displayed in episode 4, hence the bug because the game thinks the player is playing the fourth episode when in fact there are no episodes in Doom II and Final Doom.

   if (wbs->epsd < 3)
       V_DrawPatch(SCREENWIDTH/2 + SP_TIMEX, SP_TIMEY, FB, par);
       WI_drawTime(SCREENWIDTH - SP_TIMEX, SP_TIMEY, cnt_par);