Remove internal development and hardware-evidence docs, drop issue references, and update cross-links and doc gates.
8.2 KiB
Install Gen1Recomp on Nintendo Switch
Every GitHub Release that includes Switch support ships an SD-ready zip:
gen1recomp-*-switch.zip. Extract it at the root of your microSD (install
or update — same steps), launch with title override, then import your
own legal .gb ROM.
You need a console that can run Switch homebrew (custom firmware / hbmenu). This project does not help you set that up.
Prefer building from source? See switch-build.md.
Port by andrewqsantos. Community testing help from booshankles.
1. Download the zip
- Open Releases.
- Download
gen1recomp-*-switch.zipfor the version you want. (Optional: verify againstsha256sums.txtin the same release.)
2. Extract onto the microSD
Extract the zip at the root of the microSD so you get:
sdmc:/switch/gen1recomp/gen1recomp.nro # native OTA launcher (hbmenu entry)
sdmc:/switch/gen1recomp/gen1recomp-game.nro # fused LÖVE game
sdmc:/switch/gen1recomp/version.txt
sdmc:/switch/gen1recomp/pokemon-love2d/imports/
sdmc:/switch/gen1recomp/pokemon-love2d/imports/mods/
sdmc:/switch/gen1recomp/pokemon-love2d/imports/saves/...
Older single-NRO zips only had gen1recomp.nro (the fused game). Current
releases use the dual-NRO layout above — open gen1recomp in hbmenu (the launcher).
Merge folders if your OS asks. Any method works: MTP (DBI → Run MTP responder + a client), direct SD (Hekate UMS or a card reader), or FTP. Exit MTP / unmount / stop FTP cleanly before launching. Step-by-step for macOS, Linux, and Windows: switch-transfer.md.
Updating
Native OTA launcher (in-console)
On Switch, over-the-air updates are handled by the native OTA launcher
(DEVKITPRO / libnx + curl), not by the LÖVE self-updater
(src/update/Check.lua). The hbmenu entry is the launcher NRO
(gen1recomp.nro). If a newer release exists it may download the same
gen1recomp-*-switch.zip used for install, verify SHA-256 from
sha256sums.txt, replace both gen1recomp-game.nro and
gen1recomp.nro (so the NACP version matches the release for hbmenu /
Sphaira), then hand off via envSetNextLoad. When you are already up to
date (or offline), the launcher stays quiet and opens the game with no
UI. When an update is available it shows a short screen in the same visual
language as the in-game launcher (black field, RGB rail, logo, A/B buttons).
Saves under pokemon-love2d/ are never touched. Protocol
contract: src/update/SwitchOta.lua.
The LÖVE self-updater stays disabled on NX (networkValidated == false).
Sphaira forwarder (HOME shortcut): Sphaira copies name/version/icon into
the installed forwarder at creation time. After an OTA (or zip) update, the
.nro on the microSD already has the new version — but the HOME shortcut
keeps the old badge until you reinstall the forwarder once in Sphaira
(Install Forwarder again on gen1recomp.nro). Browsing the NRO in Sphaira /
hbmenu always shows the live file version.
Manual zip (fallback)
Use the same extract/merge of gen1recomp-*-switch.zip. It replaces the
NROs (and the small help README.txt / INSTALL.txt files). Saves,
imported ROMs, mods, and options live under pokemon-love2d/ — do not
delete that folder when updating, or you will lose progress.
3. Launch with title override
Applet Mode is not supported for this game (not enough memory).
- On the Switch HOME menu, highlight any installed title.
- Hold R and launch that title — this opens hbmenu with full memory (title override).
- From hbmenu, open
gen1recomp.
Do not launch from the Album applet path for normal play.
4. Import your ROM
This project ships no game data. On first launch:
- Put your own legally obtained Pokémon Red, Blue (
.gb), or Yellow (.gbc) dump intoswitch/gen1recomp/pokemon-love2d/imports/(the launcher also shows the live save-dir path). All three can sit in the same folder. - Use Scan again on that game’s tab (Red / Blue / Yellow). Rescan matches by ROM SHA-1 for the open tab only — a Red dump never imports from the Yellow tab (and vice versa).
5. Import / Export a raw .sav
Continue a cart or PC battery save (or pull a slot off-console) via MTP / SD / FTP — same transfer methods as ROMs. Paths are per game:
| Game | Import inbox | Export folder |
|---|---|---|
| Red | imports/saves/red/ |
exports/red/ |
| Blue | imports/saves/blue/ |
exports/blue/ |
| Yellow | imports/saves/yellow/ |
exports/yellow/ |
(Under the save dir pokemon-love2d/ — the zip already creates these folders.)
- Copy a Gen1
.sav(32 KB) into that game’s inbox under the save dir (switch-transfer.md). - With the game’s ROM already imported, open that game’s tab → SAVE FILES → Import save. Only that folder is scanned.
- A successful import retires the file to
*.sav.importedand records its content hash so pressing Import save again does not clone slots. Failed imports leave the original.savin place. - To pull a slot off the console, use Export save, then copy the file
from that game’s
exports/<game>/folder via MTP / SD / FTP.
Do not put .sav files into git. Prefer clean copies — some MTP clients
create ._*.sav AppleDouble sidecars that are not real saves.
Controls
Gameplay
| Control | Action |
|---|---|
| D-pad / left stick | Move |
| A | Confirm |
| B | Cancel |
| + (Start) | Start |
| − (Select) | Select |
| R (no Select held) | Cycle game speed up |
| L (no Select held) | Cycle game speed down |
Launcher
| Control | Action |
|---|---|
| D-pad / left stick | Move virtual cursor |
| A | Click at cursor |
| L / R | Previous / next tab |
| Start / Select | Play if a ROM is ready; otherwise Choose ROM |
System
| Control | Action |
|---|---|
| Hold R on HOME, then open from hbmenu | Title override (full memory) |
Community mods
Mods install from a zip inbox (same transfer methods as ROMs):
- Copy a release
.zipinto the save-dirimports/mods/path the launcher shows (MTP / SD / FTP — switch-transfer.md). - In the launcher, open MODS → Scan again → enable the mod → Play.
Remote FIND MODS / GitHub download stays off on Switch. Do not put mod zips into git. Community mods ship their own OPTIONS / rebinds — this port does not document third-party control tables.
Joy-Con shortcuts (Select + face)
Hold Select (−) and press a face/shoulder button. Without Select, A/B stay
normal gameplay confirm/cancel. These chords are the stock engine display
hotkeys (2/3/5 are claimed before any mod pipeline hotkey runs).
| Chord | Same as PC key | Stock engine effect |
|---|---|---|
| Select + A | 2 |
COLORS |
| Select + B | 3 |
TILT |
| Select + Y | 5 |
GBC FX |
| Select + X | 6 |
Mod pipeline hotkey (if a mod registers 6) |
| Select + L | 7 |
Mod pipeline hotkey (if a mod registers 7) |
If the handheld stutters with extras on, try OPTIONS → PERFORMANCE →
LOW or BALANCED.
Limitations
- Homebrew required — custom firmware and hbmenu; this project does not help set that up.
- Title override required — hold R when launching a title for full memory. Applet Mode (Album) is not supported.
- Manual file transfer — ROMs, mods, and saves are copied via MTP, direct SD, or FTP; there is no automated deploy.
- No LÖVE self-updater — in-console updates use the native OTA launcher only. Remote FIND MODS / GitHub download stays off on Switch.
- Hardware — tested on Switch OLED; Switch V1 / Erista boot confirmed by the community. Other models may work but are less tested.
Prefer building it yourself?
Building the fused NRO (and SD-ready zip) from source is covered in switch-build.md. Copying artifacts and inbox files (MTP / SD / FTP on macOS, Linux, Windows): switch-transfer.md.