Skip to content

v3.1.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 17:38
· 28 commits to master since this release
46242e9

Rogue display fixes - every refresh rate is selectable, and the settings menu no longer crashes.

What's New

Rogue display mode fixes

The game built its resolution list by keeping at most one entry per resolution, preferring whichever mode sat within 1 Hz of 60. On a high refresh rate display that dropped every native-refresh entry, so the saved mode no longer resolved to a list index. The menu then indexed its mode array with -1 and read roughly 4 GB past the end of it.

Symptoms: the resolution selector showed undefined, the game rewrote RefreshRate back to 60 on every save, and any settings interaction that refreshed the apply button (switching away from fullscreen, for one) crashed at ACC.exe+0x6D8C39.

Two new hooks, both toggleable in [Hooks]:

Hook What it does
FullModeList Replaces the list builder. Keeps every mode the monitor reports, sorted by (width, height, refresh) as the game's own binary search expects. Same output format, same DXGI_ENUM_MODES_SCALING flag, same 800x600 floor as the engine.
ModeIndexGuard Clamps the display mode index the settings menu reads, mirroring the clamp the mode setter already does, and returns zeroed output when the list is empty. Also covers a stale index left in an existing INI.
[Hooks]
; Clamps the display mode index the settings menu reads, which the game
; does not bounds check.
ModeIndexGuard=true
; Lists every display mode the monitor reports instead of one per
; resolution at 60 Hz.
FullModeList=true

Both default to true. An existing AC.Rogue.PatchFix.ini works unchanged - missing keys fall back to the defaults - but copy the shipped INI if you want the new entries documented in place.

Crash diagnostics

The exception handler previously logged only faults whose instruction pointer landed inside the plugin or a registered patch, so a crash anywhere else in the game left no record at all. It now also logs a bounded number of faults from outside plugin code, which is what located the bug above.

Assets

File Description
AC.Rogue.PatchFix.asi Rogue plugin (Windows)
AC.Rogue.PatchFix-wine.asi Rogue plugin (Wine/Proton cross-compiled)
AC.Rogue.PatchFix.ini Rogue default configuration
AC.Syndicate.PatchFix.asi Syndicate plugin (Windows)
AC.Syndicate.PatchFix-wine.asi Syndicate plugin (Wine/Proton cross-compiled)
AC.Syndicate.PatchFix.ini Syndicate default configuration

What's Changed

  • build(deps): bump actions/cache from 5 to 6 by @dependabot[bot] in #6
  • build(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #5
  • fix(rogue): show every display mode and stop the settings menu crashing by @playday3008 in #12

Full Changelog: v3.0.0...v3.1.0