Mercurial > repos > blastem
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; |