summaryrefslogtreecommitdiff
path: root/mapper_0042.c
diff options
context:
space:
mode:
authorPeter Fors <peter.fors@mindkiller.com>2025-04-05 08:58:12 +0200
committerPeter Fors <peter.fors@mindkiller.com>2025-04-05 08:58:12 +0200
commitf1bd6a7d2f4ffe3e5263e0254bcf7522ab381264 (patch)
treee75bde292329f337d619f9a997aab9b17c37e38b /mapper_0042.c
parent8c82be43720d9e221a9e2541c9ff6151015838bb (diff)
transform to switch case for ppu_tick()
Diffstat (limited to 'mapper_0042.c')
-rw-r--r--mapper_0042.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/mapper_0042.c b/mapper_0042.c
new file mode 100644
index 0000000..4cf4c86
--- /dev/null
+++ b/mapper_0042.c
@@ -0,0 +1,30 @@
+
+static void mapper_0042_init(struct nes_state *state) {
+ state->map.m0042.prg_offset = 0;
+ state->map.m0042.chr_offset = 0;
+}
+
+static uint8_t mapper_0042_prg_read(struct nes_state *state, uint32_t addr) {
+ if(addr >= 0x8000) {
+ uint32_t base = state->map.m0042.prg_offset;
+ return state->prg_rom[base + (addr - 0x8000)];
+ }
+ return 0;
+}
+
+static void mapper_0042_prg_write(struct nes_state *state, uint32_t addr, uint8_t value) {
+ if(addr >= 0x8000) {
+ uint32_t prg_bank = (value >> 4) & 3;
+ uint32_t chr_bank = (value >> 0) & 3;
+
+ state->map.m0042.prg_offset = prg_bank * 0x8000;
+ state->map.m0042.chr_offset = chr_bank * 0x2000;
+ }
+}
+
+static uint8_t mapper_0042_chr_read(struct nes_state *state, uint32_t addr) {
+ return state->chr_rom[state->map.m0042.chr_offset + addr];
+}
+
+static void mapper_0042_chr_write(struct nes_state *state, uint32_t addr, uint8_t value) {
+}