diff options
Diffstat (limited to 'memory.c')
| -rw-r--r-- | memory.c | 48 |
1 files changed, 23 insertions, 25 deletions
@@ -13,17 +13,18 @@ static uint8_t memory_read(struct nes_state *restrict state, uint32_t offset) { if(offset < 0x2000) { return state->ram[offset & 0x07ff]; } else if(offset < 0x4000) { - switch(offset & 7) { - case 2: return ppu_read_2002(state); - case 4: return ppu_read_2004(state); - case 7: return ppu_read_2007(state); - default: return 0; - } + return ppu_read(state, offset); + // switch(offset & 7) { + // case 2: return ppu_read_2002(state); + // case 4: return ppu_read_2004(state); + // case 7: return ppu_read_2007(state); + // default: return 0; + // } } else if(offset < 0x4020) { // TODO: APU and I/O reads return 0; } else if(offset >= 0x6000) { - return state->mapper.read(state, offset); + return state->mapper.prg_read(state, offset); } else { return 0; } @@ -40,22 +41,23 @@ static void memory_write(struct nes_state *restrict state, uint32_t offset, uint if(offset < 0x2000) { state->ram[offset & 0x07ff] = value; } else if(offset < 0x4000) { - switch(offset & 7) { - case 0: ppu_write_2000(state, value); break; - case 1: ppu_write_2001(state, value); break; - case 3: ppu_write_2003(state, value); break; - case 4: ppu_write_2004(state, value); break; - case 5: ppu_write_2005(state, value); break; - case 6: ppu_write_2006(state, value); break; - case 7: ppu_write_2007(state, value); break; - default: break; - } + ppu_write(state, offset, value); + // switch(offset & 7) { + // case 0: ppu_write_2000(state, value); break; + // case 1: ppu_write_2001(state, value); break; + // case 3: ppu_write_2003(state, value); break; + // case 4: ppu_write_2004(state, value); break; + // case 5: ppu_write_2005(state, value); break; + // case 6: ppu_write_2006(state, value); break; + // case 7: ppu_write_2007(state, value); break; + // default: break; + // } } else if(offset == 0x4014) { ppu_dma_4014(state, value); } else if(offset < 0x4020) { // TODO: APU and I/O writes } else if(offset >= 0x6000) { - state->mapper.write(state, offset, value); + state->mapper.prg_write(state, offset, value); } } @@ -70,7 +72,7 @@ static uint8_t memory_read_dma(struct nes_state *restrict state, uint32_t offset // APU and I/O — usually ignored or blocked during DMA return 0; } else if(offset >= 0x6000) { - return state->mapper.read(state, offset); + return state->mapper.prg_read(state, offset); } else { return 0; } @@ -83,15 +85,11 @@ static uint8_t memory_read_dummy(struct nes_state *restrict state, uint32_t offs if(offset < 0x2000) { return 0; } else if(offset < 0x4000) { - switch(offset & 7) { - case 2: return ppu_read_2002(state); - case 7: return ppu_read_2007(state); - default: return 0; - } + return ppu_read(state, offset); } else if(offset < 0x4020) { return 0; } else if(offset >= 0x6000) { - return state->mapper.read(state, offset); + return state->mapper.prg_read(state, offset); } else { return 0; } |
