X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=linux%2F940ctl_ym2612.c;h=50b32e3b74dcb7044537e55e2bbdf665cbfe67c1;hb=fa5e045bdc817112c1abf19e65e2d3481d51c48a;hp=b5263dc598008fe57a15c3417bde9fe048f9f28c;hpb=598e7c06cd865f9c4f82e3ebb9b08e8b064f00e8;p=libpicofe.git diff --git a/linux/940ctl_ym2612.c b/linux/940ctl_ym2612.c index b5263dc..50b32e3 100644 --- a/linux/940ctl_ym2612.c +++ b/linux/940ctl_ym2612.c @@ -1,4 +1,5 @@ /* faked 940 code just uses local copy of ym2612 */ +/* TODO: rm this */ #include #include #include @@ -8,25 +9,18 @@ #include #include -#include "../../Pico/sound/ym2612.h" -#include "../gp2x/gp2x.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_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_; +// static _940_data_t *shared_data = &shared_data_; +_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,4 +211,3 @@ void mp3_start_play(FILE *f, int pos) // pos is 0-1023 } -