Elite (MSX1) reverse-engineering tools
======================================

Python + HTML tools used to reverse-engineer the MSX1 port of Elite.
Companion to https://damad.be/joost/elite/

Contents
  zdis.py            Z80 disassembly helper (needs the `z80dis` package); base 0x100 for .COM files.
  fat12_extract.py   Extract files from a FAT12 disk image (the game floppy).
  fat12_recover.py   Recover live and deleted files from a FAT12 image.
  ship_export.py     Decode ship vertex + edge geometry from a SHAPES.DAT RAM image -> ships.json
  extract_faces.py   Decode block-C face data and add it to ships.json
  add_hulls.py       Add convex-hull faces to ships.json for a solid preview
  ships.json         Decoded geometry for all 20 ships (verts, edges, faces)
  ship_viewer.html   Dependency-free canvas viewer for ships.json (just open it in a browser)

Pipeline
  1. fat12_extract.py <floppy.dsk>        -> CODE.COM, SHAPES.DAT, ...
  2. boot the game in openMSX, dump RAM   -> elite_live_memory_45s.bin (SHAPES at 0xa857)
  3. ship_export.py                       -> ships.json
  4. extract_faces.py / add_hulls.py      -> enrich ships.json
  5. open ship_viewer.html                -> rotate the models

Requirements
  Python 3, plus the `z80dis` package for zdis.py (pip install z80dis).

Note
  No game binaries or RAM dumps are included; bring your own copy of the game.
  ships.json is derived geometry produced by these tools.
