comparison libblastem.c @ 1688:395f684c5379

Fixed the most glaring issues in libretro build
author Mike Pavone <pavone@retrodev.com>
date Sun, 20 Jan 2019 16:24:22 -0800
parents 6c54bb5fe3b3
children 7f42a93f18a4
comparison
equal deleted inserted replaced
1687:6c54bb5fe3b3 1688:395f684c5379
1 #include <stdlib.h>
2 #include <string.h>
1 #include "libretro.h" 3 #include "libretro.h"
2 #include "system.h" 4 #include "system.h"
3 #include "util.h" 5 #include "util.h"
4 #include "vdp.h" 6 #include "vdp.h"
5 #include "render.h" 7 #include "render.h"
282 static audio_source *audio_sources[8]; 284 static audio_source *audio_sources[8];
283 static uint8_t num_audio_sources; 285 static uint8_t num_audio_sources;
284 audio_source *render_audio_source(uint64_t master_clock, uint64_t sample_divider, uint8_t channels) 286 audio_source *render_audio_source(uint64_t master_clock, uint64_t sample_divider, uint8_t channels)
285 { 287 {
286 audio_sources[num_audio_sources] = calloc(1, sizeof(audio_source)); 288 audio_sources[num_audio_sources] = calloc(1, sizeof(audio_source));
289 audio_sources[num_audio_sources]->freq = master_clock / sample_divider;
287 return audio_sources[num_audio_sources++]; 290 return audio_sources[num_audio_sources++];
288 } 291 }
289 292
290 void render_audio_adjust_clock(audio_source *src, uint64_t master_clock, uint64_t sample_divider) 293 void render_audio_adjust_clock(audio_source *src, uint64_t master_clock, uint64_t sample_divider)
291 { 294 {
293 296
294 static void check_put_sample(void) 297 static void check_put_sample(void)
295 { 298 {
296 for (int i = 0; i < num_audio_sources; i++) 299 for (int i = 0; i < num_audio_sources; i++)
297 { 300 {
298 if (!audio_sources[i]->num_samples) { 301 int32_t min_samples = audio_sources[i]->freq / 53267;
299 return; 302 if (audio_sources[i]->num_samples < min_samples) {
300 }
301 int32_t effective_freq = audio_sources[i]->freq / audio_sources[i]->num_samples;
302 if (abs(effective_freq - 53267) > 53267) {
303 return; 303 return;
304 } 304 }
305 } 305 }
306 int16_t left = 0, right = 0; 306 int16_t left = 0, right = 0;
307 for (int i = 0; i < num_audio_sources; i++) 307 for (int i = 0; i < num_audio_sources; i++)
325 src->left_accum += left; 325 src->left_accum += left;
326 src->right_accum += right; 326 src->right_accum += right;
327 src->num_samples++; 327 src->num_samples++;
328 check_put_sample(); 328 check_put_sample();
329 } 329 }
330 void render_pause_source(audio_source *src) 330
331 {
332 }
333 void render_resume_source(audio_source *src)
334 {
335 }
336 void render_free_source(audio_source *src) 331 void render_free_source(audio_source *src)
337 { 332 {
338 int index; 333 int index;
339 for (index = 0; index < num_audio_sources; index++) 334 for (index = 0; index < num_audio_sources; index++)
340 { 335 {
348 } 343 }
349 344
350 void bindings_set_mouse_mode(uint8_t mode) 345 void bindings_set_mouse_mode(uint8_t mode)
351 { 346 {
352 } 347 }
353 void bindings_release_capture(void)
354 {
355 }
356 void bindings_reacquire_capture(void)
357 {
358 }