Roadmap
This is the project’s working roadmap. It tracks the big reverse-engineering and tooling milestones — not every commit.
Status key: Shipped done and verified · In progress partially working · Blocked waiting on a hard dependency · Planned designed, not started.
Shipped Shipped
Section titled “Shipped ”| Milestone | What landed |
|---|---|
| Uncooked asset mirror | data/uncooked/ extract pipeline — textures decoded (BC1/BC3/BC5/RGBA8 → PNG, 4,776 PNGs) plus 15,431 raw .gen + 15,362 structural sidecars. See Uncooked assets. |
| Pack guard | rsmm pack refuses files byte-identical to the original (--allow-vanilla for personal backups), preventing accidental redistribution of copyrighted assets. |
| Mass decompile | 46,963 functions decompiled; symbols + strings exported to JSON. See RE pipeline. |
Pattern resolver + rsmm.call |
~50k byte-pattern signatures in data/function_patterns.json, every one resolving to its recorded address by the loader’s own scan (see the pipeline; the DB published before 2026-10-03 needs a republish to get there). Lua mods can call any of ~53k game functions by name, plus memory read/write. See Calling game functions. |
| Seed surface mapped | The built-in Forced seed option (oe::UIntGameOption, id 0x1949b098) located with its enable bool. ExampleSeedPin pins a run’s RNG for speedruns. See Seed + mapgen. |
In-game “Mods” UI Abandoned
Section titled “In-game “Mods” UI ”Giving the mod manager a presence inside Ravenswatch’s own menus (a Social-book
tab, a title-menu button, a book-page mod list) was dropped. Mods are managed
from the desktop app and the CLI. The tooling (rsmm menu, rsmm intents,
rsmm url, rsmm social-tab, rsmm menu-button, rsmm mods-list) has been
removed; what was learned about the game’s UI is kept in
UI & the book menu.
Hook API (rsmm.hook) Shipped
Section titled “Hook API (rsmm.hook) ”The loader intercepts game functions: rsmm.hook for mods, and the loader’s own
detours (damage meter, lobby parser, event bus, skins, talents) go through
hook_util.h, which checks every target is a real function entry before it
installs. The earlier belief that an anti-tamper integrity check crashed every
hookpoint was wrong: the two hooks that failed had unrelated causes. See
Anti-tamper protector.
Hooks are observation-first and gated by symbol status in data/symbols.json; a
hook on an address that is not a function entry is refused or warned, not
installed silently.
Pattern-DB rebuild on game update Shipped
Section titled “Pattern-DB rebuild on game update ”When Steam updates Ravenswatch, the signatures in function_patterns.json must
be regenerated against the new exe.
./rsmm doctorhashes the installed exe and warns when the pattern DB is stale../rsmm rebuild-fn-patternsregenerates the DB in about 2–3 minutes, adds the stable named entries, and checks that every mapped symbol lands on a function boundary and every entry resolves to its address. The old DB is put back if a step fails.--ghidrare-runs the symbol dump first.rsmm symbolsremapsdata/symbols.jsonafter a patch. That step, rebuilding the loader and publishing are still run by hand (see the pipeline).
