Hacking Homebrew PKSE - Pokemon Save Editor

  • Thread starter Thread starter kiasta
  • Start date Start date
  • Views Views 8,307
  • Replies Replies 25
  • Likes Likes 6
Hello, I have a greenleaf save but it says “0 save found”. It is the French version of the game, could it be a bug ?
Thanks
 
Hey, don’t know if someone already pulled that request. Is it possible for you to add an search option for example the items hold when you want to gen a Pokemon. There are thousands of items and u have to click through the whole list. Would be easy to find exactly what u need in 1 second :)
 
Hello, I have a greenleaf save but it says “0 save found”. It is the French version of the game, could it be a bug ?
Thanks
I made a test with the english version and it works. Could it be possible to update the tool to support other languages than english ? Thank you.
 
Hey, don’t know if someone already pulled that request. Is it possible for you to add an search option for example the items hold when you want to gen a Pokemon. There are thousands of items and u have to click through the whole list. Would be easy to find exactly what u need in 1 second :)

I have an issue on Github for this exact thing and am working on it currently. I agree it would make things a lot easier. It's going to be included in the 1.2.0 version release hopefully soon.

I made a test with the english version and it works. Could it be possible to update the tool to support other languages than english ? Thank you.

I have an issue for this on Github, it will be worked on in the next scheduled major release. Unfortunately, I had to trim 1.2.0 down a bit. This is my next top priority for 1.3.0, or even adding it in for 1.2.1.
 
  • Like
Reactions: ripley-v

PKSE Release 1.2.0 - Full Release Notes​

Version 1.2.0 Feature Release​

I'm very excited to share this with you all! This was a monster of an effort and looking forward to hearing from you all and testing the new features and legality.

This release adds every Pokémon generation before the Switch. 26 titles from Red/Blue through Ultra
Sun/Ultra Moon, and fixes the non-English FireRed/LeafGreen releases never appearing on the save
picker
. It also adds Trade Evolve, a third legality layer that asks whether a Pokémon could really
have been caught where it says it was, PKSM bank import, Tera Types, origin marks and search, and
fixes a long list of correctness bugs, including Legends: Arceus stats being wrong by roughly a
factor of three, and Japanese, Korean and Chinese text drawing as nothing.

An older game's save is a file, not an installed game. Copy it onto your SD card, press Y — Open
Save File
on the save picker, and browse to it. Saves named main are listed too.

If you own FireRed/LeafGreen, your backup folders move on first launch. They now carry the title ID,
so two releases of one game can no longer share one folder. An ambiguous folder is left alone and named
in the log, rather than guessed.

