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