El repositorio trae el listado ya generado, pero lo que de verdad importa es que se puede rehacer entero desde el cartucho y que el resultado vuelve a ser la ROM byte a byte. Eso es lo que hace que las notas se puedan creer.
No viaja con el repositorio. Hay que ponerlo en la raíz como pingpong.rom, 16.384 bytes exactos:
8e0f57b2c52e85505505c1d4bb4643eb7311213676f0ecfe21dd06571fc0bbd5
Para comprobar que es el mismo:
make comprueba
make
Eso encadena las cuatro cosas que importan:
| paso | qué hace |
|---|---|
make listado | traza el flujo desde los puntos de entrada y escribe src/pingpong.asm |
make verify | reensambla con pasmo y compara el sha256 con el del cartucho |
make sanity | lo que el reensamblado NO puede cazar (ver abajo) |
make test | los 36 tests |
make verify no bastaEl reensamblado demuestra que los bytes son los mismos, no que lo que decimos de ellos sea cierto. Si una tabla de datos se leyera como código, el binario saldría idéntico igual: lo único que cambiaría es la mentira del listado.
Por eso make sanity comprueba tres cosas más:
make densidad
Da las dos que se publican: cuántas instrucciones llevan comentario y si queda alguna rutina por debajo del 10 %.
make imagenes
Dibuja las pantallas desde los bytes de la ROM, ejecutando en Python los mismos pasos que corre el Z80. No hay ni una captura en este repositorio.
Y para comprobarlas contra la máquina de verdad:
"C:/Program Files/openMSX/openmsx.exe" -machine Philips_VG_8020 \
-cart pingpong.rom -script tools/omsx_vram.tcl
python3 tools/coteja_vram.py pingpong.rom work/omsx/vram_01.bin logotipo
Eso vuelca los 16 KB de VRAM del emulador en varios instantes y los compara byte a byte con los que monta tools/graficos.py.
Sólo tres, y los tres llevan dentro el porqué de cada decisión:
src/pingpong.entries — los puntos de entrada que el trazado no puede deducir solo, cada uno con su justificaciónsrc/pingpong.nocode — los rangos que NO son códigosrc/pingpong.notes — los nombres, los comentarios y los rangos de datosTodo lo demás sale de ahí.