-- Shin Megami Tensei: Persona 3 FES (U)(SLUS-21621)
-- Authors: SuleMareVientu (conversion to PS4 emu, adaptive frameskip implementation) & all the modders listed below
-- (ISO is modded so CRC won't match, but patches will work on official ISO)
-- kof98um emu
apiRequest(1.0)
local gpr = require("ee-gpr-alias")
local emuObj = getEmuObject()
local eeObj = getEEObject()
-- Force interlacing (and deinterlacing) off as asmodean's 480p patch doesn't work correctly (image flickers)
emuObj.SetDeinterlace(false)
emuObj.SetDisplayAspectWide() -- Force widescreen
emuObj.SetPs2Lang(1)
emuObj.PadSetLightBar(0, 15, 177, 244) -- Persona 3 Reload turquoise
-- Widescreen hack by nemesis2000, devina, CeruleansBlue, Arapapa, The Calculator
local Widescreen = function()
--X-Fov by CeruleansBlue
eeObj.WriteMem32(0x007cad1c,0x3fe38e38)
--partial HUD fix
eeObj.WriteMem32(0x00106e30,0x3c043f40)
eeObj.WriteMem32(0x00106e38,0x00701821)
eeObj.WriteMem32(0x00106e3c,0x24632bac)
eeObj.WriteMem32(0x00106e44,0x00000000)
eeObj.WriteMem32(0x00106e48,0x24630004)
eeObj.WriteMem32(0x00106e4c,0x3c043f80)
--persona art fix
eeObj.WriteMem32(0x00114a1c,0x3c033ec0)
eeObj.WriteMem32(0x00114a2c,0x3c023f90)
--zoom fix
eeObj.WriteMem32(0x003bb94c,0x0c132e4c)
eeObj.WriteMem32(0x003bb950,0x0220202d)
eeObj.WriteMem32(0x003bb954,0x0220202d)
eeObj.WriteMem32(0x003bb958,0x0200282d)
eeObj.WriteMem32(0x003bb95c,0x0000302d)
eeObj.WriteMem32(0x003bb960,0x0c132dfc)
eeObj.WriteMem32(0x003bb964,0x00000000)
eeObj.WriteMem32(0x003bb968,0x0c130e20)
eeObj.WriteMem32(0x003bb96c,0x0200202d)
eeObj.WriteMem32(0x003bb970,0x0240202d)
eeObj.WriteMem32(0x003bb974,0x3c013fa1)
eeObj.WriteMem32(0x003bb978,0x44810000)
eeObj.WriteMem32(0x003bb97c,0xc66c0100)
eeObj.WriteMem32(0x003bb980,0x0c069160)
eeObj.WriteMem32(0x003bb984,0x46006303)
-------------------------------------------------------
--In-Game Menu Portraits fix by Arapapa
--eeObj.WriteMem32(0x00112b94,0x08030034) -- Corrupts UI for some reason
eeObj.WriteMem32(0x000c00d0,0x94420000)
eeObj.WriteMem32(0x000c00d4,0x01224821)
eeObj.WriteMem32(0x000c00d8,0x00421021)
eeObj.WriteMem32(0x000c00dc,0x01221021)
eeObj.WriteMem32(0x000c00e0,0x00021082)
eeObj.WriteMem32(0x000c00e4,0x08044ae6)
--Main Character X-Position
eeObj.WriteMem32(0x0011cb14,0x3c0343f0)
eeObj.WriteMem32(0x0011cbc4,0x3c0343f0)
eeObj.WriteMem32(0x0011d118,0x3c0343f0)
eeObj.WriteMem32(0x0011d7f4,0x3c0343f0)
eeObj.WriteMem32(0x0011e0dc,0x3c0343f0)
eeObj.WriteMem32(0x00125e94,0x3c0343f0)
eeObj.WriteMem32(0x001260c8,0x3c0343f0)
eeObj.WriteMem32(0x0014ca5c,0x3c0343f0)
eeObj.WriteMem32(0x00160914,0x3c0343f0)
eeObj.WriteMem32(0x00160b64,0x3c0343f0)
eeObj.WriteMem32(0x0018a744,0x3c0343f0)
--Menu (Status) Main Character X-Position #2
eeObj.WriteMem32(0x0012633c,0x240301f5)
eeObj.WriteMem32(0x00126530,0x240301f5)
--Partner Character X-Position
eeObj.WriteMem32(0x00164d84,0x3c0243d8)
eeObj.WriteMem32(0x001653f8,0x3c0243d8)
eeObj.WriteMem32(0x0016573c,0x3c0243d8)
eeObj.WriteMem32(0x00165b90,0x3c0243d8)
eeObj.WriteMem32(0x00166548,0x3c0243d8)
--Main Character (In-Game Menu) Shadow
eeObj.WriteMem32(0x00126890,0x3c013fab)
eeObj.WriteMem32(0x001268b0,0xafa100b0)
--Shadow (In-Game Menu) X-Position fix
eeObj.WriteMem32(0x00126ca4,0x3c024398)
eeObj.WriteMem32(0x00126dd8,0x3c024398)
eeObj.WriteMem32(0x00126efc,0x3c024398)
eeObj.WriteMem32(0x00127044,0x3c024398)
eeObj.WriteMem32(0x001270f0,0x3c024398)
eeObj.WriteMem32(0x00127184,0x3c024398)
eeObj.WriteMem32(0x0012729c,0x3c024398)
eeObj.WriteMem32(0x00164cf0,0x3c0243cc)
-------------------------------------------------------
--Popup portraits, Clock and etc.. fix by Arapapa
eeObj.WriteMem32(0x004aa460,0x08030024)
eeObj.WriteMem32(0x000c0090,0x46000802)
eeObj.WriteMem32(0x000c0094,0x3c013f40)
eeObj.WriteMem32(0x000c0098,0x4481f000)
eeObj.WriteMem32(0x000c009c,0x461e0002)
eeObj.WriteMem32(0x000c00a0,0x0812a919)
------------------------------------------------
-- Detect 'Open the in-game menu'
local code_check = eeObj.ReadMem16(0x7cdf48)
if code_check ~= 0x0000 then
eeObj.WriteMem32(0x004aa460,0x46000802)
-- eeObj.WriteMem32(0x00112b94,0x08030034) -- Corrupts UI for some reason
else
eeObj.WriteMem32(0x004aa460,0x08030024)
-- eeObj.WriteMem32(0x00112b94,0x84420000) -- Corrupts UI for some reason
end
-- Detect 'Scene changing'
local code_check = eeObj.ReadMem16(0x7cded4)
if code_check ~= 0x0000 then
eeObj.WriteMem32(0x004aa444,0x3c02402a)
else
eeObj.WriteMem32(0x004aa444,0x3c024000)
end
------------------------------------------------
--Arcana Card fix by Arapapa
eeObj.WriteMem32(0x003a0374,0x3c0242be)
eeObj.WriteMem32(0x003a0448,0x3c0242be)
eeObj.WriteMem32(0x003a0060,0x3c024240)
--Shuffle Time (Card) fix by Arpapa
eeObj.WriteMem32(0x0020caf4,0x08168754)
eeObj.WriteMem32(0x005a1d50,0xc600002c)
eeObj.WriteMem32(0x005a1d54,0x3c013f40)
eeObj.WriteMem32(0x005a1d58,0x4481f000)
eeObj.WriteMem32(0x005a1d5c,0x461e0002)
eeObj.WriteMem32(0x005a1d60,0x080832be)
-----------------------------------------------------------
--S.LINK - Community (2D Characters & Cards) fix by Arapapa
eeObj.WriteMem32(0x00114390,0x0816875a)
eeObj.WriteMem32(0x005a1d68,0xc4400000)
eeObj.WriteMem32(0x005a1d6c,0x3c013f40)
eeObj.WriteMem32(0x005a1d70,0x4481f000)
eeObj.WriteMem32(0x005a1d74,0x461e0002)
eeObj.WriteMem32(0x005a1d78,0x080450e5)
-----------------------------------------------------------
--Calculator's Tartarous offset
--Select floor menu (Animation hold)
eeObj.WriteMem32(0x00441720,0x3c02c260)
eeObj.WriteMem32(0x004416e8,0x0c1fb4cb)
--Select floor menu (Animation enter)
eeObj.WriteMem32(0x004477f8,0x3c02c260)
eeObj.WriteMem32(0x0043fbb8,0x0c1fb4cb)
--Select floor menu (Animation exit)
eeObj.WriteMem32(0x0043fc64,0x3c02c260)
eeObj.WriteMem32(0x004477c0,0x0c1fb4cb)
--Progress to next block (Animation enter)
eeObj.WriteMem32(0x0044a4ec,0x3c02c260)
eeObj.WriteMem32(0x0043ea58,0x0c1fb4cb)
--Progress to next block (Animation hold)
eeObj.WriteMem32(0x00442cc0,0x3c02c260)
eeObj.WriteMem32(0x00442c88,0x0c1fb4cb)
--Progress to next block (Animation exit)
eeObj.WriteMem32(0x0044341c,0x3c02c260)
eeObj.WriteMem32(0x00443370,0x0c1fb4cb)
--Hooked draw call to offset glow-outline
eeObj.WriteMem32(0x007ed32c,0x3c02c338)
eeObj.WriteMem32(0x007ed330,0x4482e800)
eeObj.WriteMem32(0x007ed334,0x08045034)
eeObj.WriteMem32(0x007ed338,0x461d6b41)
-----------------------------------------------------------
--S.LINK - Community 2D Characters X-Position
eeObj.WriteMem32(0x0013a2ac,0x3c024405)
eeObj.WriteMem32(0x0013a350,0x3c024400)
--S.LINK - Community Cards X-Position
eeObj.WriteMem32(0x001373f4,0x3c024250)
--S.LINK - Main Menu Shadows X-Position
eeObj.WriteMem32(0x001368fc,0x3c0341b0)
eeObj.WriteMem32(0x001379f0,0x3c0341b0)
eeObj.WriteMem32(0x0013804c,0x3c0341b0)
eeObj.WriteMem32(0x00138618,0x3c0341b0)
eeObj.WriteMem32(0x00138ce4,0x3c0341b0)
--S.LINK - Community Cards #2 X-Size
eeObj.WriteMem32(0x00115148,0x0803002c)
eeObj.WriteMem32(0x000c00b0,0xc4600000)
eeObj.WriteMem32(0x000c00b4,0x3c013f40)
eeObj.WriteMem32(0x000c00b8,0x4481f000)
eeObj.WriteMem32(0x000c00bc,0x461e0002)
eeObj.WriteMem32(0x000c00c0,0x08045453)
--S.LINK - Community Cards #2 X-Position
eeObj.WriteMem32(0x001395dc,0x3c024256)
--S.LINK - Reverse Community Cards #1 X-Position
eeObj.WriteMem32(0x00137398,0x3c024250)
eeObj.WriteMem32(0x0013749c,0x3c0241b6)
--S.LINK - Reverse Community Cards #2
eeObj.WriteMem32(0x00139544,0x3c024010)
eeObj.WriteMem32(0x00139470,0x3c024216)
-----------------------------------------------------------
--Popup Portraits (Left top, In the Battles) fix by Arapapa
eeObj.WriteMem32(0x003c90ac,0x3c024540)
--Popup Portraits (Left top, In the Battles) X-Position
eeObj.WriteMem32(0x003c9084,0x00000000)
eeObj.WriteMem32(0x003ab7f8,0x3c020000)
--Flare effect fix by Arapapa
eeObj.WriteMem32(0x00347b38,0x3c023fc0)
eeObj.WriteMem32(0x00347b50,0x08030008)
eeObj.WriteMem32(0x000c0020,0x46000942)
eeObj.WriteMem32(0x000c0024,0x461e2943)
eeObj.WriteMem32(0x000c0028,0x080d1ed5)
-----------------------------------------------------------
--Head Portraits (Right, In the Battles) fix by Arapapa
eeObj.WriteMem32(0x0022d804,0x0803000c)
eeObj.WriteMem32(0x000c0030,0x26440010)
eeObj.WriteMem32(0x000c0034,0xc7bf0078)
eeObj.WriteMem32(0x000c0038,0x3c013f40)
eeObj.WriteMem32(0x000c003c,0x4481f000)
eeObj.WriteMem32(0x000c0040,0x461effc2)
eeObj.WriteMem32(0x000c0044,0xe7bf0078)
eeObj.WriteMem32(0x000c0048,0x0808b602)
eeObj.WriteMem32(0x0022d904,0x08030014)
eeObj.WriteMem32(0x000c0050,0x26440110)
eeObj.WriteMem32(0x000c0054,0xc7bf0078)
eeObj.WriteMem32(0x000c0058,0x3c013f40)
eeObj.WriteMem32(0x000c005c,0x4481f000)
eeObj.WriteMem32(0x000c0060,0x461effc2)
eeObj.WriteMem32(0x000c0064,0xe7bf0078)
eeObj.WriteMem32(0x000c0068,0x0808b642)
--Head Portraits (Right, In the Battles) X-Position
eeObj.WriteMem32(0x0022d7c4,0x3c034220)
--Emoticon (In the Battles) fix by Arapapa
eeObj.WriteMem32(0x0022dd98,0x0803001c)
eeObj.WriteMem32(0x000c0070,0x26440530)
eeObj.WriteMem32(0x000c0074,0xc7bf0078)
eeObj.WriteMem32(0x000c0078,0x3c013f40)
eeObj.WriteMem32(0x000c007c,0x4481f000)
eeObj.WriteMem32(0x000c0080,0x461effc2)
eeObj.WriteMem32(0x000c0084,0xe7bf0078)
eeObj.WriteMem32(0x000c0088,0x0808b767)
--Emoticon X-Position
eeObj.WriteMem32(0x0022dd58,0x3c0342d0)
-----------------------------------------------------------
--Title Menu fix by Arapapa
eeObj.WriteMem32(0x0026e7d4,0x3c013fab)
eeObj.WriteMem32(0x0026e7e4,0xafa10068)
eeObj.WriteMem32(0x0026e818,0xafa10068)
eeObj.WriteMem32(0x0026e84c,0xafa10068)
eeObj.WriteMem32(0x0026e880,0xafa10068)
eeObj.WriteMem32(0x0026eaac,0xafa10068)
--Title Menu (Shadow)
eeObj.WriteMem32(0x0026ea50,0x3c02439b)
--Sub Menu - Select Episode (Shadow)
eeObj.WriteMem32(0x0026b524,0xc7808478)
eeObj.WriteMem32(0x0026b534,0x461e0002)
end -- Widescreen
-- FMV Fix by Alexankitty
local FMVFix = function()
eeObj.WriteMem32(0x0010afc8,0x081a63af)
eeObj.WriteMem32(0x0010afcc,0x00000000)
eeObj.WriteMem32(0x0010afd0,0x14620006)
eeObj.WriteMem32(0x0010afd4,0x00000000)
eeObj.WriteMem32(0x0010afd8,0x3c023e00)
eeObj.WriteMem32(0x0010afdc,0x3c1443e0)
eeObj.WriteMem32(0x0010afe0,0x3c1542a0)
eeObj.WriteMem32(0x0010afe4,0x3c160bb0)
eeObj.WriteMem32(0x0010afe8,0x10000005)
eeObj.WriteMem32(0x0010afec,0x00000000)
eeObj.WriteMem32(0x0010aff0,0x3c023e00)
eeObj.WriteMem32(0x0010aff4,0x3c1443e1)
eeObj.WriteMem32(0x0010aff8,0x3c1541f8)
eeObj.WriteMem32(0x0010affc,0x3c161850)
eeObj.WriteMem32(0x0010b000,0xae6200e4)
eeObj.WriteMem32(0x0010b004,0xae620164)
eeObj.WriteMem32(0x0010b008,0xae740124)
eeObj.WriteMem32(0x0010b00c,0xae7401a4)
eeObj.WriteMem32(0x0010b010,0xae7500e0)
eeObj.WriteMem32(0x0010b014,0xae750120)
eeObj.WriteMem32(0x0010b018,0xae76015f)
eeObj.WriteMem32(0x0010b01c,0xae76019f)
eeObj.WriteMem32(0x0010b020,0x0000a02d)
eeObj.WriteMem32(0x0010b024,0x0000a82d)
eeObj.WriteMem32(0x0010b028,0x0000b02d)
--FMV Jump
eeObj.WriteMem32(0x00698ebc,0x3c024400)
eeObj.WriteMem32(0x00698ec0,0xae620160)
eeObj.WriteMem32(0x00698ec4,0xae6201a0)
eeObj.WriteMem32(0x00698ec8,0x3c02005d)
eeObj.WriteMem32(0x00698ecc,0x24424b70)
eeObj.WriteMem32(0x00698ed0,0x00431021)
eeObj.WriteMem32(0x00698ed4,0x84430000)
eeObj.WriteMem32(0x00698ed8,0x24020005)
eeObj.WriteMem32(0x00698edc,0x08042bf3)
eeObj.WriteMem32(0x00698ee0,0x00000000)
--1px tiling fix
eeObj.WriteMem32(0x0010b0e4,0x2463ffff)
eeObj.WriteMem32(0x0010b0e8,0x44830000)
end -- FMVFix
-- Widescreen credits fix - by Alexankitty, vim, REDACTED, Primogenitor
local FMVWideCreditsFix = function()
eeObj.WriteMem32(0x0027a838,0x081a63ff)
eeObj.WriteMem32(0x0027a83c,0x00000000)
eeObj.WriteMem32(0x0027a878,0x00000000)
eeObj.WriteMem32(0x00698ffc,0x24020009)
eeObj.WriteMem32(0x00699000,0x14620003)
eeObj.WriteMem32(0x00699004,0x00000000)
eeObj.WriteMem32(0x00699008,0x3c0242b0)
eeObj.WriteMem32(0x0069900c,0x0809ea1d)
eeObj.WriteMem32(0x00699010,0x00000000)
eeObj.WriteMem32(0x00699014,0x16400003)
eeObj.WriteMem32(0x00699018,0x00000000)
eeObj.WriteMem32(0x0069901c,0x3c024280)
eeObj.WriteMem32(0x00699020,0x0809ea1d)
eeObj.WriteMem32(0x00699024,0x00000000)
eeObj.WriteMem32(0x00699028,0x0809ea0f)
end -- FMVWideCreditsFix
-- Unstretched Textboxes - Centered Dialogue Box Text by StavaasEVG
local UnstretchedTextboxes = function()
--Speaker Name
eeObj.WriteMem32(0x003a6908,0x240306d0)
eeObj.WriteMem32(0x003a43f8,0x240306d0)
eeObj.WriteMem32(0x003a442c,0x240306d0)
--Speaker Line
eeObj.WriteMem32(0x003a6938,0x24030770)
eeObj.WriteMem32(0x003a4460,0x24030770)
eeObj.WriteMem32(0x003a4494,0x24030770)
--Answers
eeObj.WriteMem32(0x003a3984,0x24021040)
eeObj.WriteMem32(0x003a3738,0x24021040)
end -- UnstretchedTextboxes
-- Velvet Room BG Patch V2 by Tupelov
local VelvetBGPatch = function()
-- Velvet room fusion call
eeObj.WriteMem32(0x003d3d84,0x24040001)
eeObj.WriteMem32(0x003d3d88,0x24050001)
-- Edits fusion room call to not make npcs invisible
eeObj.WriteMem32(0x003d3d98,0x24050001)
eeObj.WriteMem32(0x003d3da8,0x24050001)
eeObj.WriteMem32(0x003d3db8,0x24050001)
-- Edits compendium call
eeObj.WriteMem32(0x003e9320,0x24040001)
eeObj.WriteMem32(0x003e9324,0x24050001)
-- Edits compendium call to not make npcs invisble
eeObj.WriteMem32(0x003e9338,0x24050001)
eeObj.WriteMem32(0x003e9344,0x24050001)
eeObj.WriteMem32(0x003e9358,0x24050001)
-- Edits igor call
eeObj.WriteMem32(0x003d51a0,0x24040001)
eeObj.WriteMem32(0x003d51a4,0x24050001)
-- Edits igor call to not make npcs invisible
eeObj.WriteMem32(0x003d51b4,0x24050001)
eeObj.WriteMem32(0x003d51c4,0x24050001)
eeObj.WriteMem32(0x003d51d4,0x24050001)
-- Makes the game not load the crusty background
eeObj.WriteMem32(0x006a7a90,0x00000000)
eeObj.WriteMem32(0x006a7a94,0x00000000)
eeObj.WriteMem32(0x006a7a98,0x00000000)
eeObj.WriteMem32(0x006a7a9c,0x00000000)
eeObj.WriteMem32(0x006a7aa0,0x00000000)
eeObj.WriteMem32(0x006a7aa4,0x00000000)
eeObj.WriteMem32(0x006a7aa8,0x00000000)
eeObj.WriteMem32(0x00620194,0x00000000)
eeObj.WriteMem32(0x00620198,0x00000000)
eeObj.WriteMem32(0x0062019c,0x00000000)
eeObj.WriteMem32(0x006201a0,0x00000000)
eeObj.WriteMem32(0x006201a4,0x00000000)
eeObj.WriteMem32(0x006201a8,0x00000000)
end -- VelvetBGPatch
-- Controllable party members (by TGE)
local DirectCommands = function()
eeObj.WriteMem32(0x0020207c,0x00000000)
eeObj.WriteMem32(0x0020208c,0x8f84b6fc)
eeObj.WriteMem32(0x00202090,0x8c840254)
eeObj.WriteMem32(0x00202094,0x8c840030)
eeObj.WriteMem32(0x00202098,0x8c8400a4)
-- Fusion Skill Fix
eeObj.WriteMem32(0x0020203c,0x14400005)
eeObj.WriteMem32(0x00202040,0x8e340254)
eeObj.WriteMem32(0x00202054,0x8e330148)
eeObj.WriteMem32(0x0020207c,0x3c040068)
eeObj.WriteMem32(0x00202080,0x24844f48)
eeObj.WriteMem32(0x00202084,0x8f84b6fc)
eeObj.WriteMem32(0x00202088,0x8c840254)
eeObj.WriteMem32(0x0020208c,0x8c840030)
eeObj.WriteMem32(0x00202090,0x8c8400a4)
eeObj.WriteMem32(0x00202094,0x0c05d200)
eeObj.WriteMem32(0x00202098,0x00000000)
eeObj.WriteMem32(0x0020209c,0x0040902d)
eeObj.WriteMem32(0x002020a0,0x0240202d)
eeObj.WriteMem32(0x002020a4,0x0c05da8c)
eeObj.WriteMem32(0x002020a8,0x00000000)
eeObj.WriteMem32(0x002020ac,0x0040a82d)
eeObj.WriteMem32(0x002020b0,0x0240202d)
eeObj.WriteMem32(0x002020b4,0x0c05ccdc)
eeObj.WriteMem32(0x002020b8,0x00000000)
eeObj.WriteMem32(0x002020bc,0x0040b02d)
eeObj.WriteMem32(0x002020c0,0x0000902d)
eeObj.WriteMem32(0x002020c4,0x0c0c3030)
eeObj.WriteMem32(0x002020c8,0x00000000)
eeObj.WriteMem32(0x002020cc,0x10400013)
eeObj.WriteMem32(0x002020d0,0x00000000)
eeObj.WriteMem32(0x002020d4,0x16740011)
eeObj.WriteMem32(0x0028ddfc,0x8c630a2c)
eeObj.WriteMem32(0x0028de00,0x94770002)
eeObj.WriteMem32(0x0028de08,0x12e20007)
eeObj.WriteMem32(0x0028de0c,0x94630010)
eeObj.WriteMem32(0x0028de10,0x2402000b)
eeObj.WriteMem32(0x0028de14,0x0260202d)
eeObj.WriteMem32(0x0028de18,0x10620005)
eeObj.WriteMem32(0x0028de1c,0x2405001b)
eeObj.WriteMem32(0x0028de20,0x10000003)
eeObj.WriteMem32(0x0028de24,0x2405001a)
eeObj.WriteMem32(0x0028b1d0,0x3c160069)
eeObj.WriteMem32(0x0028b1d8,0x36d6acdc)
eeObj.WriteMem32(0x0028b1e8,0xaec00000)
eeObj.WriteMem32(0x0028b1f0,0x0000b02d)
eeObj.WriteMem32(0x002968d0,0x3c170069)
eeObj.WriteMem32(0x002968ec,0x36f7acdc)
eeObj.WriteMem32(0x00296900,0x8ef70000)
eeObj.WriteMem32(0x0029691c,0x946200a4)
eeObj.WriteMem32(0x00296928,0x10500002)
eeObj.WriteMem32(0x0029692c,0x00000000)
eeObj.WriteMem32(0x00296930,0x12e00060)
eeObj.WriteMem32(0x00296934,0x0000b82d)
eeObj.WriteMem32(0x00296938,0x8f83b6fc)
eeObj.WriteMem32(0x0029693c,0x94620b9e)
eeObj.WriteMem32(0x00296940,0x24420001)
eeObj.WriteMem32(0x00296944,0xa4620b9e)
eeObj.WriteMem32(0x00296948,0x8f82b6fc)
eeObj.WriteMem32(0x00296950,0x8c52014c)
eeObj.WriteMem32(0x00296ad0,0x0000b02d)
eeObj.WriteMem32(0x00296ad8,0xa682001a)
eeObj.WriteMem32(0x0028ac5c,0x9683001a)
eeObj.WriteMem32(0x0028ac60,0x3063ffbf)
eeObj.WriteMem32(0x0028ac64,0xa683001a)
eeObj.WriteMem32(0x0028ac68,0x96830018)
eeObj.WriteMem32(0x0028ac6c,0x00000000)
eeObj.WriteMem32(0x0028ac70,0x081a6af8)
eeObj.WriteMem32(0x002004f0,0x081a6b6a)
eeObj.WriteMem32(0x0069ada8,0x8f93b6fc)
eeObj.WriteMem32(0x0069adac,0x8e770148)
eeObj.WriteMem32(0x0069adb0,0x12e0000a)
eeObj.WriteMem32(0x0069adb4,0x00000000)
eeObj.WriteMem32(0x0069adb8,0x8ef3000c)
eeObj.WriteMem32(0x0069adbc,0x02e0a02d)
eeObj.WriteMem32(0x0069adc0,0x24170005)
eeObj.WriteMem32(0x0069adc4,0x16f3fffa)
eeObj.WriteMem32(0x0069adc8,0x8e9704a4)
eeObj.WriteMem32(0x0069adcc,0x8f93b6fc)
eeObj.WriteMem32(0x0069add0,0x8e770148)
eeObj.WriteMem32(0x0069add4,0x16f40003)
eeObj.WriteMem32(0x0069add8,0x00000000)
eeObj.WriteMem32(0x0069addc,0x10400003)
eeObj.WriteMem32(0x0069ade0,0x00000000)
eeObj.WriteMem32(0x0069ade4,0x0808013e)
eeObj.WriteMem32(0x0069adec,0x08080144)
eeObj.WriteMem32(0x0069adf0,0x00000000)
eeObj.WriteMem32(0x002bf600,0x081a6340)
eeObj.WriteMem32(0x0069abe0,0x8f82b6fc)
eeObj.WriteMem32(0x0069abe4,0x8c420148)
eeObj.WriteMem32(0x0069abe8,0x14540004)
eeObj.WriteMem32(0x0069abec,0x00000000)
eeObj.WriteMem32(0x0069abf0,0x34630400)
eeObj.WriteMem32(0x0069abf4,0xa6830018)
eeObj.WriteMem32(0x0069abf8,0x34630400)
eeObj.WriteMem32(0x0069abfc,0x080a2b1d)
eeObj.WriteMem32(0x0069ac00,0x00000000)
eeObj.WriteMem32(0x00698d00,0x0c081ee8)
eeObj.WriteMem32(0x00698d04,0x00000000)
eeObj.WriteMem32(0x00698d08,0x8f91b6fc)
eeObj.WriteMem32(0x00698d0c,0x8e310148)
eeObj.WriteMem32(0x00698d10,0x16330003)
eeObj.WriteMem32(0x00698d14,0x00000000)
eeObj.WriteMem32(0x00698d18,0x0c081f74)
eeObj.WriteMem32(0x00698d1c,0x00000000)
eeObj.WriteMem32(0x00698d20,0x0000882d)
eeObj.WriteMem32(0x00698d24,0x080afd81)
eeObj.WriteMem32(0x00698d28,0x00000000)
eeObj.WriteMem32(0x0020047c,0x10400006)
eeObj.WriteMem32(0x00200204,0x081a6b46)
eeObj.WriteMem32(0x0069ad18,0x8e360148)
eeObj.WriteMem32(0x0069ad1c,0x24030005)
eeObj.WriteMem32(0x0069ad20,0x8ed5000c)
eeObj.WriteMem32(0x0069ad24,0x16a3fffe)
eeObj.WriteMem32(0x0069ad28,0x8ed604a4)
eeObj.WriteMem32(0x0069ad2c,0x8ed604a8)
eeObj.WriteMem32(0x0069ad30,0x8e350148)
eeObj.WriteMem32(0x0069ad34,0x12b60003)
eeObj.WriteMem32(0x0069ad38,0x00000000)
eeObj.WriteMem32(0x0069ad3c,0x08080083)
eeObj.WriteMem32(0x0069ad40,0x00000000)
eeObj.WriteMem32(0x0069ad44,0x1440fffd)
eeObj.WriteMem32(0x0069ad48,0x00000000)
eeObj.WriteMem32(0x0069ad4c,0x0808009b)
eeObj.WriteMem32(0x0069ad50,0x00000000)
eeObj.WriteMem32(0x0028ac74,0x92920028)
eeObj.WriteMem32(0x0028ac78,0x1640000b)
eeObj.WriteMem32(0x001ff518,0x8e300254)
eeObj.WriteMem32(0x001ff51c,0x8e100030)
eeObj.WriteMem32(0x001ff520,0x8e1000a4)
eeObj.WriteMem32(0x001ff524,0x00000000)
eeObj.WriteMem32(0x001ff528,0x00000000)
eeObj.WriteMem32(0x001ff52c,0x00000000)
eeObj.WriteMem32(0x002d8204,0x94a30070)
eeObj.WriteMem32(0x002d8208,0x8e220a2c)
eeObj.WriteMem32(0x002d820c,0x94570002)
eeObj.WriteMem32(0x002d8210,0x94420010)
eeObj.WriteMem32(0x002d8214,0x081a6b7d)
eeObj.WriteMem32(0x002d8218,0x24160001)
eeObj.WriteMem32(0x0069adf4,0x16f60003)
eeObj.WriteMem32(0x0069adf8,0x2416000b)
eeObj.WriteMem32(0x0069adfc,0x080b6087)
eeObj.WriteMem32(0x0069ae00,0x24020001)
eeObj.WriteMem32(0x0069ae04,0x081a6b0c)
eeObj.WriteMem32(0x0069ac30,0x10560072)
eeObj.WriteMem32(0x0069ac34,0x00000000)
eeObj.WriteMem32(0x0069ac38,0x080b6097)
eeObj.WriteMem32(0x0069ac3c,0x00000000)
eeObj.WriteMem32(0x002d821c,0x0003843c)
eeObj.WriteMem32(0x002d8220,0x0010843f)
eeObj.WriteMem32(0x002d8224,0x00000000)
eeObj.WriteMem32(0x002d823c,0x00000000)
eeObj.WriteMem32(0x002a3914,0x081a6b01)
eeObj.WriteMem32(0x0069ac04,0x8f87b6fc)
eeObj.WriteMem32(0x0069ac08,0x3402001d)
eeObj.WriteMem32(0x0069ac0c,0x10440004)
eeObj.WriteMem32(0x0069ac10,0x0000102d)
eeObj.WriteMem32(0x0069ac14,0x8ce70148)
eeObj.WriteMem32(0x0069ac18,0x14f20003)
eeObj.WriteMem32(0x0069ac1c,0x0000102d)
eeObj.WriteMem32(0x0069ac20,0x0c0be210)
eeObj.WriteMem32(0x0069ac24,0x00000000)
eeObj.WriteMem32(0x0069ac28,0x080a8e47)
-- Fix enemies not facing party members when they attack
eeObj.WriteMem32(0x0027f8c0,0x081a6b11)
eeObj.WriteMem32(0x0027f8c4,0x34170005)
eeObj.WriteMem32(0x0069ac44,0x8c480148)
eeObj.WriteMem32(0x0069ac48,0x9504000c)
eeObj.WriteMem32(0x0069ac4c,0x10970005)
eeObj.WriteMem32(0x0069ac50,0x00000000)
eeObj.WriteMem32(0x0069ac54,0x8d0804a4)
eeObj.WriteMem32(0x0069ac58,0x1500fffb)
eeObj.WriteMem32(0x0069ac5c,0x00000000)
eeObj.WriteMem32(0x0069ac60,0x8c480148)
eeObj.WriteMem32(0x0069ac64,0x0809fe32)
eeObj.WriteMem32(0x0069ac68,0x8d040030)
eeObj.WriteMem32(0x0028bd60,0x00000000)
-- DIRECT COMMANDS TACTIC
-- Addition to tactics list
eeObj.WriteMem32(0x00684efc,0x00684e58)
eeObj.WriteMem32(0x00684f00,0x00684e68)
eeObj.WriteMem32(0x00684f04,0x00684e78)
eeObj.WriteMem32(0x00684f08,0x00684e88)
eeObj.WriteMem32(0x00684f0c,0x00684e98)
eeObj.WriteMem32(0x00684f10,0x00684ea8)
eeObj.WriteMem32(0x00684f14,0x00684eb8)
eeObj.WriteMem32(0x00684f18,0x00684ec8)
eeObj.WriteMem32(0x00684f1c,0x00684ed8)
eeObj.WriteMem32(0x00684f20,0x00684ee8)
eeObj.WriteMem32(0x00684f24,0x0069ac70)
eeObj.WriteMem32(0x0069ac70,0x65726944)
eeObj.WriteMem32(0x0069ac74,0x43207463)
eeObj.WriteMem32(0x0069ac78,0x616d6d6f)
eeObj.WriteMem32(0x0069ac7c,0x0073646e)
eeObj.WriteMem32(0x00204924,0x8c44fff8)
eeObj.WriteMem32(0x00205200,0x8c44fff8)
eeObj.WriteMem32(0x002059f4,0x8c44fff8)
eeObj.WriteMem32(0x00205afc,0x8c44fffc)
eeObj.WriteMem32(0x002062a4,0x8c64fff8)
eeObj.WriteMem32(0x0020598c,0x2a62000c)
eeObj.WriteMem32(0x00205a58,0xae1303dc)
eeObj.WriteMem32(0x00205ca8,0x8c4203dc)
eeObj.WriteMem32(0x00206110,0x8c4203dc)
eeObj.WriteMem32(0x002061b8,0x8c4403dc)
eeObj.WriteMem32(0x002062c4,0xac6203dc)
eeObj.WriteMem32(0x0020639c,0x8c4403dc)
-- Add logic to the new command added
eeObj.WriteMem32(0x0029afc8,0x081a6b20)
eeObj.WriteMem32(0x0029afcc,0x3c170069)
eeObj.WriteMem32(0x0069ac80,0x14460003)
eeObj.WriteMem32(0x0069ac84,0x36f7acdc)
eeObj.WriteMem32(0x0069ac88,0x24160001)
eeObj.WriteMem32(0x0069ac8c,0x080a6bf4)
eeObj.WriteMem32(0x0069ac90,0xaef60000)
eeObj.WriteMem32(0x0069ac94,0x8cd50030)
eeObj.WriteMem32(0x0069ac98,0x8eb50a2c)
eeObj.WriteMem32(0x0069ac9c,0x96b50010)
eeObj.WriteMem32(0x0069aca0,0x2416000b)
eeObj.WriteMem32(0x0069aca4,0x12b6fff8)
eeObj.WriteMem32(0x0069aca8,0x0000b02d)
eeObj.WriteMem32(0x0069acac,0x080a6bf8)
eeObj.WriteMem32(0x0069acb0,0xaef60000)
--Rendering fixes
eeObj.WriteMem32(0x00223ca0,0x3c02432d)
eeObj.WriteMem32(0x00223d44,0x3c034324)
end
-- Tiny Tweaks by P3FES Community
local TinyTweaks = function()
-- Sabre (Item Name changes by AnimatedSwine37)
eeObj.WriteMem32(0x007cb6e0,0x72626153)
eeObj.WriteMem32(0x007cb6e4,0x00000065)
-- Silver Sabre
eeObj.WriteMem32(0x005dd510,0x766c6953)
eeObj.WriteMem32(0x005dd514,0x53207265)
eeObj.WriteMem32(0x005dd518,0x65726261)
-- Nameless Katana
eeObj.WriteMem32(0x005dd490,0x656d614e)
eeObj.WriteMem32(0x005dd494,0x7373656c)
eeObj.WriteMem32(0x005dd498,0x74614b20)
eeObj.WriteMem32(0x005dd49c,0x00616e61)
eeObj.WriteMem32(0x005dd4a0,0x00000000)
-- Myoho Muramasa
eeObj.WriteMem32(0x005dd340,0x686f794d)
eeObj.WriteMem32(0x005dd344,0x754d206f)
eeObj.WriteMem32(0x005dd348,0x616d6172)
eeObj.WriteMem32(0x005dd34c,0x00006173)
-- Rhongomyniad
eeObj.WriteMem32(0x005dd8d0,0x6e6f6852)
eeObj.WriteMem32(0x005dd8d4,0x796d6f67)
eeObj.WriteMem32(0x005dd8d8,0x6461696e)
-- Otegine
eeObj.WriteMem32(0x005dd950,0x6765744f)
eeObj.WriteMem32(0x005dd954,0x00656e69)
-- Yanyuedao
eeObj.WriteMem32(0x005dd920,0x796e6159)
eeObj.WriteMem32(0x005dd924,0x61646575)
eeObj.WriteMem32(0x005dd928,0x0000006f)
-- Nippongo
eeObj.WriteMem32(0x005dd960,0x7070694e)
eeObj.WriteMem32(0x005dd964,0x6f676e6f)
eeObj.WriteMem32(0x005dd968,0x00000000)
-- Tonbokiri
eeObj.WriteMem32(0x005dd970,0x626e6f54)
eeObj.WriteMem32(0x005dd974,0x72696b6f)
eeObj.WriteMem32(0x005dd978,0x00000069)
-- Shigeto-yumi
eeObj.WriteMem32(0x005dda68,0x67696853)
eeObj.WriteMem32(0x005dda6c,0x2d6f7465)
eeObj.WriteMem32(0x005dda70,0x696d7579)
eeObj.WriteMem32(0x005dda74,0x00000000)
-- Maki's Resolve
eeObj.WriteMem32(0x005dda98,0x696b614d)
eeObj.WriteMem32(0x005dda9c,0x52207327)
eeObj.WriteMem32(0x005ddaa0,0x6c6f7365)
eeObj.WriteMem32(0x005ddaa4,0x00006576)
-- Pesh-kabz
eeObj.WriteMem32(0x005ddd28,0x68736550)
eeObj.WriteMem32(0x005ddd2c,0x62616b2d)
eeObj.WriteMem32(0x005ddd30,0x0000007a)
-- Battle Panties
eeObj.WriteMem32(0x005df4d0,0x74746142)
eeObj.WriteMem32(0x005df4d4,0x5020656c)
eeObj.WriteMem32(0x005df4d8,0x69746e61)
eeObj.WriteMem32(0x005df4dc,0x00007365)
--Deep Deep Breath LJ Remix over DDB (Yakushima Custom Music Patch by The Calculator)
eeObj.WriteMem32(0x001a9ca0,0x24040017)
end -- TinyTweaks
local Patcher = function()
-- Graphics patches
Widescreen()
FMVFix()
FMVWideCreditsFix()
UnstretchedTextboxes()
VelvetBGPatch()
-- Gameplay patches
DirectCommands()
TinyTweaks()
end
local Hook = function()
emuObj.AddVsyncHook(Patcher)
end
emuObj.AddEntryPointHook(Hook) -- Apply patches ONLY AFTER the emulator has passed the PS2 logo