Mercurial > repos > blastem
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/psg.h Thu May 23 23:42:42 2013 -0700 @@ -0,0 +1,32 @@ +#ifndef PSG_CONTEXT_H_ +#define PSG_CONTEXT_H_ + +#include <stdint.h> + +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_ +