--------------------------------------------------------
Dreamcast SDK Version 1.00 β2 1998/10/4
Copyright 1998 SEGA Enterprises, LTD.
--------------------------------------------------------
★今回のリリースのトピック
★目次と注意事項
◎このDreamcast SDKについて
★新規追加関数一覧
今回のSDKで新規追加された関数は以下の通りです。
◆Ninja
◆サウンド
◆ファイルシステム
◆キャッシュ
◆リアルタイムクロック
◆バックアップ
◆BootROMフォント
◆ペリフェラル
◆ユーザコンフィギュレーション管理
◆Boot ROMサービス関数
★Ninjaデバッグ文字列表示関数の仕様について
このSDKに含まれているNinjaライブラリの文字列表示関数を使用する場合の注意事項についてご説明いたします。
このSDKのNinjaライブラリでは、デバッグ文字列表示関数(njPrint、njPrintB、njPrintC、njPrintD、njPrintF、njPrintH、njPrintColor、njPrintSize等)を使用する前に、初期化関数njInitPrintを使用するようになりました。
njInitPrint関数は必ず、njInitVertexBuffer関数の後に行わなければなりません。
これは、njPrint系がデバッグ文字フォント用に占有するテクスチャRAMを開放することが出来るような仕様へと変更したためです。
この事により、njPrintで使用していたテクスチャ領域は最終的にはアプリケーション側に開放され、その分アプリケーションはテクスチャを使用できることとなり、テクスチャRAMを有効に活用することができます。
なお、一旦niInitPrintで確保した文字フォント用テクスチャ領域を開放するには、njExitPrintを使用します。
★malloc、syMallocのアルゴリズム変更について
これまで、mallocおよびsyMalloc関数のメモリ管理アルゴリズムにおいて、内部フリーリスト管理による空きメモリ管理を行っていましたが、今回のSDKよりsyMalloc関数は、
#define syMalloc(a) malloc(a)
とし、malloc関数自体がヒープ管理するアルゴリズムへと変更させて頂きます。
この変更によって、mallocとsyMallocを混同して使用すると、メモリの分断が起こる症状や、syMallocStatを見るとsyFreeをしても連続メモリ領域が回復していないように見える症状は解消されます。
syMalloc関数の説明時に、最初にすべてのヒープを一旦syMallocしてすぐにsyFreeすることで、フリーエリアを確保する対応策をご説明しておりましたが、この必要は無くなります。
この対応で、mallocがヒープを直接管理するため、sbrkの内部プログラムはなくなります。
また、確実にmalloc関数をセガ製のものとするため、今回のSDKで提供しております、
「\katana\bin\set_kt.bat」と「\katana\shinobi\lib\makepre」、「\katana\shinobi\lib\makepost」の差し替えをお願いします。
これらのファイルの変更は、ライブラリのリンクの順番を変更するもので、必ず日立標準Cライブラリよりも前にSHINOIBI.LIBをリンクしなければいけません。
自分でMakefileを作成されている方は十分にご注意ください。
★IP(イニシアルプログラム)について
これまで、説明してきたイニシアルプログラムの仕様が変更になります。
これは、ハードウェアで管理しているシステム情報が異なっていることが発覚したためで、これまでのフォーマットにしたがったイニシアルプログラムでは、実機上で動作しなくなります。
症状としては
SYSTEM DISCでセキュリティ解除後、GD-ROMを入れ替えると、
「ディスクをチェックしています」
というメッセージが出たまま戻ってこなくなる
というものです。
変更箇所は、SYSTEMID.SRCに相当する部分で、
先頭から10hにメーカー識別子を書くことになっていましたが、これが、これまではリザーブとして使われてきた70hの位置に移動し、代わりに10hの場所にはハードウェアベンダー識別子として"SEGA ENTERPRISES"という文字列固定になります。
例えば、次のようなSYSTEMIDは
.sdata "SEGA SEGAKATANA " ;00:H/W identifier(Do NOT change!)
.sdata "SEGA LC-T-12 " ;10:Maker identifier
.sdata "SEGA GD-ROM1/1 " ;20:Device information
.sdata "JUE ","07990 " ;30:Area symbols / Peripherals
.sdata "T1201M ","V0.800" ;40:Product number / Version
.sdata "19980916"," " ;50:Release date / Reserved(Space)
.sdata "1ST_READ.BIN"," " ;60:1st read file name / Reserved(Space)
.sdata " " ;70:Reserved(Space)
.sdata "Game Title " ;80:Game Title
この様になります。
.sdata "SEGA SEGAKATANA " ;00:H/W identifier(Do NOT change!)
.sdata "SEGA ENTERPRISES" ;10:H/W Vendor Identifier(Do NOT change!)
.sdata "SEGA GD-ROM1/1 " ;20:Device information
.sdata "JUE ","07990 " ;30:Area symbols / Peripherals
.sdata "T0001M ","V0.800" ;40:Product number / Version
.sdata "19980916"," " ;50:Release date / Reserved(Space)
.sdata "1ST_READ.BIN"," " ;60:1st read file name / Reserved(Space)
.sdata "SEGA LC-T-12 " ;70:Maker identifier
.sdata "Game Title " ;80:Game Title
また、BOOT ROMのバグから、38hからのペリフェラルコードは本来の7桁ではなく、後ろ2桁をスペース(20h)で生め5桁のみを記述します。
そうしないと、同様にGDは起動しません。
例を挙げると、
"0799010 "
は
"07990 "
このバグが修正されるのはBOOT ROM Version 0.970以降、プリプロの場合PP2以降となります。
なお、このペリフェラルコードを5桁にしたイニシアルプログラムは、VGA可能で、DragonOSを使用していないアプリケーションと解釈され、バグ修正されたBOOT ROMでも利用は可能ですが、最終的な納品は必ず7桁のペリフェラルコードを使用してください。
詳細及び、IPの作成に関しては、このドキュメントをご覧ください。
★BootROMの更新および、自己起動の方法について
BOOT ROMの更新に関する注意
BOOT ROMの更新の際に気をつけなくてはいけないことについて説明します。
OSモードでの更新は出来ません。
万が一、OSモードでBOOT ROMの更新をした場合、次のような不具合が想定されます。
- Codescapeが起動しない
- オープニングアニメーションからGUIに進まない
- オープニングアニメーションはするが、自己起動しない
- DA CheckでGD-Mをテストすると、赤信号になる
等
特に、DA CheckでGD-Mをテストすると、赤信号になるためハードの故障と思われがちですが、BOOT ROMを再インストールすることで、正常動作をするようになります。
更新に失敗し、運悪くCodescapeが動かなくなった場合は、この項の通りにしてBOOT ROMの再インストールを行って下さい。
BootROMのインストールおよび更新方法をここに簡単に説明いたします。
Dev.Box前面パネルのスライドスイッチとディップスイッチの機能が変更になっていますので、新しい手順で、BOOT ROMの更新を行う必要があります。
◆インストール方法
BOOT ROM Ver. 0.67以降がインストールされていることが前提です。
予めDA CheckでDAの動作モードをCPUモードにしておきます。
- Dev.Boxのスライドスイッチを右に
- Dev.Boxのディップスイッチ4番を下に
- ハードリセット
- Dev.Boxの電源を投入し、すべてのブレークポイントを解除
- BootROMイメージを0c010000hにダウンロード
- AC000000hにインストラクションブレークを張って、BootROMイメージを実行
- 先に設定したブレークポイントで止まったら、スライドスイッチを左にして再度リセット
となります。
詳細につきましては、必ず「KATANA\SETUPDC.PDF」をご覧ください。
なお、今後BootROMの更新方法については変更される可能性があります。
BootROMイメージは
\KATANA\BOOTROM\0972\BTRF0972.bin
にあります。
また、BootROMを用いた自己起動の方法については、BootROM更新後、以下のような手順で行います。
- GD Workshopでプロジェクトを開き、プロジェクトウィンドウの右から、DISCタブを選択
- System Area File (Single)と、System Area File (High)に、
\KATANA\SHINOBI\SAMPLE\IP\IP.BIN
を選択する。(両方とも)
- 自己起動したいプログラムをMAKEUSERファイルのPROJECT_TYPE変数を
PROJECT_TYPE = bin
にして、再コンパイル。
- できあがったバイナリファイル(.bin)を「1ST_READ.BIN」という名前に変更し、ディスクイメージの高密トラックのデータトラック(第3トラック)においておく。
- 一旦GD Workshopを再起動する。
- リセットボタンを押す。
- Codescapeを起動し、もし、[HARD-RESET]の状態ならば、F9キーまたは、Debug/Execution/RunでCPUを[RUNING...]の状態にしておく。
- この時点でCDトレイがクローズされていれば、ディスク上から1ST_READ.BINを読み込み、起動プロセスが開始されます。もし、CDトレイが開いていたら、CDトレイを閉じてください。その時点で起動プロセスが開始されます。
以後は、起動したいプログラム(ファーストリードファイルといいます)を1ST_READ.BINという名前で、ディスクイメージにおいておき、Codescape上または、ターゲット上からHard Resetをかけ、CodescapeでCPUを[RUNNING...]状態にして、トレイを閉めれば実行できます。
Codescapeが動かない時のBOOT ROMインストール方法
- DA CheckerでCPUモードに切り替えます。
- Dev.Boxの前面パネルのディップスイッチを上にします。
- Dev.Boxをリセットします。
- Codescapeを立ちあげます。
- Dev.Boxの前面パネルのスライドスイッチを右にします。
- Dev.Boxの前面パネルのディップスイッチを下にします。
- CodescapeのFile/Load BinaryでBOOT ROMのイメージを0x0c010000にダウンロードします。
- CodescapeのDebug/Breakpoint/Configure Breakpoint(s)を選択します。
- Add Codeボタンを押し、0xac000000にブレークポイントを張ります。
- CodescapeのWindow/New Windowを選択し、新しいウィンドウをRegister Windowにします。
- PCを0c010000に設定します。
- Debug/Execution/Run Allでプログラムを実行します。
- 画面が白転し、ブレークポイントで止まったことを確認したら、Dev.Boxの前面パネルのスライドスイッチを左にします。
- Dev.Boxをリセットします。
以上で、BOOT ROMの更新が出来ます。
この更新でもCodescapeが動かない場合、Codescapeのファームウェアを書き換えてみてください。
また、Dev.Box及びPCの電源再投入でも症状が変ることがあります。
★DA再生時の音量設定について
GDDAの音量を設定する場合の注意事項についてご説明申し上げます。
Dreamcastハードウェアの初期ロットには、GDDAの音量について以下のような不具合が見つかっております。
GDDAを使用していない時に、GD-DAの音量を上げておくと、オーディオ出力からノイズが入る事がある。
従って、GD-DAを使用していない際には、GD-DAの音量を0にしておく必要があります。
この症状を回避するには、アプリケーション起動時に、ダミーのGDDAを音量0で再生してください。
一旦、このような操作をすれば、あとで同様の症状が起こることはありません。

オーバービューに戻る