PPSSPP: a PS5-free way to run PSP games on Android, Windows, Mac and iOS
A PSP emulator for Android, Windows, Mac, Linux and iOS, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues.
At a glance
- What is it?
- PPSSPP is an HLE PSP emulator written in C++ that needs no BIOS file. This review covers what it does, how to install it, its texture upscaling and ad-hoc networking, and where it falls short.
- Who is it for?
- Adopt PPSSPP if you want a no-BIOS PSP emulator that runs on Android, Windows, Mac, Linux and iOS and you are prepared to supply your own game images. Do not adopt it if you expect a bundled game library, a legally clean way to obtain ISOs, or a documented rollback path for every release.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What PPSSPP solves, and who it is actually for
A PSP is a closed handheld with a proprietary disc format, a region-locked store and a battery that eventually stops holding charge. PPSSPP exists to run that console's software on hardware you already own, without a BIOS dump. The README states plainly that no BIOS file is required because PPSSPP is an HLE emulator: instead of executing Sony's firmware, it reimplements the syscalls and modules that games call. That single design decision is why a new user can install an APK, point the app at a game image and be playing in minutes rather than hunting for a firmware dump.
The audience is broader than retro purists. The repository ships an Android Gradle build, a Windows solution, a macOS target, an iOS target, a UWP folder and a libretro core, so the same codebase serves phone players, desktop players and frontend users. The project also carries a headless build, which matters to a different group entirely: people who want to run the emulator without a window, for scripted testing or automation. The README points contributors to a development guide and an AI policy, which tells you the maintainers expect code contributions, not just bug reports.
What it is not is a game store. The repository contains no game data, and the README's only pointer on that front is the community compatibility report at report.ppsspp.org, which records how well individual titles behave. Everything about obtaining a game image is outside the project.
How the HLE core, renderers and texture upscaling fit together
The top-level layout is the clearest description of the architecture. Core/ holds the emulation itself: the CPU interpreter and JIT, the HLE implementations of PSP kernel modules, the memory and timing model. GPU/ holds the graphics backends that translate PSP's GE command stream into something a modern API understands. UI/ holds the interface, and SDL/, Windows/, android/, ios/, UWP/ and libretro/ are the platform shells that bind the core to a window, an input device and an audio sink.
That split explains a recurring pattern in the release notes: a fix lands in the shared core and shows up on several platforms at once, while platform-specific work stays in its own directory. The 1.20.4 notes include a Mac and iOS crash fix in text edit fields, an Android file picker regression, and pause-on-lost-focus on Linux, all in the same release as core-level rendering fixes for lens flare occlusion in the Syphon Filter games.
Texture upscaling is the most visible GPU-side feature. The 1.20.4 notes mention NNEDI3 and Spline36 GPU texture scaling, an old bug where textures could get stuck unscaled on some hardware, and improved performance for the MMPX-adv upscaler. The 1.20.3 notes record that the original MMPX algorithm was restored and the newer one renamed MMPX Advanced. Read together, those entries describe a feature that has been actively reworked rather than settled, and the trade-off is the usual one: sharper textures cost GPU time, and the notes themselves flag a hardware-specific scaling bug, which means results can differ between devices running the same settings.
Input handling has grown well past a keyboard map. Native support for DualSense, DualShock and Switch Pro controllers appears in the 1.20 notes, alongside a hold version of the axis swap toggle in 1.20.2 and a fix for gamepad input timing glitches on Windows in the same release. If you play with a controller, the project clearly treats that as a first-class path.
Installing PPSSPP and running your first game image
The README does not give a step-by-step install for end users. It points to the official website at ppsspp.org, and for development builds to the /devbuilds page, which the README says carries fresh builds for Android, Windows and Mac. On Android the practical route is to install the APK from that page or from a store listing, then launch the app. On desktop, install the build for your platform from the same source. On iOS the README notes basic deep link support arrived in 1.20.4, which is a UI-level convenience rather than an install method.
If you would rather build it yourself, the repository provides a shell script. The README directs readers to the wiki for build instructions, and the script below is the one the project's own Dockerfile invokes for the headless target.
cd src && ./b.sh --headlessThat produces a headless binary rather than the normal GUI application, so it is the wrong command if you want a window. The project's Dockerfile shows the dependency set it expects on Alpine, including cmake, python3, sdl3-dev and sdl3_ttf-dev, and then runs the binary once with `PPSSPPHeadless || true` so the image build does not fail on a missing configuration.
Once the GUI build is running, the first real use is unglamorous: put a game image somewhere the app can read, open the game browser, and select it. The 1.20.4 notes mention instant type-to-search in the game browser and basic support for extracting ISO from 7zip files, so a compressed image may be usable directly. The README's claim that no BIOS is needed means you should not be prompted for one; if you are, something in your setup differs from a stock install.
Ad-hoc multiplayer: the part with the most caveats
PPSSPP's multiplayer support is not a single feature but a relay system that has been rebuilt across several releases. The 1.20 notes record support for aemu relay servers. The 1.20.2 notes describe an improved server list that is dynamically updated and lets you add or remove entries, plus relay connection improvements. By 1.20.3 there is a fix for relay servers failing when RetroAchievements are enabled on Windows, and 1.20.4 adds support for a data.json live status feed from adhoc relay servers.
The pattern is telling. Each release fixes relay behaviour for a specific title or a specific interaction: The Warriors and Street Riders in 1.20.4, Syphon Filter in 1.20, a GripShift regression in 1.20.2. That is not a knock on the implementation so much as a description of what ad-hoc emulation involves. Games that assume a local wireless link behave differently when the link is a relay server, and the failure modes are per-title. If multiplayer is your main reason for choosing PPSSPP, the compatibility report and the issue tracker are more useful than the release notes, because the notes only record what was fixed, not what still fails.
The RetroAchievements interaction is worth noting separately. The 1.20.3 fix implies that enabling achievements could previously break relay connections on Windows, which is the kind of cross-feature coupling that appears when two subsystems both touch the network stack. The 1.20.4 notes also mention RetroAchievements UI improvements around subsets, so that integration is still being shaped.
Where PPSSPP is the wrong tool
The licence is the first thing to check and the hardest to summarise. The repository's licence field reads NOASSERTION, while the README states the project was originally released under GPL 2.0 and later in November 2012. Those two statements are not the same claim, and the LICENSE.TXT file in the repository root is the only place that settles it. If you plan to redistribute a build, bundle it in a product, or ship it in a store, read that file rather than the README summary. This is not legal advice, and the discrepancy is exactly the kind of thing a lawyer should look at before you rely on either statement.
Game compatibility is the second boundary. The README links to community feedback rather than publishing a supported-title list, and the release notes are a record of individual games being fixed: Death JR music looping, Tony Hawk's Project 8 soundtrack, Beats built-in songs, GTA LCS custom songs. A long list of per-title fixes is evidence of effort, not evidence that your particular game works. Some titles will have glitches, and the 1.20.4 notes even describe a frameskipping interaction where analog stick auto-rotation in God of War works but manual rotation remains broken. That is a live, documented defect.
Hardware-specific behaviour is the third. The texture upscaling bug that left textures unscaled on some hardware, and the note that the software renderer needed a fix, both point to results that depend on your GPU and driver. If you are evaluating PPSSPP for a fleet of identical devices, that is manageable. Across a mixed fleet, it is not.
Finally, the project has no documented rollback procedure. The README does not document rollback, and nothing in the release notes describes how to revert a build that regresses a game you play. Savestate undo exists as a UI feature, but that is a different problem.
PPSSPP against RetroArch's libretro core
The most direct alternative is RetroArch, and the repository itself contains the reason to consider it: there is a libretro/ directory at the top level, meaning PPSSPP ships as a libretro core. The difference is architectural rather than functional. RetroArch supplies one frontend, one input configuration system and one shader pipeline across many emulated systems, and PPSSPP runs inside that shell. Standalone PPSSPP supplies its own UI, its own per-game settings, its own touch control layout and its own Android and iOS apps.
The trade-off is control versus consistency. Standalone PPSSPP gets features first and gets them in a form the upstream developers designed: portrait mode UI, separate touch and display layouts for landscape and portrait, instant type-to-search in the game browser, native DualSense support. Those are frontend features, and a libretro frontend will not present them the same way. In exchange, RetroArch gives you one place to manage a library that spans several consoles, which matters if the PSP is one of five systems you play.
A second alternative is running the games on original hardware with a memory stick adapter. That sidesteps emulation accuracy entirely, at the cost of the hardware's battery, its screen and its region behaviour. It is not a software comparison, but it is the honest baseline against which any emulator should be judged.
If you want PPSSPP's headless binary for scripted runs, neither alternative helps. The headless target is specific to this project, and the Dockerfile shows how the maintainers build it themselves.
Maintenance, upgrades and what the release cadence costs you
The last push to the repository was on 2026-09-21, the same day as the most recent release listed, v1.20.4, which is dated 2026-05-16. The two prior releases, v1.20.3 and v1.20.2, landed five days apart in March 2026. That pattern, a burst of point releases followed by a longer gap, is consistent with the 1.20.4 notes describing themselves as an unusually big followup release covering a longer gap to 1.21.
For an emulator, a long gap between releases is not automatically a problem, but it changes what upgrading means. Fixes accumulate on master, and the README points users who want fresh builds at the /devbuilds page. Development builds are the fastest way to get a fix for a specific game, and also the least predictable, since they carry whatever landed that day. If a game you play regressed, the practical move is to check whether a development build already contains the fix rather than waiting for the next tagged release.
The upgrade cost is mostly in configuration rather than code. Per-game settings, savestates and texture packs live outside the binary, and the 1.20.4 notes include a fix for a bug that prevented certain texture packs from loading, plus a change to hide the save-load indicator by default. Settings that were added in one release, such as the configurable savestate count limit in 1.20, persist across upgrades, which means a configuration carried over from an older build can reference options that have since changed meaning.
Editorial conclusion
Adopt PPSSPP if you want a no-BIOS PSP emulator that runs on Android, Windows, Mac, Linux and iOS and you are prepared to supply your own game images. Do not adopt it if you expect a bundled game library, a legally clean way to obtain ISOs, or a documented rollback path for every release. Before installing, verify the build for your platform on the project's devbuilds page, confirm the licence terms in LICENSE.TXT, and check the community compatibility report for the specific game you care about.
Frequently asked questions
Is PPSSPP free?
The README describes PPSSPP as originally released under GPL 2.0 and later in November 2012, while the repository's licence field reads NOASSERTION. Check LICENSE.TXT in the repository root for the terms that actually apply to a given build.
Is PPSSPP illegal?
The project itself is an emulator released as open source, and the README states no BIOS file is required because it is an HLE emulator. The repository contains no game data, so anything about the legality of game images depends on where you obtained them, which the project does not address.
How do I install games on my PPSSPP?
The README does not give install steps for game images. It points to the official website for documentation and to report.ppsspp.org for community compatibility feedback, and the 1.20.4 notes mention that basic support for extracting ISO from 7zip files was added.
How do I use PPSSPP on Android?
The README points to the /devbuilds page for fresh development builds for Android, and the repository contains a full android/ Gradle build. The 1.20 notes describe portrait mode UI support, separate touch control layouts for landscape and portrait, and a fix for file picker problems on some Android devices in 1.20.4.
How do I use PPSSPP cheats?
The 1.20.4 release notes state that the cheat UI was cleaned up and now supports titles and comments natively. The README does not document a cheat file format or a path for cheat databases.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/hrydgard-ppsspp)