;
;	HSP help manager用 HELPソースファイル
;	(先頭が「;」の行はコメントとして処理されます)
;

%type
拡張命令
%ver
0.19c
%note
当プラグインに関する質問、要望などはSinagawaへお願いします。
URL->http://www.hspdx.net/
Mail->s@hspdx.net

%date
2007/06/19
%author
Sinagawa(original by onitama)
%dll
hspdxfix
%url
http://www.onionsoft.net/



%index
es_xfer
バッファ間画像コピー
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5,p6
p1=転送先DirectXバッファID(-2〜)
p2=転送元DirectXバッファID(-2〜)
p3=コピー元X座標
p4=コピー元Y座標
p5=コピーするXサイズ
p6=コピーするYサイズ

%inst
es_copy命令と同じく画像イメージのコピーを行ないますが、 コピー先を画面上だけではなく、別なバッファなども指定することができます。
p1で指定したバッファIDに、p2で指定したバッファIDのイメージを転送します。
pos命令で指定した座標に、(p5,p6)のサイズとgmodeで指定したモードで、(p3,p4)の座標から画像がコピーされます。
p5,p6を省略した場合、gmodeで指定したサイズでコピーを行います。
es_copy命令の頭に、 転送先のバッファIDが付加されたものと考えてください。
p1とp2のバッファ指定は、オフスクリーンバッファIDの他にも以下の値が使用できます。
^p
DirectXバッファID = -1 : 現在表示中の画面イメージ
DirectXバッファID = -2 : 現在描画中の画面イメージ
^p
es_copy命令では、転送先が-2にあたります。
この命令を実行する際、 コピー先のバッファはあらかじめes_buffer命令によって確保されている必要があります (この命令でバッファを新規に作成することはできません)。
%href
es_copy
gmode




%index
es_dist
2点間距離算出
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5
p1=結果を代入する変数
p2,p3=点Aの座標
p4,p5=点Bの座標

%inst
(p2,p3)から(p4,p5)までの距離を求め、変数p1に代入します。計算結果は小数部8bitの固定小数です。




%index
es_set
スプライト設定
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5,p6
p1=スプライトNo.
p2=スプライトX座標
p3=スプライトY座標
p4=キャラクタNo.
p5=描画モード(0=DirectDraw、1=Direct3D)
p6=優先順位(-32768〜32767)

%inst
スプライトを登録します。
p1は、スプライトNo.(0〜511)、(p2,p3)は画面上でのスプライトの座標になります。
この座標を左上として、p4で指定したキャラクタNo.が表示されます。
スプライト座標は、-32767〜32767までの範囲が設定可能です。
^
p5で描画方法を選択します。es_effectでのエフェクトを使用する時は1に設定します。
このパラメータは、 Direct3Dが使えない場合は強制的に0になり、使える場合は1がデフォルトになります。
^
p6でスプライトの優先順位を指定します。優先順位は値が小さいほど手前に表示されるようになり、同一値の場合はスプライトの小さい方が優先されます。
また、 従来通りスプライトNo.の小さい順に描画するようにすることもできます。

%href
es_pat
es_draw



%index
es_blink
スプライト点滅設定
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=スプライトNo.
p2=点滅フラグ(1〜3)
p3=点滅カウント初期値(-1or1〜)

%inst
^p
点滅フラグ=1 : 点滅無し、カウントが0になったらスプライトを消滅させる
点滅フラグ=2 : 点滅あり、カウントが0になったら点滅をやめる
点滅フラグ=3 : 点滅あり、カウントが0になったらスプライトを消滅させる
^p
スプライトの点滅を設定します。 これまでes_flag命令で設定していたものを独立・拡張した命令です。
ここでの設定は es_flag命令を実行するとリセットされます。
p3に-1を設定すると、カウントは無限になります。




%index
es_palfade
パレットフェード
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=フェード値(-256〜256)
p2=フェードするスピード(0〜128)
p3=フェードする色(Direct3D使用時のみ)

%inst
p1で画像の明るさを設定します。 p1が0の時が通常(設定パレットのまま)です。
p1がマイナス値になるほど画像は暗くなり、プラス値になるほど明るくなります。p1が-256で完全な黒になり、256で完全な白になります。
^
p2でフェードのスピードを指定することができます。 p2を省略するか、0の場合はes_palfade命令が実行されるとすぐにp1の指定が反映されます。
1〜128の場合は、現在設定されている値からp1で指定した値までなめらかに変化します。指定した数値が大きいほど変化のスピードは速くなります。
^
画面モードが16bit以上の時、 Direct3D使用時にこの命令でフェードイン・アウトができます。この場合はフェード値の正負に関係なくp3で指定した色でフェードを行います。p3は16進数6桁のRGB値で指定します。

%href
es_palset




%index
es_buffer
VRAMイメージ転送
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5
p1=オフスクリーンバッファID(0〜63)
p2=属性スイッチ(0〜2)
p3=透明色(パレットモード時:-1〜255、ハイカラー以上:-1〜$ffffff)
p4=パレットモード時の転送方法(0〜2)
p5=テクスチャ使用フラグ(0〜1)

%inst
^p
属性スイッチ=0 : オフスクリーンバッファをVRAMに取る、
                 失敗した場合は、メインメモリに取る
属性スイッチ=1 : オフスクリーンバッファをメインメモリに取る
属性スイッチ=2 : オフスクリーンバッファをVRAMに取る
^
p4=0 : バッファ転送時にパレットを更新する
p4=1 : パレットを更新しない
p4=2 : DirectX側のパレットに色を合わせて転送する
^p
現在gsel命令で選択されているHSPのバッファ内容を、DirectXのオフスクリーンバッファにすべて転送します。
この時、パレットも読み出されDirectX側のパレットに転送されます。
オフスクリーンバッファに転送できる最大画像サイズは、グラフィックボードによって異なり、主に
^p
1.縦横ともに画面解像度以上のサイズで作成できる
2.横は画面解像度と同サイズまで、縦はそれ以上のサイズで作成できる
3.縦横ともに画面解像度と同サイズまで
^p
の3通りとなっています。
^
p3にはes_copy命令などで透明色として使う色を指定します。
パレットモードでは0〜255までのパレット番号を直接指定するほかに、-1を指定することで完全な黒(RGB=0) でパレット番号が一番若いパレットを自動的に透明色に設定します。
ハイカラー以上では透明色に指定するRGB値を $rrggbbの16進数6桁で設定します。たとえば、$00ff00と指定することでRGB=(0,255,0)の色が透明色になります。 -1を指定した場合、(0,0)のドットの色を読み取り、透明色に設定されます。
^
HSP側のバッファは、DirectXがパレットモードの時は同じくパレットモードで初期化されていないと正常に転送されませんが、ハイカラー以上の場合はパレット・フルカラーモードどちらでも転送されます。
オフスクリーンバッファへの転送が成功した場合には、システム変数statの値は0になります。転送に失敗すると、statの値は1になります。転送に失敗する場合は、転送する画像が大きすぎるか、VRAMの容量が足りないことなどが考えられます。自分の環境では動作していても、別のマシンではエラーになる可能性がありますので、スクリプト側でチェックをするように心がけてください。
^
すでに転送済みのオフスクリーンバッファIDを指定した場合には、一度その内容が削除され、新しいものに上書きされます。
^
p5に0を指定することで、 このバッファをテクスチャとして使用しないようにできます。 そうすると、このバッファに対してes_excopy命令でコピーを行うことができなくなりますが、DirectDrawでの描画を行う場合にパフォーマンスが大きく低下するのを防げます。
^
バッファをテクスチャとして使用する場合、　グラフィックボードによっては256ドットを越える画像や、サイズが2の累乗でない画像を転送できない物があります。なるべく多くの環境で正常に動作することを期待するのであれば、これらを守る必要があります。
%sample
buffer 3,640,480,1
picload "test.bmp"
es_buffer 0




