GB MBC: Improve Wisdom Tree heuristic
This commit is contained in:
parent
773e0d26ff
commit
9fa7767ed9
13
src/gb/mbc.c
13
src/gb/mbc.c
@ -120,8 +120,8 @@ static bool _isMulticart(const uint8_t* mem) {
|
|||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool _isWisdomTree(const uint8_t* mem) {
|
static bool _isWisdomTree(const uint8_t* mem, size_t size) {
|
||||||
int i;
|
size_t i;
|
||||||
for (i = 0x134; i < 0x14C; i += 4) {
|
for (i = 0x134; i < 0x14C; i += 4) {
|
||||||
if (*(uint32_t*) &mem[i] != 0) {
|
if (*(uint32_t*) &mem[i] != 0) {
|
||||||
return false;
|
return false;
|
||||||
@ -135,7 +135,12 @@ static bool _isWisdomTree(const uint8_t* mem) {
|
|||||||
if (mem[0x14D] != 0xE7) {
|
if (mem[0x14D] != 0xE7) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
for (i = 0x300; i < size - 11; ++i) {
|
||||||
|
if (memcmp(&mem[i], "WISDOM", 6) == 0 && memcmp(&mem[i + 7], "TREE", 4) == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GBMBCSwitchSramBank(struct GB* gb, int bank) {
|
void GBMBCSwitchSramBank(struct GB* gb, int bank) {
|
||||||
@ -199,7 +204,7 @@ void GBMBCInit(struct GB* gb) {
|
|||||||
if (gb->memory.mbcType == GB_MBC_AUTODETECT) {
|
if (gb->memory.mbcType == GB_MBC_AUTODETECT) {
|
||||||
switch (cart->type) {
|
switch (cart->type) {
|
||||||
case 0:
|
case 0:
|
||||||
if (_isWisdomTree(gb->memory.rom)) {
|
if (_isWisdomTree(gb->memory.rom, gb->memory.romSize)) {
|
||||||
gb->memory.mbcType = GB_UNL_WISDOM_TREE;
|
gb->memory.mbcType = GB_UNL_WISDOM_TREE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user