La música

Todo lo que suena aquí sale de ejecutar el motor de sonido del cartucho (reproductor, 0x8964 del banco 14, y sonido, p00:509F, que apunta las partituras en las fichas de los canales; lo llama la interrupción en p00:403B con los bancos 14 y 15 puestos) 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.

Cotejado con openMSX

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.

Cómo se pide una pieza

sonido recibe el número en A: el 0 lo calla todo, del 0x80 al 0xFA es una música de tres canales cuyas partituras salen de la tabla de 0x8DC9 del banco 14 (seis bytes por música), del 1 al 0x7F es un efecto y del 0xFB en adelante son órdenes especiales. Antes de arrancar hay que correr inicia_el_sonido, que deja la copia del mezclador del PSG en 0xBC y los manejadores de los canales en reposo. La RAM del sonido está en 0xC010-0xC0A8. Las pistas «de la tabla» salen de la tabla por un número calculado. Las que repiten partitura de otra se publican una sola vez; las que duran más de 75 segundos sin volver a empezar se cortan a los 75.

Las músicas

Suena la partida (0x8A)

Lo pide suena_la_partida; dura 6,4 s.

Drácula, paso 4 (0x88)

Lo pide dracula_paso_4; dura 17,6 s y vuelve a empezar en el segundo 1,6.

La salida de la puerta (0x86)

Lo pide la_salida_de_la_puerta; dura 57,6 s y vuelve a empezar en el segundo 22,4.

Simon muere (0x89)

Lo pide simon_muere; dura 1,6 s.

Sin vidas (0x8B)

Lo pide sin_vidas; dura 4,3 s.

Se coge la bola del jefe (0x8C)

Lo pide final_del_jefe_coger_la_bola; dura 4,0 s.

Drácula, paso 7 (0x8D)

Lo pide dracula_paso_7; dura 4,1 s.

El final empieza (0x8E)

Lo pide final_empieza; dura 18,6 s y vuelve a empezar en el segundo 5,8.

Pista 0x80 de la tabla (0x80)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; dura 39,8 s y vuelve a empezar en el segundo 9,9.

Pista 0x81 de la tabla (0x81)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; dura 51,2 s y vuelve a empezar en el segundo 21,4.

Pista 0x82 de la tabla (0x82)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; dura 67,7 s y vuelve a empezar en el segundo 22,4.

Pista 0x83 de la tabla (0x83)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; dura 38,4 s y vuelve a empezar en el segundo 6,4.

Pista 0x84 de la tabla (0x84)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; dura 63,5 s y vuelve a empezar en el segundo 7,5.

Pista 0x85 de la tabla (0x85)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; dura 63,6 s y vuelve a empezar en el segundo 28,4.

Pista 0x87 de la tabla (0x87)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; dura 7,5 s y vuelve a empezar en el segundo 0,0.

Pista 0xAB de la tabla (0xAB)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; dura 51,2 s y vuelve a empezar en el segundo 21,4.

Pista 0xAC de la tabla (0xAC)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; se corta a los 75 s (la pieza sigue).

Pista 0xAD de la tabla (0xAD)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; se corta a los 75 s (la pieza sigue).

Pista 0xAE de la tabla (0xAE)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; se corta a los 75 s (la pieza sigue).

Pista 0xAF de la tabla (0xAF)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; se corta a los 75 s (la pieza sigue).

Pista 0xB0 de la tabla (0xB0)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; dura 58,0 s y vuelve a empezar en el segundo 22,8.

Pista 0xB1 de la tabla (0xB1)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; se corta a los 75 s (la pieza sigue).

Pista 0xB2 de la tabla (0xB2)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; se corta a los 75 s (la pieza sigue).

Pista 0xB9 de la tabla (0xB9)

Lo pide ninguna llamada directa: sale de la tabla de musicas por un número calculado; dura 13,0 s y vuelve a empezar en el segundo 0,2.