Skip to main content

Q1 2022 Progress Report

· 55 min read

"Ladies and gentlemen, hold onto your controllers and prepare for an exciting journey as we unveil our first progress report of the year for last year!? After a seemingly endless delay, we're back and ready to take you through the crossroads of progress. We've said goodbye to the creaky and outdated WX-widgets GUI toolkit and hello to the sleek and shiny Qt GUI. It's like upgrading from a horse-drawn carriage to a sports car, or a butterfly emerging from its cocoon.

  • Please note that at this time it wasn't available as a build on the site until the next quarter of 2022. But the more hardcore users of PCSX2 could get the artifacts on GitHub if logged in.

And that's not all, we've also revved up the engine with the addition of the Vulkan renderer, allowing for smoother and more efficient gameplay. Plus, with the new texture replacement feature, you'll be able to customize your gaming experience like never before.

But don't worry, we haven't forgotten the technical side of things. Our team of experts has been working tirelessly to optimize and improve the CDVD, VU, and SPU systems, ensuring that our emulator runs at its best.

None of this would be possible without the support and contributions of our dedicated community. From the Core Team, to the Contributors, Discord users, Wiki users, Forum users, Testers and all the others who aren't mentioned, you keep PCSX2 fresh and better each day.

So, buckle up and get ready for a wild ride as we dive into the nitty-gritty details below. Happy reading!"

Core Improvements

CDVD

In this update, we've implemented the functionality of the speed register (0x2013) in the CDVD system. This improves how the emulator handles data from CDs and DVDs, ensuring a more accurate and smooth experience. We've also properly handled the SpindleCtrl value set by reads, which is a rare but important feature. Additionally, we've made sure that when the drive is ejected, it's also set as not spinning. This ensures that the emulator is in the correct state and prevents any potential errors. Overall, this update improves the overall performance and accuracy of the emulator when reading data from CDs and DVDs.

