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.