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 in #ppsspp on freenode (IRC) or just send pull requests / issues. For discussion use the forums on ppsspp.org.
Go to file
Unknown W. Brackets 1e65a691f4 Cap the number of vertexes per flush.
Might not be realistic, but we crash if we go over.  Pretty unlikely to
happen in real games, but I suppose not impossible.  Happens in the vertex
speed demo (#3106.)
2013-10-27 14:43:58 -07:00
android Better fix for the UINT_64 define issue on android 2013-10-20 13:52:31 +02:00
assets Hide shaders we can't run on GLES2 2013-10-23 22:58:21 +02:00
Blackberry Also install the langregion file on Blackberry & Symbian. Don't auto enable hardware transform on Symbian. 2013-10-17 23:24:49 +10:00
Common Merge pull request #4339 from unknownbrackets/linux-minor 2013-10-27 11:54:15 -07:00
Core CityHash is not used anymore, so we won't compile it. 2013-10-28 03:26:00 +10:00
dx9sdk@da9d3d62e7 Add a micro version of the DX SDK as submodule, to keep the buildbot running. 2013-09-15 16:15:12 +02:00
ext Turn off optimazation in vs2013 2013-10-23 20:01:03 +08:00
ffmpeg@657ba596a6 Update native and ffmpeg. 2013-10-26 21:34:46 +10:00
flash0/font Let's try W-MS' latest converted JPN font. If it's good we'll keep it, if not I'll just revert. 2013-08-25 01:08:59 +02:00
GPU Cap the number of vertexes per flush. 2013-10-27 14:43:58 -07:00
headless Ignore import warnings from ffmpeg. 2013-10-26 17:37:08 -07:00
ios iOS: buildfix, stub Vibrate() for now. 2013-10-13 12:12:36 -07:00
lang@64331b6689 Update lang again 2013-10-21 11:19:45 +02:00
native@3285f6f41e Use swap code from native instead. Remove all other versions of it. 2013-10-28 03:07:32 +10:00
pspautotests@bf68a5fefc Update tests. 2013-10-24 21:39:52 -07:00
Qt CityHash is not used anymore, so we won't compile it. 2013-10-28 03:26:00 +10:00
redist@9d7d3ec5a0 Add InnoSetup script to make a basic installer. 2013-10-15 11:55:02 +02:00
SDL Move blackberry files in to their own directory as it is unrelated to SDL 2013-01-23 11:14:23 +10:00
source_assets Update lang, source assets 2013-08-20 18:40:31 +02:00
Tools/SaveTool Fixed two other memory leaks I missed. 2013-01-25 15:07:36 -05:00
UI VSync codepath only works on _WIN32 so only show it and check it there. 2013-10-27 23:09:46 +10:00
unittest Detect language on first boot on Windows (Vista+) and Android 2013-09-04 12:08:22 +02:00
Windows Ignore import warnings from ffmpeg. 2013-10-26 17:37:08 -07:00
.gitignore Update gitignore, lang, native 2013-10-07 21:17:49 +02:00
.gitmodules Add InnoSetup script to make a basic installer. 2013-10-15 11:55:02 +02:00
atlasscript_lowmem.txt Add missing atlasscript. Set multithread to false for Symbian on start. 2013-08-21 19:10:22 +10:00
atlasscript.txt UI tweaks. Change to cleaner background image. 2013-08-20 00:49:25 +02:00
b.sh MacOSX buildfix. Doesn't run right yet though. 2012-11-25 12:25:07 +01:00
build_ppgeatlas.sh Make more menu screen items translatable. 2013-05-25 11:23:14 +08:00
buildatlas.sh Add Russian to LowMem. Modify script to automatically build lowmem atlas at same time. 2013-08-21 12:30:13 +10:00
chinese.txt UI tweaks. Change to cleaner background image. 2013-08-20 00:49:25 +02:00
CMakeLists.txt Merge pull request #4339 from unknownbrackets/linux-minor 2013-10-27 11:54:15 -07:00
git-version.cmake Fix typo breaking git-version.cpp gen in cmake. 2013-03-17 23:45:41 -07:00
Globals.h Use swap code from native instead. Remove all other versions of it. 2013-10-28 03:07:32 +10:00
korean.txt Update korean.txt 2013-09-27 00:38:21 +09: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
notinstalled.txt Add InnoSetup script to make a basic installer. 2013-10-15 11:55:02 +02:00
ppge_atlasscript.txt FIX unintelligible sequence of decimal characters on savedialog. 2013-05-02 00:14:41 +09:00
ppsspp.iss Fixes to the InnoSetup script 2013-10-17 12:14:00 +02:00
README.md Update readme. 2013-10-27 11:12:54 +10:00
test.py Update tests. 2013-10-24 21:39:52 -07:00

PPSSPP - a fast and portable PSP emulator

Written by Henrik Rydgård

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

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

To contribute, see the development page.

For the latest source code and build instructions, see our github page.

What's new in 0.9.5

  • Many, many emulation fixes:
    • bezier/spline curve support, fixing LocoRoco and others
    • stencil clear emulation, fixing Final Fantasy IV text
  • Performance improvements in some games
  • Post-processing shaders like FXAA, scanlines, vignette
  • More solid save states (we will try to keep them working from now on. Save states only upgrade forward, not backward to older versions though).
  • Change render resolution independently of window size
  • Massive debugger improvements
  • Win32 menu bar is now translatable
  • Multiple UI bugs were fixed, and the UI instantly changes when a new language is selected
  • Win32: Ability to store PPSSPP's config files and memory stick files in places other than the same directory
  • Android-x86 support
  • Unofficial port for modified Xbox 360 consoles
  • Atrac3+ plugin no longer required. Symbian now supports Atrac3+ audio.
  • Symbian audio and ffmpeg is now threaded for more consistent media processing.
  • Haptic feedback support for mobile devices.
  • Accurate system information for mobile devices.
  • Qt audio has been fixed.
  • Analog controller support for Blackberry.

Basic build instructions

(for more detailed instructions, see the development page)

First of all, after having checked out the source, don't forget to run:

git submodule update --init

in order to get the "native" library.

Now, the actual building:

Building for Windows

Use Visual Studio 2010+, Visual C++ Express is fine. Open the solution and just build, it'll work. You may just need to set up a path or two to the Windows SDK (which includes the DX SDK) nowadays.

Building for Android

Install the Android SDK and NDK.

To build the native C/C++ part, from a shell or command prompt, run:

./ab.sh 

or, on Windows:

ab.cmd 

in android/. You may need to tweak the paths in the ab file.

Then just open the project in Eclipse and run on your device. When you make changes to the native code, you may have to refresh or add a few spaces to PPSSPPActivity.java for Eclipse to rebuild the APK when you run it on your device the next time.

There's an alternate method of building for Android using CMake below.

Other platforms

PPSSPP currently uses CMake for its build system. In order to build for most systems, create a build directory and run:

cmake path/to/ppsspp
make

Alternatively, run b.sh which will create the directory for you.

You can specify the -G parameter to cmake to choose a generator. The NMake Makefiles, Visual Studio 11 (projects + sln), GNU Makefiles and Unix Makefiles generators have been tested.

Of course in-tree builds are supported, but that makes cleanup harder to do; with out-of-tree builds you can just remove the build directory.

Note: There is also a Qt frontend available. Simply open PPSSPPQt.pro in Qt Creator 2.6+ and press run. The Qt frontend currently supports Windows, Linux, Blackberry 10, Symbian and Meego.

Building for Linux/BSD/Meego Harmattan/Pandora/etc

Qt (recommended)

A Qt-based frontend is available in the Qt/ dir. Open PPSSPPQt.pro with Qt Creator 2.6+. Install libsdl1.2 if you want to use USB Gamepad. If the build has an error about QAudioOutput:

  • Install the package "qtmobility-dev"

SDL

Alternatively, install the libsdl1.2 (SDL 1.2) development headers. This is called libsdl1.2-dev on Debian/Ubuntu, SDL-devel on Fedora/RHEL, sdl12 on BSD ports.

Currently the user interface is identical to Android's, operated with the mouse.

Building for OSX

Install the Xcode Command Line Tools and, using macports, fink or homebrew, install the SDL development headers. This is called sdl on homebrew. Just follow the basic build instructions afterwards.

Currently the user interface is identical to Android's, operated with the mouse. A Qt-based interface is planned.

To build for Android using CMake, first you must set the ANDROID_NDK environment variable to point to the path of your NDK install. This is done on windows cmd with set ANDROID_NDK=X:\..., on bourne shells with export ANDROID_NDK=/path/to/ndk, and on C shells with setenv ANDROID_NDK /path/to/ndk.

Create a build-android directory and inside it run:

cmake -DCMAKE_TOOLCHAIN_FILE=path/to/ppsspp/android/android.toolchain.cmake path/to/ppsspp
make

After make finishes, it will have created the needed .so files in path/to/ppsspp/android/libs/armeabi-v7a. You can now use the build.xml in the android/ dir to build the final executable, or import the android/ folder as an existing project in Eclipse.

Note that Eclipse won't notice if you have made changes to the C++ code. Introduce a meaningless change to a random .java file such as a whitespace to get Eclipse to rebuild the project.

Also note that the Visual Studio generators aren't compatible with compilers other than Microsoft's, but NMake Makefiles works fine.

Building for iOS

Create a build-ios directory and inside it run:

cmake -DCMAKE_TOOLCHAIN_FILE=../ios/ios.toolchain.cmake -GXcode ..

Then open the generated project in Xcode.

For more information, see: http://code.google.com/p/ios-cmake/wiki/HowTo

Building for Blackberry

To build for Blackberry, you must first have the latest Native SDK installed.

To set up your environment for cross-compiling you must then use:

source ~/bbndk/bbndk-env.sh

Finally, you are ready to compile. Go to ppsspp/Blackberry/ and run:

./build.sh

If you are on Windows, you will need GNU and CMake to run the bash script.

Alternatively, you can use the Qt frontend by compiling the PPSSPPQt.pro in the Qt/ directory with qmake from the NDK or QtCreator 2.6+.

Building for Symbian

To build for Symbian, you require:

  1. GCC 4.6.3 from Mentor Graphics.

  2. Symbian Qt libraries. You can find these in the final Nokia Qt SDK or online.

  3. Set up your SDK to use Symbian GCCE 4.6.3. See a tutorial here: http://www.summeli.fi/?p=4220 You will need to add the GCCE 4.6.3 variant to Symbian\tools\sbs\lib\config\variants.xml as follows:

    <var name="gcce4_6_3" extends="gcce_base">
      <env name="SBS_GCCE463BIN" type="toolchainpath" />
      <set name="GCCEBIN" value="$(SBS_GCCE463BIN)" />
      <set name="GCCECC" value="$(GCCEBIN)/arm-none-symbianelf-g++$(DOTEXE)" type="tool" versionCommand="$(GCCECC) -dumpversion" versionResult="4.6.3"/>
      <set name="RUNTIME_LIBS_LIST" value="drtaeabi.dso dfpaeabi.dso"/>
      <set name="PLATMACROS.VAR" value="GCCE_4 GCCE_4_6"/>
      <set name="ARMMACROS.VAR" value="__GCCE_4__ __GCCE_4_6__"/>
      <set name="LINKER_DEFAULT_LIBS" value="-lsupc++ -lgcc -lgcc_eh"/>
      <set name="PLATMACROS.CONFIG" value="ARMV6"/>
      <set name="ARMMACROS.CONFIG" value="__MARM_ARMV6__ __ARMV6__"/>
      <set name="LINKER_GROUP_END_OPTION" value="-Wl,--end-group"/>
      <set name="LINKER_GROUP_START_OPTION" value="-Wl,--start-group"/>
      <set name="CC.ARMV5" value="-march=armv6"/>
      <set name="CC.SOFTVFP_MAYBE_VFPV2" value="softfp"/>
    </var>

Then simply compile the PPSSPPQt.pro with qmake from the SDK or the included QtCreator.