BIOS/FastBoot: If OSDConfig is written, turn off HLE

Fixes #4902
Savestate bump, sorry.
This commit is contained in:
refractionpcsx2 2021-10-14 22:27:02 +01:00
parent f14c9e7ddd
commit 880107e72b
7 changed files with 22 additions and 3 deletions

View File

@ -17,6 +17,7 @@
#include "PrecompiledHeader.h"
#include "Common.h"
#include "ps2/BiosTools.h"
#include "R5900.h"
#include "R3000A.h"
#include "ps2/pgif.h" // pgif init
@ -102,6 +103,8 @@ void cpuReset()
Deci2Reset();
g_SkipBiosHack = EmuConfig.UseBOOT2Injection;
AllowParams1 = !g_SkipBiosHack;
AllowParams2 = !g_SkipBiosHack;
ElfCRC = 0;
DiscSerial = L"";

View File

@ -944,8 +944,11 @@ void SYSCALL()
DevCon.Warning("Set GS CRTC configuration. %s %s (%s)",mode.c_str(), inter, field);
}
break;
case Syscall::SetOsdConfigParam:
AllowParams1 = true;
break;
case Syscall::GetOsdConfigParam:
if(!NoOSD && g_SkipBiosHack)
if(!NoOSD && g_SkipBiosHack && !AllowParams1)
{
u32 memaddr = cpuRegs.GPR.n.a0.UL[0];
u8 params[16];
@ -965,8 +968,11 @@ void SYSCALL()
return;
}
break;
case Syscall::SetOsdConfigParam2:
AllowParams2 = true;
break;
case Syscall::GetOsdConfigParam2:
if (!NoOSD && g_SkipBiosHack)
if (!NoOSD && g_SkipBiosHack && !AllowParams2)
{
u32 memaddr = cpuRegs.GPR.n.a0.UL[0];
u8 params[16];

View File

@ -23,7 +23,9 @@ enum Syscall : u8
SetVTLBRefillHandler = 13,
StartThread = 34,
ChangeThreadPriority = 41,
SetOsdConfigParam = 74,
GetOsdConfigParam = 75,
SetOsdConfigParam2 = 110,
GetOsdConfigParam2 = 111,
sysPrintOut = 117,
sceSifSetDma = 119,

View File

@ -210,6 +210,10 @@ SaveStateBase& SaveStateBase::FreezeInternals()
Freeze(psxRegs); // iop regs
Freeze(fpuRegs);
Freeze(tlb); // tlbs
Freeze(AllowParams1); //OSDConfig written (Fast Boot)
Freeze(AllowParams2);
Freeze(g_GameStarted);
Freeze(g_GameLoading);
// Third Block - Cycle Timers and Events
// -------------------------------------

View File

@ -31,7 +31,7 @@ enum class FreezeAction
// the lower 16 bit value. IF the change is breaking of all compatibility with old
// states, increment the upper 16 bit value, and clear the lower 16 bits to 0.
static const u32 g_SaveVersion = (0x9A25 << 16) | 0x0000;
static const u32 g_SaveVersion = (0x9A26 << 16) | 0x0000;
// the freezing data between submodules and core
// an interesting thing to note is that this dates back from before plugin

View File

@ -51,6 +51,8 @@ u32 BiosVersion;
u32 BiosChecksum;
u32 BiosRegion;
bool NoOSD;
bool AllowParams1;
bool AllowParams2;
wxString BiosDescription;
BiosDebugInformation CurrentBiosInformation;

View File

@ -44,6 +44,8 @@ extern BiosDebugInformation CurrentBiosInformation;
extern u32 BiosVersion; // Used by CDVD
extern u32 BiosRegion; // Used by CDVD
extern bool NoOSD; // Used for HLE OSD Config Params
extern bool AllowParams1;
extern bool AllowParams2;
extern u32 BiosChecksum;
extern wxString BiosDescription;
extern void LoadBIOS();