The Last of Us: Difference between revisions

From RPCS3 Wiki
(→‎Special Notes: refractor and add new bloom code)
(→‎Special Notes: rewrite ssao patch)
Line 158: Line 158:
<!-- 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==
Line 359: Line 360:
    
    
   tlou111_ssao: &tlou111_ssao
   tlou111_ssao: &tlou111_ssao
     - [ be16, 0x00aa9f9c, 0x9b83 ]    # Disable SSAO               (r27 => r28) (mem address: 0x1571AAF)
  ### Only disable during Blizzard
    - [ be32, 0x00a7ffac, 0x4800054d ] #Function Call
    - [ be32, 0x00a7ffb0, 0x60000000 ]
  ### 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, 0x98891aaf ] #Enable SSAO
    - [ be32, 0x00a80520, 0x48000014 ] #Go to return
    - [ be32, 0x00a80524, 0x9a091aaf ] #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
Line 375: Line 396:
   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
Line 389: Line 410:
   - [ byte, 0x00e8c3e7, 42 ]
   - [ byte, 0x00e8c3e7, 42 ]
   - [ byte, 0x00e8c57f, 42 ]
   - [ byte, 0x00e8c57f, 42 ]
  ### ptr
   - [ be32, 0x0129732c, 0x015715f0 ]
   - [ be32, 0x0129732c, 0x015715f0 ]
   - [ be32, 0x002dcc40, 0x38bc00be ]
   - [ be32, 0x002dcc40, 0x38bc00be ]
Line 417: Line 439:
   - [ be32, 0x012bf4a4, 0x00e8d520 ]
   - [ be32, 0x012bf4a4, 0x00e8d520 ]
   - [ be32, 0x012bf4a8, 0x00e8d550 ]
   - [ be32, 0x012bf4a8, 0x00e8d550 ]
  ### str
   - [ be64, 0x00e8d520, 0x437265646974733a ]
   - [ be64, 0x00e8d520, 0x437265646974733a ]
   - [ be64, 0x00e8d550, 0x4d61646520627920 ]
   - [ be64, 0x00e8d550, 0x4d61646520627920 ]
Line 425: Line 448:
   - [ be64, 0x00e8d580, 0x53686f7720437265 ]
   - [ be64, 0x00e8d580, 0x53686f7720437265 ]
   - [ be32, 0x00e8d588, 0x64697473 ]
   - [ be32, 0x00e8d588, 0x64697473 ]
# console exclusive code, we don't need this due to post on spu off
  ### console exclusive code, we don't need this due to post on spu off
  #- [ be32, 0x00aa9444, 0x38600001 ]
  #- [ be32, 0x00aa9444, 0x38600001 ]
  #- [ be16, 0x00aa9464, 0x9869 ]
  #- [ be16, 0x00aa9464, 0x9869 ]
Line 635: Line 658:
     Author: JohnHolmesII, ZEROx, illusion, Juhn
     Author: JohnHolmesII, ZEROx, illusion, Juhn
     Notes:  
     Notes:  
     Patch Version: 1.0
     Patch Version: 1.1
     Patch:
     Patch:
       - [ load, *tlou111_ssao ]
       - [ load, *tlou111_ssao ]

Revision as of 15:36, 2 January 2021

The Last of Us
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), NPEA00435, BCAS20270 (IRD), BCJS37010 (IRD), NPJA00096, NPUA80960
Left Behind
NPEA00521, NPJA00129, NPUA81175, NPHA80279
Demo
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

