Difference between revisions of "NANDLoader"

From WiiBrew
Jump to navigation Jump to search
(Mentioned general apploaders)
(it was the other way around. they had the nandloader and only had to add the entrypoint in the dol header (+ extra info ))
Line 1: Line 1:
The '''NANDLoader''' is a small bit of code in every channel that loads the rest of the channel. It is an example of an [[apploader]], used for channels.
+
The '''NANDLoader''' is a small bit of code in every channel that initializes the [Broadway] and then jumps to the main function of the executable. It is an example of an [[apploader]], used for channels.
 +
 
 +
There are open source tools available to inject a NANDLoader into regular binaries like [[User:DacoTaco]]'s [https://github.com/DacoTaco/priiloader/tree/master/tools/OpenDolBoot OpenDolTool]
 +
 
 +
== Wii ==
 +
On the [[Wii]] the NANDLoader is included in a title's main binary ( app, in dol format). It is usually the first text section and should always be written to 0x80003400 (PowerPC reset vector){{check}}.
 +
The NANDLoader should initialize the PowerPC and jump to the binary's main function.
  
 
== vWii ==
 
== vWii ==
On the [[vWii]], because the [https://wiiubrew.org/wiki/Espresso Espresso] only boots [https://wiiubrew.org/wiki/Ancast_Image Ancast Images], the NANDLoader must be signed. Nintendo solved this by adding titles 1-512 and 1-513 as NANDLoaders used for all titles. Because the [[Homebrew Channel]] did not have a NANDLoader, instead immediately beginning execution, this resulted in the vWii NANDLoader jumping to the wrong point, and breaking compatibility. [[fail0verflow]] solved this by adding a NANDLoader, which would load the main part, while on the vWii, the system NANDLoader would load the main code.
+
On the [[vWii]], because the [https://wiiubrew.org/wiki/Espresso Espresso] only boots [https://wiiubrew.org/wiki/Ancast_Image Ancast Images], the NANDLoader must be signed. Nintendo solved this by adding titles 1-512 and 1-513 as NANDLoaders. When launching a title, IOS will start these NANDLoaders to Initialize the PowerPC. These NANDLoaders in turn load the title's main binary and jump straight to it's entrypoint, skipping the title's NANDLoader which is included in title's binary.
 +
 
 +
Because the [[Homebrew Channel]] only had it's own NANDLoader, and not had it's entrypoint set, the channel was initially not compatible with [[vWii]].[[fail0verflow]] solved this by adding an entrypoint to the dol header. This resulted in the channel's NANDLoader being run on the Wii, and skipped in vWii
  
 
[[Category:Official software]]
 
[[Category:Official software]]

Revision as of 01:14, 13 May 2021

The NANDLoader is a small bit of code in every channel that initializes the [Broadway] and then jumps to the main function of the executable. It is an example of an apploader, used for channels.

There are open source tools available to inject a NANDLoader into regular binaries like User:DacoTaco's OpenDolTool

Wii

On the Wii the NANDLoader is included in a title's main binary ( app, in dol format). It is usually the first text section and should always be written to 0x80003400 (PowerPC reset vector)[check]. The NANDLoader should initialize the PowerPC and jump to the binary's main function.

vWii

On the vWii, because the Espresso only boots Ancast Images, the NANDLoader must be signed. Nintendo solved this by adding titles 1-512 and 1-513 as NANDLoaders. When launching a title, IOS will start these NANDLoaders to Initialize the PowerPC. These NANDLoaders in turn load the title's main binary and jump straight to it's entrypoint, skipping the title's NANDLoader which is included in title's binary.

Because the Homebrew Channel only had it's own NANDLoader, and not had it's entrypoint set, the channel was initially not compatible with vWii.fail0verflow solved this by adding an entrypoint to the dol header. This resulted in the channel's NANDLoader being run on the Wii, and skipped in vWii