Aquí no hay ninguna ilustración ni captura. Las pantallas y los doce mapas están dibujados desde los bytes de la ROM, ejecutando en Python el mismo descompresor de rachas, el mismo cargador de caracteres y el mismo montador de columnas que corre el Z80. El listado y las cifras salen del binario y se reproducen con make.
De una fase se sale por dos sitios: acaba_la_fase le suma uno al numero de fase, y salta_a_la_fase le mete uno escrito a mano. A este segundo saltan OCHO sitios, cada uno con el suyo, y de ahi sale el recorrido de verdad: 1 - 2 - 9 - 3 - 10 - 4 - 11 - 5 - 6 - 7 - 12 - 8. Las fases 9 a 12 son de bonus: no llevan jefe y su final devuelve la fase a la 3, la 4, la 5 y la 8. Y lo que las abre es el blanco del final de la fase: 0xB130, la unica instruccion de los 128 KB que para la pantalla, es la que miran los finales de la 2, la 3, la 4 y la 7.
Los ocho bytes de 0x575A programan los registros del VDP y no dejan nada donde lo deja la BIOS: los patrones viven en 0x2000 y los colores en 0x0000, la tabla de nombres en 0x3800 y los atributos de sprite en 0x3B00, pegados detrás de ella. Quien lea las direcciones de este listado esperando el reparto de siempre se equivocará en todas.
Las veintidós filas de treinta y dos casillas viven en 0xED00. Cada paso de scroll, 0x469D las corre una columna a la izquierda con veintidós ldir, 0x46AE mete por la derecha la columna nueva y 0x47FE sube los 704 bytes enteros a la VRAM con outi. La columna que entra sale del guión de la fase: cada cuatro columnas, seis números de pieza, y cada pieza son cuatro por cuatro caracteres. Con eso están dibujados los doce mapas de abajo, sin tocar el emulador.
No hay ni una semilla ni un generador. Lo que hace de azar es ld a,r, el registro de refresco, que va contando solo con cada instrucción: de ahí salen cuál de los dos dibujos de estrella se pone en cada columna de cielo (0x4750), por qué puerta cae cada piedra de la lluvia (0xABC2), cuántos cuadros dura cada dibujo del bicho que parpadea a destiempo (0xB016 y 0xBC59) y cuántos anda el que camina por el suelo (0xAAE6).
Un objeto se resume en su tipo, del 1 al 0x1F. Ese número manda en dos tablas gemelas: la de p00:0x5DFD dice quién lo mueve cada cuadro y la de p01:0x6B46 quién acaba de montarlo al nacer. De los treinta y un tipos, veinte tienen en el banco 3 al menos una de las dos, y dieciseis las dos, y por eso 0xA7B9..0xB537 es el trozo de código más largo del cartucho.
El tipo 0x1D se cierra en espiral alrededor de un centro, y para eso no hay tabla de senos: se toma la diferencia hasta el centro en una dirección, se parte por ocho con tres sra a y se le suma a la otra, y con la otra al revés. Eso es un giro de unos siete grados por paso. El radio se encoge aparte, multiplicando las dos coordenadas por un byte que empieza en 0xFF y baja de uno en uno cada 0x3C cuadros.
En el banco 12 hay, por fase, una lista de parejas [cuántos cuadros][qué vale el mando]. 0x5CDA la va leyendo y mete el valor grabado en 0xE009, la misma casilla donde 0x5767 deja lo que lee del joystick de verdad, encendiéndole además el bit del disparo. Y arranca con todo puesto: 0x5CB8 llama a la misma rutina que da la clave HYPER.
0x44E7 mira la tecla GRAPH y, con la pantalla parada, 0x50C9 va guardando letras en 0xE1E8 hasta que se pulsa RETURN; entonces se compara lo escrito contra las palabras de 0x51BF. Si se escriben jugando no pasa nada: el teclado de las claves solo existe mientras el juego está parado.
La tabla de 0x4214 dice a qué distancia vuelve a arrancar cada fase si ya habías llegado hasta ahí, y se lee con HL = 0x4212 y DOS VECES el número de fase. Tiene once entradas: la fase 1 coge la de 0x4214 y la 11 la de 0x4228. La fase 12 lee en 0x422A, que ya es código -los dos primeros bytes de un call-, y le sale 0xBACD, o sea 47.821. Como el scroll no llega ni de lejos a esa distancia, la fase 12 arranca siempre en 0x20: el fallo es real y su efecto es ninguno.
Al final del banco 3, en el offset 0x07FFF del volcado, están el código de cartucho RC-742 y ocho caracteres en katakana que se leen グラディウス, o sea Gradius. Es la firma que Konami escondía en sus cartuchos, y quien la descubrió y la documentó fue Manuel Pazos.
Debajo de la imagen está de dónde sale y qué se está viendo. Los mapas son la fase entera, de punta a punta.
SPEED UP, MISSILE, DOUBLE, LASER y OPTION