mirror of https://github.com/mgba-emu/mgba.git
GBA Cheats: Fix key-activated CodeBreaker cheats
This commit is contained in:
parent
0fccc1596d
commit
7040b478b3
1
CHANGES
1
CHANGES
|
@ -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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue