goldberg: auto-generate steam_interfaces.txt from the game's steam_api dll #8

Merged
gabrielgad merged 1 commit from feat/goldberg-generate-steam-interfaces into main 2026-06-17 16:42:51 -04:00
gabrielgad commented 2026-06-17 16:42:12 -04:00 (Migrated from github.com)

Goldberg needs steam_settings/steam_interfaces.txt to resolve the versioned Steam interface names a game requests; without it, games whose steam_api dll asks for a version the emulator can't infer hit report_missing_impl and (in stock gbe_fork) fatally exit. splitux never deployed it, breaking that whole class of games — e.g. Voidigo, whose GameMaker wrapper calls GetISteamController and goldberg couldn't resolve SteamController006.

steam_interfaces.txt is a derived fact about the binary (like steam_appid.txt), not a config preference, so it's generated in the deploy layer: a new pure module (backend/goldberg/pure/interfaces.rs) byte-scans the game's own steam_api dll using gbe_fork's verbatim pattern list (parity-verified against its generate_interfaces tool). It's written per-dll before the handler-settings loop, so the handler config layer stays the override point: a handler that declares goldberg.settings."steam_interfaces.txt" still wins, and goldberg.generate_interfaces: false disables generation. Default on.

Verified end-to-end: Voidigo now reaches gameplay through splitux where it previously fatal-exited at Steam init.

Goldberg needs `steam_settings/steam_interfaces.txt` to resolve the versioned Steam interface names a game requests; without it, games whose steam_api dll asks for a version the emulator can't infer hit `report_missing_impl` and (in stock gbe_fork) fatally exit. splitux never deployed it, breaking that whole class of games — e.g. **Voidigo**, whose GameMaker wrapper calls `GetISteamController` and goldberg couldn't resolve `SteamController006`. steam_interfaces.txt is a derived fact about the binary (like steam_appid.txt), not a config preference, so it's generated in the deploy layer: a new pure module (`backend/goldberg/pure/interfaces.rs`) byte-scans the game's own steam_api dll using gbe_fork's verbatim pattern list (parity-verified against its `generate_interfaces` tool). It's written per-dll **before** the handler-settings loop, so the handler config layer stays the override point: a handler that declares `goldberg.settings."steam_interfaces.txt"` still wins, and `goldberg.generate_interfaces: false` disables generation. Default on. Verified end-to-end: Voidigo now reaches gameplay through splitux where it previously fatal-exited at Steam init.
Sign in to join this conversation.
No description provided.