40 lines
1.1 KiB
C++
40 lines
1.1 KiB
C++
#include <GameDB.hpp>
|
|
#include <Core.hpp>
|
|
|
|
namespace n64 {
|
|
void GameDB::match() {
|
|
n64::Mem& mem = n64::Core::GetInstance().cpu->GetMem();
|
|
const ROM &rom = mem.rom;
|
|
for (const auto &[code, regions, saveType, name] : gamedb) {
|
|
const bool matches_code = code == rom.code;
|
|
bool matches_region = false;
|
|
|
|
for (int j = 0; j < regions.size() && !matches_region; j++) {
|
|
if (regions[j] == rom.header.countryCode[0]) {
|
|
matches_region = true;
|
|
}
|
|
}
|
|
|
|
if (matches_code) {
|
|
if (matches_region) {
|
|
mem.saveType = saveType;
|
|
mem.rom.gameNameDB = name;
|
|
return;
|
|
}
|
|
|
|
warn(
|
|
"Matched code for {}, but not region! Game supposedly exists in regions [{}] but this image has region {}",
|
|
name, regions, rom.header.countryCode[0]);
|
|
mem.saveType = saveType;
|
|
mem.rom.gameNameDB = name;
|
|
return;
|
|
}
|
|
}
|
|
|
|
warn("Did not match any Game DB entries. Code: {} Region: {}", mem.rom.code, mem.rom.header.countryCode[0]);
|
|
|
|
mem.rom.gameNameDB = "";
|
|
mem.saveType = SAVE_NONE;
|
|
}
|
|
} // namespace n64
|