English
★PROGRAMMER'S GUIDE ★DISCフォーマット規格仕様書
▲ 戻る| 進む▼
DISCフォーマット規格仕様書

ブートシステム


■システムエリア

 システムエリアとは、CD−ROMの最初に配置される領域です。
 システムエリアには、アプリケーション起動用のシステム情報やイニシャルプログラムが書き込まれています。
 これらをIP(Initial Program)としてシステムエリア内に連続に配置しなくてはなりません。
 IPは、ブートコードとアプリケーションイニシャルプログラム(AIP)から構成されます。ブートコードには、ゲーム名などのIDやセキュリティコードが含まれます。AIPには、各イニシャルプログラムなどのコードが含まれます。

表4.1 IPの構造
構  造
サイズ
備  考
IP
BOOT CODE
SYSTEM ID
100H
ゲーム名、商品番号、バージョンなど
SECURITY CODE
D00H
セキュリティコード
AREA CODE GROUP
20H〜100H
エリアコードグループ
APLICATION INITIAL PROGRAM
100H〜71E0H
イニシャルプログラムやファイルシステムなど

(全体で1000H〜8000H)

■SYSTEM ID

 システムエリア内の最初に配置しておくデータです。

表4.2 SYSTEM IDの構造
  
 0 
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 A 
 B 
 C 
 D 
 E 
 F 
00H
ハードウェア識別子
10H
メーカーID
20H
商品番号
バージョン
30H
リリース年月日
デバイス情報
40H
対応エリアシンボル
スペース
50H
対応ペリフェラル
60H
ゲーム名
70H
80H
90H
A0H
B0H
C0H
D0H
RESERVED
E0H
IP SIZE
RESERVED
STACK-M
STACK-S
F0H
1st READ ADDRESS
1st READ SIZE
RESERVED
RESERVED

■SYSTEM IDの説明(記述原則)

 ●使用可能文字
 SYSTEM ID中で使用可能な文字は全てASCIIコードの英数字とする。但し項目によっては「. / - :」の使用を許可する。
 また、特に指示のない限り全て大文字・小文字とも使用可能とする。

 ●記入
 指示のない限り全て左詰めで記入する。前にスペースを入れたりしない。
 指示のない限り空いている部分は全てASCIIコードの20Hで埋める。

 ●表現の定義
 説明中で使用している△およびスペースはASCIIコードの20Hとする。

 ●その他規定
 RESERVED領域は必ず00Hで埋める。

■各項目説明


表4.2 SYSTEM IDの構造

ハードウェア識別子(開始アドレス:00H)

定義
ハードウェアに対する固有のIDを記入する

使用可能文字
大文字の英字のみ

文字数
16文字

記入規定
「SEGA△SEGASATURN△」を必ず入れる。


表4.2 SYSTEM IDの構造

メーカーID(開始アドレス:10H)

定義
SEGAが指定するメーカーIDを記入する

使用可能文字
英数字のみ

文字数
16文字

記入規定

 SEGAブランドの場合:
 「SEGA△ENTERPRISES」の16文字固定
 ライセンシィの場合:
 「SEGA△TP△KAISHA-A」の16文字
 KAISHA-Aには、各ライセンシィに与えられる固有の会社コードを入れる。
 例)
SEGA△TP△T-999△△△
 規定:
メーカーIDは左詰めで記入し、余りはスペースで埋めて必ず16文字にする。


表4.2 SYSTEM IDの構造

商品番号(開始アドレス:20H)

定義
SEGA指定の商品番号を記入する。

使用可能文字
英数字のみ

文字数
10文字

記入規定
空きはスペースで埋める。

記入例
SEGAブランドタイトル:GS-9099△△△
ライセンシィタイトル:T-99901G△△


表4.2 SYSTEM IDの構造

バージョン(開始アドレス:2AH)

定義
アプリケーションのバージョンを記入する。

使用可能文字
大文字の「V」、数字、「.」(ピリオド)

文字数
6文字

記入規定
始まりは必ず「V」、次に1桁の数字、次に「.」、次に3桁の数字。
最終リリースがV1.000となる。

記入例
サンプルディスクの場合→V0.801
マスターディスクの場合→V1.000


表4.2 SYSTEM IDの構造

リリース年月日(開始アドレス:30H)

定義
マスタディスク(ライトワンスディスク)を作成した年月日を記入する。

使用可能文字
数字のみ

文字数
8文字

記入規定
年は4桁、月日は必ず2桁にする。

記入例
19940912(1994年9月12日の場合)


表4.2 SYSTEM IDの構造

デバイス情報(開始アドレス:38H)

定義
デバイスの情報を記入。CDの場合は何枚組の何枚目かを記入する。

使用可能文字
英数字および「/-」

文字数
8文字

記入規定
空きはスペースで埋める。

記入例
CD1枚組、1枚目の場合→CD-1/1△△
CD3枚組、2枚目の場合→CD-2/3△△


表4.2 SYSTEM IDの構造

対応エリアシンボル(開始アドレス:40H)

定義
アプリケーションを動作させたい地域のエリアシンボルを入れる。

使用可能文字
下記エリアシンボル一覧で指定される大文字の英字のみ

文字数
10文字

記入規定
複数記入可。エリアシンボルとエリアシンボルは詰めて記入し、間にスペースやカンマは入れない。空きはスペースで埋める。

エリアシンボル一覧
J→日本
T→アジアNTSC(台湾、フィリピン、韓国)
U→北米地域(米国、カナダ)、中南米NTSC(ブラジル)
E→ヨーロッパPAL、東アジアPAL、中南米PAL

記入例
日本と台湾と韓国で動作させるアプリケーションの場合
(それ以外の地域では動作しない)→JTK△△△△△△△

注意
ここで記入した地域に対応するエリアコードを、エリアコードグループに入れる必要がある。(「4.5 エリアコード」を参照)

補足説明
ハードウェアは、販売地域によって異なる情報「エリアシンボル」を持つ。「エリアシンボル」と「対応エリアシンボル内のエリアシンボル」と「エリアコード」が一致した場合にアプリケーションは起動する。


表4.2 SYSTEM IDの構造

対応ペリフェラル(開始アドレス:50H)

定義
完全対応入力ペリフェラルの情報を記入する。

使用可能文字
下記キャラクター一覧で指定される英数字のみ

文字数
16文字

記入規定
複数記入可。キャラクタの順番は問わない。
キャラクタとキャラクタは詰めて記入し、間にスペースやカンマは入れない。空きはスペースで埋める。

キャラクタ一覧
A→ミッションスティック
C→対戦ケーブル
D→モデム(もしくは、Net Link)
E→マルチコントローラ
F→FDD
G→銃(バーチャガン)
J→セガサターン標準パッド
K→キーボード
M→シャトルマウス
P→MPEG
R→データカートリッジ(ツインアドバンスドシステム)
S→ステアリングコントローラ
T→マルチターミナル6
W→拡張ラムカートリッジ
X→XBAND

記入例
標準ジョイパッドとマウスに対応しているアプリケーションの場合
JM△△△△△△△△△△△△△△

補足
今後ペリフェラルが増加すると共にキャラクタも増える予定。
完全対応の定義については、「ソフトウェア作成基準」のパッドチェックの項目を参照のこと。


表4.2 SYSTEM IDの構造

ゲーム名(開始アドレス:60H)

定義
ゲーム名を記入する。

使用可能文字
ゲーム名は英数字のみ。ゲーム名中にスペース使用可。
複数タイトルを列記する場合、タイトル間の区切り文字として「/-:」を使用可。

文字数
112文字。

記入規定
発売エリアにより名前が異なる等の場合、タイトルを複数列記してもい。複数記入する際の細かい規定は設けないが、この部分を見てタイトルが判別できるよう記入すること。空きの部分はスペースで埋める。

記入例
タイトルが複数ある場合

 例1)
TITLE1/TITLE2/TITLE3△△△△

 例2)
J:TITLE1△△U:TITLE2△△△△△△


表4.2 SYSTEM IDの構造

IP SIZE(開始アドレス:E0H)

定義
IP(Initial Program)のサイズ(バイト数)を指定する。

サイズ
4バイト

規定
AIPをブートコードのすぐ後ろにつけて1ファイルにし、そのファイルのサイズを指定する。
パラメータは、ロングワード境界(4Hの倍数)であること。

範囲
1000H〜8000H


表4.2 SYSTEM IDの構造

STACK-M(開始アドレス:E8H)

定義
Master-SH2のスタックポインタのアドレス。
デフォルト(0指定)で6001000H〜6001FFFHがスタックエリアとなる。

サイズ
4バイト

規定
パラメータは、ロングワード境界(4Hの倍数)であること。

範囲
600B000H〜6100000H


表4.2 SYSTEM IDの構造

STACK-S(開始アドレス:ECH)

定義
Slave-SH2のスタックポインタのアドレス。
デフォルト(0指定)で6000E00H〜6000FFFHがスタックエリアとなる。

サイズ
4バイト

規定
パラメータは、ロングワード境界(4Hの倍数)であること。

範囲
600A200H〜6100000H


表4.2 SYSTEM IDの構造

1st READ ADDRESS(開始アドレス:F0H)

定義
先読みファイル(1st READ FILE)の転送アドレス。
先読みファイルとは、ライセンスセガロゴ表示中に、ブートシステムがWORKRAMへ転送するファイルのこと。

サイズ
4バイト

規定
0Hの場合、転送は行わない。
転送を行う場合、CDならば、ファイル識別子[2]のファイルを転送する。パラメータは、ロングワード境界(4Hの倍数)であること。

