diff --git a/Core/Ppu.cpp b/Core/Ppu.cpp index 554f7e3..32fa9fb 100644 --- a/Core/Ppu.cpp +++ b/Core/Ppu.cpp @@ -183,7 +183,7 @@ void Ppu::Write(uint32_t addr, uint8_t value) //VMDATAL - VRAM Data Write low byte _vram[_vramAddress << 1] = value; if(!_vramAddrIncrementOnSecondReg) { - _vramAddress += _vramIncrementValue; + _vramAddress = (_vramIncrementValue + _vramIncrementValue) & 0x7FFF; } break; @@ -191,7 +191,7 @@ void Ppu::Write(uint32_t addr, uint8_t value) //VMDATAH - VRAM Data Write high byte _vram[(_vramAddress << 1) + 1] = value; if(_vramAddrIncrementOnSecondReg) { - _vramAddress += _vramIncrementValue; + _vramAddress = (_vramIncrementValue + _vramIncrementValue) & 0x7FFF; } break; @@ -203,7 +203,7 @@ void Ppu::Write(uint32_t addr, uint8_t value) case 0x2122: //CGRAM Data write (CGDATA) _cgram[_cgramAddress] = value; - _cgramAddress++; + _cgramAddress = (_cgramAddress + 1) & (Ppu::CgRamSize - 1); break; case 0x4200: