Shinobiライブラリ - メモリーカード関数

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;

/* ロードバッファ */
extern char SaveData[];

/* ファイルサイズを取得 */
blocks = buGetFileSize(BUD_DRIVE_A1, "SAVEDATA");

if (blocks <= 0) return NG;
ret = buLoadFile(BUD_DRIVE_A1, "SAVEDATA", SaveData, blocks);
if (ret == BUD_ERR_OK) {
	/* ロードリクエストに成功した */
} else {
	/* ロードリクエストに失敗した(BUSY) */
}

備考

buStat関数によるこの関数の完了ステータスは

 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バイト境界でアドレスを与えるようにしてください。


buLoadFile
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998,1999