diff --git a/pcsx2/R5900OpcodeImpl.cpp b/pcsx2/R5900OpcodeImpl.cpp index 41fb2b35e0..60b4c10241 100644 --- a/pcsx2/R5900OpcodeImpl.cpp +++ b/pcsx2/R5900OpcodeImpl.cpp @@ -24,6 +24,7 @@ #include "R5900Exceptions.h" #include "GS.h" #include "CDVD/CDVD.h" +#include "ps2/BiosTools.h" GS_VideoMode gsVideoMode = GS_VideoMode::Uninitialized; bool gsIsInterlaced = false; @@ -944,7 +945,7 @@ void SYSCALL() } break; case Syscall::GetOsdConfigParam: - if(g_SkipBiosHack) + if(!NoOSD && g_SkipBiosHack) { u32 memaddr = cpuRegs.GPR.n.a0.UL[0]; u8 params[16]; @@ -965,7 +966,7 @@ void SYSCALL() } break; case Syscall::GetOsdConfigParam2: - if (g_SkipBiosHack) + if (!NoOSD && g_SkipBiosHack) { u32 memaddr = cpuRegs.GPR.n.a0.UL[0]; u8 params[16]; diff --git a/pcsx2/ps2/BiosTools.cpp b/pcsx2/ps2/BiosTools.cpp index b6d060b2af..418db79ae5 100644 --- a/pcsx2/ps2/BiosTools.cpp +++ b/pcsx2/ps2/BiosTools.cpp @@ -51,6 +51,7 @@ static_assert( sizeof(romdir) == DIRENTRY_SIZE, "romdir struct not packed to 16 u32 BiosVersion; u32 BiosChecksum; +bool NoOSD; wxString BiosDescription; const BiosDebugInformation* CurrentBiosInformation; @@ -284,6 +285,13 @@ void LoadBIOS() wxFFile fp( Bios , "rb"); fp.Read( eeMem->ROM, std::min( Ps2MemSize::Rom, filesize ) ); + // If file is less than 2mb it doesn't have an OSD (Devel consoles) + // So skip HLEing OSDSys Param stuff + if (filesize < 2465792) + NoOSD = true; + else + NoOSD = false; + ChecksumIt( BiosChecksum, eeMem->ROM ); pxInputStream memfp( Bios, new wxMemoryInputStream( eeMem->ROM, sizeof(eeMem->ROM) ) ); diff --git a/pcsx2/ps2/BiosTools.h b/pcsx2/ps2/BiosTools.h index aa4b26f2cf..7de07137d6 100644 --- a/pcsx2/ps2/BiosTools.h +++ b/pcsx2/ps2/BiosTools.h @@ -35,7 +35,8 @@ struct BiosDebugInformation u32 threadListAddr; }; -extern u32 BiosVersion; // Used by CDVD +extern u32 BiosVersion; // Used by CDVD +extern bool NoOSD; // Used for HLE OSD Config Params extern u32 BiosChecksum; extern wxString BiosDescription; extern const BiosDebugInformation* CurrentBiosInformation;