範囲
200000H〜300000H
(6002000H+IPSIZE)〜6100000H

補足
「4.7先読みファイルとアプリケーションイニシャルプログラム」の項参照
先読みファイルは必ずMODE1のトラックにあること。また、必ずトラック1であること。
ファイル識別子[2]のファイルは、ルートディレクトリの先頭のファイルとなる。ファイル名を“1ST.BIN”等にすると、ソートされて先頭になる。


表4.2 SYSTEM IDの構造

1st READ SIZE(開始アドレス:F4H)

定義
CDの場合は無視される。

サイズ
4バイト

規定
パラメータは、ロングワード境界に(4Hの倍数)であること。


■セキュリティコード

 SYSTEM IDのすぐ後ろに配置します。コードはSEGAからオブジェクトコードで提供しますので、一切の変更を加えずにそのまま使用してください。内容はSEGAのライセンス表示をするプログラムとデータです。 正しいセキュリティコードが存在しないアプリケーションは、セガサターン用のCDとして認識されないため、ゲームが起動できません。
 セキュリティコード提供ファイル名:ソフトウェアライブラリディスクインストール後のディレクトリ内


¥SATURN¥SEGALIB¥LIB¥SYS_SEC.OBJ
                    ‾‾‾‾‾‾‾‾‾‾‾

■エリアコード

 セキュリティコードのすぐ後ろに配置します。コードはSEGAからオブジェクトコードで提供しますので、一切の変更を加えずにそのまま使用してください。
 エリアコードはハードウェアの販売エリア別に4種類存在しますが、SYSTEM IDの「対応エリアシンボル」に対応するエリアコードを入れる必要があります。複数列挙する場合、 「対応エリアシンボル」と「エリアコード」は記入順が一致するようにしてください。
 それぞれのエリアコードの大きさは同じなので容易に変更できるようになっています。
 またエリアコードを複数つなげることで、共通ディスクを製作することが可能です。 (『付録A各種サンプルリスト』参照)  エリアコード提供ファイル名:ソフトウェアライブラリディスクインストール後のディレクトリ内


¥SATURN¥SEGALIB¥LIB¥SYS_ARE?.OBJ     ;?は対応エリアと同じキャラクター
                    ‾‾‾‾‾‾‾‾‾‾‾‾     ;4種類存在

 ハードウェアの販売地域とエリアコードと対応エリアシンボルの関係を表4.3に示します。

表4.3 エリアコードとエリアシンボルの関係
対応エリア
ハードウェア販売地域
エリアコードファイル名
J
日本
SYS_AREJ.OBJ
T
アジアNTSC地域
SYS_ARET.OBJ
U
北米、中南米NTSC地域
SYS_AREU.OBJ
E
ヨーロッパPAL、東アジアPAL、中南米PAL
SYS_AREE.OBJ

■アプリケーションイニシャルプログラム

 エリアコードグループのすぐ後ろに配置しておくことにより、エリアコードの実行後すぐに実行されます。以後は、アプリケーションの制御下でプログラムが進行します。

■先読みファイルとアプリケーションイニシャルプログラム

 両者とも、BOOT ROMがCD-ROMからファイルを自動的に転送するシステムです。これを利用することにより、起動時において、アプリケーションがプログラムを組むことなく、指定したファイルを転送することができます。

■1st READ FILE

 ライセンスセガロゴ表示中(セキュリティコード実行中)にブートシステムが読み込むファイル(ファイル識別子が[2])を1st READ FILE(先読みファイル)と呼びます。ライセンスセガロゴ表示は、この1st READ FILEを読み込み終わるまで終了しません。 従って、転送ファイルの容量が大きいほど、ライセンスセガロゴ画面の時間が長くなります。(最低2秒、最大約3.5秒)
 1st READ ADDRESSをセットすると、1st READ FILEは読み込まれるだけで自動的には実行はされません。
 指定しないことも可能ですが、ライセンスセガロゴ表示中の時間を有効に使えるので、使用されることを推奨します。

■アプリケーションイニシャルプログラム

 例えば、このプログラム中にファイルシステムを置いておくことにより、以降のCDへのアクセスは、ファイル単位で簡単にアクセスできます。
 両者をうまく利用することにより、効率の良いアプリケーションを作成することが可能となります。

