Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

262 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Note

This guide is an independent technical project, not an authoritative reference. Despite the research and experimental work behind it, some interpretations or conclusions may be incomplete or incorrect. Corrections supported by measurements, primary sources, or reproducible tests are welcome.

Handheld Color Space Project

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.

Index

Showcase

Reflective displays

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)
gbc_raw gbc_a gbc_d50 gbc_d65

Transmissive and emissive displays

GBA no shader GBA SP AGS-101 GB Micro
GB no shader GBA SP AGS101 GBA micro
DS no shader DS Phat DS Lite
raw ds_phat ds_lite
3DS no shader 3DS New 3DS XL (IPS)
3ds_no_shader 3ds 3ds_xl_ips
no shader - already D65 D65 chromatic adaptation D65 chromatic adaptation
3ds_no_shader 3ds_d65 3ds_xl_ips_d65

Handhelds status report

Nintendo Handheld Display Type Bit Depth Display Data Collected? Known Manufacturers Measurements Notes
Game Boy Reflective 2-bit
per pixel
🔴 ?
Game Boy Pocket Reflective 2-bit
per pixel
🔴 ?
Game Boy Light Transflective 2-bit
per pixel
🔴 ? - EL backlight
Game Boy Color Reflective 5-bit 🕐 Sharp (link) Currently provided data have issues
Game Boy Advance AGB-001 Reflective 5-bit 🔴 ? Currently provided data have issues
Game Boy Advance SP AGS-001 Reflective 5-bit 🔴 ? - frontlit
- currently provided data have issues
Game Boy Advance SP AGS-101 Transmissive 5-bit 🔵 ?
Game Boy Micro Transmissive 5-bit 🔵 ?
NDS Phat Transflective link 6-bit 🔵 ? - only backlit mode has been measured
NDS Lite Transmissive 6-bit 🔵 Hitachi, Sharp (link) - greyscale gamma differs between reports (different manufacturers?)
NDSi Transmissive 6-bit 🔴 ?
NDSi XL Transmissive 6-bit 🔴 ?
3DS Transmissive 8-bit 🔵 ? - equal primaries across measurements (except blue) and similar gamma
3DS XL Transmissive 8-bit 🔴 ?
New 3DS Transmissive 8-bit 🔴 ?
New 3DS XL Transmissive
(TN or IPS)
8-bit 🔵 ? - only IPS top screen analyzed
- screen lottery
- other info here - Erica Griffin
2DS Transmissive 8-bit 🔴 ?
New 2DS XL Transmissive 8-bit 🔴 ?
Wii U GamePad Transmissive 8-bit 🔴 ?
Switch Transmissive 8-bit 🕐 Innolux - other info here - Erica Griffin
Switch Lite Transmissive 8-bit 🔴 ?
Switch OLED Emissive OLED 8-bit 🔴 ? - other info here - GamingTech
Switch 2 Transmissive ? 🔴 ?
Sony Handheld Display Type Bit Depth Display Data Collected? Known Manufacturers Measurements Notes
PSP-1000 (Phat) Transmissive 8-bit 🔵 ? - missing exact model number
PSP-2000 (Slim) Transmissive 8-bit 🔴 ?
PSP-3000 (Brite) Transmissive 8-bit 🔴 ?
PSP-N1000 (Go) Transmissive 8-bit 🔴 ?
PSP-E1000 (Street) Transmissive 8-bit 🔴 ?

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

RetroArch Shaders

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.

Shader parameters

Chromatic Adaptation


OFF — Original Color Reproduction (Default)

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 color appearance model such as CIECAM02 or CAM16 could improve the simulation when the required viewing-condition parameters are available.


ON — White Point Normalization

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 color appearance model such as CIECAM02 or CAM16 could improve the simulation when the required viewing-condition parameters are available.


Example

Chromatic adaptation on the GameBoy Micro shader:

  • OFF (bottom left) = "blue tinted / cool temperature greyscale"
  • ON (top right) = "neutral greyscale"
chromatic adaptation example

Debug Shader parameters

These parameters are used to analyze the shader's output image.

Show out of Gamut colours

Enable this option to highlight in red the colors that cannot be represented in the sRGB color space. These colors are only approximations.

Special Thanks

Note

AI was used as a supporting tool during the development of this guide. All technical content, decisions, and AI-assisted output were carefully reviewed before inclusion.

About

No description, website, or topics provided.

Resources

Contributing

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages