Aquí no hay ninguna ilustración ni captura del juego. Los nueve hoyos —el plano y la vista en perspectiva— están dibujados desde los bytes del cartucho, ejecutando en Python las mismas subrutinas del programa sobre una emulación de la pantalla SCREEN 2 con sus atributos de color, y comparados contra la VRAM de openMSX: 15.737 de 15.744 píxeles idénticos en el plano —el que el juego lee para saber de qué es el terreno— y 18.011 de 18.432 en la vista 3D. La única imagen que no sale entera del cartucho es la pantalla de título, y está dicho por qué: el cartucho no trae ni una letra dibujada.
Lo primero que se hace con un cartucho es desensamblarlo. Aquí sale basura: el punto de entrada es nop / dec h / add a,b / ld bc,09700h / illegal sequence. No es que el desensamblador falle: es que ahí no hay código.
La cabecera lo dice si se lee entera. INIT, STATEMENT y DEVICE a cero, y lo único declarado es TEXT=0x8010: «aquí hay un programa BASIC». El intérprete lo ejecuta desde la propia ROM, sin copiarlo a RAM. La única llamada a código máquina del juego, USR(0) en la línea 30000, apunta a la dirección 0: pulsar STOP reinicia la máquina.
No hay mapa lógico ni tabla de casillas. La línea 380 lleva la posición de la bola al plano cenital del panel derecho y lee con POINT el color pintado ahí. Ese color es el terreno: 2 la calle, 3 el green, 4 el agua, 6 fuera de límites, 13 un árbol, 14 un búnker, y 0 —el fondo sin pintar— el rough.
De ahí salen la postura del golfista, las penalizaciones y cómo bota la bola. El plano no es un adorno: es la estructura de datos del juego, y por eso el orden de los marcadores de color importa tanto.
Los nueve hoyos ocupan 4.000 bytes justos, de 0xB000 a 0xBF9F, uno detrás de otro. Cada uno es una lista de valores de 16 bits que van de tres en tres —x, altura, profundidad— y un valor suelto entre 30001 y 30015 es un marcador: cambia el color de lo que viene detrás y, de paso, desplaza el reparto en uno.
El color no es decoración: dice de qué está hecho el tramo siguiente y con él se rellena el anterior. Y el orden es el mismo en los nueve: contorno, calle, green, asta de la bandera, búnkers, agua y árboles.
El tramo de color 1 de cada hoyo son cuatro puntos: un mástil vertical de 8 de alto y una banderita en la punta. Y está plantado exactamente en la posición que el DATA de ese hoyo declara como bandera, en los nueve.
Eso importa porque el orden de los DATA no es obvio —la bandera son los dos últimos valores de la línea, no los primeros—. Se sabe porque tres cuentas distintas cuadran a la vez: los pares suman 36 y coinciden con la cadena PQ$; las semillas de relleno que gasta la subrutina 4000 son exactamente las que sobran en cada DATA; y el asta cae en su bandera.
Los 3.231 bytes entre el programa y los datos de campo son la tabla de variables del intérprete, congelada tal y como quedó en una sesión real del juego. Ése es el truco que hace arrancar a un cartucho BASIC sin rutina INIT: la ROM trae el programa y su estado ya montado.
Se lee entera, y cuenta una partida: hoyo 2, doce golpes en total, once de ellos gastados en el hoyo 1. El puntero de lectura del campo vale 0xB37A, que es donde empieza el hoyo 3 —jugándose el 2, su contorno ya se había leído—, y HX, HZ y P son la bandera y el par del hoyo 2. Cuatro cifras que cuadran con los datos de campo sin usar el programa para nada.
Parecía el final del recorrido, y no lo es. Es donde la subrutina 4000 deja de dibujar. Lo que va detrás sigue siendo del hoyo, y la vista 3D lo dibuja: dos o tres tramos con coordenadas de hasta 20.000, que son las líneas de fuga hacia el horizonte, y en el hoyo 3 una pared de 2.000×400 a profundidad 1.200: la montaña del fondo.
Y en esa vista el color no se usa para nada: la línea 5166 lo calcula y no lo mira nadie, porque el trazado es siempre blanco. Los colores sólo valen para el plano.
La línea 440 mira si el terreno vale 12 y frena la bola si es así. Esa condición no puede cumplirse: ningún hoyo pinta el color 12, en ninguno de los nueve. Es código muerto —probablemente el rough de una versión anterior, antes de que el rough pasara a ser el color de fondo—.
Y hay más de lo mismo: D2(240) se reserva en el DIM y no aparece en ninguna otra línea —482 bytes de RAM apartados para nada— y a ZL$ se le asigna "0000" sin que nadie la lea.
El programa no hace RESTORE en ninguna línea, y el puntero que lee el campo tampoco se rebobina. Al acabar el hoyo 9, la línea 720 es un GOTO 720: un bucle infinito. Volver a jugar exige reiniciar, y no es un descuido —no habría manera de rebobinar aunque se saltara al principio—.
Y una regla que no está en ningún manual: si la bola está en un búnker y eliges el putter, la línea 280 devuelve el turno al principio... que es la línea 225, la que suma un golpe. Intentarlo cuesta un golpe cada vez, sin que la bola se mueva.
Debajo de cada imagen está de dónde sale y qué se está viendo.