emulator: PPSSPP type: standalone + libretro core_classification: official_port source: "https://github.com/hrydgard/ppsspp" profiled_date: "2026-10-21" source_commit: "c86d7a268d1ce9a94ae3be662f987c5b6a724ef9" core_version: "Git" display_name: "Sony - PlayStation Portable (PPSSPP)" cores: - ppsspp - "PPSSPPSDL" systems: [sony-psp] pack_structure: libretro: "PPSSPP" data_directories: - ref: ppsspp-assets installed_on: [batocera, emudeck, lakka, recalbox, retrobat, retrodeck, retropie] mode: libretro destination: "" source_ref: "libretro/libretro.cpp:1216-1225, libretro/libretro.cpp:1271" notes: | Full HLE emulator. No Sony firmware or BIOS required. The libretro core is built from hrydgard/ppsspp, the tree of the standalone emulator, with its wrapper in libretro/. Libretro core loads assets from system/PPSSPP/ via VFS (libretro/libretro.cpp:1216-1225, 1271) and warns that core system files are missing when compat.ini is absent (libretro/libretro.cpp:1229-1261). Assets include replacement PGF fonts (flash0/font/), game compatibility database (compat.ini), language mapping (langregion.ini), and post-processing shaders (shaders/). Fonts are read from the game disc, then from flash0:/font of the NAND, then from flash0/font/ in system/PPSSPP/ (Core/HLE/sceFont.cpp:1026-1048). Without any of them the font library holds no internal font and sceFontOpen returns SCE_FONT_ERROR_INVALID_PARAMETER to the game (Core/HLE/sceFont.cpp:1197-1199), so text a game draws with the PSP system fonts is lost. Without ppge_atlas.zim the system dialogs are not drawn (Core/Util/PPGeDraw.cpp:252-255). A real firmware is optional. The NAND is /PSP/NAND (Core/Util/PathUtil.cpp:146-147), which the libretro core places under the save directory (libretro/libretro.cpp:1265, 1269). On boot, a game disc carrying a newer firmware updater than the installed one is unpacked into it (Core/System.cpp:591-594). Its flash0:/font, kd/libmp4.prx, kd/mp4msv.prx and kd/mpeg.prx replace the HLE modules when present (Core/HLE/HLE.cpp:408-446). PSP_DEFAULT_FIRMWARE = 660 (Core/ConfigValues.h:40). files: - name: "ppge_atlas.zim" installed_on: [batocera, emudeck, lakka, recalbox, retrobat, retrodeck, retropie] mode: libretro path: "PPSSPP/ppge_atlas.zim" description: "PPGe dialog texture atlas for save/load dialogs, on-screen keyboard, system UI" required: false source_ref: "Core/Util/PPGeDraw.cpp:252-255" note: "Logged as an error if missing. System dialogs render without graphics but core continues running. Batocera, Recalbox, Lakka, RetroPie, RetroBat, EmuDeck and RetroDECK install the assets folder where their core reads it." - name: "ppge_atlas.meta" installed_on: [batocera, emudeck, lakka, recalbox, retrobat, retrodeck, retropie] mode: libretro path: "PPSSPP/ppge_atlas.meta" description: "PPGe atlas metadata (glyph positions, UV coords)" required: false source_ref: "Core/Util/PPGeDraw.cpp:257-263" note: "Loaded after ppge_atlas.zim. Without it, dialog UI has no glyph layout. Batocera, Recalbox, Lakka, RetroPie, RetroBat, EmuDeck and RetroDECK install the assets folder where their core reads it." - name: "ppge_atlas.zim" mode: standalone path: "assets/ppge_atlas.zim" description: "PPGe dialog texture atlas for save/load dialogs, on-screen keyboard, system UI" required: false size: 666530 sha1: "30a33f3651f8e1b0967a5dfe6ff714baebcce41a" bundled: true source_ref: "Core/Util/PPGeDraw.cpp:252-255" note: "Shipped in assets/ of the PPSSPP 1.20.4 Windows zip, which the standalone reads it from." - name: "ppge_atlas.meta" mode: standalone path: "assets/ppge_atlas.meta" description: "PPGe atlas metadata (glyph positions, UV coords)" required: false size: 50242 sha1: "ab398f667d6fd778859307c105fe16388b8fdf63" bundled: true source_ref: "Core/Util/PPGeDraw.cpp:257-263" note: "Shipped in assets/ of the PPSSPP 1.20.4 Windows zip, beside ppge_atlas.zim."