X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=config_file%2Fconfig_file.c;h=12ba4b4e99955384a09dc5f833f954bc1ec14c63;hb=a315cdb7b8fc0221c5811700c6a35bc2feebbc98;hp=526efd64ad02145f1322823aaba6089c6ee18530;hpb=f76580474731e9a4f3d2ec2b61bb7072053e8aa6;p=pistorm diff --git a/config_file/config_file.c b/config_file/config_file.c index 526efd6..12ba4b4 100644 --- a/config_file/config_file.c +++ b/config_file/config_file.c @@ -306,7 +306,9 @@ void free_config_file(struct emulator_config *cfg) { for (int i = 0; i < MAX_NUM_MAPPED_ITEMS; i++) { if (cfg->map_data[i]) { - free(cfg->map_data[i]); + if (cfg->map_type[i] != MAPTYPE_RAM_NOALLOC) { + free(cfg->map_data[i]); + } cfg->map_data[i] = NULL; } if (cfg->map_id[i]) { @@ -314,6 +316,7 @@ void free_config_file(struct emulator_config *cfg) { cfg->map_id[i] = NULL; } } + if (cfg->mouse_file) { free(cfg->mouse_file); cfg->mouse_file = NULL; @@ -538,8 +541,10 @@ int get_mapped_item_by_address(struct emulator_config *cfg, uint32_t address) { for (int i = 0; i < MAX_NUM_MAPPED_ITEMS; i++) { if (cfg->map_type[i] == MAPTYPE_NONE || !cfg->map_data[i]) continue; - if (address >= cfg->map_offset[i] && address < cfg->map_high[i]) - return i; + else if (address >= cfg->map_offset[i] && address < cfg->map_high[i]) { + if (cfg->map_type[i] == MAPTYPE_RAM || cfg->map_type[i] == MAPTYPE_RAM_NOALLOC || cfg->map_type[i] == MAPTYPE_ROM) + return i; + } } return -1; @@ -549,12 +554,9 @@ uint8_t *get_mapped_data_pointer_by_address(struct emulator_config *cfg, uint32_ for (int i = 0; i < MAX_NUM_MAPPED_ITEMS; i++) { if (cfg->map_type[i] == MAPTYPE_NONE || !cfg->map_data[i]) continue; - if (address >= cfg->map_offset[i] && address < cfg->map_high[i]) { - if (cfg->map_type[i] == MAPTYPE_RAM || cfg->map_type[i] == MAPTYPE_RAM_NOALLOC) { + else if (address >= cfg->map_offset[i] && address < cfg->map_high[i]) { + if (cfg->map_type[i] == MAPTYPE_RAM || cfg->map_type[i] == MAPTYPE_RAM_NOALLOC || cfg->map_type[i] == MAPTYPE_ROM) return cfg->map_data[i] + (address - cfg->map_offset[i]); - } else { - return NULL; - } } }