Fireworks Demo for PS2 Linux Ver1.00

SUMMARY

このプログラムは以下を実現して、PS2 Linuxでちょっとしたデモンストレーション (花火もどきのパーティクルデモ)を行います。
(A fireworks demonstation program for PS2 Linux)

fire1.jpg fire2.jpg

fire3.jpg fire4.jpg

実行画面

HOW TO USE

Fireworks Demoの操作方法は次のようになります。

Fireworks Demoの実行には、コンパイル作業が必要です。

cd fireworks
make depend
make
make run

コンパイル時に以下のオプションを選択できます。
(selectable option list)

1. GDEFINES in MCONFIG

-DSCREEN_RES_FREE
画面モードはcubedemoの起動オプションで自由に設定できます。 本オプションを指定してコンパイルした時のみ有効で、 NTSC 640x448, 640x224, PAL 640x512, 640x256, VGA 640x480から選択できます。
-DSCREEN_RES_NTSC
画面モードはNTSC 640x448固定です (cubedemoの起動オプションは無視されます)
-DSCREEN_RES_PAL
画面モードはPAL 640x512固定です (cubedemoの起動オプションは無視されます)
-DSCREEN_RES_VGA
画面モードはVGA 640x480固定です (cubedemoの起動オプションは無視されます)

2. config.h

#define USE_TABLE_COSSIN
#defineにすると、sinf(),cosf()のかわりにテーブルを使用します。 精度は落ちますが、高速です。
#define USE_DRAWPATH_3
#undefにするとPATH3の描画コードがなくなります。
#define GRG_CLIPAREA 1.5f
ポリゴンクリップを行う位置を設定します。View planeの中心から端 まで距離の倍率となっていますので、1.0fで丁度そのままスクリーン のサイズとなります。

3. config_ps2linux.h

#define USE_PHSYADR_DMA
#define USE_VIF1DMA_TTE1
この二つはまとめて定義する必要があります。 DMAパッチ専用モードでioctl()によってDMAのchain modeをハードウエアが解釈します。 USE_PHSYADR_DMAか定義されている時は同時に時間測定もI/Oポートを直接制御したものとなります。 (測定結果に結果に影響はありません)
#define USE_DIRECT_DMA_CONTROL
上記のの二つを指定した時に有効です。 #defineを定義すると、DMAをioctl()ではなく直接I/Oポートをキックして起動します。
#define REDUCE_DMATAG
USE_PHSYADR_DMA等を定義しない時に使用可能です。 DMAのタグをまとめて、数を少なくします。

4. config_fire.h

#define USE_VPU1
VPU1を使用してジオメトリ演算を行います。
#define USE_FAKERAND
rand()関数をglibcのものから自前の簡単なものに変更します。
#undef USE_NOVPU1_POINT
#undef USE_VPU1の時のみに効果があります。
スプライトではなく、ポイント表示を行います。
#define FIRE_SPRITE_SIZE 30000.0f
パーティクルのスプライトサイズを指定します。
#define USE_VPU1_PACK1NUM 30
VPU1へ一度に送る頂点数を設定します。
#define USE_VPU1_SPRITE 3
VPU1プログラムを選択します。

1 ... 最適化なし版 (no optimize)
2 ... 最適化なし版 (nopでハザード部を置き換えたもの) (no optimize, hazard nop)
3 ... 最適化版 (optimize version, default)

PROGRAM DOWNLOAD


上記のプログラムは、著作権を放棄しています。 GPLと記述したままかもしれませんが、ご自由にご使用ください。
本アーカイブに含まれるテクスチャの権利は、それぞれに従ってください。 フォントはX11のフォントから適当なものを持ってきてBMP化したものです。 X11に従ってください。 その他は私が作成したものですので、プログラムと同じ扱いになります。