board <- { mappernum = 4, // change to 516 after dumping cpu_rom = { size_base = 0x80000, size_max = 0x80000, banksize = 0x2000 }, ppu_rom = { size_base = 0x80000, size_max = 0x80000, banksize = 0x0400 }, cpu_romsize = 0x80000, cpu_banksize = 0x2000, ppu_romsize = 0x80000, ppu_banksize = 0x0400, ppu_ramfind = false, vram_mirrorfind = false }; function cpu_dump(d, pagesize, banksize) { for (local i = 0; i < pagesize; i += 1) { local latchbank = i >> 4; local mmc3bank = i & 0x0F; cpu_write(d, 0x8010 + latchbank, latchbank); cpu_write(d, 0x8000, 0x06); cpu_write(d, 0x8001, mmc3bank); cpu_write(d, 0x8000, 0x07); cpu_write(d, 0x8001, mmc3bank + 1); cpu_read(d, 0x8000, 0x2000); } } function ppu_dump(d, pagesize, banksize) { for (local i = 0; i < pagesize; i += 1) { local latchbank = i >> 7; local mmc3bank = i & 0x7F; cpu_write(d, 0x8010 + (latchbank << 2), (latchbank << 2)); cpu_write(d, 0x8000, 0x02); cpu_write(d, 0x8001, mmc3bank); ppu_read(d, 0x1000, 0x0400); } }