rrt/README.md

37 lines
1.8 KiB
Markdown
Raw Normal View History

2026-04-01 23:15:20 -07:00
Analysis and reimplementation of Railroad Tycoon 3
The old executable is at ./rt3_wineprefix/drive_c/rt3/RT3.exe
Our first task is to understand the executable's high-level control loops and subsystem boundaries well
enough to choose good rewrite targets. As we go, we document evidence, keep a curated function map,
and stand up Rust tooling that can validate artifacts and later host replacement code.
2026-04-01 23:15:20 -07:00
The long-term direction is still a DLL we can inject into the original executable, patching in
individual functions as we build them out. The current implementation milestone is smaller: a
minimal PE32 Rust hook that can load into RT3 under Wine without changing behavior.
2026-04-01 23:15:20 -07:00
## Project Docs
Bootstrap design and workflow documents live in `docs/`.
- `docs/README.md`: handbook index and target hashes
- `docs/control-loop-atlas.md`: high-level loop and subsystem atlas
- `docs/setup-workstation.md`: toolchain baseline and local setup
- `docs/re-workflow.md`: repeatable reverse-engineering workflow
- `docs/function-map.md`: canonical function-map schema and conventions
The first committed exports for the canonical 1.06 executable live in `artifacts/exports/rt3-1.06/`.
## Rust Workspace
The Rust workspace is split into focused crates:
- `rrt-model`: shared types for addresses, function-map rows, and control-loop concepts
- `rrt-cli`: validation and repo-health checks for the reverse-engineering baseline
- `rrt-hook`: minimal Windows DLL scaffold that currently builds a `dinput8.dll` proxy for
low-risk in-process loading experiments under Wine
For the current runtime smoke test, run `tools/run_hook_smoke_test.sh`. It builds the PE32 proxy,
copies it into the local RT3 install, launches the game briefly under Wine with
`WINEDLLOVERRIDES=dinput8=n,b`, and expects `rrt_hook_attach.log` to appear.