Difference between revisions of "The Last of Us"

From RPCS3 Wiki
(47 intermediate revisions by 7 users not shown)
Line 1: Line 1:
<!-- please read the wiki conventions page and documentation for templates before creating a new game page -->{{vginfobox
<!-- please read the wiki conventions page and documentation for templates before creating a new game page -->{{vginfobox
|image    = [[File:{{#setmainimage:TLOUcover.jpg}}|300px]]
|developer = Naughty Dog
|developer = Naughty Dog
|publisher = Sony Computer Entertainment
|publisher = Sony Computer Entertainment
Line 6: Line 7:
|genre    = Action, Adventure, Survival horror
|genre    = Action, Adventure, Survival horror
|modes    = Single-player, Multiplayer <!-- Choose all relevant options: Single-player, Co-op, Multiplayer -->
|modes    = Single-player, Multiplayer <!-- Choose all relevant options: Single-player, Co-op, Multiplayer -->
|gameid    = {{gameid|id=BCES01584, BCES01585, BCUS98174, NPEA00435|oid=BCAS20270, BCJS37010, NPJA00096, NPUA80960|ird=Yes}}<br>'''''Left Behind'''''<br>{{gameid|oid=NPEA00521, NPJA00129, NPUA81175, NPHA80279|ird=No}}<br>'''''Demo'''''<br>{{gameid|NPUA70257|ird=NA}}
|gameid    = {{gameid|id=BCES01584, BCES01585, BCUS98174, BCJS37010, NPEA00435|oid=BCAS20270, NPJA00096, NPUA80960|ird=Yes}}<br>'''''Left Behind'''''<br>{{gameid|oid=NPEA00521, NPJA00129, NPUA81175, NPHA80279|ird=No}}<br>'''''Demo'''''<br>{{gameid|id=NPUA70257|ird=NA}}
}}
}}


Line 24: Line 25:
|preferred spu threads                = <!-- Auto, Single digit between 1 to 6 (e.g. 3), Range between 1 to 6 (e.g. 1 - 3) -->
|preferred spu threads                = <!-- Auto, Single digit between 1 to 6 (e.g. 3), Range between 1 to 6 (e.g. 1 - 3) -->
|preferred spu threads notes          =  
|preferred spu threads notes          =  
|enable thread scheduler               = <!-- On, Off -->
|thread scheduler                     = <!-- Operating System, RPCS3 Scheduler, RPCS3 Alternative Scheduler -->
|enable thread scheduler notes         =  
|thread scheduler notes               =  
|lower spu thread priority            = <!-- On, Off -->
|lower spu thread priority            = <!-- On, Off -->
|lower spu thread priority notes      =  
|lower spu thread priority notes      =  
Line 54: Line 55:
|resolution scale notes                = Resolution scaling is only supported when the MLAA patch is enabled.
|resolution scale notes                = Resolution scaling is only supported when the MLAA patch is enabled.
|resolution scale threshold            = 1x1 <!-- Value between 1 to 1024 in the format 16 x 16 -->
|resolution scale threshold            = 1x1 <!-- Value between 1 to 1024 in the format 16 x 16 -->
|resolution scale threshold notes      = When using Resolution scaling above 100%, this must be set to 1x1 otherwise some effects like lens flare wil be missing.
|resolution scale threshold notes      = When using Resolution scaling above 100%, this must be set to 1x1 otherwise some effects like lens flares will be missing.
|shader mode                          = <!-- Legacy (singlethreaded), Async (multithreaded), Async with Shader Interpreter, Shader Interpreter only -->
|shader mode                          = <!-- Legacy (singlethreaded), Async (multithreaded), Async with Shader Interpreter, Shader Interpreter only -->
|shader mode notes                    =  
|shader mode notes                    =  
Line 71: Line 72:
|multithreaded rsx                    = <!-- On, Off -->
|multithreaded rsx                    = <!-- On, Off -->
|multithreaded rsx notes              =  
|multithreaded rsx notes              =  
|asynchronous texture streaming        = <!-- On, Off -->
|asynchronous texture streaming notes  =
<!-- Audio configuration -->
<!-- Audio configuration -->
|audio out windows                    = <!-- XAudio2, OpenAL, Disabled -->
|audio out windows                    = <!-- XAudio2, OpenAL, Disabled -->
Line 120: Line 123:
|maximum spurs threads                = <!-- Unlimited, Single digit between 0 to 5 (e.g. 3) -->
|maximum spurs threads                = <!-- Unlimited, Single digit between 0 to 5 (e.g. 3) -->
|maximum spurs threads notes          =  
|maximum spurs threads notes          =  
|firmware settings                    = <!-- Manually load selected libraries, Load automatic and manual selection, Load liblv2.sprx only, Load liblv2.sprx and manual selection, Load liblv2.sprx and strict selection -->
|firmware libraries                    = <!-- Switch to LLE, Switch to HLE -->
|firmware settings notes               = <!-- Where libraries are manually selected, mention the list of libraries to be selected here -->
|firmware libraries notes             = <!-- Mention the libraries to be manually selected here -->
|read depth buffers                    = <!-- On, Off -->
|read depth buffers                    = <!-- On, Off -->
|read depth buffers notes              =  
|read depth buffers notes              =  
Line 153: Line 156:
|accurate ppu 128 reservations        = <!-- Always Enabled, Disabled, Value between 1 to 8 -->
|accurate ppu 128 reservations        = <!-- Always Enabled, Disabled, Value between 1 to 8 -->
|accurate ppu 128 reservations notes  =  
|accurate ppu 128 reservations notes  =  
|ppu llvm java mode handling          = <!-- True, False -->
|ppu llvm java mode handling notes    =
}}
}}


Line 158: Line 164:
<!-- Mention any known issues relating to the game. Use the issue and PR template if necessary. If no notable issues are present, mention "There are no reported issues with this title." -->
<!-- Mention any known issues relating to the game. Use the issue and PR template if necessary. If no notable issues are present, mention "There are no reported issues with this title." -->
This game is currently not playable.
This game is currently not playable.


==Special Notes==
==Special Notes==
<!-- Mention any additional notes if necessary. If no special notes are required, remove this section -->
The Last of Us can be played from start to finish, but requires a good CPU and using RPCS3's patches (especially MLAA patch) for playable performance.
For additional gameplay stability, you can enable PPU LLVM Java Mode Handling. To do this, right click your game in the games list, Select Open Custom Config Folder (You need custom settings applied to your game for this to appear), open the highlighted config file, Change '''''PPU LLVM Java Mode Handling: false''''' to '''''PPU LLVM Java Mode Handling: true'''''. Remember to select file/save to save your changes. This change stops frequent trap errors from occurring.
{{patch
{{patch
|type    = PPU
|type    = PPU
Line 171: Line 175:
   tlou100_mlaa: &tlou100_mlaa
   tlou100_mlaa: &tlou100_mlaa
     - [ be16, 0x00a7a514, 0x9b83 ]    # store 0
     - [ be16, 0x00a7a514, 0x9b83 ]    # store 0
  #- [ be16, 0x00a51a8c, 0x4800 ]    # unconditonally branch to disable MLAA
  # - [ be16, 0x00a51a8c, 0x4800 ]    # unconditonally branch to disable MLAA
     - [ be16, 0x0092ddac, 0x4800 ]    # Skip memory check function
     - [ be16, 0x0092ddac, 0x4800 ]    # Skip memory check function
     - [ be32, 0x00ae5d4c, 0x38000000 ] # Green rain
     - [ be32, 0x00ae5d4c, 0x38000000 ] # Green rain
Line 177: Line 181:
     - [ be32, 0x00a2c4fc, 0x38000000 ] # Green rain
     - [ be32, 0x00a2c4fc, 0x38000000 ] # Green rain
     - [ be32, 0x00a58da8, 0x60000000 ] # skip assert: x + w <= width && y + h <= height
     - [ be32, 0x00a58da8, 0x60000000 ] # skip assert: x + w <= width && y + h <= height
    - [ be32, 0x0093e30c, 0xc1890990 ] # Cargo fix
    - [ be32, 0x0093e394, 0xc0090990 ] # Reticle bloom
  # Dof patch
    - [ be32, 0x0093dd64, 0x48113d2d ] #Call1
    - [ be32, 0x0093dd88, 0x48113d19 ] #Call2
    - [ be32, 0x00a0ae2c, 0x48046c85 ] #Call3
  # Func 1 Overall DoF 1
    - [ be32, 0x00a51a90, 0xc09c0aa4 ] #Load f4
    - [ be32, 0x00a51a94, 0xc27e04d4 ] #f19 = 0.3
    - [ be32, 0x00a51a98, 0xec8404f2 ] #f4*f19
    - [ be32, 0x00a51a9c, 0x4e800020 ] #Return
  # Func 2 Cutscene Dof
    - [ be32, 0x00a51aa0, 0xc01c0aac ] #Load f0
    - [ be32, 0x00a51aa4, 0xc17e1d34 ] #f11 = 0.75
    - [ be32, 0x00a51aa8, 0xec0002f2 ] #f0*f11
    - [ be32, 0x00a51aac, 0x4e800020 ] #Return
  # Func 3 Overall Dof 2
    - [ be32, 0x00a51ab0, 0x3d200146 ] #r9 = 1460000
    - [ be32, 0x00a51ab4, 0x3929481c ] #r9 = 146481c
    - [ be32, 0x00a51ab8, 0x80080014 ] #Load pattern to r0
    - [ be32, 0x00a51abc, 0x7f804800 ] #Compare r0 to r9
    - [ be32, 0x00a51ac0, 0x409e0010 ]
    - [ be32, 0x00a51ac4, 0xc01e10a0 ] #f0 = 0.3
    - [ be32, 0x00a51ac8, 0xd008000c ] #Store f0
    - [ be32, 0x00a51acc, 0x48000008 ]
    - [ be32, 0x00a51ad0, 0xd3e8000c ] #Default store
    - [ be32, 0x00a51ad4, 0x4e800020 ] #Return
  # Bloom correction patch v2.2
    - [ be32, 0x0093e308, 0x481137d1 ] #Call
    - [ be32, 0x00a51ad8, 0xc1a909a4 ] #Load f13
    - [ be32, 0x00a51adc, 0xc19e064c ] #f12 = 0.69
    - [ be32, 0x00a51ae0, 0x808909a8 ] #r4 unique value e198
    - [ be32, 0x00a51ae4, 0x2f840000 ] #if r4 <= 0
    - [ be32, 0x00a51ae8, 0x409d0058 ] #Skip to Main menu
  # Bills town Bloater and escape (2)
    - [ be32, 0x00a51aec, 0x3ca03ba4 ] #r5 = 3ba40000
    - [ be32, 0x00a51af0, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51af4, 0x419c0074 ] #go to Patch if less
  # Bills town Cemetery (1)
    - [ be32, 0x00a51af8, 0x808909a4 ] #r4 unique value e194
    - [ be32, 0x00a51afc, 0x3ca03e80 ] #r5 = 3e800000
    - [ be32, 0x00a51b00, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b04, 0x419c0068 ] #go to Patch if less
  # Bills town main street (2)
    - [ be32, 0x00a51b08, 0x3ca04026 ] #r5 = 40260000
    - [ be32, 0x00a51b0c, 0x38a56666 ] #r5 = 40266666
    - [ be32, 0x00a51b10, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b14, 0x419e0054 ] #go to Patch if ==
  # Bills town Trap (2)
    - [ be32, 0x00a51b18, 0x3ca0403d ] #r5 = 403d0000
    - [ be32, 0x00a51b1c, 0x38a5e4e2 ] #r5 = 403ce4e2
    - [ be32, 0x00a51b20, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b24, 0x419e0044 ] #go to Patch if ==
  # Bills Town intro check (2)
    - [ be32, 0x00a51b28, 0x808909bc ] #r4 unique value e1ac
    - [ be32, 0x00a51b2c, 0x3ca04007 ] #r5 = 40070000
    - [ be32, 0x00a51b30, 0x38a50a3d ] #r5 = 40070a3d
    - [ be32, 0x00a51b34, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b38, 0x419e0030 ] #go to Patch if ==
    - [ be32, 0x00a51b3c, 0x4e800020 ] #Return
  # Patch Menu/Ending level
    - [ be32, 0x00a51b40, 0x808909a0 ] #r4 unique value e190
    - [ be32, 0x00a51b44, 0x3ca03f8d ] #r5 = 3f8d0000
    - [ be32, 0x00a51b48, 0x38a52f6f ] #r5 = 3f8d2f6f
    - [ be32, 0x00a51b4c, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b50, 0x419e0010 ] #Patch menu
    - [ be32, 0x00a51b54, 0x80a909a4 ] #r5 unique value e194
    - [ be32, 0x00a51b58, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b5c, 0x4c9e0020 ] #Return (bnelr)
    - [ be32, 0x00a51b60, 0xc19e03fc ] #f12 = 0.5
    - [ be32, 0x00a51b64, 0x48000008 ] #go to Patch
  # Patch function
    - [ be32, 0x00a51b68, 0xedad0332 ] #f13=f13*f12
    - [ be32, 0x00a51b6c, 0xec000332 ] #f0=f0*f12
    - [ be32, 0x00a51b70, 0x4e800020 ] #Return
   # Special thanks to HdHereidme for debug menu, Smasher248 for inital memory addresses and Skye Mods for mesh trimming  
   # Special thanks to HdHereidme for debug menu, Smasher248 for inital memory addresses and Skye Mods for mesh trimming  
   # address. Without them this patch wouldn't have been possible.
   # address. Without them this patch wouldn't have been possible.
Line 183: Line 263:
   #    1 = Bloom
   #    1 = Bloom
   #    2 = Depth of Field
   #    2 = Depth of Field
   #    3 = ??? (Tonemapping)
   #    3 = Tonemapping // reversed from orbis version confirmed this exists
   #    4 = Bloom & Depth of Field
   #    4 = Bloom & Depth of Field
   #    5 = Bloom & Depth of Field & Tonemapping (Default)
   #    5 = Bloom & Depth of Field & Tonemapping (Default)
    
    
   tlou100_post: &tlou100_post
   tlou100_post: &tlou100_post
  #- [ be32, 0x00a7991c, 0x38000003 ] # Post-processing modes                    (mem address: 0x14C79C7)
  # - [ be32, 0x00a7991c, 0x38000003 ] # Post-processing modes                    (mem address: 0x14C79C7)
     - [ be32, 0x0093e300, 0xc0090990 ] # load e190 with 0
     - [ be32, 0x0093e300, 0xc0090990 ] # load e190 with 0
     - [ be32, 0x0093e30c, 0xc1890990 ] # load e198 with 0f
     - [ be32, 0x0093e30c, 0xc1890990 ] # load e198 with 0f
     - [ be32, 0x0093e394, 0xc0090990 ] # load e1a0 with 0f
     - [ be32, 0x0093e394, 0xc0090990 ] # load e1a0 with 0f
 
 
   tlou100_mesh: &tlou100_mesh
   tlou100_mesh: &tlou100_mesh
     - [ be16, 0x00923a94, 0x9809 ]    # Disable Mesh trimming      (r3  => r0 ) (mem address: 0x142C584)
     - [ be16, 0x00923a94, 0x9809 ]    # Disable Mesh trimming      (r3  => r0 ) (mem address: 0x142C584)
Line 221: Line 301:
     - [ be16, 0x00a7a7b8, 0x90e3 ]    # Depth buffer                (r27 => r6 ) (mem address: 0x14C7F93)
     - [ be16, 0x00a7a7b8, 0x90e3 ]    # Depth buffer                (r27 => r6 ) (mem address: 0x14C7F93)
     - [ be16, 0x00a516ec, 0x4800 ]    # Cabin resort crash fix
     - [ be16, 0x00a516ec, 0x4800 ]    # Cabin resort crash fix
 
 
   tlou100_speed: &tlou100_speed
   tlou100_speed: &tlou100_speed
     - [ be16, 0x00a7a6b8, 0x9383 ]    # Speedboost                              (mem address: 0x14c7e5f)
     - [ be16, 0x00a7a6b8, 0x9383 ]    # Speedboost                              (mem address: 0x14c7e5f)
 
 
  tlou100_spulighting: &tlou100_spulighting
    - [ be16, 0x00afeb24, 0x4800 ]
 
   tlou111_mlaa: &tlou111_mlaa
   tlou111_mlaa: &tlou111_mlaa
  #- [ be16, 0x00aaa040, 0x9b83 ]    # store 0
  # - [ be16, 0x00aaa040, 0x9b83 ]    # store 0
  #- [ be16, 0x00a80350, 0x4800 ]    # unconditonally branch to disable MLAA
    - [ be16, 0x00a80350, 0x4800 ]    # unconditonally branch to disable MLAA
     - [ be16, 0x0095b8f8, 0x4800 ]    # Skip memory check function
     - [ be16, 0x0095b8f8, 0x4800 ]    # Skip memory check function
     - [ be32, 0x00b0e140, 0x38000000 ] # Green rain
     - [ be32, 0x00b0e140, 0x38000000 ] # Green rain
Line 237: Line 314:
     - [ be32, 0x00a877e0, 0x60000000 ] # skip assert: x + w <= width && y + h <= height
     - [ be32, 0x00a877e0, 0x60000000 ] # skip assert: x + w <= width && y + h <= height
     - [ be32, 0x0096be58, 0xc1890990 ] # Cargo fix
     - [ be32, 0x0096be58, 0xc1890990 ] # Cargo fix
     - [ be32, 0x0096bee0, 0xc0090990 ] # Reticle bloom
  # Dof correction patch
     ### Beginning of new blooom code
     - [ be32, 0x0096b8b0, 0x48114aa5 ] #Call1
  - [ be32, 0x00a39f60, 0x60000000 ]
     - [ be32, 0x0096b8d4, 0x48114a91 ] #Call2
  - [ be32, 0x00a3a584, 0x60000000 ]
    - [ be32, 0x00a3a584, 0x48045df1 ] #Call3
  - [ be32, 0x00a80348, 0x8809fe1f ]
  # Func 1 Overall DoF 1
  - [ be32, 0x00a8034c, 0x2f800003 ]
    - [ be32, 0x00a80354, 0xc09c0aa4 ] #Load f4 e294
  - [ be32, 0x00a80354, 0x3ca00151 ]
    - [ be32, 0x00a80358, 0xc27e0424 ] #f19 = 0.3
  - [ be32, 0x00a80358, 0x38a5e190 ]
    - [ be32, 0x00a8035c, 0xec8404f2 ] #f4*f19
  ### Memory search
    - [ be32, 0x00a80360, 0x4e800020 ] #Return
  - [ be32, 0x00a8035c, 0x3e314165 ]
  # Func 2 Cutscene Dof
  - [ be32, 0x00a80360, 0x3a31d500 ]
    - [ be32, 0x00a80364, 0xc01c0aac ] #Load f0 e29c
  - [ be32, 0x00a80364, 0x81110014 ]
    - [ be32, 0x00a80368, 0xc17e1b64 ] #f11 = 0.75
  - [ be32, 0x00a80368, 0x7f854000 ]
    - [ be32, 0x00a8036c, 0xec0002f2 ] #f0*f11
  - [ be32, 0x00a8036c, 0x409e0008 ]
    - [ be32, 0x00a80370, 0x4e800020 ] #Return
  - [ be32, 0x00a80370, 0x48000018 ]
  # Func 3 Overall Dof 2
  - [ be32, 0x00a80374, 0x2f9001a0 ]
    - [ be32, 0x00a80374, 0x3d200151 ] #r9 = 1510000
  - [ be32, 0x00a80378, 0x3a310040 ]
    - [ be32, 0x00a80378, 0x3929e29c ] #r9 = 150e29c
  - [ be32, 0x00a8037c, 0x3a100001 ]
    - [ be32, 0x00a8037c, 0x80080014 ] #Load pattern to r0
  - [ be32, 0x00a80380, 0x419cffe4 ]
    - [ be32, 0x00a80380, 0x7f804800 ] #Compare r0 to r9
  - [ be32, 0x00a80384, 0x480000ec ]
    - [ be32, 0x00a80384, 0x409e0010 ]
  ### Cargo chapter check (Negative float)
    - [ be32, 0x00a80388, 0xc01e137c ] #f0 = 0.3
  - [ be32, 0x00a80388, 0x801100a0 ]
    - [ be32, 0x00a8038c, 0xd008000c ] #Store f0
  - [ be32, 0x00a8038c, 0x2f800000 ]
    - [ be32, 0x00a80390, 0x48000008 ]
  - [ be32, 0x00a80390, 0x419e00a0 ]
    - [ be32, 0x00a80394, 0xd3e8000c ] #Default store
  - [ be32, 0x00a80394, 0x419c00c4 ]
    - [ be32, 0x00a80398, 0x4e800020 ] #Return
  ### Bills town Cemetery
  # Bloom correction patch
  - [ be32, 0x00a80398, 0x3ca03c44 ]
    - [ be32, 0x0096be54, 0x48114549 ] #Call
  - [ be32, 0x00a8039c, 0x38a5f3e0 ]
    - [ be32, 0x00a8039c, 0xc1a909a4 ] #Load f13
  - [ be32, 0x00a803a0, 0x7f802800 ]
    - [ be32, 0x00a803a0, 0xc19e059c ] #f12 = 0.69
  - [ be32, 0x00a803a4, 0x419e006c ]
    - [ be32, 0x00a803a4, 0x808909a8 ] #r4 unique value e198
  ### Bills town Bloater
    - [ be32, 0x00a803a8, 0x2f840000 ] #if r4 <= 0
  - [ be32, 0x00a803a8, 0x3ca03ba0 ]
    - [ be32, 0x00a803ac, 0x409d0058 ] #Skip to Main menu
  - [ be32, 0x00a803ac, 0x38a5e868 ]
  # Bills town Bloater and escape(2)
  - [ be32, 0x00a803b0, 0x7f802800 ]
    - [ be32, 0x00a803b0, 0x3ca03ba4 ] #r5 = 3ba40000
  - [ be32, 0x00a803b4, 0x419e0050 ]
    - [ be32, 0x00a803b4, 0x7f842800 ] #compare r4 to r5
  ### Bills Town intro check
    - [ be32, 0x00a803b8, 0x419c0074 ] #go to Patch if less
  - [ be32, 0x00a803b8, 0x80110020 ]
  # Bills town Cemetery(1)
  - [ be32, 0x00a803bc, 0x3ca04010 ]
    - [ be32, 0x00a803bc, 0x808909a4 ] #r4 unique value e194
  - [ be32, 0x00a803c0, 0x38a59e30 ]
    - [ be32, 0x00a803c0, 0x3ca03e80 ] #r5 = 3e800000
  - [ be32, 0x00a803c4, 0x7f802800 ]
    - [ be32, 0x00a803c4, 0x7f842800 ] #compare r4 to r5
  - [ be32, 0x00a803c8, 0x419e003c ]
    - [ be32, 0x00a803c8, 0x419c0068 ] #go to Patch if less
  ### Bills Town offroad check
  # Bills town main street(2)
  - [ be32, 0x00a803cc, 0x3ca03fba ]
    - [ be32, 0x00a803cc, 0x3ca04026 ] #r5 = 40260000
  - [ be32, 0x00a803d0, 0x38a596a7 ]
    - [ be32, 0x00a803d0, 0x38a56666 ] #r5 = 40266666
  - [ be32, 0x00a803d4, 0x7f802800 ]
    - [ be32, 0x00a803d4, 0x7f842800 ] #compare r4 to r5
  - [ be32, 0x00a803d8, 0x419e0038 ]
    - [ be32, 0x00a803d8, 0x419e0054 ] #go to Patch if ==
  ### Bills town main street
  # Bills town Trap(2)
  - [ be32, 0x00a803dc, 0x80110060 ]
    - [ be32, 0x00a803dc, 0x3ca0403d ] #r5 = 403d0000
  - [ be32, 0x00a803e0, 0x3ca04026 ]
    - [ be32, 0x00a803e0, 0x38a5e4e2 ] #r5 = 403ce4e2
  - [ be32, 0x00a803e4, 0x38a56666 ]
    - [ be32, 0x00a803e4, 0x7f842800 ] #compare r4 to r5
  - [ be32, 0x00a803e8, 0x7f802800 ]
    - [ be32, 0x00a803e8, 0x419e0044 ] #go to Patch if ==
  - [ be32, 0x00a803ec, 0x419e0018 ]
  # Bills Town intro check(2)
  ### Bills town Trap
    - [ be32, 0x00a803ec, 0x808909bc ] #r4 unique value e1ac
  - [ be32, 0x00a803f0, 0x3ca0403d ]
    - [ be32, 0x00a803f0, 0x3ca04007 ] #r5 = 40070000
  - [ be32, 0x00a803f4, 0x38a5e4e2 ]
    - [ be32, 0x00a803f4, 0x38a50a3d ] #r5 = 40070a3d
  - [ be32, 0x00a803f8, 0x7f802800 ]
    - [ be32, 0x00a803f8, 0x7f842800 ] #compare r4 to r5
  - [ be32, 0x00a803fc, 0x419e0008 ]
    - [ be32, 0x00a803fc, 0x419e0030 ] #go to Patch if ==
  - [ be32, 0x00a80400, 0x4800001c ]
    - [ be32, 0x00a80400, 0x4e800020 ] #Return
  ### Coefs - Bills town both - 0.68
  # Patch Menu/Ending level
  - [ be32, 0x00a80404, 0x38a03f30 ]
    - [ be32, 0x00a80404, 0x808909a0 ] #r4 unique value e190
  - [ be32, 0x00a80408, 0x39003f30 ]
    - [ be32, 0x00a80408, 0x3ca03f8d ] #r5 = 3f8d0000
  - [ be32, 0x00a8040c, 0x48000018 ]
    - [ be32, 0x00a8040c, 0x38a52f6f ] #r5 = 3f8d2f6f
  ### Coefs - Bills town 1-st -0.68 2-nd 1.0
    - [ be32, 0x00a80410, 0x7f842800 ] #compare r4 to r5
  - [ be32, 0x00a80410, 0x38a03f30 ]
    - [ be32, 0x00a80414, 0x419e0010 ] #Patch menu
  - [ be32, 0x00a80414, 0x39003f80 ]
    - [ be32, 0x00a80418, 0x80a909a4 ] #r5 unique value e194
  - [ be32, 0x00a80418, 0x4800000c ]
    - [ be32, 0x00a8041c, 0x7f842800 ] #compare r4 to r5
  ### Coefs - Default
    - [ be32, 0x00a80420, 0x4c9e0020 ] #Return (bnelr)
  - [ be32, 0x00a8041c, 0x38a03f80 ]
    - [ be32, 0x00a80424, 0xc19e034c ] #f12 = 0.5
  - [ be32, 0x00a80420, 0x39003f80 ]
    - [ be32, 0x00a80428, 0x48000008 ] #go to Patch
  ### Patch function
  # Patch function
  - [ be32, 0x00a80424, 0xb0b1000c ]
    - [ be32, 0x00a8042c, 0xedad0332 ] #f13=f13*f12
  - [ be32, 0x00a80428, 0xb111004c ]
    - [ be32, 0x00a80430, 0xec000332 ] #f0=f0*f12
  - [ be32, 0x00a8042c, 0x4800002c ]
    - [ be32, 0x00a80434, 0x4e800020 ] #Return
  ### Patch Menu/Ending level
 
  - [ be32, 0x00a80430, 0x80110020 ]
  - [ be32, 0x00a80434, 0x3ca03f8d ]
  - [ be32, 0x00a80438, 0x38a52f6f ]
  - [ be32, 0x00a8043c, 0x7f802800 ]
  - [ be32, 0x00a80440, 0x419e0010 ]
  - [ be32, 0x00a80444, 0x80b10060 ]
  - [ be32, 0x00a80448, 0x7f802800 ]
  - [ be32, 0x00a8044c, 0x409e000c ]
  - [ be32, 0x00a80450, 0x39003f00 ]
  - [ be32, 0x00a80454, 0xb111000c ]
  ### Patch DoF if needed
  - [ be32, 0x00a80458, 0x88090089 ]
  - [ be32, 0x00a8045c, 0x2f800000 ]
  - [ be32, 0x00a80460, 0x419e0010 ]
  - [ be32, 0x00a80464, 0x39003ea0 ]
  - [ be32, 0x00a80468, 0xb111100c ]
  - [ be32, 0x00a8046c, 0xb111108c ]
  ### Register clearing
  - [ be32, 0x00a80470, 0x38a00000 ]
  - [ be32, 0x00a80474, 0x3a000000 ]
  - [ be32, 0x00a80478, 0x3a200000 ]
  - [ be32, 0x00a8047c, 0x48000990 ]
 
   # Special thanks to HdHereidme for debug menu, Smasher248 for inital memory addresses and Skye Mods for mesh trimming  
   # Special thanks to HdHereidme for debug menu, Smasher248 for inital memory addresses and Skye Mods for mesh trimming  
   # address. Without them this patch wouldn't have been possible.
   # address. Without them this patch wouldn't have been possible.
Line 340: Line 394:
   #    1 = Bloom
   #    1 = Bloom
   #    2 = Depth of Field
   #    2 = Depth of Field
   #    3 = ??? (Tonemapping)
   #    3 = Tonemapping // reversed from orbis version confirmed this exists
   #    4 = Bloom & Depth of Field
   #    4 = Bloom & Depth of Field
   #    5 = Bloom & Depth of Field & Tonemapping (Default)
   #    5 = Bloom & Depth of Field & Tonemapping (Default)
 
 
   tlou111_post: &tlou111_post
   tlou111_post: &tlou111_post
  #- [ be32, 0x00aa944c, 0x38000003 ] # Post-processing modes                    (mem address: 0x1571867)
  # - [ be32, 0x00aa944c, 0x38000003 ] # Post-processing modes                    (mem address: 0x1571867)
     - [ be32, 0x0096be4c, 0xc0090990 ] # load e190 with 0
     - [ be32, 0x0096be4c, 0xc0090990 ] # load e190 with 0
     - [ be32, 0x0096BE58, 0xc1890990 ] # load e198 with 0
     - [ be32, 0x0096BE58, 0xc1890990 ] # load e198 with 0
     - [ be32, 0x0096BEE0, 0xc0090990 ] # load e1a0 with 0
     - [ be32, 0x0096BEE0, 0xc0090990 ] # load e1a0 with 0
 
 
   tlou111_mesh: &tlou111_mesh
   tlou111_mesh: &tlou111_mesh
     - [ be16, 0x009515d8, 0x9809 ]    # Disable Mesh trimming      (r3  => r0 ) (mem address: 0x14A9604)
     - [ be16, 0x009515d8, 0x9809 ]    # Disable Mesh trimming      (r3  => r0 ) (mem address: 0x14A9604)
Line 361: Line 415:
    
    
   tlou111_ssao: &tlou111_ssao
   tlou111_ssao: &tlou111_ssao
    ### Only disable during Blizzard
     - [ be16, 0x00aa9f9c, 0x9b83 ] #Disable SSAO
    - [ be32, 0x00a7ffac, 0x48000545 ] #Function Call
 
    - [ be32, 0x00a804f0, 0x38600001 ] #r3 = 1
    - [ be32, 0x00a80484, 0x38a00000 ] #r5 = 0
    ### Check Blizzard
    - [ be32, 0x00a804f8, 0x800909a0 ]
    - [ be32, 0x00a804fc, 0x3d203f92 ] #r9 = 3f920000
    - [ be32, 0x00a80500, 0x3929f5ae ] #r9 = 3f91f5ae
    - [ be32, 0x00a80504, 0x7f804800 ] #compare r0 to r9
    - [ be32, 0x00a80508, 0x3d200157 ]
    - [ be32, 0x00a8050c, 0x409e0018 ] #Skip to fast return
  ### Check SSAO State
    - [ be32, 0x00a80510, 0x88091aaf ]
    - [ be32, 0x00a80518, 0x409e001c ]
    - [ be32, 0x00a8051c, 0x98691aaf ] #Enable SSAO
    - [ be32, 0x00a80520, 0x48000014 ] #Go to return
     - [ be32, 0x00a80524, 0x98a91aaf ] #Disable SSAO
    - [ be32, 0x00a80528, 0x3d2000a8 ]
    - [ be32, 0x00a8052c, 0x3929014c ]
    - [ be32, 0x00a80530, 0x7d2803a6 ]
    - [ be32, 0x00a80534, 0x813d000c ]
    - [ be32, 0x00a80538, 0x4e800020 ] #Return
 
   tlou111_mb: &tlou111_mb
   tlou111_mb: &tlou111_mb
     - [ be16, 0x00aaa000, 0x9b83 ]     # Disable motion blur         (r27 => r28) (mem address: 0x1571ACE)
     - [ be32, 0x0096aa94, 0x480000e0 ] # Disable motion blur
    
    
   tlou111_dof: &tlou111_dof
   tlou111_dof: &tlou111_dof
Line 398: Line 431:
   tlou111_db: &tlou111_db
   tlou111_db: &tlou111_db
     - [ be16, 0x00aaa2e4, 0x90c3 ]    # Depth buffer                (r27 => r6 ) (mem address: 0x1571E37)
     - [ be16, 0x00aaa2e4, 0x90c3 ]    # Depth buffer                (r27 => r6 ) (mem address: 0x1571E37)
  #- [ be16, 0x00a7ffac, 0x4800 ]    # Cabin resort crash fix
    - [ be16, 0x00a7ffac, 0x4800 ]    # Cabin resort crash fix
 
 
   tlou111_speed: &tlou111_speed
   tlou111_speed: &tlou111_speed
     - [ be16, 0x00aaa1e8, 0x9383 ]    # Speedboost                              (mem address: 0x1571d03)
     - [ be16, 0x00aaa1e8, 0x9383 ]    # Speedboost                              (mem address: 0x1571d03)
 
  tlou111_spulighting: &tlou111_spulighting
    - [ be16, 0x00b294ec, 0x4800 ]


   tlou111_devplus: &tlou111_devplus
   tlou111_devplus: &tlou111_devplus
  - [ be32, 0x012850e8, 0x00e8c3e7 ]
    - [ be32, 0x012850e8, 0x00e8c3e7 ] # str ptr
  - [ be32, 0x0128515c, 0x00e8c57f ]
    - [ be32, 0x0128515c, 0x00e8c57f ] # str ptr
  - [ be16, 0x00e8c318, 0x202b ]
    - [ be16, 0x00e8c318, 0x202b ] # _+
  - [ byte, 0x00e8c3e7, 42 ]
    - [ byte, 0x00e8c3e7, 42 ] # * in int
  - [ byte, 0x00e8c57f, 42 ]
    - [ byte, 0x00e8c57f, 42 ] # * in int
  ### ptr
  # useless memory option replace with rendering
  - [ be32, 0x0129732c, 0x015715f0 ]
  # point addr from [] to [], this offsets 002dcc40 store 00 and onwards.
  - [ be32, 0x002dcc40, 0x38bc00be ]
  # i.e [] now becomes [] and so on
  - [ be32, 0x012973fc, 0x00ee0490 ]
    - [ be32, 0x0129732c, 0x015715f0 ] # pointer
  - [ be16, 0x00ee0498, 0x5669 ]
    - [ be32, 0x002dcc40, 0x38bc00be ] # disable vis
  - [ be32, 0x002dcc74, 0x38bc06d9 ]
    - [ be32, 0x012973fc, 0x00ee0490 ]
  - [ be32, 0x01297400, 0x00ee01d8 ]
    - [ be16, 0x00ee0498, 0x5669 ] # capitalise visibility for
  - [ be32, 0x002dcca8, 0x38bc06da ]
    - [ be32, 0x002dcc74, 0x38bc06d9 ] # wireframe
  - [ be32, 0x01297404, 0x00ee01f0 ]
    - [ be32, 0x01297400, 0x00ee01d8 ]
  - [ be32, 0x002dccdc, 0x38bc06db ]
    - [ be32, 0x002dcca8, 0x38bc06da ] # see through
  - [ be32, 0x01297408, 0x00ee0210 ]
    - [ be32, 0x01297404, 0x00ee01f0 ]
  - [ be32, 0x002dcd10, 0x38bc04f4 ]
    - [ be32, 0x002dccdc, 0x38bc06db ] # point mode
  - [ be32, 0x0129740c, 0x00f05a48 ]
    - [ be32, 0x01297408, 0x00ee0210 ]
  - [ be32, 0x002dcd44, 0x38bc04de ]
    - [ be32, 0x002dcd10, 0x38bc04f4 ] # post on spu
  - [ be32, 0x01297410, 0x00f05618 ]
    - [ be32, 0x0129740c, 0x00f05a48 ]
  - [ be32, 0x002dcd78, 0x38bc04e1 ]
    - [ be32, 0x002dcd44, 0x38bc04de ] # motion blur
  - [ be32, 0x01297414, 0x00f05410 ]
    - [ be32, 0x01297410, 0x00f05618 ]
  - [ be32, 0x012974e4, 0x0135bfe8 ]
    - [ be32, 0x002dcd78, 0x38bc04e1 ] # dof
  - [ be64, 0x00ea8ba0, 0x456e61626c652050 ]
    - [ be32, 0x01297414, 0x00f05410 ]
  - [ be32, 0x00ea8ba8, 0x61757365 ]
    - [ be32, 0x012974e4, 0x0135bfe8 ] # ptr
  - [ byte, 0x00ea8bac, 0 ]
    - [ be64, 0x00ea8ba0, 0x456e61626c652050 ] # rename string
  - [ be32, 0x01297418, 0x00e8d580 ]  
    - [ be32, 0x00ea8ba8, 0x61757365 ]
  - [ be32, 0x0129741c, 0x0157186e ] # bug! need fixing.
    - [ byte, 0x00ea8bac, 0 ] # term str
  - [ byte, 0x00eeeef8, 0]
    - [ be32, 0x01297418, 0x00e8d580 ]
  - [ byte, 0x00eeef10, 0]
    - [ byte, 0x00eeeef8, 0 ]
  - [ byte, 0x00eeef28, 0]
    - [ byte, 0x00eeef10, 0 ]
  - [ byte, 0x00eeef50, 0]
    - [ byte, 0x00eeef28, 0 ]
  - [ be32, 0x012bf4a4, 0x00e8d520 ]
    - [ byte, 0x00eeef50, 0 ]
  - [ be32, 0x012bf4a8, 0x00e8d550 ]
    - [ be32, 0x012bf4a4, 0x00e8d520 ]
  ### str
    - [ be32, 0x012bf4a8, 0x00e8d550 ]
  - [ be64, 0x00e8d520, 0x437265646974733a ]
  # str, perhaps use utf8 here?
  - [ be64, 0x00e8d550, 0x4d61646520627920 ]
    - [ be64, 0x00e8d520, 0x437265646974733a ]
  - [ be64, 0x00e8d558, 0x696c6c7573696f6e ]
    - [ be64, 0x00e8d550, 0x4d61646520627920 ]
  - [ be64, 0x00e8d560, 0x2c20467265616b6f ]
    - [ be64, 0x00e8d558, 0x696c6c7573696f6e ]
  - [ be64, 0x00e8d568, 0x20616e6420536d61 ]
    - [ be64, 0x00e8d560, 0x2c20467265616b6f ]
  - [ be64, 0x00e8d570, 0x7368657232343800 ]
    - [ be64, 0x00e8d568, 0x20616e6420536d61 ]
   - [ be64, 0x00e8d580, 0x53686f7720437265 ]
    - [ be64, 0x00e8d570, 0x7368657232343800 ]
  - [ be32, 0x00e8d588, 0x64697473 ]
   # vram stats
  ### console exclusive code, we don't need this due to post on spu off
    - [ be64, 0x00e8d580, 0x53686f7720437265 ]
  #- [ be32, 0x00aa9444, 0x38600001 ]
    - [ be32, 0x00e8d588, 0x64697473 ]
  #- [ be16, 0x00aa9464, 0x9869 ]
  # console exclusive code, we don't need this due to post on spu off
    - [ be32, 0x0129741c, 0x0157186e ] # ptr
  # - [ be32, 0x00aa9444, 0x38600001 ] # remove branch and set r3 to 1
  # - [ be16, 0x00aa9464, 0x9869 ]     # load from r3
 
  tlou111_cparts: &tlou111_cparts
    - [ be64, 0x0e8d600, 0x496E66696E697465 ] # str Infinite Everything (Ammo, Items, Skills, Parts)
    - [ be64, 0x0e8d608, 0x2045766572797468 ]
    - [ be64, 0x0e8d610, 0x696E672028416D6D ]
    - [ be64, 0x0e8d618, 0x6F2C204974656D73 ]
    - [ be64, 0x0e8d620, 0x2C20536B696C6C73 ]
    - [ be64, 0x0e8d628, 0x2C20506172747329 ]
    - [ be32, 0x01286780, 0x00e8d600 ] # point addr to e8e490
    - [ be32, 0x01286784, 0x014f3412 ] # point addr to 014f3412
# add
    - [ be32, 0x003495c, 0x48e58c35 ] # bl 00e8d590
    - [ be32, 0x0e8d590, 0x3fa0014f ] # r29 14f0000
    - [ be32, 0x0e8d594, 0x881d3412 ] # lbz r0, 0x3412, (r29)
    - [ be32, 0x0e8d598, 0x2f800000 ] # cmp r0, 0x0
    - [ be32, 0x0e8d59c, 0x409e0008 ] # bne 0xe8d5a4
    - [ be32, 0x0e8d5a0, 0x7f7fd22e ] # og lhzx
    - [ be32, 0x0e8d5a4, 0x4e800020 ] # ret
    - [ be32, 0x0034968, 0x2f9d096f ] # r29 to 512
    - [ be32, 0x0034970, 0x3ba0096f ] # li r29 512
# sub
    - [ be32, 0x00336c0, 0x7e2802a6 ] # mflr r17,LR
    - [ be32, 0x00336c4, 0x48e59f01 ] # call 3
    - [ be32, 0x00336c8, 0x7e2803a6 ] # mtlr LR,r17
    - [ be32, 0x00336cc, 0x3a200000 ] # r17 = 0
    - [ be32, 0x0e8d5c4, 0x7c0b4a2e ] # og lhzx
    - [ be32, 0x0e8d5c8, 0x5408043e ] # og rlwinm
    - [ be32, 0x0e8d5cc, 0x3e00014f ] # r16 = 14f0000
    - [ be32, 0x0e8d5d0, 0x89f03412 ] # lbz r15,0x3412,r16
    - [ be32, 0x0e8d5d4, 0x2f8f0000 ] # r15 vs 0
    - [ be32, 0x0e8d5d8, 0x409e0008 ] # bne
    - [ be32, 0x0e8d5dc, 0x7c050050 ] # og sub
    - [ be32, 0x0e8d5e0, 0x7f882800 ] # og cmpw
    - [ be32, 0x0e8d5e4, 0x39e00000 ] # r15 = 0
    - [ be32, 0x0e8d5e8, 0x3a000000 ] # r16 = 0
    - [ be32, 0x0e8d5ec, 0x4e800020 ] # ret


   gpulightingnotes: &gpulightingnotes "Uses GPU (RSX) path for lighting effects,\nThis path is incomplete results in some missing effects. (Volumetric lighting)"
   gpulightingnotes: &gpulightingnotes "Uses GPU (RSX) path for lighting effects instead of SPU.\nFixes rendering of lightning effects that are being rendered broken via SPU path and greatly improves performance over it.\nThis path is incomplete and results in some missing effects such as Volumetric lighting."


   spulightingnotes: &spulightingnotes "Removes some broken effects and improve performance."
   debugmenunotes: &debugmenunotes "L3 + Start = Dev Menu\nL3 + Select = Quick Menu\nL3 + Triangle = FPS Text\nL3 + R3 = Debug Fly"
    
    
  debugmenunotes: &debugmenunotes "L3 + Start = Dev Menu\nL3 + Select = Quick Menu\nL3 + Triangle = FPS Text\nL3 + R3 = Debug Fly"
   fpsnotes: &fpsnotes "Unlocks FPS without any special settings.\nGame may crash above 500FPS in loading screen."
   fpsnotes: &fpsnotes "Unlocks FPS without any special settings.\nGame may crash above 500FPS in loading screen."
 
 
   tloumlaanotes: &tloumlaanotes "Last modified: Dec 28 2020\n\nAllows for the use of Resolution Scaling and improves performance.\nVersion 2.0 fixes crashes introduced in the original patch.\nVersion 3.0 Fixes the Green Rain in more areas.\nVersion 4.0 Fixes high levels of Bloom in some areas. (1.11 Only)\nKnown issues: Non working listen mode"
   tloumlaanotes: &tloumlaanotes "Last modified: Dec 28 2020\n\nAllows for the use of Resolution Scaling and improves performance.\nVersion 2.0 - Fixes crashes introduced in the original patch.\nVersion 3.0 - Fixes the Green Rain in more areas.\nVersion 4.0 - Fixes high levels of Bloom in some areas.\n\nKnown issues: Listen mode does not work"
 
 
   tlou100_title: &tlou100_title
   tlou100_title: &tlou100_title
     "The Last of Us":
     "The Last of Us":
Line 473: Line 540:
       NPEA00435: [ 01.00 ]
       NPEA00435: [ 01.00 ]
       NPUA80960: [ 01.00 ]
       NPUA80960: [ 01.00 ]
 
 
   tlou111_title: &tlou111_title
   tlou111_title: &tlou111_title
     "The Last of Us":
     "The Last of Us":
Line 489: Line 556:
     Author: Whatcookie
     Author: Whatcookie
     Notes: *tloumlaanotes
     Notes: *tloumlaanotes
     Patch Version: 3.0
     Patch Version: 4.0
     Patch:
     Patch:
       - [ load, *tlou100_mlaa ]
       - [ load, *tlou100_mlaa ]
Line 497: Line 564:
     Notes:  
     Notes:  
     Patch Version: 1.0
     Patch Version: 1.0
    Group: Bloom
     Patch:
     Patch:
       - [ load, *tlou100_post ]
       - [ load, *tlou100_post ]
Line 547: Line 613:
     Notes: *gpulightingnotes
     Notes: *gpulightingnotes
     Patch Version: 1.0
     Patch Version: 1.0
    Group: Lighting
     Patch:
     Patch:
       - [ load, *tlou100_db ]
       - [ load, *tlou100_db ]
Line 557: Line 622:
     Patch:
     Patch:
       - [ load, *tlou100_speed ]
       - [ load, *tlou100_speed ]
  Disable SPU lighting:
    Games: *tlou100_title
    Author: ZEROx
    Notes: *spulightingnotes
    Patch Version: 1.0
    Group: Lighting
    Patch:
      - [ load, *tlou100_spulighting ]
   Debug Menu:
   Debug Menu:
     Games: *tlou100_title
     Games: *tlou100_title
Line 575: Line 632:
       - [ be16, 0x009acbde, 0x2db6 ]
       - [ be16, 0x009acbde, 0x2db6 ]
       - [ be16, 0x009acbe6, 0x2db6 ]
       - [ be16, 0x009acbe6, 0x2db6 ]
  Infected Severed Head Crash Bug Fix:
    Games: *tlou100_title
    Author: illusion, ZEROx
    Notes: "Last modified: 13 Feb 2020.\nFixed a bug where throwing an object at a Infected Severed Head causes a game crash."
    Patch Version: 1.0
    Patch:
      - [ be32, 0x006b06a8, 0x483a4b95 ] #Branch
      - [ be32, 0x00a5523c, 0x3d400001 ] #r10 = 0x10000
      - [ be32, 0x00a55240, 0x7f9d5000 ] #r29 vs r10
      - [ be32, 0x00a55244, 0x409d0008 ] #Skip if r29<=r10 // If r29 less or equal to r10 then do nothing
      - [ be32, 0x00a55248, 0x813d0040 ] #lwz r9,0x40(r29) // load as normal
      - [ be32, 0x00a5524c, 0x4e800020 ] #Return
   21:9 Aspect Ratio:
   21:9 Aspect Ratio:
     Games: *tlou100_title
     Games: *tlou100_title
Line 591: Line 660:
     Patch:
     Patch:
       - [ be32, 0x00036AB8, 0x38A00000 ]
       - [ be32, 0x00036AB8, 0x38A00000 ]
   Bloom High:
   Infinite flashlight battery:
     Games: *tlou100_title
     Games: *tlou100_title
     Author: ZEROx, illusion
     Author: bungholio, ZEROx
     Notes:  
     Notes: "This patch is usefull for people who play with something other than DualShock3/4.\nNormaly flashlight battery drains after ~3600 frames, patch disables battery drain, Infinite flashlight battery no controller shake."
     Patch Version: 1.0
     Patch Version: 1.0
    Group: Bloom
     Patch:
     Patch:
       - [ be32, 0x0093e300, 0xc01e1b64 ] # load e190 with 0.75f
       - [ be32, 0x0068eb38, 0x60000000 ]
      - [ be32, 0x0093e30c, 0xc1890990 ] # load e198 with 0f
   Disable Camera Shake:
      - [ be32, 0x0093e394, 0xc0090990 ] # load e1a0 with 0f
   Bloom Medium:
     Games: *tlou100_title
     Games: *tlou100_title
     Author: ZEROx, illusion
     Author: illusion
     Notes:  
     Notes: "Last modified: 1 Mar 2021\n\nDisables Camera Shake during Gameplay.\nIn-Game-Cinematics remain is unaffected."
    Patch Version: 1.0
    Group: Bloom
    Patch:
      - [ be32, 0x0093e300, 0xc01e034c ] # load e190 with 0.5f
      - [ be32, 0x0093e308, 0xc1be0e14 ] # load e194 with 0.25f
      - [ be32, 0x0093e30c, 0xc1890990 ] # load e198 with 0f
      - [ be32, 0x0093e394, 0xc0090990 ] # load e1a0 with 0f
  Bloom Low:
    Games: *tlou100_title
    Author: ZEROx, illusion
    Notes:
    Patch Version: 1.0
    Group: Bloom
    Patch:
      - [ be32, 0x0093e300, 0xc01e0e14 ] # load e190 with 0.25f
      - [ be32, 0x0093e308, 0xc1be0e14 ] # load e194 with 0.25f
      - [ be32, 0x0093e30c, 0xc1890990 ] # load e198 with 0f
      - [ be32, 0x0093e394, 0xc0090990 ] # load e1a0 with 0f
  Bloom Default:
    Games: *tlou100_title
    Author: ZEROx, illusion
    Notes: Replicates Bloom settings with MLAA Enabled. (In Game Only)
     Patch Version: 1.0
     Patch Version: 1.0
    Group: Bloom
     Patch:
     Patch:
       - [ be32, 0x0093e30c, 0xc1890990 ] # load e198 with 0f
       - [ be16, 0x00966784, 0x997d ]
      - [ be32, 0x0093e394, 0xc0090990 ] # load e1a0 with 0f


PPU-120fb71f7352d62521c639b0e99f960018c10a56:
PPU-120fb71f7352d62521c639b0e99f960018c10a56:
Line 646: Line 688:
     Notes:  
     Notes:  
     Patch Version: 1.0
     Patch Version: 1.0
    Group: Bloom
     Patch:
     Patch:
       - [ load, *tlou111_post ]
       - [ load, *tlou111_post ]
Line 696: Line 737:
     Notes: *gpulightingnotes
     Notes: *gpulightingnotes
     Patch Version: 1.0
     Patch Version: 1.0
    Group: Lighting
     Patch:
     Patch:
       - [ load, *tlou111_db ]
       - [ load, *tlou111_db ]
Line 706: Line 746:
     Patch:
     Patch:
       - [ load, *tlou111_speed ]
       - [ load, *tlou111_speed ]
  Disable SPU Lighting:
    Games: *tlou111_title
    Author: ZEROx
    Notes: *spulightingnotes
    Patch Version: 1.0
    Group: Lighting
    Patch:
      - [ load, *tlou111_spulighting ]
   Debug Menu:
   Debug Menu:
     Games: *tlou111_title
     Games: *tlou111_title
     Author: dron_3, HdHereidme, illusion
     Author: dron_3, HdHereidme, illusion, ZEROx
     Notes: *debugmenunotes
     Notes: *debugmenunotes
     Patch Version: 1.01
     Patch Version: 1.01
Line 724: Line 756:
       - [ be16, 0x009da99a, 0x2db6 ]
       - [ be16, 0x009da99a, 0x2db6 ]
       - [ be16, 0x009da9a2, 0x2db6 ]
       - [ be16, 0x009da9a2, 0x2db6 ]
      - [ be32, 0x00a1a200, 0x60000000 ] #Remove "!" model render
  Infinite flashlight battery:
    Games: *tlou111_title
    Author: bungholio, ZEROx
    Notes: "This patch is usefull for people who play with something other than DualShock3/4.\nNormaly flashlight battery drains after ~3600 frames, patch disables battery drain, Infinite flashlight battery no controller shake."
    Patch Version: 1.0
    Patch:
      - [ be32, 0x006acbc8, 0x60000000 ]
  Infected Severed Head Crash Bug Fix:
    Games: *tlou111_title
    Author: illusion, ZEROx
    Notes: "Last modified: 13 Feb 2020.\nFixed a bug where throwing an object at a Infected Severed Head causes a game crash."
    Patch Version: 1.0
    Patch:
      - [ be32, 0x006d9368, 0x483aa7ed ] #Call
      - [ be32, 0x00a83b54, 0x3d400001 ] #r10 = 0x10000
      - [ be32, 0x00a83b58, 0x7f9d5000 ] #r29 vs r10
      - [ be32, 0x00a83b5c, 0x409d0008 ] #Skip if r29<=r10 // If r29 less or equal to r10 then do nothing
      - [ be32, 0x00a83b60, 0x813d0040 ] #lwz r9,0x40(r29) // load as normal
      - [ be32, 0x00a83b64, 0x4e800020 ] #Return
   21:9 Aspect Ratio:
   21:9 Aspect Ratio:
     Games: *tlou111_title
     Games: *tlou111_title
Line 760: Line 812:
     Patch Version: 1.0
     Patch Version: 1.0
     Patch:
     Patch:
       - [ be32, 0x012850f8, 0x0148AE18 ]
       - [ be32, 0x012850f8, 0x0148AE18 ] # ptr
       - [ be16, 0x0135dcac, 0x3f80 ]
       - [ be16, 0x0135dcac, 0x3f80 ] # avoid assertion
       - [ be64, 0x00e8c418, 0x4E5043204D6F6465 ]
       - [ be64, 0x00e8c418, 0x4E5043204D6F6465 ] # string replace
       - [ be32, 0x00e8c420, 0x6C205363 ]
       - [ be32, 0x00e8c420, 0x6C205363 ]
       - [ be16, 0x00e8c424, 0x616C ]
       - [ be16, 0x00e8c424, 0x616C ]
       - [ be64, 0x00e8c426, 0x653A000000000000 ]
       - [ be64, 0x00e8c426, 0x653A000000000000 ] # 1 byte overlap
}}
   Disable Camera Shake:
 
     Games: *tlou111_title
{{patch
     Author: illusion
|type    = Canary
     Notes: "Last modified: 1 Mar 2021\n\nDisables Camera Shake during Gameplay.\nIn-Game-Cinematics remain unaffected."
|version = 1.2
     Patch Version: 1.0
|content =
     Patch:
Anchors:
       - [ be16, 0x00994234, 0x997d ]
   tlou100_spucrashfix: &tlou100_spucrashfix
   Infinite Everything (Parts, Pills, Crafting items):
     - [ be16, 0x1291C0C, 0x3F00 ]      # set float to 0.5 for sun pos(?)
     Games: *tlou111_title
     - [ be32, 0x0093E8B4, 0xC0490E57 ] # Dev Menu -> Rendering -> HDR Tonemapping -> display brightness -1.404
     Author: Medo, Randy97Killa, illusion
    - [ be32, 0x00335DB8, 0x60000000 ] # nop reset in option menu
     Notes: "Last modified: 11 Mar 2021\n\nActivate Cheat in Gameplay... Pickup any ammount of parts or items for high value."
 
  tlou111_spucrashfix: &tlou111_spucrashfix
     - [ be16, 0x12C41A4, 0x3F00 ]      # set float to 0.5 for sun pos(?)
    - [ be32, 0x0096C400, 0xC0490E57 ] # Dev Menu -> HDR Tonemapping -> display brightness -1.404
    - [ be32, 0x0034AFB8, 0x60000000 ] # nop reset in option menu
 
  spucrashnotes: &spucrashnotes "This patch is now obsolete. Better implementation has been implemented into MLAA Patch.\nOld description:\nThis patch attempts to addresses issues caused by the MLAA patch causing crashes during the following subchapters:\nBill's Town: High School Escape\nPittsburgh: Financial District, Escape the City\nUniversity: Go Big Horns\n\nKnown Issues:\nMenu too dark.\nSun in wrong position.\nLighting flickers during sun position change."
 
  tlou100_title: &tlou100_title
     "The Last of Us":
      BCES01584: [ 01.00 ]
      BCES01585: [ 01.00 ]
      BCUS98174: [ 01.00 ]
      BCJS37010: [ 01.00 ]
      BCAS20270: [ 01.00 ]
 
  tlou111_title: &tlou111_title
     "The Last of Us":
       BCES01584: [ 01.11 ]
      BCES01585: [ 01.11 ]
      BCUS98174: [ 01.11 ]
      BCJS37010: [ 01.11 ]
      BCAS20270: [ 01.11 ]
 
PPU-9df60dc1aa5005a0c80e9066e4951dc0471553e6:
   SPU Crash Workaround:
     Games: *tlou100_title
     Author: illusion, ZEROx
     Notes: *spucrashnotes
     Patch Version: 1.0
     Patch Version: 1.0
     Patch:
     Patch:
       - [ load, *tlou100_spucrashfix ]
       - [ load, *tlou111_cparts ]
 
   Tool Always Level 5:
PPU-120fb71f7352d62521c639b0e99f960018c10a56:
   SPU Crash Workaround:
     Games: *tlou111_title
     Games: *tlou111_title
     Author: illusion, ZEROx
     Author: illusion, ZEROx
     Notes: *spucrashnotes
     Notes:  
     Patch Version: 1.0
     Patch Version: 1.0
     Patch:
     Patch:
       - [ load, *tlou111_spucrashfix ]
       - [ be32, 0x00082960, 0x38000005 ] # tools level load  
      - [ be32, 0x00082788, 0x60000000 ] # tools gain pickup, result will be
}}
}}

