Skip to content

Brankale/Handheld-Color-Space-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

230 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

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, and validated against the original hardware to ensure faithful color reproduction as it appeared on the real device.

Showcase

Preview Preview Preview

GBA no shader

GB no shader

GBA SP AGS-101

GBA SP AGS101

GB Micro

GBA micro
Preview Preview Preview

DS no shader

raw

DS Phat

ds_phat

DS Lite

ds_lite

3DS

3ds

New 3DS XL (IPS)

new_3ds_xl

Handhelds status report

Nintendo Handheld Display Type Display Data Collected? Known Manufacturers Measurements Notes
Game Boy Reflective 🔴 ?
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 🔵⚠️ ? - unknown manufacturer
Game Boy Micro Emissive 🔵⚠️ ? - unknown manufacturer
NDS Phat Emissive 🔵⚠️ ? - unknown manufacturer
NDS Lite Emissive 🔵⚠️ Hitachi, Sharp (link) - unknown manufacturer
- greyscale gamma differs between reports (different manufacturers?)
NDSi Emissive 🔴 ?
NDSi XL Emissive 🔴 ?
3DS Emissive 🔵⚠️ ? - unknown manufacturer
- 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
- unknown manufacturer
- 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 manufacturer
- 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
  • ⚠️: Some information is missing (e.g., manufacturer, measurement tools, etc.)
  • 🕐: Measurement data validation in progress

Index

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 full CIECAM02 / CIECAM16 pipeline must be implemented to address this problem.


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 full CIECAM02 / CIECAM16 pipeline must be implemented to address this problem.


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

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors