GameBoy Advance - Color Correction Shader

Currently I am working on a color correction for GBA games. The intention is to get rid of the washed out color and to come close to the SNES versions. I already found a pretty good approach. Below are some screenshots

  1. GBA without Color Correction
  2. GBA with Color Correction
  3. SNES Version

Super Mario World:

Super Mario World:

Yoshis Island:

A Link to the Past:

Final Fantasy VI

Magical Quest

I used the Super Mario games as a reference. The other games have therefore some more saturation. However the Mario games are almost equal to the SNES version. I used 3 different methods from reshade to get to this result: saturatio alignment, white/black shift and gradiant curves. The next step would be now to transfer the settings from reshade into a shader for retroarch. Maybe someone could support here. :slight_smile:

I am doing the same thing, sort of. I tested Aladdin for GBA and from the image-enhancment shader, I set target gamma to around 3.5 and saturation to 0.95 and it looks identical to the SNES. I know some game developers simply use the gamma settings to adjust for the GBA screen. Some of them plays around with contrast, shadow and highlight tools to brighten them, which is hard to match to the SNES original. I forgot what settings I have for Super Mario Bros 3, but when comparing the GBA and SNES with Photoshop, it is a simple gamma change, so it was simple. I think it was at 2.8 or 2.9 target gamma on the game. Super Mario Advance is difficult to work with a simple shader other than my GBA and NDS shaders that has its own color gamut mapping since the blue colors goes higher that makes their suit color correct than being darker in sRGB.

The best way to transfer the settings to Retroarch is to use most of those settings on image-enhancment shader, which has gamma, saturation, and other things. You could make .cgp or .slangp presets for these games to load the settings from image-enhancment. The luminance and brightness boost changes theblack and white values, but if the settings involve changing the shadow/highlight like HDR shader from reshade, then you or someone have to port HDR to .cg or .slang if using vulkan. Color-mangler does is the basis for my mentioned shaders, which does change the color matrix, but it’s best to have the color change after the gamma change.

Great that someone is also working on that. I used three options: Saturation Black Level/Luminescence Gamma

The Super Mario Games are really special concerning the color correction. But with a combination of these three settings I reached almost a color perfect SNES image. However these settings are the reason why other games like Zelda or Final fantasy have so high saturation. But with an according shader (and this is why libretro and retroarch is so awesome) every game can load its own shader setting.

I am currently unsure to make an universal “image correction” shader or to make seperate shaders for each option.