Todo lo que suena aquí sale de ejecutar el motor de sonido del cartucho (sonido_del_cuadro, p04:6000, y pide_sonido, p04:67FD, que apunta la pista; la interrupción lo llama en p00:41B9 con los bancos 4 y 5) 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 MSX2 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.
sonido (p00:4284) mete los bancos 4 y 5 y llama a pide_sonido (p04:67FD) con el número en A: por debajo de 0x29 es un efecto, que ocupa el canal de 0xC070 si manda más que lo que suena, y del 0x29 en adelante es música de tres o cuatro canales. El número de la música de cada sala lo calcula el juego, así que casi todas son pistas «de la tabla». La RAM del sonido está en 0xC010-0xC0FB y 0xC0F0 guarda la copia del mezclador del PSG, que el arranque deja en 0xB8. Las que suenan igual que otra se publican una vez, y las que duran más de 75 segundos sin volver a empezar se cortan a los 75.
La música de una sala (0x32)
Lo pide pon_c602: la música 0x32 (0x2F si la pone un actor del tipo 6); dura 45,2 s y vuelve a empezar en el segundo 6,5.
La música del transceptor (0x5C)
Lo pide transceptor_texto y c900_paso_2; dura 0,1 s.
Pista 0x29 de la tabla (0x29)
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 0x2A de la tabla (0x2A)
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 0x2B de la tabla (0x2B)
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 0x2C de la tabla (0x2C)
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 0x2D de la tabla (0x2D)
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 0x2E de la tabla (0x2E)
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 0x2F de la tabla (0x2F)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 47,8 s y vuelve a empezar en el segundo 9,2.
Pista 0x30 de la tabla (0x30)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 47,8 s y vuelve a empezar en el segundo 9,2.
Pista 0x31 de la tabla (0x31)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 45,2 s y vuelve a empezar en el segundo 6,5.
Pista 0x33 de la tabla (0x33)
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 0x34 de la tabla (0x34)
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 0x35 de la tabla (0x35)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 50,7 s y vuelve a empezar en el segundo 19,5.
Pista 0x36 de la tabla (0x36)
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 0x37 de la tabla (0x37)
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 0x38 de la tabla (0x38)
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 0x39 de la tabla (0x39)
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 0x3A de la tabla (0x3A)
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 0x3B de la tabla (0x3B)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 55,0 s y vuelve a empezar en el segundo 23,0.
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 0x1F de la tabla (0x1F)
Lo pide ninguna llamada directa: sale de la tabla de pistas por un número calculado; dura 4,6 s.
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 44,0 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 0x53 de la tabla (0x53)
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).