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

buInit

メモリーカードファイルシステムの初期化

書式

Sint32 buInit( capa, drive, *work, func )
Sint32 capa
Sint32 drive
void *work
BU_INITCALLBACK func

引数

capaメディアの最大容量
drive拡張ソケットの番号
*workワークバッファ
func初期化終了コールバック関数

戻値

BUD_ERR_OK正常終了
BUD_ERR_INVALID_PARAMパラメータ異常

解説

メモリーカードファイルシステムを初期化します。

メディアの最大容量を示す引数 capa には次の値が指定可能です。

BUD_CAPACITY_128KB
BUD_CAPACITY_256KB
BUD_CAPACITY_512KB
BUD_CAPACITY_1MB

対象拡張ソケットを示す引数 drive には次の値を指定します。

BUD_USE_DRIVE_ALLすべての拡張ソケット
BUD_USE_DRIVE_A1ポートAの拡張ソケット1
BUD_USE_DRIVE_A2ポートAの拡張ソケット2
BUD_USE_DRIVE_B1ポートBの拡張ソケット1
BUD_USE_DRIVE_B2ポートBの拡張ソケット2
BUD_USE_DRIVE_C1ポートCの拡張ソケット1
BUD_USE_DRIVE_C2ポートCの拡張ソケット2
BUD_USE_DRIVE_D1ポートDの拡張ソケット1
BUD_USE_DRIVE_D2ポートDの拡張ソケット2

ワークバッファを示す引数 workにNULLを指定した場合、引数 capaの設定は無視されメモリーカード用の バッファを動的に管理することができます。 初期化に成功したら指定の関数をコールバックします。

コールバック関数はこの関数からリターンする前に呼び出されます。 その場合、BUD_OP_CONNECTコールバックを検知した後、 挿入されているメモリーカードのサイズに見合ったバッファをアプリケーション側で確保し、 buMountDisk()関数でマウント処理を行います。その後は通常の使い方と同様な使い方ができます。

このような使い方をすることで、予め大きいバッファサイズを確保すること無く、 大容量のメモリーカードにも対応することが可能になります。


用例

/* 128KBまでのメモリーカード 2個分のバッファを確保 */
Uint32 work[BUM_WORK_SIZE(BUD_CAPACITY_128KB, 2) / sizeof(Uint32)];
void init_callback(void)
{
	:	
}
/* ポートAの拡張ソケット1、2に対応する */
buInit(BUD_CAPACITY_128KB, BUD_USE_DRIVE_A1 | BUD_USE_DRIVE_A2, work, init_callback);

備考

最大容量や使用しているメモリーカード数によって、必要なワーク容量が大幅に異なります。 アプリケーションで対応する必要のない拡張ソケットのメモリーカードはなるべく指定しないようにしてください。 不要なメモリーカードを指定しないことにより、ワーク容量の削減とライブラリの高速化が可能です。 以下に、ワーク容量の目安を記します。

最大容量1ソケットあたりのワーク容量8スロットでのワーク容量
128KB8KB64KB
256KB14KB112KB
512KB28KB220KB
1MB55KB440KB

使用する拡張ソケットの指定にはBUD_USE_DRIVE_XXXを必ず指定してください。 BUD_DRIVE_XXXを誤って指定することのないようにしてください。


参照

buExit()
buMountDisk()

buInit
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998