summaryrefslogtreecommitdiff
path: root/mappers/mapper_011_0.c
diff options
context:
space:
mode:
Diffstat (limited to 'mappers/mapper_011_0.c')
-rw-r--r--mappers/mapper_011_0.c16
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;