El codigo

Empezar · El juego · La cinta · Hallazgos · Preguntas abiertas

El mapa de memoria, una vez colocado

direcciónqué hay
0x0190-0x3F4Ela capa MSX: VRAM, teclado, joystick, color, cinta
0x5E00-0x96F0el juego: menú, mundo, partida, batalla y paneles
0x9E00-0xE677gráficos, mapa y tablas, ni un byte de código

Dentro del bloque alto, cada cosa en su sitio:

direcciónbytesqué es
0x9E00-0xA2801.152128 tiles del mapa, de nueve bytes
0xA2E8-0xB8E85.632176 sprites de batalla de 16×8 con máscara
0xB8E8-0xC600—tablas de estado del juego
0xC800-0xCC001.024la fuente: 128 caracteres de ocho bytes
0xCC00-0xE4006.144el mapa
0xE400-0xE678632tablas finales

Y una cosa que explica una dirección rara: el mapa empieza en 0xCC67 y no en 0xCC00 porque justo delante están los 0x80 caracteres imprimibles de la fuente. Los códigos >= 0x80 son tiles del mapa, de nueve bytes; los < 0x80 son caracteres, de ocho.

Las variables viven dentro de las instrucciones

Este juego guarda casi todo en los operandos de sus propios ld. El reloj son cuatro ld a,nn (0x831C, 0x8326, 0x8333, 0x8355); el cargador de cinta guarda ahí su puntero; y la batalla llega a reescribir opcodes, no sólo operandos: 0x8982 mete un 0xD0 (ret nc) o un 0xD8 (ret c) dentro de 0x8AF3 para que la misma rutina recorra un bando o el otro.

Eso obliga a trazar el flujo de verdad y a justificar cada punto de entrada, porque un desensamblado lineal se pierde en cuanto una tabla de saltos o un operando automodificado deciden adónde se va.

Cómo se hizo el listado

Los comentarios, medidos

make densidad
listadoinstruccionescomentariosdensidadrutinas flojas
war_loader37915039,6 %0 de 48
war_pantalla141071,4 %0 de 1
war_bajo78522628,8 %0 de 96
war_medio5.6641.64629,1 %0 de 621
total6.8442.03229,7 %0 de 767

El listón de la serie son dos cifras, y las dos se cumplen: más del 22 % de densidad y ninguna rutina por debajo del 10 %.

El bloque grande, el del juego, estaba en 11 comentarios de 5.664 instrucciones —el 0,2 %— antes de esta pasada. Leerlo línea a línea para comentarlo es lo que destapó casi todo lo que hay en Hallazgos, empezando por que en 0x62FF no está el dibujo del cursor sino lo que el cursor tapa.