+ // SH2 maps: A31,A30,A29,CS1,CS0
+ // all unmapped by default
+ for (i = 0; i < 0x20; i++) {
+ sh2_read8_map[i].addr = MAP_HANDLER(sh2_read8_unmapped);
+ sh2_read16_map[i].addr = MAP_HANDLER(sh2_read16_unmapped);
+ sh2_write8_map[i].addr = MAP_HANDLER(sh2_write8_unmapped);
+ sh2_write16_map[i].addr = MAP_HANDLER(sh2_write16_unmapped);
+ }
+
+ // CS0
+ sh2_read8_map[0].addr = sh2_read8_map[4].addr = MAP_HANDLER(sh2_read8_cs0);
+ sh2_read16_map[0].addr = sh2_read16_map[4].addr = MAP_HANDLER(sh2_read16_cs0);
+ sh2_write8_map[0].addr = sh2_write8_map[4].addr = MAP_HANDLER(sh2_write8_cs0);
+ sh2_write16_map[0].addr = sh2_write16_map[4].addr = MAP_HANDLER(sh2_write16_cs0);
+ // CS1 - ROM
+ sh2_read8_map[1].addr = sh2_read8_map[5].addr =
+ sh2_read16_map[1].addr = sh2_read16_map[5].addr = MAP_MEMORY(Pico.rom);
+ sh2_read8_map[1].mask = sh2_read8_map[5].mask =
+ sh2_read16_map[1].mask = sh2_read16_map[5].mask = 0x3fffff; // FIXME
+ // CS2 - DRAM - done by Pico32xSwapDRAM()
+ sh2_read8_map[2].mask = sh2_read8_map[6].mask =
+ sh2_read16_map[2].mask = sh2_read16_map[6].mask = 0x01ffff;
+ // CS3 - SDRAM
+ sh2_read8_map[3].addr = sh2_read8_map[7].addr =
+ sh2_read16_map[3].addr = sh2_read16_map[7].addr =
+ sh2_write8_map[3].addr = sh2_write8_map[7].addr =
+ sh2_write16_map[3].addr = sh2_write16_map[7].addr = MAP_MEMORY(Pico32xMem->sdram);
+ sh2_read8_map[3].mask = sh2_read8_map[7].mask =
+ sh2_read16_map[3].mask = sh2_read16_map[7].mask =
+ sh2_write8_map[3].mask = sh2_write8_map[7].mask =
+ sh2_write16_map[3].mask = sh2_write16_map[7].mask = 0x03ffff;
+ // SH2 data array
+ sh2_read8_map[0x18].addr = MAP_HANDLER(sh2_read8_da);
+ sh2_read16_map[0x18].addr = MAP_HANDLER(sh2_read16_da);
+ sh2_write8_map[0x18].addr = MAP_HANDLER(sh2_write8_da);
+ sh2_write16_map[0x18].addr = MAP_HANDLER(sh2_write16_da);
+ // SH2 IO
+ sh2_read8_map[0x1f].addr = MAP_HANDLER(sh2_peripheral_read8);
+ sh2_read16_map[0x1f].addr = MAP_HANDLER(sh2_peripheral_read16);
+ sh2_write8_map[0x1f].addr = MAP_HANDLER(sh2_peripheral_write8);
+ sh2_write16_map[0x1f].addr = MAP_HANDLER(sh2_peripheral_write16);
+
+ // map DRAM area, both 68k and SH2
+ Pico32xSwapDRAM(1);
+
+ msh2.read8_map = ssh2.read8_map = sh2_read8_map;
+ msh2.read16_map = ssh2.read16_map = sh2_read16_map;
+ msh2.write8_map = ssh2.write8_map = sh2_write8_map;
+ msh2.write16_map = ssh2.write16_map = sh2_write16_map;
+