comparison 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
comparison
equal deleted inserted replaced
2277:9e578fd493e1 2278:5a21bc0ec583
1 #include "cdd_fader.h" 1 #include "cdd_fader.h"
2 #include <stdio.h> 2 #include <stdio.h>
3 #define CDDA_MCLKS 16934400
3 4
4 void cdd_fader_init(cdd_fader *fader) 5 void cdd_fader_init(cdd_fader *fader)
5 { 6 {
6 fader->audio = render_audio_source("CDDA", 16934400, 384, 2); 7 fader->audio = render_audio_source("CDDA", CDDA_MCLKS, 384, 2);
7 fader->cur_attenuation = 0x4000; 8 fader->cur_attenuation = 0x4000;
8 fader->dst_attenuation = 0x4000; 9 fader->dst_attenuation = 0x4000;
9 fader->attenuation_step = 0; 10 fader->attenuation_step = 0;
10 } 11 }
11 12
12 void cdd_fader_deinit(cdd_fader *fader) 13 void cdd_fader_deinit(cdd_fader *fader)
13 { 14 {
14 render_free_source(fader->audio); 15 render_free_source(fader->audio);
16 }
17
18 void cdd_fader_set_speed_percent(cdd_fader *fader, uint32_t percent)
19 {
20 uint32_t new_clock = ((uint64_t)CDDA_MCLKS * (uint64_t)percent) / 100;
21 render_audio_adjust_clock(fader->audio, new_clock, 384);
15 } 22 }
16 23
17 void cdd_fader_attenuation_write(cdd_fader *fader, uint16_t attenuation) 24 void cdd_fader_attenuation_write(cdd_fader *fader, uint16_t attenuation)
18 { 25 {
19 fader->dst_attenuation = attenuation & 0xFFF0; 26 fader->dst_attenuation = attenuation & 0xFFF0;