6.10 Boot Procedure

When using the Nintendo 64 development system, the developer needs to run the game loader gload() program to download his prepared ROM image into the cartridge memory on the development board. After the memory image is loaded, gload can optionally read back the memory and verify the contents. It then generates a reset signal to the development board, causing the R4300 to jump to the reset vector where it begins executing the boot code from the PIF ROM.

Some of the important tasks performed by the boot code include:

  1. Initialize N64 CPU CP0 registers

  2. Initialize the RCP (such as halt RSP, reset PI, blank video, stop audio)

  3. Initialize RDRAM and CPU caches

  4. Load 1 MB of game from ROM to RDRAM at physical address 0x00000400

  5. Clear RCP status

  6. Jump to game code

  7. Execute game preamble code (which is similar to crt0.o and is linked to game during makerom process)

  8. Boot entry routine should call osInitialize()