illusion0001 / PS4-PS5-Game-Patch

Custom Game Patches for PlayStation 4 and PlayStation 5 Games
122 stars 22 forks source link

PS4/PS5 Game Patch Repository

Custom Game Patches for PlayStation 4 and PlayStation 5 Games.

## Usage (PS4) #### Manual Installation (Offline via HDD) - Download [patch zip](https://github.com/illusion0001/PS4-PS5-Game-Patch/releases/latest/download/patch1.zip). - Copy `patch1.zip` to `/user/data/CheatsManager/backup/patches/` using an FTP client. - Install and Open [PS4 Cheats Manager](https://github.com/bucanero/PS4CheatsManager/releases/latest) on your console. - Scroll and select on **Update**. - Scroll and select on **Update Cheats, Patches, Plugins (HDD)** - Find and select entry `patch1.zip` - If the patches was installed correctly from Internal HDD, you should see the following message:
Screenshot (Click to Expand) ![](https://github.com/illusion0001/PS4-PS5-Game-Patch/assets/37698908/9d539d02-bba4-44b5-aa34-b835e9f8aa36)
#### Manual Installation (Offline via USB) - Download [patch zip](https://github.com/illusion0001/PS4-PS5-Game-Patch/releases/latest/download/patch1.zip). - Copy `patch1.zip` to root of USB drive. - Install and Open [PS4 Cheats Manager](https://github.com/bucanero/PS4CheatsManager/releases/latest) on your console. - Scroll and select on **Update**. - Scroll and select on **Update Cheats, Patches, Plugins (USB)** - Find and select entry `patch1.zip` - If the patches was installed correctly from USB, you should see the following message:
Screenshot (Click to Expand) ![](https://github.com/illusion0001/PS4-PS5-Game-Patch/assets/37698908/536d3be3-7108-4fbb-b4e5-72791fd4c8f6)
#### Easy Installation - Patches can be configured, install/update via: - [PS4 Cheats Manager](https://github.com/bucanero/PS4CheatsManager/releases/latest) - [Itemzflow Game Manager](https://github.com/LightningMods/Itemzflow) - Run your game. ### Storage * Use `FTP` to upload patch files to: * `/user/data/GoldHEN/patches/xml/` * Naming conversion for app and patch engine to recognize: `(TitleID).{format}` * e.g. `CUSA00001.xml` * e.g. `CUSA03694.xml`
## Usage (PS5) To be written.

Developing patches

Plugin system and GoldHEN Cheat Manager looks for patches by (TitleID).{format}. (this is automatically generated from a python script using app_titleid key when downloading/updating)
You may edit the individual file for your Title ID or edit the base file and upload it to your PS4 as (TitleID).{format}.

export PS4_IP=192.168.1.138 # your PS4 ip address
export PS4_FTP_PORT=2121 # your PS4 ftp port (2121 via GoldHEN payload)
# sending base file as CUSA00000.xml
curl -T ExampleGame.xml ftp://$PS4_IP:$PS4_FTP_PORT/data/GoldHEN/patches/json/CUSA00000.xml
# sending CUSA00000.xml as CUSA00000.xml
curl -T CUSA00000.xml ftp://$PS4_IP:$PS4_FTP_PORT/data/GoldHEN/patches/json/CUSA00000.xml

Creating a patch

Set base address to 0x00400000 when importing binaries for consistency with PS4 memory address. (ASLR disabled)

Submission Guidelines

Patch types

type Info Value (example)
byte Hex, 1 byte "0x00"
bytes16 Hex, 2 bytes "0x0000"
bytes32 Hex, 4 bytes "0x00000000"
bytes64 Hex, 8 bytes "0x0000000000000000"
bytes Hex, max size is 255 bytes string (no spaces) "####"
float32 Float, single "1.0"
float64 Float, double "1.0"
utf8 String, UTF-8 "string"
utf16 String, UTF-16 "string"
mask Pattern Scan, max size is 255 bytes string (with spaces)
Parameters:
Offset: Offset from first address of found address
"aa bb ?? dd"
mask_jump32 Pattern Scan With Branch (32 bit), max size is 255 bytes string (with spaces)
Parameters:
Target: target bytes string for branch
Size: size of jump (min: 5) with nop padding after
Offset: Offset from first address of found address
"aa bb ?? dd"

Example patch

<?xml version="1.0" encoding="utf-8"?>
<Patch>
    <!--
      This will not be used by the game patch parser.
      It is only used for generating the files for distribution.
    -->
    <TitleID>
        <ID>EXAMPLE01</ID>
        <ID>EXAMPLE02</ID>
    </TitleID>
    <!-- `AppVer="mask"` can be used for pattern scan patches --> 
    <!-- `ImageBase` is only valid for PS5 patches. -->
    <!-- `ImageBase` can be `0x0000000000000000`, the plugin will use relative offset -->
    <Metadata Title="Example Game Title"
              Name="Example Name"
              Note="Example Note"
              Author="Example Author"
              PatchVer="1.0"
              AppVer="00.34"
              AppElf="eboot.bin">
        <PatchList>
            <!-- This is a code comment, improves code readability. -->
            <!-- Code comment at end of line is also supported. -->
            <Line Type="bytes" Address="0x00000000" Value="0102030405060708"/>
            <Line Type="utf8" Address="0x00000000" Value="Hello World"/>
        </PatchList>
    </Metadata>
</Patch>