{% extends "sega.html" %} {% block title %}SEGA Partition Structure{% endblock %} {% block body %}

# SEGA Partition Structure

Games on the Ring* series use MBR partitioned drives. The core partition structure is as follows:

Partition | Size | Format | Content
1 | 1.5GiB | NTFS | Windows XP Embedded 2009
2 | 1.5GiB | NTFS | Windows recovery partition
3 | remaining space | Extended Partition (LBA) | Game data
4 |  |  |

Extended partitions are structed by a linked list of partition headers at the beginning of each partition. These headers reserve 3Fh 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.

Partition offset (blocks) | Content
0 | Extended partition header
1 | SEGA Partition Description
2 | SEGA Boot Record (1)
3 | SEGA Boot Record (2)
4-63 | Additional data storage
64-... | Actual partition data

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.

## SEGA Partition Description

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:

| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F
00h | CRC32 | Ver |
10h | Slot content | ? | Block size | Block count |
20h | Slot content | ? | Block size | Block count |
30h | Slot content | ? | Block size | Block count |
...
F0h | Slot content | ? | Block size | Block count |

The slot content types are:

Value | Meaning
10h | original0
11h | original1
20h | patch0
21h | patch1
30h | os
40h | app_data

## SEGA Boot Record

The SEGA Boot Record (SBR) contains detailed information about the content of each slot.

| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F
00h | CRC32 | Ver |
10h |
20h | Bootslot |  | 5x slot status |
30h |
...
A0h
B0h
C0h
D0h
E0h
F0h

{% endblock %}