libretro / gambatte-libretro

Hard fork of Gambatte to the libretro API.
http://sourceforge.net/projects/gambatte/
GNU General Public License v2.0
105 stars 79 forks source link

Improve colour correction #114

Closed jdgleaver closed 6 years ago

jdgleaver commented 6 years ago

This pull request adds a new 'accurate' internal colour correction method derived from Pokefan531's excellent/famous gbc-color shader (https://forums.libretro.com/t/real-gba-and-ds-phat-colors/1540/159). The old method has been retained, since it is faster and may still be relevant on ultra low end hardware (3DS, perhaps?). Users may switch between the two via a new 'Color correction mode' core option.

Here are a handful of screenshots to show the difference this makes:

(note how Pikachu has an orange perma-tan, and the tennis court is entirely the wrong colour)

I have also enabled finer control of when colour correction should be used. In the existing core, turning colour correction 'on' applies it to everything, which substantially degrades the internal GB and SGB palettes (all of which are designed to be viewed on a normal TV/monitor, rather than the LCD panel of a GBC). This makes the core rather tedious to work with, since you have to create core overrides for each type of game you want to play (or disable internal colour correction entirely, and set up shader overrides for each type of game you want to play...).

This pull request therefore modifies the 'Color correction' core option so it now has three settings:

I hope these additions will make the core much more user friendly. You can now basically set something like:

...and every single game will look fantastic with no further user interaction (i.e. no more fiddling around with individual config/shader overrides).