diff --git a/core/hw/naomi/naomi_cart.cpp b/core/hw/naomi/naomi_cart.cpp index ab9b128b3..62ddbaac9 100644 --- a/core/hw/naomi/naomi_cart.cpp +++ b/core/hw/naomi/naomi_cart.cpp @@ -1083,6 +1083,18 @@ u16 M2Cartridge::ReadCipheredData(u32 offset) } +std::string M2Cartridge::GetGameId() +{ + std::string game_id = NaomiCartridge::GetGameId(); + if ((game_id.size() < 2 || (game_id[0] == -1 && game_id[1] == -1)) && RomSize >= 0x800050) + { + game_id = std::string((char *)RomPtr + 0x800030, 0x20); + while (!game_id.empty() && game_id.back() == ' ') + game_id.pop_back(); + } + return game_id; +} + void M2Cartridge::Serialize(void** data, unsigned int* total_size) { REICAST_S(naomi_cart_ram); NaomiCartridge::Serialize(data, total_size); diff --git a/core/hw/naomi/naomi_cart.h b/core/hw/naomi/naomi_cart.h index 19f4314ff..d8cd99690 100644 --- a/core/hw/naomi/naomi_cart.h +++ b/core/hw/naomi/naomi_cart.h @@ -72,6 +72,7 @@ public: virtual void Serialize(void** data, unsigned int* total_size) override; virtual void Unserialize(void** data, unsigned int* total_size) override; virtual void* GetDmaPtr(u32& size) override; + virtual std::string GetGameId(); private: u8 naomi_cart_ram[64 * 1024];