In this update, we've made adjustments to the error timing in the CDVD system to better handle the reading of data from CDs and DVDs. Specifically, we've modified the error used for high sector reads to better mimic the behavior of the PlayStation 2. This addresses an issue (#5280) where the emulator would crash when reading the second trailer in the "Silent Hill 2 Black Ribbon" demo disc. We've added timing to error calls to improve the overall performance and stability of the emulator when handling errors. This update improves the overall performance and accuracy of the emulator when reading data from CDs and DVDs, especially for games that do unusual things like Silent Hill 2 Black Ribbon demo disc, which previously caused the emulator to crash.

In this update, we've addressed an issue (#5301) where the emulator would hang when changing BGM tracks in Arcade mode in the game Auto Modellista (SLUS-20642). The music would stop and then after a couple of seconds, a "Read Time Out 15000(msec)" message would appear in the Program Log, especially when scrolling through tracks fast. We've made changes to the CDVD controller to prevent this issue by not delaying the abort commands on DVDs. This fix improves the overall performance and stability of the emulator when handling BGM tracks in Arcade mode for Auto Modellista.

This pull request centralizes the updates to the cdvd.Ready variable and adds the MECHA_INIT bit. The MECHA_INIT bit is a flag that indicates that the 'mecha' or mechanical part of the emulated CD/DVD drive has been initialized. This is used to make sure that certain games, such as Cold Fear, will run properly in the emulator.

VU

Branch, Branch, Branch! is a warning message that appears in PCSX2 when a game is making too many branches in a short amount of time. This can cause the emulator to run slower and can lead to graphical artifacts. A conditional evil branch is a branch that is performed in a VU (Vector Unit) that is not properly handled and is treated like a jump instead. This can cause the emulator to not handle the operation properly and can lead to graphical artifacts such as Pac-man World Rally. The bug caused shadows and other elements to appear incorrectly on the screen during transitions.

Meanwhile stenzek has been working hard to make the VU0/COP2 heavy games run more smoothly and came up with a new "optimization" option that skips some steps in the process to speed things up. It's like taking the shortcuts on a race track! This new option isn't 100% safe, but it's been tested and it works great for most games. It's like taking a risk to finish the race faster! There also made some other changes that will give you a boost in performance, anywhere from 3-10%, depending on the game. So buckle up and get ready for a smoother ride in your favorite VU0/COP2 heavy games!

This PR aims to improve the performance of PCSX2 by running the VU (VU0 mainly) ahead when it's only running a small block. This reduces the overhead and makes the overall process more efficient. Additionally, the VU Kickstart option is now always on and replaced with a VU Sync option as less games require the sync.

By running blocks of at least 3 cycles, this PR ensures that the program runs smoothly and avoids any inefficiencies that come from entering and exiting a recompiler. When combined with Pull Request 5571, this PR can give a boost of 10-20% in a number of games

SPU2

As part of our ongoing effort to improve the performance and usability of PCSX2, we have made a change to the maximum SPU latency. The previous maximum of 3000 ms has been reduced to 200 ms, which will provide a more responsive experience for users on modern computers. Additionally, we have also changed the emulation speed preset from 1% to 2% to address some issues that have been reported like the gs dump speed.

PAD

USB

This Pull Request adds support for the CaptureEye/OV511p webcam, which is needed for games like Police 24/7 but other games still need specific Webcam device emulation. This again lowers the number of non-emulated devices by 1 from the list of missing USB/PAD devices.

DEV9

This pull request adds a new socket-based backend for DEV9 networking, similar to the existing Winsock backend provided by CLR_DEV9. This new backend allows for easier configuration and joining of online/resurrected games however some will need specific DNS or DNAS patches.

It's important to note that while this backend is able to join online games with minimal configuration, hosting online games with Sockets is not currently supported. Additionally, for LAN games, it allows joining a game hosted by actual hardware or hosted by an instance of PCSX2 using TAP/Pcap.

For Mac and Linux users, the auto adapter selection feature will not be able to select an adapter, and you currently must specify an adapter manually. To support this, PR #4930 is reliant on it.

Handling of ICMP Echo packets (performed by the Network Access Disc) also required platform-specific code, and it's not guaranteed that it works correctly on all platforms.

This pull request includes a fix to prevent crashes on Linux systems with multiple adapters. It specifically addresses the issue of null ifa_addr, which is a field in some interface adapters that may not be set. This can cause the program to crash when trying to match the specified adapter to the list of adapters returned by the getifaddrs() function. This change adds a null check for ifa_addr in the PCAPGetIfAdapter() function to prevent this crash from occurring.

The new Qt UI for configuring DEV9 settings makes it more user-friendly and easy to navigate. The host list has also been merged into the main settings file in Qt/Core. Additionally, there's now an option to configure DNS1 or DNS2 to use the internal server, which is only available in the Qt UI.

Note that validation of Ethernet and HDD settings are no longer performed by the UI, and that the Ethernet Api/Type dropdown doesn't actually set the corresponding settings field. This was done to keep these two values in sync, such as when switching API & device mid-emulation. HDD creation is done on emulation start, with progress logged to the console. However, users will need to manually click on the "Create Image" button as the HDD will not auto-create an image. Modifying settings during emulation may behave unexpectedly, such as when enabling Ethernet before specifying an adapter, or adjusting HDD settings.

IPU

Refraction, the author of this pull request, has identified a problem with the IPU_FROM DMA (the component that handles e.g. MPEG2 cutscenes). The issue arises when the QWC value is set to 0 at the start of the DMA and there is nothing waiting in the FIFO. In this scenario, the DMA will not underflow and will not end as intended. To address this problem, refraction has added a check for this specific scenario and implemented a solution to end the DMA when it occurs. This change is crucial for ensuring the proper functioning of Hudson games and their videos. In addition, refraction has also provided further explanation in the code to assist other developers in understanding the reasoning behind this change.

Debugger

Miscellanous Core

GS Improvements

GS

As a writer for PCSX2, I am excited to announce that we have made significant improvements to the tex in rt code. The logic is now encapsulated in the GSTextureCache::ComputeSurfaceOffset method, which considers two surfaces A and B and computes the offset from B to A in terms of B coordinates. This improved logic is able to fix and improve a number of issues in games such as Burnout 3, Xenosaga 3, The Getaway, Indiana Jones and the Emperor's Tomb, and Wild Arms 4.

One of the major benefits of this change is that it allows us to handle higher blending loads with less performance impact. Additionally, the GSTextureCache::ComputeSurfaceOffset method is intended as future-proof, potentially useful for detecting overlaps between EE writes and cached Targets, or between cached Targets alone.

We've also made a number of bonus improvements to the texture cache, such as inverting the order in which Target and Source are searched in the cache, reading back Targets from LRU to MRU, and partially dirty targets are now searched for valid data.

This improved logic is enabled via the .ini file (UserHacks_TextureInsideRt = 1) for non Jak games, or from the GS HW hacks settings GUI. However, due to the nature of GS-hw TC, the logic cannot be always enabled without causing regressions. There is more context on the Pull Request with tons of images so I only outlined some of improvements, most already said by iMineLink and others there.

The author, lightningterror, has made improvements to the DATE selection process in the PCSX2 emulator. Specifically, for the OpenGL renderer, a check for fbmask is now implemented and an accurate path for DATE_GL45 is used when present. Additionally, a check for FBA is added and the fast path DATE_one is used when all pixels are 128 or more.

For the Direct3D renderer, a similar check for fbmask is added, however, the accurate path is not supported so only the DATE path is used. A check for FBA is also implemented and the fast path DATE_one is used when all pixels are 128 or more.

This change is aimed at optimizing the performance of the emulator, specifically in regards to the handling of shadows and transparency in the games.

Introducing Vulkanic, our new Vulkan renderer for PCSX2! (Just kidding, it's just called Vulkan.) We've been working hard to bring PCSX2 users a new renderer option, and it's finally here! The Vulkan renderer is a powerful new addition to our emulator that promises to take your gaming experience to the next level.

The advantages of using the Vulkan renderer are numerous:

Speed: It can handle high blending loads with ease, even outperforming the NVIDIA GL driver in certain cases. Future-proofing: With the rise of Vulkan, it's important to keep up with the latest technology. More efficient: In theory, Vulkan is more efficient than Direct3D and OpenGL.

For users with AMD graphics cards, the Vulkan renderer has the added benefit of being less punishing on performance when using higher blending modes, compared to the OpenGL renderer. And for Linux users, we're happy to report that the Vulkan renderer is fully supported and runs exceptionally well on this platform.

On Windows, the Vulkan renderer may have some performance advantage over OpenGL, but on Mac and Linux, the performance impact may vary and it depends on various factors.

We're excited to see how the Vulkan renderer performs on a wide range of devices, so we encourage users to give it a try and let us know your thoughts. Whether you're running on an AMD, NVIDIA, or Intel graphics card, we want to hear from you!

* Plugins are gone already, don't worry about this image.

Above is an alternative reality when plugins were still a thing and would've used the logo for Vulkan. Even PCSX2 plans can change on the spot, short-term or long-term.

Introducing our shiny new DX11 shader cache! It's like putting a turbocharger on your graphics card, you'll be flying through games with lightning speed.

Gone are the days of waiting for shaders to recompile every time you switch between hardware and software renderers. With the new cache, we're saving the program binaries in a disk cache, so the next time you need that shader, it's ready to go, no waiting around.

Now, some of you may be thinking, "But my driver already has a built-in hash-based cache!" And you'd be right! But, not all drivers have this feature and even if they do, our cache is an added layer of optimization. Plus, who doesn't love a little redundancy?

One thing to note, due to the use of a single program object, there may be more variants than before, but don't worry, they're all cached and shared between games. This means less stalls caused by shader compiling and more opportunities for inter-stage optimization from the driver. Last year OpenGL already had something similar for disk cache but it's now being expanded to D3D11.

Are you tired of waiting for textures to load in your favorite PS2 games? Say goodbye to those pesky delays with the new and improved texture preloading feature in PCSX2!

This latest update, brought to you by the talented stenzek, speeds up the preloading process by hashing the GS blocks that make up the texture rather than expanding the entire RGBA8 texture. This means less work for the CPU and faster loading times for you!

And don't worry about a few false positives here and there - at worst, it'll just result in an extra upload. But when you consider the CPU savings from not expanding the texture, it's a small price to pay.

The changes in this PR improve the performance and accuracy of the graphics synthesizer (GS) hardware side in the emulator when it comes to blending colors. The change implements an alternative method for blending colors in certain situations where the previous method was not accurate. This leads to more accurate and visually pleasing graphics in the games being emulated. Additionally, this change also improves the performance of the GS hardware by reducing the workload of the software blending and shifting more of it to the hardware. This results in a faster and smoother gaming experience for the user.

Before
After

We've made some exciting updates to the texture cache in our latest release. Our goal with these changes is to improve the speed and image quality of games on integrated GPUs with low memory bandwidth.

Specifically, we've stopped the texture cache from downscaling targets when used as a source, enabled smaller framebuffers even when rendering at 1x, and added optimizations to move sampling to hardware when possible. This has had a noticeable impact on the performance of Burnout at 1x on integrated GPUs. Additionally, these changes have improved the image quality of Burnout when upscaled to a multiplier of your choice.

We've made these updates by editing the vertex and fragment shaders to support rescaling normalized coordinates, though we did consider an alternative approach of allocating full scale textures.

Before
After
  • As you see in this example that even if you barely touch the upscaling multiplier and run at 2x PS2 resolution it will still benefit and look less compressed/blurry , but it benefits a ton of potential hardware configurations.

#5285 take 2. iMineLink refined the process yet again:

  • Added full support for target rescaling in GS TC, respecting the texture aspect ratio.
  • Avoid redundant clears when the target is going to be completely drawn when rescaling/converting.
  • Merge the two ways to lookup render targets (for draw and frame) into a single slightly more complex method, to recycle the rescaling logic and other code.
  • Avoid using upscaled size for targets requested at native resolution when upscaling.
  • Correctly set texture scale for targets created in a frame lookup.
  • Update targets from GS memory before converting color to depth.
  • Update targets validity region when uploading dirty data from GS memory (especially useful in combination with preload frame data, which makes the initial validity region of the target non empty).

This pull request introduces a new feature to the texture cache of the Graphics Synthesizer (GS) which is a hardware component of the PlayStation 2. The new feature is a hash-based cache that is added to the existing TEX0-key-based-cache.

The hash-based cache works by creating a unique identifier for each texture based on its data, rather than its location in VRAM. This eliminates the need for texture uploads in games that frequently move textures to different locations in VRAM across frames. This can result in a significant performance boost in games that have a lot of texture uploads, such as Grand Theft Auto: San Andreas or Grand Theft Auto: Liberty City Stories.

Another benefit of the hash-based cache is that it can be used for texture replacements. A proof-of-concept for this feature has been implemented and it has been shown to work well.

In terms of implementation, the hash-based cache can be turned on or off in the configuration settings, and users can choose to use the default TEX0-key-based-cache, partial preloading with the hash-based cache or full preloading using the hash-based cache. It also has a maximum texture size that it can cache, to avoid caching too many large textures which would consume too much memory.

Overall, this pull request offers a significant performance boost for games that heavily stream textures and provides a new feature for texture replacements, making it a valuable addition to the GS's texture cache.

Though keep in mind that some games will abuse the texture cache in different ways and might have the opposite effect but that can be disabled or done by the team in automatic settings so that most don't need to worry. Please report if you see any Hash Cache stopping OSD message.

* Example of hash cache abuse bringing down performance.

We've got a little mix-up on our hands, folks! We've been calling our "Interlacing" option something that it's not. So, we're giving it a new name that better reflects what it actually does.

"Interlacing" is now officially known as "De-interlacing"!

You might be wondering, "But wait, what does de-interlacing even mean?" Well, picture a checkerboard pattern on your screen. That's interlacing for you. It's a way for older TVs to display a higher resolution image, but it can look pretty janky on modern displays. Back then it was a way that analog television systems used to reduced bandwith to transmit the video signal. It works by transmitting only the even or odd lines of the image in each frame (called fields like bottom field and top field), rather than transmitting all the lines in each frame. This reduces the amount of data that needs to be transmitted, allowing the video signal to be transmitted using less bandwidth. The downside is that it can make the image appear less smooth and can cause flicker or other artifacts.

De-interlacing smooths out that checkerboard pattern and makes the image look more like a progressive image. We've got a few different methods to choose from.

Weave is like a saw-tooth pattern, Bob is the sharpest but can make things look like they're bouncing a bit, and Blending is a bit blurrier but the most consistent and has no bouncing. If you are still confused, just let it be automatic and it should switch to None De-interlacing automatically if it sees a progressive signal as to not make it ugly, however for interlaced signals it needs other deinterlacing methods. An exception is No-Interlacing patches which will also now switch to none De-interlacing but the game will think it's still interlaced.

So there you have it, folks! A little change that goes a long way in making things less confusing for everyone.

This pull request aims to add a feature that many have requested, the ability to dump and replace textures in-game. This allows users to customize the game's graphics to their liking, whether it be for improving the visuals or changing them entirely (see the image if you want a sample of cursed).

The pull request includes:

Basic texture dumping feature, allowing users to save the game's textures to their computer for editing or replacement. Basic texture replacement feature, allowing users to load their own textures back into the game. Asynchronous texture dumping and loading for improved performance. Support for preloading textures to memory for faster texture loading during game-play. Support for dumping mip-maps, which are smaller versions of a texture used for objects that are farther away from the camera. Support for loading DDS files and compressed textures, which is an image file format that uses lossy compression to reduce the file size.

Please note that while the developer is not planning on changing the texture filenames or hashes unless it's about refining the current implementation to be cleaner and better for users.

* We do a little bit of trolling.

Before
After
  • Okay, fine here is a nice example of what you can do if you were serious in expanding experience.
  • When most automatic fixes like VU/EE Rounding and clamping were added, there are now new variables like rendering and upscaling that can be given on the GameDB. A long manual process that will severely lessen the need of user's need of tinkering per-game. This will also inflate the GameIndex/GameDatabase Pull Requests and lines but that's just a small sacrifice to make.

Misc Improvements

GUI

* Image from Qt is coming closer and closer to official release.

This pull request aims to improve the user interface of the on-screen display (OSD) messages. The OSD is the in-game display that shows information such as frame rate and other settings.

Specifically, this pull request addresses an issue where spamming the turbo or frame limiter keys would generate multiple messages, making it difficult for the user to understand the current settings. The changes made in this pull request prevent these messages from piling up, so that only the most recent message is displayed at a time.

x69 gif

This pull request brings the power of the Qt framework to PCSX2. Qt is a modern, cross-platform framework that offers a lot of features and functionality out of the box. Compared to the existing WX Widgets, Winapi/winforms, and GTK for Linux, using Qt will make the codebase cleaner and easier to maintain, and will allow for much more flexibility and potential for improvements.

For code enthusiasts, this pull request represents a huge step forward in terms of code quality and maintainability. The introduction of Qt will allow developers to take advantage of its powerful widgets and modules, which will make the code look much more polished and professional. Furthermore, the framework provides a lot of pre-built functionality that would have been extremely difficult to implement otherwise.

For those who don't understand code, this change means that the emulator will be more stable, faster, and have a more polished user interface. The use of Qt will allow the development team to focus on improving the core functionality of the emulator, rather than spending a lot of time on making the user interface work correctly.

Overall, this pull request is a significant step forward in the development of PCSX2, and will greatly benefit both code enthusiasts and regular users alike.

This pull request enables the use of SDL2 for input source in the Qt version of PCSX2, the popular Playstation 2 emulator. This means that users will now be able to use their DualShock 4 controllers natively on both Windows and Linux.

Previously, the Windows version of PCSX2 1.6 used a plugin called Lilypad, which only supported Xinput and preconfigured keybindings, making it difficult for users to customize their controller settings or to even see they have correct bindings. On the other hand, the Linux version of PCSX2 1.6 used a plugin called OnePad-legacy, which only allowed for keyboard hotkeys and had no automatic default mapping for controllers.

With the implementation of SDL2 in the Qt version, users will now have a more intuitive and visually clear way to customize their controller settings, without any platform specific differences. This will make it easier for users to use their controllers and improve their overall experience with the emulator.

The main window's type table did not have enough width to display all text, especially when the filter button was used. This caused some text to be cut off and not fully visible to the user. Additionally, some strings within the table were not properly spaced, making it difficult to read and understand the information being displayed.

To address these issues, this pull request increases the width of the type table and adds spaces to the strings within the table to make the information more legible and easy to understand. The filter button's width is also adjusted, so it will not push the string away anymore.

This pull request addresses several issues with the layout and design of the main window in PCSX2. Specifically, it addresses issues with the width of the "Type" table and the "Region" and "CRC" columns, which were not wide enough to display the full text. The pull request also improves the hotkeys code by adding missing hotkeys and organizing them in a more intuitive way on the GUI level.

The new changes make the layout of the main window look better and more polished than before. Additionally, more hotkeys have been added, making the feature more complete. The developer has also provided images to show the new hotkeys that have been added. However, it is important to note that there are still some hotkeys missing and some old ones are not included in this update.

For reference users should take a look at the PCSX2 hotkeys wiki page (https://wiki.pcsx2.net/Hotkeys) for more information about the new and missing hotkeys as there are some breaking changes like using only one - instead of -- in the old WX version.

This pull request addresses issues with the sizing and layout of the main window, Interface Settings and the OSD message display. The main window will now correctly display the full Toolbar, Interface Settings will not go out of bounds, and the OSD message display timing has been shortened from 10 seconds to something like 5 or 8 depending on severity. Additionally, the speed percentage presets have been changed for better user experience.

The changes made in this pull request are meant to improve the overall user experience by addressing minor layout and display issues, and providing more customization options for speed percentage presets.

This pull request brings some much needed eye candy to PCSX2 with the addition of four new custom themes! Say goodbye to boring, bland interfaces and hello to some retina-burning, soul-incinerating visuals.

Introducing "Untouched Lagoon" - a light theme with a refreshing blue and green color scheme, perfect for those hot summer gaming sessions. "Baby Pastel" - a light theme with a soft and dreamy color palette, ideal for those who prefer a more delicate aesthetic. "PCSX2" - a light theme with the iconic PCSX2 blue color, perfect for those who want to represent their love for the emulator. And last but not least, "Scarlet Devil" - a dark theme with a bold and striking red color scheme, perfect for those who want to add a touch of edginess to their gaming experience.

So go ahead, give your eyes the treat they deserve and switch up your theme. Just make sure to have your sunglasses handy, because these custom themes are not for the faint of heart!

GameDB

Keep in mind there are hundreds of games improved in the GameDB and you only see a small snippet of screenshots as examples.

Added automatic GS HW mode fixes for the following games:

  • Battlefield 2: Modern Combat. (Offset post processing)
  • Beyond Good and Evil. (Helps with water rendering)
  • Black. (Offset post processing)
  • Chaos Legion. (Glitched boss shadows) Fixes #2409
  • Colin McRae Rally 2005. (Shadows, colours still broken)
  • Dog's Life. (Jake turning black) Fixes #1004
  • Dr. Seuss' The Cat in the Hat. (Fixes heat effects) mentioned in #5507
  • Driv3r. (Offset post processing)
  • DT Racer. (Corrupt textures)
  • Some Harry Potter games. (Screen corruption)
  • Jak 2. (Various heat/shadow effects)
  • Jak 3. (Various heat/shadow effects)
  • Legion - The Legend of Excalibur. (Missing floor textures) Fixes #4031
  • MLB 2005. (Cut off loading screen)
  • Monster Lab. (Apparently fixes black screen)
  • Power Drome. (Lights through objects)
  • Prince of Persia - Warrior Within + Sands of Time. (Offset post processing)
  • Ratchet Gladiator/Deadlocked. (Missing textures in some levels)
  • Ratchet & Clank Going Commando/Locked & Loaded. (Fixes shadows)
  • Ridge Racer V. (Fixes most of the intro corruption, not car textures)
  • Rogue Galaxy. (Lighting effects)
  • Sniper Elite. (Offset post processing) Fixes #3005
  • Syphon Filter - Dark Mirror. (lights through walls and sprites) Fixes #2249
  • Syphon Filter - Logan's Shadow. (lights through walls and sprites)
  • XenoSaga Episode 1-3: (Shadows)
Before
After

Align sprite to eliminate vertical black lines for:

  • Tekken 4
  • Tekken 5
  • Tekken Tag Tournament

Relevant to Pull Request 5593 where renderer and upscaling settings were added. Now if OSD complains about a specific option you know what it corresponds to the GUI and it also can be used as a guide for checking GameDB and adding new fixes.

Fixes the lint and adds a bunch of upscaling fixes.

Align Sprite for:

  • Colin McRae Rally 3/4
  • Enthusia Professional Racing
  • Finding Nemo
  • Lifeline (Also known as Operator's side)
  • Taiko Drum Masters
  • Toca Race Driver 1/2/3
  • Tokyo Xtreme Racer 3

Merge Sprite for:

  • Drakengard 2
  • God Hand
  • Medal of Honor - Vanguard
  • Naruto - Uzumaki Chronicles

Half-pixel offsets for;

1 Normal (Vertex):

  • Drakengard 2
  • Forgotten Realms - Demon Stone
  • Harry Potter and the Half-Blood Prince
  • Kingdom Hearts 1/2
  • True Crime - New York City
  • WRC II

2 Special (Texture):

  • Burnout Revenge/Dominator/Takedown
  • Commandos - Strike Force
  • Crash Twinsanity
  • Dark Cloud
  • Devil May Cry 3
  • Fatal Frame
  • Kuon
  • Legaia 2 - Duel Saga
  • Legend of Spyro, The - A New Beginning
  • Legend of Spyro, The - Dawn of the Dragon
  • Legend of Spyro, The - The Eternal Night
  • Medal of Honor - Vanguard
  • Project Zero

3 Special (Texture-Aggressive):

  • Bratz - The Movie

Software Renderer gamefix:

  • Final Fantasy X-2

Preload Frame Data:

  • Growlanser - Heritage of War

Half-pixel offsets for;

1 Normal (Vertex):

  • Baroque
  • Dragon Quest VIII
  • Mercenaries - Playground of Destruction
  • Radiata Stories
  • Shadow Hearts Covenant
  • Sims Bustin' Out
  • Star Wars Battlefront II
  • Star Wars - Episode III - Revenge of the Sith
  • Suikoden IV
  • Valkyrie Profile 2 - Silmeria

2 Special (Texture):

  • Speed Racer
  • SSX 3

3 Special (Texture-Aggressive):

  • TimeSplitters - Future Perfect

Roundsprite;

Half:

  • Ar Tonelico 1
  • Ar Tonelico 2
  • Atlantis III
  • Dragon Quest VIII
  • Final Fantasy X-2
  • Tribes - Aerial Assault
  • Wild ARMs 4/5

Full:

  • Star Ocean 3
  • Final Fantasy X
  • Shadow Hearts - From the New World

Wild Arms:

  • Global Defence Force

Half Screen:

  • Mercenaries - Playground of Destruction

SoftwareRendererFMV:

  • Monster Rancher 4
  • Megaman X8
  • Onimusha Dawn of Dreams
  • Robot Alchemic Drive
  • Rygar - The Legendary Adventure
  • Taz Wanted

Texture in RT:

  • Japanese entries for Wild ARMs 4
Before
After
Before
After
Before
After

Align Sprite:

  • Soul Calibur II / III
  • Ace Combat Zero / 4 / 5

Mipmap

  • Europese Ace Combat Variants

Half-pixel offsets for;

2 Special (Texture):

  • Metal Gear Solid 2 (Substance) / 3 (Subsistence)

Roundsprite;

Full:

  • Ace Combat Zero / 4 / 5
  • Brave - The Search for Spirit Dancer
  • Chronicals of Narnia, The - The Lion, The Witch and the Wardrobe
  • Die Hard - Vendetta
  • Ghost Rider
  • God of War 2 (Added round sprite to get rid of chromatic effect)
  • Kya - Dark Lineage
  • Matrix, The - Path of Neo
  • Psychonauts
  • Scarface - The World is Yours (Still not perfect, but much better)
  • Silent Hill - Shattered Memories
  • Simpsons The - The Game
  • Sly 2
  • Sly 3
  • Snoopy Vs the Red Baron
  • Stolen (Upscaling and performance)
  • Thrillville
  • Thrillville - Off the Rails
  • Alter Echo
  • Beyond Good and Evil
  • Dragon Ball Z - Budokai Tenkaichi 2
  • Fatal Frame 1 / 3
  • Ghost in the Shell - Stand Alone Complex
  • Global Defence Force
  • Xenosaga 1 / 2 / 3
  • 50cent - Bulletproof
  • Dark Cloud 1 / 2
  • Haunting Ground
  • Rogue Galaxy
  • Tomb Raider - Legend
  • Ape Escape 3
  • Armored Core Last Raven
  • Berserk
  • Forever Kingdom
  • Front Mission 4 / 5
  • Need For Speed Underground 1 / 2
  • Kings Field 4 - The Ancient City
  • Test Drive Unlimited
  • Jak 2 / 3 / X
  • Bully
  • Colosseum - Road to Freedom
  • Dark Chronicle (Dark Cloud 2)
  • Killzone
  • God of War
  • Gun
  • Midnight Club 3
  • Mortal Kombat - Deadly Alliance
  • Need for Speed Carbon / Most Wanted / Undercover
  • Prince of Persia - Sand of Time / The Two Thrones / Warrior Within
  • Resident Evil 4 (BioHazard 4)
  • Thrillville / Off the Rails
  • Atelier Iris 3 - Grand Phantasm
  • Baldur's Gate - Dark Alliance 1 / 2
  • Call of Duty 2 - Big Red One
  • Dark Cloud 1 / 2
  • Mana Khemia 1 / 2
  • Sims 2 - Castaway
  • Valkyrie 2 - Silmeria

GameDB serials with ':' replaced with ' - '

GS HW Fixes and other fixes for:

  • Adventures of Cookie & Cream, The
  • Brothers in Arms - Earned in Blood / Road to Hill 30
  • Black
  • Chaos Legion
  • God Hand
  • Knockout Kings 2001
  • Kuon
  • Outrun 2006 / 2 SP
  • Project Eden
  • Psi-Ops - The Mindgate
  • Punisher, The
  • Ratchet Deadlocked (USA) / Gladiator (Europe) / 3 Up Your Arsenal
  • Silent Hills Origins / Shattered Memories / 3 / 4
  • SoulCalibur II / III

This pull request updates the PCSX2 GameDB, adding new entries for the Ratchet & Clank demo and Spider-Man 3. It also includes several fixes for these games, such as rounding fixes for Ratchet 1 titles to improve Hydrodisplacer behavior. Additionally, the pull request removes an unnecessary fix for the Virtual On ontario program and corrects an oversight made for Spiderman 3 in the past. Overall, these changes will improve the overall performance and accuracy of these games in the emulator.

Maintenance

PCSX2 is proud to announce that we have officially removed 32-bit builds from our continuous integration (CI) process. This marks an important step in the future of the PCSX2 project, as we shift our focus to 64-bit builds.

As technology continues to evolve, the PCSX2 team has made the decision to no longer support 32-bit builds. While the current builds of PCSX2 do not typically use more than 4 GB of RAM, the use of 64-bit builds allows for improvements in register usage and overall performance.

In the interest of maintaining a smooth transition, we have made the smallest possible change to remove 32-bit builds from our CI process. There is still 32-bit scaffolding and code throughout the repository, but we will continue to work towards removing all traces of 32-bit support in the future.

We have also added a link to our new build page and updated our scripts to no longer consider 32-bit artifacts. We apologize for any inconvenience this may cause for users still utilizing 32-bit systems, but we believe that this move towards 64-bit builds is necessary for the continued development and improvement of PCSX2.

Other

Gone are the days of fiddling with 1 or more controllers, you can finally bind (most) controller by simply going to the correct window and pressing on automatic mapping when you have your controller(s) connected. You can access this menu by either enabling Toolbar and then controllers or Settings > Controllers > Controller Port 1 > Automatic Mapping > YourControllerName. By default there is a keyboard mapping so make sure to bind it correctly, we use SDL mapping maintained by the community not only limited to PCSX2: https://github.com/gabomdq/SDL_GameControllerDB if you ever wondered seeing latest controller database builds. Are your controllers not working then it's best to contact us in the Discord or if needed contact upstream if the config doesn't have a mapping yet. You can check yourself on Windows or Linux here: https://gitlab.com/ryochan7/sdl2-gamepad-mapper/-/releases or use other methods states on the first URL.

* Example of a config already ready to be used for automatic mapping in PCSX2.

Ambiguous

Tries to make T-Bit more reliable in MTVU, but it is slow and probably shouldn't be used. Also added option to disable MTVU in the GameDB, it seems reliable, hopefully :/

T-bit is just broken in MTVU, since the EE thread needs to know when the VU program has finished and if it was a T-Bit finish or E-Bit finish, and the threading makings this a total mess. Plus it turns out a bunch of games which use this actually have DMA problems which are masked with MTVU off.

Games which are affected and have MTVU forcefully disabled in the DB (known):

  • The Sims
  • Spiderman 3
  • Sharks Tale
  • Over the Hedge
  • Pitfall: The Lost Expedition

Metadata

See you in Q2 2022.

Q1 2022: (dev2186 to dev2548) (2022-01-01 - 2022-03-31)