ファイルシステム(FS) 概要

はじめに

FSライブラリは、ファイルシステムとオーバーレイモジュールを使用するための各種APIを提供します。

あらゆるFSライブラリ関数の使用に先立ってあらかじめFS_Init( ) を呼び出しておく必要があります。
FSライブラリは内部で使用できるDMAチャンネルをアプリケーションから明示的に指定される必要があるため、 OS_Init( )の内部から自動的に呼び出されないという点に注意してください。


(初期化の例)
void NitroMain(void)
{
    // 起動直後にOSを初期化します。
    OS_Init();
    // DMA番号を明示的に指定してFSライブラリを初期化します。
    FS_Init(3);
    // これ以降、FSライブラリが使用可能となります。
}

ファイル・ディレクトリへのアクセス

TWL-SDKに用意される様々なファイルシステムは、FSライブラリで定められた共通のインタフェースに準拠して実装されます。 これにより、仕様が異なる各々のファイルシステムに対応するためのコードをゲーム開発者やライブラリ設計者が個別に記述する必要が無くなり、開発の負担を軽減することができます。

アプリケーションがファイルシステムへアクセスする際には、多くの場合ファイルやディレクトリのハンドルをオープンする必要があります。 オープンしたハンドルを保持しておくためのFSFile構造体はアプリケーション側で用意し、 使用する前にFS_InitFile( )で初期化しておく必要がある点に注意してください。

ファイルアクセス 関数一覧
ディレクトリアクセス 関数一覧

アーカイブ

FSライブラリにマウントされる個々のファイルシステムの実装を「アーカイブ」と呼びます。 アーカイブは、パーソナルコンピュータ上で一般的に「ドライブ」と呼ばれるものと概念的に同じものです。 また、FSライブラリがあらかじめ用意している「アーカイブ」を「標準アーカイブ」と呼んでいます。

DSカードから起動したプログラムであれば必ずROM領域内に1個のディレクトリツリー構造を格納しており、 FSライブラリではこのディレクトリツリーへアクセスするためのアーカイブを"rom:"という名前でシステムにマウントします。 このアーカイブを「ROMアーカイブ」と呼び、プログラムにとっては最も標準的なアーカイブとなります。 その他にもプログラムの種類によってはFSライブラリがいくつかのアーカイブを追加で用意することがあります。 詳細は「標準アーカイブ (overview)」の項をご参照ください。

SDKが用意する標準アーカイブのほかにも、必要に応じて開発者が新しいアーカイブを自由に実装してマウントするための各種APIが用意されています。

アーカイブ 関数一覧

オーバーレイ

起動時に全てを常駐させておくことのできない巨大なプログラムであっても、 個々のモジュールをオーバーレイとして分割すれば実行中に必要な部分だけをロードすることができます。 FSライブラリではこのオーバーレイモジュールのロード処理に必要なひととおりの機能(オーバーレイ情報の取得・実行コードの読み込み・コンストラクタやデストラクタの起動)をAPIとして用意しています。 オーバーレイモジュールはファイルシステム内部で1個の無名ファイルとして扱われているため、 必要に応じて、通常のファイル読み込みと同じ要領でロード処理をカスタマイズすることも可能です。

オーバーレイを使用するための手順はFSライブラリのサンプルデモmakelcfツールの説明をご参照ください。

オーバーレイ 関数一覧

参照

FS関数一覧

履歴

2009/12/11 標準アーカイブの定義を追記
2008/09/26 アンカータグの書式ミスを修正
2008/09/12 初版