# Ninjaライブラリ

## テクスチャ構造体

## NJS_TEXSURFACE構造体

［定義］
  テクスチャメモリにロードしたテクスチャの情報を管理する構造体

［記述］

      typedef struct{
              Uint32  Type;           /*
                                      31 - 24ビット テクスチャフォーマットタイプ
                                      0x01******:Twiddledテクスチャ
                                      0x02******:Twiddledミップマップテクスチャ
                                      0x03******:VQテクスチャ
                                      0x04******:VQミップマップテクスチャ
                                      0x05******:4bppパレットテクスチャ
                                      0x06******:4bppパレットミップマップテクスチャ
                                      0x07******:8bppパレットテクスチャ
                                      0x08******:8bppパレットミップマップテクスチャ
                                      0x09******:Rectangleテクスチャ
                                      0x0B******:Strideテクスチャ
                                      0x0D******:Twiddled Rectangleテクスチャ
                                              0x10******:SmallVQテクスチャ
                                      0x11******:SmallVQミップマップテクスチャ

                                      23 - 16ビット  テクスチャカラータイプ
                                      0x**00****:ARGB1555
                                      0x**01****:RGB565
                                      0x**02****:ARGB4444
                                      0x**03****:YUV422
                                      0x**04****:BUMP
                                      0x**05****:RGB555
                                      0x**06****:ARGB8888 or YUV420

                                      15 -  0ビット  サーフェスタイプ
                                      0x****0001:フレームバッファ(この値は入りません)
                                      0x****0002:SmallVQ以外のテクスチャ
                                      0x****0003:SmallVQテクスチャ
                                      */
              Uint32  BitDepth;       /*
                                      0x00000001:16ビットテクスチャ
                                      0x00000002:24ビットテクスチャ
                                      0x00000003:32ビットテクスチャ
                                      */
              Uint32  PixelFormat;    /*
                                      0x00000000:ARGB1555
                                      0x08000000:RGB565
                                      0x10000000:ARGB4444
                                      0x18000000:YUV422
                                      0x20000000:BUMP
                                      0x28000000:PALETTIZED 4BPP
                                      0x30000000:PALETTIZED 8BPP
                                      */
              Uint32  nWidth;         /* テクスチャの横サイズ 8 - 1024 */
              Uint32  nHeight;        /* テクスチャの縦サイズ 8 - 1024 */
              Uint32  TextureSize;    /* テクスチャのバイトサイズ */
              Uint32  fSurfaceFlags;  /*
                                      0ビット         0: ミップマップなし
                                                      1: ミップマップあり
                                      1ビット         0: 1ビットは0固定
                                      2ビット         0: 長方形テクスチャ
                                                      1: Twiddledテクスチャ
                                      3ビット         0: VQ以外のテクスチャ
                                                      1: VQテクスチャ
                                      4ビット         0: Stride以外のテクスチャ
                                                      1: Strideテクスチャ
                                      5ビット         0: パレット以外のテクスチャ
                                                      1: パレットテクスチャ
                                      */
              Uint32  *pSurface;      /* テクスチャアドレスのオフセット */
              Uint32  *pVirtual;      /* 0固定        */
              Uint32  *pPhysical;     /* 0固定        */
      }NJS_TEXSURFACE;

## NJS_TEXINFO構造体

［定義］
  テクスチャの情報を管理する構造体

［記述］

      typedef struct{
              void    *texaddr;
                      /*
                      メモリテクスチャ、キャッシュテク                                                        スチャの場合ロード先のアドレスが                                                        入る
                      */
              NJS_TEXSURFACE  texsurface;
                      /*
                      NJS_TEXSURFACE構造体
                      NJS_TEXMEMLIST構造体
                      のメンバではテクスチャロード後のテクスチャデータが保存される。
                      メモリテクスチャをロードときにNJS_TEXINFO構造体を使用する場合。
                      NJS_TEXSURFACE構造体
                      のTypeの上位16ビットにテクスチャフォーマットタイプとテクスチャ
                      カラータイプを入れ、nWidth,nHeightにテクスチャの横縦のサイズを
                      入れる。
                      */
      } NJS_TEXINFO;

## NJS_TEXNAME構造体

［定義］
  登録するテクスチャのファイル名、アトリビュート、グローバルインデックスを設定する構造体

