Mercurial > repos > blastem
comparison vgmplay.c @ 2044:460e14497120
zlib support in vgmplay
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 21 Sep 2021 23:03:18 -0700 |
parents | 7ebcbef45362 |
children | cfd53c94fffb |
comparison
equal
deleted
inserted
replaced
2040:a61b47d5489e | 2044:460e14497120 |
---|---|
21 #define MCLKS_PER_68K 7 | 21 #define MCLKS_PER_68K 7 |
22 #define MCLKS_PER_YM MCLKS_PER_68K | 22 #define MCLKS_PER_YM MCLKS_PER_68K |
23 #define MCLKS_PER_Z80 15 | 23 #define MCLKS_PER_Z80 15 |
24 #define MCLKS_PER_PSG (MCLKS_PER_Z80*16) | 24 #define MCLKS_PER_PSG (MCLKS_PER_Z80*16) |
25 | 25 |
26 | |
27 #ifdef DISABLE_ZLIB | |
28 #define VGMFILE FILE* | |
29 #define vgmopen fopen | |
30 #define vgmread fread | |
31 #define vgmseek fseek | |
32 #define vgmgetc fgetc | |
33 #define vgmclose fclose | |
34 #else | |
35 #include "zlib/zlib.h" | |
36 #define VGMFILE gzFile | |
37 #define vgmopen gzopen | |
38 #define vgmread gzfread | |
39 #define vgmseek gzseek | |
40 #define vgmgetc gzgetc | |
41 #define vgmclose gzclose | |
42 #endif | |
43 | |
44 | |
26 system_header *current_system; | 45 system_header *current_system; |
27 | 46 |
28 void system_request_exit(system_header *system, uint8_t force_release) | 47 void system_request_exit(system_header *system, uint8_t force_release) |
29 { | 48 { |
30 } | 49 } |
118 ym_init(&y_context, MCLKS_NTSC, MCLKS_PER_YM, opts); | 137 ym_init(&y_context, MCLKS_NTSC, MCLKS_PER_YM, opts); |
119 | 138 |
120 psg_context p_context; | 139 psg_context p_context; |
121 psg_init(&p_context, MCLKS_NTSC, MCLKS_PER_PSG); | 140 psg_init(&p_context, MCLKS_NTSC, MCLKS_PER_PSG); |
122 | 141 |
123 FILE * f = fopen(argv[1], "rb"); | 142 VGMFILE * f = vgmopen(argv[1], "rb"); |
124 vgm_header header; | 143 vgm_header header; |
125 fread(&header, sizeof(header), 1, f); | 144 vgmread(&header, sizeof(header), 1, f); |
126 if (header.version < 0x150 || !header.data_offset) { | 145 if (header.version < 0x150 || !header.data_offset) { |
127 header.data_offset = 0xC; | 146 header.data_offset = 0xC; |
128 } | 147 } |
129 fseek(f, header.data_offset + 0x34, SEEK_SET); | 148 vgmseek(f, header.data_offset + 0x34, SEEK_SET); |
130 uint32_t data_size = header.eof_offset + 4 - (header.data_offset + 0x34); | 149 uint32_t data_size = header.eof_offset + 4 - (header.data_offset + 0x34); |
131 uint8_t * data = malloc(data_size); | 150 uint8_t * data = malloc(data_size); |
132 fread(data, 1, data_size, f); | 151 vgmread(data, 1, data_size, f); |
133 fclose(f); | 152 vgmclose(f); |
134 | 153 |
135 uint32_t mclks_sample = MCLKS_NTSC / 44100; | 154 uint32_t mclks_sample = MCLKS_NTSC / 44100; |
136 uint32_t loop_count = 2; | 155 uint32_t loop_count = 2; |
137 | 156 |
138 uint8_t * end = data + data_size; | 157 uint8_t * end = data + data_size; |