Aquí no hay ni una captura de pantalla. No pueden haberla: el juego resube la pantalla al VDP sin parar, y dos fotos del mismo estado separadas tres segundos ya salen con el 37 % de los píxeles distintos. Lo que se ve está dibujado desde el búfer de pantalla del ZX Spectrum que el juego lleva en RAM, volcado en un instante fijo y pintado con la tabla de color del propio cartucho. El control: dos pasadas del mismo estado dan una imagen idéntica al píxel, así que lo que cambia entre «sin» y «con» lo cambia el parche.
El mapa guarda un bit de «aquí hay alguien» por casilla, y RECENTRA_EL_MAPA (0x7FAC) lo vuelve a sembrar unidad a unidad. Pero su bucle para en la unidad 0x78, que es justo donde empieza el bando enemigo: las enemigas no se siembran, y por eso no se dibujan. Esa era la niebla de guerra del juego, y era un descuido con forma de cp 078h.
Un byte, en 0x7FD1: el tope pasa a 0x00 y el bucle recorre las 256 ranuras. Medido: 136 unidades enemigas se siembran donde antes se sembraban cero.
La ficha lista seis cualidades —Valioso, Hábil, Duro, Bravo, Enérgico y Decidido— como adverbio más adjetivo («es muy bravo»), nunca como cifra, y con eso no se pueden comparar dos unidades.
Una rutina nueva de 76 bytes lee los seis valores de 0xC000-0xC300 y los escribe en la columna 20 de cada línea. La engancha un trampolín de tres bytes en 0x708A, donde la ficha hacía ld hl,0x5FBD justo antes de pintarse. Comprobado contra la RAM: coinciden los seis.
Esta petición estaba mal leída la primera vez. No es el contador 0xC300 del portador: es una cuenta atrás de meses. El reloj del juego baja uno el operando de 0x8333 —que 0x7F4F deja en 255 al empezar—, saca el mensaje «El Anillo corrompe al que lo usa.» y hace jp z,DERROTA.
Ese número es, literalmente, lo que te queda, y el juego no lo enseña en ningún sitio. El anillo de la ficha es el carácter 0x5F en 0x7C46; las tres columnas de su izquierda estaban libres, y ahí va ahora.
Con el cambio 1 las enemigas salían… con tu casco, que es media solución: las ves, pero no sabes cuáles son. Y la rutina que dibuja sólo mira el byte del mapa, así que no puede saber de qué bando es una unidad.
El bit 5 de ese byte estaba libre —medido: cero usos en las 13.260 casillas—, y ahí va ahora la marca de bando. El icono son cuatro tiles nuevos al final de la tabla de 0x9E00, en los índices 111 a 114, que estaban a cero.
La conversión de Animagic dejó los topónimos del mapa en inglés y tres nombres de raza truncados: «Brujo», «Elf» y «Hum». Cambian 19 cadenas —diez sitios del mapa, un nombre de unidad, las tres razas, los cuatro adjetivos de la ficha y su última línea— y no se mueve un byte.
El registro de un sitio lleva el tamaño de su cartel (ancho<<4 | filas) y el texto lo rellena entero, así que el nombre nuevo tiene que medir lo mismo: Cavada + Grande llena el cartel de 7×2 donde iba Michel /Delving. Los nombres de raza viven en dos listas que se recorren contando bits de fin, así que dentro de una lista una cadena sí puede cambiar de largo: «Brujo » → «Mago» libera dos bytes y sale dos veces en cada lista, los cuatro justos que necesitan «Elf» → «Elfo» y «Hum» → «Hombre».
Los 128 dibujos de 8×8 del mapa se sacan a un PNG a tamaño real, se repintan con un editor cualquiera y 122 de los 128 vuelven a la cinta convertidos en entradas del parche, con su orig y su nuevo del mismo largo, igual que las escritas a mano. Los seis que no cambian es porque el dibujo que vuelve es idéntico al que había.
Y ahí salió que el lienzo mentía: cada tile lleva pegado un atributo del Spectrum, pero el juego no lo manda a la pantalla, lo traduce antes ATRIBUTO_A_COLOR (0x049F) con dos tablas de ocho colores del MSX. Así que sólo se pueden pintar doce de los quince colores del MSX, y la herramienta avisa y sustituye si se cuela uno imposible. El texto va ahora sobre el mismo khaki de los marcos: un byte en 0x763F.
La tabla de cuadros de dos por dos de 0x77B5 tiene seis entradas a cero y parecen sitio de sobra. No lo son: PINTA_LO_DE_ENCIMA elige entrada con un and 00fh sobre el nibble bajo del terreno, así que los índices 0x00-0x0F ya tienen dueño.
Poner el Ojo en el hueco 0x03 se lo puso a las 447 casillas de terreno de tipo 3. La salida fue no usar índice: apuntar HL a una lista propia de cuatro códigos y entrar en el estampador ya pasada su aritmética, en 0x7720.
Cada pareja es la misma partida, la misma casilla y el mismo instante, cargando la cinta original y cargando la parcheada. Las de «ahora» están volcadas de la cinta parcheada de hoy, con el mapa ya repintado.