20140408 Wii U VC Thing

From JJSWiki
Jump to: navigation, search

Wii U allows screens to be captured from within a game, either the GamePad view or TV view. Unfortunately the TV view only allows 720p images to be captured, but from that it's pretty possible to extrapolate what's going on at 1080p. If I mention a fractional resolution, it's where due to scaling the emulated image is only fractionally coloring a side row or column.

NES and SNES are both a bit tricky for image reproduction. They were designed for 4:3 televisions, but the normal resolution they used was 256x224--which is an 8:7 ratio! This wasn't really a big deal back in the days--CRTs stretched them to fill the screen anyway. How it's handled in emulation for modern systems with fixed pixel size displays is a bit iffy. Often in amateur PC emulators, and even professional emulators, this isn't taken into account. Even in ports of old games this is not taken into account--see Super Mario Bros. DX on GBC, Super Mario World on GBA, or Chrono Trigger on DS. To be fair, with the resolution of those screens any attempt at a small amount of scaling would look pretty awful. This is not the case for Wii U Virtual Console, though.

SNES Super Mario World


720p: 902.66x677
Thus 1080p: 1354x1015.5
480p: 640x480

The 1080p resolution seems pretty strange to me. It's neither full screen, nor the best scaling option. Their solution multiplies each pixel horizontally 5.289 times and vertically 4.533 times--very uneven. While full integer multiples are always the cleanest option, if that doesn't happen you hope for something that's relatively even and doesn't need to mix colors on every row and column. A quarter, a third, a half. With that in mind, I think a good resolution for an emulated SNES image would be 1344x1008. Barely smaller than what they're doing, but each pixel gets multiplied horizontally 5.25 times and vertically 4.5 times.

256x224 image captured on PC emulator.
My proposed 1080p option.
My attempted recreation of their 1080p method, for more direct comparison.

For the GamePad, they've gone the option of 640x480, for full height as well as proper aspect ratio. A valid option. Each pixel is multiplied horizontally by 2.5 and vertically by 2.143, so it's got a pretty good multiple horizontally, but not so great vertically. As an alternate option I'd suggest 597.33x448. This would create a slightly smaller bordered image, with a horizontal multiplier of 2.33 (2 1/3) and a vertical multiple of 2. One an integer multiple, the other still pretty decent.

My proposed 480p option.
My attempted recreation of their 480p method, for more direct comparision.

NES Super Mario Bros.

Why did I start with SNES instead of NES? Because SNES is simpler. I could look at the edges of the emulated image, see a single dimmed row or column at the image, and deduce what was going on at a higher resolution. With NES this doesn't seem to be the case--there are MULTIPLE dimmed rows and columns at the edges, which I think is indicative of the general blur filter which is clearly being used on the image. Anyway, it makes my numbers here less accurate.

720p: 900.5x642?
Thus 1080p: 1350.75x963?
480p: 639.5x455.33?

This seems all kind of weird. First of all, when comparing their images with the ones I created below, it's obvious that the image they're starting from has a few more pixels of height resolution. Based on the blocks at the bottom it looks like there's an extra 5 pixels there--hard to tell at the top since it's solid blue there.

Then, even though this image has more height than we'd expect, the aspect ratio is super wide. Not the 8:7 (1.14:1) of 256x224. Not the 4:3 (1.33:1) we might expect. Not something slightly taller than that due to the extra height pixels (1.30:1?). Nope, it's a very squat 1.40:1. I think the last time NES games looked this squat were the NES Classics releases on GBA.

My recommendations for the NES image would be the same as the SNES image. They almost always used the same resolution to begin with, so it makes sense they should be treated the same way.

256x224 image captured on PC emulator.
My proposed 1080p option.
My proposed 480p option.
Since I couldn't get a handle on exactly what resolutions they were using, nor the color and blur differences on top of that, I didn't make a recreation of their methods as I did for Super Mario World.

Also ditch the dark and blurriness. I can believe if Nintendo thinks they've got a better handle on proper color recreation than PC emulator makers, but whatever they're doing here they've gone too far.

GBA Advance Wars

Full screen
720p: 1080x720
Thus 1080p: 1620x1080

Perfect pixel
720p: 960x640
Thus 1080p: 1440x960

480p: 720x480

Here there's nothing to complain about. GBA is very very friendly for scaling here. No need to make changes in aspect ratio, or make crazy compromises to avoid big borders. GBA was originally 240x160, so all they had to do for the GamePad view was multiply every pixel by 3 horizontally and vertically. For 1080p perfect pixel mode, they multiplied every pixel by 6 times horizontally and vertically. 1080p full screen mode out of necessity loses the perfect integer multiples, and each pixel gets multiplied by 6.75 times horizontally and vertically--still a pretty good multiple to be stuck with. I can't recommend anything better than what they've got going on here already.