El cartucho

16.384 bytes con la cabecera de siempre: AB en 0x4000, INIT en 0x404F, y STATEMENT, DEVICE y TEXT a cero. La BIOS lo mapea en la página 1 (0x4000-0x7FFF) y salta a INIT al terminar de arrancar.

El mapa de memoria

0x4000-0x7FFFel cartucho
0xE000-0xE3FFla RAM del juego, que INIT borra
0xE400la pila

Del cartucho, 7.981 bytes son código (4.038 instrucciones) y 8.403 son datos, en 143 rangos con nombre. No sobra nada.

Lo que se le dice al VDP

Los ocho registros están en 0x44F1 y 0x44D7 los copia a 0xE038 antes de mandarlos:

registrovalorqué significa
R00x02SCREEN 2
R10xE216K, pantalla encendida, interrupciones y sprites de 16x16
R20x0Etabla de nombres en 0x3800
R30x7Ftabla de colores en 0x0000
R40x07tabla de patrones en 0x2000
R50x76atributos de sprite en 0x3B00
R60x03patrones de sprite en 0x1800
R70xE1borde negro

Cómo se guardan los dibujos

De tres maneras, y el listado usa las tres para recorrer los datos y saber dónde acaba cada bloque:

Por rachas, que descomprime RLE_A_VRAM (0x4D24). Un byte de cuenta: el cero acaba, una cuenta con el bit 7 puesto copia esos bytes tal cual, y sin él repite el byte siguiente esas veces. Entrando por 0x4D24 el flujo trae delante su propia dirección de VRAM, de dos bytes; entrando por 0x4D28 la dirección viene en DE.

Copias tal cual, 0x4502, con HL, DE y BC.

Copias espejadas, 0x6DC1: lo mismo, pero cada byte entra con sus ocho bits al revés, así que un dibujo sirve para una cosa y para la misma mirando al otro lado. Cuenta con B, y una de las llamadas carga ld bc,0x0018, que deja B a cero: esa copia son 256 bytes, no 24.

La fuente

48 glifos de ocho bytes en 0x4A37. El código de tile ES el ASCII, así que van del 0x30 (0) al 0x5F, y 0x4635 los repite en los tres tercios de la pantalla para poder escribir en cualquier sitio.

La fuente

Detrás de la Z hay cinco celdas que no son letras: la palabra with que el menú necesita para «1PLAYER with JOYSTICK», y las dos flechas del cursor.

Las listas que dibujan

Dos formatos, los dos listas de códigos de tile: