IsaacRecomp

IsaacRecomp is a native PC port of The Binding of Isaac that runs at 60 fps and in high resolution.

README

The Binding of Isaac — Native Recomp

Windows Linux Android Nintendo Switch homebrew 60 fps Requires the original game

The Binding of Isaac (Flash), rebuilt as a native program.
No Flash Player, no emulator: the same game you know, at 60 fps and in high resolution,
on PC, Android and Nintendo Switch.

Important

This recomp was made by whylurking with the help of Artificial Intelligence. It is a free, non-profit fan project with no affiliation to Edmund McMillen, Florian Himsl, Nicalis, Valve or Nintendo.

The game is not included. To play, you need your own original copy from Steam: The Binding of Isaac and, for the expansion, Wrath of the Lamb.


😢 What is this?

The Binding of Isaac came out in 2011 as a Flash game. Flash is gone, and the Steam version still relies on an old player that runs at 30 fps, in a small window, with the performance limits of its time.

This project translates all of the game's original code into C++ and runs it on a modern, native engine written from scratch. Graphics, sounds and music are read from your own Steam Isaac.exe at startup, so you need the original game. What changes is how it runs, and where:

Original FlashRecomp
Frame rate30 fps60 fps (or whatever your display does: 120, 144…)
Resolution800×600, upscaledNative (1080p, 1440p, 4K…)
Game logic30 HzExactly 30 Hz: same physics and patterns, checked frame by frame against the original
PerformanceCan stutter with many enemiesSmooth, with drawing spread across CPU cores
ControllersNeeded JoyToKeySupported out of the box, with analog movement
VersionsOne per installOriginal, Wrath of the Lamb and Eternal Edition in one program
PlatformsWindows / MacWindows, Linux, Android and Nintendo Switch (homebrew)

📥 Downloads

Everything is on the Releases page. Pick the package for your device:

PlatformFileGuide
Windows (64-bit)IsaacRecomp_Win64.zipInstallation (PC)
Linux (64-bit)IsaacRecomp_Linux64.tar.gzInstallation (PC)
Android (phone or tablet)IsaacRecomp.apkAndroid
Nintendo SwitchIsaacRecomp_Switch.zipNintendo Switch

On every platform you also need the game's Isaac.exe from your Steam copy (see Get the original game).

🕹️ Comparisons

30 fps → 60 fps

The logic still runs at 30 ticks per second, just like the original, so the game feels exactly the same. Every in-between frame is drawn by interpolating between the last two ticks: movement, animations, fades and room transitions all play at your display's refresh rate.

30 fps vs 60 fps (slow motion)
Shown in slow motion (×0.5) so the difference is visible on any screen. Real-time 60 fps video.

Real high resolution

Vector art is rasterized at your screen's actual resolution, and the layers the game used to paint at 640×480 (floor, blood, shadows, minimap) are generated at 1440×1080.

Original window upscaled vs native 1080p

All three Steam versions

If you have more than one version of the game, the program recognizes each one by its content and lets you pick at startup. Each version keeps its own save file.

Original, Wrath of the Lamb and Eternal Edition

Version selection screen

✨ What's new compared to the original

  • 60 fps or more, with the game logic untouched at 30 Hz.
  • Native 1080p / 4K, with no thin white seams between colored areas (shapes are rasterized the way Flash does it).
  • No pop-in: graphics are prepared in the background while the opening cutscene plays.
  • Smooth room transitions, with no sudden jumps after a hiccup.
  • Controller support without external tools. Every menu works with the controller alone: the selected option is highlighted in pink, A/✕ presses it and B/◯ goes back.
  • Control rebinding inside the game (Options → Controls → Rebind controls) for keyboard, controller and touch.
  • Analog movement: with a stick, Isaac's speed follows how far you push it, like in Rebirth (it can be turned off).
  • Touch controls on Android and on Switch in handheld mode: floating joysticks, tappable HUD and a pause button.
  • Low input latency: input keeps being read while the program waits for the display.
  • Cleaned-up options menu: options that depended on Flash and no longer do anything are gone.
  • Fullscreen or windowed (F11 or Alt+Enter), fitted to your desktop's usable area.
  • Built-in performance overlay (F3).
  • Original, Wrath of the Lamb and Eternal Edition in a single program.
  • Save converter to bring your progress from the Flash version (and back).

📦 Installation (PC)

1. Get the original game

Buy The Binding of Isaac on Steam (and Wrath of the Lamb if you want the expansion). Install it and open its folder: in Steam, right-click the game → Manage → Browse local files.

