# SDカードアーカイブ

## 概要

この項では、ファイルシステムにデフォルトで用意される「SDカードアーカイブ」について説明します。

## 仕様

SDカードアーカイブの基本的な動作は以下の通りです。

- ファイルシステムによって予約されているアーカイブ名 "sdmc" を使用します。
- `FS_InitFatDriver()` の初回呼び出し時に自動的にマウントされます。
  マウントされるNANDアーカイブの種類と個数はRSFファイルの設定内容に応じて本体ランチャーが判断し、起動時に決定されます。
- 任意のファイルやディレクトリに対して新規生成や削除が可能なため、ファイルIDやディレクトリIDを必要とするコマンド全般に対応しません。
  (そのような関数を呼び出した場合はFS_RESULT_UNSUPPORTEDを返します)
- 非同期版の読み書き関数を呼び出されても、バッファアドレスと転送サイズのいずれかが32バイト境界に整合していなければ同期版として動作します。この時はライブラリ内部の一時バッファを経由して転送するため、処理性能は低下します。

## 実装

SDカードの内部メモリ空間はNitroROMフォーマットでないため、アーカイブの内部実装もROMアーカイブのようなプロシージャ機構ではありません。 そのため、NITRO-SDKには存在しなかったいくつかの新規関数を使用することができ、逆にいくつかの既存の関数は使用することができません。
SDカードアーカイブで使用可能なFS関数は以下の通りです。

使用可能な関数
使用不可能な関数

関数 | 備考
FS_OpenFileEx (FS_OpenFile) |
FS_OpenFileFast | ファイルIDを使用するコマンドは非対応です。
FS_ConvertPathToFileID
FS_CloseFile |
FS_OpenFileDirect | デバイスのアドレス空間へ直接アクセスするコマンドは非対応です。
FS_GetFileImageTop
FS_GetFileImageBottom
FS_GetFileLength |
FS_SetFileLength |
FS_GetFilePosition |
FS_SeekFile FS_SeekFileToBegin FS_SeekFileToEnd |
FS_ReadFile |
FS_ReadFileAsync |
FS_WriteFile |
FS_WriteFileAsync |
FS_FlushFile |
FS_OpenDirectory (FS_FindDir) |
FS_ReadDirectory (FS_ReadDir) |
FS_CloseDirectory |
FS_TellDir | ディレクトリIDを使用するコマンドは非対応です。
FS_SeekDir
FS_RewindDir
FS_GetPathName | ハンドルからパス名を検索するコマンドは非対応です。
FS_GetPathLength
FS_CreateFile |
FS_DeleteFile |
FS_RenameFile |
FS_CreateDirectory |
FS_DeleteDirectory |
FS_RenameDirectory |

## 参照

`
FS_Init`

## 履歴

2009/02/27 非同期関数の動作について記述を訂正
2008/07/14 アーカイブ名に関して記述を若干修正
2007/09/26 初版