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_