FS:OpenFile

From 3dbrew
Revision as of 07:44, 18 December 2014 by Guiand (talk | contribs)
Jump to navigation Jump to search

Request

Index Word Description
0 Header code [0x080201C2]
1 Transaction (usually 0)
2 Archive handle lower word
3 Archive handle upper word
4 LowPath.Type
5 LowPath.Size
6 OpenFlags
7 Attributes (usually 0)
8 (LowPath.Size<<14) | 2
9 LowPath.Data pointer

Response

Index Word Description
0 Header code
1 Resultcode
3 File handle

OpenFlags

Bit Description
0 Read
1 Write
2 Create

Attributes

Flag Description
0x00000001 Is Read-Only
0x00000100 Is Archive
0x00010000 Is Hidden
0x01000000 Is Directory

LowPath

Type Description
0 (INVALID) Specifies an invalid path.
1 (EMPTY) Specifies an empty path.
2 (BINARY) Specifies a binary path, which is non-text based.
3 (CHAR) Specifies a text based path with a 8-bit byte per character.
4 (WCHAR) Specifies a text based path with a 16-bit short per character.

Binary LowPath

The format of the data that a binary LowPath points to is custom per archive.


SystemSaveData Archive Path Data Format

FS

Index word Description
0 Mediatype (must be zero for NAND)
1 saveid

The file/directory lowpath is a text lowpath in the savegame filesystem.

FSPXI

Index word Description
0 u8 Mediatype (must be zero for NAND)

The file lowpath is a binary lowpath containing the u64 saveid, however the high word of the saveid is always zero. The mounted file is the cleartext savegame image. Up to 32 SystemSaveData image files can be opened under a single mounted FSPXI archive.

UserSaveDataForCheck Archive Path Data Format

Index word Description
0 Mediatype (must be non-zero)
1 Lower word saveid
2 Upper word saveid

The file/directory lowpath for this FS archive is a text path in the savegame filesystem.

ExtSaveData Archive Path Data Format

Index word Description
0 Mediatype
1 Lower word saveid
2 Upper word saveid

For FS, the file/directory lowpath is a text path in the extdata filesystem. For FSPXI, the file lowpath is a text path relative to the "/extdata/<ExtdataIDHigh>/<ExtdataIDLow>" directory on SD/NAND, for the cleartext extdata image to mount.

RomFS

The raw FS image for the main CXI RomFS(for the current app this is accessible via archiveid 0x3) can be accessed via an all-zero 0x14-byte binary file-lowpath. This allows access to the raw level-3 IVFC image: the user process must handle parsing the filesystem used in this image itself.

In this scenario, OpenFile returns a handle to the RomFS archive.