Integrated GBA

From Dolphin Emulator Wiki
Revision as of 05:07, 22 February 2024 by DandelionSprout (talk | contribs) (→‎Integrated versus native mGBA)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Since 5.0-14690, Dolphin has the ability to run its own instances of mGBA directly. These mGBA instances can connect to GameCube games in a deterministic and consistent manner, that allows for full compatibility among GBA ↔ GCN connectivity titles. For this feature, Dolphin provides its own mGBA instance directly built in and does not need any external emulator. This feature is currently only supported on Desktop versions of Dolphin.

Introduction and Handling the Integrated GBA

GameCube titles can connect to GBA games in a variety of ways, and in order to emulate that experience, you can select an "Integrated GBA" as a type of controller option in Dolphin.

With this setting enabled, when you boot up a GameCube Title, a smaller GBA window will boot up alongside it. This is your Integrated GBA window. By right clicking it, you can access a context menu that gives you a bunch of options, including increasing the window size, untethering it from the GameCube Controller Port, swapping/inserting different GBA ROMs, and more!

Most games will require a GBA BIOS in order to start connection procedure, as High Level Emulation of the GBA BIOS does not currently implement Joybus connectivity. If you boot the Integrated GBA, you'll simply see a black screen unless you have a game configured. Even if you have a game configured, almost every GBA connectivity supported GameCube game requires a GBA BIOS. Configuring a GBA BIOS in Dolphin is fairly simple, and not much different than configuring the BIOS in your favorite GBA emulators. You can either place it in the default folder in Options → Configuration → GameCube tab under "GBA Settings", or you can specify where your GBA BIOS is located in the same menu.

Once this is configured, you're all set to try to connect the Integrated GBA.

Connecting games that communicate to a GBA with no Game

If the GameCube titles connects to the BIOS, simply letting the Integrated GBA run the GBA BIOS until the game is ready to connect is fine. The game will automatically connect to it when ready. If timings are more crucial, you can also use the Right Click menu to reset the BIOS to rerun it.

If you the GameCube title wants you to disconnect the GBA, you can simply click the "Connected" option in the Right Click menu in order to disconnect it. If you wish to turn off the Integrated GBA completely once you're finished with connectivity features, simply set the controller port where it is connected to a different option and it will shut off automatically. The process can be simplified to these very simple stuff.

  • Proceed in the game to the point in which it's time to connect a GBA. Many times this is enough to get connectivity started.
  • If connectivity does not automatically start, you may need to reset the Integrated GBA to restart the BIOS.
  • If the game can connect multiple GBAs, simply configure as many GBAs as needed in the same manner.


Connecting games that communicate with specific GBA games

If the GameCube title wants to connect to an actual GBA game, this makes connectivity a little more involved. You may need to insert one or more GBA games, which can be done in the Right Click menu, or a default game can be set in the GBA Settings Menu under Options → Configuration → GameCube.

Regardless of the method you choose, the important thing is to follow the instructions provided by the game on how to connect to the GBA title. Some games will require the game to be inserted and the GBA to be connected before GBA is booted while other games will simply have a menu to connect to the GameCube title directly inside of the GBA game. This may be more easily done by holding START and SELECT during BIOS on the Integrated GBA, as that will prevent the inserted game from booting.

  • Proceed to the point in the GameCube game it prompts you to connect a GBA game.
  • Follow instructions from the game, booting up the Integrated GBA and proceeding to the state that it wants the GBA to be in for connection.
  • If the game does not automatically connect the first try, simply reset the Integrated GBA and try again. Even on real console, these connections were not always perfect.


Managing Save Files for GBA Games in Dolphin

If a GameCube game interacts with a GBA game in the manner where the GBA game needs savedata, it's entirely possible to configure one or more savefiles to work in Dolphin. Dolphin's Integrated GBA will automatically create savefiles if you play the game directly in Dolphin, but if you wish to move around savefiles or use a savefile from a regular GBA emulator, there is a simple naming scheme difference. Most GBA emulators have GBA save data as the name of the rom.sav. So if I have a rom named "PokemonSapphire.gba", my savefile would be "PokemonSapphire.sav". This will not work directly in Dolphin. This is because Dolphin has to manage up to 4 GBAs at once, and in a game like Pokemon Colosseum, it's possible that all four GBAs may be running the same GBA game. In order to make your savefile be detected by Dolphin, you must affix a port number to it so it knows what port number the game is referring to. If you are loading "PokemonSapphire.gba" into GameCube controller slot 2, then you need to affix a "-2" to the end of the savefile. This will make it "PokemonSapphire-2.gba" This rule applies to each controller port, -1 through -4.

