HSPの「実行ファイル自動作成」機能

Windowsプログラミング「HSP」(公式サイト「HSPTV!」)で作成したスクリプト(*.hsp)を、誰もが利用できるよう実行ファイル(*.exe)として作成出力する。(HSPはWindows上で動作するツールやゲームを開発できるフリーソフト)

HSP3(HSP 3.x)では従来よりも手軽に利用できる「実行ファイル自動作成」機能の利用が推奨されとります。HSPスクリプトエディタで[HSP]メニュー→[実行ファイル自動作成]をクリックするだけです。

プリプロセッサ命令 #packopt

さてさて、HSPの実行ファイル自動作成で、スクリーンセーバーの形式(*.scr)を用意したり、出力ファイル名を指定したりするには、プリプロセッサ命令「#packopt」をスクリプト上の先頭あたりで指定しておきましょう。

#packopt キーワード1 数値or文字
#packopt キーワード2 数値or文字
	:
	:
キーワード デフォルト値 説明
name "hsptmp" 出力するファイル名。
runtime "hsprt" HSP拡張ランタイムの指定。
type 0 実行ファイルのタイプ(拡張子)。
 0 ・・・ 通常の実行ファイル (*.exe)
 1 ・・・ フルスクリーン実行ファイル (*.exe)
 2 ・・・ スクリーンセーバーファイル (*scr)
xsize 640 実行ファイル起動時のX方向ウィンドウサイズ
ysize 480 実行ファイル起動時のY方向ウィンドウサイズ
hide 0 実行ファイル起動時のウィンドウ表示
 0 ・・・ 表示
 1 ・・・ 非表示 (gsel命令で表示化)

● キーワード「name」

実行ファイル自動作成を行った時に出力する実行ファイル名です。指定するのは文字なので前後を「"」でくくります。拡張子はいりません。
 デフォルトでは「"hsptmp"」になっているので、キーワード「type」が0なら「hsptmp.exe」、1なら「hsptmp.scr」という名前で作成されます。

//	「hogehoge.exe」というファイル名で出力

#packopt name "hogehoge"
//	「hogehoge.scr」というファイル名で出力

#packopt name "hogehoge"
#packopt type 2

● キーワード「runtime」

HSP拡張ランタイムを指定します。
 デフォルトでは「"hsprt"」になっていて、通常はこのキーワード指定はいりません。拡張ランタイムは、 HSP本体の「runtime」フォルダに用意されてる拡張子が「*.hrt」のものです。

その中の「hsp3c.hrt」は、コンパクト版拡張ランタイムです。このランタイムを利用すると、通常よりも若干 小さなサイズ(−20KBほど)の実行ファイルが生成されます。「プログラミングマニュアル1・基本仕様ガイド (hspprog.htm)」の「1.プログラミングガイド→拡張ランタイム」にあるように、このランタイムは『COM関連機能、 及びgrect、grotate、gsquare命令が削除』されてます。

#packopt runtime "hsp3c.hrt"

「COM関連機能」というのは具体的には、ヘルプブラウザで「COMオブジェクト操作命令」、「COMオブジェクト操作 関数」に分類されてるものと、axobj命令、mcall命令、#usecom命令、#comfunc命令といったところです。

自分では意識して使ってなくても、外部モジュールでこの利用できない機能が呼ばれてる場合があるので注意が必要 です。
 たとえば、RSSフィードを取得できるモジュール「mod_rss.as」はCOM回りの機能を使ってるのでダメ。他にも、擬似 3Dレンダリングモジュール「d3module」は、gsquare命令が使われてるのでダメ。

また、HSP 3.2には、「hsp3mt.hrt」という拡張ランタイムも用意されていて、これは『マルチスレッド環境に対応 させた他に、PGO (Profile-Guided Optimization) による最適化を行なっており、より高いパフォーマンスを期待できます』というものだそうです。このランタイムによる 効果というのは、PC環境(CPU)に依存するようです。
 作成される実行ファイルのサイズは通常よりも大きくなります(+70KBほど)。

● キーワード「type」

実行ファイルのタイプを指定します。デフォルトではタイプ0の通常の実行ファイルです。
 タイプ2を指定した場合にスクリーンセーバーファイル(*.scr)になります。タイプ1は動作不明・・・???

● キーワード「xsize」「ysize」

実行ファイル起動時のデフォルトウィンドウサイズです。

● キーワード「hide」

実行ファイル起動時にウィンドウを表示するか非表示状態にするかの設定です。
 この設定は実はかなり重要で、実行ファイルをいかにスマートに起動させるかがかかってます(大げさ?)。
 起動時にウィンドウを非表示指定にした場合は、必ずgsel命令を使ってウィンドウを表示化するようにしないといけません。そうしないと、Ctrl+Alt+Delキーでプログラム(プロセス)を終了するしか手段がなくなるので注意が必要です。

;	実行ファイル作成オプションで「hide」をON
#packopt hide 1

;	非表示ウィンドウにする
	screen 0, , , 2

//	〜 ユーザーにウィンドウを見せるまでやるべき処理をぜんぶ行う 〜

;	ウィンドウ表示
	gsel 0, 1

	stop

ユーザーにウィンドウを見せず、必要なオブジェクトを設置したりグラフィックを用意したり・・・、見せてもいい段階になったらgsel命令でウィンドウを表示化します。起動時における処理パフォーマンスの抑制や若干のスピードアップ化が可能です。(比較サンプルはコチラの一番下)

キーワード de HSP

HSPミニ講座

★ Yahoo!経由用ページ : ファイル | フォルダ | メニュー | マウス | ウィンドウ | オブジェクト | 文字列 | システム | 関数 | sendmsg命令 | その他 | サイトマップ | リンク