# HG changeset patch # User Michael Pavone # Date 1485366072 28800 # Node ID aee2177a16306f937a9e3399eae71863b7908a02 # Parent 9661b30bd3f7124e4a054e73bad589624725872c Use filename for game title in SMS mode diff -r 9661b30bd3f7 -r aee2177a1630 blastem.c --- a/blastem.c Tue Jan 24 23:59:32 2017 -0800 +++ b/blastem.c Wed Jan 25 09:41:12 2017 -0800 @@ -269,6 +269,7 @@ if (!lock_on.size) { fatal_error("Failed to load lock on cartridge %s\n", argv[i]); } + lock_on.name = basename_no_extension(argv[i]); lock_on.extension = path_extension(argv[i]); cart.chain = &lock_on; break; @@ -301,6 +302,7 @@ if (!(cart.size = load_rom(argv[i], &cart.buffer, stype == SYSTEM_UNKNOWN ? &stype : NULL))) { fatal_error("Failed to open %s for reading\n", argv[i]); } + cart.name = basename_no_extension(argv[i]); cart.extension = path_extension(argv[i]); romfname = argv[i]; loaded = 1; @@ -334,8 +336,8 @@ } //force system detection, value on command line is only for games not the menu stype = detect_system_type(&cart); + cart.name = basename_no_extension(romfname); cart.extension = path_extension(romfname); - loaded = 1; } @@ -399,6 +401,7 @@ if (!(cart.size = load_rom(menu_context->next_rom, &cart.buffer, &stype))) { fatal_error("Failed to open %s for reading\n", menu_context->next_rom); } + cart.name = basename_no_extension(menu_context->next_rom); cart.extension = path_extension(menu_context->next_rom); stype = force_stype; if (stype == SYSTEM_UNKNOWN) { diff -r 9661b30bd3f7 -r aee2177a1630 sms.c --- a/sms.c Tue Jan 24 23:59:32 2017 -0800 +++ b/sms.c Wed Jan 25 09:41:12 2017 -0800 @@ -275,17 +275,16 @@ } } -sms_context *alloc_configure_sms(void *rom, uint32_t rom_size, void *extra_rom, uint32_t extra_rom_size, uint32_t opts, uint8_t force_region, rom_info *info_out) +sms_context *alloc_configure_sms(system_media *media, uint32_t opts, uint8_t force_region, rom_info *info_out) { memset(info_out, 0, sizeof(*info_out)); sms_context *sms = calloc(1, sizeof(sms_context)); - uint32_t orig_size = rom_size; - rom_size = nearest_pow2(rom_size); + uint32_t rom_size = nearest_pow2(media->size); memmap_chunk memory_map[6]; - if (orig_size > 0xC000) { + if (media->size > 0xC000) { info_out->map_chunks = 6; uint8_t *ram_reg_overlap = sms->ram + sizeof(sms->ram) - 4; - memory_map[0] = (memmap_chunk){0x0000, 0x0400, 0xFFFF, 0, 0, MMAP_READ, rom, NULL, NULL, NULL, NULL}; + memory_map[0] = (memmap_chunk){0x0000, 0x0400, 0xFFFF, 0, 0, MMAP_READ, media->buffer, NULL, NULL, NULL, NULL}; memory_map[1] = (memmap_chunk){0x0400, 0x4000, 0xFFFF, 0, 0, MMAP_READ|MMAP_PTR_IDX|MMAP_CODE, NULL, NULL, NULL, NULL, NULL}; memory_map[2] = (memmap_chunk){0x4000, 0x8000, 0x3FFF, 0, 1, MMAP_READ|MMAP_PTR_IDX|MMAP_CODE, NULL, NULL, NULL, NULL, NULL}; memory_map[3] = (memmap_chunk){0x8000, 0xC000, 0x3FFF, 0, 2, MMAP_READ|MMAP_PTR_IDX|MMAP_CODE, NULL, NULL, NULL, NULL, cart_ram_write}; @@ -293,7 +292,7 @@ memory_map[5] = (memmap_chunk){0xFFFC, 0x10000, 0x0003, 0, 0, MMAP_READ, ram_reg_overlap, NULL, NULL, NULL, mapper_write}; } else { info_out->map_chunks = 2; - memory_map[0] = (memmap_chunk){0x0000, 0xC000, rom_size-1, 0, 0, MMAP_READ, rom, NULL, NULL, NULL, NULL}; + memory_map[0] = (memmap_chunk){0x0000, 0xC000, rom_size-1, 0, 0, MMAP_READ, media->buffer, NULL, NULL, NULL, NULL}; memory_map[1] = (memmap_chunk){0xC000, 0x10000, sizeof(sms->ram)-1, 0, 0, MMAP_READ|MMAP_WRITE|MMAP_CODE, sms->ram, NULL, NULL, NULL, NULL}; }; info_out->map = malloc(sizeof(memmap_chunk) * info_out->map_chunks); @@ -304,7 +303,7 @@ sms->z80->system = sms; sms->z80->options->gen.debug_cmd_handler = debug_commands; - sms->rom = rom; + sms->rom = media->buffer; sms->rom_size = rom_size; if (info_out->map_chunks > 2) { sms->z80->mem_pointers[0] = sms->rom; @@ -329,7 +328,7 @@ sms->vdp->system = &sms->header; info_out->save_type = SAVE_NONE; - info_out->name = strdup("Master System Game"); + info_out->name = strdup(media->name); setup_io_devices(config, info_out, &sms->io); diff -r 9661b30bd3f7 -r aee2177a1630 sms.h --- a/sms.h Tue Jan 24 23:59:32 2017 -0800 +++ b/sms.h Wed Jan 25 09:41:12 2017 -0800 @@ -26,6 +26,6 @@ uint8_t cart_ram[SMS_CART_RAM_SIZE]; } sms_context; -sms_context *alloc_configure_sms(void *rom, uint32_t rom_size, void *extra_rom, uint32_t extra_rom_size, uint32_t opts, uint8_t force_region, rom_info *info_out); +sms_context *alloc_configure_sms(system_media *media, uint32_t opts, uint8_t force_region, rom_info *info_out); #endif //SMS_H_ diff -r 9661b30bd3f7 -r aee2177a1630 system.c --- a/system.c Tue Jan 24 23:59:32 2017 -0800 +++ b/system.c Wed Jan 25 09:41:12 2017 -0800 @@ -62,7 +62,7 @@ return &(alloc_config_genesis(media->buffer, media->size, lock_on, lock_on_size, opts, force_region, info_out))->header; #ifndef NO_Z80 case SYSTEM_SMS: - return &(alloc_configure_sms(media->buffer, media->size, lock_on, lock_on_size, opts, force_region, info_out))->header; + return &(alloc_configure_sms(media, opts, force_region, info_out))->header; #endif default: return NULL; diff -r 9661b30bd3f7 -r aee2177a1630 system.h --- a/system.h Tue Jan 24 23:59:32 2017 -0800 +++ b/system.h Wed Jan 25 09:41:12 2017 -0800 @@ -50,6 +50,7 @@ struct system_media { void *buffer; + char *name; char *extension; system_media *chain; uint32_t size;