static void _stdcall SetInventoryCheck(bool skip) { if (skip) { SafeWrite16(0x46E7CD, 0x9090); //Inventory check SafeWrite32(0x46E7Cf, 0x90909090); } else { SafeWrite16(0x46E7CD, 0x850F); //Inventory check SafeWrite32(0x46E7Cf, 0x4B1); } }
UInt32 WriteRelJle(UInt32 jumpSrc, UInt32 jumpTgt) { // jle rel32 SafeWrite16(jumpSrc, 0x8E0F); jumpSrc += 2; UInt32 oldTgt = SafeWrite32(jumpSrc, jumpTgt - jumpSrc - 4); return jumpSrc + oldTgt + 4; }
static void ApplyPatch(const PatchLocation * patch, UInt32 newData) { for(; patch->ptr; ++patch) { switch(patch->type) { case 0: SafeWrite32(patch->ptr, newData + patch->offset); break; case 1: SafeWrite16(patch->ptr, newData + patch->offset); break; } } }
void SafeWriteJle(uint32_t src, uint32_t tgt) { SafeWrite16(src, 0x8E0F); SafeWrite32(src + 2, tgt - src - 2 - 4); }
void WriteRelJle(UInt32 jumpSrc, UInt32 jumpTgt) { // jle rel32 SafeWrite16(jumpSrc, 0x8E0F); SafeWrite32(jumpSrc + 2, jumpTgt - jumpSrc - 2 - 4); }
void WriteRelJnz(UInt32 jumpSrc, UInt32 jumpTgt) { // jnz rel32 SafeWrite16(jumpSrc, 0x850F); SafeWrite32(jumpSrc + 2, jumpTgt - jumpSrc - 2 - 4); }