kwsch / PKHeX

Pokémon Save File Editor
https://projectpokemon.org/pkhex/
Other
3.68k stars 689 forks source link

Pokemon transferred from Gamecube games to GBA games are bugged. #3563

Closed lovelydumpling closed 2 years ago

lovelydumpling commented 2 years ago

Describe the bug When transferring a Pokemon from Colosseum or XD: Gale of Darkness to one of the GBA games, a byte isn't set properly unless the Pokemon is Viewed and Set. This leads to weird issues in game, such as being unable to breed (will never make eggs) and if it is holding an item, it will be invisible in the box. (If using Move Items, moving the item from the Pokemon will make the item vanish. But sending the item to Bag will send it to the bag appropriately and make it a real item.) In PKHex, these bugged Pokemon are ignored when you use the Clear Box option (they are not deleted.) Other unknown issues may occur. Tested primarily with Pokemon LeafGreen Version, using both the stable build and the latest dev build at the time of writing.

To Reproduce Steps to reproduce the behavior:

  1. Load a Colosseum or Gale of Darkness save in PKHex.
  2. Click on Tools > Data > Dump Boxes. Save to Database.
  3. Load a GBA save (Ruby/Sapphire/Emerald/FireRed/LeafGreen) in PKHex
  4. Tools > Data > Load Boxes. Load from Database. Yes to modify .pk* when set to SAV.
  5. Export the save.

OR simply

  1. Load a Colosseum/XD save
  2. Drag and drop a Pokemon from the save to any folder on your computer
  3. Load a GBA save
  4. Drag and drop the .ck3/.xk3 file into a box on your GBA save. Export the save.

Result: Any Pokemon transferred from the Gamecube games will have various issues as described at the top of this report.

Expected behavior Pokemon from the Gamecube games shouldn't have this bugged behavior. They should be able to breed, and their held items should show appropriately.

Screenshots Imgur album with captions

Additional context As shown in the final image of the Imgur album, this bug appears to be caused by a single byte not being set properly. On a bugged Pokemon the byte reads 00, while on a fixed Pokemon the byte reads 02.

kwsch commented 2 years ago

Thanks, fixed by https://github.com/kwsch/PKHeX/commit/ec45ca1a8391bc2e510335279540970c7c820d40