GB/C Trading Simulator
Keep a backup of your save files from before trading for safety!
You can report any bugs in this tool using the Report an Error form.
What this tool does
This tool allows you to trade Pokémon between Red, Green, Blue, Yellow, Gold, Silver, and Crystal save files without the use of two consoles or setting up an emulator capable of trading. This can help with trade evolutions or just plain convenience. It also solves the issue of save file corruption when trading between international, Japanese, and Korean save files, making it possible to have these games interact for the first time. Shiny hunters can finally use Japanese games as multi-hunting cartridges, for example!
Just browse to any duo of compatible save files and hit "UPLOAD" to start trading! You'll need to save with the Pokémon you want to trade in your party like how you do in-game. Hit "DOWNLOAD" once you're done. If you upload two save files with usually incompatible or buggy languages, there will also be text prompts for typing in a new OT and nickname for the Pokémon, solving the corruption problem. If left blank, the Pokémon will default to its species name and the OT will default to the OT of the save file it's being traded to.
This tool may work for romhacks save files if they have identical save data structure to the actual games, but it will not visually detect Fakemon properly and there may be side effects depending on the romhack. You would just have to test it and see if it works for you. I do not plan to make extra support for romhacks at any time.
How it works
All of the trading happens client-side - no save files are actually uploaded to BMF's servers. The program detects the type of save file uploaded and reads its party data accordingly. Once two Pokémon are selected to trade, it converts the read data back into raw hex bytes and injects them into the save files in the same place the other Pokémon was previously. This is more or less exactly how the games do it when trading legitimately with a Link Cable. Pokémon data is identical (mostly, read below for more information) to how it would be if a trade had actually taken place on Game Boy.
As for the language conversion stuff, it simply takes all the characters of the nickname or OT and encodes it back into bytes, inserting that data into the save files in the same fashion. The generation 1 and 2 Pokémon games have proprietary, non-standard character encoding that you can read more about here on Bulbapedia if you'd like. Generation 2's character encoding is nearly identical to Generation 1's, mainly with the addition of Korean for Korean Gold and Silver.
Below are all of the current limitations of the tool and features that are missing. Bolded list items are planned for sure to be fixed/added at a later date, the rest either will never be or only will be if there's demand for them.
- When automatically selecting species names for Pokémon being traded to international versions from a Japanese or Korean save file, the species name defaults to English, even if the save file is French, German, etc. In the meantime, if you'd like your Pokémon to have the correct species name for your non-English international save file, you'll need to manually type it into the prompt in all caps. (Generation 1 NPC traded Pokémon will have the wrong OT in the viewer at the top, but should have the proper name in-game.)
- Trade evolutions do not learn the moves they would upon evolution at certain levels. For now, if the Pokémon you're trade evolving has a move you want, make sure to trade it at least a level before the level it learns the move at.
- Held mail items are retained, but the messages on them are not. If you trade a Pokémon holding mail, it will have incorrect message data on the receiving game, but the Pokémon will still be holding the actual item.
- The trading animation spells out the species of the Pokémon inside of eggs instead of saying "EGG" (or its other language equivalents). If a Pokémon evolves through trading, it will also show its new, evolved sprite during the trade animation instead of its prior form.
- Characters that aren't actually able to be typed on the in-game keyboard can be used in Pokémon names and OT names. Nothing dangerous or game-breaking, just stuff like numbers which aren't usually available in Pokémon nicknames, for example.
- When disabling the check for illegal Time Capsule trades and trading a Johto Pokémon into generation 1, its stats will be calculated based on its base stats in generation 2, and not its glitch Pokémon equivalent in generation 1. This can be solved by depositing the glitch Pokémon into the PC and withdrawing it again.
As far as I am aware through my own coding and bug-testing, everything else should be identical to how a trade would actually work in-game. This includes the inherent limitations of Time Capsule trades, which wipe a Pokémon's Pokérus data, Crystal caught data, and resets its friendship. Everstones also do not work to prevent evolution in generation 1, though there is a convenient option to turn that off below the viewer.
Found a bug?
This tool is by far my biggest project on the site so far, and took a lot of hard work, and a lot more code than I'm used to working with. I bugtested to the best of my ability, but I am only one person. If you happen to spot a bug of any kind while using the tool on the website, I would be super appreciative of you leaving a bug report with the Report an Error form. Your help is immensely appreciated. I will get to solving it as soon as possible.
If you have any questions about the tool, do feel free to reach out to me through any option on my contact page.
Last updated 6/21/23. Page created.