%index
es_exboxf
Direct3Dによる矩形描画
%group
命令概要
%prm
p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13
p1,p2=塗りつぶし左上座標　　　　　 p11,12,13=各頂点色(順に右上、左下、右下)
p3,p4=塗りつぶし右下座標
p5=塗りつぶし色もしくは左上頂点色
p6,p7,p8=回転角
p9=ブレンドファクター
p10=α値

%inst
(p1,p2)-(p3,p4)の矩形範囲をp5の色で塗りつぶします。 p5は16進数6桁でRGB値を指定します。
p3,p4を省略するとgmode命令のサイズで塗りつぶしを行い、　p5を省略するとcolor命令で指定した色を使用します。
^
p11〜13は矩形の各頂点に別々の色を指定するためのパラメータです。 頂点色を変更すると頂点から中央に向かってグラデーションがかかった表示になります。
^
この命令を使用するには、Direct3D描画を有効にする必要があります。



%index
es_bye
システム解放
%group
拡張画面制御命令
%inst
HSPDXFIX.DLLシステムの切り離しをします。
画面モードをウインドゥモードに戻し、確保されていたメモリをすべて解放します。
これは、クリーンアップ関数としてHSP終了時に自動的に呼び出されます。




%index
es_caps
DirectXシステム情報取得
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=情報が代入される変数名(数値型)
p2=情報ID
p3=情報ビット(1〜32)
p4=対象となるレイヤー( 0=HAL / 1=HEL )

%inst
DirectXのドライバがどのような機能を持っているかを調べて、 結果をp1で指定する変数に代入します。
^
p2の情報IDと、p3の情報ビットについての詳細は、hspdx.txtのDDCAPS一覧を参照してください。




%index
es_palset
パレット変更
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=パレット番号(0〜255)
p2=設定するR値(0〜255)
p3=設定するG値(0〜255)
p4=設定するB値(0〜255)

%inst
パレットの色を設定します。p1で指定したパレット番号に、p2,p3,p4がそれぞれR,G,Bとなる色を設定します。
^
es_palset命令による設定変更は、命令実行時すぐには反映されません。
実際に設定が反映されるのは、 次にes_sync命令かes_palfade命令が実行される時になります。
%href
es_sync
es_palfade




%index
es_boxf
矩形塗りつぶし
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5
p1=塗りつぶし左上X座標
p2=塗りつぶし左上Y座標
p3=塗りつぶし右下X座標
p4=塗りつぶし右下Y座標
p5=描画先バッファNo.

%inst
(p1,p2)-(p3,p4)の矩形範囲を現在選択されている色で塗りつぶします。
色の選択は、color命令で行ないます。

%href
color
es_fill




%index
es_fill
矩形塗りつぶし
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=塗りつぶし左上X座標
p2=塗りつぶし左上Y座標
p3=塗りつぶす色のパレット番号(0〜255)
p4=描画先バッファNo.

%inst
es_boxf命令と同じく指定した矩形範囲を塗りつぶすための命令です。
異なる点は、es_fill命令では、塗りつぶす色をパレット番号あるいはRGB値で指定することです。
^
塗りつぶす大きさ(サイズ)は、gmode命令で指定したサイズになります。
(p1,p2)からgmode命令で指定した矩形範囲を指定したパレットで塗りつぶします。es_boxf命令よりも速度の面で有利です。
%href
es_boxf
gmode




%index
es_cls
画面クリア
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=画面クリア時のR値
p2=画面クリア時のG値
p3=画面クリア時のB値

%inst
この命令は、画面全体を指定した色でクリアします。
p1,p2,p3でクリアする色をRGBコードで指定可能です。
パレットモードでは、 指定したRGBに最も近い色を持つパレットでクリアされます。
p1,p2,p3の指定を省略すると、黒でクリアします。




%index
es_put
キャラクタ画面表示
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=putする左上X座標
p2=putする左上Y座標
p3=putするキャラクタNo.

%inst
スプライト用のキャラクタパターンとして登録されているデータを、指定した座標に表示します。
この命令は、スプライトとは関係なく画面にキャラクタを転送する命令です。




%index
es_window
スプライト表示エリア設定
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=スプライト表示基点X座標
p2=スプライト表示基点Y座標
p3=スプライトを表示するX座標
p4=スプライトを表示するY座標

%inst
この命令により、スプライトを画面内の限られた範囲内にのみ表示することが可能です。指定した範囲内がスプライトの表示エリアになります。
^
スプライト以外の描画命令には、この範囲は適用されません。



%index
es_area
スプライト有効エリア設定
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=有効エリアの左上X座標
p2=有効エリアの左上Y座標
p3=有効エリアの右下X座標
p4=有効エリアの右下Y座標

%inst
スプライトの有効エリアを設定します。
スプライト座標が(p1,p2)-(p3,p4)の範囲内にないものは、 自動的に削除されます。
^
スプライトの表示範囲が設定されると(es_window命令)自動的に、 スプライト有効エリアも再設定されます。
%href
es_window




%index
es_find
スプライト検索
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5
p1=スプライトNo.が代入される変数名
p2=検索対象となるtype値
p3=検索を開始するスプライトNo.
p4=検索を終了するスプライトNo.
p5=増分

%inst
登録されているスプライトの中で指定したtype値を持つスプライトNo. を検索します。
p2のtype値には、複数のtypeを同時に指定することができます。
たとえば、type1とtype4を対象にする場合は、1+4で5を指定します。
^
p2の指定を省略するか、 0を指定した場合にはすべてのtype値を持つスプライトが検索の対象になります。
^
検索は、p3で指定されたスプライトNo.からp4で指定されたNo.まで順番に探していきます。
これを省略すると、No.0からすべてのスプライトを検索します。
該当するスプライトが見つかった時点で、p1に結果を代入して終わります。
検索の結果、該当するスプライトがなかった場合には、-1が代入されます。
^
p5は検索するスプライトNo.の増分を指定するもので、 省略するとp3、p4から自動的に設定されますので通常は指定しなくても構いません。



%index
es_size
キャラクタサイズ指定
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=キャラクタのXサイズ
p2=キャラクタのYサイズ
p3=ヒットチェック領域(%)
p4=不透明フラグ( 0=透明 / 1=不透明 )

%inst
スプライトのキャラクタパターンを定義する際の、サイズを指定します。
(p1,p2)がキャラクタのX,Yサイズになります。
^
p3は当たり判定を行なう際のヒットチェック領域が、 何%になるかを指定します。100を指定すると、(p1,p2)で指定したサイズいっぱいにヒットチェックを行ないます。 0を指定すると、そのキャラクタは当たり判定を持たなくなります。
p4は、0ならば透明色を透過し、1ならば不透明のキャラクタパターンになります。
^
キャラクタのX,Yサイズには特に制限はありませんが、 オフスクリーンバッファからはみ出すようなキャラクタパターンの指定は無効になります。es_size命令の設定は、以降のキャラクタ定義でずっと有効になります。
%href
es_pat




%index
es_link
アニメーション設定
%group
拡張画面制御命令
%prm
p1,p2
p1=キャラクタNo.
p2=ループアニメーションするキャラクタNo.

%inst
キャラクタのループアニメーションを設定するための命令です。
p1で指定したキャラクタNo.が、指定されたフレームだけ表示した後に、 p2で指定したキャラクタNo.に戻るように設定を行ないます。
%href
es_pat

%sample
es_size 32,32
es_pat 1,0,0,8
es_pat 2,32,0,8
es_pat 3,64,0,8
es_pat 4,96,0,8
es_link 4,1




