notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
android: solve "text segment is not shareable"
[picodrive.git]
/
pico
/
sound
/
ym2612.c
diff --git
a/pico/sound/ym2612.c
b/pico/sound/ym2612.c
index
55234f6
..
692f34e
100644
(file)
--- a/
pico/sound/ym2612.c
+++ b/
pico/sound/ym2612.c
@@
-139,6
+139,10
@@
void memset32(int *dest, int c, int count);
#define INLINE static __inline
\r
#endif
\r
\r
#define INLINE static __inline
\r
#endif
\r
\r
+#ifndef STRICTINLINE
\r
+#define STRICTINLINE static inline
\r
+#endif
\r
+
\r
#ifndef M_PI
\r
#define M_PI 3.14159265358979323846
\r
#endif
\r
#ifndef M_PI
\r
#define M_PI 3.14159265358979323846
\r
#endif
\r
@@
-531,7
+535,7
@@
static int g_lfo_ampm = 0;
\r
\r
/* OPN Mode Register Write */
\r
\r
\r
/* OPN Mode Register Write */
\r
-INLINE void set_timers( int v )
\r
+
static
INLINE void set_timers( int v )
\r
{
\r
/* b7 = CSM MODE */
\r
/* b6 = 3 slot mode */
\r
{
\r
/* b7 = CSM MODE */
\r
/* b6 = 3 slot mode */
\r
@@
-553,7
+557,7
@@
INLINE void set_timers( int v )
}
\r
\r
\r
}
\r
\r
\r
-INLINE void FM_KEYON(int c , int s )
\r
+
static
INLINE void FM_KEYON(int c , int s )
\r
{
\r
FM_SLOT *SLOT = &ym2612.CH[c].SLOT[s];
\r
if( !SLOT->key )
\r
{
\r
FM_SLOT *SLOT = &ym2612.CH[c].SLOT[s];
\r
if( !SLOT->key )
\r
@@
-565,7
+569,7
@@
INLINE void FM_KEYON(int c , int s )
}
\r
}
\r
\r
}
\r
}
\r
\r
-INLINE void FM_KEYOFF(int c , int s )
\r
+
static
INLINE void FM_KEYOFF(int c , int s )
\r
{
\r
FM_SLOT *SLOT = &ym2612.CH[c].SLOT[s];
\r
if( SLOT->key )
\r
{
\r
FM_SLOT *SLOT = &ym2612.CH[c].SLOT[s];
\r
if( SLOT->key )
\r
@@
-578,7
+582,7
@@
INLINE void FM_KEYOFF(int c , int s )
\r
\r
/* set detune & multiple */
\r
\r
\r
/* set detune & multiple */
\r
-INLINE void set_det_mul(FM_CH *CH, FM_SLOT *SLOT, int v)
\r
+
static
INLINE void set_det_mul(FM_CH *CH, FM_SLOT *SLOT, int v)
\r
{
\r
SLOT->mul = (v&0x0f)? (v&0x0f)*2 : 1;
\r
SLOT->DT = ym2612.OPN.ST.dt_tab[(v>>4)&7];
\r
{
\r
SLOT->mul = (v&0x0f)? (v&0x0f)*2 : 1;
\r
SLOT->DT = ym2612.OPN.ST.dt_tab[(v>>4)&7];
\r
@@
-586,13
+590,13
@@
INLINE void set_det_mul(FM_CH *CH, FM_SLOT *SLOT, int v)
}
\r
\r
/* set total level */
\r
}
\r
\r
/* set total level */
\r
-INLINE void set_tl(FM_SLOT *SLOT, int v)
\r
+
static
INLINE void set_tl(FM_SLOT *SLOT, int v)
\r
{
\r
SLOT->tl = (v&0x7f)<<(ENV_BITS-7); /* 7bit TL */
\r
}
\r
\r
/* set attack rate & key scale */
\r
{
\r
SLOT->tl = (v&0x7f)<<(ENV_BITS-7); /* 7bit TL */
\r
}
\r
\r
/* set attack rate & key scale */
\r
-INLINE void set_ar_ksr(FM_CH *CH, FM_SLOT *SLOT, int v)
\r
+
static
INLINE void set_ar_ksr(FM_CH *CH, FM_SLOT *SLOT, int v)
\r
{
\r
UINT8 old_KSR = SLOT->KSR;
\r
\r
{
\r
UINT8 old_KSR = SLOT->KSR;
\r
\r
@@
-624,7
+628,7
@@
INLINE void set_ar_ksr(FM_CH *CH, FM_SLOT *SLOT, int v)
}
\r
\r
/* set decay rate */
\r
}
\r
\r
/* set decay rate */
\r
-INLINE void set_dr(FM_SLOT *SLOT, int v)
\r
+
static
INLINE void set_dr(FM_SLOT *SLOT, int v)
\r
{
\r
int eg_sh_d1r, eg_sel_d1r;
\r
\r
{
\r
int eg_sh_d1r, eg_sel_d1r;
\r
\r
@@
-637,7
+641,7
@@
INLINE void set_dr(FM_SLOT *SLOT, int v)
}
\r
\r
/* set sustain rate */
\r
}
\r
\r
/* set sustain rate */
\r
-INLINE void set_sr(FM_SLOT *SLOT, int v)
\r
+
static
INLINE void set_sr(FM_SLOT *SLOT, int v)
\r
{
\r
int eg_sh_d2r, eg_sel_d2r;
\r
\r
{
\r
int eg_sh_d2r, eg_sel_d2r;
\r
\r
@@
-650,7
+654,7
@@
INLINE void set_sr(FM_SLOT *SLOT, int v)
}
\r
\r
/* set release rate */
\r
}
\r
\r
/* set release rate */
\r
-INLINE void set_sl_rr(FM_SLOT *SLOT, int v)
\r
+
static
INLINE void set_sl_rr(FM_SLOT *SLOT, int v)
\r
{
\r
int eg_sh_rr, eg_sel_rr;
\r
\r
{
\r
int eg_sh_rr, eg_sel_rr;
\r
\r
@@
-664,9
+668,7
@@
INLINE void set_sl_rr(FM_SLOT *SLOT, int v)
SLOT->eg_pack_rr = eg_inc_pack[eg_sel_rr] | (eg_sh_rr<<24);
\r
}
\r
\r
SLOT->eg_pack_rr = eg_inc_pack[eg_sel_rr] | (eg_sh_rr<<24);
\r
}
\r
\r
-
\r
-
\r
-INLINE signed int op_calc(UINT32 phase, unsigned int env, signed int pm)
\r
+static INLINE signed int op_calc(UINT32 phase, unsigned int env, signed int pm)
\r
{
\r
int ret, sin = (phase>>16) + (pm>>1);
\r
int neg = sin & 0x200;
\r
{
\r
int ret, sin = (phase>>16) + (pm>>1);
\r
int neg = sin & 0x200;
\r
@@
-683,7
+685,7
@@
INLINE signed int op_calc(UINT32 phase, unsigned int env, signed int pm)
return neg ? -ret : ret;
\r
}
\r
\r
return neg ? -ret : ret;
\r
}
\r
\r
-INLINE signed int op_calc1(UINT32 phase, unsigned int env, signed int pm)
\r
+
static
INLINE signed int op_calc1(UINT32 phase, unsigned int env, signed int pm)
\r
{
\r
int ret, sin = (phase+pm)>>16;
\r
int neg = sin & 0x200;
\r
{
\r
int ret, sin = (phase+pm)>>16;
\r
int neg = sin & 0x200;
\r
@@
-701,7
+703,7
@@
INLINE signed int op_calc1(UINT32 phase, unsigned int env, signed int pm)
\r
#if !defined(_ASM_YM2612_C) || defined(EXTERNAL_YM2612)
\r
/* advance LFO to next sample */
\r
\r
#if !defined(_ASM_YM2612_C) || defined(EXTERNAL_YM2612)
\r
/* advance LFO to next sample */
\r
-INLINE int advance_lfo(int lfo_ampm, UINT32 lfo_cnt_old, UINT32 lfo_cnt)
\r
+
static
INLINE int advance_lfo(int lfo_ampm, UINT32 lfo_cnt_old, UINT32 lfo_cnt)
\r
{
\r
UINT8 pos;
\r
UINT8 prev_pos;
\r
{
\r
UINT8 pos;
\r
UINT8 prev_pos;
\r
@@
-742,7
+744,7
@@
INLINE int advance_lfo(int lfo_ampm, UINT32 lfo_cnt_old, UINT32 lfo_cnt)
#define EG_INC_VAL() \
\r
((1 << ((pack >> ((eg_cnt>>shift)&7)*3)&7)) >> 1)
\r
\r
#define EG_INC_VAL() \
\r
((1 << ((pack >> ((eg_cnt>>shift)&7)*3)&7)) >> 1)
\r
\r
-UINT32 update_eg_phase(FM_SLOT *SLOT, UINT32 eg_cnt)
\r
+
STRICTINLINE
UINT32 update_eg_phase(FM_SLOT *SLOT, UINT32 eg_cnt)
\r
{
\r
INT32 volume = SLOT->volume;
\r
\r
{
\r
INT32 volume = SLOT->volume;
\r
\r
@@
-1201,7
+1203,7
@@
static int chan_render(int *buffer, int length, int c, UINT32 flags) // flags: s
}
\r
\r
/* update phase increment and envelope generator */
\r
}
\r
\r
/* update phase increment and envelope generator */
\r
-void refresh_fc_eg_slot(FM_SLOT *SLOT, int fc, int kc)
\r
+
STRICTINLINE
void refresh_fc_eg_slot(FM_SLOT *SLOT, int fc, int kc)
\r
{
\r
int ksr, fdt;
\r
\r
{
\r
int ksr, fdt;
\r
\r
@@
-1250,7
+1252,7
@@
void refresh_fc_eg_slot(FM_SLOT *SLOT, int fc, int kc)
}
\r
\r
/* update phase increment counters */
\r
}
\r
\r
/* update phase increment counters */
\r
-
INLINE
void refresh_fc_eg_chan(FM_CH *CH)
\r
+void refresh_fc_eg_chan(FM_CH *CH)
\r
{
\r
if( CH->SLOT[SLOT1].Incr==-1){
\r
int fc = CH->fc;
\r
{
\r
if( CH->SLOT[SLOT1].Incr==-1){
\r
int fc = CH->fc;
\r
@@
-1262,7
+1264,7
@@
INLINE void refresh_fc_eg_chan(FM_CH *CH)
}
\r
}
\r
\r
}
\r
}
\r
\r
-
INLINE
void refresh_fc_eg_chan_sl3(void)
\r
+void refresh_fc_eg_chan_sl3(void)
\r
{
\r
if( ym2612.CH[2].SLOT[SLOT1].Incr==-1)
\r
{
\r
{
\r
if( ym2612.CH[2].SLOT[SLOT1].Incr==-1)
\r
{
\r