From ed41715142f419021ed8fef5522ea1f363f16441 Mon Sep 17 00:00:00 2001 From: Peter Fors Date: Sun, 2 Nov 2025 09:16:03 +0100 Subject: fix multiple mappers --- mknes_ppu_registers.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'mknes_ppu_registers.c') diff --git a/mknes_ppu_registers.c b/mknes_ppu_registers.c index 6720958..0defd0c 100644 --- a/mknes_ppu_registers.c +++ b/mknes_ppu_registers.c @@ -47,11 +47,13 @@ static inline void ppu_write(struct nes_state *state, uint32_t offset, uint8_t v case 7: { uint32_t addr = ppu->vram_addr; - if(addr <= 0x1fff) { + if(addr < 0x2000) { state->mapper_function.chr_write(state, addr, value); - } else if(addr >= 0x2000 && addr <= 0x3eff) { + + } else if(addr < 0x3f00) { state->mapper_function.ciram_write(state, addr, value); - } else if(addr >= 0x3f00 && addr <= 0x3fff) { + + } else if(addr < 0x4000) { uint32_t pal_addr = addr & 0x1f; if((pal_addr & 3) == 0) { pal_addr &= ~0x10; @@ -92,13 +94,15 @@ static inline uint8_t ppu_read(struct nes_state *state, uint32_t offset) { case 7: { uint32_t addr = ppu->vram_addr; - if(addr <= 0x1fff) { + if(addr < 0x2000) { result = ppu->vram_read_buffer; ppu->vram_read_buffer = state->mapper_function.chr_read(state, addr); - } else if(addr >= 0x2000 && addr <= 0x3eff) { + + } else if(addr < 0x3f00) { result = ppu->vram_read_buffer; ppu->vram_read_buffer = state->mapper_function.ciram_read(state, addr); - } else if(addr >= 0x3f00 && addr <= 0x3fff) { + + } else if(addr < 0x4000) { uint32_t pal_addr = addr & 0x1f; if((pal_addr & 0x13) == 0x10) { pal_addr &= ~0x10; -- cgit v1.2.3