--------------------------------------------------------

Dreamcast SDK Version 1.00 β2    1998/10/4

               Copyright 1998 SEGA Enterprises, LTD.

--------------------------------------------------------

★今回のリリースのトピック

★目次と注意事項


◎このDreamcast SDKについて

★新規追加関数一覧

今回のSDKで新規追加された関数は以下の通りです。

◆Ninja

<
njCnkSetSimpleMultiLightnjCnkSimpleMultiDraw用のライトを設定します。
njCnkSetSimpleMultiLightSwitchnjCnkSimpleMultiDraw用の光源の点灯・消灯を設定します。
njCnkSetSimpleMultiAmbientnjCnkSimpleMultiDraw用のアンビエントを設定します。
njCnkSetSimpleMultiLightColornjCnkSimpleMultiDraw用の光源色を設定します。
njCnkSetSimpleMultiLightVectornjCnkSimpleMultiDraw用の平行光源の方向を設定します。
njCnkSetSimpleMultiLightPointnjCnkSimpleMultiDraw用の点光源の位置を設定します。
njCnkSetSimpleMultiLightRangenjCnkSimpleMultiDraw用の点光源の有効範囲を設定します。
njCnkSetSimpleMultiLightMatricesnjCnkSimpleMultiDraw用の設定された光源の方向・位置を反映させます。
njCnkSimpleMultiDrawModelチャンクモデルを描画します。
njCnkSimpleMultiDrawObjectチャンクオブジェクトを描画します。

◆サウンド

sdMemBlkSetTransferModeメモリブロックハンドルの転送モードの設定

◆ファイルシステム

gdFsGetSysHnシステムハンドルの取得
gdFsReqDrvStatドライブ状態の更新
gdFsDaGetStatDAの再生状態の取得

◆キャッシュ

syCacheInit関数の初期化
syCacheICIすべてのインストラクションキャッシュの無効化
syCacheOClオペランドキャッシュのすべてのエントリを無効化
syCacheOCBIオペランドキャッシュブロックの無効化
syCacheOCBPオペランドキャッシュブロックのパージ
syCacheOCWBオペランドキャッシュブロックの書き戻し
syCachePREFオペランドキャッシュのプリフェッチ
syCacheMOVCALMOVCA.L命令の実行

◆リアルタイムクロック

syRtcInitRTC関数の初期化
syRtcFinishRTC関数の終了
syRtcExecServerサーバ関数
syRtcGetDate現日付時刻の取得
syRtcSetDate日付時刻の設定
syRtcSetServerModeサーバ関数の動作の設定
syRtcGetStatサーバ関数の状態の取得
syRtcCompareDate日付時刻の比較
syRtcDateToCount日付時刻からカウント数への変換
syRtcCountToDateカウント数から日付時刻への変換

◆バックアップ

buMountDiskドライブのマウント
buUnmountドライブのアンマウント
buMakeBackupFileImageバックアップファイル形式メモリイメージを作成する
buCalcBackupFileSizeバックアップファイルイメージのブロックサイズを計算する
buAnalyzeBackupFileImageメモリ上のファイルイメージを解析する

◆BootROMフォント

syBtFntGetAddrShift JISコードから対象フォントデータへのオフセット値を取得
syBtFntGetInfoShift JISコードから対象フォントデータのサイズ情報を取得
syBtFntSjis2JisShift JISコードからJISコードへ変換

◆ペリフェラル

pdGetPeripheralInfoペリフェラル情報の取得
pdTmrAlarmアラームを鳴らす

◆ユーザコンフィギュレーション管理

syCfgInitコンフィギュレーション関数の初期化
syCfgExitコンフィギュレーション関数の終了
syCfgSetSoundMode音声設定の更新
syCfgGetSoundMode音声設定の取得

◆Boot ROMサービス関数

