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.
Ningun repositorio distribuye el juego. Pon tu propio volcado en la raiz como 3dgolf.rom, 16384 bytes, sha256
95d4e9dd82e60c614a471520d4e22ede94a5440a48f62376df62a74f093a8514
make comprueba lo verifica.
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
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.
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.