diff --git a/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp b/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp index f809b0488f..25a3ed83e3 100644 --- a/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp +++ b/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp @@ -172,10 +172,6 @@ static bool FillDSPInitOptions(DSPInitOptions* opts) bool DSPLLE::Initialize(bool bWii, bool bDSPThread) { - m_bWii = bWii; - m_bDSPThread = true; - if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive() || Core::g_want_determinism || !bDSPThread || !dspjit) - m_bDSPThread = false; requestDisableThread = false; DSPInitOptions opts; @@ -184,6 +180,15 @@ bool DSPLLE::Initialize(bool bWii, bool bDSPThread) if (!DSPCore_Init(opts)) return false; + // needs to be after DSPCore_Init for the dspjit ptr + if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive() || + Core::g_want_determinism || !dspjit) + { + bDSPThread = false; + } + m_bWii = bWii; + m_bDSPThread = bDSPThread; + // DSPLLE directly accesses the fastmem arena. // TODO: The fastmem arena is only supposed to be used by the JIT: // among other issues, its size is only 1GB on 32-bit targets. @@ -192,14 +197,13 @@ bool DSPLLE::Initialize(bool bWii, bool bDSPThread) InitInstructionTable(); - if (m_bDSPThread) + if (bDSPThread) { m_bIsRunning.Set(true); m_hDSPThread = std::thread(DSPThread, this); } Host_RefreshDSPDebuggerWindow(); - return true; }