pcsx2
pcsx2 copied to clipboard
GS: Add slow path for odd width 4bpp host->local transfers
Description of Changes
Adds a slow transfer path for 4BPP transfers which are misaligned,
Rationale behind Changes
The transfer systems in place in PCSX2 are designed to be fast, but work on aligned data. The main problem being, with 4bpp transfers, the smallest we can represent in C++ is 8bits, so each 8bit contains 2 pixels, so when the transfer width is an odd number, that means the end of a line and the start of the next are contained in the same 8bits, and this means the fast path will throw the order out, causing the data to drift.
This PR adds a slow path which does the transfer pixel by pixel, but only when the widths are misaligned, since it's faster the other way, if we can.
Suggested Testing Steps
If you know any games with weirdly misshapen textures (kinda like a rhombus), then this will probably fix it.
Known to fix the GT3 Demo. Fixes #3228 Fixes Jak 2 Renegate Japanese subtitles. Fixes #6581 Fixes Baldur's Gate: Dark Alliance messed up minimap.
Jak 2 Renegade:
Before
After:
GT3 Demo:
Before:
After:
Baldur's Gate: Dark Alliance: Fixes skewed minimap in certain areas.
Before:
After:
Before:
After:
Oh wow, I didn't even know that was a problem! Thanks! :D
Known to fix the GT3 Demo. Fixes #3228
It's GREAT to see the oldest issues being fixed. Keep it up. :+1: