Mercurial > repos > blastem
comparison psg.h @ 354:15dd6418fe67
Initial PSG support. Mostly works, noise channel is borked though.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 23 May 2013 23:42:42 -0700 |
parents | |
children | 62177cc39049 |
comparison
equal
deleted
inserted
replaced
353:a60e527cd21f | 354:15dd6418fe67 |
---|---|
1 #ifndef PSG_CONTEXT_H_ | |
2 #define PSG_CONTEXT_H_ | |
3 | |
4 #include <stdint.h> | |
5 | |
6 typedef struct { | |
7 int16_t *audio_buffer; | |
8 int16_t *back_buffer; | |
9 double buffer_fraction; | |
10 double buffer_inc; | |
11 uint32_t buffer_pos; | |
12 uint32_t back_pos; | |
13 uint32_t cycles; | |
14 uint32_t samples_frame; | |
15 uint16_t lsfr; | |
16 uint16_t counter_load[4]; | |
17 uint16_t counters[4]; | |
18 uint8_t volume[4]; | |
19 uint8_t output_state[4]; | |
20 uint8_t noise_out; | |
21 uint8_t noise_use_tone; | |
22 uint8_t noise_type; | |
23 uint8_t latch; | |
24 } psg_context; | |
25 | |
26 | |
27 void psg_init(psg_context * context, uint32_t sample_rate, uint32_t clock_rate, uint32_t samples_frame); | |
28 void psg_write(psg_context * context, uint8_t value); | |
29 void psg_run(psg_context * context, uint32_t cycles); | |
30 | |
31 #endif //PSG_CONTEXT_H_ | |
32 |