## Program Start-up

The following cautions should be observed when performing program start-up and reset.

- 1-1 Initializing the N64 Control Deck (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 Initializing the N64 Control Deck (Required)

Caution
The N64 Control Deck must be initialized before it is used. When the C programming language is used, the Control Deck can be initialized by functions including, but not limited to: osInitialize() and osViSetMode().

Discussion
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. 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)

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

Discussion
If the period is much longer than 2 seconds, the user may think that their Control Deck or Game Pak is defective. 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)

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

Discussion
The contents of the TLB are undefined, as described in 1-1. 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.

NOTE: The TLB will not be initialized when you call the osInitialize() function.

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

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

Discussion
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.

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.

© 1999 Nintendo of America Inc.
Release Date: March 1999