Welcoming PCSX2 2.2.0 and 2.4.0!
It's been almost a year since the release of PCSX2 2.0. Since then, we've released PCSX2 2.2.0, and today, we're excited to release 2.4.0! We're even more excited to showcase how we've refined what 2.0 brought and then ramped up again – back to bringing you bold new features. We present this chronologically to show you the trajectory we're on and therefore what to expect for the release of 2.6.0 – tentatively scheduled for late 2025.
PCSX2 2.2.0
PCSX2 2.0 may well have been our biggest single release to date. With several major contributors stepping back, including longtime PCSX2 lead developer refraction, the remaining team – still energized to contribute – confronted reality: for the first time in a long time, we'd delivered what we had to offer in the way of big, bombastic new features. What we resolved for PCSX2 2.2 was to take it out of the furnace, let it cool, and hammer it into something more refined before getting up to speed again in 2.4. For this period of a few months, the word on everyone's mind was "polish".
Almost immediately after 2.0, contributor Florin9doi got to work chipping away at the list of peripherals we haven't implemented yet. Not long after, first-time contributor joestringer began working on train controller support. Thanks to them, in just about the first month of 2.0, we now have support for:
- Trance Vibrator
- Gametrak/RealPlay device
- Jogcon and NeGcon
- Train Mascon controllers (Type 2, Shinkansen, and Ryojōhen)
- Konami Microphone
- Zip 100
- PictureParadise
On top of that, PCSX2's EyeToy emulation now has audio support, and Buzz! devices now have a custom UI!


That is the question! PCSX2 team member and graphics expert LightningTerror has improved upon our existing per-pixel alpha blending (PABE) implementation, increasing both accuracy and speed. Software blending, run in shaders on the GPU, is highly accurate but incurs a performance hit as it forces us to tell shaders run for one triangle to wait for all previous triangles' shaders to complete before starting to prevent them from fighting with each other over the values of pixels that overlap between the triangles. Hardware blending is run in special hardware blending units on the GPU, which are built to avoid this fighting, but can only run a very simple set of operations. The supported operations don't cover everything the PS2's blending unit can do, resulting in worse accuracy as PCSX2 tries to select the closest (but often not identical) supported operation.
The new PABE implementation blends (heh) software and hardware, specially crafting values in the shader such that when sent to the hardware blend unit, they result in accurate emulation of the PS2's per-pixel alpha blending for supported PS2 blend configurations.


Courtesy of contributor Chaoticgd is a massively improved debugger. This overhaul, in the works for almost a year, allows the debugger to read MIPS debug (.mdebug
), SNDLL (.sndata
), and ELF (.symtab
) symbol tables from a game's executable binary if it has them included. If the .mdebug
section is available, the debugger can now display information about global variables, local variables, and parameter variables, including data types. This means you can explore data structures in memory as a structured tree. He subsequently added settings that give you fine-grained control over how and when PCSX2 performs symbol analysis passes. A few games that shipped with their debug symbols include Pac-Man World 2, Sega Soccer Slam, Fatal Frame, and hundreds more shipped with symbols in general. Below is a screenshot showing the tree of global variables and the list of functions in Pac-Man World 2.

Thanks to KamFretoZ, you can now configure both the compression method and the level of compression for savestates! These formats are Zstandard (default), Deflate64, and LZMA2, and there are four compression levels for each. You can also choose to leave your states uncompressed if your 40 TB NAS feels lonely. Higher compression will result in lower file sizes but may increase the time needed to save the states.

After 2.0, longtime contributor AirGamer launched into an effort to fix our DEV9 emulation and try to get PS2 Linux and PlayStation Broadband Navigator (PSBBN) working on PCSX2. His work has brought us tantalizingly close: as best we can tell, our lack of full emulation for the PS2's translation lookaside buffer (TLB) is now the only barrier still preventing PS2 Linux and PSBBN from working. Whoever steps up and conquers the TLB will bring the penguin to PCSX2.
Various Smaller Improvements in 2.2
Before we move on to 2.4 and the big changes it brought, we want to stop and spotlight the smaller work that goes into making PCSX2 a polished experience. Below are just a few among hundreds, and we're grateful for every single one.
- #11562 – Team lead fobes adds little endian support to the debugger.
- #11372 – macOS expert TellowKrinkle fixes VAAPI support on Linux.
- #11593 – Team lead fobes adds selectable pixel formats on a per-codec basis to the video capture tool.
- #11571 – Wiki maintainer TheTechnician27 adds a way to go directly to a game's wiki page from the PCSX2 application.
- #11602, #11808 – DB maintainer JordanTheToast and UI artist KamFretoZ add hardware info to our statistics overlay.
- #11730 – UI artist KamFretoZ adds a game icon in our Discord Rich Presence for supported games using RetroAchievements.
- #11787 – Memcard and gamepad expert RedPanda4552 fixes an issue with input profiles being blocked by old settings.
- #11839 – Graphics expert LightningTerror fixes a longstanding graphical issue in Knights of the Temple: Infernal Crusade.
- #11935 – First-time contributor rares-fodor adds a search bar to the cheats list.
PCSX2 2.4.0
After 2.0, the 2.2 development cycle had let us catch our breath and – for the most part – focus on finer details. Brewing under the surface, though, were fresh ideas and the zeal to bring them to life. We all wanted to get back to innovating, so that's what we did. The 2.4 development cycle comes with many performance improvements and new features.
For his capstone contribution to PCSX2 after over 20 years of unimaginable dedication, former lead developer refraction turned to his unfinished work on RT in RT support. Feeling duty-bound not to leave this to rot after he left, he agonized for months to get this working, and the end result is something to behold. First, though, let's address what this even is.
"RT in RT" stands for "render target in render target". If a game wanted to render to a subset of an image (e.g. only the right half) on the PS2, it had two options. The first, which is the way PC games have to do it, is to draw with triangles whose coordinates are positioned over the subsection they want to draw over (in the example, making sure all the triangles are positioned over the right half of the image). The second is to take the memory address of the pixels in the image and adjust it so it starts at the right half (so the new RT pointed to memory that was inside the old RT, hence the feature name). Now, drawing to the top left corner of the render target actually writes to the top left corner of the right half of the image (and drawing to the right half of the render target would corrupt the image, so don't do that).
Games that chose this second option confused PCSX2 very badly, and it would end up drawing to a separate RT that it never properly merged with the outer RT, effectively deleting all the triangles drawn this way. No longer! With this change, PCSX2 now recognizes when this is happening, figures out what section the PS2 game was trying to draw to, and moves the triangles accordingly, converting option 2 draws into option 1 draws, which PC APIs know how to handle.
This brings massive fixes to a huge variety of games – at minimum, multiple games with two-player splitscreen (such as Jak X: Combat Racing), multiple games that no longer need a hack to work (such as Ghost in the Shell: Stand Alone Complex), multiple games whose effects now work (such as Drakengard; comparison below), and multiple games that would only work before in software rendering (such as Hitman: Contracts; comparison below).






The PlayStation 2 uses a real-time clock (RTC) to keep track of the date and time in the real world. Games often use the RTC in order to seed pseudorandom number generation (RNG) because of its high variability. Additionally, save files show a timestamp in the BIOS, and these timestamps are sometimes shown in-game too. However, some games use the RTC in a more interactive way. Ratchet & Clank 2 and Ratchet & Clank 3, for example, let you teleport to the post-game Insomniac Museum area from 03:00–04:00, bypassing completion checks. The Simpsons: Hit & Run, The Simpsons: Road Rage, SpongeBob SquarePants: Battle for Bikini Bottom, and Scooby-Doo! Night of 100 Frights have holiday-exclusive Easter eggs. Need for Speed: Hot Pursuit 2 displays the date and time on a camera recording when you get busted. And Metal Gear Solid 3... if you know, you know.
By default, when a user starts a game, PCSX2 sets the RTC to the date and time from the user's desktop. For input recordings which require perfect determinacy to function correctly, we instead used a fixed, arbitrary date and time after the release of Metal Gear Solid 3 (which crashes if the date is too old). With the introduction of RTC settings by TheTechnician27, you can now optionally select a custom RTC starting point in the per-game settings (Game Properties
> Emulation
> Real-Time Clock
). This provides niche benefits for regular users (especially Ratchet players and enjoyers of Hideo Kojima's antics), and it brings PCSX2 closer to having a mature suite of tool-assisted speedrun (TAS) capabilities.
This currently requires you to have your BIOS set to GMT+0 and daylight savings time (DST) set to Summer Time (this is the default PCSX2 creates if no .nvm
file exists). Additionally, it will only work within the bounds of 2000-01-01 at 00:00 and 2099-12-31 at 23:59, which is the range of an actual PlayStation 2. Below is the Halloween-exclusive title screen from The Simpsons: Hit & Run.

The PS2 doesn't have HDR support, so why does PCSX2 use HDR textures? When two numbers are added that sum to a result that won't fit in the output, like adding 200 + 200 with an 8-bit result (which can represent the values 0-255), there are two main ways computers may deal with this. The first is overflow / wrapping, famous for looping counters back to zero after they cross 255 in many NES games. In this case, the number wraps back around to 0, so 200 + 200 would result in the value 144. The second is clamping, where numbers greater than the maximum representable value are clamped to it, so 200 + 200 would equal 255. When rendering graphics, most humans consider clamping to look more visually pleasing than wrapping, since having brighter than white turn into white looks better than it turning into black or gray. As a result, PC blend hardware clamps the results of math on all 8-bit textures. But the PS2 lets developers pick between clamping and wrapping, so how do we emulate wrapping?
Well if we don't want the result to clamp, why not just use an HDR texture, which can store values much larger than 255. We can draw all the triangles to this texture, letting the numbers accumulate more and more, then at the end, run a separate shader that wraps them all back to 8 bits. One minus of this approach is that there's still clamping, it just happens at a value much larger than 255, decided by the HDR format we use. For a while we used 32-bit float textures, which could accurately represent values up to 16 million, allowing a minimum of 65 thousand overlapping triangles before problems started appearing, but a while back we switched to 16-bit normalized integer textures, which many GPUs process at twice the speed, giving a minimum of 257 overlapping triangles before problems. This was enough for all the games we tested.
But performance still wasn't great, so former lead PCSX2 developer refraction (codename: "One Last Job") came back from retirement swinging with a major optimization. Previously, for every group of triangles the game rendered, PCSX2 would convert the texture to an HDR texture, render the group of triangles, and then perform the wrapping while converting the texture back to non-HDR. But some games would render multiple groups of triangles in a row, and for each group, PCSX2 would convert, wrap, and convert again. Now, PCSX2 converts to HDR once at the beginning, and leaves the results in the HDR texture until the game stops using the wrapping mode, greatly reducing the number of conversions needed in games like Sly 2: Band of Thieves and Big Mutha Truckers.
The Direct3D 11 renderer might have been the second-class citizen for some time now, but not this time! Graphics expert LightningTerror has come back with a toolbox in an attempt to revitalize the elder. How did he do it? The first phase was to lay out the groundwork by fixing the Direct3D 11 Resource Hazard API warnings, which paves the way of enabling him to implement Resource Shader Caching that manages to give noticable performance boost in quite handful of games. And as if those optimizations weren't enough, the daredevil himself has backported even more optimizations from other renderers which gives quite a performance boost in many games.
Don't believe us? Here is the benchmarks:
macOS requires all code binaries to be signed. If not, macOS' Gatekeeper will report that the program cannot be opened because it is from an unidentified developer, thus it "cannot verify that this app is free from malware". This was a headache for users, who needed to explicitly allow an unsigned programs to run. As such, PCSX2's lead developer, fobes, worked to get PCSX2 formally signed. This means that when you download and run PCSX2 on macOS, it will now open normally.
In the Linux world, the last remaining hurdles to PCSX2 running on Wayland by default are finally gone! Thanks to upstream fixes in Qt 6.9 and some clever work by team member GovanifY, the I_WANT_A_BROKEN_WAYLAND_UI
flag is history! This does not mean that no Wayland-specific bugs exist, but it means we've failed to find any we consider showstoppers. If your desktop environment uses X11, nothing will change, and we'll continue accepting reports for X11-specific bugs for the foreseeable future. If you find a Wayland-specific bug, the QT_QPA_PLATFORM=xcb
environment variable can take you back to XWayland while we work to fix it.
Thanks again to former PCSX2 lead developer refraction, PCSX2 now has a brand-new tool in its arsenal to fix misalignment issues caused by upscaling. Based on the existing Align to Native (AtN) half-pixel offset (HPO) option, Align to Native with Texture Offset (AtNTO) often combines the best of AtN and another HPO option called Special (Texture) to make a lot of games much sharper when upscaled. Thanks to a massive effort by GameDB specialist JordanTheToast, PCSX2 now applies this new setting automatically to over 100 games. These include Ace Combat 04: Shattered Skies, the Sly Cooper trilogy, God of War and God of War II, and Shadow of the Colossus. Below is a before and after comparison of Ace Combat 04.


Thanks again to months of work by Chaoticgd, the debugger has received a huge redesign using KDDockWidgets, massively improving usability. Not only can you now create a custom layout for your debugger (saved as a JSON file), but you can actually create and switch between multiple such profiles on the fly. Thanks to a new event system allowing widgets to communicate, you can even open multiple widgets of the same type – for example, two memory viewers looking at different areas of memory. We can't wait for you to try it out!

The right answer to "What does SDL do?" is "What doesn't it?", but PCSX2 uses it to handle gamepads and audio output. In January 2025, SDL's release of its newest major version, 3.0, threatened to lock us out from its great new features if somebody didn't step up and make our codebase compatible. GameDB specialist and dependency coordinator JordanTheToast – along with his emotional support TheTechnician27 – boldly took action. Days later, DEV9 expert and resident lifeguard AirGamer noticed both drowning in the deep end and decided to save them. Thanks to weeks of work by AirGamer, PCSX2 now uses SDL3. The SDL Wiki has a comprehensive list of new features, but for PCSX2, the immediate benefits are full support for DualShock 3 on Linux and a cleaner API for easier development and the ability to utilize new features as they come. Special thanks goes to the unsung heroes at the SDL Wiki who wrote this guide and especially the authors of this symbol rename script who made this transition feasible.
Various Smaller Improvements in 2.4
- #12157 – Contributor Florin9doi adds support for the MemCard PRO2.
- #12494 – First-time contributor recursean adds a adds a nice improvement to the debugger which adds column titles to Disassembly view.
- #12593 – Contributor TheTechnician27 fixed an issue with global settings overriding per-game settings in terms of audio.
- #12545 – Contributor Mrlinkwii has updated the redump database used for verifying dumped disc integrity.
- #12568 – Contributor KamFretoZ added the ability to load backup savestate directly from the UI.
- #12448 – Contributor Ziemas made it so BIOS ROM can be read in the IOP debugger.
- #12069 – Fobes managed to fix the EE Cache to not crash when changing from interpreter to the recompiler.
- #12572 - Contributor TheLastRar has updated Big Picture Mode's UI icons to use SVG for better scaling at higher monitor resolution.
- #12302 – Thanks to TJnotJT for adding new GS dumping options to the Debug settings.