summaryrefslogtreecommitdiff
path: root/ppu_registers.c
diff options
context:
space:
mode:
authorPeter Fors <peter.fors@mindkiller.com>2025-05-29 19:19:59 +0200
committerPeter Fors <peter.fors@mindkiller.com>2025-05-29 19:19:59 +0200
commit3d70e69f6c9fbdcb890c6986096330e4f6611a32 (patch)
tree9f1ce34365ec376f10f6c6e68c1ca64fa4d4d63d /ppu_registers.c
parent7cca3bdbec289328b537c8256b43dcfedc5d56b8 (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.c16
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);