Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

PkHouse Switch: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 23: Line 23:
The application supports multiple Pokemon games across different save formats, with automatic save backup, multi-select capabilities, search and filtering, and multiple color themes.
The application supports multiple Pokemon games across different save formats, with automatic save backup, multi-select capabilities, search and filtering, and multiple color themes.


Note: Moving Pokemon between different games is not supported. Banks are separated by game family because transferred Pokemon would lack the HOME Tracker ID required for cross-game compatibility.
'''Note:''' Moving Pokemon between different games is not supported. Banks are separated by game family because transferred Pokemon would lack the HOME Tracker ID required for cross-game compatibility.
 
== Disclaimer ==
This software is provided "as-is" without any warranty. While the app has been tested, it may contain bugs that could corrupt or damage your save files.
 
Use at your own risk. The author is not responsible for any data loss or damage to your save data.
 
This is why the automatic backup system exists — always verify your backups before making changes.
 
If you need to restore a backup, use a save manager such as [[Checkpoint Switch|Checkpoint]] or [[JKSV Switch|JKSV]] to import the backup files back onto your Switch.


== Supported games ==
== Supported games ==
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 51: Line 59:
| Pokemon Legends: Z-A || 2.0.1 || SCBlock (<code>main</code>) || 32 || 30
| Pokemon Legends: Z-A || 2.0.1 || SCBlock (<code>main</code>) || 32 || 30
|-
|-
| Pokemon FireRed || 1.0.0 || || ||
| Pokemon FireRed || 1.0.0 || GBA sectors (<code>FireRed_e.sav</code>) || 14 || 30
|-
|-
| Pokemon LeafGreen || 1.0.0 || || ||
| Pokemon LeafGreen || 1.0.0 || GBA sectors (<code>LeafGreen_e.sav</code>) || 14 || 30
|}
|}


== Features ==
== Features ==
* '''Profile selection''' - Loads all user profiles from the system; detects which games have save data for the selected profile. Profile name is shown alongside the game name in all views.
'''Profile Selection:
* '''Two-panel box viewer''' - Game save on the left, bank on the right (in title override mode); bank-to-bank in applet mode
* Loads all user profiles from the system.
* '''Pick & place''' - Pick up a Pokemon with A, place in any slot; placing on an occupied slot swaps the two Pokemon
* Select a profile, then choose a game from those with save data for that profile.
* '''Multi-select''' - Tap Y to toggle individual selection, hold Y + D-Pad for rectangular selection, double-tap Y to select all Pokemon in the current box (shown in green). Regular selections (cyan) place Pokemon into the first available empty slots. "Select all" selections (green) preserve original positions — each Pokemon is placed at the same slot index in the target box. Selection is cleared when switching boxes or panels.
* Profile name is displayed alongside game name in all views.
* '''Box view''' - Press ZL/ZR to open an overview of all save/bank boxes with sprite preview. Navigate the grid with D-Pad; a semi-transparent preview of the highlighted box's contents appears as you move. Press A to jump to that box or B to cancel.
'''Two-Panel Box Viewer:
* '''Pokemon details''' - View species, level, gender, National Dex number, OT, Trainer ID, nature, ability, moves, IVs and EVs; perfect 31 IVs highlighted in gold; shiny Pokemon names shown in gold, Alpha Pokemon display a dedicated icon
* Title override mode - Left panel shows game save, right panel shows bank.
* '''Search / Filter''' - Search for Pokemon across both panels (save and bank) from the menu. Filter by species name, OT name, shiny, egg, alpha, gender, level range, and perfect IVs. Results displayed as a scrollable list with status badges; press A to jump to a Pokemon in the box view.
* Applet mode (bank-only) - Both panels show banks, allow bank-to-bank transfers.
* '''Search highlight mode''' - Choose between highlight mode (matching Pokemon outlined in the box view, non-matches dimmed) and list mode (scrollable result list). Highlights update in real-time when Pokemon are moved, swapped, or deleted. In box view, boxes containing search matches are outlined with matching Pokemon highlighted.
'''Pick &amp; Place:
* '''Delete Pokemon''' - Press X while holding Pokemon (single or multi-select) to delete them with confirmation dialog
* Press A to pick up a Pokémon, move to any slot, press A again to place.
* '''Bank box renaming''' - Rename bank boxes from the box view (ZL/ZR) by pressing Y on any box to set a custom name (max 16 characters). Names persist across sessions.
* Placing on an occupied slot swaps the two Pokémon.
* '''Bank system''' - Local .bin files stored per game family; paired games share the same bank folder (e.g. Sword and Shield); create, rename, and delete banks. Bank list shows the number of occupied slots for each bank. SD card space is checked before creating a new bank. Banks currently in use cannot be deleted.
* Press B to cancel and return the Pokémon to its original slot.
* '''Automatic backup''' - Full copy of the save directory created before any modifications (only on initial game selection); SD card space is checked before backup (requires 2x save size). If space is low or backup fails, a warning is shown with the option to continue without backup or cancel.
* Press X while holding a Pokémon to delete it (with confirmation).
* '''7 color themes''' - Default (dark blue-gray), HOME (light pastels), HOME - Violet (purple/lavender), HOME - Blue, HOME - Green, HOME - Red, Pikachu (yellow and brown). Theme choice saved automatically and persists across sessions. Live preview when scrolling the theme list.
'''Multi-Select:
* '''Save integrity''' - SCBlock saves are decrypted, modified, and re-encrypted with round-trip verification; BDSP saves use MD5 checksum; LGPE saves use CRC16 checksums with storage compaction before writing. All saves are written in-place to preserve the Switch filesystem journal.
* Tap Y on individual Pokémon to toggle selection.
 