Revision as of 06:57, 20 November 2021

The Last of Us
TLOUcover.jpg
Developer(s) Naughty Dog
Publisher(s) Sony Computer Entertainment
Release date(s) June 14, 2013
Release type PlayStation exclusive
Genre(s) Action, Adventure, Survival horror
Mode(s) Single-player, Multiplayer
GameID(s) BCES01584 (IRD), BCES01585 (IRD), BCUS98174 (IRD), BCJS37010 (IRD), NPEA00435, BCAS20270 (IRD), NPJA00096, NPUA80960
Left Behind
NPEA00521, NPJA00129, NPUA81175, NPHA80279
Demo
NPUA70257
Quick links Check Compatibility
Open Issues
Search Google
Wikipedia Page

The Last of Us is a game where players control Joel, a smuggler tasked with escorting a teenage girl, Ellie, across a post-apocalyptic United States. The Last of Us is played from a third-person perspective. Players use firearms and improvised weapons, and can use stealth to defend against hostile humans and cannibalistic creatures infected by a mutated strain of the Cordyceps fungus. In the online multiplayer mode, up to eight players engage in cooperative and competitive gameplay.

Development of The Last of Us began in 2009, soon after the release of Naughty Dog's previous game, Uncharted 2: Among Thieves. For the first time in the company's history, Naughty Dog split into two teams; while one team developed Uncharted 3: Drake's Deception, the other half developed The Last of Us. The relationship between Joel and Ellie became the central focus of the game, with all other elements developed around it. Actors Troy Baker and Ashley Johnson portrayed Joel and Ellie respectively through voice and motion capture, and assisted creative director Neil Druckmann with the development of the characters and story. The original score was composed and performed by Gustavo Santaolalla.

Following its announcement in December 2011, The Last of Us was widely anticipated. Upon release, it received critical acclaim, with praise directed at its narrative, gameplay, visual and sound design, characterization, and depiction of female characters. The Last of Us became one of the best-selling games on the PlayStation 3, selling over 1.3 million units in its first week and 17 million by April 2018. After the game's release, Naughty Dog released several downloadable content additions. The Last of Us: Left Behind adds a single-player campaign following Ellie and her best friend Riley.

Configuration

Only options that deviate from the default configuration to ensure best performance are listed below. The full list of default options is available here.

GPU configuration

Setting Option Notes
Framelimit 60 Enabling framelimit prevents rare crashes during loading screens when framerate may exceed 500FPS. Alternatively, enable VSync on a 60Hz monitor for the same effect.
Resolution scale 100 Resolution scaling is only supported when the MLAA patch is enabled.
Resolution scale threshold 1x1 When using Resolution scaling above 100%, this must be set to 1x1 otherwise some effects like lens flares will be missing.
Write color buffers On Only needed if you're not using MLAA patch. Fixes Green Rain and particle issues. Slightly reduces performance.

Advanced configuration

Setting Option Notes
Accurate RSX reservation access On To be enabled on systems that do not have TSX.
Read color buffers On Fixes graphical issues when certain patches are enabled.

Known Issues

This game is currently not playable.

Special Notes

The Last of Us can be played from start to finish, but requires a good CPU and using RPCS3's patches (especially MLAA patch) for playable performance.

Patches

Anchors:
  # Since we only change store reg and branch, we don't need to patch last 2 bytes again.
  tlou100_mlaa: &tlou100_mlaa
    - [ be16, 0x00a7a514, 0x9b83 ]     # store 0
  #  - [ be16, 0x00a51a8c, 0x4800 ]     # unconditonally branch to disable MLAA
    - [ be16, 0x0092ddac, 0x4800 ]     # Skip memory check function
    - [ be32, 0x00ae5d4c, 0x38000000 ] # Green rain
    - [ be32, 0x00a2c4f0, 0x38000000 ] # Green rain
    - [ be32, 0x00a2c4fc, 0x38000000 ] # Green rain
    - [ be32, 0x00a58da8, 0x60000000 ] # skip assert: x + w <= width && y + h <= height
    - [ be32, 0x0093e30c, 0xc1890990 ] # Cargo fix
    - [ be32, 0x0093e394, 0xc0090990 ] # Reticle bloom
  # Dof patch
    - [ be32, 0x0093dd64, 0x48113d2d ] #Call1
    - [ be32, 0x0093dd88, 0x48113d19 ] #Call2
    - [ be32, 0x00a0ae2c, 0x48046c85 ] #Call3
  # Func 1 Overall DoF 1
    - [ be32, 0x00a51a90, 0xc09c0aa4 ] #Load f4
    - [ be32, 0x00a51a94, 0xc27e04d4 ] #f19 = 0.3
    - [ be32, 0x00a51a98, 0xec8404f2 ] #f4*f19
    - [ be32, 0x00a51a9c, 0x4e800020 ] #Return
  # Func 2 Cutscene Dof
    - [ be32, 0x00a51aa0, 0xc01c0aac ] #Load f0
    - [ be32, 0x00a51aa4, 0xc17e1d34 ] #f11 = 0.75
    - [ be32, 0x00a51aa8, 0xec0002f2 ] #f0*f11
    - [ be32, 0x00a51aac, 0x4e800020 ] #Return
  # Func 3 Overall Dof 2
    - [ be32, 0x00a51ab0, 0x3d200146 ] #r9 = 1460000
    - [ be32, 0x00a51ab4, 0x3929481c ] #r9 = 146481c
    - [ be32, 0x00a51ab8, 0x80080014 ] #Load pattern to r0
    - [ be32, 0x00a51abc, 0x7f804800 ] #Compare r0 to r9
    - [ be32, 0x00a51ac0, 0x409e0010 ]
    - [ be32, 0x00a51ac4, 0xc01e10a0 ] #f0 = 0.3
    - [ be32, 0x00a51ac8, 0xd008000c ] #Store f0
    - [ be32, 0x00a51acc, 0x48000008 ]
    - [ be32, 0x00a51ad0, 0xd3e8000c ] #Default store
    - [ be32, 0x00a51ad4, 0x4e800020 ] #Return
  # Bloom correction patch v2.2
    - [ be32, 0x0093e308, 0x481137d1 ] #Call
    - [ be32, 0x00a51ad8, 0xc1a909a4 ] #Load f13
    - [ be32, 0x00a51adc, 0xc19e064c ] #f12 = 0.69
    - [ be32, 0x00a51ae0, 0x808909a8 ] #r4 unique value e198
    - [ be32, 0x00a51ae4, 0x2f840000 ] #if r4 <= 0
    - [ be32, 0x00a51ae8, 0x409d0058 ] #Skip to Main menu
  # Bills town Bloater and escape (2)
    - [ be32, 0x00a51aec, 0x3ca03ba4 ] #r5 = 3ba40000
    - [ be32, 0x00a51af0, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51af4, 0x419c0074 ] #go to Patch if less
  # Bills town Cemetery (1)
    - [ be32, 0x00a51af8, 0x808909a4 ] #r4 unique value e194
    - [ be32, 0x00a51afc, 0x3ca03e80 ] #r5 = 3e800000
    - [ be32, 0x00a51b00, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b04, 0x419c0068 ] #go to Patch if less
  # Bills town main street (2)
    - [ be32, 0x00a51b08, 0x3ca04026 ] #r5 = 40260000
    - [ be32, 0x00a51b0c, 0x38a56666 ] #r5 = 40266666
    - [ be32, 0x00a51b10, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b14, 0x419e0054 ] #go to Patch if ==
  # Bills town Trap (2)
    - [ be32, 0x00a51b18, 0x3ca0403d ] #r5 = 403d0000
    - [ be32, 0x00a51b1c, 0x38a5e4e2 ] #r5 = 403ce4e2
    - [ be32, 0x00a51b20, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b24, 0x419e0044 ] #go to Patch if ==
  # Bills Town intro check (2)
    - [ be32, 0x00a51b28, 0x808909bc ] #r4 unique value e1ac
    - [ be32, 0x00a51b2c, 0x3ca04007 ] #r5 = 40070000
    - [ be32, 0x00a51b30, 0x38a50a3d ] #r5 = 40070a3d
    - [ be32, 0x00a51b34, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b38, 0x419e0030 ] #go to Patch if ==
    - [ be32, 0x00a51b3c, 0x4e800020 ] #Return
  # Patch Menu/Ending level
    - [ be32, 0x00a51b40, 0x808909a0 ] #r4 unique value e190
    - [ be32, 0x00a51b44, 0x3ca03f8d ] #r5 = 3f8d0000
    - [ be32, 0x00a51b48, 0x38a52f6f ] #r5 = 3f8d2f6f
    - [ be32, 0x00a51b4c, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b50, 0x419e0010 ] #Patch menu
    - [ be32, 0x00a51b54, 0x80a909a4 ] #r5 unique value e194
    - [ be32, 0x00a51b58, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a51b5c, 0x4c9e0020 ] #Return (bnelr)
    - [ be32, 0x00a51b60, 0xc19e03fc ] #f12 = 0.5
    - [ be32, 0x00a51b64, 0x48000008 ] #go to Patch
  # Patch function
    - [ be32, 0x00a51b68, 0xedad0332 ] #f13=f13*f12
    - [ be32, 0x00a51b6c, 0xec000332 ] #f0=f0*f12
    - [ be32, 0x00a51b70, 0x4e800020 ] #Return

  # Special thanks to HdHereidme for debug menu, Smasher248 for inital memory addresses and Skye Mods for mesh trimming 
  # address. Without them this patch wouldn't have been possible.
  # This patch cycles through various post-processing modes. Values accepted are:
  #    0 = None
  #    1 = Bloom
  #    2 = Depth of Field
  #    3 = Tonemapping // reversed from orbis version confirmed this exists
  #    4 = Bloom & Depth of Field
  #    5 = Bloom & Depth of Field & Tonemapping (Default)
  
  tlou100_post: &tlou100_post
  #  - [ be32, 0x00a7991c, 0x38000003 ] # Post-processing modes                    (mem address: 0x14C79C7)
    - [ be32, 0x0093e300, 0xc0090990 ] # load e190 with 0
    - [ be32, 0x0093e30c, 0xc1890990 ] # load e198 with 0f
    - [ be32, 0x0093e394, 0xc0090990 ] # load e1a0 with 0f
  
  tlou100_mesh: &tlou100_mesh
    - [ be16, 0x00923a94, 0x9809 ]     # Disable Mesh trimming       (r3  => r0 ) (mem address: 0x142C584)
  
  # Many settings below are enabled/disabled in sub_A7A340. In this subroutine,
  #    r6  = 2
  #    r27 = 1
  #    r28 = 0
  # and these are stored into some memory blob to represent settings. Most values can be switched by just changing the
  # source register from one to the other, though some are words and some are bytes, so be careful.
  
  tlou100_ssao: &tlou100_ssao
    - [ be16, 0x00a7a470, 0x9b83 ]     # Disable SSAO                (r27 => r28) (mem address: 0x14C7C0F)
  
  tlou100_mb: &tlou100_mb
    - [ be16, 0x00a7a4d4, 0x9b83 ]     # Disable motion blur         (r27 => r28) (mem address: 0x14C7C2E)
  
  tlou100_dof: &tlou100_dof
    - [ be16, 0x00a7a4e0, 0x9b83 ]     # Disable depth of field      (r27 => r28) (mem address: 0x14C7C31)
  
  tlou100_dbv: &tlou100_dbv
    - [ be16, 0x00a7a760, 0x9b63 ]     # Depth buffer viewport       (r28 => r27) (mem address: 0x14C7E9D)
  
  tlou100_dbf: &tlou100_dbf
    - [ be16, 0x00a7a7ac, 0x9b83 ]     # Depth border fix            (r27 => r28) (mem address: 0x14C7EC1)
  
  tlou100_db: &tlou100_db
    - [ be16, 0x00a7a7b8, 0x90e3 ]     # Depth buffer                (r27 => r6 ) (mem address: 0x14C7F93)
    - [ be16, 0x00a516ec, 0x4800 ]     # Cabin resort crash fix
  
  tlou100_speed: &tlou100_speed
    - [ be16, 0x00a7a6b8, 0x9383 ]     # Speedboost                               (mem address: 0x14c7e5f)

  tlou111_mlaa: &tlou111_mlaa
  #  - [ be16, 0x00aaa040, 0x9b83 ]     # store 0
    - [ be16, 0x00a80350, 0x4800 ]     # unconditonally branch to disable MLAA
    - [ be16, 0x0095b8f8, 0x4800 ]     # Skip memory check function
    - [ be32, 0x00b0e140, 0x38000000 ] # Green rain
    - [ be32, 0x00a5bc38, 0x38000000 ] # Green rain
    - [ be32, 0x00a5bc44, 0x38000000 ] # Green rain
    - [ be32, 0x00a877e0, 0x60000000 ] # skip assert: x + w <= width && y + h <= height
    - [ be32, 0x0096be58, 0xc1890990 ] # Cargo fix
  # Dof correction patch
    - [ be32, 0x0096b8b0, 0x48114aa5 ] #Call1
    - [ be32, 0x0096b8d4, 0x48114a91 ] #Call2
    - [ be32, 0x00a3a584, 0x48045df1 ] #Call3
  # Func 1 Overall DoF 1
    - [ be32, 0x00a80354, 0xc09c0aa4 ] #Load f4 e294
    - [ be32, 0x00a80358, 0xc27e0424 ] #f19 = 0.3
    - [ be32, 0x00a8035c, 0xec8404f2 ] #f4*f19
    - [ be32, 0x00a80360, 0x4e800020 ] #Return
  # Func 2 Cutscene Dof
    - [ be32, 0x00a80364, 0xc01c0aac ] #Load f0 e29c
    - [ be32, 0x00a80368, 0xc17e1b64 ] #f11 = 0.75
    - [ be32, 0x00a8036c, 0xec0002f2 ] #f0*f11
    - [ be32, 0x00a80370, 0x4e800020 ] #Return
  # Func 3 Overall Dof 2
    - [ be32, 0x00a80374, 0x3d200151 ] #r9 = 1510000
    - [ be32, 0x00a80378, 0x3929e29c ] #r9 = 150e29c
    - [ be32, 0x00a8037c, 0x80080014 ] #Load pattern to r0
    - [ be32, 0x00a80380, 0x7f804800 ] #Compare r0 to r9
    - [ be32, 0x00a80384, 0x409e0010 ]
    - [ be32, 0x00a80388, 0xc01e137c ] #f0 = 0.3
    - [ be32, 0x00a8038c, 0xd008000c ] #Store f0
    - [ be32, 0x00a80390, 0x48000008 ]
    - [ be32, 0x00a80394, 0xd3e8000c ] #Default store
    - [ be32, 0x00a80398, 0x4e800020 ] #Return
  # Bloom correction patch
    - [ be32, 0x0096be54, 0x48114549 ] #Call
    - [ be32, 0x00a8039c, 0xc1a909a4 ] #Load f13
    - [ be32, 0x00a803a0, 0xc19e059c ] #f12 = 0.69
    - [ be32, 0x00a803a4, 0x808909a8 ] #r4 unique value e198
    - [ be32, 0x00a803a8, 0x2f840000 ] #if r4 <= 0
    - [ be32, 0x00a803ac, 0x409d0058 ] #Skip to Main menu
  # Bills town Bloater and escape(2)
    - [ be32, 0x00a803b0, 0x3ca03ba4 ] #r5 = 3ba40000
    - [ be32, 0x00a803b4, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a803b8, 0x419c0074 ] #go to Patch if less
  # Bills town Cemetery(1)
    - [ be32, 0x00a803bc, 0x808909a4 ] #r4 unique value e194
    - [ be32, 0x00a803c0, 0x3ca03e80 ] #r5 = 3e800000
    - [ be32, 0x00a803c4, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a803c8, 0x419c0068 ] #go to Patch if less
  # Bills town main street(2)
    - [ be32, 0x00a803cc, 0x3ca04026 ] #r5 = 40260000
    - [ be32, 0x00a803d0, 0x38a56666 ] #r5 = 40266666
    - [ be32, 0x00a803d4, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a803d8, 0x419e0054 ] #go to Patch if ==
  # Bills town Trap(2)
    - [ be32, 0x00a803dc, 0x3ca0403d ] #r5 = 403d0000
    - [ be32, 0x00a803e0, 0x38a5e4e2 ] #r5 = 403ce4e2
    - [ be32, 0x00a803e4, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a803e8, 0x419e0044 ] #go to Patch if ==
  # Bills Town intro check(2)
    - [ be32, 0x00a803ec, 0x808909bc ] #r4 unique value e1ac
    - [ be32, 0x00a803f0, 0x3ca04007 ] #r5 = 40070000
    - [ be32, 0x00a803f4, 0x38a50a3d ] #r5 = 40070a3d
    - [ be32, 0x00a803f8, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a803fc, 0x419e0030 ] #go to Patch if ==
    - [ be32, 0x00a80400, 0x4e800020 ] #Return
  # Patch Menu/Ending level
    - [ be32, 0x00a80404, 0x808909a0 ] #r4 unique value e190
    - [ be32, 0x00a80408, 0x3ca03f8d ] #r5 = 3f8d0000
    - [ be32, 0x00a8040c, 0x38a52f6f ] #r5 = 3f8d2f6f
    - [ be32, 0x00a80410, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a80414, 0x419e0010 ] #Patch menu
    - [ be32, 0x00a80418, 0x80a909a4 ] #r5 unique value e194
    - [ be32, 0x00a8041c, 0x7f842800 ] #compare r4 to r5
    - [ be32, 0x00a80420, 0x4c9e0020 ] #Return (bnelr)
    - [ be32, 0x00a80424, 0xc19e034c ] #f12 = 0.5
    - [ be32, 0x00a80428, 0x48000008 ] #go to Patch
  # Patch function
    - [ be32, 0x00a8042c, 0xedad0332 ] #f13=f13*f12
    - [ be32, 0x00a80430, 0xec000332 ] #f0=f0*f12
    - [ be32, 0x00a80434, 0x4e800020 ] #Return
  
  # Special thanks to HdHereidme for debug menu, Smasher248 for inital memory addresses and Skye Mods for mesh trimming 
  # address. Without them this patch wouldn't have been possible.
  # This patch cycles through various post-processing modes. Values accepted are:
  #    0 = None
  #    1 = Bloom
  #    2 = Depth of Field
  #    3 = Tonemapping // reversed from orbis version confirmed this exists
  #    4 = Bloom & Depth of Field
  #    5 = Bloom & Depth of Field & Tonemapping (Default)
  
  tlou111_post: &tlou111_post
  #  - [ be32, 0x00aa944c, 0x38000003 ] # Post-processing modes                    (mem address: 0x1571867)
    - [ be32, 0x0096be4c, 0xc0090990 ] # load e190 with 0
    - [ be32, 0x0096BE58, 0xc1890990 ] # load e198 with 0
    - [ be32, 0x0096BEE0, 0xc0090990 ] # load e1a0 with 0
  
  tlou111_mesh: &tlou111_mesh
    - [ be16, 0x009515d8, 0x9809 ]     # Disable Mesh trimming       (r3  => r0 ) (mem address: 0x14A9604)
  
  # Many settings below are enabled/disabled in sub_AA9E6C. In this subroutine,
  #    r6  = 2
  #    r27 = 1
  #    r28 = 0
  # and these are stored into some memory blob to represent settings. Most values can be switched by just changing the
  # source register from one to the other, though some are words and some are bytes, so be careful.
  
  tlou111_ssao: &tlou111_ssao
    - [ be16, 0x00aa9f9c, 0x9b83 ] #Disable SSAO

  tlou111_mb: &tlou111_mb
    - [ be32, 0x0096aa94, 0x480000e0 ] # Disable motion blur
  
  tlou111_dof: &tlou111_dof
    - [ be16, 0x00aaa00c, 0x9b83 ]     # Disable depth of field      (r27 => r28) (mem address: 0x1571AD1)
  
  tlou111_dbv: &tlou111_dbv
    - [ be16, 0x00aaa290, 0x9b63 ]     # Depth buffer viewport       (r28 => r27) (mem address: 0x1571D41)
  
  tlou111_dbf: &tlou111_dbf
    - [ be16, 0x00aaa2d8, 0x9b83 ]     # Depth border fix            (r27 => r28) (mem address: 0x1571D65)
  
  tlou111_db: &tlou111_db
    - [ be16, 0x00aaa2e4, 0x90c3 ]     # Depth buffer                (r27 => r6 ) (mem address: 0x1571E37)
    - [ be16, 0x00a7ffac, 0x4800 ]     # Cabin resort crash fix
  
  tlou111_speed: &tlou111_speed
    - [ be16, 0x00aaa1e8, 0x9383 ]     # Speedboost                               (mem address: 0x1571d03)

  tlou111_devplus: &tlou111_devplus
    - [ be32, 0x012850e8, 0x00e8c3e7 ] # str ptr
    - [ be32, 0x0128515c, 0x00e8c57f ] # str ptr
    - [ be16, 0x00e8c318, 0x202b ] # _+
    - [ byte, 0x00e8c3e7, 42 ] # * in int
    - [ byte, 0x00e8c57f, 42 ] # * in int
  # useless memory option replace with rendering
  # point addr from [] to [], this offsets 002dcc40 store 00 and onwards.
  # i.e [] now becomes [] and so on
    - [ be32, 0x0129732c, 0x015715f0 ] # pointer
    - [ be32, 0x002dcc40, 0x38bc00be ] # disable vis
    - [ be32, 0x012973fc, 0x00ee0490 ]
    - [ be16, 0x00ee0498, 0x5669 ] # capitalise visibility for
    - [ be32, 0x002dcc74, 0x38bc06d9 ] # wireframe
    - [ be32, 0x01297400, 0x00ee01d8 ]
    - [ be32, 0x002dcca8, 0x38bc06da ] # see through
    - [ be32, 0x01297404, 0x00ee01f0 ]
    - [ be32, 0x002dccdc, 0x38bc06db ] # point mode
    - [ be32, 0x01297408, 0x00ee0210 ]
    - [ be32, 0x002dcd10, 0x38bc04f4 ] # post on spu
    - [ be32, 0x0129740c, 0x00f05a48 ]
    - [ be32, 0x002dcd44, 0x38bc04de ] # motion blur
    - [ be32, 0x01297410, 0x00f05618 ]
    - [ be32, 0x002dcd78, 0x38bc04e1 ] # dof
    - [ be32, 0x01297414, 0x00f05410 ]
    - [ be32, 0x012974e4, 0x0135bfe8 ] # ptr
    - [ be64, 0x00ea8ba0, 0x456e61626c652050 ] # rename string
    - [ be32, 0x00ea8ba8, 0x61757365 ]
    - [ byte, 0x00ea8bac, 0 ] # term str
    - [ be32, 0x01297418, 0x00e8d580 ]
    - [ byte, 0x00eeeef8, 0 ]
    - [ byte, 0x00eeef10, 0 ]
    - [ byte, 0x00eeef28, 0 ]
    - [ byte, 0x00eeef50, 0 ]
    - [ be32, 0x012bf4a4, 0x00e8d520 ]
    - [ be32, 0x012bf4a8, 0x00e8d550 ]
  # str, perhaps use utf8 here?
    - [ be64, 0x00e8d520, 0x437265646974733a ]
    - [ be64, 0x00e8d550, 0x4d61646520627920 ]
    - [ be64, 0x00e8d558, 0x696c6c7573696f6e ]
    - [ be64, 0x00e8d560, 0x2c20467265616b6f ]
    - [ be64, 0x00e8d568, 0x20616e6420536d61 ]
    - [ be64, 0x00e8d570, 0x7368657232343800 ]
  # vram stats
    - [ be64, 0x00e8d580, 0x53686f7720437265 ]
    - [ be32, 0x00e8d588, 0x64697473 ]
  # console exclusive code, we don't need this due to post on spu off
    - [ be32, 0x0129741c, 0x0157186e ] # ptr
  #  - [ be32, 0x00aa9444, 0x38600001 ] # remove branch and set r3 to 1
  #  - [ be16, 0x00aa9464, 0x9869 ]     # load from r3 

  tlou111_cparts: &tlou111_cparts
    - [ be64, 0x0e8d600, 0x496E66696E697465 ] # str Infinite Everything (Ammo, Items, Skills, Parts)
    - [ be64, 0x0e8d608, 0x2045766572797468 ]
    - [ be64, 0x0e8d610, 0x696E672028416D6D ]
    - [ be64, 0x0e8d618, 0x6F2C204974656D73 ]
    - [ be64, 0x0e8d620, 0x2C20536B696C6C73 ]
    - [ be64, 0x0e8d628, 0x2C20506172747329 ]
    - [ be32, 0x01286780, 0x00e8d600 ] # point addr to e8e490
    - [ be32, 0x01286784, 0x014f3412 ] # point addr to 014f3412
