GBA Cheats: Fix key-activated CodeBreaker cheats

This commit is contained in:
Jeffrey Pfau 2016-09-21 23:30:12 -07:00
parent 0fccc1596d
commit 7040b478b3
4 changed files with 10 additions and 3 deletions

View File

@ -9,6 +9,7 @@ Bugfixes:
- GB Video: Fix video frames getting missed when LCDC is off - GB Video: Fix video frames getting missed when LCDC is off
- LR35902: Fix events running with the wrong cycle active - LR35902: Fix events running with the wrong cycle active
- GB Video: Clear screen when LCDC is off - GB Video: Clear screen when LCDC is off
- GBA Cheats: Fix key-activated CodeBreaker cheats
Misc: Misc:
- All: Only update version info if needed - All: Only update version info if needed
- FFmpeg: Encoding cleanup - FFmpeg: Encoding cleanup

View File

@ -349,6 +349,11 @@ void mCheatRefresh(struct mCheatDevice* device, struct mCheatSet* cheats) {
conditionRemaining = cheat->repeat; conditionRemaining = cheat->repeat;
negativeConditionRemaining = cheat->negativeRepeat; negativeConditionRemaining = cheat->negativeRepeat;
break; break;
case CHEAT_IF_NAND:
condition = !(_readMem(device->p, address, cheat->width) & operand);
conditionRemaining = cheat->repeat;
negativeConditionRemaining = cheat->negativeRepeat;
break;
} }
if (performAssignment) { if (performAssignment) {

View File

@ -27,7 +27,8 @@ enum mCheatType {
CHEAT_IF_ULT, CHEAT_IF_ULT,
CHEAT_IF_UGT, CHEAT_IF_UGT,
CHEAT_IF_AND, CHEAT_IF_AND,
CHEAT_IF_LAND CHEAT_IF_LAND,
CHEAT_IF_NAND
}; };
struct mCheat { struct mCheat {

View File

@ -276,9 +276,9 @@ bool GBACheatAddCodeBreaker(struct GBACheatSet* cheats, uint32_t op1, uint16_t o
switch (op1 & 0x0FFFFFFF) { switch (op1 & 0x0FFFFFFF) {
case 0x20: case 0x20:
cheat = mCheatListAppend(&cheats->d.list); cheat = mCheatListAppend(&cheats->d.list);
cheat->type = CHEAT_IF_AND; cheat->type = CHEAT_IF_NAND;
cheat->width = 2; cheat->width = 2;
cheat->address = BASE_IO | REG_JOYSTAT; cheat->address = BASE_IO | REG_KEYINPUT;
cheat->operand = op2; cheat->operand = op2;
cheat->repeat = 1; cheat->repeat = 1;
return true; return true;