%index
es_check
衝突判定取得
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5,p6
p1=結果が代入される変数名
p2=チェックの対象となるスプライトNo.
p3=検索対象となるtype値
p4=判定フラグ(0=回転を考慮しない、1=回転を考慮する)
p5=検索を開始するスプライトNo.
p6=検索を終了するスプライトNo.

%inst
スプライト同士の衝突判定を行ないます。
^
p2で指定されたスプライトNo.と衝突している(重なっている) スプライトを検索して、p1で指定した変数に結果を代入します。
^
p3で衝突判定の対象となるtype値を指定することができます。
p3が省略されるか、 0の場合は、すべてのスプライトとの衝突を判定します。
p3のtype値には、複数のtypeを同時に指定することができます。
たとえば、type1とtype4を対象にする場合は、1+4で5を指定します。
^
衝突判定には、キャラクタパターンを登録した時に指定したヒットチェック領域(%)が使用されます。 実際に画像が重なっていても、ヒットチェック領域の範囲が重ならない限りは衝突とみなされません。
^
結果はp1で指定した変数に代入されます。もし、衝突しているスプライトがなかった場合には-1が、 衝突しているスプライトがあれば、そのスプライトNo.が代入されます。衝突しているスプライトが複数あった場合には、スプライトNo.の小さいものが優先されます。
^
es_effect命令を使ってスプライトを回転表示した場合、 そのままだと回転していない状態での衝突判定を行ってしまいます。そこで、es_check命令実行時にp4に 1を指定することでスプライトの回転を当たり判定に反映させることができるようになります。
^
p5,p6で衝突判定を検索するスプライトの始点・終点を指定できます。 p5がp6より大きなスプライトNo.を指定した場合、通常とは逆に小さいスプライトNo.に向かって検索を行います。
%href
es_type
es_size




%index
es_offset
オフセット座標設定
%group
拡張画面制御命令
%prm
p1,p2
p1=オフセットX値
p2=オフセットY値

%inst
すべてのスプライトの表示を、オフセット値で指定した数だけずらして表示します。
この命令で設定したオフセット値は、 es_draw命令で描画を行なった時に反映されます。
%href
es_draw




%index
es_flag
flag値設定
%group
拡張画面制御命令
%prm
p1,p2
p1=スプライトNo.
p2=flag値

%inst
p1で指定したスプライトのflag値を変更します。
flag値は、スプライトが有効になっている場合は、 $100(256)が自動的に設定されています。通常は特にいじる必要はありません。
^p
flag値=
  0    :  スプライト未登録
  bit 0-6 : 1〜127 カウントダウンタイマー
  bit 7   : カウントダウン消失SWITCH
  bit 8 :  $100 スプライト表示ON
  bit 9 :  $200 スプライト移動ON
  bit10 :  $400 自由落下移動ON
  bit11 :  $800 BGとリンクして移動(未実装)
  bit12 : $1000 ボーダー消去無効ON
  bit13 : $2000 ボーダーXで反転SWITCH
  bit14 : $4000 ボーダーYで反転SWITCH
  bit15 : $8000 カウントダウンタイマー時点滅SWITCH




%index
es_chr
chr値設定
%group
拡張画面制御命令
%prm
p1,p2
p1=スプライトNo.
p2=キャラクタNo.

%inst
p1で指定したスプライトのキャラクタNo.を変更します。




%index
es_type
type値設定
%group
拡張画面制御命令
%prm
p1,p2
p1=スプライトNo.
p2=type値

%inst
p1で指定したスプライトのtype値を変更します。
type値についての詳細は、 hspdx.txtの「type値の設定について」を参照してください。




%index
es_kill
スプライト削除
%group
拡張画面制御命令
%prm
p1
p1=スプライトNo.

%inst
p1で指定したスプライトNo.を削除します。

%href
es_clear




%index
es_clear
複数スプライト削除
%group
拡張画面制御命令
%prm
p1,p2
p1=スプライトNo.
p2=削除される個数

%inst
p1で指定したスプライトNo. 以降のスプライトが削除され未登録になります。
p2で削除されるスプライトの数を指定することができます。
p1とp2の指定を省略した場合は、すべてのスプライトが削除されます。
%href
es_kill




%index
es_pos
スプライト座標設定
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=スプライトNo.
p2=スプライトX座標
p3=スプライトY座標

%inst
スプライトの座標を変更します。
p1でスプライトNo.を指定して、(p2,p3)でX,Y座標を設定します。
^
es_posは、設定済みのスプライトの座標だけを変更する命令です。




%index
es_apos
スプライト移動設定
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=スプライトNo.
p2=1フレームにX方向に移動するドット数
p3=1フレームにY方向に移動するドット数
p4=移動スピード(%)

%inst
スプライトを自動的に移動させるための設定をします。
p1でスプライトNo.、p2,p3でX,Y方向の増分を指定します。
^
p4で移動スピードを%で指定します。p4を省略するか、100を指定した場合は、100%のスピードとなり、1フレームに(p2,p3)で指定した増分だけ移動し続けます。
もし、移動スピードを50(%)にして、増分が(+4,-2)に指定された場合は、実際には、(+2,-1)の増分になります。
増分の単位は、1ドット以下になった場合でも正確に移動を行ないます。 たとえば、1フレームに(1,0)の移動を10%で行なった場合でも、10フレーム後に1ドット移動するように計算されます。
%href
es_adir
es_aim




%index
es_sync
画面更新とウェイト
%group
拡張画面制御命令
%prm
p1,p2
p1=ウェイト時間(ms)
p2=VSync待ちフラグ

%inst
^p
p2=0 : VSyncを待つ
p2=1 : VSyncを待たずにフリップする
p2=2 : VSyncを待たずにBltで裏画面の内容を表画面にコピーする
^p
描画された画面を更新するとともに、 以前のes_sync命令実行時から経過した時間を測定して、システム変数statに返します。
^
p1で、最低でも何msのウェイトを取るかを指定することができます。
p1を省略するか、0を指定した場合は最低ウェイト時間はなくなります。
es_sync命令は、垂直帰線(VSync)を待って画面を更新します。
つまり、最低でも以前es_sync命令が呼ばれてから、1フレーム分の時間はウェイトが取られます。
^
1フレーム分の時間は、 モニタに出力されている映像周波数にもよりますが、多くの場合1/60秒程度になっています。これは、多くのビデオゲームや家庭用ゲーム機が画面更新しているサイクルと同じです。
通常は、es_sync命令のみでウェイトの指定をしなくても、 約1/60秒ごとのウェイトとなります。プログラムの処理が多かったり、画面の書き換えに要する時間が多くなると、 更新が1フレームごとに行なわれなくなる時が出てきて、動きがガタガタとしたぎこちない、いわゆる「処理落ち」の状態になります。
このような時は、最低ウェイト時間を入れて、 画面の更新を2フレームごとにするなどして対処することができます。
^
また、p1にマイナスの値を入れることで前回の実行で取りすぎたウェイトをできるだけ取り戻すようにすることもできます。 FPSが安定しない場合はこちらを使うことで改善されるかもしれません。
^
先述の通り、 es_sync命令はVSyncを待ってウェイトを取りますが、p2に1または2を指定するとVSyncを待たずに画面を更新することができます。これによりリフレッシュレート以上の速度でウェイトを取ることができますが、画面がブレたりちらつきが発生しますので、普段は指定する必要はありません。
なお、ウィンドウモードでは基本的にVSyncは待ちませんので、 ウィンドウモードで動かすときは必ずウェイトを設定して下さい。
^
p2でVSyncを待たない場合の画面の切り替え方法を選択できます。1の場合は単に表示する画面を切り替えるだけなので処理は一瞬で行われますがグラフィックボードによってはサポートしていない場合があり、 2の場合はすべての環境で動作しますが1の時に比べて多少切り替えが遅くなります。
^
es_sync命令を実行した後には、 システム変数statに経過時間が代入されています。これはプログラムの実行にかかっている時間を計測する最も簡単な手段です。この数値がそのままベンチマークとなります。
%sample
*gmain
	stick ky,$1f			; キーの情報を取得
	if ky&$80 : goto *owari	; [ESC]中断チェック
	es_cls					; 画面クリア
	es_draw 				; スプライト描画
	es_sync 				; 画面の更新
	await 0 				; Systemアイドル
	goto *gmain




