-- Largo Winch - Empire Under Threat (E)(SLES-51093)
-- Widescreen hack by Arapapa
-- Fix method by Kozarovv
-- ported to PS4 lua by Stayhye
-- emu used=rotk v1
local gpr = require("ee-gpr-alias")
apiRequest(0.1)
local eeObj = getEEObject()
local emuObj = getEmuObject()
local WS2 = function()
--16:9
--Zoom
eeObj.WriteMem32(0x0028029c,0x3c013f2f) --3c013f80
--Y-Fov
eeObj.WriteMem32(0x001abc40,0x08030000)
eeObj.WriteMem32(0x000c0000,0x46070a02)
eeObj.WriteMem32(0x000c0004,0x3c013fa6)
eeObj.WriteMem32(0x000c0008,0x4481f000)
eeObj.WriteMem32(0x000c000c,0x461e4202)
eeObj.WriteMem32(0x000c0010,0x0806af11)
----------------------------
--X-Fov (Needs render fix)
--eeObj.WriteMem32(0x001abb98,0x08030000)
--eeObj.WriteMem32(0x000c0000,0x24420050)
--eeObj.WriteMem32(0x000c0004,0x3c013f40)
--eeObj.WriteMem32(0x000c0008,0x4481f000)
--eeObj.WriteMem32(0x000c000c,0x461e4202)
--eeObj.WriteMem32(0x000c0010,0x0806aee7)
--Start microprograms manually instead of rely on timings.
--0x48c83000 >> ctc2 t0, $vi6
--eeObj.WriteMem32(0x00116d4c,0x4a0000b8)
eeObj.WriteMem32(0x00116e04,0x4a0000b8)
eeObj.WriteMem32(0x00116fe0,0x4a0000b8)
eeObj.WriteMem32(0x00117054,0x4a000938)
eeObj.WriteMem32(0x001170a4,0x4a000938)
eeObj.WriteMem32(0x001172ac,0x4a000938)
eeObj.WriteMem32(0x001172e4,0x4a000938)
eeObj.WriteMem32(0x00117470,0x4a000938)
eeObj.WriteMem32(0x001174ac,0x4a000938)
eeObj.WriteMem32(0x00117540,0x4a000938)
-- No need to loop here, just e-bit and wait for vcallms from EE.
eeObj.WriteMem32(0x00298f70,0x8000033c) -- 500607ff
eeObj.WriteMem32(0x00298f74,0x400002ff)
eeObj.WriteMem32(0x002990a0,0x8000033c)
eeObj.WriteMem32(0x002990a4,0x400002ff)
-- skip videos
--eeObj.WriteMem32(0x001f3938,0x24020001)
--Remove xgkick responsible for shadow packet.
eeObj.WriteMem32(0x2B1810,0x8000033c)
--pros. Fix bug, allow upscalling cons. No shadow.
emuObj.ThrottleMax()
end
emuObj.AddVsyncHook(WS2)