Bugfix for rounding/clamping mode patches not being applied (and possibly some other obscure cpu settings bugs as well).

Cause: there were accidentally 2 instances of 'Recompiler' in the Pcsx2 emulator settings structure.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3843 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2010-09-26 19:51:54 +00:00
parent c7257797a1
commit f6a7c33559
5 changed files with 22 additions and 21 deletions

View File

@ -240,7 +240,7 @@ struct Pcsx2Config
return !OpEqu( bitset ); return !OpEqu( bitset );
} }
} Recompiler; };
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
struct CpuOptions struct CpuOptions

View File

@ -128,8 +128,7 @@ void SysCoreThread::ApplySettings( const Pcsx2Config& src )
if( !pxAssertDev( IsPaused(), "CoreThread is not paused; settings cannot be applied." ) ) return; if( !pxAssertDev( IsPaused(), "CoreThread is not paused; settings cannot be applied." ) ) return;
m_resetRecompilers = ( src.Cpu != EmuConfig.Cpu ) || ( src.Recompiler != EmuConfig.Recompiler ) || m_resetRecompilers = ( src.Cpu != EmuConfig.Cpu ) || ( src.Gamefixes != EmuConfig.Gamefixes ) || ( src.Speedhacks != EmuConfig.Speedhacks );
( src.Gamefixes != EmuConfig.Gamefixes ) || ( src.Speedhacks != EmuConfig.Speedhacks );
m_resetProfilers = ( src.Profiler != EmuConfig.Profiler ); m_resetProfilers = ( src.Profiler != EmuConfig.Profiler );
m_resetVsyncTimers = ( src.GS != EmuConfig.GS ); m_resetVsyncTimers = ( src.GS != EmuConfig.GS );

View File

