Dolphin, the GameCube and Wii emulator - Forums

Full Version: Game Boy Player
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Yeah, I know... Another "Could Dolphin emulate a different system" thread. The fun thing is that Nintendo actually did release a hardware component for the GameCube called the Game Boy Player which would be able to play Game Boy (Color / Advance) games through cartridges. It actually use the physical hardware instead of software emulation. But I am guessing that would be common news by now. Anyway, Dolphin being able to fully support the Game Boy Player would be awesome. A man may always dream right? Do we have any indication of how far Game Boy Player emulation might have come, or if none at all?

Yea, I know there are plenty of GBA emulators. Fact is, Dolphin is king, period. One emulator to rule them all (or at least the Game Boy, Virtual Console, Wii and GameCube). Please forgive me for my lack of knowledge in this matter. The best thing I could get from this thread is a bit of insight! Smile
AFAIK, Dolphin itself doesn't need to emulate the GBA (or GB/GBC) handheld; another emulator can do that and pass off video and audio. Connecting the two over localhost shouldn't be an issue, and if a protocol were developed, any other GB emulator could hook up with Dolphin. The GB Player just spits out A/V info from its port, and the GC reads this (through ARAM DMAs, I believe) and the GB Player software handles displaying everything and playing sound. So, in other words, just put the correct A/V data in the correct memory locations at the correct times, and boom, GB Player emulation. More or less.

The biggest issues I think are

1) What is the expected video format? What pixel data does the GC want and where does it go?
2) What is the expected audio format? What audio data does the GC want and where does it go?
3) The custom protocol would Dolphin potentially use with a GB emulator, what would it look like?
4) Who is going to work on all of this?

For my part, my emulator GB Enhanced+ just got netplay (for GB and GBC games) so it has networking via SDL_net. I'd add support for the custom protocol in a heartbeat if it existed.
The GameBoy player was just a GameBoy strapped to the bottom of the GC, and just got the controller input from the controllers and sent the video out through the GC, so the GameCube didn't really do much.

As to adding this feature, there has been people talking about it before, but I don't remember what consensus they came to

edit: ninja'd
To find numbers 1 and 2, would hardware tests need to be done with an actual GB player and GC? Or could we use Dolphin to see what memory areas the GB player disc is looking into?

As for the protocol, would it not just be easier to integrate another open source GBA emulator into Dolphin (assuming no GPL violations) and have it be brought up to Dolphin's code levels of cleanness?
(07-08-2016, 12:03 PM)KHg8m3r Wrote: [ -> ]edit: ninja'd
To find numbers 1 and 2, would hardware tests need to be done with an actual GB player and GC? Or could we use Dolphin to see what memory areas the GB player disc is looking into?

I'm pretty sure the folks behind the Game Boy Interface know exactly how everything works. It's just a matter of pinging someone to explain it (or looking through their work on our own). Personally, I'd appreciate it if this was explicitly documented somewhere, outside of source code.

(07-08-2016, 12:03 PM)KHg8m3r Wrote: [ -> ]As for the protocol, would it not just be easier to integrate another open source GBA emulator into Dolphin (assuming no GPL violations) and have it be brought up to Dolphin's code levels of cleanness?

That still gets back to the issue of Dolphin suddenly emulating more than the GC/Wii. In some ways, I imagine it would be easier (at least faster) since Dolphin has more direct control. But then Dolphin has to handle loading the GBA emulator, make sure it runs properly, and there is still the problem of code maintenance (no matter how clean your code is, eventually you may find it needs updates, upgrades, tweaks, etc).

In other ways, a protocol like the GBA<->GCN connection is better. Dolphin doesn't need to care about anything GBA related, just feed it data and you're done. Data in, data out, and there you go. The impact on the codebase is minimized, and it offers other GBA emulators a chance to work with Dolphin.
I plan on forcing endrift to do this someday.
Well that makes sense for now. About the GC <-> GBA connection, I believe that currently best works with the latest revisions of VBA-M? Sadly, I don't see VBA-M getting updated these days. mGBA by endrift however makes promising progress. I guess that Dolphin works fine with mGBA too? Besides using a GBA emulator as a controller for example Four Sword Adventures, it would be possible in theory to have a GBA emulator act itself as the Game Boy Player, sending the video data to Dolphin if I understand correctly? mGBA seems perfect for that. Or perhaps, I am completly off here.
I don't think this is going to be a good idea. Adding or coding another emulator into Dolphin means less progress on Gamecube and Wii because valuable time will be spent maintaining the GBA emulator as well. IMHO, it will be more work for little benefit. It is better to use one of the plenty GBA emulators that already exist and leave the programmers to focus on Gamecube and Wii.
I don't think indeed that Dolphin is supposed to add different cores. Yet, the Game Boy Player is part of the GameCube which is the main system Dolphin emulates (along with the Wii). I don't think Dolphin should emulate a GBA, but instead having a complete GBA emulator such as mGBA communicate with Dolphin and sending the video / audio stream. Dolphin's code should still be clean and it should be considerable less code to maintain to support a video / audio stream from a GBA emulator than implementing one itself. Dolphin remains a GC / Wii emulator and is not a GBA emulator, I am aware of that. We all just want to see Dolphin becoming the most complete GC / Wii emulator right? Even if it means adding those features which are rarely seen or used. But you're right, there are higher priorities than working on a Game Boy Player.
Indeed, as a matter of completeness, I'd love to see the GB Player emulated. I think it's a worthwhile endeavor, since this is still preserving games and the history behind them. It may seem like a trivial experience, but I think it's important all the same. I think some people may have felt the same way about the Super Game Boy on the SNES. It was just a GB shoved into an SNES cart and showed some pretty backgrounds sometimes, yet it's still good to have as an option for those who care.

Granted, the SGB and SGB2 are more interesting IMO than the GBP; they basically allow the GB game to access the full SNES hardware, if utilized correctly (no commercial games did this though...) and even supported 4 person multiplayer (a la Bomberman GB). Each game could program its own borders and palettes. On the other hand, the GBP has some predefined borders, and allows for rumble in select games, and... a timer. Not nearly as glamorous, I know, but that doesn't mean we should ignore it indefinitely. If I had more info on how the GBP worked, I could start poking around now. I'm not really a Dolphin dev, but since this is related to my own work, I don't see why I can't help.

As a side-note, I've always thought it'd be neat if I could come up with a GBA demo or something that accounts for TV gameplay, like NTSC scanlines on old CRTs. The GBA didn't need to consider how games would look with color-bleeding or anything else, not like the NES or SNES, but it would be interesting to see a demo that did. I guess I'm probably one of the few people who actually did use their GBP on a CRT, way back in the mid 2000s Tongue
I was thinking about this at 5am when I woke up too early. I hope it makes sense Tongue

I feel like adding the GB code into Dolphin would be better in the long run, because of the games that support the GC - GB connection, you can have Dolphin with full control over scheduling the GC timings and GB timings, making it more efficient.
Then use the GB emulator for both the GBP and with using the GC - GB connection, and just change how Dolphin interacts with the GB depending on what is being requested of it

That way, you can have a list of GB games in your library (separated from the GC/Wii games, like at the bottom or something), and if you launch the game directly it auto-loads the GB player. Or you can right-click a GC game and have it boot with the GB game connected for the GC - GB connection, and a pop-up window loads with the GB emulator.