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

buLoadFileEx

ファイルのロード(開始ブロック指定)

書式

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

引数

drive拡張ソケットの番号
*fnameファイル名
*buf読み込みアドレス
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;
  extern char LoadBuffer[];  /* ロードバッファ */
  /* ファイル一部ロード */
  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;
  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バイト境界でアドレスを与えるようにしてください。


buLoadFileEx
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998