isledecomp/isle: A functionally complete decompilation of LEGO Island (1997)

Development Vlog | Complimented | Matrix | Forums | Patreon
This is a functionally complete decompilation of LEGO Island (Version 1.1, English). It aims to be as accurate as possible, matching the compiled instructions with the original machine code as closely as possible. The goal is to provide a usable codebase that can be modified, improved, and ported to other platforms later.
The two ISLE.EXE
and LEGO1.DLL
fully decompiled and, to the best of our knowledge, identical to the originals. However, work is still ongoing to improve the accuracy, naming, documentation, and structure of the source code. While there may still be unresolved bugs not in retail, the game should be fully playable with binaries derived from this source code.
Due to various complexities regarding the compiler, these binaries are not a byte-for-byte match of the original executables. We remain hopeful that this will be resolved at some point.
This project uses the CMake build system, which allows for a high level of versatility regarding compilers and development environments. For the most accurate results, it is recommended to use Microsoft Visual C++ 4.20 (the same compiler used to build the original game). Since we try to match the output of this code to the original executables as much as possible, all contributions will be graded in the output of this compiler.
These instructions outline how to compile this repository using Visual C++ 4.2 into the most accurate binary where most of the functions are instruction-matching retail. If you want, you can try using other compilers, but this is at your own risk and is not covered in this guide.
You need to install the following software:
- Microsoft Visual C++ 4.2. It can be found on many abandonware sites, but the installer can be quite difficult on modern versions of Windows. For convenience, a portable version available to download and use immediately.
- CMake. A copy is always included in the “Desktop development with C++” workload in newer versions of Visual Studio; however, it can also be installed as a standalone app.
- Open Command Prompt (
cmd
). - From Visual C++ 4.2, run
BIN/VCVARS32.BAT x86
to populate the path and other environment variables for MSVC compilation. - Create a folder for the bundled items to go, such as a
build
folder inside the source repository (the folder you cloned/downloaded). - In your Command Prompt,
cd
to the build folder. - Configure the project using CMake by running:
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo
- Visual C++ 4.2 has issues with paths containing spaces. When you configure or make errors, make sure that CMake, the repository, or Visual C++ 4.2 is in a path with spaces.
- change
with the source repository. It can be done..
if your build folder is inside the source repository. RelWithDebInfo
is recommended because it can generate debug symbols useful for further decompilation work. However, you can change it toRelease
if you don’t need them.Debug
builds are not recommended as they may not be compatible with retailLEGO1.DLL
which is currently the only way to use this decompilation for gameplay.NMake Makefiles
is the most recommended because it is immediately compatible with Visual C++ 4.2. For a faster build, you can useNinja
(if you have it installed), however due to the limitations of Visual C++ 4.2, you can only buildRelease
builds this way (debug symbols cannot be created using theNinja
).
- Build the project by running
nmake
orcmake --build
- Once this is done, there should be a recompilation
ISLE.EXE
andLEGO1.DLL
in the build folder. - Note that
nmake
must run twice under certain conditions, so it is advisable to always (re-)compile usingnmake && nmake
.
If you have a CMake-compatible IDE, it should be relatively straightforward to use this repository, as long as you can use it. VCVARS32.BAT
and put the generator on NMake Makefiles
.
Just put the compilation ISLE.EXE
and LEGO1.DLL
to the LEGO Island installation folder (usually C:\Program Files\LEGO Island
or C:\Program Files (x86)\LEGO Island
). On the other hand, LEGO Island can be run from any directory as long as ISLE.EXE
and LEGO1.DLL
are in the same directory, and the registry keys (usually HKEY_LOCAL_MACHINE\Software\Mindscape\LEGO Island
or HKEY_LOCAL_MACHINE\Software\Wow6432Node\Mindscape\LEGO Island
) point to the correct location for the asset files.
If you are interested in helping or contributing to this project, see the CONTRIBUTING page.
Right click on LEGO1.DLL
CHOOSE Properties
and transfer to Details
tab. low Version
you should see 1.0.0.0
(1.0) or 1.1.0.0
(1.1). In addition, you can view the game disc files; The 1.0 files say August 8, 1997, and the 1.1 files say September 8, 1997. Version 1.1 is the most common, especially if you’re not using the English or Japanese versions, so that’s most likely the version you have.
Please note that some localized versions of LEGO Island are compiled with minor changes despite maintaining a version number similar to other versions; this decompilation specifically targets the English release of version 1.1 of LEGO Island. You can verify that you have the correct version using the checksums below:
- ISLE.EXE
md5: f6da12249e03eed1c74810cd23beb9f5
- LEGO1.ETC
md5: 4e2f6d969ea2ef8655ba3fc221a0c8fe
- CONFIG.EXE
md5: 92d958a64a273662c591c88b09100f4a
https://opengraph.githubassets.com/f7f2defda656fbf2fcc5783e0c56805a67ac298bd322cb32f3c3a8ea54c3740a/isledecomp/isle
2024-12-23 20:03:00