Skip to content

Jonathan8520/FlashNX

Repository files navigation

FlashNX

Homebrew Flash player for Nintendo Switch.
Run your Flash games (.swf — AS1/AS2, and part of AS3) straight from the SD card.
Powered by Ruffle.

Homebrew App Store Release Platform License

The repo, the toolchain and the Rust crate keep the historical name flash-for-switch; FlashNX is the application name (what hbmenu and the .nro show).

Overview

Play Flashpoint In game Settings
FlashNX library Flashpoint download In game + pause menu Settings
Cover gallery, L/R tabs Download games from Flashpoint Game + pause menu / key editor Language, controls, bug report

Installation

Easiest — via the Homebrew App Store: open the hb-appstore app on your Switch, search for FlashNX, install. Updates follow automatically.

Or manually:

  1. Download FlashNX.nro from the Releases.
  2. Copy it to sdmc:/switch/FlashNX/FlashNX.nro (the Homebrew Menu also accepts a loose sdmc:/switch/FlashNX.nro).

Either way: copy your .swf files into sdmc:/flashnx/, then launch FlashNX from the Homebrew Menu.

(Modded Switch with Atmosphère required.)

Usage

In the library L / R = switch tabs (Play / Import / Settings) · D-pad or sticks = move in the cover gallery · A = play · Y = sort (name / added / played / size, X reverses) · = search (filter by name) · + = game options (favorite, controls, rename, cover, delete). Favorites stay pinned to the top of the gallery. Quit, plus bug report and suggestions, from the Settings tab.

Import tab A list of your saved URLs · A = launch one · + Add a URL row to enter a new one · + on a URL = edit or delete it. Accepts archive.org items and direct .swf URLs. X searches the Flashpoint Archive and downloads a game (cover and real title included; + on a result shows its details + download size).

In game Left stick / D-pad = arrows · A/B/X/Y = Flash keys (remappable) · right stick = mouse cursor · ZR / touch = left click, ZL = right click · clicking a text field opens the keyboard · = pause menu. The control editor picks any Flash key (letters, digits, arrows, F1-F12, symbols, numpad) or mouse click from a visual keyboard, and can turn the right stick into a d-pad (it also covers SL/SR and the stick presses). For games that need more inputs than the pad has buttons, a combo layer lets you hold one shoulder button (the modifier) so every other button sends a second key, e.g. ZL + A sends F1. In the editor, L/R move a sub-tab across NORMAL / ZL / ZR / L / R: NORMAL edits the base bindings, and picking a modifier (ZL/ZR/L/R) edits that player's combo layer (rows then read ZL+A, etc.). X switches the Player 1 / Player 2 tab (each has its own combo layer).

  • Cover art: the library is a grid of covers, 5 per row (cropped to fill). Drop a <game>.png or .jpg next to the .swf to set one, or fetch artwork from the Flashpoint Archive in a game's options (pick from thumbnails).
  • Multi-file games: some games load companion .swf files (a title screen, a minigame, music). When you download a game from the Flashpoint search (X), FlashNX fetches these companions automatically into a <game>.files/ folder. For a game added another way (URL import, hand-copied), put the companions in that folder yourself (so Foo.swf uses Foo.files/, and Foo.swf loading top.swf reads Foo.files/top.swf).
  • Home-menu shortcuts: launch FlashNX with a .swf path as its argument and it boots straight into that game (and returns to the Home menu when you quit). With a forwarder tool you can put a single Flash game on your Switch Home menu, with its cover as the icon. Sphaira users: FlashNX registers a .swf association, so you can select a game in Sphaira's file browser and "Create a Forwarder" → FlashNX.
  • Automatic saves for games that save (SharedObject .sol), on the SD card.
  • Built-in key editor (48 Flash keys, configurable per game), plus a global default layout in the Settings tab.
  • Languages: English, French, Spanish, Russian, German, Italian, Portuguese, Chinese (Simplified, rendered from the console's own shared font), auto-detected from the console's system language, switchable from the Settings tab.

Tested games

Super Mario 63 · Super Mario World Flash · Mario Forever · Tetris'd · Flappy Bird · Pursuit of Hat 2 · Mario 3D Racing… Most run at 55-60 fps.

Known limitations

  • Heavy games: frame-rate drops come from Ruffle's AVM1/AVM2 interpreter (CPU-bound, no JIT) — not from our rendering. Out-of-app lever: CPU overclock (sys-clk).
  • AS3 compatibility: partial, inherited from Ruffle (see Ruffle compatibility). AS3 games show a badge in the library.
  • No savestate / rewind: Ruffle does not expose a snapshot of the execution state. Games' native .sol saves do work.
  • Audio: occasional light crackle on very dense scenes (to be refined).

Credits & licenses

FlashNX is only a Switch integration layer on top of remarkable projects — all credit for the Flash emulation goes to Ruffle.

Core

  • RuffleApache-2.0 / MIT — Flash engine (SWF parsing + AVM1/AVM2 interpreter). FlashNX embeds ruffle_core, ruffle_render, swf.
  • devkitPro / libnxISC — Switch toolchain + Horizon API (audio audren, input hid, threads, exception handler).
  • switch-mesaMIT — OpenGL/GLES via Nouveau, the graphics backend.

Game & cover data

  • Flashpoint Archive: the Flash game preservation project. FlashNX uses its public APIs (search, logos, GameZIPs) so you can find cover art and download the games you choose. All preserved games stay the property of their original creators, and FlashNX only fetches what you explicitly request.

Network (archive.org import over HTTPS)

Rust libraries

  • jpeg-decoder (fork patched for newlib) · png · serde / serde_json · tracing · flate2 · getrandom · + Ruffle's transitive dependencies (gc-arena, dasp…).

Acknowledgements — Switch homebrew ecosystem projects consulted during the port's R&D (no code reused): ScummVM (OSystem port pattern), the PPSSPP Switch port (switch-mesa GL reference), Tico, dawn-switch (the WebGPU alternative we evaluated), and the devkitPro / GBAtemp community.

License: the FlashNX integration code is distributed under the MIT license (see LICENSE). Ruffle and the other dependencies keep their respective licenses.


📖 Architecture, build & technical notesDEVELOPMENT.md 📦 ChangelogCHANGELOG.md

About

Homebrew Flash player for Nintendo Switch (.nro). Play your .swf games from the SD card. Powered by Ruffle.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages