<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.legoisland.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ZeroCool32</id>
	<title>LEGO Island Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.legoisland.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ZeroCool32"/>
	<link rel="alternate" type="text/html" href="https://www.legoisland.org/wiki/Special:Contributions/ZeroCool32"/>
	<updated>2026-04-18T05:29:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://www.legoisland.org/index.php?title=MxCh&amp;diff=560</id>
		<title>MxCh</title>
		<link rel="alternate" type="text/html" href="https://www.legoisland.org/index.php?title=MxCh&amp;diff=560"/>
		<updated>2025-04-19T10:28:34Z</updated>

		<summary type="html">&lt;p&gt;ZeroCool32: Add sizes in kbytes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[MxCh]] is the identifier for a [[Lego Island]] data chunk. They are seen extensively in [[SI Files]] to allow interleaving of several different data types.&lt;br /&gt;
&lt;br /&gt;
MxCh chunks contain partial data of various different data types intended to be joined together continuously to form a complete file (an MxDa section). The chunks can also contain solely header data. A chunk will almost never contain a complete file on its own.&lt;br /&gt;
&lt;br /&gt;
== Specification ==&lt;br /&gt;
&lt;br /&gt;
=== WAV Data ===&lt;br /&gt;
&lt;br /&gt;
{{Incomplete}}&lt;br /&gt;
&lt;br /&gt;
This data is only known to be accurate for chunks that store WAV data.&lt;br /&gt;
&lt;br /&gt;
The MxCh header is 22 bytes long and specifies the length of the chunk with other data. MxCh chunks must start on an even offset or they will not be skipped by LEGO Island.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bytes !! Offset !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;MxCh&amp;quot; || 0 || 4-byte chunk identifier&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size || 4 || 4-byte integer specifying the size of this chunk minus the first 8 bytes&lt;br /&gt;
|-&lt;br /&gt;
| Flags || 8 || 2-bytes that appear to have set flags about the chunk&lt;br /&gt;
|-&lt;br /&gt;
| ID || 10 || 4-byte integer that identifies which MxOb this belongs to.&lt;br /&gt;
|-&lt;br /&gt;
| Milliseconds || 14 || 4-byte integer that appears to be the chunk&#039;s offset in milliseconds increasing continuously (1000, 2000, 3000, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Data Size || 18 || 4-byte integer for the size of the data following the header.&lt;br /&gt;
|-&lt;br /&gt;
| Data || 22 || Arbitrary data no more than &amp;quot;Chunk Size - 14&amp;quot; in bytes (14 for the 22-byte header minus the first 8 bytes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
The full purpose of the 2-byte &amp;quot;Flags&amp;quot; value above is not entirely known, however the following appear to be accurate:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Flag !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Chunk is an ending chunk. Chunk size must also be &amp;quot;14&amp;quot; (length of just the header - implies an empty chunk)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || Chunk is split (see below).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Split Chunk ===&lt;br /&gt;
In addition to the data being split into chunks, the chunks themselves are sometimes split into two. If a chunk is split, both chunks will have the &#039;&#039;&#039;Flags&#039;&#039;&#039; section set to 16, and they&#039;ll also both have the same &#039;&#039;&#039;Milliseconds&#039;&#039;&#039; value. The &amp;quot;Chunk Size&amp;quot; will be accurate to each chunk&#039;s size (data length + 14), but the &amp;quot;Chunk Data Size&amp;quot; of the first chunk appears to be the total size of both chunks&#039; data. The second chunk&#039;s &amp;quot;Chunk Data Size&amp;quot; is accurate to its own chunk data size.&lt;br /&gt;
&lt;br /&gt;
The necessity of the split chunks appears to be due to the way Lego Island streams SI files; it appears to only be able to stream a certain amount of bytes (the buffer size) dictated by the SI file&#039;s [[MxHd]] (in the case of [[JUKEBOX.SI]], 20000h/131072 bytes/128 kbytes; in the case of SNDANIM.SI, 58000h/360558 bytes/352 kbytes; otherwise, 10000h/65536 bytes/64 kbytes) at a time and the SI file must conform to this limitation. A chunk can have no data that extends over a multiple of the set buffer size. Doing so causes Lego Island to crash as it tries to read beyond the buffer it&#039;s allocated for streaming. Therefore, if a chunk is going to extend beyond a buffer size multiple, it must be split at that point and then another chunk must be written directly afterwards with the remainder of the data. This is a big obstacle to inserting audio that is larger than the existing audio, since literally all subsequent chunks of all subsequent songs must be shifted to fit around the buffer size multipliers or Lego Island will crash. This essentially necessitates a reconstruction of most, if not all, of the file.&lt;br /&gt;
&lt;br /&gt;
There seems to be no hard limit for the size of a chunk, other than having to accommodate these boundaries set by the [[MxHd]]. LEGO Island allows a chunk to be split more than once (possibly infinitely), meaning as long as the chunk is split every set buffer size it may be possible for each song to be read as one large chunk rather than one chunk per second. However, LEGO Island appears to expect each chunk to be one second long and seems to time certain events based on the length of a chunk rather than a length of time.&lt;/div&gt;</summary>
		<author><name>ZeroCool32</name></author>
	</entry>
	<entry>
		<id>https://www.legoisland.org/index.php?title=Interleaf_File&amp;diff=534</id>
		<title>Interleaf File</title>
		<link rel="alternate" type="text/html" href="https://www.legoisland.org/index.php?title=Interleaf_File&amp;diff=534"/>
		<updated>2024-12-29T12:38:31Z</updated>

		<summary type="html">&lt;p&gt;ZeroCool32: Add version table.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An &#039;&#039;&#039;Interleaf File&#039;&#039;&#039; (extension &#039;&#039;&#039;.SI&#039;&#039;&#039;) is a general-purpose asset archive format designed for streaming from CD-ROM. It was developed by [[Mindscape]] for use throughout [[LEGO Island]].&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Interleaf file format was originally thought to be exclusive to &#039;&#039;[[LEGO Island]]&#039;&#039;, but has since also been discovered in earlier [[Mindscape]] games called &#039;&#039;{{Wikipedia|Warhammer: Shadow of the Horned Rat}}&#039;&#039; and &#039;&#039;{{Wikipedia|Chessmaster 5000}}&#039;&#039;. Regardless, it remains an extremely obscure format and therefore is not well documented. All information known about this format has been through reverse engineering or interviews with game developers.&lt;br /&gt;
&lt;br /&gt;
Interleaf files are derived from the {{Wikipedia|Resource Interchange File Format}} standard (best known as the basis of {{Wikipedia|Audio Video Interleave}} and {{Wikipedia|WAV}} files). They are comprised of various LEGO Island-specific structures (such as [[MxDa]] and [[MxCh]]), however these structures usually contain standard format file data (such as PCM WAV audio and Windows BMP images).&lt;br /&gt;
&lt;br /&gt;
The primary purpose of Interleaf files is to split various file formats into smaller chunks that are interleaved together so they can all be read as one continuous stream. For example, a chunk of voice data may be followed by a chunk of matching animation data or a bitmapped graphic. This is done to reduce the amount of seeking around the disc for assets since CD-ROM speeds of the era were generally very slow and end-user hard drive space was usually too limited to store much game data.&lt;br /&gt;
&lt;br /&gt;
Interleaf files were produced internally with a tool called [[Weaver]], however this tool has never been publicly released or leaked.&lt;br /&gt;
&lt;br /&gt;
== Version ==&lt;br /&gt;
Interleaf files went through a number of revisions, as indicated by this error message that&#039;s thrown if an SI version doesn&#039;t match:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:WrongSIVersion.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The SI version is set in an SI file&#039;s [[MxHd]] section. The version used in both retail versions is 2.2.&lt;br /&gt;
&lt;br /&gt;
Below is a table of known SI file versions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known Interleaf/SI file versions&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Known usage&lt;br /&gt;
|-&lt;br /&gt;
| 1.0 || &#039;&#039;Warhammer: Shadow of the Horned Rat&#039;&#039;, &#039;&#039;Chestmaster 5000&#039;&#039;, &#039;&#039;LEGO Island&#039;&#039; (July 1996 build)&lt;br /&gt;
|-&lt;br /&gt;
| 2.2 || &#039;&#039;LEGO Island (final)&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modification ==&lt;br /&gt;
As aforementioned, no official documentation of Interleaf files has ever been released. There are a handful of tools for working with them (e.g. [[LEGO Island Rebuilder]]), but none with a complete implementation. Therefore, manual hex editing is often used to replace or extract assets.&lt;br /&gt;
&lt;br /&gt;
When working with Interleaf files, this interleaving needs to be taken account as it will dictate how the data is both extracted and inserted. One file stream may be separated into several chunks with chunks of other files interleaved between them.&lt;br /&gt;
&lt;br /&gt;
Since audio is stored in PCM, Interleaf files can be crudely listened to using Audacity&#039;s &amp;quot;Import Raw Data&amp;quot; feature. SI audio is always uncompressed mono PCM and is either 11025 Hz and 16-bit or 22050 Hz and 8-bit. Unfortunately, due to the aforementioned chunked/interleaved nature of SI files, the audio retrieved through this method will be noticeably glitchy and will require further processing (removal of chunk headers and any non-audio chunks) to extract clean PCM data.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[JUKEBOX.SI]]&lt;br /&gt;
* [[NOCD.SI]]&lt;/div&gt;</summary>
		<author><name>ZeroCool32</name></author>
	</entry>
	<entry>
		<id>https://www.legoisland.org/index.php?title=NOCD.SI&amp;diff=533</id>
		<title>NOCD.SI</title>
		<link rel="alternate" type="text/html" href="https://www.legoisland.org/index.php?title=NOCD.SI&amp;diff=533"/>
		<updated>2024-12-29T11:57:44Z</updated>

		<summary type="html">&lt;p&gt;ZeroCool32: Add registry path.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[NOCD.SI]] is an [[Interleaf File]] played whenever the game cannot find its main assets, which under normal circumstances indicates that the game CD-ROM is not inserted. It&#039;s the only Interleaf file that gets transferred to LEGO Island&#039;s install directory, as it naturally needs to be accessible at all times. Its only content is a [[Smacker]] video stream.&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