# add
    - [ be32, 0x003495c, 0x48e58c35 ] # bl 00e8d590
    - [ be32, 0x0e8d590, 0x3fa0014f ] # r29 14f0000
    - [ be32, 0x0e8d594, 0x881d3412 ] # lbz r0, 0x3412, (r29)
    - [ be32, 0x0e8d598, 0x2f800000 ] # cmp r0, 0x0
    - [ be32, 0x0e8d59c, 0x409e0008 ] # bne 0xe8d5a4
    - [ be32, 0x0e8d5a0, 0x7f7fd22e ] # og lhzx
    - [ be32, 0x0e8d5a4, 0x4e800020 ] # ret
    - [ be32, 0x0034968, 0x2f9d096f ] # r29 to 512
    - [ be32, 0x0034970, 0x3ba0096f ] # li r29 512
# sub
    - [ be32, 0x00336c0, 0x7e2802a6 ] # mflr r17,LR
    - [ be32, 0x00336c4, 0x48e59f01 ] # call 3
    - [ be32, 0x00336c8, 0x7e2803a6 ] # mtlr LR,r17
    - [ be32, 0x00336cc, 0x3a200000 ] # r17 = 0
    - [ be32, 0x0e8d5c4, 0x7c0b4a2e ] # og lhzx
    - [ be32, 0x0e8d5c8, 0x5408043e ] # og rlwinm
    - [ be32, 0x0e8d5cc, 0x3e00014f ] # r16 = 14f0000
    - [ be32, 0x0e8d5d0, 0x89f03412 ] # lbz r15,0x3412,r16
    - [ be32, 0x0e8d5d4, 0x2f8f0000 ] # r15 vs 0
    - [ be32, 0x0e8d5d8, 0x409e0008 ] # bne
    - [ be32, 0x0e8d5dc, 0x7c050050 ] # og sub
    - [ be32, 0x0e8d5e0, 0x7f882800 ] # og cmpw
    - [ be32, 0x0e8d5e4, 0x39e00000 ] # r15 = 0
    - [ be32, 0x0e8d5e8, 0x3a000000 ] # r16 = 0
    - [ be32, 0x0e8d5ec, 0x4e800020 ] # ret

  gpulightingnotes: &gpulightingnotes "Uses GPU (RSX) path for lighting effects instead of SPU.\nFixes rendering of lightning effects that are being rendered broken via SPU path and greatly improves performance over it.\nThis path is incomplete and results in some missing effects such as Volumetric lighting."

  debugmenunotes: &debugmenunotes "L3 + Start = Dev Menu\nL3 + Select = Quick Menu\nL3 + Triangle = FPS Text\nL3 + R3 = Debug Fly"
  
  fpsnotes: &fpsnotes "Unlocks FPS without any special settings.\nGame may crash above 500FPS in loading screen."
  
  tloumlaanotes: &tloumlaanotes "Last modified: Dec 28 2020\n\nAllows for the use of Resolution Scaling and improves performance.\nVersion 2.0 - Fixes crashes introduced in the original patch.\nVersion 3.0 - Fixes the Green Rain in more areas.\nVersion 4.0 - Fixes high levels of Bloom in some areas.\n\nKnown issues: Listen mode does not work"
  
  tlou100_title: &tlou100_title
    "The Last of Us":
      BCES01584: [ 01.00 ]
      BCES01585: [ 01.00 ]
      BCUS98174: [ 01.00 ]
      BCJS37010: [ 01.00 ]
      BCAS20270: [ 01.00 ]
      NPEA00435: [ 01.00 ]
      NPUA80960: [ 01.00 ]
  
  tlou111_title: &tlou111_title
    "The Last of Us":
      BCES01584: [ 01.11 ]
      BCES01585: [ 01.11 ]
      BCUS98174: [ 01.11 ]
      BCJS37010: [ 01.11 ]
      BCAS20270: [ 01.11 ]
      NPEA00435: [ 01.11 ]
      NPUA80960: [ 01.11 ]

PPU-9df60dc1aa5005a0c80e9066e4951dc0471553e6:
  Disable in-built MLAA:
    Games: *tlou100_title
    Author: Whatcookie
    Notes: *tloumlaanotes
    Patch Version: 4.0
    Patch:
      - [ load, *tlou100_mlaa ]
  Disable Bloom:
    Games: *tlou100_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou100_post ]
  Disable Mesh trimming:
    Games: *tlou100_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou100_mesh ]
  Disable SSAO:
    Games: *tlou100_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou100_ssao ]
  Disable Motion Blur:
    Games: *tlou100_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou100_mb ]
  Disable Depth of Field:
    Games: *tlou100_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou100_dof ]
  Depth buffer viewport:
    Games: *tlou100_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou100_dbv ]
  Depth border fix:
    Games: *tlou100_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes:
    Patch Version: 1.0
    Patch:
      - [ load, *tlou100_dbf ]
  Enable GPU Lighting:
    Games: *tlou100_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: *gpulightingnotes
    Patch Version: 1.0
    Patch:
      - [ load, *tlou100_db ]
  Speedboost:
    Games: *tlou100_title
    Author: ZEROx, illusion
    Notes: Improves performance in certain areas. May cause issues.
    Patch Version: 1.0
    Patch:
      - [ load, *tlou100_speed ]
  Debug Menu:
    Games: *tlou100_title
    Author: dron_3, HdHereidme, illusion
    Notes: *debugmenunotes
    Patch Version: 1.01
    Patch:
      - [ be16, 0x0003b2a0, 0x419e ]
      - [ byte, 0x0003b2c3, 1 ]
      - [ be16, 0x009acbde, 0x2db6 ]
      - [ be16, 0x009acbe6, 0x2db6 ]
  Infected Severed Head Crash Bug Fix:
    Games: *tlou100_title
    Author: illusion, ZEROx
    Notes: "Last modified: 13 Feb 2020.\nFixed a bug where throwing an object at a Infected Severed Head causes a game crash."
    Patch Version: 1.0
    Patch:
      - [ be32, 0x006b06a8, 0x483a4b95 ] #Branch
      - [ be32, 0x00a5523c, 0x3d400001 ] #r10 = 0x10000
      - [ be32, 0x00a55240, 0x7f9d5000 ] #r29 vs r10
      - [ be32, 0x00a55244, 0x409d0008 ] #Skip if r29<=r10 // If r29 less or equal to r10 then do nothing
      - [ be32, 0x00a55248, 0x813d0040 ] #lwz r9,0x40(r29) // load as normal
      - [ be32, 0x00a5524c, 0x4e800020 ] #Return
  21:9 Aspect Ratio:
    Games: *tlou100_title
    Author: illusion
    Notes: HUD Elements will be stretched. Users need to enable the "Stretch to Display Area" option in RPCS3 for this patch to work.
    Patch Version: 1.0
    Patch:
      - [ be32, 0x000325B8, 0x60000000 ] # nop write for ar float
      - [ be32, 0x14AEBD0,  0x3ED70A3D ] # ar float
      - [ be32, 0x128F2F4,  0x3F400000 ]
  Unlock FPS:
    Games: *tlou100_title
    Author: illusion
    Notes: *fpsnotes
    Patch Version: 1.0
    Patch:
      - [ be32, 0x00036AB8, 0x38A00000 ]
  Infinite flashlight battery:
    Games: *tlou100_title
    Author: bungholio, ZEROx
    Notes: "This patch is usefull for people who play with something other than DualShock3/4.\nNormaly flashlight battery drains after ~3600 frames, patch disables battery drain, Infinite flashlight battery no controller shake."
    Patch Version: 1.0
    Patch:
      - [ be32, 0x0068eb38, 0x60000000 ]
  Disable Camera Shake:
    Games: *tlou100_title
    Author: illusion
    Notes: "Last modified: 1 Mar 2021\n\nDisables Camera Shake during Gameplay.\nIn-Game-Cinematics remain is unaffected."
    Patch Version: 1.0
    Patch:
      - [ be16, 0x00966784, 0x997d ]

PPU-120fb71f7352d62521c639b0e99f960018c10a56:
  Disable in-built MLAA:
    Games: *tlou111_title
    Author: Whatcookie, illusion, ZEROx
    Notes: *tloumlaanotes
    Patch Version: 4.0
    Patch:
      - [ load, *tlou111_mlaa ]
  Disable Bloom:
    Games: *tlou111_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou111_post ]
  Disable Mesh trimming:
    Games: *tlou111_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou111_mesh ]
  Disable SSAO:
    Games: *tlou111_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.1
    Patch:
      - [ load, *tlou111_ssao ]
  Disable Motion Blur:
    Games: *tlou111_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou111_mb ]
  Disable Depth of Field:
    Games: *tlou111_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou111_dof ]
  Depth buffer viewport:
    Games: *tlou111_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou111_dbv ]
  Depth border fix:
    Games: *tlou111_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ load, *tlou111_dbf ]
  Enable GPU Lighting:
    Games: *tlou111_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: *gpulightingnotes
    Patch Version: 1.0
    Patch:
      - [ load, *tlou111_db ]
  Speedboost:
    Games: *tlou111_title
    Author: ZEROx, illusion
    Notes: Improves performance in certain areas. May cause issues.
    Patch Version: 1.0
    Patch:
      - [ load, *tlou111_speed ]
  Debug Menu:
    Games: *tlou111_title
    Author: dron_3, HdHereidme, illusion, ZEROx
    Notes: *debugmenunotes
    Patch Version: 1.01
    Patch:
      - [ be16, 0x0003bf9c, 0x419e ]
      - [ byte, 0x0003bfbf, 1 ]
      - [ be16, 0x009da99a, 0x2db6 ]
      - [ be16, 0x009da9a2, 0x2db6 ]
      - [ be32, 0x00a1a200, 0x60000000 ] #Remove "!" model render
  Infinite flashlight battery:
    Games: *tlou111_title
    Author: bungholio, ZEROx
    Notes: "This patch is usefull for people who play with something other than DualShock3/4.\nNormaly flashlight battery drains after ~3600 frames, patch disables battery drain, Infinite flashlight battery no controller shake."
    Patch Version: 1.0
    Patch:
      - [ be32, 0x006acbc8, 0x60000000 ]
  Infected Severed Head Crash Bug Fix:
    Games: *tlou111_title
    Author: illusion, ZEROx
    Notes: "Last modified: 13 Feb 2020.\nFixed a bug where throwing an object at a Infected Severed Head causes a game crash."
    Patch Version: 1.0
    Patch:
      - [ be32, 0x006d9368, 0x483aa7ed ] #Call
      - [ be32, 0x00a83b54, 0x3d400001 ] #r10 = 0x10000
      - [ be32, 0x00a83b58, 0x7f9d5000 ] #r29 vs r10
      - [ be32, 0x00a83b5c, 0x409d0008 ] #Skip if r29<=r10 // If r29 less or equal to r10 then do nothing
      - [ be32, 0x00a83b60, 0x813d0040 ] #lwz r9,0x40(r29) // load as normal
      - [ be32, 0x00a83b64, 0x4e800020 ] #Return
  21:9 Aspect Ratio:
    Games: *tlou111_title
    Author: illusion
    Notes: HUD Elements will be stretched. Users need to enable the "Stretch to Display Area" option in RPCS3 for this patch to work.
    Patch Version: 1.0
    Patch:
      - [ be32, 0x0003556C, 0x60000000 ] # nop write for ar float
      - [ be32, 0x1558A50,  0x3ED70A3D ] # ar float
      - [ be32, 0x12C1964,  0x3F400000 ]
  Unlock FPS:
    Games: *tlou111_title
    Author: illusion
    Notes: *fpsnotes
    Patch Version: 1.0
    Patch:
      - [ be32, 0x00039D08, 0x38A00000 ]
  Dev Menu Plus:
    Games: *tlou111_title
    Author: illusion, Freako, Smasher248
    Notes: "Last modified: 10 December 2020\n\nReplaces some useless options in Memory Tab with rendering features.\n\nWireframe modes currently does not work on the emulator."
    Patch Version: 1.0
    Patch:
      - [ load, *tlou111_devplus ]
  Disable Pause in Dev Menu:
    Games: *tlou111_title
    Author: illusion, Freako
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ be16, 0x009d2114, 0x9803 ]
  NPC Model Scale in Clock Menu:
    Games: *tlou111_title
    Author: illusion
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ be32, 0x012850f8, 0x0148AE18 ] # ptr
      - [ be16, 0x0135dcac, 0x3f80 ] # avoid assertion
      - [ be64, 0x00e8c418, 0x4E5043204D6F6465 ] # string replace
      - [ be32, 0x00e8c420, 0x6C205363 ]
      - [ be16, 0x00e8c424, 0x616C ]
      - [ be64, 0x00e8c426, 0x653A000000000000 ] # 1 byte overlap
  Disable Camera Shake:
    Games: *tlou111_title
    Author: illusion
    Notes: "Last modified: 1 Mar 2021\n\nDisables Camera Shake during Gameplay.\nIn-Game-Cinematics remain unaffected."
    Patch Version: 1.0
    Patch:
      - [ be16, 0x00994234, 0x997d ]
  Infinite Everything (Parts, Pills, Crafting items):
    Games: *tlou111_title
    Author: Medo, Randy97Killa, illusion
    Notes: "Last modified: 11 Mar 2021\n\nActivate Cheat in Gameplay... Pickup any ammount of parts or items for high value."
    Patch Version: 1.0
    Patch:
      - [ load, *tlou111_cparts ]
  Tool Always Level 5:
    Games: *tlou111_title
    Author: illusion, ZEROx
    Notes: 
    Patch Version: 1.0
    Patch:
      - [ be32, 0x00082960, 0x38000005 ] # tools level load 
      - [ be32, 0x00082788, 0x60000000 ] # tools gain pickup, result will be