Initial Program Load

The Initial Program Load (commonly called IPL, or the boot sequence) is a set of instructions that the console performs every time it starts. There are multiple stages to this process, referred to as: IPL1, IPL2 and IPL3. When a 64DD is in use, there is also an IPL4 stage. Upon boot, the program counter is set by hardware to, which is the beginning of the PIF ROM address space. This ROM is baked into the PIF-NUS chip.

= IPL1 = This stage spans only the first  bytes  as executing instructions directly out of the PIF is extremely slow. Only what was absolutely necessary, is executed here. The primary task of this stage is to move the remaining bytes of the PIF ROM, into the RSP's IMEM. Commentated disassembly to be added here...

= IPL2 = After IPL1 finishes moving the instructions of this stage to RSP IMEM, it jumps to  to start this second stage. Commentated disassembly to be added here...

= IPL3 = This stage is executed out of RSP DMEM, which was loaded with the first  bytes of the game cartridge (or alternatively, whatever may be inserted in the cartridge or expansion slot on the bottom of the console). IPL2 will jump to  (  bytes after the start of DMEM, to account for the ROM header).

There are six known variants of the IPL3 stage. However, a seventh variant can be seen when analyzing the dumps of the GameBooster 64, Action Replay Pro 64, and GameShark Pro (v3.3): where the  bytes after the header, are all zeros, and are dynamically loaded by the cartridge.

For each of the six variants, there is a matching CIC chip found in each cartridge. There are 10 official CIC chips: Each of these NTSC/PAL pairs share an IPL3 variant, except 6101 and 7102 which use two separate variants.

CIC 6102 / 7101 = Commentated disassembly to be added here... CIC 6103 / 7103 = Commentated disassembly to be added here... CIC 6105 / 7105 = Commentated disassembly to be added here... CIC 6106 / 7106 = Commentated disassembly to be added here... CIC 6101 = Commentated disassembly to be added here... CIC 6102 = Commentated disassembly to be added here...

= IPL4 = TODO