37 lines
1.8 KiB
Markdown
37 lines
1.8 KiB
Markdown
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.
|
|
|
|
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.
|
|
|
|
## 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.
|