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

# buDefragDisk

メモリーカードの最適化

### 書式

      Sint32 buDefragDisk( drive, *work )
      Sint32 drive
      void *work

### 引数

  drive | 拡張ソケットの番号
  *work | ワークバッファ(512バイト)

### 戻り値

  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

  ワークバッファworkには、ワークエリアとして 512バイトを与えてください。

  実行ファイルのセーブには十分な空き容量があるが、 セーブに必要な連続した空き容量が確保できない場合にこの関数を使います。

### 用例

        Sint32 ret;
        Uint32 DefragWork[512 / sizeof(Uint32)];
        ret = buDefragDisk(BUD_DRIVE_A1, DefragWork);
        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;

### 備考

  最適化処理中はworkで示されるワークバッファの内容を書き換えないでください。 また、workには必ず4バイト境界で512バイトのバッファを与えるようにしてください。

  この関数の実行中にメモリーカードが抜かれると、ほとんどの場合すべてのデータが消失してしまいます。 アプリケーションプログラムは、この関数の実行中はメモリーカードの抜き挿しを決して行わないよう、 何らかの方法でプレーヤーに促してください。

buDefragDisk

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998,1999