-- Lua 5.3
-- Title: Killzone Liberation
-- Authors: Bryan Strait, Ali Burakaz
apiRequest(1.0)
local axObj = getAXObject()
local gpr = require( "ax-gpr-alias" )
TIME_HOOK_PC = 0x089DA8B0
TIME_HOOK_OPCODE = 0x8FBF001C
function TimeHook()
local a0 = axObj.GetGpr(gpr.a0)
local a1 = axObj.GetGpr(gpr.a1)
--print("TimeHook: ", a0, a1)
axObj.SetGpr(gpr.a0, 16)
axObj.SetGpr(gpr.a1, 0)
end
--axObj.AddHook(TIME_HOOK_PC, TIME_HOOK_OPCODE, TimeHook)
print("_NOTE: Skip loaded\n")
--Menu option blocking
--Main menu
local i_skip_option = 0x8A06004 -- 0x89b51b4
local op_skip_option = 0xac850000
local play = "play"
local options = "options"
local statistics = "statisticsrewards"
local downloads = "downloads"
local share = "gameshare"
local killzone_dot_com = "website"
local credits = "credits"
local blocked_options = {"downloads", "gameshare", "website", "campaigncoop","combatzoneadhoc", "multiplayer", "multiplayertexture", "combatzoneonline", "other"}
----------
-- Menu option object, Up/Down/Left/Right at
local function table_contains(tbl, x)
found = false
for _, v in pairs(tbl) do
if v == x then
found = true
end
end
return found
end
local statistics_obj = -1
local statistics_push = -1
local function skipOption()
local menu_entry_obj = axObj.GetGpr(gpr.a1)
local p_entry_label = axObj.ReadMem32(menu_entry_obj + 0x28)
local entry_label = axObj.ReadMemStr(p_entry_label)
if axObj.ReadMem32(menu_entry_obj + 0x74) ~= 0 then
local up_label = axObj.ReadMemStr(axObj.ReadMem32(menu_entry_obj + 0x74))
local down_label = axObj.ReadMemStr(axObj.ReadMem32(menu_entry_obj + 0x78))
local left_label = axObj.ReadMemStr(axObj.ReadMem32(menu_entry_obj + 0x7C))
local right_label = axObj.ReadMemStr(axObj.ReadMem32(menu_entry_obj + 0x80))
if entry_label == "statisticsrewards" then
statistics_obj = menu_entry_obj
elseif entry_label == "credits" then
if statistics_push ~= -1 then
axObj.WriteMem32(menu_entry_obj + 0x74, statistics_push)
end
end
if up_label == "statisticsrewards" then
statistics_push = axObj.ReadMem32(menu_entry_obj + 0x74)
end
if down_label == "credits" then
if statistics_obj ~= -1 then
axObj.WriteMem32(statistics_obj + 0x78, axObj.ReadMem32(menu_entry_obj + 0x78))
end
end
end
--print(entry_label .. ":")
--[[print( "Up:",up_label,
"\nDown:", down_label,
"\nLeft:", left_label,
"\nRight:", right_label)]]--
if table_contains(blocked_options,entry_label) then
local cursor = axObj.GetGpr(gpr.a0)
axObj.WriteMem32(axObj.GetGpr(gpr.a0), 0)
end
end
axObj.AddHook(i_skip_option, op_skip_option, skipOption)
-- replace sceRtcGetCurrentTick usage with sceKernelGetSystemTime
-- version 1.00
--axObj.InsnReplace("Guerrilla", 0x89da8cc-0x8800000, 0x0e354f49, 0x0e3550c5)
--axObj.InsnReplace("Guerrilla", 0x89da874-0x8800000, 0x0e354f49, 0x0e3550c5)
-- version 1.20 (DLC)
axObj.InsnReplace("Guerrilla", 0x8808828-0x8800000, 0x0e362bdc, 0x0e362c8a)
axObj.InsnReplace("Guerrilla", 0x8808888-0x8800000, 0x0e362bdc, 0x0e362c8a)
-- menu beam effect draws
-- version 1.00
--axObj.InsnReplace("Guerrilla", 0x8a07690-0x8800000, 0x27bdff40, 0x03e00008)
--axObj.InsnReplace("Guerrilla", 0x8a07694-0x8800000, 0xafb10090, 0)
-- version 1.20 (DLC)
axObj.InsnReplace("Guerrilla", 0x8a64fcc-0x8800000, 0x27bdff50, 0x03e00008)
axObj.InsnReplace("Guerrilla", 0x8a64fd0-0x8800000, 0xafb10080, 0)
-- ingame tone mapping pass
-- version 1.00
--axObj.InsnReplace("Guerrilla", 0x8a07d94-0x8800000, 0x27bdffb0, 0x03e00008)
--axObj.InsnReplace("Guerrilla", 0x8a07d98-0x8800000, 0x3c0508db, 0)
-- version 1.20 (DLC)
axObj.InsnReplace("Guerrilla", 0x8a65aa0-0x8800000, 0x27bdffd0, 0x03e00008)
axObj.InsnReplace("Guerrilla", 0x8a65aa4-0x8800000, 0x3c0508e0, 0)