Skip to content

GoldHEN/GoldHEN_Patch_Repository

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoldHEN Patch Repository

Custom Game Patches for PlayStation 4 Games.

Features

  • .xml support

Usage

Manual Installation (Offline via HDD)

  • Download patch zip.
  • Copy patch1.zip to /data/GoldHEN/ using an FTP client.
  • Open GoldHEN Cheat Manager and click Update.
  • If the patches was installed correctly from Internal HDD, you should see the following message:
Screenshot (Click to Expand)

Manual Installation (Offline via USB)

  • Download patch zip.
  • Copy patch1.zip to root of USB drive.
  • Open GoldHEN Cheat Manager and click Update.
  • If the patches was installed correctly from USB, you should see the following message:
Screenshot (Click to Expand)

Easy Installation

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

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
  • Repository naming conversion for single or multiple games: GameName.{format} (English names only)
    • e.g. ExampleGame.xml

Creating a patch

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

Submission Guidelines

  • Patch must be named GameTitle.json and be in /patches/json.
    For example, a patch file for Gravity Rush 2 must be called GravityRush2.json.
  • If you are making a patch for a game that already has a file, then add to it.
  • Submitting patches:
    • No whitespace.
    • Lowercase hex for address/value hex, uppercase for Title ID.

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"
  • Note: Strings must be manually null terminated.

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 --> 
    <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\x00"/>
        </PatchList>
    </Metadata>
</Patch>