283 lines
8.2 KiB
Lua
283 lines
8.2 KiB
Lua
require(GlobalDependencys:GetDependency("StandardBase"):GetPackageName())
|
|
|
|
--GAME VARS
|
|
fAdditionalCamFOV = 0
|
|
fAdditionalCinematicsFOV = 0
|
|
fDefaultAspectRatio = 2.4
|
|
|
|
--ControlVars
|
|
bFixEnabled = true
|
|
bCSAspectRatio = true
|
|
bCamFOV = true
|
|
|
|
--PROCESS VARS
|
|
Process_FriendlyName = Module:GetFriendlyName()
|
|
Process_WindowName = "*"
|
|
Process_ClassName = "*"
|
|
Process_EXEName = "TheQuarry-Win64-Shipping.exe"
|
|
|
|
--INJECTION BEHAVIOUR
|
|
InjectDelay = 500
|
|
WriteInterval = 500
|
|
SearchInterval = 500
|
|
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_FOV1","FOV camera adjustment",15,70,210,17)
|
|
DefaultControls.AddFOVSlider("FOVSlider1","FOVCamSlider_Changed",55,100,125,35)
|
|
DefaultControls.AddHeader("Header_FOV2","FOV cinematics adjustment",15,160,210,17)
|
|
DefaultControls.AddFOVSlider("FOVSlider2","FOVcinematicsSlider_Changed",55,190,125,35)
|
|
DefaultControls.AddFixToggle("CKFOVFix_Enable","FOV Fix","CKFOVFix_Changed",255,101,180,14)
|
|
DefaultControls.AddFixToggle("CKCSAspectFix_Enable","Black bars removal","CKCSAspectFix_Changed",255,101,180,54)
|
|
|
|
end
|
|
|
|
function Configure_SignatureScan()
|
|
|
|
local tAddress = HackTool:AddAddress("CSARatio1")
|
|
if HackTool:SignatureScan("E9 ?? ?? ?? ?? F3 0F 10 41 ?? EB",tAddress,PAGE_EXECUTE_READ,0x5,Process_EXEName) == 0 then
|
|
return ErrorOccurred(string.format(SigScanError,tAddress:GetName()))
|
|
else
|
|
print( tAddress:GetInfo(TYPE_ADDRESS) )
|
|
end
|
|
|
|
local tAddress = HackTool:AddAddress("CSARatio2")
|
|
if HackTool:SignatureScan("F3 0F 10 83 ?? ?? ?? ?? F3 0F 5E C1 F3 0F 11 83 ?? ?? ?? ??",tAddress,PAGE_EXECUTE_READ,0x0c,Process_EXEName) == 0 then
|
|
return ErrorOccurred(string.format(SigScanError,tAddress:GetName()))
|
|
else
|
|
print( tAddress:GetInfo(TYPE_ADDRESS) )
|
|
end
|
|
|
|
|
|
local tAddress = HackTool:AddAddress("CSARatio3")
|
|
if HackTool:SignatureScan("75 ?? 48 FF C2 48 83 C1 28 ",tAddress,PAGE_EXECUTE_READ,0x00,Process_EXEName) == 0 then
|
|
return ErrorOccurred(string.format(SigScanError,tAddress:GetName()))
|
|
else
|
|
print( tAddress:GetInfo(TYPE_ADDRESS) )
|
|
end
|
|
|
|
local tAddress = HackTool:AddAddress("FOV")
|
|
if HackTool:SignatureScan("F3 0F ?? ?? ?? ?? ?? ?? EB ?? 0F ?? ?? F3 0F 10 8B ?? ?? ?? ??",tAddress,PAGE_EXECUTE_READ,0x0,Process_EXEName) == 0 then
|
|
return ErrorOccurred(string.format(SigScanError,tAddress:GetName()))
|
|
else
|
|
print( tAddress:GetInfo(TYPE_ADDRESS) )
|
|
end
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
function Enable_Inject()
|
|
local Variables = HackTool:AllocateMemory("Variables",0)
|
|
Variables:PushFloat("CamFOV")
|
|
Variables:PushFloat("CinematicsFOV")
|
|
Variables:PushFloat("AR")
|
|
Variables:PushFloat("FOVState")
|
|
Variables:PushFloat("SavedAR")
|
|
Variables:Allocate()
|
|
Variables["SavedAR"]:WriteFloat(fDefaultAspectRatio)
|
|
|
|
ResolutionChanged()
|
|
|
|
local asm = [[
|
|
|
|
(codecave:jmp)FOV,FOV_cc:
|
|
%originalcode%
|
|
pushf
|
|
mov [(allocation)Variables->FOVState],r14
|
|
cmp r14,0x2
|
|
je cinematics
|
|
cmp r14,0x1
|
|
je camera
|
|
jmp exit
|
|
|
|
cinematics:
|
|
addss xmm0,[(allocation)Variables->CinematicsFOV]
|
|
jmp exit
|
|
|
|
camera:
|
|
addss xmm0,[(allocation)Variables->CamFOV]
|
|
|
|
exit:
|
|
popf
|
|
jmp %returnaddress%
|
|
%end%
|
|
|
|
; TheQuarry-Win64-Shipping.exe+388D32A: F3 0F 59 83 3C 08 00 00 - mulss xmm0,[rbx+0000083C]
|
|
; TheQuarry-Win64-Shipping.exe+388D332: E8 A4 DD 6B 01 - call TheQuarry-Win64-Shipping.exe+4F4B0DB
|
|
; ---------- INJECTING HERE ----------
|
|
; TheQuarry-Win64-Shipping.exe+388D337: F3 0F 59 05 C5 52 7A 02 - mulss xmm0,[TheQuarry-Win64-Shipping.exe+6032604]
|
|
; ---------- DONE INJECTING ----------
|
|
; TheQuarry-Win64-Shipping.exe+388D33F: EB 03 - jmp TheQuarry-Win64-Shipping.exe+388D344
|
|
; TheQuarry-Win64-Shipping.exe+388D341: 0F 57 C0 - xorps xmm0,xmm0
|
|
|
|
(codecave:jmp)CSARatio1,CSARatio1_cc:
|
|
movss xmm0,[(allocation)Variables->AR]
|
|
jmp %returnaddress%
|
|
%end%
|
|
|
|
; TheQuarry-Win64-Shipping.exe+3E42A2D - mov rsi,[rsi+00000140]
|
|
; TheQuarry-Win64-Shipping.exe+3E42A34 - jmp TheQuarry-Win64-Shipping.exe+3E427E0
|
|
; ---------- INJECTING HERE ----------
|
|
; TheQuarry-Win64-Shipping.exe+3E42A39 - movss xmm0,[rcx+10]
|
|
; ---------- DONE INJECTING ----------
|
|
; TheQuarry-Win64-Shipping.exe+3E42A3E - jmp TheQuarry-Win64-Shipping.exe+3E42A45
|
|
; TheQuarry-Win64-Shipping.exe+3E42A40 - movss xmm0,[rdi+14]
|
|
|
|
(codecave:jmp)CSARatio2,CSARatio2_cc:
|
|
movss xmm0,[(allocation)Variables->AR]
|
|
%originalcode%
|
|
jmp %returnaddress%
|
|
%end%
|
|
|
|
; TheQuarry-Win64-Shipping.exe+388D359 - movss xmm0,[rbx+0000083C]
|
|
; TheQuarry-Win64-Shipping.exe+388D361 - divss xmm0,xmm1
|
|
; ---------- INJECTING HERE ----------
|
|
; TheQuarry-Win64-Shipping.exe+388D365 - movss [rbx+00000844],xmm0
|
|
; ---------- DONE INJECTING ----------
|
|
; TheQuarry-Win64-Shipping.exe+388D36D - movss [rbx+00000218],xmm0
|
|
; TheQuarry-Win64-Shipping.exe+388D375 - movaps xmm6,[rsp+20]
|
|
|
|
(codecave)CSARatio3,CSARatio3_cc:
|
|
jmp $$1 $ctx=1
|
|
%end%
|
|
|
|
; TheQuarry-Win64-Shipping.exe+3E42A1B - xor al,al
|
|
; TheQuarry-Win64-Shipping.exe+3E42A1D - test al,al
|
|
; ---------- INJECTING HERE ----------
|
|
; TheQuarry-Win64-Shipping.exe+3E42A1F - jne TheQuarry-Win64-Shipping.exe+3E42A39
|
|
; ---------- DONE INJECTING ----------
|
|
; TheQuarry-Win64-Shipping.exe+3E42A21 - inc rdx
|
|
; TheQuarry-Win64-Shipping.exe+3E42A24 - add rcx,28
|
|
|
|
]]
|
|
|
|
if HackTool:CompileAssembly(asm,"FOVFix") == nil then
|
|
return ErrorOccurred("Assembly compilation failed...")
|
|
else
|
|
Toggle_CodeCave("CSARatio1_cc",bCSAspectRatio)
|
|
Toggle_CodeCave("CSARatio2_cc",bCSAspectRatio)
|
|
Toggle_CodeCave("CSARatio3_cc",bCSAspectRatio)
|
|
Toggle_CodeCave("FOV_cc",bCamFOV)
|
|
if bCamFOV then
|
|
WriteCamFOV()
|
|
WriteCinematicsFOV()
|
|
end
|
|
end
|
|
|
|
|
|
end
|
|
|
|
function Periodic()
|
|
|
|
local Variables = HackTool:GetAllocation("Variables")
|
|
local RegisterState
|
|
|
|
if Variables and Variables["AR"] and Variables["FOVState"] then
|
|
Variables["AR"]:WriteFloat(DisplayInfo:GetAspectRatio())
|
|
RegisterState = Variables["FOVState"]:ReadInt()
|
|
PluginViewport:AppendStatusMessage( string.format("\r\n===== Fix informations =====\r\nBB toggle %s", bCSAspectRatio ) )
|
|
--if RegisterState == 1 then
|
|
--PluginViewport:AppendStatusMessage( string.format("\r\n===== Fix informations =====\r\nFOV fix on camera" ) )
|
|
--else
|
|
--PluginViewport:AppendStatusMessage( string.format("\r\n===== Fix informations =====\r\nFOV fix on cinematics" ) )
|
|
--end
|
|
end
|
|
|
|
end
|
|
|
|
function FOVCamSlider_Changed(Sender)
|
|
|
|
fAdditionalCamFOV = Sender:GetScaledFloat(4) + 35
|
|
lblFOVSlider1.Caption:SetCaption( string.format("Value: %.0f",fAdditionalCamFOV) )
|
|
|
|
WriteCamFOV()
|
|
ForceUpdate()
|
|
|
|
end
|
|
|
|
function FOVcinematicsSlider_Changed(Sender)
|
|
|
|
fAdditionalCinematicsFOV = Sender:GetScaledFloat(4) + 35
|
|
lblFOVSlider2.Caption:SetCaption( string.format("Value: %.0f",fAdditionalCinematicsFOV) )
|
|
|
|
WriteCinematicsFOV()
|
|
ForceUpdate()
|
|
|
|
end
|
|
|
|
function WriteCamFOV()
|
|
|
|
local Variables = HackTool:GetAllocation("Variables")
|
|
|
|
if Variables and Variables["CamFOV"] then
|
|
Variables["CamFOV"]:WriteFloat(fAdditionalCamFOV)
|
|
end
|
|
|
|
end
|
|
|
|
function WriteCinematicsFOV()
|
|
|
|
local Variables = HackTool:GetAllocation("Variables")
|
|
|
|
if Variables and Variables["CinematicsFOV"] then
|
|
Variables["CinematicsFOV"]:WriteFloat(fAdditionalCinematicsFOV)
|
|
end
|
|
|
|
end
|
|
|
|
function Disable_Inject()
|
|
|
|
RestoreAspectDefault()
|
|
CleanUp()
|
|
|
|
end
|
|
|
|
function CKCSAspectFix_Changed(Sender)
|
|
|
|
bCSAspectRatio = Toggle_CheckFix(Sender)
|
|
if bCSAspectRatio == false then
|
|
RestoreAspectDefault()
|
|
end
|
|
Toggle_CodeCave("CSARatio1_cc",bCSAspectRatio)
|
|
Toggle_CodeCave("CSARatio2_cc",bCSAspectRatio)
|
|
Toggle_CodeCave("CSARatio3_cc",bCSAspectRatio)
|
|
ForceUpdate()
|
|
|
|
end
|
|
|
|
function CKFOVFix_Changed(Sender)
|
|
|
|
bCamFOV = Toggle_CheckFix(Sender)
|
|
Toggle_CodeCave("FOV_cc",bCamFOV)
|
|
ForceUpdate()
|
|
|
|
end
|
|
|
|
function ResolutionChanged()
|
|
|
|
SyncDisplayDetection()
|
|
|
|
end
|
|
|
|
function RestoreAspectDefault()
|
|
|
|
end
|
|
|
|
function Init()
|
|
Init_BaseControls()
|
|
Init_Controls()
|
|
end
|
|
|
|
function DeInit()
|
|
DisableFix()
|
|
end
|