Search results and jump-back lists finally tell you what each address is — the class and field it lives in — instead of making you open candidates one at a time to find out.
New: field labels in result lists
- Add Field Label (candidate and jump back lists) cycles off → on → filtered. On, every row shows its
Klass.field. Filtered, rows that resolved to nothing are hidden - The full label — namespace, type, and base + offset — appears in the left panel status for the row under the cursor, since the row itself is too narrow for it
- An address in main that holds a class pointer labels as
=>ClassName— those are the roots pointer chains start from - Works from live game data alone, no dump.cs needed (one just sharpens the type names), and labels are re-read from live memory every time so they can't go stale
- With the filter on, Page Up/Down skip straight past empty pages
- Memory Explorer's Class field is now reachable directly from a row — no more round trip
New: Trim screen (jump back)
Filtering barely narrows a big candidate list — grouping is what helps. On a real search, 3,000 candidates collapsed into just 160 label groups, the biggest groups were obvious junk to skip, and the answer named itself (a search for the value 200 included Inventory.numberOfSlots). Trim is built on exactly that.
- Trim scans the map and lists every distinct label, biggest group first, each with a keep flag
- Toggle keep on the groups worth keeping — or use Analyse this label to focus the node list on one group and work on it as usual; Back returns to Trim exactly where you left it
- Execute removes everything you didn't keep. It takes two presses — the first reports how many nodes would go, and changing any selection resets it, so you can't delete on a stale count
- Save to file writes the list to
node_labels.txt
Safety: if a map is too scattered to scan fully, Execute is blocked rather than risk deleting nodes that were never labelled — Analyse still works. Also in jump back: the node list finally pages (11 rows, Right Stick Up/Down) instead of showing only the first 20 nodes.
New: Gen2 method labels and View caller
- Captured rows now name the method the capture sits in, from whatever name source the game offers
- View caller answers the question a method label can't: when a shared method (like
Dictionary.get_Item) labels every row identically, it names the callers on the captured stack, with[n/total]showing how many rows came through each. A caller unique to your row is the one worth opening
Fixed
- View class on an empty Dictionary no longer refuses with "Cannot read entries array" — an empty dictionary simply hasn't allocated anything yet. It now opens the container's own fields so you can watch
_countand_entriesfill in as the game uses it. A genuinely stale pointer still errors instead of showing a made-up view