Desensamblado comentado de Yie Ar Kung-Fu, el RC-725 de Konami para MSX, un cartucho de 16 KB en la página 1 (0x4000–0x7FFF). Vuelve a ensamblar dando la ROM exacta, byte a byte, y sus 16.384 bytes están todos explicados.
Ningún repositorio distribuye el juego. Pon tu propio volcado en la raíz como yiear.rom, 16384 bytes, sha256
644c78c7d20bb30802888b513b384cf0ce4f9d8b6fd490f30e6211ac92274848
make comprueba lo verifica.
De este cartucho circulan dos volcados, que los archivos llaman easy y hard. El listado es el de la versión fácil, la de arriba. Si tienes también la otra, ponla como yiear_hard.rom y tools/coteja_builds.py las compara; el resultado está en Hallazgos.
make traza el flujo, monta el listado, lo reensambla y pasa los tests
make verify la prueba que decide: reensamblar tiene que devolver la ROM
make sanity que no quede un byte sin explicar, y que ningún dato salga como código
make densidad cuánto está comentado, rutina por rutina
make imagenes dibuja los bloques de datos gráficos, para mirarlos
make web rehace este sitio desde la ROM y las notas
El listado no se edita a mano: tools/mkasm.py lo genera a partir de un trazado del flujo y de un fichero de notas ancladas a direcciones, así que los comentarios sobreviven a un retrazado. El trazador sigue el flujo desde los puntos de entrada; los que no puede deducir solo —el gancho de la interrupción y las quince tablas de despacho— están declarados en src/yiear.entries, cada uno con su justificación.
Las imágenes de la portada no son capturas. Las dibuja tools/pantallas.py ejecutando en Python los pasos del propio cartucho: el intérprete de guiones de 0x442C, el de listas de tiles de 0x44A6, los rellenos y el espejo de 0x4C46. Y no se dan por buenas: tools/omsx_vram.tcl vuelca la VRAM de openMSX durante una partida y se compara byte a byte. La tabla de color sale con cero diferencias de 6.144 bytes y la de patrón con cero de 6.144.
tools/z80trace.py el trazado del flujo, con las tablas declaradas
tools/mkasm.py el listado, desde el trazado y las notas
tools/guiones.py el intérprete de guiones de 0x442C, en Python
tools/textos.py el alfabeto de tiles y el intérprete de listas
tools/pantallas.py las pantallas, montadas paso a paso
tools/cierra_datos.py dónde acaba cada bloque, ejecutando su intérprete
tools/apunta_a.py quién apunta a un rango, buscando en los 16 KB
tools/coteja_builds.py las dos compilaciones, cotejadas por instrucción
tools/presupuesto.py el reparto de los 16.384 bytes
tools/densidad.py cuánto está comentado, rutina por rutina