%index
es_aim
スプライト参照座標設定
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=スプライトNo.
p2=移動先のX座標
p3=移動先のY座標
p4=移動スピード(%)

%inst
es_aim命令は、 es_adir命令と同じく指定した方向にスプライトを移動させるためのものです。 
es_aim命令では、方向の替わりに移動する目標となるX,Y座標を指定します。スプライトは、現在の座標から、目標となる座標への方向を計算し移動を開始します。
^
この命令は、たとえば敵から発射されるミサイルがプレイヤーを狙って移動するようにしたい時などに役立ちます。
^
p4で移動スピードを%で指定します。 p3を省略するか、100(%)を指定した場合には、指定した方向に1フレームにつき1ドットの距離を移動します。
^
この命令を実行するとシステム変数statに移動方向が返ります。
これを利用して自機を狙う3方向弾などを作成することができます。
%href
es_apos
es_adir




%index
es_ang
角度取得
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=基準点のX座標
p2=基準点のY座標
p3=目的点のX座標
p4=目的点のY座標

%inst
システム変数statに(p1,p2)から見た(p3,p4)の方向が返ります。
es_aimを使っても方向を得ることはできますが、この命令を使えばスプライトを使わずに方向を得ることができます。



%index
es_getfps
FPS取得
%group
拡張画面制御命令
%prm
p1
p1=結果が代入される変数名

%inst
1秒間にes_sync命令が実行された回数を、p1で指定した変数に代入します。




%index
es_palcopy
パレット転送
%group
拡張画面制御命令
%inst
現在gsel命令で選択されているHSP側のバッファのパレットをDirectX側のパレットに転送します。



%index
es_get
スプライト情報取得
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=情報が代入される変数名
p2=スプライトNo.
p3=info number

%inst
p1で指定した変数名に、p2のスプライトNo.の情報を代入します。
情報の種類は、p3のinfo numberで指定します。
[]内はヘッダファイルで定義されている定数です。
^p
info number :
	  0 = flag値                                    [ESI_FLAG_LOW]
	  3 = スプライトのX座標                         [ESI_POSX_INT]
	  5 = スプライトのY座標                         [ESI_POSY_INT]
	  7 = 1フレームに移動する距離X                  [ESI_SPDX_INT]
	  9 = 1フレームに移動する距離Y                  [ESI_SPDY_INT]
	 10 = プログレスカウント値(未使用)              [ESI_PRGCOUNT]
	 11 = アニメーションカウント値                [ESI_ANIMECOUNT]
	 12 = キャラクタNo.                                [ESI_CHRNO]
	 13 = type値                                        [ESI_TYPE]
  14,15 = 特殊動作情報(未使用)                   [ESI_EXECPTR_LOW,
                                                 ESI_EXECPTR_HIGH]
	 16 = 自由落下加速度X                             [ESI_ACCELX]
	 17 = 自由落下加速度Y                             [ESI_ACCELY]
	 18 = 弾みやすさ                               [ESI_BOUNCEPOW]
	 19 = バウンドフラグ                          [ESI_BOUNCEFLAG]
	 20 = 点滅フラグ                               [ESI_BLINKFLAG]
  22,23 = 点滅カウント値                      [ESI_BLINKCOUNT_LOW,
                                              ESI_BLINKCOUNT_HIGH]
	 24 = Direct3D使用フラグ                         [ESI_D3DFLAG]
	 25 = 表示Xサイズ                                  [ESI_DISPX]
	 26 = 表示Yサイズ                                  [ESI_DISPY]
	 27 = X軸回転角                                     [ESI_ROTX]
	 28 = Y軸回転角                                     [ESI_ROTY]
	 29 = Z軸回転角                                     [ESI_ROTZ]
	 30 = ブレンドファクター                     [ESI_BLENDFACTOR]
	 31 = α値                                         [ESI_ALPHA]
	 32 = 点滅用スプライト表示フラグ                [ESI_DISPFLAG]
  34,35 = ライト値                                 [ESI_LIGHT_LOW,
                                                   ESI_LIGHT_HIGH]
	 36 = 優先順位                                  [ESI_PRIORITY]



%index
es_ini
システムの初期化
%group
拡張画面制御命令
%prm
p1,p2
p1=スプライトの最大数
p2=キャラクタ定義の最大数
p3=周の精度(64〜4096)

%inst
HSPDXFIX.DLLシステムの初期化を行ないます。
パラメータを省略すると、スプライトは512個まで、 キャラクタ定義数は1024個までを最大としてスプライトを初期化します。es_ini命令は何度でも実行することができるので、スプライトをすべてクリアしたい時などにも使用可能です。
^
p3はes_adir命令などで使用する角度を、一周何度にするかを指定します。 指定できる数値は、64と256の倍数、そして360の倍数です。それ以外の数値を指定した場合は、指定した値未満で条件に合う一番近い数値が設定されます。
^
空きメモリが不足しているなど、何らかの理由でメモリ確保に失敗した時は、statに1が返ります。



%index
es_gravity
落下加速度設定
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=スプライトNo.(-1〜)
p2=X方向の加速度(-32767〜32767)
p3=Y方向の加速度(-32767〜32767)

%inst
es_flag命令で自由落下移動をONにしたときの加速度を設定します。
^
p2、p3は1フレームごとに加算される移動量で、256で1ドットとなります。
p1に-1を指定すると、デフォルト値を設定することができます。　この値は、es_set命令を実行した時に設定される値で、初期値はp2が0、p3が256となっています。



%index
es_exnew
新規スプライト取得
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=新規No.が代入される変数名
p2=検索を開始するスプライトNo.
p3=検索を終了するスプライトNo.
p4=増分

%inst
この命令は、スプライトNo.の中で使われていないNo.を検索します。
p2〜p3で指定したNo.の間で空きのあるNo.を、p1で指定した変数に代入します。
空きがない場合は、-1が代入されます。
^
p4には検索するスプライトNo.の増分を指定します。 省略するとp2、p3から自動的に設定するため、通常は明示する必要はありません。
^
※es_new命令と同様の処理を行いたい場合は、p3に-1を指定してください。




%index
es_new
新規スプライト取得
%group
拡張画面制御命令
%prm
p1,p2
p1=新規No.が代入される変数名
p2=検索を開始するスプライトNo.

%inst
この命令は、スプライトNo.の中で使われていないNo.を検索します。
p2で指定したNo.以降で空きのあるNo.を、p1で指定した変数に代入します。空きがない場合は、-1が代入されます。
^
この命令は、以前のバージョンとの互換性のために残された命令です。
以前のバージョンを使用して作成されたスクリプトを動かす時以外はes_exnew命令を使用するようにしてください。



%index
es_timer
タイマー取得
%group
拡張画面制御命令
%prm
p1,p2
p1=結果が代入される変数名
p2=タイマーの取得方法

%inst
Windowsを起動してからの経過時間をミリ秒単位で、 p1に指定した変数に代入します。精度は環境に依存します。
^
p2でタイマーの取得方法を選択できます。 0がtimeGetTime、1がGetTickCountでタイマーを取得します。一般に前者の方が精度がよく、後者の方が処理が軽いとされています。



%index
es_cos
三角関数
%group
拡張画面制御命令
%prm
p1,p2
p1=結果が代入される変数名
p2=角度(0〜±n)
※n=es_ini第3パラメータで設定した精度

