Aquí no hay ni una captura de pantalla. Las pantallas están dibujadas ejecutando en Python las mismas rutinas que el cartucho ejecuta en el Z80: su descompresor, su pintor y su pintor con máscara. Lo demás —el listado y las cifras— sale del binario y se reproduce con make.
El hallazgo es de Manuel Pazos, que lo contó en una charla; lo que aporta este desensamblado es dónde está escrito y la regla exacta. p02:81EE sube un contador cada vez que se entra en pausa, y al acabar la fase 24 p02:82DE mira sus dos bits bajos y les resta uno: si queda cero, la princesa sale viva.
O sea que hay que haber pausado 1, 5, 9, 13… veces —el resto de dividir entre cuatro tiene que ser 1— y no pausar nunca da el final malo. La cuenta sobrevive a perder una vida, pero el CONTINUE la borra. Los dos textos están en la ROM: YOU HAVE SUCCEEDED IN RESCUING THE PRINCESS y YOU HAVE FAILED TO RESCUE THE PRINCESS.
Se teclean en la pantalla del título y encienden el CONTINUE, que sin ellas no existe. p02:9522 vigila NUEVE teclas con SNSMAT de la BIOS y guarda las seis últimas pulsadas en una cola; p02:9634 las compara con dos patrones de seis bytes. Y las nueve teclas vigiladas —A, I, K, M, N, O, R, U y Z— son exactamente las letras que hacen falta para escribir esos dos nombres y ninguna más.
Las dos no hacen lo mismo: NORIKO deja 0xFE en 0xF0F7 y KAZUMI 0xFF, y con 0xFE justo el borrado del fin de partida se salta 143 bytes, así que NORIKO además conserva lo que se lleve encima.
Los rodillos de la máquina de apostar sacan su símbolo del registro R del Z80 —el contador de refresco de memoria— enmascarado a cuatro bits, y con ese índice leen la tabla de dieciséis de 0x7B34. La cereza ocupa cinco de las dieciséis casillas: 31,2 % por rodillo, y al menos una en el 67,5 % de las tiradas.
Y el reparto de premios de p01:7AF0 la trata aparte: por cada rodillo que saque cereza sube un contador, y los tres primeros multiplicadores de la tabla son 1, 2 y 4. Los demás símbolos sólo pagan si salen los tres iguales: ×8, ×10, ×15, ×20 y el premio gordo. Es la regla clásica de las cerezas, escrita en el Z80.
Caer en el centro de una grieta de modo 3, 4 o 5 (p01:72F2) abre la tienda, y el modo es el tendero. Los tres venden lo mismo —la lista de siete de la fase, 0xAF90— pero cada uno con su tabla de precios: la normal (0x6FD5), la del doble (0x6FE5, salvo el artículo 7, que sube de 17 a 32 y no a 34) y la de Santa Claus, que está a cero (0x6FF5) y cierra la tienda tras la primera compra (p01:6F09): regala una cosa. Son 41 tiendas en 18 fases: 18 normales, 20 caras y tres de Santa, en las fases 6, 12 y 21.
Y cada tendero habla: MAY I HELP YOU? GET WHATEVER YOU LIKE., HEY YOU! YOU MUST BUY SOMETHING FROM ME!! y WELCOME! I WILL GIVE YOU A JEWEL.; al pulsar END se despiden, el enfadado con un BUY MORE! WAIT! DAMN IT!!. Las seis pantallas están dibujadas desde las tablas y cotejadas contra 14 volcados de openMSX: cero diferencias.
El guion de avisos de 0xB046 convierte en grieta la cosa que sale tras su distancia y le pega dos bytes: el modo y la lista. Con el modo 2, caer dentro y pulsar abajo (p02:999C) lleva al WARP, una carrera de 0x150 pasos por el decorado 9, y al acabar p03:B94A lee el registro de 17 bytes de 0xB79B que escoge la lista y suma fases. Son seis: de la 1 a la 6, de la 6 a la 9, de la 9 a la 12, de la 13 a la 15, de la 15 a la 18 y de la 18 a la 21, medidos los seis en openMSX. Y en el mapa de antes de cada fase salen como caminos de puntos (0x8D85).
Los trece son lo que el cartucho le declara al Konami Game Master en su segunda cabecera, la de 0x4010. El juego dice otra cosa: p02:8328 compara la fase con 0x19 y las tres tablas de guion —terreno, enemigos y el tercero— cierran en 24 entradas justas. Y la partida del LEVEL 2 es otro diseño entero, sin un solo tramo igual.
0xE08B no es el largo de la fase: es el tiempo. p02:922D le quita uno cada 32 cuadros se ande o no se ande, por debajo de 0x15 pita un cuadro sí y otro no, y al acabar la fase p02:94D1 lo cambia por puntos de 0x20 en 0x20. Lo que va bajando con el terreno es otra cosa, 0xE08D, y de ella salen los nueve cortes del final de fase.
De ahí que el objeto de p03:B31E, que le suma 0x50 en BCD, no alargue el recorrido: da tiempo extra. Es lo único de todo el cartucho que toca ese contador después de montada la fase.
La circunferencia de 24 pasos y la parábola de 32 están escritas en la ROM y se leen. Pero para apuntar al jugador el banco 9 hace trigonometría de verdad: p09:ACE3 es una división de 16 entre 8 bits a base de restar y desplazar —el Z80 no tiene div— y p09:ACBA una arcotangente que busca el cociente en una tabla de ocho tangentes en formato 8.8, de 11,25 en 11,25 grados. El ángulo sale en las 256 unidades de circunferencia de la casa.
Y con semáforo en 0xE005. Ningún trazador estático lo sigue: de ahí salían 14 KB inventados en los bancos 12 y 13, que hubo que declarar a mano. Con el relleno 0xFF de la cola de un banco pasa algo parecido: 0xFF es rst 38h, así que el trazador se salía al banco vecino por la puerta de atrás.
Ninguna de estas imágenes es una captura: las dibuja tools/graficos.py desde la ROM.