# FS_LoadArchive

## 構文

  `#include <nitro/fs.h>`
  `BOOL FS_LoadArchive(FSArchive *p_arc,
  u32 base, u32 fat, u32 fat_size, u32 fnt, u32 fnt_size,
  FS_ARCHIVE_READ_FUNC read_func,
  FS_ARCHIVE_WRITE_FUNC write_func);`

## 引数

p_arc | FSArchive構造体のアドレス
base | アーカイブ固有のアドレス空間におけるベースオフセット値 これはアーカイブ実装の利便性のために用意されており、 FS_GetArchiveBase()で取得するだけのものです。
fat | アーカイブ固有のアドレス空間におけるFATの先頭位置オフセット
fat_size | アーカイブのFATバイトサイズ
fnt | アーカイブ固有のアドレス空間におけるFNTの先頭位置オフセット
fnt_size | アーカイブのFNTバイトサイズ
read_func | アーカイブ固有のアドレス空間へリードアクセスするためのコールバック関数 このコールバックはアーカイブコマンドを内部で使用するFS関数の内部から呼び出されます。
write_func | アーカイブ固有のアドレス空間へライトアクセスするためのコールバック関数 このコールバックはアーカイブコマンドを内部で使用するFS関数の内部から呼び出されます。

## 返り値

アーカイブが正しくファイルシステムにロードされた場合は TRUE を、そうでないなら FALSE を返します。

## 説明

指定された実装のもとに、アーカイブをファイルシステムへロードします。
アーカイブは、`FS_RegisterArchiveName()` で前もって名前を登録してある必要があります。
ファイルシステムは与えられた引数の組み合わせから、アーカイブに以下の動作を仮定します。
・アーカイブは read_func および write_func でのみアクセス可能なリニアメモリ状の固有なデータ構造を持つ
・アーカイブはfatの位置からfat_sizeバイト分の領域にTwlROMフォーマット準拠のFAT情報を持ち、read_func によってアクセスできる
・アーカイブはfntの位置からfnt_sizeバイト分の領域にTwlROMフォーマット準拠のFNT情報を持ち、read_func によってアクセスできる
・アーカイブはFAT情報で指定されるすべての範囲の領域にファイルデータを持ち、read_funcによってアクセスできる
関数の成功後、アーカイブはファイルシステムからコールバック経由でアクセスされます。
ロードしたアーカイブは `FS_UnloadArchive()`でアンロードすることができます。
この関数を呼び出す前に `FS_SuspendArchive()` で明示的にサスペンド状態へ設定していない場合、
関数の成功とともにアーカイブはファイルシステム内で有効な状態になります。

## 参照

`FSArchive FS_ARCHIVE_NAME_LEN_MAX
FS_ReleaseArchiveName FS_UnloadArchive`

## 履歴

2005/06/01 コールバックがFS関数の内部から呼び出される旨を補足
2004/11/02 リンク先訂正
2004/06/30 初版