%inst
変数p1に、角度p2のコサインを代入します。
p2の範囲はes_iniで設定した値までです。
得られる値は、小数部10ビットの固定小数です。つまり、本来得られるべき値を1024倍した整数が返ってきます。
^
※角度は正の数であればある程度は範囲をオーバーしても正確に動作するようにしてありますが、負の数についてはそれを保証していませんので注意してください。



%index
es_sin
三角関数
%group
拡張画面制御命令
%prm
p1,p2
p1=結果が代入される変数名
p2=角度(0〜±n)
※n=es_ini第3パラメータで設定した精度

%inst
変数p1に、角度p2のサインを代入します。
p2の範囲はes_iniで設定した値までです。
得られる値は、小数部10ビットの固定小数です。つまり、本来得られるべき値を1024倍した整数が返ってきます。
^
※角度は正の数であればある程度は範囲をオーバーしても正確に動作するようにしてありますが、負の数についてはそれを保証していませんので注意してください。




%index
es_getbuf
VRAMイメージ読み出し
%group
拡張画面制御命令
%prm
p1
p1=DirectXバッファID(-2〜)

%inst
DirectXが管理する画像バッファの内容を、HSPのウインドゥに読み出しコピーします。
読み出しは、現在gsel命令で選択されているHSPのウインドゥIDに対して行なわれます。
p1で、DirectXのバッファIDを指定します。これは、es_buffer命令などで使用するオフスクリーンバッファIDの他に以下の値が使用できます。
^p
DirectXバッファID = -1 : 現在表示中の画面イメージ
DirectXバッファID = -2 : 現在描画中の画面イメージ
^p
DirectXの使用中は、通常のHSPウインドゥ上に対しての描画処理を行なうことができないので、用途は限られてしまいます。
es_getbuf命令は、主にバッファの内容確認のためや、 実行中の画面をキャプチャして保存したい場合など、テスト的な用途に使用できます。
^
HSPウィンドウ側のバッファのモードやサイズに制限はありませんが、 転送元よりバッファのサイズが小さい場合は右下が切れて転送されます。
%href
es_buffer

%sample
es_getbuf -1
bmpsave "capture.bmp"




%index
es_buffer_np
VRAMイメージ転送(パレット読み込みなし)
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=オフスクリーンバッファID
p2=属性スイッチ(0〜2)
p3=透明色(パレットモード時:-1〜255、ハイカラー以上:-1〜$ffffff)

%inst
^p
属性スイッチ=0 : オフスクリーンバッファをVRAMに取る、
                 失敗した場合は、メインメモリに取る
属性スイッチ=1 : オフスクリーンバッファをメインメモリに取る
属性スイッチ=2 : オフスクリーンバッファをVRAMに取る
^p
現在gsel命令で選択されているHSPのバッファ内容を、DirectXのオフスクリーンバッファにすべて転送します。
^
オフスクリーンバッファに転送する際にパレットを転送しない点以外は、全てes_buffer命令と同じです。
^
この命令を使うことで、パレットや既存のバッファに影響を与えることなくオフスクリーンバッファを作成することができますが、パレットがHSP側とDirectX側で異なる場合は正しい色で表示されませんので注意してください。
^
なお、この命令は旧バージョンの互換性を保つために用意されています。現在はes_buffer命令で同様の動作を行えますのでそちらを使用してください。

%href
es_buffer
es_buffer_pm

%sample
buffer 3,640,480,1
picload "test.bmp"
es_buffer 0




%index
es_buffer_pm
VRAMイメージ転送(近似色変換あり)
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=オフスクリーンバッファID
p2=属性スイッチ(0〜2)
p3=透明色(パレットモード時:-1〜255、ハイカラー以上:-1〜$ffffff)

%inst
^p
属性スイッチ=0 : オフスクリーンバッファをVRAMに取る、
                 失敗した場合は、メインメモリに取る
属性スイッチ=1 : オフスクリーンバッファをメインメモリに取る
属性スイッチ=2 : オフスクリーンバッファをVRAMに取る
^p
現在gsel命令で選択されているHSPのバッファ内容を、DirectXのオフスクリーンバッファにすべて転送します。
^
オフスクリーンバッファに転送する際にパレットを転送しない点以外は、全てes_buffer命令と同じです。
^
es_buffer_np命令ではパレットがHSP側とDirectX側で一緒でなければなりませんが、この命令では自動的に近い色を探し出して変換するため、パレットが違っていてもある程度色化けを防ぐことができます(HSP側のバッファの画像を変換する
わけではありません)。
^
なお、ディザをかけたり新しく色を作成することはありませんので、なるべくパレットはいっぱいまで用意しておいてください。
^
なお、この命令は旧バージョンの互換性を保つために用意されています。現在はes_buffer命令で同様の動作を行えますのでそちらを使用してください。

%href
es_buffer
es_buffer_np

%sample
buffer 3,640,480,1
picload "test.bmp"
es_buffer_pm 0




%index
es_fmesbuf
バッファへのフォント指定文字列表示
%group
拡張画面制御命令
%prm
"str",p1
"str"=表示文字列
p1=オフスクリーンバッファID

%inst
p1で指定したIDのバッファのカレントポジション(pos命令で指定されたX,Y座標)へ、指定した文字列を表示します。
文字の色は、現在選択されている色(color命令で指定)になり、フォントはfont命令で選択されているものが使用されます。
^
描画先のIDが指定できること以外は全て、es_fmesと同じです。
^
この命令は、旧バージョンとの互換性を保つために用意されているものです。

%href
font
es_mes
es_mesbuf
es_fmesbuf




%index
es_mesbuf
バッファへの文字列表示
%group
拡張画面制御命令
%prm
"str",p1
"str"=表示文字列
p1=オフスクリーンバッファID

%inst
p1で指定したIDのバッファのカレントポジション(pos命令で指定されたX,Y座標)へ、指定した文字列を表示します。
es_fmes命令と似ていますが、文字の色やフォントが選べないかわりに、こちらの方が高速に処理されます。
文字の色は、常に白(RGB=255)となり、標準フォントが使用されます。
^
描画先のIDが指定できること以外は全て、es_fmes並びにes_mesと同じです。
^
この命令は、旧バージョンとの互換性を保つために用意されている物です。

%href
es_mes
es_fmes
es_fmesbuf




%index
es_mes
文字列表示
%group
拡張画面制御命令
%prm
"str",p1
"str"=表示文字列
p1=描画を行うバッファNo.(デフォルト=-2)

%inst
カレントポジション(pos命令で指定されたX,Y座標)から、指定した文字列を表示します。
es_fmes命令と似ていますが、 文字の色やフォントが選べないかわりに、こちらの方が高速に処理されます。
文字の色は、常に白(RGB=255)となり、標準フォントが使用されます。
^
p1には、描画を行うバッファNo.を指定します。 表示される画面イメージに対して描画を行う場合には省略して構いません。
%href
es_fmes




%index
es_fmes
フォント指定文字列表示
%group
拡張画面制御命令
%prm
"str",p1
"str"=表示文字列
p1=描画を行うバッファNo.(デフォルト=-2)

%inst
カレントポジション(pos命令で指定されたX,Y座標)から、指定した文字列を表示します。 
文字の色は、現在選択されている色(color命令で指定)になり、フォントはfont命令で選択されているものが使用されます。
^
p1には、描画を行うバッファNo.を指定します。 表示される画面イメージに対して描画を行う場合には省略して構いません。
%href
font
es_mes




%index
es_adir
スプライト移動方向設定
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=スプライトNo.
p2=移動する方向(0〜)
p3=移動スピード(%)

