N64® Functions Menu

al - Audio Library Functions
gDP - DP GBI Macros
gdSP - General GBI Macros
gSP - SP GBI Macros
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





nnsample2



NINTENDO64 TECHNICAL SUPPORT CENTER

NINTENDO64 SAMPLE PROGRAM 2

Copyright (C) 1997, NINTENDO Co,Ltd.

Table of Contents

Introduction make Operation Program description Rights and Program Re-use History

Introduction

This program is a sample of the F3DEX Ver. 1.21 microcode. The basic program is the same as nnsample1. It uses BranchDisplayList, a feature added beginning with F3DEX Ver. 1.21, and a sample of direct-loading microcode. In F3DEX Vers. 1.21, ucode runs BranchDisplayList, simplifying LOD (Level of Detail) processing. Direct loading of microcode simplifies scheduling of graphics tasks, and microcode can be easily switched depending upon the processing.

make

Use make with with either the Indy Emulator Board or Partner-N64NW. It is used without changes to either device. Note: (1) The F3DEX microcode must be used with this sample program. (2) The comments in the source file use Shift-JIS encoding.

Operation

Control Pad Movement of object in depth direction or left and right START Button Screen initialization

Program Description

LOD Processing With LOD, models of the the following characters are rendered depending on the location of the model relative to the viewpoint. Viewpoint to 500 "NEAR" 501 to 1000 "MIDDLE" 1001 to 1600 "FAR" 1601 or greater no rendering When displayed using DisplayList, this appears as follows. gsSPBranchLessZ(near__dl, 0, 500, 10, 2000, G_BZ_PERSP), gsSPBranchLessZ(middle__dl, 0, 1000, 10, 2000, G_BZ_PERSP), gsSPBranchLessZ(far__dl, 0, 1600, 10, 2000, G_BZ_PERSP), gsSPEndDisplayList(), ucode thus calculates the distance from the viewpoint to the model and thereby performs LOD processing. Direct Loading of Microcode Dynamic changes in microcode are now possible by means of statements such as line 84 of graphic.c , in the section where the display list is created: gSPLoadUcodeL(glist_ptr++, gspL3DEX_fifo); In this way, microcode can easily be switched depending on the object rendered, and scheduling also is simplified. However, because microcode loading increases overhead, it is better not to switch microcode frequently. Points to note when using the fifo microcode. RDP OUTPUT SIZE When using the fifo graphics microcode, the maximum pointer +1 for the fifo buffer must be assigned to the OSTask structure "*t.output_buff_size." In this sample, for example, the pointer is substituted and used as shown below: ---def.h--- #define GFX_RDP_OUTPUT_SIZE 1024 /* RDP FIFO size */ ---rdp_output.c--- u64 rdp_output[GFX_RDP_OUTPUT_SIZE]; ---graphic.c--- gtask->list.t.output_buff = (u64 *)&rdp_output[0]; gtask->list.t.output_buff_size = (u64 *)&rdp_output[GFX_RDP_OUTPUT_SIZE]; Please note that the role of this pointer variable is different in DRAM microcode and xbus.

Rights and Program Re-use

The copyright for this sample program is held by Nintendo Co., Ltd. Although the source code can be freely re-used and modified, this program has not been adequately debugged. We, therefore, urge you to perform adequate debugging when using the program.

History

1.0 January 30, 1997 nnsample2 released 1.1 February 3, 1997 ntscsched.c problem fixed


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