Bug de ABU SIMBEL PROFANATION comunicado por Elfo Oscuro

En el Profanation, si pones el poke de inmunidad y te caes al agua que hay en la parte baja del mapa, el personaje cae por debajo de los marcadores y al llegar al final de la pantalla, salta un error en BASIC. En si mismo no es un bug, pero bueno...

Afortunadamente Iforeve nos amplia está información en el siguiente texto:

He estado en tu pagina y me gustaría explicarte lo del bug del abu simbel. En realidad no es un bug. Cualquier juego escrito en código maquina tiene sus propias rutinas de impresión, sonido, etc. En el caso del profanation no fue así y se aprovecharon de una rutina del Basic que es la RST #10, que consiste en imprimir en unas coordenadas especificadas el carácter que se encuentre en una dirección de memoria. Aunque no lo tengas que tomar al pie de la letra, el código seria mas o menos así

ld a, color

ld bc, coordenadas_jones

ld hl, direccion_grafico_a_imprimir

call mete_datos_en_stack_calculadora

rst #10 ; Imprime

  ¿Y por que falla? Muy sencillo, por que no es valida la instrucción PRINT AT 22,X y en su lugar el Basic pone la instrucción OUT OF RANGE, pq la coordenada esta fuera del margen 0 a 21.

  Y como Dinamic, lógicamente, no metía pokes de inmunidad, cuando el personaje llegaba a la coordenada 21,x en la que estaba el agua morías. Pero que sucedía con inmunidad, que el personaje se imprimía en las posiciones 21 para el primer trozo del grafico y en el 22 para el segundo trozo, con lo que la rst #10 al tener que imprimir en 22,x retornaba el error del Basic, ya que dinamic usaba la rutina de impresión del Basic. Manda guevos. Cuando vi esto me defraudaron bastante ya que esperaba una programación mejor. Espero que con esta explicación puedas actualizar y quedar mas completo el bug de dinamic.  

 

Volver atrás