Core: Remove protecting memory option

This commit is contained in:
zilmar 2024-05-09 17:56:28 +09:30
parent b851689ceb
commit 703a09d034
29 changed files with 104 additions and 293 deletions

View File

@ -84,7 +84,6 @@ CJniBridegSettings::CJniBridegSettings()
ADD_SETTING(Default_SyncViaAudio); ADD_SETTING(Default_SyncViaAudio);
ADD_SETTING(Default_FixedAudio); ADD_SETTING(Default_FixedAudio);
ADD_SETTING(Default_RandomizeSIPIInterrupts); ADD_SETTING(Default_RandomizeSIPIInterrupts);
ADD_SETTING(Default_SMM_Protect_Memory);
ADD_SETTING(Default_DiskSeekTiming); ADD_SETTING(Default_DiskSeekTiming);
// RDB settings // RDB settings
@ -114,7 +113,6 @@ CJniBridegSettings::CJniBridegSettings()
ADD_SETTING(Rdb_SMM_Cache); ADD_SETTING(Rdb_SMM_Cache);
ADD_SETTING(Rdb_SMM_PIDMA); ADD_SETTING(Rdb_SMM_PIDMA);
ADD_SETTING(Rdb_SMM_TLB); ADD_SETTING(Rdb_SMM_TLB);
ADD_SETTING(Rdb_SMM_Protect);
ADD_SETTING(Rdb_SMM_ValidFunc); ADD_SETTING(Rdb_SMM_ValidFunc);
ADD_SETTING(Rdb_ViRefreshRate); ADD_SETTING(Rdb_ViRefreshRate);
ADD_SETTING(Rdb_AiCountPerBytes); ADD_SETTING(Rdb_AiCountPerBytes);
@ -148,7 +146,6 @@ CJniBridegSettings::CJniBridegSettings()
ADD_SETTING(Game_SyncViaAudio); ADD_SETTING(Game_SyncViaAudio);
ADD_SETTING(Game_32Bit); ADD_SETTING(Game_32Bit);
ADD_SETTING(Game_SMM_Cache); ADD_SETTING(Game_SMM_Cache);
ADD_SETTING(Game_SMM_Protect);
ADD_SETTING(Game_SMM_ValidFunc); ADD_SETTING(Game_SMM_ValidFunc);
ADD_SETTING(Game_SMM_PIDMA); ADD_SETTING(Game_SMM_PIDMA);
ADD_SETTING(Game_SMM_TLB); ADD_SETTING(Game_SMM_TLB);
@ -293,7 +290,6 @@ CJniBridegSettings::CJniBridegSettings()
ADD_SETTING(Debugger_TraceRegisterCache); ADD_SETTING(Debugger_TraceRegisterCache);
ADD_SETTING(Debugger_TraceRecompiler); ADD_SETTING(Debugger_TraceRecompiler);
ADD_SETTING(Debugger_TraceTLB); ADD_SETTING(Debugger_TraceTLB);
ADD_SETTING(Debugger_TraceProtectedMEM);
ADD_SETTING(Debugger_TraceUserInterface); ADD_SETTING(Debugger_TraceUserInterface);
ADD_SETTING(Debugger_TraceRomList); ADD_SETTING(Debugger_TraceRomList);
ADD_SETTING(Debugger_TraceExceptionHandler); ADD_SETTING(Debugger_TraceExceptionHandler);

View File

