ISLE.EXE

Revision as of 06:46, 31 May 2023 by MattKC (talk | contribs)

ISLE.EXE is the main frontend of LEGO Island. It contains very little actual game code, mostly handling window initialization and the event loop, and passing off to LEGO1.DLL for everything else.

Its simplicity is demonstrated in its file size, only 85KB compared to LEGO1's over 1,000 (unless your copy shipped with SecuROM, in which case ISLE will be much larger). However, it does handle a number of crucial responsibilities that are worth documenting.

DirectSound Test

One of the first things ISLE.EXE does is attempt to create a DirectSound device and then immediately destroy it. If it fails to create one, it will wait for 500 ms and try again. If it continues to fail, it will do this up to 20 times before giving up and showing an error message that it failed to find any DirectSound devices:

 

This is a somewhat odd behavior because ISLE.EXE is not otherwise responsible for any sound-related functionality. It simply creates a device to see if it can, and then either destroys it or throws the above error if it can't create one. Presumably this is done because sound hardware was much less reliable back then, so it became necessary to attempt initializing it multiple times before it could definitively be considered a failure. However, it's not clear why this functionality could not be part of LEGO1's sound initialization routine instead, considering that's the code that actually handles all of the in-game sound.

SecuROM

Main article: SecuROM

In at least one version of LEGO Island, ISLE.EXE was found to be protected with SecuROM. SecuROM is a form of DRM/copy protection, controversial due to its heavy-handed malware-like approach. Additionally, due to improved security measures introduced in Windows 10, SecuROM protected games no longer work at all on modern versions of Windows, requiring a cracked or patched version to play those games.

Since no other copies that we know of ship with any DRM whatsoever, it's unclear who decided to introduce SecuROM on this specific version and why. The actual frontend code, as well as that copy's LEGO1.DLL, was unchanged, so simply replacing ISLE.EXE with an unprotected copy from another version will bypass SecuROM entirely.