A Small Look into the GameCube’s Copy Filter

A while back I was going through Dolphin’s issues page out of sheer boredom.

I don’t know anything about coding to fix any of this stuff, but I do like to test really old issues sometimes to see if the hundreds of changes made over the years has produced any change or potentially even fixed some of the issues. After a few pages, I eventually came across issue 726 – Gamma setting has no effect. Out of curiosity, I clicked.

Something I never really paid attention to in Metroid Prime was the variety of options you have. You can change the opacity of the visor and helmet, whether the HUD lags behind while you turn left and right and you can even reverse the beam and visor locations. But nah, of course the most important is your screen brightness.

Real men play with zero brightness for maximum immersion, so I’ll just tweak that real quick…

Huh?

Samus really needs to get that suit checked for bugs

The Fix

It was exactly this that phire’s pull request 3845 was going to fix. Unfortunately the pr was left abandoned for a good two years for whatever reason, needing a rebase for merging. As a joke, I threw the pr link on the #dolphin-dev irc channel, saying that it was really important to me. JMC4789 further threw it to Stenzek.

Stenzek: Doesn’t seem like too much work. Might look into it next time I’m bored

Fast forward about 10 hours and Stenzek delivers with pull request 6369… nice!

The brightness slider finally working in Dolphin

I really gotta hand it to Stenzek for his undeserved promptness. Most people including me I see who “look into it while I’m bored” seem to forget for months. Either that or they never get bored, who knows.

This issue is confirmed to at least have affected Metroid Prime and Resident Evil games and even Pandora’s Tower and The Last Story on Wii.

Now, if it was just brightness sliders that this pr fixes, it wouldn’t be that exciting.

The fade-outs

If you’ve played SoulCalibur II on Dolphin, you may have noticed that the transitions are really quite abrupt between screens. “Were they like this even on console?,” you might think. Your memory must be playing tricks on you and this is perfectly normal, right…?

Oh dang

Namco is using the copy filter to do smooth fade-ins and fade-outs! Of course it’s not just Namco. None other than Factor 5 also did this trick for their Star Wars games to hide transitions from movie clips to gameplay.

The blur?

It was a few months later that a friend linked an interesting video to me by Pwnsweet.

Just open the video and watch it full screened at 1080p…

For whatever reason, the European Wii version of Twilight Princess was supposedly much blurrier than the North American version, even when both were captured with 480p component.

I tested on Dolphin and took a couple screenshots from both versions to compare. The sharpness was completely identical. Just what the heck was going on here?

After pondering for a few minutes, I recalled something that my eyes had glanced over in phire’s original pr:

2) Deflicker filter. The game does a vertical blur across 3 lines, blending the odd and even fields together which minimises the flickering effect inherent to 480i consoles on interlaced TVs.
This is why 99.9% of games render all 480 lines each frame even when rendering at 60fps.
The filter is counter-productive for progressive displays, which is why dolphin hasn’t implemented it before now, though it does blur away the dither pattern.

A built-in deflicker filter for interlaced video? Could this be it?

I fired up the Dolphin build with Stenzek’s pr implemented and took more screenshots to compare. Bingo.

Right click > open in new tab. This is also one of them newfangled apngs, so make sure your browser is good.

It is due to this filter that games also appear a bit blurry on original hardware. JMC4789 pointed out something interesting to me. Super Smash Bros. Melee contains something that you might have seen at one point:GALE01-1

This is indeed an in-game toggle, that for whatever reason HAL Laboratory decided to implement to the game. After a bit of searching, I also found out that Sonic Heroes and Pikmin 2 contain a toggle along with Super Smash Bros. Brawl on Wii. I’m certainly curious if there are more games, so do hit me up if you find any.

G9SE8P-2
You have to confirm the option to actually see any effect, which also closes the window. Dumb.
GPVP01-46
Thanks to Espyo for this shot of Pikmin 2

Of course this only answers half of the problem. We now know what is causing the blurriness in European Twilight Princess, but why exactly? The North American version looks fine.

After wondering some more, I came up with a realization. If you enable progressive scan with component cables to get 480p, the filter most likely disables itself, because there’s no need for it!

I needed some way to test this and recalled that Dolphin actually contains an “Enable Progressive Scan” option in the Advanced tab of the Graphics configuration. This option spoofs the games into thinking that you have a component cable hooked up and displays the progressive scan prompt when booting up games and holding the B Button.

It worked, just as I had thought. The filter is gone in progressive mode, sweet.

Of course, if you didn’t know already, the European versions of GameCube games bizarrely lack support for 480p, even with component cables. This gives a further edge to the NTSC counterparts. I have no idea why exactly Nintendo didn’t bother giving proper support for PAL, but ah well…

Now, the European Wii version of Twilight Princess does support 480p though, so why the filter is still active is beyond me. It’s possible that the video rendering code was copy pasted right from the GameCube version and they didn’t realize or care that the filter is still there. Certainly unfortunate to say the least.

It’s not all bad news though. On the GameCube, emukidid’s homebrew utility Swiss, when set to force 480p on games, also disables the deflicker filter despite the lack of a progressive scan prompt. FIX94’s Nintendont on Wii also disables the filter when forcing video modes.

On Dolphin, Stenzek added a “Disable Copy Filter” box to the Enhancements tab of Graphics config. This disables the deflicker filter, allowing you to keep the sharpness while still having working fade-outs and brightness sliders in your favorite games.

dolphin copy filter

Now, as this does affect users of original hardware more, I figure it would be interesting to make a spreadsheet of games which have this deflicker filter and also disable it from progressive scan and/or have a toggle. It could be very redundant if a lot of games do it, but you never know, there could be some bizarre exceptions.

Final Thoughts

I found this copy filter thing really interesting and learned a lot while going through things with it. I figured I’d write a post for just it alone, as it is among the longest standing issues on Dolphin that have been reported. Who knows what’s in store next…

Thanks to JMC4789 for feedback, phire for the initial look into the issue and original pr, Stenzek for the rebase and you for reading.
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s