Magical Tree

Un arbol de nueve fases que el cartucho guarda en la VRAM, una pantalla que hace de mapa, y las nueve fases dibujadas desde las tablas sin una celda distinta del emulador.

Konami - (c) Konami 1984 - Cartucho RC-713, 16 KB - MSX1 - pagina 1 - Volcado a3f3ad0d...

Aqui no hay ninguna captura. Todas las imagenes estan dibujadas desde los bytes de la ROM: las pantallas con la cadena de montaje del cartucho escrita en Python, y el arbol con el guion de cada fase y su paso del decorado, cotejado contra openMSX a cero celdas. El listado y las cifras se reproducen con make, y el reensamblado devuelve la ROM byte a byte.

El cartucho en cifras

100 %del binario explicado
628rutinas con nombre
47,4 %del listado comentado
8.537bytes de codigo
7.847bytes de datos
0bytes sin identificar

Lo que aparecio al desmontarlo

El nivel vive en la VRAM

0x52BB sube el guion de la fase a 0x3B80, detras de la tabla de atributos de los sprites: entre 723 y 918 bytes, segun la fase. El juego tiene un kilobyte de RAM y va leyendo su nivel del VDP segun se sube.

Las piezas que no borran

0x6889 solo borra la fila que deja un objeto al bajar si su tipo no lleva el bit 7. Las que lo llevan dejan su primera fila detras, y asi se alarga el hilo de las aranas.

La pantalla es el mapa

No hay copia del nivel en RAM. Para saber donde pisa el jugador, 0x61A3 lee de la VRAM las dos celdas que tiene bajo los pies, y los bichos, antes de avanzar, preguntan a la pantalla si la celda de delante deja pasar.

El azar es el registro R

Nueve ld a,r: el contador de refresco del Z80, que avanza solo con cada instruccion, decide el color de un bicho, en que sitio aparece o que proyectil sale.

Nueve cielos, una mascara

El hueco de cada fase toma el color de (0xE05D): cian, verde claro, amarillo claro, gris, negro... La primera no la saca de la tabla de 0x741F sino de los valores iniciales de 0x51C1; con el primer valor de la tabla, el cotejo se separa en 1.809 bytes de color.

Hermano de Circus Charlie

El descompresor tiene la misma firma de catorce bytes que el del RC-712, la escala cromatica son los mismos doce bytes y la vida extra sigue la misma regla: el mismo codigo, en otro sitio.

Lo que el cartucho dibuja

Debajo de cada imagen esta de donde sale y que se esta viendo. Las nueve fases enteras estan en El juego.

Las nueve fases enteras, una al lado de otra y apoyadas en el suelo: de abajo arriba se suben. Cada una, a tamano completo, en El juego.
Las nueve fases enteras, una al lado de otra y apoyadas en el suelo: de abajo arriba se suben. Cada una, a tamano completo, en El juego.
La fase 1 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 1 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 2 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 2 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 3 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 3 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 4 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 4 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 5 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 5 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 6 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 6 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 7 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 7 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 8 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 8 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 9 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La fase 9 al empezar: su primera pantalla, desde el guion de la ROM y cotejada contra openMSX a 0 celdas.
La pantalla de la casa, montada desde la ROM y cotejada a 0 bytes.
La pantalla de la casa, montada desde la ROM y cotejada a 0 bytes.
La de titulo, montada igual y cotejada a 0 bytes.
La de titulo, montada igual y cotejada a 0 bytes.
El arbol que 0x7629 pinta al cambiar de fase, del centro hacia fuera y con los colores de la fase que empieza (aqui, la 2). Cotejado a 0 bytes.
El arbol que 0x7629 pinta al cambiar de fase, del centro hacia fuera y con los colores de la fase que empieza (aqui, la 2). Cotejado a 0 bytes.
El castillo, al acabar la novena: sus columnas del centro hacia fuera, las ventanas de 0x7600 con los dos personajes y el rotulo. Cotejado a 0 bytes.
El castillo, al acabar la novena: sus columnas del centro hacia fuera, las ventanas de 0x7600 con los dos personajes y el rotulo. Cotejado a 0 bytes.
Los patrones de la fase, con la mascara de color de la primera.
Los patrones de la fase, con la mascara de color de la primera.
Los sprites de 16x16, desde los bloques de la ROM.
Los sprites de 16x16, desde los bloques de la ROM.