Getting started

To reproduce this disassembly you need Python 3, GNU make and Pasmo. The cartridge image does not travel in this repository: everyone supplies their own.

synth.rom    32,768 bytes
sha256       a2eea29f13662acea8d0cbe2b4e95201a29e82e0c3c38dd24e910e9325a90a0d

With the file in the root of the repository:

make            # listing, verification, consistency and tests

What each step does

commandwhat it does
make compruebachecks the ROM's sha256
make listadotraces the flow and generates src/synth.asm from the binary and the notes
make verifyreassembles the listing and compares its sha256 with the ROM's
make sanitychecks that no data comes out as code and that not a byte is left unassigned
make testthe tests
make densidadhow many instructions carry a comment, routine by routine
make imagenesdraws the website's pictures from the ROM
make cotejachecks those screens against the openMSX dumps
make webgenerates the HTML pages and checks the links

make verify is the one that decides: it has to end with OK: reproducible byte a byte.

Where everything is

filewhat it is
src/synth.notesthe names, the comments and the data blocks, anchored to addresses
src/synth.entriesthe entry points the trace cannot deduce, each with its reason
src/synth.nocodethe areas that are not code even if the trace could enter them
src/synth.asmthe commented listing, generated
tools/z80trace.py, tools/mkasm.pythe tracer and the listing generator
tools/flujos.pythe RLE the cartridge writes the VRAM with
tools/motor.pySYN written anew: the synthesizer, sample by sample
tools/sonido.pyPLAY: the tones played the way the cartridge plays them, as WAV
tools/timbres.pythe table of the sixteen factory tones
tools/pantallas.py, tools/imagenes.pybuild every screen from the tables and draw it
tools/coteja_todo.py, tools/coteja_dac.pythe check against the openMSX dumps and against what reaches the DAC
tools/omsx_*.tcl, tools/lanza_*.shthe openMSX probes: see In the emulator

The pages: The program, The cartridge, The code, Findings, In the emulator and Open questions.