BlastEm and GenesisPlusGX display different colors

Most noticeable is the sky. In BlastEm (top picture) it looks more purple. GenesisPlusGx also looks a bit darker.

Why is there such a big difference? Which one is correct? There are no core options on either core where you can mess with the colors ans any filters or shaders are off.

1 Like

PlainOldPants can probably answer the technical details. I will note This came up a few years ago. Correct Color Palette · Issue #345 · ekeeke/Genesis-Plus-GX · GitHub You can see in the thread there are differences between different hardware even though it"s RGB.

Although I do prefer the Sega Brightness fix myself when using shaders, I’m always cautious about the talk about the “correct palette” ever since the C64 “'Pepto”’ palette.

Background: Pepto was hailed as the “accurate” palette for years because it was based on measurements, whereas other palettes where just by eye or whatever. But people noted it looked unsaturated, too dark etc… Well, it turned that the measurements were indeed wrong. So then the "Colodore"palette appeared by the same author as a fix and hailed as the accurate palette. But guess what? It was again challenged. Now there is the PALette, which is an unfortunate name imho, but the reasoning behind it doesn’t seem far fetched to me (author is also a Vice developer).

1 Like

I’ve been sitting here unsure what to post for some time now. BlastEm is the one that’s more correct here. Genesis Plus GX is outputting the raw internal RGB levels, while BlastEm is outputting ones that were measured from a real console and scaled between 0 and 255.

To save you some reading, here are some key points from the thread that Jamirus linked:

From a user who I don’t recognize, who apparently has done some work on MAME.

Some decaps have been posted, likely after this was posted. They just haven’t been fully analyzed.

From another user who I can’t find any info on. Similar to what I wrote here about ekeeke’s post.

When I use Genesis Plus GX on my Wii with my CRT, it definitely looks too dark, to the point where I have to turn up my brightness and over-brighten the blacks a bit to fix it. Elsewhere, I’ve been using BlastEm, or at least BlastEm’s color palette, whenever possible. BlastEm is much more convincing.

From the author of BlastEm.

On that subject, according to the 240p test suite, the Genesis’s black level is about 6 IRE, which is not quite at the standard 0 or 7.5 IRE levels. BlastEm is just normalizing between 0 and 255, not taking into account the black level, the gamma (a.k.a. EOTF), color correction circuits, different white points, etc. Dogway’s Grading Shader goes as far as to account for reflectance. How far you want to go with color accuracy is subjective.

From birdybro, who’s owned several MegaDrive consoles and has ported a few FPGA cores to MiSTer:

Birdybro included video captures of several MegaDrives from an article to show their differences.

Lastly, from the author of Genesis Plus GX:

To this day, Genesis Plus GX outputs the console’s raw RGB, and BlastEm outputs measured values normalized between 0 and 255. From the games I’ve played, I strongly recommend BlastEm’s color palette. However, BlastEm’s palette can make some games look washed out, so I recommend doing a gamma correction, using a CRT shader or some other shader.

BlastEm doesn’t have any settings ported over in its LibRetro core, except for some obscure ones in RetroArch’s own settings, such as cropping overscan. So, something you can try is using a shader to do the Genesis color palette correction, so that you can get BlastEm’s color palette on Genesis Plus GX. First, there’s Dogway’s Grading Shader (misc/grade.slang), which has its “MD palette” setting, but the result is a bit different from BlastEm’s output, though I’m not exactly sure how. Alternatively, I have put together my own shaders, called patchy-ntsc and patchy-color, which directly copy BlastEm’s lookup table for the palette. Please don’t use the version currently in shaders_slang, but instead use the latest version from my thread. That said, my shaders emulate a very heavy color correction from consumer CRTs which looks nothing like most developers wanted you to see, so make sure to disable that by setting the “R-Y/G-Y/B-Y formula” or “Demodulator” to 0. My shaders are currently a pain to learn how to set up, so it’s probably more worth your time to just use BlastEm.

I definitely wish I knew more technical details about this, but I am definitely not an expert on this subject, and I am still making efforts to learn in my limited spare time. I’ve coded shaders based on the information I’ve read online, but those shaders are definitely unfinished in terms of user-friendliness, clean code, performance, and accuracy, as I haven’t had so much time lately to fully research the topics and code my projects. So I emphasize, I’m not as knowledgeable as I sound from the posts in my thread.

3 Likes

Both Dogway’s Grade and CRT-Guest-Advanced have Sega Brightness fixes to get the brightness back to Genesis levels.

This is something different. It’s a Genesis colour palette that Dogway’s may have come across in his research and implemented in Grade.

He also included a SMS Blue lift.

Thanks for the informative post.

So the sky in Sonic was really that much purple, huh? I would have guessed the GenesisGxPlus colors are the intended ones. It looks better in every way IMO. Oh, well.

2 Likes

I don’t know about Dogway’s shader but i’m using Guest Advanced and i have the Sega Brightness fix ON. It slightly ups the brightness but the colors don’t change, you still keep the nicer blue sky.

1 Like

You would most of the time look at it via a composite (or RF) signal though which is another factor altering the output.

I keep thinking back to this composite filter collage, which indicates that the colors can differ a lot between different hardware variants, probably more than via RGB where we also already saw that some differences exist.

Based on this thread, I thought that “MD palette” was trying to get BlastEm’s colors. The Sega brightness fix isn’t mentioned anywhere. BlastEm is using this array

and Grade is using this function to mimic it

Or am I understanding this wrong?

Edit: Grade’s code to do this:

@Dogway’s Grade has a “Sega Luma Fix”, as well as the “MD Palette” and “SMS Blue Lift”, while CRT-Guest-Advanced has the “Sega Brightness Fix”.