<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.lumasworkshop.com/w/index.php?action=history&amp;feed=atom&amp;title=MSBT_%28File_Format%29</id>
	<title>MSBT (File Format) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.lumasworkshop.com/w/index.php?action=history&amp;feed=atom&amp;title=MSBT_%28File_Format%29"/>
	<link rel="alternate" type="text/html" href="https://www.lumasworkshop.com/w/index.php?title=MSBT_(File_Format)&amp;action=history"/>
	<updated>2026-06-04T06:03:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://www.lumasworkshop.com/w/index.php?title=MSBT_(File_Format)&amp;diff=140&amp;oldid=prev</id>
		<title>Shibboleet: /* Label Indices */</title>
		<link rel="alternate" type="text/html" href="https://www.lumasworkshop.com/w/index.php?title=MSBT_(File_Format)&amp;diff=140&amp;oldid=prev"/>
		<updated>2024-03-07T16:05:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Label Indices&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:05, 7 March 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l69&quot;&gt;Line 69:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 69:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For example, a file with &#039;&#039;&#039;0x65&#039;&#039;&#039; label entries with a label string of &#039;&#039;&#039;Pichan001_Flow001&#039;&#039;&#039; will be at index 0 of the label list, with &#039;&#039;&#039;PichanRacer000_Flow002&#039;&#039;&#039; being at index 1, and so on.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For example, a file with &#039;&#039;&#039;0x65&#039;&#039;&#039; label entries with a label string of &#039;&#039;&#039;Pichan001_Flow001&#039;&#039;&#039; will be at index 0 of the label list, with &#039;&#039;&#039;PichanRacer000_Flow002&#039;&#039;&#039; being at index 1, and so on&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. If there is a gap between two indices, then it is filled with the previous entry&#039;s offset until the next index is determined&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== ATR1 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== ATR1 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key lw_wiki:diff:1.41:old-139:rev-140:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Shibboleet</name></author>
	</entry>
	<entry>
		<id>https://www.lumasworkshop.com/w/index.php?title=MSBT_(File_Format)&amp;diff=139&amp;oldid=prev</id>
		<title>Shibboleet: be more specific about how the hash table on LBL1 works</title>
		<link rel="alternate" type="text/html" href="https://www.lumasworkshop.com/w/index.php?title=MSBT_(File_Format)&amp;diff=139&amp;oldid=prev"/>
		<updated>2024-03-07T16:04:14Z</updated>

		<summary type="html">&lt;p&gt;be more specific about how the hash table on LBL1 works&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:04, 7 March 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l25&quot;&gt;Line 25:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 25:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== LBL1 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== LBL1 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;LBL1&#039;&#039; is a section that contains the &quot;labels&quot; that are assigned to text. It is a hash table to determine the index that the label is stored at. The indices of the offsets are determined by the &quot;hash&quot; of the number of entries in the list and the label name.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Header ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Header ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l56&quot;&gt;Line 56:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 57:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x04 || UInt32 || Offset to the strings associated with that label, offset relative to the field defining the amount of entries. Reads &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; strings, depending on the count read above.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| 0x04 || UInt32 || Offset to the strings associated with that label, offset relative to the field defining the amount of entries. Reads &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; strings, depending on the count read above.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Label Indices ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The following code can determine the index of a specific label:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;def hash_label(label, bucket_count):&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    val = 0&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    for c in label:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        val = ((val * 0x492) + ord(c)) &amp;amp; 0xFFFFFFFF&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    return val % bucket_count&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;For example, a file with &#039;&#039;&#039;0x65&#039;&#039;&#039; label entries with a label string of &#039;&#039;&#039;Pichan001_Flow001&#039;&#039;&#039; will be at index 0 of the label list, with &#039;&#039;&#039;PichanRacer000_Flow002&#039;&#039;&#039; being at index 1, and so on.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== ATR1 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== ATR1 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Shibboleet</name></author>
	</entry>
	<entry>
		<id>https://www.lumasworkshop.com/w/index.php?title=MSBT_(File_Format)&amp;diff=118&amp;oldid=prev</id>
		<title>Super Hackio: Super Hackio moved page MSBT to MSBT (File Format) without leaving a redirect: Title format change</title>
		<link rel="alternate" type="text/html" href="https://www.lumasworkshop.com/w/index.php?title=MSBT_(File_Format)&amp;diff=118&amp;oldid=prev"/>
		<updated>2024-01-26T22:47:02Z</updated>

		<summary type="html">&lt;p&gt;Super Hackio moved page &lt;a href=&quot;/w/index.php?title=MSBT&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;MSBT (page does not exist)&quot;&gt;MSBT&lt;/a&gt; to &lt;a href=&quot;/wiki/MSBT_(File_Format)&quot; title=&quot;MSBT (File Format)&quot;&gt;MSBT (File Format)&lt;/a&gt; without leaving a redirect: Title format change&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:47, 26 January 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key lw_wiki:diff:1.41:old-59:rev-118 --&gt;
&lt;/table&gt;</summary>
		<author><name>Super Hackio</name></author>
	</entry>
	<entry>
		<id>https://www.lumasworkshop.com/w/index.php?title=MSBT_(File_Format)&amp;diff=59&amp;oldid=prev</id>
		<title>MTLenz: Created page with &quot;Category:File formats &#039;&#039;&#039;MSBT&#039;&#039;&#039; stands for &#039;&#039;Message Binary Text&#039;&#039;, it contains all of the text used in &#039;&#039;&#039;Super Mario Galaxy 2&#039;&#039;&#039;.  == Header == {| class=&quot;wikitable&quot;  ! Offset !! Type !! Description |- | 0x00 || String || &#039;&#039;MsgStdBn&#039;&#039; in ASCII. |- | 0x08 || UInt16 || Endianess. 0xFEFF for Big Endian, 0xFFFE for Little Endian. |- | 0x0A || UInt32 || Version. |- | 0x0E || UInt16 || Number of sections. |- | 0x10 || UInt16 || Padding. |- | 0x12 || UInt32 || File length...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.lumasworkshop.com/w/index.php?title=MSBT_(File_Format)&amp;diff=59&amp;oldid=prev"/>
		<updated>2024-01-23T21:45:05Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/wiki/Category:File_formats&quot; title=&quot;Category:File formats&quot;&gt;Category:File formats&lt;/a&gt; &amp;#039;&amp;#039;&amp;#039;MSBT&amp;#039;&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;Message Binary Text&amp;#039;&amp;#039;, it contains all of the text used in &amp;#039;&amp;#039;&amp;#039;Super Mario Galaxy 2&amp;#039;&amp;#039;&amp;#039;.  == Header == {| class=&amp;quot;wikitable&amp;quot;  ! Offset !! Type !! Description |- | 0x00 || String || &amp;#039;&amp;#039;MsgStdBn&amp;#039;&amp;#039; in ASCII. |- | 0x08 || UInt16 || Endianess. 0xFEFF for Big Endian, 0xFFFE for Little Endian. |- | 0x0A || UInt32 || Version. |- | 0x0E || UInt16 || Number of sections. |- | 0x10 || UInt16 || Padding. |- | 0x12 || UInt32 || File length...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:File formats]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MSBT&amp;#039;&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;Message Binary Text&amp;#039;&amp;#039;, it contains all of the text used in &amp;#039;&amp;#039;&amp;#039;Super Mario Galaxy 2&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || String || &amp;#039;&amp;#039;MsgStdBn&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || Endianess. 0xFEFF for Big Endian, 0xFFFE for Little Endian.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt32 || Version.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || UInt16 || Number of sections.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt16 || Padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || UInt32 || File length.&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 || Byte[0xA] || Padding.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Sections =&lt;br /&gt;
