diff --git a/src/sdl_render.c b/src/sdl_render.c index c4cdad9..866c269 100644 --- a/src/sdl_render.c +++ b/src/sdl_render.c @@ -326,8 +326,6 @@ static inline void render_bg_scanline_area( static void render_bg_scanline(const nes_ppu* ppu, int scanline, uint8_t* dst) { - // TODO: Handle column 0 flag - int page = (ppu->control & ppu_Control_Nametable_Mask); int x = ppu->scroll_x; int y = ppu->scroll_y + scanline; @@ -338,8 +336,16 @@ static void render_bg_scanline(const nes_ppu* ppu, int scanline, } int w = (nes_ppu_render_w - x); + if (!(ppu->mask & ppu_Mask_Left_Back)) { + // Handle column 0 flag - need to fill with transparency + memset(dst, 0xFFU, 8); + w -= 8; + x += 8; + dst += 8; + } render_bg_scanline_area(ppu, page, dst, x, y, w); - render_bg_scanline_area(ppu, page ^ 1, dst + w, 0, y, x); + render_bg_scanline_area(ppu, page ^ 1, dst + w, 0, y, + nes_ppu_render_w - w); } /*