From d775a7a63d9df0bd5573524b6a40a65316ffd942 Mon Sep 17 00:00:00 2001 From: Isaac Marovitz Date: Tue, 30 Apr 2024 22:02:08 -0400 Subject: [PATCH] Fix CGB Sprite Palettes --- src/components/ppu.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/ppu.rs b/src/components/ppu.rs index f2302c6..89e3b5b 100644 --- a/src/components/ppu.rs +++ b/src/components/ppu.rs @@ -403,6 +403,7 @@ impl PPU { let r = self.bcpd[palette_no_1][color][0]; let g = self.bcpd[palette_no_1][color][1]; let b = self.bcpd[palette_no_1][color][2]; + self.set_rgb_mapped(x, r, g, b); } else { let color = if !self.lcdc.contains(LCDC::WINDOW_PRIORITY) { @@ -429,7 +430,7 @@ impl PPU { let py = self.read(sprite_address).wrapping_sub(16); let px = self.read(sprite_address + 1).wrapping_sub(8); let tile_number = self.read(sprite_address + 2) & if self.lcdc.contains(LCDC::OBJ_SIZE) { 0xFE } else { 0xFF }; - let tile_attributes = Attributes::from_bits_truncate(self.read(sprite_address + 3)); + let tile_attributes = Attributes::from_bits_retain(self.read(sprite_address + 3)); if py <= 0xFF - sprite_size + 1 { if self.ly < py || self.ly > py + sprite_size - 1 { @@ -512,6 +513,7 @@ impl PPU { let r = self.ocpd[palette_no_1][color][0]; let g = self.ocpd[palette_no_1][color][1]; let b = self.ocpd[palette_no_1][color][2]; + self.set_rgb_mapped(px.wrapping_add(x) as usize, r, g, b); } else { let color = if tile_attributes.contains(Attributes::PALETTE_NO_0) {