<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Decompilation on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/decompilation/</link>
        <description>Recent content in Decompilation on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Wed, 25 Jun 2025 15:30:37 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/decompilation/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>isle-portable</title>
        <link>https://producthunt.programnotes.cn/en/p/isle-portable/</link>
        <pubDate>Wed, 25 Jun 2025 15:30:37 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/isle-portable/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1591811859365-c947a1967368?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTA4MzY1ODN8&amp;ixlib=rb-4.1.0" alt="Featured image of post isle-portable" /&gt;&lt;h1 id=&#34;isledecompisle-portable&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;isledecomp/isle-portable&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;lego-island-portable&#34;&gt;LEGO Island, portable
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/playlist?list=PLbpl-gZkNl2Db4xcAsT_xOfOwRk-2DPHL&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Development Vlog&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/CONTRIBUTING.md&#34; &gt;Contributing&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://matrix.to/#/#isledecomp:matrix.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Matrix&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://forum.mattkc.com/viewforum.php?f=1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Forums&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://www.patreon.com/mattkc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Patreon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This initiative is a portable version of LEGO Island (Version 1.1, English) based on the &lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;decompilation project&lt;/a&gt;. Our primary goal is to transform the codebase to achieve platform independence, thereby enhancing compatibility across various systems while preserving the original game&amp;rsquo;s experience as faithfully as possible.&lt;/p&gt;
&lt;p&gt;Please note: this project is dedicated to achieving platform independence without altering the core gameplay, adding new features, enhancing visual quality, or rewriting code for improvement&amp;rsquo;s sake. While those are worthwhile objectives, they are not within the scope of this project.&lt;/p&gt;
&lt;h2 id=&#34;status&#34;&gt;Status
&lt;/h2&gt;&lt;h3 id=&#34;supported-platforms&#34;&gt;Supported platforms
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Platform&lt;/th&gt;
          &lt;th&gt;Status&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Linux&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;macOS&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://isle.pizza&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Web&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;We are actively working to support more platforms. If you have experience with a particular platform, we encourage you to contribute to &lt;code&gt;isle-portable&lt;/code&gt;. You can find a &lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable/wiki/Work%E2%80%90in%E2%80%90progress-ports&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;list of ongoing efforts&lt;/a&gt; in our Wiki.&lt;/p&gt;
&lt;h3 id=&#34;library-substitutions&#34;&gt;Library substitutions
&lt;/h3&gt;&lt;p&gt;To achieve our goal of platform independence, we need to replace any Windows-only libraries with platform-independent alternatives. This ensures that our codebase remains versatile and compatible across various systems. The following table serves as an overview of major libraries / subsystems and their chosen replacements. For any significant changes or additions, it&amp;rsquo;s recommended to discuss them with the team on the Matrix chat first to ensure consistency and alignment with our project&amp;rsquo;s objectives.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Library/subsystem&lt;/th&gt;
          &lt;th&gt;Substitution&lt;/th&gt;
          &lt;th&gt;Status&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Window, Events&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Awindow%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows Registry (Configuration)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://gitlab.com/iniparser/iniparser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;libiniparser&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Aconfig%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Filesystem&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Afilesystem%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Threads, Mutexes (Synchronization)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Asynchronization%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Keyboard/Mouse, DirectInput (Input)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Ainput%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Joystick/Gamepad, DirectInput (Input)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Ainput%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;WinMM, DirectSound (Audio)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://miniaud.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;miniaudio&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Aaudio%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DirectDraw (2D video)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3A2d%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle/tree/master/3rdparty/smacker&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Smacker&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/foxtacles/libsmacker&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;libsmacker&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable%20%22%2F%2F%20%5Blibrary%3Alibsmacker%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Direct3D (3D video)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3 (Vulkan, Metal, D3D12)&lt;/a&gt;, D3D9, OpenGL, OpenGL ES, Software&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3A3d%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Direct3D Retained Mode&lt;/td&gt;
          &lt;td&gt;Custom re-implementation&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Aretained%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle/tree/master/3rdparty/smartheap&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SmartHeap&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Default memory allocator&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;building&#34;&gt;Building
