Game Boy Interface

Release threads for homebrew & utilities only
User avatar
Extrems
Posts: 427
Joined: Tue Aug 17, 2010 10:40 pm
Location: Quebec, Canada
Contact:

Game Boy Interface

Postby Extrems » Fri Mar 13, 2015 8:40 pm

Not to be confused with Nintendo 64 Graphics Binary Interface.
An alternative to the Game Boy Player Start-up Disc, requires the Game Boy Player hardware.

Current features:
  • Video
    8/14 bits per channel, linear RGB renderer
    full resolution (720x576 PAL, 720x486 NTSC)
    image doubling & scaling
    frame rate conversion
    color gamut mapping
    temporal dithering
    PNG screenshots
    TPL overlay
    1.5-2 frames latency @ 120 Hz
    2-3 frames latency @ 60 Hz
    3-5 frames latency @ 30 Hz
  • Audio
    48 kHz sample rate
    no low-pass filter
    32-64 ms latency
  • Input
    1000 Hz polling rate
    up to 4 controllers
    turbo button
    rumble
  • Serial
    GBA-as-GC controller multiboot
    Xboo Communicator
  • Network
    PNG streaming server
    Remote RetroPad server
    SNTP broadcast listener
    wiiload v0.5 server (*.dol; *.mb; *.tpl)
For low latency version:
  • Video
    image scaling
    PNG 3D LUT
    TPL overlay
    1-1.5 frames latency @ 120 Hz
    1-2 frames latency @ 60 Hz
    1-3 frames latency @ 30 Hz
  • Audio
    48 kHz sample rate
    no low-pass filter
    32-64 ms latency
  • Input
    1000 Hz polling rate
    up to 4 controllers
    U+D/L+R cancelling
    reset delaying
    rumble (optional)
  • Serial
    GBA-as-GC controller multiboot
    wiiload v0.5 server (*.dol; *.mb; *.tpl)
    Xboo Communicator
For ultra-low latency version:
  • Video
    59.7276 Hz refresh rate
    0-1 frames latency
  • Audio
    48 kHz sample rate
    no low-pass filter
    32-64 ms latency
  • Input
    1000 Hz polling rate
    up to 4 controllers
    U+D/L+R cancelling
  • Serial
    GBA-as-GC controller multiboot

Controls:
  • A / B - Hide on-screen display
  • X - Toggle on-screen display
  • Y - Revert
  • Z - Take screenshot
  • Start - Quit (hold)
  • D-Pad - Offset
  • L / R - Zoom
  • A / B - A / B
  • X - Toggle on-screen display
  • Y - Turbo
  • Z - Select
  • Start - Start
  • D-Pad, Stick - D-Pad
  • L / R - L / R (Game Boy Advance only)
  • Reset - Reset
For low latency version:
  • A / B - A / B
  • Y, Z - Select
  • X, Start - Start
  • D-Pad, Stick - D-Pad
  • L / R - L / R
  • B + X + Start, Reset - Reset
  • A / B - A / B
  • L, Z - Select
  • R, Start - Start
  • D-Pad, Stick, C-Stick - D-Pad
  • Y / X - L / R
  • B + X + Start, Reset - Reset
  • Y, X / B - B / A
  • Z - Select
  • Start - Start
  • D-Pad, Stick - D-Pad
  • A / L, R - R / L
  • B + X + Start, Reset - Reset
  • Y / B - A / B
  • L, Z - Start
  • R, Start - Select
  • D-Pad, Stick, C-Stick - D-Pad
  • A / X - R / L
  • B + X + Start, Reset - Reset
For ultra-low latency version:
  • A / B - A / B
  • Z - Select
  • Start - Start
  • D-Pad, Stick, C-Stick - D-Pad
  • L, Y / R, X - L / R
  • Reset - Reset

