[PREV]
[NEXT]
[INDEX]
【10】仮想CPU命令各論
以下の解説中 [ 00, 0r, 時間 ] は仮想CPU命令のマシンコード
32ビットを 8, 8, 16ビットに分割した値(16進数)を示します.
X は任意の16進数,r はレジスタ番号を示します.
詳細は(【9】仮想CPU命令の内部表現)を参照して下さい.
NOOP ノーオペレイション
[ 00, 0r, 時間 ]
- 指定時間の間, 何もしない
- 時間指定つきのWAITに相当します。 指定時間を経過すると次の命令を
実行します。
- 時間を数値指定する場合は65秒まで, それ以上はレジスタに設定し
ます。
- レジスタ指定の場合はレジスタ1に時間を設定します。
- メッセージを受信すると,時間が余っていても次の命令に移ります。
- メッセージのチェックにはRECEIV命令を続けます。
- 表記
NOOP 時間(数値)
NOOP REG
[table]
THROW 制御を別のプロセスに渡す
[ 01, 00, 0000 ]
- 何もせず, 渡された時間をすべて消費, つまり制御を別のプロセスに
渡します。
- ”NOOP プロセスの残り時間”に相当するが所要時間は0です。
- 表記
THROW
[table]
INC レジスタのインクリメント
[ 08, 0r, 0000 ]
- 指定レジスタに1を加算します。
- 演算結果はフラグレジスタの値に影響します。
- 表記
INC REG
[table]
DEC レジスタのデクリメント
[ 09, 0r, 0000 ]
- 指定レジスタから1を減算します。
- 演算結果はフラグレジスタの値に影響します。
- 表記
DEC REG
[table]
演算命令
[ 1X, rr, (データメモリ) ]
[ parameter ]
- レジスタとパラメータの値を演算して結果をレジスタに設定します。
- 演算結果はフラグレジスタの値に影響します。
ADD | 加算 |
SUB | 減算 |
MUL | 乗算 |
DIV | 除算 |
SHL | 左シフト |
SHR | 右シフト |
AND | ビット積 |
OR | ビット和 |
NOT | 否定 |
CMP | 比較 |
NEG | 符号反転 |
SQRT | 平方根 |
SIN | サイン 角度は8倍したもの結果は10000倍したもの |
COS | コサイン 角度は8倍したもの結果は10000倍したもの |
ATAN | アークタンジェント y/x のアークタンジェントを計算,
yはレジスタ1に設定します。 結果の角度は8倍した値が返されます。
x と y が共に0にの場合は0が返ります。 ATAN RY RX で RY = atan(RY/RX) |
RANDOM |
0からレジスタ2-1までの値の乱数をレジスタ1に設定します。
パラメータも可.負の値を指定するとその絶対値が乱数のシード
となって,その後の乱数系列が変化します
|
- パラメータは32bit符号付き整数
- 演算結果はフラグレジスタの内容に影響します。
- 表記
ADD REG1 パラメータ ; REG1 + パラメータ → REG1
ADD REG1 REG2 ; REG1 + REG2 → REG1
ADD REG1 データメモリ# ; REG1 + データメモリ → REG1
[table]
分岐命令
[ 2X, 飛び先オフセット(24bit) ]
- IF文に相当します。
- 分岐命令は符号付き整数の分岐先オフセットを指定します。
- 演算命令で設定されたフラグレジスタに従って分岐の有無が決定され
ます。
- LOOPのル-プ回数はル-プカウンタRL(32bit)に設定します。
BRA | 無条件分岐 |
BEQ | 演算結果が0か等しい |
BNE | 演算結果が非0か等しくない |
BGR | より大きい |
BGE | より大きいか等しい |
BLS | より小さい |
BLE | より小さいか等しい |
BMI | 演算結果が負 |
BPL | 演算結果が0以上 |
LOOP | ループ |
- 表記
分岐命令 オフセット
[table]
CALL 副手続きの呼出し
[ 30, 飛び先オフセット(24bit) ]
- サブルーチンを呼出します。
- RETURN用の戻りアドレスをスタックに積んで飛び先オフセットで指定した
アドレスにジャンプします。
- 表記
CALL 飛び先オフセット
[table]
RETURN 副手続きからのリターン
[ 31, 00, 0000 ]
- CALL命令で呼び出したサブルーチンの処理を終了して,CALL命令の
次の命令から実行を再開します。
- 表記
RETURN
[table]
PUSH レジスタのプッシュ
[ 32, 0r, 0000 ]
- スタックポインタから1減じてレジスタの値をスタックポインタの示
すデータメモリに格納します。
- 表記
PUSH REG
[table]
POP レジスタのポップ
[ 33, 0r, 0000 ]
- スタックポインタの示すデータメモリの値をレジスタに設定し,
スタックポインタに1を加えます。
- 表記
POP REG
[table]
CLEARA 位置姿勢レジスタのクリア
[ 34, 00, 0000 ]
- 位置姿勢レジスタ(RX, RY, RZ, RH, RP, RB)をすべて0に設定します。
- 表記
CLEARA
[table]
PUSHA 位置姿勢レジスタのプッシュ
[ 35, 00, 0000 ]
- 位置姿勢レジスタ(RX, RY, RZ, RH, RP, RB)をすべてスタックに格納
します。 格納順は RX, RY, RZ, RH, RP, RB の順です。
- 表記
POSHA
[table]
POPA 位置姿勢レジスタのポップ
[ 36, 00, 0000 ]
- 位置姿勢レジスタ(RX, RY, RZ, RH, RP, RB)をスタックから取り出し
ます。 取り出す順序は RB, RP, RH, RZ, RY, RX の順です。
- 表記
POPA
[table]
CLEARG 汎用レジスタのクリア
[ 37, 00, 0000 ]
- 汎用レジスタ(R1, R2, R3, R4, R5, R6)をすべて0に設定します。
- 表記
CLEARG
[table]
PUSHG 汎用レジスタのプッシュ
[ 38, 00, 0000 ]
- 汎用レジスタ(R1, R2, R3, R4, R5, R6)をすべてスタックに格納
します。 格納順は R1, R2, R3, R4, R5, R6 の順です。
- 表記
POSHG
[table]
POPG 汎用レジスタのポップ
[ 39, 00, 0000 ]
- 汎用レジスタ(R1, R2, R3, R4, R5, R6)をスタックから取り出し
ます。 取り出す順序は R6, R5, R4, R3, R2, R1 の順です。
- 表記
POPG
[table]
ENTER スタックフレームの作成
[ 3A, 00, 0000 ]
- push bp; load bp,sp; sub sp, param16に相当
- 【9】章参照
- 表記
ENTER 数値
[table]
LEAVE スタックフレームの解放
[ 3B, 00, 0000 ]
- load sp,bp; pop bp に相当
- 【9】章参照
- 表記
LEAVE
[table]
CALLTB 共有メモリのジャンプテーブルによるサブルーチン呼び出し
[ 3C, rr, 0000 ]
- レジスタ1とレジスタ2を加えたアドレスの共有メモリの内容(アドレ
ス)をCALLします。 たとえばREG1にジャンプテーブルの先頭番地,
REG2にインデックスを設定してサブルーチンを呼び出します。
- 表記
CALLTB REG1 REG2
[table]
LOAD ロードレジスタ
[ 40, rr, (データメモリ) ]
([ parameter ])
- レジスタにデータメモリの内容,パラメータの値,または
別のレジスタの内容を転送します。
- 表記
LOAD REG1 パラメータ
LOAD REG1 REG2
LOAD REG1 データメモリ#
[table]
LOADM ロードデータメモリ
[ 41, 00, データメモリ ]
[ parameter ]
- デ-タアドレスの示すデータメモリにパラメータの値を設定します。
- 表記
LOADM デ-タアドレス パラメータ
[table]
XLOAD レジスタ相対ロ-ドレジスタ
[ 42, rr, 0000 ]
- レジスタ2の示すアドレスのデータメモリの内容をレジスタ1に設定します.
- レジスタの順番に注意してください
- 表記
XLOAD REG1 REG2
[table]
CLOAD ロードレジスタ(共有メモリ)
[ 43, rr, (アドレス) ]
- レジスタ1にレジスタ2の示すアドレスの共有メモリの値を設定します。
- レジスタの順番に注意してください
- 表記
CLOAD REG1 REG2
CLOAD REG1 共有メモリアドレス
[table]
LOADBP BP相対ロードレジスタ
[ 44, 0r, オフセット ]
- レジスタ1にBPレジスタの示すアドレス + オフセットのデータメモリ
の内容を設定します。
- スタックの局所変数領域を使用します。
- 表記
LOADBP REG1 オフセット
[table]
PNTUV 「物体」頂点の定義(UV座標付き)
[ 46, 00, 0000 ]
- 「物体」頂点座標の定義(レジスタRX,RY,RZにより指定)
- 「物体」頂点のU座標をレジスタRH、V座標をレジスタRPに指定
- DEFPUVと同じだが, 実行時に頂点座標を定義可能
- SLIDE,HOME命令によるオフセットが加算されます。
- 表記
PNTUV
[table]
DEFPNT 「物体」の頂点の定義(UV座標付き)
[ 47, 00, 0000 ]
[ 物体の頂点座標 X ]
[ 物体の頂点座標 Y ]
[ 物体の頂点座標 Z ]
[ 物体の頂点座標 U ]
[ 物体の頂点座標 V ]
- プロセス所有の「物体」に頂点座標を追加します。
- 定数を指定, 実行時に指定するためにはPNTUVを用います。
- SLIDE,HOME命令によるオフセットが加算されます。
- 表記
DEFPUV x y z u z
[table]
TXFILE テクスチャビットマップファイル読み込み
[ 48, テクスチャファイル番号, 文字パラメータ数 ]
[ ch4, ch3, ch2, ch1 ] (ファイル名文字列)
[ 0 , 0 , ch6, ch5 ]
- ビットマップファイルをテクスチャとして読み込む
- ビットマップファイルはモノクロ、16, 24, 32 bitが使用可
- オブジェクト間で共通のテクスチャファイル番号を使用
- テクスチャファイル番号は 0 から 127 の範囲を使用します。
- グラフィックモードに切り替えた後に実行すること
- 表記
TXFILE Num ファイル名
[table]
TXSET テクスチャ指定
[ 49, 0r, (テクスチャ番号) ]
- レジスタ指定ならレジスタの値が用いられる。
- オブジェクトで使用するテクスチャ番号を指定します。
- テクスチャ番号は 0 から 127 の範囲を使用します。
- テクスチャ番号が -1の時はテクスチャは貼られません(デフォルト)
- テクスチャ番号はオブジェクト毎に独立しています。
- オブジェクト生成(GENOBJ または CHILD)後に実行すること。
- テクスチャを使用するオブジェクトの場合、頂点登録前に実行すること。
平面マッピングでUV算出する場合、テクスチャサイズが必要となるため。
- 表記
TXSET Num
[table]
TXAXIS テクスチャ貼り付け軸の指定
[ 4A, 0r, (0, 1, or 2) ]
- レジスタ指定ならレジスタの値が用いられます。
- 1:x, 2:y, 3:z が中心軸になります。
- -1:x, -2:y, -3:z の場合は逆方向からテクスチャが貼られます。
- 0 を指定するとz 軸を指定することと同じ。
- 頂点毎に指定可能
- オブジェクト生成(GENOBJ または CHILD)後で、頂点登録(POINT または DEFPNT)前に実行すること。
- 表記
TXAXIS 中心軸
[table]
TXALPH テクスチャの透明度の指定
[ 4B, 0r, (0_100) ]
- テクスチャの透明度を0から100の範囲で指定する。100で不透明
- 値が大きいほどテクスチャは不透明となる
- レジスタ指定ならレジスタの値が用いられます。
- TXFILEの前に実行すること
- 表記
TXALPH 数値
[table]
TXSCAL テクスチャの拡大率の指定
[ 4C, rr, (ScaleU) ]
[ ( ScaleV ) ]
- テクスチャの拡大率の指定
- 200とすると頂点のUまたはV座標を2倍する。この場合テクスチャは半分のサイズになる。
テクスチャを拡大する場合は100より小さい値を使用する。
- いつでも実行して拡大率を動的に変更できます。
- 表記
TXSCAL 横の拡大率 縦の拡大率
TXSCAL REG1 REG2
[table]
TXCHG テクスチャの変更
[ 4D, rr, (テクスチャ番号) ]
[ (テクスチャファイル番号) ]
- テクスチャ番号に対応するテクスチャファイル番号を変更することでテクスチャを動的に変更できます。
- テクスチャファイル番号に -1 を指定するとテクスチャマッピングを解除できます。
- レジスタ指定ならレジスタの値が用いられる
- テクスチャファイル番号は TXFILE命令で指定された番号
- テクスチャ番号は頂点またはポリゴン登録時にTXSETで指定された番号
- 表記
TXCHG テクスチャ番号 テクスチャファイル番号
[table]
TXMAP テクスチャのマッピング方法の指定
[ 4E, 0r, (0_255) ]
- テクスチャマッピングの方法を指定する
- デフォルトは0で球面マップ、1:は平面
- レジスタ指定ならレジスタの値が用いられます。
- テクスチャのモード値は 0 か 1 になります。
- オブジェクト生成(GENOBJ または CHILD)後で、頂点登録
(DEFPNT または POINT)前に実行すること。
- ポリゴン毎に指定可能
- 表記
TXMAP mode
[table]
TXBIAS テクスチャ座標のオフセットの設定
[ 4F, rr, (U座標) ]
[ (V座標) ]
- レジスタ指定ならレジスタの値が用いられます。
- 頂点登録時の頂点座標に対してTXAXISの設定に対応した座標にオフセットを加えます。
- オブジェクト毎に指定し、その後に登録されたポリゴンに対して影響します。
- ポリゴン登録後はそのポリゴンのオフセットは変更できません。
- 平面マッピングに対してのみ動作。球面マッピングには影響なし。
- 表記
TXBIAS U座標 V座標
[table]
STORE ストアレジスタ
[ 50, Fr, データメモリ ]
- データメモリにレジスタの値を書き込みます。
- 表記
STORE REG データメモリアドレス
[table]
XSTORE レジスタ相対ストアレジスタ
[ 51, rr, 0000 ]
- レジスタ2の示すデータメモリにレジスタ1の値を設定します。
- レジスタの順番に注意してください
- 表記
XSTORE REG1 REG2
[table]
CSTORE ストアレジスタ(共有メモリ)
[ 52, rr, (アドレス) ]
- レジスタ2の示す共有メモリにレジスタ1の値を設定します。
- レジスタの順番に注意してください
- 表記
CSTORE REG1 REG2
CSTORE REG1 共有メモリアドレス
[table]
STORBP BP相対ストアレジスタ
[ 54, 0r, オフセット ]
- レジスタ1の内容をBPレジスタの示すアドレス + オフセットのデータ
メモリへ格納します。
- スタックの局所変数領域を使用します。
- 表記
STORBP REG1 オフセット
[table]
GENPRC プロセスの生成
[ 60, スタート位置(24bit) ]
[ データメモリサイズ ]
- 新たにプロセスを生成し,仮想CPUのレジスタ群とデータメモリを
確保します。
- データメモリサイズには,データ領域とスタック領域として使用する
メモリ量を指定します。 通常は 50-100 程度で十分ですが,任意の大き
さを指定することができます。
- 生成されたプロセスはスタート位置から実行を開始します。
- この命令を実行したプロセスのレジスタを新規プロセスのレジスタに
コピーします。 レジスタは新規プロセスへの引数として使用できます。
- 表記
GENPRC スタート位置 メモリサイズ
[table]
DELPRC プロセスの消滅
[ 61, 00, 0000 ]
- この命令を実行しているプロセスを消去(自殺)します。
- プロセスが「物体」を所有する場合「物体」も消去します。
- 子プロセスが存在する場合には各子プロセスはワールド座標系で独立した
1つの「物体」となり,消滅しません.
- 指定したプロセスを構成している仮想CPUのレジスタ群とデータメモリ
を解放します。
- 表記
DELPRC
[table]
WAIT プロセスの一時停止
[ 62, 00, 0000 ]
- メッセージ領域をクリア(0)し, THROWを無限回繰り返します。
- メッセージを受け取ると次の命令に進みます。
- 受け取ったメッセージはクリアされません.
- 通常 RECEIV 命令が続き,メッセージを解読します。
- 停止メッセージ(STPALLで送信された)が優先されます。
- 表記
WAIT
[table]
STPALL 全プロセスの停止消滅
[ 63, 00, 0000 ]
- すべてのプロセスに停止メッセージ(-1)を送り, 自分も消滅します。
- プログラムは終了します。
- すべての仮想CPUのレジスタ群とデータメモリを解放します。
- 表記
STPALL
[table]
SEND 指定IDのプロセスにメッセージを送出
[ 64, rr, (プロセスID) ]
[ メッセージ ]
- プロセスIDの示すプロセスにメッセージ(32bit)を送ります。
- 同じプロセスID(RQの値)を持つ複数のプロセスが存在する場合は,
そのようなすべてのプロセスがメッセージを受信します。
- レジスタ指定ならプロセスIDはレジスタの値(32bit)が用いられます。
- 数値指定の場合には,プロセスIDは16ビットの範囲の値のみが使
用可能です。
- J3Wの世界では,物体間のコミュニケーションはメッセージの交換だけで
行います。 どの物体が他の物体に対して何をさせたいか(何をお願いする
か) を「どのようなメッセージを送るか?」で整理しておく必要がありま
す. 例えば「ラジコンの操縦者が「U」キーでメッセージ99を送った場合に,
プロセスID12番のラジコンヘリはどう反応するか?」という形で相互作用
を整理して自由にコントロールできる世界を構築します。
- 表記
SEND REG メッセージ
SEND REG1 REG2
SEND プロセスID メッセージ
SEND プロセスID REG
[table]
RECEIV メッセージを取得
[ 65, 0r, 0000 ]
- 他プロセスからのメッセージをレジスタに取得します。
- 停止メッセージ(-1)は RECEIVで受け取ることはできません.
- 同時に複数のメッセージを受け取った場合は大きい値のメッセージが
優先して保持されています。
- 実行後メッセージはクリアされます。
- 表記
RECEIV
[table]
SENDTO 指定プロセスにメッセージを送出
[ 66, rr, (プロセス番号) ]
[ メッセージ ]
- システムが管理しているプロセス管理番号のプロセスにメッセージ
(32bit)を送ります。 プロセス番号はDISTNC命令のRYレジスタに返る値です。
同じプロセスIDを持つプロセスが複数存在しているような場合に使用します。
- レジスタにプロセス番号を設定,数値指定は無意味(実行前には決まら
ないため)です。 プロセスIDとは異なるので注意.
- 表記
SENDTO REG メッセージ
SENDTO REG1 REG2
[table]
CHILD 子プロセスと子「物体」の生成
[ 67, スタート位置(24bit)]
[ データメモリサイズ ]
[ 頂点数 ]
[ ポリゴン数 ]
- 新しいプロセスと下位の階層の「物体」を生成して,関節を持つような
物体を実現します。
- 新たなプロセスを生成,実行スタート位置を指定した後に, この命令を
発行したプロセスの直下に所属する「物体」を生成します。
「物体」は親子関係を形成しますが,生成したプロセスには親子関係
はありません.
- 仮想CPUのレジスタ群とデータメモリが新規に確保されます。
- この命令を発行したプロセスのレジスタを生成するプロセスのレジスタ
にコピーします。 生成するプロセスに渡す引数として利用できます。
- 親「物体」が先に消滅した場合は,その子供たちはそれぞれ空間内で
独立した「物体」になります。
- 頂点数, 面数は実際に使用する数より多くても問題ありませんが,
少ないとエラーが発生します。 注意して下さい.
- 表記
CHILD スタート位置 メモリサイズ 頂点数 ポリゴン数
[table]
GRAPHM グラフィックトウインドウを有効に設定
[ 80, 00, 0000 ]
- グラフィックウインドウを表示します。
- 色の設定は初期化されます。
- 表記
GRAPHM
[table]
TEXTM テキストウインドウのみ有効に設定
[ 81, 00, 0000 ]
- スクリーンをテキストモードに設定します。
- プログラム実行開始時はテキストモードで始まります。
- 表記
TEXTM
[table]
BCOLOR 背景色の設定 (0x0000-0x0FFF)
[ 82, 0r, ( 背景色 ) ]
- レジスタ指定ならレジスタの値が用いられます。
- RGB各4ビットで(黒 0x0000 - 白 0x0FFF)指定します(4096色).
- グラフィックモード時のスクリーンの背景色を設定します。
- 表記
BCOLOR REG
BCOLOR 数値
[table]
ZOOM 視野角の設定 (0:90度,1:53度)
[ 83, 0r, (0 or 1) ]
- レジスタ指定ならレジスタの値が用いられます。
- 0ならば90度(初期値), 1ならば53度の視野角になります。
- グラフィックウィンドウが開いている状態で実行します。
- 表記
ZOOM REG
ZOOM 数値
[table]
WIRE 視野角の設定 (0:ポリゴン, 1:ワイヤフレーム)
[ 84, 0r, (0 or 1) ]
- レジスタ指定ならレジスタの値が用いられます。
- 0 ならば通常のポリゴン表示, 1 ならばワイヤフレームになります。
- グラフィックウィンドウが開いている状態で実行します。
- 表記
WIRE REG
WIRE 数値
[table]
NEAR 近面クリップ位置の指定
[ 85, 0r, (近面)]
- 視点から近過ぎるポリゴンを削除する限界の距離を指定します。
- 定数で指定する場合は32767以内の値に制限されます。
- 指定した値が小さすぎるとZバッファの精度が低下します。
- 互換性からデフォルトは50にしていますが、より大きい値を指定
したほうが、視点から遠くにあるポリゴン同士の表示が乱れるのを
防ぐことができます。
- 表記
NEAR REG
NEAR 近面
[table]
FAR 遠面クリップ位置の指定
[ 86, 0r, (遠面)]
- 視点から遠過ぎるポリゴンを削除する限界の距離を指定します。
- 定数で指定する場合は32767以内の値に制限されます。
- デフォルトは4,000,000です。
- 表記
FAR REG
FAR 遠面
[table]
EMIT オブジェクトの発光
[ 88, 0r, (0 or 1) ]
- EMIT 1 を実行した物体インスタンスが光源を持ちます。
PARALL 0 の時は点光源がその物体の原点位置にあるものとして,
すべての物体が照明されます。 PARALL 1 の場合は, 平行光線の
方向が物体の向きに合わせて変化します。
- EMIT 0 が実行されると特定の物体インスタンスは光源を持たず,
仮想的な光源が視点とともに移動するようになります。 つまり,
視点から見た光源の相対位置と方向は一定となります。
初期設定は EMIT 0.
- SETEYE と EMITの関係. EMITが実行されない限りSETEYE命令で
光源も視点と 同じ物体に移動します。 一度 EMIT 1 が実行されると,
SETEYE命令で視点が移動しても光源は移動しません. EMIT 0 を
実行すると元に戻ります。
- J3Wのマイナーバージョン 30 以降で有効です。 VER命令でJ3Wの
バージョンを取得してチェックした上で使用するようにして下さい.
- レジスタ指定ならレジスタの値が用いられます。
- 表記
EMIT REG
EMIT 数値
[table]
PARALL 光源の種類の設定
[ 89, 0r, (0 or 1) ]
- レジスタ指定ならレジスタの値が用いられます。
- 0ならば点光源, 1ならば平行光源(初期値)になります。
- 平行光源の場合の光の方向は初期値は画面手前から奥(X軸方向)
でLIGHT命令で変更できます。
さらにオブジェクトが光源を持つ場合(EMIT 1),オブジェク
トの姿勢で方向が変化します。 LIGHT命令の方向指定がオブジ
ェクトの局所座標系で指定されたものと解釈されます。
- 表記
PARALL REG
PARALL 数値
[table]
INKEY キーコードを指定レジスタに入力
[ 90, 0r, 0000 ]
- アスキーコードをキーボードから入力
- INKEYによるキー入力はグラフィックウィンドウかテキストウィンド
ウがアクティブ(フォーカスがある)になっている必要があります。
アクティブでない場合でもキー入力を取得するためには RAWKEY を使
用してください.
- 表記
INKEY REG
[table]
RAWKEY キーチェック
[ 91, rr, キーコード ]
- レジスタ2または指定したキーコードのキーの押下チェック
- 複数キーの同時押下チェック可
- レジスタ1にKey Down:1 / Key Up:0を返します。
- 表記
RAWKEY REG1 REG2
RAWKEY REG1 キーコード
[table]
MOUSE マウスチェック
[ 92, 00, 0000 ]
- マウス座標のチェック
- RXにX座標, RYにY座標, RZにシフトキー状態を返します。
- RZに返る値は
Shiftキー | 1 |
Altキー | 2 |
Ctrlキー | 4 |
マウス右ボタン | 8 |
マウス左ボタン | 16 |
- 表記
MOUSE
[table]
OUTNUM 数値をテキストウインドウに出力
[ 98, 0r, 0000 ]
- レジスタ1の内容の数値をテキストウインドウに出力
- 表記
OUTNUM REG
[table]
OUTCHR 1文字をテキストウインドウに出力
[ 99, 0r, 文字コード ]
- 1文字をテキストウインドウに出力
- 以下の文字コード(10進)はテキストウインドウで機能を持ちます。
9 | TAB | タブ |
12 | Form Feed | すべてクリア |
13 | CR | 改行(Linux版では13は10[LF]に内部で変換されます。 ) |
18 | CAN | 現在行クリア |
- 表記
OUTCHR '文字'
OUTCHR 数値
OUTCHR REG
[table]
OUTSTM データメモリの文字列(ASCIIZ)の出力
[ 9A, 0r, 文字列の長さ ]
- レジスタの示すデータメモリの文字列(ASCIIZ)をテキスト
ウインドウに出力します。
- レジスタの示すデータメモリの内容の例
[ ch4, ch3, ch2, ch1 ]
[ 0, 0, ch6, ch5 ]
- 表記
OUTSTM REG 長さ
[table]
OUTSTR 文字列(ASCIIZ)を出力
[ 9B, 00, パラメータ数 ]
[ ch4, ch3, ch2, ch1 ]
[ 0, 0, ch6, ch5 ]
- 文字列(ASCIIZ)をテキストウインドウに出力します。
- 表記
OUTSTR 文字列
[table]
NOTE MIDI 音階出力
[ 9C, 00, MIDIチャンネル ]
[ 00, 00, Velocity, Note ]
- MIDI ノートオンにより音階出力
- 表記
NOTE ch 音符 音量
[table]
MIDI MIDIメッセージ出力
[ 9D, 00, MIDIメッセージ ]
[ 00, 00, param2, param1 ]
- MIDIメッセージ出力 (0..127, 0..127 )
(?はチャンネル番号)
0x8? | ノ-トオフ |
0x9? | ノ-トオン |
0xA? | ポリフォニックキープレッシャー |
0xB? | コントロールチェンジ |
0xC? | プログラム(音色)チェンジ |
0xD? | チャンネルプレッシャー |
0xE? | ピッチホイールチェンジ |
0xF? | システムメッセージ |
- パラメータ不要の場合は0として下さい(省略不可).
- 詳細はMIDI規格を参照して下さい.
- 表記
MIDI mes Param1 Param2
[table]
MOVx 移動命令
[ Ax, rr, (時間) ]
[ (parameter) ]
-
MOVF | 前進 |
MOVB | 後退 |
MOVL | 左移動 |
MOVR | 右移動 |
MOVU | 上移動 |
MOVD | 下移動 |
- 指定された時間で指定された距離を移動します。
- 時間の単位はミリ秒です。 時間を数値指定する場合は65秒まで,
それ以上はレジスタに設定します。
- レジスタ指定の場合はレジスタ1に時間, レジスタ2に距離を設定します。
- パラメータ(距離)は32bit符号付き整数
- メッセージを受信すると,時間が余っていても次の命令に移ります。
長い時間を指定しても自動的に途中経過が表示されます。
- メッセージのチェックにはRECEIV命令を続けます。
- 表記
x は F, B, L, R, U または D
MOVx 時間 移動距離
MOVx REG 移動距離
MOVx REG1 REG2
[table]
ROTx 回転命令
[ Ax, rr, (時間) ]
([ parameter ])
- 指定された時間で指定された角度を回転します。
- ROTHはZ軸まわり,ROTPはY軸まわり,ROTBはX軸まわりの回転です。
- 角度は360度を8倍した値を単位として指定します。 例えば30度:240,
90度:720, 180度:1440, 360度:2880 のように指定します。
- 時間の単位はミリ秒です。 時間を数値指定する場合は65秒まで,
それ以上はレジスタに設定します。
- レジスタ指定の場合はレジスタ1に時間, レジスタ2に距離を設定します。
- パラメータ(角度)は32bit符号付き整数
- メッセージを受信すると,時間が余っていても次の命令に移ります。
- メッセージのチェックにはRECEIV命令を続けます。
- 表記
x は H, P または B
ROTx 時間 回転角
ROTx REG 回転角
ROTx REG1 REG2
[table]
MOVALL 同時移動回転命令
[ B0, 0r, 時間 ]
- 指定した時間(単位はミリ秒)のあいだ移動,回転します。
- RX, RY, RZ, RH, RP, RB に移動量を設定します。
- 角度は360度を8倍した値を単位として指定します。 例えば30度:240,
90度:720, 180度:1440, 360度:2880 となります。
- 命令実行後 RX, RY, RZ, RH, RP, RB の値は不定となります。
- 移動が先, その後回転します。
- メッセージを受信すると,時間が余っていても次の命令に移ります。
- メッセージのチェックにはRECEIV命令を続けます。
- 表記
MOVALL 時間
MOVALL REG
[table]
MOVALH 同時移動回転命令2
[ B1, 0r, 時間 ]
- 指定した時間(単位はミリ秒)のあいだ移動,回転します。
- MOVALLより回転の補間精度が良いが,180度以上の角度を 指定すると絶対値
が180度以内で指定されたように動作します。
- RX, RY, RZ, RH, RP, RB に移動量を設定します。 角度は±180度(1440)以内を 指定します。
- 命令実行後 RX, RY, RZ, RH, RP, RB の値は不定となります。
- 移動が先, その後回転します。
- メッセージを受信すると,時間が余っていても次の命令に移ります。
- メッセージのチェックにはRECEIV命令を続けます。
- 表記
MOVALH 時間
MOVALH REG
[table]
SCALE 拡大縮小命令
[ B2, 0r, 時間 ]
- 指定時間で縮尺を変化させます。
- RX, RY, RZ に各軸の相対縮尺(1000が等倍)を設定します。
例えば 800で現在の縮尺の80%の大きさまで指定時間で変化します。
縮尺を変化させたくない軸には1000を設定しておく必要があります。
- メッセージを受信すると,時間が余っていても次の命令に移ります。
- メッセージのチェックにはRECEIV命令を続けます。
- 表記
SCALE 時間
SCALE REG
[table]
SETGRV 重力加速度の設定
[ B8, 0r, (重力加速度) ]
- 「物体」毎に重力加速度を設定します。 (単位はunit/sec^2)
- 重力加速度の方向はワールド座標系でZの正方向(下向き)です。
- 距離指定に用いる値(MOVE命令など)を1000倍した値を指定して
ください(単位は 1/1000unit).
- レジスタ指定ならレジスタの値が用いられます。
- 「物体」生成後に指定して, 再設定されるまで有効です。
- 初期値は0 で重力の影響を受けません.
- 表記
SETGRV 980
SETGRV REG
[table]
GETGRV 重力加速度の取得
[ B9, 0r, 0000 ]
- 「物体」毎の重力加速度をレジスタに取得します。 (単位はunit/sec^2)
- 重力加速度の方向はワールド座標系でZの正方向(下向き)です。
- 初期値は0 で重力の影響を受けません.
- 表記
GETGRV REG
[table]
SETACL 加速度の設定
[ BA, 00, 0000 ]
- RX, RY, RZ に「物体」の各軸に関する加速度を設定します。
- 距離指定に用いる値(MOVE命令など)を1000倍した値を指定して
ください(単位は(1/1000)unit/sec^2)
- 初期値は(0,0,0)です。
- 表記
SETACL
[table]
GETACL 加速度の取得
[ BB, 00, 0000 ]
- RX, RY, RZ に「物体」の各軸に関する加速度を取得します。
- 距離指定に用いる値(MOVE命令など)を1000倍した値が返ります。
(単位は(1/1000)unit/sec^2)
- 表記
GETACL
[table]
SETVEL 速度,角速度の設定
[ BC, 00, 0000 ]
- RX, RY, RZ に「物体」の各軸に関する速度を設定します。
- 速度は重力,加速度の影響で自動的に変化します。
- 距離指定に用いる値(MOVE命令など)を1000倍した値を指定して
ください(単位は(1/1000)unit/sec)
- RH, RP, RB に「物体」の各軸に関する角速度を設定(単位は(1/8)度/sec)
- 初期値は(0,0,0,0,0,0)です。
- 表記
SETVEL
[table]
GETVEL 速度,角速度の取得
[ BD, 00, 0000 ]
- RX, RY, RZ に「物体」の各軸に関する速度を取得します。
- 距離指定に用いる値(MOVE命令など)を1000倍した値が返ります。
(単位は(1/1000)unit/sec)
- 速度は重力,加速度の影響で自動的に変化します。
- RH, RP, RB に「物体」の各軸に関する角速度を取得(単位は(度/8)/sec)
- 表記
GETVEL
[table]
SETWVL 「物体」の速度を世界座標系で設定
[ BE, 00, 0000 ]
- RX, RY, RZ にワールド座標系の各軸に関する速度を設定します。
- 距離指定に用いる値(MOVE命令など)を1000倍した値を指定して
ください(単位は(1/1000)unit/sec)
- GETVELで得られる局所座標系の(x,y,z)も変化します。
- 速度は重力,加速度の影響で自動的に変化します。
- 角速度の指定はできません.
- 表記
SETWVL
[table]
GETWVL 「物体」の速度を世界座標系で取得
[ BF, 00, 0000 ]
- RX, RY, RZ に「物体」の各軸に関する速度を取得します。
- 距離指定に用いる値(MOVE命令など)を1000倍した値が返ります。
(単位は(1/1000)unit/sec)
- GETVELで得られる局所座標系の(x,y,z)をワールド座標系に変換した値が
返ります。 RH, RP, RBは変化しません.
- 速度は重力,加速度の影響で自動的に変化します。
- 表記
GETWVL
[table]
GENOBJ 「物体」の生成
[ C0, 00, 0000 ]
[ 物体の頂点数 ]
[ 物体の面数 ]
- 頂点数, 面数を指定して「物体」を生成します。
- 頂点数, 面数は実際に使用する数より多くても問題ありませんが,
少ないとエラーが発生します。 注意して下さい.
- 表記
GENOBJ 頂点数 面数
[table]
DEFPNT 「物体」の頂点の定義
[ C1, 00, 0000 ]
[ 物体の頂点座標 X ]
[ 物体の頂点座標 Y ]
[ 物体の頂点座標 Z ]
- プロセス所有の「物体」に頂点座標を追加します。
- 定数を指定, 実行時に指定するためにはPOINTを用います。
- SLIDE,HOME命令によるオフセットが加算されます。
- 表記
DEFPNT x y z
[table]
DEFPLN 「物体」の面の定義
[ C2, 0r, 頂点数 N ]
[ 物体の頂点番号 1 ]
[ 物体の頂点番号 2 ]
[ : ]
[ 物体の頂点番号 N ]
- レジスタに「物体」の面の色を設定します。
- プロセス所有の「物体」の面を定義します。
- 命令中に頂点数を保持します。 従ってパラメータ数は可変.
- パラメータ数が「物体」の頂点数と異なる場合の動作は不定
- 指定する頂点番号はUPDTVPを使用した場合,UPDTVP後の
頂点番号は再度 0から始まります。
- 負の値を使用すると親の頂点を指定する事ができます。 したがって
親の頂点番号0を指定することができません. 0番頂点を指定する
必要がある場合にはダミー(使用しない)頂点を番号0として追加し
ます。 親の頂点番号の指定には UPDTVP の影響はなく,0から始ま
る頂点番号に単にマイナス符号をつけて指定します。
- 表記
DEFPLN Rx n pl1 pl2 pl3 pl4 . . pln
[table]
DELOBJ 「物体」の消滅
[ C3, 00, 0000 ]
- プロセス所有の「物体」を消去します。
- 表記
DELOBJ
[table]
SETEYE 視点の設定
[ C4, 00, 0000 ]
- 視点を現在の「物体」に置きます。
- GENOBJ命令を実行したプロセス,またはCHILD命令で生成された
プロセスはどれでも視点を持つことができます。
- 表記
SETEYE
[table]
POINT 「物体」頂点の定義
[ C5, 00, 0000 ]
- 「物体」頂点座標の定義(レジスタRX,RY,RZにより指定)
- DEFPNTと同じだが, 実行時に頂点座標を定義可能
- SLIDE,HOME命令によるオフセットが加算されます。
- 表記
POINT
[table]
スペキュラーの設定 SETREF
[ C6, 0r, (強度) ]
- ポリゴンのスペキュラー(反射)の強度
- この命令の後に登録されるポリゴンのスペキュラーの強度
を指定します。
- 初期値は100, 0で反射無し, 200で2倍の強度になります。
- 表記
SETREF REG
SETREF 数値
[table]
環境光強度の設定 SETAMB
[ C7, 0r, (強度) ]
- ポリゴンの環境光強度 (光がない時の色)を設定
- この命令の後に登録されるポリゴンの環境光強度を指定します。
- 初期値は 25 です。 100 で最も明るくなります。
- 表記
SETAMB REG
SETAMB 数値
[table]
頂点番号の取得 GETVXN
[ C9, 0r, 0000 ]
- レジスタに「物体」の登録済み頂点数を返します。
- 次に登録される頂点番号として使用できます。
- 表記
GETVXN REG
[table]
PLANE 「物体」の面の定義(データメモリ使用)
[ CA, 0r, 0000 ]
[table]
TRANSP 頂点全体のローカル座標系での平行移動
[ CB, 00, 0000 ]
- 頂点全体のローカル座標系での平行移動による頂点座標の変更
レジスタ RX | X座標の移動量 |
レジスタ RY | Y座標の移動量 |
レジスタ RZ | Z座標の移動量 |
- 設計時と実行時の原点位置を変更できます。
- 表記
TRANSP
[table]
UPDTVP 頂点番号ポインタを次の登録頂点とする(相対指定)
[ CC, 00, 0000 ]
- この命令の後に登録される頂点番号を0とします。
- 頂点と面をグループ化して組み合わせる場合に使用します。
- グループ化したい頂点登録の前に実行します。 面の登録時の頂点
番号を0から開始することができます。
- DEFPLN, PLANE 命令に影響しますが,親の頂点を指定する場合には
影響しません. 親の頂点は RSETVPが指定されていると考えて下さい.
- 表記
UPDTVP
[table]
RSETVP 頂点番号ポインタを0に設定(絶対指定)
[ CD, 00, 0000 ]
- 「物体」の最初に登録された頂点番号を0とする.
- デフォルトではこの設定になっています。
- DEFPLN, PLANE 命令に影響します。
- 表記
RSETVP
[table]
SLIDE 頂点登録時の頂点座標オフセットを設定
[ CE, 00, 0000 ]
- 頂点登録時のローカル座標系での頂点座標オフセットを設定します。
レジスタ RX | X座標のオフセット |
レジスタ RY | Y座標のオフセット |
レジスタ RZ | Z座標のオフセット |
- この命令の後,登録される頂点は登録する座標にオフセットが加算さ
れます。 初期値は0に設定されています。
- DEFPNT, POINT 命令に影響します。
- 同形の複数の形状を「物体」内に複数配置する場合など使用します。
- 表記
SLIDE
[table]
HOME 頂点登録時の頂点座標オフセットを解除
[ CF, 00, 0000 ]
- 頂点登録時のローカル座標系での頂点座標オフセットを(0,0,0)と
設定します。
- DEFPNT, POINT 命令に影響します。
- 表記
HOME
[table]
GETPOS 「物体」の位置と姿勢をレジスタに取得
[ D0, 00, 0000 ]
- 親「物体」が存在すれば親座標系または親がなければワールド座標系
に対する「物体」の位置と姿勢をレジスタに取得します。
レジスタ RX | X座標 |
レジスタ RY | Y座標 |
レジスタ RZ | Z座標 |
レジスタ RH | ヘッド角 |
レジスタ RP | ピッチ角 |
レジスタ RB | バンク角 |
- 表記
GETPOS
[table]
SETPOS 「物体」の位置と姿勢をレジスタから設定
[ D1, 00, 0000 ]
- 親「物体」が存在すれば親座標系または親がなければワールド座標系
に対する「物体」の位置と姿勢をレジスタから設定します。
レジスタ RX | X座標 |
レジスタ RY | Y座標 |
レジスタ RZ | Z座標 |
レジスタ RH | ヘッド角 |
レジスタ RP | ピッチ角 |
レジスタ RB | バンク角 |
- 表記
SETPOS
[table]
PRCPOS 指定したプロセスIDのプロセスの位置と姿勢を取得
[ D2, 0r, (プロセスID) ]
- レジスタ指定ならプロセスIDはレジスタの値(32bit)が用いられます。
- 数値指定の場合プロセスIDは16ビットの範囲の値のみ
- 指定したプロセスIDのプロセスが持つ「物体」のワールド座標系に
対する位置と姿勢を取得します。
- 他プロセスの位置と姿勢を取得できます。
レジスタ RX | X座標 |
レジスタ RY | Y座標 |
レジスタ RZ | Z座標 |
レジスタ RH | ヘッド角 |
レジスタ RP | ピッチ角 |
レジスタ RB | バンク角 |
- 表記
PRCPOS REG
PRCPOS プロセスID
[table]
DISTNC 指定したプロセスIDまでの距離を得る
[ D3, 0r, (プロセスID) ]
- レジスタ指定ならプロセスIDはレジスタの値(32bit)が用いられます。
- 数値指定の場合プロセスIDは16ビットの範囲の値のみが指定でき
ます。
- 現在のプロセスの「物体」と指定したプロセスIDのプロセス
が持つ「物体」のワールド座標系における距離を求めます。
- 同じプロセスIDが複数存在する場合は最も近いプロセスの距離を取得
します。
レジスタ RX | 距離が返ります。 |
レジスタ RY | プロセス管理番号が返ります。 (SENDTOで使用) |
レジスタ RZ | 同一IDのプロセスの数が返ります。 |
- 距離が-1の場合は指定IDのプロセスは存在しません.
- 表記
DISTNC REG
DISTNC プロセスID
[table]
PRIOR ポリゴンの表示優先順位を指定
[ D4, 0r, (オフセット) ]
- ポリゴンのデプスソート時のオフセットを指定します。
- 同一プロセス内でこの指定の後,登録されるポリゴンはデプスソート時
に,ここで指定された値が加算されます。 何度も再指定可能です。
デプスソートはポリゴンの重心位置でソートされるため,地面のように
必ず最低の表示順位としたい場合に不都合が生じる場合があります。
最低の順位は遠方クリッピングの4000000を指定すれば,必ず最も遠く
に表示されます。 地面上の道路等は,たとえば2000000とすれば良いで
しょう.
- 数値指定では符号付き16ビット整数のみが指定可能なため,上記の
値を設定するにはレジスタに代入後,レジスタ指定する必要があります。
- 表記
PRIOR REG
PRIOR 数値
[table]
RELATV プロセスの「物体」の相対位置と角度をローカル座標系で返す
[ D5, 0r, (プロセスID) ]
- レジスタ指定ならプロセスIDはレジスタの値(32bit)が用いられます。
- 数値指定の場合プロセスIDは16ビットの範囲の値のみ
- 現プロセスのローカル座標系からみたプロセスidの「物体」の座標(x,y,z)
をRX, RY, RZに返し,角度をRH(ヘッド角), RP(ピッチ角)に返します。
RBには0が返ります。
- プロセスidの「物体」が存在しない場合,RX,RY,RZ,RH,RPは保存され,
RBには1が返ります。
レジスタ RX | X座標 |
レジスタ RY | Y座標 |
レジスタ RZ | Z座標 |
レジスタ RH | ヘッド角 |
レジスタ RP | ピッチ角 |
レジスタ RB | 0または1 |
- 表記
RELATV REG
RELATV 即値
[table]
LOOK プロセスの「物体」へのワールド座標系における角度を返す
[ D6, 0r, (プロセスID) ]
- レジスタ指定ならプロセスIDはレジスタの値(32bit)が用いられます。
- 数値指定の場合プロセスIDは16ビットの範囲の値のみ
- ワールド座標系からみたプロセスIDの「物体」への角度を
RH(ヘッド角), RP(ピッチ角)に返します。
RBには0が返ります。
- プロセスIDの「物体」が存在しない場合,RH,RPは保存され,
RBには1が返ります。
レジスタ RH | ヘッド角 |
レジスタ RP | ピッチ角 |
レジスタ RB | 0または1 |
- 表記
LOOK REG
LOOK 即値
[table]
RELAT2 ワールド座標系の座標をローカル座標系からみた値に変換
[ D7, 00, 0000 ]
- RX, RY, RZ に設定したワールド座標系の座標(x,y,z)を現プロセスの
ローカル座標系からみた値に変換してRX, RY, RZに返し,角度をRH
(ヘッド角), RP(ピッチ角)に返します。 RBには0が返ります。
- レジスタ指定ならプロセスIDはレジスタの値(32bit)が用いられます。
- 数値指定の場合プロセスIDは16ビットの範囲の値のみ
- 座標を指定して,その座標をローカル座標系に変換する目的で使用します.
そのため一時的に位置をずらしての座標変換を可能にするため,SETPOS
で瞬間的に移動した場合でも移動後の値が使用されます.
レジスタ RX | X座標 |
レジスタ RY | Y座標 |
レジスタ RZ | Z座標 |
レジスタ RH | ヘッド角 |
レジスタ RP | ピッチ角 |
レジスタ RB | 0 |
- 表記
RELAT2
[table]
FINDVX 「物体」の頂点番号を取得する
[ D8, 00, 0000 ]
- RPに指定されたプロセスIDのプロセスを検索し,もし存在すれば
「物体」を持つかチェックする. もし存在すればその「物体」
の各頂点に対してRX,RY,RZとの距離を求め,最も小さくなる頂点番号をRH,
距離をRBに返します。 エラーならばRBに負の値を返します。
- 表記
FINDVX
[table]
SETVTX 「物体」頂点位置の更新
[ D9, 00, 0000 ]
- RPに指定したプロセスIDの頂点番号RHの頂点座標(ローカル)を
RX,RY,RZの値に置換する.
- 「物体」が存在しなければRBに-1,存在すれば0が返ります.
- 頂点番号が不正ならば何もしない. RBは0が返ります.
- 表記
SETVTX
[table]
GETVTX 「物体」頂点位置の取得
[ DA, 00, 0000 ]
- RPに指定したプロセスIDの頂点番号RHの頂点座標(ローカル)を
- RX,RY,RZに取得する.
- 「物体」が存在しなければRBに-1,存在すれば0が返ります.
- 頂点番号が不正ならばRX,RY,RZ,RBは0が返ります.
- 表記
GETVTX
[table]
SETPLN ポリゴンデータの設定
[ DB, 00, 0000 ]
[table]
GETPLN ポリゴンデータの読み出し
[ DC, 00, 0000 ]
[table]
SETSCL 拡大縮小率の設定
[ DD, 00, 0000 ]
- オブジェクトの縮尺を設定します。
- RX, RY, RZ に各軸の絶対縮尺(1000が等倍)を設定します。
例えば 800で標準の縮尺の80%に設定されます。
- 表記
SETSCL
[table]
GETSCL 拡大縮小率の取得
[ DE, 00, 0000 ]
- オブジェクトの現在の縮尺をRX, RY, RZ に取得します。
- RX, RY, RZ には各軸の縮尺(1000倍した値)が返ります。
- 表記
SETSCL
[table]
GRNUM 数値をグラフィックウインドウに出力
[ E0, 0r, 0000 ]
- レジスタ1の示す値を文字列バッファに出力
- グラフィックウインドウへの文字列出力を行います。
- グラフィック文字列バッファ(2000文字分)は全プロセスで
共有します。 出力はバッファに順次追加されます。
- 表記
GRNUM REG
[table]
GRCHR 1文字をグラフィックウインドウに出力
[ E1, 00, 文字コード ]
- 1文字を文字列バッファに出力
- グラフィックウインドウへの文字出力を行います。
- グラフィック文字列バッファ(2000文字分)は全プロセスで
共有します。 出力はバッファに順次追加されます。
- 表記
GRCHR '文字'
[table]
GRSTM データメモリの文字列をグラフィックウインドウに出力
[ E2, 0r, 文字列の長さ ]
[ ch4, ch3, ch2, ch1 ] <--- reg1の示すデータメモリ
[ 0 , 0 , ch6, ch5 ]
- レジスタの示すデータメモリの文字列(ASCIIZ)を文字列バッファに出力
- グラフィック文字列バッファ(2000文字分)は全プロセスで
共有します。 出力はバッファに順次追加されます。
- グラフィックウインドウへの文字列出力を行います。
- 表記
GRSTM REG 長さ
[table]
GRSTR 文字列(ASCIIZ)を出力
[ E3, 00, パラメータ数 ]
[ ch4, ch3, ch2, ch1 ] この例ではパラメータ数2
[ 0 , 0 , ch6, ch5 ]
- カーソル(文字列位置)の文字列バッファに文字列を書き込みます。
- グラフィックウインドウへの文字列出力を行います。
- グラフィック文字列バッファ(2000文字分)は全プロセスで
共有します。 出力はバッファに順次追加されます。
- カーソルは更新されます。
- 表記
GRSTR 文字列
[table]
GRCOL 文字色を設定
[ E4, 0r, 文字色 ]
- グラフィックウインドウへの表示文字色を設定します。
- 表記
GRCOL 文字色 or REG
[table]
GRCLR 文字列クリア
[ E5, 00, 0000 ]
- グラフィックウインドウの文字列バッファ(2000文字分)のクリア
グラフィックウインドウに表示中のすべての文字を消去します。
- 表記
GRCLR
[table]
GRSCR 文字列位置(カーソル)の設定
[ E6, 0r, 文字列位置 ]
- グラフィックウインドウで次に描画される文字の位置を指定します。
- 字の位置の指定は0から1999の数値を設定します。
- 80文字x25行 = 2000 として左上を0とします。
- 表記
GRCSR 文字列位置 or REG
[table]
GRPOS 文字列位置(カーソル)の取得
[ E7, 0r, 0000 ]
- グラフィックウインドウで次に描画される文字の位置を返します。
- 文字列の位置は0から1999の数値が返ります。
- 80文字x25行 = 2000 として左上を0とします。
- 表記
GRPOS REG
[table]
GRLINE スクリーンにラインを描画
[ E8, 00, 0000 ]
- スクリーン(640x480)に線分を描画します。
- ラインは100本までです。
- 以下のレジスタに設定します。
RX | x0 始点 |
RY | y0 |
RZ | 色 |
RH | x1 終点 |
RP | y1 |
RB | ライン番号 (0 - 99) |
- 一度設定されたラインは消去または再設定されるまで表示されます。
- すでに設定されたライン番号を指定すると以前の設定は上書きされます。
- 表記
GRLINE
[table]
GRLINC 指定ライン番号のラインの消去
[ E9, 0r, ライン番号 ]
- 指定ライン番号のラインの消去
- 表記
GRLINC ライン番号 or REG
[table]
SYSTIM システム時間の取得
[ F0, 0r, 0000 ]
- システム時間をミリ秒単位でレジスタに設定します。
- PAUSE中でも時間は経過します。
- 表記
SYSTIM REG
[table]
SYSCNT システムループ回数の取得
[ F1, 0r, 0000 ]
- プロセス実行ループの起動時からのループ回数をレジスタに設定します。
- グラフィックウインドウの総書き換え回数+α(グラフィックウインドウ
オープン前のループ回数)となり,FPSの計算に使用できます。
- 表記
SYSCNT REG
[table]
SYSPRC 現在のプロセス数の取得
[ F2, 0r, 0000 ]
- 現在存在するプロセス数をレジスタに設定します。
- 表記
SYSPRC REG
[table]
DATA 共有メモリに書き込み
[ F3, 0r, データ数 N ]
[ データ 1 ]
[ データ 2 ]
[ : ]
[ データ N ]
- レジスタに共有メモリのアドレスを設定します。
- データを共有メモリのアドレスに書き込みます。
- データ数は可変です。
- データ数が実際のデータの個数と異なる場合の動作は不定
- 共有メモリを初期設定する場合に使用します。
- 表記
DATA REG n d1 d2 d3 . . dn
[table]
WRITE 共有メモリをファイルに書き込み
[ F4, 00, パラメータ数 ] この例ではパラメータ数2
[ ch4, ch3, ch2, ch1 ] ファイル名文字列
[ 0 , 0 , ch6, ch5 ]
- 共有メモリの内容を32bit符号付き10進数でファイルに書き込みます。
- RXレジスタに読み出す共有メモリの先頭アドレスを設定します。
- データ数をRYに設定します。
- エラーのときはRYに0が返ります。
- 表記
WRITE "ファイル名"
[table]
READ ファイルを共有メモリに読みだし
[ F5, 00, パラメータ数 ] この例ではパラメータ数2
[ ch4, ch3, ch2, ch1 ] ファイル名文字列
[ 0 , 0 , ch6, ch5 ]
- 32bit符号付き10進数のファイルを共有メモリに読み込みます。
- RXレジスタに書き込む共有メモリの先頭アドレスを設定します。
- データ数をRYに返します。
- エラーのときはRYに0が返ります。
- 表記
READ "ファイル名"
[table]
LIGHT 光源の強度,方向の設定
[ F7, 0r, 0000 ]
- 光源の強度 (0 - 100)をレジスタ1に指定
- 方向を以下のレジスタに設定します。
RH | 方向 X成分 ( 0 - 100 ) 方向は相対値 内部で正規化される |
RP | 方向 Y成分 ( 0 - 100 ) |
RB | 方向 Z成分 ( 0 - 100 ) |
- 光源の以前の設定は上書きされます。
- 表記
LIGHT REG
[table]
COLNUM シェイディング可能な色数を取得
[ F9, 0r, 0000 ]
- シェイディング可能な色数をレジスタに設定します。
- 表記
COLNUM REG
[table]
COLWDT 1色あたりのシェイディング段数を取得
[ FA, 0r, 0000 ]
- 1色あたりのシェイディング段数をレジスタに設定します。
- 表記
COLWDT REG
[table]
CNTVTX 総頂点数を取得
[ FB, 0r, 0000 ]
- システムに登録されている総頂点数を返します。
- 表記
CNTVTX REG
[table]
CNTPLY 総ポリゴン数を取得
[ FC, 0r, 0000 ]
- システムに登録されている総ポリゴン数をレジスタに返します。
総ポリゴン数はDEFPLNまたはPLANEで登録された数を示します。
- 表記
CNTPLY REG
[table]
SETCOL 色の設定
[ FD, 0r, 0000 ]
- レジスタ1に設定した色番号の色をRX-RBに指定した色に設定します。
- 以下のレジスタに設定します。
RX | 拡散光 赤成分 ( 0 - 255 ) 光源から照明された場合の色 |
RY | 拡散光 緑成分 ( 0 - 255 ) |
RZ | 拡散光 青成分 ( 0 - 255 ) |
RH | 周辺光 赤成分 ( 0 - 255 ) 光源から照明されない場合の色 |
RP | 周辺光 緑成分 ( 0 - 255 ) |
RB | 周辺光 青成分 ( 0 - 255 ) |
光源の影響を受けない色にするには RX-RZを0に設定します。
- 以前の設定は上書きされます。
- グラフィックモードの時のみ有効です。
- 表記
SETCOL REG
[table]
RSTCOL 色の初期化
[ FE, 00, 0000 ]
- 色をシステムの初期設定の状態に戻します。
- 表記
RSTCOL
[table]
VER バージョン番号の取得
[ FF, 00, 0000 ]
- RXにメジャーバージョン,RYにマイナーバージョンを設定します。
- 表記
VER
[table]
[PREV]
[NEXT]
[INDEX]
ご意見・ご感想は,水谷 純 <mizutani.jun@nifty.ne.jp>まで.