Options that deviate from RPCS3's default settings and provide the best experience with this title are listed below.

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 flare wil 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

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.

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
  # 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)
  #    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)
  
  tlou100_spulighting: &tlou100_spulighting
    - [ be16, 0x00afeb24, 0x4800 ]
  
  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
    - [ be32, 0x0096bee0, 0xc0090990 ] # Reticle bloom
    ### Beginning of new blooom code
    - [ be32, 0x00a39f60, 0x60000000 ]
    - [ be32, 0x00a3a584, 0x60000000 ]
    - [ be32, 0x00a80348, 0x8809fe1f ]
    - [ be32, 0x00a8034c, 0x2f800003 ]
    - [ be32, 0x00a80354, 0x3ca00151 ]
    - [ be32, 0x00a80358, 0x38a5e190 ]
   ### Memory search
    - [ be32, 0x00a8035c, 0x3e314165 ]
    - [ be32, 0x00a80360, 0x3a31d300 ]
    - [ be32, 0x00a80364, 0x81110014 ]
    - [ be32, 0x00a80368, 0x7f854000 ]
    - [ be32, 0x00a8036c, 0x409e0008 ]
    - [ be32, 0x00a80370, 0x48000018 ]
    - [ be32, 0x00a80374, 0x2f9001a0 ]
    - [ be32, 0x00a80378, 0x3a310040 ]
    - [ be32, 0x00a8037c, 0x3a100001 ]
    - [ be32, 0x00a80380, 0x419cffe4 ]
    - [ be32, 0x00a80384, 0x480000e8 ] #Go to register clear
   ### Cargo chapter check (Negative float)
    - [ be32, 0x00a80388, 0x801100a0 ]
    - [ be32, 0x00a8038c, 0x419e00a0 ]
    - [ be32, 0x00a80390, 0x419c00c4 ]
   ### Bills town Cemetery
    - [ be32, 0x00a80394, 0x3ca03c44 ]
    - [ be32, 0x00a80398, 0x38a5f3e0 ]
    - [ be32, 0x00a8039c, 0x7f802800 ]
    - [ be32, 0x00a803a0, 0x419e006c ]
   ### Bills town Bloater
    - [ be32, 0x00a803a4, 0x3ca03ba0 ]
    - [ be32, 0x00a803a8, 0x38a5e868 ]
    - [ be32, 0x00a803ac, 0x7f802800 ]
    - [ be32, 0x00a803b0, 0x419e0050 ]
   ### Bills Town intro check
    - [ be32, 0x00a803b4, 0x80110020 ]
    - [ be32, 0x00a803b8, 0x3ca04010 ]
    - [ be32, 0x00a803bc, 0x38a59e30 ]
    - [ be32, 0x00a803c0, 0x7f802800 ]
    - [ be32, 0x00a803c4, 0x419e003c ]
   ### Bills Town offroad check
    - [ be32, 0x00a803c8, 0x3ca03fba ]
    - [ be32, 0x00a803cc, 0x38a596a7 ]
    - [ be32, 0x00a803d0, 0x7f802800 ]
    - [ be32, 0x00a803d4, 0x419e0038 ]
   ### Bills town main street
    - [ be32, 0x00a803d8, 0x80110060 ]
    - [ be32, 0x00a803dc, 0x3ca04026 ]
    - [ be32, 0x00a803e0, 0x38a56666 ]
    - [ be32, 0x00a803e4, 0x7f802800 ]
    - [ be32, 0x00a803e8, 0x419e0018 ]
   ### Bills town Trap
    - [ be32, 0x00a803ec, 0x3ca0403d ]
    - [ be32, 0x00a803f0, 0x38a5e4e2 ]
    - [ be32, 0x00a803f4, 0x7f802800 ]
    - [ be32, 0x00a803f8, 0x419e0008 ]
    - [ be32, 0x00a803fc, 0x4800001c ]
   ### Coefs - Bills town both - 0.68
    - [ be32, 0x00a80400, 0x38a03f30 ]
    - [ be32, 0x00a80404, 0x39003f30 ]
    - [ be32, 0x00a80408, 0x48000018 ]
   ### Coefs - Bills town 1-st -0.68 2-nd 1.0
    - [ be32, 0x00a8040c, 0x38a03f30 ]
    - [ be32, 0x00a80410, 0x39003f80 ]
    - [ be32, 0x00a80414, 0x4800000c ] #go to patching
   ### Coefs - Default
    - [ be32, 0x00a80418, 0x38a03f80 ]
    - [ be32, 0x00a8041c, 0x39003f80 ]
   ### Patch function
    - [ be32, 0x00a80420, 0xb0b1000c ]
    - [ be32, 0x00a80424, 0xb111004c ]
    - [ be32, 0x00a80428, 0x4800002c ] #Go to DoF
   ### Patch Menu/Ending level
    - [ be32, 0x00a8042c, 0x80110020 ]
    - [ be32, 0x00a80430, 0x3ca03f8d ]
    - [ be32, 0x00a80434, 0x38a52f6f ]
    - [ be32, 0x00a80438, 0x7f802800 ]
    - [ be32, 0x00a8043c, 0x419e0010 ] #Patch menu
    - [ be32, 0x00a80440, 0x80b10060 ]
    - [ be32, 0x00a80444, 0x7f802800 ]
    - [ be32, 0x00a80448, 0x409e000c ]
    - [ be32, 0x00a8044c, 0x39003f00 ]
    - [ be32, 0x00a80450, 0xb111000c ]
   ### Patch DoF if needed
    - [ be32, 0x00a80454, 0x88090089 ]
    - [ be32, 0x00a80458, 0x2f800000 ]
    - [ be32, 0x00a8045c, 0x419e0010 ]
    - [ be32, 0x00a80460, 0x39003ea0 ]
    - [ be32, 0x00a80464, 0xb111100c ]
    - [ be32, 0x00a80468, 0xb111108c ]
   ### Register clearing
    - [ be32, 0x00a8046c, 0x38a00000 ]
    - [ be32, 0x00a80470, 0x3a000000 ]
    - [ be32, 0x00a80474, 0x3a200000 ]
    - [ be32, 0x00a80478, 0x48000990 ] #Quit the function

  # 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)
  #    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
   ### Only disable during Blizzard
    - [ be32, 0x00a7ffac, 0x4800054d ] #Function Call
    - [ be32, 0x00a7ffb0, 0x60000000 ]
   ### 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, 0x98891aaf ] #Enable SSAO
    - [ be32, 0x00a80520, 0x48000014 ] #Go to return
    - [ be32, 0x00a80524, 0x9a091aaf ] #Disable SSAO
    - [ be32, 0x00a80528, 0x3d2000a8 ]
    - [ be32, 0x00a8052c, 0x3929014c ]
    - [ be32, 0x00a80530, 0x7d2803a6 ]
    - [ be32, 0x00a80534, 0x813d000c ]
    - [ be32, 0x00a80538, 0x4e800020 ] #Return
  
  tlou111_mb: &tlou111_mb
    - [ be16, 0x00aaa000, 0x9b83 ]     # Disable motion blur         (r27 => r28) (mem address: 0x1571ACE)
  
  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_spulighting: &tlou111_spulighting
    - [ be16, 0x00b294ec, 0x4800 ]

  tlou111_devplus: &tlou111_devplus
  - [ be32, 0x012850e8, 0x00e8c3e7 ]
  - [ be32, 0x0128515c, 0x00e8c57f ]
  - [ be16, 0x00e8c318, 0x202b ]
  - [ byte, 0x00e8c3e7, 42 ]
  - [ byte, 0x00e8c57f, 42 ]
   ### ptr
  - [ be32, 0x0129732c, 0x015715f0 ]
  - [ be32, 0x002dcc40, 0x38bc00be ]
  - [ be32, 0x012973fc, 0x00ee0490 ]
  - [ be16, 0x00ee0498, 0x5669 ]
  - [ be32, 0x002dcc74, 0x38bc06d9 ]
  - [ be32, 0x01297400, 0x00ee01d8 ]
  - [ be32, 0x002dcca8, 0x38bc06da ]
  - [ be32, 0x01297404, 0x00ee01f0 ]
  - [ be32, 0x002dccdc, 0x38bc06db ]
  - [ be32, 0x01297408, 0x00ee0210 ]
  - [ be32, 0x002dcd10, 0x38bc04f4 ]
  - [ be32, 0x0129740c, 0x00f05a48 ]
  - [ be32, 0x002dcd44, 0x38bc04de ]
  - [ be32, 0x01297410, 0x00f05618 ]
  - [ be32, 0x002dcd78, 0x38bc04e1 ]
  - [ be32, 0x01297414, 0x00f05410 ]
  - [ be32, 0x012974e4, 0x0135bfe8 ]
  - [ be64, 0x00ea8ba0, 0x456e61626c652050 ]
  - [ be32, 0x00ea8ba8, 0x61757365 ]
  - [ byte, 0x00ea8bac, 0 ]
  - [ be32, 0x01297418, 0x00e8d580 ] 
  - [ be32, 0x0129741c, 0x0157186e ] # bug! need fixing.
  - [ byte, 0x00eeeef8, 0]
  - [ byte, 0x00eeef10, 0]
  - [ byte, 0x00eeef28, 0]
  - [ byte, 0x00eeef50, 0]
  - [ be32, 0x012bf4a4, 0x00e8d520 ]
  - [ be32, 0x012bf4a8, 0x00e8d550 ]
   ### str
  - [ be64, 0x00e8d520, 0x437265646974733a ]
  - [ be64, 0x00e8d550, 0x4d61646520627920 ]
  - [ be64, 0x00e8d558, 0x696c6c7573696f6e ]
  - [ be64, 0x00e8d560, 0x2c20467265616b6f ]
  - [ be64, 0x00e8d568, 0x20616e6420536d61 ]
  - [ be64, 0x00e8d570, 0x7368657232343800 ]
  - [ be64, 0x00e8d580, 0x53686f7720437265 ]
  - [ be32, 0x00e8d588, 0x64697473 ]
   ### console exclusive code, we don't need this due to post on spu off
 #- [ be32, 0x00aa9444, 0x38600001 ]
 #- [ be16, 0x00aa9464, 0x9869 ]

  gpulightingnotes: &gpulightingnotes "Uses GPU (RSX) path for lighting effects,\nThis path is incomplete results in some missing effects. (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"

  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"

  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: 3.0
    Patch:
      - [ load, *tlou100_mlaa ]
  Disable Bloom:
    Games: *tlou100_title
    Author: JohnHolmesII, ZEROx, illusion, Juhn
    Notes: 
    Patch Version: 1.0
    Group: Bloom
    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
    Group: Lighting
    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 ]
  Disable SPU lighting:
    Games: *tlou100_title
    Author: ZEROx
    Notes: *spulightingnotes
    Patch Version: 1.0
    Group: Lighting
    Patch:
      - [ load, *tlou100_spulighting ]
  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 ]
  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 ]
  Bloom High:
    Games: *tlou100_title
    Author: ZEROx, illusion
    Notes: 
    Patch Version: 1.0
    Group: Bloom
    Patch:
      - [ be32, 0x0093e300, 0xc01e1b64 ] # load e190 with 0.75f
      - [ be32, 0x0093e30c, 0xc1890990 ] # load e198 with 0f
      - [ be32, 0x0093e394, 0xc0090990 ] # load e1a0 with 0f
  Bloom Medium:
    Games: *tlou100_title
    Author: ZEROx, illusion
    Notes: 
    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
    Group: Bloom
    Patch:
      - [ be32, 0x0093e30c, 0xc1890990 ] # load e198 with 0f
      - [ be32, 0x0093e394, 0xc0090990 ] # load e1a0 with 0f

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
    Group: Bloom
    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
    Group: Lighting
    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 ]
  Disable SPU Lighting:
    Games: *tlou111_title
    Author: ZEROx
    Notes: *spulightingnotes
    Patch Version: 1.0
    Group: Lighting
    Patch:
      - [ load, *tlou111_spulighting ]
  Debug Menu:
    Games: *tlou111_title
    Author: dron_3, HdHereidme, illusion
    Notes: *debugmenunotes
    Patch Version: 1.01
    Patch:
      - [ be16, 0x0003bf9c, 0x419e ]
      - [ byte, 0x0003bfbf, 1 ]
      - [ be16, 0x009da99a, 0x2db6 ]
      - [ be16, 0x009da9a2, 0x2db6 ]
  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 ]
      - [ be16, 0x0135dcac, 0x3f80 ]
      - [ be64, 0x00e8c418, 0x4E5043204D6F6465 ]
      - [ be32, 0x00e8c420, 0x6C205363 ]
      - [ be16, 0x00e8c424, 0x616C ]
      - [ be64, 0x00e8c426, 0x653A000000000000 ]

Canary Patches

Anchors:
  tlou100_spucrashfix: &tlou100_spucrashfix
    - [ be16, 0x1291C0C, 0x3F00 ]      # set float to 0.5 for sun pos(?)
    - [ be32, 0x0093E8B4, 0xC0490E57 ] # Dev Menu -> Rendering -> HDR Tonemapping -> display brightness -1.404
    - [ be32, 0x00335DB8, 0x60000000 ] # nop reset in option menu

  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:
      - [ load, *tlou100_spucrashfix ]

PPU-120fb71f7352d62521c639b0e99f960018c10a56:
  SPU Crash Workaround:
    Games: *tlou111_title
    Author: illusion, ZEROx
    Notes: *spucrashnotes
    Patch Version: 1.0
    Patch:
      - [ load, *tlou111_spucrashfix ]