From c1597a8f0a63adbf7018a05a35d0c77d7bccd0c3 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Sun, 24 Mar 2019 19:59:41 -0700 Subject: Optionally emulate the offset around zero in the imperfect DAC of a discrete YM2612 --- genesis.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'genesis.c') diff --git a/genesis.c b/genesis.c index 5d28c5f..99dce0f 100644 --- a/genesis.c +++ b/genesis.c @@ -1334,20 +1334,23 @@ static void keyboard_up(system_header *system, uint8_t scancode) io_keyboard_up(&gen->io, scancode); } -static void set_gain_config(genesis_context *gen) +static void set_audio_config(genesis_context *gen) { char *config_gain; config_gain = tern_find_path(config, "audio\0psg_gain\0", TVAL_PTR).ptrval; render_audio_source_gaindb(gen->psg->audio, config_gain ? atof(config_gain) : 0.0f); config_gain = tern_find_path(config, "audio\0fm_gain\0", TVAL_PTR).ptrval; render_audio_source_gaindb(gen->ym->audio, config_gain ? atof(config_gain) : 0.0f); + + char *config_dac = tern_find_path_default(config, "audio\0fm_dac\0", (tern_val){.ptrval="zero_offset"}, TVAL_PTR).ptrval; + ym_enable_zero_offset(gen->ym, !strcmp(config_dac, "zero_offset")); } static void config_updated(system_header *system) { genesis_context *gen = (genesis_context *)system; setup_io_devices(config, &system->info, &gen->io); - set_gain_config(gen); + set_audio_config(gen); } genesis_context *alloc_init_genesis(rom_info *rom, void *main_rom, void *lock_on, uint32_t system_opts, uint8_t force_region) @@ -1402,7 +1405,7 @@ genesis_context *alloc_init_genesis(rom_info *rom, void *main_rom, void *lock_on gen->psg = malloc(sizeof(psg_context)); psg_init(gen->psg, gen->master_clock, MCLKS_PER_PSG); - set_gain_config(gen); + set_audio_config(gen); z80_map[0].buffer = gen->zram = calloc(1, Z80_RAM_BYTES); #ifndef NO_Z80 -- cgit v1.2.3