After the header follows the sections. It is worth noting that these sections are padded to the nearest 0x10th byte with the value 0xAB.&lt;br /&gt;
&lt;br /&gt;
== LBL1 ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || String || &amp;#039;&amp;#039;LBL1&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Section size. Does not account for this header or padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[0x8] || Padding.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Label Entries ===&lt;br /&gt;
&lt;br /&gt;
After the header come the label entries.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Label count.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || LabelArray[N] || Labels, where &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; is the label count read above.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A label is defined by the following structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Number of strings associated with this entry.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Offset to the strings associated with that label, offset relative to the field defining the amount of entries. Reads &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; strings, depending on the count read above.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ATR1 ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || String || &amp;#039;&amp;#039;ATR1&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Section size. Does not account for this header or padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[0x8] || Padding.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Attribute Entries ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Attribute set count.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Attribute size. The size of each attribute in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || AttributeSetArray[N] || Attribute sets, where &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; is the set count read above.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The attribute structure is dependent on the game, but in Super Mario Galaxy 2 each attribute is of size 0x0C and has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || NPC Sound ID.&amp;lt;/br&amp;gt;TODO: Add a list of NPC Sounds here?&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || Camera type.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || AUTOMATIC - The camera will be handled automatically by the game.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || MANUAL - The camera used will be one from the CameraParam.bcam file inside the zone&amp;#039;s Map archive.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || NONE - The camera will not change.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || Trigger type.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || The player has to be close to the NPC and press A to start the dialog.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || The dialog is activated automatically when the player is close, but the player can still move when the dialog has started. The dialog stops when the player exits the trigger area.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || The dialog is activated automatically when the player is close, but the player has to finish the dialog to continue moving.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || The dialog is activated automatically when the player is anywhere (or in a much larger area?), but works otherwise like 2.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || Dialog style.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 &amp;amp;ndash; 2 || White textbox.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Billboard textbox.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || Camera ID. This is the ID that you find inside the CameraParam.bcam file. Needs to be higher than 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || Byte || MessageArea ID. This matches with MessageArea&amp;#039;s Obj Arg 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Byte ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || Offset to a UTF-16 encoded, null terminated, string. Seems to be unused.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TXT2 ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || String || &amp;#039;&amp;#039;TXT2&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Section size. Does not account for this header or padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[0x8] || Padding.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Text Entries ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Text count.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Text[N] || Texts, where &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; is the text count read above.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A text entry is a UTF-16 string, with embedded &amp;quot;tags&amp;quot; that affect the way the text displays and functions. A tag begins with a value of 0x000E and then the &amp;quot;tag&amp;quot;. The following &amp;quot;tags&amp;quot; are possible:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || System Group&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || Display Group&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || Sound Group&lt;br /&gt;
|-&lt;br /&gt;
| 0x3 || Picture Group&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || Font Size Group&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || Localize Group&lt;br /&gt;
|-&lt;br /&gt;
| 0x6 || Number Group&lt;br /&gt;
|-&lt;br /&gt;
| 0x7 || String Group&lt;br /&gt;
|-&lt;br /&gt;
| 0x9 || Race Time Group&lt;br /&gt;
|-&lt;br /&gt;
| 0xA || Font Group&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;tag&amp;quot; can have a &amp;quot;command&amp;quot;, which tells it how to function.&lt;br /&gt;
&lt;br /&gt;
=== System Group ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || Type. [0 == Japanese, 3 == Color]&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || Data size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || The color to use.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Display Group ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || Display type.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || Data size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || Padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || Number of frames to wait if the type is 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound Group ===&lt;br /&gt;
Plays a given sound.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || Should always be 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || String length.&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || String[Length] || UTF-16 string containing the sound effect to play.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Picture Group ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || Character index.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || Font.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || Character ID.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Font Size Group ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || Font Size.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Localize Group ===&lt;br /&gt;
Inserts the current player&amp;#039;s name.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte[0x6] || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Number Group ===&lt;br /&gt;
&lt;br /&gt;
=== String Group ===&lt;br /&gt;
&lt;br /&gt;
=== Race Time Group ===&lt;br /&gt;
&lt;br /&gt;
=== Font Group ===&lt;/div&gt;</summary>
		<author><name>MTLenz</name></author>
	</entry>
</feed>