boot0 (Wii)

From Rare Gaming Dump
Jump to navigationJump to search
This topic has a Wiibrew article. For more information, check here.

boot0 is the first-stage bootloader of the Wii, stored in a Mask ROM within the Hollywood package.

It is a minimal piece of code whose sole purpose is to initialize the Wii's GPIOs, load boot1, and verify its integrity.

Behavior

boot0 begins by initializing console hardware. It then reads the expected hash of boot1 from the eFuse and checks whether it is blank. Next, it reads the first 47 pages of the NAND, decrypts them using a fixed AES key, and computes a SHA-1 hash of the decrypted data. Finally, if the expected hash was blank or matches the calculated hash, boot0 allows the boot sequence to continue by jumping to boot1.

The system will halt and output a specific error code via the debug port in the event of an ECC error (0xF1) or a hash mismatch (0xF2).

Because boot0 is stored in ROM and cannot be altered, this design ensures that boot1 can only be modified on units with a blank eFuse hash, which typically corresponds to factory-uninitialized units or development units.