GearsProgress / Poke_Transporter_GB

A Pokémon Generation I/II to Generation III transfer tool
MIT License
279 stars 6 forks source link

Emulator support?/and or bug during emulation. #1

Open Tiki-pixel opened 1 month ago

Tiki-pixel commented 1 month ago

Using mGBA 0.10.3 as the emulator, Poke Transporter GB works fine up until the trading part. To initiate the .GBA rom, I replaced it with a Generation 3 rom using the "Replace Rom" option, and the multiboot works fine. Then I created a multiplayer window (or boot up another window of mGBA) with the generation 1 or 2 game. In this test, I used Emerald, crystal and silver (Trying out two Gen 2 games with Emerald).

When preparing to trade, Pokemon Crystal never detected anyone on the link cable, and a message of "Your friend is not ready" played. It was a shame but to-be expected. But something caught my eye. I tried the mGBA nightly build (build 2017 July 8th and 9), and was surprised that the link cable trade connected... or it did for a split second. As soon as the dialogue ended, the crystal and silver game froze immediately for an indefinite amount of time. But it did indeed seem to communicate.

So this brings the question of "Will there be emulation support?", or was emulation support planned but never built? Reason being is that I personally really love this method of transfering Generation 1-2 to Generation 3 games, but I just don't have the hardware. Also I don't want to modify my pokemon just to use a save editor to plop them into my save. Either way, thank you GearsProgress for making this wonderful rom!

GearsProgress commented 1 month ago

Emulation support is a tricky situation, as theoretically there's no reason why the emulation for either the GBA or GB would break during a transfer (although that depends on how accurate mGBA's GB emulation is with ACE I suppose). However, there currently isn't a way to specify which link cable the user is using when connecting two mGBA windows. This means that you'll run into the same issues as trying to use a GBA link cable between two systems for this program (ie the connection just never connecting). The fact that the nightly build worked for a split second though is intriguing and definitely something I'm going to look into. There are a few other options that might be possible if the implementation in mGBA isn't possible, such as making a middle-man program that communicates between a GBA and GB emulator, but that seems a bit clunky.

I will do some digging into the mGBA source and see what the best way to theoretically implement the change would be, but there's no guarantees that it'll be possible- we'll see though!

GearsProgress commented 1 month ago

After talking with a member of the mGBA development team, it sounds like they're currently working on rewriting the link cable system to eventually include net play. The good news is that once that is done, implementing the different link cables shouldn't be too hard. The unfortunate news is that it might be a while until mGBA reaches that point. But I'll keep an eye on it and look into some other solutions to get Poke Transporter GB working in mGBA in the meantime!