Cryo/Virgin Dune (Amiga, 1992) reverse-engineering toward a portable C++ / SDL build (AGA enhancements later).
Authority for formats and gameplay is the Amiga binary (extracted/dune → tools/disasm/dune_ira.asm), not the PC port.
| Repo | https://github.com/Vairn/Dune |
| Docs wiki (in-repo) | docs/README.md |
| Formats | docs/formats/ · format_dictionary.md |
| Game systems | docs/game_systems_map.md |
| Tools | docs/tools.md |
| Git / local trees | docs/git.md |
| Path | Role |
|---|---|
extracted/ |
ADF images + unpacked disk 1 (dune, dir.0, dir.1, …) — local, gitignored |
ripped/ |
Assets ripped from disks 2–3 — local, do not redistribute |
export/ |
PNG / atlas / data / audio review trees — local, gitignored |
src/ |
SDL port (hsq, sprite, viewer) |
tools/ |
Ripper, exporters, GUIs, disasm drivers |
docs/ |
Format dictionary, systems map, tools & git notes |
build/ |
CMake output — local |
Keep your own ADFs under extracted/, then:
python tools/rip_dune_adfs.py -o rippedWrites ripped/<asset> + ripped/manifest.tsv.
python tools/view_data.py # catalog / hex / decode GUI
python tools/save_editor.py # dune10sN.sav editor
python tools/save_editor.py ripped/dune10s0.sav
# Fresh PNG + categorized atlases under export/assets/
python tools/build_assets.pyPython deps for exporters / atlases: Pillow. Tracker UI also needs NumPy. GUIs use stdlib tkinter.
Requires MSYS2 UCRT64 toolchain + SDL2:
cmake -S . -B build -G "MinGW Makefiles" -DCMAKE_PREFIX_PATH="C:/msys64/ucrt64"
cmake --build build
# Playable remake shell (palace explore + dialogue/map/combat stubs)
./build/dune_sdl.exe
# Debug asset viewer (legacy CLI still works)
./build/dune_sdl.exe --view fresk.hsq
./build/dune_sdl.exe fresk.hsqOptional: DUNE_DATA=ripped, --scale N.
In-game controls: Left/Right or side pads = rooms · click hotspots · D dialogue · M map · 1–4 place types (palace/sietch/village/hark) · Enter = demo cutscene · Esc pause · S/L save/load · Q quit.
src/ layout: catalog cache, 320×152 compositor, .sam rooms, face/font/phrases, condit/dialogue/script VMs, combat/economy, save RLE, FLT4 tracker.
IRA (Amiga-aware labels/reassembly) + Capstone (fast M68000 listing):
# build IRA once (MinGW)
mingw32-make -C tools/external/ira -f Makefile
python tools/disasm_amiga.pyOutputs under tools/disasm/ (mostly gitignored .asm / analysis dumps):
dune_ira.asm— IRA V2 with labels / PREPROCdune_capstone.asm— Capstone linear listing + LVO hints
Start at docs/README.md. Short version:
| Doc | Covers |
|---|---|
docs/formats/ |
All file-format families + catalog 0…102 map |
docs/format_dictionary.md |
Deep HSQ / sprites / palettes / faces / FLT4 / data |
docs/game_systems_map.md |
Systems TOC + entry-point map |
docs/systems/*.md |
Main loop, handlers, VMs, combat, save, music, … |
docs/tools.md |
Every user-facing tool + pipelines |
docs/git.md |
What is tracked, remotes, hygiene |
You need your own Amiga Dune ADFs. Do not commit or redistribute extracted/, ripped/, or decoded export/ game assets.