Skip to content

Commit 86a3b73

Browse files
committed
Release v5.6: pointer hooks, entity_visualizer, IDA MCP tooling
1 parent 4d14fcd commit 86a3b73

132 files changed

Lines changed: 7181 additions & 491 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cursor/commands/ida-tool.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# ida-tool
2+
3+
Use the `ida-sof-buddy` mcp server tools to assist the user with the following query, NOTE:The IDA you are interacting with _MIGHT_ be a linux version of the binary with more debug symbols than the windows version, that is why the offsets differ. Sometimes you might be interacting with the windows one that has way less names for the functions, they were only labelled by a human.

.cursor/commands/smart-commit.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# smart-commit
22

3-
perform git add and git commit with a smart message of the changes that were performed.
3+
perform git add and git commit with a smart message of the changes that were performed. Ensure each commit only applies for changes within each feature folder and is described relative to the feature they change.

.cursor/mcp.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"mcpServers": {
3+
"ida-sof-buddy": {
4+
"command": "${workspaceFolder}/.venv-mcp/bin/python",
5+
"args": ["${workspaceFolder}/ida_plugin_mcp/cursor_mcp_server.py"],
6+
"env": {
7+
"IDA_MCP_BASE": "http://127.0.0.1:31337"
8+
}
9+
}
10+
}
11+
}

.cursor/skills/rmf-menu-authoring/reference.md

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,8 @@
22

33
Definitive reference for Raven Menu Format (`.rmf`): terminology, syntax, behavior, and observed extensions. For humans and agents that parse, validate, generate, or transform RMF.
44

5-
## 1. Source Precedence
65

7-
1. `rmf_docs/menu_docs.txt` (official RMF v1.00 semantics)
8-
2. `.cursor/rules/rmf_*/RULE.md` (project-level normalized rules)
9-
3. Real menu corpus `rmf_real_menus/*.rmf`
10-
4. `rmf_docs/structure.md`, `rmf_docs/virtual_pixels.md`
11-
5. `rmf_docs/scrappy_docs.txt`
12-
6. `html_renderer/*` behavior (practical quirks; not always game-engine exact)
13-
14-
## 2. Object Model and Terminology
6+
## 1. Object Model and Terminology
157

168
### Runtime hierarchy
179

@@ -30,7 +22,7 @@ Definitive reference for Raven Menu Format (`.rmf`): terminology, syntax, behavi
3022
- Frame definitions usually only on top-level page; included child pages are area/layout content.
3123
- Common prefixes: `m_`, `t_`, `l_`, `r_`, `a_`. Pages cached on first visit.
3224

33-
## 3. File Rules and Parsing
25+
## 2. File Rules and Parsing
3426

3527
- Entrypoint: one top-level `<stm>...</stm>`. Fragment files may omit `<stm>`.
3628
- Tags angle-bracketed; `[]` optional. Quoted strings preserve spaces. Page refs omit `.rmf`.
@@ -53,18 +45,18 @@ Definitive reference for Raven Menu Format (`.rmf`): terminology, syntax, behavi
5345

5446
Frames define partition first; area/layout inside active frames/pages. Bare quoted text is flow; `<text ...>` is interactive. Frame composition at page root; child content via `page`/`cpage`/`include`.
5547

56-
## 4. Coordinates, Scaling, Units
48+
## 3. Coordinates, Scaling, Units
5749

5850
- Virtual baseline: width 640, height 480 (aspect-dependent). Effective vertical: 640×480 (4:3), 640×400 (16:10), 640×360 (16:9).
5951
- **Frame** `width`/`height`: virtual (resolution-scaled). **Area** `width`/`height`: **absolute screen pixels**. `defaults border` / `frame border`: often actual-pixel line thickness.
6052
- **Frame %**: `frameWidthPct = frameWidth * 100 / 640`; `frameHeightPct = frameHeight * 100 / effectiveVirtualHeight` with `effectiveVirtualHeight = 640 * screenHeight / screenWidth` (e.g. 1920×1080 → 360). Use frames for scalable structure; avoid building layout with many `<blank>` at high res.
6153
- `backdrop` = primary full-background; `frame backfill` = inner-frame/border fill, not a replacement for `backdrop`.
6254

63-
## 5. Color and Text
55+
## 4. Color and Text
6456

