comparison romdb.c @ 2340:b9cd3c64652d

Slightly more correct implementation of MED extended Sega mapper so s2built debug build doesn't hang
author Michael Pavone <pavone@retrodev.com>
date Mon, 04 Sep 2023 20:54:27 -0700
parents 26597f9805b4
children 49b7ead35482
comparison
equal deleted inserted replaced
2339:8990c2f431b1 2340:b9cd3c64652d
338 info->map[8].start = 0xA13000; 338 info->map[8].start = 0xA13000;
339 info->map[8].end = 0xA13100; 339 info->map[8].end = 0xA13100;
340 info->map[8].mask = 0xFF; 340 info->map[8].mask = 0xFF;
341 info->map[8].write_16 = (write_16_fun)write_bank_reg_w; 341 info->map[8].write_16 = (write_16_fun)write_bank_reg_w;
342 info->map[8].write_8 = (write_8_fun)write_bank_reg_b; 342 info->map[8].write_8 = (write_8_fun)write_bank_reg_b;
343 if (is_med_ssf) {
344 info->map[8].read_16 = med_reg_read_w;
345 info->map[8].read_8 = med_reg_read_b;
346 }
343 return; 347 return;
344 } else if(!memcmp("SEGA MEGAWIFI", rom + 0x100, strlen("SEGA MEGAWIFI"))) { 348 } else if(!memcmp("SEGA MEGAWIFI", rom + 0x100, strlen("SEGA MEGAWIFI"))) {
345 info->mapper_type = MAPPER_NONE; 349 info->mapper_type = MAPPER_NONE;
346 info->map_chunks = base_chunks + 2; 350 info->map_chunks = base_chunks + 2;
347 info->map = malloc(sizeof(memmap_chunk) * info->map_chunks); 351 info->map = malloc(sizeof(memmap_chunk) * info->map_chunks);
717 char * dtype = tern_find_ptr_default(node, "device", "ROM"); 721 char * dtype = tern_find_ptr_default(node, "device", "ROM");
718 uint32_t offset = strtol(tern_find_ptr_default(node, "offset", "0"), NULL, 16); 722 uint32_t offset = strtol(tern_find_ptr_default(node, "offset", "0"), NULL, 16);
719 memmap_chunk *map = state->info->map + state->index; 723 memmap_chunk *map = state->info->map + state->index;
720 map->start = start; 724 map->start = start;
721 map->end = end + 1; 725 map->end = end + 1;
722 726
723 if (!strcmp(dtype, "ROM")) { 727 if (!strcmp(dtype, "ROM")) {
724 uint32_t expanded_size = nearest_pow2(state->rom_size); 728 uint32_t expanded_size = nearest_pow2(state->rom_size);
725 if (offset >= expanded_size) { 729 if (offset >= expanded_size) {
726 fatal_error("offset of %X is invalid for ROM size of %X in map entry %d with addess %s\n", offset, state->rom_size, state->index, key); 730 fatal_error("offset of %X is invalid for ROM size of %X in map entry %d with addess %s\n", offset, state->rom_size, state->index, key);
727 } 731 }