Figured I should stop by for this.
So this was news to me as well, but pleasantly so. I'm very open to the idea of linking up with Dolphin for GCN link cable emulation, and I'll try and support it at some point in the future officially. May be a few months though.
What really surprises me is the compatibility. I was under the impression there were no issues with Dolphin+VBA-M. Hearing that higan has higher compatibility already is somewhat surreal to me.
My GBA emulation is relatively young. Only about 1-2 months of real development work has gone into it thus far. It strives for very high accuracy and simulates all of the various wait-states and penalties of the GBA. The really big problem with it right now is that I've been unable to find reliable information to emulate ROM prefetch, which greatly speeds up some games. So by emulating all of the slowdowns, and not the major speedup, the result is emulation that can run significantly slower than a real GBA. In emulation, running way too fast is much better than running a little too slow, so this is a big deal.
But if and when this issue is addressed, I'm fairly confident GBA compatibility will be very high in higan afterward. So what I'm getting at is, I don't think this is ready for prime-time public usage yet. But getting the Dolphin support in now will certainly not hurt. Just please be patient with the emulation quality until then. With any luck, this'll drum up some interest and I can get some help improving my GBA core, like from jchadwick recently.
...
From another perspective ... I used to only emulate the SNES. Similar to the Game Boy Player, the SNES had the Super Game Boy, which combined an SNES with a Game Boy. Initially I emulated this by including gambatte in with bsnes. Later, I implemented my own Game Boy emulator.
The biggest advantage to using the existing best-in-class emulator is that it will have higher compatibility. It is also a lot less work.
The downside is that the projects are guaranteed to be structured very differently. Trying to merge two very different projects together produces some of the ugliest, toughest to compile code you can imagine. And that shim is highly volatile. New versions will break this interface, your patches won't be accepted upstream, etc. There is also a big concern around licensing, if both projects don't use eg the same GPL revision.
Eventually, I was willing to sacrifice a bit of compatibility because I wanted it all integrated. I don't regret the decision, but it has been a lot of work. Probably the worst aspect was that once I had infrastructure for SNES+GB, I started adding more and more systems. GBC, NES, and GBA. It's easy to get carried away once you get past the challenge of supporting multiple systems in one emulator.
So as for what Dolphin should do, that's up to them.
If they ever want to build higan's GBA core into Dolphin binaries, I'd be willing to grant them a GPLv2 license to that portion of the code to do that. (The SNES section is strictly GPLv3 for its anti-TiVoization clauses.)
In the interests of the current design to keep things separate, I'm going to be pushing for a standardized IPC interface that is cross-platform and emulator-agnostic. Ideally, I'd like any GBA emulator to easily be able to connect to Dolphin in the same way higan does, without having to bring in higan-specific paradigms. Nor for the GCN side to require Dolphin-specific paradigms, if at all possible.
...
Lastly, I did recently start to emulate the Game Boy Player from the reverse end, and succeeded in adding rumble support to some GBA games. I am not talented enough to emulate the Gamecube, so this is more of a simulation of the GBP BIOS disk. It'll be interesting to consider using Dolphin + higan to emulate the Game Boy Player, assuming there is interest. Although it is far less interesting than the SGB in terms of added features. It's pretty much just rumble support added to a half-dozen titles.
So this was news to me as well, but pleasantly so. I'm very open to the idea of linking up with Dolphin for GCN link cable emulation, and I'll try and support it at some point in the future officially. May be a few months though.
What really surprises me is the compatibility. I was under the impression there were no issues with Dolphin+VBA-M. Hearing that higan has higher compatibility already is somewhat surreal to me.
My GBA emulation is relatively young. Only about 1-2 months of real development work has gone into it thus far. It strives for very high accuracy and simulates all of the various wait-states and penalties of the GBA. The really big problem with it right now is that I've been unable to find reliable information to emulate ROM prefetch, which greatly speeds up some games. So by emulating all of the slowdowns, and not the major speedup, the result is emulation that can run significantly slower than a real GBA. In emulation, running way too fast is much better than running a little too slow, so this is a big deal.
But if and when this issue is addressed, I'm fairly confident GBA compatibility will be very high in higan afterward. So what I'm getting at is, I don't think this is ready for prime-time public usage yet. But getting the Dolphin support in now will certainly not hurt. Just please be patient with the emulation quality until then. With any luck, this'll drum up some interest and I can get some help improving my GBA core, like from jchadwick recently.
...
From another perspective ... I used to only emulate the SNES. Similar to the Game Boy Player, the SNES had the Super Game Boy, which combined an SNES with a Game Boy. Initially I emulated this by including gambatte in with bsnes. Later, I implemented my own Game Boy emulator.
The biggest advantage to using the existing best-in-class emulator is that it will have higher compatibility. It is also a lot less work.
The downside is that the projects are guaranteed to be structured very differently. Trying to merge two very different projects together produces some of the ugliest, toughest to compile code you can imagine. And that shim is highly volatile. New versions will break this interface, your patches won't be accepted upstream, etc. There is also a big concern around licensing, if both projects don't use eg the same GPL revision.
Eventually, I was willing to sacrifice a bit of compatibility because I wanted it all integrated. I don't regret the decision, but it has been a lot of work. Probably the worst aspect was that once I had infrastructure for SNES+GB, I started adding more and more systems. GBC, NES, and GBA. It's easy to get carried away once you get past the challenge of supporting multiple systems in one emulator.
So as for what Dolphin should do, that's up to them.
If they ever want to build higan's GBA core into Dolphin binaries, I'd be willing to grant them a GPLv2 license to that portion of the code to do that. (The SNES section is strictly GPLv3 for its anti-TiVoization clauses.)
In the interests of the current design to keep things separate, I'm going to be pushing for a standardized IPC interface that is cross-platform and emulator-agnostic. Ideally, I'd like any GBA emulator to easily be able to connect to Dolphin in the same way higan does, without having to bring in higan-specific paradigms. Nor for the GCN side to require Dolphin-specific paradigms, if at all possible.
...
Lastly, I did recently start to emulate the Game Boy Player from the reverse end, and succeeded in adding rumble support to some GBA games. I am not talented enough to emulate the Gamecube, so this is more of a simulation of the GBP BIOS disk. It'll be interesting to consider using Dolphin + higan to emulate the Game Boy Player, assuming there is interest. Although it is far less interesting than the SGB in terms of added features. It's pretty much just rumble support added to a half-dozen titles.