Mercurial > repos > blastem
comparison psg.h @ 1555:6ce36c3f250b
More audio refactoring in preparation for allowing proper sync to video with dynamic audio rate control
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 30 Mar 2018 00:37:08 -0700 |
parents | ce1f93be0104 |
children | 4c322abd9fa5 |
comparison
equal
deleted
inserted
replaced
1554:87350caf6dab | 1555:6ce36c3f250b |
---|---|
9 #include <stdint.h> | 9 #include <stdint.h> |
10 #include "serialize.h" | 10 #include "serialize.h" |
11 #include "render.h" | 11 #include "render.h" |
12 | 12 |
13 typedef struct { | 13 typedef struct { |
14 int16_t *audio_buffer; | |
15 audio_source *audio; | 14 audio_source *audio; |
16 uint64_t buffer_fraction; | |
17 uint64_t buffer_inc; | |
18 uint32_t buffer_pos; | |
19 uint32_t clock_inc; | 15 uint32_t clock_inc; |
20 uint32_t cycles; | 16 uint32_t cycles; |
21 uint32_t sample_rate; | |
22 uint32_t samples_frame; | |
23 int32_t lowpass_alpha; | |
24 uint16_t lsfr; | 17 uint16_t lsfr; |
25 uint16_t counter_load[4]; | 18 uint16_t counter_load[4]; |
26 uint16_t counters[4]; | 19 uint16_t counters[4]; |
27 int16_t accum; | |
28 int16_t last_sample; | |
29 uint8_t volume[4]; | 20 uint8_t volume[4]; |
30 uint8_t output_state[4]; | 21 uint8_t output_state[4]; |
31 uint8_t noise_out; | 22 uint8_t noise_out; |
32 uint8_t noise_use_tone; | 23 uint8_t noise_use_tone; |
33 uint8_t noise_type; | 24 uint8_t noise_type; |
34 uint8_t latch; | 25 uint8_t latch; |
35 } psg_context; | 26 } psg_context; |
36 | 27 |
37 | 28 |
38 void psg_init(psg_context * context, uint32_t sample_rate, uint32_t master_clock, uint32_t clock_div, uint32_t samples_frame, uint32_t lowpass_cutoff); | 29 void psg_init(psg_context * context, uint32_t master_clock, uint32_t clock_div); |
39 void psg_free(psg_context *context); | 30 void psg_free(psg_context *context); |
40 void psg_adjust_master_clock(psg_context * context, uint32_t master_clock); | 31 void psg_adjust_master_clock(psg_context * context, uint32_t master_clock); |
41 void psg_write(psg_context * context, uint8_t value); | 32 void psg_write(psg_context * context, uint8_t value); |
42 void psg_run(psg_context * context, uint32_t cycles); | 33 void psg_run(psg_context * context, uint32_t cycles); |
43 void psg_serialize(psg_context *context, serialize_buffer *buf); | 34 void psg_serialize(psg_context *context, serialize_buffer *buf); |