diff options
| author | Peter Fors <peter.fors@mindkiller.com> | 2025-05-29 19:19:59 +0200 |
|---|---|---|
| committer | Peter Fors <peter.fors@mindkiller.com> | 2025-05-29 19:19:59 +0200 |
| commit | 3d70e69f6c9fbdcb890c6986096330e4f6611a32 (patch) | |
| tree | 9f1ce34365ec376f10f6c6e68c1ca64fa4d4d63d /ppu_registers.c | |
| parent | 7cca3bdbec289328b537c8256b43dcfedc5d56b8 (diff) | |
added mapper_tick() functionality, regressed 200fps, and optimized it back up to ~1940fps
Diffstat (limited to 'ppu_registers.c')
| -rw-r--r-- | ppu_registers.c | 16 |
1 files changed, 8 insertions, 8 deletions
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); |
