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_
+