                                                                   1999/04/27
■サンプルプログラム動作方法について
                                                     (株)セガエンタープライゼス
                                                     テクニカルサポートセンター


※各サンプルプログラムは、ライブラリの仕様変更などに伴い変更されていることが
  あります。過去のサンプルを参考にされた場合、動かなくなる場合があります。


  このディレクトリには、セガライブラリのサンプルプログラムが収められています。
サンプルプログラムを動作させるための手続きは以下の通りになります。
なお、CD-ROMよりコピーしたファイルの属性は「読み取り専用」となっておりますので
書き込み変更が出来る様、属性を変更してお使い下さい。
(項目番号の前に*のついているものは追加または更新されています。)


１）ELFファイルの作成
---------------------
サンプルプログラムをコンパイルしてデバッグ情報付きのオブジェクトファイル
"ELF"ファイルを作成します。
ELFファイルを作成するためには
・DC_SDK\BIN\SET_KT.BATによる環境変数の設定
・nmakeでサンプルをコンパイル
という二つの操作を行います。


２）BootROMの更新
-----------------
それぞれのサンプル(というよりはSEGAライブラリ)は、最新のBootROMの環境下でしか
動作を保証していません。
BootROMには、オープニングアニメーションや、ユーザインターフェイス以外にも、
ハードウェアの初期化やCDドライブコントローラプログラムの実行などの機能があり、
ライブラリでは、これらの機能を内部的に使用しているためです。
BootROMの更新方法はDC_SDK\SETUPDC.DOCをご参照ください。


３）ディスクイメージの作成
--------------------------
ディスクからデータを取得するサンプルの場合、GD Workshopを使用して必要な
データからディスクイメージを作成します。
ディスクイメージ作成方法はDC_SDK\SETUPDC.DOCをご参照ください。

各サンプルのディスクデータは、下記の表を参照してください。

[ディレクトリ]
 サンプル          サンプルのディスクデータ
------------------------------------------------------
[sample2d]
 cache:           sample\sample2d\cache\image
 punch:           sample\sample2d\punch\image
 sprite:          sample\sample2d\sprite\image
 上記以外:        sample\sample2d\image

[sample3d]
 binary:          sample\sample3d\binary\rocketbm
 chkflat:         sample\sample3d\chkflat\nj
 f40:             sample\sample3d\f40\image
 rendertex:       sample\sample3d\f40\image
 shape:           sample\sample3d\shape\image 
 texlow:          sample\sample3d\texlow\image
 上記以外         sample\sample3d\image

 [mw]
 adxsmp01:        sample\mw\adxdata
 adxsmp02:        sample\mw\adxdata
 adxsmp03:        sample\mw\adxdata
 adxsmp04:        sample\mw\adxdata
 adxsmp05:        sample\mw\adxdata
 mw_mpa01:        sample\mw\mw_data
 mw_ply01:        sample\mw\mw_data
 mw_sfd01:        sample\mw\mw_data
 mw_sfd02:        sample\mw\mw_data
 mw_sfd03:        sample\mw\mw_data
 mw_tm01:         sample\mw\mw_data
 mw_wav01:        sample\mw\mw_data
 sfdadx01:        sample\mw\mw_data

 [sggd]
 sg_gd:           sample\gdfs\sg_gd\diskroot
 sg_gd2:          sample\gdfs\sg_gd2\diskroot
 sg_gd3:          sample\gdfs\sg_gd3\diskroot
 sg_gd4:          sample\gdfs\sg_gd4\diskroot

 [sound]
 gdda:            sample\sound\gdda\sample.da
 gdda2:           sample\sound\gdda\sample.da
上記以外          sample\sound\diskroot

 [etc]
 f40uf2           sample\sample3d\f40\image


【注意】
 sg_gdサンプルはサブディレクトリもまとめてイメージを作る必要があります。


４）ツールの起動
----------------
ディスクデータを使用するサンプルでなくても、GD Workshopを立ちあげておく必要が
あります。
また、GDを使用しないサンプルの場合、ダミーのデータを入れるか、
DevBoxのGDドライブに市販のGDROMなどを入れておき、GD Workshopの右下にある
ディスク切り替えスイッチをGDドライブ側にしておくことで、以後、GD Workshopを
立ちあげておく必要は無くなります。

・Codescape、GD Workshopを立ちあげる。
  もし、古いCodescape、GD Workshopが存在する場合はそれらを立ち上げないように
  注意しましょう。
  ライブラリは、常に新しいツールに対応しているため、古いバージョンのツール上
  では動作しないことがあります。
  またその際には、ファームウェアのアップデートも忘れずに行ってください。