There are two executables in there:

FileWhat it is
Isaac.exeThe game itself: it contains all of its graphics, sounds and code. This is the one you need.
Binding_of_Isaac.exeJust the Steam launcher. Not useful here.

2. Download the recomp

Go to Releases and grab the package for your system:

  • Windows (64-bit): IsaacRecomp_Win64.zip
  • Linux (64-bit): IsaacRecomp_Linux64.tar.gz

3. Put them together and play

  1. Extract the recomp anywhere you like.
  2. Copy Isaac.exe from Steam next to IsaacRecomp.exe (on Linux, next to isaac).
  3. Run IsaacRecomp.exe (on Linux: ./isaac).

Tip

Several versions at once? On Steam they are all called Isaac.exe. Copy them with different names, for example Isaac-Original.exe, Isaac-WotL.exe and Isaac-Eternal.exe. The name doesn't matter: each version is recognized by its content, and the program asks which one to open.

Requirements: 64-bit Windows or Linux, and a graphics card that supports OpenGL 3.3.

💾 Bringing your Flash saves over

Every package includes tools/save_converter.html: open it in any web browser (it works offline, nothing is uploaded). It turns the Flash game's so.sol into the IsaacRecomp save file and back, for the original game, Wrath of the Lamb and Eternal Edition. Stats, items, secrets, bosses and unlock order carry over. Close the game and back up your save before replacing it. The converter was originally made by g333nza.

🎮 PC controls

The original controls, plus controller support. Controller buttons adapt to whether you are playing, paused or in a menu:

ActionKeyboardController (in game)Controller (menus / pause)
MoveW A S DLeft stick (analog) / D-padChoose: left stick / D-pad
ShootArrow keysRight stick / A B X Y—
BombE / ShiftLB / left trigger—
Active itemSpaceRB / right trigger—
Card / pillQRight stick click—
PauseP / EscStart / Back / left stick clickStart / Back (resume)
Confirm / backMouse—A / B
FullscreenF11 / Alt+Enter——
ScreenshotF12——
Performance overlayF3——

In menus, the selected option is highlighted in pink; the D-pad or left stick chooses another, the controller presses it with A (✕ on PlayStation controllers) and goes back with B (◯), which also closes the pause screen.

Rebinding: Options → Controls → Rebind controls (from the main menu or the pause screen) changes the controls of the device you are playing with. Pick an action and press the new key or button; Reset to defaults restores the original layout. With a controller you can also choose which stick moves.

📱 Android

The same native recomp, packaged as an APK. It runs the game on the 960×720 stage used on Switch, rendered with OpenGL ES 3.0 and scaled to fill the screen.

You need:

  • A 64-bit ARM phone or tablet (practically every device since 2017) with Android 7.0 or newer and OpenGL ES 3.0.
  • Your Isaac.exe from your Steam copy of the game (see step 1 of the PC installation).

Installation:

  1. Download IsaacRecomp.apk from Releases and install it. Android will ask you to allow "install unknown apps" for your browser or file manager.
  2. Create a folder called IsaacRecomp at the root of the internal storage (next to Download, DCIM…) and copy Isaac.exe into it. Several versions work as on PC (different names, a menu to choose).
  3. Open Isaac Recomp. The first time, it asks for All files access (Android 11 and newer) or for access to your files: the game, isaac.ini, the saves and log.txt all live in that folder.

Touch controls:

ActionTouch
MoveFinger on the left half: a joystick appears where it lands (analog)
ShootFinger on the right half: a second joystick
BombTap the bomb counter
Active itemTap the "SPACE" box
Card / pillTap it (top right, when you have one)
PauseThe button next to -LIFE-, or the back button / gesture
MenusTap the options; on screens without options (cutscenes, title cards) a tap continues

The joysticks are semi-transparent, stay where your finger first landed and disappear when you lift it. Which side moves, the joystick size and its type (fixed base, or a base that follows the finger) can be changed in Options → Controls → Rebind controls. Bluetooth and USB controllers work exactly as on PC, and can be mixed with touch at any time.

Performance: the program renders at 720 lines and, if the device can't keep 60 fps during play, steps down to 600, 540 or 480 by itself (remembered in isaac.ini). It runs at the screen's refresh rate (90 or 120 Hz screens included), with the logic and rendering pinned to the fastest CPU cores, and audio mixed at the device's own rate through Android's low-latency audio path. To choose the resolution yourself, set render_height in isaac.ini.

