summaryrefslogtreecommitdiff
path: root/vgm.h
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2020-03-27 00:03:58 -0700
committerMichael Pavone <pavone@retrodev.com>2020-03-27 00:03:58 -0700
commit66975faa75958a1a509a04801331a85291827580 (patch)
treeef9891c95f5d100b464b2497b64e08db6ad8ab31 /vgm.h
parentce15f59d46ea29afc64a8018e7da089c81217dea (diff)
Initial stab at VGM logging support
Diffstat (limited to 'vgm.h')
-rw-r--r--vgm.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/vgm.h b/vgm.h
index b6ca836..ce196d5 100644
--- a/vgm.h
+++ b/vgm.h
@@ -1,6 +1,9 @@
#ifndef VGM_H_
#define VGM_H_
+#include <stdint.h>
+#include <stdio.h>
+
#pragma pack(push, 1)
typedef struct {
char ident[4];
@@ -71,4 +74,20 @@ typedef struct {
uint8_t type;
} data_block;
+typedef struct {
+ vgm_header header;
+ FILE *f;
+ uint32_t master_clock;
+ uint32_t last_cycle;
+} vgm_writer;
+
+vgm_writer *vgm_write_open(char *filename, uint32_t rate, uint32_t clock, uint32_t cycle);
+void vgm_sn76489_init(vgm_writer *writer, uint32_t clock, uint16_t feedback, uint8_t shift_reg_size, uint8_t flags);
+void vgm_sn76489_write(vgm_writer *writer, uint32_t cycle, uint8_t value);
+void vgm_ym2612_init(vgm_writer *writer, uint32_t clock);
+void vgm_ym2612_part1_write(vgm_writer *writer, uint32_t cycle, uint8_t reg, uint8_t value);
+void vgm_ym2612_part2_write(vgm_writer *writer, uint32_t cycle, uint8_t reg, uint8_t value);
+void vgm_adjust_cycles(vgm_writer *writer, uint32_t deduction);
+void vgm_close(vgm_writer *writer);
+
#endif //VGM_H_