diff options
| author | Peter Fors <peter.fors@mindkiller.com> | 2025-05-29 19:19:59 +0200 |
|---|---|---|
| committer | Peter Fors <peter.fors@mindkiller.com> | 2025-05-29 19:19:59 +0200 |
| commit | 3d70e69f6c9fbdcb890c6986096330e4f6611a32 (patch) | |
| tree | 9f1ce34365ec376f10f6c6e68c1ca64fa4d4d63d /mappers | |
| parent | 7cca3bdbec289328b537c8256b43dcfedc5d56b8 (diff) | |
added mapper_tick() functionality, regressed 200fps, and optimized it back up to ~1940fps
Diffstat (limited to 'mappers')
| -rw-r--r-- | mappers/mapper_002_2.c | 9 | ||||
| -rw-r--r-- | mappers/mapper_066_0.c | 16 |
2 files changed, 8 insertions, 17 deletions
diff --git a/mappers/mapper_002_2.c b/mappers/mapper_002_2.c index e6cddf7..d3df77d 100644 --- a/mappers/mapper_002_2.c +++ b/mappers/mapper_002_2.c @@ -4,11 +4,10 @@ __attribute__((section(".mapper_002_2"))) static uint8_t mapper_002_2_prg_rom_read(struct nes_state *state, uint32_t addr) { struct mapper_002_2 *mapper = &state->mapper_data.m002_2; - - if(addr >= 0x8000 && addr < 0xc000) { + if(addr < 0xc000) { return mapper->prg_bank0[addr & 0x3fff]; - } else if(addr >= 0xc000) { + } else { return mapper->prg_bank1[addr & 0x3fff]; } return 0; @@ -18,9 +17,7 @@ __attribute__((section(".mapper_002_2"))) static void mapper_002_2_prg_rom_write(struct nes_state *state, uint32_t addr, uint8_t value) { struct mapper_002_2 *mapper = &state->mapper_data.m002_2; - if(addr >= 0x8000) { - mapper->prg_bank0 = state->prg_rom + ((value & 0x0f) * 0x4000); - } + mapper->prg_bank0 = state->prg_rom + ((value & 0x0f) * 0x4000); } __attribute__((section(".mapper_002_2"))) diff --git a/mappers/mapper_066_0.c b/mappers/mapper_066_0.c index ccd00fe..bd4c124 100644 --- a/mappers/mapper_066_0.c +++ b/mappers/mapper_066_0.c @@ -3,23 +3,18 @@ __attribute__((section(".mapper_066_0"))) static uint8_t mapper_066_0_prg_rom_read(struct nes_state *state, uint32_t addr) { struct mapper_066_0 *mapper = &state->mapper_data.m066_0; - if(addr >= 0x8000) { - return state->prg_rom[addr & 0x7fff]; - } - return 0; + return mapper->prg_offset[addr & 0x7fff]; } __attribute__((section(".mapper_066_0"))) static void mapper_066_0_prg_rom_write(struct nes_state *state, uint32_t addr, uint8_t value) { struct mapper_066_0 *mapper = &state->mapper_data.m066_0; - if(addr >= 0x8000) { - uint32_t prg_bank = (value >> 4) & 3; - uint32_t chr_bank = (value >> 0) & 3; + uint32_t prg_bank = (value >> 4) & 3; + uint32_t chr_bank = (value >> 0) & 3; - mapper->prg_offset = state->prg_rom + (prg_bank * 0x8000); - mapper->chr_offset = state->chr_rom + (chr_bank * 0x2000); - } + mapper->prg_offset = state->prg_rom + (prg_bank * 0x8000); + mapper->chr_offset = state->chr_rom + (chr_bank * 0x2000); } __attribute__((section(".mapper_066_0"))) @@ -39,4 +34,3 @@ static void mapper_066_0_init(struct nes_state *state) { state->mapper_function.prg_rom_write = mapper_066_0_prg_rom_write; state->mapper_function.chr_read = mapper_066_0_chr_read; } - |
