upgrade.txt
                                                                     1999/04/27

■ライブラリ変更内容
                                                   (株)セガ・エンタープライゼス
                                                         ソフトウェア技術開発部

-------------------------------------------------------------------------------
●ご注意
ヘッダファイルやその他のファイルを参照することで利用可能なすべての関数
等の存在を知る事ができますが、ライブラリリファレンスに記載のないものに
関しては、動作の保証はしていません。
これらの関数等は現在未公開であり、仕様の確定や動作の確認が行われてから、
公開とさせていただきます。ユーザー各位の責任の範囲内でのご利用は自由で
すが、くれぐれも出荷される製品には組み込まないようにしてください。
また、これらの情報についての問い合わせには公開するまでお答えできません。
ご了承ください。

-------------------------------------------------------------------------------
【SDK1.40→SDK1.41】
-------------------------------------------------------------------------------
1.ライブラリ個別の変更
 (1)コンフィギュレーションライブラリ
     ・[追加] syCfgGetLanguage関数を公開。

       SDK1.40(shinobi.lib 1.41)までは正しい言語設定を返していないため
       使用できません。
       SDK1.41からsyCfgGetLanguageの返すマクロ値も変更されています。

 (2) SIPライブラリ
     ・[修正] wssip.h _WSBUF_OBJ構造体(=WSBUF_OBJ)のメンバの不具合を修正。

 (3) shinobi.h(1.37)
     ・[修正] 内部で他のヘッダファイルを extern "C" でくくる箇所を変更。
              C++の一部のソースで、_errnoのlinkage specが異なるとのエラー
              が発生してしまう不具合の対策。
              本修正による、機能的な制限・変更はありません。

 (4) サウンドライブラリ
     ・[不具合対策] SDD_PORT_FLG_TROUBLEの数値の誤りを修正。
     ・[不具合対策] 各音源の再生時のプライオリティの範囲が0000H〜000FHに
                    なっていたのを修正．
     ・[不具合対策] sdDrvGetErrがsg_sd.libに含まれていなかったのを修正。
     ・[削除]sdDebugPrint・sdDebugPrintfなどを完全に廃止。

 (5) グラフィックライブラリ(Ninja)
  ninja.lib Ver 01000081 → Ver 01000086

 【注意】
      ・チャンクモデル形式の NJD_CV_SH,NJD_CV_VN_SHのVertexは仕様から削除。
      ・Dev Box(SET5.24)以前のターゲットでは使用できません。以前のターゲット
       で使用した場合画面がオレンジ色になります。


[不具合対策]
  ・コリジョン関数を全面的に修正
  【注意：対カプセルのコリジョン】
      カプセルがもう一方の物体、例えばボックスのエッジがカプセルの胴体に
      多少食い込んでいてもコリジョンが取れない場合があります。これは計算を
      省いているために起こる現象でありバグではありません。
    （カプセルの胴体が切断されるときにその断面は楕円状になりますが、計算を
      省くために単なる円で計算を行っています。）

  ・njDrawPolygon3D関数でニアクリップにかかったとき、ポリゴンのつなぎ方が
  変わってしまうバグを修正。
  ・njDrawPoint3D関数のテクスチャの場合、データセットの仕方のバグを修正。
  ・NinjaDef.hのモデルのEVAL定義のマスク値が1ビット足りないバグを修正。
      #define NJD_EVAL_MASK       0x1ff 

  ・以下のコリジョン関数のバグを修正
        njCollisionCheckBC
        njCollisionCheckBB
  ・njInitVertexBufferでパンチスルーを2Vレーテンシモードにしたときのバグを修正


[追加]
  ・njCnkSimpleModel,njCnkSimpleMultiにミラーモードを対応
    #define     NJD_CONTROL_3D_MIRROR_MODEL    BIT_31
  ・njCnkSimpleModel,njCnkSimpleMultiに環境マップのUVスクロールを対応
    #define     NJD_CONTROL_3D_ENV_UV_SCROLL   BIT_17
    void        njCnkSetUvScroll( Float u, Float v );

  ・フレームカウント数を変更する関数を追加
    void njSetWaitVsyncCount(Int count);

  ・ハイライト付きテクスチャポリゴン描画関数を追加
    void  njDrawTextureH( NJS_TEXTUREH_VTX *polygon,Int count,Int tex,Int flag);   <NinjaStr.h>
    typedef struct {
        Float   x;
        Float   y;
        Float   z;
        Float   u;
        Float   v;
        Uint32  bcol;   /* Base Color   */
        Uint32  ocol;   /* Offset Color */
    } NJS_TEXTUREH_VTX;


-------------------------------------------------------------------------------
【SDK1.3x→SDK1.40】
-------------------------------------------------------------------------------
1.ライブラリ全体に関する変更
 (1)ヘッダファイル
     ・[追加] 英文コメントの追加。
     ・[削除] __SET4__,__SET5__,__KATANA__などのハードを判別に
	依存するマクロを削除。(全てDev.Box SET5、実機用)

2.ライブラリ個別の変更
 (1)shinobi.h
     ・[追加] sg_uf.h（プレイ履歴管理ライブラリ用ヘッダ）のインクルード。
     ・[追加] wssip.h（音声サンプリングライブラリ用ヘッダ）のインクルード。
     ・[追加] sg_pdtmr.h(ペリフェラルタイマライブラリ用ヘッダ)のインクルード。

     ・[削除] sg_sd.h(サウンドライブラリのヘッダ)  のインクルードを削除。

 (2)shinobi.lib
     ・[追加] wssip.lib（音声サンプルサンプリングライブラリ）を組み込み。
     ・[追加] sg_uf.lib（プレイ履歴管理ライブラリ）を組み込み。

 (3)ペリフェラルデータ取得ライブラリ

      ・[削除]デバイスID関連の以下のマクロ定義を削除。
         PDD_DEV_NODEVICE       (デバイス未接続)
         PDD_DEV_CONTROLLER     (標準コントローラ)
         PDD_DEV_KEYBOARD       (日本語92 キーキーボード)
         互換性のために残してきた、PDS_PERIPHERAL構造体のメンバidに
         格納していたデバイス情報の使用を禁止。
        注：上記変更にともなうアプリケーション側の変更は■補足１を参照のこと。

      ・[追加] ガンペリフェラルライブラリのサポート
      ・[追加] 使用ポートを限定してのワークメモリサイズの削減モード追加
      ・[不具合対策] Dポートキーボード不具合修正(DC SDK 1.32で修正済み)
      ・[変更] アナログLRをデジタル変換する際の方法を改善。（チャタリング防止のため）
      ・[不具合対策] Dポートキーボード不具合修正(DC SDK 1.32で修正済み)

 (4)メモリーカードライブラリ関連
      ・[不具合対策] buExit()をファイルアクセス中に呼ぶとその後の処理が
         進まなくなる不具合修正。(DC SDK 1.32で修正済み)

 (5)振動ペリフェラルライブラリ関連
      ・[不具合対策] pdVibEnum()関数がエラーとなった場合に次回からの呼び出しが
        常にエラーとなる可能性がある不具合を修正。

 (6)コンフィグレーションライブラリ関連
      ・[追加] 本体ID取得関数及びこれに関連するマクロ定義を追加。
         SYD_CFG_IID_OK     (1) 取得成功
         SYD_CFG_IID_CHKERR (2) チェックサムエラー
         SYD_CFG_IID_NG     (0) 取得失敗

 (7)ファイルシステム
      ・[変更] オーバレイで呼び出される側のプログラムが、ファイルシステムを使用する
        際に発生した問題を修正。

 (8)プレイ履歴ライブラリ関連
     ・[追加] 本体フラッシュメモリにプレイ履歴を記録するためのライブラリを追加。

 (9)sg_xpt.h
      ・[変更] C++使用時、bool型の定義を行なわないように変更。
               SHC V5.1 R03より、C++使用時のbool型がサポートされたことによる。

 (10)Ninja関連
  ninja.lib Ver 01000074 → Ver 01000081

 
  [変更]
 ・以下の構造体のメンバの位置を変更
<NinjaCnk.h>
typedef    struct    {
    Float    z;                /* 3D Z                    */
    Float    x;                /* Screen X                */
    Float    y;                /* Screen Y                */
    Float    ooz;              /* One over Z              */
    Float    inten;            /* Intensity               */
    Float    spec;             /* Specular      変更      */
    Float    nx;               /* Normal X                */
    Float    ny;               /* Normal Y                */
} NJS_CNK_SIMPLE_BUF;

