No description
  • C 42.7%
  • C++ 36.6%
  • Python 16.4%
  • Assembly 1.2%
  • POV-Ray SDL 1.1%
  • Other 1.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
zclaude 8e9c8c0540 Browser build: master volume (default 30%) with a volume slider
The original mix runs at full scale and clips; in the browser it is scaled by a
master volume before clipping. web/shell.html has a small slider + mute button
(bottom right, remembered per browser) that calls sm_set_volume. Desktop
output is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:46:11 -04:00
docs Document the WebAssembly build (README commands, PORTING memory/loop notes) 2026-10-25 19:34:58 -04:00
orig orig: remove r7test.sav, a test artifact committed by 290b7ed (not in the installer manifest) 2026-10-19 12:55:11 -04:00
packaging/arch packaging/arch: give the unpacker a path with a directory part 2026-10-19 12:56:14 -04:00
re Merge TCP multiplayer: DirectPlay3A subset over TCP (host relay, --connect/--port, LAN discovery) 2026-10-19 14:08:51 -04:00
src Browser build: master volume (default 30%) with a volume slider 2026-10-25 19:46:11 -04:00
tests plat_user_tests: select the soft renderer itself (GL is not linked into this binary); makepkg check() failed without SM_RENDERER=soft in the environment 2026-10-19 18:56:37 -04:00
tools dplay: find a named host's session over TCP (DiscQuery/DiscReply frames) so internet play needs only the TCP port 2026-10-19 19:35:26 -04:00
web Browser build: master volume (default 30%) with a volume slider 2026-10-25 19:46:11 -04:00
.gitignore WebAssembly build: Emscripten target from the same CMakeLists.txt 2026-10-25 19:34:58 -04:00
CMakeLists.txt WebAssembly build: Emscripten target from the same CMakeLists.txt 2026-10-25 19:34:58 -04:00
README.md Document the WebAssembly build (README commands, PORTING memory/loop notes) 2026-10-25 19:34:58 -04:00

StarMiner port

Faithful C++17 / SDL2 reimplementation of eGames' StarMiner ("spaceminer 1.3 LITE", 1999–2000), reading the original data files byte for byte. The game is Positech Computing's Asteroid Miner V1.0 (13/3/99, see orig/install/maindir/readme.txt) repackaged by eGames.

Layout

  • orig/NewStarMinerVal.EXE — the original Wise installer, untouched (sha256 3848137d…50e0).
  • orig/install/ — its contents, extracted statically by tools/wise_extract.py; orig/MANIFEST.txt lists CRC/size/date.
  • orig/wise/ — the Wise installer's internal streams (install script = script_stream01_*.bin, wizard DLLs/bitmaps).

Installed files that are not what their names say

file actually
maindir/wcsup.dll the game: packed PE32 GUI exe, version info spaceminer.exe / spaceminer 1.3 LITE, custom packer
maindir/res1.dll a 640x480x8 BMP
maindir/egames.exe 16-bit NE launcher (needs VBRUN300.DLL?)
  • tools/container/Containerfile — all RE/build tooling (ghidra, radare2, wine, mingw, imagemagick). Nothing is installed on the host.
  • re/ — reverse-engineering notes, annotated disassembly, format specs.
  • src/ — the port.

Toolbox

podman build --network=host -v /var/cache/pacman/pkg:/hostcache:ro -t localhost/starminer-re tools/container
podman run --rm --network=host --userns=keep-id -v "$PWD":/work:Z localhost/starminer-re <cmd>

WebAssembly build

The same CMakeLists.txt builds a browser version with Emscripten (tested with 4.0.7): soft renderer, SDL2 from the Emscripten ports, the game data packaged into starminer.data, single player only (no DirectPlay provider).

source /path/to/emsdk/emsdk_env.sh
emcmake cmake -S . -B build-wasm -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build-wasm
python3 -m http.server 8000 --directory build-wasm    # then open http://localhost:8000/starminer.html

Output: build-wasm/starminer.html (page from web/shell.html), .js, .wasm, .data; serve the four files together over HTTP (a file:// page cannot load the data). Click the page to start (browsers allow sound only after a click). Memory layout and main-loop yielding: docs/PORTING.md, "WebAssembly build".