Difference between revisions of "Error Applet"

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 21: Line 21:
 
| 0x0 || 0x1 || u8 type
 
| 0x0 || 0x1 || u8 type
 
|-
 
|-
| 0x1 || 0x1 || u8 unk_x1
+
| 0x1 || 0x1 || u8 jumpFlag. When clear, this indicates WithoutJump.
 
|-
 
|-
 
| 0x2 || 0x3 || ?
 
| 0x2 || 0x3 || ?
Line 29: Line 29:
 
| 0x6 || 0x1 || u8 resultFlag. ErrorCommonArg: When clear, ErrorCode is used, otherwise the applet generates the error-code from res.
 
| 0x6 || 0x1 || u8 resultFlag. ErrorCommonArg: When clear, ErrorCode is used, otherwise the applet generates the error-code from res.
 
|-
 
|-
| 0x7 || 0x1 || ?
+
| 0x7 || 0x1 || u8 contextFlag2. Same as contextFlag except for ErrorCommonArg?
 
|}
 
|}
  
Line 57: Line 57:
 
! Offset || Size || Description
 
! Offset || Size || Description
 
|-
 
|-
| 0x0 || 0x8 || ErrorCommonHeader. unk_x1 = 1.
+
| 0x0 || 0x8 || ErrorCommonHeader. jumpFlag = 1.
 
|-
 
|-
 
| 0x8 || 0x4 || [[Settings_services|RegionCode]]
 
| 0x8 || 0x4 || [[Settings_services|RegionCode]]
Line 66: Line 66:
 
* Eula: ErrorCommonHeader.type = 3. Displays the EULA.
 
* Eula: ErrorCommonHeader.type = 3. Displays the EULA.
 
* SystemUpdateEula: ErrorCommonHeader.type = 8. Displays the system-update EULA. Uses an additional IStorage containing [[#ErrorEulaData]], from [[Applet_Manager_services#CreateTransferMemoryStorage]] with flag=false.
 
* SystemUpdateEula: ErrorCommonHeader.type = 8. Displays the system-update EULA. Uses an additional IStorage containing [[#ErrorEulaData]], from [[Applet_Manager_services#CreateTransferMemoryStorage]] with flag=false.
 +
 +
== ErrorRecordArg ==
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8 || ErrorCommonHeader. type=5 and jumpFlag=1.
 +
|-
 +
| 0x8 || 0x8 || [[#ErrorCode]]
 +
|-
 +
| 0x10 || 0x8 || u64 POSIX timestamp
 +
|}
  
 
== SystemErrorArg ==
 
== SystemErrorArg ==
Line 90: Line 102:
 
! Offset || Size || Description
 
! Offset || Size || Description
 
|-
 
|-
| 0x0 || 0x8 || ErrorCommonHeader. type=2 and unk_x1=1.
+
| 0x0 || 0x8 || ErrorCommonHeader. type=2 and jumpFlag=1.
 
|-
 
|-
 
| 0x8 || 0x4 || u32 errorNumber. Raw decimal error number which is displayed in the dialog.
 
| 0x8 || 0x4 || u32 errorNumber. Raw decimal error number which is displayed in the dialog.

Revision as of 14:16, 27 March 2019

This is the applet presented when a title displays an error message. See AM_services#Library_Applets.

All errors displayed by this applet get logged and can be viewed under 'Settings' > 'Support' > 'Error History'.

On pre-5.0.0 the specified LanguageCode has to be valid, otherwise a fatal-error is thrown. With [5.0.0+] it will use en-US when the LanguageCode is invalid.

ErrorContext

Offset Size Description
0x0 0x200 ?

ErrorCommonHeader

Offset Size Description
0x0 0x1 u8 type
0x1 0x1 u8 jumpFlag. When clear, this indicates WithoutJump.
0x2 0x3 ?
0x5 0x1 [4.0.0+] u8 contextFlag. When set indicates that an additional storage is pushed for #ErrorContext.
0x6 0x1 u8 resultFlag. ErrorCommonArg: When clear, ErrorCode is used, otherwise the applet generates the error-code from res.
0x7 0x1 u8 contextFlag2. Same as contextFlag except for ErrorCommonArg?

ErrorCommonArg

Offset Size Description
0x0 0x8 ErrorCommonHeader
0x8 0x8 #ErrorCode
0x10 0x4 Result res

ErrorEulaData

Offset Size Description
0x0 0x20000 data

ErrorEulaArg

Offset Size Description
0x0 0x8 ErrorCommonHeader. jumpFlag = 1.
0x8 0x4 RegionCode

This struct is 0xC-bytes.

ErrorRecordArg

Offset Size Description
0x0 0x8 ErrorCommonHeader. type=5 and jumpFlag=1.
0x8 0x8 #ErrorCode
0x10 0x8 u64 POSIX timestamp

SystemErrorArg

Offset Size Description
0x0 0x8 ErrorCommonHeader. type=1.
0x8 0x8 #ErrorCode
0x10 0x8 LanguageCode
0x18 0x800 UTF-8 string dialogMessage
0x818 0x800 UTF-8 string fullscreenMessage, displayed when the user clicks on "Details". When not set this disables displaying Details.

This struct is 0x1018-bytes.

ApplicationErrorArg

Offset Size Description
0x0 0x8 ErrorCommonHeader. type=2 and jumpFlag=1.
0x8 0x4 u32 errorNumber. Raw decimal error number which is displayed in the dialog.
0xC 0x8 LanguageCode
0x14 0x800 UTF-8 string dialogMessage
0x814 0x800 UTF-8 string fullscreenMessage, displayed when the user clicks on "Details". When not set this disables displaying Details.

This struct is 0x1014-bytes.

ErrorCode

This is an u64 containing the error-code: the low u32 is the module portion which is normally set to module + 2000, and the high u32 is the error description.

ResultBacktrace

Offset Size Description
0x0 0x4 s32 total entries
0x4 0x4*total_entries Array of Result

Usage

User-processes should push a common arguments struct (version=0) as well as the Arg struct. Once the applet finishes running successfully, it may return an output storage in some cases. An u8 status value is located at +1, where non-zero indicates error.