typedef    struct    {
    Float    z;                /* 3D Z                    */
    Float    x;                /* Screen X                */
    Float    y;                /* Screen Y                */
    Float    ooz;              /* One over Z              */
    Float    a;                /* Alpha         変更      */
    Float    r;                /* Red                     */
    Float    g;                /* Green                   */
    Float    b;                /* Blue                    */
} NJS_CNK_EASYMULTI_BUF;


 ・Sint32のポインタからUint32のポインタに修正
    <NinjaApi.h>
      Uint32 *njLoadPvrHeader(NJS_PVRHEADERDATA *pvrh,
                              Uint32 *globalIndex,
                              Uint32 *pTexture);

 ・njGetSystemInfo関数でバーテックスバッファのカレントの値が取得
    できるように修正
    typedef struct{
        Uint32 NativeLimit;
        Uint32 NativeCurrent;
        Uint32 NativePeak;
        Uint32 InternalVertexBufSize[5];
        Uint32 MaxVertexBufSize[5];
        Uint32 LastTATime;
        Uint32 LastRenderTime;
        Uint32 CurrentVertexBufSize[5];/* <--- 新規追加  */
        Uint32 reserved0;
        Uint32 reserved1;
        Uint32 reserved2;
        Uint32 reserved3;
        Uint32 reserved4;
        Uint32 reserved5;
        Uint32 reserved6;
        Uint32 reserved7;
        Uint32 reserved8;
        Uint32 reserved9;
        Uint32 reserved10;
        Uint32 reserved11;
    } NJS_SYSTEMINFO;

  njWaitVSync関数から抜けるときにバーテックスバッファの先頭ポインタを
  取得しnjGetSystemInfo関数を呼ばれた時点での各バーテックスバッファの
  使用量を示します。


  [追加]

 ・モーション関数にクォータニオンを追加
    <NinjaStr.h>
    typedef struct {
        Uint32          keyframe;
        Float           key[4];
    } NJS_MKEY_QUAT;

    typedef     struct {
        float   re;     /* real (or scalor) part of quaternion	    */
        float   im[3];  /* imaginary (or vector) part of quaternion */
    } NJS_QUATERNION;
   <NinjaDef.h>
    #define NJD_MTYPE_QUAT_1        BIT_13

 ・テクスチャLOW関数を追加
    njLoadPvrHeader
    njGetTexSurface
    njLoadTexturePartLow
    njReleaseTextureLow
    njLoadTextureFinishDMA

    <NinjaDef.h>
    #define NJD_GLOBAXINDEX_FIRST_VAL   (0xFFFFFFFF)
    #define NJD_BANK_FIRST_VAL          (0xFFFFFFFF)
    #define NJD_TEXMEMFLAG_CACHE        BIT_0
    #define NJD_TEXMEMFLAG_TEXMEM       BIT_1
    #define NJD_GD_SECT_SIZE            2048

    <NinjaStr.h>
    /* PVRテクスチャヘッダデータ構造体  */
    typedef struct{
        Uint32 nTextureType;
        Uint16 nWidth;
        Uint16 nHeight;
    }NJS_PVRHEADERDATA;

    <NinjaVal.h>
        extern Sint8	*_nj_texture_buffer_st;
                        /* テクスチャバッファスタートアドレス  */
        extern Uint32 _nj_texture_buffer_max_size;	
                        /* テクスチャバッファサイズ  */

3.IP関連
 (1)ディスクドア・オープンのチェックを強化

4.開発環境関連
 (1)set_kt.bat
      ・[削除] SHCPP_で始まる環境変数の操作の削除
      ・デフォルトSDKディレクトリの変更（c:\katana → c:\dc_sdk）
 (2)makepre
      ・[削除] __SET4__,__SET5__,__KATANA__のマクロを削除。

■補足1
ペリフェラルデータ取得ライブラリのデバイスID関連のマクロ定義を削除について

従来、
 per = pdGetPeripheral(PDD_PORT_A0);
 if (per->id == PDD_DEV_CONTROLLER) {
  /* ドリームキャスト・コントローラが接続されている */
 } else {
  /* 接続されていない */
 }

等と記述していた部分は、以下のように修正していただく必要があります。
また、上のように記述してしまうと、標準のコントローラ(ドリームキャスト
・コントローラ)でしか動かなくなります。（アーケードスティック等では
動きません）
これを避けるために、上記defineを削除することにしました。

 if (per->info->type & PDD_DEVTYPE_CONTROLLER) {
  /* コントローラデバイスが接続されている */
 } else {
  /* 接続されていない */
 }

または、

 if (per->support != 0) {
  /* コントローラデバイスが接続されている */
 } else {
  /* 接続されていない */
 }

なお、ドリームキャスト・コントローラかどうかの判別は、ボタンサポート情報
  per->support
で行ってください。

■補足2
プレイ履歴ライブラリ使用時の注意

  プレイ履歴ライブラリの機能を使用する場合は、プレイ履歴対応のAIP