・ELFのロード
  ELFファイルは、Codescapeにドラッグ&ドロップするか、File/Load Program File
  でロードすることが出来ます。
  ELFをロードすると、GD Workshopのトレイアイコン(左下に4つ並んだアイコンの
  一番左)がオープン状態になりますので、一回クリックしてトレイを閉じてください。

・ELFの実行
  GD Workshopのトレイが閉じているのを確認したら、Codescape上でロードした
  プログラムを実行します。
  実行するには、F9キーまたは、Debug/Execution/Runです。
  実行すると、ファイルを読み込むタイプのサンプルではGD Workshopのログウィンドウ
  (一番下のボックス)に読み込んだファイル名が表示されます。
  運悪く上手く動かなかった場合、Dev.BoxのRESETボタンを押して再度ロード、
  トレイクローズ、実行を行ってみてください。
  それでもだめなら、いったんすべてのツールを終了させ、Dev.Boxを再起動させて
  みてください。

起動ディスクを作成するための、バイナリイメージの作り方は以下の通りです。
  １）各サンプルにあるMAKEUSERファイルを開きます。
  ２）MAKEUSERファイルの29行目
      PROJECT_NAME  = 〜
        を
      PROJECT_NAME  = 1ST_READ
      に、30行目、
      PROJECT_TYPE  = elf
        を
      PROJECT_TYPE  = bin
      にします。
  ３）nmakeします。
  ４）出来上がった1ST_READ.BINファイルを、第3トラックに置きます。
  ５）GD Workshopのセッションウィンドウの、Diskタブをクリックします。
  ６）2個所あるSystem Area Fileに、サンプルとして提供している
           dc_sdk\shinobi\lib\ip0000.bin   :単密領域用
           dc_sdk\shinobi\lib\ip.bin       :高密領域用
      を指定します。（製品には使用しないで下さい）
  ７）一旦ディスクイメージをセーブしアプリケーションを立ちあげ直してください。

次にGD Workshopを使った自己起動の仕方の手順です。
  １）GD Workshopを立ちあげます
  ２）Codescapeを立ちあげます。
  ３）ターゲット上のリセットボタンかCodescape上からHard Resetを行います。
  ４）Codescape上でCPUの動作状態がHARD-RESETになっていたら、F9キーを押して、
      [RUNNING...]の状態にします。
  ５）その時点でトレイがしまっていれば、自己起動する筈です。もし開いていても、
      閉めればその時点で起動プロセスが開始されます。
  ※DA Checkerユーティリティで動作モードをOSモードに切り替えている場合には、
    リセットをかけるだけで自己起動します。






■サンプルプログラムの概要

  *  前回(SDK1.30)から変更があったサンプル。
  +  今回から追加されたサンプル。


□  SAMPLE\PERIディレクトリ
 このディレクトリは、コントローラ、メモリカード、キーボード、ぷるぷるパック等
 ペリフェラルの制御や情報取得を行うサンプルで構成されています。

 bup1:       VMにセーブされているバックアップ情報を表示するサンプルです。
 bup2a:      VMにダミーデータをセーブ・ロード・デリートするサンプルです。
 bup2b:      VMの即時復帰型関数のチェックサンプルです。
 bupd1:      バックアップ関数のワークを動的に確保して内容を表示するサンプル。
 bupd2:      バックアップ関数のワークを動的に確保して、セーブ・ロード・デリート
             を行うサンプルです。
 kbd0:       キーボードからの入力を表示する低レベルサンプルです。
 lcd0:       VMの液晶画面に絵を表示するサンプルです。絵のデータは静的に
             持っています。
 lcd1:       VMの液晶画面に絵を表示するサンプルです。絵のデータは動的に
             変更します。
 lcd2:       VMの液晶画面に絵を表示するサンプルです。絵のデータは動的に
             持っています。
*per1:       ペリフェラルポートに関する、より詳細な情報取得サンプルです。
 print:      パッドの情報取得および表示のサンプルです。
 vib00:      振動ペリフェラル制御関数の汎用関数を使用したサンプルです。
 vib01:      振動ペリフェラル制御関数のぷるぷる振動パック専用関数を使用した
             サンプルです。
