From 9e33979cee499191c05fa63262327f7f17a70305 Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Thu, 23 May 2013 23:42:42 -0700 Subject: Initial PSG support. Mostly works, noise channel is borked though. --- psg.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 psg.h (limited to 'psg.h') diff --git a/psg.h b/psg.h new file mode 100644 index 0000000..7d36f5c --- /dev/null +++ b/psg.h @@ -0,0 +1,32 @@ +#ifndef PSG_CONTEXT_H_ +#define PSG_CONTEXT_H_ + +#include + +typedef struct { + int16_t *audio_buffer; + int16_t *back_buffer; + double buffer_fraction; + double buffer_inc; + uint32_t buffer_pos; + uint32_t back_pos; + uint32_t cycles; + uint32_t samples_frame; + uint16_t lsfr; + uint16_t counter_load[4]; + uint16_t counters[4]; + uint8_t volume[4]; + uint8_t output_state[4]; + uint8_t noise_out; + uint8_t noise_use_tone; + uint8_t noise_type; + uint8_t latch; +} psg_context; + + +void psg_init(psg_context * context, uint32_t sample_rate, uint32_t clock_rate, uint32_t samples_frame); +void psg_write(psg_context * context, uint8_t value); +void psg_run(psg_context * context, uint32_t cycles); + +#endif //PSG_CONTEXT_H_ + -- cgit v1.2.3