<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wexosmk.xyz/index.php?action=history&amp;feed=atom&amp;title=NSO_%28File_Format%29</id>
	<title>NSO (File Format) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wexosmk.xyz/index.php?action=history&amp;feed=atom&amp;title=NSO_%28File_Format%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=NSO_(File_Format)&amp;action=history"/>
	<updated>2026-05-06T14:35:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=NSO_(File_Format)&amp;diff=276&amp;oldid=prev</id>
		<title>Wexos: Imported from avsys wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=NSO_(File_Format)&amp;diff=276&amp;oldid=prev"/>
		<updated>2024-05-01T17:53:06Z</updated>

		<summary type="html">&lt;p&gt;Imported from avsys wiki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Under-construction}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NSO&amp;#039;&amp;#039;&amp;#039; is a file format used on the [[Nintendo Switch]] for storing executable code. All Switch game store code as NSO files.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header. It has the following structure.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &amp;#039;&amp;#039;&amp;#039;File magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;NSO0&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Version number&amp;#039;&amp;#039;&amp;#039; of the file format.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || &amp;#039;&amp;#039;&amp;#039;Reserved&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || &amp;#039;&amp;#039;&amp;#039;Flag&amp;#039;&amp;#039;&amp;#039;. xxxx xxxx xxxx xxxx xxxx xxxx xx&amp;#039;&amp;#039;&amp;#039;AB&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;CDEF&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;: verify .data hash.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;: verify .rodata hash.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039;: verify .text hash.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;D&amp;#039;&amp;#039;&amp;#039;: sets whether .data is compressed.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;E&amp;#039;&amp;#039;&amp;#039;: sets whether ..rodata is compressed.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;: sets whether text is compressed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.text section offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.text memory offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.text decomopressed size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &amp;#039;&amp;#039;&amp;#039;Module offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.rodata section offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.rodata memory offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.rodata decomopressed size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || UInt32 || &amp;#039;&amp;#039;&amp;#039;Module size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.data section offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.data memory offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.data decomopressed size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt32 || &amp;#039;&amp;#039;&amp;#039;.bss size&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || Byte[0x20] || &amp;#039;&amp;#039;&amp;#039;Build ID&amp;#039;&amp;#039;&amp;#039;. Identical to .note section from an ELF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.text compressed size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.rodata compressed size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68 || UInt32 || &amp;#039;&amp;#039;&amp;#039;.data compressed size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C || Byte[0x1C] || &amp;#039;&amp;#039;&amp;#039;Padding&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88 || UInt32 || &amp;#039;&amp;#039;&amp;#039;API .rodata region offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C || UInt32 || &amp;#039;&amp;#039;&amp;#039;API .rodata region size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Dynstr .rodata region offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Dynstr .rodata region size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x98 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Dynsym .rodata region offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C || UInt32 || &amp;#039;&amp;#039;&amp;#039;Dynsym .rodata region size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0 || Byte[0x20] || &amp;#039;&amp;#039;&amp;#039;.text decompressed data SHA-256 hash&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0 || Byte[0x20] || &amp;#039;&amp;#039;&amp;#039;.rodata decompressed data SHA-256 hash&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0 || Byte[0x20] || &amp;#039;&amp;#039;&amp;#039;.data decompressed data SHA-256 hash&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle NSO files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Switch File Formats]]&lt;/div&gt;</summary>
		<author><name>Wexos</name></author>
	</entry>
</feed>