@ -68,7 +68,6 @@ void SetTraceModuleNames(void)
TraceSetModuleName(TraceRegisterCache, "Register Cache"); TraceSetModuleName(TraceRegisterCache, "Register Cache");
TraceSetModuleName(TraceRecompiler, "Recompiler"); TraceSetModuleName(TraceRecompiler, "Recompiler");
TraceSetModuleName(TraceTLB, "TLB"); TraceSetModuleName(TraceTLB, "TLB");
TraceSetModuleName(TraceProtectedMem, "Protected Memory");
TraceSetModuleName(TraceUserInterface, "User Interface"); TraceSetModuleName(TraceUserInterface, "User Interface");
TraceSetModuleName(TraceRomList, "Rom List"); TraceSetModuleName(TraceRomList, "Rom List");
TraceSetModuleName(TraceExceptionHandler, "Exception Handler"); TraceSetModuleName(TraceExceptionHandler, "Exception Handler");
@ -94,7 +93,6 @@ void UpdateTraceLevel(void * /*NotUsed*/)
g_ModuleLogLevel[TraceRegisterCache] = (uint8_t)g_Settings->LoadDword(Debugger_TraceRegisterCache); g_ModuleLogLevel[TraceRegisterCache] = (uint8_t)g_Settings->LoadDword(Debugger_TraceRegisterCache);
g_ModuleLogLevel[TraceRecompiler] = (uint8_t)g_Settings->LoadDword(Debugger_TraceRecompiler); g_ModuleLogLevel[TraceRecompiler] = (uint8_t)g_Settings->LoadDword(Debugger_TraceRecompiler);
g_ModuleLogLevel[TraceTLB] = (uint8_t)g_Settings->LoadDword(Debugger_TraceTLB); g_ModuleLogLevel[TraceTLB] = (uint8_t)g_Settings->LoadDword(Debugger_TraceTLB);
g_ModuleLogLevel[TraceProtectedMem] = (uint8_t)g_Settings->LoadDword(Debugger_TraceProtectedMEM);
g_ModuleLogLevel[TraceUserInterface] = (uint8_t)g_Settings->LoadDword(Debugger_TraceUserInterface); g_ModuleLogLevel[TraceUserInterface] = (uint8_t)g_Settings->LoadDword(Debugger_TraceUserInterface);
g_ModuleLogLevel[TraceRomList] = (uint8_t)g_Settings->LoadDword(Debugger_TraceRomList); g_ModuleLogLevel[TraceRomList] = (uint8_t)g_Settings->LoadDword(Debugger_TraceRomList);
g_ModuleLogLevel[TraceExceptionHandler] = (uint8_t)g_Settings->LoadDword(Debugger_TraceExceptionHandler); g_ModuleLogLevel[TraceExceptionHandler] = (uint8_t)g_Settings->LoadDword(Debugger_TraceExceptionHandler);
@ -122,7 +120,6 @@ void SetupTrace(void)
g_Settings->RegisterChangeCB(Debugger_TraceRegisterCache, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->RegisterChangeCB(Debugger_TraceRegisterCache, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceRecompiler, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->RegisterChangeCB(Debugger_TraceRecompiler, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceTLB, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->RegisterChangeCB(Debugger_TraceTLB, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceProtectedMEM, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceUserInterface, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->RegisterChangeCB(Debugger_TraceUserInterface, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceRomList, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->RegisterChangeCB(Debugger_TraceRomList, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceExceptionHandler, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->RegisterChangeCB(Debugger_TraceExceptionHandler, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
@ -154,7 +151,6 @@ void CleanupTrace(void)
g_Settings->UnregisterChangeCB(Debugger_TraceRegisterCache, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->UnregisterChangeCB(Debugger_TraceRegisterCache, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceRecompiler, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->UnregisterChangeCB(Debugger_TraceRecompiler, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceTLB, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->UnregisterChangeCB(Debugger_TraceTLB, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceProtectedMEM, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceUserInterface, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->UnregisterChangeCB(Debugger_TraceUserInterface, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceRomList, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->UnregisterChangeCB(Debugger_TraceRomList, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceExceptionHandler, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel); g_Settings->UnregisterChangeCB(Debugger_TraceExceptionHandler, nullptr, (CSettings::SettingChangedFunc)UpdateTraceLevel);

View File

@ -1,11 +0,0 @@
#pragma once
#ifdef _WIN32
#include <excpt.h>
#define __except_try() __try
#define __except_catch() __except (g_MMU->MemoryFilter(_exception_code(), _exception_info()))
#else
#define __except_try() try
#define __except_catch() catch (...)
#endif

View File

@ -298,7 +298,6 @@ enum LanguageStringID
ADVANCE_SMM_CACHE = 510, ADVANCE_SMM_CACHE = 510,
ADVANCE_SMM_PIDMA = 511, ADVANCE_SMM_PIDMA = 511,
ADVANCE_SMM_VALIDATE = 512, ADVANCE_SMM_VALIDATE = 512,
ADVANCE_SMM_PROTECT = 513,
ADVANCE_SMM_TLB = 514, ADVANCE_SMM_TLB = 514,
ADVANCE_ALWAYS_INTERPRETER = 515, ADVANCE_ALWAYS_INTERPRETER = 515,

View File

@ -246,7 +246,6 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(ADVANCE_SMM_CACHE, "Cache"); DEF_STR(ADVANCE_SMM_CACHE, "Cache");
DEF_STR(ADVANCE_SMM_PIDMA, "PI DMA"); DEF_STR(ADVANCE_SMM_PIDMA, "PI DMA");
DEF_STR(ADVANCE_SMM_VALIDATE, "Start changed"); DEF_STR(ADVANCE_SMM_VALIDATE, "Start changed");
DEF_STR(ADVANCE_SMM_PROTECT, "Protect memory");
DEF_STR(ADVANCE_SMM_TLB, "TLB unmapping"); DEF_STR(ADVANCE_SMM_TLB, "TLB unmapping");
DEF_STR(ADVANCE_ALWAYS_INTERPRETER, "Always use interpreter core"); DEF_STR(ADVANCE_ALWAYS_INTERPRETER, "Always use interpreter core");

View File

@ -1,7 +1,6 @@
#include "stdafx.h" #include "stdafx.h"
#include <Project64-core/Debugger.h> #include <Project64-core/Debugger.h>
#include <Project64-core/ExceptionHandler.h>
#include <Project64-core/Logging.h> #include <Project64-core/Logging.h>
#include <Project64-core/N64System/Interpreter/InterpreterOps.h> #include <Project64-core/N64System/Interpreter/InterpreterOps.h>
#include <Project64-core/N64System/Mips/MemoryVirtualMem.h> #include <Project64-core/N64System/Mips/MemoryVirtualMem.h>
@ -208,106 +207,99 @@ void R4300iOp::ExecuteOps(int32_t Cycles)
uint32_t CountPerOp = m_System.CountPerOp(); uint32_t CountPerOp = m_System.CountPerOp();
bool CheckTimer = false; bool CheckTimer = false;
__except_try() while (!Done)
{ {
while (!Done) if (Cycles <= 0)
{ {
if (Cycles <= 0) g_SystemTimer->UpdateTimers();
return;
}
if (m_MMU.MemoryValue32(m_PROGRAM_COUNTER, m_Opcode.Value))
{
/*if (PROGRAM_COUNTER > 0x80000300 && PROGRAM_COUNTER< 0x80380000)
{ {
g_SystemTimer->UpdateTimers(); WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s",m_PROGRAM_COUNTER,R4300iInstruction(m_PROGRAM_COUNTER, Opcode.Value).NameAndParam().c_str());
return; //WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s t9: %08X v1: %08X",m_PROGRAM_COUNTER,R4300iInstruction(m_PROGRAM_COUNTER, Opcode.Value).NameAndParam().c_str(),m_GPR[0x19].UW[0],m_GPR[0x03].UW[0]);
//WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %d %d",m_PROGRAM_COUNTER,*g_NextTimer,g_SystemTimer->CurrentType());
}*/
/*if (PROGRAM_COUNTER > 0x80323000 && PROGRAM_COUNTER< 0x80380000)
{
WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s",m_PROGRAM_COUNTER,R4300iInstruction(m_PROGRAM_COUNTER, Opcode.Value).NameAndParam().c_str());
//WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s t9: %08X v1: %08X",m_PROGRAM_COUNTER,R4300iInstruction(m_PROGRAM_COUNTER, Opcode.Value).NameAndParam().c_str(),m_GPR[0x19].UW[0],m_GPR[0x03].UW[0]);
//WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %d %d",m_PROGRAM_COUNTER,*g_NextTimer,g_SystemTimer->CurrentType());
}*/
(this->*Jump_Opcode[m_Opcode.op])();
m_GPR[0].DW = 0; /* MIPS $zero hard-wired to 0 */
Cycles -= CountPerOp;
*g_NextTimer -= CountPerOp;
/*static uint32_t TestAddress = 0x80077B0C, TestValue = 0, CurrentValue = 0;
if (m_MMU.MemoryValue32(TestAddress, TestValue))
{
if (TestValue != CurrentValue)
{
WriteTraceF(TraceError,"%X: %X changed (%s)",PROGRAM_COUNTER,TestAddress,R4300iInstruction(PROGRAM_COUNTER, m_Opcode.Value).NameAndParam().c_str());
CurrentValue = TestValue;
} }
}*/
if (m_MMU.MemoryValue32(m_PROGRAM_COUNTER, m_Opcode.Value)) switch (PipelineStage)
{ {
/*if (PROGRAM_COUNTER > 0x80000300 && PROGRAM_COUNTER< 0x80380000) case PIPELINE_STAGE_NORMAL:
m_PROGRAM_COUNTER += 4;
break;
case PIPELINE_STAGE_DELAY_SLOT:
PipelineStage = PIPELINE_STAGE_JUMP;
m_PROGRAM_COUNTER += 4;
break;
case PIPELINE_STAGE_PERMLOOP_DO_DELAY:
PipelineStage = PIPELINE_STAGE_PERMLOOP_DELAY_DONE;
m_PROGRAM_COUNTER += 4;
break;
case PIPELINE_STAGE_JUMP:
CheckTimer = (JumpToLocation < m_PROGRAM_COUNTER || TestTimer);
m_PROGRAM_COUNTER = JumpToLocation;
PipelineStage = PIPELINE_STAGE_NORMAL;
if (CheckTimer)
{ {
WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s",m_PROGRAM_COUNTER,R4300iInstruction(m_PROGRAM_COUNTER, Opcode.Value).NameAndParam().c_str()); TestTimer = false;
//WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s t9: %08X v1: %08X",m_PROGRAM_COUNTER,R4300iInstruction(m_PROGRAM_COUNTER, Opcode.Value).NameAndParam().c_str(),m_GPR[0x19].UW[0],m_GPR[0x03].UW[0]); if (*g_NextTimer < 0)
//WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %d %d",m_PROGRAM_COUNTER,*g_NextTimer,g_SystemTimer->CurrentType());
}*/
/*if (PROGRAM_COUNTER > 0x80323000 && PROGRAM_COUNTER< 0x80380000)
{
WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s",m_PROGRAM_COUNTER,R4300iInstruction(m_PROGRAM_COUNTER, Opcode.Value).NameAndParam().c_str());
//WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s t9: %08X v1: %08X",m_PROGRAM_COUNTER,R4300iInstruction(m_PROGRAM_COUNTER, Opcode.Value).NameAndParam().c_str(),m_GPR[0x19].UW[0],m_GPR[0x03].UW[0]);
//WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %d %d",m_PROGRAM_COUNTER,*g_NextTimer,g_SystemTimer->CurrentType());
}*/
(this->*Jump_Opcode[m_Opcode.op])();
m_GPR[0].DW = 0; /* MIPS $zero hard-wired to 0 */
Cycles -= CountPerOp;
*g_NextTimer -= CountPerOp;
/*static uint32_t TestAddress = 0x80077B0C, TestValue = 0, CurrentValue = 0;
if (m_MMU.MemoryValue32(TestAddress, TestValue))
{
if (TestValue != CurrentValue)
{
WriteTraceF(TraceError,"%X: %X changed (%s)",PROGRAM_COUNTER,TestAddress,R4300iInstruction(PROGRAM_COUNTER, m_Opcode.Value).NameAndParam().c_str());
CurrentValue = TestValue;
}
}*/
switch (PipelineStage)
{
case PIPELINE_STAGE_NORMAL:
m_PROGRAM_COUNTER += 4;
break;
case PIPELINE_STAGE_DELAY_SLOT:
PipelineStage = PIPELINE_STAGE_JUMP;
m_PROGRAM_COUNTER += 4;
break;
case PIPELINE_STAGE_PERMLOOP_DO_DELAY:
PipelineStage = PIPELINE_STAGE_PERMLOOP_DELAY_DONE;
m_PROGRAM_COUNTER += 4;
break;
case PIPELINE_STAGE_JUMP:
CheckTimer = (JumpToLocation < m_PROGRAM_COUNTER || TestTimer);
m_PROGRAM_COUNTER = JumpToLocation;
PipelineStage = PIPELINE_STAGE_NORMAL;
if (CheckTimer)
{ {
TestTimer = false; g_SystemTimer->TimerDone();
if (*g_NextTimer < 0)
{
g_SystemTimer->TimerDone();
}
if (DoSomething)
{
SystemEvents.ExecuteEvents();
}
} }
break;
case PIPELINE_STAGE_JUMP_DELAY_SLOT:
PipelineStage = PIPELINE_STAGE_JUMP;
m_PROGRAM_COUNTER = JumpToLocation;
JumpToLocation = JumpDelayLocation;
break;
case PIPELINE_STAGE_PERMLOOP_DELAY_DONE:
m_PROGRAM_COUNTER = JumpToLocation;
PipelineStage = PIPELINE_STAGE_NORMAL;
InPermLoop();
g_SystemTimer->TimerDone();
if (DoSomething) if (DoSomething)
{ {
SystemEvents.ExecuteEvents(); SystemEvents.ExecuteEvents();
} }
break;
default:
g_Notify->BreakPoint(__FILE__, __LINE__);
} }
} break;
else case PIPELINE_STAGE_JUMP_DELAY_SLOT:
{ PipelineStage = PIPELINE_STAGE_JUMP;
m_Reg.TriggerAddressException((int32_t)m_PROGRAM_COUNTER, EXC_RMISS); m_PROGRAM_COUNTER = JumpToLocation;
JumpToLocation = JumpDelayLocation;
break;
case PIPELINE_STAGE_PERMLOOP_DELAY_DONE:
m_PROGRAM_COUNTER = JumpToLocation; m_PROGRAM_COUNTER = JumpToLocation;
PipelineStage = PIPELINE_STAGE_NORMAL; PipelineStage = PIPELINE_STAGE_NORMAL;
InPermLoop();
g_SystemTimer->TimerDone();
if (DoSomething)
{
SystemEvents.ExecuteEvents();
}
break;
default:
g_Notify->BreakPoint(__FILE__, __LINE__);
} }
} }
} else
__except_catch() {
{ m_Reg.TriggerAddressException((int32_t)m_PROGRAM_COUNTER, EXC_RMISS);
g_Notify->FatalError(GS(MSG_UNKNOWN_MEM_ACTION)); m_PROGRAM_COUNTER = JumpToLocation;
PipelineStage = PIPELINE_STAGE_NORMAL;
}
} }
} }

View File

@ -1,7 +1,6 @@
#include "stdafx.h" #include "stdafx.h"
#include "SPRegistersHandler.h" #include "SPRegistersHandler.h"
#include <Project64-core\ExceptionHandler.h>
#include <Project64-core\N64System\Mips\Register.h> #include <Project64-core\N64System\Mips\Register.h>
#include <Project64-core\N64System\N64System.h> #include <Project64-core\N64System\N64System.h>
#include <Project64-core\N64System\SystemGlobals.h> #include <Project64-core\N64System\SystemGlobals.h>

View File

@ -2,7 +2,6 @@
#include <Common\MemoryManagement.h> #include <Common\MemoryManagement.h>
#include <Project64-core\Debugger.h> #include <Project64-core\Debugger.h>
#include <Project64-core\ExceptionHandler.h>
#include <Project64-core\N64System\Mips\Disk.h> #include <Project64-core\N64System\Mips\Disk.h>
#include <Project64-core\N64System\Mips\MemoryVirtualMem.h> #include <Project64-core\N64System\Mips\MemoryVirtualMem.h>
#include <Project64-core\N64System\N64Rom.h> #include <Project64-core\N64System\N64Rom.h>
@ -876,7 +875,6 @@ bool CMipsMemoryVM::SB_PhysicalAddress(uint32_t PAddr, uint32_t Value)
if (PAddr < RdramSize()) if (PAddr < RdramSize())
{ {
g_Recompiler->ClearRecompCode_Phys(PAddr & ~0xFFF, 0xFFC, CRecompiler::Remove_ProtectedMem); g_Recompiler->ClearRecompCode_Phys(PAddr & ~0xFFF, 0xFFC, CRecompiler::Remove_ProtectedMem);
::ProtectMemory(m_RDRAM + (PAddr & ~0xFFF), 0xFFC, MEM_READWRITE);
*(uint8_t *)(m_RDRAM + (PAddr ^ 3)) = (uint8_t)Value; *(uint8_t *)(m_RDRAM + (PAddr ^ 3)) = (uint8_t)Value;
} }
break; break;
@ -909,18 +907,11 @@ bool CMipsMemoryVM::SH_PhysicalAddress(uint32_t PAddr, uint32_t Value)
case 0x00700000: case 0x00700000:
if (PAddr < RdramSize()) if (PAddr < RdramSize())
{ {
if (CGameSettings::bSMM_Protect() || CGameSettings::bSMM_StoreInstruc()) if (CGameSettings::bSMM_StoreInstruc())
{ {
g_Recompiler->ClearRecompCode_Phys(PAddr & ~0xFFF, 0x1000, CRecompiler::Remove_ProtectedMem); g_Recompiler->ClearRecompCode_Phys(PAddr & ~0xFFF, 0x1000, CRecompiler::Remove_ProtectedMem);
if (CGameSettings::bSMM_Protect()) m_TLB_WriteMap[(0x80000000 + PAddr) >> 12] = PAddr - (0x80000000 + PAddr);
{ m_TLB_WriteMap[(0xA0000000 + PAddr) >> 12] = PAddr - (0xA0000000 + PAddr);
::ProtectMemory(m_RDRAM + (PAddr & ~0xFFF), 0xFFC, MEM_READWRITE);
}
if (CGameSettings::bSMM_StoreInstruc())
{
m_TLB_WriteMap[(0x80000000 + PAddr) >> 12] = PAddr - (0x80000000 + PAddr);
m_TLB_WriteMap[(0xA0000000 + PAddr) >> 12] = PAddr - (0xA0000000 + PAddr);
}
*(uint16_t *)(m_RDRAM + (PAddr ^ 2)) = (uint16_t)Value; *(uint16_t *)(m_RDRAM + (PAddr ^ 2)) = (uint16_t)Value;
} }
} }
@ -957,18 +948,11 @@ bool CMipsMemoryVM::SW_PhysicalAddress(uint32_t PAddr, uint32_t Value)
case 0x00800000: case 0x00800000:
if (PAddr < RdramSize()) if (PAddr < RdramSize())
{ {
if (CGameSettings::bSMM_Protect() || CGameSettings::bSMM_StoreInstruc()) if (CGameSettings::bSMM_StoreInstruc())
{ {
g_Recompiler->ClearRecompCode_Phys(PAddr & ~0xFFF, 0x1000, CRecompiler::Remove_ProtectedMem); g_Recompiler->ClearRecompCode_Phys(PAddr & ~0xFFF, 0x1000, CRecompiler::Remove_ProtectedMem);
if (CGameSettings::bSMM_Protect()) m_TLB_WriteMap[(0x80000000 + PAddr) >> 12] = PAddr - (0x80000000 + PAddr);
{ m_TLB_WriteMap[(0xA0000000 + PAddr) >> 12] = PAddr - (0xA0000000 + PAddr);
::ProtectMemory(m_RDRAM + (PAddr & ~0xFFF), 0xFFC, MEM_READWRITE);
}
if (CGameSettings::bSMM_StoreInstruc())
{
m_TLB_WriteMap[(0x80000000 + PAddr) >> 12] = PAddr - (0x80000000 + PAddr);
m_TLB_WriteMap[(0xA0000000 + PAddr) >> 12] = PAddr - (0xA0000000 + PAddr);
}
*(uint32_t *)(m_RDRAM + PAddr) = Value; *(uint32_t *)(m_RDRAM + PAddr) = Value;
} }
} }
@ -1020,7 +1004,6 @@ bool CMipsMemoryVM::SD_PhysicalAddress(uint32_t PAddr, uint64_t Value)
if (PAddr < RdramSize()) if (PAddr < RdramSize())
{ {
g_Recompiler->ClearRecompCode_Phys(PAddr & ~0xFFF, 0xFFC, CRecompiler::Remove_ProtectedMem); g_Recompiler->ClearRecompCode_Phys(PAddr & ~0xFFF, 0xFFC, CRecompiler::Remove_ProtectedMem);
::ProtectMemory(m_RDRAM + (PAddr & ~0xFFF), 0xFFC, MEM_READWRITE);
*(uint64_t *)(m_RDRAM + PAddr) = Value; *(uint64_t *)(m_RDRAM + PAddr) = Value;
} }
break; break;
@ -1054,56 +1037,6 @@ void CMipsMemoryVM::ClearMemoryWriteMap(uint32_t VAddr, uint32_t Length)
} }
} }
void CMipsMemoryVM::ProtectMemory(uint32_t StartVaddr, uint32_t EndVaddr)
{
WriteTrace(TraceProtectedMem, TraceDebug, "StartVaddr: %08X EndVaddr: %08X", StartVaddr, EndVaddr);
if (!ValidVaddr(StartVaddr) || !ValidVaddr(EndVaddr) || EndVaddr < StartVaddr)
{
return;
}
int32_t Length = ((EndVaddr + 3) - StartVaddr) & ~3;
if (Length < 0)
{
g_Notify->BreakPoint(__FILE__, __LINE__);
return;
}
uint8_t * MemLoc = MemoryPtr(StartVaddr, Length, true);
if (MemLoc == nullptr)
{
g_Notify->BreakPoint(__FILE__, __LINE__);
return;
}
WriteTrace(TraceProtectedMem, TraceDebug, "Length: 0x%X", Length);
::ProtectMemory(MemLoc, Length, MEM_READONLY);
}
void CMipsMemoryVM::UnProtectMemory(uint32_t StartVaddr, uint32_t EndVaddr)
{
WriteTrace(TraceProtectedMem, TraceDebug, "StartVaddr: %08X EndVaddr: %08X", StartVaddr, EndVaddr);
if (!ValidVaddr(StartVaddr) || !ValidVaddr(EndVaddr) || EndVaddr < StartVaddr)
{
return;
}
int32_t Length = ((EndVaddr + 3) - StartVaddr) & ~3;
if (Length < 0)
{
g_Notify->BreakPoint(__FILE__, __LINE__);
return;
}
uint8_t * MemLoc = MemoryPtr(StartVaddr, Length, true);
if (MemLoc == nullptr)
{
g_Notify->BreakPoint(__FILE__, __LINE__);
return;
}
WriteTrace(TraceProtectedMem, TraceDebug, "Length: 0x%X", Length);
::ProtectMemory(MemLoc, Length, MEM_READWRITE);
}
const char * CMipsMemoryVM::LabelName(uint32_t Address) const const char * CMipsMemoryVM::LabelName(uint32_t Address) const
{ {
sprintf(m_strLabelName, "0x%08X", Address); sprintf(m_strLabelName, "0x%08X", Address);

View File

@ -117,10 +117,6 @@ public:
void ClearMemoryWriteMap(uint32_t VAddr, uint32_t Length); void ClearMemoryWriteMap(uint32_t VAddr, uint32_t Length);
// Protect the memory from being written to
void ProtectMemory(uint32_t StartVaddr, uint32_t EndVaddr);
void UnProtectMemory(uint32_t StartVaddr, uint32_t EndVaddr);
// Functions for TLB notification // Functions for TLB notification
void TLB_Mapped(uint32_t VAddr, uint32_t Len, uint32_t PAddr, bool bReadOnly); void TLB_Mapped(uint32_t VAddr, uint32_t Len, uint32_t PAddr, bool bReadOnly);
void TLB_Unmaped(uint32_t Vaddr, uint32_t Len); void TLB_Unmaped(uint32_t Vaddr, uint32_t Len);

View File

@ -4,7 +4,6 @@
#include <Common/Util.h> #include <Common/Util.h>
#include <Project64-core/3rdParty/zip.h> #include <Project64-core/3rdParty/zip.h>
#include <Project64-core/Debugger.h> #include <Project64-core/Debugger.h>
#include <Project64-core/ExceptionHandler.h>
#include <Project64-core/Logging.h> #include <Project64-core/Logging.h>
#include <Project64-core/N64System/Enhancement/Enhancements.h> #include <Project64-core/N64System/Enhancement/Enhancements.h>
#include <Project64-core/N64System/Mips/Disk.h> #include <Project64-core/N64System/Mips/Disk.h>
@ -800,16 +799,7 @@ void CN64System::StartEmulation2(bool NewThread)
void CN64System::StartEmulation(bool NewThread) void CN64System::StartEmulation(bool NewThread)
{ {
WriteTrace(TraceN64System, TraceDebug, "Start (NewThread: %s)", NewThread ? "true" : "false"); WriteTrace(TraceN64System, TraceDebug, "Start (NewThread: %s)", NewThread ? "true" : "false");
__except_try() StartEmulation2(NewThread);
{
StartEmulation2(NewThread);
}
__except_catch()
{
char message[400];
sprintf(message, "Exception caught\nFile: %s\nLine: %d", __FILE__, __LINE__);
g_Notify->DisplayError(message);
}
WriteTrace(TraceN64System, TraceDebug, "Done (NewThread: %s)", NewThread ? "true" : "false") WriteTrace(TraceN64System, TraceDebug, "Done (NewThread: %s)", NewThread ? "true" : "false")
} }
@ -1939,9 +1929,6 @@ bool CN64System::LoadState(const char * FileName)
} }
Reset(false, true); Reset(false, true);
m_MMU_VM.UnProtectMemory(0x80000000, 0x80000000 + m_MMU_VM.RdramSize() - 4);
m_MMU_VM.UnProtectMemory(0xA4000000, 0xA4000FFC);
m_MMU_VM.UnProtectMemory(0xA4001000, 0xA4001FFC);
g_Settings->SaveDword(Game_RDRamSize, SaveRDRAMSize); g_Settings->SaveDword(Game_RDRamSize, SaveRDRAMSize);
unzReadCurrentFile(file, &NextVITimer, sizeof(NextVITimer)); unzReadCurrentFile(file, &NextVITimer, sizeof(NextVITimer));
if (SaveID == 0x23D8A6C8) if (SaveID == 0x23D8A6C8)
@ -2084,8 +2071,6 @@ bool CN64System::LoadState(const char * FileName)
} }
} }
Reset(false, true); Reset(false, true);
m_MMU_VM.UnProtectMemory(0x80000000, 0x80000000 + m_MMU_VM.RdramSize() - 4);
m_MMU_VM.UnProtectMemory(0xA4000000, 0xA4001FFC);
g_Settings->SaveDword(Game_RDRamSize, SaveRDRAMSize); g_Settings->SaveDword(Game_RDRamSize, SaveRDRAMSize);
hSaveFile.Read(&NextVITimer, sizeof(NextVITimer)); hSaveFile.Read(&NextVITimer, sizeof(NextVITimer));
@ -2368,20 +2353,13 @@ void CN64System::RefreshScreen()
m_CPU_Usage.StartTimer(Timer_UpdateScreen); m_CPU_Usage.StartTimer(Timer_UpdateScreen);
} }
__except_try() WriteTrace(TraceVideoPlugin, TraceDebug, "UpdateScreen starting");
m_Plugins->Gfx()->UpdateScreen();
if (g_Debugger != nullptr && HaveDebugger())
{ {
WriteTrace(TraceVideoPlugin, TraceDebug, "UpdateScreen starting"); g_Debugger->FrameDrawn();
m_Plugins->Gfx()->UpdateScreen();
if (g_Debugger != nullptr && HaveDebugger())
{
g_Debugger->FrameDrawn();
}
WriteTrace(TraceVideoPlugin, TraceDebug, "UpdateScreen done");
}
__except_catch()
{
WriteTrace(TraceVideoPlugin, TraceError, "Exception caught");
} }
WriteTrace(TraceVideoPlugin, TraceDebug, "UpdateScreen done");
g_MMU->VideoInterface().UpdateFieldSerration((m_Reg.VI_STATUS_REG & 0x40) != 0); g_MMU->VideoInterface().UpdateFieldSerration((m_Reg.VI_STATUS_REG & 0x40) != 0);
if ((bBasicMode() || bLimitFPS()) && (!bSyncToAudio() || !FullSpeed())) if ((bBasicMode() || bLimitFPS()) && (!bSyncToAudio() || !FullSpeed()))

