Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Revision as of 02:44, 26 June 2026 by HydeWing (talk | contribs) (Screenshots)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
FlashNX
General
AuthorJonathan8520
TypeOther Apps
Version1.4.0
LicenseMIT License
Last Updated2026/06/25
Links
Download
Website
Source

FlashNX is a 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.

Installation

Modded Switch with Atmosphère required.

Install via Homebrew App Store (easiest):

  • Open the hb-appstore app on your Switch.
  • Search for FlashNX, install. Updates follow automatically.

Or manually:

  • Download FlashNX.nro from the Releases.
  • 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.

User guide

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.

Tested games: (most run at 55-60 fps)

  • Super Mario 63
  • Super Mario World Flash
  • Mario Forever
  • Tetris'd
  • Flappy Bird
  • Pursuit of Hat 2
  • Mario 3D Racing…

Controls

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) 

Minus - Search (filter by name) 

Plus - 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 

Plus (Add a URL row) - Enter a new one 

Plus (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; Plus key 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

Minus - Pause menu

Clicking a text field opens the keyboard.

The control editor remaps everything to any Flash key or mouse click, and can turn the Right Stick into a D-Pad (it also covers SL/SR and the stick presses).

Screenshots

FlashNX2.png

FlashNX3.png

FlashNX4.png

FlashNX5.png

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).

Changelog

