# HG changeset patch # User Michael Pavone # Date 1672691062 28800 # Node ID 9e578fd493e1a165bbd5e0de423d002b6eb8f8f4 # Parent 709036ee222a96d95785cc2fe048ac61aceb8e16 Implement gain control for Ricoh PCM and CDDA with defaults based on Model 2 Sega CD diff -r 709036ee222a -r 9e578fd493e1 genesis.c --- a/genesis.c Mon Jan 02 11:37:31 2023 -0800 +++ b/genesis.c Mon Jan 02 12:24:22 2023 -0800 @@ -1683,6 +1683,14 @@ 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")); + + if (gen->expansion) { + segacd_context *cd = gen->expansion; + config_gain = tern_find_path(config, "audio\0rf5c164_gain\0", TVAL_PTR).ptrval; + render_audio_source_gaindb(cd->pcm.audio, config_gain ? atof(config_gain) : -6.0f); + config_gain = tern_find_path(config, "audio\0cdda_gain\0", TVAL_PTR).ptrval; + render_audio_source_gaindb(cd->fader.audio, config_gain ? atof(config_gain) : -9.5f); + } } static void config_updated(system_header *system) @@ -1953,8 +1961,6 @@ gen->psg = malloc(sizeof(psg_context)); psg_init(gen->psg, gen->master_clock, MCLKS_PER_PSG); - set_audio_config(gen); - z80_map[0].buffer = gen->zram = calloc(1, Z80_RAM_BYTES); #ifndef NO_Z80 z80_options *z_opts = malloc(sizeof(z80_options)); @@ -2208,6 +2214,7 @@ memmap_chunk* map = info.map; uint32_t map_chunks = info.map_chunks; if (info.wants_cd || (current_media()->chain && current_media()->chain->type == MEDIA_CDROM)) { + gen->header.type = SYSTEM_SEGACD; segacd_context *cd = alloc_configure_segacd((system_media *)current_media(), 0, force_region, &info); gen->expansion = cd; gen->version_reg &= ~NO_DISK; @@ -2265,6 +2272,7 @@ } gen->reset_cycle = CYCLE_NEVER; + set_audio_config(gen); return gen; } @@ -2327,5 +2335,7 @@ } } gen->header.type = SYSTEM_SEGACD; + + set_audio_config(gen); return gen; } diff -r 709036ee222a -r 9e578fd493e1 nuklear_ui/blastem_nuklear.c --- a/nuklear_ui/blastem_nuklear.c Mon Jan 02 11:37:31 2023 -0800 +++ b/nuklear_ui/blastem_nuklear.c Mon Jan 02 12:24:22 2023 -0800 @@ -1931,6 +1931,8 @@ settings_float_property(context, "Gain (dB)", "Overall", "audio\0gain\0", 0, -30.0f, 30.0f, 0.5f); settings_float_property(context, "", "FM", "audio\0fm_gain\0", 0, -30.0f, 30.0f, 0.5f); settings_float_property(context, "", "PSG", "audio\0psg_gain\0", 0, -30.0f, 30.0f, 0.5f); + settings_float_property(context, "", "RF5C164", "audio\0rf5c164_gain\0", -6.0f, -30.0f, 30.0f, 0.5f); + settings_float_property(context, "", "CDDA", "audio\0cdd_gain\0", -9.5f, -30.0f, 30.0f, 0.5f); selected_dac = settings_dropdown_ex(context, "FM DAC", dac, dac_desc, num_dacs, selected_dac, "audio\0fm_dac\0"); if (nk_button_label(context, "Back")) { pop_view();