From a4a69a8a3ae4ce12bc44b26797b66abb5707e359 Mon Sep 17 00:00:00 2001 From: LegendOfDragoon Date: Wed, 2 Sep 2015 22:41:40 -0700 Subject: [PATCH 1/3] Add support for ViStatusChanged in LoadState Calls ViStatusChanged if the value of VI_STATUS_REG changes after loading a save state. --- Source/Project64/N64 System/N64 Class.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Source/Project64/N64 System/N64 Class.cpp b/Source/Project64/N64 System/N64 Class.cpp index be17193fd..13e28b0de 100644 --- a/Source/Project64/N64 System/N64 Class.cpp +++ b/Source/Project64/N64 System/N64 Class.cpp @@ -1576,9 +1576,10 @@ bool CN64System::LoadState() bool CN64System::LoadState(LPCSTR FileName) { - DWORD dwRead, Value,SaveRDRAMSize, NextVITimer = 0; + DWORD dwRead, Value,SaveRDRAMSize, NextVITimer = 0, old_status; bool LoadedZipFile = false, AudioResetOnLoad; - + old_status = g_Reg->VI_STATUS_REG; + WriteTraceF((TraceType)(TraceDebug | TraceRecompiler),__FUNCTION__ "(%s): Start",FileName); char drive[_MAX_DRIVE] ,dir[_MAX_DIR], fname[_MAX_FNAME],ext[_MAX_EXT]; @@ -1753,6 +1754,11 @@ bool CN64System::LoadState(LPCSTR FileName) m_Audio.SetFrequency(m_Reg.AI_DACRATE_REG, g_System->SystemType()); } + if (old_status != g_Reg->VI_STATUS_REG) + { + g_Plugins->Gfx()->ViStatusChanged(); + } + //Fix Random Register while ((int)m_Reg.RANDOM_REGISTER < (int)m_Reg.WIRED_REGISTER) { From abf71cdd1a3f4f2067ce4fbbc0fc83044ab110b4 Mon Sep 17 00:00:00 2001 From: LegendOfDragoon Date: Wed, 2 Sep 2015 22:44:24 -0700 Subject: [PATCH 2/3] Add support for ViWidthChanged in LoadState Calls ViWidthChanged if the value of VI_WIDTH_REG changes after loading a save state. --- Source/Project64/N64 System/N64 Class.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Source/Project64/N64 System/N64 Class.cpp b/Source/Project64/N64 System/N64 Class.cpp index 13e28b0de..3887a952a 100644 --- a/Source/Project64/N64 System/N64 Class.cpp +++ b/Source/Project64/N64 System/N64 Class.cpp @@ -1576,9 +1576,10 @@ bool CN64System::LoadState() bool CN64System::LoadState(LPCSTR FileName) { - DWORD dwRead, Value,SaveRDRAMSize, NextVITimer = 0, old_status; + DWORD dwRead, Value,SaveRDRAMSize, NextVITimer = 0, old_status, old_width; bool LoadedZipFile = false, AudioResetOnLoad; old_status = g_Reg->VI_STATUS_REG; + old_width = g_Reg->VI_WIDTH_REG; WriteTraceF((TraceType)(TraceDebug | TraceRecompiler),__FUNCTION__ "(%s): Start",FileName); @@ -1759,6 +1760,11 @@ bool CN64System::LoadState(LPCSTR FileName) g_Plugins->Gfx()->ViStatusChanged(); } + if (old_width != g_Reg->VI_WIDTH_REG) + { + g_Plugins->Gfx()->ViWidthChanged(); + } + //Fix Random Register while ((int)m_Reg.RANDOM_REGISTER < (int)m_Reg.WIRED_REGISTER) { From 6adb89e04174644e73e1ba7b2130c8284ee5ce57 Mon Sep 17 00:00:00 2001 From: LegendOfDragoon Date: Wed, 2 Sep 2015 22:47:21 -0700 Subject: [PATCH 3/3] Add support for DacrateChanged in LoadState Calls DacrateChanged if the value of AI_DACRATE_REG changes after loading a save state. --- Source/Project64/N64 System/N64 Class.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Source/Project64/N64 System/N64 Class.cpp b/Source/Project64/N64 System/N64 Class.cpp index 3887a952a..20cc5d64d 100644 --- a/Source/Project64/N64 System/N64 Class.cpp +++ b/Source/Project64/N64 System/N64 Class.cpp @@ -1576,10 +1576,11 @@ bool CN64System::LoadState() bool CN64System::LoadState(LPCSTR FileName) { - DWORD dwRead, Value,SaveRDRAMSize, NextVITimer = 0, old_status, old_width; + DWORD dwRead, Value,SaveRDRAMSize, NextVITimer = 0, old_status, old_width, old_dacrate; bool LoadedZipFile = false, AudioResetOnLoad; old_status = g_Reg->VI_STATUS_REG; old_width = g_Reg->VI_WIDTH_REG; + old_dacrate = g_Reg->AI_DACRATE_REG; WriteTraceF((TraceType)(TraceDebug | TraceRecompiler),__FUNCTION__ "(%s): Start",FileName); @@ -1765,6 +1766,11 @@ bool CN64System::LoadState(LPCSTR FileName) g_Plugins->Gfx()->ViWidthChanged(); } + if (old_dacrate != g_Reg->AI_DACRATE_REG) + { + g_Plugins->Audio()->DacrateChanged(g_System->SystemType()); + } + //Fix Random Register while ((int)m_Reg.RANDOM_REGISTER < (int)m_Reg.WIRED_REGISTER) {