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