Name Last Update
..
CVS Loading commit data...
GNUmakefile Loading commit data...
Makefile Loading commit data...
PCmake Loading commit data...
README.ASCII Loading commit data...
README.TXT Loading commit data...
audio.c Loading commit data...
audio.h Loading commit data...
boot.c Loading commit data...
cfb.c Loading commit data...
controller.c Loading commit data...
controller.h Loading commit data...
def.h Loading commit data...
dram_stack.c Loading commit data...
far_.c Loading commit data...
far_.h Loading commit data...
gfxdlistbuf.c Loading commit data...
gfxinit.c Loading commit data...
gfxperfm.c Loading commit data...
gfxyield.c Loading commit data...
graphic.c Loading commit data...
graphic.h Loading commit data...
graphic_00.c Loading commit data...
lodmodel.c Loading commit data...
main.c Loading commit data...
main.h Loading commit data...
main00.c Loading commit data...
message.c Loading commit data...
message.h Loading commit data...
middle_.c Loading commit data...
middle_.h Loading commit data...
near_.c Loading commit data...
near_.h Loading commit data...
nnsched.c Loading commit data...
nnsched.h Loading commit data...
nnsched.txt Loading commit data...
rdp_output.c Loading commit data...
segment.h Loading commit data...
spec Loading commit data...
vram.h Loading commit data...
zbuf.c Loading commit data...
======================================

		NINTENDO64 TECHNICAL SUPPORT CENTER 
		
		    NINTENDO64 SAMPLE PROGRAM 2

		Copyright (C) 1997, NINTENDO Co,Ltd.

======================================


【0】目次

	【1】はじめに
	【2】make方法
	【3】操作方法
	【4】プログラム説明
	【5】権利・再利用
	【6】履歴

【1】はじめに

	本プログラムは、F3DEX Ver1.21マイクロコードのサンプルプログラムです。
	ベースはnnsample1と同じで、F3DEX Ver1.21から追加された機能である
	BranchDisplayListとマイクロコードのダイレクトロードを
	使っています。	F3DEX Ver1.21ではBranchDisplayListをucodeが行うので
	LOD(Level Of Detail)処理が簡単におこなえます。マクロコードのダイレクト
	ロードにより、グラフィックタスクのスケジューリングがシンプルになり、
	処理によって簡単にマイクロコードを切り替えることができます。

【2】make方法

	Indyのエミュレータボードをご使用の場合でも、PARTNER-N64をご使用の
	場合でも、そのままmakeしてください。

【3】操作方法
	「十字キー」	オブジェクトの左右と奥行き方向の移動
	
	「STARTボタン」	画面の初期化


【4】プログラム説明

	(1)LOD処理について

	LODにより視点からモデルの位置により次の文字のモデルを描画しています。

	視点から500まで	"NEAR"
	501から1000まで	"MIDDLE"
	1001から1600まで"FAR"
	1601以上描画せず

	このDisplayListで示すと次のようになります。(lodmodel.c参照)

	  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側で視点からモデルまでの距離を計算してLOD処理を
	行ってくれます。


	(2)マイクロコードのダイレクトロードについて

	graphic.cの84行目のように、ディスプレイリストの作成部分で

	gSPLoadUcodeL(glist_ptr++, gspL3DEX_fifo);

	などとすることにより、動的にマイクロコードの変更できるように
	なっています。このことにより、描画対象によって簡単にマイクロコードを
	切り替えられ、スケジューリングも簡単になります。
	ただし、マイクロコードのロードはオーバーヘッドとなるので
	頻繁に切り替えることはしないほうが良いでしょう。

	(3)fifoマイクロコードの使用上の注意について

	RDP OUTPUT SIZEについて

	fifoグラフィックマイクロコードを使用する場合は、タスク起動時に
	OSTask構造体の"*t.output_buff_size"にはfifoバッファの最大ポインタ+1
	を入れる必要があります。例えば、このサンプルでは

	---def.h---
	#define GFX_RDP_OUTPUT_SIZE 1024    /* RDP FIFOサイズ */
	
	---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];

	というようにポインタを代入して使っています。dramマイクロコードや
	xbusの場合では、このポインタ変数の役割が異なるので注意して
	下さい。
	
	
【5】権利・再利用

	本サンプルプログラムの著作権は任天堂株式会社が所有します。
	ソースコードの再利用および改変は自由にしてくださって結構ですが、
	本サンプルプログラムのデバッグを十分におこなっていません。
	その為、使用にあたっては、十分にデバッグを行って頂くよう
	お願いします。

【6】履歴

	1.0	1997/01/30 	nnsample2公開
	1.1	1997/02/03	nnsched.cの不具合を修正
	1.2	1997/12/09	・ワーニングを抑制
                                ・RDP FIFO バッファサイズの誤り修正
以上