Hole in One es un cartucho de 16 KB de HAL Laboratory, de 1984, que se mapea en la página 2 (0x8000-0xBFFF), sin cambio de banco.
La cabecera AB de 0x8000 pone INIT en 0x8028 y, además, STATEMENT en 0x8010. El segundo es el gancho que la BIOS llama cuando el intérprete de BASIC se encuentra una sentencia que no reconoce, y aquí compara los cuatro bytes de la orden entrante contra el texto GOLF, que está guardado justo en medio de los dos ganchos, en 0x8024.
O sea que el cartucho registra un comando: desde BASIC se escribe GOLF y el juego arranca sin tener que apagar la máquina.
Lo primero que hace INIT es mirar la fila 7 del teclado con SNSMAT. Si esa tecla está pulsada, vuelve sin inicializar nada y la máquina se queda en BASIC con el comando GOLF ya registrado.
SCREEN 2 montado por la BIOS con INIGRP, con las tablas donde suelen ir: patrones en 0x0000, nombres en 0x1800, atributos de sprite en 0x1B00, color en 0x2000 y patrones de sprite en 0x3800. Los ocho registros del VDP leídos del emulador lo confirman: 02 E2 06 FF 03 36 07 01.
El juego engancha su propia rutina en H.TIMI, escribiendo a mano un jp en 0xFD9F, y desde ahí marca cada cuadro nuevo y hace avanzar el sonido.
| bytes | ||
|---|---|---|
| código trazado | 6.065 | 37,02 % |
| datos identificados | 10.319 | 62,98 % |
| sin explicar | 0 | 0,00 % |