{\r
//-------------------------------------------------//\r
case H_SPUaddr:\r
- spu.spuAddr = (unsigned long) val<<3;\r
+ spu.spuAddr = (unsigned int)val << 3;\r
//check_irq_io(spu.spuAddr);\r
break;\r
//-------------------------------------------------//\r
break;\r
//-------------------------------------------------//\r
case H_SPUctrl:\r
+ spu.spuStat &= ~STAT_IRQ | val;\r
if (!(spu.spuCtrl & CTRL_IRQ)) {\r
- spu.spuStat&=~STAT_IRQ;\r
if (val & CTRL_IRQ)\r
schedule_next_irq();\r
}\r
break;\r
//-------------------------------------------------//\r
case H_SPUstat:\r
- spu.spuStat=val&0xf800;\r
+ //spu.spuStat=val&0xf800;\r
break;\r
//-------------------------------------------------//\r
case H_SPUReverbAddr:\r
goto upd_irq;\r
//-------------------------------------------------//\r
case H_SPUrvolL:\r
- spu.rvb->VolLeft=val;\r
+ spu.rvb->VolLeft = (int16_t)val;\r
break;\r
//-------------------------------------------------//\r
case H_SPUrvolR:\r
- spu.rvb->VolRight=val;\r
+ spu.rvb->VolRight = (int16_t)val;\r
break;\r
//-------------------------------------------------//\r
\r
log_unhandled("koff1 %04x %d\n", val, cycles - spu.last_keyon_cycles);\r
val &= ~regAreaGet(H_SPUon1);\r
}\r
+ do_samples_if_needed(cycles, 0, 2);\r
SoundOff(0,16,val);\r
break;\r
//-------------------------------------------------//\r
log_unhandled("koff2 %04x %d\n", val, cycles - spu.last_keyon_cycles);\r
val &= ~regAreaGet(H_SPUon2);\r
}\r
+ do_samples_if_needed(cycles, 0, 2);\r
SoundOff(16,24,val);\r
break;\r
//-------------------------------------------------//\r