In the emulator

Everything drawn on this website is checked against openMSX on an MSX2 machine (C-BIOS_MSX2_EU, and C-BIOS_MSX2_JP for the Japanese title). The probes are Tcl scripts that put the cartridge where it is needed by poking the RAM, and dump the whole VRAM (128 KB), the palette and the VDP registers at the right moment.

The probes

probewhat it dumpslauncherdumps
omsx_titulo.tclKonami's curtain and the titlelanza_titulo.sh4
omsx_habitacion.tcleach room, when the screen comes onlanza_habitaciones.sh156
omsx_habitacion.tcl250 frames of enemies per roomlanza_cosas.sh156
omsx_habitacion.tclDracula standing, in his four frameslanza_dracula.sh4
omsx_lecturas.tclwhat the cartridge reads on each stagelanza_fases.sh—

omsx_habitacion.tcl starts a game, sets the stage at the ret of p00:44E8 (0xD000, 0xC411 and 0xD002) and the room just before p01:62F5 loads it (0xD001), and leaves Simon in mid-air in the middle of the screen. When p01:6321 switches the screen on it waits half a second and dumps. It is driven with environment variables:

VK_OUT=work/habitaciones VK_FASE=6 VK_HAB=1 \
openmsx -machine C-BIOS_MSX2_EU -cart vampirekiller.rom -script tools/omsx_habitacion.tcl

The checks

make coteja (or python3 tools/coteja.py) compares what is drawn from the ROM with the dumps. Current result:

testwhat it comparesresult
titulocurtain and title, EU and JP: screen and palette4 dumps, 0 with differences
habitacionesthe 156 rooms: what is drawn on page 0, the palette and what is uploaded to page 1156 dumps, 0 with differences
mapathe castle grid and its exitsno cell used twice; 22 one-way exits
simonSimon, sprites and patterns against the RAM156 dumps, 0 with differences
draculascreen, saved background, sprites and patterns4 dumps, 0 with differences
enemigoseach sample's geometry against 0xB47358,430 with their drawing; 0 unexplained

Tips for watching it