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);