Where things stand
2,903 of 3,383 declared functions implemented
1,166 of 1,166 instructions handled by the recompiler
- 49 of 109 tracked libraries have every declared function implemented.
- 480 declared functions are still stubs that throw when called; 7 libraries have nothing implemented yet.
- The largest remaining gaps are in libSceFont (76 left), libkernel (44 left), libSceAgc (31 left), libScePsml_debug (25 left), libSceFontFt (19 left).
Raw data: the official progress dashboard and its progress.json.
What the numbers mean, and what they do not
The figures are produced by a script in the repository, tools/progress.py, which scans the source of each library. A function counts as
pending when its body calls the project's “not implemented” helper, and as implemented otherwise.
- The denominator is “functions the project has declared so far”. The README says so directly: it is not every PS5 system function, and the total grows as more are declared. The percentage can go down when new stubs are added.
- Implemented does not mean verified. The progress notes say the counts do not describe verified ABI compatibility or playable games.
- Shader coverage is about instructions, not rendering. Decoding every instruction is necessary, but a frame also depends on memory, synchronisation and the graphics driver layer behaving correctly together.
For actual game results, the only authority is the compatibility list.
Library table
109 libraries with declared functions, from the dashboard data. Type to filter, or show only unfinished ones.
| Library | Implemented | Declared | Left | Coverage |
|---|---|---|---|---|
libc |
671 | 677 | 6 | 99% |
libkernel |
503 | 547 | 44 | 92% |
libkernel_sys |
6 | 8 | 2 | 75% |
libReactNative.Modules.Vsh |
0 | 4 | 4 | 0% |
libReactNative.Modules.Vsh.WebAppLauncher |
0 | 7 | 7 | 0% |
libSceAcm |
6 | 8 | 2 | 75% |
libSceAgc |
198 | 229 | 31 | 86% |
libSceAgcDriver |
40 | 51 | 11 | 78% |
libSceAjm.native |
30 | 35 | 5 | 86% |
libSceAmpr |
130 | 147 | 17 | 88% |
libSceAppContent |
11 | 13 | 2 | 85% |
libSceAudio3d |
13 | 13 | 0 | 100% |
libSceAudiodec |
6 | 6 | 0 | 100% |
libSceAudioIn |
4 | 8 | 4 | 50% |
libSceAudioOut |
31 | 47 | 16 | 66% |
libSceAudioPropagation |
22 | 23 | 1 | 96% |
libSceAvPlayer |
28 | 28 | 0 | 100% |
libSceBluetoothHid |
5 | 8 | 3 | 63% |
libSceCdlgG2P |
7 | 7 | 0 | 100% |
libSceCdlgPlayerReview |
7 | 7 | 0 | 100% |
libSceCesCs |
3 | 3 | 0 | 100% |
libSceCommonDialog |
2 | 2 | 0 | 100% |
libSceContentDelete |
2 | 4 | 2 | 50% |
libSceContentExport |
2 | 10 | 8 | 20% |
libSceContentSearch |
2 | 11 | 9 | 18% |
libSceConvertKeycode |
2 | 3 | 1 | 67% |
libSceErrorDialog |
6 | 6 | 0 | 100% |
libSceFiber |
12 | 12 | 0 | 100% |
libSceFont |
119 | 195 | 76 | 61% |
libSceFontFt |
23 | 42 | 19 | 55% |
libSceGameLiveStreaming |
3 | 4 | 1 | 75% |
libSceGameUpdate |
6 | 7 | 1 | 86% |
libSceHmd |
9 | 9 | 0 | 100% |
libSceHmd2 |
1 | 17 | 16 | 6% |
libSceHttp |
58 | 61 | 3 | 95% |
libSceHttp2 |
35 | 42 | 7 | 83% |
libSceIme |
13 | 14 | 1 | 93% |
libSceImeDialog |
8 | 8 | 0 | 100% |
libSceJobManager |
11 | 12 | 1 | 92% |
libSceJpegDec |
5 | 5 | 0 | 100% |
libSceJpegEnc |
4 | 4 | 0 | 100% |
libSceJson2 |
92 | 97 | 5 | 95% |
libSceKeyboard |
6 | 6 | 0 | 100% |
libSceLibcInternal |
9 | 9 | 0 | 100% |
libSceLoginDialog |
7 | 7 | 0 | 100% |
libSceMbus |
4 | 4 | 0 | 100% |
libSceMouse |
4 | 4 | 0 | 100% |
libSceMsgDialog |
10 | 10 | 0 | 100% |
libSceMsgDialog.native |
10 | 10 | 0 | 100% |
libSceNet |
46 | 50 | 4 | 92% |
libSceNetCtl |
10 | 10 | 0 | 100% |
libSceNetCtlApDialog |
0 | 6 | 6 | 0% |
libSceNgs2.native |
32 | 36 | 4 | 89% |
libSceNpAuth |
5 | 8 | 3 | 63% |
libSceNpCommerce |
10 | 11 | 1 | 91% |
libSceNpEntitlementAccess |
15 | 21 | 6 | 71% |
libSceNpGameIntent |
4 | 4 | 0 | 100% |
libSceNpManager |
30 | 34 | 4 | 88% |
libSceNpPartner001 |
0 | 2 | 2 | 0% |
libSceNpSessionSignaling |
12 | 16 | 4 | 75% |
libSceNpTrophy2 |
17 | 18 | 1 | 94% |
libSceNpUniversalDataSystem |
41 | 41 | 0 | 100% |
libSceNpUtility |
5 | 5 | 0 | 100% |
libSceNpWebApi2 |
25 | 27 | 2 | 93% |
libSceOpusCeltDec |
0 | 6 | 6 | 0% |
libSceOpusDec |
6 | 6 | 0 | 100% |
libScePad |
24 | 35 | 11 | 69% |
libScePlayerInvitationDialog |
7 | 7 | 0 | 100% |
libScePlayerSelectionDialog |
1 | 1 | 0 | 100% |
libScePlayGo |
18 | 18 | 0 | 100% |
libScePlayGoDialog |
7 | 7 | 0 | 100% |
libScePngDec |
5 | 5 | 0 | 100% |
libScePngEnc |
4 | 4 | 0 | 100% |
libScePosixForWebKit |
10 | 10 | 0 | 100% |
libSceProprietaryVoiceChatHelperPrx |
0 | 4 | 4 | 0% |
libScePsml_debug |
3 | 28 | 25 | 11% |
libSceRandom |
1 | 1 | 0 | 100% |
libSceRazorCpu |
9 | 9 | 0 | 100% |
libSceRemoteplay |
3 | 3 | 0 | 100% |
libSceRtc |
34 | 34 | 0 | 100% |
libSceRudp |
17 | 17 | 0 | 100% |
libSceSaveData |
9 | 9 | 0 | 100% |
libSceSaveData.native |
25 | 28 | 3 | 89% |
libSceSaveDataDialog |
8 | 8 | 0 | 100% |
libSceSaveDataDialog.native |
10 | 10 | 0 | 100% |
libSceShare |
16 | 17 | 1 | 94% |
libSceShare.native |
9 | 13 | 4 | 69% |
libSceSharePlay |
3 | 3 | 0 | 100% |
libSceSigninDialog |
4 | 7 | 3 | 57% |
libSceSsl |
8 | 17 | 9 | 47% |
libSceSysmodule |
8 | 8 | 0 | 100% |
libSceSystemGesture |
19 | 22 | 3 | 86% |
libSceSystemService |
19 | 26 | 7 | 73% |
libSceTextToSpeech2 |
1 | 8 | 7 | 13% |
libSceUlt |
33 | 35 | 2 | 94% |
libSceUsbd |
11 | 30 | 19 | 37% |
libSceUserService |
21 | 21 | 0 | 100% |
libSceVdecsw |
13 | 13 | 0 | 100% |
libSceVideodec2 |
11 | 11 | 0 | 100% |
libSceVideoOut |
40 | 41 | 1 | 98% |
libSceVideoRecordingP |
2 | 9 | 7 | 22% |
libSceVoice |
17 | 22 | 5 | 77% |
libSceVoiceChat |
8 | 8 | 0 | 100% |
libSceVoiceQoS |
1 | 13 | 12 | 8% |
libSceVrSetupDialog |
6 | 6 | 0 | 100% |
libSceVrTracker2 |
0 | 6 | 6 | 0% |
libSceWebBrowserDialog |
7 | 10 | 3 | 70% |
libSceZlib |
5 | 5 | 0 | 100% |
ulobjmgr |
2 | 2 | 0 | 100% |
| Total | 2,903 | 3,383 | 480 | 85.81% |
Libraries that only wrap another library's sources, or export nothing, are left out here as they are on the upstream map.
Shader instructions by group
The recompiler decodes the PS5's GPU shader code and emits SPIR-V. Upstream tracks coverage per instruction group; all 20 groups are currently complete.
| Group | Handled | Total | Coverage |
|---|---|---|---|
DS |
123 | 123 | 100% |
EXP |
1 | 1 | 100% |
FLAT |
54 | 54 | 100% |
GLOBAL |
57 | 57 | 100% |
MIMG |
130 | 130 | 100% |
MTBUF |
16 | 16 | 100% |
MUBUF |
75 | 75 | 100% |
SCRATCH |
22 | 22 | 100% |
SMEM |
20 | 20 | 100% |
SOP1 |
65 | 65 | 100% |
SOP2 |
51 | 51 | 100% |
SOPC |
18 | 18 | 100% |
SOPK |
27 | 27 | 100% |
SOPP |
37 | 37 | 100% |
VINTRP |
3 | 3 | 100% |
VOP1 |
81 | 81 | 100% |
VOP2 |
51 | 51 | 100% |
VOP3 |
116 | 116 | 100% |
VOP3P |
29 | 29 | 100% |
VOPC |
190 | 190 | 100% |
Timeline
| Date (UTC) | Event |
|---|---|
| Aug 3, 2026 | Repository created on GitHub |
| Sep 28, 2026 | v0.1.0 released with 8 files and 61 listed changes |
| Sep 28, 2026 | v0.1.1 released with 8 files and 10 listed changes |
| Oct 11, 2026 | Most recent push to main at the time of syncing |
The latest tagged build is v0.1.1. See the release history for what changed in it.
GitHub activity
| Stars | 29,410 |
| Forks | 2,528 |
| Contributors | 253 |
| Merged pull requests | 1,904 |
| Open issues and pull requests | 646 |
| Age of the repository | 69 days |
| Primary language | C++ |
| Licence | GPL-2.0 |
That is roughly 28 merged pull requests per day since the repository was created. The project manages the volume with strict intake rules, described in CONTRIBUTING.md, and documents its design in ARCHITECTURE.md.