; ; 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の情報ビットについての詳細は、HSPDXFIX.DLLリファレンス マニュアルの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値についての詳細は、 HSPDXFIX.DLL リファレンスマニュアルの「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)   p6=半透明パラメータを指す配列変数 p2=コピー元座標を指す配列変数 p7=ライト色 p3=コピーするサイズを指す配列変数 p4=表示するサイズを指す配列変数 p5=回転角を指す配列変数 %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をウィンドウモードで動かします。 ウィンドウモードで動かす際の注意点などは、HSPDXFIX.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で半透明処理のためのブレンドファクターとα値を設定します。 詳しくはHSPDXFIX.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を返します。 ^ 復元されたバッファは再び描画命令で使用することができるようになりますが、 バッファの内容が残っているとは限りませんので、バッファのロストが検出さ れたときは一度すべてのバッファに対して画像を転送し直すことをおすすめし ます。