Skip to main content

Q2 2021 Progress Report

· 8 min read

Q2 2021 Progress Report

Core Improvements


  • Remove the byte swapping done to TX/RX FIFO writes/reads performed via registers.
  • Fixes Twisted Metal: Black Online Public Beta v. 1.0 unable to initialize network adapter.
  • Fixes HDD support for Street Fighter Alpha Anthology.
  • In PCAP, check size of read packet. If the size exceeds the buffer we are using, drop the packet.
  • Opening the file in binary mode is the intended behaviour (and was done in the most common situation),
  • If DNS1 was manually specified, but DNS2 set to be automatically assigned, an off by one error could result in an out of bounds access to an array of adapter DNS addresses.
  • Most games expect a HDD of 40GiB in size, and may fail to install as a result (and display a confusing error message).
  • Adds an internal DHCP similar to what CLR\DEV9 offers for PCAP & TAP.
  • Correctly populate DNS2 field with DNS2 IP in the DHCP section of the network ui.
  • Yield might not leave the thread asleep long enough to prevent it from causing excessive CPU load.
  • This also brings PCSX2 inline with CLR_DEV9 (which also sleeps for 1ms).

Memory Cards

Adds an index file for folder memory cards in order to track timestamps and order of files in the FAT partition properly. This normally shouldn't matter, but there are at least a few games (ie. GTA games) which rely on the order of files on the memory card. Previously, folder memcards would not care about the order and populate the partition in whatever order the host filesystem provided the files (so, in the case of NTFS partitions, alphabetically). In reality, FAT partitions don't specify the order of files, which means in practice they are sorted to the order of creation.

  • Fixes saving in GTA games with folder memory cards.



Solves stuttering in MTVU mode in some games, and gets rid of some annoying asserts which mean nothing.


  • This just changes the SPU2 to get the current IOP cycle directly instead of through a pointer. The non-pointer path seems to have been given up on anyway and there seems to be little reason for hiding it behind a pointer.
  • This removes the path where SPU2 runs off the provided cycle argument to SPU2Async, but that was unused anyway.

The SPU was managing its own DMA Addresses, this makes it use the iopHw functionality for this instead.


Fixes Warriors of Might and Magic GamePad not functioning properly.

This change causes the currently selected GamePad to rumble instead of the first one.



Misc core

The hack is no longer needed as full Clamping mode can be used instead.

Prefix the "Impossible block clearing failure" with "[IOP]" or "[EE]" depending on the recompiler.

Previously it was thought that the PS2 would emulate the v2 GPU, but hardware tests show that it emulates the V0 GPU.

This hackfixes the BIOS to avoid a Data Cache bug caused a DMA buffer being overwritten during a transfer without waiting, which messes up the fonts in the BIOS. Fixing this correctly would require implementing the Data Cache, which is something which would make the emulator basically unusable, so this is a reasonable solution, it is only enabled during the BIOS screen.

  • Fixes certain bios revisions rendering text incorrectly.
  • Fixes an issue where recConstBuf was too far away from the main recompiler to LEA in 64-bit builds.
  • Fixes #3910 - CDVD Regression: Booting a physical disc inserted after opening PCSX2 doesn't work. (Regression only affects Windows).
  • Fixes an issue where the drive choice is cleared if there is no disc in the selected drive when PCSX2 is first opened (Should only affect Windows, but non-Windows only code is touched too).

GSdx Improvements

Misc GSdx

  • Normal users shouldn't really need to choose partial or full since automatic already does that.

TAS (Tool Assisted Speedrun) Utility Improvements

  • Adds a GUI configurable setting to control how many frames the frame-advance feature should advance.
  • Adds a brief warning explaining why you may want to avoid save-state recordings, and what would have to be done if a bad state is achieved.

IPC (Interprocess Communication) Improvements

GameDB Improvements

Misc Improvements

Moving forward with our goal to clean up and modernize the code we are removing SSE2/3 support.

Adds an CI environment variable to enable GS debugger on CI artifacts. This can also be enabled locally to enable the GS debugger.

Currently, the emulator will fully validate the GameDB, which is how we've been catching these recent mistakes. But this adds a CI check to validate the file in a very similar manner at build time.


And that's all from us, see you next time in our 2021 Q3 Report!


Q2 2021: (dev1164 to dev1299) (2020-04-01 - 2020-06-30)