feat(reverse): ledger every initialized game object

Add a reproducible dump of all 175 initialized collision and rule records from
the unmodified traceable Wine process. Preserve geometry, bounds, activation,
all four decoded Borland Real48 response values, flags, contact state, score,
layer mask, and render rectangle in a reviewable TSV.

This extends the static function ledger with the runtime-built data table needed
to replace inferred target, lock, gate, and mechanism logic in Rust.

Test Plan:
- generated `OBJECTS.tsv` contains one header plus 175 records
- repeat dump compared byte-for-byte equal with `cmp`
- `ruff check` on all original tracing tools -- passed
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-22 21:07:18 +02:00
parent d813b5b9da
commit 9d91cc51c7
3 changed files with 318 additions and 1 deletions
+4 -1
View File
@@ -18,10 +18,14 @@ the output are therefore analysis-generated identifiers.
- `TDKPIN_GHIDRA_RAW.c`: C-like Ghidra output for every recovered in-image function.
- `FUNCTIONS.tsv`: address ledger separating in-image functions from imported APIs.
- `COVERAGE.tsv`: executable-block, instruction, function-body, and undefined-range audit.
- `OBJECTS.tsv`: all 175 initialized collision/rule records, including geometry,
Real48 response values, flags, layers, scores, and render bounds.
- `tools/ExportDecompilation.java`: deterministic decompiler exporter.
- `tools/SeedMissingEntrypoints.java`: seeds one missed NE export and the NE startup entry.
- `tools/AuditCoverage.java`: regenerates the byte-coverage audit.
- `tools/decompile.sh`: runs the import, repair, export, and audit from scratch.
- `tools/dump_original_objects.py`: regenerates the initialized object ledger
from a traceable Wine process without patching the executable.
## Accounting
@@ -46,4 +50,3 @@ types, unnamed globals, and several warnings around segmented pointers, stack tr
indirect jump table. The source has not been executed against Windows 3.x or compared
differentially with the original program. Consequently, the current result establishes broad
static code coverage, not source-level semantic parity or a reproducible binary build.