From c9bd7fecdb5d6c8954cf31efef910ed734386c70 Mon Sep 17 00:00:00 2001 From: Peter Fors Date: Tue, 8 Apr 2025 13:42:13 +0200 Subject: 2690fps --- ppu.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'ppu.c') diff --git a/ppu.c b/ppu.c index cef45fa..bab97d5 100644 --- a/ppu.c +++ b/ppu.c @@ -22,8 +22,8 @@ static inline void ppu_evaluate_sprites(struct nes_state *state) { uint8_t sprite_height = (ppu->reg_ctrl & 0x20) ? 16 : 8; uint8_t n = 0; - uint8_t *src = ppu->oam; - uint8_t *dst = ppu->secondary_oam; + uint8_t * restrict src = ppu->oam; + uint8_t * restrict dst = ppu->secondary_oam; for(uint8_t i = 0; i < 64; i++) { uint8_t y = src[0]; int32_t row = (int32_t)ppu->scanline - y; @@ -55,8 +55,10 @@ static inline void ppu_fetch_sprite_patterns(struct nes_state *state) { struct ppu_state *restrict ppu = &state->ppu; uint32_t addr; uint32_t bank; + uint8_t lsb; + uint8_t msb; - uint8_t *s = ppu->secondary_oam; + uint8_t * restrict s = ppu->secondary_oam; uint8_t height = (ppu->reg_ctrl & 0x20) ? 16 : 8; for(uint8_t i = 0; i < ppu->sprite_count; i++) { @@ -77,12 +79,12 @@ static inline void ppu_fetch_sprite_patterns(struct nes_state *state) { } addr = bank + tile * 16 + row; - uint8_t lsb = state->mapper.chr_read(state, addr); - uint8_t msb = state->mapper.chr_read(state, addr + 8); - if(attr & 0x40) { - lsb = ppu_bitreverse_lut[lsb]; - msb = ppu_bitreverse_lut[msb]; + lsb = ppu_bitreverse_lut[state->mapper.chr_read(state, addr)]; + msb = ppu_bitreverse_lut[state->mapper.chr_read(state, addr + 8)]; + } else { + lsb = state->mapper.chr_read(state, addr); + msb = state->mapper.chr_read(state, addr + 8); } ppu->sprite_shift_lo[i] = lsb; -- cgit v1.2.3