v1.4.0 2026/06/25

  • Added
    • Community control profiles: share your key bindings for a game and download other players' setups (#20). In a game's options (+), pick "Share my controls" to publish your profile, or "Apply a profile" to browse what the community has shared for that game and try it; applying a profile is non-destructive and can be reverted. Profiles you shared can be deleted again. Verified and most-applied profiles sort to the top.
    • More languages: German, Italian, and Brazilian Portuguese join the menus, plus Simplified Chinese (#41) rendered from the Switch's own shared font.
    • Numpad keys in the controls editor: the editor now offers Num0–Num9 (the numeric keypad), listed first, for games that read keypad keys separately from the top-row digits. Player 2 defaults to the numpad.
  • Fixes
    • Flashpoint games with a non-ASCII title now import and launch: a game whose file name uses non-Latin characters (for example 包丁少女幻窓曲) failed to download with an error -2. Its address is now encoded correctly. (#51)
    • Flashpoint games that load their assets on the fly now play: some games build the paths to their data and art files while running, so those files could not be fetched ahead of time and the game stayed on a blank screen (for example Racing is Magic). Missing files are now pulled from the Flashpoint mirror on demand and cached, for games imported from the Flashpoint search. (#51)

v1.3.1 2026/06/19

  • Added
    • Local two-player (two controllers): a second controller now drives Player 2 through its own set of key bindings, for Flash games where two players share one keyboard (for example Fireboy & WatergirlDragon Ball Z Devolution). The controls editor has a Player 1 / Player 2 toggle (press X), and both players' keys are saved per game. Player 2 defaults to WASD so it does not clash with Player 1's arrows. Needs two full controllers (a Pro controller or a Joy-Con pair each). (#40)
    • Touch controls in the launcher: in handheld mode you can drag the game gallery to scroll, tap a game to select it, and tap it again to launch it.
    • Flashpoint content filter toggle: press ZL+ZR in the Flashpoint search results to turn the content filter on or off. Importing a game also fetches its cover automatically. (#33)
    • Download of non-zipped Flashpoint games: games served loose (not as a single archive) now download through the htdocs mirror. (#26)
  • Fixes
    • Super Smash Flash: the announcer now plays, and the game no longer freezes on a blank screen after a fight instead of showing COMPLETE. Its voices and most of its sound effects use the Nellymoser audio format, which was not enabled. (#29)
    • No more crash when some games save: a game saving a self-referential object (for example Hemp Tycoon) used to crash the app. The save now completes. (#33)
    • Color speckle on translucent effects fixed: semi-transparent effects (for example the smoke in Offroaders) showed cyan and magenta speckle. (#38)
    • Flashpoint games with a space in their name now launch the right file instead of the first one found in the archive.
    • The "&" character now shows in the menus: it was missing from the UI font, so titles like "Fireboy & Watergirl" dropped it.

v1.3.0 2026/06/14

  • Added
    • Multi-file game support: a game that loads other .swf files at runtime (loadMovie / loadMovieNum into a level) now finds them in a <game>.files/ folder next to the .swf. Download a game from the Flashpoint search (X) and its companion files are fetched automatically; for a game added another way, drop the companions in that folder yourself. Garfield's Scary Scavenger Hunt now plays from start to finish.
    • Multi-file indicator: the launch screen shows a "MULTI-FILE (N)" label when a game pulls in companion files, so you can tell at a glance.
    • Flashpoint downloads now bring the whole game: a download from the Flashpoint search now unpacks the game's full bundled set of files (alternate versions, ad-network stubs, data files) and launches the exact version the archive intends, instead of guessing. Games that used to get stuck on a sponsor or "Download the latest Adobe Flash Player" screen (for example Papa Louie 2: When Burgers Attack) now start and play.
    • In-game keyboard: when a Flash game wants text (a player name, a level password, high-score initials, a text adventure), the Switch keyboard opens when you click the text field, pre-filled with its current text and set to the right type (numbers, password, multi-line). Games that were unplayable with a controller alone now work.
    • Favorites: in a game's options (+), mark it as a favorite. Favorites are pinned to the top of the Play gallery with a gold marker, whatever the sort order.
    • Assignable mouse clicks: the controls editor now has Left click and Right click actions you can bind to any button. By default ZR is left click and ZL is right click. The touchscreen still left-clicks.
    • More mappable inputs: SL / SR (Joy-Con side buttons), the stick presses (L3 / R3), and the right stick as a d-pad (bind its directions and it stops being the mouse cursor; the touchscreen stays the cursor).
    • Much faster Flashpoint downloads: downloads now batch their writes to the SD card and pump the network harder, turning what used to be a roughly two-minute download into about ten seconds for a large game.
    • Home-menu shortcuts for a single game: FlashNX can now be launched straight into one game when its .swf path is passed as a launch argument — it skips the library and returns to the Home menu when you quit. With a homebrew forwarder tool this lets you put a specific Flash game on your Switch Home menu, with its own cover as the icon. If you use Sphaira, FlashNX registers a .swf association on launch, so you can pick a .swf in its file browser, choose "Create a Forwarder", select FlashNX, and the shortcut boots straight into that game.
  • Fixes
    • Buttons mapped to letter or number keys now trigger games that read them as keyboard shortcuts: a controller button bound to a letter (or a digit or space) now fires a game's keyboard shortcuts, not just its held-key checks. For example Scooby-Doo: Mayan Monster Mayhem (H for help, S/T to switch the held item) now responds; before, only movement and pickup worked.
    • Deleting a game also removes its <game>.files/ companion folder and its favorite mark, so nothing is left behind on the SD card.
    • Games that rendered as a blank white screen now display correctly: very art-heavy games (thousands of on-screen vector shapes at once, for example The Binding of Isaac) exhausted the renderer's geometry buffers, which silently dropped the extra shapes and left most of the game invisible behind a few stray text glyphs. The buffers are now much larger, and a buffer overflow is reported instead of failing silently. (#16, #23)
    • Large multi-file games now download and run: big Flashpoint games (over the old 64 MB download limit, loading dozens of companion files by relative path, for example Super Brawl 2) used to show a full download bar and then do nothing, or launch to a black screen. They now extract fully and run. This took a few fixes: a larger download limit, launching the game under its original URL so its relative asset loads resolve, and doing the extraction and asset reads through the C++ filesystem layer (the Rust one drops some files on the Switch).

v1.2.1 2026/06/11

  • Fixes
    • PixelBender games no longer crash: some games build a Flash Shader / ShaderFilter at runtime (for example The Terminal). They used to abort the app the moment the shader was created. They now run normally; the shader's visual effect itself is skipped (this renderer does not run PixelBender), but gameplay and input work. As a bonus, crash messages from the game thread are now captured to the crash log instead of being lost.
  • Changes
    • Clearer bug reports: a report now includes the game's import URL when it was added from a link, so a game imported under an arbitrary filename can still be identified. The report also reminds you that it opens a public issue on the FlashNX repository, and you can add your GitHub handle if you want a follow-up.

v1.2.0 2026/06/10

  • Features
    • Tabbed navigation: a top navbar switched with L / R between Play (your games), Import, and Settings.
    • Cover gallery: the Play tab is a grid of cover art, 5 per row (covers are cropped to fill the tile). Games with no cover get a generated tile (color + initials).
    • Your own covers: drop a <game>.png or .jpg next to the .swf and it shows up as the cover.
    • Flashpoint covers: a game's options has a Cover action that searches the Flashpoint Archive by name and shows the candidates as thumbnails to pick from. The search name is cleaned up automatically (download-id suffixes such as game-15938d603 are dropped), and  lets you retype the title when the filename does not match the catalog (for example catmario to cat mario).
    • Download games from Flashpoint: in the Import tab, X searches the Flashpoint Archive and shows the results as a cover grid; A downloads a game's .swf directly. Its cover is fetched automatically, and its real title is kept even when the filename cannot hold characters like :. Press + on a result to see its full title, developer, publisher, release date and download size.
    • Import as a list: the Import tab is a list of your saved URLs. Press A to launch one, use the + Add a URL row to enter a new one, and + on a URL to edit or delete it. It accepts archive.org items and direct .swf URLs.
    • Sort your library (Y in the Play tab): by name, date added, last played, most played, or size. X reverses the order, and the choice is saved.
    • Playtime: each game tracks how long you have played it (shown under the selected game, and used by the "most played" sort).
    • Report a bug or send a suggestion (Settings tab): flag a game that renders or plays wrong, or send a feature idea. It opens an issue on the FlashNX repository, with no account and no login.
  • Changes
    • Controls is search, + is the selected game's options; default controls, language, bug report, suggestion and Quit all live in the Settings tab. Switching tabs is L / R only, and B always just backs out of a modal (the redundant "Back" rows were removed).
    • Audio level: the in-app sound now matches the rest of the Switch (it used to be noticeably louder).
  • Fixes
    • Large backgrounds no longer turn white: games whose backdrop or floor is a bitmap wider or taller than 2048px (for example Mario Combat's sky and ground) used to render as solid white blocks. They now draw correctly.
    • Deleting a game cleans up everything: removing a game now also deletes its cached online cover and the cover sidecars saved under the plain game name (on top of the .swf and its keymap/rename/save files), and clears the leftover Import-list "downloaded" badge and the on-screen cover, so re-importing the same game later starts fresh.
    • Flashpoint cover grids no longer freeze the UI: logos load in the background, so a broad search with dozens of results stays responsive while the thumbnails fill in.
    • Missing accents restored on several labels (the sort options, "edit", "download").
  • Notes
    • Covers and downloads use the public Flashpoint Archive APIs (metadata, logos, GameZIP). Downloading a game is always something you choose, one game at a time.
    • Bug reports and suggestions are anonymous: they go through a small relay that opens a GitHub issue, so you never need an account or to log in.

v1.1.1 2026/06/05

  • Fixes
    • URL history no longer disappears in applet mode: history (and saves, settings, renamed-game sidecars) is now read with a bounded reader and committed to the SD card after every write, so it survives switching between applet (album takeover) and full title-takeover modes. Previously the history could read empty in applet mode, or get overwritten by the next change.
    • HTTPS import errors are now readable: a failed import shows the real cause (libcurl code and message, HTTP status) instead of an opaque "code -2", so you can tell whether it is the console clock, DNS, the certificate bundle, or a blocked link.
  • Features
    • Search the local library: press X to filter the game list by name (empty input clears the filter), the same way the archive.org screen already works.
    • Clear applet-mode notice: trying to launch a game without the full app memory now shows a readable message ("launch via title takeover") instead of a red screen.
  • Changes
    • More consistent controlsX is search on every list, and ZL manages the selected item (game options in the library, delete URL in the import history). The on-screen footers reflect the new layout.
    • The default example URL is now a neutral placeholder.

v1.1.0 2026/06/04

  • Features
    • Settings modal (+ in the library): a new global settings screen with two entries — default controls (edit the global default keymap used by every game without a per-game override) and language.
    • URL history management: in the archive.org import screen, X removes the currently-shown URL from the history (with a confirmation modal).
    • Quit returns to the right row: leaving a game (pause menu → QUIT) lands the cursor back on the game you were playing, instead of jumping to the top of the list.
    • Pause menu shows the game's name under "PAUSE" (like the OPTIONS modal).
    • Library shows 8 games at once (was 6).
  • Notes
    • The chosen language is persisted to sdmc:/flashnx/settings.json.
    • Flash key names (SpaceShiftAZ) are technical identifiers and remain untranslated; only UI labels and messages are localized.
    • Opening the settings modal returns to the previously-selected game row (like the OPTIONS modal).

v1.0.0 2026/05/31

  • First official release. FlashNX runs AS1/AS2 Flash games (and part of AS3) straight from your Switch's SD card.

Credits

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

Core

  • Ruffle — Apache-2.0 / MIT — Flash engine (SWF parsing + AVM1/AVM2 interpreter). FlashNX embeds ruffle_coreruffle_renderswf.
  • devkitPro / libnx — ISC — Switch toolchain + Horizon API (audio audren, input hid, threads, exception handler).
  • switch-mesa — MIT — 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-arenadasp…).

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), Ticodawn-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.

External links

GitHub - https://github.com/Jonathan8520/FlashNX

Advertising: