The header is AB with INIT at 0x4011. Byte 0x4010 is the switch for the test cheat (see Findings).
The mapper
Four 8 KB windows, each with its register: 0x67F8, 0x6FF8, 0x77F8 and 0x7FF8. There are 54 writes with a fixed bank and 12 with a variable one (the maps, which come in the stage record), and all of them follow the rule: each bank always goes to the same window (tools/paginas.py mide). The only exception is bank 0, which p00:47E0 puts back at 0xA000 after drawing a block.
start-up, the interrupt, the tasks, the game loop, screens, sprites; the title
1
1,128 B
the sound (player, music and effects) and loading the tiles into VRAM
2
—
more scores, the 24 stage records, their screens and their palettes
3
7,536 B
the actors: how each type moves (task 3) and the hand-off to the bosses; their poses
4
2,769 B
the five bosses, round 7 and the ending
5
1,340 B
the DA20 things: scenery, doors, rocks, drops
6
6,722 B
Rastan: the controls, his three layers, the life bar and the status bar
7
4,359 B
what Rastan picks up, the points, the collisions and the hits
8-15
—
sprite patterns (and in 8, the bosses' definitions)
16-25
—
the tiles, which go to VRAM whole
26
—
the sprite definitions of Rastan and of types 0x18 onwards
27
—
the stages' block tables
28-31
—
the maps; 30 also holds the definitions of types 0x01-0x17
VRAM
The screen on display is page 0. The tiles (banks 0x10-0x19) are copied at start-up to 0xC000 and to pages 2 and 3 (p01:6077). Sprites are in mode 2: colours at 0x8400, attributes at 0x8600 and patterns at 0x8800; each pattern is copied from the ROM when it changes (p00:4534).