- add DSi Enhanced ROM detection;
- add new country code info (O - USA);
This commit is contained in:
mtabachenko 2013-10-20 16:56:14 +00:00
parent 338077614a
commit de36370a91
2 changed files with 15 additions and 2 deletions

View File

@ -351,12 +351,13 @@ const RomBanner& GameInfo::getRomBanner()
void GameInfo::populate() void GameInfo::populate()
{ {
const char *regions[] = { "JPFSEDIRKHX", const char *regions[] = { "JPFSEODIRKHX",
"JPN", "JPN",
"EUR", "EUR",
"FRA", "FRA",
"ESP", "ESP",
"USA", "USA",
"USA",
"NOE", "NOE",
"ITA", "ITA",
"RUS", "RUS",
@ -431,6 +432,11 @@ void GameInfo::populate()
} }
bool GameInfo::isDSiEnhanced()
{
return ((*(u32*)(romdata + 0x180) == 0x8D898581U) && (*(u32*)(romdata + 0x184) == 0x8C888480U));
}
#ifdef _WINDOWS #ifdef _WINDOWS
static std::vector<char> buffer; static std::vector<char> buffer;
@ -595,12 +601,17 @@ int NDS_LoadROM(const char *filename, const char *physicalName, const char *logi
// 5: DSi? (if set to 1 then DSi Enhanced games send command D6h to Slot1) // 5: DSi? (if set to 1 then DSi Enhanced games send command D6h to Slot1)
// 6: Unknown // 6: Unknown
// 7: ROM speed (Secure Area Block transfer mode (trasfer 8x200h or 1000h bytes) // 7: ROM speed (Secure Area Block transfer mode (trasfer 8x200h or 1000h bytes)
gameInfo.chipID |= (0x00 << 24); // TODO:
//if (gameInfo.isDSiEnhanced())
// gameInfo.chipID |= (0x40 << 24);
gameInfo.chipID |= (0x40 << 24);
INFO("\nROM game code: %c%c%c%c\n", gameInfo.header.gameCode[0], gameInfo.header.gameCode[1], gameInfo.header.gameCode[2], gameInfo.header.gameCode[3]); INFO("\nROM game code: %c%c%c%c\n", gameInfo.header.gameCode[0], gameInfo.header.gameCode[1], gameInfo.header.gameCode[2], gameInfo.header.gameCode[3]);
INFO("ROM crc: %08X\n", gameInfo.crc); INFO("ROM crc: %08X\n", gameInfo.crc);
INFO("ROM serial: %s\n", gameInfo.ROMserial); INFO("ROM serial: %s\n", gameInfo.ROMserial);
INFO("ROM chipID: %08X\n", gameInfo.chipID);
INFO("ROM internal name: %s\n", gameInfo.ROMname); INFO("ROM internal name: %s\n", gameInfo.ROMname);
if (gameInfo.isDSiEnhanced()) INFO("ROM DSi Enhanced\n");
INFO("ROM developer: %s\n", getDeveloperNameByID(gameInfo.header.makerCode).c_str()); INFO("ROM developer: %s\n", getDeveloperNameByID(gameInfo.header.makerCode).c_str());
//crazymax: how would it have got whacked? dont think we need this //crazymax: how would it have got whacked? dont think we need this

View File

@ -376,6 +376,8 @@ struct GameInfo
romdata = new char[allocatedSize]; romdata = new char[allocatedSize];
romsize = size; romsize = size;
} }
bool isDSiEnhanced();
u32 crc; u32 crc;
u32 chipID; u32 chipID;
NDS_header header; NDS_header header;