The Vita3K patching system is designed for things like "60 FPS" patches, similar to the tool it was inspired by, VitaGrafix.
Using Patches
Warning
This system is NOT fully compatible with VitaGrafix patches... yet. You will need to use Vita3K specific patches.
Within the Vita3K patch folder, there are two places you can add patch code:
- A
.txtfile with the game's Title ID. It can also contain multiple Title IDs, and can also contain arbitrary text (such asPCS0000_60FPS.txt) - A global
patchlist.txtfile
Using game-specific files
In game-specific patch files, you can either paste the patch code with nothing else:
0:0xFFFF 0x01
or specify the binary to apply the patch to:
[my_game.self]
0:0xFFFF 0x01
Using a patchlist.txt file
In patchlist.txt, you can specify the Title ID and binary in the header:
[PCSE00999, eboot.bin]
0:0xFFF 0x01
the binary is eboot.bin by default, so it is optional:
[PCSE00999]
0:0xFFF 0x01
Writing Patches
Finding what you need to patch requires some reverse-engineering and technical know-how. A good guide, written for VitaGrafix, can be found here: https://wp.yuki.pet/make-your-own-patch-for-vitagrafix/ (archive.org, archive.ph)
The same principles apply, the format and helpers you are given by Vita3K are a little bit different though.
Format
A patch's header is formatted like so:
[TITLE_ID, BINARY]
A patch's segments are formatted like so:
# Comments are also supported
# <byte> can also be a helper call, like t1_mov(0, 1)
<seg>:<offset> <hex1> <hex2> <...hexN>
Need help? Take a look at the example.
Helpers
Like VitaGrafix, there are helpers you can use rather than writing raw hex values, such as t1_mov(). You can find all available helpers in the instructions.h header file.
Example
The patch used to test the implementation of this system was a 60 FPS patch for Project Diva F2nd. It was converted from this VitaGrafix PR.
# 60 FPS
# This "eboot.bin" header is optional, since it assumes "eboot.bin" if none is specified
[PCSB00554, eboot.bin]
0:0xA994 t1_mov(0, 1)
0:0xAAF2 0xF7EE000A
0:0x2896F6 0xDCF88083
0:0x2896FE 0xDCF88493
0:0x2849b4 0x2022