Hacking Homebrew Pokéswitch - Simple Pokémon save editor for Switch

  • Thread starter Thread starter Absurdum
  • Start date Start date
  • Views Views 20,184
  • Replies Replies 85
  • Likes Likes 8

Absurdum

Active Member
Newcomer
Joined
Nov 19, 2025
Messages
42
Reaction score
25
Trophies
0
XP
226
Country
United States
I highly recommend reading the README (which also contains most of the following information) prior to use.

Pokéswitch is a Pokémon save editor designed to run natively on the Nintendo Switch. It aims to support the following games:
  • Pokémon Sword/Shield
  • Pokémon Brilliant Diamond/Shining Pearl
  • Pokémon Legends: Arceus
  • Pokémon Scarlet/Violet
  • Pokémon Z-A
Pokéswitch does not perform legality checking. It implements some basic constraints but generally will not prevent illegal modifications (e.g. most species modifications). Some features, such as name editing, also do not fully support languages aside from English.

Modification of the following properties is supported:
  • Name
  • Species
  • Level
  • Gender
  • Nature
  • Stat Nature
  • Ability
  • Shininess (for Pokémon originating in Sword/Shield via legacy SID manipulation and for Pokémon originating in the other supported games via PID manipulation)
  • Hold Item (for Sword/Shield, Brilliant Diamond/Shining Pearl, Scarlet/Violet, and Z-A)
  • IVs
  • EVs
  • HT Profile
  • ELs (for Legends: Arceus)
  • Moves
  • Maximum PP (for Sword/Shield, Brilliant Diamond/Shining Pearl, Scarlet/Violet, and Z-A)
  • Relearn Moves
  • Alpha Move (for Legends: Arceus)
  • TR Flags (for Sword/Shield)
  • Move Shop Flags (for Legends: Arceus)
  • Mastery Flags (for Legends: Arceus)
  • TM Flags (for Scarlet/Violet)
  • Plus Moves (for Z-A)
  • Poké Ball
  • Form (for most Pokémon with persistent alternate forms)
  • Dynamax Level (for Sword/Shield)
  • Gigantamax Factor (for Sword/Shield)
  • Original Tera Type (for Scarlet/Violet)
  • Effective Tera Type (for Scarlet/Violet)
  • Height (for Sword/Shield, Brilliant Diamond/Shining Pearl, Legends: Arceus, and Scarlet/Violet)
  • Weight (for Sword/Shield, Brilliant Diamond/Shining Pearl, Legends: Arceus, and Scarlet/Violet)
  • Scale (for Scarlet/Violet and Z-A)
  • Alpha Condition (for Legends: Arceus and Z-A)
  • PID
  • EC
  • OT
  • TID
  • SID
Pokéswitch also supports (bulk) moving, cloning, exporting, and releasing Pokémon. It can import PK8/PB8/PA8/PK9/PA9 files, import/export saves, search for Pokémon by various criteria, and modify inventories.

Pokéswitch features Pokémon Home-like functionality in the hyperboxes. Note that Pokémon transferred to a different series via the hyperboxes will generally be rendered illegal due to absence of a valid Pokémon Home tracker. Online interaction of these Pokémon, particularly with Pokémon Home, can result in bans/suspensions.

Latest Release: Version 7.0.1

Images:

main_menu.jpg

box.jpg

inventory.jpg


Original post:

Will preface by emphasizing this is largely untested (I wrote it over the past ~2 weeks). Back up your saves prior to use. There are likely bugs/unaddressed edgecases.

I wrote a Switch save editor for SwSh/BDSP/SV/Z-A. It can modify basic properties and do a few other things (see the README for more information). UI is relatively barebones (not the best with UX) but works. I do not intend to maintain this actively, but feel free to report issues.
 
Last edited by Absurdum,
Awesome job! I dont have a pc at this moment and having a homebrew to save edit is perfect!

I know it is new, but could you verify compatibility with rom hack saves?

I tested pokemon compass on a early save off violet and it worked, but on scarlet way ahead on game does not open

Could be save file size limit like pokehex, i can send both saves if you want.
 
Sick tool! I’ve been using some ting similar recently for PC