New features​

  • Added 26 pre-Switch titles: Red/Blue/Yellow, Gold/Silver/Crystal, Ruby/Sapphire/Emerald, Diamond/Pearl/Platinum/HeartGold/SoulSilver, Black/White/Black 2/White 2, X/Y/Omega Ruby/Alpha Sapphire and Sun/Moon/Ultra Sun/Ultra Moon. Boxes, party, items, trainer details, the creator, the legality checker and the bank all work as they do on the Switch games, and each game reads its own species data rather than a shared table.
  • Added Trade Evolve to the details page, for every Pokémon that evolves by trading in its own game, including the ones needing a held item, which is consumed if there is one but is not required. Clamperl asks which evolution you want. From X/Y onward a trade leaves a handling trainer behind, so those games ask whether to take one from a save you own or generate one.
  • Added a third legality layer: whether a real encounter exists in the game a Pokémon claims to come from that could have produced it, across wild encounters, statics, gifts, trades, raids and Mystery Gift distributions. It covers all nineteen save formats and is informational only. PKSE never refuses an edit.
  • Added PKSM bank import. Press − in the Storage view to browse to a .bnk file, preview what it holds and commit it. All nine of PKSM's generation tags import.
  • Added forward transfer for Generation 1 and 2 Pokémon exactly as the Virtual Console games did. This is forward directional only, because a Generation 1 Pokémon has nowhere to record a nature, ability, PID or ball.
  • Added name tables in nine languages, for every title, species, moves, abilities, natures, types, items, forms, locations and ribbons.
  • Added the console's own fonts, so Japanese, Korean and Chinese names render in every game, for the names stored in the save as well as the ones PKSE supplies. They were being read correctly all along and drawn as nothing, because the bundled font has no CJK characters.
  • Added Tera Types for Scarlet/Violet, on the details page and as a badge under the Pokémon's types, Stellar included. Displayed, not editable.
  • Added origin marks to the Boxes and Storage views — the Kalos pentagon, the Alola clover, the Galar, Let's Go, BDSP, Legends: Arceus, Scarlet/Violet and Legends: Z-A marks, the Pokémon GO mark, and a Game Boy for a Virtual Console transfer. Generations 3 to 5 show a game name and no mark, because the games never had a stamp for one.
  • Added search on Y to every picker, the Items pouch and the file browser. Add Item has moved from Y to − so that Y is search everywhere. The Box and Bank get Find from the Storage menu (X), which highlights matches rather than hiding slots.
  • Added the Egg Location picker, so egg sources like BDSP's "Nursery Couple" can be chosen rather than only displayed.
  • Made Species editable. Changing it re-points what depends on it: form is clamped to one the new species has, gender is constrained to its ratio, the ability moves to the same slot, and experience is re-derived from the level. Moves are deliberately left alone.
  • Added an "Auto-Legalize Unsupported Transfers" setting, off by default. No game has ever let a Pokémon from another generation reach Generation 3, and with this on PKSE rebuilds such a Pokémon as a legal native of the game it is going to. It never lowers a level and never claims an event the Pokémon did not receive.
  • The Handling Trainer row now appears for every format that has one, reading (none) when the Pokémon has never been traded, and says which of OT/HT is the active handler. Fields a format does not have are hidden rather than drawn as zero — a Generation 1 Pokémon has no Ability, Nature, Held Item or Ball row at all.

Fixed - FireRed/LeafGreen not found​

  • Fixed an issue where FireRed/LeafGreen saves in any language but English reported "0 saves found". Those games ship one Switch title per language — no other Pokémon title does, so no other game was affected — and PKSE only knew the English pair, dropping every save whose title ID it did not recognise. All twelve are recognised now. This was about identifying the title, not about reading its language.
  • Fixed an issue where two releases of one game shared a backup folder, so opening the French game could load the English save — and, with "write back to the game" on, write it into the French title. Nothing failed and nothing was logged, because the two saves are the same format.
  • Fixed an issue where PKSE ignored a Pokémon save whose title ID it did not know, rather than identifying it by its contents.

Fixed - saves being written incorrectly​

Each of these was found by loading a real save, writing it straight back without editing anything, and
requiring the file to come back identical. None showed up as an error: the save was valid, it simply wrote
bytes PKSE had no business writing.

  • Fixed an issue where empty Generation 3 party slots were stamped with "mail #0" instead of the game's "no mail" marker.
  • Fixed an issue where every Generation 3 party Pokémon's battle stats were recalculated on every save. The games refresh those only on level-up, evolution or a PC deposit, so a Pokémon trained since its last level-up legitimately stores lower stats than the formula gives. A Pokémon you actually edit still gets fresh stats.
  • Fixed an issue where saving a Sword/Shield save moved items around inside the bag, even when no item had been edited. Nothing was ever lost, but the bag was no longer laid out the way the game left it.

Fixed - eggs in a Generation 3 save​

  • Fixed an issue where an egg showed a garbled name and claimed to be Japanese. Generation 3 marks every egg, on every cartridge, by storing the Japanese word for egg as its nickname and setting its language to Japanese, and replaces both when it hatches. An egg now reads Egg, with (set when it hatches) for its language.
  • Fixed an issue where making a Pokémon an egg wrote an incomplete record — the games write an internal flag, the placeholder name and the language together, and PKSE wrote only the flag.