View File

@ -1,7 +1,6 @@
#include "stdafx.h" #include "stdafx.h"
#include <Project64-core/Debugger.h> #include <Project64-core/Debugger.h>
#include <Project64-core/ExceptionHandler.h>
#include <Project64-core/N64System/Mips/MemoryVirtualMem.h> #include <Project64-core/N64System/Mips/MemoryVirtualMem.h>
#include <Project64-core/N64System/Mips/R4300iInstruction.h> #include <Project64-core/N64System/Mips/R4300iInstruction.h>
#include <Project64-core/N64System/Mips/R4300iOpcode.h> #include <Project64-core/N64System/Mips/R4300iOpcode.h>

View File

@ -1,6 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include <Project64-core/ExceptionHandler.h>
#include <Project64-core/N64System/N64System.h> #include <Project64-core/N64System/N64System.h>
#include <Project64-core/N64System/Recompiler/Recompiler.h> #include <Project64-core/N64System/Recompiler/Recompiler.h>
#include <Project64-core/N64System/SystemGlobals.h> #include <Project64-core/N64System/SystemGlobals.h>
@ -42,38 +41,31 @@ void CRecompiler::Run()
} }
m_EndEmulation = false; m_EndEmulation = false;
__except_try() if (m_System.LookUpMode() == FuncFind_VirtualLookup)
{ {
if (m_System.LookUpMode() == FuncFind_VirtualLookup) if (m_System.bSMM_ValidFunc())
{ {
if (m_System.bSMM_ValidFunc()) RecompilerMain_VirtualTable_validate();
{
RecompilerMain_VirtualTable_validate();
}
else
{
RecompilerMain_VirtualTable();
}
}
else if (m_System.LookUpMode() == FuncFind_ChangeMemory)
{
RecompilerMain_ChangeMemory();
} }
else else
{ {
if (m_System.bSMM_ValidFunc()) RecompilerMain_VirtualTable();
{
RecompilerMain_Lookup_validate();
}
else
{
RecompilerMain_Lookup();
}
} }
} }
__except_catch() else if (m_System.LookUpMode() == FuncFind_ChangeMemory)
{ {
g_Notify->DisplayError(MSG_UNKNOWN_MEM_ACTION); RecompilerMain_ChangeMemory();
}
else
{
if (m_System.bSMM_ValidFunc())
{
RecompilerMain_Lookup_validate();
}
else
{
RecompilerMain_Lookup();
}
} }
WriteTrace(TraceRecompiler, TraceDebug, "Done"); WriteTrace(TraceRecompiler, TraceDebug, "Done");
@ -125,11 +117,6 @@ void CRecompiler::RecompilerMain_VirtualTable()
g_Notify->FatalError(MSG_MEM_ALLOC_ERROR); g_Notify->FatalError(MSG_MEM_ALLOC_ERROR);
} }
memset(table, 0, sizeof(PCCompiledFunc) * (0x1000 >> 2)); memset(table, 0, sizeof(PCCompiledFunc) * (0x1000 >> 2));
if (m_System.bSMM_Protect())
{
WriteTrace(TraceRecompiler, TraceError, "Create Table (%X): Index = %d", table, PC >> 0xC);
m_MMU.ProtectMemory(PC & ~0xFFF, PC | 0xFFF);
}
} }
table[TableEntry] = info; table[TableEntry] = info;
@ -171,10 +158,6 @@ void CRecompiler::RecompilerMain_Lookup()
{ {
break; break;
} }
if (m_System.bSMM_Protect())
{
m_MMU.ProtectMemory(PROGRAM_COUNTER & ~0xFFF, PROGRAM_COUNTER | 0xFFF);
}
JumpTable()[PhysicalAddr >> 2] = info; JumpTable()[PhysicalAddr >> 2] = info;
} }
(info->Function())(); (info->Function())();
@ -230,10 +213,6 @@ void CRecompiler::RecompilerMain_Lookup_validate()
{ {
break; break;
} }
if (m_System.bSMM_Protect())
{
m_MMU.ProtectMemory(PC & ~0xFFF, PC | 0xFFF);
}
JumpTable()[PhysicalAddr >> 2] = info; JumpTable()[PhysicalAddr >> 2] = info;
} }
else else
@ -466,10 +445,6 @@ void CRecompiler::ClearRecompCode_Phys(uint32_t Address, int length, REMOVE_REAS
} }
WriteTrace(TraceRecompiler, TraceInfo, "Resetting jump table, Addr: %X len: %d", Address, ClearLen); WriteTrace(TraceRecompiler, TraceInfo, "Resetting jump table, Addr: %X len: %d", Address, ClearLen);
memset((uint8_t *)JumpTable() + Address, 0, ClearLen); memset((uint8_t *)JumpTable() + Address, 0, ClearLen);
if (m_System.bSMM_Protect())
{
m_MMU.UnProtectMemory(Address + 0x80000000, Address + 0x80000004);
}
} }
else else
{ {
@ -501,7 +476,6 @@ void CRecompiler::ClearRecompCode_Virt(uint32_t Address, int length, REMOVE_REAS
WriteTrace(TraceRecompiler, TraceError, "Delete table (%X): Index = %d", table, AddressIndex); WriteTrace(TraceRecompiler, TraceError, "Delete table (%X): Index = %d", table, AddressIndex);
delete table; delete table;
table = nullptr; table = nullptr;
m_MMU.UnProtectMemory(Address, Address + length);
} }
if (DataLeft > 0) if (DataLeft > 0)

View File

@ -3,7 +3,6 @@
#if defined(__i386__) || defined(_M_IX86) #if defined(__i386__) || defined(_M_IX86)
#include <Project64-core/Debugger.h> #include <Project64-core/Debugger.h>
#include <Project64-core/ExceptionHandler.h>
#include <Project64-core/N64System/Interpreter/InterpreterOps.h> #include <Project64-core/N64System/Interpreter/InterpreterOps.h>
#include <Project64-core/N64System/Mips/Disk.h> #include <Project64-core/N64System/Mips/Disk.h>
#include <Project64-core/N64System/Mips/MemoryVirtualMem.h> #include <Project64-core/N64System/Mips/MemoryVirtualMem.h>

View File

@ -166,7 +166,6 @@
<ClInclude Include="3rdParty\zip.h" /> <ClInclude Include="3rdParty\zip.h" />
<ClInclude Include="AppInit.h" /> <ClInclude Include="AppInit.h" />
<ClInclude Include="Debugger.h" /> <ClInclude Include="Debugger.h" />
<ClInclude Include="ExceptionHandler.h" />
<ClInclude Include="Logging.h" /> <ClInclude Include="Logging.h" />
<ClInclude Include="Multilanguage.h" /> <ClInclude Include="Multilanguage.h" />
<ClInclude Include="Multilanguage\Language.h" /> <ClInclude Include="Multilanguage\Language.h" />

View File

@ -647,9 +647,6 @@
<ClInclude Include="TraceModulesProject64.h"> <ClInclude Include="TraceModulesProject64.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="ExceptionHandler.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="N64System\Mips\Disk.h"> <ClInclude Include="N64System\Mips\Disk.h">
<Filter>Header Files\N64 System\Mips</Filter> <Filter>Header Files\N64 System\Mips</Filter>
</ClInclude> </ClInclude>

View File

@ -140,7 +140,6 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory)
AddHandler(Default_SyncViaAudio, new CSettingTypeApplication("Defaults", "Audio-Sync Audio", true)); AddHandler(Default_SyncViaAudio, new CSettingTypeApplication("Defaults", "Audio-Sync Audio", true));
AddHandler(Default_FixedAudio, new CSettingTypeApplication("Defaults", "Fixed Audio", true)); AddHandler(Default_FixedAudio, new CSettingTypeApplication("Defaults", "Fixed Audio", true));
AddHandler(Default_RandomizeSIPIInterrupts, new CSettingTypeApplication("Defaults", "Randomize SI/PI Interrupts", true)); AddHandler(Default_RandomizeSIPIInterrupts, new CSettingTypeApplication("Defaults", "Randomize SI/PI Interrupts", true));
AddHandler(Default_SMM_Protect_Memory, new CSettingTypeApplication("Defaults", "SMM-Protect", false));
AddHandler(Default_DiskSeekTiming, new CSettingTypeApplication("Defaults", "Disk Seek Timing", (uint32_t)DiskSeek_Turbo)); AddHandler(Default_DiskSeekTiming, new CSettingTypeApplication("Defaults", "Disk Seek Timing", (uint32_t)DiskSeek_Turbo));
AddHandler(Rdb_GoodName, new CSettingTypeRomDatabase("Good Name", Game_GameName)); AddHandler(Rdb_GoodName, new CSettingTypeRomDatabase("Good Name", Game_GameName));
@ -175,7 +174,6 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory)
AddHandler(Rdb_SMM_StoreInstruc, new CSettingTypeRomDatabase("SMM-StoreInst", false)); AddHandler(Rdb_SMM_StoreInstruc, new CSettingTypeRomDatabase("SMM-StoreInst", false));
AddHandler(Rdb_SMM_PIDMA, new CSettingTypeRomDatabase("SMM-PI DMA", true)); AddHandler(Rdb_SMM_PIDMA, new CSettingTypeRomDatabase("SMM-PI DMA", true));
AddHandler(Rdb_SMM_TLB, new CSettingTypeRomDatabase("SMM-TLB", true)); AddHandler(Rdb_SMM_TLB, new CSettingTypeRomDatabase("SMM-TLB", true));
AddHandler(Rdb_SMM_Protect, new CSettingTypeRomDatabase("SMM-Protect", Default_SMM_Protect_Memory));
AddHandler(Rdb_SMM_ValidFunc, new CSettingTypeRomDatabase("SMM-FUNC", true)); AddHandler(Rdb_SMM_ValidFunc, new CSettingTypeRomDatabase("SMM-FUNC", true));
AddHandler(Rdb_ViRefreshRate, new CSettingTypeRomDatabase("ViRefresh", Default_ViRefreshRate)); AddHandler(Rdb_ViRefreshRate, new CSettingTypeRomDatabase("ViRefresh", Default_ViRefreshRate));
AddHandler(Rdb_AiCountPerBytes, new CSettingTypeRomDatabase("AiCountPerBytes", Default_AiCountPerBytes)); AddHandler(Rdb_AiCountPerBytes, new CSettingTypeRomDatabase("AiCountPerBytes", Default_AiCountPerBytes));
@ -232,7 +230,6 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory)
AddHandler(Game_SMM_Cache, new CSettingTypeGame("SMM-Cache", Rdb_SMM_Cache)); AddHandler(Game_SMM_Cache, new CSettingTypeGame("SMM-Cache", Rdb_SMM_Cache));
AddHandler(Game_SMM_PIDMA, new CSettingTypeGame("SMM-PI DMA", Rdb_SMM_PIDMA)); AddHandler(Game_SMM_PIDMA, new CSettingTypeGame("SMM-PI DMA", Rdb_SMM_PIDMA));
AddHandler(Game_SMM_TLB, new CSettingTypeGame("SMM-TLB", Rdb_SMM_TLB)); AddHandler(Game_SMM_TLB, new CSettingTypeGame("SMM-TLB", Rdb_SMM_TLB));
AddHandler(Game_SMM_Protect, new CSettingTypeGame("SMM-Protect", Rdb_SMM_Protect));
AddHandler(Game_SMM_ValidFunc, new CSettingTypeGame("SMM-FUNC", Rdb_SMM_ValidFunc)); AddHandler(Game_SMM_ValidFunc, new CSettingTypeGame("SMM-FUNC", Rdb_SMM_ValidFunc));
AddHandler(Game_ViRefreshRate, new CSettingTypeGame("ViRefresh", Rdb_ViRefreshRate)); AddHandler(Game_ViRefreshRate, new CSettingTypeGame("ViRefresh", Rdb_ViRefreshRate));
AddHandler(Game_AiCountPerBytes, new CSettingTypeGame("AiCountPerBytes", Rdb_AiCountPerBytes)); AddHandler(Game_AiCountPerBytes, new CSettingTypeGame("AiCountPerBytes", Rdb_AiCountPerBytes));
@ -374,7 +371,6 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory)
AddHandler(Debugger_TraceRegisterCache, new CSettingTypeApplication("Logging", "Register Cache", (uint32_t)g_ModuleLogLevel[TraceRegisterCache])); AddHandler(Debugger_TraceRegisterCache, new CSettingTypeApplication("Logging", "Register Cache", (uint32_t)g_ModuleLogLevel[TraceRegisterCache]));
AddHandler(Debugger_TraceRecompiler, new CSettingTypeApplication("Logging", "Recompiler", (uint32_t)g_ModuleLogLevel[TraceRecompiler])); AddHandler(Debugger_TraceRecompiler, new CSettingTypeApplication("Logging", "Recompiler", (uint32_t)g_ModuleLogLevel[TraceRecompiler]));
AddHandler(Debugger_TraceTLB, new CSettingTypeApplication("Logging", "TLB", (uint32_t)g_ModuleLogLevel[TraceTLB])); AddHandler(Debugger_TraceTLB, new CSettingTypeApplication("Logging", "TLB", (uint32_t)g_ModuleLogLevel[TraceTLB]));
AddHandler(Debugger_TraceProtectedMEM, new CSettingTypeApplication("Logging", "Protected MEM", (uint32_t)g_ModuleLogLevel[TraceProtectedMem]));
AddHandler(Debugger_TraceUserInterface, new CSettingTypeApplication("Logging", "User Interface", (uint32_t)g_ModuleLogLevel[TraceUserInterface])); AddHandler(Debugger_TraceUserInterface, new CSettingTypeApplication("Logging", "User Interface", (uint32_t)g_ModuleLogLevel[TraceUserInterface]));
AddHandler(Debugger_TraceRomList, new CSettingTypeApplication("Logging", "Rom List", (uint32_t)g_ModuleLogLevel[TraceRomList])); AddHandler(Debugger_TraceRomList, new CSettingTypeApplication("Logging", "Rom List", (uint32_t)g_ModuleLogLevel[TraceRomList]));
AddHandler(Debugger_TraceExceptionHandler, new CSettingTypeApplication("Logging", "Exception Handler", (uint32_t)g_ModuleLogLevel[TraceExceptionHandler])); AddHandler(Debugger_TraceExceptionHandler, new CSettingTypeApplication("Logging", "Exception Handler", (uint32_t)g_ModuleLogLevel[TraceExceptionHandler]));

