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