README_DEMOS.jp
19.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
このドキュメントにはサンプルプログラムについての説明が記述されています。
サンプルプログラムの make 時には以下の点に注意してください
○各サンプルプログラムでは、引数なしで make を実行するとデバッグ情報を含
んだロムイメージファイルが作成されます。このロムイメージファイルはデバッ
ガ上でのみ動作し 実機の Nintendo64 上では動作しません。
「make FINAL=YES」のように、引数に FINAL=YES をつけて make を実行する
と、実機の Nintendo64 で動作する形式のロムイメージファイルが作成されま
す。このロムイメージファイルはデバッグ情報を含まないため、PARTNER-N64
等の一部のデバッガでは正常に動作しません。
なお、hostio 等のデバッガ上での動作を前提としているサンプルプログラム
では、この引数は無効です。
○以下の各サンプルプログラムは、Texture/ ディレクトリ下のファイルに依存
しています。サンプルプログラムを移動する場合には注意してください。
blockmonkey
ddspgame
ground
lights
mipmap
spgame
texlight
threadmonkey
以下に各サンプルプログラムの機能・特色を説明します。
autofill:
画面を塗りつぶすパフォーマンスを測定する簡単なサンプルプログラ
ムです。サイズとアスペクト比の異なるポリゴンで画面を塗りつぶし、
その速度を自動的に測定しています。gnuplot を使用してその計測デー
タを見ることができます。詳しくは、autofill サンプルプログラムの
README を参照してください。
blockmonkey:
簡単なパフォーマンスを測定するアプリケーションです。ユーザーが
ディスプレイリストのサイズやパラメータを変更できて、レンダリング
時に効果を確認できます。コントローラの操作方法は、アプリケーショ
ンを実行するとホストの画面に表示されます。
画面下のパフォーマンス計測グラフは、ポリゴンを描画するのに必要
な時間を表しています。ディスプレイリストを生成するために必要な
CPU の処理時間は計算していません。たとえ次のフレームタイムが追い
付かないとしても、アニメーションがスローダウンしてしまわないよう
にするためです。
bumpmap:
バンプマッピングのサンプルプログラムです。詳しくは、bumpmap サ
ンプルプログラムの README を参照してください。
chrome:
リフレクション(反射)マッピング機能のサンプルプログラムです。
ci8fb:
autofill に似たサンプルプログラムです。8bit カラーインデックス
を使用してレンダリングしています。詳しくは、ci8fb サンプルプログ
ラムの README を参照してください。
このサンプルプログラムは、画面に表示される複数の三角形に対して、
時間とともに、三角形の数と大きさを変化させていきます。
make に引数をつけずにコンパイルした場合は、
・表示される三角形の面積
・三角形の、 y方向の大きさに対する x軸方向の大きさの比率
・1フレームに描かれる三角形の数
・1つの三角形の描画時間(usec)
・1秒間に描画できるピクセル数
の5つの値が osSyncPrintf() で表示されます。
fill.c で「#define PERFORM_CHECK」を定義すると、三角形の大きさ
と個数を変化させないで描画が行われます。
make に引数をつけずにコンパイルした場合は、
・10個の三角形を描画するのにかかる時間
・背景を描画するのにかかる時間
・上記2つの合計時間
の3つの値が osSyncPrintf() で表示されます。なお、この場合は大量
の文字列が表示されますので、PARTNER-N64 がハングアップしてしまう
可能性があります。
ddspgame:
64DD のサンプルプログラムです。画面表示を行いながら、ディスク
関数の呼び出しを行い、そのエラー結果と、対応したエラーメッセージ
を、64DD 内蔵 ROM フォントを用いて表示するというものです。
コンパイル後、PARTNER-N64 のコマンドウィンドウで "l (デバッグ
情報ファイル名)" を実行することで、動作させることができます。
デフォルトではディスク起動のプログラムとなっています。カセット
起動にするには、"make START_FROM_CASSETTE=YES" と make をしてく
ださい。
64DD プログラミングマニュアル第10章に記載のエラー処理シーケ
ンスにのっとって作成されています。シーケンス中の「異常終了」が発
生した場合は、以降の処理を行わないようになっています。
コマンド実行時や実行後に画面の下部に表示される数字は、発生した
エラー番号をあらわしています。これはゲームプログラムでは表示して
はいけないことですが、サンプルプログラムということで、現在どんな
エラーが発生しているかをモニターするために表示しています。
ddspgame/README.jp にも説明がありますので、参照してください。
detail:
マルチタイルテクスチャの使用方法を説明するサンプルプログラムで
す。ディテールテクスチャとミップマップテクスチャを含めてデモを行っ
ています。
eeptest:
EEPROM (4k もしくは 16k) のテストを行う簡単なプログラムです。
make 時に DEBUG_EEPROM=YES と指定すると、4k の EEPROM でも、16k
のエリアのリード・ライトを行ないます。
fault:
OS_EVENT_FAULT イベントを利用して、アプリケーションプログラム
で CPU の例外を処理するサンプルプログラムです。
PARTNER-N64 でデバッグ情報ファイル fault.out を読み込んだ場合、
PARTNER-N64 によって例外がトラップされて、そこで中断してしまいま
す。そのため、正常に動作させるには、ROM イメージファイル
fault.n64 のみを読み込むようにしてください。ROM イメージファイル
のみを読み込んで実行するには、以下のように PARTNER-N64 の rd コ
マンドを使用してください。
>rd fault.n64,0xb0000000
>reset
>g
なお、上記の実行前にデバッグ情報ファイルを読み込んでいた場合
には、デバッグ情報が有効となってしまうため、正常に動作しません。
このような場合、INIT コマンドを実行してもうまくいかないため、
いったん PARTNER-N64 を終了、再起動してから、ROM イメージファ
イルの読み込みを行ってください。
flash:
1Mフラッシュロムのテストを行うプログラムです。基本操作は以
下の通りです。
十字キー上下 : コマンドの選択
Aボタン : コマンドの実行
Cボタンユニット: 各パラメータの変更
以下は各コマンドの意味です
FLASH CHANGE : 使用するフラッシュの切り替えです。0から3
まで指定可能です。
READ ID : フラッシュのIDのリードです。
READ STATUS : フラッシュのステータスのリードです。
CLEAR STATUS : フラッシュのステータスのクリアです。
ALL ERASE : フラッシュの全データを消去します。
SECTOR ERASE : フラッシュの特定の1セクタを消去します。
消去するセクタは PAGE NUMBER で指定した
ページを含む1セクタです。
READ ARRAY(DMA) : フラッシュの特定のページをDMAでリードし
ます。
リードするページはPAGE NUMBERで指定した
ページからPAGE LENGTH分です。
WRITE BUFFER : フラッシュのバッファへのライトです。
WRITE ARRAY : フラッシュのバッファからフラッシュ各ペー
ジへのライトです。
リードするページは PAGE NUMBER で指定し
たページです。
FILL WRITE DATA : 乱数によりPAGE NUMBER で指定したページの
(1 PAGE) ための1ページ分の書き込みデータパターン
を作成します。データの最後の4バイトには
ページ番号が入ります。
CLEAR ALL : テストプログラムが持っている読み込みバッ
READ DATA ファ内のデータを消去します。
CLEAR ALL : テストプログラムが持っている書き込みバッ
WRITE DATA ファ内のデータを消去します。
ALL ERASE & : フラッシュの全領域に対して消去・書き込み
FILL & WRITE データ作成・書き込みを行います。
ALL READ : フラッシュの全領域からデータを読み込みま
す。データの読み込みは1ページリードで行
われます。
ALL COMPARE : テストプログラムが持っている読み込みバッ
ファと書き込みバッファの全内容を比較しま
す。
REGION COMPARE : テストプログラムが持っている読み込みバッ
ファと書き込みバッファの特定領域の内容を
比較します。比較する領域はPAGE NUMBERで
指定したページからPAGE LENGTH分です。
ALL TEST : 指定した回数分だけ ALL ERASE -> ALL FILL
-> ALL WRITE -> ALL COMPARE を実行します。
PAGE LENGTH : ページ長を指定します。動作実験以外では原則
1を指定してください。
PAGE NUMBER : ページ番号を指定します。
fogworld:
フォグ処理とボリュームカリング処理の使用方法のサンプルプログラ
ムです。
gbpak:
64GBパックの簡単なサンプルプログラムです。ゲームボーイ・カート
リッジ(MBC1のみに対応)からデータを読み出し、エラーが発生したと
きは、対応したメッセージを画面に表示します。
デフォルトでは、ゲーム名称や会社コードが入っていません。
siproc.h で定義している COMPANY_CODE と GAME_TITLE を書き換えて
ご使用ください。COMPANY_CODE を定義していないデフォルトの状態で
は、ゲーム名称と会社コードのチェックをパスするようにしていますの
で、ご注意ください。
また、読み込むデータのサイズを変更したいときは、main.h で定義
している DATA_SIZE の値(デフォルトでは 0x8000)を書き換えてくだ
さい。
また、画面表示メッセージの中に「対応ゲーム」という部分がありま
すが、実際のゲーム・アプリケーションでは、具体的なゲーム名を表示
するようお願いします。
make 時に「make LANG_ENGLISH=YES」とすると、画面表示メッセージ
が英語になります。
ginv:
RCP、CPU のクロック速度、利用可能な DRAM の総量などの情報を出
力する簡単なサンプルプログラムです。
gl:
Partner-N64 用のゲームローダーです。コマンドラインから ROM
イメージを読み込み、実行することができます。詳しくは、
README.jp を参照してください。
ground:
大きなグラウンドプレーンを正確にクリッピングするサンプルプログ
ラムです。
gs2dex:
スプライトマイクロコード S2DEX の使用方法を説明したサンプルプ
ログラムです。
lights:
RSP のテクスチャを使用したスペキュラハイライト効果、シャドウ
(陰)を擬似的に表現し、それらの位置や大きさをコントローラからの
入力で制御します。背景はミップマップ処理しています。
mipmap:
ミップマッピングのデモを行っています。他のテクスチャ処理と比較
したり、ミップマップパラメータを変更しながら確認することができま
す。
morphcube:
CPU で各頂点をモーフィング計算しています。CPU とグラフィックス
パイプラインは2フレーム続けて並列に実行しています。大きなミップ
マップテクスチャを、テクスチャメモリに収容できる容量でタイリング
しています。
morphfaces:
2次元イメージをモーフィングしています。CPU では頂点のモーフィ
ングをして、ブレンディングは2サイクルモードで行っています。詳し
くは、morphfaces サンプルプログラムの NOTES を参照してください。
motortest:
振動パックのサンプルプログラムです。詳細は、付属の README を
参照ください。
nosPak:
N64 のフォントデータを使用した、コントローラパックメニューのサ
ンプルプログラムです。
make を行うには、バッチファイル makenos.bat を実行してください。
onetri:
Zバッファ処理せずに、1ポリゴンを描画する簡単なサンプルプログラ
ムです。"gload -a -t" で実行することにより、簡単なテクスチャマッ
ピングを行うことが出来ます。
onetri-fpal:
onetri の PAL 版です。PAL 方式の TV で全画面表示を行うために
FPAL モードを使用しています。
overlay:
onetri のコードのオーバーレイを行うサンプルプログラムです。
(コードやデータを含んだ2つの異なるセグメントが同じメモリ領域を
共有しています。)
pfs:
コントローラパックのサンプルプログラムです。ゲームノートのチェ
ックや作成、削除等の実験を行うことができます。操作方法は以下の通
りです。
十字キー左右... 作成するゲームノートの選択
C上 ... ファイルシステムのチェック
C下 ... ゲームノートの削除
C左 ... ゲームノートの作成
C右 ... コントローラパックのフォーマット
A ... ゲームのノートのリードテスト
B ... ゲームのノートのライトテスト
START ... 再読み込み&表示
ちなみに、このサンプルプログラムはアプリケーションに付属される
コントローラパックメニューとは違うものです。コントローラパックメ
ニューのサンプルとしては nosPak を用意していますので、こちらの方
をご参照ください。
実際のゲームで作成したゲームノートの入ったコントローラパックを
このサンプルプログラムで使用した場合、次のことに気をつけてくださ
い。ライトテストや削除などで、ゲームノートを破壊してしまう可能性
があります。
また、カタカナ(日本語)には対応していません。ノート名称でカタカ
ナを使用している場合、その部分には何も表示されません。
playseq:
シーケンスプレイヤーを使用したサンプルプログラムです。ヘッダフ
ァイル playseq.h の中で、MAX_VOICES を以下の 2 種類定義しています
(#ifdef VOICES_16 - #else - #endif で括っています)。
#define MAX_VOICES 16;
#define MAX_VOICES 32;
MAX_VOICES はシンセサイザの物理ボイス数及びシーケンスプレイヤー
の仮想ボイス数を表しています。これらのボイス数が多いほど同時発音
可能な音数が増えますが、CPU 及び RSP の処理量も増加します。この
2 種類の定義を試し、ボイス数の効果を確認してください。
なお、そのままでコンパイルすると、仮想ボイス数は 32 になります。
playseq.naudio:
サンプルプログラム playseq を n_audio 対応へ変更したものです。
polyline:
ポリゴンとラインのマイクロコードを切り替えて描画しています。
reboot:
再立ち上げシーケンスのサンプルプログラムです。カートリッジにロー
ドした topgun から、あらかじめディスクに書かれた onetri を再立ち
上げします。
make を実行すると reboot/ 下に dwrite, topgun.n64, reboot.out,
onetri.n64, hello.n64, fat が作成されます。fat は 被起動ゲームの
サイズと格納位置の情報、dwrite はディスクデータ書きこみ用のバッ
チファイル、reboot.out は topgun.n64 のデバッグ情報ファイルです。
PARTNER-N64 のコマンドウィンドウで「<dwrite」でディスクにデータ
を書きこんだ後、「l reboot」「g」を実行してください。
実行後、topgun の画面が表示されますので、A ボタンを押してくだ
さい。再立ち上げを実行するかどうか確認するメニューが表示されます。
ここで OK を選んで A ボタンを押すことにより再立ち上げが実行され
ます。
なお、ディスク単体での立ち上げを行う場合は PARTNER-N64 のコマ
ンドウィンドウで「resetdd」「g」と入力します。この場合、このサン
プルではシンプルなメッセ−ジが表示されます。
reboot/ 下のディレクトリ構成は以下のようになっています。
ddproc/
DD 処理シーケンスとディスク処理、メッセ−ジ表示用関数等のモジュー
ルです。以下の三つのアプリケーションで共通して使われます。DD 処
理シーケンスは 64DD プログラミングマニュアル第10章に記載のエラー
処理シーケンスにのっとって作成されています。シーケンス中の「異常
終了」が発生した場合は、以降の処理を行わないようになっています。
topgun/
カートリッジから起動するゲームです。onetri を再立ち上げします。
onetri/
被起動ゲームです。topgun から再立ち上げされます。dwrite によっ
てディスクの LBA 50 を先頭に書きこまれます。
hello_world/
ディスクの先頭に書かれるゲームです。
makefat/
指定ファイルのサイズと指定した格納位置をファイルに出力するプロ
グラムです。このサンプルプログラムでは fat というファイルに
onetri のデータサイズとディスク内での格納位置を出力しています。こ
の fat は dwrite によってディスクの LBA 49 に書きこまれ、topgun
によって参照されます。
再立ち上げの概念、並びに実行方法について詳しくは 64DD プログラ
ミングマニュアル第15-1章「再立ち上げ」を御覧下さい。
soundmonkey:
シーケンスプレイヤーとサウンドプレイヤーの両方を使用しているサ
ンプルプログラムです。本サンプルプログラムではシーケンスプレイヤ
ーに仮想ボイスを4ボイスしか用意していません。このため MIDI デー
タ再生時、仮想ボイスの割り当てに失敗し、正常な演奏が行われません。
make 時にライブラリ libgultra_d.a をリンクした場合
(「make ERROR=YES」のように引数に ERROR=YES をつけて make を実
行した場合)、大量のエラーをコンソールに出力します。PARTNER-N64
は、このエラーを出力する際に使用しているルーチンに対応していない
ため、引数に ERROR=YES をつけて作成したプログラムは、PARTNER-N64
上では全く動作しません。
PARTNER-N64 を使用する場合は make 時に ERROR=YES をつけないよ
うにして下さい。
尚、本プログラムは敢えてこのように作成されております。バグでは
ありません。
spgame:
フォアグラウンドとバックグラウンドのオブジェクトをスプライト機
能を使用して描画するサンプルプログラムです。
spritemonkey:
スプライトマイクロコード Sprite2D の使用方法のデモを行うサンプ
ルプログラムです。
spritemonkeyEX:
スプライトマイクロコード S2DEX2 を利用したサンプルです。
現状の S2DEX2 マイクロコードでは 32bit のテクスチャーの利用時に
正常に表示されない仕様となっているため、該当するモードに関しては
エミュレーション関数 guS2DEmuBgRect1Cyc() を利用して表示しています。
sramtest:
256K SRAM が動作するかテストを行います。実行結果は
osSyncPrintf() で表示されます。実行には 256K SRAM の基板が必要で
す。
terrain:
これは“地形生成”サンプルプログラムです。N64 ハードウェアを利
用してジオメトリを描画し、コントローラでインタフェースを操作でき
ます。
texlight:
ディフューズライト処理とスペキュラハイライト処理、またテクスチャ
マッピングを施したオブジェクトを全て同時に表現しているサンプルプ
ログラムです。
threadmonkey:
スレッドプロファイラの利用方法を示したサンプルプログラムです。
blockmonkey の block.c の一部にスレッドプロファイラ用の関数呼び
出しと、結果表示のルーチンを組み込んだものです。通常の動作モー
ドやキー操作のデバッグプリント表示の後に、各スレッドの動作回数
と動作時間が表示されるように変更されています。
tile_rect2d:
大きなテクスチャをテクスチャメモリにおさまる小さなテクスチャタ
イルに分割する方法を簡単にデモしています。2次元のテクスチャレク
タングル・プリミティブを生成しています。
tile_rect3d:
大きなテクスチャをテクスチャメモリにおさまるタイルに分割する方
法を説明しています。適切にフィルタリング処理しますので、つなぎ目
ができることはありません。三角形を生成します。
topgun:
このサンプルプログラムに登場する戦闘機は MultiGen でモデリング
された .fltフォーマットのデータです。サンプルプログラムとして添付
しているジオメトリコンバータ flt2c でディスプレイリストを作成して
います。
tron:
壁はソーティング処理していない透明オブジェクトです。RDP のハン
グを避ける、BOWTIE_VAL パラメータの使用方法をデモしています。
voice:
音声認識システム用ライブラリ関数を用いた、音声認識処理を行うた
めのサンプルプログラムです。コントローラポートに音声認識システム
を接続し、マイクに向かって音声を発することにより、認識結果が画面
に表示されます。
詳細は、付属の README を参照ください。