main vgm.h
 1#ifndef VGM_H_
 2#define VGM_H_
 3
 4#pragma pack(push, 1)
 5typedef struct {
 6	char     ident[4];
 7	uint32_t eof_offset;
 8	uint32_t version;
 9	uint32_t sn76489_clk;
10	uint32_t ym2413_clk;
11	uint32_t gd3_offset;
12	uint32_t num_samples;
13	uint32_t loop_offset;
14	uint32_t loop_samples;
15	uint32_t rate;
16	uint16_t sn76489_fb;
17	uint8_t  sn76489_shift;
18	uint8_t  sn76489_flags;
19	uint32_t ym2612_clk;
20	uint32_t ym2151_clk;
21	uint32_t data_offset;
22	uint32_t sega_pcm_clk;
23	uint32_t sega_pcm_reg;
24} vgm_header;
25
26enum {
27	CMD_PSG_STEREO = 0x4F,
28	CMD_PSG,
29	CMD_YM2413,
30	CMD_YM2612_0,
31	CMD_YM2612_1,
32	CMD_YM2151,
33	CMD_YM2203,
34	CMD_YM2608_0,
35	CMD_YM2608_1,
36	CMD_YM2610_0,
37	CMD_YM2610_1,
38	CMD_YM3812,
39	CMD_YM3526,
40	CMD_Y8950,
41	CMD_YMZ280B,
42	CMD_YMF262_0,
43	CMD_YMF262_1,
44	CMD_WAIT = 0x61,
45	CMD_WAIT_60,
46	CMD_WAIT_50,
47	CMD_END = 0x66,
48	CMD_DATA,
49	CMD_PCM_WRITE,
50	CMD_WAIT_SHORT = 0x70,
51	CMD_YM2612_DAC = 0x80,
52	CMD_DAC_STREAM_SETUP = 0x90,
53	CMD_DAC_STREAM_DATA,
54	CMD_DAC_STREAM_FREQ,
55	CMD_DAC_STREAM_START,
56	CMD_DAC_STREAM_STOP,
57	CMD_DAC_STREAM_STARTFAST,
58	CMD_DATA_SEEK = 0xE0
59};
60
61enum {
62	DATA_YM2612_PCM = 0
63};
64
65#pragma pack(pop)
66
67typedef struct {
68	struct data_block *next;
69	uint8_t           *data;
70	uint32_t          size;
71	uint8_t           type;
72} data_block;
73
74#endif //VGM_H_