1. Program Start-up

1-1 Register and Memory Initialization (Required)
1-2 Program Power-on Delay (Recommended)
1-3 Initialization of the TLB (Required)
1-4 ROM Access Speed in the Game Pak(Required)


1-1 Register and Memory Initialization (Required)

Description

When booting the application program, the content of main memory and CPU internal registers, except for the boot segment, is undefined.

Reasons

The general purpose registers of the CPU and FPU, CP0 register, TLB, and most of the main memory area are not automatically initialized by the N64 OS.

Reference

Remarks

Since the initial value of these registers and memory can not be classified and determined by production lot, this is not checked in lot check. When using a Partner-N64 development system, the power to the Control Deck is still active even when Reset is applied. Therefore, the contents of registers and memory remain at the value stored before reset was executed. For this reason, a failure to perform initialization steps can be easily overlooked by the programmer.


1-2 Program Power-on Delay (Recommended)

Description

It is recommended that the period between power-on and screen display is kept to less than 2 seconds.

Reasons

If the period is much longer than 2 seconds, the user may think that their Control Deck or Game Pak is defective.

Reference

Remarks

NOA recommends that only the minimum necessary processes, such as EEPROM initialization, be executed before displaying something on the screen. Other processes should be executed after something is displayed, such as a game title, company logo, or copyright information.


1-3 Initialization of the TLB (Required)

Description

The TLB must be initialized with the osUnmapTLBAll() function before it is used.

Reasons

The contents of the TLB are undefined, as described in Programming Caution 1-1, above. Furthermore, it is necessary to initialize all 32 TLB entries in order to use one TLB entry. If the TLB is not initialized with osUnmapTLBAll(), it may not operate properly when it is used.

Reference

Remarks

The TLB will not be initialized when you call the osInitialize() function. Therefore, please initialize the TLB with the osUnmapTLBAll() function (not the osInitialize() function) before using the TLB.


1-4 ROM Access Speed in the Game Pak (Required)

Description

Do not change the access speed to the ROM in the Game Pak.

Reasons

The access speed of ROMs in mass-produced Game Paks (the length of time until the ROM outputs data over the AD16 bus) differs depending on the ROM manufacturer, capacity and manufacturing inconsistencies. The access speed also differs depending on the development board that uses the flash memory. If the access speed to the ROM is changed, a bug might occur with a specific ROM.

Reference

Remarks

In the N64, after setting the access speed to the ROM with the appropriate value, load the application program to the RAM and execute. Please use this access speed to access the ROM in the application. In particular, please access by passing the handler, obtained using the osCartRomInit() function, to the osEpi functions.