Arguments:
  • --aspect=<w:h>
    Set display aspect ratio. (default: 4:3)
  • --offset=<x:y>
    Set default offset. (default: sram)
  • --zoom=<x:y>
    Set default zoom. (default: sram)
  • --rotate=<0-359>
    Set default rotation. (default: 0)
  • --poll=<0-11>
    Set polling rate. (default: 1)
  • --turbo=<on>
    Set autofire interval. (default: 3)
  • --overlay=device:/path/to/file
    Set texture palette. (default: frame.tpl.gz)
  • --overlay-id=<id>
    Set texture palette index. (default: sram)
  • --overlay-scale=<x:y>
    Set texture scale. (default: auto)
  • --filter=<none|scale2x[ex|plus]|eagle2x|scan2x|normal2x|normalnx>
    Set image doubling filter. (default: normalnx)
  • --dither=<none|threshold|bayer8x8|bayer4x4|bayer2x2|cluster8x8|cluster4x4>
    Set dithering algorithm. (default: threshold)
  • --scaler=<nearest|bilinear|oversample|box>
    Set image scaling filter. (default: bilinear)
  • --matrix=<identity|gba|gbi|nds|palm|psp|vba>
    Set color matrix. (default: gba)
  • --input-gamma=<r:g:b>
    Set gamma. (default: 2.2)
  • --output-gamma=<1.0|1.7|2.2>
    Set display gamma. (default: 2.2)
  • --contrast=<r:g:b>
    Set gain. (default: 1.0)
  • --brightness=<r:g:b>
    Set bias. (default: 0.0)
  • --volume=<l:r>
    Set audio gain. (default: 0.75)
  • --format=<ntsc|pal|pal-m|ntsc-50|pal-60|custom>
    Force video format. (default: sram)
  • --scan-mode=<interlace|quasi-interlace|non-interlace|non-progressive|progressive>[,double-clock[,oversample]]
    Force scan mode. (default: sram)
  • --(no-)osd
    Toggle on-screen display. (default: yes)
  • --ipv4-address=aaa.bbb.ccc.ddd
    Set static IPv4 address. (default: dhcp)
  • --ipv4-gateway=aaa.bbb.ccc.ddd
    Set static IPv4 gateway. (default: dhcp)
  • --ipv4-netmask=aaa.bbb.ccc.ddd
    Set static IPv4 netmask. (default: dhcp)
  • --(no-)network
    Toggle networking. (default: yes)
  • --stream[=aaa.bbb.ccc.ddd]
    Stream to IP address on UDP port 1234. (default: 255.255.255.255)
  • --(no-)enhance
    Toggle Game Boy Player enhancements. (default: yes)
For low latency version:
  • --aspect=<w:h>
    Set sample aspect ratio. (default: 11:10)
  • --offset=<x:y>
    Set screen position. (default: sram)
  • --zoom=<x:y>
    Set zoom. (default: 2.0)
  • --rotate=<0-359>
    Set rotation. (default: 0)
  • --poll=<0-11>
    Set polling rate. (default: 1)
  • --control=<0-3>
    Set controller scheme. (default: sram)
  • --delay-reset=<n>
    Set minimum reset time. (default: 75)
  • --overlay=device:/path/to/file
    Set texture palette. (default: frame-srgb.tpl.gz)
  • --overlay-id=<id>
    Set texture palette index. (default: sram)
  • --overlay-scale=<x:y>
    Set texture scale. (default: auto)
  • --lut3d=device:/path/to/file
    Set 32x32x32 lookup table. (default: lutrgb.png)
  • --scaler=<nearest|bilinear|oversample|box>
    Set image scaling filter. (default: nearest)
  • --vfilter=<m:l:u>
  • --vfilter-even=<m:l:u>
  • --vfilter-odd=<m:l:u>
    Set vertical filter coefficients. (default: 1.0)
  • --volume=<l:r>
    Set audio gain. (default: 0.75)
  • --format=<ntsc|pal|pal-m|ntsc-50|pal-60|custom>
    Force video format. (default: sram)
  • --scan-mode=<interlace|quasi-interlace|non-interlace|progressive>[,double-clock[,oversample]]
    Force scan mode. (default: non-interlace)
  • --(no-)usb
    Toggle USB Gecko. (default: yes)
  • --(no-)enhance
    Toggle Game Boy Player enhancements. (default: no)

