Repository navigation
Releases: hunchcldev/isaac-highfps
Release list
v0.13.0 - big-room shiver fix + update detection
Combined notes for 0.12.0 + 0.13.0 (released together - this is everything new since 0.11.0):
- Fixed Isaac shivering while walking through scrolling rooms. The mod was smoothing the camera position, but the renderer reads the room's scroll offset, which the engine only refreshes at 60 Hz - the scroll froze for three rendered frames while the player moved on every one. The mod now drives the scroll offset itself, so it moves at your full frame rate.
- Second half of the same bug: the renderer pixel-snaps every sprite position before the scroll offset is added. The screen-lock now advances the scroll by the snapped player movement, so the player holds one pixel exactly and the background scrolls in whole pixels.
- The DLL now publishes its release version into the Lua state (
HIGH_FPS_VERSION). The Workshop companion compares it against the newest release and shows an on-screen notice at run start when your installed DLL is older. DLLs from before 0.13.0 publish no version and are recognised as outdated that way. - Fixed false "High FPS is not installed" notices from the companion: the DLL announces itself a few seconds after mods load, and the companion believed whatever it saw first. It now waits out that window, re-checks before showing anything, and cancels queued notices the moment the DLL appears.
- New ini option
Diag = 1: dumps per-frame render state into the log, for stutter reports.
Install: unzip into the game folder (next to isaac-ng.exe). If the mod does not load on your setup, use the copy in alternative-name/ (dbghelp.dll) instead - one or the other, never both. A display above 60 Hz and vsync off are required to see more than 60 fps.
v0.12.0 - the big-room shiver
The big-room shiver is fixed. Walking through a room large enough to scroll made Isaac himself tremble while everything around him moved smoothly. Two causes:
- The mod was smoothing the camera's internal focus, but the renderer consumes the room's scroll offset, which the engine derives from the camera only once per 60 Hz frame. The scroll therefore froze for three rendered frames while the player advanced on every one - a sixty-per-second creep-and-snap on the one sprite that is screen-locked. The preview now drives the scroll offset itself, so the scroll moves at the full frame rate.
- The renderer snaps every sprite's position to the render-target pixel grid before adding the scroll. The lock now advances the offset by the snapped player movement, so the drawn player holds one render-target pixel exactly and the background scrolls in whole pixels at the full frame rate.
Also new: Diag = 1 in the ini dumps per-frame render state into the log, for hunting stutters. Off by default.
Install: unzip into the game folder (next to isaac-ng.exe). If the mod does not load on your setup, use the copy in alternative-name/ (dbghelp.dll) instead - one or the other, never both. A display above 60 Hz and vsync off are required to see more than 60 fps.
v0.11.0 - a second name to load under
For anyone who installed v0.10.0 and saw nothing happen at all.
A second name to load under
No log file and no change in frame rate means the loader never picked the DLL up, and there is nothing the DLL can report about a case where its own code never runs. So the download carries the same build twice, the second copy named dbghelp.dll in alternative-name/.
If winmm.dll does nothing: delete it from the game folder, put dbghelp.dll there instead, launch again. The executable imports that too, so it loads at the same point in startup. Use one or the other, never both.
dbghelp is only touched when the game is writing a crash dump, so a forwarding proxy over it can't affect rendering or gameplay. If a crash handler already left its own dbghelp.dll in the folder, delete it first; the game runs without one.
Log paths handle any locale
The log paths were ANSI, which fails silently when a profile or install path holds characters the system codepage can't carry. A failed open switched off logging entirely, including the lines that would say why nothing was patched, so the symptom was "no log at all" — the same thing a DLL that never loaded looks like. Wide paths throughout now, with a fallback next to the DLL if %TEMP% can't be written.
Install
Drop winmm.dll next to isaac-ng.exe. To uninstall, delete that one file. Built and verified against Repentance+ v1.9.7.17 (32-bit); on a build it doesn't recognise it patches nothing at all.
You need a display above 60 Hz with vsync off or set to your real refresh rate. The frame limiter is removed but the OpenGL swap interval is untouched, so vsync still pins the loop to the display.
Still beta: entity motion is verified, the camera isn't. The room scroll offset isn't interpolated yet, so if the camera judders while everything in it moves smoothly, that's the known reason.
v0.10.0 - mod compatibility
Mods keep working at high frame rates.
What this fixes
Uncapping the render loop meant the engine asked every installed mod to draw at your display rate instead of 60 times a second. That tripled the Lua cost of every mod you have, and it broke mods that keep counters or timers in a render callback, which was for a long time the only per-frame hook the API offered.
The mod render pass now stays at its original 60 Hz. What mods draw goes onto a render target of its own, which is composited onto every frame, so mod graphics appear on all of them while their Lua runs at the rate it was written for. No flicker, no tripled cost.
Per-entity render callbacks deliberately keep the full rate. They are cheap, and they draw relative to entities whose positions are already being interpolated, so running them per frame means they track that movement instead of being pinned to 60 Hz.
One consequence worth naming: a mod drawing in both the main pass and a per-entity callback used to see them once each per frame and now sees the main pass less often. LuaVanillaCadence = 0 turns the whole mechanism off if you would rather have the old behaviour.
Also in this build
- Mods can detect the native component through two globals,
HIGH_FPS_NATIVEandHIGH_FPS_RATE. The Workshop companion used to count render callbacks, which the change above makes impossible. - Logging uses wide paths and falls back next to the DLL. The old ANSI paths failed silently when a profile or install path held characters the system codepage could not carry, and that switched off every diagnostic including the fatal ones. If you reported "no log at all", please try again with this build.
- The README now states the requirement plainly: you need a display above 60 Hz, and vsync off or set to your real refresh rate. The mod removes the game's frame limiter but never touches the OpenGL swap interval.
Install
Drop winmm.dll next to isaac-ng.exe in the game folder. To uninstall, delete that one file. Built and verified against Repentance+ v1.9.7.17 (32-bit); on a build it does not recognise it patches nothing at all.
Still beta: entity motion is verified, the camera is not. The room scroll offset isn't interpolated yet, so if the camera judders while everything in it moves smoothly, that is the known reason.
v0.9.0 (beta)
First public build. Isaac renders at a hard 60 FPS and simulates at 30 Hz; this lifts the
render cap to your display's refresh rate and fills the frames in between with real
interpolated positions. Game speed is untouched.
Install
Unpack and drop winmm.dll next to isaac-ng.exe. To uninstall, delete that file.
Built against Repentance+ v1.9.7.17 (32-bit). On any other build it patches nothing at all
and the game runs normally.
What is verified
Measured from inside the game with a Lua probe: 180 frames per second with the logic tick
sitting at 30/s, unchanged. Both of the engine's internal clocks advance exactly as they do
without the mod, which is what keeps item charges, cooldowns and every other frame-counted
timer honest.
What is not
The camera. The room scroll offset isn't interpolated yet, so if the camera judders while
everything in it moves smoothly, that's the reason and it's a known gap. That's why this is
a beta.
If something breaks
The mod writes %TEMP%\isaac-highfps.log with per-second timings and a line for every hitch
over 20 ms. Attach it to the issue.