NOCD.SI contains one 3-second video, which features the Infomaniac who charmingly tells you that there is no CD inserted:&lt;br /&gt;
&lt;br /&gt;
{{YouTube|vmTF088r2DI}}&lt;br /&gt;
&lt;br /&gt;
When LEGO Island starts up, it checks for &amp;lt;code&amp;gt;Lego\Scripts\Isle\ISLE.SI&amp;lt;/code&amp;gt; in either the &amp;lt;code&amp;gt;hdpath&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;cdpath&amp;lt;/code&amp;gt; (set in the {{Wikipedia|Windows Registry}} by the installer at &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\Mindscape\LEGO Island&amp;lt;/code&amp;gt; on 32-bit systems, and &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Mindscape\LEGO Island&amp;lt;/code&amp;gt; on 64-bit systems). If it cannot find it, it plays the Smacker video in NOCD.SI and then exits immediately after.&lt;br /&gt;
&lt;br /&gt;
If it &#039;&#039;does&#039;&#039; find [[ISLE.SI]], it will continue trying to launch as normal, even if the rest of the files are missing. If only ISLE.SI is present, it will softlock almost immediately as it fails to find [[INTRO.SI]] (opening logos and cutscene script) and [[INFOMAIN.SI]] (the Information Center script).&lt;br /&gt;
&lt;br /&gt;
The dialogue in NOCD.SI was originally intended for the CD being &#039;&#039;ejected&#039;&#039; during gameplay, but has been edited and repurposed in NOCD.SI. The original unused voice clip still exists in the game files, revealing the full line to be: &#039;&#039;&#039;&amp;quot;Whoops! You have to put the CD back in your computer.&amp;quot;&#039;&#039;&#039; The version of the line in NOCD.SI crudely edits out the word &amp;quot;back&amp;quot; to change its meaning. A second unused audio clip in the game files says a very similar thing, indicating that this was clearly a planned feature of the game. Instead, in the final release, ejecting the disc during gameplay simply causes the game to crash. Presumably the developers were unable to achieve this functionality before the game was set for release.&lt;br /&gt;
&lt;br /&gt;
None of the other dubs contain any noticeable cut, despite the fact that some of them are indeed worded to imply putting the CD &amp;quot;back&amp;quot; into the computer.&lt;br /&gt;
&lt;br /&gt;
== Language Differences ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version (Language) !! Dialogue !! Audio&lt;br /&gt;
|-&lt;br /&gt;
| Lego Island (English) || &amp;quot;Whoops! You have to put the CD in your computer.&amp;quot; || [[File:NOCDEnglish.wav]]&lt;br /&gt;
|-&lt;br /&gt;
| Abenteuer auf der LEGO Insel (German) || &amp;quot;Hoppla! Leg die CD wieder in deinen Computer ein.&amp;quot; || [[File:NOCDGerman.wav]]&lt;br /&gt;
|-&lt;br /&gt;
| レゴアイランドの大冒険 (Japanese) || &amp;quot;おっと！コンピュータにCD-ROMを入れておくれよ。&amp;quot;&amp;lt;br/&amp;gt;&amp;quot;Otto! Konpyuuta ni CD-ROM o irete okureyo.&amp;quot; || [[File:NOCDJapanese.wav]]&lt;br /&gt;
|-&lt;br /&gt;
| Aventures sur L&#039;île LEGO (French) || &amp;quot;Ouh là là‌ ! Il faut que tu remettes le CD dans ton ordinateur.&amp;quot; || [[File:NOCDFrench.wav]]&lt;br /&gt;
|-&lt;br /&gt;
| A Ilha LEGO (Portuguese) || &amp;quot;Ooopa! Você tem que por o CD no computador!&amp;quot; || [[File:NOCDPortuguese.wav]]&lt;br /&gt;
|-&lt;br /&gt;
| La Isla LEGO (Spanish) || &amp;quot;¡Eh!, tienes que poner el CD en la computadora.&amp;quot; || [[File:NOCDSpanish.wav]]&lt;br /&gt;
|-&lt;br /&gt;
| Остров LEGO (Russian) || &amp;quot;Опа! Вставь в дисковод компакт-диск с игрой!&amp;quot;&amp;lt;br/&amp;gt;&amp;quot;Opa! Vstav&#039; v diskovod kompakt-disk s igroj!&amp;quot; || [[File:NOCDRussian.wav]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Unused Variants == &lt;br /&gt;
As previously mentioned, NOCD.SI&#039;s English dialogue was edited and repurposed from a slightly different line telling players to re-insert the CD if they ejected it during gameplay. The unedited line remains in the game files, specifically in Interleaf file [[INFOMAIN.SI]]. INFOMAIN.SI also contains a second recorded (but unused) line that was ostensibly intended for the same purpose.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Dialogue !! Audio&lt;br /&gt;
|-&lt;br /&gt;
|  &amp;quot;Whoops! You have to put the CD back in your computer.&amp;quot; || [[File:CDBack.wav]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;I just figured out why it isn&#039;t working! You have to put the CD back into the computer!&amp;quot; || [[File:CDBack2.wav]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>ZeroCool32</name></author>
	</entry>
</feed>