%inst
スプライトを自動的に移動させるための設定をします。
^
p1でスプライトNo.、p2で方向を指定します。 方向は、es_iniで指定した数値までで指定します。0が真下となり、反時計回りに増加していきます。
^
p3で移動スピードを%で指定します。 p3を省略するか、100(%)を指定した場合には、指定した方向に1フレームにつき1ドットの距離を移動します。
^
p4で移動スピードを%で指定します。p4を省略するか、100を指定した場合は、100%のスピードとなり、1フレームに1ドットの速度で移動し続けます。



%index
es_copy
画像コピー
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5
p1=オフスクリーンバッファID
p2=コピー元X座標
p3=コピー元Y座標
p4=コピーするXサイズ
p5=コピーするYサイズ
%inst
es_copy命令では、pos命令で指定した座標にgmodeで指定したモードで、 p1で指定したIDの(p2,p3)の座標から(p4,p5)のサイズの画像がコピーされます。
^
HSPのcopy命令とは若干違いがありますが、 ほぼ同じ記述でコピーが可能です。
^
gmode命令により、 コピーの際に透明色の処理をするかどうかを指定しておく必要があります。
コピーモードが0の場合は、コピー元の画像が完全にコピーされます。
コピーモードが1か2の場合は、コピー元の画像で透明色に指定された色はコピーされません。図形のまわりだけを切り抜いたようにコピーしてくる場合に有効です。
^
p4,p5を省略した場合は、gmodeで指定したサイズでコピーを行います。

%href
gmode
es_zoom




%index
es_zoom
拡大縮小画像コピー
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5,p6,p7
p1=オフスクリーンバッファID
p2,p3=コピー元座標
p4,p5=コピーするサイズ
p6,p7=コピー先サイズ

%inst
es_zoom命令では、pos命令で指定した座標にgmodeで指定したモードで、 p1で指定したIDの(p2,p3)の座標から(p4,p5)のサイズの画像がコピーされます。
ただし、コピー先のサイズは(p6,p7)で指定したサイズが使われます。
これにより、コピー元とは違ったサイズでコピー先に転送することが可能です。
^
(p4,p5)を省略するとgmodeで指定したサイズが、(p6,p7)を省略するとobjsizeで指定したサイズがそれぞれのパラメータの代わりに使用されます。
^
この機能は、ビデオカードのハードウェアが変倍コピーをサポートしている時は高速に動作しますが、そうでない場合はソフトウェアで処理されるため劇的に速度が低下するので注意してください。
%href
gmode
objsize
es_copy






%index
es_gdi
GDI描画モード設定
%group
拡張画面制御命令
%prm
p1
p1=描画モード設定(0〜1)

%inst
^p
描画モード=0 : GDI描画を終了する
描画モード=1 : GDI描画を開始する
^p
この命令を実行して、　GDI描画を開始した時点でHSPの標準描画命令を使ってDirectXのスクリーンに点や線などを描画できるようになります。
GDI描画モード中はDirectXによる描画命令は使えなくなります。
^
描画モードの切り替えに失敗した時は、システム変数statに1が返ります。
^
この命令は、 使い方を誤るとWindowsの再起動が必要になる危険性があります。
使用する際は、以下の点に注意してください。
^
・この命令を実行する前に一度だけ「redraw 0」を実行して、画面の更新が行われないようにする
・GDI描画モードを多重に開始、終了しないようにする
・GDI描画が終了したら必ず「es_gdi 0」を実行して描画モードを元に戻す
・GDI描画中にフォーカスの移動などが発生すると、 それ以降正常に動作しなくなる恐れがあるため、GDI描画モードはできるだけ短い時間で済ませる






%index
es_d3dopt
Direct3D描画オプション設定
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=テクスチャアドレッシング設定(0〜2、デフォルト=0)
p2=テクスチャ補間設定(0〜1、デフォルト=0)
p3=パースペクティブ補正設定(0〜1、デフォルト=0)
%inst
^p
p1=0 : クランプアドレッシングに設定する
p1=1 : ラップアドレッシングに設定する
p1=2 : ミラーアドレッシングに設定する
^
p2=0 : テクスチャの補間を行わない
p2=1 : テクスチャの補間を行う
^
p3=0 : パースペクティブ補正を無効にする
p3=1 : パースペクティブ補正を有効にする
^p
Direct3Dで描画を行う際の描画処理を設定します。
^
p1でテクスチャアドレッシングの設定を行います。テクスチャアドレッシングとは、テクスチャ座標がバッファからはみ出る場合にはみ出した部分をどのように表示するかを決めるもので、それぞれ次のようになっています。
^
クランプアドレッシング：バッファの端をのばすように表示する。
ラップアドレッシング　：バッファの(0,0)に戻り、 繰り返し表示する。
ミラーアドレッシング　：バッファの端に到達したところで折り返す。
^
この機能を使う場合、 バッファサイズが2の累乗になっていないと強制的にクランプアドレッシングで表示されてしまいます。グラフィックボードによってはバッファサイズを補正するため、その点に注意しないと環境依存の問題が発生しますので注意してください。
^
p2はテクスチャの補間を行うかどうかを設定します。 このパラメータを1にすると画像がぼやけますが、拡大・縮小を行う際にドットの粗が目立たなくなります。
^
p3でパースペクティブ補正を設定します。これは、ポリゴンが傾いたときに奥行きが出るように表示させるためのものです。ただし、当たり判定はこれに対応していないため、スプライトに対してパースペクティブ補正を有効にすると見た目と若干判定が異なって見えます。


%index
es_move
スプライト移動
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=移動を行うフレーム数(1〜)
p2=移動開始スプライトNo.
p3=移動するスプライトの個数
p4=アニメーション制御フラグ(0〜1)
%inst
^p
p4=0 : アニメーションを行う
p4=1 : アニメーションを行わない
^p
スプライトの移動を行います。 es_draw命令からスプライトの描画を抜いたもので、主に処理落ち時のフレームスキップに用います。
偶数フレームのスキップが行われた際に点滅が止まるのを防ぐため、スプライトの点滅はパラメータの設定に関係なく es_draw命令で行われます。
%href
es_draw


%index
es_draw
スプライト描画
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=描画開始スプライトNo.
p2=描画するスプライトの個数
p3=スプライト固定フラグ(0〜)
p4=描画順序(0〜1)

%inst
^p
p3=0 : 通常の動作を行う
bit1 : スプライトを移動させない
bit2 : アニメーションを行わない
^
p4=0 : スプライトNo.順に描画する
p4=1 : 優先順位順に描画する
^p
登録されているスプライトを画面に描画します。
通常は、 p1,p2のパラメータを省略して使用すれば、すべてのスプライトを描画することが可能です。
^
登録されているスプライトの一部だけを描画したい場合は、p1に開始スプライトNo.、p2に描画する個数を指定してください。
^
p4に1を指定すると、es_set命令やes_setpri命令で指定した優先順位の順にスプライトを描画します。ただし優先順位のソートには多少時間がかかるため、必要が無ければ従来通りスプライトNo. 順で描画をすることをおすすめします。
^
この命令を実行すると、描画されたスプライトは移動を行いますが、 p3に1を指定すること描画のみを行うようにすることができます。 また、2を指定することでアニメーションを停止させることができます。
%sample
*gmain
	stick ky,$1f			; キーの情報を取得
	if ky&$80 : goto *owari	; [ESC]中断チェック
	es_cls					; 画面クリア
	es_draw 				; スプライト描画
	es_sync 				; 画面の更新
	await 0 				; Systemアイドル
	goto *gmain




%index
es_bound
弾みやすさ設定
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=スプライトNo.(-1〜)
p2=弾みやすさ(0〜256)
p3=フラグ(1=X方向 2=Y方向 3=両方 デフォルト=3)