View File

@ -8,7 +8,6 @@ bool CGameSettings::m_RspMultiThreaded = false;
bool CGameSettings::m_UseHleGfx = true; bool CGameSettings::m_UseHleGfx = true;
bool CGameSettings::m_UseHleAudio = false; bool CGameSettings::m_UseHleAudio = false;
bool CGameSettings::m_bSMM_StoreInstruc; bool CGameSettings::m_bSMM_StoreInstruc;
bool CGameSettings::m_bSMM_Protect;
bool CGameSettings::m_bSMM_ValidFunc; bool CGameSettings::m_bSMM_ValidFunc;
bool CGameSettings::m_bSMM_PIDMA; bool CGameSettings::m_bSMM_PIDMA;
bool CGameSettings::m_bSMM_TLB; bool CGameSettings::m_bSMM_TLB;
@ -66,7 +65,6 @@ void CGameSettings::RefreshGameSettings()
m_UseHleGfx = g_Settings->LoadBool(Game_UseHleGfx); m_UseHleGfx = g_Settings->LoadBool(Game_UseHleGfx);
m_UseHleAudio = g_Settings->LoadBool(Game_UseHleAudio); m_UseHleAudio = g_Settings->LoadBool(Game_UseHleAudio);
m_bSMM_StoreInstruc = g_Settings->LoadBool(Game_SMM_StoreInstruc); m_bSMM_StoreInstruc = g_Settings->LoadBool(Game_SMM_StoreInstruc);
m_bSMM_Protect = g_Settings->LoadBool(Game_SMM_Protect);
m_bSMM_ValidFunc = g_Settings->LoadBool(Game_SMM_ValidFunc); m_bSMM_ValidFunc = g_Settings->LoadBool(Game_SMM_ValidFunc);
m_bSMM_PIDMA = g_Settings->LoadBool(Game_SMM_PIDMA); m_bSMM_PIDMA = g_Settings->LoadBool(Game_SMM_PIDMA);
m_bSMM_TLB = g_Settings->LoadBool(Game_SMM_TLB); m_bSMM_TLB = g_Settings->LoadBool(Game_SMM_TLB);

