Todo lo que suena aquí sale de ejecutar el motor de sonido del cartucho (cuadro_de_sonido, 0x8082 del banco 14, y la rutina de p14:86BA que reparte los canales; lo llama la interrupción en p00:4030) en un Z80 emulado, cuadro a cuadro y a 60 por segundo, igual que lo llama el juego. Lo que el motor escribe en el PSG pasa a sonido con un AY-3-8910 (tools/musica.py). Cada MP3 es la pieza entera hasta donde vuelve a empezar, más 8 segundos de la vuelta apagándose; las que no se repiten acaban donde acaba el motor.
Las escrituras al PSG se han comparado cuadro a cuadro con las de openMSX (C-BIOS MSX1 japonés). En todos los cuadros el PSG queda igual:
El timbre no está cotejado: es el de un AY-3-8910 de manual, no una grabación del emulador. Las sondas están en tools/omsx_psg.tcl y tools/coteja_psg.py.
pide_sonido (p00:4145) y pide_sonido_si_esta_activo (p00:413A, que mira antes el bit 6 de 0xE002) guardan los registros, mapean los bancos 14 y 15 y llaman a la rutina de p14:86BA con el número en A. Los números bajos son efectos y del 0x3B en adelante hay música; el juego calcula el de cada fase, así que casi todas son pistas «de la tabla». Las voces ocupan 21 bytes desde 0xE010 y 0xE079 guarda la copia del mezclador del PSG, que el arranque deja en 0xB8. Las pistas que duran más de 75 segundos sin volver a empezar se cortan a los 75, y así se dice en cada una. Solo hay dos pistas cotejadas con openMSX, la 0x3B y la 0x44; las demás salen del mismo motor.
La pieza de estado_9_ultimo (0x56)
Lo pide estado_9_ultimo; se corta a los 75 s (la pieza sigue).
La pieza del 0x74EC (0x38)
Lo pide L_74EC; dura 1,3 s.
Pista 0x3B de la tabla (0x3B)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 26,4 s y vuelve a empezar en el segundo 0,2.
Pista 0x3C de la tabla (0x3C)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x3D de la tabla (0x3D)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x3E de la tabla (0x3E)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x3F de la tabla (0x3F)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x40 de la tabla (0x40)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x41 de la tabla (0x41)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 22,4 s y vuelve a empezar en el segundo 0,0.
Pista 0x42 de la tabla (0x42)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x43 de la tabla (0x43)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x44 de la tabla (0x44)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x45 de la tabla (0x45)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x46 de la tabla (0x46)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x47 de la tabla (0x47)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x48 de la tabla (0x48)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x49 de la tabla (0x49)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x4A de la tabla (0x4A)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 44,8 s y vuelve a empezar en el segundo 5,6.
Pista 0x4B de la tabla (0x4B)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x4C de la tabla (0x4C)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x4D de la tabla (0x4D)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 32,0 s y vuelve a empezar en el segundo 0,0.
Pista 0x4E de la tabla (0x4E)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x4F de la tabla (0x4F)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x50 de la tabla (0x50)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 21,3 s y vuelve a empezar en el segundo 0,0.
Pista 0x51 de la tabla (0x51)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x52 de la tabla (0x52)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x53 de la tabla (0x53)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 24,0 s y vuelve a empezar en el segundo 0,8.
Pista 0x54 de la tabla (0x54)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).
Pista 0x55 de la tabla (0x55)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; se corta a los 75 s (la pieza sigue).