X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=linux%2F940ctl_ym2612.c;h=9d7e38d397f1d065c51566ff4fb0bed3b038bca6;hb=2c60056042e94007286e3e0e1789f4c9a78b7731;hp=2cfa57bd9971740b082c47b05cdcc7953e541f62;hpb=98c9d8d9e79355a54e59123cf10bac1da78c1c6b;p=libpicofe.git diff --git a/linux/940ctl_ym2612.c b/linux/940ctl_ym2612.c index 2cfa57b..9d7e38d 100644 --- a/linux/940ctl_ym2612.c +++ b/linux/940ctl_ym2612.c @@ -8,25 +8,19 @@ #include #include -#include "../../Pico/sound/ym2612.h" +#include "../../pico/sound/ym2612.h" #include "../gp2x/gp2x.h" #include "../gp2x/emu.h" #include "../gp2x/menu.h" #include "../gp2x/code940/940shared.h" -#include "../gp2x/helix/pub/mp3dec.h" -#include "../../Pico/PicoInt.h" +#include "../common/helix/pub/mp3dec.h" +#include "../../pico/pico_int.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,36 +28,14 @@ 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) +int YM2612Write_940(unsigned int a, unsigned int v, int scanline) { YM2612Write_(a, 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) { @@ -81,11 +53,29 @@ void YM2612PicoStateLoad_940(void) } } +void YM2612PicoStateSave2_940(int tat, int tbt) +{ + YM2612PicoStateSave2(tat, tbt); +} -void YM2612Init_940(int baseclock, int rate) +int YM2612PicoStateLoad2_940(int *tat, int *tbt) +{ + return YM2612PicoStateLoad2(tat, tbt); +} + + +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 +86,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 +128,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 +171,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,8 +211,3 @@ void mp3_start_play(FILE *f, int pos) // pos is 0-1023 } -int mp3_get_offset(void) -{ - return 0; -} -