View File

@ -95,10 +95,6 @@ public:
{ {
return m_bSMM_StoreInstruc; return m_bSMM_StoreInstruc;
} }
inline static bool bSMM_Protect(void)
{
return m_bSMM_Protect;
}
inline static bool bSMM_ValidFunc(void) inline static bool bSMM_ValidFunc(void)
{ {
return m_bSMM_ValidFunc; return m_bSMM_ValidFunc;
@ -170,7 +166,6 @@ private:
static bool m_b32Bit; static bool m_b32Bit;
static bool m_RspAudioSignal; static bool m_RspAudioSignal;
static bool m_bSMM_StoreInstruc; static bool m_bSMM_StoreInstruc;
static bool m_bSMM_Protect;
static bool m_bSMM_ValidFunc; static bool m_bSMM_ValidFunc;
static bool m_bSMM_PIDMA; static bool m_bSMM_PIDMA;
static bool m_bSMM_TLB; static bool m_bSMM_TLB;

View File

@ -75,7 +75,6 @@ enum SettingID
Default_SyncViaAudio, Default_SyncViaAudio,
Default_FixedAudio, Default_FixedAudio,
Default_RandomizeSIPIInterrupts, Default_RandomizeSIPIInterrupts,
Default_SMM_Protect_Memory,
Default_DiskSeekTiming, Default_DiskSeekTiming,
// RDB settings // RDB settings
@ -106,7 +105,6 @@ enum SettingID
Rdb_SMM_Cache, Rdb_SMM_Cache,
Rdb_SMM_PIDMA, Rdb_SMM_PIDMA,
Rdb_SMM_TLB, Rdb_SMM_TLB,
Rdb_SMM_Protect,
Rdb_SMM_ValidFunc, Rdb_SMM_ValidFunc,
Rdb_ViRefreshRate, Rdb_ViRefreshRate,
Rdb_AiCountPerBytes, Rdb_AiCountPerBytes,
@ -142,7 +140,6 @@ enum SettingID
Game_SyncViaAudio, Game_SyncViaAudio,
Game_32Bit, Game_32Bit,
Game_SMM_Cache, Game_SMM_Cache,
Game_SMM_Protect,
Game_SMM_ValidFunc, Game_SMM_ValidFunc,
Game_SMM_PIDMA, Game_SMM_PIDMA,
Game_SMM_TLB, Game_SMM_TLB,
@ -291,7 +288,6 @@ enum SettingID
Debugger_TraceRegisterCache, Debugger_TraceRegisterCache,
Debugger_TraceRecompiler, Debugger_TraceRecompiler,
Debugger_TraceTLB, Debugger_TraceTLB,
Debugger_TraceProtectedMEM,
Debugger_TraceUserInterface, Debugger_TraceUserInterface,
Debugger_TraceRomList, Debugger_TraceRomList,
Debugger_TraceExceptionHandler, Debugger_TraceExceptionHandler,

View File

@ -18,7 +18,6 @@ enum TraceModuleProject64
TraceRegisterCache, TraceRegisterCache,
TraceRecompiler, TraceRecompiler,
TraceTLB, TraceTLB,
TraceProtectedMem,
TraceUserInterface, TraceUserInterface,
TraceRomList, TraceRomList,
TraceExceptionHandler, TraceExceptionHandler,

View File

@ -1,7 +1,6 @@
#include "stdafx.h" #include "stdafx.h"
#include <Common/MemoryManagement.h> #include <Common/MemoryManagement.h>
#include <Project64-core/ExceptionHandler.h>
#include <UserInterface/WTLControls/HexEditCtrl.h> #include <UserInterface/WTLControls/HexEditCtrl.h>

View File

@ -51,7 +51,6 @@ CMainMenu::CMainMenu(CMainGui * hMainWindow) :
m_ChangeSettingList.push_back(Debugger_TraceRegisterCache); m_ChangeSettingList.push_back(Debugger_TraceRegisterCache);
m_ChangeSettingList.push_back(Debugger_TraceRecompiler); m_ChangeSettingList.push_back(Debugger_TraceRecompiler);
m_ChangeSettingList.push_back(Debugger_TraceTLB); m_ChangeSettingList.push_back(Debugger_TraceTLB);
m_ChangeSettingList.push_back(Debugger_TraceProtectedMEM);
m_ChangeSettingList.push_back(Debugger_TraceUserInterface); m_ChangeSettingList.push_back(Debugger_TraceUserInterface);
m_ChangeSettingList.push_back(Debugger_AppLogFlush); m_ChangeSettingList.push_back(Debugger_AppLogFlush);
m_ChangeSettingList.push_back(Game_CurrentSaveState); m_ChangeSettingList.push_back(Game_CurrentSaveState);
@ -554,7 +553,6 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
case ID_DEBUGGER_TRACE_REGISTERCACHE: SetTraceModuleSetttings(Debugger_TraceRegisterCache); break; case ID_DEBUGGER_TRACE_REGISTERCACHE: SetTraceModuleSetttings(Debugger_TraceRegisterCache); break;
case ID_DEBUGGER_TRACE_RECOMPILER: SetTraceModuleSetttings(Debugger_TraceRecompiler); break; case ID_DEBUGGER_TRACE_RECOMPILER: SetTraceModuleSetttings(Debugger_TraceRecompiler); break;
case ID_DEBUGGER_TRACE_TLB: SetTraceModuleSetttings(Debugger_TraceTLB); break; case ID_DEBUGGER_TRACE_TLB: SetTraceModuleSetttings(Debugger_TraceTLB); break;
case ID_DEBUGGER_TRACE_PROTECTEDMEM: SetTraceModuleSetttings(Debugger_TraceProtectedMEM); break;
case ID_DEBUGGER_TRACE_USERINTERFACE: SetTraceModuleSetttings(Debugger_TraceUserInterface); break; case ID_DEBUGGER_TRACE_USERINTERFACE: SetTraceModuleSetttings(Debugger_TraceUserInterface); break;
case ID_DEBUGGER_APPLOG_FLUSH: case ID_DEBUGGER_APPLOG_FLUSH:
@ -1254,10 +1252,6 @@ void CMainMenu::FillOutMenu(HMENU hMenu)
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceTLB) == TraceVerbose); Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceTLB) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item); DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_PROTECTEDMEM, EMPTY_STRING, EMPTY_STDSTR, nullptr, L"Protected MEM");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceProtectedMEM) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_USERINTERFACE, EMPTY_STRING, EMPTY_STDSTR, nullptr, L"User interface"); Item.Reset(ID_DEBUGGER_TRACE_USERINTERFACE, EMPTY_STRING, EMPTY_STDSTR, nullptr, L"User interface");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceUserInterface) == TraceVerbose); Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceUserInterface) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item); DebugAppLoggingMenu.push_back(Item);

