diff --git a/news.txt b/news.txt index 5c217a5c7e..e801417013 100644 --- a/news.txt +++ b/news.txt @@ -3,9 +3,12 @@ Bug fix release 1.0.1: System: Fixed incorrect handling of framerate adjustment percentage settings. Fixed cases in which GS window settings do not apply until the PCSX2 is restarted. +Hidden disable GS output option as isn't currently stable and is only meant for testing. Core: Fixed crash on startup when virtual memory for SuperVU cannot be allocated. +Fixed scratchpad DMA access to VU1 memory. SPU2-X: -Fixed out of bounds array access in ADPCM decoding causing bad audio. (Multiple Crash Bandicoot games.) \ No newline at end of file +Fixed out of bounds array access in ADPCM decoding causing bad audio. (Multiple Crash Bandicoot games.) +Disable digital effects when the effects buffer has an illegal address until we know what to do with it. Prevents crash / memory corruption. \ No newline at end of file diff --git a/pcsx2/gui/Panels/VideoPanel.cpp b/pcsx2/gui/Panels/VideoPanel.cpp index e2030c24a4..e5b95220fa 100644 --- a/pcsx2/gui/Panels/VideoPanel.cpp +++ b/pcsx2/gui/Panels/VideoPanel.cpp @@ -313,6 +313,8 @@ Panels::VideoPanel::VideoPanel( wxWindow* parent ) : L"Warning: This option can be enabled on-the-fly but typically cannot be disabled on-the-fly (video will typically be garbage)." ) ); + m_check_DisableOutput->Hide(); // Band-aid fix since currently broken + //GSWindowSettingsPanel* winpan = new GSWindowSettingsPanel( left ); //winpan->AddFrame(_("Display/Window")); diff --git a/pcsx2/ps2/LegacyDmac.cpp b/pcsx2/ps2/LegacyDmac.cpp index a8473971fb..a0d7c1115b 100644 --- a/pcsx2/ps2/LegacyDmac.cpp +++ b/pcsx2/ps2/LegacyDmac.cpp @@ -120,7 +120,20 @@ __fi tDMA_TAG* SPRdmaGetAddr(u32 addr, bool write) vu1Thread.WaitVU(); } //Access for VU Memory - return (tDMA_TAG*)vtlb_GetPhyPtr(addr & 0x1FFFFFF0); + + if((addr >= 0x1100c000) && (addr < 0x11010000)) + return (tDMA_TAG*)VU1.Mem + (addr & 0x3ff0); + + //Possibly not needed but the manual doesn't say SPR cannot access it. + if((addr >= 0x11008000) && (addr < 0x1100c000)) + return (tDMA_TAG*)VU1.Micro + (addr & 0x3ff0); + + if ((addr >= 0x11000000) && (addr < 0x11004000)) + return (tDMA_TAG*)VU0.Micro + (addr & 0xff0); + + if ((addr >= 0x11004000) && (addr < 0x11008000)) + return (tDMA_TAG*)VU0.Mem + (addr & 0xff0); + } else { diff --git a/plugins/spu2-x/src/Mixer.cpp b/plugins/spu2-x/src/Mixer.cpp index ee861a6801..78032922a7 100644 --- a/plugins/spu2-x/src/Mixer.cpp +++ b/plugins/spu2-x/src/Mixer.cpp @@ -702,7 +702,10 @@ StereoOut32 V_Core::Mix( const VoiceMixSet& inVoices, const StereoOut32& Input, // On the other hand, updating the buffer is cheap and easy, so might as well. ;) Reverb_AdvanceBuffer(); // Updates the reverb work area as well, if needed. - if (!FxEnable) return TD; + + // ToDo: + // Bad EndA causes memory corruption. Bad for us, unknown on PS2! + if (!FxEnable || EffectsEndA >= 0x100000) return TD; StereoOut32 TW;