MMC3: Added Aladdin (Super Game) to DB as MMC3A (game crashes with MMC3C IRQ behavior)

This commit is contained in:
Souryo 2016-07-30 19:35:28 -04:00
parent 5f59dc1a7f
commit f2091d1175
3 changed files with 675 additions and 664 deletions

View file

@ -223,8 +223,12 @@ void GameDatabase::SetGameInfo(uint32_t romCrc, RomData &romData, bool updateRom
MessageManager::Log("[DB] Mapper: " + std::to_string(info.MapperID) + " Sub: " + std::to_string(GetSubMapper(info)));
MessageManager::Log("[DB] System : " + info.System);
MessageManager::Log("[DB] Board: " + info.Board);
MessageManager::Log("[DB] Chip: " + info.Chip);
if(!info.Board.empty()) {
MessageManager::Log("[DB] Board: " + info.Board);
}
if(!info.Chip.empty()) {
MessageManager::Log("[DB] Chip: " + info.Chip);
}
if(!info.Mirroring.empty()) {
MessageManager::Log("[DB] Mirroring: " + string(info.Mirroring.compare("h") == 0 ? "Horizontal" : "Vertical"));

View file

@ -31,6 +31,8 @@ class MMC3 : public BaseMapper
uint32_t _cyclesDown;
bool _needIrq;
bool _forceMmc3RevAIrqs;
struct {
uint8_t Reg8000;
uint8_t RegA000;
@ -83,7 +85,7 @@ class MMC3 : public BaseMapper
return _chrMode;
}
virtual bool ForceMmc3RevAIrqs() { return false; }
virtual bool ForceMmc3RevAIrqs() { return _forceMmc3RevAIrqs; }
virtual void UpdateMirroring()
{
@ -189,6 +191,10 @@ class MMC3 : public BaseMapper
virtual void InitMapper()
{
//Force MMC3A irqs for boards that are known to use the A revision.
//Some MMC3B boards also have the A behavior, but currently no way to tell them apart.
_forceMmc3RevAIrqs = _databaseInfo.Chip.substr(0, 5).compare("MMC3A") == 0;
Reset();
SetCpuMemoryMapping(0x6000, 0x7FFF, 0, HasBattery() ? PrgMemoryType::SaveRam : PrgMemoryType::WorkRam);
UpdateState();

File diff suppressed because it is too large Load diff