&lt;/h2&gt;&lt;p&gt;This project uses the &lt;a class=&#34;link&#34; href=&#34;https://cmake.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CMake&lt;/a&gt; build system, which allows for a high degree of versatility regarding compilers and development environments. Please refer to the &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/.github/workflows//ci.yml&#34; &gt;GitHub action&lt;/a&gt; for guidance.&lt;/p&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;An existing copy of LEGO Island is required to use this project.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As it stands, the builds provided in the Releases tab are for developers; as such, they may not work properly for end-users. Work is currently ongoing to create workable release builds ready for gameplay and general use by end-users. If you are technically inclined, you may find it easiest to compile the project yourself to get it running at this current point in time.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;If you&amp;rsquo;re interested in helping or contributing to this project, check out the &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/CONTRIBUTING.md&#34; &gt;CONTRIBUTING&lt;/a&gt; page.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>isle</title>
        <link>https://producthunt.programnotes.cn/en/p/isle/</link>
        <pubDate>Mon, 12 May 2025 15:28:57 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/isle/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1647894335344-17e1f0a0c683?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDcwMzQ4OTF8&amp;ixlib=rb-4.1.0" alt="Featured image of post isle" /&gt;&lt;h1 id=&#34;isledecompisle&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;isledecomp/isle&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;lego-island-decompilation&#34;&gt;LEGO Island Decompilation
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/playlist?list=PLbpl-gZkNl2Db4xcAsT_xOfOwRk-2DPHL&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Development Vlog&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/CONTRIBUTING.md&#34; &gt;Contributing&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://matrix.to/#/#isledecomp:matrix.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Matrix&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://forum.mattkc.com/viewforum.php?f=1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Forums&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://www.patreon.com/mattkc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Patreon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a functionally complete decompilation of LEGO Island (Version 1.1, English). It aims to be as accurate as possible, matching the recompiled instructions to the original machine code as much as possible. The goal is to provide a workable codebase that can be modified, improved, and ported to other platforms later on.&lt;/p&gt;
&lt;h2 id=&#34;status&#34;&gt;Status
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://legoisland.org/progress/ISLEPROGRESS.SVG&#34; width=&#34;50%&#34;&gt;&lt;img src=&#34;https://legoisland.org/progress/LEGO1PROGRESS.SVG&#34; width=&#34;50%&#34;&gt;&lt;/p&gt;
&lt;p&gt;Both &lt;code&gt;ISLE.EXE&lt;/code&gt; and &lt;code&gt;LEGO1.DLL&lt;/code&gt; are completely decompiled and, to the best of our knowledge, are functionally 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 that are not present in retail, the game should be fully playable with the binaries derived from this source code.&lt;/p&gt;
&lt;p&gt;Due to various complexities with regard to the compiler, these binaries are not a byte-for-byte match of the original executables. We remain hopeful that this can be resolved at some point.&lt;/p&gt;
&lt;h2 id=&#34;building&#34;&gt;Building
&lt;/h2&gt;&lt;p&gt;This project uses the &lt;a class=&#34;link&#34; href=&#34;https://cmake.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CMake&lt;/a&gt; build system, which allows for a high degree of versatility regarding compilers and development environments. For the most accurate results, Microsoft Visual C++ 4.20 (the same compiler used to build the original game) is recommended. Since we&amp;rsquo;re trying to match the output of this code to the original executables as closely as possible, all contributions will be graded with the output of this compiler.&lt;/p&gt;
&lt;p&gt;These instructions will outline how to compile this repository using Visual C++ 4.2 into highly-accurate binaries where the majority of functions are instruction-matching with retail. If you wish, you can try using other compilers, but this is at your own risk and won&amp;rsquo;t be covered in this guide.&lt;/p&gt;
&lt;h4 id=&#34;prerequisites&#34;&gt;Prerequisites
&lt;/h4&gt;&lt;p&gt;You will need the following software installed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft Visual C++ 4.2. This can be found on many abandonware sites, but the installer can be a little iffy on modern versions of Windows. For convenience, a &lt;a class=&#34;link&#34; href=&#34;https://github.com/itsmattkc/msvc420&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;portable version&lt;/a&gt; is available that can be downloaded and used quickly instead.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cmake.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CMake&lt;/a&gt;. A copy is often included with the &amp;ldquo;Desktop development with C++&amp;rdquo; workload in newer versions of Visual Studio; however, it can also be installed as a standalone app.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;compiling&#34;&gt;Compiling
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Open a Command Prompt (&lt;code&gt;cmd&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;From Visual C++ 4.2, run &lt;code&gt;BIN/VCVARS32.BAT x86&lt;/code&gt; to populate the path and other environment variables for compiling with MSVC.&lt;/li&gt;
&lt;li&gt;Make a folder for compiled objects to go, such as a &lt;code&gt;build&lt;/code&gt; folder inside the source repository (the folder you cloned/downloaded to).&lt;/li&gt;
&lt;li&gt;In your Command Prompt, &lt;code&gt;cd&lt;/code&gt; to the build folder.&lt;/li&gt;
&lt;li&gt;Configure the project with CMake by running:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake &amp;lt;path-to-source&amp;gt; -G &amp;#34;NMake Makefiles&amp;#34; -DCMAKE_BUILD_TYPE=RelWithDebInfo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual C++ 4.2 has issues with paths containing spaces&lt;/strong&gt;. If you get configure or build errors, make sure neither CMake, the repository, nor Visual C++ 4.2 is in a path that contains spaces.&lt;/li&gt;
&lt;li&gt;Be aware that long file paths (e.g., &lt;code&gt;C:\Users\LongUserName\LongerFolderName\isle&lt;/code&gt;) may be truncated by &lt;code&gt;make&lt;/code&gt;, resulting in “File not found” errors.&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;&amp;lt;path-to-source&amp;gt;&lt;/code&gt; with the source repository. This can be &lt;code&gt;..&lt;/code&gt; if your build folder is inside the source repository.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RelWithDebInfo&lt;/code&gt; is recommended because it will produce debug symbols useful for further decompilation work. However, you can change this to &lt;code&gt;Release&lt;/code&gt; if you don&amp;rsquo;t need them. While &lt;code&gt;Debug&lt;/code&gt; builds can be compiled and used, they are not recommended as the primary goal is to match the code to the original binary. This is because the retail binaries were compiled as &lt;code&gt;Release&lt;/code&gt; builds.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NMake Makefiles&lt;/code&gt; is most recommended because it will be immediately compatible with Visual C++ 4.2. For faster builds, you can use &lt;code&gt;Ninja&lt;/code&gt; (if you have it installed), however due to limitations in Visual C++ 4.2, you can only build &lt;code&gt;Release&lt;/code&gt; builds this way (debug symbols cannot be generated with &lt;code&gt;Ninja&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Build the project by running &lt;code&gt;nmake&lt;/code&gt; or &lt;code&gt;cmake --build &amp;lt;build-folder&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;When this is done, there should be a recompiled &lt;code&gt;ISLE.EXE&lt;/code&gt; and &lt;code&gt;LEGO1.DLL&lt;/code&gt; in the build folder.&lt;/li&gt;
&lt;li&gt;Note that &lt;code&gt;nmake&lt;/code&gt; must be run twice under certain conditions, so it is advisable to always (re-)compile using &lt;code&gt;nmake &amp;amp;&amp;amp; nmake&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you have a CMake-compatible IDE, it should be pretty straightforward to use this repository, as long as you can use &lt;code&gt;VCVARS32.BAT&lt;/code&gt; and set the generator to &lt;code&gt;NMake Makefiles&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;docker&#34;&gt;Docker
&lt;/h3&gt;&lt;p&gt;Alternatively, we support Docker as a method of compilation. This is ideal for users on Linux and macOS who do not wish to manually configure a Wine environment for compiling this project.&lt;/p&gt;
&lt;p&gt;Compilation should be as simple as configuring and running the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	-e CMAKE_FLAGS=&amp;#34;-DCMAKE_BUILD_TYPE=RelWithDebInfo&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	-v &amp;lt;path-to-source&amp;gt;:/isle:rw \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	-v &amp;lt;build-folder&amp;gt;:/build:rw \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	ghcr.io/isledecomp/isle:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;&amp;lt;path-to-source&amp;gt;&lt;/code&gt; should be replaced with the path to the source code directory (ie: the root of this repository).
&lt;code&gt;&amp;lt;build-folder&amp;gt;&lt;/code&gt; should be replaced with the path to the build folder you&amp;rsquo;d like CMake to use during compilation.&lt;/p&gt;
&lt;p&gt;You can pass as many CMake flags as you&amp;rsquo;d like in the &lt;code&gt;CMAKE_FLAGS&lt;/code&gt; environment variable, but the default configuration provided in the command is already ideal for building highly-accurate binaries.&lt;/p&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage
&lt;/h2&gt;&lt;p&gt;The simplest way to use the recompiled binaries is to swap the original executables (&lt;code&gt;ISLE.EXE&lt;/code&gt;, &lt;code&gt;LEGO1.DLL&lt;/code&gt;, and &lt;code&gt;CONFIG.EXE&lt;/code&gt;) in LEGO Island&amp;rsquo;s installation directory for the ones that you&amp;rsquo;ve built from this source code. By default, LEGO Island is installed to &lt;code&gt;C:\Program Files\LEGO Island&lt;/code&gt; on 32-bit operating systems and &lt;code&gt;C:\Program Files (x86)\LEGO Island&lt;/code&gt; on 64-bit operating systems.&lt;/p&gt;
&lt;p&gt;For advanced users, you can get LEGO Island to run from anywhere as long as &lt;code&gt;ISLE.EXE&lt;/code&gt; and &lt;code&gt;LEGO1.DLL&lt;/code&gt; are in the same directory and the &lt;code&gt;cdpath&lt;/code&gt; and &lt;code&gt;diskpath&lt;/code&gt; registry keys (usually found in &lt;code&gt;HKEY_LOCAL_MACHINE\Software\Mindscape\LEGO Island&lt;/code&gt; on 32-bit operating systems and &lt;code&gt;HKEY_LOCAL_MACHINE\Software\Wow6432Node\Mindscape\LEGO Island&lt;/code&gt; on 64-bit operating systems) point to the correct location for the asset files (the directory that contains the &lt;code&gt;LEGO&lt;/code&gt; folder).&lt;/p&gt;
&lt;p&gt;If you see an error about &lt;code&gt;d3drm.dll&lt;/code&gt;, you will need to acquire a copy and place it in the same directory as the game executables, as it has not shipped with Windows since Windows XP. We have published a &lt;a class=&#34;link&#34; href=&#34;https://legoisland.org/download/d3drm.zip&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;known good copy here&lt;/a&gt; that works with LEGO Island.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;If you&amp;rsquo;re interested in helping or contributing to this project, check out the &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/CONTRIBUTING.md&#34; &gt;CONTRIBUTING&lt;/a&gt; page.&lt;/p&gt;
&lt;h2 id=&#34;additional-information&#34;&gt;Additional Information
&lt;/h2&gt;&lt;h3 id=&#34;which-version-of-lego-island-do-i-have&#34;&gt;Which version of LEGO Island do I have?
&lt;/h3&gt;&lt;p&gt;Right click on &lt;code&gt;LEGO1.DLL&lt;/code&gt;, select &lt;code&gt;Properties&lt;/code&gt;, and switch to the &lt;code&gt;Details&lt;/code&gt; tab. Under &lt;code&gt;Version&lt;/code&gt; you should either see &lt;code&gt;1.0.0.0&lt;/code&gt; (1.0) or &lt;code&gt;1.1.0.0&lt;/code&gt; (1.1). Additionally, you can look at the game disc files; 1.0&amp;rsquo;s files will all say August 8, 1997, and 1.1&amp;rsquo;s files will all say September 8, 1997. Version 1.1 is by far the most common, especially if you&amp;rsquo;re not using the English or Japanese versions, so that&amp;rsquo;s most likely the version you have.&lt;/p&gt;
&lt;p&gt;Please note that some localized versions of LEGO Island were recompiled with small changes despite maintaining a version number parallel with other versions; this decompilation specifically targets the English release of version 1.1 of LEGO Island. You can verify you have the correct version using the checksums below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ISLE.EXE &lt;code&gt;md5: f6da12249e03eed1c74810cd23beb9f5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;LEGO1.DLL &lt;code&gt;md5: 4e2f6d969ea2ef8655ba3fc221a0c8fe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;CONFIG.EXE &lt;code&gt;md5: 92d958a64a273662c591c88b09100f4a&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
