comparison vgmplay.c @ 812:574495372d1c

Finish OS X support in build_release script. Fix a name conflict in vgmplay on OS X. Call set_exe_str in vgmplay and stateview
author Michael Pavone <pavone@retrodev.com>
date Sun, 26 Jul 2015 21:18:44 -0700
parents 3eced113081c
children 7068a9db6dd0
comparison
equal deleted inserted replaced
811:b1a09ef90755 812:574495372d1c
108 108
109 #define CYCLE_LIMIT MCLKS_NTSC/60 109 #define CYCLE_LIMIT MCLKS_NTSC/60
110 #define MAX_SOUND_CYCLES 100000 110 #define MAX_SOUND_CYCLES 100000
111 tern_node * config; 111 tern_node * config;
112 112
113 void wait(ym2612_context * y_context, psg_context * p_context, uint32_t * current_cycle, uint32_t cycles) 113 void vgm_wait(ym2612_context * y_context, psg_context * p_context, uint32_t * current_cycle, uint32_t cycles)
114 { 114 {
115 while (cycles > MAX_SOUND_CYCLES) 115 while (cycles > MAX_SOUND_CYCLES)
116 { 116 {
117 wait(y_context, p_context, current_cycle, MAX_SOUND_CYCLES); 117 vgm_wait(y_context, p_context, current_cycle, MAX_SOUND_CYCLES);
118 cycles -= MAX_SOUND_CYCLES; 118 cycles -= MAX_SOUND_CYCLES;
119 } 119 }
120 *current_cycle += cycles; 120 *current_cycle += cycles;
121 psg_run(p_context, *current_cycle); 121 psg_run(p_context, *current_cycle);
122 ym_run(y_context, *current_cycle); 122 ym_run(y_context, *current_cycle);
136 uint8_t type; 136 uint8_t type;
137 } data_block; 137 } data_block;
138 138
139 int main(int argc, char ** argv) 139 int main(int argc, char ** argv)
140 { 140 {
141 set_exe_str(argv[0]);
141 data_block *blocks = NULL; 142 data_block *blocks = NULL;
142 data_block *seek_block = NULL; 143 data_block *seek_block = NULL;
143 uint32_t seek_offset; 144 uint32_t seek_offset;
144 uint32_t block_offset; 145 uint32_t block_offset;
145 146
197 break; 198 break;
198 case CMD_WAIT: { 199 case CMD_WAIT: {
199 uint32_t wait_time = *(cur++); 200 uint32_t wait_time = *(cur++);
200 wait_time |= *(cur++) << 8; 201 wait_time |= *(cur++) << 8;
201 wait_time *= mclks_sample; 202 wait_time *= mclks_sample;
202 wait(&y_context, &p_context, &current_cycle, wait_time); 203 vgm_wait(&y_context, &p_context, &current_cycle, wait_time);
203 break; 204 break;
204 } 205 }
205 case CMD_WAIT_60: 206 case CMD_WAIT_60:
206 wait(&y_context, &p_context, &current_cycle, 735 * mclks_sample); 207 vgm_wait(&y_context, &p_context, &current_cycle, 735 * mclks_sample);
207 break; 208 break;
208 case CMD_WAIT_50: 209 case CMD_WAIT_50:
209 wait(&y_context, &p_context, &current_cycle, 882 * mclks_sample); 210 vgm_wait(&y_context, &p_context, &current_cycle, 882 * mclks_sample);
210 break; 211 break;
211 case CMD_END: 212 case CMD_END:
212 if (header.loop_offset && --loop_count) { 213 if (header.loop_offset && --loop_count) {
213 cur = data + header.loop_offset + 0x1C - (header.data_offset + 0x34); 214 cur = data + header.loop_offset + 0x1C - (header.data_offset + 0x34);
214 } else { 215 } else {
263 264
264 default: 265 default:
265 if (cmd >= CMD_WAIT_SHORT && cmd < (CMD_WAIT_SHORT + 0x10)) { 266 if (cmd >= CMD_WAIT_SHORT && cmd < (CMD_WAIT_SHORT + 0x10)) {
266 uint32_t wait_time = (cmd & 0xF) + 1; 267 uint32_t wait_time = (cmd & 0xF) + 1;
267 wait_time *= mclks_sample; 268 wait_time *= mclks_sample;
268 wait(&y_context, &p_context, &current_cycle, wait_time); 269 vgm_wait(&y_context, &p_context, &current_cycle, wait_time);
269 } else if (cmd >= CMD_YM2612_DAC && cmd < CMD_DAC_STREAM_SETUP) { 270 } else if (cmd >= CMD_YM2612_DAC && cmd < CMD_DAC_STREAM_SETUP) {
270 if (seek_block) { 271 if (seek_block) {
271 ym_address_write_part1(&y_context, 0x2A); 272 ym_address_write_part1(&y_context, 0x2A);
272 ym_data_write(&y_context, seek_block->data[block_offset++]); 273 ym_data_write(&y_context, seek_block->data[block_offset++]);
273 seek_offset++; 274 seek_offset++;
280 } 281 }
281 uint32_t wait_time = (cmd & 0xF); 282 uint32_t wait_time = (cmd & 0xF);
282 if (wait_time) 283 if (wait_time)
283 { 284 {
284 wait_time *= mclks_sample; 285 wait_time *= mclks_sample;
285 wait(&y_context, &p_context, &current_cycle, wait_time); 286 vgm_wait(&y_context, &p_context, &current_cycle, wait_time);
286 } 287 }
287 } else { 288 } else {
288 fatal_error("unimplemented command: %X at offset %X\n", cmd, (unsigned int)(cur - data - 1)); 289 fatal_error("unimplemented command: %X at offset %X\n", cmd, (unsigned int)(cur - data - 1));
289 } 290 }
290 } 291 }