{\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 = (spu.spuStat & ~0x3f) | (val & 0x3f);\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
return spu.spuCtrl;\r
\r
case H_SPUstat:\r
- return (spu.spuStat & ~0x3F) | (spu.spuCtrl & 0x3F);\r
+ return spu.spuStat;\r
\r
case H_SPUaddr:\r
return (unsigned short)(spu.spuAddr>>3);\r