← Back to projects
Full-Stack active

SimGolf in the Browser

Sid Meier's SimGolf (2002) ported from a Windows binary to WebAssembly, playable in any modern browser

CWebAssemblyEmscriptenSDL2WebGLGhidra
Source port from decompiled binaryHD terrain + xBR upscalingZero game data hosted
“If humankind's AIpocalypse comes to pass and we're eradicated by the products our own ingenuity, it will have been worth it because of this and this, alone.”
— Sisyphicarus, Reddit
SimGolf in the Browser screenshot

Overview

A browser port of Sid Meier’s SimGolf, the 2002 Firaxis golf course tycoon game. The original only ever shipped as a Windows executable, so there was no source to recompile: the port is rebuilt from a decompilation of the v1.02 binary, with the Windows, DirectX and OpenGL layers replaced by SDL2 and WebGL and the whole thing compiled to WebAssembly with Emscripten.

The game runs end to end in the browser: design holes, build the clubhouse, watch golfers play your course, and save between sessions.

Bring your own disc

The site hosts none of the game’s files. Players drop in their own SimGolf ISO (or the archive.org .7z) plus the v1.02 executable, and the page converts the assets in the browser and keeps them in local storage. Nothing is uploaded anywhere, and returning players go straight to the Play button.

How it was built

  • Emulation first, then a real port: Boxedwine got the menus booting in a browser but had no OpenGL, so the course view never rendered. That dead end set the direction for a proper source port.
  • Decompile and rebuild: Ghidra output for graphics, terrain, sound and game logic reworked into compilable C, with SDL2 standing in for the Win32 window, input and audio layers.
  • Asset pipeline: FLIC animations with alpha masks, PCX art, 241 sound effects and the intro and closing videos recovered from the disc and converted at setup time.
  • Upgrades over the original: HD terrain and an xBR filter for the 2D sprites, a save history panel to export and import courses, and in-page problem reporting.