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_mapper.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'mknes_mapper.c') diff --git a/mknes_mapper.c b/mknes_mapper.c index 4202769..a05707e 100644 --- a/mknes_mapper.c +++ b/mknes_mapper.c @@ -7,19 +7,16 @@ static uint8_t mapper_default_ciram_read(struct nes_state *state, uint32_t addr) { - if(state->ines.mirroring == MIRROR_HORIZONTAL) { // Horizontal: NT0↔NT1, NT2↔NT3 - addr = ((addr >> 1) & 0x400) | (addr & 0x3ff); - } else { // Vertical (default fallback): NT0↔NT2, NT1↔NT3 - addr = addr & 0x7ff; + if(state->ines.mirroring == MIRROR_HORIZONTAL) { + return state->ciram[((addr >> 1) & 0x400) | (addr & 0x3ff)]; } - - return state->ciram[addr]; + return state->ciram[addr & 0x7ff]; } static void mapper_default_ciram_write(struct nes_state *state, uint32_t addr, uint8_t value) { - if(state->ines.mirroring == MIRROR_HORIZONTAL) { // Horizontal: NT0↔NT1, NT2↔NT3 + if(state->ines.mirroring == MIRROR_HORIZONTAL) { // Horizontal: NT0+NT1, NT2+NT3 addr = ((addr >> 1) & 0x400) | (addr & 0x3ff); - } else { // Vertical (default fallback): NT0↔NT2, NT1↔NT3 + } else { // Vertical (default fallback): NT0+NT2, NT1+NT3 addr = addr & 0x7ff; } state->ciram[addr] = value; -- cgit v1.2.3