##### Ninja Library - テクスチャ関数

# njLoadTextureFinishDMA

テクスチャのDMA終了確認

### 書式

> `Sint32 njLoadTextureFinishDMA(void)
> `

### 引数

> なし

### 戻り値

> ロード終了 | 1
> ロード終了していない | -1

### 解説

> ローレベルの即時復帰ロード関数でテクスチャをDMA転送したとき、DMA転送の終了を確認します。 それ以外のところで使用した場合戻り値は、必ず1になります。

> 以下の関数を使用する場合使用してください。

> - njLoadTexturePartLowEx
> - njLoadRectangleTexturePartLowEx
> - njReadTexturePartLowEx
> - njLoadVQCodebookLowEx
> - njLoadTextureManageNum
> - njLoadTexturePartManageNum

### 用例

>     void FreeTexManage(NJS_TEXMANAGE *texmanage);

>     /* 簡単なロード関数の例 (メモリにヘッダ付きテクスチャがある場合)*/
>     Sint32 EasyLoadTexture(NJS_TEXLIST *texlist,Uint32 n,Sint8 *pTexture)
>     {
>         NJS_TEXMANAGE *texmanage;
>         NJS_TEXSYSTEM *texsystem;
>         Uint32 globalIndex;
>         NJS_PVRHEADERDATA pvrh;
>         Uint32 *data;
>         Uint32 size;
>         Sint32 texmng_no;
>         /*
>         データにはグローバルインデックス、
>         PVRヘッダデータがあるものとする
>         */
>         if((data = njLoadPvrHeader(&pvrh,&globalIndex,pTexture))== NULL){
>         /* ヘッダがなかった場合*/
>             return -1;
>         }

>         /* テクスチャマネージメント構造体の空きを取得 */
>     	texmng_no = njGetTexManageNum(&texmanage,&texsystem);

>     	if(texmng_no < 0){
>     		return -1;
>     	}
>     	texmanage->texsys = texsystem;

>     	/* サーフェスの取得 */
>     	ret = njGetTexSurfaceEx(texmanage,pvrh);
>     	if(ret != 1) {
>     		texmanage->texsys = NULL;
>     		return -1;
>     	}

>     	/* グローバルインデックスの設定 */
>     	if(globalIndex != NJD_GLOBAXINDEX_FIRST_VAL)
>     		texmanage->texsys->globalIndex = globalIndex;

>     	/* パレットの設定 */
>     	if(njCheckPaletteType(pvrh->nTextureType)){
>     		texmanage->bank = bank;
>     	}
>     	else{
>     		texmanage->bank = NJD_BANK_FIRST_VAL;
>     	}

>     	/* パラメータの設定 */
>     	njSetTextureParamEx(texmanage);
>     	texmanage->count = 1;
>     	texmanage->texsys->count = 1;
>     	_nj_tex_count++;

>         /* データ先頭からサイズ分ロードする*/
>         size = texmanage->texsys->texsurface.TextureSize;
>         if(njLoadTexturePartLowEx(texmanage,data,0,size)== -1){
>             /* サーフェスのリリース*/
>             njReleaseTextureLowEx(texmanage);
>             FreeTexManage(texmanage);
>             return -1;
>         }

>         /* DMA終了まで待つ*/
>         while(njLoadTextureFinishDMA() != 1);

>         /* テクスチャリストとテクスチャメモリリストのリンクをはる */
>     	njLinkTexlist(texlist,n,texmng_no);

>         return 1;
>     }

>     /*
>     	テクスチャマネージメント構造体の開放設定
>     	njClearTextureSurface関数と同じ機能
>     */
>     void FreeTexManage(NJS_TEXMANAGE *texmanage)
>     {
>     	NJS_TEXSYSTEM *texsys;

>     	texsys = texmanage->texsys;
>     	if(texsys != NULL){
>     		texsys->globalIndex = NJD_GLOBAXINDEX_FIRST_VAL;
>     	    texsys->texsurface.Type = 0;
>     		texsys->texsurface.BitDepth = 0;
>     		texsys->texsurface.PixelFormat = 0;
>     		texsys->texsurface.nWidth = 0;
>     		texsys->texsurface.nHeight = 0;
>     		texsys->texsurface.TextureSize = 0;
>     		texsys->texsurface.fSurfaceFlags = 0;
>     		texsys->texsurface.pSurface = 0;
>     		texsys->count = 0;
>     	}
>         texmanage->bank = NJD_BANK_FIRST_VAL;
>         texmanage->tspparam = 0;
>         texmanage->texparam = 0;
>         texmanage->texsys = NULL;
>     	texmanage->texflag = 0;
>     	texmanage->count = 0;

>     }

### 備考

> 使用する場合、他のテクスチャ関数との互換に注意してください。

### 参照

> njLoadTexturePartLowEx() | 即時復帰型ローレベル分割テクスチャロード
> njLoadRectangleTexturePartLowEx() | テクスチャの即時復帰型ローレベル矩形領域のロード
> njReadTexturePartLowEx() | テクスチャメモリからメインメモリへのデータのローレベルリード
> njLoadVQCodebookLowEx() | 即時復帰型ローレベルVQコードブックのロード
> njLoadTextureManageNum() | テクスチャマネージメント番号による即時復帰型テクスチャのロード
> njLoadTexturePartManageNum() | テクスチャマネージメント番号による即時復帰型テクスチャの分割ロード

njLoadTextureFinishDMA

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000