mirror of https://github.com/mgba-emu/mgba.git
GBA: Fix non-USA 1.0 FireRed misdetecting as a ROM hack (fixes #2100)
This commit is contained in:
parent
e25d595892
commit
0cde0fcc19
2
CHANGES
2
CHANGES
|
@ -4,7 +4,7 @@ Emulation fixes:
|
||||||
- GB Serialize: Fix switching speed modes when loading a state (fixes mgba.io/i/2097)
|
- GB Serialize: Fix switching speed modes when loading a state (fixes mgba.io/i/2097)
|
||||||
- GBA Memory: Fix loading Thumb savestates when in ARM mode
|
- GBA Memory: Fix loading Thumb savestates when in ARM mode
|
||||||
Other fixes:
|
Other fixes:
|
||||||
- GBA: Fix FireRed revision misdetecting as a ROM hack
|
- GBA: Fix non-USA 1.0 FireRed misdetecting as a ROM hack (fixes mgba.io/i/2100)
|
||||||
- GBA: Fix crash when ROM loading fails
|
- GBA: Fix crash when ROM loading fails
|
||||||
Misc:
|
Misc:
|
||||||
- Qt: Add ROM filename and size to bug reporter
|
- Qt: Add ROM filename and size to bug reporter
|
||||||
|
|
|
@ -375,9 +375,30 @@ void GBAOverrideApplyDefaults(struct GBA* gba, const struct Configuration* overr
|
||||||
if (cart) {
|
if (cart) {
|
||||||
memcpy(override.id, &cart->id, sizeof(override.id));
|
memcpy(override.id, &cart->id, sizeof(override.id));
|
||||||
|
|
||||||
if (!strncmp("pokemon red version", &((const char*) gba->memory.rom)[0x108], 20) &&
|
static const uint32_t pokemonTable[] = {
|
||||||
gba->romCrc32 != 0xDD88761C && gba->romCrc32 != 0x84EE4776) {
|
// FireRed
|
||||||
// Enable FLASH1M and RTC on Pokémon FireRed ROM hacks
|
0x1A81EEDF, // BPRD
|
||||||
|
0x3B2056E9, // BPRJ
|
||||||
|
0x5DC668F6, // BPRF
|
||||||
|
0x73A72167, // BPRI
|
||||||
|
0x84EE4776, // BPRE rev 1
|
||||||
|
0x9F08064E, // BPRS
|
||||||
|
0xBB640DF7, // BPRJ rev 1
|
||||||
|
0xDD88761C, // BPRE
|
||||||
|
};
|
||||||
|
|
||||||
|
bool isPokemon = false;
|
||||||
|
isPokemon = isPokemon || !strncmp("pokemon red version", &((const char*) gba->memory.rom)[0x108], 20);
|
||||||
|
bool isKnownPokemon = false;
|
||||||
|
if (isPokemon) {
|
||||||
|
size_t i;
|
||||||
|
for (i = 0; !isKnownPokemon && i < sizeof(pokemonTable) / sizeof(*pokemonTable); ++i) {
|
||||||
|
isKnownPokemon = gba->romCrc32 == pokemonTable[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isPokemon && !isKnownPokemon) {
|
||||||
|
// Enable FLASH1M and RTC on Pokémon ROM hacks
|
||||||
override.savetype = SAVEDATA_FLASH1M;
|
override.savetype = SAVEDATA_FLASH1M;
|
||||||
override.hardware = HW_RTC;
|
override.hardware = HW_RTC;
|
||||||
override.vbaBugCompat = true;
|
override.vbaBugCompat = true;
|
||||||
|
|
Loading…
Reference in New Issue