Emulation is a big part of PC gaming, you can run basically most retro consoles, PS2 and now with progress in emulation, even consoles like PS3 and Wii U. RPCS3 is the current PS3 emulator that has been able to run many PS3 games, the progress is outstanding, and now The Last of Us on PC is somewhat playable through it.
Earlier we talked about God of War Ascension, LittleBigPlanet and more here.
The Last of Us on PC
Quite possibly one of the best games ever, The Last of Us is Naughty Dog’s most successful and critically acclaimed video game, and one of my personal favorites as well, it only takes a few minutes for you to understand what you’re in store for, the game set’s it tone for perfection and it nails every second of it.
RPCS3 has been able to get The Last of Us in-game as of now, you can play it, but it’s not the best experience, but that’s not to say that this isn’t something amazing, for a console that never seemed like it would be emulated, here’s footage of The Last of Us running on PC.
This is seriously some heavy improvement since the game failed to even go in-game sometime back and now we can watch the famous university scene in action, though at reasonably terrible framerate.
Nintendo Switch Emulator RyujiNX
If you aren’t into PS3 games, RyujiNX has been able to run Axiom Verge, Disgaea 5 and other Nintendo Switch games in just 3 months of development, not only that, it has been able to boot triple-A games like Super Mario Odyssey and even Splatoon 2, this is quite the achievement since emulation is usually a very slow progress.
Check out the software running Axiom Verge below
What do you think of the current state of emulation on PC? Let us know in the comments below
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), BCJS37010 (IRD), NPEA00435, NPHA80243, BCAS20270 (IRD), NPJA00096, NPUA80960 Left Behind NPEA00521, NPUA81175, NPJA00129, NPHA80279 Demo NPEA90122, NPUA70257, NPHA80246, NPJA90252 Beta Demo NPUA70270 Bonus Video NPJM00012 Soundtrack NPEA00454, NPUA30134, NPHA80262, NPJM00004, NPEA00517, NPUA30186 Survival Guide NPUO30130 |
Internal resolution | 1280×720 |
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 500 FPS. Alternatively, enable VSync on a 60Hz monitor for the same effect. |
ZCULL accuracy | Relaxed | Improves performance. May break flashlight. |
Resolution scale | 100 | Resolution scaling only works with the MLAA patch. |
Resolution scale threshold | 1 x 1 | When using Resolution scaling above 100%, this must be set to 1 x 1 otherwise some effects like lens flares will be missing. |
Write color buffers | On | Needed if you’re not using the MLAA patch. Fixes green rain and particle issues. Slightly reduces performance. |
Advanced configuration
Setting | Option | Notes |
---|---|---|
Accurate RSX reservation access | On | Prevents random freezing/crashing while playing the game. |
Read color buffers | On | Fixes graphical issues when certain patches are enabled. |
Handle RSX memory tiling | On | Fixes black squares if playing unpatched. |
RSX FIFO accuracy | Atomic | Helps with stability. |
Recommended patches
Game patches are available through the RPCS3 Patch Manager. To enable them, right-click a game in RPCS3 then select «Manage Game Patches». Game Patches are created by RPCS3’s community, and can alter how a game runs. More information can be found here.
Recommendation | Patch name | Notes |
---|---|---|
Highly recommended patch | Bug Fix: Infected Severed Head Crash, Bug Fix: University Nailbomb Softlock Fix, Depth border fix, Disable in-built MLAA, Disable Mesh Trimming, Enable GPU Lighting, Speedboost, WCB/WDB Performance fix | Improves performance, allows Resolution Scaling to work properly and fixes game bugs. |
Recommended patch | Skip Intro, Infinite Flashlight Battery* | Infinite Flashlight Battery is for controllers without motion support. |
Known Issues
Special Notes
The Last of Us can be played from start to finish, but requires a good CPU and using RPCS3’s patches (especially the MLAA patch) for serviceable performance.
On systems running macOS, to get past the PPU Trap on the loading screen, find your configuration file (should typically be in ~/Library/Application Support/rpcs3/custom_configs
), open it in a text editor, then search for the configuration key named «Stub PPU Traps». This value will normally show as 0
. Change it to 1
and save the configuration file. The PPU Traps should no longer appear during the loading screen, and during gameplay.
Netplay testing
For the complete list of games tested with RPCN, please check the RPCN Compatibility List.
Game Version | RPCS3 Version | Connects? | Create/Join lobbies? | Match with others? | Online features working? | Requires custom servers? | Notes |
---|---|---|---|---|---|---|---|
1.11 | N/A | Yes | Yes | No | Partial | Available | r/thelastofusfactions brings back MP alongside features such as the 12 week survival system. Currently in closed beta/must be whitelisted to join it. |
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) tlou100_devmenu: &tlou100_devmenu # debug menu - [ be32, 0x000399c8, 0x39c00001 ] - [ be16, 0x009ace36, 0x2db6 ] - [ be16, 0x009ace3e, 0x2db6 ] # pak arg - [ be32, 0x004ea8ac, 0x4897451c ] - [ be32, 0x00e5edc8, 0x90be82e4 ] - [ be32, 0x00e5edcc, 0x88050000 ] - [ be32, 0x00e5edd0, 0x4b68bae0 ] # menu start - [ be32, 0x004e94f8, 0x39ef0020 ] - [ be32, 0x004e94fc, 0x48c96f34 ] - [ be32, 0x01180430, 0x3c800117 ] - [ be32, 0x01180434, 0x6084fe25 ] - [ be32, 0x01180438, 0x7c847a14 ] - [ be32, 0x0118043c, 0x4b3690c4 ] - [ utf8, 0x0117fe45, "shiv \x00" ] - [ utf8, 0x0117fe65, "pistol-uber-t1 \x00" ] - [ utf8, 0x0117fe85, "NO_ART_GROUP \x00" ] - [ utf8, 0x0117fea5, "nail-bomb \x00" ] - [ utf8, 0x0117fec5, "two-by-four \x00" ] - [ utf8, 0x0117fee5, "nail-bomb \x00" ] - [ utf8, 0x0117ff05, "turret-sniper \x00" ] - [ utf8, 0x0117ff25, "pistol-uber-t1 \x00" ] - [ utf8, 0x0117ff45, "shiv \x00" ] - [ utf8, 0x0117ff65, "radio \x00" ] - [ utf8, 0x0117ff85, "molotov \x00" ] - [ utf8, 0x0117ffa5, "bandage-apply \x00" ] - [ utf8, 0x0117ffc5, "mp-parcel \x00" ] - [ utf8, 0x0117ffe5, "machete-blade \x00" ] - [ utf8, 0x01180005, "bow-dark \x00" ] - [ utf8, 0x01180025, "mini-14-rifle \x00" ] - [ utf8, 0x01180045, "two-by-four \x00" ] - [ utf8, 0x01180065, "pistol-shotgun \x00" ] - [ utf8, 0x01180085, "beer-bottle \x00" ] - [ utf8, 0x011800a5, "lead-pipe \x00" ] - [ utf8, 0x011800c5, "lead-pipe \x00" ] - [ utf8, 0x011800e5, "flashlight \x00" ] - [ utf8, 0x01180105, "rifle-sniper \x00" ] - [ utf8, 0x01180125, "m4-rifle-t1 \x00" ] - [ utf8, 0x01180145, "smoke-bomb \x00" ] - [ utf8, 0x01180165, "throw-brick \x00" ] - [ utf8, 0x01180185, "shotgun-pump-stock \x00" ] - [ utf8, 0x011801a5, "NO_ART_GROUP \x00" ] - [ utf8, 0x011801c5, "bloater-pustule \x00" ] - [ utf8, 0x011801e5, "taurus-66b4-revolver \x00" ] - [ utf8, 0x01180205, "nail-bomb \x00" ] - [ utf8, 0x01180225, "throwing-knife \x00" ] - [ utf8, 0x01180245, "rifle-bolt \x00" ] - [ utf8, 0x01180265, "beretta-jaguar-pistol \x00" ] - [ utf8, 0x01180285, "bow \x00" ] - [ utf8, 0x011802a5, "molotov \x00" ] - [ utf8, 0x011802c5, "bill-knife \x00" ] - [ utf8, 0x011802e5, "baseball-bat \x00" ] - [ utf8, 0x01180305, "pistol-9mm \x00" ] - [ utf8, 0x01180325, "machete-blade \x00" ] - [ utf8, 0x01180345, "none \x00" ] - [ utf8, 0x01180365, "rifle-improvised-assault \x00" ] - [ utf8, 0x01180385, "switchblade \x00" ] - [ utf8, 0x011803a5, "baseball-bat \x00" ] - [ utf8, 0x011803c5, "hatchet \x00" ] - [ utf8, 0x011803e5, "NO_ART_GROUP \x00" ] - [ utf8, 0x01180405, "flamethrower \x00" ] # debug draw renderer on 2d - [ be32, 0x005f8b48, 0x7fa3eb78 ] - [ be32, 0x005f8b4c, 0x4bd551dd ] - [ be32, 0x005f8b50, 0x7fa3eb78 ] - [ be32, 0x005f8b54, 0x4844df29 ] - [ be32, 0x005f8b58, 0x7fa3eb78 ] - [ be32, 0x005f8b5c, 0x484b2695 ] - [ be32, 0x00033c5c, 0x60000000 ] # DC printing - [ be32, 0x007681e8, 0x38600001 ] - [ be32, 0x007681ec, 0x482b9de1 ] - [ be32, 0x007681f0, 0x7fa3eb78 ] - [ be32, 0x007681f4, 0x482b9e2d ] - [ be32, 0x007681f8, 0x7fa3eb78 ] - [ be32, 0x007681fc, 0x486de265 ] - [ be32, 0x00768200, 0x48000010 ] - [ be32, 0x007f7370, 0x48002708 ] # native-printf - [ be32, 0x007f7384, 0x480026f4 ] # native-print-string # msgout to msgcon (debug text) - [ be32, 0x01293838, 0x013bdab0 ] # msgcon buffer # start - [ be32, 0x00a46b70, 0x3cc00132 ] - [ be32, 0x00a46b74, 0x60c63220 ] - [ be32, 0x00a46b78, 0x3ce041b0 ] - [ be32, 0x00a46b7c, 0x90e60000 ] - [ be32, 0x00a46b80, 0xc0060000 ] - [ be32, 0x00a46b84, 0xc0460000 ] - [ be32, 0x00a46b88, 0x3ce04204 ] - [ be32, 0x00a46b8c, 0x90e60000 ] - [ be32, 0x00a46b90, 0xc0260000 ] - [ be32, 0x00a46b94, 0x38c0ffff ] - [ be32, 0x00a46b98, 0x80fe8098 ] - [ be32, 0x00a46b9c, 0x480656e5 ] - [ be32, 0x00a46ba0, 0x3cc00132 ] - [ be32, 0x00a46ba4, 0x60c63220 ] - [ be32, 0x00a46ba8, 0x3ce04422 ] - [ be32, 0x00a46bac, 0x60e70080 ] - [ be32, 0x00a46bb0, 0x90e60000 ] - [ be32, 0x00a46bb4, 0xc0060000 ] - [ be32, 0x00a46bb8, 0xc0460000 ] - [ be32, 0x00a46bbc, 0x3ce04204 ] - [ be32, 0x00a46bc0, 0x90e60000 ] - [ be32, 0x00a46bc4, 0xc0260000 ] - [ be32, 0x00a46bc8, 0x38c0ffff ] - [ be32, 0x00a46bcc, 0x80fe809c ] - [ be32, 0x00a46bd0, 0x480656b1 ] - [ be32, 0x00a46bd4, 0x807e809c ] - [ be32, 0x00a46bd8, 0x88830000 ] - [ be32, 0x00a46bdc, 0x2f840000 ] # check - [ be32, 0x00a46be0, 0x419e0010 ] - [ be32, 0x00a46be4, 0x38800000 ] - [ be32, 0x00a46be8, 0x38a00080 ] - [ be32, 0x00a46bec, 0x48402c2d ] - [ be32, 0x00a46bf0, 0x807e8098 ] - [ be32, 0x00a46bf4, 0x88830000 ] - [ be32, 0x00a46bf8, 0x2f840000 ] # check - [ be32, 0x00a46bfc, 0x419e0010 ] - [ be32, 0x00a46c00, 0x38800000 ] - [ be32, 0x00a46c04, 0x38a01000 ] - [ be32, 0x00a46c08, 0x48402c11 ] - [ be32, 0x00a46c0c, 0x48000080 ] # taskmgr - [ be32, 0x00819e5c, 0x807effec ] - [ be32, 0x0128cddc, 0x01323250 ] # our taskmgr buffer - [ be32, 0x0129383c, 0x01323250 ] # our taskmgr buffer # msgcon buffer in single area - [ be32, 0x00a22c20, 0x4848b340 ] - [ be32, 0x00eadf60, 0x3d20013b ] - [ be32, 0x00eadf64, 0x6129dab0 ] - [ be32, 0x00eadf68, 0x4bb74cbc ] 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, 0x00a3a588, 0x48045ded ] # 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 ] # r0 = key addr - [ be32, 0x00a80380, 0x7f804800 ] # Compare r0 to r9 - [ be32, 0x00a80384, 0x409e000c ] - [ be32, 0x00a80388, 0xc01e137c ] # f0 = 0.3 - [ be32, 0x00a8038c, 0xd008000c ] # Store f0 - [ be32, 0x00a80390, 0xc0050000 ] # Restore f0 - [ be32, 0x00a80394, 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_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, 0x00aaa290, 0x9b63 ] # Depth buffer viewport (r28 => r27) (mem address: 0x1571d41) - [ be32, 0x00ab9ec8, 0x38000001 ] # Depth buffer viewport (r28 => r27) (mem address: 0x1571d41) # Cabin resort fix - [ be64, 0x01572020, 0x1070fd7d7973c900 ] # first line - [ be64, 0x01572030, 0x674da76646c80092 ] # second line p.1 - [ be32, 0x01572039, 0x2bfb00a3 ] # second line p.2 - [ be64, 0x01572040, 0x00003f8000014034 ] # third line p.1 - [ be64, 0x01572048, 0x0000403400013f80 ] # third line p.2 - [ be64, 0x01572052, 0x3f80000000a3a588 ] # Initial Current result # Alpha pass func - [ be32, 0x00a7ffac, 0x419e0020 ] # Go to Alpha pass check - [ be32, 0x00a7ffb0, 0x3d200157 ] # r9 = 0x1570000 # Check Task id - [ be32, 0x00a7ffb4, 0x3880201f ] # r4 = 0x201f - [ be32, 0x00a7ffb8, 0x4800018d ] # Task id func Call - [ be32, 0x00a7ffbc, 0x419e0010 ] # beq to Alpha pass check - [ be32, 0x00a7ffc0, 0x98091d41 ] # stb Disable Alpha pass - [ be32, 0x00a7ffc4, 0xb0092028 ] # sth Store flag (0x1572028) - [ be32, 0x00a7ffc8, 0x480001a8 ] # Go to a80170 # Alpha pass check - [ be32, 0x00a7ffcc, 0x88691d41 ] # lbz r3 = Alpha pass - [ be32, 0x00a7ffd0, 0x7f801800 ] # cmpw r0 vs r3 - [ be32, 0x00a7ffd4, 0x409e019c ] # Skip to a80170 - [ be32, 0x00a7ffd8, 0x2f800000 ] # cmpwi r0 vs 0 - [ be32, 0x00a7ffdc, 0x419e0010 ] # beq - [ be32, 0x00a7ffe0, 0x38800000 ] # li r4 = 0 - [ be32, 0x00a7ffe4, 0xb0892028 ] # sth Store flag (0x1572028) - [ be32, 0x00a7ffe8, 0x48000008 ] - [ be32, 0x00a7ffec, 0x38800001 ] # li r4 = 1 - [ be32, 0x00a7fff0, 0x98891d41 ] # stb r4 Store Alpha pass - [ be32, 0x00a7fff4, 0x4800017c ] # Go to a80170 # Task id func - [ be32, 0x00a80144, 0x7ca92214 ] # add r5 = r9 + r4 - [ be32, 0x00a80148, 0x3c800142 ] # lis r4 = 0x1420000 - [ be32, 0x00a8014c, 0x88649ef4 ] # lbz r3 = Task id first byte - [ be32, 0x00a80150, 0x8c850001 ] # lbzu r4 table byte - [ be32, 0x00a80154, 0x2f840000 ] # r4 vs 0 (Default case) - [ be32, 0x00a80158, 0x419e000c ] # beq (r4 = 0) - [ be32, 0x00a8015c, 0x7f832000 ] # cmpw r3 vs r4 - [ be32, 0x00a80160, 0x409efff0 ] # Go back - [ be32, 0x00a80164, 0x2f840000 ] # cmpwi r4 vs 0 - [ be32, 0x00a80168, 0x4e800020 ] # Return # The Main function - [ be32, 0x00a3a584, 0x48045a75 ] # Function Call - [ be32, 0x00a7fff8, 0x3d200157 ] # lis r9 = 0x1570000 - [ be32, 0x00a7fffc, 0x90692060 ] # stw Store r3 - [ be32, 0x00a80000, 0x90a92064 ] # stw Store r5 - [ be32, 0x00a80004, 0x3ca00151 ] # lis r5 = 0x1510000 - [ be32, 0x00a80008, 0x38a5db24 ] # subi r5 = 0x150db24 - [ be32, 0x00a8000c, 0x80050aec ] # lwz r0 = blizzard byte - [ be32, 0x00a80010, 0x2f800000 ] # cmpwi r0 vs 0 - [ be32, 0x00a80014, 0x419e0114 ] # beq to Default store (a80128) - [ be32, 0x00a80018, 0xa0092028 ] # lhz r0 = Alpha pass flag - [ be32, 0x00a8001c, 0x2f800001 ] # cmpwi r0 vs 1 - [ be32, 0x00a80020, 0x419e0108 ] # beq to Default store (a80128) # Check key addrs - [ be32, 0x00a80024, 0x80080014 ] # lwz r0 = key addr - [ be32, 0x00a80028, 0x7f802800 ] # cmpw r0 vs r5(0x150db24) - [ be32, 0x00a8002c, 0x38803f00 ] # li r4 = 3f00 Final Result - [ be32, 0x00a80030, 0x419e00f0 ] # Go to store result (a80120) - [ be32, 0x00a80034, 0x38a50030 ] # addi r5 = 0x150db54 - [ be32, 0x00a80038, 0x7f802800 ] # cmpw r0 vs r5 - [ be32, 0x00a8003c, 0x419e00e4 ] # Go to store result (a80120) - [ be32, 0x00a80040, 0x38a5ffe4 ] # subi r5 = 0x150db38 - [ be32, 0x00a80044, 0x7f802800 ] # cmpw r0 vs r5 - [ be32, 0x00a80048, 0x419e0024 ] # Go to 0x150db38 case (a8006c) - [ be32, 0x00a8004c, 0x38a5fff8 ] # subi r5 = 0x150db30 - [ be32, 0x00a80050, 0x7f802800 ] # cmpw r0 vs r5 - [ be32, 0x00a80054, 0x409e00d4 ] # Go to Default store (a80128) # 0x150db30 case - [ be32, 0x00a80058, 0x3880203b ] # li r4 = 0x203b(case a3) - [ be32, 0x00a8005c, 0x480000e9 ] # Task id func Call - [ be32, 0x00a80060, 0x419e00c8 ] # Go to Default store (a80128) - [ be32, 0x00a80064, 0x38803f00 ] # li r4 = 3f00 - [ be32, 0x00a80068, 0x480000b8 ] # Go to Store result (a80120) # 0x150db38 Special cases - [ be32, 0x00a8006c, 0x3880203b ] # li r4 = 0x203b(case a3) - [ be32, 0x00a80070, 0x480000d5 ] # Task id func Call - [ be32, 0x00a80074, 0x419e000c ] # Go to next check - [ be32, 0x00a80078, 0x38803f00 ] # li r4 = 0x3f00 Final result - [ be32, 0x00a8007c, 0x480000a4 ] # Go to Store result (a80120) - [ be32, 0x00a80080, 0x38802036 ] # li r4 0x2036(case 92) - [ be32, 0x00a80084, 0x480000c1 ] # Task id func Call - [ be32, 0x00a80088, 0x419e000c ] # Go to next check - [ be32, 0x00a8008c, 0x38804040 ] # li r4 = 0x4040 Final result - [ be32, 0x00a80090, 0x48000090 ] # Go to Store result (a80120) - [ be32, 0x00a80094, 0x38802038 ] # li r4 = 0x2038 (cases 2b/fb) - [ be32, 0x00a80098, 0x480000ad ] # Task id func Call - [ be32, 0x00a8009c, 0x419e000c ] # Skip to usual cases - [ be32, 0x00a800a0, 0x38003f80 ] # li r0 = 0x3f80 Final Result - [ be32, 0x00a800a4, 0x4800007c ] # Go to Store result (a80120) - [ be32, 0x00a800a8, 0x3880202f ] # r4 = 0x202f(main cases) - [ be32, 0x00a800ac, 0x48000099 ] # Task id func Call - [ be32, 0x00a800b0, 0x419e0014 ] # to Joel cases - [ be32, 0x00a800b4, 0x3c60013d ] # lis r3 = 0x13d0000 - [ be32, 0x00a800b8, 0x886371b4 ] # lbz r3 = Inside/outside byte (13d71b4) (r3) - [ be32, 0x00a800bc, 0x38a9203c ] # addi r5 = r9+0x203c(0x157203c Ellie cases) - [ be32, 0x00a800c0, 0x48000010 ] # - [ be32, 0x00a800c4, 0x3c600151 ] # lis r3 = 0x1510000 - [ be32, 0x00a800c8, 0x8063e600 ] # lbz r3 = Inside/outside byte (150e600) (r3) - [ be32, 0x00a800cc, 0x38a92044 ] # addi r5 = r9+0x2044(0x1572044 Joel cases) # Main cases - [ be32, 0x00a800d0, 0xa4850004 ] # lhzu r4 from r5 - [ be32, 0x00a800d4, 0x7f832000 ] # cmpw r3 vs r4 - [ be32, 0x00a800d8, 0x409efff8 ] # Go back - [ be32, 0x00a800dc, 0xa0892050 ] # lhz r4 = Main byte(0x1502050) - [ be32, 0x00a800e0, 0x7f832000 ] # cmpw r3 vs r4 - [ be32, 0x00a800e4, 0xa0850002 ] # lhz r4 = eq-Current/neq-Target result - [ be32, 0x00a800e8, 0x419e0028 ] # beq to Store current result - [ be32, 0x00a800ec, 0xa0092052 ] # lhz r0 = Current result - [ be32, 0x00a800f0, 0x7f802000 ] # cmpw r0 vs r4 - [ be32, 0x00a800f4, 0x419e0024 ] # beq to Store main byte # Switcher (spends 30 frames) - [ be32, 0x00a800f8, 0x2f843f80 ] # cmpwi r4 vs 0x3f80 - [ be32, 0x00a800fc, 0x7c040378 ] # mr r4 = r0 - [ be32, 0x00a80100, 0x419e000c ] # beq - [ be32, 0x00a80104, 0x38840006 ] # addi r4 = r4 + 6 - [ be32, 0x00a80108, 0x48000008 ] # - [ be32, 0x00a8010c, 0x3884fffa ] # subi r4 = r4 - 6 - [ be32, 0x00a80110, 0xb0892052 ] # sth r4 Store new current result - [ be32, 0x00a80114, 0x4800000c ] # b to Store final result # Store main byte - [ be32, 0x00a80118, 0xb0692050 ] # sth r3 Store main byte (r9) # Store results - [ be32, 0x00a8011c, 0xa0892052 ] # sth r4 = Current resullt (r9) - [ be32, 0x00a80120, 0xb088000c ] # sth r4 Store final result (r8) - [ be32, 0x00a80124, 0x48000008 ] # Go to return - [ be32, 0x00a80128, 0xd3e8000c ] # Default store # Returning - [ be32, 0x00a8012c, 0x80092056 ] # lwz Load r0 as LR - [ be32, 0x00a80130, 0x7c0803a6 ] # mtlr LR = r0 - [ be32, 0x00a80134, 0x80692060 ] # Restore r3 - [ be32, 0x00a80138, 0x80a92064 ] # Restore r5 - [ be32, 0x00a8013c, 0x38920001 ] # Restore r4 - [ be32, 0x00a80140, 0x4e800020 ] # Return 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, 0x00 ] # term str - [ be32, 0x01297418, 0x00e8d580 ] - [ byte, 0x00eeeef8, 0x00 ] - [ byte, 0x00eeef10, 0x00 ] - [ byte, 0x00eeef28, 0x00 ] - [ byte, 0x00eeef50, 0x00 ] - [ 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 - [ utf8, 0x00e8d600, "Infinite Everything (Ammo, Items, Skills, Parts)" ] #- [ be64, 0x00e8d600, 0x496e66696e697465 ] # str Infinite Everything (Ammo, Items, Skills, Parts) #- [ be64, 0x00e8d608, 0x2045766572797468 ] #- [ be64, 0x00e8d610, 0x696e672028416d6d ] #- [ be64, 0x00e8d618, 0x6f2c204974656d73 ] #- [ be64, 0x00e8d620, 0x2c20536b696c6c73 ] #- [ be64, 0x00e8d628, 0x2c20506172747329 ] - [ be32, 0x01286780, 0x00e8d600 ] # point addr to e8e490 - [ be32, 0x01286784, 0x014f3412 ] # point addr to 014f3412 # add - [ be32, 0x0003495c, 0x48e58c35 ] # bl 00e8d590 - [ be32, 0x00e8d590, 0x3fa0014f ] # r29 14f0000 - [ be32, 0x00e8d594, 0x881d3412 ] # lbz r0, 0x3412, (r29) - [ be32, 0x00e8d598, 0x2f800000 ] # cmp r0, 0x0 - [ be32, 0x00e8d59c, 0x409e0008 ] # bne 0xe8d5a4 - [ be32, 0x00e8d5a0, 0x7f7fd22e ] # og lhzx - [ be32, 0x00e8d5a4, 0x4e800020 ] # ret - [ be32, 0x00034968, 0x2f9d096f ] # r29 to 512 - [ be32, 0x00034970, 0x3ba0096f ] # li r29 512 # sub - [ be32, 0x000336c0, 0x7e2802a6 ] # mflr r17,LR - [ be32, 0x000336c4, 0x48e59f01 ] # call 3 - [ be32, 0x000336c8, 0x7e2803a6 ] # mtlr LR,r17 - [ be32, 0x000336cc, 0x3a200000 ] # r17 = 0 - [ be32, 0x00e8d5c4, 0x7c0b4a2e ] # og lhzx - [ be32, 0x00e8d5c8, 0x5408043e ] # og rlwinm - [ be32, 0x00e8d5cc, 0x3e00014f ] # r16 = 14f0000 - [ be32, 0x00e8d5d0, 0x89f03412 ] # lbz r15,0x3412,r16 - [ be32, 0x00e8d5d4, 0x2f8f0000 ] # r15 vs 0 - [ be32, 0x00e8d5d8, 0x409e0008 ] # bne - [ be32, 0x00e8d5dc, 0x7c050050 ] # og sub - [ be32, 0x00e8d5e0, 0x7f882800 ] # og cmpw - [ be32, 0x00e8d5e4, 0x39e00000 ] # r15 = 0 - [ be32, 0x00e8d5e8, 0x3a000000 ] # r16 = 0 - [ be32, 0x00e8d5ec, 0x4e800020 ] # ret tlou111_nailbombsoftlockfix: &tlou111_nailbombsoftlockfix - [ be32, 0x0069f7ac, 0x4b9c012d ] # bl SUB_0005f8d8 - [ be32, 0x0005f8d8, 0x3c800142 ] # lis r4,0x142 - [ be32, 0x0005f8dc, 0xa0849ef4 ] # lhz r4,-0x610c(r4) - [ be32, 0x0005f8e0, 0x70847fff ] # andi r4,r4,0x7fff - [ be32, 0x0005f8e4, 0x2f8440bc ] # cmpwi cr7,r4,0x40bc - [ be32, 0x0005f8e8, 0x419e0028 ] # beq cr7,LAB_0005f910 - [ be32, 0x0005f8ec, 0x2f842466 ] # cmpwi cr7,r4,0x2466 - [ be32, 0x0005f8f0, 0x419e0020 ] # beq cr7,LAB_0005f910 - [ be32, 0x0005f8f4, 0x2f841ab6 ] # cmpwi cr7,r4,0x1ab6 - [ be32, 0x0005f8f8, 0x419e0018 ] # beq cr7,LAB_0005f910 - [ be32, 0x0005f8fc, 0x2f841181 ] # cmpwi cr7,r4,0x1181 - [ be32, 0x0005f900, 0x419e0010 ] # beq cr7,LAB_0005f910 - [ be32, 0x0005f904, 0x2f844ad3 ] # cmpwi cr7,r4,0x4ad3 - [ be32, 0x0005f908, 0x419e0008 ] # beq cr7,LAB_0005f910 - [ be32, 0x0005f90c, 0x48000008 ] # b LAB_0005f914 - [ be32, 0x0005f910, 0x38000001 ] # li r0,0x1 - [ be32, 0x0005f914, 0x389b0070 ] # addiparam_2,r27,0x70 - [ be32, 0x0005f918, 0x4e800020 ] # blr tlou111_devmenu: &tlou111_devmenu - [ be32, 0x0003a69c, 0x39e00001 ] - [ be16, 0x009da99a, 0x2db6 ] - [ be16, 0x009da9a2, 0x2db6 ] - [ be32, 0x00a1a200, 0x60000000 ] # Remove "!" model render - [ be32, 0x0004113c, 0x48000028 ] # No double line in Gameplay Menu # str lookup - [ utf8, 0x011b4145, "shiv " ] - [ utf8, 0x011b4165, "pistol-uber-t1 " ] - [ utf8, 0x011b4185, "baseball-bat " ] - [ utf8, 0x011b41a5, "hatchet " ] - [ utf8, 0x011b41c5, "NO_ART_GROUP " ] - [ utf8, 0x011b41e5, "nail-bomb " ] - [ utf8, 0x011b4205, "two-by-four " ] - [ utf8, 0x011b4225, "nail-bomb " ] - [ utf8, 0x011b4245, "turret-sniper " ] - [ utf8, 0x011b4265, "rifle-lever-action " ] - [ utf8, 0x011b4285, "pistol-uber-t1 " ] - [ utf8, 0x011b42a5, "shiv " ] - [ utf8, 0x011b42c5, "radio " ] - [ utf8, 0x011b42e5, "molotov " ] - [ utf8, 0x011b4305, "bandage-apply " ] - [ utf8, 0x011b4325, "mp-parcel " ] - [ utf8, 0x011b4345, "gren-launcher-improvised " ] - [ utf8, 0x011b4365, "shotgun-dbl-barrel " ] - [ utf8, 0x011b4385, "machete-blade " ] - [ utf8, 0x011b43a5, "bow-dark " ] - [ utf8, 0x011b43c5, "rifle-variable " ] - [ utf8, 0x011b43e5, "mini-14-rifle " ] - [ utf8, 0x011b4405, "two-by-four " ] - [ utf8, 0x011b4425, "pistol-shotgun " ] - [ utf8, 0x011b4445, "rifle-improvised-fullauto " ] - [ utf8, 0x011b4465, "super-soaker " ] - [ utf8, 0x011b4485, "NO_ART_GROUP " ] - [ utf8, 0x011b44a5, "beer-bottle " ] - [ utf8, 0x011b44c5, "crossbow-dlc " ] - [ utf8, 0x011b44e5, "lead-pipe " ] - [ utf8, 0x011b4505, "lead-pipe " ] - [ utf8, 0x011b4525, "flamethrower " ] - [ utf8, 0x011b4545, "desert-eagle-t1 " ] - [ utf8, 0x011b4565, "flashlight " ] - [ utf8, 0x011b4585, "rifle-sniper " ] - [ utf8, 0x011b45a5, "m4-rifle-t1 " ] - [ utf8, 0x011b45c5, "smoke-bomb " ] - [ utf8, 0x011b45e5, "throw-brick " ] - [ utf8, 0x011b4605, "shotgun-pump-stock " ] - [ utf8, 0x011b4625, "silenced-galil-rifle " ] - [ utf8, 0x011b4645, "NO_ART_GROUP " ] - [ utf8, 0x011b4665, "bloater-pustule " ] - [ utf8, 0x011b4685, "taurus-66b4-revolver " ] - [ utf8, 0x011b46a5, "nail-bomb " ] - [ utf8, 0x011b46c5, "rifle-improvised-assault " ] - [ utf8, 0x011b46e5, "throwing-knife " ] - [ utf8, 0x011b4705, "rifle-bolt " ] - [ utf8, 0x011b4725, "beretta-jaguar-pistol " ] - [ utf8, 0x011b4745, "bow " ] - [ utf8, 0x011b4765, "molotov " ] - [ utf8, 0x011b4785, "bill-knife " ] - [ utf8, 0x011b47a5, "baseball-bat " ] - [ utf8, 0x011b47c5, "mini-14-rifle " ] - [ utf8, 0x011b47e5, "pistol-glock-burst " ] - [ utf8, 0x011b4805, "pistol-9mm " ] - [ utf8, 0x011b4825, "shotgun-tactical " ] - [ utf8, 0x011b4845, "mal-gas-can " ] - [ utf8, 0x011b4865, "machete-blade " ] - [ utf8, 0x011b4885, "none " ] - [ utf8, 0x011b48a5, "rifle-improvised-assault " ] - [ utf8, 0x011b48c5, "binoculars " ] - [ utf8, 0x011b48e5, "switchblade " ] - [ utf8, 0x011b4905, "rifle-improvised-fullauto " ] # write str to menu init - [ be32, 0x004f1690, 0x39ef0020 ] # addi r15,r15,0x20 - [ be32, 0x004f1694, 0x489c5b99 ] # bl SUB_00eb722c - [ be32, 0x00eb722c, 0x3c80011b ] # lis r4,0x11b - [ be32, 0x00eb7230, 0x60844125 ] # ori r4,r4,0x4125 - [ be32, 0x00eb7234, 0x7c847a14 ] # add r4,r4,r15 - [ be32, 0x00eb7238, 0x4e800020 ] # blr # wrtie ptr for pak arg - [ be32, 0x004f2a0c, 0x489b08bc ] # b LAB_00ea32c8 - [ be32, 0x00ea32c8, 0x90be82e4 ] # stw r5,-0x7d1c(r30) store pointer to null - [ be32, 0x00ea32cc, 0x88050000 ] # lbz r0,0x0(r5) og - [ be32, 0x00ea32d0, 0x4b64f740 ] # b LAB_004f2a10 - [ be32, 0x00574e3c, 0x38600064 ] - [ be32, 0x00574e40, 0x907c0000 ] - [ be32, 0x00574e44, 0x807c0000 ] - [ be32, 0x00574e48, 0x60000000 ] # control page - [ be32, 0x0034d24c, 0x48b8f27c ] # get page ptr (start) - [ be32, 0x00edc4c8, 0x2f890000 ] # check if page ptr is null - [ be32, 0x00edc4cc, 0x419e0018 ] # do original code - [ be32, 0x00edc4d0, 0x7fc4f378 ] # save working register - [ be32, 0x00edc4d4, 0x3bdef51c ] # partially resolve page ptr - [ be32, 0x00edc4d8, 0x80a90000 ] # get ptr - [ be32, 0x00edc4dc, 0x90be8030 ] # store ptr - [ be32, 0x00edc4e0, 0x7c9e2378 ] # restore working register - [ be32, 0x00edc4e4, 0x4b470d6c ] # return # script print # Gameplay Menu bool - [ utf8, 0x00e902d8, "SS Printout to Msgcon\x00" ] - [ be32, 0x01286784, 0x0150cfe0 ] - [ be32, 0x00a5228c, 0x39200001 ] # force mode 1 - [ be32, 0x00a23ed0, 0x4802e330 ] - [ utf8, 0x00efc158, "%x" ] # branch in hex - [ utf8, 0x00efc173, "%x" ] # branch in hex - [ utf8, 0x00efc177, "%x" ] # branch in hex - [ utf8, 0x00efc197, "%x" ] # branch in hex - [ utf8, 0x00efc19b, "%x" ] # branch in hex - [ utf8, 0x00efc7fe, "%x" ] # imm in hex # debug renderer - [ be32, 0x0061cf10, 0x7fa3eb78 ] - [ be32, 0x0061cf14, 0x4bd47aad ] - [ be32, 0x0061cf18, 0x7fa3eb78 ] - [ be32, 0x0061cf1c, 0x484bb6b9 ] - [ be32, 0x0061cf20, 0x7fa3eb78 ] - [ be32, 0x0061cf24, 0x484756c9 ] - [ be32, 0x00036a04, 0x60000000 ] # msgcon buff - [ be32, 0x012c6650, 0x013f1340 ] - [ be32, 0x00a92720, 0x60000000 ] # msgout to msgcon start - [ be32, 0x00a92724, 0x3cc00135 ] - [ be32, 0x00a92728, 0x60c67130 ] - [ be32, 0x00a9272c, 0x3ce041b0 ] - [ be32, 0x00a92730, 0x90e60000 ] - [ be32, 0x00a92734, 0xc0060000 ] - [ be32, 0x00a92738, 0xc0460000 ] - [ be32, 0x00a9273c, 0x3ce04204 ] - [ be32, 0x00a92740, 0x90e60000 ] - [ be32, 0x00a92744, 0xc0260000 ] - [ be32, 0x00a92748, 0x38c0ffff ] - [ be32, 0x00a9274c, 0x80fe8098 ] - [ be32, 0x00a92750, 0x48047821 ] - [ be32, 0x00a92754, 0x807e8098 ] - [ be32, 0x00a92758, 0x38800000 ] - [ be32, 0x00a9275c, 0x38a01000 ] - [ be32, 0x00a92760, 0x483e8fe1 ] - [ be32, 0x00a92764, 0x3cc00135 ] - [ be32, 0x00a92768, 0x60c67130 ] - [ be32, 0x00a9276c, 0x3ce04248 ] - [ be32, 0x00a92770, 0x90e60000 ] - [ be32, 0x00a92774, 0xc0260000 ] - [ be32, 0x00a92778, 0x3ce04422 ] - [ be32, 0x00a9277c, 0x60e70080 ] - [ be32, 0x00a92780, 0x90e60000 ] - [ be32, 0x00a92784, 0xc0460000 ] - [ be32, 0x00a92788, 0x3ce00135 ] - [ be32, 0x00a9278c, 0x60e77148 ] - [ be32, 0x00a92790, 0x38c0ffff ] - [ be32, 0x00a92794, 0x480477dd ] - [ be32, 0x00a92798, 0x48000064 ] # msgcon buffer in single area - [ be32, 0x00a519f8, 0x4848a738 ] - [ be32, 0x00edc130, 0x3d20013f ] - [ be32, 0x00edc134, 0x61291340 ] - [ be32, 0x00edc138, 0x4bb758c4 ] # taskmgr - [ be32, 0x0083f9c0, 0x807eff84 ] - [ be32, 0x012befe8, 0x01357148 ] # display-msg - [ be32, 0x008529f8, 0x60000000 ] - [ be32, 0x00852a04, 0x60000000 ] # DC printing - [ be32, 0x0081c060, 0x48002cbc ] # printf - [ be32, 0x0081c074, 0x48002ca8 ] # print-string - [ be32, 0x0078c5a4, 0x38600001 ] - [ be32, 0x0078c5a8, 0x482c5c05 ] - [ be32, 0x0078c5ac, 0x7fa3eb78 ] - [ be32, 0x0078c5b0, 0x482c5c51 ] - [ be32, 0x0078c5b4, 0x48000018 ] tlou_gpulighting_notes: &tlou_gpulighting_notes "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.\nVersion 2.0 - Fixes Cabin Resort level crashes/artifacts without removing the fog (1.11 only)" tlou_speed_notes: &tlou_speed_notes "Improves performance in certain areas. May cause issues." tlou_debugmenu_notes: &tlou_debugmenu_notes "L3 + Start = Dev Menu\nL3 + Select = Quick Menu\nL3 + Triangle = FPS Text\nL3 + R3 = Debug Fly" tlou_infiniteflashlight_notes: &tlou_infiniteflashlight_notes "This patch is useful 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." tlou_nocamshake_notes: &tlou_nocamshake_notes "Disables camera shake during gameplay.\nIn-Game cinematics remain unaffected." tlou_localmp_notes: &tlou_localmp_notes "Matchmaking does not work." tlou_dbgtasks_notes: &tlou_dbgtasks_notes "Only enable this if you know what you are doing!" tlou_headcrash_notes: &tlou_headcrash_notes "Fixes a bug where throwing an object at an Infected Severed Head causes a game crash." tlou_ar_notes: &tlou_ar_notes "Requires \"Stretch To Display Area\" checked in the GPU settings. UI elements will be stretched." tlou_fps_notes: &tlou_fps_notes "Unlocks FPS without any special settings.\nGame may crash above 500 FPS in loading screens." tlou_mlaa_notes: &tlou_mlaa_notes "Allows 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." tloulb100_title: &tloulb100_title "The Last of Us Left Behind": NPUA81175: [ 01.00 ] NPEA00521: [ 01.00 ] 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 ] NPHA80243: [ 01.11 ] PPU-9df60dc1aa5005a0c80e9066e4951dc0471553e6: "Disable in-built MLAA": Games: *tlou100_title Author: "Whatcookie" Notes: *tlou_mlaa_notes 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: *tlou_gpulighting_notes Patch Version: 2.0 Patch: - [ load, *tlou100_db ] "Speedboost": Games: *tlou100_title Author: "ZEROx, illusion" Notes: *tlou_speed_notes Patch Version: 1.0 Patch: - [ load, *tlou100_speed ] "Debug Menu": Games: *tlou100_title Author: "dron_3, HdHereidme, illusion" Notes: *tlou_debugmenu_notes Patch Version: 1.01 Patch: - [ load, *tlou100_devmenu ] "Bug Fix: Infected Severed Head Crash": Games: *tlou100_title Author: "illusion, ZEROx" Notes: *tlou_headcrash_notes 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: *tlou_ar_notes Patch Version: 1.0 Patch: - [ be32, 0x000325b8, 0x60000000 ] # nop write for ar float - [ bef32, 0x014aebd0, 0.42 ] # ar float - [ bef32, 0x0128f2f4, 0.75 ] "16:10 Aspect Ratio": Games: *tlou100_title Author: "mavethee" Notes: *tlou_ar_notes Patch Version: 1.0 Patch: - [ be32, 0x000325b8, 0x60000000 ] - [ bef32, 0x014aebd0, 0.55 ] - [ bef32, 0x0128f2f4, 0.7 ] "Unlock FPS": Games: *tlou100_title Author: "illusion" Notes: *tlou_fps_notes Patch Version: 1.0 Patch: - [ be32, 0x00036ab8, 0x38a00000 ] "Infinite flashlight battery": Games: *tlou100_title Author: "bungholio, ZEROx" Notes: *tlou_infiniteflashlight_notes Patch Version: 1.0 Patch: - [ be32, 0x0068eb38, 0x60000000 ] "Disable Camera Shake": Games: *tlou100_title Author: "illusion" Notes: *tlou_nocamshake_notes Patch Version: 1.0 Patch: - [ be16, 0x00966784, 0x997d ] "Enable Local Multiplayer": Games: *tlou100_title Author: "icemesh, illusion" Notes: *tlou_localmp_notes Patch Version: 1.0 Patch: - [ be32, 0x00353e7c, 0x3b800001 ] # (icemesh) - [ be32, 0x00a0fbc8, 0x38600000 ] # (illusion) # For RPCS3 only, bypass connecting screen - [ be32, 0x01268210, 0x0132f628 ] # (illusion) - [ be32, 0x00356830, 0x38600000 ] # (illusion) "Skip Intro": Games: *tlou100_title Author: "illusion" Notes: Patch Version: 1.0 Patch: - [ be32, 0x00038ea4, 0x38600001 ] "DEBUG: Replace Task With Test Tasks": Games: *tlou100_title Author: "illusion, icemesh" # SID Utils Notes: *tlou_dbgtasks_notes Patch Version: 1.0 Patch: # test-tasks begin!! - [ be32, 0x009f9064, 0x484b023c ] - [ be32, 0x00ea92a0, 0x81490000 ] - [ be32, 0x00ea92a4, 0x3d006772 ] - [ be32, 0x00ea92a8, 0x61083261 ] - [ be32, 0x00ea92ac, 0x7f885000 ] - [ be32, 0x00ea92b0, 0x409e0014 ] - [ be32, 0x00ea92b4, 0x3d002203 ] - [ be32, 0x00ea92b8, 0x6108c98c ] - [ be32, 0x00ea92bc, 0x91090000 ] - [ be32, 0x00ea92c0, 0x7d284b78 ] - [ be32, 0x00ea92c4, 0x81490000 ] - [ be32, 0x00ea92c8, 0x4bb4fda0 ] # *test-task-graph* - [ be16, 0x008203a2, 0xf0f3 ] - [ be16, 0x008203aa, 0xd6c8 ] - [ be16, 0x0081d2fa, 0xf0f3 ] - [ be16, 0x0081d302, 0xd6c8 ] # crash fix - [ be32, 0x000390b0, 0x48000068 ] # no artGroup assert - [ be32, 0x0048731c, 0x60000000 ] PPU-120fb71f7352d62521c639b0e99f960018c10a56: "Disable in-built MLAA": Games: *tlou111_title Author: "Whatcookie, illusion, ZEROx" Notes: *tlou_mlaa_notes 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 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: *tlou_gpulighting_notes Patch Version: 2.0 Patch: - [ load, *tlou111_db ] "WCB/WDB Performance fix": Games: *tlou111_title Author: "ZEROx" Notes: "Disables Depth Buffer Reload, reduces performance penalty using WCB/WDB." Patch Version: 1.0 Patch: - [ be16, 0x00aaa030, 0x9b83 ] # Speedup 1571ad8 (WCB) - [ be32, 0x00a974f4, 0x4bfd4ef1 ] # Call - [ be32, 0x00a6c3e4, 0x3c600142 ] # r3 = 0x1420000 - [ be32, 0x00a6c3e8, 0xa0639ef4 ] # lhz r3,0x9ef4(r3) - [ be32, 0x00a6c3ec, 0x2f83080c ] # r3 vs 0x80c - [ be32, 0x00a6c3f0, 0x419e000c ] # beq - [ be32, 0x00a6c3f4, 0xc1a9038c ] # f13 original load - [ be32, 0x00a6c3f8, 0x48000008 ] - [ be32, 0x00a6c3fc, 0xc1be8100 ] # f13 == f0 - [ be32, 0x00a6c400, 0x4e800020 ] # ret "Speedboost": Games: *tlou111_title Author: "ZEROx, illusion" Notes: *tlou_speed_notes Patch Version: 1.0 Patch: - [ load, *tlou111_speed ] "Debug Menu": Games: *tlou111_title Author: "illusion, ZEROx, dron_3, HdHereidme" Notes: *tlou_debugmenu_notes Patch Version: 1.2 Patch: - [ load, *tlou111_devmenu ] "Infinite flashlight battery": Games: *tlou111_title Author: "bungholio, ZEROx" Notes: *tlou_infiniteflashlight_notes Patch Version: 1.0 Patch: - [ be32, 0x006acbc8, 0x60000000 ] "Bug Fix: Infected Severed Head Crash": Games: *tlou111_title Author: "illusion, ZEROx" Notes: *tlou_headcrash_notes 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: *tlou_ar_notes Patch Version: 1.0 Patch: - [ be32, 0x0003556c, 0x60000000 ] # nop write for ar float - [ bef32, 0x01558a50, 0.42 ] # ar float - [ bef32, 0x012c1964, 0.75 ] "16:10 Aspect Ratio": Games: *tlou111_title Author: "mavethee" Notes: *tlou_ar_notes Patch Version: 1.0 Patch: - [ be32, 0x0003556c, 0x60000000 ] - [ bef32, 0x01558a50, 0.55 ] - [ bef32, 0x012c1964, 0.7 ] "Unlock FPS": Games: *tlou111_title Author: "illusion" Notes: *tlou_fps_notes Patch Version: 1.0 Patch: - [ be32, 0x00039d08, 0x38a00000 ] "Dev Menu Plus": Games: *tlou111_title Author: "illusion, Freako, Smasher248" Notes: "Replaces some useless options in Memory Tab with rendering features.\nWireframe modes currently do 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: *tlou_nocamshake_notes Patch Version: 1.0 Patch: - [ be16, 0x00994234, 0x997d ] "Infinite Everything (Parts, Pills, Crafting items)": Games: *tlou111_title Author: "Medo, Randy97Killa, illusion" Notes: "Pick up any amount of parts or items to activate the cheat.\nReplaces 'SS Printout to Msgcon' in Debug Menu Gameplay tab" 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 "Bug Fix: University Nailbomb Softlock Fix": Games: *tlou111_title Author: "illusion, ZEROx" Notes: "Fixes a softlock at the end of the university chapter." Patch Version: 1.0 Patch: - [ load, *tlou111_nailbombsoftlockfix ] "Skip Intro": Games: *tlou111_title Author: "illusion" Notes: Patch Version: 1.0 Patch: - [ be16, 0x0003dd9c, 0x4800 ] "Enable Local Multiplayer": Games: *tlou111_title Author: "icemesh, illusion" Notes: *tlou_localmp_notes Patch Version: 1.0 Patch: - [ be32, 0x0036ad6c, 0x3be00001 ] # (icemesh) - [ be32, 0x0036baa4, 0x4800002c ] # (illusion) - [ be32, 0x0129a01c, 0x01363538 ] # (illusion) - [ be32, 0x00a3f320, 0x38600000 ] # (illusion) - [ be32, 0x0036dad0, 0x38600000 ] # (illusion) "DEBUG: Replace Task With Test Tasks": Games: *tlou111_title Author: "illusion, icemesh" # SID Utils Notes: *tlou_dbgtasks_notes Patch Version: 1.0 Patch: # test-tasks begin!! - [ be32, 0x00a29fb0, 0x484b2038 ] - [ be32, 0x00edbfe8, 0x81490000 ] - [ be32, 0x00edbfec, 0x3d006772 ] - [ be32, 0x00edbff0, 0x61083261 ] - [ be32, 0x00edbff4, 0x7f885000 ] - [ be32, 0x00edbff8, 0x409e0014 ] - [ be32, 0x00edbffc, 0x3d002203 ] - [ be32, 0x00edc000, 0x6108c98c ] - [ be32, 0x00edc004, 0x91090000 ] - [ be32, 0x00edc008, 0x7d284b78 ] - [ be32, 0x00edc00c, 0x81490000 ] - [ be32, 0x00edc010, 0x4bb4dfa4 ] # *test-task-graph* - [ be32, 0x008461a8, 0x3c80f0f3 ] - [ be32, 0x008461b0, 0x6084d6c8 ] - [ be32, 0x00841e64, 0x3ca0f0f3 ] - [ be32, 0x00841e6c, 0x60a5d6c8 ] # crash fix - [ be32, 0x0003df68, 0x480000a0 ] - [ be32, 0x0057cfe8, 0x60000000 ] "Infinite Ammo": Games: *tlou111_title Author: "Medo, Randy97Killa" Notes: Patch Version: 1.0 Patch: - [ be32, 0x006b1d94, 0x60000000 ] "Infinite Health": Games: *tlou111_title Author: "Medo, Randy97Killa" Notes: Patch Version: 1.0 Patch: - [ be32, 0x007caf50, 0x486c0d24 ] - [ be32, 0x00e8bc74, 0x3a20008c ] - [ be32, 0x00e8bc78, 0x923f0030 ] - [ be32, 0x00e8bc7c, 0x923f0038 ] - [ be32, 0x00e8bc80, 0x923f0044 ] - [ be32, 0x00e8bc84, 0x4b93f2d0 ] PPU-9e5c67eaf69077c591b7c503bed2b48617643134: "Debug Menu": Games: *tloulb100_title Author: "dron_3, HdHereidme, FlexBy" Notes: *tlou_debugmenu_notes Patch Version: 1.0 Patch: - [ be32, 0x00a92d94, 0x38000001 ] - [ be32, 0x00a92d98, 0x980b2db0 ] "Unlock FPS": Games: *tloulb100_title Author: "illusion, FlexBy" Notes: *tlou_fps_notes Patch Version: 1.0 Patch: - [ be32, 0x00039d1c, 0x38a00000 ] "Skip Intro": Games: *tloulb100_title Author: "illusion, FlexBy" Notes: Patch Version: 1.0 Patch: - [ be16, 0x0003ddb0, 0x4800 ] "Speedboost": Games: *tloulb100_title Author: "ZEROx, illusion, FlexBy" Notes: *tlou_speed_notes Patch Version: 1.0 Patch: - [ be16, 0x00aaa93c, 0x9383 ] "Disable SSAO": Games: *tloulb100_title Author: "JohnHolmesII, ZEROx, illusion, Juhn, FlexBy" Notes: Patch Version: 1.0 Patch: - [ be16, 0x00aaa6f0, 0x9b83 ] "Disable Motion Blur": Games: *tloulb100_title Author: "illusion, FlexBy" Notes: Patch Version: 1.0 Patch: - [ be32, 0x0096b1e8, 0x480000e0 ] "Disable Mesh trimming": Games: *tloulb100_title Author: "JohnHolmesII, ZEROx, illusion, Juhn, FlexBy" Notes: Patch Version: 1.0 Patch: - [ be16, 0x00951d2c, 0x9809 ] "Disable in-built MLAA": Games: *tloulb100_title Author: "Whatcookie, illusion, ZEROx, FlexBy" Notes: *tlou_mlaa_notes Patch Version: 1.0 Patch: - [ be16, 0x00aaa794, 0x9b83 ] "Disable Depth of Field": Games: *tloulb100_title Author: "JohnHolmesII, ZEROx, illusion, Juhn, FlexBy" Notes: Patch Version: 1.0 Patch: - [ be16, 0x00aaa760, 0x9b83 ] "Depth border fix": Games: *tloulb100_title Author: "JohnHolmesII, ZEROx, illusion, Juhn, FlexBy" Notes: Patch Version: 1.0 Patch: - [ be16, 0x00aaaa2c, 0x9b83 ] "Disable Bloom": Games: *tloulb100_title Author: "JohnHolmesII, ZEROx, illusion, Juhn, FlexBy" Notes: Patch Version: 1.0 Patch: #- [ be32, 0x00aa9ba0, 0x38000003 ] - [ be32, 0x0096c5a0, 0xc0090990 ] - [ be32, 0x0096c5ac, 0xc1890990 ] - [ be32, 0x0096c634, 0xc0090990 ] "Disable Camera Shake": Games: *tloulb100_title Author: "illusion, FlexBy" Notes: *tlou_nocamshake_notes Patch Version: 1.0 Patch: - [ be16, 0x00994988, 0x997d ] "Infinite flashlight battery": Games: *tloulb100_title Author: "bungholio, ZEROx, FlexBy" Notes: *tlou_infiniteflashlight_notes Patch Version: 1.0 Patch: - [ be32, 0x006ad230, 0x60000000 ] "Enable GPU Lighting": Games: *tloulb100_title Author: "JohnHolmesII, ZEROx, illusion, Juhn, FlexBy" Notes: *tlou_gpulighting_notes Patch Version: 1.0 Patch: - [ be16, 0x00aaaa38, 0x90c3 ] - [ be16, 0x00aaa9e4, 0x9b63 ] PPU-e71d82fa70d09b7df9493f0336717dd9a4977216: "Disable in-built MLAA": Games: "The Last of Us Demo": NPUA70257: [ 01.00 ] Author: "Whatcookie, illusion, ZEROx, FlexBy" Notes: *tlou_mlaa_notes Patch Version: 1.0 Patch: - [ be16, 0x00a7a164, 0x9b83 ] "Unlock FPS": Games: "The Last of Us Demo": NPUA70257: [ 01.00 ] Author: "illusion, FlexBy" Notes: *tlou_fps_notes Patch Version: 1.0 Patch: - [ be32, 0x00036848, 0x38a00000 ] "Debug Menu": Games: "The Last of Us Demo": NPUA70257: [ 01.00 ] Author: "dron_3, HdHereidme, FlexBy" Notes: Patch Version: 1.0 Patch: - [ be32, 0x00a46720, 0x38000001 ] - [ be32, 0x00a46724, 0x980b2db0 ] PPU-f293e177971243b66bc3fd62621ce4b246726a4a: "Disable in-built MLAA": Games: "The Last of Us Demo": NPHA80246: [ 01.00 ] Author: "Whatcookie, illusion, ZEROx, FlexBy" Notes: Patch Version: 1.0 Patch: - [ be16, 0x00a7a164, 0x9b83 ] "Unlock FPS": Games: "The Last of Us Demo": NPHA80246: [ 01.00 ] Author: "illusion, FlexBy" Notes: Patch Version: 1.0 Patch: - [ be32, 0x00036848, 0x38a00000 ] "Debug Menu": Games: "The Last of Us Demo": NPHA80246: [ 01.00 ] Author: "dron_3, HdHereidme, FlexBy" Notes: Patch Version: 1.0 Patch: - [ be32, 0x00a46720, 0x38000001 ] - [ be32, 0x00a46724, 0x980b2db0 ]
Целую неделю настраивал эмулятор под свой ПК и добился подходящего FPS-а (Мин.-15;Средн.-22/25;Макс.-30) сделал лок на 30 FPS (под консольную версию). Плюс использовал патч-хак в Patch Manager-е, версия эмулятора rpcs3-v0.0.20-13296-0a34403e (стабильная), а в обновленной версии у меня попросту игра стала некорректно работать: частые зависания/вылеты/графические артефакты. Саму игру прошел от начала до конца с удовольствием. Прохожу заново на высоком уровне сложности)
Insidius
Хотел спросить, а ты включал патч-хак для игры?
- пожаловаться
- скопировать ссылку
Спасибо, чел попробую твои настройки у меня тоже Ryzen 5 2600x, игра шикарная стоит того чтоб помучаться с настройками.
- пожаловаться
- скопировать ссылку
Ребят не подскажите, а в RPCS3 есть возможность ЗАМЕДЛИТЬ игру как можно было делать в RPCS2? а то игры на реакцию в пятой персоне меня убивают =(
- пожаловаться
- скопировать ссылку
У кого Ryzen 3 3100 или выше — сможете поиграть.
- пожаловаться
- скопировать ссылку
Pirat13666
С падением fps до 15 кадров? Да уж настоящий True game experience LOL
- пожаловаться
- скопировать ссылку
Pirat13666
Пробовал хоть запустить игру на ПК через эмулятор?
Evil in the flеsh
Для этой игры нужен хороший CPU (рекомендуется с разгоном и поддержкой TSX инструкции).
- пожаловаться
- скопировать ссылку
Pirat13666
Даже на Ryzen 5 3600X не поиграешь:
- пожаловаться
- скопировать ссылку
Mr_Dude090
Пробовать то пробовал, но игрой это не назовешь на моем I7 2600K. FPS был примерно кадров 10-15 иногда 20. Видеокарта вообще простаивает, здесь нужен только CPU.
- пожаловаться
- скопировать ссылку
А какой смысл, если так хочется пройти не легче взять пс3?
- пожаловаться
- скопировать ссылку
agula98
А не легче подождать 3 марта и поиграть с нормальной графикой
- пожаловаться
- скопировать ссылку
Samson14
Я надеюсь там в требованиях AVX2 не будет.
- пожаловаться
- скопировать ссылку
Потому что этому эмулятору=помойке и 12 ядер Ryzen не достаточно а нужен проц от Интуль с нужными инструкциями, потому такой цирк и происходит с AMD.
&t=13s
- пожаловаться
- скопировать ссылку
У мну ryzen 5 2600\16gb ddr4 ram и rx570 8gb. И примерно так же работает. А если использовать монитор с разрешением 1600х900 30Гц, о как будто бы вообще разницы с третьей плойкой нет. Но я играл на старом телевизоре с разрешением 1366х768 и диагональю дюймов 40 чтоль. Отсел подальше и вообще с кайфом прошёл.
- пожаловаться
- скопировать ссылку
Vavan07
Я вообще не заметил разницы в производительности, что на самом низком разрешении, что на 2К. Ни на 1 кадр быстрее не работала при снижении разрешения. Тут минимум нужен 8 ядерный проц, желательно 5800
- пожаловаться
- скопировать ссылку
у меня rayzen 5600x и rx 590 8gb, 32 оперативки и всё тормозит, максимум 10 фпс.настраивал по всякому и с патчами и без,по ходу, ещё не сделали её норм на эмуль.
- пожаловаться
- скопировать ссылку
Ребята, помогите. Запускаю эмулятор, запускаю игру, а она говорит, что контроллер не включен
- пожаловаться
- скопировать ссылку
хрень это все как не крутил last of fast 7фпс))
- пожаловаться
- скопировать ссылку
хотя бы в этом нужды уже не будет
- пожаловаться
- скопировать ссылку
кто шарит uncharted после подлотки миссия вся размыта) есть фикс?
- пожаловаться
- скопировать ссылку
Сразу хотелось бы отметить, что патчи для эмулятора RPCS3 не являются панацеей в чистом виде. Разработчики RPCS3 используют их скорее как заглушки для проблем, решения которых по тем или иным причинам пока не было найдено. Тем не менее, данные “заглушки” зачастую могут принести достаточно ощутимый прирост производительности эмуляции, или вовсе позволить запустить ранее не запускавшуюся, или вываливавшуюся с ошибками игру.
Данный материал сделан для того, чтобы в дальнейших руководствах постоянно не описывать рутинный и монотонный метод установки патча, а просто ссылаться на эту заметку.
Со вступлением покончено. Перейдем непосредственно к установке патча:
Обновление от 15 сентября 2020 года:
С версии эмулятора RPCS3 v0.0.12-10891-6540393d Alpha | HEAD, установка патчей не вызывает никаких трудностей. Для того чтобы загрузить новые заплатки, вам необходимо проделать следующие действия: Запустить эмулятор, перейти в меню “Manage”, далее выбрать в нем подпункт “Game Patches”:
Следом нажать на расположенную в самом низу окна кнопку “Download latest patches”:
И если вы все сделали правильно, то далее получите подобное сообщение:
Это означает что все прошло нормально. Патчи скачались и можно перейти к их применению.
Кроме этого, если вы теряетесь в обилии представленных исправлений, то просто установите галочку напротив параметра “Only shows owned games” и программа ограничит демонстрацию патчей лишь к доступным (установленным на ваш эмулятор) вам играм:
Старый способ:
Тестирование патча 1.2 проводилось на версии эмулятора RPCS3 v0.0.11-10694-609182b1 Alpha. Это очень важная деталь, ведь как для старых, так и для более новых релизов RPCS3 версия патча 1.2 может банально не подойти.
Учитывай это, и не забывайте о том, что разработчики эмулятора довольно часто обновляют его программный код. Если приведенный ниже патч не работает с вашей версией эмулятора (при условии, что ваш релиз RPCS3 новее чем тот что указан выше) – напишите об этом в комментариях к этому материалу и я обязательно обновлю данное руководство.
Скачать патч 1.2 можно по приведенной ниже ссылке:
Обновление от 5 сентября 2020 года. Доступна новая версия патча 1.3:
После скачивания, вам нужно распаковать архив и скопировать полученный файл в папку “patches” расположенную по следующему пути: “Местонахождения эмулятора\RPCS3\patches”
Следом нужно запустить эмулятор и перейти во вкладку «Manage» => «Game Patches»:
Далее вам необходимо узнать код BCES/BLES, а так же версию вашей игры и выбрать ее в открывшемся окне “Patch Manager”:
Если вы все проделали правильно, то теперь у вас есть возможность дополнительной настройки и оптимизации игр The Last of Us, Uncharted: Drake’s Fortune, Uncharted 2: Among Thieves, Uncharted 3: Drake’s Deception, а так же множества других игр! Например, в разделе «Game Patches» можно снять ограничения кадровой частоты для таких проектов как NieR Replicant и Demon’s Souls.
В следующих материалах я постараюсь коротко описать настройки патча для The Last of Us и серии Uncharted. Оставайтесь с нами!
Для работы проектов iXBT.com нужны файлы cookie и сервисы аналитики.
Продолжая посещать сайты проектов вы соглашаетесь с нашей
Политикой в отношении файлов cookie
Продолжаем знакомиться с миром консольных видеоигр. Ранее мы уже рассмотрели установку и настройку эмулятора PlayStation 2 и Nintendo Switch на домашнем ПК. В этой же небольшой инструкции мы обратим свой взор на эмулятор популярной игровой консоли 7-го поколения PlayStation 3, а также познакомимся со множеством потрясающих игр, которые навечно оказались заперты в рамках жизненного цикла одной консоли.
Оглядываясь назад, невозможно с первого раза поверить, что PlayStation 3 была актуальна уже более 10 лет назад. Попыток создать качественный эмулятор за это время было целое множество, но достичь успеха смогли только единицы.
RPCS3 — бесплатный эмулятор с открытым исходным кодом игровой консоли 7-го поколения PlayStation 3. Написан на низкоуровневом языке программирования С++. Поддерживает все современные графические API. Обладает простым, интуитивно понятным интерфейсом, что позволяет даже неопытному пользователю приобщиться к магии эмулятора: сохранение/загрузка игрового процесса в любой момент, улучшение графики, игра по сети и многое другое. В общем, позволяет делать всё то, что и оригинальная игровая приставка, но только в несколько раз лучше. Поддерживает Windows, Linux, MacOS и FreeBSD.
- Процессор: Intel Pentium G4560 3.5 ГГц
- Видеокарта: AMD RX 550 2 Гб
- Оперативная память: 2×4 2400 МГц
- Материнская плата: H110M-DGS R3.0
- Накопитель: 2 Sata 3 SSD 128 и 256 Гб
- Звуковая система: Realtek ALC887
Несмотря на сложную и необычную архитектуру, используемую в PlayStation 3, возможностей современных 8-поточных CPU уже вполне достаточно для беспроблемной её эмуляции. Выполним установку и настройку эмулятора.
1. Переходим на официальный веб-сайт эмулятора и скачиваем желаемую версию. Выполняем распаковку архива в любую удобную папку и пробуем запустить от имени администратора файл rpcs3.exe.
2. Если всё прошло удачно, то после запуска вас встретит странная табличка на английском языке. Не пугайтесь, в ней попросту кратко описаны возможности эмулятора и указаны полезные ссылки для быстрой настройки и создания дампов дисков. Закрываем назойливое окно через крестик и переходим к следующему шагу инструкции.
3. Если ранее вы уже имели опыт работы с эмулятором PlayStation 2 или Nintendo Switch, то в появившемся интерфейсе вы почувствуете себя как дома. Нажимаем в интерфейсе эмулятора File>Install Firmware и выбираем файл прошивки PS3UPDAT.PUP, необходимый для работы ПО.
К сожалению, но из-за юристов Sony и действующего закона об авторском праве я не могу предоставить прямую ссылку на файл прошивки. Однако мой знакомый с попугаем на плече как-то сказывал, что его достаточно просто найти на просторах сетевых морей!
После успешной установки прошивки и окончания компиляции предварительных шейдеров можно приступать к тестовой установке и запуску игр.
4. В отличие от эмулятора PlayStation 2, RPCS3 не сильно жалует формат дисков .iso, а способен работать только с форматами: BIN, SEL/FELF и pkg. Благо, большинство известных игр для PlayStation 3 в них и доступны. Проверим работоспособность эмулятора на примере эксклюзива Tales Of Xillia. Нажимаем File>Boot (S) Elf>Boot SELF/ELF и находим в папке с нашей игрой файл запуска .BIN.
Как вы видите, несмотря на мой доисторический ПК, игра работает неплохо. Конечно, присутствуют небольшие проблемы со звуком, но что вы хотите от Intel Pentium G4560 во время одновременной записи и эмуляции? Остаётся теперь только порадоваться, что ещё один эксклюзив PlayStation 3 больше не заперт в рамках жизненного цикла одной консоли.
Как и все ранее рассмотренные эмуляторы, RPCS3 не стал исключением и требует небольшой настройки для беспроблемного запуска игр. Выполним базовую настройку графики и управления. Нажимаем Config в интерфейсе эмулятора и переходим в раздел GPU.
- Если ваша видеокарта вышла уже после 2012 года, то смело для максимальной производительности выбираем API Vulkan. Если же наоборот, то ограничьтесь выбором OpenGL.
- Лимит FPS для одиночных игр устанавливаем 30 кадров или PS3 Native, чтобы избежать проблем с анимацией.
- Для качественных текстур фильтрацию выставляем на 16x.
- Разрешение экрана — по желанию.
- В разделе Pads выбираем тип управления (Советую приобрести дешёвый геймпад).
- В разделе System выбираем желаемый язык.
- Другие настройки можно оставить по умолчанию.
Вот, собственно, и всё! Всех этих настроек будет достаточно, чтобы поиграть на ПК во множество отличных игр с PlayStation 3. Однако учитывайте, что для некоторых проектов могут потребоваться личные настройки. Найти их вы всегда сможете на официальной странице совместимости эмулятора.
За жизненный цикл игровой консоли PlayStation 3 было создано множество игр, среди которых не мало эксклюзивных проектов, заслуживающих внимания геймера и в 2023 году. Пробежимся по некоторым из них, что уже отлично работают на RPCS3.
Стоящие внимания эксклюзивы:
- Drakengard 3
- God of War: Collection
- God of War: Origins Collection
- Tales of Xillia
- Tales of Xillia 2
- Метал Gear Solid HD Collection
- Метал Gear Solid 4: Guns of the Patriots
- Killzone 2
- Resistance: Fall of Man
- Resistance 2
- Dragon’s Crown
- JoJo’s Bizarre Adventure HD
- Полный список эксклюзивов можно найти здесь.
Удивительно осознавать, что, несмотря на тенденцию последних лет с переносом эксклюзивов PlayStation на ПК, так много удивительных проектов остаются заперты в рамках одного поколения консолей. Хорошо, что всё ещё существуют рыцари пера и кода, которые назло крупным корпорациям сохраняют историю видеоигр! Уважайте свободу, играйте в хорошие игры и никогда не позволяйте компаниям диктовать вам свои условия.