sys_process_get_sdk_version rough implementation

This commit is contained in:
Nekotekina 2014-08-09 20:04:53 +04:00
parent 18e1799980
commit b09412a79a
4 changed files with 52 additions and 4 deletions

View file

@ -16,7 +16,7 @@
#include "Emu/CPU/CPUThreadManager.h" //gui dependency
#include "../Loader/PSF.h"
#include "Loader/PSF.h"
#include "../Crypto/unself.h"
#include <cstdlib>
@ -270,6 +270,26 @@ void Emulator::Load()
return;
}
// setting default values
Emu.m_sdk_version = -1; // possibly "unknown" value
// trying to load some info from PARAM.SFO
vfsFile f2("/app_home/PARAM.SFO");
if (f2.IsOpened())
{
PSFLoader psf(f2);
if (psf.Load(false))
{
std::string version = psf.GetString("PS3_SYSTEM_VER");
const size_t dot = version.find('.');
if (dot != std::string::npos)
{
Emu.m_sdk_version = (std::stoi(version, nullptr, 16) << 20) | ((std::stoi(version.substr(dot + 1), nullptr, 16) & 0xffff) << 4) | 1;
}
}
}
LoadPoints(BreakPointsDBName);
CPUThread& thread = GetCPU().AddThread(thread_type);