Per-part extraction (auto-caption transcript → structured notes). Values are as heard; hex is often caption-garbled — confidence marked per item. Digest: zappatic-re-stream.
Source: part05-pvIsR571sr0.txt — https://www.youtube.com/watch?v=pvIsR571sr0
Source: Vault/raw/videos/moo1-re/part05-pvIsR571sr0.txt (auto-captions; hex values often garbled, recorded as heard).
races (drives a dropdown), “indexes into” another array (e.g. a planet ID linked to planets), and comments. The same definitions drive both the debugger and the analyzer. Symbols (address → struct) are kept in an INI file. He did the same JSON approach before for Spelunky 2 as an x64dbg plugin, generating C++ structs from the JSON. [2:05:00] [2:30:00] [2:35:00]RUN.BAT picks a sound card and deletes the config/save-game config every time the sound choice changes. A viewer suggested running ORION directly with an argument heard as “your mama”; that worked and is faster to relaunch after crashes. Exact argument and its effect are low confidence. [3:35:00]–[3:40:00]FF 06 86 CC (inc word [CC86]) followed by 33 C9 EB 5A. These bytes are in STARMAP.EXE (hex editor, file offset ~6C39) but Ghidra’s instruction search can’t find them. [0:55:00]–[1:05:00]inc di; cmp di,[CC86] (bytes 47 3B 3E 86 CC) with DS heard as “E000”. [CC86] read 0x1B and DI 0x36B, which didn’t match the count variable he was after, so this was inconclusive. [1:35:00]–[1:50:00]Save-file order as of this session: planets (108 records) → ships-on-route[260] → transports[100] → players[6] → per-player ship configurations (designs, new-ship-name suggestions, unlocked research, ship counts) → … fleet count and transport count … → player names → partly unknown 30-byte-ish records (from the last stream, includes the current year) → trailing unknowns (scout name, FFs). [0:00:00] [2:25:00] [3:45:00]–[3:55:00]
| Item | Detail | Confidence |
|---|---|---|
| Garbage bytes in save | Unused buffers are reused for menus and dumped into the save as-is; a pristine launch gives zeros | high [0:00:00] |
| Planet X/Y | X/Y is the top-left corner of the star’s selection square; a ship in orbit shares it exactly. Sol was (295,53) in the first game and (177,224) in the later one | high [0:05:00] [2:50:00] |
| Planet twinkle timer | Per-planet counter incremented every tick (makes every planet differ in diffs) | high [0:05:00] |
| ShipsOnRoute struct | 14 × u16 = 28 bytes (layout below) | high [0:15:00]–[0:40:00] |
| ShipsOnRoute: +0 owner | Race enum (0 = Human) | high [0:15:00] |
| ShipsOnRoute: +2 X, +4 Y | Current position, u16 | high [0:15:00] |
| ShipsOnRoute: +6 target planet | Index into planets[] | high [0:10:00] |
| ShipsOnRoute: +8 travel speed | Probably the speed of the slowest ship. Higher means lower ETA; 0 crashes (div-by-zero suspected); unchanged between turns | med [0:20:00]–[0:30:00] |
| ShipsOnRoute: +10..+20 ship count[6] | Count per player design slot 0..5 (scout = slot 0, colony ship = slot 4, bomber = slot 3) | high [0:20:00] |
| ShipsOnRoute: last 3 u16 | Unknown; often “1 0 0”, one entry showed 256 (maybe 2× u8); changes reverted next turn | low [0:25:00] [0:35:00] |
| ShipsOnRoute array | Max 260 entries, one shared array for all players (AI fleets mixed in). Unused slots are zeroed when fleets arrive. A fleet = up to 6 designs, so a group moves as one | high [2:10:00] |
| Fleets-in-flight count | u16 in RAM at seg 4756 off 6; in the save next to the end of the ship-configuration block (split out of “unknown 3”); verified across saves (17→9→3) | high [0:45:00]–[0:55:00] |
| ShipTransport struct | 9 × u16 = 18 bytes: owner (race), X, Y, target planet ID, population amount (millions), then 4 unknown u16 (mostly 1/0). Zeroing the last one crashes the game and deletes the transport; zeroing the first unknown makes the transport vanish (possibly speed or progress) | med (layout) / low (unknowns) [3:10:00]–[3:35:00] |
| Transport array | 100 entries. Gap left after the fleet array = 900 u16 = 100 × 9 | high [3:45:00] |
| Transport count | u16 at seg 4756 off 8, right after the fleet count; also adjacent in the save | high [3:40:00]–[3:50:00] |
| Transports not in fleet list | Temporary pseudo-ship drawn with a colony-ship icon; not part of the ships-on-route array | high [3:10:00] [3:25:00] |
| “Totally unknown” block | 411 × u16, in RAM at 6813:B8E0; in the save it’s the data after the per-player ship counts (last count word heard 1336; starts “28 1E … 4F1 … FF01 … 4D4D”, ends in FFs). Not adjacent to the configs in RAM. One word changed between saves (heard “03 → 506”) | med location / low meaning [3:50:00]–[4:10:00] |
| Earlier “411 is zero” diff | An unknown-array element was 0, then 17, then 9 between saves; this led him to the fleet count’s file position | low [0:50:00] |
| Planet “unknown 22” → planetary reserve | 32-bit field (held about 1,340,000 when poked). Inbound reserve transfers land here, and excess spending at max population is said to go to “planetary reserve”, but the field stayed 0 in one test | med [4:00:00]–[4:10:00] |
| Player reserve (treasury) | 32-bit, in player struct; not recalculated each turn (pokes persist) | high [1:15:00] [4:05:00] |
| Diplomat availability | Fields in the player struct, a 4-part group heard as “−2, 220, 8, 3”. Setting to 0 brings the diplomat back | med [3:20:00] |
| Mood slider | Per (player, opponent) pair. Edit it in the opponent’s struct (e.g. player 5 vs player 0): player 0’s copy gets overwritten from the opponents’ values | med [3:20:00] |
| Research count arrays | Per-field “amount unlocked” count must be bumped when you add a tech (propulsion → 2, construction → 3) or the change is ignored | high [2:25:00] [3:35:00] |
| Planet size → max pop | Setting planet size to 80 made max population 80 | med [3:10:00] |
| Player 0 unknown 16 | Unknown | low [2:00:00] |
| Name | Address (as heard) | Notes |
|—|—|—|
| ships_on_route (array of ShipOnRoute) | 6813:0930 | 260 entries; struct type ship on route. [0:10:00] [2:10:00] |
| ship_design | — | Existing struct renamed from “ship” to “ship design” (size/icon/space fields). [0:10:00] |
| ships-on-route array size | 4756:0006 (u16) | Mistakenly read 4760 first. [0:45:00]–[0:50:00] |
| ship transports array size | 4756:0008 (u16) | [3:40:00] |
| ship_transports (first called “ships unknown”) | 6813:94F0 | 100 × 9 u16. [2:15:00] [3:10:00] [3:45:00] |
| totally_unknown | 6813:B8E0 | 411 × u16. [3:50:00] |
| Fleet-count write site | 4E23:1839 (also heard “423839”, “4823 1839”) | inc word [CC86] = FF 06 86 CC; in STARMAP.EXE at file offset ~6C39; not located in Ghidra. [0:55:00]–[1:35:00] |
| Read sites | e.g. 4A90:37CF and an offset ending B72 | 3 × inc di; cmp di,[CC86]. [1:35:00]–[1:45:00] |
| Ghidra↔RAM delta | RAM 0813:92FC ≡ Ghidra 1468:4B7C → +0x7DD0 linear | [1:10:00] |
| Planet field planetary reserve (was unknown 22) | — | Renamed; 32-bit. [4:05:00]–[4:10:00] |
| Current planet ID | in game_state | Used throughout as a lookup. [0:10:00] |
inc [CC86] is at file 0x6CE39 (heard “~6C39”), inside FBOV overlay #71 at offset 0x1839. Ghidra doesn’t load overlays, which is why it couldn’t be found. The 260 bound check is still open.)