From 3d70e69f6c9fbdcb890c6986096330e4f6611a32 Mon Sep 17 00:00:00 2001 From: Peter Fors Date: Thu, 29 May 2025 19:19:59 +0200 Subject: added mapper_tick() functionality, regressed 200fps, and optimized it back up to ~1940fps --- ppu_registers.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'ppu_registers.c') diff --git a/ppu_registers.c b/ppu_registers.c index 0e67890..6217908 100644 --- a/ppu_registers.c +++ b/ppu_registers.c @@ -1,10 +1,10 @@ -__attribute__((hot)) +__attribute__((hot, flatten)) static inline void ppu_write(struct nes_state *state, uint32_t offset, uint8_t value) { struct ppu_state *ppu = &state->ppu; uint32_t reg = offset & 0x7; - if(LIKELY(reg == 4)) { + if(reg == 4) { ppu->oam[ppu->oam_addr++] = value; ppu->open_bus = value; return; @@ -54,7 +54,7 @@ static inline void ppu_write(struct nes_state *state, uint32_t offset, uint8_t v if(addr < 0x2000) { state->mapper_function.chr_write(state, addr, value); - } else if(LIKELY(addr < 0x3f00)) { + } else if(addr < 0x3f00) { state->mapper_function.ciram_write(state, addr, value); } else if(addr < 0x4000) { @@ -70,21 +70,21 @@ static inline void ppu_write(struct nes_state *state, uint32_t offset, uint8_t v } } -__attribute__((hot)) +__attribute__((hot, flatten)) static inline uint8_t ppu_read(struct nes_state *state, uint32_t offset) { struct ppu_state *ppu = &state->ppu; uint8_t result = ppu->open_bus; uint32_t reg = offset & 0x7; - if(LIKELY(reg == 2)) { + if(reg == 2) { result = ppu->reg_status; ppu->reg_status &= ~0x80; ppu->write_latch = 0; ppu->open_bus = result; return result; - } else if(LIKELY(reg == 4)) { + } else if(reg == 4) { result = ppu->oam[ppu->oam_addr]; ppu->open_bus = result; return result; @@ -92,11 +92,11 @@ static inline uint8_t ppu_read(struct nes_state *state, uint32_t offset) { } else if(reg == 7) { uint32_t addr = ppu->vram_addr; - if(LIKELY(addr < 0x2000)) { + if(addr < 0x2000) { result = ppu->vram_read_buffer; ppu->vram_read_buffer = state->mapper_function.chr_read(state, addr); - } else if(LIKELY(addr < 0x3f00)) { + } else if(addr < 0x3f00) { result = ppu->vram_read_buffer; ppu->vram_read_buffer = state->mapper_function.ciram_read(state, addr); -- cgit v1.2.3