by K0NL
B2recomp (short for Bayonetta 2 Recompiled) is an unofficial static recompilation of Bayonetta 2 (Nintendo Switch) for Windows. It translates the Switch version's AArch64 program code to C on your own PC, from your own legally dumped copy of the game, and runs it natively on Windows with a re-implemented system layer (threads, file system, audio, input, and the NVN graphics API on Vulkan).
It is not an emulator (no CPU interpreter, no JIT) and it is not a way to get the game.
This repository contains no game code, no game assets, no Nintendo SDK code, no firmware, no system fonts and no encryption keys, and it does not tell you where to get any of them. It cannot do anything without a copy of the game you dumped yourself from a console and a game you own. Everything derived from the game (the translated code, the compiled game DLL, icons, shaders, textures) is generated on your PC from your dump and must stay there. Please do not share it, and do not open issues asking for it.
Measured on the developer's PC (Windows 11, 16 threads, a Vulkan 1.3 GPU):
| What | Result |
|---|---|
| Title screen, attract sequence, new game | runs |
| Prologue (cutscenes, chapter card, first fights) | played through: 900 s, no crash, every system call the game makes handled |
| Chapter 1 with a controller (DualSense, Xbox, Switch Pro and other SDL3 pads) | played by hand past the first part |
Standard test run (scripts/bench.py: tutorial and the first fight, scripted) |
59.5 fps (the display rate), 0 faults |
| Later chapters | being played and tested |
| Other PCs, GPUs, Windows 10 | not tested yet |
Expect bugs. Builds are compared with a scripted test run (python scripts/bench.py, see BUILDING.md).
There is no prebuilt game, no game.dll, no game_native.exe to download, and there never will be: the game is
translated and compiled on your PC, from your files. What you can download is this source code, either alone or as
the builder package: the same source plus the free tools the build needs, so you install nothing.
- Your own extracted copy of Bayonetta 2, version 1.2 (update v131072) applied (the ExeFS and RomFS as plain files; see
BUILDING.md). The build checks that it is exactly that version
and explains a mismatch. Encrypted packages (
.nsp,.xci,.nca, ...) are refused: this project decrypts nothing and reads no keys. - Windows 10/11 x64 and a GPU with a Vulkan 1.3 driver. A Linux version is in testing (the Linux builder on the
Releases page, with its own
START HERE.txt). - AMD Radeon RX 400 / 500 cards (Polaris): AMD's Windows driver for these cards lacks Vulkan features that B2recomp's renderer normally uses (dynamic vertex input and pipeline libraries), and it offers no mailbox vsync. B2recomp works around that on Windows: the game runs (confirmed on an RX 560), but its first runs build more shaders while you play, so expect short hitches until they are cached, and vsync waits for the screen (FIFO). This is the driver, not your card: on Linux the Mesa driver (RADV) has all of these features, so the same card runs the full renderer there. If you have Linux on that PC, the Linux version is the better choice for these cards. (Their speed in fights is often set by the processor these PCs have: a 4-core CPU from around 2013 gives a steady 30 fps there.)
- With the builder package: nothing else. From the source alone: Python 3.10+ and the free tools listed in BUILDING.md.
1. Have your dump ready. One folder that holds exefs\ and romfs\, extracted from your own copy of the game
with update 1.2 applied (plain files, not an .nsp or .xci). Put it where it can stay: the game reads romfs\
from there every time it runs. Optional: sysdata\fonts\ with your console's system font
(BUILDING.md); without it a font of your PC stands in.
2. Get the builder. Download B2recomp-builder-<version>.zip from this repository's Releases page and unzip
it to a folder of its own, with about 1.5 GB free. It holds no game files: only this source, the compiler and the tools
the build needs, so you install nothing.
3. Build the game. Start B2recomp.exe. Click Browse... and choose your dump folder (or drag the folder
onto the window); it tells you at once whether the folder looks right. Press Build and wait, about 5 minutes on a
fast PC. If something is wrong, the window says what (for example the wrong game version); Logs folder has the
details.
4. Set it up. When the build is done, the window turns into the launcher. Good first settings:
| Setting | What to choose |
|---|---|
| Window mode | Borderless window or Fullscreen to fill the screen; Windowed with a size you like |
| Resolution scale | 1.5 for a 1080p screen, 2.0 for 1440p, 3.0 for 4K (strong graphics cards only) |
| Aspect ratio | Keep 16:9 (black bars on an ultrawide screen) or Stretch |
| Frame rate (beta) | 60 is the game as made. Up to 120 for a high-refresh screen: experimental, some effects and menus may run faster |
| Preset | Low only for a weak or laptop graphics chip |
| Vertical sync, Input latency | leave them as they are |
Hover over any setting for a short explanation. Press Save (Play also saves).
5. Choose your controls.
-
Controller (DualSense, DualShock, Xbox, Switch Pro and most others): connect it before you press Play. "Face buttons" decides whether A is the right button (as on a Switch) or the button printed A. Test controller... shows whether your pad is seen; Remap controller... fixes a pad whose buttons are mixed up.
-
PlayStation or Xbox button pictures (optional): the game shows Switch buttons. Download Controller Prompts Replacement (DS4/XBOX) by Timo654 (GameBanana 360121, the Switch version), unpack it and put its
DS4Promptsand/orXBOXPromptsfolder into themods\folder besideB2recomp.exe(make the folder if it is not there). With Button prompts on Auto the game then shows the buttons of the controller you play with; or choose PlayStation or Xbox. It is chosen when the game starts. -
Keyboard and mouse work at the same time as a controller, with a layout like the original Bayonetta on PC:
Action Keys Move W A S D Camera mouse (or the arrow keys) Punch / Kick left mouse / right mouse Jump Space Shoot E or middle mouse Dodge (and Witch Time) left Shift Lock-on left Alt Umbran Climax Q Pause Esc Menus: confirm / back Enter / Backspace Keyboard and mouse... changes any key: click a slot, then press the key or mouse button you want (Delete clears it). The same window sets the mouse sensitivity and can turn the mouse camera off. In game the cursor is hidden and kept in the window; Alt+Tab lets it go. Input (top of the controller panel) can lock the game to the keyboard and mouse only, or to the controller only.
6. Play. Press Play. The first start takes about 10 seconds longer, and the first time you see a new place
the game can hitch briefly while it prepares its graphics; this is saved, so it happens only once. Your saves are in
build\play\userdata.
Next time: start B2recomp.exe and press Play. Keep the dump folder where it was.
Mods (optional). Put mods made for the Switch version (emulator mod folders) into a folder mods\ beside
B2recomp.exe, then click Mods... to switch them on or off. Texture, model and sound mods work at the next start.
Code mods (.pchtxt, .ips) need Apply (rebuild): about a minute, with the game closed. Details:
BUILDING.md.
If something goes wrong:
- Black window or a Vulkan error at start: update your graphics driver.
- Keys or the controller do nothing: click the game window first (input is read only while it is in front).
- The build says the version is wrong: extract again with update 1.2 (v131072) applied.
- "File in use" during a rebuild: close the game and press the button again.
- More: BUILDING.md, Troubleshooting.
- To ask for help: press Report... at the bottom of the launcher (or of the build screen). It makes
b2recomp-report.zipin the B2recomp folder with the logs and your PC's details (Windows version, CPU, graphics card and driver), nothing of the game. Attach it to an issue with a few words on what happened.
The builder package does all of this for you. To build from a clone instead, with the tools installed yourself:
git clone <URL of the B2recomp repository>
cd B2recomp
python scripts/setup.py --dump <your dump folder>
It is one command with resumable steps; about 5 minutes on a 16-thread PC and 0.8 GB in build/. Then start
build\launcher.exe (the same launcher as B2recomp.exe; scripts\play.ps1 starts the game from a console). Details,
options, measured times and troubleshooting: BUILDING.md.
targets/, build/ and cache/ (and the generated files in runtime/gen/) hold material made from your copy of
the game. They are ignored by git: never commit, upload or share them.
- B2recomp is made by K0NL: the Bayonetta 2 port of the lifter and runtime, the launcher, the build (
setup.py, llvm-mingw), the test run and the tools inscripts/. - AI helped in reverse engineering the game, with Ghidra and the open-source project REA.
- Reverse-engineering tools, with thanks: Ghidra (NSA, Apache-2.0) with Adubbz's Ghidra-Switch-Loader, and REA by morluto (MIT). None of them is included in this repository.
- The lifter (
lifter/) and the runtime (runtime/) started as copies of ssbu-recomp by Denkishi (commit3a96916), licensed GPL-3.0-or-later; every change is marked[Recomps#1]and listed inruntime/UPSTREAM.mdandlifter/README.md. - Other open-source components and references: see NOTICE.md.
- Copyright (C) 2026 K0NL, and the ssbu-recomp authors for the parts taken from it. This project as a whole is licensed under the GNU General Public License, version 3 or (at your option) any later version; see LICENSE. The need for your own game dump is a technical requirement, not a licence term.
B2recomp is not affiliated with, endorsed, sponsored or approved by Nintendo, PlatinumGames or SEGA. Bayonetta, Nintendo Switch and related names are trademarks of their respective owners and are used here only to say which software this project is compatible with. No copyrighted game data, Nintendo SDK code, firmware, system data or console keys are included or linked, and this project does not describe how to obtain them. This is a non-commercial project: no donations, paid builds or advertising.
Rights holders with a concern can open an issue on this repository's Issues page, or use GitHub's own takedown process.