From 3d39e2a04186f859d4350b29f7ffa5650845b548 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 29 Sep 2017 21:51:57 -0700 Subject: [PATCH] GBA Cheats: Slightly improve PARv3 detection --- src/gba/cheats/parv3.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/gba/cheats/parv3.c b/src/gba/cheats/parv3.c index 63d2d2685..71bd31c15 100644 --- a/src/gba/cheats/parv3.c +++ b/src/gba/cheats/parv3.c @@ -284,6 +284,10 @@ bool GBACheatAddProActionReplayRaw(struct GBACheatSet* cheats, uint32_t op1, uin cheat->address = BASE_IO | (op1 & OFFSET_MASK); break; } + if (op1 & 0x01000000 && (op1 & 0xFE000000) != 0xC6000000) { + return false; + } + cheat->width = width; cheat->operand = op2 & (0xFFFFFFFFU >> ((4 - width) * 8)); @@ -385,10 +389,13 @@ int GBACheatProActionReplayProbability(uint32_t op1, uint32_t op2) { if (op2 & ~((1 << width) - 1)) { probability -= 0x10; } + // Fall through case PAR3_BASE_ASSIGN: case PAR3_BASE_INDIRECT: probability += GBACheatAddressIsReal(address); - // Fall through + if (op1 & 0x01000000) { + return 0; + } break; case PAR3_BASE_OTHER: break;