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; /* ロードバッファ */ 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; } else { return OK; }
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バイト境界でアドレスを与えるようにしてください。