This project was developed entirely with AI assistance: analysis, code, tests, and documentation. The released versions are tried on real consoles, without any problems so far. Still, it has not had the review a conventionally developed tool would have. Use it at your own risk and keep backups.
Two Luma3DS patches that make Pokémon Bank 1.5 and Poké Transporter 1.5 work without Nintendo's servers. Bank keeps its boxes on the SD card; Transporter moves Pokémon from Gen 1, 2 and 5 games into Bank's transport box, so that they can still reach Gen 6 and 7 games after the official servers go offline.
Status: early release. As with any tool that touches saves, a backup is a good idea: of your game saves before installing, and of Bank's extra data before an update.
- All 100 boxes, with the original box, search, and group screens.
- Transfers to and from X, Y, Omega Ruby, Alpha Sapphire, Sun, Moon, Ultra Sun, and Ultra Moon.
- Starts straight at game selection; no main menu, no connection.
- National Pokédex and adventure records, taken over in the records screen as in the original.
- Poké Miles earned locally at the original rate and redeemed through the original screens, with the original welcome gift of 100 Miles.
- Saves are journaled: an interrupted save leaves either the old or the new state.
Details: docs/bank.md.
- Works with wireless off: connection and server checks are removed.
- Reads Gen 5 cartridges and Gen 1/2 Virtual Console games and converts the Pokémon with Transporter's own code.
- Also lists Black, White, Black 2 and White 2 saves that TWiLight Menu++ or an nds-bootstrap forwarder keeps on the SD card, beside a cartridge and the Virtual Console titles (details).
- The language screen chooses which language's games are listed, so the list stays short (details).
- Writes the Pokémon into Bank's transport box first, then removes them from the source game. A power cut in between never loses a Pokémon.
- Contains a shining Easter egg for Gen 1 Virtual Console transfers, based on content that was lost to time.
Details: docs/transporter.md.
Each release on the Releases page has the file offline_bank-<version>.zip, laid out like the SD card:
luma/titles/00040000000C9B00/code.ips Pokémon Bank
luma/titles/00040000000C9B00/exheader.bin
luma/titles/00040000000C9C00/code.ips Poké Transporter
luma/titles/00040000000C9C00/exheader.bin
README.txt
The repository itself holds no patch files. Without a release, build them yourself.
You need a 3DS with Luma3DS v10.0 or later, and Pokémon Bank and Poké Transporter installed in version 1.5, their final updates.
- Back up your game saves. If you are updating, back up Bank's extra data too: the offline Bank keeps its boxes in Bank's extdata, not in its save (how to back them up).
- Extract the zip and copy its
lumafolder to the root of the SD card, merging it with the one that is there. - Hold SELECT while powering on and switch on Enable game patching.
- Start Bank once before using Transporter.
The two files of a title only work as a pair; never mix files from different releases. The guides for Bank and Transporter have the details and troubleshooting.
- docs/bank.md and docs/transporter.md: using each patch. What changes, install, troubleshooting, limits.
- docs/errors.md: every error case of both patches as a flow, with each message and both error numbers.
- docs/internals.md: how they work, in three parts: Bank, storage, Transporter.
- docs/building.md: building from source, verifying, and packing a release.
- docs/testing.md: the checks that need a console, as steps and what is expected to be seen.
Transporter lists the games of one language at a time, and starts with the console's language. As an example, Pokémon Green exists in Japanese only. Press L on Transporter's start screen to open the language screen and choose Japanese; the game list then shows the Japanese titles. The same goes for any other game in a language that is not the console's: cartridge, save on the SD card, or Virtual Console title.
The choice lasts until Transporter is closed. More in docs/transporter.md. A save on the SD card is only listed under its exact name, see the names per game and language.
While the official service runs, yes. It ends on February 25, 2027. A release made before then ships a separate download patch. It only works when no offline Bank is on the SD card yet, and your Pokémon stay on the server as well: you start Bank with it once, it signs in as the original does, fetches your boxes into a new offline Bank and says it succeeded. Then you put the normal patch in its place. The steps are in the notes of that release and in the README.txt of its zip.
The normal patches read only the files of their own version, so that they stay free of code for earlier formats. Such code would never go away, and it would sit on the path that loads and saves your Pokémon.
A Bank that an earlier release stored differently is converted once by a separate migration patch, which every release ships. You start Bank with it one time and then put the normal patch in its place. The release notes say how.
So that a power cut cannot cost you the Bank. Up to v0.2.1 a cut during Save and Quit could leave the one Bank file unreadable, and with it every box. Since v0.3.0 everything is stored in pairs of files, and a save only writes into the file of a pair that is not in use. A cut can then only damage a file Bank does not need, and the next start goes on with the other one (details).
Since v0.5.0 the files take no more space on the SD card than needed. A Bank of v0.4.0 or before is converted once with the migration every release ships.
Something does not work or behaves oddly? Please open an issue in this repository. Include:
- what you did, step by step, and what happened instead of what you expected,
- the two numbers of any error shown in Bank or Transporter, or a photo of that screen,
- which games were involved, and whether cartridge, digital, or a save on the SD card,
- the release you used, your console model, and your Luma3DS version.
With enough information I will probably look into it, but this is a hobby project and I cannot promise a fix or a date.
Feature requests will most likely not be taken up. The project is open source under the GPL: if you want it to do more, you are welcome to fork it.
Pokémon HOME, purchases, server-side legality checks, event gifts, and import or export tools for save editors.
The Transporter patch would not exist without zaksabeast. He worked out how Poké Transporter works inside, showed that it can run offline, and published all of it openly. The patches in the following repositories are not compatible with the ones released here and cannot be combined with them, but this project builds on what they worked out, so they are listed here with many thanks to him:
- Transporter-Offline-Patch: the edits that let Transporter run without servers. The offline flow here follows them.
- Transporter-PKSM-Bank-Patch: his notes on Transporter's state machine, and the points where a patch can take over the Bank check and the transfer.
- DreamRadarCartRedirect: the functions through which Transporter reads and writes a DS cartridge, and the idea of pointing them at a file. Reading saves from the SD card is built on it.
The source code of this project is licensed under GPL-3.0-or-later.
This is an unofficial, non-commercial fan project.
- It is not affiliated with, endorsed, sponsored, or approved by Nintendo Co., Ltd., The Pokémon Company, GAME FREAK inc., Creatures Inc., or any of their affiliates. It is not an official product or service of any of them and does not restore or replace one.
- Pokémon, Pokémon Bank, Poké Transporter, Nintendo 3DS, and all related names are trademarks of their respective owners. They are used here only to say what the patches are for.
- The repository contains no game files, no Nintendo code, and no keys. To build the patches you must supply your own copies of software you legally own.
- The patches only work on a console that already runs custom firmware, with your own installed copies of the two applications. They do not provide, unlock, or pay for any software or service.
- The software is provided as is, without warranty of any kind, as set out in the licence. You use it at your own risk; the author is not responsible for lost Pokémon, damaged saves, or any other damage. Whether using it is permitted where you live is your own responsibility.
