PPSSPP is a PSP emulation project created by Henrik Rydgard in 2012, and since the start many more people have contributed improvements.
To be Constructed
To be Constructed
the PSP can render to any location in its VRAM and use as either the scanout buffer (what you see on the screen) or textures. Many games use this to implement special effects, or simply to implement 30fps (you need to show the same buffer twice). We simulate this by allocating an OpenGL FBO for every PSP framebuffer location. Disabling it is a speed hack, that may or may not speed up some games, and may cause graphical artefacts and/or screen flickering. Another effect of disabling this option is that you lose the ability to do 2x supersampling.
Especially on mobile platforms, the graphics rendering is the performance bottleneck. Hence, speed can be improved by simply skipping the rendering process on every other frame, or more. The drawback is of course that the framerate will decrease, and if you combine it with multithreading, there may be flickering issues. The setting to control this is called Frameskipping.
Force 60 FPS or less
Some games (such as god of war) have a bug related to rendering. This hack helps keep these games in check and makes them playable.
Alternative speed [don’t know what this does off the top of my head. will have to look and see]
Postprocessing Shader Note: buffered rendering must be enabled to use this
Allows one to use custom shaders that add effects such as bloom and grayscale.
Types of shaders:
Off:: Disable shaders altogether
Grayscale: Renders in grayscale (black and white)
Vignette: Renders with a sepia tone (old-school photograph look)
Inverse Colors: Inverts Colors
Scanlines: Creates a CRT screen like effect by drawing horizontal lines
Stretch to display
Causes PPSSPP to stretch it’s size to that of the display. This destroys the aspect ratio.
Disabling mipmapping will grant a performance increase, but will cause PPSSPP to look slightly blurry as a result. [TODO - explain mipmapping]
Rendering Resolution [TODO]
The display of your device refreshes many times per second (usually 60 times per second). If this option is enabled, then PPSSPP will only draw during every refresh. This will cause it to look much smoother. However, this requires great performance [TODO - explain how FPS drops by half if a frame is missed]. Disabling this option provides a performance boost.
Vertex Shader uses to make all the complex calculations that are required for rendering in the hardware (GPU or Video Card) instead of doing it on the processor. It tends to be much faster and gives a performance boost when enabled.
This gives a performance boost when enabled [TODO - explain caching theory >_>” . This maybe futile…]
Low quality Spine / Bezier Curves
Computers use equations knows as Bezier Curves to draw curves. However, this equation is computationally intensive. Hence, a low quality version of this equation will give better performance, but looks poorer. Enabling this option will provide a performance boost at the cost of graphical fidelity.
Texture scaling improves texture detail. However, it is a very expensive process and can cause slowdown.
PSP games generally have quite low texture detail, as more isn’t needed due to the low resolution of the PSP display, and the lack of RAM and VRAM available. The Texture Scaling feature uses a high quality scaling filter to give the illusion of sharper texture detail. Doesn’t work great with all art styles but some games are very much improved.
There is generally no point in going beyond 3x texture scaling unless you are running at very high resolutions.
The type of Upscale to use.
Off:: Disable Texture Upscale
2x: [TODO - explain]
3x: [TODO - explain]
There are various algorithms that are used to upscale. Here, a particular algorithm can be selected.
Types of Upscale algorithms:
Hybrid: [TODO - explain]
Bicubic: [TODO - explain]
Hybrid + Bicubic: [TODO - explain]
Anisotropic Filtering: [TODO]
Texture Filter: [TODO]
PSP games were made to run at 480x272, and rendering them at other resolutions sometimes causes artifacts like little lines at the boundaries of textures. This can sometimes be worked around by tweaking filtering settings.
Disable Alpha Test This has been shown to create a performance gain in devices which use PowerVR chipsets. [TODO - explain what this does]
Disable Stencil Test [TODO - explain what this does]
Always Depth write [TODO - explain what this does]
Texture Coord Speedhack [TODO - explain what this does]
These are workarounds for things we don’t emulate properly, or speed improvements that may cause artifacts.
Disabling Alpha Test greatly improves performance on PowerVR GPUs (common on mobile) as that feature is extremely slow on them.
Show FPS Counter
Shows performance counters at the top right corner.
Types of Counters:
FPS: Shows the number of frames per second being rendered
Speed: Shows the [i’m not sure, virtual processor speed?]
Both: Shows both the FPS and the Speed
Show debug statistics
Shows realtime information which is very useful for debugging games. It is primarily a developer option and is useless to others.
Dump next frame to log this option can only be accesses in-game
Dumps the entire log generated by PPSSPP during the next frame into a log file. This is useful to send bug reports to developers.
Software Rendering this option is experimental
On computers which do not have a dedicated GPU (Video card), a Software renderer can be used. However, this will be orders of magnitude slower, and is generally unplayable.
SFX volume Controls volume of special effects.
BGM volume Controls background volume
Enable Sound Enable and disable all sounds
Low latency audio An experimental feature that might help reduce audio lag. It also generally causes stuttering and other audio distortion
Control Mapping Rebind PSP controls to keyboard, game pad and virtual buttons.
Haptic Feedback If this is enabled, the device will vibrate every time a button is pressed. Useful of mobile devices for tactile feedback
This option can be enabled to use on-screen controls. This is useful on devices such as phones and tablets with no hardware buttons.
Used to change the opacity of buttons. An opacity of 0 is completely transparent. Opacity of 100 is fully opaque
Used to change the size of buttons. Higher the value of button scaling, larger the buttons will be.
Used to move on-screen buttons to custom positions.
Hold down a button and drag the button to the desired location. Then click on Back to save changes.
To Reset changes, press the Reset button.
To modify button visibility, click on Custom layout in the Controls menu. Then, click on the Visibility button in the left. Here, buttons can be made visible or invisible by toggling the buttons.
Language Change the default language of PPSSPP.
Fast Memory (Unstable, use with caution) option only applied after a reset
This option changes PPSSPP such that that all memory accesses the game makes is considered valid. This, there is an increase in speed. However, this can also result in crashes if a game does an invalid memory access.
Multithreaded (Unstable, use with caution)
This option allows PPSSPP to do multiple tasks at the same time. This creates a performance gain. However, this can also cause [not sure how to describe race conditions], leading to crashes
I/O on thread (Unstable, use with caution)
[again, not sure how to explain this]
Change CPU Clock
This option controls the Virtual CPU clock. When it is enabled initially, the Virtual CPU will run at 222Mhz (the standard speed of PSP CPU). This speed can be increased or decreased.
Decreasing the clock, you will get more percents (%) on speed, but less FPS.
Increasing the clock will cause more FPS and less percent (%).
This happens because when the virtual clock is high, it increase the strain on your system, and thus PPSSPP becomes slower and the total game speed will drop.
Atomic Audio Locks
[Sigh, I’m not sure how to explain this either. Something on the lines of skipping audio if PPSSPP is slowing down (which is not really true but a gross approximation) maybe?]
Used to enable or disable cheats in PPSSPP.
[This is something I know nothing about. Someone who actually knows about this (maybe UnknownBrackets) will have to edit this section]
This section of PPSSPP contains tools that are useful for PPSSPP developers. Be careful when changing options in this section.
To emulate advanced systems like the PSP fast, the emulator needs to translate the machine code language of the PSP to the machine code language of your PC or mobile device at runtime. This is done with a “Just-In-Time recompiler” or JIT, also known as a Dynarec. PPSSPP has JITs for x86 and ARM.
For a JIT to function, an app needs to have the ability to generate machine code at runtime. This is allowed on Windows, Mac, Linux and Android, while it is completely disallowed on non-jailbroken iOS and on App Store Mac apps, and on Windows Phone 8.
Shows device-related information such as the system specifications, OpenGL extensions and OpeGL ES extensions.
Show Developer Menu
Can be toggled to display the Developer Menu while playing a game.
Enable Debug Logging
PPSSPP constantly gathers information about its own state while playing a game. This is done to help developers track down bugs and improve PPSSPP. This option can be used to turn this on or off.
PPSSPP logs information into separate channels based on where the log is originating from. Log channels can be enabled and disabled from this menu. This is useful if one wants to track one particular module of PPSSPP.
Load Language ini [TODO]
Save Language ini [TODO]
Daylight Savings Used to enable and disable daylight savings in PPSSPP’s time calculation.
Used to change the date format. Supported formats are:
YYYYMMDD - eg: 2013 12 01 (1st December 2013)
MMDDYYYY - eg: 12 01 2013 (1st December 2013)
DDMMYYYY - eg: 01 12 2013 (1st December 2013)
[Idk where this is used. Should write about what this is for]
Used to change the time format. Supported formats are
12 hours and
By default, the PSP uses the
X action button to confirm actions. This can be changed to