Properties2
TypePractice
Note createdMay 18, 2026

This documents the launcher architecture for running FL 26 on the Windows PC in a way that keeps the Steam overlay + Steam Input working, the game elevated, and Sider at Medium integrity at the same time.

The problem

Three constraints conflict on the same launch:

  1. Steam Controller / Steam Input require Steam’s overlay to attach to the game, which means Steam must launch the chain.
  2. FL_2026.exe needs to run elevated — when it isn’t, Konami’s online-services dialog steals focus and breaks controller capture.
  3. sider.exe must NOT run elevated — it crashes at High IL.

The shipped FL 2026 start.exe (a ~170 MB bundled launcher with an asInvoker manifest) spawns both sider.exe and the game inside its own process, so they always share its integrity level. If you elevate the launcher to satisfy (2), you also elevate Sider and break (3).

How the fix works

sider.dll is already injected into FL_2026.exe via the dxgi.dll proxy chain in the FL26 root (it’s a ReShade build with a Sider chain-load). The in-game hook runs at the game’s IL automatically — the external sider.exe is only the Lua module host / config side-process and can safely live at Medium IL.

So the launcher splits the two halves across integrity levels:

  • The game runs at the script’s IL (admin, because Steam launches us admin).
  • sider.exe is spawned through a de-elevation trampoline so it lands at Medium IL regardless of who started the script.

De-elevation methods tried, in order of reliability:

  1. explorer.exe <path> — the running unelevated Explorer process adopts the launch and creates the child at its own (Medium) IL. Most reliable on modern Windows. This is what currently works on Korolev.
  2. One-shot scheduled task with RunLevel=Limited — Task Scheduler service spawns the child at the user’s default IL. Diagnostic fallback.
  3. IShellDispatch2.ShellExecute via Shell.Application COM — historically the canonical Raymond Chen trick, but unreliable on hardened Windows builds. Last resort.

The script tries them in that order and logs which one produced a running sider.exe.

The script

D:\SP Football Life 2026\Launch-FL26.ps1 — writes to %LOCALAPPDATA%\Launch-FL26.log for diagnostics, kills leftovers from previous runs, spawns Sider via the de-elevation chain, waits ~3 s for it to set up, then launches FL_2026.exe at the script’s IL.

Steam shortcut wiring

Add a Non-Steam Game in Steam:

  • Target: powershell.exe
  • Start In: D:\SP Football Life 2026
  • Launch Options: -NoProfile -ExecutionPolicy Bypass -File "D:\SP Football Life 2026\Launch-FL26.ps1"

Steam itself is currently run as administrator on Korolev, so the script inherits admin without UAC prompts. The Steam overlay attaches to FL_2026.exe because that exe calls SteamAPI_Init() itself (steam_appid.txt lives in the same folder).

The unresolved problem: Sider HUD doesn’t render

The on-screen Sider HUD (toggle = Space, per sider.ini) is not optional — it’s how stadium, ball, kit, and other module selections are made at runtime. Without it, FL 26 is hard to use even though the mods themselves load.

Three players want to hook the DX11 swap chain (DXGI’s IDXGISwapChain::GetBuffer/Present):

  1. Sider 7.x — needs GetBuffer to draw its overlay HUD into the back buffer.
  2. ReShade — wraps every DXGI call. FL26 ships a custom dxgi.dll (5,156,120 bytes) that is a SmokePatch ReShade build with a Sider chain-load (the DLL itself contains both “ReShade” and “sider” strings).
  3. Steam Overlay (gameoverlayrenderer64.dll) — injected by Steam whenever a game is Steam-launched; also hooks DXGI. Critically, this DLL is what reads & applies per-game Steam Input profiles, so removing it kills the Steam Controller remapping. (Forced-off via Steam’s per-game “Enable Steam Overlay” toggle still injects the DLL — that toggle only hides the Shift+Tab UI.)

Possible setups we tested, all on this machine:

SetupSider modsSider HUDGame stable
FL26 bundled dxgi.dll + Sider 7.3.3 (default)❌ — GetBuffer failed spam in sider.log
FL26 bundled dxgi.dll + Sider 7.4.1renders for a moment, then crash❌ — sider.dll 7.4.1 access violation at offset 0x25066 on overlay toggle. None of the loaded Lua modules match the colorsdemo.lua deprecated pattern that 7.4.0 broke, so the crash is likely FL26’s custom PES21_Hook.dll patching sider.dll based on 7.3.3’s struct layout.
ReShade removed + Sider 7.3.3✅ — renders cleanly❌ — crashes after ~3 s in gameoverlayrenderer64.dll (offset 0x000be1f2, exception 0xc000041d). Without ReShade mediating, Sider and Steam Overlay race the DXGI hooks.
ReShade removed + Steam Overlay disabled per-gamen/an/a❌ — same gameoverlayrenderer64.dll crash. Steam’s “Enable Steam Overlay” toggle does NOT prevent DLL injection; it only hides the UI.
Launch FL26 outside Steam (bypass injection)n/an/agame runs but Steam Input falls back to desktop config — per-game Steam Controller profile only applies when Steam is the launcher. So this kills the controller.

The combination “Steam Controller + Steam Overlay + Sider HUD + ReShade effects” cannot coexist with the current dxgi.dll + Sider 7.3.3.

Where we left off (2026-05-18)

Restored to the stable baseline:

  • Sider 7.3.3 (the FL26-bundled version). 7.4.1 backups kept at SiderAddons\sider.exe.bak-20260518-0053 and sider.dll.bak-20260518-0053 for later experiments. Sider 7.4.0 zip cached at %TEMP%\sider-7.4.0\ for testing the in-between version.
  • FL26 bundled dxgi.dll (5,156,120 bytes) back in place. The original “uninstall ReShade” backup at D:\SP Football Life 2026\ReShade-backup-20260518-0108\ is now empty except for a copy of Machetes PES21 Reshade v3.ini (the external preset, originally in ~/Downloads/) — that folder can be deleted later.
  • Launcher script Launch-FL26.ps1 unchanged and working. Sider runs Medium IL, game runs admin. Mods load — sider.log shows steady GameplayLoader / kserv / LiveCPK activity.
  • Sider HUD does NOT render. Game is otherwise fully functional.

Next steps to try (ranked)

  1. Ask the FL26 / SmokePatch community for the canonical recipe. They built the bundled dxgi.dll; they almost certainly know how to make the Sider HUD render alongside Steam Overlay + ReShade. evo-web FL26 thread, SmokePatch Discord, pesmodding.com forums. Cheapest path — one good answer skips weeks of trial and error.
  2. Try stock ReShade 6.7+ with the ModulePath proxy chain (https://reshade.me/releases). The setup:
    • Replace FL26’s customised dxgi.dll with a stock ReShade 6.7+ build at the root.
    • Put a “Sider chain-load dxgi.dll” inside a new sider_proxy\ subfolder.
    • In ReShade.ini set [INSTALL] ModulePath=.\sider_proxy\.
    • This orders hooks correctly: ReShade owns DXGI first, forwards to Sider, then to system DXGI — eliminates the GetBuffer race. Unknown: whether Sider distributes a standalone chain-load dxgi.dll (the FL26 one is bundled with ReShade; a clean separation may need help from juce69 or community).
  3. Sider 7.4.x compatibility test. If we get the HUD working with a stock chain (#2), try Sider 7.4.1 on top. The 7.3.4 → 7.4.0 diff has 355 additions / 58 deletions in sider.cpp — significant overlay-rendering rework that fixed the GetBuffer issue on stock setups.
  4. PES21_Hook.dll bisection. If the 7.4.1 crash at 0x25066 is in fact PES21_Hook writing to old sider struct offsets, rename PES21_Hook.dll and see whether the overlay then works in 7.4.1. Sacrifices some FL26 features (online-services patches, model accessories) but isolates the cause.

Cached state on disk (Korolev)

PathWhat it is
D:\SP Football Life 2026\Launch-FL26.ps1The current launcher script.
D:\SP Football Life 2026\dxgi.dllFL26 bundled ReShade-with-Sider-chain (5,156,120 B). Active.
D:\SP Football Life 2026\SiderAddons\sider.exe + sider.dllSider 7.3.3 (active).
D:\SP Football Life 2026\SiderAddons\sider.exe.bak-20260518-0053 + sider.dll.bak-20260518-00537.3.3 binaries (same as active, just backed up before the 7.4.1 attempt). Can be deleted.
D:\SP Football Life 2026\SiderAddons\gamepad.iniNew file from Sider 7.4.x; was already present.
D:\SP Football Life 2026\ReShade-backup-20260518-0108\Machetes PES21 Reshade v3.iniCopy of the external preset originally at ~\Downloads\Machetes PES21 Reshade v3.ini.
%TEMP%\sider-7.4.1\unzip\sider-7.4.1\sider\Extracted 7.4.1 release (sider.exe, sider.dll, gamepad.ini, default sider.ini).
%TEMP%\sider-7.4.0\unpack\sider-7.4.0\sider\Extracted 7.4.0 release.

Verifying it worked

After a launch from Steam, check:

  • %LOCALAPPDATA%\Launch-FL26.log — should report which method spawned Sider and its PID + parent process. Parent should be explorer (PID of the running Explorer, not the script).
  • Task Manager → Details tab → enable the “Elevated” column. sider.exe should show No, FL_2026.exe should show Yes.
  • SiderAddons\sider.log — should contain “DLL attaching to … Mapped into PES.” and a steady stream of GameplayLoader / LiveCPK activity (mods are working).
  • SiderAddons\sider-app.log — should end with Main: Init DONE.