Mapper 114: Fixed crash in Lion King (Unl)
This commit is contained in:
parent
f25e6f5532
commit
8b3ddfa20d
1 changed files with 34 additions and 37 deletions
|
@ -28,36 +28,29 @@ protected:
|
|||
virtual void UpdatePrgMapping() override
|
||||
{
|
||||
if(_exRegs[0] & 0x80) {
|
||||
SelectPrgPage2x(0, _exRegs[0] & 0x1F);
|
||||
SelectPrgPage2x(1, _exRegs[0] & 0x1F);
|
||||
SelectPrgPage2x(0, (_exRegs[0] & 0x0F) << 1);
|
||||
SelectPrgPage2x(1, (_exRegs[0] & 0x0F) << 1);
|
||||
} else {
|
||||
MMC3::UpdatePrgMapping();
|
||||
}
|
||||
}
|
||||
|
||||
virtual void UpdateMirroring() override
|
||||
{
|
||||
//See $8000 writes below
|
||||
}
|
||||
|
||||
virtual void WriteRegister(uint16_t addr, uint8_t value) override
|
||||
{
|
||||
switch(addr & 0xE000) {
|
||||
case 0x4000: case 0x6000:
|
||||
if((addr & 0x07) == 0x00) {
|
||||
if(addr < 0x8000) {
|
||||
_exRegs[0] = value;
|
||||
UpdatePrgMapping();
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x8000:
|
||||
SetMirroringType(value & 0x01 ? MirroringType::Horizontal : MirroringType::Vertical);
|
||||
break;
|
||||
} else {
|
||||
switch(addr & 0xE001) {
|
||||
case 0x8001: MMC3::WriteRegister(0xA000, value); break;
|
||||
|
||||
case 0xA000:
|
||||
value = (value & 0xC0) | _security[value & 0x07];
|
||||
MMC3::WriteRegister(0x8000, (value & 0xC0) | _security[value & 0x07]);
|
||||
_exRegs[1] = 1;
|
||||
MMC3::WriteRegister(0x8000, value);
|
||||
break;
|
||||
|
||||
case 0xA001:
|
||||
_irqReloadValue = value;
|
||||
break;
|
||||
|
||||
case 0xC000:
|
||||
|
@ -67,15 +60,19 @@ protected:
|
|||
}
|
||||
break;
|
||||
|
||||
case 0xC001:
|
||||
_irqReload = true;
|
||||
break;
|
||||
|
||||
case 0xE000:
|
||||
if(value > 0) {
|
||||
MMC3::WriteRegister(0xE001, value);
|
||||
MMC3::WriteRegister(0xC000, value);
|
||||
MMC3::WriteRegister(0xC001, value);
|
||||
} else {
|
||||
MMC3::WriteRegister(0xE000, value);
|
||||
}
|
||||
_console->GetCpu()->ClearIrqSource(IRQSource::External);
|
||||
_irqEnabled = false;
|
||||
break;
|
||||
|
||||
case 0xE001:
|
||||
_irqEnabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
Loading…
Add table
Reference in a new issue