You do not have permission to edit this page, for the following reason:
Free text:
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 [https://github.com/ruffle-rs/ruffle Ruffle]. == Installation == Modded Switch with Atmosphère required. Install via [[Homebrew App Store Switch|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 [https://github.com/Jonathan8520/FlashNX/releases Releases]. * Copy it to <code>sdmc:/switch/FlashNX/FlashNX.nro</code> (the Homebrew Menu also accepts a loose <code>sdmc:/switch/FlashNX.nro</code>). Either way: copy your .swf files into <code>sdmc:/flashnx/</code>, 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 <code><game>.png</code> or <code>.jpg</code> next to the <code>.swf</code> 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 <code>.swf</code> files (a title screen, a minigame, music). When you download a game from the '''Flashpoint search (X)''', FlashNX fetches these companions automatically into a <code><game>.files/</code> folder. For a game added another way (URL import, hand-copied), put the companions in that folder yourself (so <code>Foo.swf</code> uses <code>Foo.files/</code>, and <code>Foo.swf</code> loading <code>top.swf</code> reads <code>Foo.files/top.swf</code>). '''Home-menu shortcuts''' - launch FlashNX with a <code>.swf</code> 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 <code>.swf</code> association, so you can select a game in Sphaira's file browser and "Create a Forwarder" > FlashNX. '''Automatic saves''' for games that save (SharedObject <code>.sol</code>), 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 <code>.swf</code> 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 == https://dlhb.gamebrew.org/switchhomebrews/images/FlashNX2.png https://dlhb.gamebrew.org/switchhomebrews/images/FlashNX3.png https://dlhb.gamebrew.org/switchhomebrews/images/FlashNX4.png https://dlhb.gamebrew.org/switchhomebrews/images/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 [https://ruffle.rs/compatibility 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 <code>.sol</code> 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 & Watergirl'', ''Dragon 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 <code>.swf</code> files at runtime (<code>loadMovie</code> / <code>loadMovieNum</code> into a level) now finds them in a <code><game>.files/</code> folder next to the <code>.swf</code>. 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 <code>.swf</code> 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 <code>.swf</code> association on launch, so you can pick a <code>.swf</code> 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 <code><game>.files/</code> 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 <code>Shader</code> / <code>ShaderFilter</code> 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 <code><game>.png</code> or <code>.jpg</code> next to the <code>.swf</code> 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 <code>game-15938d603</code> are dropped), and '''−''' lets you retype the title when the filename does not match the catalog (for example <code>catmario</code> to <code>cat mario</code>). ** '''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 <code>.swf</code> directly. Its cover is fetched automatically, and its real title is kept even when the filename cannot hold characters like <code>:</code>. 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 <code>.swf</code> 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 <code>.swf</code> 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 controls''': '''X''' 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 (<code>+</code> 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 <code>sdmc:/flashnx/settings.json</code>. ** Flash key names (<code>Space</code>, <code>Shift</code>, <code>A</code>…<code>Z</code>) 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''' * '''[https://github.com/ruffle-rs/ruffle Ruffle]''' — ''Apache-2.0 / MIT'' — Flash engine (SWF parsing + AVM1/AVM2 interpreter). FlashNX embeds <code>ruffle_core</code>, <code>ruffle_render</code>, <code>swf</code>. * '''[https://devkitpro.org/ devkitPro] / libnx''' — ''ISC'' — Switch toolchain + Horizon API (audio '''audren''', input '''hid''', threads, exception handler). * '''[https://github.com/devkitPro/pacman-packages switch-mesa]''' — ''MIT'' — OpenGL/GLES via Nouveau, the graphics backend. '''Game & cover data''' * '''[https://flashpointarchive.org/ 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)''' * [https://curl.se/ libcurl] · [https://github.com/Mbed-TLS/mbedtls Mbed-TLS] · [https://zlib.net/ zlib] · [https://curl.se/docs/caextract.html Mozilla] CA certificate bundle. '''Rust libraries''' * [https://github.com/image-rs/jpeg-decoder jpeg-decoder] (fork patched for newlib) · <code>png</code> · <code>serde</code> / <code>serde_json</code> · <code>tracing</code> · <code>flate2</code> · <code>getrandom</code> · + Ruffle's transitive dependencies (<code>gc-arena</code>, <code>dasp</code>…). '''Acknowledgements''' - Switch homebrew ecosystem projects consulted during the port's R&D (no code reused): [https://www.scummvm.org/ ScummVM] (<code>OSystem</code> port pattern), the PPSSPP Switch port (switch-mesa GL reference), [https://github.com/ticohq/tico Tico], [https://github.com/dantiicu/dawn-switch dawn-switch] ''(the WebGPU alternative we evaluated)'', and the devkitPro / GBAtemp community. '''License''': the FlashNX integration code is distributed under the '''MIT''' license (see [https://github.com/Jonathan8520/FlashNX/blob/main/LICENSE <code>LICENSE</code>]). Ruffle and the other dependencies keep their respective licenses. == External links == GitHub - https://github.com/Jonathan8520/FlashNX
Advertising: