ClusterM / hakchi2

Tool that allows you to add more games to your NES/SNES Classic Mini. WARNING: hakchi2 is no longer supported. Please use hakchi2 CE.
GNU General Public License v3.0
2.93k stars 459 forks source link

Have an option to switch HDMI RGB level to "Full" instead of "Limited" #724

Open Floflo81 opened 7 years ago

Floflo81 commented 7 years ago

Some PC screens incorrectly support the HDMI output levels from the NES mini or SNES mini. Indeed, currently the HDMI output only uses "Limited" output, which compresses the color range from 0-255 to 16-235. This works correctly on most TVs, but on many PC screens a lot of contrast is lost: blacks become dark gray, and whites become light gray.

Could you try and add an option to choose between "Limited (16-235)" (default setting) and "Full (0-255)"?

Generic info about this issue

https://referencehometheater.com/2014/commentary/rgb-full-vs-limited/

Technical details

I don't have the necessary environment to build this project on my PC, but I found some information that could help to develop this. The sunxi Linux kernel has a setting for HDMI output levels. I think what's needed is to set the following parameter in the FEX file (if the SNES classic uses http://linux-sunxi.org/ ), or the device tree/dtb files (if it's actually mainline Linux) screen0_out_color_range=1

I'm a developer but I barely know the Linux kernel so I don't know if this is really possible for the SNES classic mini, and whether it requires to recompile the kernel or it can be configured with a config file. My sources:

Floflo81 commented 7 years ago

Some people have been discussing this here: https://www.reddit.com/r/miniSNES/comments/7379t5/psa_the_snes_mini_seems_to_output_only_limited/