Empezar

Lo único que hace falta para reproducir este desensamblado es Python 3, GNU make y Pasmo. La imagen del cartucho no viaja en este repositorio: cada cual pone la suya.

penguinadventure.rom    131.072 bytes
sha256                  525608aa990e1a19285edc98dec3f0aa11339d8a17641c89df3966845d10cc6a

Con el fichero en la raíz del repositorio:

make            # listado, verificación, coherencia y tests

Qué hace cada paso

ordenqué hace
make listadogenera los dieciséis .asm desde el binario, las notas y las semillas
make verifyreensambla cada banco y la ROM entera, y compara los sha256
make sanitycomprueba que no queda un solo byte sin asignar a código o a datos
make testlos 30 tests
make densidadcuántas instrucciones llevan comentario, banco a banco
make cifrasvuelve a escribir las cifras de los dos README contando sobre el árbol
make imagenesdibuja los 35 PNG desde la ROM
make webgenera las páginas HTML y comprueba los enlaces

make verify es el que decide. Tiene que imprimir diecisiete veces OK: reproducible byte a byte: una por cada uno de los dieciséis bancos y otra por la ROM entera. Si falla uno, el listado miente.

Dónde está cada cosa

Por qué las notas van aparte del listado

Porque el listado se regenera entero cada vez. Si los comentarios vivieran dentro del .asm, cualquier cambio en el trazado los perdería. Viviendo en los .notes, anclados a su dirección, sobreviven a que el listado se rehaga.

Y de ahí sale una comprobación que no es cosmética: tools/valida_c.py mira que cada comentario cae en el primer byte de una instrucción. Uno anclado a media instrucción no aparece en el listado y nadie se entera de que se ha perdido.