ppsspp
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.
Top Related Projects
PCSX2 - The Playstation 2 Emulator
Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.
Xbox (Original) Emulator
PlayStation 3 emulator and debugger
Quick Overview
PPSSPP is an open-source PSP emulator for Windows, macOS, Linux, iOS, Android, and more. It allows users to play PlayStation Portable games on various devices with high-definition graphics and improved performance compared to the original hardware.
Pros
- Cross-platform compatibility, supporting a wide range of devices and operating systems
- High-quality graphics rendering, including upscaling and texture filtering
- Active development and community support, with frequent updates and improvements
- Extensive customization options for controls, display, and performance
Cons
- Some games may have compatibility issues or graphical glitches
- Requires relatively powerful hardware for optimal performance, especially on mobile devices
- Legal concerns regarding the use of copyrighted game ROMs
- May not perfectly replicate the original PSP experience for all games
Getting Started
To get started with PPSSPP:
- Visit the official PPSSPP website (https://www.ppsspp.org/) or GitHub repository.
- Download the appropriate version for your operating system.
- Install PPSSPP following the instructions for your platform.
- Obtain PSP game files (ISOs or CSOs) legally.
- Launch PPSSPP and use the "Load" option to select and play your games.
For developers interested in contributing:
- Fork the repository on GitHub.
- Clone your fork:
git clone https://github.com/your-username/ppsspp.git
- Set up the development environment following the instructions in the
README.md
file. - Make changes and submit pull requests to contribute to the project.
Competitor Comparisons
PCSX2 - The Playstation 2 Emulator
Pros of PCSX2
- More mature project with longer development history
- Supports a wider range of PS2 games
- Generally better performance on high-end hardware
Cons of PCSX2
- Higher system requirements
- More complex setup and configuration
- Less portable across different platforms
Code Comparison
PCSX2 (C++):
void GSState::Flush(GSFlushReason reason)
{
if(m_dev->IsDeviceLost()) return;
GSVector4i r = m_vt.m_min.c.xyxy().runion(m_vt.m_max.c.xyxy());
if(!r.rempty())
{
m_dev->Flush(r, reason);
}
}
PPSSPP (C++):
void GPUCommon::Flush() {
transformDraw_.Flush();
transformDraw_.FlushUVJitter();
textureCache_.Flush();
depalShaderCache_.Flush();
drawEngineCommon_.Flush();
shaderManager_->DirtyLastShader();
gstate_c.Dirty(DIRTY_ALL);
}
Both projects use C++ and focus on emulation, but PCSX2's code appears more focused on graphics state management, while PPSSPP's code shows a broader range of subsystem flushes. PPSSPP's codebase is generally considered more modern and maintainable, which contributes to its better portability across platforms.
Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.
Pros of Dolphin
- More mature project with a larger developer community
- Supports a wider range of GameCube and Wii games
- Advanced features like netplay and VR support
Cons of Dolphin
- Higher system requirements for optimal performance
- More complex configuration options may be overwhelming for some users
Code Comparison
PPSSPP (GPU initialization):
void GPU_D3D11::InitDeviceObjects() {
D3D11_BUFFER_DESC desc{sizeof(d3d11_cb_vs_constants), D3D11_USAGE_DYNAMIC,
D3D11_BIND_CONSTANT_BUFFER, D3D11_CPU_ACCESS_WRITE};
ASSERT_SUCCESS(device_->CreateBuffer(&desc, nullptr, &constantBuffer_));
}
Dolphin (GPU initialization):
void Renderer::Create() {
g_Config.Refresh();
g_Config.VerifyValidity();
UpdateActiveConfig();
g_vertex_manager = std::make_unique<VertexManager>();
g_perf_query = std::make_unique<PerfQuery>();
}
Both projects use C++ for their core emulation code, but Dolphin's codebase is generally more complex due to its broader scope and feature set. PPSSPP's code tends to be more focused on PSP-specific optimizations.
Xbox (Original) Emulator
Pros of Cxbx-Reloaded
- Focuses on Xbox emulation, providing a more specialized experience for Xbox games
- Actively developed with frequent updates and improvements
- Supports a wide range of Xbox titles, including many popular games
Cons of Cxbx-Reloaded
- Limited to Xbox emulation, whereas PPSSPP offers PSP emulation on multiple platforms
- Generally requires more powerful hardware due to the complexity of Xbox emulation
- Less mature project compared to PPSSPP, which may result in more compatibility issues
Code Comparison
PPSSPP (C++):
void PSPMixer::Mix(short *stereoout, int numSamples) {
memset(stereoout, 0, numSamples * 2 * sizeof(short));
for (int i = 0; i < MAX_CHANNEL; i++) {
if (channels[i].sampleQueue.size() > 0) {
// Mixing logic here
}
}
}
Cxbx-Reloaded (C++):
void CxbxrMix(PVOID pVoiceContext, PVOID pAudioBuffer, DWORD dwAudioBufferBytes) {
// Cast the voice context to our own structure
LPDIRECTSOUNDSTREAM8 pStream = (LPDIRECTSOUNDSTREAM8)pVoiceContext;
// Mixing logic here
}
Both projects use C++ for their core functionality, but PPSSPP's mixing code appears more abstracted and object-oriented, while Cxbx-Reloaded's code seems to interact more directly with DirectSound APIs.
PlayStation 3 emulator and debugger
Pros of RPCS3
- More advanced graphics capabilities, supporting higher resolutions and modern rendering techniques
- Broader game compatibility, covering a larger library of PS3 titles
- Active development with frequent updates and improvements
Cons of RPCS3
- Higher system requirements due to the complexity of PS3 emulation
- Longer setup process and potentially more configuration needed for optimal performance
Code Comparison
RPCS3 (C++):
void RSXThread::flip(u32 buffer, bool emu_flip)
{
if (emu_flip)
{
sys_rsx_context_attribute(0x55555555, 0xFED, buffer, 0, 0, 0);
}
// ...
}
PPSSPP (C++):
void PSPDisplay::SwapBuffers() {
if (g_Config.iRenderingMode == FB_NON_BUFFERED_MODE)
return;
// ...
currentFramebufferAddress_ = displayFramebufferAddr_;
}
Both projects use C++ for their core emulation logic. RPCS3's code tends to be more complex due to the intricacies of PS3 hardware emulation, while PPSSPP's code is generally simpler, reflecting the less demanding nature of PSP emulation.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
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 the development page. Help testing, investigating, or fixing 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.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
-
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)
- Added Infrastructure multiplayer support, with automatic DNS configuration (#19865, #19869, #20221, #20220, #19875)
-
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 funcionality 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 1.18.1
What's new in 1.18
- Platform support
- Improved iOS/Mac support, Game Mode support (#19287, #19281, #19269, #19270, #19257, #19254, #19244, #19227, #19224, #19213, #19200, #19187, #19184, #19161, #19118)
- IR Interpreter: work on correctness and optimizations (#19299, #19280, #19268, #19265, #19262, #19260, #19255, #19252, #19240, #19233, #19231, #19193, #19189, #19173, #19128)
- Interpreted Vertex Decoder optimizations: (#19243, #19241)
- SDL fixes: (#19131)
- Legacy Edition for old Android TV (only for download on the website): (#19401)
- Android and Windows shortcuts - add icons and bugfixes: (#19139, #19142, #19138)
- Improve performance of CHD loading (#18931)
- UI
- Many crash, hang and performance fixes around the UI (#18950, #19561, #19556, #19531, #19507, #19523, #19529, #19482, #19473, #19438 #19165)
- New post proc filter "Sharp bilinear" (#19530)
- Misc UI fixes (#19505, #19492, #19126, #19020)
- 3 new themes (#19504)
- Game info in-game (#19471)
- New remote iso UI (#19293)
- Install save games from ZIP file (#19443, #19436)
- More input-mappable actions like Reset, allow mapping Alt key (#19472, #19484, #19304)
- Homebrew Store: Added website links, license info: (#19425, #19426)
- RetroAchievements: Can now hash homebrew apps (#19096), RAIntegration support (#19002)
- Fix regression of the AxisSwap feature (#19059)
- Emulation
- Misc crash fixes: (#19563, #19546, #19491, #19358, #19347, #19198)
- Vulkan barrier fixes: ( #19009, #19017, #19018)
- Misc compatibility fixes (#19560)
- Misc filesystem fixes (FDs, date/time) (#19459, #19340)
- Workaround for The Warriors video playback (#19450)
- Expose GPI switches and GPO leds, accessible in developer settings
- Fix regression caused by the fix for UFC Undisputed (#18806)
- Broke out the Atrac3+ code from ffmpeg for easier debugging and maintenance (#19033, #19053, more)
- implement sysclib_sprintf (#19097)
- Rendering fixes
- Socom FB3 depth buffer problem in menu (#19490)
- Platypus: Glitchy transparency with OpenGL (#19364)
- Syphon Filter: Logan's Shadow: Dark lighting in OpenGL (#19489)
- MGS2 Acid errors on AMD GPUs (#19439)
- Fix regression in Genshou Suikoden (#19122)
- Fix HUD glitch in GTA LCS by emulating "provoking vertex" correctly (#19334)
- Debugging improvements
- MIPSTracer - a new (rough) debugging tool by Nemoumbra (#19457)
- VR
- Misc
Top Related Projects
PCSX2 - The Playstation 2 Emulator
Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.
Xbox (Original) Emulator
PlayStation 3 emulator and debugger
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot