blaubart.com

The preservation of LEGO Island

Nov 24, 2025
/assets/images/blog/blog-post-10-full.jpg
LEGO Island rendered on a Google Pixel 7 Pro @ QHD+ (1440px x 3120px), using maximum LOD, Anti-Aliasing and HD Textures

Achieving a fully decompiled version of LEGO Island was a significant milestone, but preserving the game for current and future generations was the ultimate goal. To that end, LEGO Island is now available for play on more than 10 platforms, and more are being worked on. Try it in your browser, today!

Almost exactly a year ago, I wrote about reaching a massive milestone: the 100% decompilation of LEGO Island. We had successfully matched the original instruction set, brick by brick, byte for byte (with an accuracy of about 98%). While this was a technical triumph and allowed us to understand exactly how the game worked, it didn’t immediately solve the issue of accessibility.

The original game, released in 1997, was built for Windows 95 and DirectX 5. Running it on modern hardware has always been a struggle, often requiring additional tooling or specific patches to avoid crashes. My vision was to decouple the game from its aging infrastructure and make it truly cross-platform. I wanted to see LEGO Island running in a web browser, accessible to everyone, everywhere.

Project isle-portable

In June 2024, while we were still working on finishing the decompilation, I launched the isle-portable project. The goal was straightforward but ambitious: eliminate all Windows dependencies and replace them with modern, cross-platform alternatives. For the most part, it was a matter of systematically making sense of, and eventually substituting the old proprietary libraries with open-source equivalents.

/assets/images/blog/blog-post-10-sdl.png

Perhaps the most significant structural change was moving all window creation, event handling, input, and multi-threading to SDL (Simple DirectMedia Layer). This library is the backbone of many modern cross-platform games and provided us with an immediate pathway to Linux, macOS, and many more platforms.

For the Full Motion Video (FMV) sequences, which originally relied on RAD Game Tool’s Smacker library, we integrated libsmacker. The game’s configuration, originally located in the Windows Registry, was moved to a simple INI file structure.

Simultaneously, we tackled the audio. LEGO Island made use of 3D audio to immerse the player in the world. To replicate these spatial sound effects without relying on DirectSound, we integrated the miniaudio library.

Porting the codebase to these libraries also allowed us to finally fix some long-standing behaviors that were commonly encountered in the original retail release. We resolved the soft locks that occurred when Alt-Tabbing, fixed audio delays, and finally squashed the infamous exit crash bug for good!

The Graphics Challenge: Replacing D3DRM

While the logic and audio were coming together, the graphics arguably represented the biggest challenge. LEGO Island relied on Direct3D Retained Mode (D3DRM), an API that has been obsolete for decades and is virtually unsupported on modern systems.

/assets/images/blog/blog-post-10-d3drm.jpg

This is where contributor Anders Jenbo stepped in and performed what can only be described as wizardry. Rather than trying to rewrite LEGO Island’s graphics code, Anders opted to reimplement the Direct3D APIs as a modular translation layer.

This approach allowed for rapid progress. The 2D functionality was ported quickly, and within just a few weeks, we had the engine rendering triangles, meshes, textures, and lighting using custom code. Because the implementation was modular, we could swap out the backend APIs with ease.

Today, the project supports backends for SDL_GPU (which covers Vulkan, Metal, and Direct3D 12), a software rendering backend for maximum compatibility, Direct3D 9, OpenGL ES 2.0/3.0 and even an OpenGL 1.1 backend for older hardware.

The dream realized: isle.pizza

/assets/images/blog/blog-post-10-pizza.webp

With the dependencies removed and the graphics modernized, the path to the web was finally clear. Using Emscripten to compile our C++ code to WebAssembly, I was finally able to achieve the “pipe dream” I had back in the late 2000s.

You can now play the full game, right now, at isle.pizza. Perhaps most remarkably, it leverages the original, unmodified Interleaf streaming code. This allows you to start playing with only a minimal upfront download, while the rest of the content streams from the server on demand - mirroring exactly how the game streamed data from the CD-ROM back in 1997.

However, we didn’t just want to port the retail experience 1:1; we wanted to provide a set of options to modernize the experience. The configuration menu allows for a level of customization and new features that have not been seen before:

  • Visual Fidelity: Go beyond the original 640x480 resolution. The web port supports rendering at your device’s maximum resolution with support for up to 16x MSAA (Anti-aliasing) and 16x Anisotropic filtering. We also added support for Widescreen aspect ratios to fill modern displays.

  • Touch Controls & Haptics: To ensure the game is playable on mobile, we implemented three distinct touch control schemes (Virtual Mouse, Arrow Keys, and a recommended Virtual Gamepad), complete with haptic feedback support for an improved experience on supported devices.

  • Restored & Enhanced Content: Through an “Extensions” menu, players can toggle community-created content such as HD Textures and HD Music. We also included options to restore cut content, such as the unused “Outro FMV” and the “Extended Bad Ending” that was previously only found in beta versions of the game.

  • Offline Capability: isle.pizza supports full offline play. With a single click, you can download the necessary assets to your browser’s local storage, making the game fully playable even without an internet connection.

It supports all original 10 languages, from Japanese to Portuguese, via a simple drop-down menu. I’d like to believe that this is the most accessible and feature-rich version of LEGO Island ever created.

Omnipresent Island

Because of the move to SDL and portable C++, the game is now running on a remarkable array of devices. It is fully playable on all major desktop operating systems (Windows, Linux, macOS), modern smartphones (Android and iOS), Nintendo 3DS and Nintendo Switch, Xbox One, Playstation Vita and the web.

The community has taken the portability challenge to heart. We’ve even seen LEGO Island running on a Tesla in-car browser and on POS cashier systems. Have a look!

/assets/images/blog/blog-post-10-tesla.jpg /assets/images/blog/blog-post-10-cashier.jpg

Final thoughts

Seeing LEGO Island run inside a browser tab on my phone, or natively on a Linux machine, feels surreal. It is the culmination of thousands of hours of reverse engineering, refactoring, and modernizing. At last, the domain I’ve acquired all the way back in 2009, brickster.net, finally serves its original and intended purpose.

I want to extend a massive thank you to Anders Jumbo for his incredible work on the graphics pipeline, and to the entire community contributing to the isle (decompilation) and isle-portable repositories. I also owe a special thanks to my wife, who tirelessly helped me test and debug the web version on iPhones and iPads, ensuring the experience was flawless for mobile users.

We haven’t just ported a game; we have ensured that a piece of history is no longer at risk of fading into obsolescence. Knowing that LEGO Island is now safe, accessible, and waiting for the next generation to discover it, personally brings a sense of closure and pride that makes every frustrating hour of decompilation and debugging worth it. The Infomaniac has returned, intending to stay, and he’ll be waiting for us for decades to come.