diff genesis.c @ 1326:071e761bcdcf

Fix a deficiency in the way types were handled in my ternary tree. Fixes in which some paths that were constructed from a template with variables would sometimes get an extra garbage character thrown in
author Michael Pavone <pavone@retrodev.com>
date Fri, 21 Apr 2017 23:35:32 -0700
parents bfdd450e7dea
children 69c25e1188e5
line wrap: on
line diff
--- a/genesis.c	Fri Apr 21 01:22:52 2017 -0700
+++ b/genesis.c	Fri Apr 21 23:35:32 2017 -0700
@@ -822,7 +822,7 @@
 void set_region(genesis_context *gen, rom_info *info, uint8_t region)
 {
 	if (!region) {
-		char * def_region = tern_find_path_default(config, "system\0default_region\0", (tern_val){.ptrval = "U"}).ptrval;
+		char * def_region = tern_find_path_default(config, "system\0default_region\0", (tern_val){.ptrval = "U"}, TVAL_PTR).ptrval;
 		if (!info->regions || (info->regions & translate_region_char(toupper(*def_region)))) {
 			region = translate_region_char(toupper(*def_region));
 		} else {
@@ -1001,10 +1001,10 @@
 	init_vdp_context(gen->vdp, gen->version_reg & 0x40);
 	gen->vdp->system = &gen->header;
 	gen->frame_end = vdp_cycles_to_frame_end(gen->vdp);
-	char * config_cycles = tern_find_path(config, "clocks\0max_cycles\0").ptrval;
+	char * config_cycles = tern_find_path(config, "clocks\0max_cycles\0", TVAL_PTR).ptrval;
 	gen->max_cycles = config_cycles ? atoi(config_cycles) : DEFAULT_SYNC_INTERVAL;
 
-	char * lowpass_cutoff_str = tern_find_path(config, "audio\0lowpass_cutoff\0").ptrval;
+	char * lowpass_cutoff_str = tern_find_path(config, "audio\0lowpass_cutoff\0", TVAL_PTR).ptrval;
 	uint32_t lowpass_cutoff = lowpass_cutoff_str ? atoi(lowpass_cutoff_str) : DEFAULT_LOWPASS_CUTOFF;
 	
 	gen->ym = malloc(sizeof(ym2612_context));
@@ -1032,7 +1032,7 @@
 	gen->cart = main_rom;
 	gen->lock_on = lock_on;
 	gen->work_ram = calloc(2, RAM_WORDS);
-	if (!strcmp("random", tern_find_path_default(config, "system\0ram_init\0", (tern_val){.ptrval = "zero"}).ptrval))
+	if (!strcmp("random", tern_find_path_default(config, "system\0ram_init\0", (tern_val){.ptrval = "zero"}, TVAL_PTR).ptrval))
 	{
 		srand(time(NULL));
 		for (int i = 0; i < RAM_WORDS; i++)
@@ -1124,7 +1124,7 @@
 		byteswap_rom(lock_on_size, lock_on);
 	}
 #endif
-	char *m68k_divider = tern_find_path(config, "clocks\0m68k_divider\0").ptrval;
+	char *m68k_divider = tern_find_path(config, "clocks\0m68k_divider\0", TVAL_PTR).ptrval;
 	if (!m68k_divider) {
 		m68k_divider = "7";
 	}