A 9-VOD, ~36-hour Twitch series (Sep–Oct 2026) reverse-engineering MOO1 v1.x data-first: save file → live RAM → struct JSON, with Ghidra used only twice and largely abandoned. Its durable output is a published struct library (
zapdebugger-moo.json). It yields almost no exact formulas — its value to us is the method for a DOS target, the savegame/RAM layout, and new behavioural facts (hard caps, diplomacy meters, random events).
Source: raw/videos/moo1-re/ (playlist index + local transcripts) — https://www.youtube.com/playlist?list=PLZVzPYU15yts Source: raw/videos/moo1-re/zappatic-site/ (struct/symbol JSON) — https://zappatic.net/moo
Links: Data-First RE (the thesis this is a specimen of) · MOO1 Optimal Strategy · MOO1 Opening Optimizer · The Rosetta Stone Method · The Anchor Method
Three-way cross-checks (stream × OSG × 1oom): diplomacy · random events
Per-part notes: 1 · 2 · 3 · 4 · 5 · 6 · 7a+7b · 8
| Part | Focus |
|---|---|
| 1 | Planet struct (0xB8 × 108) from save-name stride; ship-design struct (0x44); per-planet orbit ships (24 B) |
| 2 | Build accumulators, planet flags/enums; researched-tech lists (6 × 60 u8, count-gated); research is probabilistic |
| 3 | Diplomacy block via save before/after diffs + file splicing; mood (−100..+100), treaty enum, diplomat meters; players[6] absorbs “game state”; year |
| 4 | Save-file analyzer; RAM↔disk block reorderings; Ghidra: turn logic is in STARMAP.EXE (ORION.EXE “a loader” per stream — too strong: it holds new-game data, e.g. the race-relations table at 0x22D6A); 32-bit fields detected by paired 16-bit writes |
| 5 | Fleets en route (260 × 28 B), transports (100 × 18 B); hard caps; failed DOSBox↔Ghidra address join (manual delta 0x7DD0) |
| 6 | Game settings, 4 trailing per-planet arrays; random-events block decoded by forcing one event at a time |
| 7 | Spy reports (year-made + per-field highest-tech watermark); terraforming/refit not stored; “player unknown” = global game state |
| 8 | Save tail, breakthrough + info-panel queues, Guardian/win fields; Borland 1991 copyright string |
unknownN u16 fields, trim until record 2 aligns.Real-mode segment relocation means a runtime seg:off doesn’t equal the Ghidra address of the same code/data; his symbols even drift between segments (3813/6813/8813) across runs. He bridged it once by byte-pattern search (delta 0x7DD0) and Ghidra’s auto-analysis left the target undisassembled. He then mostly stopped using code at all. See Data-First RE for what this implies for us.
enroute_num 0..259, transport_num 0..99.) Distinct from the OSG’s 32,000-ship limit, which is ships per stack (display cap; true limit a u16) — see OSG capture, ch.15.doc/list_gamediff.txt: a money tribute doing nothing (OSG says it should work), and merely entering the threaten/break-treaty dialogue costing a large temporary penalty.doc/list_gamediff.txt). Formula: 1oom / OSG.SAVE_MOO13_LEN 59036 ✔; his zapbinanalysis-moo.json sums to 59,014 — the missing 22-byte tail is 1oom’s end@0xE686, winner@0xE688, election_held@0xE68C. Block offsets that overlap agree exactly (names 0xE1BA, settings 0xE2D2, counts 0xE1B6/8).year=1 at start, displays year + 2299 — the stream’s three phrasings all reduce to this.YOMAMA, documented in 1oom doc/usage_common.txt) and the scrapped-ships insight; the legacy 1oom mirror is github.com/darkstar/1oom. Suggestive, not established.SAVE1.GAM (59,036 B; Psilon, Simple, Medium galaxy, 6 players, 48 stars) read via zappatic’s JSON vs via 1oom game_save_moo13.c offsets — 39/39 fields agree on offset and value (settings, year=1, nebulae, fleet counts, all 6 players’ race/banner/emperor name, homeworld pop 50/factories 30, an unowned planet, the end tail word). His unnamed game-settings.unknown4/5 = 1oom galaxy_w/h; his galaxy-map-width/height = 1oom galaxy_maxx/maxy.crc32 0xBF0B8580 matches neither Steam v1.3 EXE (ORION 0x6237FE7B, STARMAP 0x63B00693); he runs the eXoDOS build. Unresolved.The stream measures the binary; the OSG describes intent; 1oom catalogues the gap (doc/list_gamediff.txt, doc/list_pbxnum.txt, doc/pbxin_fixbugs.txt, ~94 WASBUG comments in src/). Chris knows the lore and can arbitrate: e.g. ship stacks display-capped at 32,000 from a signed-16 wrap (1oom clamps game_num_limit_ships = 32000), research % displayed at half. Before recording any stream or OSG number as a mechanic, check it against this list.
crc32 hash — file, loaded image, or a different build? Does his RAM map hold on Steam v1.3?unknownN fields: 1oom’s game_save_moo13.c names them; a field-by-field merge would close most.