diff options
Diffstat (limited to 'ppu.c')
| -rw-r--r-- | ppu.c | 15 |
1 files changed, 7 insertions, 8 deletions
@@ -155,19 +155,18 @@ static inline void ppu_render_pixel(struct nes_state *state) { } // Final pixel composition - uint8_t palette_index = 0; uint8_t bg_index = (bg_palette << 2) + bg_pixel; uint8_t sp_index = (sp_palette << 2) + sp_pixel; uint8_t selector = (bg_pixel ? 2 : 0) | (sp_pixel ? 1 : 0); + // uint8_t palette_index; + uint8_t palette_index = (sp_prio) ? bg_index : 0x10 | sp_index; + switch(selector) { - case 0: { palette_index = 0; } break; - case 1: { palette_index = 0x10 | sp_index; } break; - case 2: { palette_index = bg_index; } break; - case 3: { - ppu->reg_status |= (sp_zero && x < 255) ? 0x40 : 0; // NOTE(peter): Sprite zero hit! - palette_index = (sp_prio) ? bg_index : 0x10 | sp_index; - } break; + case 0: { palette_index = 0; } break; + case 1: { palette_index = 0x10 | sp_index; } break; + case 2: { palette_index = bg_index; } break; + case 3: { ppu->reg_status |= (sp_zero && x < 255) ? 0x40 : 0; } break; // NOTE(peter): Sprite zero hit! } state->pixels[y * 256 + x] = ppu->palette[palette_index]; // NOTE(peter): Add color_emphasis bits (expand palette to 8x). |
