Doom Wiki
Advertisement
Doom Wiki


En la última versión lanzada de Heretic (y posiblemente también en versiones anteriores), es posible grabar una demo que tenga guardado un número de mapa no válido. Al intentar reproducir la demo, se reproducirá en una ranura del mapa impredecible y, por lo tanto, parecerá desincronizada.

Cómo reproducirlo[]

Se debe cargar el juego usando los argumentos de línea de comandos -warp y -record, pero proporcionado solo un argumento a -warp, que en realidad espera dos:

heretic -warp 1 -record zomg3

El juego comenzará en el Episodio 1, Map01, a pesar de que no hayas especificado correctamente los argumentos para saltar. Sin embargo, al intentar reproducir la demo resultará en la reproducción en un mapa diferente (en este caso, E1M9).

Causa[]

Cuando se inicia Heretic, maneja el argumento -warp antes que -record. El código en D_DoomMain para manejar el salto de nivel analiza los dos argumentos que siguen a -warp en la línea de comando, pero sin asegurarse de que sean números válidos. En su lugar, se utiliza el valor numérico, sea cual sea.

   p = M_CheckParmWithArgs("-warp", 2);
   if (p && p < myargc - 2)
   {
       startepisode = myargv[p + 1][0] - '0';
       startmap = myargv[p + 2][0] - '0';

En el ejemplo anterior, trataría 1 como el número de episodio y - como el número de mapa, lo que equivale a 45.

El argumento -record lo maneja a continuación G_RecordDemo, que simplemente escribe el valor del número del mapa en la demo, por lo que en este caso escribe 45.

Cuando comienza el juego, el código posterior ignoró el número de episodio/mapa no válido y, por lo tanto, el juego comienza en el nivel E1M1.

Advertisement