there should be no reason to ever turn it off
extern int iUseReverb;
extern int iUseInterpolation;
extern int iXAPitch;
extern int iUseReverb;
extern int iUseInterpolation;
extern int iXAPitch;
extern int iVolume;
int ready_to_go;
extern int iVolume;
int ready_to_go;
iUseReverb = 2;
iUseInterpolation = 1;
iXAPitch = 0;
iUseReverb = 2;
iUseInterpolation = 1;
iXAPitch = 0;
iVolume = 768;
#ifndef __ARM_ARCH_7A__ /* XXX */
iUseReverb = 0;
iVolume = 768;
#ifndef __ARM_ARCH_7A__ /* XXX */
iUseReverb = 0;
extern int iUseReverb;
extern int iUseInterpolation;
extern int iXAPitch;
extern int iUseReverb;
extern int iUseInterpolation;
extern int iXAPitch;
extern int iVolume;
static const char *bioses[24];
extern int iVolume;
static const char *bioses[24];
CE_INTVAL_V(iUseReverb, 3),
CE_INTVAL_V(iXAPitch, 3),
CE_INTVAL_V(iUseInterpolation, 3),
CE_INTVAL_V(iUseReverb, 3),
CE_INTVAL_V(iXAPitch, 3),
CE_INTVAL_V(iUseInterpolation, 3),
- CE_INTVAL_V(iSPUIRQWait, 3),
CE_INTVAL(warned_about_bios),
CE_INTVAL(in_evdev_allow_abs_only),
CE_INTVAL(volume_boost),
CE_INTVAL(warned_about_bios),
CE_INTVAL(in_evdev_allow_abs_only),
CE_INTVAL(volume_boost),
static const char *men_spu_interp[] = { "None", "Simple", "Gaussian", "Cubic", NULL };
static const char h_spu_volboost[] = "Large values cause distortion";
static const char *men_spu_interp[] = { "None", "Simple", "Gaussian", "Cubic", NULL };
static const char h_spu_volboost[] = "Large values cause distortion";
-static const char h_spu_irq_wait[] = "Wait for CPU (recommended set to ON)";
static menu_entry e_menu_plugin_spu[] =
{
static menu_entry e_menu_plugin_spu[] =
{
mee_onoff ("Reverb", 0, iUseReverb, 2),
mee_enum ("Interpolation", 0, iUseInterpolation, men_spu_interp),
mee_onoff ("Adjust XA pitch", 0, iXAPitch, 1),
mee_onoff ("Reverb", 0, iUseReverb, 2),
mee_enum ("Interpolation", 0, iUseInterpolation, men_spu_interp),
mee_onoff ("Adjust XA pitch", 0, iXAPitch, 1),
- mee_onoff_h ("SPU IRQ Wait", 0, iSPUIRQWait, 1, h_spu_irq_wait),
\r
extern int iVolume;\r
extern int iXAPitch;\r
\r
extern int iVolume;\r
extern int iXAPitch;\r
-extern int iSPUIRQWait;\r
-extern int iDebugMode;\r
-extern int iRecordMode;\r
extern int iUseReverb;\r
extern int iUseInterpolation;\r
// MISC\r
extern int iUseReverb;\r
extern int iUseInterpolation;\r
// MISC\r
int iVolume=768; // 1024 is 1.0
int iXAPitch=1;
int iVolume=768; // 1024 is 1.0
int iXAPitch=1;
-int iSPUIRQWait=1;
-int iDebugMode=0;
-int iRecordMode=0;
int iUseReverb=2;
int iUseInterpolation=2;
int iUseReverb=2;
int iUseInterpolation=2;
{ \
sbpos = 0; \
d = decode_block(ch); \
{ \
sbpos = 0; \
d = decode_block(ch); \
{ \
ret = ns; \
goto out; \
{ \
ret = ns; \
goto out; \
// advance "stopped" channels that can cause irqs
// (all chans are always playing on the real thing..)
// advance "stopped" channels that can cause irqs
// (all chans are always playing on the real thing..)
- if(!bIRQReturn && (spuCtrl&CTRL_IRQ))
for(ch=0;ch<MAXCHAN;ch++)
{
if(!(silentch&(1<<ch))) continue; // already handled
for(ch=0;ch<MAXCHAN;ch++)
{
if(!(silentch&(1<<ch))) continue; // already handled
if(s_chan[ch].pCurr > pSpuIrq && s_chan[ch].pLoop > pSpuIrq)
continue;
if(s_chan[ch].pCurr > pSpuIrq && s_chan[ch].pLoop > pSpuIrq)
continue;
- s_chan[ch].spos += s_chan[ch].sinc * NSSIZE;
+ s_chan[ch].spos += s_chan[ch].sinc * (ns_to - ns_from);
while(s_chan[ch].spos >= 28 * 0x10000)
{
unsigned char *start = s_chan[ch].pCurr;
while(s_chan[ch].spos >= 28 * 0x10000)
{
unsigned char *start = s_chan[ch].pCurr;
- if(bIRQReturn && iSPUIRQWait) // special return for "spu irq - wait for cpu action"
+ if(bIRQReturn) // special return for "spu irq - wait for cpu action"
pMixIrq = 0;
memset((void *)s_chan, 0, (MAXCHAN + 1) * sizeof(SPUCHAN));
pSpuIrq = 0;
pMixIrq = 0;
memset((void *)s_chan, 0, (MAXCHAN + 1) * sizeof(SPUCHAN));
pSpuIrq = 0;
lastch = -1;
SetupStreams(); // prepare streaming
lastch = -1;
SetupStreams(); // prepare streaming