##### Shinobi Library - ペリフェラル・記録デバイス関数

# buSaveFile

ファイルのセーブ

### 書式

> `Sint32 buSaveFile( drive, fname, buf, nblock, time, flag )
> Sint32 drive
> const char *fname
> const void *buf
> Uint32 nblock
> BUS_TIME *time
> Uint32 flag
> `

### 引数

> drive | 拡張ソケットの番号
> fname | ファイル名
> buf | 読み込みアドレス
> nblock | 読み込むブロック数
> time | タイムスタンプ
> flag | フラグ

### 戻り値

> 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には必ず 4バイトバウンダリでアドレスを与えるようにしてください。

> フラグflagにはファイルの属性を指定します。

> 定義 | 意味
> BUD_FLAG_VERIFY | ベリファイあり
> BUD_FLAG_COPY(n) | コピーフラグ(nはコピーフラグ値)

### 用例

>     Sint32 ret;
>     Sint32 blocks, flag;
>     BUS_TIME time;
>     SYS_RTC_DATE rtc;

>     /* Data to be saved (512*10 bytes) */
>     extern char SaveData[];
>     	:
>     /* File size is 10 blocks */
>     blocks = 10;

>     /* Verify enabled | Set copy flag to 00H */
>     flag = BUD_FLAG_VERIFY | BUD_FLAG_COPY(0x00);
>     syRtcGetDate( &rtc );

>     /* Time stamp setting */
>     time = ( BUS_TIME )rtc;
>     ret = buSaveFile(BUD_DRIVE_A1, "SAVEDATA",
>     	SaveData, blocks, &time, flag);
>     if (ret == BUD_ERR_OK) {
>     	/* Save request was successful */
>     } else {
>     	/* Save request failed (busy) */
>     }
>     	:

### 備考

> ベリファイエラーが発生した場合でも、ファイルはセーブされています。

> buStat関数によるこの関数の完了ステータスは以下のとおりです。

> 定義 | 意味
> BUD_ERR_OK | 正常終了
> BUD_ERR_NO_DISK | メモリーカードがない
> BUD_ERR_UNFORMAT | フォーマットされていない
> BUD_ERR_DISK_FULL | メモリーカードに空きがない
> BUD_ERR_EXECFILE_EXIST | 同名の実行ファイルが存在する
> BUD_ERR_CANNOT_CREATE | ファイルが作成できない
> BUD_ERR_VERIFY | ベリファイエラー

> セーブには、(セーブブロック数×5 Int)の時間を必要とします(他の拡張ソケットの状態等によっては、多少時間は変動します)。

buSaveFile

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000