Fixed - stats, abilities and data tables​

  • Fixed an issue where every Legends: Arceus Pokémon's stats were wrong, by roughly a factor of three at low level. That game has Grit Values rather than EVs and scales the base stat directly. Boxed Pokémon were worst affected, since their stats are recalculated when the save loads.
  • Fixed an issue where roughly thirty Pokémon had no base stats at all and computed from a base of zero — Darmanitan, Aegislash, Wishiwashi, Minior, Eiscue, Morpeko, Thundurus, Landorus, Calyrex and Melmetal among them. Tauros was the Paldean Combat Breed in every game, including the ones that only have the Kanto one.
  • Fixed an issue where abilities were checked against Scarlet/Violet's data in every game, reporting "Ability not legal for this species" for perfectly ordinary Pokémon — a Brilliant Diamond Piplup, or most of Legends: Arceus's Hisuian forms.
  • Fixed an issue where an evolved Legends: Z-A Pokémon could be reported as holding an illegal ability. That game keeps the ability a Pokémon was caught with through evolution, so a Fletchling caught with Big Pecks is still a Big Pecks Fletchinder.
  • Fixed an issue where Brilliant Diamond/Shining Pearl, Scarlet/Violet and Legends: Z-A could not be given a Hisui ball, and where a Legends: Arceus Pokémon moved into one of them had its ball replaced with a Poké Ball. Replacing it is Sword/Shield's rule alone.
  • Fixed an issue where the TM pouch named item ids 420-427 "TM93" through "TM100". Those eight ids are HM01 through HM08.

Fixed - transferring into a Generation 3 game​

  • Fixed an issue where a Pokémon moved into FireRed/LeafGreen was given a met location from the wrong region — a transferred Generation 1 Pokémon arrived at "Abandoned Ship", which is in Hoenn. Generation 3 stores a met location in one byte in its own numbering, and the wider value was being copied straight across. Every transfer into Generation 3 was affected, not only the Generation 1 and 2 route this release adds. A Pokémon now lands somewhere the destination could actually have produced it; this does not make it legal, and is not meant to.
  • Fixed an issue where a transferred Unown came out as a different letter. In Generation 3 the letter is part of the PID rather than a stored field, so regenerating the PID silently renamed it — and since each Tanoby chamber holds five letters, the renamed Unown also ended up somewhere its own letter never appears.
  • A Generation 3 Pokémon returning to its own game is unaffected and keeps its met location exactly. That is the one backward transfer that is genuinely legal.

Fixed - names and interface​

  • Fixed an issue where ribbon names did not match the games: Battle Royale is Battle Royal Master, and Champion Battle, Champion Regional and Champion National are Battle Champion, Regional Champion and National Champion. Two more carried disambiguation no game shows and are simply Champion and Hoenn Champion.
  • Fixed an issue where the reported DLC level was wrong for some Sword/Shield and Scarlet/Violet saves. Neither game records a DLC entitlement anywhere, so both now report their full content set. Nothing is gated on it.
  • Fixed an issue where dialogs drew a second row of button hints inside their own card. There is one control bar per screen, and it belongs to whatever owns the input.

Notes​

  • Korean Generation 2 saves are deliberately not claimed. They need a different character table and a differently shaped checksum, so PKSE refuses them rather than half-opening one.
  • Red, Blue, Green, Gold, Silver, Diamond, Pearl, HeartGold, SoulSilver, Ruby and Sapphire cannot name themselves. Each pair writes an identical save with no version byte, so PKSE names the pair.
  • Gold, Silver and Crystal saves carrying a real-time clock footer are recognised, and Generation 3 Game Boy Advance saves keep theirs when written back, so berry growth and the tides are not reset.
  • Before PKSE writes to a file you opened yourself, the original is copied to sdmc:/PKSE/FileBackups.
  • Some form and ribbon names in languages other than English still use a shorter label than the game does, where no verified source for the full wording was available. English is unaffected.
  • Fetching assets for a fresh checkout is now four scripts rather than the Makefile: python tools/gen_fonts.py, gen_typeicons.py, gen_marks.py and gen_hdsprites.py. The build downloads nothing and stops with the script to run if one has not been.
 

Site & Scene News