docs/templates/pages/sega/misc/partition.html

269 lines
6.5 KiB
HTML

{% extends "sega.html" %}
{% block title %}SEGA Partition Structure{% endblock %}
{% block body %}
<h1>SEGA Partition Structure</h1>
<p>Games on the Ring* series use MBR partitioned drives. The core partition structure is as follows:</p>
<table>
<thead>
<tr>
<td>Partition</td>
<td>Size</td>
<td>Format</td>
<td>Content</td>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>1.5GiB</td>
<td>NTFS</td>
<td>Windows XP Embedded 2009</td>
</tr>
<tr>
<td>2</td>
<td>1.5GiB</td>
<td>NTFS</td>
<td>Windows recovery partition</td>
</tr>
<tr>
<td>3</td>
<td><i>remaining space</i></td>
<td>Extended Partition (LBA)</td>
<td>Game data</td>
</tr>
<tr>
<td>4</td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p>Extended partitions are structed by a linked list of partition headers at the beginning of each partition. These
headers reserve 3F<sub>h</sub> blocks for their information, however only use a single block at the start of this
for actual data. SEGA make use of the remaining blocks in the first extended partition header for SEGA boot records.
</p>
<table>
<thead>
<tr>
<td>Partition offset (blocks)</td>
<td>Content</td>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>Extended partition header</td>
</tr>
<tr>
<td>1</td>
<td>SEGA Partition Description</td>
</tr>
<tr>
<td>2</td>
<td>SEGA Boot Record (1)</td>
</tr>
<tr>
<td>3</td>
<td>SEGA Boot Record (2)</td>
</tr>
<tr>
<td>4-63</td>
<td>Additional data storage</td>
</tr>
<tr>
<td>64-...</td>
<td>Actual partition data</td>
</tr>
</tbody>
</table>
<p>Two identical copies of the SEGA Boot Record are present. This is for redundancy; if either is corrupted, an attempt
will be made to restore it from the other copy.</p>
<h2>SEGA Partition Description</h2>
<p>The SEGA Partition Description (SPD) largely echos the structure laid out by the extended partition headers, however
is the table SEGA loaders preferentially read. It takes up all 512 bytes of the block; it's structure is as follows:
</p>
<table>
<thead>
<tr>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
<td>E</td>
<td>F</td>
</tr>
</thead>
<tbody>
<tr>
<td>00<sub>h</sub></td>
<td colspan="4">CRC32</td>
<td>Ver</td>
<td colspan="11"></td>
</tr>
<tr>
<td>10<sub>h</sub></td>
<td>Slot content</td>
<td>?</td>
<td colspan="2">Block size</td>
<td colspan="4">Block count</td>
<td colspan="8"></td>
</tr>
<tr>
<td>20<sub>h</sub></td>
<td>Slot content</td>
<td>?</td>
<td colspan="2">Block size</td>
<td colspan="4">Block count</td>
<td colspan="8"></td>
</tr>
<tr>
<td>30<sub>h</sub></td>
<td>Slot content</td>
<td>?</td>
<td colspan="2">Block size</td>
<td colspan="4">Block count</td>
<td colspan="8"></td>
</tr>
<tr>
<td colspan="17">...</td>
</tr>
<tr>
<td>F0<sub>h</sub></td>
<td>Slot content</td>
<td>?</td>
<td colspan="2">Block size</td>
<td colspan="4">Block count</td>
<td colspan="8"></td>
</tr>
</tbody>
</table>
<p>The slot content types are:</p>
<table>
<thead>
<tr>
<td>Value</td>
<td>Meaning</td>
</tr>
</thead>
<tbody>
<tr>
<td>10<sub>h</sub></td>
<td>original0</td>
</tr>
<tr>
<td>11<sub>h</sub></td>
<td>original1</td>
</tr>
<tr>
<td>20<sub>h</sub></td>
<td>patch0</td>
</tr>
<tr>
<td>21<sub>h</sub></td>
<td>patch1</td>
</tr>
<tr>
<td>30<sub>h</sub></td>
<td>os</td>
</tr>
<tr>
<td>40<sub>h</sub></td>
<td>app_data</td>
</tr>
</tbody>
</table>
<h2>SEGA Boot Record</h2>
<p>The SEGA Boot Record (SBR) contains detailed information about the content of each slot.</p>
<table>
<thead>
<tr>
<td></td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
<td>E</td>
<td>F</td>
</tr>
</thead>
<tbody>
<tr>
<td>00<sub>h</sub></td>
<td colspan="4">CRC32</td>
<td>Ver</td>
<td colspan="11"></td>
</tr>
<tr>
<td>10<sub>h</sub></td>
<td colspan="16"></td>
</tr>
<tr>
<td>20<sub>h</sub></td>
<td>Bootslot</td>
<td colspan="2"></td>
<td colspan="5">5x slot status</td>
<td colspan="8"></td>
</tr>
<tr>
<td>30<sub>h</sub></td>
<td rowspan="3" colspan="16"></td>
</tr>
<tr>
<td>...</td>
</tr>
<tr>
<td>A0<sub>h</sub></td>
</tr>
<tr>
<td>B0<sub>h</sub></td>
</tr>
<tr>
<td>C0<sub>h</sub></td>
</tr>
<tr>
<td>D0<sub>h</sub></td>
</tr>
<tr>
<td>E0<sub>h</sub></td>
</tr>
<tr>
<td>F0<sub>h</sub></td>
</tr>
</tbody>
</table>
{% endblock %}