-
Notifications
You must be signed in to change notification settings - Fork 6
SPC Query
⚗ Experimental tab (off by default). Needs captured snapshots.
The SPC Query tab finds fields (Single mode) or objects (Group mode) whose value followed a specific direction chain across a sequence of snapshots — no type and no value needed. You pick two or more snapshots, say how each one should compare to the previous (Increased / Decreased / Unchanged / Changed), and run.
This is Cheat Engine's "Unknown Initial Value" + Increased/Decreased scan, generalised across persisted snapshots and game restarts. Where the Snapshot Diff compares exactly two snapshots, SPC chains a predicate across N snapshots — and its Join modes can follow the same field across separate play sessions.
A Single field / Group (Multiple Values) toggle switches modes (mirrors the Snapshot Diff/Group and Value Search Single/Group toggles).
Find every field whose value sequence matches the direction chain you set.
-
Join — how a field is matched across snapshots:
- Strict — same class + normalised path + offset (fewest false positives).
- Loose — class + outer chain + name (recovers some spawned objects across sessions).
- In-session — same game launch only (exact).
- Rounding — how a fractional float/double absolute target is reduced before comparing.
- Class / Field filters narrow the candidate set.
Tick the snapshots to include. The oldest ticked snapshot is the baseline (its predicate is ignored); each later snapshot's predicate compares it to the previous ticked one. Columns: Use · Label · Captured (UTC) · Session · Compare (the predicate) · Value filter · Matches. Beyond a direction, you can add an optional absolute Value filter per row; the Matches column then previews the coerced integer/float range that filter resolves to (e.g. → int 12~13 · float 11.5~13.2).
Then Run SPC (Refresh reloads the snapshot list).
A hit → Copy Address / Open in Live Walker hands the newest snapshot's live address to Cheat Engine — the current one, so you can freeze it.
Filter with Class / Field / Object / Filter all and a First / Last value range (Apply range / Reset). Columns: Class · Object · Field · Type · Value sequence. Each row offers Live (open in Live Walker), 🌍 (Locate in GWorld), ⚙ (Locate in GameEngine), and Addr (copy).
Below the results, a noise picker lists the Top-N class contributors (the classes flooding the result set) and shows the active denylist as chips — click a chip to remove that class. Use it to strip engine/system noise from a busy result set.
Find objects that hold all of 2–4 fields at distinct offsets, where each field follows its own direction chain across the snapshots. For example, over [full, damaged, healed] snapshots: Current HP goes · → ↓ → ↑ while Max HP goes · → = → =.
- Values (width scope per value) — + value / − value add or remove value slots (2–4); each slot has its own width scope.
- Editing: — a prominent indicator of which value's chain the snapshot grid below edits. Pick a value, then set that value's Compare + Value filter down the snapshot rows; repeat for each value.
- Tick the snapshots the same way as Single mode.
- Find group runs it (Clear resets); it returns objects where every value's chain holds at the same time.
Results are master-detail: one row per matched object (Class · Object · Matched values); expand a row to see each value's per-slot Pattern (its direction chain). Per-row actions mirror Single mode.
| Snapshot Diff / Group | SPC Query | |
|---|---|---|
| Snapshots compared | Exactly 2 (Diff), or 1–2 (Group Mode B) | N (a whole ticked sequence) |
| What it tests | An exact value change / absolute value | A direction chain per field (Increased/Decreased/Unchanged/Changed) |
| Across sessions | In-session only | Join = Strict / Loose / In-session (can span restarts) |
| Best for | "What changed between these two?" | "Which field went down-then-up over my whole run?" |
- Snapshot — capture the snapshots SPC queries; its Diff is the two-snapshot case.
- Class Pivot — pivot a class's fields across snapshots to read its stat layout.
- Value Search — the live-memory "Unknown Initial Value" equivalent (no snapshots).
- Live Walker — where Live / 🌍 / ⚙ land (on the newest snapshot's live address).