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 --- mappers/mapper_011_0.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) (limited to 'mappers/mapper_011_0.c') diff --git a/mappers/mapper_011_0.c b/mappers/mapper_011_0.c index 12b68ba..6b31f26 100644 --- a/mappers/mapper_011_0.c +++ b/mappers/mapper_011_0.c @@ -1,33 +1,27 @@ static uint8_t mapper_011_0_prg_rom_read(struct nes_state *state, uint32_t addr) { struct mapper_011_0 *mapper = &state->mapper_data.m011_0; - - if(addr >= 0x8000) { - return mapper->prg_rom[addr - 0x8000]; - } - return 0; + return mapper->prg_rom[addr & 0x7fff]; } static void mapper_011_0_prg_rom_write(struct nes_state *state, uint32_t addr, uint8_t value) { struct mapper_011_0 *mapper = &state->mapper_data.m011_0; - if(addr >= 0x8000) { - mapper->prg_rom = state->prg_rom + ((value >> 4) & 7) * 0x8000; - mapper->chr_ptr = state->chr_rom + (value & 0x0F) * 0x2000; - } + mapper->prg_rom = state->prg_rom + (value & 0x3) * 0x8000; + mapper->chr_rom = state->chr_rom + ((value >> 4) & 0x3) * 0x2000; } static uint8_t mapper_011_0_chr_read(struct nes_state *state, uint32_t addr) { struct mapper_011_0 *mapper = &state->mapper_data.m011_0; - return mapper->chr_ptr[addr]; + return mapper->chr_rom[addr]; } static void mapper_011_0_init(struct nes_state *state) { struct mapper_011_0 *mapper = &state->mapper_data.m011_0; mapper->prg_rom = state->prg_rom; - mapper->chr_ptr = state->chr_rom; + mapper->chr_rom = state->chr_rom; state->mapper_function.prg_rom_read = mapper_011_0_prg_rom_read; state->mapper_function.prg_rom_write = mapper_011_0_prg_rom_write; -- cgit v1.2.3