Mercurial > repos > blastem
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 } |