* Hold Y + D-Pad to draw a rectangular selection.
== Bank folders ==
* Double-tap Y to select all Pokémon in the current box (green highlight).
 
* Only occupied slots are selectable. Selected slots display a numbered badge indicating pick-up order.
Paired games share the same bank folder:
* Press A to pick up all selected Pokémon, navigate to another box, press A to place.
 
* Regular selections (cyan): Pokémon are placed into the first available empty slots.
{| class="wikitable"
* "Select all" selections (green): Pokémon preserve their original slot indices; all target slots must be empty.
|-
* Press B to cancel and return all Pokémon to their original positions.
! Game Family !! Bank Folder
* Selection is cleared when switching boxes or panels.
|-
'''Box View:
| Let's Go Pikachu / Eevee || <code>banks/LetsGo/</code>
* Press ZL for an overview of all save boxes, ZR for all bank boxes.
|-
* Navigate the grid with D-Pad; a semi-transparent preview of the highlighted box’s contents appears.
| Sword / Shield || <code>banks/SwordShield/</code>
* Press A to jump directly to that box.
|-
* Press Y to rename a bank box (max 16 characters).
| Brilliant Diamond / Shining Pearl || <code>banks/BDSP/</code>
* Press B to cancel.
|-
'''Pokémon Details:
| Legends: Arceus || <code>banks/LegendsArceus/</code>
* Press X on any Pokémon to view:
|-
** Species, level, gender
| Scarlet / Violet || <code>banks/ScarletViolet/</code>
** National Pokédex number
|-
** Original Trainer (OT) and Trainer ID
| Legends: Z-A || <code>banks/LegendsZA/</code>
** Nature and Ability
|}
** All four moves
 
