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 SGI

### Summary

This release of the N64 OS/Library (version 2.0i for RCP 2.0) includes various patches that were released after version 2.0h.
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 applies to both the PC and SGI versions.
A problem with multiplication when using the R4300 CPU was explained in release 2.0C. This still applies. To solve this problem, the patch included in IRIX 5.3 needs to be installed. A brief explanation is given in Appendix A below. More detailed instruction on the patch installation is given in the release note attached to the patch. The patch is also included on the CD released with release version 2.0i.
The directory composition under /usr/src/PR was restructured. The demo software is now installed in /usr/src/PR/demos. For the detailed structure, please see the /usr/src/PR/README file. For an explanation of each demo, please see the /usr/src/PR/demos/README_DEMOS.txt file.
Sometimes a conflict occurs during the installation and the message "As the patch is dependent, the old version cannot be erased." is displayed. If this occurs, select "Erase the patch, too."

### New Functions

A new sprite microcode (S2DEX) was added. It is identical to Release 1.06 of the 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 for the Controller Pak Menu (libnos_jpn.a, libnos.a) was provided in the previous version. This was changed to create the library by executing make using lib/. Also, with the former controller pak menu program, the screen mode setting was made for NTSC within the menu. Therefore, it was not available for any mode other than NTSC. To make the Controller Pak menu usable in modes other than NTSC, the demo no longer sets the screen mode in the menu. In other words, you must now set the screen mode before calling the Controller Pak menu.
- 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.

### Fixed Problems

Graphics
With Sprite2D microcode, Yield processing was not done correctly in the previous version. This has been corrected.
This problem occurred when it was combined with naudio microcode in the previous version. When flat shading was performed using gSP1Quadrangle of F3DEX microcode, sometimes it did not function correctly. gbi.h was fixed.
Operating System
There was a problem with calling osMotorStart or osMotorStop without calling osMotorInit. This has been corrected.
The return value of osPfsInitPak (PFS_ERR_NEW_PACK) was not returned when the Controller Pak was removed and reinserted. This has been corrected. When removing and inserting the Controller Pak from another port on the Controller, a similar problem occurred. This has also been fixed.
When using a 1M RAM Controller Pak (now being developed), if a game note was deleted by using the osPfsDeleteFile function, other game notes were deleted as well. This has been corrected. When a 256K Controller Pak was used, this problem did not occur.
The osEPiReadIo, osEPiRawReadIo, osEPiWriteIo, and osEPiRawWriteIo functions did not change the value of the PI bus to use the handler specified by one of the arguments. This has been corrected.
A parenthesis was missing in a macro definition. This has been corrected.
The extern declaration of osViRepeatLine was written as osRepeatLine in the header file os.h. This has been corrected.
The value of SEGMENT_NUMBER was the upper 8 bits. It was changed so that the upper 4 bits are now ignored. Now it will work correctly when addresses of KSEG0 and KSEG1 are used.
When hostio was used with Partner, a thread had to wait in a polling state when data was not received. This has been corrected.
When osUnmapTLBAll is used, entries 0-30 should be unmapped because the entry 31 is used by the system. However, in the previous version entries 1-31 were specified as unmapped. This has been corrected.
Within an exception handler of version 2.0h, the global variable area to be used for N64 Disk Drive programs was overwritten. This has been corrected.

### Expanded Functions

Operating System

- The EEPROM functions (osEepromProbe, osEepromWrite, osEepromRead, osEepromLongWrite, and osEepromLongRead) were expanded for 16K-EEPROM.
- The OsGetMemSize function was added. Use it to verify that a Memory Pak is inserted. It works 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 the memory right now.
- The osEPiLinkHandle function was added. Use this function when a custom handler acquisition function is created. For details, see the sample demo, sramtest.

### Appendix A

An Important Warning: To execute the application 'spin', 'sgitcl' is necessary. Though this tool is included in the distribution CD for IRIX 5.3 it is also included in this release for the sake of convenience. When you install the default N64 OS/Library, 'sgitcl' will not be installed.
The IRIX patch, patchSG0001118 needs to be installed. This patch is required to fix your C compiler with the assembler in order to avoid the multiplication problem when using the R4300. This patch is included in this release for the sake of convenience. When you install the N64 OS/Library, the patchSG0001118 will not be installed by default. For detailed instructions for installing this patch, refer to patch1118/patchSG0001118/relnotes/ch1.z.
Note: You need to specifically choose this patch when installing. For default installations of 'inst', the patch will not be installed. Therefore, it is important to clearly indicate that this patch is to be installed.

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