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

buLoadFile

ファイルのロード

書式

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

引数

drive拡張ソケットの番号
*fnameファイル名
*buf読み込みアドレス
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は読み込まれたバッファ(但し即時復帰なので関数終了後では不定) 通常のアプリケーションであればこの関数でファイル全体をロードします。 読み込むブロック数に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