N64® Functions Menu

al - Audio Library Functions
gDP - DP GBI Functions
gdSP - General GBI
gSP - SP GBI Functions
gt - Turbo Microcode RDP
gu - Graphics Utilities
Math - Math Functions
nuSys - NuSystem
os - N64 Operating System
sp - Sprite Library Functions
uh - Host to Target IO
64DD - N64 Disk Drive

Nintendo® Confidential

## N64® OS/Library 2.0i for the PC

### Summary

This release of the N64 OS/Library (version 2.0i for RCP 2.0) includes various patches that were released after version 2.0b.
Also included is a new version of the HTML online N64 Function Reference Manual also known as man pages. The format has been redesigned and the content edited. A comprehensive index with a summary of each function or macro is also included. There is now only one version of the HTML online N64 Function Reference Manual; it can be used for both the PC and SGI versions.
The directory structure under /usr/src/PR was completely revised, and demo software is now installed in /usr/src/PR/demos. For the detailed structure, see the /usr/src/PR/README file. For an explanation of each demo, see the /usr/src/PR/demos/README_DEMOS file. Nintendo recommends that you erase the entire /usr/src/PR directory before installation. By doing this, you ensure that the old directory won't be mixed up with the newly installed directory.
A description of "to execute gload" is found in a README in the directories of some sample demos under /usr/src/PR/demos/README_DEMOS and /usr/src/PR/demos/. This description explains how to execute a program in the development environment of the Indy plus a development board. For Partner users, please execute programs by following the procedures for Partner.
The N64 Disk Drive development environment was included in Version 2.0h of the N64 OS/Library. For Version 2.0i, the N64 Disk Drive development environment is included as a separate package on the CD. You can choose to install both Release 2.0i of the N64 OS/Library and the N64 Disk Drive development environment if you want.
A batch file (setup.bat), used to set an environmental parameter, was changed. A batch file for the library (setuplib.bat) and a batch file for exeGCC (setupgcc.bat) are now run from setup.bat.
The format of the Makefile demo software was changed. It is now similar to the format for the SGI. It is also compatible with the compression functions used in exeGCC version 1.2. Accordingly, files under ultra/include/make were completely revised.
A header file (ultra/usr/include/assert.h) was also changed.
The following header files that used to be under ultra/usr/include were deleted:

- bstring.h
- math.h
- svr4_math.h
- tinymon.h

### New Functions

A new sprite microcode (S2DEX) was added. This is the same as Release 1.06 of S2DEX microcode that was distributed as a patch for version 2.0h. Please note that this is not compatible with Sprite2D microcode.

### New Demo Software

The following new demos are available:

- gs2dex - A sample program for S2DEX microcode. Controller 1 is used.
- eeptest - A test program for EEPROM. This reads from and writes to EEPROM, checking to see if EEPROM can read from and written to correctly. This works with 16K-EEPROM.
- sramtest - A sample program for SRAM. It requires a 256K SRAM board. The result is returned to a terminal by using osSyncPrintf.

### Modified Demo Software

The following demos have been modified:

- motortest - When stopping the Rumble Pak, the demo has been changed to call osMotorStop three times.
- nosPak - A sample library (libnos_jpn.a or libnos.a) for the Controller Pak menu program was provided in its entirety for the previous version. It was changed so that by executing the make program using lib/, a library is created. With this modification, a sample library in ultra/usr/lib (libnos*.a) and the header file in ultra/usr/include/PR (lisnos.h or ncode.h) were deleted. Also, in the previous Controller Pak menu program, the setting for screen mode was designed only for NTSC within a menu, so it could not be used for other modes (such as PAL). To make the Controller Pak menu usable with other modes, we changed this so that the screen mode is no longer set within a menu. Now, you must set a screen mode before calling the Controller Pak menu.
  It was also changed so that a version of the Controller Pak Library is now displayed by the Controller Pak menu. If your own Controller Pak menu is used, please display a version number.
- overlay - As this is not presently used with Multi Wave in the PC version, it was deleted.
- pfs - The error in the characters of the screen display was corrected, and the specifications were modified to be consistent with the Controller Pak guidelines. The function used to change the number of pages of a game note with the L and R buttons was deleted.
- nnsample1,2 - An error in the RDP FIFO buffer size was corrected. Also, in case rmon is used, it now specifies USE_RMON.

### Corrected Problems

