Fixed Famicom Yarou Vol 1
This commit is contained in:
parent
bfa68554b0
commit
1aa223275b
1 changed files with 18 additions and 2 deletions
|
@ -12,6 +12,20 @@ protected:
|
||||||
virtual uint16_t RegisterStartAddress() override { return 0x8000; }
|
virtual uint16_t RegisterStartAddress() override { return 0x8000; }
|
||||||
virtual uint16_t RegisterEndAddress() override { return 0xFFFF; }
|
virtual uint16_t RegisterEndAddress() override { return 0xFFFF; }
|
||||||
|
|
||||||
|
virtual void InitMapper() override
|
||||||
|
{
|
||||||
|
MMC3::InitMapper();
|
||||||
|
|
||||||
|
//Needed by Famicom Yarou Vol 1 - Game apparently writes to CHR RAM before initializing the registers
|
||||||
|
_registers[0] = 0;
|
||||||
|
_registers[1] = 2;
|
||||||
|
_registers[2] = 4;
|
||||||
|
_registers[3] = 5;
|
||||||
|
_registers[4] = 6;
|
||||||
|
_registers[5] = 7;
|
||||||
|
UpdateChrMapping();
|
||||||
|
}
|
||||||
|
|
||||||
virtual void StreamState(bool saving) override
|
virtual void StreamState(bool saving) override
|
||||||
{
|
{
|
||||||
MMC3::StreamState(saving);
|
MMC3::StreamState(saving);
|
||||||
|
@ -34,8 +48,10 @@ protected:
|
||||||
|
|
||||||
virtual void SelectCHRPage(uint16_t slot, uint16_t page, ChrMemoryType memoryType = ChrMemoryType::Default) override
|
virtual void SelectCHRPage(uint16_t slot, uint16_t page, ChrMemoryType memoryType = ChrMemoryType::Default) override
|
||||||
{
|
{
|
||||||
page &= 0xFF >> (0x0F - (_reg[2] & 0x0F));
|
if(!HasChrRam()) {
|
||||||
page |= _reg[0] | ((_reg[2] & 0xF0) << 4);
|
page &= 0xFF >> (0x0F - (_reg[2] & 0x0F));
|
||||||
|
page |= _reg[0] | ((_reg[2] & 0xF0) << 4);
|
||||||
|
}
|
||||||
MMC3::SelectCHRPage(slot, page, memoryType);
|
MMC3::SelectCHRPage(slot, page, memoryType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue