Merge pull request #6246 from unknownbrackets/replace-funcs

Enable function replacements by default
This commit is contained in:
Henrik Rydgård 2014-06-07 09:22:39 +02:00
commit 0f168723bc
6 changed files with 17 additions and 10 deletions

View File

@ -305,6 +305,7 @@ static ConfigSetting cpuSettings[] = {
ReportedConfigSetting("SeparateIOThread", &g_Config.bSeparateIOThread, true),
ConfigSetting("FastMemoryAccess", &g_Config.bFastMemory, true),
ReportedConfigSetting("FuncReplacements", &g_Config.bFuncReplacements, true),
ReportedConfigSetting("CPUSpeed", &g_Config.iLockedCPUSpeed, 0),
ConfigSetting(false),

View File

@ -84,6 +84,7 @@ public:
bool bJit;
bool bCheckForNewVersion;
bool bForceLagSync;
bool bFuncReplacements;
// Definitely cannot be changed while game is running.
bool bSeparateCPUThread;

View File

@ -447,7 +447,7 @@ void __KernelModuleDoState(PointerWrap &p)
p.Do(loadedModules);
}
if (g_Config.bFuncHashMap) {
if (g_Config.bFuncReplacements) {
MIPSAnalyst::ReplaceFunctions();
}
}
@ -973,7 +973,7 @@ Module *__KernelLoadELFFromPtr(const u8 *ptr, u32 loadAddress, std::string *erro
bool gotSymbols = reader.LoadSymbols();
MIPSAnalyst::ScanForFunctions(module->textStart, module->textEnd, !gotSymbols);
#else
if (g_Config.bFuncHashMap) {
if (g_Config.bFuncReplacements) {
bool gotSymbols = reader.LoadSymbols();
MIPSAnalyst::ScanForFunctions(module->textStart, module->textEnd, !gotSymbols);
}
@ -1137,7 +1137,7 @@ Module *__KernelLoadELFFromPtr(const u8 *ptr, u32 loadAddress, std::string *erro
bool gotSymbols = reader.LoadSymbols();
MIPSAnalyst::ScanForFunctions(module->textStart, module->textEnd, !gotSymbols);
#else
if (g_Config.bFuncHashMap) {
if (g_Config.bFuncReplacements) {
bool gotSymbols = reader.LoadSymbols();
MIPSAnalyst::ScanForFunctions(module->textStart, module->textEnd, !gotSymbols);
}

View File

@ -886,13 +886,16 @@ skip:
HashFunctions();
std::string hashMapFilename = GetSysDirectory(DIRECTORY_SYSTEM) + "knownfuncs.ini";
if (g_Config.bFuncHashMap) {
LoadHashMap(hashMapFilename);
StoreHashMap(hashMapFilename);
if (g_Config.bFuncHashMap || g_Config.bFuncReplacements) {
LoadBuiltinHashMap();
if (g_Config.bFuncHashMap) {
LoadHashMap(hashMapFilename);
StoreHashMap(hashMapFilename);
}
if (insertSymbols) {
ApplyHashMap();
}
if (g_Config.bFuncHashMap) {
if (g_Config.bFuncReplacements) {
ReplaceFunctions();
}
}
@ -1052,8 +1055,7 @@ skip:
}
}
void LoadHashMap(std::string filename) {
// First insert the hardcoded entries.
void LoadBuiltinHashMap() {
HashMapFunc mf;
for (size_t i = 0; i < ARRAY_SIZE(hardcodedHashes); i++) {
mf.hash = hardcodedHashes[i].hash;
@ -1063,7 +1065,9 @@ skip:
mf.hardcoded = true;
hashMap.insert(mf);
}
}
void LoadHashMap(std::string filename) {
FILE *file = File::OpenCFile(filename, "rt");
if (!file) {
WARN_LOG(LOADER, "Could not load hash map: %s", filename.c_str());

View File

@ -107,6 +107,7 @@ namespace MIPSAnalyst
void CompileLeafs();
void SetHashMapFilename(std::string filename = "");
void LoadBuiltinHashMap();
void LoadHashMap(std::string filename);
void StoreHashMap(std::string filename = "");

View File

@ -88,7 +88,7 @@ bool FramebufferManager::NotifyStencilUpload(u32 addr, int size) {
shaderManager_->DirtyLastShader();
MakePixelTexture(Memory::GetPointer(addr), dstBuffer->format, dstBuffer->fb_stride, dstBuffer->renderWidth, dstBuffer->renderHeight);
MakePixelTexture(Memory::GetPointer(addr), dstBuffer->format, dstBuffer->fb_stride, dstBuffer->bufferWidth, dstBuffer->bufferHeight);
DisableState();
glstate.colorMask.set(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
glstate.stencilTest.enable();