changeset 1201:aee2177a1630

Use filename for game title in SMS mode
author Michael Pavone <pavone@retrodev.com>
date Wed, 25 Jan 2017 09:41:12 -0800
parents 9661b30bd3f7
children a6ae693974e0
files blastem.c sms.c sms.h system.c system.h
diffstat 5 files changed, 14 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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) {
--- 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);
 	
--- 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_
--- 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;
--- 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;