diff --git a/pcsx2/CDVD/CDVDaccess.cpp b/pcsx2/CDVD/CDVDaccess.cpp index 345dd1c7aa..385b20b0b7 100644 --- a/pcsx2/CDVD/CDVDaccess.cpp +++ b/pcsx2/CDVD/CDVDaccess.cpp @@ -241,6 +241,7 @@ static void DetectDiskType() // Paranoid mode: do not trust the plugin's detection system to work correctly. // (.. and there's no reason plugins should be doing their own detection anyway). +#if 0 switch(baseMediaType) { @@ -267,6 +268,7 @@ static void DetectDiskType() diskTypeCached = CDVD_TYPE_NODISC; return; } +#endif diskTypeCached = FindDiskType(mType); } diff --git a/plugins/spu2-x/src/Mixer.cpp b/plugins/spu2-x/src/Mixer.cpp index cd192c5b59..fc45925ffd 100644 --- a/plugins/spu2-x/src/Mixer.cpp +++ b/plugins/spu2-x/src/Mixer.cpp @@ -103,8 +103,10 @@ static void __forceinline XA_decode_block(s16* buffer, const s16* block, s32& pr } } -static void __forceinline IncrementNextA( const V_Core& thiscore, V_Voice& vc ) +static void __forceinline IncrementNextA(V_Core& thiscore, uint voiceidx) { + V_Voice &vc(thiscore.Voices[voiceidx]); + // Important! Both cores signal IRQ when an address is read, regardless of // which core actually reads the address. @@ -113,7 +115,7 @@ static void __forceinline IncrementNextA( const V_Core& thiscore, V_Voice& vc ) if( Cores[i].IRQEnable && (vc.NextA==Cores[i].IRQA ) ) { if( IsDevBuild ) - ConLog(" * SPU2 Core %d: IRQ Called (IRQ passed).\n", i); + ConLog(" * SPU2 Core %d: IRQ Called (IRQA (%05X) passed; voice %d).\n", i, Cores[i].IRQA, thiscore.Index * 24 + voiceidx); Spdif.Info |= 4 << i; SetIrqCall(); @@ -211,7 +213,7 @@ static __forceinline s32 __fastcall GetNextDataBuffered( V_Core& thiscore, uint if( (vc.SCurrent&3) == 3 ) { _Increment: - IncrementNextA( thiscore, vc ); + IncrementNextA( thiscore, voiceidx ); } return vc.SBuffer[vc.SCurrent++]; @@ -237,14 +239,14 @@ static __forceinline void __fastcall GetNextDataDummy(V_Core& thiscore, uint voi if ((vc.LoopFlags & XAFLAG_LOOP_START) && !vc.LoopMode) vc.LoopStartA = vc.NextA; - IncrementNextA(thiscore, vc); + IncrementNextA(thiscore, voiceidx); vc.SCurrent = 0; } vc.SP -= 4096 * (4 - (vc.SCurrent & 3)); vc.SCurrent += 4 - (vc.SCurrent & 3); - IncrementNextA(thiscore, vc); + IncrementNextA(thiscore, voiceidx); } ///////////////////////////////////////////////////////////////////////////////////////// diff --git a/plugins/spu2-x/src/spu2sys.cpp b/plugins/spu2-x/src/spu2sys.cpp index fbea1e8fcd..20a320eda0 100644 --- a/plugins/spu2-x/src/spu2sys.cpp +++ b/plugins/spu2-x/src/spu2sys.cpp @@ -135,7 +135,7 @@ void V_Core::Reset( int index ) FxEnable = 0; IRQA = 0xFFFF0; - IRQEnable = 1; + IRQEnable = 0; for( uint v=0; v0) + if(Cores[0].InitDelay>0) { Cores[0].InitDelay--; if(Cores[0].InitDelay==0) @@ -326,7 +325,7 @@ __forceinline void TimeUpdate(u32 cClocks) { Cores[1].Reset(1); } - }*/ + } #ifndef ENABLE_NEW_IOPDMA_SPU2 //Update DMA4 interrupt delay counter @@ -855,12 +854,9 @@ static void __fastcall RegWrite_Core( u16 value ) { // When we have exact cycle update info from the Pcsx2 IOP unit, then use // the more accurate delayed initialization system. - ConLog( " * SPU2: Runtime core%d reset requested, (but ignored. Hack.). \n", core ); - // Fixme: - // Not initializing a core reset here fixes SH Shattered Memories and Silver Surfer audio. - // This is a hack, but better than clearing the wrong bits. - // Also check the commented out code in TimeUpdate() above. - /*if(cyclePtr != NULL) + ConLog( " * SPU2: Runtime core%d reset\n", core ); + + if(cyclePtr != NULL) { thiscore.InitDelay = 1; thiscore.Regs.STATX = 0; @@ -868,7 +864,7 @@ static void __fastcall RegWrite_Core( u16 value ) else { thiscore.Reset(thiscore.Index); - }*/ + } } thiscore.AttrBit0 =(value>> 0) & 0x01; //1 bit