diff ymz263b.h @ 2466:b5640ac9aea9

Initial stab at PCM/ADPCM support in YMZ263B emulation
author Michael Pavone <pavone@retrodev.com>
date Sat, 24 Feb 2024 20:41:02 -0800
parents a4f8fa24764b
children 2f4c17b4fe10
line wrap: on
line diff
--- a/ymz263b.h	Sat Feb 24 11:53:44 2024 -0800
+++ b/ymz263b.h	Sat Feb 24 20:41:02 2024 -0800
@@ -6,11 +6,16 @@
 #include "oscilloscope.h"
 
 typedef struct {
-	uint8_t fifo[128];
-	uint8_t fifo_read;
-	uint8_t fifo_write;
+	uint16_t output;
+	uint8_t  fifo[128];
+	uint8_t  fifo_read;
+	uint8_t  fifo_write;
 	
-	uint8_t regs[4];
+	uint8_t  regs[4];
+	uint8_t  counter;
+	uint8_t  nibble;
+	uint8_t  nibble_write;
+	uint8_t  adpcm_mul_index;
 } ymz263b_pcm;
 
 typedef struct {
@@ -37,9 +42,10 @@
 	uint8_t       midi_regs[2];
 	uint8_t       address;
 	uint8_t       midi_transmit;
+	uint8_t       pcm_counter;
 } ymz263b;
 
-void ymz263b_init(ymz263b *ymz, uint32_t clock_divider);
+void ymz263b_init(ymz263b *ymz, uint32_t master_clock, uint32_t clock_divider);
 void ymz263b_run(ymz263b *ymz, uint32_t target_cycle);
 uint32_t ymz263b_next_int(ymz263b *ymz);
 void ymz263b_address_write(ymz263b *ymz, uint8_t value);