From 4264779b2660f2ab7445b7ef567c12490ddba4eb Mon Sep 17 00:00:00 2001 From: Sour Date: Tue, 19 Feb 2019 22:44:05 -0500 Subject: [PATCH] PPU: Fixed palette selection for BG2/3/4 in mode 0 --- Core/Ppu.cpp | 16 ++++++++-------- Core/Ppu.h | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Core/Ppu.cpp b/Core/Ppu.cpp index 794fbd8..de47f30 100644 --- a/Core/Ppu.cpp +++ b/Core/Ppu.cpp @@ -170,16 +170,16 @@ void Ppu::RenderScanline() case 0: DrawSprites<3, true>(); RenderTilemap<0, 2, true, true>(); - RenderTilemap<1, 2, true, true>(); + RenderTilemap<1, 2, true, true, 64>(); DrawSprites<2, true>(); RenderTilemap<0, 2, false, true>(); - RenderTilemap<1, 2, false, true>(); + RenderTilemap<1, 2, false, true, 64>(); DrawSprites<1, true>(); - RenderTilemap<2, 2, true, true>(); - RenderTilemap<3, 2, true, true>(); + RenderTilemap<2, 2, true, true, 128>(); + RenderTilemap<3, 2, true, true, 192>(); DrawSprites<0, true>(); - RenderTilemap<2, 2, false, true>(); - RenderTilemap<3, 2, false, true>(); + RenderTilemap<2, 2, false, true, 128>(); + RenderTilemap<3, 2, false, true, 192>(); RenderBgColor(); break; @@ -372,7 +372,7 @@ void Ppu::RenderBgColor() } } -template +template void Ppu::RenderTilemap() { if(forMainScreen) { @@ -431,7 +431,7 @@ void Ppu::RenderTilemap() } if(color > 0) { - uint16_t paletteRamOffset = (palette * (1 << bpp) + color) * 2; + uint16_t paletteRamOffset = basePaletteOffset + (palette * (1 << bpp) + color) * 2; uint16_t paletteColor = _cgram[paletteRamOffset] | (_cgram[paletteRamOffset + 1] << 8); if(forMainScreen) { diff --git a/Core/Ppu.h b/Core/Ppu.h index 68e017a..91d1b7c 100644 --- a/Core/Ppu.h +++ b/Core/Ppu.h @@ -86,7 +86,7 @@ private: template void RenderBgColor(); - template + template void RenderTilemap(); template