［記述］

      typedef struct {
              void    *filename;
                      /*
                      ファイルテクスチャの場合ファイル名が入るメモリテクスチャの場合
                      NJS_TEXINFO構造体のアドレスが入る。
                      */

              Uint32  attr;
                      /*
                      31 - 21ビット テクスチャアトリビュート
                              31ビット 0：キャッシュテクスチャ登録しない
                                       1：キャッシュテクスチャ登録する
                              30ビット 0：ファイルからテクスチャをロードする
                                       1：メモリからテクスチャをロードする
                              29ビット 0：テクスチャメモリのみ登録する
                                       1：キャッシュ、テクスチャメモリの両方に登録する
                      *********************************************************
                      ・テクスチャメモリにのみロードする場合は31,29ビットを0にする。
                      ・キャッシュメモリにのみロードする場合は31ビットを1にする。
                      ・キャッシュ、テクスチャメモリの両方にロードする場合には、
                        29ビットを1にする。
                      **********************************************************
                      28 - 25ビット     ：予約領域
                      24ビット         1：パレットグローバルインデックスフラグ
                      23ビット         1：グローバルインデックスフラグ
                      22、21ビット      ：予約領域
                      16ビット          ：テクスチャコンティニュウフラグ
                      15 - 0ビット      ：PVMエントリID保存に使用する
                      */

              Uint32  texaddr;
                      /*
                      テクスチャロード時にテクスチャアトリビュートにグローバルイン
                      デックスフラグ、又はパレットグローバルインデックスフラグを指定す                        る場合、グローバルインデックス値、パレットバンク値が入る。
                      通常、njSetTextureName関数でセットされる。
                      テクスチャロード後はNJS_TEXMEMLIST構造体へのアドレスが設定される。
                      グローバルインデックスフラグ、パレットグローバルインデックス使用
                      時に、テクスチャリリース後にもう一度テクスチャをロードするような
                      場合は、グローバルインデックス値を再度設定すること。
                      */
      } NJS_TEXNAME;

## NJS_TEXLIST構造体

［定義］
  テクスチャをグループ管理する構造体

［記述］

      typedef struct {
              NJS_TEXNAME     *textures;      /* NJS_TEXNAME構造体のアドレスを設定 */
              Uint32          nbTexture;      /* NJS_TEXNAME構造体の個数を設定 */
      } NJS_TEXLIST;

## NJS_TEXMEMLIST構造体

［定義］
  キャッシュ又はテクスチャメモリに登録したテクスチャのデータを内部で管理する構造体

［記述］

      typedef struct {
              Uint32          globalIndex;
                              /*
                              キャッシュ領域又はテクスチャ領域に登録されたテクスチャの
                              グローバルインデックス。
                              デフォルトは0xFFFFFFFF
                              */

              Uint32          bank;
                              /*
                              パレットテクスチャのバンク番号。
                              デフォルトは0xFFFFFFFF
                              */

              Uint32          tspparambuffer; /* 内部設定値   */
              Uint32          texparambuffer; /* 内部設定値   */
              Uint32          texaddr;        /* texture flag         */
              NJS_TEXINFO     texinfo;        /* NJS_TEXINFO構造体     */
              Uint16          count;          /* テクスチャ使用回数   */
              Uint16          dummy;          /* テクスチャのエラーコード
                                               0：エラーなし
                                               1：その他のエラー
                                               2：ファイルオープンエラー
                                               3：拡張子エラー
                                               4：ヘッダエラー
                                               5：ファイルロードエラー
                                               6：サーフェスエラー（テクスチャメモリ不足）
                                               7：メインメモリエラー（メインメモリ不足 ）
                                               8：テクスチャメモリロードエラー
                                               9：グローバルインデックスエラー
                                              */
      } NJS_TEXMEMLIST;

## NJS_TEXPALETTE構造体

［定義］
  パレットデータロード、設定時に使用する構造体

［記述］

      typedef struct {
              void    *palette;       /*      パレットデータへのアドレス      */
              Uint16  mode;           /*      パレットのカラーモード
                                              0：ARGB1555
                                              1：RGB565
                                              2：ARGB4444
                                              6：ARGB8888
                                      */
              Sint16  bank;           /*      パレットのバンク番号 0 - 63     */
              Sint16  offset;         /*      パレットエントリのオフセット 0 - 1023 */
              Sint16  count;          /*      パレットの数    1 - 1024        */
      }NJS_TEXPALETTE;

## NJS_TEXERRSTAT構造体

［定義］
  テクスチャのエラーを返す構造体

