Empezar

Este repositorio no trae el juego. Trae el desensamblado comentado de El Descubrimiento de America (Gema Software / OMK Software, 1987) y las herramientas que lo reproducen.

Lo que hace falta

La comprobacion que decide

make                # extrae, traza, monta, reensambla, verifica y prueba

Termina con esto, y es lo unico que hay que mirar:

OK: la cinta entera se reproduce byte a byte

Significa que los cinco listados de src/, ensamblados y vueltos a envolver con las cabeceras y los centinelas del formato .cas, devuelven los mismos 66.371 bytes. Si eso falla, todo lo demas sobra.

Por que son cinco listados

Porque la cinta no trae un programa, trae dos, y los dos ocupan las mismas direcciones. No hay un solo mapa de memoria que desensamblar: hay tres.

listadodireccionesbytesque es
carga0xC000-0xD3DF5.088el cargador, que sobrevive a los dos programas
p1bajo0x4000-0x63FF9.216primera parte, el programa
p1alto0x8000-0xD2FF21.248primera parte, los graficos
p2bajo0x4000-0x63FF9.216segunda parte, el programa
p2alto0x8000-0xD2FF21.248segunda parte, los graficos

Los dos listados alto no llevan ni una instruccion: son datos de punta a punta.

Lo que cada orden hace

ordenque hace
make extracttrocea el .cas por el centinela y saca los cuatro ficheros
make cuerposmonta la imagen de 64 KB tal como queda al cargar cada parte
make trazadosigue el flujo desde los puntos de entrada de src/*.entries
make listadosescribe los cinco .asm juntando el trazado y las notas
make verifyensambla, vuelve a envolver y compara el sha256 con el original
make sanitylo que el reensamblado NO cubre (ver abajo)
make testlos tests
make densidadcuanto de los listados esta comentado
make sin_leerlos bytes que nadie lee, contados desde las propias notas
make imagenesdibuja las pantallas y los mapas desde la cinta
make emuladorcarga la cinta en openMSX y coteja RAM y VRAM
make webgenera estas paginas

Por que verify no basta

verify demuestra que los bytes vuelven a salir, no que se hayan entendido. Un listado en el que todo fuera db reensamblaria igual de bien. Por eso hay cuatro controles mas, y los cuatro tienen que pasar:

Los 355 bytes que van del total de la cinta a esa cifra son el envoltorio del .cas: seis centinelas de ocho bytes, dos cabeceras de fichero de dieciseis, los seis de la cabecera BIN, los 256 del cargador BASIC, los dos tercetos de sincronia y el relleno de alineacion. Ese reparto tambien lo comprueba un test.

Y el control que no se puede falsear

make emulador carga la cinta de verdad en openMSX -un Philips VG-8020, que hace falta porque el cargador llama a TAPION y TAPIN de la BIOS real- y vuelca la RAM y la VRAM con el juego en marcha. tools/coteja.py compara eso con lo que dicen los listados. Los resultados estan en En el emulador.