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

buLoadFile

ファイルのロード

書式

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

引数

drive   拡張ソケットの番号
fname   ファイル名
buf   書き出しアドレス(4バイト境界)
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 

書き出しアドレスbufは、即時復帰なので関数終了後では不定です。

通常のアプリケーションであればこの関数でファイル全体をロードします。 ファイル全体をロードするには、読み込むブロック数nblockに0を指定します。


用例

Sint32 ret;
Sint32 blocks;

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

/* Get file size */
blocks = buGetFileSize(BUD_DRIVE_A1, "SAVEDATA");

if (blocks <= 0)
	return NG;
ret = buLoadFile(BUD_DRIVE_A1, "SAVEDATA", SaveData, blocks);
if (ret == BUD_ERR_OK) {
	/* Load request was successful */
} else {
	/* Load request failed (busy) */
}

備考

buStat()関数を使って処理が完了したかどうかを調べたあと、buGetLastError()関数で取得するこの関数の完了ステータスは以下のとおりです。

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

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

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


参照

buStat()
 処理の終了の検知
buGetLastError()
 最後に発生したエラーを戻す

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