X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=linux%2F940ctl_ym2612.c;h=ee63458df0be995bdf3648f5f8920214f738bc17;hb=385a157ee97f08b698e008acd2b6e569f6d0b6c2;hp=4458a2f26f0099703cc238059b549336b46e7f4b;hpb=979ba09f053261922f8ccb4889c7367fbf010453;p=libpicofe.git diff --git a/linux/940ctl_ym2612.c b/linux/940ctl_ym2612.c index 4458a2f..ee63458 100644 --- a/linux/940ctl_ym2612.c +++ b/linux/940ctl_ym2612.c @@ -13,20 +13,18 @@ #include "../gp2x/emu.h" #include "../gp2x/menu.h" #include "../gp2x/code940/940shared.h" -#include "../gp2x/helix/pub/mp3dec.h" +#include "../common/helix/pub/mp3dec.h" #include "../../Pico/PicoInt.h" static YM2612 ym2612; YM2612 *ym2612_940 = &ym2612; -int mix_buffer_[44100/50*2]; /* this is where the YM2612 samples will be mixed to */ -int *mix_buffer = mix_buffer_; // static _940_data_t shared_data_; static _940_ctl_t shared_ctl_; // static _940_data_t *shared_data = &shared_data_; -static _940_ctl_t *shared_ctl = &shared_ctl_; +_940_ctl_t *shared_ctl = &shared_ctl_; unsigned char *mp3_mem = 0; @@ -34,15 +32,6 @@ unsigned char *mp3_mem = 0; /***********************************************************/ -#define MAXOUT (+32767) -#define MINOUT (-32768) - -/* limitter */ -#define Limit(val, max,min) { \ - if ( val > max ) val = max; \ - else if ( val < min ) val = min; \ -} - int YM2612Write_940(unsigned int a, unsigned int v) { @@ -51,19 +40,6 @@ int YM2612Write_940(unsigned int a, unsigned int v) return 0; // cause the engine to do updates once per frame only } -UINT8 YM2612Read_940(void) -{ - return YM2612Read_(); -} - - -int YM2612PicoTick_940(int n) -{ - YM2612PicoTick_(n); - - return 0; -} - void YM2612PicoStateLoad_940(void) { @@ -82,10 +58,18 @@ void YM2612PicoStateLoad_940(void) } -void YM2612Init_940(int baseclock, int rate) +void sharedmem_init(void) { mp3_mem = malloc(MP3_SIZE_MAX); +} + +void sharedmem_deinit(void) +{ + free(mp3_mem); +} +void YM2612Init_940(int baseclock, int rate) +{ YM2612Init_(baseclock, rate); } @@ -96,58 +80,6 @@ void YM2612ResetChip_940(void) } -static void mix_samples(short *dest_buf, int *ym_buf, short *mp3_buf, int len, int stereo) -{ - if (mp3_buf) - { - if (stereo) - { - for (; len > 0; len--) - { - int l, r; - l = r = *dest_buf; - l += *ym_buf++; r += *ym_buf++; - l += *mp3_buf++; r += *mp3_buf++; - Limit( l, MAXOUT, MINOUT ); - Limit( r, MAXOUT, MINOUT ); - *dest_buf++ = l; *dest_buf++ = r; - } - } else { - for (; len > 0; len--) - { - int l = *ym_buf++; - l += *dest_buf; - l += *mp3_buf++; - Limit( l, MAXOUT, MINOUT ); - *dest_buf++ = l; - } - } - } - else - { - if (stereo) - { - for (; len > 0; len--) - { - int l, r; - l = r = *dest_buf; - l += *ym_buf++, r += *ym_buf++; - Limit( l, MAXOUT, MINOUT ); - Limit( r, MAXOUT, MINOUT ); - *dest_buf++ = l; *dest_buf++ = r; - } - } else { - for (; len > 0; len--) - { - int l = *ym_buf++; - l += *dest_buf; - Limit( l, MAXOUT, MINOUT ); - *dest_buf++ = l; - } - } - } -} - #if 0 static void local_decode(void) { @@ -190,7 +122,7 @@ static void local_decode(void) static FILE *loaded_mp3 = 0; -void YM2612UpdateOne_940(short *buffer, int length, int stereo) +int YM2612UpdateOne_940(int *buffer, int length, int stereo, int is_buf_empty) { #if 0 int cdda_on, *ym_buffer = mix_buffer; @@ -233,13 +165,17 @@ void YM2612UpdateOne_940(short *buffer, int length, int stereo) mp3_samples_ready += 1152; } #else - YM2612UpdateOne_(buffer, length, stereo); // really writes to mix_buffer - - mix_samples(buffer, mix_buffer, 0, length, stereo); + return YM2612UpdateOne_(buffer, length, stereo, is_buf_empty); #endif } +void mp3_update(int *buffer, int length, int stereo) +{ + // nothing.. +} + + /***********************************************************/ void mp3_start_play(FILE *f, int pos) // pos is 0-1023 @@ -269,4 +205,9 @@ void mp3_start_play(FILE *f, int pos) // pos is 0-1023 } +int mp3_get_offset(void) +{ + return 0; +} +