Repository navigation
BottleShip 0.7 expands game compatibility, improves rendering and importing, and adds
experimental AOT code caching. This release includes everything merged into main
since October 5, 2026, through the 0.7 release on October 8.
What's new
- Compatibility has grown from 15 to 53 games. Titles now running include
Need for Speed: Underground 2, XIII, Far Cry, The Bard's Tale and Mafia.
See the full compatibility list
for the tested editions, demo coverage and remaining limitations. - An optimized Direct3D 9 implementation. Rendering runs in a dedicated worker,
with batched WebGPU submission and broader shader, texture and render-state support. - It's easier to add your own GOG games. Import supported offline installers,
including multipart EXE + BIN downloads, directly into the library. Review the
executable and settings, save the package, or download a reusable WGB. In Chrome,
you can also select an installed game folder or a GOG installer folder. Everything
is processed locally. GOG import guide. - On-screen controls for mobile devices. Touch controls, configurable virtual
gamepad layouts and an on-screen keyboard make more games accessible without a
physical keyboard and mouse. - Improved loading times and frame rates across many games. CPU and rendering
optimizations are joined by persistent streaming caches: downloaded bundle ranges
are reused locally, and cold file reads park the guest instead of wasting CPU time.
Results depend on the game, browser and hardware; large demos can still take time
to load on their first run. - Experimental AOT code caching. Record WebAssembly generated while a game runs,
save it locally and reuse compatible code on later launches. More on this below. - A much larger public demo library. There are now 42 entries, with original
cover artwork, a curated featured order and sorting by title, genre or year.
Recent additions include Thief Gold, Cossacks, Mafia and Blade of Darkness.
Try the library.
Installer support has also expanded to supported variants of NSIS, MSI/CAB, Wise,
VISE, older InstallShield payloads and RAR4 self-extractors. Improvements to native
launchers and child processes, saving, legacy text rendering and palette handling
help more games get from their setup screens into gameplay. Demo verification stages
are recorded separately in the compatibility document.
AOT today
The CPU emulator's JIT translates x86 code into WebAssembly as the game runs.
BottleShip can now record those generated modules, persist them in browser storage
and load compatible ones again on a later run of the same game. Unrecorded code
continues through the normal JIT, and cached code is checked against the game's code
pages and the runtime configuration before reuse.
To try it, open Developer tools from the in-game toolbar:
- Click AOT: Record.
- Play the scenes you want to capture.
- Click AOT: Save before closing the game.
- Leave AOT: Auto enabled and reload the same game. AOT: Status shows the
loaded units and whether they have actually been entered.
This is the first step toward a broader AOT pipeline. The current user-facing
feature reuses recorded JIT output; experimental offline compiler and correctness
tools are also in the repository. Whole-game recompilation and near-native
performance are research goals.
Next version: two big goals
- Bring games from 2006–2009 into reach, with good performance. We'd like to
push toward the later years of the 32-bit Windows era with titles such as
Command & Conquer: Red Alert 3, Batman: Arkham Asylum, Assassin's Creed and
Burnout Paradise. These are targets for upcoming work. - Explore static recompilation of x86 games into WebAssembly without source
code. The JIT already produces WASM, and AOT recording lets us keep it. The
next question is whether we can analyze and optimize that code enough to get
performance close to native ports built from source. That's the ambitious part
we'd like to investigate :)