TiltFX is an application made by Datel that adds tilt-based motion controls to the PSP.
It takes the form of a signed updater EBOOT (ie. PSP/GAME/UPDATE/EBOOT.PBP).
This simple tool will patch the TiltFX EBOOT executable to make it license-free.
TiltFX can then be used on any device without a license (nor the license files).
See below for the original (and deprecated) licensing process.
- Get the already patched TiltFX PSP app here
- Get the original TiltFX PSP app here or also in this repo
You need the following installed to run this tool:
- python 3
- pip and the following packages:
- PyCryptodome (
pip install pycryptodome) - ecdsa (
pip install ecdsa)
- PyCryptodome (
Due to the way it works, TiltFX only works on firmware 6.20 max.
It was also tested working on 6.20 TN-E Extended, but not 6.20 PRO C2.
Clone this repo, then open a shell in this directory.
On Linux, first do this:
chmod +x tiltfx.pyThen generate the patched EBOOT.PBP file from the original application file.
./tiltfx.py data/TiltFX/EBOOT.PBP.ori EBOOT.PBP- Rename the generated file to
EBOOT.PBPif it's not the case - Copy it to your MemoryStick inside the
PSP/GAME/UPDATE/directory (overwrite any existing file) - TiltFX now appears in the games section
Technical details for the curious folks.
The only way to get a valid license is using Datel's TiltFX Setup tool on PC.
It has become useless since their server is offline, however, it worked as follows:
- Read the
ms0:/TILTFX/id.txtfile from the MemoryStick which contains a per-device ID.
This ID string is generated every time the PSP TiltFX app is run.
It's basically the PSP FuseID encrypted with AES using Datel's 128-bits static key. - Compute the SHA-1 hash of the read ID string.
- Send the computed SHA-1 hash to Datel's server.
- Datel signs the received hash with their RSA-1024 private key.
- Receive the RSA signature of the hash from the server.
- Save the RSA signature data to a new
ms0:/TILTFX/license.datfile.
The PSP TiltFX application then verifies the RSA signature with the public key.
It sets a global variable to true when it's valid, and false otherwise.
See the checkLicense() function at address 0000d79c in the executable:

The patch makes it always set the global variable to true.
See this gist for the id.txt generation algorithm.
XSpalter for providing the original TiltFX PSP binary (EBOOT.PBP)
Davee for his psptools taken from Infinity
Linblow for this patcher