rpynx v0.1.0pre-release

Nintendo Switch homebrew · Ren'Py 8.5.3 · CPython 3.12

rpynx

Play Ren'Py games on Switch

A loader for the Nintendo Switch that runs legally obtained, DRM-free Ren'Py games from the SD card, with a desktop importer and a remappable controller system.

Unofficial homebrew. Not affiliated with Ren'Py or Nintendo.

Project status

Updated 2026-10-22

6 of 9 stages done. Now: M7 · second hardware round.

  1. M1
  2. M2
  3. M3
  4. M4
  5. M5
  6. M6
  7. M7
  8. TX
  9. M8
  • M1 Toolchain Done Loader and runtime chain-load each other on a Switch (run 1)
  • M2 Input system Done Menus, D-pad, A and the cursor work on a Switch; touch, docked play and reconnect are unverified
  • M3 Python runtime Done Static CPython 3.12.8; self-test passes 66/66 required imports on a Switch (runs 4, 20)
  • M4 Ren'Py engine Done Ren'Py 8.5.3 runs The Question (run 5) and a recompiled Ren'Py 7 game (run 13)
  • M5 Importer Done Its export of The Question launched on a Switch (run 9)
  • M6 Gameplay reliability Done Relaunch, sleep, error dialog, saves, remaps and the emergency combo verified (runs 22–27)
  • M7 Game library (LVGL) In progress First hardware test done 2026-10-22; second round pending; covers and Change picture host-tested only
  • TX Transfer Planned FTP server in the loader, then USB
  • M8 Release validation Planned Not started

Verified on a Switch

  • Loader and runtime chain-load both waysrun 1
  • Python self-test, 66/66 required importsrun 4, 20
  • Ren'Py 8.5.3 renders with GLES 3.2 and quits cleanlyrun 5
  • Importer export launches from the libraryrun 9
  • Three games in a row in one processrun 12
  • Ren'Py 7 game recompiled on the consolerun 13
  • Music and sound, also from an .rparun 21
  • Quit, then start another game without a crashrun 24
  • Error dialog, link notice, overlapping buttonsrun 25
  • Save and load back to the same line; remap used in a gamerun 26
  • Emergency combo saved for the loader; applet mode refusedrun 27

Not verified on hardware yet

  • Covers, backgrounds and Change pictureHost-tested
  • The LVGL loader's second round of changesHost-tested
  • No cursor after touch; game menus open on their side menuDesktop only
  • Touch, docked play, controller reconnectHW unverified
  • Smooth video playbackHW unverified
  • Importer on Windows (tested with Windows faked on macOS)Desktop only

Full record: statuses and test runs.

What rpynx is

rpynx is three programs that work together:

  • The loader (renpy-loader.nro) is the game library on the Switch. It lists your games with their covers, checks that each one can start, and holds the controller settings.
  • The runtime (renpy-runtime.nro) is the engine: a static CPython 3.12.8 with the official Ren’Py 8.5.3 built in. The loader hands a game to it, and it returns to the loader when the game quits.
  • The importer runs on macOS or Windows. It checks a game, writes a manifest.json that tells the loader what the game needs, and copies it to the SD card or uploads it to the Switch over Wi-Fi.

rpynx contains no game assets and no Nintendo SDK material, and it does not circumvent DRM. Use only games you own in DRM-free form.

important

rpynx is a work in progress, and nothing has been released yet. Every claim about the console in these docs names the hardware run that checked it. Anything without a run number has been tested on a desktop or not at all.

Documentation

↑↓ move↵ openesc close