Q4 2020 Progress Report
This quarter has been really amazing for us and for our users that enjoy using PCSX2.
We’ve made some outstanding progress, hope you guys enjoy the read.
Core Improvements #
[Enhancement] Plugins merger in to core continuation:
As we mentioned in our previous report we are continuing merging the plugins in to the core which bring us variety of benefits.
For people that used different plugins for specific features that aren’t available in the plugins we merged don’t worry, we are working on adding those features as well, be patient.
Currently the following plugins have been merged in to the core:
#3994 PAD: For the PAD feature that handles PS2 controller input we merged LilyPad for Windows users and OnePad 2.0 for Linux/Mac. In the future we will transition and combine both of them so all missing features get added. By GovanifY .
[Enhancement] Counters improvements:
Comparing PCSX2’s old framelimiter with RTSS showed there was room for improvement. Frametimes regularly would jump up and down in various situations. This change smooths out frame pacing substantially across the board (easily visible in RTSS). We have some comparisons below which you can see the differences, alternatively our users can check out the relative PR for more details.
Note: Master(Before) and (After)
Ratchet & Clank 2
Champions - Return to Arms
Metal Arms - Glitch in the System
Timing adjustments for double strike analog modes.
Fixes Beatmania IIDX 3rd-8th Style.
[Enhancement] MTVU improvements:
We are happy to announce that we have made great progress this time around in improving MTVU compatibility with a bunch of games. The MTVU list with remaining compatibility issues can be seen at #1669 .
Improve compatibility with games that use FINISH/SIGNAL/LABEL on the GS through VU1 when using MTVU.
Performance impact is reasonably minimal, within a couple of percent of master. Although I cannot guarantee the reliability although it looks good, it’s a huge improvement and a vast majority of the games listed are now playable with MTVU.
If a game does a double SIGNAL, that still won’t work.
Fixed Games when using MTVU:
- Backyard Basketball
- Batman: Vengeance
- Crash Nitro Kart
- Gradius V
- King’s Field IV
- Marvel Ultimate Alliance
- Medal of Honor: Rising Sun
- MTVs Celebrity Deathmatch
- Summon Night Gran-These: Horobi no Ken to Yakusoku no Kishi
- Tony Hawk games
- X-Men Legends 2
- Yu-Gi-Oh! Capsule Monster Coliseum
Slowdown in games using MTVU Fixed:
- 007 Agent Under Fire
- 007 Everything or Nothing
- TimeSplitters 2
- TimeSplitters Future Perfect
- Aura for Laura
- Fixes graphical issues in Fatal Frame 2 when swapping to MTVU.
- Fixes atomic usage and ensures all communication goes in one direction.
Also removed some forced 4-byte alignment, for 4-byte types it’s unnecessary and for 8-byte types it’s either unnecessary or harmful.
Fixes Yanya Caballista running slow (patches removed).
Fixes Disney’s Treasure Planet’s crazy camera (that flies off) and ground displacement.
Don’t decrement/change VIF1 QWC on VIF1 FIFO write.
This involves removing an old VIF reset hack which was put in for Donald Duck Quack Attack, but doesn’t seem to be needed anymore (game uses T-Bit on VU which has been fixed since this hack was placed in and could likely have been the problem).
Fixes ScarFace when switching to progressive mode.
[Enhancement] microVU improvements:
Fix some M-Bit stuff to reduce programs created and fix them happening on branches.
Hopefully shouldn’t be much in the way of compatibility changes, but should cut down the recompilation of MicroVU0 programs due to the change in how VU0 operates and how things are going to work going forward. MGS3 went down from 115 (and climbing) to around 13. Crash Twinsanity went down from 32 by the main menu to about 15.
This also sets up some future work of synchronising VU1.
Also fixes a bug in VIF when using MTVU, fixes Def Jam Fight for NY when using MTVU, maybe others.
Sometimes (CoD Finest Hour) can somehow end up with blocks missing from a program, it still finds the current program, so we check if the block exists, if not, recompile new ones.
[Enhancement] SIF improvements:
This removes 2 hacks on the IPU for Enter the Matrix and Mana Khemia
On the PS2 if a NORMAL DMA transfer is started with QWC 0, the DMA overflows and transfers another 0xFFFF quadwords on top of the underflowed one, this correctly emulates that.
I did have to do a “kind of” hack to make Mana Khemia work properly, the game relies on the IPU to take some time to decode macroblocks, but we handle them instantly, so I had to place an artificial delay on starting the DMA to let it catch up and do what it needs to do. It shouldn’t have any negative impacts.
Fixes bad fonts when booting a game in fast boot.
Selects correct language for games depending on your BIOS setting when using fast boot.
It also makes normal boot works for your language even if you have a difference between BIOS region and game region but you will need to go into BIOS and apply that or let the default settings handle it based on your BIOS. #4018 .
Stops games such as Guitar Hero 2 from crashing on fast boot.
Displays corrects timezones in games.
- Fixes bad slowdowns in Ratchet games when using EE Timing fix caused by bad IPU streams.
[Enhancement] VIF improvements:
- Fixes remaining SPS in Shadowman.
Also Fix missing VIF status check on MFIFO.
Fixes hang in Batman Vengeance, game stalls the VIF during an MFIFO transfer then stops and starts VIF while it’s stalled, in the old code this causes it to ignore the stall and continue as normal, this PR fixes that behaviour.
Fixes bad geometry in Homerun.
This synchronises VU1 with the EE and VU0 (as close as we can). A new speedhack has been added to replicate the old behaviour, which is on by default unless you’re using the Safest preset. Games which require the new behaviour have an entry in the GameDB to disable it.
- Fixes SPS in Shadowman 2encond Coming.
- Fixes “Noodles” in Parappa the Rapper 2 (box in the top left).
- Fixes floor corrupt textures and console error spam in Dropship.
- Slightly improves World series baseball 2k3 but it’s still broken, just doesn’t run at sub 1fps anymore.
[Enhancement] SPU2 improvements:
Fixes the entire list of games that required alternative delay cycle handling in #2371 .
Fixes sound issues in Megaman X7.
Note: This has been re implemented in Q1 with a better solution where it doesn’t cause issues.
This will change the jumps from 42 to 5, scroll wheel will still be 2 and all the arrows keys on 1.
- Fixes reverb in The Suffering.
[Enhancement] USB improvements:
This PR partially addresses #3926 and corrects a range of issues with wheel’s Force Feedback emulation.
[Enhancement] CDVD improvements:
- Fixes Shadowman 2 Second Coming textures.
- Fixes Arctic Thunder loading problems.
- Fixes looping music on ONI title screen and skipping dialogues.
- Fixes Klonoa 2 missing audio.
- Fixes SPS at the beginning of matches in Next Generation Tennis 2003 (Ronald Garros).
[Enhancement] DEV9 improvements:
A new TAP based networking interface was added to DEV9, which is usually a cleaner and simpler solution than the libpcap based one we used up until now. This essentially mirrors the inner workings of all modern VPNs.
Note: Wincap removal is not mentioned as it’s re added in Q1 with some modifications.
Improve the format of the current GameDB slightly and simplify the code around the handling the file itself. Before it was an extended .ini file format that relied on WX libraries.
Serve as a proof of concept for the YAML library / format that will be coming soon with the larger configuration overhaul.
[Enhancement] Misc core improvements:
The gamefix/hack was broken and kind of pointless, it will be better to properly fix the issues instead so we got rid of it.
- Fixes DT Racer speed issues.
- Fixes Knockout Kings 2001 hang on boot. For more technical information please see this post.
Puts in the correct behaviour for GS reads.
Fixes Supadoopa’s Funslower demo.
- Fixes Gregory Horror Show bad audio.
TAS (Tool Assisted Speedrun) Utility Improvements #
Simplifies virtualPad access. This will be useful later down the line when more virtualPads are added.
NewRecordingFrame has improved functionality.
GSdx Improvements #
GS reads lower 3 bits of PSM to determine if format is 8/4 bit and thus whether to write the clut into the clut buffer. Behavior is now correctly emulated.
Fixes international superstar soccer.
Use shared code, instead of duplicates for each renderer.
Plenty of users misclicked this setting and don’t know how to switch back since it’s a rarely used option. We got rid of the hotkey toggle for a quality of life change.
Seems that it provides a very small fps increase.
For OpenGL it will behave as previously if Full option was selected (more accurate).
For Direct3D10/11 it will behave as previously if Basic option was selected (less accurate).
Anisotropic filtering was broken on OpenGL ever since Trilinear filtering was introduced (1.3.1 era), hopefully nobody noticed and we fixed the issue!
Note that it won’t work properly on AMD due to broken driver, issue has been reported and they are working on a fix.
Fixes Silent Hill 3 character textures.
Removes some code that was meant to correct a condition on the GS where 8-bit and 4-bit formats are assigned a buffer width that is not divisible by 2. Given that the code just forced it to be even (almost certainly not correct) and was some kind of workaround dating back 13 years I’m opting to remove it. If someone can give me an example of a game that is broken without this code I’ll look into it again but it seems like a fairly rare condition.
Fixes graphical issues in Galaxy Angel.
List of removed CRC hacks:
Misc Improvements #
And that’s all from us, see you next time in our 2021 Q1 Report!
(dev818 to dev1163) (2020-01-01 - 2020-03-31)