Maybe tbis source could be helpful towards this project ?

https://andrewbenington.github.io/OpenHome/
Thanks, good to hear that it's working fine.

It would be possible to transfer Pokémon between saves from different series, issue is they would generally be rendered illegal due to the omission of valid Pokémon Home tracking data (which is also noted in OpenHome's documentation.) Since online interaction (particularly with Pokémon Home) would be restricted and potentially result in bans/suspensions, I didn't bother with such functionality.

Awesome job! I dont have a pc at this moment and having a homebrew to save edit is perfect!

I know it is new, but could you verify compatibility with rom hack saves?

I tested pokemon compass on a early save off violet and it worked, but on scarlet way ahead on game does not open

Could be save file size limit like pokehex, i can send both saves if you want.
I can't guarantee support for ROM hacks since each one could use its own save and/or PKM structure, but if you provide the saves, I might at least be able to check what's going on. By "game does not open", do you mean that Pokéswitch failed to load the save or that the actual game failed to load the save following modification?
 
Thanks, good to hear that it's working fine.

It would be possible to transfer Pokémon between saves from different series, issue is they would generally be rendered illegal due to the omission of valid Pokémon Home tracking data (which is also noted in OpenHome's documentation.) Since online interaction (particularly with Pokémon Home) would be restricted and potentially result in bans/suspensions, I didn't bother with such functionality.


I can't guarantee support for ROM hacks since each one could use its own save and/or PKM structure, but if you provide the saves, I might at least be able to check what's going on. By "game does not open", do you mean that Pokéswitch failed to load the save or that the actual game failed to load the save following modification?
It means the pokeswitch couldnt open the savefile, i have ziped the files.
 

Attachments

This is very cool and I'm generally interested in an on-device save editor. Just like we had PKSM in the 3DS days, ya know? I'm a little concerned about the lack of legality validation though. I don't trust that I always know what I'm doing (and will feel the need to double-check anyways). Would be awesome to have a bag / item editor built-in, then I could just give myself heaps of vitamins, mints, bottle caps, patches, capsules and tera shards. Much less of a chance of ending up with an outright illegal pokemon if I used the game's mechanics to raise it.

A few notes:
* Scrolling through properties with the left stick does not work. Holding a d-pad button to scroll also does not work yet.
* Some kind of acknowledgement / user input before saving changes. I'm not sure at what point the program saves my changes. If it saved my changes, it would be nice to know that it did so (un)successfully.
* I can't seem to find party pokemon
* No way to edit held items as far as I can tell

I like the UI, it is simple and functional. I chuckled at this part on the github:

Why didn't you make this ~6 years ago?

I thought someone would make something like this but no one ever did
I thought for sure someone would make a UI built around pkhex.core by now, but that also hasn't happened yet. Is there a specific reason why you chose to reinvent the wheel, so to speak, with the save data handling and whatnot? Was it just not a good fit for your purposes? Either way, pretty cool man 👍
 
It means the pokeswitch couldnt open the savefile, i have ziped the files.
Thanks. I've compiled a build which hacks around save format validation, allowing both saves to be opened (link here, too large to attach). I still can't guarantee that Pokéswitch is fully compatible with Compass, but feel free to try it out. If it seems fine, I could add a setting to disable this validation in a later release.

I'm a little concerned about the lack of legality validation though.
Legality checking is quite complex and a comprehensive implementation would require integrating a lot (decades' worth) of reference data, so something of a can of worms.

That being said, most of the modifications available are fairly simple. The non-technical properties to think about (aside from obviously species) are probably ability, shininess, and (with some origin games) IVs. For the former two, you just have to be aware if your Pokémon's met data is compatible (e.g. shinifying a shiny-locked Pokémon will result in an illegal Pokémon). Modifying IVs can be an issue if the origin game has a PID correlation (or the Pokémon is IV-locked), but HT modification can be substituted regardless.

Scrolling through properties with the left stick does not work. Holding a d-pad button to scroll also does not work yet.
Yeah, might implement some of this later. Did initially look into the latter but found timers would be necessary and put it off.

Some kind of acknowledgement / user input before saving changes. I'm not sure at what point the program saves my changes. If it saved my changes, it would be nice to know that it did so (un)successfully.
A "Save modifications?" prompt should be displayed upon exit if there are ultimately any pending modifications. That is when modifications are written to your save (if you select "Yes".) You should also hear the "save" sound. Your save is not modified until this point.

Upon failure, a notification will appear (and the "save" sound will not be played.)

I can't seem to find party pokemon
Party Pokémon are stored in a different location and would require special handling in various aspects. Did not think would be worth the hassle, but maybe something down the line.

No way to edit held items as far as I can tell
Correct. Considered this, but would require compiling item data for each game then implementing an appropriate mode of presentation (probably some kind of search, don't just want to dump a list of 1000 items).

I like the UI, it is simple and functional.
Thanks, good to hear it holds up.

I thought for sure someone would make a UI built around pkhex.core by now, but that also hasn't happened yet. Is there a specific reason why you chose to reinvent the wheel, so to speak, with the save data handling and whatnot?
The standard toolchain for Switch development targets C/C++ (which is what this and libnx are written in). PKHeX is written in C#. There are some projects which attempt to support C# programs on Switch via e.g. interpreters, but no real native solution AFAIK.

Aside from that, I probably wouldn't have been interested in writing this if so much of it would have just been porting preexisting code. I started doing so randomly because I was wondering about save/PKM structure.

Just like we had PKSM in the 3DS days, ya know?
I was actually relatively inactive by the time PKSM started existing in its current form and so only used it about once. But I used to gen Pokémon for people back when 3DS hacking was relatively inaccessible (A9LH era) and used PCHex++ extensively, which I liked a lot.

Thanks for the detailed feedback.
 
Last edited by Absurdum,
Thanks. I've compiled a build which hacks around save format validation, allowing both saves to be opened (link here, too large to attach). I still can't guarantee that Pokéswitch is fully compatible with Compass, but feel free to try it out. If it seems fine, I could add a setting to disable this validation in a later release.


Legality checking is quite complex and a comprehensive implementation would require integrating a lot (decades' worth) of reference data, so something of a can of worms.

That being said, most of the modifications available are fairly simple. The non-technical properties to think about (aside from obviously species) are probably ability, shininess, and (with some origin games) IVs. For the former two, you just have to be aware if your Pokémon's met data is compatible (e.g. shinifying a shiny-locked Pokémon will result in an illegal Pokémon). Modifying IVs can be an issue if the origin game has a PID correlation (or the Pokémon is IV-locked), but HT modification can be substituted regardless.


Yeah, might implement some of this later. Did initially look into the latter but found timers would be necessary and put it off.


A "Save modifications?" prompt should be displayed upon exit if there are ultimately any pending modifications. That is when modifications are written to your save (if you select "Yes".) You should also hear the "save" sound. Your save is not modified until this point.

Upon failure, a notification will appear (and the "save" sound will not be played.)


Party Pokémon are stored in a different location and would require special handling in various aspects. Did not think would be worth the hassle, but maybe something down the line.


Correct. Considered this, but would require compiling item data for each game then implementing an appropriate mode of presentation (probably some kind of search, don't just want to dump a list of 1000 items).


Thanks, good to hear it holds up.


The standard toolchain for Switch development targets C/C++ (which is what this and libnx are written in). PKHeX is written in C#. There are some projects which attempt to support C# programs on Switch via e.g. interpreters, but no real native solution AFAIK.

Aside from that, I probably wouldn't have been interested in writing this if so much of it would have just been porting preexisting code. I started doing so randomly because I was wondering about save/PKM structure.


I was actually relatively inactive by the time PKSM started existing in its current form and so only used it about once. But I used to gen Pokémon for people back when 3DS hacking was relatively inaccessible (A9LH era) and used PCHex++ extensively, which I liked a lot.

Thanks for the detailed feedback.
Thank you very much! I tested it with my save and there where no bugs, awesome job!
 
would there be a way to implement move modification? all the work so far has been phenomenal!
Thanks. Possibly down the line, but would require a lot of reference data. Since move modification is relatively accessible in modern games, I didn't think it a priority.
 

Site & Scene News

Popular threads in this forum