Repository navigation
feat(cheats): convert community source freezes with ROM revision guards - #1052
Merged
Merged
Conversation
1 task done
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Regression:
|
| ROM | Status | Details | Diff |
|---|---|---|---|
| jagniccc | ✅ PASS | 0 pixels differ | - |
| yarc | ✅ PASS | 0 pixels differ | - |
| jagniccc (determinism) | ✅ PASS | identical across runs | - |
| yarc (determinism) | ✅ PASS | identical across runs | - |
| jagniccc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| yarc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| jagniccc (save state) | ✅ PASS | round-trip matches | - |
| yarc (save state) | ✅ PASS | round-trip matches | - |
| jagniccc (rewind) | ✅ PASS | rewind matches | - |
| yarc (rewind) | ✅ PASS | rewind matches | - |
Platform: Linux aarch64
Updated by CI at 2026-10-20T19:55:48.165Z
Regression:
|
| ROM | Status | Details | Diff |
|---|---|---|---|
| jagniccc | ✅ PASS | 0 pixels differ | - |
| yarc | ✅ PASS | 0 pixels differ | - |
| jagniccc (determinism) | ✅ PASS | identical across runs | - |
| yarc (determinism) | ✅ PASS | identical across runs | - |
| jagniccc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| yarc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| jagniccc (save state) | ✅ PASS | round-trip matches | - |
| yarc (save state) | ✅ PASS | round-trip matches | - |
| jagniccc (rewind) | ✅ PASS | rewind matches | - |
| yarc (rewind) | ✅ PASS | rewind matches | - |
Platform: Darwin arm64
Updated by CI at 2026-10-20T19:55:12.666Z
Regression:
|
| ROM | Status | Details | Diff |
|---|---|---|---|
| jagniccc | ✅ PASS | 0 pixels differ | - |
| yarc | ✅ PASS | 0 pixels differ | - |
| jagniccc (determinism) | ✅ PASS | identical across runs | - |
| yarc (determinism) | ✅ PASS | identical across runs | - |
| jagniccc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| yarc (frameskip) | ✅ PASS | skip=0 matches skip=3 | - |
| jagniccc (save state) | ✅ PASS | round-trip matches | - |
| yarc (save state) | ✅ PASS | round-trip matches | - |
| jagniccc (rewind) | ✅ PASS | rewind matches | - |
| yarc (rewind) | ✅ PASS | rewind matches | - |
Platform: Linux x86_64
Updated by CI at 2026-10-20T19:57:07.360Z
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Community cheat authors currently have to rediscover or manually translate their memory freezes. Add an offline converter for a conservative subset of user-authored C cheat sources: grouped constant RAM writes, boolean toggles, and bounded integer loops become ordinary
.chtentries. Unsupported operations are reported and omitted only with explicit--allow-partial; no script is compiled or executed.Generated sets are disabled by default and bound to the supplied cartridge CRC32. The app blocks mismatched, unknown, malformed, or duplicate revision guards, including saved toggles, while preserving legacy unbound files and hardcore gating. Every combination of exported toggles is checked for equivalent final byte writes.
Refs #1050
Sources and limits
Only community-authored source files were used. No BigPEmu binary, SDK header, compiled script, or proprietary bundled script was inspected or used. The community repository has no stated license, so this PR includes neither its scripts nor a converted cheat pack. Committed fixtures are original synthetic sources. A community file crediting third-party bundled-script values was excluded from validation; the README records provenance and boundaries.
Local checks against matching private cartridges at community commit
24211503339a969f8494b8e189b8f2aa0cb9eba6converted Kasumi Ninja 1/1, Atari Karts 2/3, and Doom 8/8 toggles. Hashes matched. Atari Karts' read/modify/write unlock setting was refused. These are conversion checks, not gameplay certification. RAM-dependent, parameter-valued, persistent, helper-function, and other unsupported behavior still needs manual porting; this is partial coverage of #1050.Test plan
DEVELOPER_DIR=/Library/Developer/CommandLineTools make TEST_EXPORTS=1 -j8 test; optional ROM/disc/tool checks explicitly skipped.vj_cheats_testbuilt with CMake; all 10 applicable app cheat CTests passed, including save-state/persistence/threaded paths..cht→ actual app RAM: enabled writes succeed, disabled control stays unchanged, wrong revision refuses activation, and saved toggles stay blocked after a guard mismatch.git diff --check; C89 lint N/A (no core C source changes; app C++ and Python only)..github/skills/code-review/SKILL.md.The community test job now fetches only the three reviewed author sources at a fixed commit, checks SHA256, and compares names, write counts, converted-code digests, unsupported reasons, and wrong-hash activation. Network/checksum failures fail CI; no ROM, SDK, compiled script or source artifact is required. Optional local cartridge-identity integration also passes. Future author-submitted repository catalog requirements are documented separately from this converter.
Branch base
develop, branched from freshlibretro/developin an isolated managed worktree.