%inst
es_flag命令で自由落下移動をONにしたときに、 画面下部(または上部)で跳ね返る際の弾みやすさを設定します。この値が大きいほど跳ね返り時に勢いが失われなくなります。
^
p3は画面の上下端、あるいは左右端に当たった際に跳ね返りを行うか行わないかを設定できます。ただし、このフラグは自由落下が発生する方向にのみ適用されます。
^
p1に-1を指定すると、デフォルト値を設定することができます。　この値は、es_set命令を実行した時に設定される値で、初期値は128となっています。




%index
es_effect2
スプライト特殊効果設定(マクロ)
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5
p1=スプライトNo.
p2=表示サイズを指す配列変数
p3=回転角を指す配列変数
p4=半透明パラメータを指す配列変数
p5=ライト色

%inst
es_effect 命令のパラメータをまとめてスクリプトを見やすくするためのマクロです。
^
パラメータの代入の仕方は次のようになっています。
^p
・p1、p5は数値変数を指定しても、直接数値を代入しても可
・p2には要素0にXサイズ、要素1にYサイズの値が入った配列変数の変数名を指定する
・p3には要素0から順にX方向、Y方向、Z方向の回転角が入った配列変数の変数名を指定する
・p4には要素0にブレンドファクター、要素1にα値が入った配列変数の変数名を指定する
・全パラメータは省略不可
^p
この命令を実行するには、 es_screen命令でDirect3Dを使用するように指定する必要があります。

%href
es_effect




%index
es_excopy2
Direct3D描画による画像コピー(マクロ)
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5,p6,p7
p1=オフスクリーンバッファID(0〜63)
p2=コピー元座標を指す配列変数
p3=コピーするサイズを指す配列変数
p4=表示するサイズを指す配列変数
p5=回転角を指す配列変数
p6=半透明パラメータを指す配列変数
p7=ライト色

%inst
es_excopy命令のパラメータをまとめてスクリプトを見やすくするためのマクロです。
^
パラメータの代入の仕方は次のようになっています。
^p
・p1、p7は数値変数を指定しても、直接数値を代入しても可
・p2〜p4には要素0にサイズまたは座標のX方向、要素1にY方向の値が入った配列変数の変数名を指定する
・p5には要素0から順にX方向、Y方向、Z方向の回転角が入った配列変数の変数名を指定する
・p6には要素0にブレンドファクター、要素1にα値が入った配列変数の変数名を指定する
・全パラメータは省略不可
^
この命令を実行するには、 es_screen命令でDirect3Dを使用するように指定する必要があります。

%href
es_excopy

%sample
buf=2
src=0,0
size=640,480
disp=320,240
rot=rotx,roty,rotz
blend=ESB_ALPHA,128
light=$ffffff
es_excopy2 buf,src,size,disp,rot,blend,light




%index
es_screen
画面モードの変更
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5,p6
p1=DirectX使用時の解像度X
p2=DirectX使用時の解像度Y
p3=DirectX使用時のカラーモード(bpp)
p4=パレット変換モード(0=236色/1=254色/2=256色)
p5=画面モード(0=フルスクリーン/1or2=ウィンドウモード)
p6=Direct3D使用フラグ(0=使わない/1=使う)

%inst
画面の解像度を変更し、DirectXが使用可能な状態にします。
(p1,p2)で解像度を指定します。
^
p3はカラーモードを指定します。 パレットモードを使用する場合は8、ハイカラー以上を使用する場合は16,24,32のいずれかを指定します。
ただし、 グラフィックボードによっては24または32bitの画面モードをサポートしていないものもありますが、その場合は自動的にサポートしている方のモードで初期化を行います。
^
p4のパレット変換モードは、画面で使用するパレットの数を設定します。
通常は0を指定して下さい。 パレットの数を254または、256にしたい場合に値を変更します。 ただし、236よりも多いパレット数を指定すると、フルスクリーンモード以外では動作しなくなります。 また、254よりも多いパレットを指定できないグラフィックボードが存在するので、なるべくパレット変換モードは、0または1で使用してください。
^
また、パレット変換モード0の時に使用するパレットは0〜235までです。HSPの通常ウィンドウとは異なりますので注意してください。
p5=1または2の時は、DirectXをウィンドウモードで動かします。
ウィンドウモードで動かす際の注意点などは、hspdx.txtの「ウィンドウモードについて」の項を参照してください。
^
p6は半透明などの特殊描画を行うためにDirect3Dを使用するかどうかのフラグです。このパラメータを1に設定するとDirect3Dの初期化を行い、es_excopy命令を実行できるようになります。




%index
es_bfcalc
ブレンドファクター算出(マクロ)
%group
拡張画面制御命令
%prm
(p1,p2)
p1=SRC側のブレンドファクター
p2=DEST側のブレンドファクター
※ctypeマクロのため、必ず括弧でくくること

%inst
それぞれに指定するブレンドファクターをプラグインに渡す形に変換するためのマクロで、主にes_excopy命令で使うためのものです。指定する値は0〜10もしくはヘッダファイルで定義されている、以下の定数名を使用します。
#define ESB_ZERO 0
#define ESB_ONE 1
#define ESB_SRCCOLOR 2
#define ESB_INVSRCCOLOR 3
#define ESB_SRCALPHA 4
#define ESB_INVSRCALPHA 5
#define ESB_DESTALPHA 6
#define ESB_INVDESTALPHA 7
#define ESB_DESTCOLOR 8
#define ESB_INVDESTCOLOR 9
#define ESB_SRCALPHASAT 10

%href
es_excopy
es_effect




%index
es_rgbcalc
RGB値算出(マクロ)
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=R値(0〜255)
p2=G値(0〜255)
p3=B値(0〜255)
※ctypeマクロのため、必ず括弧でくくること

%inst
RGB値を一つの値にまとめるためのマクロです。 
パラメータのチェックは行わないため、範囲外の値を代入するとおかしな値になりますので注意してください。




%index
es_clip
クリッピング範囲設定
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=左上のX座標
p2=左上のY座標
p3=右下のX座標
p4=右下のY座標

%inst
描画命令のクリッピング範囲を設定します。
クリッピング範囲が反映される命令は、es_copy、es_zoom、es_excopyです。 なお、画面外に範囲を指定することはできません。




%index
es_excopy
Direct3D描画による画像コピー
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13
p1=オフスクリーンバッファID(0〜63)  p12=α値(0〜256)
p2,p3=コピー元座標                  p13=ライト色(0〜$ffffff)
p4,p5=コピーするサイズ
p6,p7=表示するサイズ
p8,p9,p10=回転角(0〜4095)
p11=ブレンドファクター（0〜120)
%inst
オフスクリーンバッファIDp1の (p2,p3)から(p4,p5)のサイズの画像を(p6,p7)の大きさで、pos命令で指定した座標にコピーします。 (p4,p5)と(p6,p7)に異なる値を指定することで、拡大縮小コピーを行えます。
es_copy命令と同様に、gmodeで透明色を透過することができます。
^
(p4,p5)か(p6,p7)のいずれかに負の数を指定すると、反転表示が可能になります。このとき、
^
・(p4,p5)で反転を指定した場合、(p2,p3)はコピー元の左(上)座標ではなく、右(下)座標を指定することになる
・(p6,p7)で反転を指定した場合、pos命令で指定した座標から左(上)に表示される
^
と言うように、パラメータの指定方法などが通常とは異なりますので注意してください。
^
p10で画像の回転を行います。 回転角は一周4096度で固定ですので注意してください。
^
p11とp12で半透明処理のためのブレンドファクターとα値を設定します。
詳しくはhspdx.txtの命令リファレンスを参照してください。
^
p13のライト色とは、画像を表示するためのライトの色のことで、 この値を変更することで画像内の特定の色成分を押さえて表示することができます (強調することはできません)。
パラメータは16進数6桁のRGB値で指定しますが、後述のes_rgbcalcマクロを利用することで RGB値を個別に指定することもできます。
^
この命令を実行するには、 es_screen命令でDirect3Dを使用するように指定する必要があります。






