Shinobi Library - ペリフェラル・記録デバイス関数

buLoadFileEx

ファイルのロード(開始ブロック指定)

書式

Sint32 buLoadFileEx(drive, fname, buf, start, nblock)
Sint32 drive
const char *fname
void *buf
Uint32 start
Uint32 nblock

引数

drive   拡張ソケットの番号
fname   ファイル名
buf   書き出しアドレス(4バイト境界)
start   読み込み開始ブロック
nblock   読み込むブロック数

戻り値

BUD_ERR_OK   処理要求を受けつけた
BUD_ERR_BUSY   処理中のため要求を受けつけられなかった

解説

ファイルをロードします。

部分的に読み込むことが可能です。

拡張ソケットの番号driveには次の値が指定できます。

 定義   意味 
 BUD_DRIVE_A1   ポートAの拡張ソケット1 
 BUD_DRIVE_A2   ポートAの拡張ソケット2 
 BUD_DRIVE_B1   ポートBの拡張ソケット1 
 BUD_DRIVE_B2   ポートBの拡張ソケット2 
 BUD_DRIVE_C1   ポートCの拡張ソケット1 
 BUD_DRIVE_C2   ポートCの拡張ソケット2 
 BUD_DRIVE_D1   ポートDの拡張ソケット1 
 BUD_DRIVE_D2   ポートDの拡張ソケット2 

読み込み開始ブロックに0を指定するとファイルの先頭からロードします。 読み込むブロック数に0を指定するとファイル全体をロードします。


用例

Sint32 ret;
Sint32 blocks;
Sint32 start_block;

/* Load buffer */
extern char LoadBuffer[];

/* Partial file load */
start_block = 0;
blocks = 1;
ret = buLoadFileEx(BUD_DRIVE_A1, "SAVEDATA_001",
	LoadBuffer, start_block, blocks);
if (ret != BUD_ERR_OK)
	return NG;
while (buStat(BUD_DRIVE_A1) == BUD_STAT_BUSY) {
	:
}
if (buGetLastError(BUD_DRIVE_A1) != BUD_ERR_OK){
	return NG;
} else {
	return OK;
}

備考

buStat関数によるこの関数の完了ステータスは以下のとおりです。

 ステータス   意味 
 BUD_ERR_OK   正常終了 
 BUD_ERR_NO_DISK   メモリーカードがない 
 BUD_ERR_UNFORMAT   フォーマットされていない 
 BUD_ERR_FILE_NOT_FOUND   ファイルがない 
 BUD_ERR_CANNOT_OPEN   ファイルが開けない 
 BUD_ERR_FILE_BROKEN   ファイルが壊れている 

ロードには、大体、(ロードブロック数×1 Int)かかります(他のドライブの状態等によっては多少時間は変動します)。

また 書き出しアドレスbufには必ず、4バイト境界でアドレスを与えるようにしてください。


buLoadFileEx
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000