をイニシャルプログラム(以下IP.BIN)に組み込む必要があります。これは
次の２つの方法で行うことができます。

 (1) IP部分をアプリケーションプログラムと別に生成する場合
    =====================================================
    IP Makerで「プレイ履歴を保存する」という指定をしてIPを生成
    してください。
  
 (2) IP部分をアプリケーションのELFファイルに組み込む場合
    =====================================================
    リンクするオブジェクトファイルを差し替えてください。
    差し替えるファイルは、以下の３つのファイルです。

  (a) dc_sdk\shinobi\lib\aip.obj

     aip.objを プレイ履歴を保存するAIPのaipf.objに変更します。
     aipf.objは、dc_sdk\shinobi\libディレクトリに置かれています。

  (b) dc_sdk\shinobi\lib\systemid.obj
  (c) dc_sdk\shinobi\lib\zero.obj     

     商品番号、商品名を記述したsytemid.objと、日本語商品名を記述したzero.obj
     に変更します。これらは、dc_sdk\shinobi\sample\etc\playlog\のソースを編集
     して、アセンブルすることにより作成することができます。

     実際にアプリケーションをコンパイルする場合は、サンプルプログラムに付属
     するmake環境をご利用の場合は、dc_sdk\shinobi\lib\makepre  ファイル中の
     下記(*)の部分をそれぞれaip.objをaipf.objへ、systemid.obj,zero.objを上で
     作成したファイルのファイル名に置き換えます。
     (.objファイルの順番を変更してはいけません。)

【dc_sdk\shinobi\lib\makepre】

 :
DEFAULT_IP_OBJS  = \
	$(SHINOBI_LIB_DIR)\systemid.obj \           ・・・(*)
	$(SHINOBI_LIB_DIR)\toc.obj \
	$(SHINOBI_LIB_DIR)\sg_sec.obj \
	$(SHINOBI_LIB_DIR)\sg_arejp.obj \
	$(SHINOBI_LIB_DIR)\sg_areus.obj \
	$(SHINOBI_LIB_DIR)\sg_areec.obj \
	$(SHINOBI_LIB_DIR)\sg_are00.obj \
	$(SHINOBI_LIB_DIR)\sg_are01.obj \
	$(SHINOBI_LIB_DIR)\sg_are02.obj \
	$(SHINOBI_LIB_DIR)\sg_are03.obj \
	$(SHINOBI_LIB_DIR)\sg_are04.obj \
	$(SHINOBI_LIB_DIR)\sg_ini.obj \
	$(SHINOBI_LIB_DIR)\aip.obj \                ・・・(*)
	$(SHINOBI_LIB_DIR)\zero.obj                 ・・・(*)
DEFAULT_OBJS = 
DEFAULT_LIBS = 
 :


===============================================================================
 ミドルウェアライブラリ関連
===============================================================================

-------------------------------------------------------------------------------
【SDK1.3x→SDK1.40】
-------------------------------------------------------------------------------
1.変更点
 (1)ヘッダファイル
     ・[追加] pla_mw.h(オーディオ再生用)
     ・[追加] tm_mw.h(TrueMotion用)
     ・[追加] mpa_mw.h(MPEG/Audio用)
     ・[追加] sj.h(ストリームジョイント)

 (2)ライブラリ
     ・[追加] duck_tm.lib(TrueMotion用)
     ・[追加] mp1a_l2.lib(MPEG/Audio用)

 (3)サンプル
     ・[追加] mw_tm01(TrueMotionの単純再生)
     ・[追加] mw_mpa01(MPEG/Audioの単純再生)
     ・[追加] mw_sfd03(動画の移動再生)
     ・[追加] sfdadx01(MPEG SofdecとADXの並行再生)
     ・[変更] mw_sfd01の初期化パラメータとハンドル生成パラメータを変更。
     ・[変更] mw_sfd02の              〃
     ・[変更] mw_ply01のSofdec再生部分で初期化パラメータとハンドル生成
              パラメータを変更。
     ・[変更] mw_ply01のTrueMotionとMPEG/Audioの再生コードを追加。

 (4)機能
     ・[追加] ビデオのみ再生機能の追加。
              (オーディオトラックなしのM1Vファイルの再生)
     ・[追加] sofdec.libにポーズとポーズ解除の機能を追加。
     ・[変更] 作業領域の削減。これに伴い作業領域サイズの計算関数の追加。

2.注意
 (1)ポーズとポーズ解除を連続的に行うと、音がおかしくなり復帰しなくなる
    事があります。サウンドのデータ転送モードをCPUにすることにより回避
    できます。

 (2)TrueMotionは、現バージョンポーズ，ポーズ解除できません。

[EOF]
