void WriteSyscall(const char *moduleName, u32 nib, u32 address) { if (nib == 0) { Memory::Write_U32(MIPS_MAKE_JR_RA(), address); //patched out? Memory::Write_U32(MIPS_MAKE_NOP(), address+4); //patched out? return; } Memory::Write_U32(MIPS_MAKE_JR_RA(), address); // jr ra Memory::Write_U32(GetSyscallOp(moduleName, nib), address + 4); }
bool WriteSyscall(const char *moduleName, u32 nib, u32 address) { if (nib == 0) { WARN_LOG_REPORT(HLE, "Wrote patched out nid=0 syscall (%s)", moduleName); Memory::Write_U32(MIPS_MAKE_JR_RA(), address); //patched out? Memory::Write_U32(MIPS_MAKE_NOP(), address+4); //patched out? return true; } int modindex = GetModuleIndex(moduleName); if (modindex != -1) { Memory::Write_U32(MIPS_MAKE_JR_RA(), address); // jr ra Memory::Write_U32(GetSyscallOp(moduleName, nib), address + 4); return true; } else { ERROR_LOG_REPORT(HLE, "Unable to write unknown syscall: %s/%08x", moduleName, nib); return false; } }
void WriteFuncMissingStub(u32 stubAddr, u32 nid) { // Write a trap so we notice this func if it's called before resolving. Memory::Write_U32(MIPS_MAKE_JR_RA(), stubAddr); // jr ra Memory::Write_U32(GetSyscallOp(NULL, nid), stubAddr + 4); }
void HLEInit() { RegisterAllModules(); delayedResultEvent = CoreTiming::RegisterEvent("HLEDelayedResult", hleDelayResultFinish); idleOp = GetSyscallOp("FakeSysCalls", NID_IDLE); }