summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--blastem.c5
-rw-r--r--sms.c15
-rw-r--r--sms.h2
-rw-r--r--system.c2
-rw-r--r--system.h1
5 files changed, 14 insertions, 11 deletions
diff --git a/blastem.c b/blastem.c
index a46e7f8..c5f0326 100644
--- a/blastem.c
+++ b/blastem.c
@@ -269,6 +269,7 @@ int main(int argc, char ** argv)
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 @@ int main(int argc, char ** argv)
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 @@ int main(int argc, char ** argv)
}
//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 @@ int main(int argc, char ** argv)
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 --git a/sms.c b/sms.c
index c49f98f..c1a67db 100644
--- a/sms.c
+++ b/sms.c
@@ -275,17 +275,16 @@ static void inc_debug_pal(system_header *system)
}
}
-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 @@ sms_context *alloc_configure_sms(void *rom, uint32_t rom_size, void *extra_rom,
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_context *alloc_configure_sms(void *rom, uint32_t rom_size, void *extra_rom,
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_context *alloc_configure_sms(void *rom, uint32_t rom_size, void *extra_rom,
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 --git a/sms.h b/sms.h
index 91b215e..60448a7 100644
--- a/sms.h
+++ b/sms.h
@@ -26,6 +26,6 @@ typedef struct {
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 --git a/system.c b/system.c
index 2097bbf..ef7ce33 100644
--- a/system.c
+++ b/system.c
@@ -62,7 +62,7 @@ system_header *alloc_config_system(system_type stype, system_media *media, uint3
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 --git a/system.h b/system.h
index 587a4ea..065ecbf 100644
--- a/system.h
+++ b/system.h
@@ -50,6 +50,7 @@ struct system_header {
struct system_media {
void *buffer;
+ char *name;
char *extension;
system_media *chain;
uint32_t size;