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() 最後に発生したエラーを戻す