Note
Some parts of this guide were developed with AI assistance.
Warning
I'm not a color scientist or expert. This guide may contain inaccuracies or misleading information. Please take it with a grain of salt. If you notice any issues, feel free to open an issue.
This project aims to accurately reproduce the original color output of handheld console screens on modern displays.
All data is based on instrumented colorimetric measurements of real hardware. Subjective, visual, or “by eye” adjustments are explicitly excluded.
Each display measurement is translated into a dedicated RetroArch shader, designed using color science principles, high-precision mathematical modeling.
Note
Physically accurate simulation of ambient illuminant effects through measured screen reflectance data, enabling the modeling of the display's reflective behavior instead of relying on chromatic adaptation.
Warning
The GBC shaders are based on "-45°" screen reflectance measurements (45°/0° geometry + 180° orientation), which produce a washed-out image due to the reflective properties of the original display. The screenshots shown here were generated using the "45° Simulation" parameter (45°/0° geometry + 0° orientation), a rough approximation that better represents the display's intended appearance.
| GBC no shader | GBC Illuminant A (WIP) | GBC Illuminant D50 (WIP) | GBC Illuminant D65 (WIP) |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| GBA no shader | GBA SP AGS-101 | GB Micro |
|---|---|---|
![]() |
![]() |
![]() |
| DS no shader | DS Phat | DS Lite |
|---|---|---|
![]() |
![]() |
![]() |
| 3DS no shader | 3DS | New 3DS XL (IPS) |
|---|---|---|
![]() |
![]() |
![]() |
no shader - already D65 |
D65 chromatic adaptation |
D65 chromatic adaptation |
![]() |
![]() |
![]() |
| Nintendo Handheld | Display Type | Display Data Collected? | Known Manufacturers | Measurements Notes |
|---|---|---|---|---|
Game Boy |
Reflective | 🔴 | Sharp (link) | |
Game Boy Pocket |
Reflective | 🔴 | ? | |
Game Boy Light |
Emissive | 🔴 | ? | |
Game Boy Color |
Reflective | 🕐 | ? | Currently provided data have issues |
Game Boy Advance AGB-001 |
Reflective | 🔴 | ? | Currently provided data have issues |
Game Boy Advance SP AGS-001 |
Transflective (frontlit on), Reflective (frontlit off) |
🔴 | ? | Currently provided data have issues |
Game Boy Advance SP AGS-101 |
Emissive | 🔵 | ? | |
Game Boy Micro |
Emissive | 🔵 | ? | |
NDS Phat |
Transflective (backlit on), Reflective (backlit off) link |
🔵 | ? | - only emissive mode has been measured |
NDS Lite |
Emissive | 🔵 | Hitachi, Sharp (link) | - greyscale gamma differs between reports (different manufacturers?) |
NDSi |
Emissive | 🔴 | ? | |
NDSi XL |
Emissive | 🔴 | ? | |
3DS |
Emissive | 🔵 | ? | - equal primaries across measurements (except blue) and similar gamma |
3DS XL |
Emissive | 🔴 | ? | |
New 3DS |
Emissive | 🔴 | ? | |
New 3DS XL |
Emissive | 🔵 | ? | - only IPS top screen analyzed - screen lottery - other info here - Erica Griffin |
2DS |
Emissive | 🔴 | ? | |
New 2DS |
Emissive | 🔴 | ? | |
New 2DS XL |
Emissive | 🔴 | ? | |
Wii U |
Emissive | 🔴 | ? | |
Switch |
Emissive | 🕐 | Innolux | - other info here - Erica Griffin |
Switch Mini |
Emissive | 🔴 | ? | |
Switch OLED |
Emissive | 🔴 | ? | - other info here - GamingTech |
Switch 2 |
Emissive | 🔴 | ? |
| Sony Handheld | Display Type | Display Data Collected? | Known Manufacturers | Measurements Notes |
|---|---|---|---|---|
PSP-1000 (Phat) |
Emissive | 🔵 | ? | - missing exact model number |
PSP-2000 (Slim) |
? | 🔴 | ? | |
PSP-3000 (Brite) |
? | 🔴 | ? | |
PSP-N1000 (Go) |
? | 🔴 | ? | |
PSP-E1000 (Street) |
? | 🔴 | ? |
Legend:
- 🔴: No data available / Invalid data
- 🔵: Data available
- 🟢: Data available and verified by two or more screen reports from different consoles
- 🕐: Measurement data validation in progress
In the handheld folder, you’ll find the measured consoles and their corresponding RetroArch shaders.
Note
Currently, only the sRGB color space is supported. I haven’t found a way to instruct RetroArch or the operating system (at least on macOS) to interpret the shader’s output framebuffer as a non‑sRGB color space (such as Display P3, Rec. 2020, etc.). Given this limitation, there’s little benefit in supporting other color spaces, since you wouldn’t get the expected colors. If you know of any way (even a partial workaround) to overcome this limitation, I’d appreciate your support.
No chromatic adaptation is applied
-
Pros
- Most accurate representation of the original display behavior.
- Preserves differences between screens of the same console model (often referred to as “screen lottery”).
-
Use case
- Currently recommended for general use.
- This option must be used if you want to make side by side comparisons with the original console.
- Recommended for consoles with unusual or very warm/cool white points to preserve the original look & feel.
Warning
Currently, it does not fully model the human visual adaptation system, which can result in reduced perceptual accuracy in some specific viewing conditions. A full CIECAM02 / CIECAM16 pipeline must be implemented to address this problem.
Applies D65 white point (full chromatic adaptation)
-
Pros
- Can mitigate screen lottery by enforcing a shared white reference across displays.
- Can slightly reduce out-of-gamut colors as a side effect.
-
Cons
- Can noticeably alter color balance on consoles with unusual or very warm/cool white points.
-
Use case
- You can use this option as a trade-off between the display’s original color reproduction and a neutral white balance tipically found on modern displays.
Warning
Currently, it does not fully model the human visual adaptation system, which can result in reduced perceptual accuracy in some specific viewing conditions. A full CIECAM02 / CIECAM16 pipeline must be implemented to address this problem.
Chromatic adaptation on the GameBoy Micro shader:
- OFF (bottom left) = "blue tinted / cool temperature greyscale"
- ON (top right) = "neutral greyscale"
These parameters are used to analyze the shader's output image.
Enable this option to highlight in red the colors that cannot be represented in the sRGB color space. These colors are only approximations.
- Pokéfan531 for almost all the consoles’ screen measurements and feedback
- Pica200 for the 3DS and New 3DS consoles’ measurements
- Anikom15 for helping me fix some issues with the shader code and and OS/program-specific color space management.
- Libretro Forum














