La música

Todo lo que suena aquí sale de ejecutar el motor de sonido del cartucho (suena_un_cuadro, 0x4CCC, y toca_sonido, 0x4C4C, 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.

Cotejado con openMSX

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.

Cómo se pide una pieza

toca_sonido recibe el número en A y guarda todos los registros; toca_sonido_en_partida solo suena en partida. Aquí los números no llevan el bit 7: los bajos son efectos y del 0x12 en adelante hay música. Cada voz ocupa treinta y dos bytes desde 0xE010 (son cuatro) y 0xE0F0 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; se omiten otras, de minutos de duración.

Las músicas

La presentación (0x20)

Lo pide empieza_la_presentacion; dura 6,9 s.

El menú (0x1D)

Lo pide menu_de_un_jugador y menu_del_duelo; dura 12,6 s y vuelve a empezar en el segundo 6,3.

La bonificación (0x1A)

Lo pide empieza_la_bonificacion; dura 19,2 s y vuelve a empezar en el segundo 0,0.

El paso 6 de la presentación (0x23)

Lo pide presentacion_paso_6; dura 2,4 s.

Quién gana (0x29)

Lo pide apunta_quien_gana; dura 4,6 s.

Acaba el efecto (0x2C)

Lo pide acaba_el_efecto; dura 1,4 s.

Acaba la cuenta (0x32)

Lo pide acaba_la_cuenta; dura 2,4 s.

Game over (un jugador) (0x53)

Lo pide musica_de_game_over; dura 4,5 s.

Game over (el duelo) (0x50)

Lo pide musica_de_game_over, con dos jugadores; dura 6,9 s.

Pista 0x12 de la tabla (0x12)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 3,6 s.

Pista 0x13 de la tabla (0x13)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 4,1 s.

Pista 0x1E de la tabla (0x1E)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 13,2 s y vuelve a empezar en el segundo 6,9.

Pista 0x1F de la tabla (0x1F)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 13,2 s y vuelve a empezar en el segundo 6,9.

Pista 0x21 de la tabla (0x21)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,9 s.

Pista 0x22 de la tabla (0x22)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,9 s.

Pista 0x24 de la tabla (0x24)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,4 s.

Pista 0x25 de la tabla (0x25)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,4 s.

Pista 0x26 de la tabla (0x26)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,4 s.

Pista 0x27 de la tabla (0x27)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,4 s.

Pista 0x28 de la tabla (0x28)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,0 s.

Pista 0x2B de la tabla (0x2B)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 4,6 s.

Pista 0x3F de la tabla (0x3F)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,3 s.

Pista 0x42 de la tabla (0x42)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,0 s.

Pista 0x45 de la tabla (0x45)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 7,1 s.

Pista 0x48 de la tabla (0x48)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,3 s.

Pista 0x4B de la tabla (0x4B)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 5,2 s.

Pista 0x4E de la tabla (0x4E)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,6 s.

Pista 0x4F de la tabla (0x4F)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,9 s.

Pista 0x51 de la tabla (0x51)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,9 s.

Pista 0x52 de la tabla (0x52)

Lo pide ninguna llamada directa: está en la tabla de pistas; dura 6,6 s.