diff --git a/common/Console.cpp b/common/Console.cpp index 85091ad6a3908f..b8f4cd5b81473e 100644 --- a/common/Console.cpp +++ b/common/Console.cpp @@ -364,6 +364,7 @@ bool Log::SetFileOutputLevel(LOGLEVEL level, std::string path) } s_file_level = s_file_handle ? level : LOGLEVEL_NONE; + UpdateMaxLevel(); return IsFileOutputEnabled(); } diff --git a/pcsx2-qt/Settings/DebugSettingsWidget.cpp b/pcsx2-qt/Settings/DebugSettingsWidget.cpp index 881dd492113de2..a703779d71a43d 100644 --- a/pcsx2-qt/Settings/DebugSettingsWidget.cpp +++ b/pcsx2-qt/Settings/DebugSettingsWidget.cpp @@ -35,6 +35,52 @@ DebugSettingsWidget::DebugSettingsWidget(SettingsWindow* dialog, QWidget* parent connect(m_ui.dumpGSDraws, &QCheckBox::checkStateChanged, this, &DebugSettingsWidget::onDrawDumpingChanged); onDrawDumpingChanged(); + + ////////////////////////////////////////////////////////////////////////// + // Trace Logging Settings + ////////////////////////////////////////////////////////////////////////// + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEEnable, "SysTrace/EE", "Enabled", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEBIOS, "SysTrace/EE", "Bios", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEMemory, "SysTrace/EE", "Memory", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEER5900, "SysTrace/EE", "R5900", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEECOP0, "SysTrace/EE", "COP0", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEECOP1, "SysTrace/EE", "FPU", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEECOP2, "SysTrace/EE", "Vumacro", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEECache, "SysTrace/EE", "Cache", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEMMIO, "SysTrace/EE", "HwRegs", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEUNKNWNMMIO, "SysTrace/EE", "UnknownRegs", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEDMARegs, "SysTrace/EE", "DmaRegs", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEIPU, "SysTrace/EE", "IPU", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEGIFTags, "SysTrace/EE", "GIFtags", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEVIFCodes, "SysTrace/EE", "VIFcodes", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEMSKPATH3, "SysTrace/EE", "MSKPATH3", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEMFIFO, "SysTrace/EE", "MFIFO", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEDMACTRL, "SysTrace/EE", "dmacctrl", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEECounters, "SysTrace/EE", "Counters", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEVIF, "SysTrace/EE", "VIF", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEEGIF, "SysTrace/EE", "GIF", false); + + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPEnable, "SysTrace/IOP", "Enabled", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPBIOS, "SysTrace/IOP", "Bios", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPMemcards, "SysTrace/IOP", "Memcards", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPR3000A, "SysTrace/IOP", "R3000A", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPCOP2, "SysTrace/IOP", "COP2/GPU", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPMMIO, "SysTrace/IOP", "HwRegs", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPUNKNWNMMIO, "SysTrace/IOP", "UnknownRegs", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPDMARegs, "SysTrace/IOP", "DmaRegs", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPMemcards, "SysTrace/IOP", "Memcards", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPPad, "SysTrace/IOP", "Pad", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPDMACTRL, "SysTrace/IOP", "DmacCtrl", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPCounters, "SysTrace/IOP", "Counters", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPCDVD, "SysTrace/IOP", "CDVD", false); + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkIOPMDEC, "SysTrace/IOP", "MDEC", false); + + SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chkEESIF, "SysTrace/SIF", "SIF", false); + + connect(m_ui.chkEEEnable, &QCheckBox::checkStateChanged, this, &DebugSettingsWidget::onLoggingCategoryChanged); + connect(m_ui.chkIOPEnable, &QCheckBox::checkStateChanged, this, &DebugSettingsWidget::onLoggingCategoryChanged); + + onLoggingCategoryChanged(); } DebugSettingsWidget::~DebugSettingsWidget() = default; @@ -47,3 +93,44 @@ void DebugSettingsWidget::onDrawDumpingChanged() m_ui.saveTexture->setEnabled(enabled); m_ui.saveDepth->setEnabled(enabled); } + +void DebugSettingsWidget::onLoggingCategoryChanged() +{ + const bool ee_enabled = m_dialog->getEffectiveBoolValue("SysTrace/EE", "Enabled", false); + const bool iop_enabled = m_dialog->getEffectiveBoolValue("SysTrace/IOP", "Enabled", false); + + m_ui.chkEEBIOS->setEnabled(ee_enabled); + m_ui.chkEEMemory->setEnabled(ee_enabled); + m_ui.chkEER5900->setEnabled(ee_enabled); + m_ui.chkEECOP0->setEnabled(ee_enabled); + m_ui.chkEECOP1->setEnabled(ee_enabled); + m_ui.chkEECOP2->setEnabled(ee_enabled); + m_ui.chkEECache->setEnabled(ee_enabled); + m_ui.chkEEMMIO->setEnabled(ee_enabled); + m_ui.chkEEUNKNWNMMIO->setEnabled(ee_enabled); + m_ui.chkEEDMARegs->setEnabled(ee_enabled); + m_ui.chkEEIPU->setEnabled(ee_enabled); + m_ui.chkEEGIFTags->setEnabled(ee_enabled); + m_ui.chkEEVIFCodes->setEnabled(ee_enabled); + m_ui.chkEEMSKPATH3->setEnabled(ee_enabled); + m_ui.chkEEMFIFO->setEnabled(ee_enabled); + m_ui.chkEEDMACTRL->setEnabled(ee_enabled); + m_ui.chkEECounters->setEnabled(ee_enabled); + m_ui.chkEEVIF->setEnabled(ee_enabled); + m_ui.chkEEGIF->setEnabled(ee_enabled); + m_ui.chkEESIF->setEnabled(ee_enabled); + + m_ui.chkIOPBIOS->setEnabled(iop_enabled); + m_ui.chkIOPMemcards->setEnabled(iop_enabled); + m_ui.chkIOPR3000A->setEnabled(iop_enabled); + m_ui.chkIOPCOP2->setEnabled(iop_enabled); + m_ui.chkIOPMMIO->setEnabled(iop_enabled); + m_ui.chkIOPUNKNWNMMIO->setEnabled(iop_enabled); + m_ui.chkIOPDMARegs->setEnabled(iop_enabled); + m_ui.chkIOPMemcards->setEnabled(iop_enabled); + m_ui.chkIOPPad->setEnabled(iop_enabled); + m_ui.chkIOPDMACTRL->setEnabled(iop_enabled); + m_ui.chkIOPCounters->setEnabled(iop_enabled); + m_ui.chkIOPCDVD->setEnabled(iop_enabled); + m_ui.chkIOPMDEC->setEnabled(iop_enabled); +} diff --git a/pcsx2-qt/Settings/DebugSettingsWidget.h b/pcsx2-qt/Settings/DebugSettingsWidget.h index da0dc2f0b0eead..adb0c0edc69279 100644 --- a/pcsx2-qt/Settings/DebugSettingsWidget.h +++ b/pcsx2-qt/Settings/DebugSettingsWidget.h @@ -19,6 +19,7 @@ class DebugSettingsWidget : public QWidget private Q_SLOTS: void onDrawDumpingChanged(); + void onLoggingCategoryChanged(); private: SettingsWindow* m_dialog; diff --git a/pcsx2-qt/Settings/DebugSettingsWidget.ui b/pcsx2-qt/Settings/DebugSettingsWidget.ui index d1a0bd72a881f4..0d201e6dd3a8e5 100644 --- a/pcsx2-qt/Settings/DebugSettingsWidget.ui +++ b/pcsx2-qt/Settings/DebugSettingsWidget.ui @@ -173,6 +173,307 @@ + + + System Logging + + + + + + + + EE + + + + + + Enable + + + + + + + + + DMA Control + + + + + + + SPR / MFIFO + + + + + + + VIF + + + + + + + COP1 (FPU) + + + + + + + MSKPATH3 + + + + + + + Cache + + + + + + + GIF + + + + + + + R5900 + + + + + + + COP0 + + + + + + + HW Regs (MMIO) + + + + + + + Counters + + + + + + + SIF + + + + + + + COP2 (VU0 Macro) + + + + + + + VIFCodes + + + + + + + Memory + + + + + + + Unknown MMIO + + + + + + + IPU + + + + + + + BIOS + + + + + + + DMA Registers + + + + + + + GIFTags + + + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + + + + IOP + + + + + + Enable + + + + + + + + + Counters + + + + + + + Unknown MMIO + + + + + + + HW Regs (MMIO) + + + + + + + CDVD + + + + + + + R3000A + + + + + + + Memcards + + + + + + + DMA Registers + + + + + + + Pad + + + + + + + BIOS + + + + + + + MDEC + + + + + + + DMA Control + + + + + + + COP2 (GPU) + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + diff --git a/pcsx2/DebugTools/Debug.h b/pcsx2/DebugTools/Debug.h index 5172eaf89b8fbd..faa0cc36e3379b 100644 --- a/pcsx2/DebugTools/Debug.h +++ b/pcsx2/DebugTools/Debug.h @@ -9,9 +9,6 @@ #include -// TODO: Purge emuLog and all this other nonsense, just go through Log with LOGLEVEL_TRACE. -extern FILE *emuLog; - extern char* disVU0MicroUF(u32 code, u32 pc); extern char* disVU0MicroLF(u32 code, u32 pc); extern char* disVU1MicroUF(u32 code, u32 pc); @@ -332,8 +329,6 @@ struct SysConsoleLogPack extern SysTraceLogPack SysTrace; extern SysConsoleLogPack SysConsole; -extern void __Log( const char* fmt, ... ); - // Helper macro for cut&paste. Note that we intentionally use a top-level *inline* bitcheck // against Trace.Enabled, to avoid extra overhead in Debug builds when logging is disabled. // (specifically this allows debug builds to skip havingto resolve all the parameters being diff --git a/pcsx2/SourceLog.cpp b/pcsx2/SourceLog.cpp index 7fad9c86bd31a2..0f0c5dd4e3daee 100644 --- a/pcsx2/SourceLog.cpp +++ b/pcsx2/SourceLog.cpp @@ -24,35 +24,12 @@ using namespace R5900; -FILE* emuLog; - SysTraceLogPack SysTrace; SysConsoleLogPack SysConsole; -// writes text directly to the logfile, no newlines appended. -void __Log(const char* fmt, ...) -{ - va_list list; - va_start(list, fmt); - - if (emuLog != NULL) - { - std::vfprintf(emuLog, fmt, list); - fputs("\n", emuLog); - fflush(emuLog); - } - - va_end(list); -} - void SysTraceLog::DoWrite(const char* msg) const { - if (emuLog == NULL) - return; - - fputs(msg, emuLog); - fputs("\n", emuLog); - fflush(emuLog); + Log::Write(LOGLEVEL_TRACE, Color_Default, msg); } void SysTraceLog_EE::ApplyPrefix(std::string& ascii) const @@ -188,7 +165,7 @@ static const SysTraceLogDescriptor TLD_IOP_PAD = {{"Pad", "Pad", "Gamepad activity on the SIO."}, "Pad"}, - TLD_IOP_DMAC = {{"DmaCrl", "DMA Controller", "Actual DMA event processing and data transfer logs."}, "iDmaC"}, + TLD_IOP_DMAC = {{"DmaCtrl", "DMA Controller", "Actual DMA event processing and data transfer logs."}, "iDmaC"}, TLD_IOP_Counters = {{"Counters", "Counters", "Tracks all IOP counters events and some counter register activity."}, "iCnt"}, diff --git a/pcsx2/VMManager.cpp b/pcsx2/VMManager.cpp index a9811a56bf35ec..20d80c1234a408 100644 --- a/pcsx2/VMManager.cpp +++ b/pcsx2/VMManager.cpp @@ -454,7 +454,6 @@ void VMManager::Internal::CPUThreadShutdown() void VMManager::Internal::SetFileLogPath(std::string path) { s_log_force_file_log = Log::SetFileOutputLevel(LOGLEVEL_DEBUG, std::move(path)); - emuLog = Log::GetFileLogHandle(); } void VMManager::Internal::SetBlockSystemConsole(bool block) @@ -477,12 +476,6 @@ void VMManager::UpdateLoggingSettings(SettingsInterface& si) if (system_console_enabled != Log::IsConsoleOutputEnabled()) Log::SetConsoleOutputLevel(system_console_enabled ? level : LOGLEVEL_NONE); - if (file_logging_enabled != Log::IsFileOutputEnabled()) - { - std::string path = Path::Combine(EmuFolders::Logs, "emulog.txt"); - Log::SetFileOutputLevel(file_logging_enabled ? level : LOGLEVEL_NONE, std::move(path)); - } - // Debug console only exists on Windows. #ifdef _WIN32 const bool debug_console_enabled = IsDebuggerPresent() && si.GetBoolValue("Logging", "EnableDebugConsole", false); @@ -508,6 +501,64 @@ void VMManager::UpdateLoggingSettings(SettingsInterface& si) // Input Recording Logs SysConsole.recordingConsole.Enabled = any_logging_sinks && si.GetBoolValue("Logging", "EnableInputRecordingLogs", true); SysConsole.controlInfo.Enabled = any_logging_sinks && si.GetBoolValue("Logging", "EnableControllerLogs", false); + + // SysTrace logging + SysTrace.EE.Bios.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "Bios", false); + SysTrace.EE.Memory.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "Memory", false); + SysTrace.EE.R5900.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "R5900", false); + SysTrace.EE.COP0.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "COP0", false); + SysTrace.EE.COP1.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "FPU", false); + SysTrace.EE.COP2.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "Vumacro", false); + SysTrace.EE.Cache.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "Cache", false); + SysTrace.EE.KnownHw.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "HwRegs", false); + SysTrace.EE.UnknownHw.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "UnknownRegs", false); + SysTrace.EE.DMAhw.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "DmaRegs", false); + SysTrace.EE.IPU.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "IPU", false); + SysTrace.EE.GIFtag.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "GIFtags", false); + SysTrace.EE.VIFcode.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "VIFcodes", false); + SysTrace.EE.MSKPATH3.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "MSKPATH3", false); + SysTrace.EE.SPR.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "MFIFO", false); + SysTrace.EE.DMAC.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "dmactrl", false); + SysTrace.EE.Counters.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "Counters", false); + SysTrace.EE.VIF.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "VIF", false); + SysTrace.EE.GIF.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/EE", "GIF", false); + + SysTrace.IOP.Bios.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "Bios", false); + SysTrace.IOP.Memory.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "Memcards", false); + SysTrace.IOP.R3000A.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "R3000A", false); + SysTrace.IOP.COP2.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "COP2/GPU", false); + SysTrace.IOP.KnownHw.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "HwRegs", false); + SysTrace.IOP.UnknownHw.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "UnknownRegs", false); + SysTrace.IOP.DMAhw.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "DmaRegs", false); + SysTrace.IOP.Memcards.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "Memcards", false); + SysTrace.IOP.PAD.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "Pad", false); + SysTrace.IOP.DMAC.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "DmaCtrl", false); + SysTrace.IOP.Counters.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "Counters", false); + SysTrace.IOP.CDVD.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "CDVD", false); + SysTrace.IOP.MDEC.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace/IOP", "MDEC", false); + + SysTrace.SIF.Enabled = any_logging_sinks && si.GetBoolValue("SysTrace_SIF", "SIF", false); + + const bool ee_enabled = si.GetBoolValue("SysTrace/EE", "Enabled", false); + const bool iop_enabled = si.GetBoolValue("SysTrace/IOP", "Enabled", false); + + EmuConfig.Trace.EE.m_EnableAll = ee_enabled; + EmuConfig.Trace.EE.m_EnableDisasm = ee_enabled; + EmuConfig.Trace.EE.m_EnableRegisters = ee_enabled; + EmuConfig.Trace.EE.m_EnableEvents = ee_enabled; + + EmuConfig.Trace.IOP.m_EnableAll = iop_enabled; + EmuConfig.Trace.IOP.m_EnableDisasm = iop_enabled; + EmuConfig.Trace.IOP.m_EnableRegisters = iop_enabled; + EmuConfig.Trace.IOP.m_EnableEvents = iop_enabled; + + EmuConfig.Trace.Enabled = ee_enabled || iop_enabled; + + if (file_logging_enabled != Log::IsFileOutputEnabled()) + { + std::string path = Path::Combine(EmuFolders::Logs, "emulog.txt"); + Log::SetFileOutputLevel(file_logging_enabled ? EmuConfig.Trace.Enabled ? LOGLEVEL_TRACE : level : LOGLEVEL_NONE, std::move(path)); + } } void VMManager::SetDefaultLoggingSettings(SettingsInterface& si) @@ -520,6 +571,43 @@ void VMManager::SetDefaultLoggingSettings(SettingsInterface& si) si.SetBoolValue("Logging", "EnableIOPConsole", false); si.SetBoolValue("Logging", "EnableInputRecordingLogs", true); si.SetBoolValue("Logging", "EnableControllerLogs", false); + + si.SetBoolValue("SysTrace/EE", "Enabled", false); + si.SetBoolValue("SysTrace/EE", "Bios", false); + si.SetBoolValue("SysTrace/EE", "Memory", false); + si.SetBoolValue("SysTrace/EE", "R5900", false); + si.SetBoolValue("SysTrace/EE", "COP0", false); + si.SetBoolValue("SysTrace/EE", "FPU", false); + si.SetBoolValue("SysTrace/EE", "Vumacro", false); + si.SetBoolValue("SysTrace/EE", "Cache", false); + si.SetBoolValue("SysTrace/EE", "HwRegs", false); + si.SetBoolValue("SysTrace/EE", "UnknownRegs", false); + si.SetBoolValue("SysTrace/EE", "DmaRegs", false); + si.SetBoolValue("SysTrace/EE", "IPU", false); + si.SetBoolValue("SysTrace/EE", "GIFtags", false); + si.SetBoolValue("SysTrace/EE", "VIFcodes", false); + si.SetBoolValue("SysTrace/EE", "MSKPATH3", false); + si.SetBoolValue("SysTrace/EE", "MFIFO", false); + si.SetBoolValue("SysTrace/EE", "dmactrl", false); + si.SetBoolValue("SysTrace/EE", "Counters", false); + si.SetBoolValue("SysTrace/EE", "VIF", false); + si.SetBoolValue("SysTrace/EE", "GIF", false); + + si.SetBoolValue("SysTrace/IOP", "Enabled", false); + si.SetBoolValue("SysTrace/IOP", "Bios", false); + si.SetBoolValue("SysTrace/IOP", "Memcards", false); + si.SetBoolValue("SysTrace/IOP", "R3000A", false); + si.SetBoolValue("SysTrace/IOP", "COP2/GPU", false); + si.SetBoolValue("SysTrace/IOP", "HwRegs", false); + si.SetBoolValue("SysTrace/IOP", "UnknownRegs", false); + si.SetBoolValue("SysTrace/IOP", "DmaRegs", false); + si.SetBoolValue("SysTrace/IOP", "Pad", false); + si.SetBoolValue("SysTrace/IOP", "DmaCtrl", false); + si.SetBoolValue("SysTrace/IOP", "Counters", false); + si.SetBoolValue("SysTrace/IOP", "CDVD", false); + si.SetBoolValue("SysTrace/IOP", "MDEC", false); + + si.SetBoolValue("SysTrace/SIF", "SIF", false); } bool VMManager::Internal::CheckSettingsVersion()