Mercurial > repos > blastem
annotate vgm.h @ 1971:80920c21bb52
Add an event log soft flush and call it twice per frame in between hard flushes to netplay latency when there are insufficient hardware updates to flush packets in the middle of a frame
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 08 May 2020 11:40:30 -0700 |
parents | 508522f08e4d |
children | 327332138c5c |
rev | line source |
---|---|
862
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #ifndef VGM_H_ |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 #define VGM_H_ |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 |
1909
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
4 #include <stdint.h> |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
5 #include <stdio.h> |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
6 |
862
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 #pragma pack(push, 1) |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 typedef struct { |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 char ident[4]; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 uint32_t eof_offset; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 uint32_t version; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 uint32_t sn76489_clk; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 uint32_t ym2413_clk; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 uint32_t gd3_offset; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 uint32_t num_samples; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 uint32_t loop_offset; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 uint32_t loop_samples; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 uint32_t rate; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 uint16_t sn76489_fb; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 uint8_t sn76489_shift; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 uint8_t sn76489_flags; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 uint32_t ym2612_clk; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 uint32_t ym2151_clk; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 uint32_t data_offset; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 uint32_t sega_pcm_clk; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 uint32_t sega_pcm_reg; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 } vgm_header; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 enum { |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 CMD_PSG_STEREO = 0x4F, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 CMD_PSG, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 CMD_YM2413, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 CMD_YM2612_0, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 CMD_YM2612_1, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 CMD_YM2151, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 CMD_YM2203, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
37 CMD_YM2608_0, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
38 CMD_YM2608_1, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 CMD_YM2610_0, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 CMD_YM2610_1, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 CMD_YM3812, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
42 CMD_YM3526, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
43 CMD_Y8950, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
44 CMD_YMZ280B, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
45 CMD_YMF262_0, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 CMD_YMF262_1, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
47 CMD_WAIT = 0x61, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
48 CMD_WAIT_60, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
49 CMD_WAIT_50, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
50 CMD_END = 0x66, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
51 CMD_DATA, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
52 CMD_PCM_WRITE, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
53 CMD_WAIT_SHORT = 0x70, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
54 CMD_YM2612_DAC = 0x80, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
55 CMD_DAC_STREAM_SETUP = 0x90, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
56 CMD_DAC_STREAM_DATA, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
57 CMD_DAC_STREAM_FREQ, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
58 CMD_DAC_STREAM_START, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
59 CMD_DAC_STREAM_STOP, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
60 CMD_DAC_STREAM_STARTFAST, |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
61 CMD_DATA_SEEK = 0xE0 |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
62 }; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
63 |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
64 enum { |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
65 DATA_YM2612_PCM = 0 |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
66 }; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
67 |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
68 #pragma pack(pop) |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
69 |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
70 typedef struct { |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
71 struct data_block *next; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
72 uint8_t *data; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
73 uint32_t size; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
74 uint8_t type; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
75 } data_block; |
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
76 |
1909
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
77 typedef struct { |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
78 vgm_header header; |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
79 FILE *f; |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
80 uint32_t master_clock; |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
81 uint32_t last_cycle; |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
82 } vgm_writer; |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
83 |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
84 vgm_writer *vgm_write_open(char *filename, uint32_t rate, uint32_t clock, uint32_t cycle); |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
85 void vgm_sn76489_init(vgm_writer *writer, uint32_t clock, uint16_t feedback, uint8_t shift_reg_size, uint8_t flags); |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
86 void vgm_sn76489_write(vgm_writer *writer, uint32_t cycle, uint8_t value); |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
87 void vgm_ym2612_init(vgm_writer *writer, uint32_t clock); |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
88 void vgm_ym2612_part1_write(vgm_writer *writer, uint32_t cycle, uint8_t reg, uint8_t value); |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
89 void vgm_ym2612_part2_write(vgm_writer *writer, uint32_t cycle, uint8_t reg, uint8_t value); |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
90 void vgm_adjust_cycles(vgm_writer *writer, uint32_t deduction); |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
91 void vgm_close(vgm_writer *writer); |
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
862
diff
changeset
|
92 |
862
a2034b8d7495
Commit of VGM header that was missed previously
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
93 #endif //VGM_H_ |