La música

Todo lo que suena aquí sale de ejecutar el motor de sonido del cartucho (mueve_el_sonido, 0x9EA3, y pide_un_sonido, 0x9C4A, que le reparte los canales; lo llama la interrupción en 0x4075) 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

pide_un_sonido recibe el número en A. Por debajo de 0x8D es un efecto y usa un solo canal, el tercero; de ahí en adelante, dos o tres canales según el número. Solo se publican las piezas que el listado pide con un ld a y que suenan de verdad; la tabla tiene además pistas casi mudas (0x8B y 0x8C) y efectos. El motor no escribe el mezclador del PSG: lo deja el arranque, y aquí se parte de su mismo valor, 0xB8.

Las músicas

Empezar la partida (0x9C)

Lo pide estado_8_elige_dificultad (0x4430); dura 4,3 s.

La pieza del 0x43DD (0x99)

Lo pide la rutina de 0x43DB; dura 5,4 s.

La pieza del submodo 3 (0x93)

Lo pide submodo_3_del_estado_11 y la rutina de 0x42BC; dura 2,6 s.

La máquina canta (0x90)

Lo pide la_maquina_canta (0x56E5) y la rutina de 0x770D; dura 2,7 s.

El tenpai (0x96)

Lo pide mira_quien_esta_en_tenpai (0x7713); dura 2,4 s.