View File

@ -123,7 +123,6 @@ enum MainMenuID
ID_DEBUGGER_TRACE_REGISTERCACHE, ID_DEBUGGER_TRACE_REGISTERCACHE,
ID_DEBUGGER_TRACE_RECOMPILER, ID_DEBUGGER_TRACE_RECOMPILER,
ID_DEBUGGER_TRACE_TLB, ID_DEBUGGER_TRACE_TLB,
ID_DEBUGGER_TRACE_PROTECTEDMEM,
ID_DEBUGGER_TRACE_USERINTERFACE, ID_DEBUGGER_TRACE_USERINTERFACE,
// Profile menu // Profile menu

View File

@ -19,7 +19,6 @@ CDefaultsOptionsPage::CDefaultsOptionsPage(HWND hParent, const RECT & rcDispay)
SetDlgItemText(IDC_ROM_FIXEDAUDIO, wGS(ROM_FIXED_AUDIO).c_str()); SetDlgItemText(IDC_ROM_FIXEDAUDIO, wGS(ROM_FIXED_AUDIO).c_str());
SetDlgItemText(IDC_SYNC_AUDIO, wGS(ROM_SYNC_AUDIO).c_str()); SetDlgItemText(IDC_SYNC_AUDIO, wGS(ROM_SYNC_AUDIO).c_str());
SetDlgItemText(IDC_RANDOMIZE_SIPI_INTERRUPTS, wGS(ROM_RANDOMIZE_SIPI_INTERRUPTS).c_str()); SetDlgItemText(IDC_RANDOMIZE_SIPI_INTERRUPTS, wGS(ROM_RANDOMIZE_SIPI_INTERRUPTS).c_str());
SetDlgItemText(IDC_PROTECT_MEMORY, wGS(ADVANCE_SMM_PROTECT).c_str());
SetDlgItemText(IDC_DISKSEEKTIMING_TEXT1, wGS(ROM_DISK_SEEK_TIMING).c_str()); SetDlgItemText(IDC_DISKSEEKTIMING_TEXT1, wGS(ROM_DISK_SEEK_TIMING).c_str());
CModifiedComboBox * ComboBox; CModifiedComboBox * ComboBox;
@ -60,7 +59,6 @@ CDefaultsOptionsPage::CDefaultsOptionsPage(HWND hParent, const RECT & rcDispay)
AddModCheckBox(GetDlgItem(IDC_SYNC_AUDIO), Default_SyncViaAudio); AddModCheckBox(GetDlgItem(IDC_SYNC_AUDIO), Default_SyncViaAudio);
AddModCheckBox(GetDlgItem(IDC_ROM_FIXEDAUDIO), Default_FixedAudio); AddModCheckBox(GetDlgItem(IDC_ROM_FIXEDAUDIO), Default_FixedAudio);
AddModCheckBox(GetDlgItem(IDC_RANDOMIZE_SIPI_INTERRUPTS), Default_RandomizeSIPIInterrupts); AddModCheckBox(GetDlgItem(IDC_RANDOMIZE_SIPI_INTERRUPTS), Default_RandomizeSIPIInterrupts);
AddModCheckBox(GetDlgItem(IDC_PROTECT_MEMORY), Default_SMM_Protect_Memory);
AddModCheckBox(GetDlgItem(IDC_DISKSEEKTIMING), Default_DiskSeekTiming); AddModCheckBox(GetDlgItem(IDC_DISKSEEKTIMING), Default_DiskSeekTiming);
ComboBox = AddModComboBox(GetDlgItem(IDC_DISKSEEKTIMING), Default_DiskSeekTiming); ComboBox = AddModComboBox(GetDlgItem(IDC_DISKSEEKTIMING), Default_DiskSeekTiming);

