https://wowdev.wiki/index.php?title=BLTE&feed=atom&action=history
BLTE - Revision history
2024-03-29T14:29:23Z
Revision history for this page on the wiki
MediaWiki 1.39.7
https://wowdev.wiki/index.php?title=BLTE&diff=35053&oldid=prev
Kiljacken at 16:05, 6 October 2022
2022-10-06T16:05:29Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 17:05, 6 October 2022</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l155">Line 155:</td>
<td colspan="2" class="diff-lineno">Line 155:</td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>*** if size <= 0x4000, then <tt>zip-bits</tt> is <tt>14</tt></div></td><td class="diff-marker"></td><td style="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;"><div>*** if size <= 0x4000, then <tt>zip-bits</tt> is <tt>14</tt></div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>*** otherwise <tt>zip-bits</tt> is <tt>15</tt></div></td><td class="diff-marker"></td><td style="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;"><div>*** otherwise <tt>zip-bits</tt> is <tt>15</tt></div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="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;"><div>Technically, for block sizes <= 0x100, <tt>zip-bits</tt> should be <tt>8</tt>, but this seems to not be the case in BLTE (likely Zlib doesn't support a window size of 8 bits).</div></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;">*** </ins>Technically, for block sizes <= 0x100, <tt>zip-bits</tt> should be <tt>8</tt>, but this seems to not be the case in BLTE (likely Zlib doesn't support a window size of 8 bits).</div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><br/></td><td class="diff-marker"></td><td style="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;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>===Examples===</div></td><td class="diff-marker"></td><td style="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;"><div>===Examples===</div></td></tr>
</table>
Kiljacken
https://wowdev.wiki/index.php?title=BLTE&diff=35052&oldid=prev
Kiljacken at 16:05, 6 October 2022
2022-10-06T16:05:00Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 17:05, 6 October 2022</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l148">Line 148:</td>
<td colspan="2" class="diff-lineno">Line 148:</td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>* where <tt>zip-level</tt> defaults to <tt>9</tt> and <tt>zip-bits</tt> to <tt>15</tt> if not given</div></td><td class="diff-marker"></td><td style="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;"><div>* where <tt>zip-level</tt> defaults to <tt>9</tt> and <tt>zip-bits</tt> to <tt>15</tt> if not given</div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>** <tt>zip-bits</tt> with value <tt>'mpq'</tt> means that zip-bits is calculated using based on chunk size like in MPQ:</div></td><td class="diff-marker"></td><td style="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;"><div>** <tt>zip-bits</tt> with value <tt>'mpq'</tt> means that zip-bits is calculated using based on chunk size like in MPQ:</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="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;"><div><del style="font-weight: bold; text-decoration: none;">*** if size <= 0x100, then <tt>zip-bits</tt> is <tt>8</tt></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>*** if size <= 0x200, then <tt>zip-bits</tt> is <tt>9</tt></div></td><td class="diff-marker"></td><td style="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;"><div>*** if size <= 0x200, then <tt>zip-bits</tt> is <tt>9</tt></div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>*** if size <= 0x400, then <tt>zip-bits</tt> is <tt>10</tt></div></td><td class="diff-marker"></td><td style="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;"><div>*** if size <= 0x400, then <tt>zip-bits</tt> is <tt>10</tt></div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l156">Line 156:</td>
<td colspan="2" class="diff-lineno">Line 155:</td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>*** if size <= 0x4000, then <tt>zip-bits</tt> is <tt>14</tt></div></td><td class="diff-marker"></td><td style="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;"><div>*** if size <= 0x4000, then <tt>zip-bits</tt> is <tt>14</tt></div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>*** otherwise <tt>zip-bits</tt> is <tt>15</tt></div></td><td class="diff-marker"></td><td style="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;"><div>*** otherwise <tt>zip-bits</tt> is <tt>15</tt></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;">Technically, for block sizes <= 0x100, <tt>zip-bits</tt> should be <tt>8</tt>, but this seems to not be the case in BLTE (likely Zlib doesn't support a window size of 8 bits).</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><br/></td><td class="diff-marker"></td><td style="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;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>===Examples===</div></td><td class="diff-marker"></td><td style="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;"><div>===Examples===</div></td></tr>
</table>
Kiljacken
https://wowdev.wiki/index.php?title=BLTE&diff=35051&oldid=prev
Kiljacken: /* Encoding Specification (ESpec) */
2022-10-05T20:25:46Z
<p><span dir="auto"><span class="autocomment">Encoding Specification (ESpec)</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 21:25, 5 October 2022</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l147">Line 147:</td>
<td colspan="2" class="diff-lineno">Line 147:</td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>** "all remaining bytes" ''may be 0'', producing no blocks</div></td><td class="diff-marker"></td><td style="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;"><div>** "all remaining bytes" ''may be 0'', producing no blocks</div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>* where <tt>zip-level</tt> defaults to <tt>9</tt> and <tt>zip-bits</tt> to <tt>15</tt> if not given</div></td><td class="diff-marker"></td><td style="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;"><div>* where <tt>zip-level</tt> defaults to <tt>9</tt> and <tt>zip-bits</tt> to <tt>15</tt> if not given</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="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;"><div>** <tt>zip-bits</tt> with value <tt>'mpq'</tt> means <tt><del style="font-weight: bold; text-decoration: none;">0</del></tt></div></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div>** <tt>zip-bits</tt> with value <tt>'mpq'</tt> means <ins style="font-weight: bold; text-decoration: none;">that zip-bits is calculated using based on chunk size like in MPQ:</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;">*** if size <= 0x100, then <tt>zip-bits</tt> is <tt>8</tt></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;">*** if size <= 0x200, then <tt>zip-bits</tt> is <tt>9</tt></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;">*** if size <= 0x400, then <tt>zip-bits</tt> is <tt>10</tt></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;">*** if size <= 0x800, then <tt>zip-bits</tt> is <tt>11</tt></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;">*** if size <= 0x1000, then <tt>zip-bits</tt> is <tt>12</tt></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;">*** if size <= 0x2000, then <tt>zip-bits</tt> is <tt>13</tt></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;">*** if size <= 0x4000, then <tt>zip-bits</tt> is <tt>14</tt></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;">*** otherwise <tt>zip-bits</tt> is </ins><tt><ins style="font-weight: bold; text-decoration: none;">15</ins></tt></div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><br/></td><td class="diff-marker"></td><td style="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;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>===Examples===</div></td><td class="diff-marker"></td><td style="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;"><div>===Examples===</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l190">Line 190:</td>
<td colspan="2" class="diff-lineno">Line 198:</td></tr>
<tr><td class="diff-marker"></td><td style="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;"><br/></td><td class="diff-marker"></td><td style="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;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>* blocks on top level</div></td><td class="diff-marker"></td><td style="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;"><div>* blocks on top level</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="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;"><div>** unspecified count of 16 kb chunks of zipped data with level=6, bits=<del style="font-weight: bold; text-decoration: none;">0</del></div></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div>** unspecified count of 16 kb chunks of zipped data with level=6, bits=<ins style="font-weight: bold; text-decoration: none;">14 (see MPQ behavior above)</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>*** last chunk <= 16 kb</div></td><td class="diff-marker"></td><td style="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;"><div>*** last chunk <= 16 kb</div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><br/></td><td class="diff-marker"></td><td style="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;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>[[Category:Format]]</div></td><td class="diff-marker"></td><td style="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;"><div>[[Category:Format]]</div></td></tr>
</table>
Kiljacken
https://wowdev.wiki/index.php?title=BLTE&diff=33341&oldid=prev
Schlumpf: /* Encoding Specification (ESpec) */
2021-03-02T21:04:11Z
<p><span dir="auto"><span class="autocomment">Encoding Specification (ESpec)</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 22:04, 2 March 2021</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l141">Line 141:</td>
<td colspan="2" class="diff-lineno">Line 141:</td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div> encryption-key = ? eight byte upper-hex encoded [[#Encryption_keys|key name]] ?</div></td><td class="diff-marker"></td><td style="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;"><div> encryption-key = ? eight byte upper-hex encoded [[#Encryption_keys|key name]] ?</div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div> ;</div></td><td class="diff-marker"></td><td style="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;"><div> ;</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="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;"><div> encryption-iv = ? four byte <del style="font-weight: bold; text-decoration: none;">upper</del>-<del style="font-weight: bold; text-decoration: none;">hex encoded </del>IV value ?</div></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div> encryption-iv = ? four byte <ins style="font-weight: bold; text-decoration: none;">hex</ins>-<ins style="font-weight: bold; text-decoration: none;">string </ins>IV value ?</div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div> ;</div></td><td class="diff-marker"></td><td style="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;"><div> ;</div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><br/></td><td class="diff-marker"></td><td style="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;"><br/></td></tr>
</table>
Schlumpf
https://wowdev.wiki/index.php?title=BLTE&diff=26744&oldid=prev
RaidAndFade: fixed a small typo
2019-05-08T01:19:26Z
<p>fixed a small typo</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 02:19, 8 May 2019</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l37">Line 37:</td>
<td colspan="2" class="diff-lineno">Line 37:</td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>| 0x00 || uint32_t [BE] || compressedSize || Compressed size of the chunk (the compression mode byte is included).</div></td><td class="diff-marker"></td><td style="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;"><div>| 0x00 || uint32_t [BE] || compressedSize || Compressed size of the chunk (the compression mode byte is included).</div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>|-</div></td><td class="diff-marker"></td><td style="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;"><div>|-</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="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;"><div>| 0x04 || uint32_t [BE] || decompressedSize || Decompressed <del style="font-weight: bold; text-decoration: none;">chunk </del>of the <del style="font-weight: bold; text-decoration: none;">size</del>.</div></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div>| 0x04 || uint32_t [BE] || decompressedSize || Decompressed <ins style="font-weight: bold; text-decoration: none;">size </ins>of the <ins style="font-weight: bold; text-decoration: none;">chunk</ins>.</div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>|-</div></td><td class="diff-marker"></td><td style="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;"><div>|-</div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>| 0x08 || char[16] || checksum || The checksum of the compressed chunk (the compression mode byte is included).</div></td><td class="diff-marker"></td><td style="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;"><div>| 0x08 || char[16] || checksum || The checksum of the compressed chunk (the compression mode byte is included).</div></td></tr>
</table>
RaidAndFade
https://wowdev.wiki/index.php?title=BLTE&diff=26277&oldid=prev
Marlamin at 13:02, 17 October 2018
2018-10-17T13:02:48Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:02, 17 October 2018</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l192">Line 192:</td>
<td colspan="2" class="diff-lineno">Line 192:</td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>** unspecified count of 16 kb chunks of zipped data with level=6, bits=0</div></td><td class="diff-marker"></td><td style="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;"><div>** unspecified count of 16 kb chunks of zipped data with level=6, bits=0</div></td></tr>
<tr><td class="diff-marker"></td><td style="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;"><div>*** last chunk <= 16 kb</div></td><td class="diff-marker"></td><td style="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;"><div>*** last chunk <= 16 kb</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="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;"><div><ins style="font-weight: bold; text-decoration: none;">[[Category:Format]]</ins></div></td></tr>
</table>
Marlamin
https://wowdev.wiki/index.php?title=BLTE&diff=26242&oldid=prev
Marlamin: Separate BLTE article
2018-10-14T00:22:30Z
<p>Separate BLTE article</p>
<p><b>New page</b></p><div>Any files stored inside [[TACT]] and [[CASC]] data files are BLTE (likely short for '''bl'''ock'''t'''able '''e'''ncoding) encoded, which means before reading anything in the file, first you have to decode it. <br />
<br />
It consists of these chunks in the following order:<br />
* Header<br />
* ChunkInfo (only if Header.headerSize > 0)<br />
* Data<br />
<br />
<br />
To read a BLTE encoded file:<br />
# Read the Header chunk<br />
# Read the ChunkInfo chunk if Header.headerSize > 0<br />
# Read each of the Data chunks and combine them to create the complete file<br />
<br />
'''Note:''' If there is no ChunkInfo struct, there is just one Data chunk.<br />
<br />
<br />
*'''Header'''<br />
{| border="1" cellpadding="2" style="background:#FCFCFC; color:black"<br />
! width="80" | Offset (Hex)<br />
! width="200" | Type<br />
! width="150" | Name<br />
! width="900" | Description<br />
|-<br />
| 0x00 || char[4] || FileSignature || "BLTE"<br />
|-<br />
| 0x04 || uint32_t [BE] || headerSize || Size of the BLTE header (BLTE header = Header + ChunkInfo).<br />
|}<br />
<br />
<br />
*'''ChunkInfoEntry'''<br />
{| border="1" cellpadding="2" style="background:#FCFCFC; color:black"<br />
! width="80" | Offset (Hex)<br />
! width="200" | Type<br />
! width="150" | Name<br />
! width="900" | Description<br />
|-<br />
| 0x00 || uint32_t [BE] || compressedSize || Compressed size of the chunk (the compression mode byte is included).<br />
|-<br />
| 0x04 || uint32_t [BE] || decompressedSize || Decompressed chunk of the size.<br />
|-<br />
| 0x08 || char[16] || checksum || The checksum of the compressed chunk (the compression mode byte is included).<br />
|}<br />
<br />
<br />
*'''ChunkInfo'''<br />
{| border="1" cellpadding="2" style="background:#FCFCFC; color:black"<br />
! width="80" | Offset (Hex)<br />
! width="200" | Type<br />
! width="150" | Name<br />
! width="900" | Description<br />
|-<br />
| 0x00 || uint8_t [BE] || flags || Flags of some sort.<br />
|-<br />
| 0x02 || uint24_t [BE] || chunkCount || The number of chunks.<br />
|-<br />
| 0x04 || ChunkInfoEntry[chunkCount] || chunks || The chunk info for the chunks in the file.<br />
|}<br />
<br />
<br />
if either flags != 0xF or chunkCount == 0, the file is deemed badly formatted.<br />
<br />
*'''Data'''<br />
{| border="1" cellpadding="2" style="background:#FCFCFC; color:black"<br />
! width="85" | Offset (Hex)<br />
! width="260" | Type<br />
! width="150" | Name<br />
! width="900" | Description<br />
|-<br />
| 0x00 || char || encodingMode || Available values: N, Z, F, E<br />
|-<br />
| 0x01 || char[ChunkInfo.compressedSize - 1] || data || The encoded data.<br />
|}<br />
<br />
<br />
<br />
Example implementation as Binary Template can be found here: [[BLTE-Template]]<br />
<br />
<br />
'''Encoding modes:'''<br />
* N: Plain data.<br />
* Z: Zlib encoded data.<br />
* 4: lz4hc encoded data.<br />
<br />
The encoded data is preceded by the two header bytes as specified by the zlib RFC [https://www.ietf.org/rfc/rfc1950.txt] (Section 2.2). 78 DA most of the time.<br />
<br />
Reading bits left-to-right:<br />
<br />
var compressionInfo = reader.ReadBits(4);<br />
var compressionMethod = reader.ReadBits(4);<br />
var flevel = reader.ReadBits(2);<br />
var fdict = reader.ReadBit();<br />
var fcheck = reader.ReadBits(5);<br />
<br />
In .NET you can basically skip these bytes and use DeflateStream. Make sure to wrap around the chunk so it internally does not try to consume bytes from the following chunk.<br />
<br />
* F: Recursively encoded BLTE data.<br />
* E: encrypted: one of salsa20, arc4, rc4.<br />
<br />
struct <br />
{<br />
unsigned char key_name_length; // 0x8<br />
unsigned char key_name[key_name_length];<br />
unsigned char IV_length; // 0x4<br />
unsigned char IV[IV_length];<br />
char type; // 'S': salsa20, 'A': arc4<br />
} E_chunk;<br />
<br />
key_name is resolved by client to the actual key. keys are distributed via keyrings and some keys are hardcoded. <br />
<br />
==Encoding Specification (ESpec)==<br />
ESpecs are string-based representations of the encoding of BLTE-encoded data files that serve as recipes for the patcher to produce a binary-identical encoded output file (as patching operates on the unencoded data). The information they contain is redundant with the information in the BLTE header of the file itself, but due to ESpec shorthand notations multiple ESpecs can encode the same output for the same input (e.g. "b:256*2=z", "b:{256=z,256=z}", etc.), and the same ESpec can result in different output block configurations for inputs of different sizes (e.g. 500 bytes of input results in 2 blocks and 600 bytes 3 blocks with "b:256*=z"). They are used most extensively in [[#Encoding|Encoding files]].<br />
<br />
An example parser can be found [https://gist.github.com/heksesang/b15057fe3f093eebee3a at this gist].<br />
<br />
The strings are not whitespace-tolerant. They use the following [https://en.wikipedia.org/wiki/Extended_Backus–Naur_form#Table_of_symbols EBNF grammar] (concatenations are omitted), where <tt>e-spec</tt> is a top level string:<br />
<br />
e-spec = ( 'n' )<br />
| ( 'z' [ ':' ( zip-level | '{' zip-level ',' zip-bits '}' ) ] )<br />
| ( 'e' ':' '{' encryption-key ',' encryption-iv ',' e-spec '}' )<br />
| ( 'b' ':' ( final-subchunk | '{' ( [{block-subchunk ','}] final-subchunk ) '}' ) )<br />
;<br />
<br />
block-subchunk = block-size-spec '=' e-spec ;<br />
block-size-spec = block-size [ '*' block-count ] ; (* block-count (1 if unspecified) blocks of block-size bytes *)<br />
block-size = number [ block-unit ] ;<br />
block-unit = 'K' (* count * 2^10 *)<br />
| 'M' (* count * 2^20 *)<br />
;<br />
block-count = number ;<br />
final-subchunk = final-size-spec '=' e-spec ;<br />
final-size-spec = block-size-spec<br />
| block-size '*' (* greedy spec of block-size blocks (last block <= block-size) *)<br />
| '*' (* greedy block *)<br />
;<br />
<br />
zip-level = number<br />
;<br />
zip-bits = number | ( 'm' 'p' 'q' )<br />
;<br />
<br />
encryption-key = ? eight byte upper-hex encoded [[#Encryption_keys|key name]] ?<br />
;<br />
encryption-iv = ? four byte upper-hex encoded IV value ?<br />
;<br />
<br />
* where a <tt>greedy</tt> final-size-spec consumes all remaining bytes in the parent block or file<br />
** "all remaining bytes" ''may be 0'', producing no blocks<br />
* where <tt>zip-level</tt> defaults to <tt>9</tt> and <tt>zip-bits</tt> to <tt>15</tt> if not given<br />
** <tt>zip-bits</tt> with value <tt>'mpq'</tt> means <tt>0</tt><br />
<br />
===Examples===<br />
<br />
b:{164=z,16K*565=z,1656=z,140164=z}<br />
<br />
* blocks on top level<br />
** 164 bytes of zip with level=9, bits=15<br />
** 565 blocks of 16Kb zip chunks with level=9, bits=15<br />
** 1656 bytes of zip with level=9, bits=15<br />
** 140164 of zip with level=9, bits=15<br />
<br />
b:{1768=z,66443=n}<br />
<br />
* blocks on top level<br />
** 1768 bytes of zip with level=9, bits=15<br />
** 66443 bytes of raw data<br />
<br />
b:{256K*=e:{237DA26C65073F42,06FC152E,z}}<br />
<br />
* blocks on top level<br />
** unspecified count of 256 kb chunks encrypted with key 237DA26C65073F42 and IV 06FC152E<br />
*** containing zip data with level=9, bits=15<br />
*** last chunk <= 256 kb<br />
<br />
z<br />
<br />
* zipped data on top level with level=9, bits=15<br />
<br />
b:{22=n,31943=z,211232=n,27037696=n,138656=n,17747968=n,*=z}<br />
<br />
* blocks on top level<br />
** 22 bytes of raw data<br />
** 31943 bytes of zip with level=9, bits=15<br />
** 211232 bytes of raw data<br />
** 27037696 bytes of raw data<br />
** 138656 bytes of raw data<br />
** 17747968 bytes of raw data<br />
** an unspecified amount of zipped data with level=9, bits=15<br />
<br />
b:{16K*=z:{6,mpq}}<br />
<br />
* blocks on top level<br />
** unspecified count of 16 kb chunks of zipped data with level=6, bits=0<br />
*** last chunk <= 16 kb</div>
Marlamin