View Full Version : more with the multiplayer on GBA
pipes
12-29-2004, 06:51 AM
I know there has been talk about the GBA not able to do multiplayer because of speed but I was thinking about it. I don't know, but would it be possible to run two games at once (I think one gameboy emulator did this) for mutiplayer and have the 2nd one run in the background then have it controlled like ZSNES does. So all the data could be passed on the individual's computers instead of directly going through the network. I don't know if that would work or if anyone else has thought of it. Just a thought.
<P ID="signature">-----------------------------------------
The pipes clangor all the time!</P>
The 9th Sage
12-30-2004, 05:15 AM
> I know there has been talk about the GBA not able to do
> multiplayer because of speed but I was thinking about it. I
> don't know, but would it be possible to run two games at
> once (I think one gameboy emulator did this) for mutiplayer
> and have the 2nd one run in the background then have it
> controlled like ZSNES does.
Actually, No$GBA does it that way, if I remember right...running two games at the same time on one PC, emulating the link between them.
<P ID="signature">http://www.xanga.com/ZeldaDDhttp://i.xanga.com/ZeldaDD/metxl01ss02.gif
Glargel blarg rargle! (Go to my weblog!)</a></P>
Fla Flash
12-30-2004, 12:13 PM
I'll give ya half a cookie for that. I know No$GB does it, but I'm not sure about No$GBA. Hell, half a cookie is better than none.<img src=smilies/magbiggrin.gif>
<P ID="signature"><img src=http://www.freewebs.com/mewscorner/pikaxmas.png>
Symbiosis..just when you thought the woods were safe... (http://www.freewebs.com/mewscorner/)</P>
The 9th Sage
12-31-2004, 04:04 AM
> I'll give ya half a cookie for that. I know No$GB does it,
> but I'm not sure about No$GBA. Hell, half a cookie is better
> than none.
No, it does. I've done it before. <img src=smilies/laff.gif> With FF Tactics Advance.
<P ID="signature">http://www.xanga.com/ZeldaDDhttp://i.xanga.com/ZeldaDD/metxl01ss02.gif
Glargel blarg rargle! (Go to my weblog!)</a></P>
> I don't know, but would it be possible to run two games at
> once (I think one gameboy emulator did this) for mutiplayer
> and have the 2nd one run in the background then have it
> controlled like ZSNES does.
Yes this is possible, and my position has been it would be best if the developers implementing link had aimed to do it this way from the start. By sending only keystroke data between the two computers and keeping the emulated CPUs in sync, the games could run at full speed on both ends even when separated by a high-latency internet connection.
Most GameBoy emulators supporting the link cable over the net (Prototype-D, KiGB, BGB, and VBAlink) communicate all the link data directly. While this model is faithful and satisfying from an intellectual point of view, in order to emulate the a low-latency cable through a high-latency internet connectio, the emulated CPUs must be slowed down accordingly. This makes netplay practically intolerable outside of a small LAN.
The technique of sending only keystroke data between machines, as is done by ZSNES and all Kaillera-enabled emulators, is certainly harder to do for GameBoy emulators because in this case it is required that multiple CPUs be emulated on each player's computer. It probably wouldn't be much of a hindrance in terms of sucking up more computer resources though, because the video display is the demanding piece, and for such a netplay scenario still only one screen would need to be displayed to each user. There actually is one GameBoy Color emulator (TGB Dual) that supports the link cable in this way. However, TGB is quite buggy, seems to no longer be under development, and does not emulate GBA games.
The hard part of coding a link feature probably isn't in these high-level issues, but rather in getting the link protocols right. After all, VBAlink only supports one transfer mode (out of five) so far, although that does manage to take care of many games. Perhaps now that VBAlink works and has source code available, someone out there could try and modify it to do netplay in the Kaillera/ZSNES/TGB Dual style?
-goro
<P ID="signature"></P>
> > I'll give ya half a cookie for that. I know No$GB does it,
> > but I'm not sure about No$GBA.
> No, it does. I've done it before.
Well yes, both NO$GMB and NO$GBA support the link cable by emulating two GameBoys on one computer. However, neither emulator provides any sort of netplay in the manner pipes_clangor was talking about. While these programs could be extended to support netplay in the same way ZSNES does, netplay is helpful mainly to gamers and not developers, so I doubt Nocash would put time into developing it.
-goro
<P ID="signature"></P>
MooglyGuy
01-06-2005, 07:47 PM
] Yes this is possible, and my position has been it would be
] best if the developers implementing link had aimed to do it
] this way from the start. By sending only keystroke data
] between the two computers and keeping the emulated CPUs in
] sync, the games could run at full speed on both ends even
] when separated by a high-latency internet connection.
Unfortunately, in this case, determinism bites you in the ass. Even if you emulate both machines starting at the exact same instant on both machines on either end of the connection, the very slight (and sometimes not-so-slight) delays will come and bite you. If the game you're trying to play uses a pseudo-random number generator for certain events, then the delay between the keypress registering on the emulator on the sender side versus the keypresses being registered on the emulator on the receiver side will cause problems to crop up rather quickly.
<P ID="signature"></P>
icenine0
01-06-2005, 08:27 PM
How about having a big "resync" button that sends save state data to all players and sets each machine to the host's state? You could also conceivably do it on a timed basis, like every 30 seconds or so. Or even just whenever the memory checksums disagree -- if the synchronization has a reasonable margin of error.
<P ID="signature">The more often you fail, the sweeter the taste of success!</P>
> the delay between the keypress registering on
> the emulator on the sender side versus the keypresses being
> registered on the emulator on the receiver side will cause
> problems to crop up rather quickly.
Do you understand how netplay works at full speed in ZSNES, TGB Dual, Snes9x, Nestopia, FCE Ultra, or any of the dozens of Kaillera-enabled emulators such as MAME32K, Kawaks, Project64k, Jnes, Gens, or ePSXe Cyberpad? I'm not going to write a full technical explanation here, but you can probably get an overview from the Kaillera FAQ (http://www.kaillera.com/faq.php). The basic idea is that determinism is the key concept that makes this possible in the first place. Game execution is kept in sync by ensuring keys are entered with identical delays (from the ROM's perspective) at both ends.
The idea pipes_clangor brought up is the same concept, and it can be done, as has been proven by the GameBoy Color emulator TGB Dual.
-goro
<P ID="signature"></P>
> How about having a big "resync" button that sends save state
> data to all players and sets each machine to the host's
> state?
Yeah that can be done, and it's helpful if there are _bugs_ in the emulator causing de-syncs to happen in the first place. However, if it becomes necessary to often rely on such a feature, then that would indicate the quality of netplay to be pretty sucky, and for netplay it's better to fix de-sync bugs rather than rely on hacked up contingency measures. Kaillera-based netplay emulators do not implement such a fail-safe state-transfer mechanism, and I do not know whether other netplay emulators such as ZSNES or Snes9x do either.
-goro
<P ID="signature"></P>
vBulletin® v3.8.4, Copyright ©2000-2012, Jelsoft Enterprises Ltd.