A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org. https://www.ppsspp.org
  • C++ 64%
  • C 28.4%
  • POV-Ray SDL 4.3%
  • Shell 0.7%
  • CMake 0.6%
  • Other 1.8%
Find a file
Henrik Rydgård f0a6775792
Some checks are pending
Generate Linux AppImage / build (aarch64) (push) Waiting to run
Generate Linux AppImage / build (x86_64) (push) Waiting to run
Build / build-windows (ARM64) (push) Waiting to run
Build / build-windows (x64) (push) Waiting to run
Build / build-uwp (push) Waiting to run
Build / test-windows (push) Blocked by required conditions
Build / build (ios) (push) Waiting to run
Build / build (macos) (push) Waiting to run
Build / build (clang-normal) (push) Waiting to run
Build / build (gcc-normal) (push) Waiting to run
Build / build (macos-libretro) (push) Waiting to run
Build / build (android-libretro) (push) Waiting to run
Build / build (loongarch64) (push) Waiting to run
Build / build (android-vr) (push) Waiting to run
Build / build (android-arm64) (push) Waiting to run
Build / build (android-arm32) (push) Waiting to run
Build / build (android-x86_64) (push) Waiting to run
Build / build (clang-libretro) (push) Waiting to run
Build / build (gcc-libretro) (push) Waiting to run
Build / test (macos-latest) (push) Blocked by required conditions
Build / test (ubuntu-26.04) (push) Blocked by required conditions
Build / test-headless-alpine (push) Waiting to run
Generate Docker Layer / build (push) Waiting to run
Merge pull request #22122 from hrydgard/elf-reader-relax
ELF: resize the segment address table instead of rejecting ELFs with many program headers
2026-08-20 02:48:59 +02:00
.github CI: fetch the frametests submodule in the test job and always run frametests on Linux 2026-08-09 21:15:51 +02:00
.vscode More SDL GL context refactor 2026-08-03 17:52:56 +02:00
ai_instructions/mac_camera Move camera docs under ai_instructions/mac_camera 2025-11-09 12:25:03 +00:00
android Debugger: decode DWARF line info, and show source locations 2026-08-18 13:42:14 +02:00
assets iOS: Hide the status bar when immersive mode is enabled 2026-08-06 20:56:37 +02:00
cmake Also, let's run it on CI. 2026-05-25 13:29:03 +02:00
Common Merge pull request #22093 from hrydgard/debugger-work 2026-08-17 23:20:11 +02:00
Core Merge pull request #22122 from hrydgard/elf-reader-relax 2026-08-20 02:48:59 +02:00
docs Debugger: decode DWARF line info, and show source locations 2026-08-18 13:42:14 +02:00
ext Get rid of the confusing old USING_WIN_UI define. Make a more clear system property for headless. 2026-08-16 12:19:41 +02:00
ffmpeg@b87f7c6d52 Bump FFMPEG to fix x86-64 2026-07-24 21:15:45 +02:00
frametests@4a0a4e4b27 Frametests: bump submodule (maxMse 0.1 for CPU float noise) 2026-08-10 00:46:56 +02:00
GPU VSH prep: Free up kernel memory by not storing the PPGe atlas in it 2026-08-19 18:45:52 +02:00
gradle Upgrade gradlew 2026-07-26 10:21:59 +02:00
headless Add --memstick, so headless can use a real memory stick directory 2026-08-18 09:32:04 +02:00
icons Delete Symbian app icon 2025-08-08 09:34:04 +00:00
ios Replace System_SendDebugOutput with a registered callback 2026-08-11 22:36:47 +02:00
libretro Debugger: decode DWARF line info, and show source locations 2026-08-18 13:42:14 +02:00
macOS Hide the MMPX shader on Apple platforms, see #21261 2026-02-16 10:14:11 +01:00
pspautotests@6ba9cf9e1e Bump the tests, fixing the tls test and also the timezone conversion 2026-07-30 01:34:46 +02:00
scripts fix error 2026-04-18 03:24:48 -04:00
SDL Avoid frame pacing issues with SDL_GetPowerInfo on linux 2026-08-19 01:33:56 +02:00
source_assets Delete obsolete stuff from buttons.svg 2025-09-18 10:39:48 -06:00
Tools wsdbg: add --launch and --quiet, and stop teaching a redundant wait 2026-08-20 01:42:36 +02:00
UI Style and comment settings. Surface a setting in the ImDebugger. 2026-08-20 01:05:19 +02:00
unittest Add savestate serializer tests, fix three bounds-check bugs 2026-08-17 14:50:57 +02:00
UWP Debugger: decode DWARF line info, and show source locations 2026-08-18 13:42:14 +02:00
Windows Debugger: surface source line info in six more places 2026-08-18 13:42:14 +02:00
.editorconfig ppsspp.rc: remove mingw32 specific code 2025-01-19 10:32:58 +01:00
.gitattributes Make PSPOskConstants.cpp not binary anymore 2025-01-04 11:35:54 +01:00
.gitignore Frametests: variant suffix/compare-suffix for shared references, output dir 'out' 2026-08-09 13:41:39 +02:00
.gitlab-ci.yml libretro: set extra paths for webOS on gitlab CI 2026-04-06 20:20:05 +01:00
.gitmodules CI: fetch the frametests submodule in the test job and always run frametests on Linux 2026-08-09 21:15:51 +02:00
.ycm_extra_conf.py Unify the specified C++ standard as c++17. 2025-02-18 11:08:48 -06:00
AGENTS.md ImDebugger: Source column on the breakpoint list, and record learnings 2026-08-18 13:42:14 +02:00
appveyor.yml Appveyor: disable scanning for tests. 2017-03-20 07:22:11 -07:00
asciifont_atlasscript.txt Fix references to the old font files 2025-11-14 10:10:44 +01:00
b-appstore.sh Add USE_IAP option to b-appstore.sh 2025-05-25 11:22:05 +02:00
b-ios.sh Fix iOS build: use CMAKE_BINARY_DIR for git-version.cpp so it stays at the build root 2026-07-24 23:25:32 +02:00
b.sh Delete all support for Qt 2026-08-08 18:18:28 +02:00
build.gradle.kts Buildfixes, bump gradle 2026-08-05 00:15:56 +02:00
build_fontatlas.sh Minor cleanup of fontatlas scripts (they still need more cleanup) 2025-09-12 12:17:27 -06:00
build_ppgeatlas.sh Update buildatlas shell scripts 2025-07-02 20:26:22 +00:00
CLAUDE.md Some CMakeLists.txt reorganization, use EmuThread from SDL 2026-07-24 15:31:41 +02:00
CMakeLists.txt Lower minimum libpng version requirement to 1.6 for ARM targets that are not Android or iOS 2026-08-16 14:16:48 -05:00
CMakePresets.json cmake: fix mingw-w64 build 2025-01-10 21:27:12 +01:00
copyrelease.sh Fix some shell script permissions 2025-06-17 15:21:47 +02:00
copysym.sh iOS: Fix the copysym.sh script 2026-02-16 09:04:21 +01:00
Dockerfile Upgrade the Alpine CI build as well. 2026-06-16 21:09:14 +02:00
font_atlasscript.txt Fix references to the old font files 2025-11-14 10:10:44 +01:00
frametests.py Frametests: resolve headless path to absolute, handle launch failures 2026-08-09 21:37:36 +02:00
git-version.cmake Build: Avoid git-version regen if matching. 2022-12-24 17:42:09 +00:00
gradle.properties Android: Upgrade protobuf dependency to 0.10.0 2026-04-20 11:17:54 -06:00
gradlew Upgrade gradlew 2026-07-26 10:21:59 +02:00
gradlew.bat Upgrade gradlew 2026-07-26 10:21:59 +02:00
headless.py Scripts: use plain python in shebangs 2026-08-09 13:41:39 +02:00
history.md Relink the README and history 2026-03-02 23:40:15 +01:00
LICENSE.TXT Switch to "GPL 2.0 or later" for various reasons. I wrote most of the code I imported from Dolphin (which is GPL2-but-not-later), so it should be OK. 2012-11-04 23:24:00 +01:00
link_readme.py Fix readme 2023-09-08 17:03:05 +02:00
notinstalled.txt Add InnoSetup script to make a basic installer. 2013-10-15 11:55:02 +02:00
ppge_atlasscript.txt Comment out bloat 2025-07-03 11:41:10 +00:00
ppsspp.desktop.in Adding StartupWMClass to the .desktop file 2026-03-15 19:48:52 -03:00
ppsspp.iss Installer script fix 2025-11-23 11:11:18 +01:00
ppsspp_config.h Disable OpenGL on iOS 2026-08-06 17:45:37 +02:00
README.md README.md updates 2026-05-13 23:13:23 +02:00
settings.gradle.kts Add new config file for Android Studio's new gradle setup 2026-02-12 11:50:30 +01:00
tesselationhwON-mesa3drun.sh Fix some shell script permissions 2025-06-17 15:21:47 +02:00
test.py Bump the tests, fixing the tls test and also the timezone conversion 2026-07-30 01:34:46 +02:00

PPSSPP - a fast and portable PSP emulator

Created by Henrik Rydgård

Additional code by many contributors, see the Credits screen

Originally released under the GPL 2.0 (and later) in November 2012

Official website: https://www.ppsspp.org/

Discord: https://discord.gg/5NJB6dD

No BIOS file required to play, PPSSPP is an "HLE" emulator. Default settings balance good compatibility and speed.

To contribute, see Introduction to development. This page also includes our new AI policy.

Help with testing, investigating, or fixing bugs is always welcome. See the list of issues.

For the latest source code, see our GitHub page.

For documentation of all kinds (usage, reference, development), see the documentation on the main website

For build instructions and other development tutorials, see the wiki.

To download fresh development builds for Android, Windows and Mac, go to the /devbuilds page

For game compatibility, see community compatibility feedback.

What's new in 1.20.4

1.20.4 is an unusually big followup release, but given the new multiplayer developments, we need something to cover the longer gap to 1.21. During this cycle, I've mostly focused on UX improvements.

  • Ad-hoc

    • Support for "data.json" live status from adhoc relay servers (#21496, #21526)
    • RetroAchievements UI improvements around subsets (#21536)
    • Assorted ad-hoc UI improvements (#21530, #21510)
    • Fixes for The Warriors (#21464) and Street Riders (#21460) in relay mode
  • Texture upscaling

    • Fix old bug causing some textures to get stuck unscales on some hardware when using GPU texture upscaling (#21533)
    • Improved performance of MMPX-adv upscaler (#21555)
    • NNEDI3 and Spline36 GPU texture scaling (#21527)
  • Rendering fixes

    • Fix a bug in lens flare occlusion for the Syphon Filter games (#21511)
    • Fix a bug in the software renderer (#21648)
  • Misc UI improvements

    • Instant type-to-search in game browser (#21559, #21565, #21630)
    • Fix file picker problems on some Android devices (regression) (#21614, #21656)
    • Fix crash in text edit fields on Mac/iOS (#21601)
    • PSP DVD prototypes can now load directly (#21599, #21601)
    • Cheat UI has been cleaned up and supports titles and comments natively (#21590)
    • RetroAchievements subset display improvements (#21536)
    • Basic deep link support on iOS (#21615)
    • Soft keyboard has more symbols (#21625)
  • Other

    • Fix important (but mostly rare) crash bug affecting games that draw a lot (#21669)
    • More plugin zip files can now auto-install (#21556)
    • Pause on lost-focus on Linux (#21517)
    • Frameskipping no longer breaks analog stick auto-rotation in GoW, however manual rotation still broken (#21508)
    • Android: Restore "Landscape Auto" (#21482), the "Auto" screen rotation mode now overrides the user rotation lock (#21507)
    • Contribution by lrzlin: Loongarch improvements (#21499, #21595)
    • Basic support for extracting ISO from 7zip files (#21493)
    • Fix a bug that prevented loading certain texture packs (#21491)
    • Fix music looping in Death JR (#21490)
    • Hide the save-load indicator in the corner by default (#21528)
    • Fix crash in the remote debugger, by Nemoumbra (#21652)
    • Fix screenshot cropping bug (#21665)
    • mfplat.dll is no longer required on Windows unless you need camera/microphone (#21660)

What's new in 1.20.3

  • Fix issue preventing ad hoc relay servers from working when RetroAchievements are enabled on Windows (#21420)
  • Some ad hoc UI improvements (#21432, #21433)
  • Fix crash/failure setting the background on iOS (#21409)
  • Fix logging to file (#21412)
  • Networking settings cleanup (#21418)
  • Some fixes for assorted rare crashes (#21422)
  • Fix issues when unpausing using a controller binding (#21424), DualSense Edge detection on Windows (#21426)
  • Fix missing savestate undo button (#21425)
  • MMPX texture upscaling algorithm has been restored, the new one has been improved (#21376) and renamed MMPX Advanced (#21421)
  • Fix support for custom game config for homebrew apps (#21434)
  • Improve insets handling on Android (#21437)

What's new in 1.20.2

  • Improved server list for ad hoc multiplayer, dynamically updated and you can now add/remove entries (#21326, #21389, #21351)
  • Fix broken multitouch on iOS with OpenGL (#21350)
  • Ad hoc relay connection improvements (#21352)
  • Fix a lot of minor UI issues (#21400, #21362)
  • Fix background image selection on Android and iOS (#21345, #21384, #21371)
  • Fix file permission issue on iOS (#21374)
  • Add a "hold" version of axis swap toggle (#21357)
  • Fix regression in Gripshift (#21377)
  • Fix crash on audio device switch on Windows (#21341)
  • Fix timing glitches in gamepad input on Windows (#21393)
  • And other assorted fixes.

What's new in 1.20

  • User interface

    • New feature: Proper support for Portrait Mode UI - you can now rotate your phone to vertical mode, and things will mostly work fine! (#21185, #21044...)
    • New feature: Separate touch controls and display layout configs for landscape/portrait, new default touch control layout for portrait mode
    • New feature: Upload files via HTTP from devices on the same network
    • Savestate count limit can now be configured (#21112)
    • UI icons are now vector-based, making them look sharper on high-DPI screens (#20824, #20870)
    • Better handling of unsupported ISOs (#21169, #21166)
    • Misc: Improved text rendering, chat box improvements (#20653), PIC0 is now visible on the game screen (#20686), (#20611), rotation fixes (#21145), input fixes (#21248), fixes for XBox FullScreen Experience, background stretch (#21211), handle savedata in main game browser (#21277), Discord Presence improvement (#21246)
    • Show ICON1.PMF on the game info screen (#21303)
  • Regression fixes

    • In 7th Dragon, voice-related crashes are fixed (#20837)
    • Soundtrack is working again in Tony Hawk's Project 8 (#20775)
    • Fix crash in StormBasic homebrew apps (#20715)
    • Built-in songs in Beats work again (#20662)
    • Fix adhoc in Syphon Filter games (#20642)
    • Fix strange cutscene speedups in Power Stone 2 (Power Stone Collection) (#2124)
    • Work around game bug to help more custom songs play again in GTA LCS (#20692)
  • Multiplayer

    • Support aemu relay servers for AdHoc multiplayer (#21116, #21271)
  • Controller and touch screen input

    • Native support for DualSense (#20580, #20620, #21191), DualShock and Switch Pro (#20647) controllers on Windows - including tilt controls for DualSense and Switch Pro
    • Misc touch screen and controller mapping improvements (#21195, #21197, #21258, #21325)
    • Add simple virtual keyboard for text input for platforms that don't have one (#21306)
  • Graphics

    • Fixed multiple graphical effects in Tales of Phantasia X
    • Reworked the VSync setting to be more intuitive. It's now pretty much never a bad idea to turn it on.
    • Fixes for various glitches in Tales of Phantasia X (#21173, #21141, #21205)
    • Some more framebuffer readback workarounds (#20640, #20631, #20632)
    • MMPX upscaling enhancements by crashGG (#20622, #20541)
    • Huge rendering speedup in Brave Story (#21151)
    • Fix rendering bug caused by CPU emulation bug in ATV Offroad Fury: Blazing Trails (#21238)
    • Partially fix rendering problem in Mahjong Artifacts (#21244) and The Mystery of the Crystal Portal (#21236)
    • Boost the GPU in Outrun 2006 to avoid unnecessary slowdowns (#21304)
  • Other game fixes

    • Fix savedata problem in Silent Hill: Shattered Memories (#21294)
  • Audio

    • Added "Smooth" playback mode, which evens out glitches (while adding a very small amount of latency)
    • Remove DirectSound support (#20533), add support for ultra-low-latency streams on WASAPI, available on some devices (#20535)
  • Platform support

    • Windows
      • D3D9 support has been removed (#19951, #20490)
      • ARM64 is now officially supported, and works great (#20863)
      • Correct fullscreen mode in Xbox Fullscreen Experience (#21189)
      • Assorted improvements (#20778, #20774)
    • Android
      • The minimum Android version has been raised for technical reasons, KitKat is no longer supported (#19658)
      • Support for Android devices with 16KB page size. This is a technical change, required by Google Play, that unfortunately forced us to drop compatibility with the very oldest devices (Android < 5). (#20788)
      • Shortcut widgets can now be created even if the app isn't running (#20798)
      • Removed support for classic Moga controllers, these were only a thing on early Android (#20762)
    • iOS
      • Add support for screen rotation
    • Linux
    • UWP
      • Migrate code base to C++/WinRT (#21100)
  • Debugger

  • Other

    • RetroAchievements: Upgrade the support library with perf fixes (#21081), various fixes and improvements
    • Add workaround for infamous God of War crash (#21148)
    • Fix assorted minor UI bugs (#21042, ...)

What's new in 1.19.3

  • Fixed crash on startup in Tony Hawk's Underground 2 (#20573)
  • Fixed crash/hang when accessing the menu in FFII if readbacks were configured to copy-to-tex (#20573)
  • Fix issue with detection of some types of saving, for the save reminders on exit (#20623)
  • Fixed music and other audio in modded games (various football games, Crazy Taxi w/ original soundtrack, etc) (#20566, #20571)
  • Fix exiting not functioning correctly on Windows in some circumstances (#20607)
  • Minor UI and key binding fixes (#20604)
  • Fix crash/blackscreen when switching from skip buffer effects to auto-frameskip rendering (#20605)
  • Fix bug in Mac/Linux builds where the mouse got hidden and stuck if you enabled mouse input mapping (#20612)
  • Fix black screen on save/load in the Football Manager Handheld games (#20616)
  • Translation improvements

What's new in 1.19.2

  • In-game save/load not properly detected for saving reminder (#20500)
  • Install savedata from ZIP was partially broken (#20498)
  • Fixed module loader bug affecting a few games (#20513)
  • Fixed some hangs in the Windows debugger (#20510)
  • Fix performance problem in texture replacement (#20520)
  • Assorted fixes (#20518, #20514, #20502, #20515)

What's new in 1.19.1

  • Fix selecting background image on Android (#20477)
  • Fix RetroAchievements regression for multi-executable games (#20469)
  • Possible fix for Mac audio device selection issue (#20482)
  • Add workaround for Dragon's Lair not working with LLE scePsmf (#20468)
  • Prevent trying to load obviously-corrupt CSO/CHD files (#20466)
  • Fix regression for homebrew apps that request extra memory (#20457)
  • Fix grid drawing in the various Robot Taisen games (#20456)
  • Fix crash in UI when viewing a directory with multiple NPDRM ISOs (#20453)

What's new in 1.19

  • Audio

    • Brand new sceAtrac implementation, fixing Flatout and multiple other long-standing issues! (#20098, #20136, #20138, #20162)
    • More correctly implemented sceAtrac-through-sceSas functionality, fixing voice in Sol Trigger and multiple minis (#20156)
    • Better support for using sceAudiocodec directly, fixing music in some homebrew apps (#20199, #20246, #20253, #20209)
    • Volume control improvement (#19969, #19971)
  • Rendering fixes and performance

    • Important: This will be the last major version with D3D9 support. D3D11 will of course continue to be supported, along with Vulkan and OpenGL.
    • Fix smoke effects in Jak'n'Daxter by re-using the fix from Ratchet & Clank (#20032)
    • Software depth buffer rendering added to fix lens flares in multiple games efficiently (Midnight Club LA, Wipeout, Syphon Filter etc) (#19748, #19764, #20231, #19955, etc)
    • Multiple rendering-related crash fixes (#20270, #20346, #20344)
    • Texture replacement load speed corrected and can now be controlled (#20286), regression fix for zipped packs (#19860)
    • Additional assorted compatibility and other fixes (#20376, #20070, #19685)
    • Persona 1/2 readback fixes (#20067, #20068)
    • Other correctness fixes (#20233, #20255, #19686)
  • General emulation

    • Allow disabling HLE on a per-module basis (if games ship the module so we can load it). Enabled for sceCcc (#20218), and more importantly scePsmf (#20208), fixing multiple issues.
    • Additional module loading improvements (#20114)
    • More precise sleep function on Windows (#20054)
    • More replacement texture improvements, allow replacing game icons (#19975, #19978)
    • Disable certain features like fast-forward when networking is on, to avoid de-syncs (#20311)
    • Fixes mono Atrac3 as video soundtrack (#19800)
    • Improvements to RISC-V support (#20352)
  • Control and input

    • Touch gliding support added (#19983)
    • Allow simultaneous DInput and XInput input (#20347)
  • New "Dear ImGui"-based PSP debugger: ImDebugger

    • Allows very rapid development of debugging features as-needed, and also implements a pretty good Ge debugger for stepping through draws.
    • Unlike the old Win32 debugger (but similar to the unmaintained web debugger), works on all platforms (though cumbersome on touchscreens)
    • Major commits (though there are many more): (#20242, #20240, #20294)
  • Multiplayer

    • Added Infrastructure multiplayer support, with automatic DNS configuration (#19865, #19869, #20221, #20220, #19875)
      • Note: Only games that people have made "revival servers" for will work. See here.
    • Implement more of sceNet (prerequisite for the former feature).
    • Socket re-mapping implemented (#19827)
    • Assorted bugfixes, thanks ANR2ME (#20247, #20245, #19843, #19849, #19836)
  • UI

    • Loading spinner now actually spins properly, the app no longer appears to hang (#20341)
    • Minor features: Asks for confirmation on exit in most scenarios (#19996, #20023), DPI scaling (#20013), can pause without menu (#19883)
    • As usual a lot of tweaks, perf fixes, and fixes for hangs and crashes (#20343, #20332, #20305, #20303, #20299, #20163, #20152, #20143, #20079, #20137, #20374)
    • Two new color themes (#20334, #20335), related themability fixes (#19984, #19995, #20308)
    • Improvements and bug fixes in the savedata manager (#19771, #20170)
    • Add "Move to trash" deletion functionality to multiple platforms (#20230, #20261)
    • Add ability to take "raw" screenshots of gameplay (#20029)
    • More files can be loaded directly from ZIP (#20243)
    • Developer Settings are now tabbed for easier access (#20228)
    • Switch to the full libpng API so we can disable gamma correction, like the real PSP (#20033)
    • Support displaying the battery percentage on more platforms (#19973, #19967)
    • Allow picking a background image on iOS (#20370)
  • Platform compatibility

    • Exclude older Macs from using Vulkan (too many black screens, hangs) (#20236)
    • Use portable-file-dialogs to provide file-open dialogs on Linux (#20175)
    • "Cache full ISO in RAM" is now correctly hidden where it doesn't work (#20165)
    • Now rendering at proper resolution on newer Macs (#20011)
    • Mouse input improved on Android, including separate button mapping (#19915)
    • Use the correct font again on Mac/iOS (#19874)
    • Multiple file access optimizations made to make the most out of the flawed foundation called Android Scoped Storage (#19668)

What's new in earlier versions

See history.md.