Empezar

Un desensamblado comentado de 3D Golf Simulation - Normal Edition, el juego de golf que T&E Soft publico para MSX en 1983: un cartucho de 16 KB anclado en la pagina 2 (0x8000-0xBFFF).

Solo que aqui no hay nada que desensamblar. El cartucho no lleva ni una instruccion Z80: lo que hay dentro es un programa MSX-BASIC de 246 lineas que el interprete de la maquina ejecuta directamente desde la ROM. Asi que el listado es el programa detokenizado, y la prueba de que es exacto no es reensamblarlo: es volver a tokenizarlo y comprobar que salen los mismos 9.041 bytes.

El cartucho no esta aqui

Ningun repositorio distribuye el juego. Pon tu propio volcado en la raiz como 3dgolf.rom, 16384 bytes, sha256

95d4e9dd82e60c614a471520d4e22ede94a5440a48f62376df62a74f093a8514

make comprueba lo verifica.

Que hace cada orden

make            monta el listado, lo retokeniza, cruza los datos y pasa los tests
make verify     la prueba que decide: retokenizar tiene que devolver la ROM
make verifica   las tres comprobaciones cruzadas de los datos de campo
make densidad   cuanto esta explicado el listado
make sanity     que trae cada uno de los nueve hoyos, contado de los datos
make graficos   dibuja los nueve hoyos desde los bytes del cartucho
make emulador   toma los volcados de VRAM de openMSX (tarda: ver abajo)
make vram       compara lo dibujado contra esos volcados
make web        rehace este sitio

Como esta montado

src/3dgolf.bas no se edita a mano. Lo monta tools/monta_bas.py juntando el programa recien leido del binario con los comentarios de tools/comentarios_3dgolf.py. La razon es concreta: el programa lleva bytes altos -las posturas del golfista, los rotulos del panel- y un editor de texto corriente los pasa por UTF-8 y los sustituye en silencio por el caracter de reemplazo. Paso la primera vez que se toco el fichero, y el error salio veinte lineas mas abajo.

Las imagenes tampoco son capturas: tools/campo.py las dibuja ejecutando en Python las mismas subrutinas del programa -la 4000 del plano, la 5000 de la vista 3D, la 7000 de la escala- sobre una emulacion de la pantalla SCREEN 2 con sus atributos de color. Si el formato estuviera mal entendido, saldria ruido en vez de un campo de golf.

Aviso para emularlo

El juego escribe las posturas del golfista y los rotulos del panel con bytes altos, que son los graficos correctos solo en un MSX japones. En una maquina europea el campo sale igual -es geometria- pero esos rotulos salen con otros simbolos. Y hay que anclar el cartucho en la pagina 2: ver En el emulador.