Todo lo que suena aquí sale de ejecutar el motor de sonido del cartucho (CORRE_EL_SONIDO, 0x7696, y ARRANCA_EL_EFECTO, 0x7844, que le reparte los canales; lo llama la interrupción) 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.
ARRANCA_EL_EFECTO recibe el número en A y reparte el sonido entre los canales que le tocan, sin pisar a otro de más peso; SUENA_SI_SE_PUEDE hace lo mismo solo con partida (bit 6 de 0xE002). Los números bajos son efectos y del 0x9A en adelante hay música de tres voces. Las voces ocupan 12 bytes cada una desde 0xE010 y 0xE034 guarda la copia del mezclador del PSG, que el arranque deja en 0xB8. Las pistas «de la tabla» están en la tabla de pistas pero ninguna rutina las pide con un ld a.
Preparados (0x99)
Lo pide SKEET_PASO_0, WEIGHT_PASO_2 y SUENA_AL_LLEGAR; dura 0,8 s.
La música del 0x9C (0x9C)
Lo pide ESTADO_03_SUB1: sonido 0x9C y 80 fotogramas de espera; dura 4,9 s.
El aviso de fin (0x9F)
Lo pide AVISA_Y_ESPERA; dura 3,5 s.
El rótulo con créditos (0xA2)
Lo pide MIRA_SI_SIGUE; dura 3,7 s.
La pieza del 0x4201 (0xA5)
Lo pide L_4201; dura 2,8 s.
El aviso o la fanfarria (0xA8)
Lo pide SKEET_PASO_5_FIN; dura 2,4 s.
La pantalla de récords (0xAB)
Lo pide RECORDS_PASO_0; dura 19,1 s.
Pista 0x9A de la tabla (0x9A)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 4,9 s.
Pista 0x9B de la tabla (0x9B)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 4,9 s.
Pista 0x9D de la tabla (0x9D)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 4,4 s.
Pista 0x9E de la tabla (0x9E)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 4,4 s.
Pista 0xA0 de la tabla (0xA0)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 3,7 s.
Pista 0xA1 de la tabla (0xA1)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 3,7 s.
Pista 0xA3 de la tabla (0xA3)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 3,7 s.
Pista 0xA4 de la tabla (0xA4)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 3,7 s.
Pista 0xA6 de la tabla (0xA6)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 2,8 s.
Pista 0xA7 de la tabla (0xA7)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 2,8 s.
Pista 0xA9 de la tabla (0xA9)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 19,1 s.
Pista 0xAA de la tabla (0xAA)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 19,1 s.
Pista 0xAC de la tabla (0xAC)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 19,1 s.
Pista 0xAD de la tabla (0xAD)
Lo pide ninguna llamada directa: está en la tabla de pistas; dura 18,3 s.