Aquí no hay ninguna ilustración ni captura. Las pantallas están dibujadas desde los bytes de la ROM, ejecutando en Python el mismo descompresor de rachas, el mismo pintador de listas y el mismo guión del título que corre el Z80. El listado y las cifras salen del binario y se reproducen con make.
El lanzador de 0x5757 sólo sabe poner las posturas 1, 2 y 3: los platos de 100, 500 y 1000. Las posturas 4 y 5 no las pone nadie más que dos rutinas escondidas al final del cartucho, 0x761A y 0x762F, que montan la ranura a mano con nueve bytes escritos en la ROM. La primera suelta el pulpo; la segunda, el pájaro.
0x4F59 las llama cuando una tanda se acaba con las tres ranuras vacías, contando en 0xE19A: la primera vez el pulpo y la segunda el pájaro. Pero 0x762F empieza mirando 0xE179, y ese byte sólo lo marca 0x5AC1 cuando el plato reventado era la postura 4 —el pulpo— y 0xE178 dice que se disparó con el cañón de arriba. Darle al pulpo no basta: hay que darle con el cañón de arriba, que es el de 0xE0C4. El pulpo paga 0x30 en BCD (3000 puntos) y el pájaro 0x10 (1000).
Y hay una forma de quedarse sin los dos: 0xE199. Cada vez que 0x58EF retira un plato sin que 0xE179 esté puesto, 0x591D lo marca, y con él puesto 0x4F59 no llama a ninguna de las dos —ni sube la dificultad—.
0xE145 arranca en 3 (0x4C32). 0x65D1 lo baja de uno en uno, pero sólo cuando la flecha se clavó en el anillo 9, que no es el aro de fuera sino el centro de la diana: es el que paga 600 en la tabla de 0x5D37, donde el aro de fuera es el 0 y paga 10.
Al tercer centro 0xE145 llega a cero, y entonces 0x5C22 no monta el remate de siempre: copia las seis fichas de sprite de 0x5E59, que son la manzana y el pingüino. Acertarle deja el patrón 0x7C —el rótulo 3000— y 0x0030 en BCD en 0xE11D: otros 3000 puntos.
El tercer secreto no es un sprite. Cuando el jurado da el levantamiento por bueno (0x6F98) y el jugador sigue pulsando el botón, 0x523E sube 0xE132 un punto por cuadro. Al llegar a 5, 0x5065 rellena doce casillas de la fila 16 con el tile 0x91 y doce de la 17 con el 0x92, y sobre el podio aparece el arriate de flores. 0x524B cobra además 2000 puntos en BCD.
Con la barra arriba, 0x6F78 enciende una luz cada 0x20 cuadros en la columna 2, debajo del rótulo JUDGE; a la tercera pone 0xE071 y 0xE1A3 a uno y el levantamiento vale. Ese 0xE1A3 es luego el que decide el color de la figura, si se copian unos bytes u otros a la VRAM y qué cifra se pinta: el mismo byte manda en cinco sitios distintos.
0x5CCF eleva al cuadrado las dos distancias al centro de la diana (0xBC, 0x53) con ocho sumas y desplazamientos, las suma, y compara ese cuadrado contra la tabla de 0x5D03, que son los radios de los nueve anillos ya elevados al cuadrado: 1, 6, 16, 25, 64, 96, 144, 196 y 289. El último no cabe en un byte, y por eso el bucle le pone el 1 de arriba a mano con un xor a / djnz / inc a.
El lanzador lee hacia dónde sale cada plato de la tabla de 0x583E bit a bit, y su altura de la de 0x5866 de dos en dos bits, cada una con su propio contador. No hay ninguna semilla ni ningún reloj de por medio: el cartucho lanza siempre igual.
El reproductor guarda doce periodos en 0x7832 —de 0x6A a 0x38— y saca las otras octavas doblando el periodo en 0x7815, que es exactamente lo que significa bajar una octava. Con el reloj del PSG, el 0x6A da 1.055 Hz y el 0x38 da 1.998: el do y el si de la misma octava.
En 0x7587 hay ocho nombres de catorce tiles —FLY, BANTAM, FEATHER, LIGHT y MIDDLE WEIGHT, MIDDLE HEAVY, HEAVY WEIGHT y SUPER HEAVY— y en 0x6F48 sus ocho pesos en BCD: 150, 165, 180, 195, 210, 225, 240 y 260 kilos. El ángulo del arco, en la otra prueba, sube de 0,28 en 0,28 grados y da la vuelta a los 4,00.
Muchos cartuchos de la casa esconden al final de la ROM su número de catálogo y el título en katakana; lo descubrió Manuel Pazos (@ManuelPazosMSX). Aquí no está: los últimos 25 bytes son 0xFF de relleno, sin el 0xAA que cierra la marca. El RC-717 viene del catálogo, no del binario.
Debajo de la imagen está de dónde sale y qué se está viendo.
ANGLE en la fila 10, WIND abajo y SCORE a su lado. La diana está centrada en la X 0xBC y la Y 0x53, que son exactamente las dos constantes contra las que 0x5CCF mide cada flechaJUDGE, la columna de las tres luces que enciende 0x6F78; abajo la barra POWER que pinta 0x6E24 en la fila 23; en el centro el cartel CHOOSE CLASS donde 0x756D escribe la categoría; y a la derecha el de los kilos