Play Windows PC games on your Nintendo Switch.
Previously called Wine-NX.
Autorun is a homebrew app that runs Windows games and programs on the Switch. It brings Wine - the layer that lets Windows software run outside Windows - to the Switch's own operating system, and translates PC code for the Switch's ARM processor. You bring the games: copy your own PC copies to the SD card and start them from Autorun's library.
- 32-bit and 64-bit games. FEX translates both x86 and x64 code; Box64 is there as a second translator for 32-bit programs.
- The Switch's GPU. OpenGL and Vulkan come from Mesa 26 (mesa-switch), and Direct3D 8 to 11 run through DXVK, Direct3D 12 through VKD3D-Proton.
- Frame generation with LSFG-VK, for Vulkan games, with your own copy of Lossless Scaling.
- The Windows DLLs games need are downloaded and kept up to date by the app.
- USB drives show up in games as drives D: to H:.
- A launcher with artwork, per-game settings, controls and HOME menu shortcuts for games.
Autorun is experimental. Some games run well, many start and then stop on something that isn't done yet. Every run writes a log that says where. A game compatibility list is coming.
- A Nintendo Switch with custom firmware (Atmosphère) that can run homebrew.
- A microSD card with room for Autorun, its Windows DLLs (about 200 MB to download) and your games.
- Your games, as installed PC folders.
-
Download the latest
autorun-NNN.zipfrom Releases. -
Unzip it to the root of your SD card. Everything goes into
switch/wine. -
Start Autorun from the Homebrew Menu. Quick setup runs the first time:
- puts Autorun on the HOME menu, so games get the console's full memory;
- downloads the Windows DLLs from autorun-horizon-dlls;
- installs the boot changes some games need: a Mesosphere build that lets a game run at low memory addresses, with the stock loader or Horizon-OC's for overclocking.
Settings -> System -> Quick setup runs it again.
Without a network, download that repository (Code, Download ZIP) and unzip its
switch folder to the root of the SD card too.
Settings -> System -> Check for update installs a newer release; your games, settings and artwork stay. Settings -> System -> Windows DLLs downloads only the DLLs that changed, and Verify files checks the card's copies.
- Copy the game's folder into
switch/wine/drive_con the SD card (that folder is the game'sC:drive), or onto a USB drive. - In Autorun, press + -> Add game and choose the game's
.exe. - Press A to play.
Adding a game gives it DXVK, which draws Direct3D through the Switch's Vulkan driver. To keep new games on Wine's own Direct3D, turn off Settings -> Give a new game DXVK.
Before the first program on a card, Autorun sets up the Windows components a PC's Windows installation would have registered, such as DirectShow and the MP3 decoder that game movies and music play through. It runs by itself, once.
| Button | What it does |
|---|---|
| A | Play the selected game |
| Y | The game's options |
| L / R | Switch between Home (recently played) and the Library |
| − | Settings (on Home), filter and sort (in the Library) |
| + | Add a game, run a program once without adding it (a setup, a patch), or exit Autorun |
The touchscreen works everywhere too.
A game's options (Y):
- mark it as a favorite or hide it, change its title, give it command-line arguments, and download its artwork;
- make a HOME menu shortcut that starts it directly;
- pick how its graphics are drawn (Wine's Direct3D or DXVK), how a picture smaller than the screen is enlarged (FSR 1.0, or whole-pixel steps for pixel art), and Frame Generation;
- pick the CPU translator (FEX or Box64), and give it its own controls.
Settings (−): show hidden games, the controls every game uses by default, a SteamGridDB API key for artwork, returning to Autorun when a game ends, updates, the Windows DLLs, and the credits.
LSFG-VK doubles the frame rate of Vulkan games (DXVK and VKD3D-Proton count) by
drawing a frame between each two the game draws. It needs Lossless Scaling's
Lossless.dll, which Autorun does not include: copy it from your own
installation to switch/wine/lsfg/Lossless.dll, then turn on LSFG-VK (2x) in
the game's Frame Generation options.
Out of the box the controller works as a mouse and keyboard:
| Control | Sends |
|---|---|
| Right stick, or a finger on the screen | Moves the mouse pointer |
| A / B | Left / right mouse button |
| D-pad, left stick | Arrow keys |
| + | Esc |
| X, Y | Space, F |
| L, R | Tab, Shift |
Every button can be changed: Settings -> Game defaults -> Controls for all games, or a game's options (Y) -> Controls for that game alone. Each stick, the d-pad and the touchscreen can move the mouse or send the arrow keys or W A S D. Games with controller support see an Xbox 360 controller, through XInput or DirectInput.
Hold + and − together for a second to close a game.
Minus + right stick click opens the on-screen keyboard over the game (it also opens by itself when a text field is selected; Settings -> On-screen keyboard turns that off). It types like a real keyboard, one key at a time:
| On the keyboard | Does |
|---|---|
| D-pad, left stick | Move between keys |
| A, or tap a key | Press it |
| B | Backspace |
| Y / X | Space / Shift for the next key |
| L, R | Cursor left, right |
| + | Enter |
| ZL, ZR | Keyboard to the top, back to the bottom |
| − | Close it |
While it is open, the game gets no controller input.
Every run leaves its logs in switch/wine/logs on the SD card:
autorun_runtime.log- the last run, whatever it was.NAME.log- the last run of that game, kept per game. A run with verbose traces or the profiler on gets its own file, such asNAME_verbose.log, so it doesn't replace the plain one.stdout.txt,stderr.txtandstdin.txt- the program's standard output, error and input.
When reporting a problem in Issues, include the game's log and say what you saw. Verbose traces in the game's options gives more detail, at some speed cost.
- Speed: demanding 3D games are limited by translating the game's code on the fly, more than by the graphics chip.
- Memory: games share the Switch's 4 GB with the system; big games can run out.
- One game at a time, one controller.
- A game may need Windows files the card doesn't have yet; the log names them.
sh build.shbuilds Autorun in the switch-dev
Docker image and writes the SD card archive to
horizon-wine/build-autorun/autorun-NNN.zip. It needs Docker, git, Python 3
and, on a Mac, Homebrew's bison. sh build.sh --help lists the options. How
Autorun works, its tests and its file layout are in
documentation/technical.md.
Autorun is built from these projects; each keeps its own copyright and license.
| Project | License | Used for |
|---|---|---|
| Wine | LGPL-2.1-or-later | The Windows API, loader and graphics layers; this repository is a Wine fork |
| FEX | MIT | Running 32-bit and 64-bit x86 code |
| Box64 (ptitSeb and contributors) | MIT | Running 32-bit x86 code |
| DXVK | zlib/libpng | Direct3D 8 to 11 over Vulkan |
| VKD3D-Proton | LGPL-2.1-or-later | Direct3D 12 over Vulkan |
| Mesa and mesa-switch | MIT (mostly) | OpenGL and Vulkan on the Switch's GPU |
| LSFG-VK | GPL-3.0-or-later | Frame generation |
| libusbhsfs | ISC | USB drives |
| Atmosphère and Horizon-OC | GPL-2.0 | The boot changes Quick setup installs |
| libnx and devkitPro | ISC, per component | The Switch system library and toolchain |
| SDL2, SDL2_ttf, FreeType, HarfBuzz, libpng, zlib | zlib, FTL, MIT, libpng | The launcher |
| dolphin-nx (NaGaa95) | GPL-2.0-or-later | The look of the launcher, which is Autorun's own code |
The full list, with authors and the projects used as reference, is in documentation/technical.md.