@ -221,18 +221,18 @@ static int loadGameSettings(Pcsx2Config& dest, const Game_Data& game, bool verbo
if (game.keyExists("eeClampMode")) { if (game.keyExists("eeClampMode")) {
int clampMode = game.getInt("eeClampMode"); int clampMode = game.getInt("eeClampMode");
if(verbose) Console.WriteLn("(GameDB) Changing EE/FPU clamp mode [mode=%d]", clampMode); if(verbose) Console.WriteLn("(GameDB) Changing EE/FPU clamp mode [mode=%d]", clampMode);
dest.Recompiler.fpuOverflow = (clampMode >= 1); dest.Cpu.Recompiler.fpuOverflow = (clampMode >= 1);
dest.Recompiler.fpuExtraOverflow = (clampMode >= 2); dest.Cpu.Recompiler.fpuExtraOverflow = (clampMode >= 2);
dest.Recompiler.fpuFullMode = (clampMode >= 3); dest.Cpu.Recompiler.fpuFullMode = (clampMode >= 3);
gf++; gf++;
} }
if (game.keyExists("vuClampMode")) { if (game.keyExists("vuClampMode")) {
int clampMode = game.getInt("vuClampMode"); int clampMode = game.getInt("vuClampMode");
if(verbose) Console.WriteLn("(GameDB) Changing VU0/VU1 clamp mode [mode=%d]", clampMode); if(verbose) Console.WriteLn("(GameDB) Changing VU0/VU1 clamp mode [mode=%d]", clampMode);
dest.Recompiler.vuOverflow = (clampMode >= 1); dest.Cpu.Recompiler.vuOverflow = (clampMode >= 1);
dest.Recompiler.vuExtraOverflow = (clampMode >= 2); dest.Cpu.Recompiler.vuExtraOverflow = (clampMode >= 2);
dest.Recompiler.vuSignOverflow = (clampMode >= 3); dest.Cpu.Recompiler.vuSignOverflow = (clampMode >= 3);
gf++; gf++;
} }

View File

@ -280,44 +280,46 @@ void Pcsx2App::AllocateCoreStuffs()
exconf += 6; exconf += 6;
exconf += scrollableTextArea | pxExpand.Border(wxALL, 16); exconf += scrollableTextArea | pxExpand.Border(wxALL, 16);
Pcsx2Config::RecompilerOptions& recOps = g_Conf->EmuOptions.Cpu.Recompiler;
if( BaseException* ex = m_CpuProviders->GetException_EE() ) if( BaseException* ex = m_CpuProviders->GetException_EE() )
{ {
scrollableTextArea->AppendText( L"* R5900 (EE)\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" ); scrollableTextArea->AppendText( L"* R5900 (EE)\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" );
g_Conf->EmuOptions.Recompiler.EnableEE = false; recOps.EnableEE = false;
} }
if( BaseException* ex = m_CpuProviders->GetException_IOP() ) if( BaseException* ex = m_CpuProviders->GetException_IOP() )
{ {
scrollableTextArea->AppendText( L"* R3000A (IOP)\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" ); scrollableTextArea->AppendText( L"* R3000A (IOP)\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" );
g_Conf->EmuOptions.Recompiler.EnableIOP = false; recOps.EnableIOP = false;
} }
if( BaseException* ex = m_CpuProviders->GetException_MicroVU0() ) if( BaseException* ex = m_CpuProviders->GetException_MicroVU0() )
{ {
scrollableTextArea->AppendText( L"* microVU0\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" ); scrollableTextArea->AppendText( L"* microVU0\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" );
g_Conf->EmuOptions.Recompiler.UseMicroVU0 = false; recOps.UseMicroVU0 = false;
g_Conf->EmuOptions.Recompiler.EnableVU0 = g_Conf->EmuOptions.Recompiler.EnableVU0 && m_CpuProviders->IsRecAvailable_SuperVU0(); recOps.EnableVU0 = recOps.EnableVU0 && m_CpuProviders->IsRecAvailable_SuperVU0();
} }
if( BaseException* ex = m_CpuProviders->GetException_MicroVU1() ) if( BaseException* ex = m_CpuProviders->GetException_MicroVU1() )
{ {
scrollableTextArea->AppendText( L"* microVU1\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" ); scrollableTextArea->AppendText( L"* microVU1\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" );
g_Conf->EmuOptions.Recompiler.UseMicroVU1 = false; recOps.UseMicroVU1 = false;
g_Conf->EmuOptions.Recompiler.EnableVU1 = g_Conf->EmuOptions.Recompiler.EnableVU1 && m_CpuProviders->IsRecAvailable_SuperVU1(); recOps.EnableVU1 = recOps.EnableVU1 && m_CpuProviders->IsRecAvailable_SuperVU1();
} }
if( BaseException* ex = m_CpuProviders->GetException_SuperVU0() ) if( BaseException* ex = m_CpuProviders->GetException_SuperVU0() )
{ {
scrollableTextArea->AppendText( L"* SuperVU0\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" ); scrollableTextArea->AppendText( L"* SuperVU0\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" );
g_Conf->EmuOptions.Recompiler.UseMicroVU0 = m_CpuProviders->IsRecAvailable_MicroVU0(); recOps.UseMicroVU0 = m_CpuProviders->IsRecAvailable_MicroVU0();
g_Conf->EmuOptions.Recompiler.EnableVU0 = g_Conf->EmuOptions.Recompiler.EnableVU0 && g_Conf->EmuOptions.Recompiler.UseMicroVU0; recOps.EnableVU0 = recOps.EnableVU0 && recOps.UseMicroVU0;
} }
if( BaseException* ex = m_CpuProviders->GetException_SuperVU1() ) if( BaseException* ex = m_CpuProviders->GetException_SuperVU1() )
{ {
scrollableTextArea->AppendText( L"* SuperVU1\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" ); scrollableTextArea->AppendText( L"* SuperVU1\n\t" + ex->FormatDiagnosticMessage() + L"\n\n" );
g_Conf->EmuOptions.Recompiler.UseMicroVU1 = m_CpuProviders->IsRecAvailable_MicroVU1(); recOps.UseMicroVU1 = m_CpuProviders->IsRecAvailable_MicroVU1();
g_Conf->EmuOptions.Recompiler.EnableVU1 = g_Conf->EmuOptions.Recompiler.EnableVU1 && g_Conf->EmuOptions.Recompiler.UseMicroVU1; recOps.EnableVU1 = recOps.EnableVU1 && recOps.UseMicroVU1;
} }
exconf += exconf.Heading( pxE(".Popup:RecompilerInit:Footer", exconf += exconf.Heading( pxE(".Popup:RecompilerInit:Footer",

View File

@ -370,7 +370,7 @@ static void __fastcall StackFrameCheckFailed( int espORebp, int regval )
static void _DynGen_StackFrameCheck() static void _DynGen_StackFrameCheck()
{ {
if( !EmuConfig.Recompiler.StackFrameChecks ) return; if( !EmuConfig.Cpu.Recompiler.StackFrameChecks ) return;
// --------- EBP Here ----------- // --------- EBP Here -----------
@ -1400,7 +1400,7 @@ static void __fastcall recRecompile( const u32 startpc )
_initXMMregs(); _initXMMregs();
_initMMXregs(); _initMMXregs();
if( EmuConfig.Recompiler.PreBlockCheckEE ) if( EmuConfig.Cpu.Recompiler.PreBlockCheckEE )
{ {
// per-block dump checks, for debugging purposes. // per-block dump checks, for debugging purposes.
// [TODO] : These must be enabled from the GUI or INI to be used, otherwise the // [TODO] : These must be enabled from the GUI or INI to be used, otherwise the