Audio
The osAiSetNextBuffer function was modified. Previously, a bug was considered to be found if the last address of DMA source was bXX10 0000 0000 0000. It is now considered that a bug when the last address is bXXX0 0000 0000 0000.
Graphics
Yield processing could not be done for Sprite2D microcode in the previous version. This has been corrected. Previously, this occurred when Sprite2D microcode was combined with naudio microcode.
When flat shading was used for the gSP1Quadrangle macro of F3DEX microcode, occasionally the outcome was not as expected. The gbi.h file was modified to make this macro more reliable.
Operating System
With the previous release of the OS, operation became unstable if the osMotorStart or osMotorStop function was called without first calling osMotorInit. Now, instead of operation becoming unstable, an error such as PFS_ERR_INVALID is returned.
With the osContGetReadData function, sometimes correct data could not be read because the data of the P-Controller was destroyed. This problem has been corrected.
The portion of code in which a 15ms wait occurred for each read using the CPU timer within the osEepromLongRead function was deleted. Now, only writing requires a 15ms wait.
In the previous version, when a Controller Pak was removed and re-inserted PFS_ERR_NEW_PACK was not returned. This has been corrected. Similarly, if a Controller Pak was removed and re-inserted for a different Controller port, PFS_ERR_NEW_PACK was not returned. This has also been corrected.
In the previous release, when you deleted a game note by using the osPfsDeleteFile function when the 1M Controller Pak (under development) was in use, another game note was deleted as well. This problem has been corrected. When a 256K Controller Pak was used, this problem never occurred.
To ensure that the corrected Controller Pak library is used, new functionality was added. Now the OS_PFS_VERSION value indicates the version of Controller Pak library that was added. Please be sure to display this "latest version" in the Controller Pak menu for each game application. The OS_PFS_VERSION value is a 16-bit value. The upper 8 bits contain the integer part of the version number. The lower 8 bits contain the decimal part. For example, if the value of OS_PFS_VERSION is 0x0200, the version of Controller Pak library is 2.0. For further examples, see the nosPak demo.
The osEPiReadIo, osEPiRawReadIo, osEPiWriteIo, and osEPiRawWriteIo functions did not change the value of the PI bus according to the handler given by an argument. This has been corrected.
The missing parenthesis in a macro definition was corrected.
The definitions for OS_CYCLES_TO_*SEC and OS_*SEC_TO_CYCLES were changed to make overflow unlikely.
The extern declaration of the osViRepeatLine function in the header file os.h was osRepeatLine by mistake. This has been corrected.
The value of SEGMENT_NUMBER was the upper 8 bits of the address. It was changed so that the upper 4 bits will be ignored. Therefore, a malfunction will not occur when the address of KSEG0,1 is entered.
When hostio is used for Partner, a thread was made to wait by polling to see if the data was not received. This has been corrected.
The osUnmapTLBAll function had unmapped entries from 1-31 instead of the correct range of from 0-30. Entry 31 is used by the system. This has been corrected.
An exception handler of Version 2.0h would overwrite a global variable area to be used for N64 Disk Drive programs in the previous version. This has been corrected.
In release 2.0h, when an osDestroyThread function specifies a thread that does not exist (such as a destroyed thread), unexpected results would occur. This has been corrected. If this happens now, it returns without doing anything.

### Expanded Functions

Operating System

- The EEPROM functions (osEepromProbe, osEepromWrite, osEepromRead, osEepromLongWrite, and osEepromLongRead) were expanded for 16K-EEPROM.
- The OsGetMemSize function was added. You can use it to verify that a Memory Pak is inserted by accessing part of the expanded memory area of RDRAM. Please use this function for N64 Disk Drive games. It differs from osMemSize, which is a variable where the size of RDRAM acquired at the time of activation is stored. The osGetMemSize function checks if it is possible to gain access to memory right now.
- The osEPiLinkHandle function was added. Use this function when a custom handler acquisition function is created. For details, see the sramtest sample demo.

Functions No Longer Available
The osPfsReSizeFile function was deleted.

Nintendo® Confidential Warning: all information in this document is confidential and covered by a non-disclosure agreement. You are responsible for keeping this information confidential and protected. Nintendo will vigorously enforce this responsibility.
Copyright © 1998
Nintendo of America Inc. All rights reserved
Nintendo and N64 are registered trademarks of Nintendo
Last updated March 1998