Note

While the game is still loading its graphics (the first seconds, during the opening cutscene) touches are ignored; touching shows the progress. Saves are written when the app goes to the background, and the run is paused automatically.

🎮 Nintendo Switch (homebrew)

The same native recomp, built as a homebrew application (.nro, version 1.4.0). It contains no code or assets from Nintendo or from the game: you provide the game's Isaac.exe yourself, exactly as on PC.

You need:

  • A Switch that can run homebrew, with the Homebrew Menu.
  • Your Isaac.exe from your Steam copy of the game (see step 1 of the PC installation).

Installation:

  1. Download IsaacRecomp_Switch.zip from Releases and copy its switch folder to the root of your SD card. You should end up with sd:/switch/isaac/isaac.nro.
  2. Copy Isaac.exe into that same folder: sd:/switch/isaac/Isaac.exe. For several versions, use different names (for example Isaac-Original.exe, Isaac-WotL.exe, Isaac-Eternal.exe).
  3. Open the Homebrew Menu in application mode: hold R while launching any installed game. Then pick The Binding of Isaac.

Warning

Don't launch it from the Album (applet mode). That mode only gives homebrew about 400 MB of memory, which isn't enough. Application mode has more than 3 GB.

Performance: 720p in handheld mode and 1080p when docked, at 60 fps with interpolation. The game logic runs on its own CPU core, and new graphics are prepared in the background on another core.

Switch controls:

ActionButton
MoveLeft stick (analog) / D-pad
ShootRight stick, or A / B / X / Y (→ ↓ ↑ ←)
BombL
Active itemZL
Card / pillR
Restart the current runHold ZR for 5 seconds
Pause+ or −
MenusStick / D-pad choose (in red), A to accept, B to go back
Performance overlayL3 + R3

Buttons can be changed in Options → Controls → Rebind controls.

Touch screen (handheld mode): the same touch controls as on Android: joysticks on the left and right halves of the screen, taps on the bomb counter, active item and card/pill, a pause button next to -LIFE-, and taps in menus. The pause button is only shown in handheld mode.

⚙️ Configuration

isaac.ini is created on first launch next to the program (Android: in the IsaacRecomp folder; Switch: sd:/switch/isaac/isaac.ini).

OptionDefaultWhat it does
swf(empty)Path to Isaac.exe, if it isn't next to the program
game(empty)Last chosen version: og, wotl or eternal
fullscreen1Borderless fullscreen (PC)
vsync1Vertical sync
smooth1Interpolation to the display refresh rate (0 = original 30 fps)
filters1Blur effects in cutscenes
volume100Master volume (0-100)
cache_mbdependsVideo memory for already rasterized graphics
low_latency1Keep reading input while waiting for the display (less input lag)
interp_lead0Experimental, up to 0.5: draw slightly ahead for less visual delay (small overshoot when stopping)
gc_after_tick1Free memory after each game tick has been sent to the screen, so it doesn't delay the image (0 = inside the tick, as in 1.3)
max_margin0 (Switch: 6)Cap, in ms, of how far behind the game the image is shown (0 = automatic, 4-30 ms). A cap keeps input delay constant in busy rooms
performance01 = performance overlay always on, written to performance.txt
joystick_acceleration1Analog movement: speed follows how far the stick is pushed (full speed at ¾ of its travel). 0 = always full speed
touch_controls1Android / Switch: 0 turns off the touch joysticks, HUD taps and pause button
render_height0Android: rendering resolution (0 = automatic; 1080, 720, 600, 540, 480)
bind_keyboard, bind_controller, controller_move_stick, touch_move_side, touch_joystick_size, touch_joystick_type(empty)Written by the rebinding screen; empty = original controls

Save files:

PlatformFolder
WindowsThe saves folder next to IsaacRecomp.exe
LinuxThe saves folder next to isaac
AndroidIsaacRecomp/saves/ in the internal storage (up to 1.3.1: IsaacRecomp/, copied over by 1.4.0)
Switchsd:/switch/isaac/saves/ (up to 1.3.1: sd:/switch/isaac/, copied over by 1.4.0)

There is one save file per version (isaac_og_save.sol, isaac_save.sol, isaac_eternal_save.sol), and the format is the same everywhere, so you can copy saves between PC, Android and Switch. Up to 1.3.0 the PC versions saved in %APPDATA%\IsaacRecomp\WrathOfTheLamb\ (Windows) or `~/.local/share/IsaacRecomp/WrathOfTheL