** IVs (perfect 31s highlighted in gold)
== User guide ==
** EVs
=== Installation ===
** Shiny names in gold; Alpha Pokémon display a dedicated icon (Legends: Arceus / Z-A).
Download <code>pkHouse.nro</code> from the [https://github.com/Insektaure/pkHouse/releases Releases] page and place it on the SD card at <code>sdmc:/switch/pkHouse/</code>.
'''Bank System:
 
* Banks are local <code>.bin</code> files stored per game family; paired games share a folder.
=== Launch modes ===
* Bank folders:
* '''Title override mode''' (recommended): Full access — game save on the left, bank on the right. Launch through a game title by holding R.
** Let’s Go Pikachu/Eevee<code>banks/LetsGo/</code>
* '''Applet mode''' (album/homebrew menu): Bank-only access — two banks side by side for bank-to-bank transfers. Save data is not accessible in this mode.
** Sword/Shield<code>banks/SwordShield/</code>
 
** Brilliant Diamond/Shining Pearl<code>banks/BDSP/</code>
=== Controls - Main view ===
** Legends: Arceus<code>banks/LegendsArceus/</code>
** Scarlet/Violet<code>banks/ScarletViolet/</code>
** Legends: Z-A<code>banks/LegendsZA/</code>
** FireRed/LeafGreen: <code>banks/FireRedLeafGreen/</code>
* From the bank selector:
** Create a new bank (up to 32 characters, checks available SD space).
** Rename an existing bank.
** Delete a bank (confirmation required; cannot delete the currently loaded bank).
* Each bank matches the box capacity of its game family (32 or 40 boxes).
* Bank list shows the number of occupied slots.
* Switch banks from the main menu; save and bank are saved together before switching.
* If no other bank exists, the app offers to create a new one.
'''Backup System:
* Automatic backup when loading a game save on Switch:<code>backups/&lt;profile&gt;/&lt;game&gt;/&lt;profile&gt;_YYYY-MM-DD_HH-MM-SS/</code>
* Full copy of the mounted save directory, created only once when the game is initially selected.
* Checks available SD space (requires 2× save size); warns and allows proceeding without backup if space is insufficient.
* If backup fails, a similar warning is shown before proceeding.
'''Themes:
* Default (dark blue-gray)
* HOME (light pastels)
* HOME - Violet
* HOME - Blue
* HOME - Green
* HOME - Red
* Pikachu (yellow and brown)
* Change themes from the main menu (+) or by pressing Y on profile/game selection screens.
* Live preview as you scroll; press A to confirm, B to cancel.
* Theme preference is saved automatically.
'''Search / Filter:
*Search for Pokemon across both panels (save and bank) using the menu (+ button -> search). Available filters:
** Species Name (text, case‑insensitive substring)
** OT Name (text, case‑insensitive substring)
** Shiny (toggle)
** Egg (toggle)
** Alpha (toggle, Legends games only)
** Gender (Any / Male / Female / Genderless)
** Level (min/max range)
** Perfect IVs (Off / 1+ / 6IV)
* Two result modes are available (selectable in the filter with Left/Right):
** Highlight (default): Returns to box view; matching Pokémon outlined, non‑matching dimmed. Highlights persist when Pokémon are moved. In box overview, boxes containing matches are outlined and matching slots are highlighted in the preview. Press B to clear.
** List: Displays results as a scrollable list with status badges ([S] shiny, [A] alpha, [E] egg), species, level, gender, and location. Press A to jump to a result, L/R to skip 10 results, X to adjust filters, B to close.
'''Save Integrity:
* SCBlock saves (ZA, SV, SwSh, PLA): Decrypted, modified, and re-encrypted. A round-trip verification runs on load to confirm the cycle is lossless.
* BDSP saves: Flat binary with MD5 checksum, recalculated on every save.
* LGPE saves: BEEF block format with CRC16 checksums, recalculated on every save. Storage is compacted before writing.
* FRLG saves: GBA sector-based format (128KB, two save slots). CheckSum32 recalculated per sector on save. Both slots are updated.
* All saves are written in-place to preserve the Switch filesystem journal.


== Controls ==
=== Main view ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 126: Line 182:
|}
|}


=== Controls - Profile selector ===
=== Profile selector ===


{| class="wikitable"
{| class="wikitable"
Line 143: Line 199:
|}
|}


=== Controls - Game selector ===
=== Game selector ===


{| class="wikitable"
{| class="wikitable"
Line 162: Line 218:
|}
|}


=== Controls - Bank selector ===
=== Bank selector ===


{| class="wikitable"
{| class="wikitable"
Line 222: Line 278:
| Quit || Exit
| Quit || Exit
|}
|}
=== Backup and restore ===
When loading a game save, an automatic backup is created at <code>backups/&lt;profile&gt;/&lt;game&gt;/&lt;profile&gt;_YYYY-MM-DD_HH-MM-SS/</code>.
The backup is only created once when initially selecting a game — switching banks does not trigger additional backups.
If a backup needs to be restored, use a save manager such as [[Checkpoint Switch]] or [[JKSV Switxh]] to import the backup files back onto the Switch.


==Screenshots==
==Screenshots==

Revision as of 13:27, 2 March 2026

pkHouse
General
AuthorInsektaure
TypeOther Apps
Version1.6.0
LicenseGPL-2.0
Last Updated2026/02/27
Links
Download
Website
Source

pkHouse is a Nintendo Switch homebrew application that provides a local bank system for Pokemon games. It allows moving Pokemon between save files and local bank storage directly on the console, similar to Pokemon HOME but as a free offline solution.

The application supports multiple Pokemon games across different save formats, with automatic save backup, multi-select capabilities, search and filtering, and multiple color themes.

Note: Moving Pokemon between different games is not supported. Banks are separated by game family because transferred Pokemon would lack the HOME Tracker ID required for cross-game compatibility.

Disclaimer

This software is provided "as-is" without any warranty. While the app has been tested, it may contain bugs that could corrupt or damage your save files.

Use at your own risk. The author is not responsible for any data loss or damage to your save data.

This is why the automatic backup system exists — always verify your backups before making changes.

If you need to restore a backup, use a save manager such as Checkpoint or JKSV to import the backup files back onto your Switch.

Supported games

Game Tested Version Save Format Boxes Slots/Box
Pokemon Let's Go Pikachu 1.0.2 BEEF blocks (savedata.bin) 40 25
Pokemon Let's Go Eevee 1.0.2 BEEF blocks (savedata.bin) 40 25
Pokemon Sword 1.3.2 SCBlock (main) 32 30
Pokemon Shield 1.3.2 SCBlock (main) 32 30
Pokemon Brilliant Diamond 1.3.0 Flat binary (SaveData.bin) 40 30
Pokemon Shining Pearl 1.3.0 Flat binary (SaveData.bin) 40 30
Pokemon Legends: Arceus 1.1.1 SCBlock (main) 32 30
Pokemon Scarlet 4.0.0 SCBlock (main) 32 30
Pokemon Violet 4.0.0 SCBlock (main) 32 30
Pokemon Legends: Z-A 2.0.1 SCBlock (main) 32 30
Pokemon FireRed 1.0.0 GBA sectors (FireRed_e.sav) 14 30
Pokemon LeafGreen 1.0.0 GBA sectors (LeafGreen_e.sav) 14 30

Features

Profile Selection:

  • Loads all user profiles from the system.
  • Select a profile, then choose a game from those with save data for that profile.
  • Profile name is displayed alongside game name in all views.

Two-Panel Box Viewer:

  • Title override mode - Left panel shows game save, right panel shows bank.
  • Applet mode (bank-only) - Both panels show banks, allow bank-to-bank transfers.

Pick & Place:

  • Press A to pick up a Pokémon, move to any slot, press A again to place.
  • Placing on an occupied slot swaps the two Pokémon.
  • Press B to cancel and return the Pokémon to its original slot.
  • Press X while holding a Pokémon to delete it (with confirmation).

Multi-Select:

  • Tap Y on individual Pokémon to toggle selection.
  • Hold Y + D-Pad to draw a rectangular selection.
  • Double-tap Y to select all Pokémon in the current box (green highlight).
  • Only occupied slots are selectable. Selected slots display a numbered badge indicating pick-up order.
  • Press A to pick up all selected Pokémon, navigate to another box, press A to place.
  • Regular selections (cyan): Pokémon are placed into the first available empty slots.
  • "Select all" selections (green): Pokémon preserve their original slot indices; all target slots must be empty.
  • Press B to cancel and return all Pokémon to their original positions.
  • Selection is cleared when switching boxes or panels.

Box View:

  • Press ZL for an overview of all save boxes, ZR for all bank boxes.
  • Navigate the grid with D-Pad; a semi-transparent preview of the highlighted box’s contents appears.
  • Press A to jump directly to that box.
  • Press Y to rename a bank box (max 16 characters).
  • Press B to cancel.

Pokémon Details:

  • Press X on any Pokémon to view:
    • Species, level, gender
    • National Pokédex number
    • Original Trainer (OT) and Trainer ID
    • Nature and Ability
    • All four moves
    • IVs (perfect 31s highlighted in gold)
    • EVs
    • Shiny names in gold; Alpha Pokémon display a dedicated icon (Legends: Arceus / Z-A).

Bank System:

  • Banks are local .bin files stored per game family; paired games share a folder.
  • Bank folders:
    • Let’s Go Pikachu/Eevee: banks/LetsGo/
    • Sword/Shield: banks/SwordShield/
    • Brilliant Diamond/Shining Pearl: banks/BDSP/
    • Legends: Arceus: banks/LegendsArceus/
    • Scarlet/Violet: banks/ScarletViolet/
    • Legends: Z-A: banks/LegendsZA/
    • FireRed/LeafGreen: banks/FireRedLeafGreen/
  • From the bank selector:
    • Create a new bank (up to 32 characters, checks available SD space).
    • Rename an existing bank.
    • Delete a bank (confirmation required; cannot delete the currently loaded bank).
  • Each bank matches the box capacity of its game family (32 or 40 boxes).
  • Bank list shows the number of occupied slots.
  • Switch banks from the main menu; save and bank are saved together before switching.
  • If no other bank exists, the app offers to create a new one.

Backup System:

  • Automatic backup when loading a game save on Switch:backups/<profile>/<game>/<profile>_YYYY-MM-DD_HH-MM-SS/
  • Full copy of the mounted save directory, created only once when the game is initially selected.
  • Checks available SD space (requires 2× save size); warns and allows proceeding without backup if space is insufficient.
  • If backup fails, a similar warning is shown before proceeding.

Themes:

  • Default (dark blue-gray)
  • HOME (light pastels)
  • HOME - Violet
  • HOME - Blue
  • HOME - Green
  • HOME - Red
  • Pikachu (yellow and brown)
  • Change themes from the main menu (+) or by pressing Y on profile/game selection screens.
  • Live preview as you scroll; press A to confirm, B to cancel.
  • Theme preference is saved automatically.

Search / Filter:

  • Search for Pokemon across both panels (save and bank) using the menu (+ button -> search). Available filters:
    • Species Name (text, case‑insensitive substring)
    • OT Name (text, case‑insensitive substring)
    • Shiny (toggle)
    • Egg (toggle)
    • Alpha (toggle, Legends games only)
    • Gender (Any / Male / Female / Genderless)
    • Level (min/max range)
    • Perfect IVs (Off / 1+ / 6IV)
  • Two result modes are available (selectable in the filter with Left/Right):
    • Highlight (default): Returns to box view; matching Pokémon outlined, non‑matching dimmed. Highlights persist when Pokémon are moved. In box overview, boxes containing matches are outlined and matching slots are highlighted in the preview. Press B to clear.
    • List: Displays results as a scrollable list with status badges ([S] shiny, [A] alpha, [E] egg), species, level, gender, and location. Press A to jump to a result, L/R to skip 10 results, X to adjust filters, B to close.

Save Integrity:

  • SCBlock saves (ZA, SV, SwSh, PLA): Decrypted, modified, and re-encrypted. A round-trip verification runs on load to confirm the cycle is lossless.
  • BDSP saves: Flat binary with MD5 checksum, recalculated on every save.
  • LGPE saves: BEEF block format with CRC16 checksums, recalculated on every save. Storage is compacted before writing.
  • FRLG saves: GBA sector-based format (128KB, two save slots). CheckSum32 recalculated per sector on save. Both slots are updated.
  • All saves are written in-place to preserve the Switch filesystem journal.

Controls

Main view

Button Action
D-Pad Move cursor
L / R Switch box (hold to auto-repeat)
ZL / ZR Box view (save / bank)
A Pick up / Place Pokemon
B Cancel / Return held Pokemon
Y Toggle multi-select
X View Pokemon details (or delete held Pokemon)
+ Open menu
- About

Profile selector

Button Action
D-Pad Left/Right Navigate profiles
A Select profile
Y Theme selector
- About
+ Quit

Game selector

Button Action
D-Pad Navigate game grid
A Select game
B Back to profile selector
Y Theme selector
- About
+ Quit

Bank selector

Button Action
D-Pad Up/Down Navigate bank list
A Open bank
Y Create new bank
X Rename bank
+ Delete bank
B Back (main view if bank loaded, otherwise game selector)
- About

Menu options (Title Override Mode)

Option Description
Theme Open the theme selector
Search Search / filter Pokemon across panels
Switch Bank Save game and bank, return to bank selector
Change Game Save everything, return to game selector
Save & Quit Save everything and exit
Quit Without Saving Exit without saving changes

Menu options (Applet / Bank-Only Mode)

Option Description
Theme Open the theme selector
Search Search / filter Pokemon across panels
Switch Left Bank Save both banks, switch the left bank
Switch Right Bank Save both banks, switch the right bank
Change Game Save both banks, return to game selector
Save Banks Save both banks
Quit Exit

Screenshots

pkHouseLocalPokeBankSwitch-01.png pkHouseLocalPokeBankSwitch-02.png pkHouseLocalPokeBankSwitch-03.png pkHouseLocalPokeBankSwitch-04.png pkHouseLocalPokeBankSwitch-05.png pkHouseLocalPokeBankSwitch-06.png pkHouseLocalPokeBankSwitch-07.png pkHouseLocalPokeBankSwitch-08.png

Changelog

v1.6.0

  • Add FireRed / LeafGreen support (game version 1.0.0).

v1.5.2

  • Rename bank boxes from the box view (ZL / ZR) — press Y on any box to set a custom name (max 16 characters).
  • Names are saved in the bank file and persist across sessions.
  • Existing banks are fully backward compatible — unnamed boxes display as "Bank 1", "Bank 2", etc.
  • Box view overlay now shows a subtitle: bank file name for bank panels, profile and game name for save panels.
  • Long bank file names are truncated with (..) in the panel header to prevent overflow.

v1.5.1

  • Hold L / R shoulder buttons to auto-repeat box switching.
  • Hold L / R in search results list to fast-scroll through pages.
  • New search highlight mode: matching Pokemon outlined in box view, non-matches dimmed.
  • Search result modes: choose between Highlight (default) and List via the Mode row in search filter.
  • Live highlight tracking: moving, swapping, or deleting Pokemon while highlights are active updates them in real-time.
  • Boxes containing search matches are outlined in the box view (ZL / ZR) with matching Pokemon highlighted.

v1.5.0

  • Search for Pokemon across both panels (save and bank) from the menu (+ → Search).
  • Filter by species name, OT name, shiny, egg, alpha, gender, level range, and perfect IVs.
  • Results displayed as a scrollable list with status badges: [S] shiny, [A] alpha, [E] egg.
  • Press A to jump directly to a Pokemon in the box view; L/R to skip 10 results; X to adjust filters.
  • Delete Pokemon: press X while holding Pokemon (single or multi-select) to delete them with confirmation.

v1.4.0

  • 7 color themes (Default, HOME, HOME - Violet, HOME - Blue, HOME - Green, HOME - Red, Pikachu)

v1.3.1

  • Save backup now checks SD card free space before backing up (requires 2x save size).
  • Warning dialog if space is low, with option to continue without backup or cancel.
  • If backup fails, a prompt is shown before proceeding.
  • Creating a new bank now checks available SD card space first.

v1.3.0

  • New applet mode (album/HB menu): bank-only access for all games, two banks side by side for bank-to-bank transfers.
  • Banks that are currently in use cannot be deleted.
  • When switching banks, the selector appears on the side being switched while the other panel stays visible.
  • Bank switching now always saves game and bank together to prevent data corruption.
  • Multi-select improvements: drag selection (hold Y + D-Pad) to select a rectangular group of Pokemon at once.
  • Double-tap Y to select all Pokemon in the current box (green). Position-preserving placement for "select all" selections.

v1.2.0

  • Implement all boxes overview for save and bank boxes (access with ZL / ZR).

v1.1.0

  • Now supports Let's Go Pikachu / Eevee games.

v1.0.1

  • Implement full swap history to avoid losing Pokemon when doing multiple in-place swaps then canceling with B button.

v1.0.0

  • Initial release.

Credits

  • PKHeX by kwsch - PokeCrypto research and save structure reference.
  • JKSV by J-D-K - Save backup and write logic reference.
  • Built with libnx and SDL2.

External links

Advertising: