Mercurial > repos > blastem
changeset 2277:9e578fd493e1
Implement gain control for Ricoh PCM and CDDA with defaults based on Model 2 Sega CD
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 02 Jan 2023 12:24:22 -0800 |
parents | 709036ee222a |
children | 5a21bc0ec583 |
files | genesis.c nuklear_ui/blastem_nuklear.c |
diffstat | 2 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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; }
--- 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();