extern int iUseReverb;
extern int iUseInterpolation;
extern int iXAPitch;
-extern int iSPUIRQWait;
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(iSPUIRQWait, 3),
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 h_spu_irq_wait[] = "Wait for CPU (recommended set to ON)";
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_h ("SPU IRQ Wait", 0, iSPUIRQWait, 1, h_spu_irq_wait),
mee_end,
};
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;
{ \
sbpos = 0; \
d = decode_block(ch); \
- if(d && iSPUIRQWait) \
+ if(d) \
{ \
ret = ns; \
goto out; \
// advance "stopped" channels that can cause irqs
// (all chans are always playing on the real thing..)
- if(!bIRQReturn && (spuCtrl&CTRL_IRQ))
+ if(spuCtrl&CTRL_IRQ)
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;
- 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;
}
}
- if(bIRQReturn && iSPUIRQWait) // special return for "spu irq - wait for cpu action"
+ if(bIRQReturn) // special return for "spu irq - wait for cpu action"
return 0;
pMixIrq = 0;
memset((void *)s_chan, 0, (MAXCHAN + 1) * sizeof(SPUCHAN));
pSpuIrq = 0;
- //iSPUIRQWait = 0;
lastch = -1;
SetupStreams(); // prepare streaming