図4.1 電源投入時からの概念
TV screen: BOOT-ROM ~ Application startup 
: 
: (Power on) 
: ┌──────┴──────┐ 
: │ │ 
┌────────────┐┌──────┴──────┐┌──────┴──────┐ 
│ ││ ││SYSTEM ID check│ 
│ ││ ││ │ │ 
│ ││ ││Security code check│ 
│SEGA SATURN logo││SEGA SATURN logo││ │ │ 
│ ││ Display processing ││ Area code check │ 
│ ││ ││ │ │ 
│ ││ ││ IP load ┌──┴─────────┐
└──────┬──────┘└──────┬─────┘└──────┬───┤AIP is loaded│
│ │ │ └──────────────┘
┌──────┴──────┐┌──────┴──────┐┌──────┴──────────────── ┐
│ ││ ││ │
│ ││Security code execution ││ │
│ ││ │ ││ Read the file with file identifier [2], │
│ License Sega logo ││ Area code execution ││SYSTEM ID │
│ ││ │ ││1stREAD ADDRESS │
│ ││Execute system initialization code││ Transfer to destination written in │
│ ││ (SYS_INIT) ││ │
└──────┬──────┘└──────┬──────┘└──────┬──────────────── ┘
│ │ │ 
┌──────┴──────┐┌──────┴──────────────┴──────┐ 
│ ││Application initial program (AIP) execution │ 
│ ││ (SMPSYS.C etc.) │ 
│ │└──────┬──────────────┬──────┘ 
│ Application │ │ │ 
│ │┌──────┴──────────────┴──────┐ 
│ ││Execute the application program body │ 
│ ││ (1stREAD file) │ 
└────────────┘└──────────────────────────┘ 




    TV画面     :    BOOT−ROM 〜 アプリケーション起動               
             :                                         
             :          (電 源 投 入)                      
             :       ┌──────┴──────┐                   
             :       │             │                   
┌────────────┐┌──────┴─────┐┌──────┴──────┐          
│            ││            ││SYSTEM IDチェック│          
│            ││            ││      │      │          
│            ││            ││セキュリティコードチェック│          
│SEGASATURNロゴ││SEGASATURNロゴ││      │      │          
│            ││    表示処理    ││ エリアコードチェック  │          
│            ││            ││      │      │          
│            ││            ││    IPロード ┌──┴─────────┐
└──────┬─────┘└──────┬─────┘└──────┬───┤AIPがロードされている│
       │             │             │   └────────────┘
┌──────┴─────┐┌──────┴─────┐┌──────┴──────────────┐
│            ││            ││                     │
│            ││セキュリティコード実行 ││                     │
│            ││      │     ││ファイル識別子[2]のファイルをリードし、│
│ ライセンスセガロゴ  ││  エリアコード実行  ││SYSTEM IDの           │
│            ││      │     ││1stREAD ADDRESS      │
│            ││システム初期化コード実行││に書かれた転送先に転送          │
│            ││(SYS_INIT)  ││                     │
└──────┬─────┘└──────┬─────┘└──────┬──────────────┘
       │             │             │               
┌──────┴─────┐┌──────┴─────────────┴─────┐         
│            ││アプリケーションイニシャルプログラム(AIP)実行 │         
│            ││ (SMPSYS.C 等)             │         
│            │└──────┬─────────────┬─────┘         
│  アプリケーション  │       │             │               
│            │┌──────┴─────────────┴─────┐         
│            ││アプリケーションプログラム本体を実行        │         
│            ││(1stREADファイル)             │         
└────────────┘└──────────────────────────┘         

■IPの作成方法

 ●SYS_ID.SRC
 SYSTEM ID作成用のアセンブラソースプログラムのサンプルです。アプリケーションに応じて変更してください。(『4.3SYSTEM IDの説明』参照)
 必ずプログラムの先頭に置いてください。

 上記サンプル提供ファイル名:ソフトウェアライブラリディスクインストール後のディレクトリ内


¥SATURN¥SEGASMP¥SYS¥SYS_ID.SRC

 ●SYS_SEC.OBJ
 セキュリティコードのオブジェクト。(『■セキュリティーコード』参照)そのままの形でリンクして組み込みます。

 ●SYS_ARE?.OBJ
 エリアコードのオブジェクト。(『■エリアコード』参照)そのままの形でリンクして組み込みます。

 ●SYS_INIT.OBJ
 システム初期化コードのオブジェクト。そのままの形でリンクして組み込みます。

以上のファイルを


SYS_ID.OBJ、SYS_SEC.OBJ、SYS_ARE?.OBJ、SYS_INIT.OBJ、・・・・・

の順にリンクしてSYS_IP.BINを作成します。このファイルは、CDのシステムエリア内にいれてください。

■IPの配置

 IPのサイズは最小2セクタ、最大16セクタの範囲で作成することが可能です。
 もし必要なIPサイズが8セクタ以下ならば信頼性向上のため複数のIPを記録することが可能です。このとき各IPは、セクタの先頭から配置してください。
 このようにすることで、最初のセクタに読み込み不良が発生しても起動できる可能性が向上します。


▲ 戻る| 進む▼
★PROGRAMMER'S GUIDE ★DISCフォーマット規格仕様書
Copyright SEGA ENTERPRISES, LTD., 1997