En el emulador

El listado y todas las cifras de esta web salen del binario y se reproducen con make. Aquí no hay nada medido a ojo. El emulador está para comprobar que lo que dice el listado es lo que hace el cartucho.

Cómo se corre

openmsx -machine Philips_VG_8020 -cart hypersports2.rom

Con una máquina MSX1 basta: el cartucho se mapea en la página 1 y lo mueve todo desde la interrupción de cada cuadro.

Qué mirar

direcciónqué guarda
0xE000el estado; 0xE001 el subestado
0xE005el candado que impide que la interrupción se reentre
0xE036distinto de cero mientras suene alguno de los tres canales
0xE080la prueba: 0 plato, 1 arco, 2 halterofilia, 3 records
0xE1A1el paso dentro de la prueba
0xE1A3en la halterofilia, el levantamiento dado por bueno
0xE063los puntos, tres bytes en BCD

Para confirmar un tiempo, un punto de ruptura en la entrada de la rutina y otro en su ret, y la diferencia de machine_info time — por 3579545 para tenerlo en ciclos de Z80.

Una sesión que comprueba las pruebas

tools/omsx_capturas.tcl arranca el cartucho, pulsa teclas por la matriz y hace capturas. Su registro escribe al lado de cada foto la hora, el PC y el estado, así que una captura se puede atar al listado:

t=   21.91  foto tiro_03.png  PC=0x58F3  estado=2
t=   44.92  foto tiro_05.png  PC=0x445A  estado=2

El primer PC cae dentro de MIRA_LOS_IMPACTOS (0x58E3), que es del tiro al plato; el segundo, dentro del ayudante que prepara la escritura al VDP, con el arco en pantalla. Eso es lo que fija el orden de 0xE080: primero el plato, después el arco — y los rótulos ANGLE 0.00 y WIND confirman qué prueba es cuál sin tener que razonarlo.

Trampas ya pagadas