［記述］

      typedef struct {
              Uint32  n;      /*
                                 エラーしたテクスチャのテクスチャ番号
                                 デフォルトは0xFFFFFFFF
                              */
              Uint32  globalIndex;
                              /*
                                 エラーしたテクスチャのグローバルインデックス
                                 デフォルトは0xFFFFFFFF
                              */
              Sint32  texerr; /*
                                 テクスチャのエラーコード
                                 0:エラーなし
                                 1:その他のエラー
                                 2:ファイルオープンエラー
                                 3:拡張子エラー
                                 4:ヘッダエラー
                                 5:ファイルロードエラー
                                 6:サーフェスエラー（テクスチャメモリ不足）
                                 7:メインメモリエラー（メインメモリ不足）
                                 8:テクスチャメモリロードエラー
                                 9:グローバルインデックスエラー
                              */

              Sint32  gdstat; /*
                                 GDステータスコード。
                                 GDからファイルロード中にエラーが発生した場合、GDのステータス取得関数
                                 gdFsGetStat
                                 を実行し結果をgdstatに入る。
                                 この場合texerrは5のファイルロードエラーになっている。
                                 #define  GDD_STAT_IDLE      (0)
                                 #define  GDD_STAT_COMPLETE  (1)
                                 #define  GDD_STAT_READ      (2)
                                 #define  GDD_STAT_SEEK      (3)
                                 #define  GDD_STAT_BUSY      (4)
                                 #define  GDD_STAT_ERR       (5)
                                 #define  GDD_STAT_FATAL     (6)
                                 #define  GDD_STAT_CONTINUE  (7)
                                 #define  GDD_STAT_UNDEF     (8)
                                 デフォルトは0
                              */
              Sint32  gderr;  /*
                                GDエラーコード
                                GDからファイルロード中にエラーが発生した場合、
                                GDのステータス取得関数を実行した後にGDのエラー取得関数
                                gdFsGetErrStat
                                を実行し、結果をgderrに入れる
                                 #define  GDD_ERR_OK          (  0)
                                 #define  GDD_ERR_INIT        ( -1)
                                 #define  GDD_ERR_RESET       ( -2)
                                 #define  GDD_ERR_LIBOV       ( -3)
                                 #define  GDD_ERR_MOUNT       ( -4)
                                 #define  GDD_ERR_DISC        ( -5)
                                 #define  GDD_ERR_DIRREC      ( -6)
                                 #define  GDD_ERR_CANTOPEN    ( -7)
                                 #define  GDD_ERR_NOTFOUND    ( -8)
                                 #define  GDD_ERR_NOHNDL      ( -9)
                                 #define  GDD_ERR_ILLHNDL     (-10)
                                 #define  GDD_ERR_NOTDIR      (-11)
                                 #define  GDD_ERR_DIROVER     (-12)
                                 #define  GDD_ERR_BUSY        (-13)
                                 #define  GDD_ERR_32ALIGN     (-14)
                                 #define  GDD_ERR_SIZE        (-15)
                                 #define  GDD_ERR_SEEK        (-16)
                                 #define  GDD_ERR_OFS         (-17)
                                 #define  GDD_ERR_ILLTMODE    (-18)
                                 #define  GDD_ERR_READ        (-19)
                                 #define  GDD_ERR_NOTREAD     (-20)
                                 #define  GDD_ERR_TOUT        (-21)
                                 #define  GDD_ERR_EOF         (-22)
                                 #define  GDD_ERR_TRAYOPEND   (-23)
                                 #define  GDD_ERR_SIZEOVER    (-24)
                                 #define  GDD_ERR_FATAL       (-25)
                                 #define  GDD_ERR_UNDEF       (-26)
                                 #define  GDD_ERR_NOERR       (-27)
                                 #define  GDD_ERR_RECOVER     (-28)
                                 #define  GDD_ERR_NOTREADY    (-29)
                                 #define  GDD_ERR_MEDIA       (-30)
                                 #define  GDD_ERR_HWARE       (-31)
                                 #define  GDD_ERR_ILLREQ      (-32)
                                 #define  GDD_ERR_UNITATTENT  (-33)
                                 #define  GDD_ERR_PROTECT     (-34)
                                 #define  GDD_ERR_ABORT       (-35)
                                 #define  GDD_ERR_NOREADABLE  (-36)
                                 #define  GDD_ERR_CHECKBUSY   (-37)
                                 デフォルトは0が入っています。
                              */
              Sint32  reserved0;/* 予約領域0                    */
              Sint32  reserved1;/* 予約領域1                    */
              Sint32  reserved2;/* 予約領域2                    */
      }NJS_TEXERRSTAT;