%index
es_effect
スプライト特殊効果設定
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5,p6,p7,p8,p9
p1=スプライトNo.
p2,p3=表示サイズ
p4,p5,p6=回転角
p7=ブレンドファクター(-1で合成OFF)
p8=α値(0〜256)
p9=ライト色(0〜$ffffff)
%inst
スプライトをDirect3D描画する際のエフェクトを設定します。省略されたパラメータは前回実行時の設定を保持します。
回転角の有効範囲はes_excopy命令と違って es_ini命令での設定に依存しますので注意してください。
^
この命令を実行するには、 es_screen命令でDirect3Dを使用するように指定する必要があります。
^
なお、現バージョンでは回転を行っても当たり判定が変わりませんので注意してください。




%index
es_pat
キャラクタ画像定義
%group
拡張画面制御命令
%prm
p1,p2,p3,p4
p1=キャラクタNo.
p2=キャラクタパターンの左上X座標
p3=キャラクタパターンの左上Y座標
p4=表示フレーム数(0)
%inst
スプライトのキャラクタパターンを定義します。
^
p1で指定したキャラクタNo.に、 (p2,p3)の座標からes_sizeで設定した大きさのキャラクタが登録されます。
ここで対象となる画像は、直前にes_buffer命令でVRAMに転送された画像データとなります。この画像の中の一部を切り出し
てきてキャラクタパターンとして登録しておきます。
es_pat命令1回で、指定したキャラクタNo.にキャラクタパターンが登録されます。たくさんのキャラクタパターンが必要な場合は、そのぶん登録をしておく必要があります。
^
p4のパラメータは、キャラクタアニメーションをするための設定です。
0ならば、アニメーションなし。1以上ならば、指定したフレーム数だけそのキャラクタを表示した後、 次のキャラクタ(キャラクタNo.+1)を表示するように設定されます。
%href
es_link


%index
es_setp
スプライトパラメータ設定
%group
拡張画面制御命令
%prm
p1,p2,p3
p1=スプライトNo.
p2=info number
p3=変更する値(-32768〜32767)
%inst
スプライトの情報を直接変更します。p2についてはes_getの説明を参照してください。
%href
es_get


%index
es_expat
キャラクタ画像定義(マクロ)
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5
p1=キャラクタNo.
p2=バッファNo.
p3=キャラクタパターンの左上X座標
p4=キャラクタパターンの左上Y座標
p5=表示フレーム数
%inst
スプライトのキャラクタパターンを定義します。es_pat命令に、登録する画像のバッファNo.を指定できるようにしたものです。
^
マクロのため、es_pat命令と違いパラメータを省略できませんので注意してください。
%href
es_pat


%index
es_cursor
マウスカーソル表示
%group
拡張画面制御命令
%prm
p1
p1=表示フラグ(0=表示しない/1=表示する)
%inst
マウスカーソルの表示を制御します。
通常、フルスクリーンモードではマウスカーソルは表示されませんが、この命令を実行することで必要に応じてカーソルの表示／非表示を切り替えることができます。
また、ウィンドウモード時でもこの命令を実行することにより、マウスカーソルがウィンドウ内に入ったときに限り表示を抑制することができるようになります。
^
なお、この命令はハードウェアがフルスクリーンでのウィンドウレンダリングに対応していない場合はうまく動かない可能性があります。


%index
es_dialog
ダイアログ表示(マクロ)
%group
拡張画面制御命令
%prm
"message",p1,"option"
p1=ダイアログのタイプ設定
%inst
フルスクリーンモードでダイアログを表示するためのマクロです。
このマクロ実行後はマウスカーソルを消去しますので、ウィンドウモードで実行しているときなどにはes_cursor命令で再度表示する必要があります。
パラメータの詳細についてはdialog標準命令を参照してください。
^
このマクロでは、 ダイアログ表示後にes_cursor命令を実行している関係で、dialog命令が返したstatを得ることができませんが、代わりにesr_statという命令にstat値を待避させるようにしてありますので、ダイアログ上での操作によって処理を振り分けたりしたい場合はこの値を参照して下さい。その他のシステム変数は保持されますので、直接参照できます。
^
なお、この命令はハードウェアがフルスクリーンでのウィンドウレンダリングに対応していない場合はうまく動かない可能性があります。
%href
es_cursor
es_showdia


%index
es_exput
Direct3Dによるキャラクタ画面表示
%group
拡張画面制御命令
%prm
p1,p2,p3,...,p11
p1,p2   =表示する左上X,Y座標
p3      =表示するキャラクタNo.
p4,p5   =表示サイズ
p6,p7,p8=回転角
p9      =ブレンドファクター
p10     =α値
p11     =ライト値
%inst
スプライト用キャラクタパターンとして登録されている画像を表示します。
es_put命令のDirect3D対応版です。
^
この命令を実行するには、 es_screen命令でDirect3Dを使用するように指定する必要があります。


%index
es_exput2
D3Dによるキャラクタ画面表示(マクロ)
%group
拡張画面制御命令
%prm
p1,p2,p3,p4,p5,p6
p1=表示座標を指す配列変数
p2=表示するキャラクタNo.
p3=表示サイズを指す配列変数
p4=回転角を指す配列変数
p5=半透明パラメータを指す配列変数
p6=ライト色
%inst
es_exput命令のパラメータをまとめたマクロです。
^
パラメータの代入の仕方は次のようになっています。
^p
・p2、p6は数値変数を指定しても、直接数値を代入しても可
・p1、p3には要素0にXサイズ、要素1にYサイズの値が入った配列変数の変数名を指定する
・p4には要素0から順にX方向、Y方向、Z方向の回転角が入った配列変数の変数名を指定する
・p5には要素0にブレンドファクター、要素1にα値が入った配列変数の変数名を指定する
・全パラメータは省略不可
^p
この命令を実行するには、 es_screen命令でDirect3Dを使用するように指定する必要があります。


%index
es_setpri
スプライト優先順位設定
%group
拡張画面制御命令
%prm
p1,p2
p1=スプライトNo.
p2=優先順位(-32768〜32767)
%inst
スプライトの優先順位を変更します。
%href
es_set
es_draw


%index
es_showdia
GDIウィンドウ表示
%group
拡張画面制御命令
%inst
フルスクリーンモードでダイアログを表示するための準備をします。
^
この命令を実行すると、 GDIがウィンドウを描画できるサーフェスが表示面にくるようにフリッピングを行い、以後dialog標準命令が画面に表示できるようになります。そのため、実行するタイミングによっては描画途中の画面が表示されてしまいますので注意してください。
^
今後のバージョンアップではこの命令を使って HSPの標準ウィンドウを表示できるようにする予定ですが、現在のところはそれをサポートしていないためこの命令を単体で実行する必要性はありません。


%index
es_release
スクリーンバッファ削除
%group
拡張画面制御命令
%prm
p1
p1=オフスクリーンバッファID
%inst
p1で指定されたオフスクリーンバッファを削除します。


%index
es_bufcheck
バッファロストチェック(モジュール)
%group
拡張画面制御命令
%inst
フルスクリーンモードで動作中にAlt+Tabが押されるなどして、 別ウィンドウにフォーカスが移るとバッファが消失することがあります。
^
このモジュールは、ウィンドウのフォーカスとバッファのロストを監視し、フォーカスが別ウィンドウに移ったときは実行を停止し、バッファのロストが生じたときはそのバッファの復元を行った後statに1を返します。
^
復元されたバッファは再び描画命令で使用することができるようになりますが、バッファの内容が残っているとは限りませんので、バッファのロストが検出されたときは一度すべてのバッファに対して画像を転送し直すことをおすすめします。
