-- Twisted Metal - Head-On [Extra Twisted Edition] (NTSC-U) [SCUS-97621] [3DC2FE45]
-- Widescreen hacks by Aced14 Font Fixes by gamemasterplc
-- ported to PS4
-- emu used=aofa
local gpr = require("ee-gpr-alias")
apiRequest(1.0)
local eeObj = getEEObject()
local emuObj = getEmuObject()
emuObj.SetDisplayAspectWide()
local patcher = function()
--16:9 Widescreen
eeObj.WriteMem32(0x202D10A0,0x4400A000) --442B8000 - Menu Master X FOV
eeObj.WriteMem32(0x202D10C0,0x3F206D39) --3EF0A3D7 - Menu Master Y FOV
eeObj.WriteMem32(0x20222CE8,0x08030000) --Jump to Custom Code
eeObj.WriteMem32(0x200C0000,0x00051843) --Divide Font Width by 2
eeObj.WriteMem32(0x200C0004,0x00052883) --Divide Font Width by 4
eeObj.WriteMem32(0x200C0008,0x00A32821) --Add previous 2 operations
eeObj.WriteMem32(0x200C000C,0x08088B3C) --Jump back to Original Code
eeObj.WriteMem32(0x200C0010,0x24030044) --Original Instruction
eeObj.WriteMem32(0x1EF98C,0x008C008C) --24060050 - Player 1 Text (1)
eeObj.WriteMem32(0x1EF9AC,0x008C008C) --24060050 - Player 2 Text (1)
eeObj.WriteMem32(0x1EF9E4,0x008C008C) --24060050 - Player 1 Text (2)
eeObj.WriteMem32(0x1EF9FC,0x008C008C) --24060050 - Player 2 Text (2)
--[[
eeObj.WriteMem32(0x166194,0x43BB43BB) --3C0143FA - 1P Sweet Tour Gameplay Master X FOV (after in-game cutscene) #1
eeObj.WriteMem32(0x166198,0xe000E000) --34218000 - 1P Sweet Tour Gameplay Master X FOV (after in-game cutscene) #2
eeObj.WriteMem32(0x1660F8,0x43BB43BB) --3C0143FA - 1P Sweet Tour Gameplay Master X FOV (after skipping in-game cutscene) #1
eeObj.WriteMem32(0x1660FC,0xe000E000) --34218000 - 1P Sweet Tour Gameplay Master X FOV (after skipping in-game cutscene) #2
eeObj.WriteMem32(0x1B3F20,0x43BB43BB) --3C0143FA - 1P Generic Master X FOV #1
eeObj.WriteMem32(0x1B3F24,0xe000E000) --34218000 - 1P Generic Master X FOV #2
--eeObj.WriteMem32(0x201B5E40,0x340301E0) --94430004 - ori v1, zero, $01e0 - Set v1 register to 480 - 1P TMHO Story In-Game Cutscene Master X FOV (commented-out due to grain overlay positioning issue in opening cutscene's first close-up angle of Calypso)
eeObj.WriteMem32(0x1B6290,0x43BB43BB) --3C0143FA - 1P TMHO Story Gameplay Master X FOV (after in-game cutscene) #1
eeObj.WriteMem32(0x1B6294,0xe000E000) --34218000 - 1P TMHO Story Gameplay Master X FOV (after in-game cutscene) #2
eeObj.WriteMem32(0x1B6164,0x43BB43BB) --3C0143FA - 1P TMHO Story Gameplay Master X FOV (after skipping in-game cutscene) #1
eeObj.WriteMem32(0x1B6168,0xe000E000) --34218000 - 1P TMHO Story Gameplay Master X FOV (after skipping in-game cutscene) #2
eeObj.WriteMem32(0x202D0D00,0x3F1F49E6) --3EEEEED9 - 1P Master Y FOV
eeObj.WriteMem32(0x13B4C8,0xBF80BF80) --3C01BF2E - 1P Master X Radar #1
eeObj.WriteMem32(0x13B4CC,0x00000000) --3421147B - 1P Master X Radar #2
eeObj.WriteMem32(0x13B574,0xBF803F80) --3C013F30 - 1P Master X Weapon #1
eeObj.WriteMem32(0x13B578,0x00000000) --3421A3D7 - 1P Master X Weapon #2
eeObj.WriteMem32(0x13AC5C,0x02300230) --2406021A - 1P X Weapon Names
eeObj.WriteMem32(0x13AD70,0x02300230) --2406021A - 1P X Weapon Ammo
eeObj.WriteMem32(0x13728C,0x002D002D) --2406003C - 1P Cars Remaining Number
eeObj.WriteMem32(0x139BD4,0x006A006A) --2406008E - 1P Horiz Nearby Cars Names
eeObj.WriteMem32(0x202D0DA0,0x439A8000) --43CE0000 - 2P Horiz P1 Master X FOV
eeObj.WriteMem32(0x202D0DC0,0x3F1F49E5) --3EEEEED9 - 2P Horiz P1 Master Y FOV
eeObj.WriteMem32(0x202D0E60,0x439A8000) --43CE0000 - 2P Horiz P2 Master X FOV
eeObj.WriteMem32(0x202D0E80,0x3F1F49E5) --3EEEEED9 - 2P Horiz P2 Master Y FOV
eeObj.WriteMem32(0x137108,0xBFA5BFA5) --3C01BF66 - 2P Horiz Master X Radar #1
eeObj.WriteMem32(0x13710C,0x1EB81EB8) --34216666 - 2P Horiz Master X Radar #2
eeObj.WriteMem32(0x13A5D8,0x3F9E3F9E) --3C013F59 - 2P Horiz Master X Weapon #1
eeObj.WriteMem32(0x13A5DC,0xB852B852) --3421999A - 2P Horiz Master X Weapon #2
eeObj.WriteMem32(0x13ACCC,0x02300230) --2406021A - 2P X Weapon Names
eeObj.WriteMem32(0x13AD4C,0x02300230) --2406021A - 2P X Weapon Ammo
eeObj.WriteMem32(0x1E6334,0x023D023D) --24060226 - 2P Wins %d
eeObj.WriteMem32(0x139B94,0x00570057) --24060074 - 2P Nearby Cars Names
eeObj.WriteMem32(0x13725C,0x00210021) --2406002C - 2P Cars Remaining Number
eeObj.WriteMem32(0x202D0F20,0x4376C000) --43A48000 - 2P Vert P1 Master X FOV
eeObj.WriteMem32(0x202D0F40,0x3F1F49E6) --3EEEEED9 - 2P Vert P1 Master Y FOV
eeObj.WriteMem32(0x202D0FE0,0x4376C000) --43A48000 - 2P Vert P1 Master X FOV
eeObj.WriteMem32(0x202D1000,0x3F1F49E6) --3EEEEED9 - 2P Vert P1 Master Y FOV
eeObj.WriteMem32(0x1370C0,0xBF20BF20) --3C01BEDC - 2P Vert Master X Radar #1
eeObj.WriteMem32(0x1370C4,0x00000000) --342128F6 - 2P Vert Master X Radar #2
eeObj.WriteMem32(0x13A590,0x3F233F23) --3C013EE6 - 2P Vert Master X Weapon #1
eeObj.WriteMem32(0x13A594,0x00000000) --34216666 - 2P Vert Master X Weapon #2
--]]
emuObj.ThrottleMax()
end
emuObj.AddVsyncHook(patcher)
--math.random() + math.random(1, 99) -- test for randomness