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

buDefragDisk

メモリーカードの最適化

書式

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

引数

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

戻値

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 byte を与えてください。

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


用例

  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