Mercurial > repos > blastem
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 } |