Obtaining Pixel Exact GBI-HF Output

This post was originally written by tikevin83 and explains how to use OBS and a filter plugin to get pixel-exact captures of Extrems’ Game Boy Interface software.  It was posted here by Bob with Kevin’s permission.

Technical requirements:


A quick overview of the GB/GBC/GBA pixel dimensions:

GB/GBC is 160 pixels wide, 144 tall at 59.7275 frames per second.
GBA is 240 pixels wide, 160 pixels tall at the same framerate.


GBI-HF’s part:

GBI-HF does a double scale using nearest neighbor (integer scale) to 320×288 or 480×320, then letterboxes to 720×480 (fills the rest of the pixels with empty space).


The problem:

The DOL-001 model GameCube’s digital port operates on a funky protocol called ITU-R BT.656. It’s not really important to understand the signal protocol except that it only is capable of 4:2:2 color. This means that straight from the GameCube, whether the source is a GB game or a full GameCube game, the color of every other vertical line is interpolated (guessed) based on nearby pixels. This makes it impossible to capture the full color accuracy of the original signal over a digital connection. However, a GCVideo-DVI 2.4b device like the Insurrection Carby or Eon GCHD MkII can upsample the 4:2:2 signal to 4:4:4 RGB and deliver the image with both the original lines and interpolated lines over HDMI for capture.


The solution:

The GameCube’s output error from 4:2:2 only hits every other line of pixels, and GBI-HF has done a double integer scale. This means that for GBI-HF we can drop the half of the vertical lines that are interpolated to recreate the original double scaled image. Sadly because we can’t double scale GameCube games the same fix cannot be done for them over native HDMI out.
This OBS filter does that:
And this is the result, scaled up 15x to 2400×2160 to fit 4K height perfectly:


How To Capture:

  • Extract the filter to the corresponding directories, which are usually located in: “C:\Program Files (x86)\obs-studio”.
  • Load GBI HF and configure your Datapath capture card using the Vision window.  Please note that since it’s a digital signal, you won’t need to deal with hsize or phase, but you must set the window size and 8-8-8:
  • Load OBS and add the source, either direct or window capture.
  • Make sure the source in OBS is the same resolution as Vision shows, 720×480.
  • Right click on the source in OBS and hit “filters”.
  • Hit the + under “Effect Filters” and add “GBI HF 444 Correction”
  • Hit Close.

That’s it!

For more information, check out the R3 discord server:

A few more pixel exact examples from tweets with less insane scaling can be found here:

Liked it? Take a second to support Bob on Patreon!