6557
- `<tint name 0xAABBGGRR>` (ABGR). String packages: `<strings PACKAGE>` then `^TOKEN^`. Default tints in `rmf_real_menus/tints.rmf`: `vbargray`, `normaltext`, `hilitetext`, `backtint`, `tipback`, `tip`, `icontint`, `iconhilite`, `hgreen`, `hblue`, `orange`, `red`, `blue`, `green`, `purple`, `cyan`, `clear`, `black`, `transblack`, `semiblack`, `smokey`, `gray`, `white`, etc.
6658

67-
## 6. Control Elements
59+
## 5. Control Elements
6860

6961
| Keyword | Purpose |
7062
|---------|---------|
@@ -83,7 +75,7 @@ Frames define partition first; area/layout inside active frames/pages. Bare quot
8375

8476
Frames operate above layout. `br`/`hbr` only affect area placement **inside** a frame’s active page. Frame definitions processed in order; `0` width/height = fill remaining; wrap goes below at left edge of last auto-filled frame. Fixed-width frame to the left = permanent left margin for everything below. For clean top borders/header bands, define frames in completed horizontal layers.
8577

86-
## 7. Layout Elements
78+
## 6. Layout Elements
8779

8880
| Keyword | Purpose |
8981
|---------|---------|
@@ -120,38 +112,38 @@ Example (layout resets with borders and blanks):
120112

121113
Top = last `<hbr>`. `<br>` = temporary stepping stones; layout change resets `<br>` stack. Areas grow right; first line = `<hbr>` line.
122114

123-
## 8. Common Area Modifiers
115+
## 7. Common Area Modifiers
124116

125117
`key`, `ckey`, `ikey`, `tint`, `atint`, `btint`, `ctint`, `dtint`, `noshade`, `noscale`, `border`, `width`, `height`, `cvar`, `cvari`, `inc`, `mod`, `tip`, `xoff`, `yoff`, `tab`, `noborder`, `bolt`, `bbolt`, `align`. Reverse-engineered: `next`, `prev`, `iflt`, `ifgt`, etc.
126118

127-
## 9. Area Elements
119+
## 8. Area Elements
128120

129121
`blank`, `hr`, `vbar`, `text`, `ctext`, `image`, `list`, `slider`, `ticker`, `input`, `setkey`, `popup`, `selection`, `ghoul`, `gpm`, `filebox`, `filereq`, `loadbox`, `serverbox`, `serverdetail`, `players`, `listfile`, `users`, `chat`, `rooms`. File sort: `name`/`rname`, `size`/`rsize`, `time`/`rtime`. Area width/height = absolute pixels. For exact tint on list/ctext use `noshade` and area-level tint.
130122

131-
## 10. Undocumented / Extended
123+
## 9. Undocumented / Extended
132124

133125
- **hbar**: `<hbar "BACKGROUND" "BAR_ITEM" cvar PROGRESS_CVAR [invisible]>` (0.0–1.0).
134126
- **botlist**: `<botlist cvar menu_newbot>`.
135127
- **bot**: `<bot menu_newbot tab headings "Name,..." align center>`.
136128
- **onexit**: `<onexit menu_settings_changed altersnd>`.
137129

138-
## 11. High-Value Quirks
130+
## 10. High-Value Quirks
139131

140132
- `cinclude` = cvar non-zero; `cninclude` = cvar zero. `exinclude` order: `<cvar> <pageIfZero> <pageIfNonZero>`.
141133
- `ctext` often has `invisible`; `text` has `regular`. `serverbox` columns 0–5 (5 = pure). `filebox` uses `align` in practice.
142134
- `chat` with `private`. Area parsers can be option-order sensitive. Most tags not explicitly closed.
143135
- `return` = guarded teardown; `menuoff` = direct. `defaults noborder` + selective borders for cleaner layouts. Prefer frames over blank-heavy layout for scaling. Use `noshade` when list/ctext looks muted.
144136

145-
## 12. Agent Authoring Checklist
137+
## 11. Agent Authoring Checklist
146138

147139
Single `<stm>`; extensionless includes; tints/strings before use; intentional layout transitions; valid key/cvar bindings; conservative filebox/filereq options; undocumented tags only if supported; frame/cut names valid; layout mode switched back after left/normal; br vs hbr intentional.
148140

149-
## 13. Minimal and Frame-Cut Templates
141+
## 12. Minimal and Frame-Cut Templates
150142

151143
Minimal: `<stm><frame default 640 480 page main></stm>`.
152144

153145
Frame-cut: `<stm><frame topic 0 92 page t_header center><frame main 640 372 border 40 0 clear backfill clear><frame content 0 0 cut main cpage menu_mapname></stm>`.
154146

155-
## 14. Rect Type IDs (reverse notes)
147+
## 13. Rect Type IDs (reverse notes)
156148

157149
0x00 setkey/serverbox, 0x01 slider, 0x02 ticker, 0x03 ghoul, 0x05 image, 0x06 text, 0x07 ctext, 0x08 list, 0x09 input, 0x0A filebox, 0x0B filereq, 0x0C loadbox, 0x0D popup, 0x0E blank, 0x0F rule/hr, 0x13 serverdetail, 0x14 players, 0x15 hbar, 0x16 vbar, 0x17 selection, 0x18 listfile, 0x19 botlist, 0x1A bot, 0x1B users, 0x1C chat, 0x1D rooms, 0x1E demote.

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,6 @@ src/features/internal_menus/menu_data.cpp
2323
# SDK/
2424
# SDK/*/
2525
.cursor/*.log
26+
27+
# Local MCP bridge venv (ida_plugin_mcp)
28+
.venv-mcp/

CHANGELOG.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
11
# Changelog
22

3+
## v5.6
4+
5+
- **Detours / codegen:** Expanded `detours.yaml` and `tools/generate_hooks.py` for pointer-backed hook targets; `rsrc/funcmaps/SoF.exe.json` and per-feature `hooks/pointers.json` (plus `src/core/pointers.json`); `docs/DETOUR_SYSTEM.md` and `hdr/detours.h` updates; `DetourXS` and core detour registration (`detours.cpp`, `shared_hook_manager.cpp`) aligned with the new flow.
6+
- **Core:** Init and loader path work (`simple_init.cpp`, `module_loaders.cpp`, `wsock_entry.cpp`, `update_command.cpp`, `sofbuddy_cfg.cpp`) so startup and update behavior match the hook system changes.
7+
- **entity_visualizer (new, optional):** Map-study tooling (spawn/draw, cvars, QCommon frame and loading hooks). Still **off by default** in `features/FEATURES.txt` alongside other experimental toggles; enable by uncommenting the feature line for local builds.
8+
- **Internal menus:** Map debug RMF assets (`map_debug.rmf`, `map_debug_content.rmf`); tab content and loading/menu hook follow-ups; `hooks/pointers.json` for internal menu hooks.
9+
- **Graphics / ref-DLL features:** `lighting_blend`, `scaled_ui_base`, `scaled_menu`, `texture_mapping_min_mag`, `vsync_toggle` — cvar/refdll and hook wiring updates where pointers apply; feature README tweaks where noted.
10+
- **Other features:** `http_maps`, `media_timers`, `new_system_bug` — small hook/cvar/README adjustments; `raw_mouse` message-pump and hook touch-ups.
11+
- **Cbuf / config:** `cbuf_limit_increase` README and early callback updates; `FEATURES.txt` comment clarifies deprecation in favor of `sofbuddy.cfg` persistence.
12+
- **Tooling / docs:** IDA MCP plugin (`ida_plugin_mcp/`), `ida_dump_main.py`, and Cursor MCP/command helpers for IDA workflows; `README.md` and several feature READMEs refreshed.
13+
314
## v5.5
415

5-
- Build defaults: `entity_visualizer` is commented out in auto-generated `features/FEATURES.txt` (experimental). CI and `make` run `tools/generate_features_txt.py`, which now treats it as default-disabled alongside `scaled_menu` and `cbuf_limit_increase`; enable locally by uncommenting the feature line.
16+
- Build defaults: `entity_visualizer` remains under Game Features but is **commented out by default** in auto-generated `features/FEATURES.txt` (`tools/generate_features_txt.py`). Default-disabled features are `scaled_menu`, `cbuf_limit_increase`, and `entity_visualizer` (map entity / wireframe tools).
617
- HTTP maps: stabilize deferred precache and loading-status flow; harden HTTPS, size fallbacks, loading status, and logging (`http_maps.cpp`, README).
718
- Internal menus: restore early loading UI with a pak-aware fast path; harden loading menu behavior in unlock mode; loading safe RMF updates; `SCR_BeginLoadingPlaque` post-hook adjustments.
819

0 commit comments

Comments
 (0)