1 /* faked 940 code just uses local copy of ym2612 */
11 #include "../../Pico/sound/ym2612.h"
12 #include "../gp2x/gp2x.h"
13 #include "../gp2x/emu.h"
14 #include "../gp2x/menu.h"
19 YM2612 *ym2612_940 = &ym2612;
20 int mix_buffer_[44100/50*2]; /* this is where the YM2612 samples will be mixed to */
21 int *mix_buffer = mix_buffer_;
24 /***********************************************************/
26 #define MAXOUT (+32767)
27 #define MINOUT (-32768)
30 #define Limit(val, max,min) { \
31 if ( val > max ) val = max; \
32 else if ( val < min ) val = min; \
36 int YM2612Write_940(unsigned int a, unsigned int v)
40 return 0; // cause the engine to do updates once per frame only
43 UINT8 YM2612Read_940(void)
49 int YM2612PicoTick_940(int n)
57 void YM2612PicoStateLoad_940(void)
61 YM2612PicoStateLoad_();
63 for(i = 0; i < 0x100; i++) {
65 YM2612Write_(1, ym2612.REGS[i]);
67 for(i = 0; i < 0x100; i++) {
69 YM2612Write_(3, ym2612.REGS[i|0x100]);
74 void YM2612Init_940(int baseclock, int rate)
76 YM2612Init_(baseclock, rate);
80 void YM2612ResetChip_940(void)
86 void YM2612UpdateOne_940(short *buffer, int length, int stereo)
90 YM2612UpdateOne_(buffer, length, stereo);
95 for (i = length; i > 0; i--) {
98 l += *mb++, r += *mb++;
99 Limit( l, MAXOUT, MINOUT );
100 Limit( r, MAXOUT, MINOUT );
101 *buffer++ = l; *buffer++ = r;
104 for (i = 0; i < length; i++) {
105 int l = mix_buffer[i];
107 Limit( l, MAXOUT, MINOUT );