Aqui no hay ninguna captura. Todas las imagenes estan dibujadas desde los bytes de la ROM, ejecutando en Python los mismos descompresores, espejos y montadores de bandas que corre el Z80, y cotejadas byte a byte contra la VRAM de openMSX: las ocho fases volcadas del emulador dan cero diferencias en color (6.144 bytes), patrones (6.144) y las 704 casillas del mapa. El listado y las cifras se reproducen con make, y el reensamblado devuelve la ROM byte a byte.
El cartucho lleva dos cuadrantes de coseno, uno escalado a 255 (0x844E) y otro a 128 (0x848F), y con ellos saca el seno y el coseno de un angulo de 0 a 255. Un cuadrante de coseno solo puede bajar. Estos dos suben una vez cada uno, y el valor que sube es justo el unico que se aparta de la funcion: la entrada 58 de la primera vale 0x2F donde le tocaba 0x25, y la 12 de la segunda vale 0x74 donde le tocaba 0x7A. Las otras 64 entradas de cada tabla se ajustan al coseno con una desviacion media de 0,48 y 1,73. Son dos erratas de los datos, y estan vigiladas por un test.
0x6F44 se llama una sola vez, justo despues de poner la partida a cero. Pide que el mando lea 0x2C en sus seis bits bajos -bits 2, 3 y 5: izquierda y derecha a la vez mas el segundo boton, que en un joystick no se puede hacer- y ademas una tecla de las filas 3, 4 o 5 del teclado. Una de las tres pone 26 vidas en (0xE060); las otras dos tocan el arma de (0xE069).
En 0x4010 va la segunda cabecera, la que lee el Konami Game Master desde la otra ranura: "CD" 07 39, o sea RC-739. Los 21 bytes que siguen se reparten con un byte de banderas, y el reparto cuadra byte a byte: acaba en 0x4024, justo antes de donde vuelve a haber codigo. Declara la variable de escena, las vidas, el record, la puntuacion, ocho fases y una direccion mas: 0x56C8, que es una rutina de este cartucho a la que nadie de dentro llama. Lo que hace son diez bytes: pasar la fase que el Game Master escribe en (0xE061) al indice interno de (0xE062).
El decorado se monta por bandas de cuatro filas, y el mapa de bits que dice cuando avanza el puntero de bloques va seis bytes por tramo mientras que se leen siete. O sea que la ultima banda de un tramo y la primera del siguiente salen del mismo byte. Y no solo del mismo byte: el decorado que dan es identico, comprobado en los nueve empalmes de cada una de las ocho fases.
Las fases 0, 3 y 7 comparten casillas y guion de color. Lo que las distingue es (0xE661): el lector de bloques (0x443B) traduce cinco codigos de color -0xE1, 0xEC, 0xE8, 0xE6 y 0xE5- restandoles 0x50, y otros 0x50 mas si el banco es el 2. Un solo bloque de 640 bytes da los tres decorados. La 5 y la 6 van mas lejos: comparten casillas y color, y solo se diferencian en el mapa.
0x5A73 saca un byte de 0x5A95 cada ocho cuadros y se lo pasa a guarda_lo_recien_pulsado, que es la misma puerta por la que entra el mando. Son 118 pulsaciones, unos diecinueve segundos a 50 Hz. El cp 0xFF que la cerraria nunca llega: dentro del bloque no hay ni un 0xFF, y la demostracion se corta por otro lado.
Cada una es una tira de 256 x 1952 pixeles, dibujada desde la ROM bloque a bloque; ninguna es una captura. Se leen de abajo arriba, que es como se juegan. Arrastra de lado para ver las ocho.
monta_el_marcador (0x565C), y son los mismos en las ocho.0x443B con (0xE661) a uno.0x2470 (0x553E).Debajo de cada imagen esta de donde sale y que se esta viendo.
monta_el_titulo (0x47BA). El rotulo grande son 33 casillas -once por tres- escritas por un bucle desde la 0x60.0x902D, cada uno con su desplazamiento y su color.0x9338.0xA993. No caben a la vez: el cartucho los recarga en TRES ranuras de la hoja de sprites (0x1D00, 0x1E00 y 0x1F00) segun lo que vaya saliendo.0x7772, cada uno con el bloque de SU tipo cargado en la ranura: sin eso el byte de patron es relativo y no dibuja nada. El fondo es gris a proposito, que casi todos son siluetas de color 1, o sea negras.0x63FB, pareja [patron][color]. Solo las dos ultimas se animan, con cuatro fotogramas cada una.0x8250, que 0x8231 indexa con la cuenta.0x54BE sube al empezar cada fase -las armas, los disparos y los objetos-. Van en blanco porque un patron de sprite NO tiene color propio: se lo pone cada tabla que lo usa, y ahi arriba estan los que lo tienen.