While this may seem confusing, this system allows you to quickly manage and identify what savefile goes to what port. This design was chosen because in Pokemon Colosseum and Pokemon XD, it's highly likely that two players may be playing on the same game. This way, we can determine which save goes to which port without players needing to duplicate ROMs.

Save Locations

You have two options for managing save files for GBA games. By default, Dolphin will bulk store GBA save files in a folder that can be set in the Options → Configuration → GameCube menu under the "GBA" section called "Saves". This acts much like a GCI folder, and allows users to put all of their GBA save files in one dedicated location. Dolphin can *also* store the savefile alongside the GBA ROM, much like most GBA emulators allow. To do this, simply check "Save in Same Directory as ROM" just above the Save Folder option.

Integrated versus native mGBA

While the settings menu in the integrated version is noticeably smaller than the native version, it can nevertheless handle most gameplay settings as in the native version.

This includes (un)loading GBA ROMs, resetting the game, importing/exporting savefiles, creating and loading savestates, scanning e-Reader cards, muting the volume, window scaling based on native resolution, and interframe blending.

A few settings in the native mGBA are not present in the integrated version, primarily ones that aren't relevant to GameCube connectivity, such as Link Cable GBA-to-GBA multiplayer, solar sensor settings (for the Boktai games), Game Boy Player rumble support, tilt sensoring (for WarioWare Twisted and Yoshi Topsy-Turvy), bilinear filtering, and integer scaling.

The Game Boy Advance BIOS is sufficient to also play Game Boy Color and Game Boy games in the integrated version, although there is no practical reason to do so in regards to GameCube connectivity.

The Integrated GBA and Netplay

One of the more interesting features of the Integrated GBA is that it can be used on netplay. In this setup, the Host computer controls most of what is going on, including the savefiles for Every GBA. This means if you are doing a Pokemon battle via Pokemon Colosseum or Pokemon XD, all players involved should send their GBA saves to the host, and every player must have each of the GBA games in a path that dolphin can find. The host is also responsible for renaming the savefiles to refer to each port. In order to enable GBA controllers for netplay, the must configure the netplay controllers and checkmark the "GBA" option for each port that is meant to be a GBA.

During netplay, each player is responsible for actions done on "their" GBA. This means they can reset their own GBA, change ROMs, and do other actions that may be necessary. If you're playing a game where other players are not meant to see the GBA data of each other player, make sure to enable "Hide Remote GBAs" in the Netplay options menu.


"When I start up my game, the Integrated GBA just shows a blackscreen. What did I do wrong?"

Either your GBA BIOS is missing or improperly configured. Please confirm that it's working.

"My save file isn't working. How do I get saves to work?"

Please make sure it is correctly named for the port that the Integrated GBA is plugged into and in the correct folder based on your configuration of the GBA save folder.

"Can I run the Integrated GBA without the GameCube game?"

No, Dolphin is a GameCube emulator and the Integrated GBA is tied to GameCube emulation. If you want to run GBA games without simultaneously having a Wii or GameCube window open, go find a GBA emulator.

"My game is very shaky, what's going on?"

Some GBA games use interframe blending. You can enable this in Dolphin through the Integrated GBA right click menu under Interframe Blending.

"I've followed all of the instructions and my game won't connect! What gives?"

It's possible that some settings may interfere with GBA ↔ GCN connectivity. For example, increasing/decreasing the "Emulated CPU Clock" will often prevent proper GBA ↔ GCN connectivity because communication is synced on a clock level. You may wish to restore your settings to as close to default as possible if you run into unknown connectivity errors. In some cases, various cheats (especially framerate hacks) forget to adjust things for GBA connectivity, so those may need to be disabled before attempting to connect to a GBA title.

"Why do you only mention GameCube games? Don't most Wiis have GameCube ports?"

While it's true that the Wii still has GameCube ports and can connect to the GBA just like the GameCube, no retail Wii titles actually use this functionality. There is certain Wii homebrew that does, but all of the steps described above apply, as the Wii is simply using the GameCube Controller ports.