Difference between revisions of "Manu services"

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 11: Line 11:
 
| 1 || FsFile_Exists || Takes an X descriptor, and produces, 8 bytes output.
 
| 1 || FsFile_Exists || Takes an X descriptor, and produces, 8 bytes output.
 
|-
 
|-
| 2 || || Takes 0x18 bytes of input, a B descriptor, and an X descriptor, and produces 0 bytes of output.
+
| 2 || FsFile_Read || Takes 0x18 bytes of input, a B descriptor, and an X descriptor, and produces 0 bytes of output.
 
|-
 
|-
| 3 || || Takes 0x18 bytes of input, an A descriptor, and an X descriptor, and produces 0 bytes of output.
+
| 3 || FsFile_Write || Takes 0x18 bytes of input, an A descriptor, and an X descriptor, and produces 0 bytes of output.
 
|-
 
|-
 
| 4 || || Takes 4 bytes of input, and produces 0 bytes of output.
 
| 4 || || Takes 4 bytes of input, and produces 0 bytes of output.
Line 26: Line 26:
  
 
== FsFile_Exists ==
 
== FsFile_Exists ==
Takes an input path string, returns 8-bytes for the output u8 flag.
+
Takes an input path string(type-0x9 buffer), returns 8-bytes for the output u8 flag.
  
 
Checks whether the specified file exists.
 
Checks whether the specified file exists.
  
 
This is "FsFile::Exists" in SystemInitializer.
 
This is "FsFile::Exists" in SystemInitializer.
 +
 +
== FsFile_Read ==
 +
Takes a type-0x6 output buffer and a type-0x9 input string path buffer, and 3 u64s: <same size value from databuf>, unk, <same size value from databuf>. Where unk is probably offset?
 +
 +
Reads data from the specified file.
 +
 +
== FsFile_Write ==
 +
Same as FsFile_Read except the databuf is a type-0x5 input buffer.
 +
 +
Writes data to the specified file.
 +
 +
SystemInitializer also uses this as "FsFile::Create" with all input u64s set to 0.

Revision as of 05:13, 1 September 2017

Manu ("Manufacturing") services are provided by the 010000000000B14A sysmodule, which is installed at the factory but not on normal retail systems.

manu

Cmd Name Notes
0 Takes 4 bytes of input, and produces 0 bytes output.
1 FsFile_Exists Takes an X descriptor, and produces, 8 bytes output.
2 FsFile_Read Takes 0x18 bytes of input, a B descriptor, and an X descriptor, and produces 0 bytes of output.
3 FsFile_Write Takes 0x18 bytes of input, an A descriptor, and an X descriptor, and produces 0 bytes of output.
4 Takes 4 bytes of input, and produces 0 bytes of output.
5 Takes 0x10 bytes of input and a B descriptor, and produces 8 bytes of output.
6 Takes 0x10 bytes of input and an A descriptor, and produces 8 bytes of output.

This seems to interface with usb:ds. SystemInitializer only uses cmd1..cmd3.

FsFile_Exists

Takes an input path string(type-0x9 buffer), returns 8-bytes for the output u8 flag.

Checks whether the specified file exists.

This is "FsFile::Exists" in SystemInitializer.

FsFile_Read

Takes a type-0x6 output buffer and a type-0x9 input string path buffer, and 3 u64s: <same size value from databuf>, unk, <same size value from databuf>. Where unk is probably offset?

Reads data from the specified file.

FsFile_Write

Same as FsFile_Read except the databuf is a type-0x5 input buffer.

Writes data to the specified file.

SystemInitializer also uses this as "FsFile::Create" with all input u64s set to 0.