]> git.sesse.net Git - pistorm/blobdiff - memory_mapped.c
Add support for ROM mirroring
[pistorm] / memory_mapped.c
index c5a99e7e09659ed883207ddb68e252400f938ea5..b77a8d29bd3124bf40ad6326ce487b03322f3d45 100644 (file)
@@ -27,9 +27,9 @@ int handle_mapped_read(struct emulator_config *cfg, unsigned int addr, unsigned
     switch(cfg->map_type[i]) {
       case MAPTYPE_ROM:
         if (CHKRANGE(addr, cfg->map_offset[i], cfg->map_size[i]))
-          read_addr = cfg->map_data[i] + (addr - cfg->map_offset[i]);
+          read_addr = cfg->map_data[i] + ((addr - cfg->map_offset[i]) % cfg->rom_size[i]);
         else if (cfg->map_mirror[i] != -1 && mirror && CHKRANGE(addr, cfg->map_mirror[i], cfg->map_size[i]))
-          read_addr = cfg->map_data[i] + (addr - cfg->map_mirror[i]);
+          read_addr = cfg->map_data[i] + ((addr - cfg->map_mirror[i]) % cfg->rom_size[i]);
         break;
       case MAPTYPE_RAM:
         if (CHKRANGE(addr, cfg->map_offset[i], cfg->map_size[i]))