View File

@ -10,7 +10,6 @@ class CDefaultsOptionsPage :
COMMAND_ID_HANDLER_EX(IDC_SYNC_AUDIO, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_SYNC_AUDIO, CheckBoxChanged);
COMMAND_ID_HANDLER_EX(IDC_ROM_FIXEDAUDIO, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_ROM_FIXEDAUDIO, CheckBoxChanged);
COMMAND_ID_HANDLER_EX(IDC_RANDOMIZE_SIPI_INTERRUPTS, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_RANDOMIZE_SIPI_INTERRUPTS, CheckBoxChanged);
COMMAND_ID_HANDLER_EX(IDC_PROTECT_MEMORY, CheckBoxChanged);
COMMAND_HANDLER_EX(IDC_RDRAM_SIZE_KNOWN, LBN_SELCHANGE, ComboBoxChanged); COMMAND_HANDLER_EX(IDC_RDRAM_SIZE_KNOWN, LBN_SELCHANGE, ComboBoxChanged);
COMMAND_HANDLER_EX(IDC_RDRAM_SIZE_UNKNOWN, LBN_SELCHANGE, ComboBoxChanged); COMMAND_HANDLER_EX(IDC_RDRAM_SIZE_UNKNOWN, LBN_SELCHANGE, ComboBoxChanged);
COMMAND_HANDLER_EX(IDC_COUNTFACT, LBN_SELCHANGE, ComboBoxChanged); COMMAND_HANDLER_EX(IDC_COUNTFACT, LBN_SELCHANGE, ComboBoxChanged);

