NSO (File Format): Difference between revisions
From Wexos's Wiki
Jump to navigationJump to search
(Imported from avsys wiki) |
(No difference)
|
Latest revision as of 17:53, 1 May 2024
Under Construction
This article is not finished. Help improve it by adding accurate information or correcting grammar and spelling.
NSO is a file format used on the Nintendo Switch for storing executable code. All Switch game store code as NSO files.
File Format
Header
The file starts with a header. It has the following structure.
| Offset | Type | Description |
|---|---|---|
| 0x00 | Char[4] | File magic. Always NSO0 in ASCII. |
| 0x04 | UInt32 | Version number of the file format. |
| 0x08 | Byte[4] | Reserved. |
| 0x0C | UInt32 | Flag. xxxx xxxx xxxx xxxx xxxx xxxx xxAB CDEF.
|
| 0x10 | UInt32 | .text section offset. |
| 0x14 | UInt32 | .text memory offset. |
| 0x18 | UInt32 | .text decomopressed size in bytes. |
| 0x1C | UInt32 | Module offset. |
| 0x20 | UInt32 | .rodata section offset. |
| 0x24 | UInt32 | .rodata memory offset. |
| 0x28 | UInt32 | .rodata decomopressed size in bytes. |
| 0x2C | UInt32 | Module size in bytes. |
| 0x30 | UInt32 | .data section offset. |
| 0x34 | UInt32 | .data memory offset. |
| 0x38 | UInt32 | .data decomopressed size in bytes. |
| 0x3C | UInt32 | .bss size. |
| 0x40 | Byte[0x20] | Build ID. Identical to .note section from an ELF. |
| 0x60 | UInt32 | .text compressed size in bytes. |
| 0x64 | UInt32 | .rodata compressed size in bytes. |
| 0x68 | UInt32 | .data compressed size in bytes. |
| 0x6C | Byte[0x1C] | Padding. |
| 0x88 | UInt32 | API .rodata region offset. |
| 0x8C | UInt32 | API .rodata region size in bytes. |
| 0x90 | UInt32 | Dynstr .rodata region offset. |
| 0x94 | UInt32 | Dynstr .rodata region size in bytes. |
| 0x98 | UInt32 | Dynsym .rodata region offset. |
| 0x9C | UInt32 | Dynsym .rodata region size in bytes. |
| 0xA0 | Byte[0x20] | .text decompressed data SHA-256 hash |
| 0xC0 | Byte[0x20] | .rodata decompressed data SHA-256 hash |
| 0xE0 | Byte[0x20] | .data decompressed data SHA-256 hash |
Tools
The following tools can handle NSO files:
- (none)