syBtExitBOOT ROMのGUI画面への復帰
syBtCheckDiskディスク交換の調査
syBtGetBootSystemID起動ディスクの情報取得
syBtGetCurrentSystemID現在のディスクの情報取得


★Ninjaデバッグ文字列表示関数の仕様について

このSDKに含まれているNinjaライブラリの文字列表示関数を使用する場合の注意事項についてご説明いたします。

このSDKのNinjaライブラリでは、デバッグ文字列表示関数(njPrintnjPrintBnjPrintCnjPrintDnjPrintFnjPrintHnjPrintColornjPrintSize等)を使用する前に、初期化関数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の更新をした場合、次のような不具合が想定されます。
特に、DA CheckでGD-Mをテストすると、赤信号になるためハードの故障と思われがちですが、BOOT ROMを再インストールすることで、正常動作をするようになります。
更新に失敗し、運悪くCodescapeが動かなくなった場合は、この項の通りにしてBOOT ROMの再インストールを行って下さい。

BootROMのインストールおよび更新方法をここに簡単に説明いたします。
Dev.Box前面パネルのスライドスイッチとディップスイッチの機能が変更になっていますので、新しい手順で、BOOT ROMの更新を行う必要があります。

◆インストール方法

BOOT ROM Ver. 0.67以降がインストールされていることが前提です。
予めDA CheckでDAの動作モードをCPUモードにしておきます。
となります。
詳細につきましては、必ず「KATANA\SETUPDC.PDF」をご覧ください。
なお、今後BootROMの更新方法については変更される可能性があります。
BootROMイメージは
\KATANA\BOOTROM\0972\BTRF0972.bin
にあります。

また、BootROMを用いた自己起動の方法については、BootROM更新後、以下のような手順で行います。

以後は、起動したいプログラム(ファーストリードファイルといいます)を1ST_READ.BINという名前で、ディスクイメージにおいておき、Codescape上または、ターゲット上からHard Resetをかけ、CodescapeでCPUを[RUNNING...]状態にして、トレイを閉めれば実行できます。

Codescapeが動かない時のBOOT ROMインストール方法

  1. DA CheckerでCPUモードに切り替えます。
  2. Dev.Boxの前面パネルのディップスイッチにします。
  3. Dev.Boxをリセットします。
  4. Codescapeを立ちあげます。
  5. Dev.Boxの前面パネルのスライドスイッチにします。
  6. Dev.Boxの前面パネルのディップスイッチにします。
  7. CodescapeのFile/Load BinaryでBOOT ROMのイメージを0x0c010000にダウンロードします。
  8. CodescapeのDebug/Breakpoint/Configure Breakpoint(s)を選択します。
  9. Add Codeボタンを押し、0xac000000にブレークポイントを張ります。
  10. CodescapeのWindow/New Windowを選択し、新しいウィンドウをRegister Windowにします。
  11. PCを0c010000に設定します。
  12. Debug/Execution/Run Allでプログラムを実行します。
  13. 画面が白転し、ブレークポイントで止まったことを確認したら、Dev.Boxの前面パネルのスライドスイッチにします。
  14. Dev.Boxをリセットします。
以上で、BOOT ROMの更新が出来ます。
この更新でもCodescapeが動かない場合、Codescapeのファームウェアを書き換えてみてください。
また、Dev.Box及びPCの電源再投入でも症状が変ることがあります。

★DA再生時の音量設定について

GDDAの音量を設定する場合の注意事項についてご説明申し上げます。
Dreamcastハードウェアの初期ロットには、GDDAの音量について以下のような不具合が見つかっております。
GDDAを使用していない時に、GD-DAの音量を上げておくと、オーディオ出力からノイズが入る事がある。
従って、GD-DAを使用していない際には、GD-DAの音量を0にしておく必要があります。
この症状を回避するには、アプリケーション起動時に、ダミーのGDDAを音量0で再生してください。
一旦、このような操作をすれば、あとで同様の症状が起こることはありません。

オーバービューに戻る