3 Patches
SpikeHD edited this page 2026-01-12 18:30:47 -08:00

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:

  1. A .txt file with the game's Title ID. It can also contain multiple Title IDs, and can also contain arbitrary text (such as PCS0000_60FPS.txt)
  2. A global patchlist.txt file

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