+gun1:       ガンコントローラのサンプルです。（シングルショット）
+gun2:       ガンコントローラのサンプルです。（連射対応）
+per1a:      ペリフェラル拡張初期化のサンプルです。内容はper1と同じです。
+perchk:     コントローラの種別を判別するためのサンプルです。
+sip:        SIPでサンプリングしたデータを表示するサンプルです。


□  SAMPLE\MWディレクトリ

 このディレクトリは、PCMストリーム再生、MPEGムービー再生などのミドルウェア
 に関するサンプルで構成されています。
 このディレクトリにあるライブラリを使用する場合にはライセンス料等の義務が
 発生する可能性がありますので、実際のアプリケーションに組み込む際には、
 どのパッケージにどういう義務が発生するかを確認するようにしてください。

 adxsmp01:    CRI ADXの単純なPCM再生サンプルです。(GDからのストリーム)
 adxsmp02:    CRI ADXの複数PCM、同時再生サンプルです。(メモリからのストリーム)
 adxsmp03:    CRI ADXの複数PCM、同時再生サンプルです。(GDからのストリーム)
 adxsmp04:    CRI ADXを用いて、GDからのPCMストリームを再生させながら、
              別のファイル(プログラム、データなど)をGDから読み込むマルチ
              ストリームのサンプルです。
+adxsmp05:    CRI ADXを用いて、音声を再生しながら別のファイルを少しずつ読み
              出し、テキストファイルを読み込み、1行づつ表示します。

 mw_ply01:    MPEG再生と、WAV再生を同じコアを共有して再生するサンプルです。
 mw_sfd01:    ミドルウェアカーネルを使用したMPEG再生のサンプルです。
 mw_sfd02:    MPEGを再生しながら3Dモデルを表示するサンプルです。
+mw_sfd03:    MPEGの再生を位置やサイズ,奥行き値を変化させながら行います。
 mw_wav01:    ミドルウェアカーネルを使用したWindows WAV再生のサンプルです。
              現時点では、MPEG再生と、WAV再生を同時に行うことは出来ません。
+mw_tm01:     TRUE MOTIONのサンプルです。
+mw_mpa01:    MP2ファイルの再生サンプルす。
+sfdadx01:    MPEG SofdecとADXの並行再生のサンプルです。


【注意１】
 adxdata ディレクトリーは adxsmpXX プログラム実行時のデータファイルが格納
 されています。また、mw_data ディレクトリーは mw_XXXXX プログラム実行時の
 データファイルが格納されていますので、それぞれGDエミュレーションでご使用下
 さい。

【注意2】mk.bat を操作する場合の注意点
  各フォルダーの中にある *.sub ファイルの属性の「読み取り専用」を解除して下さ
  い。mk.batは *.sub ファイルが無いと動作できません。もし、*.sub ファイルを
  消してしまった場合は make をかけ直して*.sub ファイルを作成するようにして
  下さい。


□  SAMPLE\SAMPLE2Dディレクトリ

 このディレクトリは、スプライトやスクロール等の2Dの描画に関するサンプルで
 構成されています。

 alpha:       アルファブレンディング(半透明)のサンプルです。
 cache:       テクスチャキャッシュのサンプルです。
 mipmap:      スプライトのMIPMAPサンプルです。
 punch:       パンチスルーテクスチャの表示サンプルです。
 scr:         スクロールの表示サンプルです。
 scr_fog:     スクロール面に霧の効果をかけるサンプルです。
 scr_pr:      スクロール面のプライオリティを変更するサンプルです。
 scr_rot:     スクロール面を回転させるサンプルです。
 scr_zm:      スクロール面の拡大縮小サンプルです。
 spr:         スプライトの表示サンプルです。
 spr_mtn:     スプライトを動かすサンプルです。
 spr_anim:    スプライトのアニメーションサンプルです。
 spr_rot1:    スプライトを回転させるサンプルです。
 spr_rot2:    スプライトを回転させるサンプルです。
 spr_zm:      スプライトの拡大縮小サンプルです。
 sprite:      スプライトのサンプルです。
 triangle:    三角形を表示するサンプルです。

