README.jp 5.05 KB
-----------------------------------------------------------------------------
README.jp (Japanese version)				--- Release 1.21
-----------------------------------------------------------------------------

o F3DEX マイクロコード一覧:

(1) gspF3DEX.fifo.o/gspF3DEX.NoN.fifo.o:

      Fast3D マイクロコードをベースに 頂点キャッシュを 32 に増やし, 
    2Triangles 命令を実装したものです. また DL のリンク数は 10 段から 18 
    段に増えています.

      gspF3DEX.fifo.o は Near クリップ付で gspF3DEX.NoN.fifo.o は Near 
    クリップ無しのバージョンです. 

(2) gspF3DLX.fifo.o/gspF3DLX.NoN.fifo.o:

      F3DEX におけるサブピクセル計算を簡略化することで, 速度を上げたも
    のです. このためテクスチャ使用時に, 少ししわなどが出る場合がありま
    す.
    
      F3DLX の GBI は F3DEX と互換です. また F3DLX の追加機能として 
    Clipping の ON/OFF を制御できます. クリッピング OFF の時にはパフォー
    マンスが少し向上します. 詳しくは NewFunctions.jp をお読みください. 

      gspF3DLX.fifo.o は Near クリップ付で gspF3DLX.NoN.fifo.o は Near 
    クリップ無しのバージョンです. 

      このマイクロコードは Release 0.94 より追加されました.

(3) gspF3DLX.Rej.fifo.o/gspF3DLP.Rej.fifo.o:

      通常のマイクロコードにおけるクリップ処理を止め, その代りとしてリ
    ジェクト処理を実装したマイクロコードです.

      ここでいうリジェクト処理とは, 「画面の外側の一定範囲内に 3 頂点
    が入っている 3 角形のみを描画し, 1 頂点でも外に出ている場合はその 
    3 角形全体の描画を行なわない」というものです. 

      この範囲のことをリジェクトボックスと呼びます. リジェクトボックス
    は, 条件によって異なりますが, X,Y 方向について言えば, 画面サイズが 
    320x240 の場合, 初期状態では, 以下の図の様に画面のおおよそ 2 倍分
    の範囲となります.
      この範囲は g*SPClipRatio で変更することができます. 値としては 
    FRUSTRATIO_2 から FRUSTRATIO_6 を指定できます. 
      また Z 方向(画面の奥行き方向)については, Far プレーンでリジェク
   トされます. Near プレーンではリジェクトされません. 

             -160                        480
          -120 +--------------------------+
               |                          | ___FRUSTRATIO_2 の時の
               |      0           320     |/   リジェクトボックス
               |    0 +------------+      |
               |      |            |      |
               |      |            |      |
               |      |    画面    |      |
               |      |            |      |
               |      |            |      |
               |   240+------------+      |
               |                          |
               |                          |
           360 +--------------------------+

      大きな 3 角形を表示するときに, リジェクト処理のため, 画面に
    出るべき 3 角形であってもその 1 頂点が外に出ているために描画されな
    いことがあります.
      この場合は, その 3 角形をより小さな 3 角形に分割して, 不自然な
    「ポリゴン欠け」が起こらないようにする必要があります. 

      F3DLX.Rej, F3DLP.Rej ではこのリジェクト処理を採用することによって
    2 Triangles 命令の処理速度を上げることができました. 
      そのため, DL の生成時にはなるべく g*SP2Triangles を使用するように
    してください. 

      gspF3DLX.Rej.fifo.o はテクスチャ補正ありのバージョンで, 
    gspF3DLP.Rej.fifo.o はテクスチャ補正なしのバージョンです. 
    F3DLP.Rej の方が F3DLX.Rej よりも僅かに早くなっています. SP の処理
    はこれによって軽くなりますが, DP の処理自体には変化がないので DP が
    SP の処理についてこない場合が多くなります. こうしたときには 
    render mode を RA モード(G_RM_RA_ZB_OPA_SURF)等にすることを検討す
    る必要もあるでしょう.

      またこのマイクロコードでは G_CULL_BOTH, G_CULL_FRONT をサポート
    していません.

      これらのマイクロコードは Release 0.96 より追加されました.

(4) gspL3DEX.fifo.o:

      Line3D マイクロコードの 32 頂点対応版です.
    また F3DEX 系マイクロコードの 1Triangle, 2Triangles, 1Quadrangle 
    をワイアフレームで表示します.
      このマイクロコードは Release 1.00 より追加されました.

-----------------------------------------------------------------------------
o GBI の互換性について:

  パッケージ内のマイクロコードの GBI (Graphics Binary Interface) と従
来のFast3D マイクロコードとの GBI にはバイナリレベルにおいての互換性が
ありません.

  ただし gbi.h によって, これらの違いを吸収するように作成してあります. 
同じ DL でもコンパイルオプションでそれぞれに適した GBI に振り分けられ
るようになっています.
  具体的には gbi.h を include する前 (通常は ultra64.h を include すれ
ば gbi.h も include されます) にキーワード "F3DEX_GBI" を定義しておく
ことで, 本パッケージのマイクロコードに対応した GBI を出力します.

  例えば, DL をファイル static_ex.c に記述したときには, 

  static_ex.c:

	|
	|#define  F3DEX_GBI
	|#include <ultra64.h>
	|

  のように, ultra64.h の include の前に #define F3DEX_GBI を追加してく
ださい. 
  
  Release 0.96 以降から F3DEX/F3DLX/F3DLX.Rej/F3DLP.Rej のマイクロコー
ドは全て GBI バイナリレベル互換となりました. よって, DL をそれぞれに使
い回すことが可能となりました. ただし, 前項で述べたようなリジェクト処理
のために同じ命令でも微妙に動作が異なっていますので同じ DL でも同じ画面
が描画されるとは限らないので注意が必要です.

				任天堂株式会社開発第 3 部	安本 吉孝