The cartridge

titleVampire Killer / Akumajō Dracula (Konami, 1986)
numberRC-744
machineMSX2 (V9938, 128 KB of VRAM), SCREEN 5
size131,072 bytes: 16 banks of 8 KB
mapperKonami without SCC (Konami4)
soundPSG, three channels
sha25699eabaaeb2b6c02220e131043d5a6401d0d8c5f413d89204547adcc04d65e7e2

The mapper

Bank 0 is fixed at 0x4000-0x5FFF. The other three windows are chosen by writing the bank number to 0x6000, 0x8000 and 0xA000. There is not a single write to 0x5000, 0x7000, 0x9000 or 0xB000, the registers of the mapper with SCC: that is why it is Konami4.

There are 39 writes to the mapper (tools/reconocimiento.py), and no bank shows up in two different windows. So each bank has one single address where it runs, and the listing can be split into sixteen modules, one per bank, each with its own org:

windowbanks
0x4000 (fixed)0
0x60001, 4, 11
0x80002, 5, 7, 9, 12, 14
0xA0003, 6, 8, 10, 13, 15

They are loaded three at a time (ld a,N / inc a / inc a: 1-2-3, 4-5-6, 11-12-13) or two at a time (7-8, 9-10, 14-15). Each window's bank is kept at 0xF0F2 and 0xF0F3, and the interrupt puts it back when it is done (p00:4042).

What each bank holds

bankcodewhat it holds
07,173 Bstart-up, the interrupt, the game states, the VRAM, the status bar, the secrets on entering
16,996 Bbuilding the room, the sprites, Simon and his collisions, the ending
26,987 Bthe items, the vendors, the enemies (list 0xC800) and what they throw (0xD700), the scroll's map
37,400 Beach enemy type and the bosses, Dracula included
4, 5, 6—the tiles of stages 0 to 12; bank 6 also how each enemy is put together (0xB473)
7, 8—the tiles of stages 13 to 18
9—the always-loaded tiles (p00:5670), each room's script and palettes
10—palettes per room and stage, compressed graphics
11—the 156 rooms (0x6013)
12, 13211 Bthe 32 × 32 blocks; in 13, which room each exit leads to (p13:B963) and each stage's door
141,019 Bwhat each room hides (0x8000), its enemies (0x8668) and the sound: 16 tunes (0x8DC9) and 29 effects
15—the scores

In all, 29,786 bytes of code and 101,286 of data: 100% of the cartridge accounted for (make sanity).

The VRAM

The game runs in SCREEN 5: 256 pixels wide, 16 colours out of a palette of 512 (p00:4B61). Page 1 of the VRAM is the store: that is where the stage's 191 8 × 8 background tiles go when it starts, along with the 16 × 16 items (rows 0x50, 0x60 and 0x70) and the five 32 × 32 vendors (row 0xA0). Page 0 is the screen: the room is drawn from the buffer at 0xD100, and the items, the vendors and Dracula are copied from page 1 with the VDP commands (LMMM, HMMM, HMMC).

The sprites are mode 2 (16 × 16, coloured line by line). Since the VDP draws no more than eight on a line, p01:6560 rotates their order every frame when it copies them to the VRAM, so the flicker is shared out. So the VRAM table is almost never in the RAM's order (0xD400 and 0xD600), and Simon's check is done against the RAM.

The RAM that matters

addresswhat it is
0xC000 / 0xC001the game state and its sub-state
0xC413a life is under way
0xC415Simon's life (0x20 full)
0xC420-0xC46FSimon: state (0xC420), y (0xC425), x (0xC427), legs (0xC42E), body (0xC42F)
0xC434the ring's counter
0xC800the enemy list
0xD000 / 0xD001 / 0xD002stage, room and block of three stages
0xD012the difficulty level (0-3)
0xD700what the enemies throw
0xE000the stage's secrets, copied from bank 14
0xE6000xFF if there is a Game Master in another slot