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