Skip to content

v0.10.0 — GP Bikes attach + reload

Choose a tag to compare

@Frostn1 Frostn1 released this 08 Aug 20:21
· 16 commits to main since this release
1827073

FrostMod now attaches to GP Bikes as well as MX Bikes, and live-reloads its mods.

GP Bikes

Run frostmod.exe --game gpb (or --process gpbikes.exe). Drop a .pkz into
Documents\PiBoSo\GP Bikes\mods\tracks, press R in the console, and it shows up in-game
without restarting — the same as MX Bikes has always worked.

Injected into the game, the DLL works out which title it is inside from the host process, so
there is nothing to configure.

Under the hood

The two constants live reload needs were recovered from an unpacked gpbikes.exe: the boot
content-load routine (0xfb650) and the VFS directory walker (0x18f150). MX Bikes'
values are unchanged.

GP's scanner prologue turned out to be byte-for-byte identical to MX Bikes' — same 0x7f8
frame — so the signature-with-delta fallback that keeps FrostMod working across a game update
covers either title unchanged.

Changed

  • Features whose offsets are MX-Bikes-only now stay off on other titles instead of firing
    at addresses that mean nothing there. The server-browser filter is the one that matters: its
    hook writes a jump at an address that is unrelated code on GP Bikes. The log says why.
  • --update refuses to run while either game is open, not just MX Bikes — the DLL is locked
    by whichever one loaded it.

Still MX Bikes only

Server-browser filter, master protocol, and direct connect. GP Bikes also has its own master
server and default port, so MX's don't carry over.

Known limits

The GP Bikes offsets were derived by static analysis and confirmed by two independent methods,
but have not been verified under a debugger. If reload misbehaves on GP Bikes, the console log
names the RVA it resolved — that's the thing to report. See tasks/gp-bikes-port.md.