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

Dreamcast SDK Version 1.00 β    1998/9/21

               Copyright 1998 SEGA Enterprises, LTD.

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

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

★目次と注意事項


◎このDreamcast SDKについて

★新規追加関数一覧

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

◆Ninja

njSetTextureMemorySizeクスチャメモリのサイズをバイト数/4で設定します。
njSetVertexBufferバーテックスバッファ領域をユーザー指定します。
njSetEORFunctionレンダリング終了後実行関数を登録します。
njColorClampModeカラークランプモードを設定します。
njSetColorClampカラークランプのカラーを設定します。
njAdjustDisplay表示位置の調整をします。
njSetBorderColorボーダーカラーを設定します。
njDrawTextureMemListテクスチャポリゴンを描画します
njCnkEasyMultiDrawMotionモーションを実行します。
njCnkSetMotionCallbackチャンクモデル用モーションコールバックルーチンを登録します。
njEasyActionLinkモーションを結合します。
njEasyDrawMotionLinkモーションを結合します。
njEasyDrawShapeMotionLinkシェープ付きモーションを結合します。
njCnkDrawShapeMotionシェープ付きモーションを実行します。
njCnkSimpleDrawShapeMotionシェープ付きモーションを実行します。
njCnkEasyDrawShapeMotionシェープ付きモーションを実行します。
njCnkEasyMultiDrawShapeMotionシェープ付きモーションを実行します
njLoadTexturePvmMemoryPVM形式テクスチャメモリをロードします。
njSetPaletteBankNumパレットテクスチャにバンクを設定します。
njSetPaletteBankNumGパレットテクスチャにバンクを設定します。
njSetPaletteModeパレットのカラーモードを設定します。
njSetPaletteDataパレットデータをロードします。
njLoadPaletteFileパレットデータファイルをロードします。
njReLoadVQCodebookNumVQコードブックをリロードします。
njReLoadVQCodebookNumGVQコードブックをリロードします。
njTwiddledTextureTwiddled-NoMipmap形式のテクスチャへの変換をします。
njZBufferModeZバッファモードを設定します
njCnkGetShapeノード・モーション情報関数(移動)
njCnkSetCurrentShapeノード・モーション関数のパラメータを設定します
njCnkSimpleDrawMotionLinkモーションを結合します
njCnkDrawMotionLinkモーションを結合します
njCnkSimpleDrawShapeMotionLinkシェープ付きモーションを結合します
njCnkEasyDrawMotionLinkモーションを結合します
njCnkEasyDrawShapeMotionLinkシェープ付きモーションを結合します
njCnkEasyMultiDrawMotionLinkモーションを結合します
njCnkEasyMultiDrawShapeMotionLinkシェープ付きモーションを結合します
njReLoadRectangleTexturePartNumテクスチャの矩形領域をリロードします
njReLoadRectangleTexturePartNumGテクスチャの矩形領域をリロードします
njLoadTextureReqテクスチャのロード(即時復帰)をします
njInitPrintデバッグ用文字を初期化します
njExitPrintデバッグ用文字を終了します
njLoadTextureYUV420NumYUV420テクスチャをロードします
njLoadTextureYUV420NumGYUV420テクスチャをロードします
njSetSizeYUV420YUV420テクスチャのサイズを指定します

◆サウンド

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

◆ファイルシステム

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

◆キャッシュ

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ディスク交換の調査


★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(イニシアルプログラム)について

これまで、GDに登録するIPは単密、高密のいずれも、同じ物を使用していましたが、製品版を作成するに当たり、単密領域は単密領域専用、高密領域は高密領域専用のイニシアルプログラムが必要となります。
また、同時にIPサンプルのソースsystemid.srcに関する考慮が必要になります。
このソースの内容は、実際のアプリケーションによって異なるため、アプリケーションに合わせた記述が必要になります。
IPの作成に関しては、このドキュメントをご覧ください。


★BootROMの更新および、自己起動の方法について

BOOT ROMの更新に関する注意


BOOT ROMの更新の際に気をつけなくてはいけないことについて説明します。
OSモードでの更新は出来ません。
万が一、OSモードでBOOT ROMの更新をした場合、次のような不具合が想定されます。
特に、DA CheckでGD-Mをテストすると、赤信号になるためハードの故障と思われがちですが、BOOT ROMを再インストールすることで、正常動作をするようになります。
但し、Codescapeが動かなくなった場合、ユーザレベルでの更新は不可能になりますので、その際はセガ・テクニカルサポートに「BOOT ROMの更新に失敗した」旨を伝えていただくようお願いいたします。

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

◆インストール方法

BOOT ROM Ver. 0.67以降がインストールされていることが前提です。
予めDA CheckでDAの動作モードをCPUモードにしておきます。

◆更新方法

となります。
詳細につきましては、必ず「KATANA\SETUPDC.PDF」をご覧ください。
なお、今後BootROMの更新方法については変更される可能性があります。
BootROMイメージは
\KATANA\BOOTROM\0812\BTRF0812.bin
にあります。

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

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


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

GDDAの音量を設定する場合の注意事項についてご説明申し上げます。
Dreamcastハードウェアの初期ロットには、GDDAの音量について以下のような不具合が見つかっております。
GDDAを使用していない時に、GD-DAの音量を上げておくと、オーディオ出力からノイズが入る事がある。
従って、GD-DAを使用していない際には、GD-DAの音量を0にしておく必要があります。
GD-DAの音量を上げるタイミングは、GDドライブにGDの再生を指示した直後10ms以内であるため、以下のようなコードでGD-DAの再生指示をします。
gdFsDaPlay( 4, 4, 1 );
sdGddaSetVol( 127, 127 );
サウンドドライバの初期設定は音量0となっているので、GD-DAを再生する直前までは、特にサウンドのAPIを操作する必要はありません。


オーバービューに戻る