Index: apps/codecs/libgme/ym2612_emu.c =================================================================== --- apps/codecs/libgme/ym2612_emu.c (revision 30283) +++ apps/codecs/libgme/ym2612_emu.c (working copy) @@ -499,6 +499,7 @@ // [0 - 4095] = +output [4095 - ...] = +output overflow (fill with 0) // [12288 - 16383] = -output [16384 - ...] = -output overflow (fill with 0) +#if !defined(ROCKBOX) for ( i = 0; i < TL_LENGHT; i++ ) { if (i >= PG_CUT_OFF) // YM2612 cut off sound after 78 dB (14 bits output ?) @@ -511,11 +512,12 @@ #ifdef YM2612_CALCUL_TABLES impl->g.TL_TAB [i] = (int) (MAX_OUT / pow( 10.0, ENV_STEP / 20.0f * i )); #else - impl->g.TL_TAB [i] = tl_coeff [i]; + impl->g.TL_TAB [i] = TL_COEFF [i]; #endif impl->g.TL_TAB [TL_LENGHT + i] = -impl->g.TL_TAB [i]; } } +#endif // Tableau SIN : // impl->g.SIN_TAB [x] [y] = sin(x) * y; @@ -909,6 +911,26 @@ CALC_EN( 3 ) \ int const* const TL_TAB = g->TL_TAB; +#if defined(ROCKBOX) +static inline int coeff( int i ) +{ + if (i >= (PG_CUT_OFF + TL_LENGHT)) { + return 0; + } + else if (i >= TL_LENGHT) { + return -TL_COEFF [i - TL_LENGHT]; + } + else if (i >= PG_CUT_OFF) { + return 0; + } + else + return TL_COEFF [i]; +} +#define SINT( i, o ) (coeff(g->SIN_TAB [(i)] + (o))) +#else +#define SINT( i, o ) (TL_TAB [g->SIN_TAB [(i)] + (o)]) +#endif + #define DO_FEEDBACK \ int CH_S0_OUT_0 = ch->S0_OUT [0]; \ { \ @@ -917,8 +939,6 @@ CH_S0_OUT_0 = SINT( (temp >> SIN_LBITS) & SIN_MASK, en0 ); \ } \ -#define SINT( i, o ) (TL_TAB [g->SIN_TAB [(i)] + (o)]) - #define DO_LIMIT \ CH_OUTd >>= MAX_OUT_BITS - output_bits + 2; \ Index: apps/codecs/libgme/ym2612_emu.h =================================================================== --- apps/codecs/libgme/ym2612_emu.h (revision 30283) +++ apps/codecs/libgme/ym2612_emu.h (working copy) @@ -167,7 +167,12 @@ short LFO_ENV_TAB [LFO_LENGHT]; // LFO AMS TABLE (adjusted for 11.8 dB) short LFO_FREQ_TAB [LFO_LENGHT]; // LFO FMS TABLE +#if !defined(ROCKBO) int TL_TAB [TL_LENGHT * 2]; // TOTAL LEVEL TABLE (positif and minus) +#else + /* Dummy definition */ + int *TL_TAB; +#endif unsigned int DECAY_TO_ATTACK [ENV_LENGHT]; // Conversion from decay to attack phase unsigned int FINC_TAB [2048]; // Frequency step table };