Sunday, October 30, 2016

Creating an "accurate" NES NTSC Color Palette - Revisited

After discussing my NES palette capture pursuits with Brian Parker (RetroUSB) at PRGE 2016 I decided to revisit the sampling process of the paltest palette capture images.  Instead of running multiple median filter passes to normalize the captured image for sampling, it was discussed to try taking an area of pixel values and averaging them.

If you'd like to try my NESCAP palette, you can download it here.

The following is a debug image that plots out the pixels I sampled for the average.  This was useful for ensuring that I wasn't sampling erroneous data and/or sampling unintended colors.


The resulting palette, NESCAP.pal, was within +/- 1% difference, so the original NTSCU.pal still is a valid palette to use, but there's always the nth degree of improvement to be made as seen below!


Friday, October 14, 2016

N64 HDMI "bit-perfect" Captures: UltraHDMI + BMD Intensity Pro 4K

Here are some "bit-perfect" 1080p captures of the UltraHDMI mod for the Nintendo 64 in action. The special thing about the BMD Intensity Pro 4K is it's ability to capture 1080p60 HDMI sources with no color space conversion, which results in a 1:1 copy of the source signal! The UltraHDMI was set to 1080p60, Sharp Pixels set to Integer+ (5x scale), and VI de-blur enabled where applicable. Enjoy!



Monday, October 10, 2016

Creating an "accurate" NES NTSC Color Palette

On the heels of comparing existing color palettes included with the Hi-Def NES and AVS I decided to see if the BMD IP4K could capture composite video from the original NES.  To my surprise, the IP4K does, so the creation of a NTSC palette was imperative.  While the unsaturated palette claims to be an "accurate" palette, I've found that there are a number of color errors in the palette that I surmise are the result of inaccurate capture equipment.  The errors are consistent with lossy color space conversion (green/purple errors).  See below for an illustration of my palette (NTSCU.PAL) compared to the existing capture based palette.

If you'd like to try my NTSCU palette, you can download it here.


Here are some examples of the NTSCU palette in action.




 

 
 
 

Sunday, October 9, 2016

AVS and Hi-Def NES Palettes Revisited with the BMD Intensity Pro 4K

In my last post I discussed taking screen captures of the various color palettes currently available for the AVS and Hi-Def NES.

After writing a .NET program that takes an image capture and generates a palette file for use with software emulators, such as FCEUX, I confirmed that the PEXHDCAP (with its RGB 4:4:4 to YUV 4:2:2 color space conversion) is unsuitable for accurate image analysis and palette file generation.  RGB 4:4:4 to YUV 4:2:2 color space conversion (includes chroma subsampling) is found on virtually all HDMI capture cards on the market including the Elgato solutions that are popular with the streaming crowd.

After searching for an affordable solution I discovered that the latest Black Magic Designs Intensity Pro 4K supported uncompressed RGB 4:4:4 HDMI input at 1080p60!  After having troubles with their original card, the Intensity Pro (IP), with its obtuse and strict UX, I was leery to try again with the IP4K.  Like the PEXHDCAP, the original IP color space converts the HDMI input as well, making it impossible to get accurate pixel values from captures.  Thankfully, the Pro 4K has proved to be a redemption, as you can get bit perfect captures with the IP4K!  Being able to capture 1080p60 sources is a huge boon over the IP and PEXHDCAP as well.

Without further ado, here are the raw captures for the 7 palette options (4 AVS, 3 Hi-Def NES).  As noted before, and now fully confirmed, the FCEUX palette on the Hi-Def NES is without a doubt, not actually the FCEUX palette, but rather a custom palette that appears to be Kevtris' own custom creation (diff comparison pictured first).



Download AVS_FCEUX.PAL
 
Download AVS_ORIGINAL.PAL


Download UNSATv6.pal

Download YUVv3.PAL

Download HDN_BEWAREs.PAL

Download HDN_FCEUXs.PAL

Download HDN_PC10.PAL