diff options
| author | Peter Fors <peter.fors@mindkiller.com> | 2025-11-02 09:16:03 +0100 |
|---|---|---|
| committer | Peter Fors <peter.fors@mindkiller.com> | 2025-11-02 09:16:03 +0100 |
| commit | ed41715142f419021ed8fef5522ea1f363f16441 (patch) | |
| tree | 9cf0049db6ac5b0da5552bba9e0376b82eaeb2b4 /mappers/mapper_011_0.c | |
| parent | e137c881d835703d1030746cd7262899de7169c6 (diff) | |
fix multiple mappers
Diffstat (limited to 'mappers/mapper_011_0.c')
| -rw-r--r-- | mappers/mapper_011_0.c | 16 |
1 files changed, 5 insertions, 11 deletions
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; |