View File

@ -25,7 +25,6 @@ CGameRecompilePage::CGameRecompilePage(HWND hParent, const RECT & rcDispay)
SetDlgItemText(IDC_SMM_DMA, wGS(ADVANCE_SMM_PIDMA).c_str()); SetDlgItemText(IDC_SMM_DMA, wGS(ADVANCE_SMM_PIDMA).c_str());
SetDlgItemText(IDC_SMM_VALIDATE, wGS(ADVANCE_SMM_VALIDATE).c_str()); SetDlgItemText(IDC_SMM_VALIDATE, wGS(ADVANCE_SMM_VALIDATE).c_str());
SetDlgItemText(IDC_SMM_TLB, wGS(ADVANCE_SMM_TLB).c_str()); SetDlgItemText(IDC_SMM_TLB, wGS(ADVANCE_SMM_TLB).c_str());
SetDlgItemText(IDC_SMM_PROTECT, wGS(ADVANCE_SMM_PROTECT).c_str());
m_SelfModGroup.Attach(GetDlgItem(IDC_SMM_FRAME)); m_SelfModGroup.Attach(GetDlgItem(IDC_SMM_FRAME));
@ -36,7 +35,6 @@ CGameRecompilePage::CGameRecompilePage(HWND hParent, const RECT & rcDispay)
AddModCheckBox(GetDlgItem(IDC_SMM_DMA), Game_SMM_PIDMA); AddModCheckBox(GetDlgItem(IDC_SMM_DMA), Game_SMM_PIDMA);
AddModCheckBox(GetDlgItem(IDC_SMM_VALIDATE), Game_SMM_ValidFunc); AddModCheckBox(GetDlgItem(IDC_SMM_VALIDATE), Game_SMM_ValidFunc);
AddModCheckBox(GetDlgItem(IDC_SMM_TLB), Game_SMM_TLB); AddModCheckBox(GetDlgItem(IDC_SMM_TLB), Game_SMM_TLB);
AddModCheckBox(GetDlgItem(IDC_SMM_PROTECT), Game_SMM_Protect);
AddModCheckBox(GetDlgItem(IDC_SMM_STORE), Game_SMM_StoreInstruc); AddModCheckBox(GetDlgItem(IDC_SMM_STORE), Game_SMM_StoreInstruc);
AddModCheckBox(GetDlgItem(IDC_ROM_FASTSP), Game_FastSP); AddModCheckBox(GetDlgItem(IDC_ROM_FASTSP), Game_FastSP);
AddModCheckBox(GetDlgItem(IDC_ROM_32BIT), Game_32Bit); AddModCheckBox(GetDlgItem(IDC_ROM_32BIT), Game_32Bit);

View File

@ -18,7 +18,6 @@ class CGameRecompilePage :
COMMAND_ID_HANDLER_EX(IDC_SMM_DMA, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_SMM_DMA, CheckBoxChanged);
COMMAND_ID_HANDLER_EX(IDC_SMM_VALIDATE, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_SMM_VALIDATE, CheckBoxChanged);
COMMAND_ID_HANDLER_EX(IDC_SMM_TLB, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_SMM_TLB, CheckBoxChanged);
COMMAND_ID_HANDLER_EX(IDC_SMM_PROTECT, CheckBoxChanged);
COMMAND_ID_HANDLER_EX(IDC_SMM_STORE, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_SMM_STORE, CheckBoxChanged);
} }
END_MSG_MAP() END_MSG_MAP()

View File

@ -575,7 +575,6 @@ BEGIN
CONTROL "PI DMA",IDC_SMM_DMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,111,89,10 CONTROL "PI DMA",IDC_SMM_DMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,111,89,10
CONTROL "TLB Unmapping",IDC_SMM_TLB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,116,111,89,10 CONTROL "TLB Unmapping",IDC_SMM_TLB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,116,111,89,10
CONTROL "Start Changed",IDC_SMM_VALIDATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,123,89,10 CONTROL "Start Changed",IDC_SMM_VALIDATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,123,89,10
CONTROL "Protect Memory",IDC_SMM_PROTECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,116,123,89,10
CONTROL "FPU Register caching",IDC_ROM_FPUREGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,62,95,10 CONTROL "FPU Register caching",IDC_ROM_FPUREGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,62,95,10
END END
@ -1248,7 +1247,6 @@ BEGIN
CONTROL "Use High Level GFX",IDC_HLE_GFX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,107,91,10 CONTROL "Use High Level GFX",IDC_HLE_GFX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,107,91,10
CONTROL "Randomize SI/PI interrupts",IDC_RANDOMIZE_SIPI_INTERRUPTS, CONTROL "Randomize SI/PI interrupts",IDC_RANDOMIZE_SIPI_INTERRUPTS,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,107,107,10 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,107,107,10
CONTROL "Protect Memory",IDC_PROTECT_MEMORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,119,91,10
END END
IDD_Enhancement_Config DIALOGEX 0, 0, 206, 214 IDD_Enhancement_Config DIALOGEX 0, 0, 206, 214

View File

@ -163,7 +163,6 @@
#define IDC_S_CURRENT_ASSIGN 1040 #define IDC_S_CURRENT_ASSIGN 1040
#define IDC_SMM_VALIDATE 1041 #define IDC_SMM_VALIDATE 1041
#define IDC_ROM_HEADER 1042 #define IDC_ROM_HEADER 1042
#define IDC_SMM_PROTECT 1042
#define IDC_UNKOWN 1043 #define IDC_UNKOWN 1043
#define IDC_FUNCFIND 1043 #define IDC_FUNCFIND 1043
#define IDC_RI_REG 1044 #define IDC_RI_REG 1044
@ -335,7 +334,6 @@
#define IDC_SYNC_AUDIO 1156 #define IDC_SYNC_AUDIO 1156
#define IDC_UNALIGNED_DMA 1158 #define IDC_UNALIGNED_DMA 1158
#define IDC_RANDOMIZE_SIPI_INTERRUPTS 1159 #define IDC_RANDOMIZE_SIPI_INTERRUPTS 1159
#define IDC_PROTECT_MEMORY 1160
#define IDC_R16_EDIT 1165 #define IDC_R16_EDIT 1165
#define IDC_R17_EDIT 1166 #define IDC_R17_EDIT 1166
#define IDC_R18_EDIT 1167 #define IDC_R18_EDIT 1167