mirror of https://github.com/mgba-emu/mgba.git
GBA Cheats: Allow multiple ROM patches in the same slot
This commit is contained in:
parent
7026bdaed2
commit
bc90283998
1
CHANGES
1
CHANGES
|
@ -43,6 +43,7 @@ Misc:
|
||||||
- Qt: Add option to disable FPS display
|
- Qt: Add option to disable FPS display
|
||||||
- GBA: Improve multiboot image detection
|
- GBA: Improve multiboot image detection
|
||||||
- GB MBC: Remove erroneous bank 0 wrapping
|
- GB MBC: Remove erroneous bank 0 wrapping
|
||||||
|
- GBA Cheats: Allow multiple ROM patches in the same slot
|
||||||
|
|
||||||
0.6.1: (2017-10-01)
|
0.6.1: (2017-10-01)
|
||||||
Bugfixes:
|
Bugfixes:
|
||||||
|
|
|
@ -140,6 +140,7 @@ static bool _addPAR3Cond(struct GBACheatSet* cheats, uint32_t op1, uint32_t op2)
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool _addPAR3Special(struct GBACheatSet* cheats, uint32_t op2) {
|
static bool _addPAR3Special(struct GBACheatSet* cheats, uint32_t op2) {
|
||||||
|
int romPatch = -1;
|
||||||
struct mCheat* cheat;
|
struct mCheat* cheat;
|
||||||
switch (op2 & 0xFF000000) {
|
switch (op2 & 0xFF000000) {
|
||||||
case PAR3_OTHER_SLOWDOWN:
|
case PAR3_OTHER_SLOWDOWN:
|
||||||
|
@ -179,30 +180,17 @@ static bool _addPAR3Special(struct GBACheatSet* cheats, uint32_t op2) {
|
||||||
cheat->address = _parAddr(op2);
|
cheat->address = _parAddr(op2);
|
||||||
cheats->incompleteCheat = mCheatListIndex(&cheats->d.list, cheat);
|
cheats->incompleteCheat = mCheatListIndex(&cheats->d.list, cheat);
|
||||||
break;
|
break;
|
||||||
// TODO: Fix overriding existing patches
|
|
||||||
case PAR3_OTHER_PATCH_1:
|
case PAR3_OTHER_PATCH_1:
|
||||||
cheats->romPatches[0].address = BASE_CART0 | ((op2 & 0xFFFFFF) << 1);
|
romPatch = 0;
|
||||||
cheats->romPatches[0].applied = false;
|
|
||||||
cheats->romPatches[0].exists = true;
|
|
||||||
cheats->incompletePatch = &cheats->romPatches[0];
|
|
||||||
break;
|
break;
|
||||||
case PAR3_OTHER_PATCH_2:
|
case PAR3_OTHER_PATCH_2:
|
||||||
cheats->romPatches[1].address = BASE_CART0 | ((op2 & 0xFFFFFF) << 1);
|
romPatch = 1;
|
||||||
cheats->romPatches[1].applied = false;
|
|
||||||
cheats->romPatches[1].exists = true;
|
|
||||||
cheats->incompletePatch = &cheats->romPatches[1];
|
|
||||||
break;
|
break;
|
||||||
case PAR3_OTHER_PATCH_3:
|
case PAR3_OTHER_PATCH_3:
|
||||||
cheats->romPatches[2].address = BASE_CART0 | ((op2 & 0xFFFFFF) << 1);
|
romPatch = 2;
|
||||||
cheats->romPatches[2].applied = false;
|
|
||||||
cheats->romPatches[2].exists = true;
|
|
||||||
cheats->incompletePatch = &cheats->romPatches[2];
|
|
||||||
break;
|
break;
|
||||||
case PAR3_OTHER_PATCH_4:
|
case PAR3_OTHER_PATCH_4:
|
||||||
cheats->romPatches[3].address = BASE_CART0 | ((op2 & 0xFFFFFF) << 1);
|
romPatch = 3;
|
||||||
cheats->romPatches[3].applied = false;
|
|
||||||
cheats->romPatches[3].exists = true;
|
|
||||||
cheats->incompletePatch = &cheats->romPatches[3];
|
|
||||||
break;
|
break;
|
||||||
case PAR3_OTHER_ENDIF:
|
case PAR3_OTHER_ENDIF:
|
||||||
if (cheats->currentBlock != COMPLETE) {
|
if (cheats->currentBlock != COMPLETE) {
|
||||||
|
@ -238,6 +226,18 @@ static bool _addPAR3Special(struct GBACheatSet* cheats, uint32_t op2) {
|
||||||
cheats->incompleteCheat = mCheatListIndex(&cheats->d.list, cheat);
|
cheats->incompleteCheat = mCheatListIndex(&cheats->d.list, cheat);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (romPatch >= 0) {
|
||||||
|
while (cheats->romPatches[romPatch].exists) {
|
||||||
|
++romPatch;
|
||||||
|
if (romPatch >= MAX_ROM_PATCHES) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cheats->romPatches[romPatch].address = BASE_CART0 | ((op2 & 0xFFFFFF) << 1);
|
||||||
|
cheats->romPatches[romPatch].applied = false;
|
||||||
|
cheats->romPatches[romPatch].exists = true;
|
||||||
|
cheats->incompletePatch = &cheats->romPatches[romPatch];
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue