mirror of
https://github.com/libretro/Mesen.git
synced 2025-02-03 07:11:58 +00:00
Mapper 14: Fixed some CHR banking issues
This commit is contained in:
parent
2929a7c738
commit
c07a995df4
@ -29,20 +29,20 @@ protected:
|
||||
Stream(_mode, _vrcMirroring, prgRegs, chrRegs);
|
||||
}
|
||||
|
||||
virtual void SelectCHRPage(uint16_t slot, uint16_t page, ChrMemoryType memoryType = ChrMemoryType::Default) override
|
||||
void UpdateChrMapping() override
|
||||
{
|
||||
if(_mode & 0x02) {
|
||||
if(slot <= 3) {
|
||||
if(!_chrMode && (_mode & 0x80) || _chrMode && slot <= 1 && (_mode & 0x20) || _chrMode && slot >= 2 && (_mode & 0x08)) {
|
||||
page |= 0x100;
|
||||
}
|
||||
} else {
|
||||
if(_chrMode && (_mode & 0x80) || !_chrMode && slot <= 5 && (_mode & 0x20) || !_chrMode && slot >= 6 && (_mode & 0x08)) {
|
||||
page |= 0x100;
|
||||
}
|
||||
}
|
||||
}
|
||||
MMC3::SelectCHRPage(slot, page, memoryType);
|
||||
int slotSwap = (GetState().Reg8000 & 0x80) ? 4 : 0;
|
||||
int outerBank0 = (_mode & 0x08) ? 0x100 : 0;
|
||||
int outerBank1 = (_mode & 0x20) ? 0x100 : 0;
|
||||
int outerBank2 = (_mode & 0x80) ? 0x100 : 0;
|
||||
SelectCHRPage(0 ^ slotSwap, outerBank0 | (_registers[0] & (~1)));
|
||||
SelectCHRPage(1 ^ slotSwap, outerBank0 | _registers[0] | 1);
|
||||
SelectCHRPage(2 ^ slotSwap, outerBank0 | (_registers[1] & (~1)));
|
||||
SelectCHRPage(3 ^ slotSwap, outerBank0 | _registers[1] | 1);
|
||||
SelectCHRPage(4 ^ slotSwap, outerBank1 | _registers[2]);
|
||||
SelectCHRPage(5 ^ slotSwap, outerBank1 | _registers[3]);
|
||||
SelectCHRPage(6 ^ slotSwap, outerBank2 | _registers[4]);
|
||||
SelectCHRPage(7 ^ slotSwap, outerBank2 | _registers[5]);
|
||||
}
|
||||
|
||||
void UpdateVrcState()
|
||||
|
Loading…
x
Reference in New Issue
Block a user