Mercurial > repos > blastem
diff cdd_fader.c @ 2278:5a21bc0ec583
Implement turbo/slo mo for Sega CD
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 02 Jan 2023 13:08:49 -0800 |
parents | 4fbe1e7c4a73 |
children | 9ead0fe69d9b |
line wrap: on
line diff
--- a/cdd_fader.c Mon Jan 02 12:24:22 2023 -0800 +++ b/cdd_fader.c Mon Jan 02 13:08:49 2023 -0800 @@ -1,9 +1,10 @@ #include "cdd_fader.h" #include <stdio.h> +#define CDDA_MCLKS 16934400 void cdd_fader_init(cdd_fader *fader) { - fader->audio = render_audio_source("CDDA", 16934400, 384, 2); + fader->audio = render_audio_source("CDDA", CDDA_MCLKS, 384, 2); fader->cur_attenuation = 0x4000; fader->dst_attenuation = 0x4000; fader->attenuation_step = 0; @@ -14,6 +15,12 @@ render_free_source(fader->audio); } +void cdd_fader_set_speed_percent(cdd_fader *fader, uint32_t percent) +{ + uint32_t new_clock = ((uint64_t)CDDA_MCLKS * (uint64_t)percent) / 100; + render_audio_adjust_clock(fader->audio, new_clock, 384); +} + void cdd_fader_attenuation_write(cdd_fader *fader, uint16_t attenuation) { fader->dst_attenuation = attenuation & 0xFFF0;