Download:
https://files.extremscorner.org/gamecube/apps/gbi/latest
Extract archive to root of SD card.
*.cli - For static configuration using Swiss. Can be appended to *.dol.
*.dcp - For dynamic configuration using Swiss.
gbi.dol - Targeted at LCD TVs and PC live capture.
gbi-ll.dol - Targeted at CRT TVs and SDA speedrunning.
gbi-ull.dol - Targeted at enthusiasts.
gbi/default.mb.gz - GBA BIOS/ROM dumper
mcbackup/*.gci - dol2gci boot.dol

https://files.extremscorner.org/gamecube/apps/gbi/latest-extra
boot.gcm - Memory Card Boot Disc
controller.gba - GBA-as-GC controller
controller-n64.gba - GBA-as-N64 controller
gbi/frame.tpl.gz - Borders from the Game Boy Player Start-up Disc. For linear rendering.
gbi/frame-srgb.tpl.gz - Borders from the Game Boy Player Start-up Disc. For gamma rendering.

Discussion:
https://discord.gg/2dhfaHN

See also:
  • Booting Homebrew - How to get started with GameCube homebrew.
  • Enhanced mGBA - An enhanced port of the Game Boy Advance emulator.
  • Swiss - The swiss army knife of GameCube homebrew.

ImageImage
Last edited by Extrems on Mon Sep 11, 2017 2:16 am, edited 44 times in total.

User avatar
ShadowOne333
Posts: 101
Joined: Fri Jan 11, 2013 9:06 am
Location: Mexico
Contact:

Re: Game Boy Interface

Postby ShadowOne333 » Fri Mar 13, 2015 9:10 pm

Wait, so what's this exactly?
A GBA emulator of some sort or is it some sort of IP streaming app?

I got really confused, I only see a gbi.dol in there so I suppose it is a Wii/GC homebrew app but I can't test it right now.

Duhasst0
Posts: 179
Joined: Sun Jan 13, 2013 1:35 am

Re: Game Boy Interface

Postby Duhasst0 » Fri Mar 13, 2015 9:51 pm

This looks like an alternative to the disc entirely.

User avatar
emu_kidid
Site Admin
Posts: 4228
Joined: Mon Mar 29, 2010 10:06 am
Location: Australia
Contact:

Re: Game Boy Interface

Postby emu_kidid » Fri Mar 13, 2015 10:08 pm

Once audio is implemented, I'm finishing the last half of A Link to the Past on it ;)
Image

Duhasst0
Posts: 179
Joined: Sun Jan 13, 2013 1:35 am

Re: Game Boy Interface

Postby Duhasst0 » Fri Mar 13, 2015 10:34 pm

Ooooo

theclaw
Posts: 304
Joined: Tue Dec 13, 2011 12:01 pm

Re: Game Boy Interface

Postby theclaw » Fri Mar 13, 2015 11:09 pm

Hmm, less filtering than the Game Boy Player disc would be nice. Perhaps 240p too.

User avatar
MockyLock
Posts: 319
Joined: Tue Aug 07, 2012 8:12 pm

Re: Game Boy Interface

Postby MockyLock » Sat Mar 14, 2015 6:18 am

So it's a app that allow to boot GB Pak from GBA player, right ?
CoOol !

BenoitRen
Posts: 263
Joined: Sun Jul 29, 2012 3:37 pm

Re: Game Boy Interface

Postby BenoitRen » Tue Mar 17, 2015 3:22 pm

What's this "2-3 frames latency" feature? Is it an option, or is this the expected latency when streaming the game from the network or something?
Hardware: Wii (PAL)
Hardware configuration: System Menu 4.1E, Priiloader
Swiss boot method: Modified Wii Swiss Booter provided by Extrems
Software medium: Retail discs

User avatar
emu_kidid
Site Admin
Posts: 4228
Joined: Mon Mar 29, 2010 10:06 am
Location: Australia
Contact:

Re: Game Boy Interface

Postby emu_kidid » Tue Mar 17, 2015 11:11 pm

It sounds like it's a feature in that he's got it working so well with such minimal lag compared to perhaps the official disc.
Image

User avatar
Extrems
Posts: 427
Joined: Tue Aug 17, 2010 10:40 pm
Location: Quebec, Canada
Contact:

Re: Game Boy Interface

Postby Extrems » Wed Mar 18, 2015 12:38 am

2-3 frames latency is considered high and is higher than the Game Boy Player Start-up Disc.
It was a necessary sacrifice in order to support framerate conversion.

The minimum latency achievable with the Game Boy Player is near zero as it uses a line buffer.

theclaw wrote:Hmm, less filtering than the Game Boy Player disc would be nice. Perhaps 240p too.

240p is the default mode.

sindrik
Posts: 75
Joined: Tue Jun 10, 2014 8:13 am

Re: Game Boy Interface

Postby sindrik » Wed Mar 18, 2015 5:04 am

Rocking the boat, extrems. Thanks for this!! Really handy for not swapping discs, and even more if it's planned to be better than the original disc.

User avatar
Streetwalker
Posts: 1316
Joined: Mon Dec 30, 2013 7:50 am
Location: Israel

Re: Game Boy Interface

Postby Streetwalker » Wed Mar 18, 2015 12:23 pm

Extrems wrote:2-3 frames latency is considered high and is higher than the Game Boy Player Start-up Disc.
It was a necessary sacrifice in order to support framerate conversion.

Wait, isn't the GBA's framerate 60fps ? In this case why do you even need to convert it ?

RetroRGB
Posts: 29
Joined: Sat Aug 10, 2013 8:52 pm

Re: Game Boy Interface

Postby RetroRGB » Wed Mar 18, 2015 10:46 pm

Woah, this looks awesome. It even has 16:9 support! I can't wait to test this thing out!!

I just have a basic mod chip in my GC and don't have an SD loader. How could I burn this to a disc?

User avatar
Streetwalker
Posts: 1316
Joined: Mon Dec 30, 2013 7:50 am
Location: Israel

Re: Game Boy Interface

Postby Streetwalker » Thu Mar 19, 2015 11:33 am


RetroRGB
Posts: 29
Joined: Sat Aug 10, 2013 8:52 pm

Re: Game Boy Interface

Postby RetroRGB » Thu Mar 19, 2015 12:16 pm

Thanks, but I actually found that same page and tried to make a bootable iso, but it didn't work: It just sat at the GC title screen. I tried testing it by first booting to swiss and then launching the GBI disc I created, but it didn't seem to work right and was stuck in 480i mode (I'm sure that was my fault, not the GBI software).

I'm all out of mini-DVDr's, but ordered more that will arrive tomorrow. If anyone has a tested and working .iso they can share, I'd really appreciate it.

User avatar
Extrems
Posts: 427
Joined: Tue Aug 17, 2010 10:40 pm
Location: Quebec, Canada
Contact:

Re: Game Boy Interface

Postby Extrems » Thu Mar 19, 2015 12:40 pm

480i suggests you're using a component cable. 240p isn't available when signalling EDTV capability.

RetroRGB
Posts: 29
Joined: Sat Aug 10, 2013 8:52 pm

Re: Game Boy Interface

Postby RetroRGB » Thu Mar 19, 2015 12:46 pm

Extrems wrote:480i suggests you're using a component cable. 240p isn't available when signalling EDTV capability.


Right, component. Is it possible to have a startup screen for the disc, where you can select what resolution and aspect ratio you'd like?

Also, is there any way to offer button mapping, maybe on the same startup screen? Anyone who uses controller adapters (such as NES-to-GC, or SNES-to-GC) can't use "select", since it's not mapped.

Once again, thanks so much for making this!

User avatar
Extrems
Posts: 427
Joined: Tue Aug 17, 2010 10:40 pm
Location: Quebec, Canada
Contact:

Re: Game Boy Interface

Postby Extrems » Thu Mar 19, 2015 12:58 pm

Not yet.

Which adapter in particular? They seem to map Select to Z, as this does.

blizzz
Posts: 5
Joined: Thu Mar 19, 2015 1:06 pm

Re: Game Boy Interface

Postby blizzz » Thu Mar 19, 2015 1:12 pm

Cool project, but I'm having problems getting it to run properly. I'm using the Datel SD Loader on a PAL Cube that's connected with an RGB cable to a CRT. When I try to boot the dol directly through the SD Loader I only get a black screen. When I load it through Swiss it boots up, but seems to be 576i, even though it shows 288p on screen.

I assume the arguments would allow me to start it in 240p, but I have no idea where I can enter them. Is there an option for it in Swiss?

RetroRGB
Posts: 29
Joined: Sat Aug 10, 2013 8:52 pm

Re: Game Boy Interface

Postby RetroRGB » Thu Mar 19, 2015 1:13 pm

I've only tested with these:
http://www.retrousb.com/product_info.php?cPath=22&products_id=30
http://www.retrousb.com/product_info.php?cPath=31&products_id=31

It's not just the Select button though, I often find that when using a SNES controller, it's more comfortable to use Y and B as the B and A buttons (respectively). Button mapping is obviously a low priority compared to everything else, I just wanted to mention it. I'd be happy to help with any testing if you'd like.

User avatar
Extrems
Posts: 427
Joined: Tue Aug 17, 2010 10:40 pm
Location: Quebec, Canada
Contact:

Re: Game Boy Interface

Postby Extrems » Thu Mar 19, 2015 1:22 pm

blizzz wrote:I assume the arguments would allow me to start it in 240p, but I have no idea where I can enter them. Is there an option for it in Swiss?

Set Swiss Video Mode to 480i. The only loader that supports arguments on GameCube is GBI itself through wiiload, using a Broadband Adapter.

theclaw
Posts: 304
Joined: Tue Dec 13, 2011 12:01 pm

Re: Game Boy Interface

Postby theclaw » Thu Mar 19, 2015 6:04 pm

Extrems wrote:480i suggests you're using a component cable. 240p isn't available when signalling EDTV capability.


Ugh, those blasted TV makers who leave out 240p component support. Ruining our fun.

User avatar
Extrems
Posts: 427
Joined: Tue Aug 17, 2010 10:40 pm
Location: Quebec, Canada
Contact:

Re: Game Boy Interface

Postby Extrems » Tue Mar 31, 2015 5:35 pm

  • Added digital PWM sound, with some glitches.
  • Added turbo button.
  • Fixed 288p, probably?

RetroRGB
Posts: 29
Joined: Sat Aug 10, 2013 8:52 pm

Re: Game Boy Interface

Postby RetroRGB » Tue Mar 31, 2015 11:52 pm

Extrems, this works REALLY well. The sound is excellent and everything played very smooth. In fact, it was still smooth, even when stretching to 2.375x. I've tried almost every GB-on-TV solution available and I've never seen one scale this smoothly. Thanks so much for the excellent work.

The only problem I have is I can only use it in 480i mode, since I'm using component video cables. The ability to switch resolutions in the same menu as screen zoom would be amazing (or even a startup title screen): 4:3/16:9 | 240p/480i/480p

Is that something that's possible? Once again, thanks SO much for this!

User avatar
Extrems
Posts: 427
Joined: Tue Aug 17, 2010 10:40 pm
Location: Quebec, Canada
Contact:

Re: Game Boy Interface

Postby Extrems » Wed Apr 01, 2015 12:05 am

No frames will drop until 3.5x zoom, and that's under certain conditions.

You can trick it into using 240p by momentarily disconnecting the cable.
However, non-integer scaling in 240p is suboptimal.

480p is used if progressive scan has been enabled in a GameCube title.


Return to “Homebrew & Utilities”

Who is online

Users browsing this forum: No registered users and 5 guests