diff ym2612.c @ 424:7e8e179116af

Add support for loading GST format savestates
author Mike Pavone <pavone@retrodev.com>
date Sat, 29 Jun 2013 17:15:08 -0700
parents baf4688901f2
children e85a107e6ec0
line wrap: on
line diff
--- a/ym2612.c	Tue Jun 25 23:18:57 2013 -0700
+++ b/ym2612.c	Sat Jun 29 17:15:08 2013 -0700
@@ -763,3 +763,24 @@
 	return context->status;
 }
 
+#define GST_YM_OFFSET 0x1E4
+#define GST_YM_SIZE (0x3E4-GST_YM_OFFSET)
+
+uint8_t ym_load_gst(ym2612_context * context, FILE * gstfile)
+{
+	uint8_t regdata[GST_YM_SIZE];
+	fseek(gstfile, GST_YM_OFFSET, SEEK_SET);
+	if (fread(regdata, 1, sizeof(regdata), gstfile) != sizeof(regdata)) {
+		return 0;
+	}
+	for (int i = 0; i < sizeof(regdata); i++) {
+		if (i & 0x100) {
+			ym_address_write_part2(context, i & 0xFF);
+		} else {
+			ym_address_write_part1(context, i);
+		}
+		ym_data_write(context, regdata[i]);
+	}
+	return 1;
+}
+