Aquí no hay ninguna ilustración ni captura. El rótulo y los dieciocho planos de hoyo están dibujados desde los bytes de la ROM, ejecutando en Python la misma cadena que corre el Z80. Y está contrastado contra la VRAM del emulador: los 304 bytes del logotipo y los 32 de color, idénticos; un plano de hoyo con 186 de sus 190 celdas iguales, patrón y color; y 718 de las 768 celdas de un cuadro de partida dibujadas con la tabla de patrones del cartucho.
La tabla de 0x6299 tiene dieciocho punteros, pero apuntan a diez listas distintas. Ocho de ellas sirven a dos hoyos cada una, y sólo el 1 y el 18 tienen trazado propio.
Lo que distingue a los dos hoyos de cada pareja es un bit: el 7 del primer byte de su ficha en 0x45A8. Con él puesto, el bucle de dibujo adelanta el puntero nueve posiciones y luego recorre los datos hacia atrás, y 0x5E7C le da la vuelta al patrón bit a bit con rlc y rra. En las ocho parejas, sin una excepción, uno lleva el bit y el otro no.
La vista del campo parece 3D y no hay una sola cuenta de proyección detrás. La tabla de 0x6A2B guarda ochenta mapas de 21×19 celdas, entre cuatro y seis por hoyo, y avanzar por el hoyo es cambiar de mapa: (0xE0B5) dice en qué tramo está la bola.
Cada mapa se monta en dos trozos que quedan pegados en RAM: 105 bytes de cielo, iguales para todo el hoyo, y 294 de suelo del tramo. Son 21×5 y 21×14, y 0xEA00+105 da exactamente 0xEA69, que es donde el código descomprime el segundo. Y acercarse no es un zoom: es pintar una fila nueva de veintiuna celdas e ir moviendo el puntero de veintiuno en veintiuno.
En el cartucho no hay ningún dibujo de un golfista: hay piezas. Cada postura la compone 0x4F8A con hasta nueve sprites de 16×16 superpuestos, cada uno de un color —la única manera de sacar una figura multicolor en un MSX1—, leyendo una lista de piezas y una tabla de tres bytes: cuánto sube, cuánto se corre y de qué color. El número de patrón ni siquiera está guardado: sale de índice×4 + 0x60.
Y hay tres golfistas, que elige el palo: de 22, 29 y 35 piezas, con seis fotogramas de swing cada uno. Crece con el palo porque crece la cámara. El listado los tenía llamados «planos de hoyo 15, 16 y 17».
0xA8CB no descomprime una imagen. Descomprime, separa cada byte con un cero —convirtiendo la tira en valores de dieciséis bits— y hace la suma acumulada de todos ellos. Lo que queda en RAM es una lista de códigos de tile.
Y hacen falta dieciséis bits por una razón concreta: la tabla de patrones tiene 570 entradas, así que un byte no llega. Por eso 0x5B61 hace add hl,bc dos veces, que es indexado de dieciséis bits.
Los planos de hoyo, las vistas de terreno y los cuadros del golfista no guardan tiles: guardan posiciones dentro de esa lista acumulada. Un byte por celda, y el tile sale de la indirección.
Así que el mismo mapa de índices dibuja cosas distintas según qué lista se haya acumulado antes, que es lo que permite que el terreno cambie sin tocar los mapas.
El nibble bajo del primer byte de la ficha de 0x45A8 es el par: 3, 4 o 5. El bit 7 del mismo byte es el espejo. Un byte lleva las dos cosas.
Sumados los dieciocho, el campo da par 72, con dos pares 3 y dos pares 5.
De todo lo que el cartucho comprime, lo único que acaba en la tabla de patrones de sprite del VDP son los 320 bytes que 0x60A2 deja en VRAM 0x3800: diez sprites de 16×16.
Y la mitad son la misma cosa a distinto tamaño: la bola, de un punto a una bola gorda, para que se vea alejarse. Todo lo demás que se mueve en pantalla —el golfista, los árboles, el terreno— está pintado en el bitmap, no es un sprite.
El título usa el modo de texto de 32 columnas, con la fuente de la propia máquina y sólo 32 bytes de color para toda la pantalla: uno por cada ocho patrones. El logotipo son 304 bytes copiados tal cual desde 0x4301.
Y al pasar al juego, 0x44F3 hace algo bonito: entra en SCREEN 1 sólo para quedarse con el juego de caracteres que carga la BIOS, lo copia a RAM, y ya en SCREEN 2 lo vuelca como patrones del campo. La fuente de la máquina acaba siendo parte del decorado.
Debajo de cada imagen está de dónde sale y qué se está viendo.
plano_hoyo_NN sobre la lista de códigos que se acumula desde 0xB349. Los espejados salen del propio bucle, no de darles la vuelta después