Jump to content
LaunchBox Community Forums

Recommended Posts

My wife recently received some time off, and as such, I thought that it would be a nice idea to spend time playing some games together.
The sort of games I wanted to play with her were multiplayer co-op games, where we could go through a story together and actively complete the game together.

She's a fan of The Legend of Zelda series, so Four Swords on the Gameboy Advance, Four Swords Adventures on the Gamecube and Four Swords Anniversary Edition (DSiWare) came to mind immediately.
Alongside games like Kirby's Amazing Mirror (Gameboy Advance).
I also wanted to give Triforce Heroes (3DS) a shot, before being reminded that it's 3-Player only.

We started with Four Swords on the GBA.
I opted to do this through emulation because it would allow us to effectively play 'Split screen' while sitting on the couch and playing the game(s) through HDMI-out (mirrored) on the TV.

For my purposes, I found that the ideal setup was to have two of the same emulator in separate locations from my usual Emulator directory for Launchbox (as not to mess with the settings).
They would each be set up with separate settings (for controller input and any other quirks required) so it would simply be a case of booting them up each time and selecting the game I wanted to play.

It works rather nicely, however of course this all has to be done outside of Launchbox/BigBox, because Launchbox does not support Multi-Console Multiplayer.
This is a real shame as I thoroughly enjoy the ability to boot straight into BigBox and set everything up from there via controller input as I'm sure many of us here do.

This got me thinking on how such a feature could be implemented, and I think I have a pretty reasonable solution:

BigBox already has an "Additional Apps/Versions" option when selecting a game, as well as a "Launch With" option.
I'd like to apply similar ideas here, with a "Launch with Multi-Console Multiplayer" option (Obviously it can be named differently).

Technically, how would this work?

First, it's important to note that almost all of work is done on the emulator-end, but it requires support to function in a front end.

It requires some pre-requisites:

  • In addition to current emulator support, LaunchBox/BigBox would need to understand Multiplayer 'slots'.

I'll try my best to explain this:

Right now, LaunchBox understands that (for example) VisualBoy Advance is a Gameboy Advance Emulator, because I've told it that's the case.
What it currently has no concept of, is whether I wish to launch multiple emulators, and whether or not those emulators are all separate from each other and/or correspond to a particular player slot.

So, continuing on with the example of Four Swords for the Gameboy Advance, this game (for multiplayer) requires 2-4 instances of a Gameboy Advance and the game to play with friends.

What I'd like to be able to, is to set these multiplayer emulators from within LaunchBox.
So under 'Gameboy Advance', I'd have my regular Gameboy Advance emulator (when I'm playing regularly without multiplayer) and 4 additional directories for each potential player.
I'd have a directory set specifically for Gameboy Advance Multiplayer Player 1, another for Gameboy Advance Multiplayer Player 2, and so on.

What's the purpose of this?

Going back to the launch option mentioned above, you'd select "Launch with Multi-Console Multiplayer" > Select the number of players (the maximum could be presented based on the max players field).
Let's say I pick 3.

It would then ask me to select a console for Player 2 (We already know what Player 1 is using, because we've already selected our ROM/Console, so it would pick the emulator directory set for multiplayer slot 1 for that console).
By default, this would also the same console as Player 1, however it should be possible to pick other consoles from your emulator list. (I'll explain why the ability to pick another console is important in a moment).
It would then ask me to select a game (based on the ROM list of the previously selected console/emulator) for Player 2. If I've selected the same console as Player 1, I will have the default option of the same ROM/Game, or the option to pick another.

Once Player 2's options have been selected, Player 3s options are selectable.

Once the respective options for all 3 Players have been selected, Launchbox will open each emulator and selected game based on the respective slot.
For example:
I've set my Gameboy Advance (Multiplayer) slot 1 to:

C:\LaunchBox\Multiplayer\Emulators\VisualBoy (Player 1)\vbam.exe

I've set GBA (Multiplayer) slot 2 to:

C:\LaunchBox\Multiplayer\Emulators\VisualBoy (Player 2)\vbam.exe

I've set GBA (Multiplayer) slot 3 to:

C:\LaunchBox\Multiplayer\Emulators\VisualBoy (Player 3)\vbam.exe

and so on.

The benefits of storing this information in 'slots' are as follows:
- Easy to understand
- Controller configuration will always be consistent regardless of consoles picked (assuming it's set up correctly on the emulator)
- Sizing/Screen positioning of the emulator(s) will always be consistent regardless of consoles picked (assuming it's set up correctly on the emulator)

So to answer the questions from earlier:

Why allow people to select a console at all? Why not just launch the same console type automatically?

Two reasons:

  • Games such as The Legend of Zelda: Four Swords Adventures on Gamecube (and many others such as Wind Waker, Phantasy Star Online 2 or Pokemon Colosseum), require linking to other consoles (in this case a Gameboy Advance) to participate in multiplayer features.
  • It allows for games with cross-platform support (usually online) to play with each other.

Why allow people to select another game at all? Why not just launch the same game automatically?

  • In the same vein as the above, due to some games require linking to different consoles, you need to be able to select the respective ROM associated with the console you've selected (GBA Bios for Four Swords Adventure, or Sonic Advance in the case of linking to Phantasy Star Online 2)
  • Even if you're selecting the same console for every player, you may wish to perform a trade or link between different games, such as between Pokemon Ruby and Pokemon Sapphire.

Other ways to improve the idea would to be able to manually select the defaults for each game individually, or base it on something in the ROM information field, but I don't believe such a field exists yet.

One potential issue some emulators may be compatible with multiple 'consoles' but only be able to be set up to link with 1 console type at a time.

For this reason maybe a set of slots per link type might be a potential solution.

So that's the idea, a long winded write up I know, but the concept is actually rather simple.
If anyone has any questions or my explanation didn't help, please feel free to ask.

There might be a better method of achieving what I am presenting here, however this is the best "Plug and play" method I could come up with from my experience setting some of this stuff up manually, while also giving full compatibility with almost all link types.

Edited by Darkshade
  • Like 1
Link to post
Share on other sites
16 minutes ago, Jason Carr said:

Thanks @Darkshade; this is a cool idea. To be honest, though, it's gonna be difficult to devote enough time to implement this, because I don't think it would be a feature that would be widely used. I'll keep it in mind though to see if there are any other requests for it. :)

Thanks for the response Jason and I appreciate you taking it on board!

Understood in regards to time-commitment:user participation, hopefully we'll see something of it in the future.

  • Like 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...