diff --git a/Source/Core/Core/Src/ConfigManager.cpp b/Source/Core/Core/Src/ConfigManager.cpp index 5b4eac0565..ad67050036 100644 --- a/Source/Core/Core/Src/ConfigManager.cpp +++ b/Source/Core/Core/Src/ConfigManager.cpp @@ -293,6 +293,7 @@ void SConfig::LoadSettings() ini.Get("Core", "RunCompareClient", &m_LocalCoreStartupParameter.bRunCompareClient, false); ini.Get("Core", "MMU", &m_LocalCoreStartupParameter.bMMU, false); ini.Get("Core", "TLBHack", &m_LocalCoreStartupParameter.iTLBHack, 0); + ini.Get("Core", "AlternateRFI", &m_LocalCoreStartupParameter.bAlternateRFI, false); ini.Get("Core", "FrameLimit", &m_Framelimit, 1); // auto frame limit by default ini.Get("Core", "UseFPS", &b_UseFPS, false); // use vps as default diff --git a/Source/Core/Core/Src/CoreParameter.cpp b/Source/Core/Core/Src/CoreParameter.cpp index b03704550b..a288ef73f6 100644 --- a/Source/Core/Core/Src/CoreParameter.cpp +++ b/Source/Core/Core/Src/CoreParameter.cpp @@ -47,7 +47,7 @@ SCoreStartupParameter::SCoreStartupParameter() bLockThreads(false), bEnableCheats(false), bRunCompareServer(false), bRunCompareClient(false), - bMMU(false), bSMC(false), iTLBHack(0), SelectedLanguage(0), bWii(false), + bMMU(false), bAlternateRFI(false), iTLBHack(0), SelectedLanguage(0), bWii(false), bConfirmStop(false), bHideCursor(false), bAutoHideCursor(false), bUsePanicHandlers(true), iRenderWindowXPos(0), iRenderWindowYPos(0), @@ -70,8 +70,8 @@ void SCoreStartupParameter::LoadDefaults() bLockThreads = true; bEnableFPRF = false; bMMU = false; - bSMC = false; iTLBHack = 0; + bAlternateRFI = false; SelectedLanguage = 0; bWii = false; diff --git a/Source/Core/Core/Src/CoreParameter.h b/Source/Core/Core/Src/CoreParameter.h index b1b3c0c2cc..322405fbed 100644 --- a/Source/Core/Core/Src/CoreParameter.h +++ b/Source/Core/Core/Src/CoreParameter.h @@ -79,8 +79,8 @@ struct SCoreStartupParameter bool bRunCompareClient; bool bMMU; - bool bSMC; int iTLBHack; + bool bAlternateRFI; int SelectedLanguage; diff --git a/Source/Core/Core/Src/HW/MemmapFunctions.cpp b/Source/Core/Core/Src/HW/MemmapFunctions.cpp index a25e00e8c4..6f15925317 100644 --- a/Source/Core/Core/Src/HW/MemmapFunctions.cpp +++ b/Source/Core/Core/Src/HW/MemmapFunctions.cpp @@ -265,11 +265,6 @@ inline void WriteToHardware(u32 em_address, const T data, u32 effective_address, ((em_address & 0xF0000000) == 0x00000000)) { *(T*)&m_pRAM[em_address & RAM_MASK] = bswap(data); - - // Required for games with self modifying code (e.g. Monster House) - if (Core::g_CoreStartupParameter.bSMC) - Write_Opcode_JIT(em_address, 0x14141414); - return; } else if (((em_address & 0xF0000000) == 0x90000000) || diff --git a/Source/Core/Core/Src/LuaInterface.cpp b/Source/Core/Core/Src/LuaInterface.cpp index 6352f3ffb7..3a1aaa4afd 100644 --- a/Source/Core/Core/Src/LuaInterface.cpp +++ b/Source/Core/Core/Src/LuaInterface.cpp @@ -2799,6 +2799,7 @@ DEFINE_LUA_FUNCTION(emulua_loadrom, "filename") game_ini.Get("Core", "EnableFPRF", &StartUp.bEnableFPRF, StartUp.bEnableFPRF); game_ini.Get("Core", "MMU", &StartUp.bMMU, StartUp.bMMU); game_ini.Get("Core", "TLBHack", &StartUp.iTLBHack, StartUp.iTLBHack); + game_ini.Get("Core", "AlternateRFI", &StartUp.bAlternateRFI, StartUp.bAlternateRFI); // Wii settings if (StartUp.bWii) { diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.cpp index 249fd69ad6..7dca05adde 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.cpp +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.cpp @@ -75,13 +75,44 @@ static void patches() }*/ } -void Interpreter::SingleStepInner(void) +int startTrace = 0; + +void Trace( UGeckoInstruction &instCode ) +{ + char regs[500]=""; + for (int i=0; i<32; i++) { + sprintf(regs, "%sr%02d: %08x ", regs, i, PowerPC::ppcState.gpr[i]); + } + + char fregs[500]=""; + for (int i=0; i<32; i++) { + sprintf(fregs, "%sf%02d: %08x %08x ", fregs, i, PowerPC::ppcState.ps[i][0], PowerPC::ppcState.ps[i][1]); + } + + char ppcInst[256]; + DisassembleGekko(instCode.hex, PC, ppcInst, 256); + + DEBUG_LOG(POWERPC, "INTER PC: %08x SRR0: %08x SRR1: %08x CRfast: %02x%02x%02x%02x%02x%02x%02x%02x FPSCR: %08x MSR: %08x LR: %08x %s %s %08x %s", PC, SRR0, SRR1, PowerPC::ppcState.cr_fast[0], PowerPC::ppcState.cr_fast[1], PowerPC::ppcState.cr_fast[2], PowerPC::ppcState.cr_fast[3], PowerPC::ppcState.cr_fast[4], PowerPC::ppcState.cr_fast[5], PowerPC::ppcState.cr_fast[6], PowerPC::ppcState.cr_fast[7], PowerPC::ppcState.fpscr, PowerPC::ppcState.msr, PowerPC::ppcState.spr[8], regs, fregs, instCode.hex, ppcInst); +} + +int Interpreter::SingleStepInner(void) { static UGeckoInstruction instCode; NPC = PC + sizeof(UGeckoInstruction); instCode.hex = Memory::Read_Opcode(PC); + // Uncomment to trace the interpreter + //if ((PC & 0xffffff)>=0x0ab54c && (PC & 0xffffff)<=0x0ab624) + // startTrace = 1; + //else + // startTrace = 0; + + if (startTrace) + { + Trace(instCode); + } + if (instCode.hex != 0) { UReg_MSR& msr = (UReg_MSR&)MSR; @@ -131,6 +162,9 @@ void Interpreter::SingleStepInner(void) PowerPC::ppcState.DebugCount++; #endif patches(); + + GekkoOPInfo *opinfo = GetOpInfo(instCode); + return opinfo->numCyclesMinusOne + 1; } void Interpreter::SingleStep() @@ -224,11 +258,12 @@ void Interpreter::Run() { m_EndBlock = false; int i; + int cycles = 0; for (i = 0; !m_EndBlock; i++) { - SingleStepInner(); + cycles += SingleStepInner(); } - CoreTiming::downcount -= i; + CoreTiming::downcount -= cycles; } } diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.h b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.h index 1f5bd966a1..41c81abe86 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.h +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.h @@ -29,7 +29,8 @@ public: void Shutdown(); void Reset(); void SingleStep(); - void SingleStepInner(); + int SingleStepInner(); + void Run(); void ClearCache(); const char *GetName(); diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp index 10a94effbd..f402f3542d 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp @@ -255,7 +255,7 @@ void Jit64::HLEFunction(UGeckoInstruction _inst) fpr.Flush(FLUSH_ALL); ABI_CallFunctionCC((void*)&HLE::Execute, js.compilerPC, _inst.hex); MOV(32, R(EAX), M(&NPC)); - WriteExitDestInEAX(0); + WriteExitDestInEAX(); } void Jit64::DoNothing(UGeckoInstruction _inst) @@ -321,7 +321,7 @@ void Jit64::WriteExit(u32 destination, int exit_num) } } -void Jit64::WriteExitDestInEAX(int exit_num) +void Jit64::WriteExitDestInEAX() { MOV(32, M(&PC), R(EAX)); Cleanup(); @@ -379,7 +379,7 @@ void Jit64::Trace() } #endif - NOTICE_LOG(DYNA_REC, "JIT64 PC: %08x SRR0: %08x SRR1: %08x CRfast: %02x%02x%02x%02x%02x%02x%02x%02x FPSCR: %08x MSR: %08x LR: %08x %s %s", + DEBUG_LOG(DYNA_REC, "JIT64 PC: %08x SRR0: %08x SRR1: %08x CRfast: %02x%02x%02x%02x%02x%02x%02x%02x FPSCR: %08x MSR: %08x LR: %08x %s %s", PC, SRR0, SRR1, PowerPC::ppcState.cr_fast[0], PowerPC::ppcState.cr_fast[1], PowerPC::ppcState.cr_fast[2], PowerPC::ppcState.cr_fast[3], PowerPC::ppcState.cr_fast[4], PowerPC::ppcState.cr_fast[5], PowerPC::ppcState.cr_fast[6], PowerPC::ppcState.cr_fast[7], PowerPC::ppcState.fpscr, PowerPC::ppcState.msr, PowerPC::ppcState.spr[8], regs, fregs); diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit.h b/Source/Core/Core/Src/PowerPC/Jit64/Jit.h index c8a2035790..e8f5130860 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit.h +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit.h @@ -141,7 +141,7 @@ public: // Utilities for use by opcodes void WriteExit(u32 destination, int exit_num); - void WriteExitDestInEAX(int exit_num); + void WriteExitDestInEAX(); void WriteExceptionExit(); void WriteRfiExitDestInEAX(); void WriteCallInterpreter(UGeckoInstruction _inst); diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp index 334f89eb82..949fca58c8 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp @@ -68,9 +68,12 @@ void Jit64::rfi(UGeckoInstruction inst) MOV(32, R(EAX), M(&SRR1)); AND(32, R(EAX), Imm32(mask & clearMSR13)); OR(32, M(&MSR), R(EAX)); - // NPC = SRR0; + // NPC = SRR0; MOV(32, R(EAX), M(&SRR0)); - WriteRfiExitDestInEAX(); + if (Core::g_CoreStartupParameter.bAlternateRFI) + WriteExitDestInEAX(); + else + WriteRfiExitDestInEAX(); } void Jit64::bx(UGeckoInstruction inst) @@ -92,7 +95,7 @@ void Jit64::bx(UGeckoInstruction inst) destination = js.compilerPC + SignExt26(inst.LI << 2); #ifdef ACID_TEST if (inst.LK) - AND(32, M(&CR), Imm32(~(0xFF000000))); + AND(32, M(&PowerPC::ppcState.cr), Imm32(~(0xFF000000))); #endif if (destination == js.compilerPC) { @@ -181,7 +184,7 @@ void Jit64::bcctrx(UGeckoInstruction inst) if (inst.LK_3) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); // LR = PC + 4; AND(32, R(EAX), Imm32(0xFFFFFFFC)); - WriteExitDestInEAX(0); + WriteExitDestInEAX(); } else { @@ -203,7 +206,7 @@ void Jit64::bcctrx(UGeckoInstruction inst) //MOV(32, M(&PC), R(EAX)); => Already done in WriteExitDestInEAX() if (inst.LK_3) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); // LR = PC + 4; - WriteExitDestInEAX(0); + WriteExitDestInEAX(); // Would really like to continue the block here, but it ends. TODO. SetJumpTarget(b); WriteExit(js.compilerPC + 4, 1); @@ -241,14 +244,14 @@ void Jit64::bclrx(UGeckoInstruction inst) // This below line can be used to prove that blr "eats flags" in practice. // This observation will let us do a lot of fun observations. #ifdef ACID_TEST - AND(32, M(&CR), Imm32(~(0xFF000000))); + AND(32, M(&PowerPC::ppcState.cr), Imm32(~(0xFF000000))); #endif MOV(32, R(EAX), M(&LR)); AND(32, R(EAX), Imm32(0xFFFFFFFC)); if (inst.LK) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); - WriteExitDestInEAX(0); + WriteExitDestInEAX(); if ((inst.BO & BO_DONT_CHECK_CONDITION) == 0) SetJumpTarget( pConditionDontBranch ); diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp index a44d1c6663..35e2c27f24 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp @@ -290,14 +290,14 @@ void Jit64::cmpXX(UGeckoInstruction inst) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); MOV(32, R(EAX), M(&CTR)); AND(32, R(EAX), Imm32(0xFFFFFFFC)); - WriteExitDestInEAX(0); + WriteExitDestInEAX(); } else if ((js.next_inst.OPCD == 19) && (js.next_inst.SUBOP10 == 16)) // bclrx { MOV(32, R(EAX), M(&LR)); if (js.next_inst.LK) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); - WriteExitDestInEAX(0); + WriteExitDestInEAX(); } else { @@ -395,7 +395,7 @@ void Jit64::cmpXX(UGeckoInstruction inst) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); MOV(32, R(EAX), M(&CTR)); AND(32, R(EAX), Imm32(0xFFFFFFFC)); - WriteExitDestInEAX(0); + WriteExitDestInEAX(); } else if ((js.next_inst.OPCD == 19) && (js.next_inst.SUBOP10 == 16)) // bclrx { @@ -403,7 +403,7 @@ void Jit64::cmpXX(UGeckoInstruction inst) AND(32, R(EAX), Imm32(0xFFFFFFFC)); if (js.next_inst.LK) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); - WriteExitDestInEAX(0); + WriteExitDestInEAX(); } else { diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp index 52d3ad6453..52c2ef3eee 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp @@ -104,14 +104,11 @@ void Jit64::mfspr(UGeckoInstruction inst) } } - -// ======================================================================================= -// Don't interpret this, if we do we get thrown out -// -------------- void Jit64::mtmsr(UGeckoInstruction inst) { INSTRUCTION_START - JITDISABLE(SystemRegisters) + // Don't interpret this, if we do we get thrown out + //JITDISABLE(SystemRegisters) if (!gpr.R(inst.RS).IsImm()) { gpr.Lock(inst.RS); @@ -123,8 +120,6 @@ void Jit64::mtmsr(UGeckoInstruction inst) fpr.Flush(FLUSH_ALL); WriteExit(js.compilerPC + 4, 0); } -// ============== - void Jit64::mfmsr(UGeckoInstruction inst) { diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/IR_X86.cpp b/Source/Core/Core/Src/PowerPC/Jit64IL/IR_X86.cpp index 60b9dd8859..fb64c33d1d 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/IR_X86.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/IR_X86.cpp @@ -717,7 +717,7 @@ static void regWriteExit(RegInfo& RI, InstLoc dest) { if (isImm(*dest)) { RI.Jit->WriteExit(RI.Build->GetImmValue(dest), RI.exitNumber++); } else { - RI.Jit->WriteExitDestInOpArg(regLocForInst(RI, dest), RI.exitNumber++); + RI.Jit->WriteExitDestInOpArg(regLocForInst(RI, dest)); } } @@ -1831,7 +1831,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit, bool UseProfile, bool Mak } case InterpreterBranch: { Jit->MOV(32, R(EAX), M(&NPC)); - Jit->WriteExitDestInOpArg(R(EAX), 0); + Jit->WriteExitDestInOpArg(R(EAX)); break; } case RFIExit: { @@ -1848,7 +1848,10 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit, bool UseProfile, bool Mak Jit->MOV(32, M(&MSR), R(EAX)); // NPC = SRR0; Jit->MOV(32, R(EAX), M(&SRR0)); - Jit->WriteRfiExitDestInOpArg(R(EAX)); + if (SConfig::GetInstance().m_LocalCoreStartupParameter.bAlternateRFI) + Jit->WriteExitDestInOpArg(R(EAX)); + else + Jit->WriteRfiExitDestInOpArg(R(EAX)); break; } case FPExceptionCheckStart: { diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp index b2183cfbd4..71c96c3a6a 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp @@ -246,7 +246,7 @@ void JitIL::HLEFunction(UGeckoInstruction _inst) { ABI_CallFunctionCC((void*)&HLE::Execute, js.compilerPC, _inst.hex); MOV(32, R(EAX), M(&NPC)); - WriteExitDestInOpArg(R(EAX), 0); + WriteExitDestInOpArg(R(EAX)); } void JitIL::DoNothing(UGeckoInstruction _inst) @@ -314,7 +314,7 @@ void JitIL::WriteExit(u32 destination, int exit_num) } } -void JitIL::WriteExitDestInOpArg(const Gen::OpArg& arg, int exit_num) +void JitIL::WriteExitDestInOpArg(const Gen::OpArg& arg) { MOV(32, M(&PC), arg); Cleanup(); diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.h b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.h index ea49791e41..bb4c2d8ee1 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.h +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.h @@ -110,7 +110,7 @@ public: // Utilities for use by opcodes void WriteExit(u32 destination, int exit_num); - void WriteExitDestInOpArg(const Gen::OpArg& arg, int exit_num); + void WriteExitDestInOpArg(const Gen::OpArg& arg); void WriteExceptionExit(); void WriteRfiExitDestInOpArg(const Gen::OpArg& arg); void WriteCallInterpreter(UGeckoInstruction _inst); diff --git a/Source/Core/DolphinWX/Src/BootManager.cpp b/Source/Core/DolphinWX/Src/BootManager.cpp index 6b4e11c21d..623ca11ac9 100644 --- a/Source/Core/DolphinWX/Src/BootManager.cpp +++ b/Source/Core/DolphinWX/Src/BootManager.cpp @@ -106,9 +106,9 @@ bool BootCore(const std::string& _rFilename) game_ini.Get("Core", "CPUThread", &StartUp.bCPUThread, StartUp.bCPUThread); game_ini.Get("Core", "SkipIdle", &StartUp.bSkipIdle, StartUp.bSkipIdle); game_ini.Get("Core", "EnableFPRF", &StartUp.bEnableFPRF, StartUp.bEnableFPRF); - game_ini.Get("Core", "TLBHack", &StartUp.iTLBHack, StartUp.iTLBHack); game_ini.Get("Core", "MMU", &StartUp.bMMU, StartUp.bMMU); - game_ini.Get("Core", "SMC", &StartUp.bSMC, StartUp.bSMC); + game_ini.Get("Core", "TLBHack", &StartUp.iTLBHack, StartUp.iTLBHack); + game_ini.Get("Core", "AlternateRFI", &StartUp.bAlternateRFI, StartUp.bAlternateRFI); // Wii settings if (StartUp.bWii) { diff --git a/Source/Core/DolphinWX/Src/ISOProperties.cpp b/Source/Core/DolphinWX/Src/ISOProperties.cpp index 6c768900c6..76ecb8bf49 100644 --- a/Source/Core/DolphinWX/Src/ISOProperties.cpp +++ b/Source/Core/DolphinWX/Src/ISOProperties.cpp @@ -291,8 +291,11 @@ void CISOProperties::CreateGUIControls(bool IsWad) CPUThread = new wxCheckBox(m_GameConfig, ID_USEDUALCORE, _("Enable Dual Core"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); SkipIdle = new wxCheckBox(m_GameConfig, ID_IDLESKIP, _("Enable Idle Skipping"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); MMU = new wxCheckBox(m_GameConfig, ID_MMU, _("Enable MMU"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); + MMU->SetToolTip(wxT("Enables the Memory Management Unit, needed for some games (slow).")); TLBHack = new wxCheckBox(m_GameConfig, ID_TLBHACK, _("MMU Speed Hack"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); - SMC = new wxCheckBox(m_GameConfig, ID_MMU, _("Enable self modifying code check"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); + TLBHack->SetToolTip(wxT("Fast version of the MMU. Does not work for every game.")); + AlternateRFI = new wxCheckBox(m_GameConfig, ID_RFI, _("Alternate RFI"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); + AlternateRFI->SetToolTip(wxT("If a game hangs, works only in the Interpreter or Dolphin crashes, this option may fix the game.")); // Wii Console sbWiiOverrides = new wxStaticBoxSizer(wxVERTICAL, m_GameConfig, _("Wii Console")); EnableProgressiveScan = new wxCheckBox(m_GameConfig, ID_ENABLEPROGRESSIVESCAN, _("Enable Progressive Scan"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); @@ -352,7 +355,7 @@ void CISOProperties::CreateGUIControls(bool IsWad) sbCoreOverrides->Add(SkipIdle, 0, wxEXPAND|wxLEFT, 5); sbCoreOverrides->Add(MMU, 0, wxEXPAND|wxLEFT, 5); sbCoreOverrides->Add(TLBHack, 0, wxEXPAND|wxLEFT, 5); - sbCoreOverrides->Add(SMC, 0, wxEXPAND|wxLEFT, 5); + sbCoreOverrides->Add(AlternateRFI, 0, wxEXPAND|wxLEFT, 5); sbWiiOverrides->Add(EnableProgressiveScan, 0, wxEXPAND|wxLEFT, 5); sbWiiOverrides->Add(EnableWideScreen, 0, wxEXPAND|wxLEFT, 5); sbVideoOverrides->Add(ForceFiltering, 0, wxEXPAND|wxLEFT, 5); @@ -826,10 +829,10 @@ void CISOProperties::LoadGameConfig() else TLBHack->Set3StateValue(wxCHK_UNDETERMINED); - if (GameIni.Get("Core", "SMC", &bTemp)) - SMC->Set3StateValue((wxCheckBoxState)bTemp); + if (GameIni.Get("Core", "AlternateRFI", &bTemp)) + AlternateRFI->Set3StateValue((wxCheckBoxState)bTemp); else - SMC->Set3StateValue(wxCHK_UNDETERMINED); + AlternateRFI->Set3StateValue(wxCHK_UNDETERMINED); if (GameIni.Get("Wii", "ProgressiveScan", &bTemp)) EnableProgressiveScan->Set3StateValue((wxCheckBoxState)bTemp); @@ -922,10 +925,10 @@ bool CISOProperties::SaveGameConfig() else GameIni.Set("Core", "TLBHack", TLBHack->Get3StateValue()); - if (SMC->Get3StateValue() == wxCHK_UNDETERMINED) - GameIni.DeleteKey("Core", "SMC"); + if (AlternateRFI->Get3StateValue() == wxCHK_UNDETERMINED) + GameIni.DeleteKey("Core", "AlternateRFI"); else - GameIni.Set("Core", "SMC", SMC->Get3StateValue()); + GameIni.Set("Core", "AlternateRFI", AlternateRFI->Get3StateValue()); if (EnableProgressiveScan->Get3StateValue() == wxCHK_UNDETERMINED) GameIni.DeleteKey("Wii", "ProgressiveScan"); diff --git a/Source/Core/DolphinWX/Src/ISOProperties.h b/Source/Core/DolphinWX/Src/ISOProperties.h index 96043ce3d1..a2143833cf 100644 --- a/Source/Core/DolphinWX/Src/ISOProperties.h +++ b/Source/Core/DolphinWX/Src/ISOProperties.h @@ -84,7 +84,7 @@ class CISOProperties : public wxDialog wxStaticText *OverrideText; // Core - wxCheckBox *CPUThread, *SkipIdle, *MMU, *SMC, *TLBHack; + wxCheckBox *CPUThread, *SkipIdle, *MMU, *AlternateRFI, *TLBHack; // Wii wxCheckBox *EnableProgressiveScan, *EnableWideScreen; // Video @@ -166,7 +166,7 @@ class CISOProperties : public wxDialog ID_IDLESKIP, ID_MMU, ID_TLBHACK, - ID_SMC, + ID_RFI, ID_FORCEFILTERING, ID_EFBCOPYDISABLE, ID_EFBTOTEXTUREENABLE,