GS: Fix up CLUT offset handling in 32bit I8 mode #4966
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.


























Description of Changes
Fixes CLUT writing for games which use an offset to write to sections of the CLUT in PSMCT32 mode with I8. Wraps CLUT memory when reading with an offset
Rationale behind Changes
Writing with offset was broken and previously used the "clut_reload_on_draw" hack, which wasn't really the solution. Also remove CLUT memory wrapping code (by duplicating it) didn't really work, so now it properly wraps.
Suggested Testing Steps
Test games mentioned, make sure the colours are correct. Test other games just to make sure nothing is broken.
Games which previously needed the load_clut_before_draw hack
Cabela's Hunting games
Harley Davidson
Fixes #1597
Also fixes Romance of the Three Kingdoms games colours.
Fixes #1628
Fixes #2390
The History Channel: Battle for the Pacific
Fixes #4396
Other games apparently fixed
NPPL Championship Paintball 2009
Spider-Man Friend or Foe
Apparently fixes Rapala Pro Fishing also
Correctly clamping of CLUT reading with offset to repeat last CSA offset fixes GTA San Andreas dirt
Fixes #2650