scaffold RE campaign: board, backlog, findings template, verify tree
This commit is contained in:
parent
a80cbbc6de
commit
9ad30bffce
13 changed files with 103 additions and 1 deletions
18
README.md
18
README.md
|
|
@ -25,3 +25,21 @@ system-maintainer POV in **trikilli** → `services/re-lab.md`. This repo is eve
|
|||
Game binaries come from the owner's own GOG/Steam copy. RE is for personal
|
||||
interoperability, bug-fixing, and preservation. Binaries themselves are **not** committed
|
||||
here (see `.gitignore`) — they live on the lab's Samba share `/srv/re-lab/samples`.
|
||||
|
||||
## Campaign (how this repo is run)
|
||||
|
||||
A 4-agent crew (defined in `~/.claude/agents/re-*.md`) runs the exploration:
|
||||
**re-quartermaster** (backlog + board) → **re-analyst** (maps via ReVa) →
|
||||
**re-verifier** (proves vs real data; old-vs-new differential once reimpl starts) →
|
||||
**re-scribe** (files the note, links it, commits).
|
||||
|
||||
- `campaign/board.md` — live status board (start here).
|
||||
- `campaign/backlog.md` — prioritized target queue.
|
||||
- `campaign/open-questions.md` — unresolved threads.
|
||||
- `findings/_template.md` — the record format every finding follows.
|
||||
- `findings/{objects,control-flow,subsystems}/` — the growing engine map.
|
||||
- `verify/{parsers,traces,harness,results}/` — validation: struct parsers now, golden-trace
|
||||
replay + shim compare-mode for reimplementation.
|
||||
- `ghidra/` — exported scripts + datatype archives.
|
||||
|
||||
Approach & north star: `findings/00-strategy.md`. Binary facts: `findings/01-fingerprint.md`.
|
||||
|
|
|
|||
19
campaign/backlog.md
Normal file
19
campaign/backlog.md
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# Backlog (prioritized)
|
||||
|
||||
Object model + control flow are mapped concurrently. Priority favors targets that unblock the
|
||||
most other work. Groomed by **re-quartermaster**.
|
||||
|
||||
## Now
|
||||
1. **RTTI class inventory** — pull the full class/vftable list from ReVa; this seeds the real
|
||||
object-model target names (currently placeholders on the board).
|
||||
2. **empire/player object** — the root of the game state; cross-ref the save-editor structs.
|
||||
3. **entry → main loop** — establish the control-flow spine in parallel with the object model.
|
||||
|
||||
## Next
|
||||
4. star system / fleet / ship / tech-tree objects (fan-out once class names are known).
|
||||
5. D3D9 device init → present loop (renderer anchor).
|
||||
6. save load/write path (ties object model to on-disk format; feeds verify/ parsers).
|
||||
|
||||
## Later
|
||||
7. battle-load path (primary bug) — needs the object model + main loop mapped first.
|
||||
8. .gob/DDS/model asset parsers (interop tools).
|
||||
17
campaign/board.md
Normal file
17
campaign/board.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Campaign board
|
||||
|
||||
Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
|
||||
`verified` requires re-verifier evidence. Maintained by **re-quartermaster**.
|
||||
|
||||
| Target | Type | Status | Conf | Coverage | Updated | Notes |
|
||||
|---|---|---|---|---|---|---|
|
||||
| _RTTI class inventory_ | meta | backlog | — | — | 2026-09-07 | pull full class/vftable list from ReVa; seeds object-model rows |
|
||||
| entry point @0x925794 | control-flow | backlog | — | 0% | 2026-09-07 | WinMain → init → main loop |
|
||||
| main loop / tick dispatch | control-flow | backlog | — | 0% | 2026-09-07 | how subsystems are pumped each frame/turn |
|
||||
| D3D9 device init | subsystem | backlog | — | 0% | 2026-09-07 | Direct3DCreate9 → CreateDevice; renderer anchor |
|
||||
| empire/player object | object | backlog | — | 0% | 2026-09-07 | cross-ref save-editor structs |
|
||||
| star system object | object | backlog | — | 0% | 2026-09-07 | cross-ref save-editor structs |
|
||||
| fleet / ship object | object | backlog | — | 0% | 2026-09-07 | cross-ref save-editor structs |
|
||||
| tech tree object | object | backlog | — | 0% | 2026-09-07 | cross-ref save-editor structs |
|
||||
| battle-load path | subsystem | backlog | — | 0% | 2026-09-07 | primary bug (many-core slowdown); LAA already on |
|
||||
| .gob format | subsystem | mapped | high | 100% | 2026-09-07 | renamed uncompressed ZIP (community-known); parser target for verify/ |
|
||||
12
campaign/open-questions.md
Normal file
12
campaign/open-questions.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# Open questions
|
||||
|
||||
Each links to the finding that raised it. Promoted to backlog or closed by **re-quartermaster**.
|
||||
|
||||
- **Compiler archive mismatch** — imports say MSVCR100/MSVCP100 (VS2010), but Ghidra applied
|
||||
`windows_vs12_32` datatypes (closest available). Confirm the exact toolchain from the PE Rich
|
||||
header; decide which datatype archive best fits. (from [[01-fingerprint]])
|
||||
- **Battle-load root cause** — inferred as single-threaded engine + core-count-sensitive code;
|
||||
must be confirmed by a `ForceSingleCore=0` vs `=1` diff once the main loop is mapped.
|
||||
(from [[00-strategy]])
|
||||
- **Save-editor struct coverage** — community editors cover players/tech/systems; fleet/combat
|
||||
state coverage may be partial. Treat as strong hints, verify each field against real saves.
|
||||
30
findings/_template.md
Normal file
30
findings/_template.md
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# <Target name> <!-- class | function | subsystem -->
|
||||
|
||||
- **Type:** class | function | subsystem
|
||||
- **Address / RVA:** 0x........ (ImageBase 0x00400000)
|
||||
- **RTTI / vftable:** <demangled name, or n/a>
|
||||
- **Status:** backlog | in-progress | mapped | verified | blocked
|
||||
- **Confidence:** low | med | high
|
||||
- **Owner / date:** <agent> · YYYY-MM-DD
|
||||
|
||||
## Purpose
|
||||
<what it is / does, one tight paragraph>
|
||||
|
||||
## Structure <!-- fields for a class, signature for a function -->
|
||||
```c
|
||||
// offsets/sizes/types a reimplementer could use directly
|
||||
```
|
||||
|
||||
## Decompilation notes
|
||||
<the key insight, not a raw dump; call out non-obvious logic>
|
||||
|
||||
## Cross-refs
|
||||
- Callers: <fn@rva ...>
|
||||
- Callees: <fn@rva ...>
|
||||
- Related: [[other-finding]]
|
||||
|
||||
## Verification
|
||||
<mode + evidence: parser/harness path, verify/results/ entry, verdict. Filled by re-verifier.>
|
||||
|
||||
## Open questions
|
||||
- <linked to campaign/open-questions.md>
|
||||
1
findings/control-flow/.keep.md
Normal file
1
findings/control-flow/.keep.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
# placeholder — populated during the campaign
|
||||
1
findings/objects/.keep.md
Normal file
1
findings/objects/.keep.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
# placeholder — populated during the campaign
|
||||
1
findings/subsystems/.keep.md
Normal file
1
findings/subsystems/.keep.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
# placeholder — populated during the campaign
|
||||
|
|
@ -1 +0,0 @@
|
|||
# traces/ — placeholder, populate as work lands
|
||||
1
verify/harness/.keep.md
Normal file
1
verify/harness/.keep.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
# placeholder — populated during the campaign
|
||||
1
verify/parsers/.keep.md
Normal file
1
verify/parsers/.keep.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
# placeholder — populated during the campaign
|
||||
1
verify/results/.keep.md
Normal file
1
verify/results/.keep.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
# placeholder — populated during the campaign
|
||||
1
verify/traces/.keep.md
Normal file
1
verify/traces/.keep.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
# placeholder — populated during the campaign
|
||||
Loading…
Add table
Reference in a new issue