201 lines
5.6 KiB
Lua
201 lines
5.6 KiB
Lua
require(GlobalDependencys:GetDependency("StandardBase"):GetPackageName())
|
|
|
|
--GAME VARS
|
|
|
|
--ControlVars
|
|
bFixEnabled = true
|
|
bCamera = true
|
|
bFPS = true
|
|
bCinematics = true
|
|
|
|
--PROCESS VARS
|
|
Process_FriendlyName = Module:GetFriendlyName()
|
|
Process_WindowName = "*"
|
|
Process_ClassName = "*"
|
|
Process_EXEName = "Ronin.exe"
|
|
|
|
--INJECTION BEHAVIOUR
|
|
InjectDelay = 1000
|
|
WriteInterval = 100
|
|
SearchInterval = 100
|
|
SuspendThread = true
|
|
|
|
--Name Manual/Auto/Hybrid Steam/Origin/Any IncludeFile:Configure;Enable;Periodic;Disable;
|
|
SupportedVersions = {
|
|
{"Automatically Detect", "Hybrid", "Any", "Configure_SignatureScan;Enable_Inject;Periodic;Disable_Inject;"},
|
|
}
|
|
|
|
function Init_Controls()
|
|
|
|
DefaultControls.AddHeader("Header_FixesEnableDisable","Individual Fixes",245,70,210,17)
|
|
|
|
DefaultControls.AddHeader("Header_CAMERA","Camera fine adjustment",15,70,210,17)
|
|
DefaultControls.AddFixedFOVSlider("CAMERASlider","CAMERASlider_Changed",55,100,125,35,0,120,0,1)
|
|
CAMERASlider:SetTickFrequency(10)
|
|
CAMERASlider:SetLabel1Text("-20")
|
|
CAMERASlider:SetLabel2Text("100")
|
|
|
|
DefaultControls.AddFixToggle("CKCAMERAFix_Enable","Camera distance fix","CKCAMERAFix_Changed",255,101,180,14)
|
|
DefaultControls.AddFixToggle("CKFPSFix_Enable","In game frame fix","CKFPSFix_Changed",255,121,180,14)
|
|
DefaultControls.AddFixToggle("CKCINEMATICSFPSFix_Enable","Cutscenes frame fix","CKCINEMATICSFPSFix_Changed",255,141,180,14)
|
|
|
|
end
|
|
|
|
function Configure_SignatureScan()
|
|
|
|
local tAddress = HackTool:AddAddress("CAMERADISTANCE")
|
|
|
|
if HackTool:SignatureScan("8B 88 ?? ?? ?? ?? 49 8B ?? ?? ?? ?? ?? F3 0F ?? ?? ?? ?? ?? ?? 48",tAddress,PAGE_EXECUTE_READ,0x0,Process_EXEName) == 0 then
|
|
return ErrorOccurred(string.format(SigScanError,tAddress:GetName()))
|
|
else
|
|
print( tAddress:GetInfo(TYPE_ADDRESS) )
|
|
--Ronin.exe+2BC551 - F3 0F 10 15 37 D7 47 04 - movss xmm2,[Ronin.exe+4739C90]
|
|
--Ronin.exe+2BC559 - F3 0F 5C CA - subss xmm1,xmm2
|
|
--Ronin.exe+2BC55D - 8B 88 44 02 00 00 - mov ecx,[rax+00000244]
|
|
--Ronin.exe+2BC563 - 49 8B 81 C8 03 00 00 - mov rax,[r9+000003C8]
|
|
--Ronin.exe+2BC56A - F3 0F 5E 0D 5A DA 47 04 - divss xmm1,[Ronin.exe+4739FCC]
|
|
end
|
|
|
|
local tAddress = HackTool:AddAddress("FPS")
|
|
|
|
if HackTool:SignatureScan("48 ?? ?? 48 89 ?? ?? ?? 48 63 ?? ?? ?? ?? ?? B9 3C 00 00 00",tAddress,PAGE_EXECUTE_READ,0x0f,Process_EXEName) == 0 then
|
|
return ErrorOccurred(string.format(SigScanError,tAddress:GetName()))
|
|
else
|
|
print( tAddress:GetInfo(TYPE_ADDRESS) )
|
|
--Ronin.exe+2A29F2 - 48 89 44 24 10 - mov [rsp+10],rax
|
|
--Ronin.exe+2A29F7 - 48 63 05 BE 94 C7 04 - movsxd rax,dword ptr [Ronin.exe+4F1BEBC]
|
|
--Ronin.exe+2A29FE - B9 3C 00 00 00 - mov ecx,0000003C
|
|
--Ronin.exe+2A2A03 - C7 04 24 1E 00 00 00 - mov [rsp],0000001E
|
|
--Ronin.exe+2A2A0A - 89 4C 24 04 - mov [rsp+04],ecx
|
|
end
|
|
|
|
local tAddress = HackTool:AddAddress("CINEMATICSFRAMERATE")
|
|
|
|
if HackTool:SignatureScan("89 97 ?? ?? ?? ?? 89 87 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 87",tAddress,PAGE_EXECUTE_READ,0x0,Process_EXEName) == 0 then
|
|
return ErrorOccurred(string.format(SigScanError,tAddress:GetName()))
|
|
else
|
|
print( tAddress:GetInfo(TYPE_ADDRESS) )
|
|
--Ronin.exe+2A2AB1 - 8B 87 48 07 00 00 - mov eax,[rdi+00000748]
|
|
--Ronin.exe+2A2AB7 - 8B 97 40 07 00 00 - mov edx,[rdi+00000740]
|
|
--Ronin.exe+2A2ABD - 89 97 3C 07 00 00 - mov [rdi+0000073C],edx
|
|
--Ronin.exe+2A2AC3 - 89 87 44 07 00 00 - mov [rdi+00000744],eax
|
|
--Ronin.exe+2A2AC9 - E8 16 FF FF FF - call Ronin.exe+2A29E4
|
|
--Ronin.exe+2A2ACE - 89 87 40 07 00 00 - mov [rdi+00000740],eax
|
|
end
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
function Enable_Inject()
|
|
|
|
local Variables = HackTool:AllocateMemory("Variables", 0)
|
|
Variables:PushInt("CameraDistance")
|
|
Variables:Allocate()
|
|
|
|
ResolutionChanged()
|
|
|
|
local asm = [[
|
|
|
|
(codecave:jmp)CAMERADISTANCE,CAMERADISTANCE_cc:
|
|
$$0 $$1,[(allocation)Variables->CameraDistance] $ctx=1
|
|
jmp %returnaddress%
|
|
%end%
|
|
|
|
(codecave:jmp)CINEMATICSFRAMERATE,CINEMATICSFRAMERATE_cc:
|
|
$$0 $$2,0xff $ctx=1 ; Push FPS in cutscenes up to 255
|
|
$$0 eax,$$2 $ctx=1
|
|
%originalcode%
|
|
jmp %returnaddress%
|
|
%end%
|
|
|
|
(codecave)FPS,FPS_cc:
|
|
$$0 $$1,0xff $ctx=1 ; Push FPS up to 255
|
|
%end%
|
|
|
|
]]
|
|
|
|
if HackTool:CompileAssembly(asm,"Fixes") == nil then
|
|
return ErrorOccurred("Assembly compilation failed...")
|
|
else
|
|
Toggle_CodeCave("CAMERADISTANCE_cc",bCamera)
|
|
Toggle_CodeCave("FPS_cc",bFPS)
|
|
Toggle_CodeCave("CINEMATICSFRAMERATE_cc",bCinematics)
|
|
end
|
|
|
|
Write_Camera()
|
|
|
|
end
|
|
|
|
function Periodic()
|
|
end
|
|
|
|
function CAMERASlider_Changed(Sender)
|
|
|
|
fCameraDistance = Sender:GetPosition() - 20
|
|
lblCAMERASlider.Caption:SetCaption( string.format("Camera: %.0f",fCameraDistance) )
|
|
|
|
Write_Camera()
|
|
ForceUpdate()
|
|
|
|
end
|
|
|
|
function Write_Camera()
|
|
|
|
local Variables = HackTool:GetAllocation("Variables")
|
|
if Variables and Variables["CameraDistance"] then
|
|
Variables["CameraDistance"]:WriteInt(fCameraDistance)
|
|
end
|
|
|
|
end
|
|
|
|
function CKCAMERAFix_Changed(Sender)
|
|
|
|
bCamera = Toggle_CheckFix(Sender)
|
|
Write_Camera()
|
|
Toggle_CodeCave("CAMERADISTANCE_cc",bCamera)
|
|
ForceUpdate()
|
|
|
|
end
|
|
|
|
function CKFPSFix_Changed(Sender)
|
|
|
|
bFPS = Toggle_CheckFix(Sender)
|
|
Toggle_CodeCave("FPS_cc",bFPS)
|
|
ForceUpdate()
|
|
|
|
end
|
|
|
|
function CKCINEMATICSFPSFix_Changed(Sender)
|
|
|
|
bCinematics = Toggle_CheckFix(Sender)
|
|
Toggle_CodeCave("CINEMATICSFRAMERATE_cc",bCinematics)
|
|
ForceUpdate()
|
|
|
|
end
|
|
|
|
function Disable_Inject()
|
|
|
|
CleanUp()
|
|
|
|
end
|
|
|
|
function ResolutionChanged()
|
|
|
|
SyncDisplayDetection()
|
|
|
|
end
|
|
|
|
function Init()
|
|
|
|
Init_BaseControls()
|
|
Init_Controls()
|
|
|
|
end
|
|
|
|
function DeInit()
|
|
|
|
DisableFix()
|
|
|
|
end
|