Offline achievements for real PlayStation Portable hardware.
PSP Achievements System is a GAME-mode kernel plugin for custom-firmware PSP consoles. The current runtime, PSPAchievementsNG, evaluates achievement conditions directly from game memory and provides unlock notifications, sound, badge artwork, persistent profiles, live progress, and an in-game achievement browser.
The plugin works locally after installation. Version 2.0.0 does not require an account or a permanent network connection.
Important
This public repository and its releases do not contain RetroAchievements trigger definitions or prebuilt .pach packages. RetroAchievements does not permit its achievement condition logic to be reused or redistributed. The project is now pursuing an official rcheevos/rc_client integration; until that work is complete, the public build alone cannot activate RetroAchievements sets.
Achievement metadata and badge artwork are provided by RetroAchievements. PSP Achievements System is independent and is not affiliated with or endorsed by RetroAchievements.
Important
PSPAchievementsNG 2.0.0 is compatible with profiles created by PSPAchievementsNG 1.0.0. Users of the older legacy PspAchievements.prx / PSP/ACH implementation must perform a clean migration.
- Real-time achievement evaluation on physical PSP hardware.
- Automatic game detection by PSP Game ID.
- Runtime support for separately supplied compatible achievement packages; none are distributed publicly by this project.
- Optional
.pbadbadge packs with locked and unlocked artwork. - Achievement notifications with a synthesized unlock sound.
- Persistent per-game profiles stored on the Memory Stick.
- Checksum validation, temporary writes, and automatic
.bakrecovery. - In-game achievement browser with badge artwork and descriptions.
ALL,LOCKED, andUNLOCKEDfilters.- Live measured progress such as
7 / 10where the achievement logic exposes it safely. - Configurable menu hotkey, notification duration, audio, logging, and performance mode.
- Memory-read caching and adaptive scheduling for large achievement sets.
- Fully local runtime after the plugin and matching game packages are installed.
| Device / environment | Status |
|---|---|
PSP-3000, ARK-4, Memory Stick path ms0: |
Tested and supported |
| PSP-1000 / PSP-2000 / PSP Street with ARK-4 | Expected to work; community verification needed |
PSP Go with external M2 storage exposed as ms0: |
Untested |
PSP Go internal storage ef0: |
Not supported in v2.0.0 |
| PRO-C / LME | Untested |
| PS Vita / Adrenaline | Not supported or tested |
| PPSSPP | Not a runtime target; the plugin is intended for real PSP hardware |
| Official firmware without CFW | Not supported |
Only the PSP-3000 + ARK-4 configuration is currently considered officially verified.
Game support is tied to the exact PSP Game ID and executable revision. A package for one region cannot be made compatible with another region by renaming it.
| Game | Region / revision | PSP Game ID | Achievements | Points | Evaluator | Status |
|---|---|---|---|---|---|---|
| Silent Hill: Origins | USA | ULUS-10285 |
66 | 666 | Full-rate | Tested on hardware |
| Dante's Inferno | USA | ULUS-10469 |
63 | 666 | Full-rate | Tested on hardware |
| Grand Theft Auto: Liberty City Stories | Europe v3.00 | ULES-00151 |
105 | 1016 | Adaptive | Tested on hardware |
| Grand Theft Auto: Vice City Stories | Europe v1.02 | ULES-00502 |
190 | 1532 | Adaptive | Tested on hardware |
| Metal Gear Solid: Peace Walker | USA | ULUS-10509 |
110 | 2100 | Ultra-heavy adaptive | Experimental |
Both GTA packages require the exact European revisions listed above. The USA and Russian ULUS-10160 release of Vice City Stories is not compatible with the European package. Large sets may still have a small performance cost because they contain substantially more conditions than the original three games.
See Supported Games for exact notes.
The public v2.0.0 release provides:
PSPAchievementsSystem-v2.0.0.zip
The archive contains the plugin, default configuration, documentation, and permitted badge artwork. It intentionally contains no .pach trigger packages.
-
Back up any existing PSP achievement profiles.
-
Remove or disable the legacy
PspAchievements.prxplugin entry. -
Extract the v2.0.0 plugin archive.
-
Copy its
SEPLUGINSdirectory to the root of the Memory Stick. -
Add this line to
ms0:/SEPLUGINS/GAME.TXT:ms0:/SEPLUGINS/PSPAchievementsNG/PSPAchievementsNG.prx 1 -
Restart the PSP completely.
The public build will load, but RetroAchievements unlock support requires the planned official rc_client integration. Prebuilt trigger packages are not provided.
Read the complete Installation Guide, especially when upgrading from a legacy release.
ms0:/
└── SEPLUGINS/
├── GAME.TXT
└── PSPAchievementsNG/
├── PSPAchievementsNG.prx
├── config.ini
├── games/
│ ├── ULUS-10285.pach
│ ├── ULUS-10285.pbad
│ ├── ULUS-10469.pach
│ ├── ULUS-10469.pbad
│ ├── ULES-00151.pach
│ ├── ULES-00151.pbad
│ ├── ULES-00502.pach
│ ├── ULES-00502.pbad
│ ├── ULUS-10509.pach
│ └── ULUS-10509.pbad
├── profiles/
│ ├── ULUS-10285.dat
│ ├── ULUS-10285.bak
│ └── ...
└── logs/
└── plugin.log
profiles/ and logs/ are created automatically. Do not place .pach or .pbad files in profiles/.
Hold the default hotkey for approximately 400 ms:
L + R + SELECT
| Control | Action |
|---|---|
| Up / Down | Select the previous or next achievement |
| Left / Right | Move one page |
| Triangle | Switch ALL / LOCKED / UNLOCKED |
| L / R | Jump to the first or last item in the current filter |
| Circle | Close the menu |
The game is temporarily paused while the menu is open to keep the framebuffer stable. The achievement evaluator is paused at the same time.
The plugin reads this file when a game starts:
ms0:/SEPLUGINS/PSPAchievementsNG/config.ini
Recommended configuration:
[general]
enabled = 1
logging = 1
[notifications]
enabled = 1
startup = 1
duration_ms = 4000
startup_duration_ms = 2500
[audio]
enabled = 1
volume = 100
startup_sound = 1
unlock_sound = 1
[menu]
enabled = 1
hotkey = L+R+SELECT
hold_ms = 400
show_badges = 1
[performance]
mode = autoKeep performance.mode = auto unless diagnosing a problem. Forcing full can make GTA and Peace Walker difficult to play.
See Configuration.
After launching a supported game, open:
ms0:/SEPLUGINS/PSPAchievementsNG/logs/plugin.log
A normal startup contains lines similar to:
PSPAchievementsNG 2.0.0
config loaded
game identification succeeded
game package found
achievement engine initialized
game package loaded
badge pack loaded
startup notification queued
achievement menu ready
The log is the first place to check when a package is missing, a region is unsupported, icons do not load, or performance is poor.
Each game receives its own profile:
profiles/GAME-ID.dat
profiles/GAME-ID.bak
The plugin writes new data to a temporary file, validates it, keeps the previous valid profile as .bak, and then replaces the main .dat. If the main profile becomes damaged, the plugin attempts to restore it automatically from the backup.
Back up the whole profiles/ directory before replacing a Memory Stick or performing a clean installation.
For updates within the PSPAchievementsNG line:
- Back up
profiles/. - Replace
PSPAchievementsNG.prx. - Replace
config.inionly when the release notes require it. - Keep existing
.pach,.pbad,.dat, and.bakfiles unless the release notes explicitly say otherwise. - Restart the PSP completely.
For migration from legacy repository releases, follow Legacy Migration.
PSPDEV / PSPSDK is required.
export PSPDEV="$HOME/pspdev"
export PATH="$PATH:$PSPDEV/bin"
make clean
make
make distOutput:
dist/PSPAchievementsNG.prx
dist/config.ini
The repository also includes GitHub Actions workflows that build the PRX and create release archives from version tags. See Building.
- Version 2.0.0 is offline-only; there are no accounts, cloud synchronization, public profiles, leaderboards, or social sharing.
- Only the exact Game IDs listed above are currently supported.
- PSP Go internal
ef0:storage is not supported. - Very large achievement sets can still cause a small performance cost.
- Some achievement definitions intentionally reject cheat-enabled game states.
- Badge packs are optional; achievements still work when
.pbadis missing. - Metal Gear Solid: Peace Walker support is experimental and needs additional unlock testing.
See Troubleshooting before opening an issue.
Create an issue and include:
- PSP model;
- CFW name and version;
- plugin version;
- game title, region, and exact Game ID;
- clear reproduction steps;
- whether the issue occurs with the achievement menu closed;
- the relevant section of
plugin.log.
Remove unrelated personal paths or data from logs before posting them.
The public Git repository intentionally excludes:
- captured service responses and raw trigger definitions;
- downloaded badge caches;
- compiled
.pachand.pbadgame packages; - player profiles, backups, and logs;
- PRX, ELF, object files, and local build output;
- old release archives,
.patch-backups, and operating-system metadata; - credentials, tokens, account data, or private endpoints.
Run this before every public commit:
make public-checkSee Repository Policy.
PSP Achievements System is an independent community project. It is not affiliated with or endorsed by Sony Interactive Entertainment, ARK-4, PPSSPP, or RetroAchievements. PlayStation and PSP are trademarks of their respective owners.
No open-source license has been selected for the repository yet. Source availability does not automatically grant redistribution or commercial-use rights. See License Notice.