Getting started

This repository does not carry the game. It carries the commented disassembly of El Descubrimiento de America (Gema Software / OMK Software, 1987) and the tools that reproduce it.

What you need

The check that decides

make                # extract, trace, build, reassemble, verify, test

It ends with this, and it is the only thing you have to look at:

OK: la cinta entera se reproduce byte a byte

It means the five listings in src/, assembled and wrapped back up with the headers and sentinels of the .cas format, give back the same 66,371 bytes. If that fails, nothing else matters.

Why five listings

Because the tape does not carry one program, it carries two, and both occupy the same addresses. There is no single memory map to disassemble: there are three.

listingaddressesbyteswhat it is
carga0xC000-0xD3DF5,088the loader, which survives both programs
p1bajo0x4000-0x63FF9,216first half, the program
p1alto0x8000-0xD2FF21,248first half, the graphics
p2bajo0x4000-0x63FF9,216second half, the program
p2alto0x8000-0xD2FF21,248second half, the graphics

The two alto listings do not hold a single instruction: they are data end to end.

What each command does

commandwhat it does
make extractsplits the .cas on the sentinel and pulls out the four files
make cuerposbuilds the 64 KB image as it stands once each half is loaded
make trazadofollows the flow from the entry points in src/*.entries
make listadoswrites the five .asm files, joining the trace and the notes
make verifyassembles, wraps back up and compares the sha256 with the original
make sanitywhat reassembly does NOT cover (see below)
make testthe tests
make densidadhow much of the listings is commented
make sin_leerthe bytes nobody reads, counted from the notes themselves
make imagenesdraws the screens and maps from the tape
make emuladorloads the tape in openMSX and cross-checks RAM and VRAM
make webgenerates these pages

Why verify is not enough

verify proves the bytes come back out, not that they have been understood. A listing where everything was a db would reassemble just as well. So there are four more checks, and all four have to pass:

The 355 bytes between that figure and the tape's total are the .cas wrapper: six eight-byte sentinels, two sixteen-byte file headers, the six of the BIN header, the 256 of the BASIC loader, the two sync triplets and the alignment padding. A test checks that split too.

And the check that cannot be faked

make emulador loads the tape for real in openMSX -a Philips VG-8020, needed because the loader calls the real BIOS TAPION and TAPIN- and dumps RAM and VRAM with the game running. tools/coteja.py compares that with what the listings say. The results are in In the emulator.