□  SAMPLE\SAMPLE3Dディレクトリ

 このディレクトリは、3Dのポリゴンモデルの描画やモーションなど3Dの描画及び
 その応用に関するサンプルが収められています。

 amblight:    環境光のサンプルです。
 bilinear:    バイリニアフィルタのサンプルです。
 binary:      バイナリフォーマット(ベーシックフォーマット)をGDから読み込んで
              表示させるサンプルです。
 bound:       3D空間内をボールが跳ねるサンプルです。
 cam_ang:     カメラの視点を変更するサンプルです。
 clip:        3Dクリッピングのサンプルです。
 cnkflat:     フラットシェーディングサンプルです。関数(njCnkFlatConvert)を
              そのまま流用することが可能です。バイナリチャンクフォーマット使用
 colision:    3Dモデル同士の衝突跳ね返りのサンプルです。
 envmap:      環境マッピングのサンプルです。
 f40:         GDドライブからテクスチャを読んでモデルを表示するサンプルです。
 fog1:        3Dモデルに霧の効果を加えるサンプルです。
 fog2:        3Dモデルに霧の効果を加えるサンプルです。
 light1:      光源による効果のサンプルです。
 light2:      光源による効果のサンプルです。
 light3:      光源による効果のサンプルです。
 modifier:    シンプルシャドウ(モディファイアボリューム)のサンプルで、Ninjaの
              新フォーマットのサンプルでもあります。
 multilight:  複数光源用のサンプルです。
 multilight1: 複数光源用のサンプルです。
 multilight2: 複数光源用のサンプルです。
 pers:        視野角の変更をするサンプルです。
 pushpop:     3次元計算用のマトリクスを使った階層構造のサンプルです。
 rendertex:   Ninjaのレンダーテクスチャのサンプル
 rotate:      ポリゴンを回転させるサンプルです。
 shadow:      ソフトウェアによる影の効果を出すサンプルです。
 shape:       シェイプモーションのサンプルです。
 specular:    ハイライトのサンプルです。
 teapot:      GDを使用しないテクスチャ付きポリゴンデータの表示サンプルです。
 tex_cube:    立方体にテクスチャを貼ったサンプルです。
 tileclip:    画面分割のサンプルです。
 triangle:    三角形ポリゴンを表示するサンプルです。
+particle1    パーティクルのサンプルです。
+particle2    パーティクルのサンプルです。
+texlow       テクスチャLOW関数のサンプルです。


□  SAMPLE\GDFSディレクトリ

 このディレクトリは、GDROMからのデータ取得や、ドライブのステータス、
 応用的なファイルアクセス等に関するサンプルで構成されています。

 dooropen:   GDドアオープンチェック、ディスク交換サンプルです。
*sg_gd :     完了復帰型ファイルアクセスとサブディレクトリアクセスのサンプル。
*sg_gd2:     即時復帰型ファイルアクセスのサンプルです。
*sg_gd3:     ファイル読み込みのキューイングサンプルです。
 sg_gd4:     ストリーミングサンプルです。


□SAMPLE\SOUNDディレクトリ

 このディレクトリは、GDDAを含むサウンドの再生に関するサンプルです。

 blkchg:      ユニットファイル(MIDIシーケンスバンクデータ、
              MIDIプログラムバンクデータ)を差し替えるサンプルです。
 demo:        MIDI、ONESHOT、ストリーム、GDDAを同時に再生するサンプルです。
 fx:          FXによる音響エフェクト効果を出すサンプルです。
 gdda:        GDDA再生のサンプルです。
 gdda2:       ポーズ復帰機能付き、GDDA再生のサンプルです。
 gdstream:    GD-ROMからのPCMストリーム再生のサンプルです。
 midi:        SHCPU上から、直接MIDIメッセージを発行するサンプルです。
 memplay1:    オンメモリPCMストリームの応用サンプルです。
 memplay2:    オンメモリPCMストリームの応用サンプルです。
 oneshot:     One Shot再生方法を用いた再生サンプルです。
 oneshot2:    One Shot再生方法を用いて8本まで同時再生するサンプルです。
 sequnece:    MIDIシーケンスデータを再生するサンプルです。
 stream:      PCMストリームをメモリから再生する一番単純なサンプルです。
 stereo:      BOOT ROMのステレオ・モノラルの設定から、サウンドの出力を変更して
              DA再生するサンプルです。


□SAMPLE\ETCディレクトリ

 このディレクトリは前述のカテゴリに含まれない、その他のサンプルで
 構成されています。

*font:       BOOT ROMからフォントを取得し、表示するサンプルです。
*makefile:   本SDKのサンプルで提供しているMakefileのマスタです。
*rtc:        リアルタイムクロックから時刻情報を拾ってくるサンプルです。
*sbinit:     sbinit.cのマスタファイルが含まれています。
+f40uf2:     プレイ履歴ライブラリのサンプルです。
+playlog:    プレイ履歴ライブラリを使用するために必要なIPの部分のソースです。

-以上-
