[トップ][編集][ノート][編集履歴][一覧][最近の更新][->English]

HSP2.6:HSPPROG:プログラミングガイド


スクリプトの形式

HSPはプログラム(命令と実行の順序を記したもの)によって動作します。その もとになるのがスクリプト(ソースファイル)です。これはテキストファイル の形式で、拡張子は .AS になります。スクリプトはHSPに付属しているHSPスク リプトエディタ(HSED2.EXE)や、テキストエディタなどのアプリケーションで作 成することができます。

スクリプトの編集と実行

HSPスクリプトエディタ(HSED2.EXE)を使用すると、非常に簡単にHSPのスクリプ トを作成、編集、実行することが可能です。HSPスクリプトエディタを使用した 場合は、

  1. テキストのスクリプトを書く(xxx.AS)
  2. 「コンパイル+実行」のメニューを選ぶか、 ファンクションキーのF5を押して、スクリプトを実行させる

という手順だけで、簡単にHSPのスクリプトを実行して動作を確かめることがで きます。

HSPスクリプトエディタの基本的な使い方

HSPスクリプトエディタ(HSED2.EXE)は、HSPのスクリプト編集用のエディタです 。コンパイルや実行なども自動的に行なうことができます。 HSPスクリプトエ ディタを使用する場合には、HSED2.EXEと同じディレクトリに以下のファイルが 存在している必要があります。

HSED2.EXE HSPスクリプトエディタ本体
HSP2.EXE HSP実行ファイル本体
HSPRT HSPランタイムモジュール
HSPCMP.DLL HSPコードコンパイラDLL

HSPスクリプトエディタは、本体(HSED2.EXE)とHSP実行ファイル(HSP2.EXE) が 必ず同じディレクトリに存在していなければなりません。また、実行ファイル (EXEファイル)を作成するためには、ランタイムファイル(HSPRT)も、同じディ レクトリに必要です。

HSPスクリプトエディタを起動すると、新規のテキスト編集ウインドゥが表示さ れます。あとは普通のテキストエディタと同じように、ファイルをロードした り、セーブしたりしながらHSPのスクリプトを記述していきます。基本的な操作 は、Windowsに付属している「メモ帳」とほぼ同じです。文字列のカット&ペー スト、検索などもメニューから選ぶことができます。

編集しているHSPスクリプトを実行させてみるには、メニューから「コンパイル +実行」を選ぶか、またはファンクションキーのF5を押します。「実行」または CTRL+F5を押すと、最後にコンパイルされたスクリプトを実行します。

コンパイル中にエラーが発生した場合は、コンパイル後にエラーの内容とエラ ーの出た行番号を知らせるダイアログが表示されます。

error xxx in line 15 (HSPTMP) --> ラベルが重複している

上の例では、「ラベルが重複している」エラーが行番号15で発生したというこ とを示しています。エラーが発生した場合は、「カーソル」メニューの「指定行に 移動」(またはCTRL+J)を選んで、エラーが発生した行へ移動してその内容を チェックしてみてください。

一般的な使い方としては、HSPスクリプトエディタで編集、実行を繰り返しなが らスクリプトを作成して、完成したらメニューから「実行ファイル自動作成」 ([Ctrl]+[F9])を使って完成したスクリプトを EXEファイルやSCRファイル(スク リーンセーバー)に変換して1本のソフトができあがります。

HSPのスクリプトエディタでは、以下のファイルを実行時に作成します。これら のファイルは、コンパイル時にのみ必要なファイルなのでスクリプトができあ がった時には削除してかまいません。

HSPTMP ソーススクリプトのテンポラリファイル
HSPTMP.I ソーススクリプトのテンポラリファイル
OBJ 実行オブジェクトのテンポラリファイル

スクリプトエディタのドラッグ&ドロップについて

ソーススクリプトのアイコンを、HSED2.EXEのアイコンの上かまたは、ウインド ゥ内にドロップするだけで編集をすることができるようになっています。 ソーススクリプトがドロップされると、そのソースファイルが格納されている ディレクトリがカレントディレクトリとなります。 より便利な使い方としては、「.as」という拡張子を「HSED2.EXE」と関連付け しておけば、「.as」の拡張子を持つファイルをダブルクリックするだけで、ソ ースを開くことができるようになります。 また、デスクトップに「HSED2.EXE」のショートカットを置いておき、そこにソ ーススクリプトをドロップするような使い方も可能です。

スクリプトエディタの「外部ファイル実行」ボタンの使い道

外部のテキストエディタでHSPのソースファイルを編集したものを手軽にコンパ イル+実行させるために、スクリプトエディタでは「外部ファイル実行」のボ タンがツールバーの一番右端に用意されています。これにより、使い慣れた他 のテキストエディタを使いHSPのスクリプトを記述することが比較的容易になり ます。主な作業手順は以下のようになります。

  • HSPスクリプトエディタを開き、実行させたいソーススクリプトのファイルを開 きます(たとえば「test.as」など)。一度開いたら、そのソースがあるディレク トリがカレントディレクトリとなるので、あとは「新規作成」のメニューでス クリプトの編集をやめてください。
  • 別のエディタ(秀丸など)で、さきほどスクリプトエディタで開いたものと同じ ファイルを開きます。あとは、これを自由に編集してかまいません。さきほど のスクリプトエディタは、そのままにしておきます。
  • 編集したスクリプトを実行したくなった場合には、マウスカーソルを移動させ てスクリプトエディタの「外部ファイル実行」ボタンを押します。そして、実 行させるファイル名を入力するダイアログが出ますので、そこに外部で編集し ているソースファイルの名前を入力します。たとえば、「test.as」ならば「 test」のように拡張の「.as」は省略して入力します。
  • 「OK」のボタンを押すと、外部で編集されたファイルがコンパイル+実行され ます。外部で編集しているソースファイル名の入力は一度しておけば、次から は前の名前を覚えているので再び入力する必要はなくなります。

このような手順で、外部のエディタでスクリプトを編集することができます。 この場合、 HSPスクリプトエディタは、コンパイル+実行をするためのランチ ャーのような状態だと考えるといいでしょう。ウインドゥのサイズを小さくし て、編集部分をなくしてしまえば画面上にコンパクトに配置することが可能で す。

スクリプトエディタの「ラベル一覧」について

ver2.55よりスクリプトエディタの「カーソル」メニューに「ラベル一覧」 ([F11])が追加されました。 [F11]を押すと、現在編集中のスクリプトに含まれ るラベルの一覧がリストボックスに表示され、任意のラベルを選ぶことでダイ レクトに該当する行にジャンプすることができます。スクリプトが大きくなっ て移動が不便な場合や、どのあたりにラベルを振ったか忘れてしまった時など に便利です。

ワンキーヘルプ機能について

スクリプトエディタで編集している文字列から、HSP命令のヘルプをボタン1つ で呼び出す機能が「ワンキーヘルプ機能」です。

使用方法は、調べたいキーワードにキャレット(エディタ内のカーソル位置)を 合わせて、 [F1]キーを押すだけです。 該当する命令の説明、パラメータの意味などが表示されます。もしキーワード に該当するヘルプがなかった場合は、アルファベット順のキーワード検索ヘル プが表示されます。 サンプルスクリプトが何をしているのかを調べる時、命令の詳細が思い出せな い時などに便利な機能です。

ワンキーヘルプは、いくつかの表示方法を選ぶことができます。標準では、HSP ヘルプマネージャによるヘルプ閲覧に設定されています。

HSPスクリプトエディタでは、この他にもhtmlによる表示、Windows HLP形式に よる表示や、HSPヘルプマネージャによる表示など、4つの形式をサポートして います。 (HSPヘルプマネージャ形式以外は、対応するヘルプデータを別途用意 して頂く必要があります)

  1. HTML形式 (オプション)
    ver2.5までの標準であるHTML形式ヘルプ表示を行ないます。指定され たディレクトリに拡張子htmのヘルプファイルが必要になります。
  2. Windows HELP形式 (オプション)
    Windows標準のWinHelpによるヘルプ表示を行ないます。 HSP標準では サポートされていませんが、ユーザーなどによって作られたヘルプデ ータの表示が可能です。キーワードによる検索に対応しています。指 定されたディレクトリにHSP.HLPというファイルが必要になります。
  3. HSPヘルプマネージャ形式 (標準)%~ HSP ver2.55からサポートされたヘルプマネージャを呼び出してヘルプ の表示を行ないます。指定されたディレクトリにHELPMAN.EXEというフ ァイルと、インデックスデータ(idxファイル)およびヘルプデータ(hs ファイル)が必要です。ヘルプマネージャの詳しい説明は、「HSP Help Tools」のドキュメントをお読みください。
  4. Windows HTML HELP形式 (オプション)
    Windows98標準のHtmlHelpによるヘルプ表示を行ないます。 HSP標準で はサポートされていませんが、ユーザーなどによって作られたヘルプ データの表示が可能です。キーワードによる検索に対応しています。 指定されたディレクトリにHSP.CHMというファイルが必要になります。 これらは、HSPスクリプトエディタの「ヘルプ」→「HSPヘルプ設定」メニュー を選択して、設定することが可能です。

ヘルプのデータは、通常はスクリプトエディタ(HSED2.EXE)の下にある、 hsphelpというディレクトリに格納されています。もし、他のディレクトリに移 したい場合や、ヘルプ表示をしようとした際にエラーが出る場合は、「ヘルプ 」→「HSPヘルプ設定」メニューを選択して、ヘルプデータのディレクトリを再 設定してください。(たとえば、「c:\hsp26\hsphelp」など) 入力が空白の場合は、HSED2.EXEの下にあるHSPHELPというディレクトリを参照 します。

HSPヘルプツールについて

[hsp_hman] HSP Help Toolsは、HSPの関連ユーティリティーです。これにより 、HSPのワンキーヘルプで表示されている、命令ごとの説明データの追加、更新 、削除などを簡単に行なうことができるようになります。 また、html形式だけではなくテキスト形式での出力などのオプションも用意さ れています。 HSP Help Tools本体は、HSPで作成されており、ソースも提供されているので、 ツール自体のカスタマイズはもとより、作成されるhtmlの内容に手を加えたり 、別な形式での出力に対応させることも可能です。 ヘルプのためのデータ入力ツールや、ヘルプデータにアクセスするためのモジ ュールなども同梱されているので、ユーザーによるヘルプの構築も容易です。 HSP Help Tools本体は、「HSPHELP」ディレクトリに収録されています。

HSPのエラー

スクリプトの書き間違いや、指定のミスなどでHSPの実行中にエラーを発見 した時には、エラーコードとエラー行番号が表示されるようになっています。 ダイアログが出て、

HSP : error code nn  
  in line xxx
--> エラーメッセージ 

のような表示が出た時は、スクリプトのxxx行がコードnnのエラーだということ を示しています。エラーコードとメッセージの関係は次のようになっています 。

  1. "解釈できないHSPコードです"
    コンパイルされたHSPの中間コードが間違っています。 通常は表示されないエラーです。ファイルが破損している場合や、 予期しない事態が起こった時に表示されます。
  2. "文法が間違っています"
    命令や、変数名、ラベル名の書き方が間違っている時に表示されます。
  3. "パラメータの数値が異常です"
    パラメータの数値が許容範囲を越えている場合に表示されます。
  4. "計算式でエラーが発生しました"
    計算式の書き方が間違っていたり、使用できない記号や演算をしようと した時に表示されます。
  5. "パラメータの省略はできません"
    パラメータの省略ができない部分が省略されている時に表示されます。
  6. "パラメータの型が違います"
    パラメータに指定された型(文字列型、数値型)が、規定のものではない 時に表示されます。変数が指定されている場合は、変数の型が間違っています。
  7. "配列の要素が大きすぎます"
    配列の要素として指定した値が、dim、sdim命令などで設定した数を 越えている時に表示されます。
  8. "有効なラベルが指定されていません"
    ラベルとして指定すべきパラメータが間違っている場合や、 ラベルを示す「*」の後に何もない時に表示されます。
  9. "gosub,repeatのネストが深すぎます"
    gosub命令、repeat命令を多重に実行しすぎた時に表示されます。
  10. "サブルーチン外のreturnは無効です"
    gosub命令で呼ばれていないのに、return命令が実行された時に表示されます。
  11. "repeat外でのloopは無効です"
    repeat命令がないのに、loop命令が実行された時に表示されます。
  12. "ファイルが見つからないか無効な名前です"
    ファイル操作をする時に、指定されたファイルが見つからなかったか、 またはアクセスできないファイルである時に表示されます。
  13. "画像ファイルがありません"
    picload命令で読み込むための画像ファイルが見つからない時に表示されます。
  14. "外部ファイル呼び出し中のエラーです"
    exec命令で外部ファイルを呼び出す際に、何らかの問題が発生した時に 表示されます。
  15. "計算式でカッコの記述が違います"
    計算式で使われている括弧「(、)」の書式が正しくない、または対応が おかしい時に表示されます。
  16. "パラメータの数が多すぎます"
    命令に指定されたパラメータの数が多すぎる時に表示されます。
  17. "扱える文字列の上限を越えています"
    文字列を扱う上での許容量を越えた時に表示されます。
  18. "代入できない変数名を指定しています"
    システム変数や予約キーワードに対して代入しようとした時に表示されます。
  19. "0で除算しました"
    0で割り算をしようとした場合に表示されます。
  20. "バッファオーバーフローが発生しました"
    文字列変数のためにsdim命令や、dim命令で確保したサイズをオーバーした場合や、 変数バッファを超えてアクセスを行なおうとした場合に表示されます。

HSPのしくみ

HSPは、以下のような流れでスクリプトを実行しています。

  1. コンパイル
    ソーススクリプト(テキストファイル)を解析し、HSP用のオブジェクトファ イル(AXファイル) を作成します。(ここまでの作業はスクリプトエディタ (HSED2.EXE)が行なっています)
  2. 実行
    オブジェクトファイル(AXファイル)を読み込み、それを実行します。 (こ の部分は、HSP本体(HSP2.EXE)が行なっています)

ソーススクリプトのコンパイルは、瞬時に行なわれオブジェクトファイルを作 成します。オブジェクトファイルは、ソーススクリプトの余計な部分、コメン トなどを排除してコンパクトに、そして高速に実行できる形式になっています 。

HSP本体は指定されたオブジェクトファイルを読み込み実行するための核となる 部分です。これはHSP2.EXEですべて行われますので、それ以外に余計なDLLやモ ジュールは必要としません。もちろん、HSP2.EXE本体には、サンプルデモのデ ータやスクリプトは入っていません。スクリプトを最低限動作させるだけの部 分なのです。

もし、あなたがHSPで作ったソフトを配布したいと思ったら、単体で実行できる EXE(実行) ファイルを作成することができます。EXEファイルを作成すると、そ のファイルをダブルクリックするだけでスクリプトが動作するようになります 。オンラインソフトや同人ソフトとして配布する際には便利な機能です。 EXEファイルやスクリーンセーバーモジュールを作成する時には、オブジェクト ファイルが必要になります。その際には、スクリプトエディタの「オブジェク トファイル作成」や、「START.AXファイル作成」のメニューを使います。詳細 は、次の項を参照してください。

バッチファイルやコマンドプロンプトから直接HSP2.EXEをファイル名指定付き で実行させることもできます。

hsp2 demo.ax

のように入力すると、"demo.ax"というオブジェクトファイルが実行されます。

EXE,SCRファイルの作成方法

HSPでは、ユーザーが作成したスクリプトや、そこで使用されるデータファイル などを、ひとまとめにしてEXEファイルを作成することができるようになってい ます。また、EXEファイルの一種であるSCRファイル( スクリーンセーバーモジ ュール)も同じ手順で作成できます。

ver2.6からは、実行ファイルの作成をより手軽に行なうことが可能になってい ます。スクリプトエディタから現在編集中のファイルをEXEファイルに変換する 場合には、メニューから「HSP」→「実行ファイル自動作成」を選択するか、「 CTRL」+「F9」を押すだけでカレントディレクトリに実行ファイルが作成されま す。実行ファイル自動作成のオプションを指定することも可能です。詳しくは 、「実行ファイル自動作成について」の項を参照してください。なお、ver2.55 まで行なっていた手作業での実行ファイル作成も可能です。こちらの方法は、 以下の通りです。

マニュアルでEXEファイルを作成するための手順。(Ver2.55互換の方法)

  1. スクリプトのオブジェクトファイルを作成しておくこと。この時 、最初に実行されるオブジェクトファイル名は、必ず「start.ax 」にしておくこと。これがないと、スクリプトが起動されません 。
  2. 「PACKFILE編集...」のダイアログで、EXEファイルに含めるため のファイル一覧(PACKFILE)を作成します。ここでは、start.axな ど EXEファイルに埋め込むためのファイル名をすべて選択してお く必要があります。
  3. スクリプトエディタのツールメニューから「EXEファイル作成」 を選択します。スクリーンセーバーの場合は、「スクリーンセー バー作成」を選択します。これで、EXEまたはSCRファイルがカレ ントディレクトリにできあがります。

EXEファイルやSCRファイルを作成するには、必ずPACKFILEが必要になります。 PACKFILEとは、複数のファイルをひとまとめにして、EXE, SCRファイルの中に 埋め込むための定義ファイルです。PACKFILEで指定されたファイルは、スクリ プトからは使用できますが、外部からは見えなくなります。これには次のよう な効果があります。

  • ゲームで使用する画像ファイルなどを取り出せないように保護する
  • 各ファイルの無駄なクラスタをなくしディスク容量を軽減する
  • 大量のデータファイルがディレクトリにちらばるのを防ぐ

この機能を使えば、EXEの中に埋め込まれた画像ファイルやデータファイルなど を使うことができ、1ファイルだけの画像や音声を使ったソフトを作ることが できます。(ただしMIDIファイルやDLLなど一部のデータファイルは埋め込むこ とができません。また、埋め込んだファイルの内容を変更して上からセーブす ることはできません)

もちろん、スクリプトで使用されているすべてのデータファイルを EXEの中に 埋め込む必要はありません。必要だと思ったものだけを、埋め込み、それ以外 は通常の外部ファイルとして置いておいても問題ありません。ただし、最初に 実行されるスクリプト「start.ax」だけは必ず埋め込んでおく必要があります ので注意してください。「start.ax」というオブジェクトファイルは、スクリ プトエディタのツールメニューで「START.AXファイル作成」のメニューで作成 することができます。

PACKFILEは、スクリプトエディタの「PACKFILE編集...」で簡単にファイルを選 択して編集することができます。ただし、ここで指定するファイル名はスペー スを含まない半角で11文字以内のMS-DOSファイルネームでなければなりません 。

HSPでは、次のような順序でファイルのロードを行なっています。

  1. EXEに埋め込まれたファイルがある場合には、その中からまずロー ドするファイルを探す。
  2. なかった場合には、カレントディレクトリから探す。
  3. それでもなかった場合には、pathで指定されているディレクトリか ら探す。Windows、Systemディレトクリなど。
  4. それも見つからない場合は、エラーになります。

EXEファイルを作成し終わったら、まず必要最低限と思われるファイルだけを、 新しく作ったディレクトリに移して実行できるかどうかを確認しておくといい でしょう。通常作業を行なっているディレクトリには、EXEに埋め込む前のファ イルがカレントディレクトリに置かれているので、PACKFILEで指定を忘れてフ ァイルが埋め込まれていない場合でも、正常に動作してしまうためです。

「外部ファイル実行」を使用している場合は、「オブジェクトファイルのみ作 成」のチェックボックスをONにしてから、外部ファイル実行をすることで、オ ブジェクトファイルの作成が可能です。

ver2.6から、EXEファイルに埋め込まれたファイルが正規のものかをチェックす る機構が導入されています。これにより、ウィルス感染されたファイル実行を 防止したり、ファイルを不正に書き換えることが困難になっています。ただし 、これによりUPXなどのソフトを使ってEXEファイルそのものを圧縮した場合に エラーが発生してしまいます。 HSPからUPXなどを使用する場合には、ファイル 正規チェックを外したランタイムバージョンを使用するか、オンラインで公開 されているHSP用のUPX対応ソフトをご利用下さい。詳しい情報は、HSPのオフィ シャルページを参照してください。

PACKFILEの編集について

[hsp_pack] 「PACKFILE一覧」ダイアログでは、EXEファイルやSCRファイルを作 成する際に必要なデータファイル群を選択、管理することができます。ここで 選択されたファイルのデータは、PACKFILEというファイル名でカレントディレ クトリに保存されます。まず、メニューから「ツール」→「PACKFILE編集...」 を選んでください。「PACKFILE一覧」のダイアログが出ます。これは、おおま かに次のように分かれています。 ver2.6からは、PACKFILEの指定をスクリプトに記述することが可能になってい ます。詳しくは、「実行ファイル自動作成について」の項を参照してください 。

右側の大きなウインドゥが、PACKFILEに含まれるファイル名の一覧になります。
左側にはファイル選択ウインドゥがあります。上下2つに分けられていて、上がカレントディレクトリのファイル名一覧。下がディレクトリの一覧になります。
中央には、各種機能を持つボタンと、ワイルドカード指定をするためのファイルマスク指定ウインドゥがあります。

ファイル選択ウインドゥには、中央のファイルマスクウインドゥ(通常は"*.*") で指定されたファイルだけが表示されます。たとえば、ファイルマスクを "*.AX"とすると、拡張子が"AX"のファイルだけが表示されるようになります。 表示されるディレクトリを変更したい場合は、左下のディレクトリ選択ウイン ドゥをダブルクリックしてください。[..]は、ディレクトリを1つ戻ることを 、[-a-]や[-c-] は、ドライブを意味しています。

PACKFILE一覧に、ファイルを追加するには次のように操作します。

  1. 左側のファイル選択ウインドゥで、追加したいファイルをクリック して選びます。 ([CTRL]キーを押しながらクリックすることで複数 を選択することも可能です)
  2. 「追加>>」ボタンを押します。
  3. 選択したファイルが、右側のPACKFILE一覧に追加されます。

PACKFILEから指定したファイルを除外するには次のように操作します。

  1. 右側のPACKFILE一覧ウインドゥで、除外したいファイルをクリック して選択します。(複数選択はできません)
  2. 「削除->」ボタンを押します。
  3. 選択したファイルが、右側のPACKFILE一覧から除外されます。 「全追加>>」ボタンは、ファイル選択ウインドゥに表示されているすべてのフ ァイルをPACKFILE一覧に追加します。「全削除->」ボタンは、PACKFILE一覧の ファイルをすべてクリアします。

PACKFILEの編集が終了したら、「閉じる」ボタンを押してください。選択され た情報ファイルとして、PACKFILEというファイルがセーブされます。 PACKFILE 編集によって、実際のファイルが削除されたりコピーされることはありません 。「キャンセル」ボタンを押すと、ウインドゥが閉じ、いままでの選択はすべ て無効になります。

現在のバージョンでは、PACKFILEは、スペースを含むディレクトリをサポート していません。「Program Files」などのスペースを含むディレクトリ下にある ファイルを指定すると、うまく動作しないことがありますので注意してくださ い。

ver2.55から実行ファイルに含まれるデータに暗号化を施し、外部からの解析や 抜き出しに対処できるようになりました。 暗号化を行なう場合には、スクリプトエディタの「PACKFILE編集」ダイアログ において、PACKFILEに含めるファイルを追加する際に「暗号化」のチェックを ONにしておいてください。PACKFILEに含めるファイル一覧の中で先頭に「+」が つけられファイルは暗号化の対象になります。

ファイルの暗号化は、「start.ax」などのオブジェクトファイルを始めとして 画像ファイルや、テキストファイルなどHSPから読み込まれるファイルすべてに 適用することができます。PACKFILEに含めることのできないファイル、MIDIや 動画ファイルなどは対象にはなりません。

暗号化されたファイルは、bloadなどの命令で読み込んだ場合には、正常な内容 に復号されます。これをbsaveで保存した場合には暗号化されません。

スクリーンセーバーの作成

HSPでは、Windows9x/NT/2000/XPで動作するスクリーンセーバーモジュールの作 成が可能です。これは、特殊な命令を使いフルスクリーン画面を作成してそこ に描画された内容がそのままセーバーとなるもので、通常のスクリプトにちょ っと手直しをするだけで作成できます。スクリーンセーバーの詳細については 、サンプルファイルのあるディレクトリ「ssaver」にある、「start.as」ファ イルを開いてみてください。スクリプトの書き方と実際の作成手順、そしてサ ンプルスクリプト本体が書かれていますので参考にしてみてください。

標準の機能では、パスワード保護のないシンプルなスクリーンセーバーが作成 可能です。拡張機能となる、llmod、scrsvrモジュールによりWindows9xのみパ スワード保護ダイアログのサポートを行なうことができますが、 Windows2000 、XPなどNT系マシンでのパスワード保護は、外部プラグインが必要になります のでご了承下さい。

スクリーンセーバーモジュール(SCRファイル)の作成は、色々な約束事がありま す。サンプルのスクリプトなどを参考にしながら、覚えていってください。ス クリーンセーバーの設定画面(ID0)のウインドゥサイズは、通常のHSP実行時と は異なり、スクリーンセーバー作成時に設定されたウインドゥサイズに固定さ れます。必ず、作成時に設定するか、#packopt命令などのオプション指定で正 しいサイズにしておいてください。

起動オプションのパース機能

HSPでは、起動オプションを取り込みスクリプトでそれに応じた処理をすること ができます。これにより、色々な機能を持たせた EXEをバッチファイルから呼 び出したり、EXEファイルのアイコン上にファイルをドロップするような処理す ることが可能になります。 この機能をスクリプトエディタ上から試すために、HSPメニューに「起動オプシ ョン...」があります。これを選択すると、スクリプトエディタ上から起動した 時にも、擬似的に起動オプションをつけることができます。実際にスクリプト で起動オプションの内容を調べる場合には、 cmdlineというシステム変数を使 用します。詳しくは、システム変数一覧を参照してください。

フルスクリーン表示機能

HSPでは大きくノーマルウインドゥモードと、フルスクリーンモードを選ぶこと ができます。ノーマルウインドゥモードは、通常の Windowsアプリケーション と同じくデスクトップ上に任意の大きさのウインドゥが開いて、それ以外の領 域にはデスクトップ画面が見えています。フルスクリーンモードでは、デスク トップのかわりにユーザーが任意に指定した壁紙をバックにした画面になり、 ディスプレイ全体がHSPの画面となります。HSPのスクリプトが終了しない限り 別のウインドゥアプリケーションには移ることができません。この2つのモー ドは、スクリプトエディタのHSPメニューにある、「フルスクリーンモード」を 選択することで切り替えることができます。

EXE,SCRファイルのアイコン書き換え

配布用の実行ファイルは自由にアイコンを書き換えていただいて構いません。 通常、EXEファイルやSCRファイルを作成すると、Windowsから見たアイコンは HSP2.EXEと同じものになっています。

現在のHSPには、アイコンの編集機能はありませんがアイコンを直接書き換える ソフト( KH IconRewrite98など) を使用していただくことができます。また、 以下のソフトを使ってもHSPアイコンの書き換えが可能です。

また、tomさん作「ICONREWR.DLL」などユーザー作成によるアイコン書き換えツ ールを使うことでも可能です。詳しくは、以下のURLにある画像処理DLLを参照 してください。

HSPスクリプトサンプル

HSPがインストールされたディレクトリ(C:\Program Files\hsp26\など)にある 、「sample」フォルダ以下には、HSPスクリプトエディタから実行可能なサンプ ルが多数収録されています。エディタから開くメニューを選択するか、ファイ ルをドラッグ&ドロップするなどして読み込み実行させることができます。

basicフォルダ HSPの基本機能を使用したサンプル
demoフォルダ サンプルデモのソースとデータ
hgimgフォルダ HGIMGプラグインサンプル
hspdaフォルダ HSPDAプラグインサンプル
hspdxフォルダ HSPDXプラグインサンプル
hspextフォルダ HSPEXTプラグインサンプル
hspsockフォルダ HSPSOCKプラグインサンプル
loadlibフォルダ LOADLIB/LLMOD関連命令サンプル
newフォルダ 2.6新機能サンプル
ssaverフォルダ スクリーンセーバーサンプル

ファイル"samples.as"には、HSPで使うことのできる簡単な例が集められていま す。この中には、多数のサンプルスクリプトが収録されています。この一部を 切り出してスクリプトの一部として使用することができます。 HSPの機能を活 用するための参考にしてみてください。 "samples.as"に含まれているサンプル スクリプトは以下の通りです。

  • 文字列の先頭文字をasciiコードで取り出す
  • 文字列の取り出し1 (右からn文字を取り出す)
  • 文字列の取り出し2 (左からn文字を取り出す)
  • 文字列の取り出し3 (n1文字目からn2文字を取り出す)
  • 「,」で区切られた文字列を1つ1つ取り出す
  • テキストファイルの内容をそのまま表示1
  • mesbox命令による簡易テキストエディタ
  • テキストファイルの内容をそのまま表示2
  • テキストファイルの内容チェック
  • テキストファイルを自動生成
  • 現在の日付と時刻を表示
  • 現在時刻をエディットボックスに表示
  • 今日の曜日を表示
  • 複数行メッセージを影文字で表示
  • 複数行メッセージをゆっくりと表示
  • 入力ボックスの内容を後から変更する
  • 乱数でキャラクタを大量に描画
  • 画像のフェードイン・アウト
  • 画像のパレット表示
  • 指定した画像ファイルをメインウインドゥの壁紙にする
  • 押したボタンに応じた画像を表示
  • 乱数で大量の線を描画
  • チェックボックスを表示
  • カーソルキーによるメニュー選択
  • メッセージボックスに後から文字列を追加
  • onexit命令を使った終了時チェック
  • 簡易CD playerサンプル

コモンディレクトリについて

HSP ver2.5より、「#include」命令でサーチされるファイルのディレクトリに コモンディレクトリが追加されています。これは、「#include」命令で挿入さ れるファイルが、通常はソースファイルと同じ(カレント)ディレクトリにある ものが使われますが、そこにない場合は、コモンディレクトリにあるものを使 うというものです。 hspext.dllなどの拡張プラグインを使うためのファイル、 (hspext.asなど)をコモンディレクトリに置いておけば、それを使うソースファ イルと同じディレクトリでhspext.asを用意する必要がなくなります。

コモンディレクトリは、HSED2.EXEやHSP2.EXEと同じディレクトリにある「 common」という名前になります。たとえば、「c:\hsp」というディレクトリに HSED2.EXEがあり、「c:\script」というディレクトリで「test.as」というスク リプトを編集しているとすると、「#include」命令でファイルをサーチする順 番は、

  1. 「c:\script」にあるファイルをサーチ
  2. なければ「c:\hsp\common」にあるファイルをサーチ
  3. それでもなければエラー

のようになります。

メインウインドゥ非表示EXEファイル

EXEファイル作成時に、メインウインドゥを非表示にして起動させることが可能 です。 EXEファイル作成のダイアログで、「メインウインドゥを非表示にする 」のチェックをONにしてEXEファイルを作成すると、そのEXEファイルは起動時 にメインウインドゥ (ウインドゥID0)が最初に表示されなくなります。これは 、起動時にウインドゥサイズを変更したり、表示位置を変更しても一瞬だけウ インドゥがデフォルトの位置に見えてしまうのを防ぎたいという人のためのオ プションです。このオプションをONにした場合は、「gsel 0,1」などの命令で ウインドゥをアクティブにしない限りメインウインドゥは表示されません。メ インウインドゥの位置やサイズをちらつきなく変更したい場合や、メインウイ ンドゥを表示する必要のないアプリケーションを作りたい時に活用してみてく ださい。また、メインウインドゥが非表示になっている場合でも、ウインドゥ は存在しているので、メインウインドゥに対して行なった描画やオブジェクト 配置は正常に実行され保存されています。

HSP拡張プラグインについて

HSPでは、拡張プラグインという形で機能を追加していくことが可能です。これ により、HSP本体だけでは実現できない処理が可能になります。 HSP拡張プラグ インは、標準でDLLまたはHPIの拡張子を持つファイルとなっています。このフ ァイルは、必ずHSP本体(HSP2.EXE)と同じディレクトリに存在していなければな りません。また、EXEファイル作成の際にPACKFILEに入れて、1つのEXEファイル にすることはできません。拡張プラグインを使用するEXEファイルを作成した場 合は、EXEファイルと同じディレクトリに拡張プラグインを置いてください。

拡張プラグインは、標準で以下の4つが同梱されています。それぞれのプラグイ ンについての使い方詳細は、別途テキストを参照してください。

DLL HSPEXT.DLL Ver2.6 作者:おにたま 作者のページ

HSP ver2.4dから標準で同梱されている、機能拡張プラグインです。 この拡張DLLを使用することにより、40種類以上の新規命令が追加され、レジス トリ操作、簡易数学関数、シリアル通信、フルカラー画面操作、拡張ファイル アクセスなど多くの機能がHSPからコントロールできるようになります。さらに アプリケーションキャプチャー命令の搭載により、HSP以外のアプリケーション をコントロールすることが可能になります。これらの命令は、HSP単体では実現 できないようなツール、ユーティリティの作成に役立つものが多く、さらに高 度なアプリケーション開発が可能になります。 Windows95/Windows98/WindowsNT/2000で動作を確認しています。

DLL HSPSOCK.DLL Ver2.6 作者:おにたま 作者のページ

HSP ver2.4hから標準で同梱されている、TCP/IPソケット通信用プラグインです 。 この拡張DLLを使用することにより、LANやインターネットを通じてデータの送 受信を行なうことが可能になり、簡単なクライアント・サーバーソフトを作成 することもできます。他のマシンとのコミュニケーションに、インターネット のクライアントに、ネット対応のゲームなど多くの場面で活用することができ るでしょう。 Windows95/Windows98/WindowsNT/2000で動作を確認しています。

DLL HSPDA.DLL Ver2.6 作者:おにたま 作者のページ

HSP ver2.5から標準で同梱されている、データアクセスのためのプラグインで す。 大量の文字列や数値をまとめてデータ管理する場合に威力を発揮します。特に 数値や文字列のソート機能は、大量のデータでも短時間で並び替えが可能です 。また、CSV形式のファイルを配列に変換したり検索する機能などが用意されて います。 Windows95/Windows98/WindowsNT/2000で動作を確認しています。

DLL HSPDX.DLL Ver2.6 作者:おにたま 作者のページ

HSP ver2.4gから標準で同梱されている、DirectX対応プラグインです。 この拡張DLLを使用することにより、新規命令が多数追加され、DirectXを使用 したハイレベルなソフトを開発することが可能になります。 HSPDX.DLLを使用 するためには、Microsoft DirectX3以降(DirectX5以降を推奨)がインストール されている必要があります(Windows98には標準搭載されています)。また、 WindowsNT4.0以降に搭載されているDirectDrawでも動作します。 豊富なスプライト制御命令を持っているので、面倒な角度ごとの移動、自由落 下、衝突判定などを1つの命令で実行できます。これにより、2Dキャラクタを使 ったゲーム、デモなどの作成が従来よりも楽に、そして高速にできます。 Windows95/Windows98/WindowsNT/2000で動作を確認しています。

DLL HSPCMP.DLL Ver2.6 作者:おにたま 作者のページ

HSPシステム機能を持つプラグインです。 スクリプトエディタが持つHSP関連機能(コンパイル、実行、オブジェクト作成 、実行ファイル作成) をコントロール可能です。HSPのシステム機能を、HSPの スクリプトから制御することで、それぞれのユーザーに合った独自のカスタマ イズやバッチ処理が可能になります。 Windows95/Windows98/WindowsNT/2000で動作を確認しています。

DLL HGIMG.DLL/HGIMGX.DLL Ver2.6 作者:おにたま 作者のページ

HSP ver2.55から標準で同梱されている、高速画像処理プラグインです。 フルカラー、パレットモードでの2D・3Dグラフィック表示をサポートします。 スプライトを使用した2Dゲームから、3Dモデルを使った本格的なソフトまで幅 広く利用することができます。HGIMG.DLLで追加される主な機能は以下の通りで す。

  • フルカラー、パレットモード、DirectXの有無などを切り替え可能なアーキテク チャ
  • 2Dスプライト、3Dポリゴンなどを共通の命令で設定可能な描画エンジン -回転拡大縮小、α合成、透明色抜き処理、タイリング(BG表示)などの特殊効果 サポート
  • 3D座標上の2Dスプライトと3Dポリゴンを混在可能なワールド管理
  • 3Dの階層構造を持ったポリゴンモデル表示、およびアニメーション管理
  • 文字フォントテクスチャをもとにメッセージを合成表示
  • スプライトの表示、移動の管理および衝突判定機能
  • await命令より細かい単位でのウェイトと処理の負荷検出機能
  • CPU処理や描画の負荷が変わってもアニメーションの速度を一定に保つ(フォー ルオフレンダリング)
  • 32bit float精度によるジオメトリ演算
  • MX形式、DXF形式による3Dモデル表示、MA形式によるアニメーションデータの読 み込み

Windows95/Windows98/WindowsNT/2000で動作を確認しています。

HSP拡張プラグインは、仕様が公開されていて、ユーザーの方たちが制作した多 くのプラグインが存在します。 HSPの可能性を大きく広げるプラグインが、以下のURLで多数紹介されています 。

HSP 機能拡張ソフト紹介のページ

拡張ランタイムについて

「HSP拡張ランタイム」は、「HSP拡張プラグイン」の機能を DLLファイルなし で実行できるようにするためのシステムです。簡単に言えば、拡張プラグイン を使用したプログラムであっても、 EXEファイルと一緒にDLLファイルを同梱す る必要がなくなります。ただし、どんなDLLでも可能なわけではありません。仕 様にもとづいて作られた「HSP拡張ランタイムモジュール(HRTファイル)」がサ ポートするDLLのみ、実現が可能です。「HSP拡張ランタイム」により、HSPで作 られたプログラムを実行ファイルに変換する際の選択に、幅が広がります。た とえば、JPEGファイルを使用していないプログラムで実行ファイルを作成する 場合、「コンパクト版HSPランタイム」を使ってEXEファイルを作成すれば、通 常よりもサイズが小さく抑えられます。公開するEXEファイルのサイズが少しで も小さい方がいい人にもお勧めします。

「HSP拡張ランタイム」についての詳細は、「拡張ランタイムマネージャマニュ アル」(HSP2.6:hsperun?)をお読みください。

HSPモジュール機能について

モジュール機能は、HSPをより深く高度に使いたいという方のための拡張機能で す。しかし、この機能はすべての人に必要なものではありません。初心者の方 や、これからHSPを使う方は、まだモジュールについての習得はしなくても大丈 夫です。

HSPモジュール機能は、複数のスクリプトをラベル名や変数名の衝突を気にせず 結合するためのものです。 この機能は、いままでのHSPではボトルネックになっていた問題、大きなサイズ のスクリプトを作る時に変数名などの管理がしにくくなるという点、他の人が 作成したスクリプトの再利用が難しかったという点を改善し、より汎用性の高 いスクリプトを組むことができるようになります。 HSPモジュール機能についての詳細は別途ドキュメント(HSP2.6:module) を参照し てください。

デバッグウインドゥについて

[hsp_dbgw] ver2.4gから新たに、スクリプト実行中にHSPの状態や変数の内容を チェックすることができるデバッグ機能が搭載されました。この機能を使うた めの特別なウインドゥが、「デバッグウインドゥ」になります。これは、スク リプトエディタの「HSP」メニューの「Debugウインドゥ表示」のスイッチを入 れることで、実行時に常に表示させておくことが可能です。また、このスイッ チが入っていない場合でも、 HSPでエラーが起こった場合には自動的にポップ アップ表示されます。

デバッグ機能を持たせたためにHSP2.EXEのサイズが多少大きくなっていますが 、実行可能なEXE、SCRファイルを作成する場合には、ランタイムのみが含まれ ているHSPRTが参照されます。このため、実行可能ファイルにはデバッグ機能や エラーメッセージなどのデータ類などは一切含まれません。

HSPデバッグウインドゥ表示の詳細

デバッグウインドゥの左上のウインドゥで表示カテゴリーを選択します。 選択された情報が、下のウインドゥに表示されます。情報は、カテゴリー の選択をした時点でのものになります。内容は、自動的には更新されない ので、別な時点での情報を知りたい時には、再びカテゴリーのウインドゥ をクリックしてください。

[全般]

現在実行されている行、HSPの状態(実行モード)などが表示されます。また 、gosubやloopのネストレベル(深さ)も表示されます。

[システム変数]

HSPのシステム変数の内容を一覧で表示します。

[MCI]

sndload命令などで読み込まれている音声、動画ファイルの一覧を表示しま す。

[モジュール]

モジュール機能が使われている場合に、その詳細を表示します。登録され た新規命令や、モジュール名一覧などを見ることができます。

[変数xxx]

定義されている変数の内容を表示します。「配列変数を表示」のチェック ボックスを入れると、配列の内容を一覧で表示します。また、「変数のダ ンプ」のチェックボックスを入れることで、変数バッファの内容を16進数 で表示します。変数のダンプや配列の表示は、あまりにも大きなサイズが 確保されている変数の場合は、すべてが表示されない場合があります。文 字列型の変数に、バッファの容量を越えた文字列が代入されている場合は 、警告メッセージが表示されます。その場合は、sdim命令などで確保する バッファのサイズを大きくしてください。また、「モジュール変数を表示 」にチェックがついている場合は、モジュール内部で使用されている変数 の内容も表示します。

海外版Windowsへの対応について

HSPの通常パッケージは、日本語によるメッセージやメニューが採用されていま すが、起動や実行に関しては、すべての日本語版以外のWindowsでも可能です。 実行ファイル(EXE)やスクリーンセーバー(SCR)を作成した場合も、英語(US)版 Windowsや、欧州版などを含めたWindowsで動作するよう作られています。 (現 在は、英語(US)版Windows98でのみ動作確認をしています)

日本語などIMEを標準で搭載しているWindows、日本、中国、韓国、台湾、アラ ビアなどの地域向けWindowsでは、フルスクリーン時などにIMEツールバーを消 去するように作られています。そのため、HSP内部ではWindowsにIMEがインスト ールされているかのチェックをするためのコードが含まれています。

また、HSPのエラーメッセージや、HSPスクリプトエディタのメニューなども含 めて英語で表示されるUS版HSPを別途配布しています。 US版HSPは、 HSPのオフィシャルホームページ (特別バージョンダウンロード) にて入手可能です。

履歴付き実行機能について

スクリプトが実行された結果をログファイルに記録しながら動作する履歴付き 実行機能が追加されました。もっとも簡単な使い方は、

  1. 履歴付き実行をさせるためのスクリプトをスクリプトエディタに読み込む
  2. スクリプトエディタから「HSP」→「履歴付き実行」のメニューを選択
  3. ダイアログが表示されたら、「実行開始」ボタンを押して実行する
  4. 履歴を取りたいところまで実行させる
  5. 再びスクリプトエディタから「HSP」→「履歴付き実行」のメニューを選択
  6. 「ログの編集」ボタンを押すと履歴(ログ)がエディタが開かれます

のような手順で行ないます。これにより、命令1つ1つが実行されるごとにその 内容や状態をログファイルに記録します。多くの命令が実行されると、それだ けログファイルも大きくなるので注意してください。

履歴付き実行は、それほど利用頻度の高いものではないですが、発見が困難な バグや、プラグイン開発、隠れた問題の発見などに効果を発揮します。特にエ ラー個所の発見が困難な場合(一般保護エラーで終了した場合など) 直前まで実 行していた部分を検証できます。また、割り込み発生時のプログラムの流れや 、gosub〜returnネストの不整合チェック、モジュール呼び出しの様子などを確 認することができ、より安定したスクリプトを作成するための支援となります 。

履歴付き実行で使用されるログファイルは、スクリプトと同じディレクトリに 「hsplog.txt」という名前になります。このファイルは、通常のテキストファ イルになっています。このログに情報を書き込むには次の3つの方法があります 。

  1. スクリプトエディタから「履歴付き実行」を選択する
  2. logmode命令を使用してログ記録のモードを設定する
  3. logmes命令を使用してログファイルに直接メッセージを書き込む

いずれの場合もデバッグ時にのみ有効になります。実行可能ファイルにした後 はこれらの機能はすべて無効です。

スクリプトエディタから「履歴付き実行」を選択すると、実行開始時からログ を記録することができます。そうしなかった場合でも、logmode命令を入れるこ とにより、任意の時点、任意の範囲を履歴付き実行の対象にすることができま す。

logmode p1,p2

p1 : 実行履歴(ログ)記録モード
1 = エラー時
2 = 停止/終了時
4 = gosub呼び出し時
8 = module呼び出し時
   16 = 外部命令(DLL)呼び出し時
   32 = 割り込み呼び出し時
  512 = 命令実行時(標準命令)
 1024 = 命令実行時(標準のWindows依存命令)
 2048 = 命令実行時(代入命令)

p2 : 実行履歴(ログ)記録オプション
1 = 実行行
2 = 時刻
4 = 日付
8 = ファイル名

実行履歴(ログ)記録の設定を行ないます。
p1で、どのような時に記録を行なうかを設定します。
複数の項目を指定する場合は、項目の値を合計したものを指定
してください。
p1に-1を指定すれば、すべての項目を指定することができます。
p1に0を指定した場合は、履歴記録は行なわれずに通常の実行と
なります。
p2で、記録されるログに付加される情報の項目を指定します。
これも複数の項目を指定する場合は、項目の値を合計したものを
指定します(-1ですべての項目)。
p2の指定を省略した場合は、以前の設定が引き継がれます。
logmes "message"

実行履歴(ログ)にメッセージを記録します。
実行履歴(ログ)記録モードに関わらず、必ずログ記録されます。
ある時点での変数の内容や、通過チェックなどに利用できます。
記録された履歴(hsplog.txt)は以下のような内容になります。
行番号  ファイル  日付 時刻   実行結果
------------------------------------------------------------------------
#00000 [test.as] (2001/02/11) (23:01:03) |Start logging:obj
#00000 [test.as] (2001/02/11) (23:01:03) |ICMD:$00000002:$04:onexit
#00002 [test.as] (2001/02/11) (23:01:03) |LET:$0000000a:h <- 0
#00003 [test.as] (2001/02/11) (23:01:03) |LET:$00000010:b <- 0
#00003 [test.as] (2001/02/11) (23:01:03) |ICMD:$00000014:$2e:logmes
#00007 [test.as] (2001/02/11) (23:01:03) |>Test Message
#00008 [test.as] (2001/02/11) (23:01:03) |LET:$0000001a:a <- 123
#00009 [test.as] (2001/02/11) (23:01:03) |LET:$00000020:i <- KK
#00010 [test.as] (2001/02/11) (23:01:03) |LET:$00000026:a++ <- 124
#00010 [test.as] (2001/02/11) (23:01:03) |DCMD:$0000002a:$27:input
#00012 [test.as] (2001/02/11) (23:01:03) |DCMD:$0000002e:$00:button
#00013 [test.as] (2001/02/11) (23:01:03) |DCMD:$00000036:$40:objprm
#00015 [test.as] (2001/02/11) (23:01:03) |ICMD:$0000003c:$1a:stop
#00016 [test.as] (2001/02/11) (23:01:03) |Stopped.
#00016 [test.as] (2001/02/11) (23:01:04) |JUMP:0:$0000001e
#00016 [test.as] (2001/02/11) (23:01:04) |ICMD:$0000003e:$13:mes
#00018 [test.as] (2001/02/11) (23:01:04) |ICMD:$00000042:$1a:stop
#00019 [test.as] (2001/02/11) (23:01:04) |Stopped.
#00019 [test.as] (2001/02/11) (23:01:06) |IRQ:0:0
#00019 [test.as] (2001/02/11) (23:01:06) |JUMP:0:$00000021
#00021 [test.as] (2001/02/11) (23:01:06) |IF:$00000044:0
#00021 [test.as] (2001/02/11) (23:01:06) |End logging.

記録される内容は、記録モードで指定されたイベントごとに異なります。

  • エラー時
    エラーで終了した場合にその内容が記録されます。
  • 停止/終了時
    stop命令、end命令などが実行された時点で記録されます。「Stopped. 」のような形式になります。
  • gosub呼び出し時
    gosub,return命令実行時に記録されます。「GOSUB:xxx」「RET:xxx」 のような形式になります。 xxxには、実行される直前のネストレベル が入ります。
  • module呼び出し時
    モジュール機能により登録された新規命令が実行された時点で記録さ れます。「Func:命令名」のような形式になります。
  • 外部命令(DLL)呼び出し時
    HSP拡張プラグインにより登録された命令が実行された時点で記録され ます。「DLL:命令名」のような形式になります。
  • 割り込み呼び出し時
    on〜goto,on〜gosubなどにより登録されていた割り込みが実行された 時点で記録されます。「IRQ:xxx:yyy」のような形式になります。 xxx は割り込みID、yyyは呼び出しタイプIDとなります。
  • 命令実行時(標準命令)
    標準命令の中で機種に依存しない命令群が実行された時点で記録され ます。「ICMD:$xxxxxxxx:$yy:命令名」のような形式になります。 xxx は内部の実行コードアドレス、yyは中間言語コードを示しています。 if命令のみ「IF:$xxxxxxxx:yyy」のような形式で記録され yyyはif命 令の論理演算の結果が入ります。 (0の場合は偽、それ以外は真の条件 となります)
  • 命令実行時(標準のWindows依存命令)
    標準命令の中で機種に依存する命令群が実行された時点で記録されま す。「DCMD:$xxxxxxxx:$yy:命令名」のような形式になります。 xxxは 内部の実行コードアドレス、yyは中間言語コードを示しています。
  • 命令実行時(代入命令)
    代入命令が実行された時点で記録されます。「LET:$xxxxxxxx:変数名 <- 代入値」のような形式になります。 (xxxは内部の実行コードアド レス)
  • その他
    その他、特殊な場面でメッセージが記録されることがあります。また 、logmes命令で記録されたメッセージには「>」が付加されます。

実行ファイル自動作成について

ver2.6から、スクリプトエディタに「実行ファイル自動作成」のメニューが追 加されました。これは、現在エディタで編集中のソーススクリプトを直接実行 ファイルに変換するものです。今まで、実行ファイル作成には「packfile編集 」や実行ファイルの種類、ファイル名、ウインドゥ初期サイズなど色々なオプ ションを指定するステップを踏まなければならず、勘違いやミスが起こりやす かったものをシンプルに統一したものが実行ファイル自動作成の機能です。

「実行ファイル自動作成」(ctrl+F9)を選ぶと、現在編集中のソースを start.axとして出力して、packfileを作成、「hsptmp.exe」という名前で実行 ファイル(EXE)を生成します。(start.axは暗号化されます)

最も単純なパターンは以上のようなものです。多くの場合は、自動作成して出 来上がる実行ファイルで十分ですが、さらに細かく設定をする場合や、実行フ ァイルにリソースとしてファイルをパックしたい場合には、自動作成プロセス をコントロールするプリプロセッサ命令を置くことで、細かく制御することが できます。

#pack "ファイル名"  [PACKFILE追加ファイル指定]
#epack "ファイル名" [PACKFILE追加ファイル指定]

実行ファイル自動作成で、packfileに追加されるファイルを指定します。指定 されたファイルは、実行ファイル作成時にリソースとして一緒にパックされま

す。 #packは、通常の形式でパックします。#epackは、暗号化してパックされ ます。重複したファイルを追加しようとした場合には、無視されます。「 start.ax」は、実行ファイル自動作成の際に自動的に追加されるため特に追加 ファイルとして指定する必要はありません。

例:

#pack "a.txt"
#epack "a.bmp"

上の例では、「a.txt」「a.bmp」というファイルを実行ファイルと一緒にパッ クし、"a.bmp"は暗号化します。

#packopt キーワード名 パラメーター  [自動作成オプション指定]

実行ファイル自動作成の動作を指定します。キーワード名、の後スペース又は TABを入れてパラメーター (文字列の場合は「"strings"」のように指定)を記述 して下さい。 #packoptで指定できるキーワードは以下の通りです。

キーワード 内容 初期値
name 実行ファイル名 "hsptmp"
runtime 使用するランタイム "hsprt"
type 実行ファイルのタイプ 0
(0=EXEファイル)
(1=フルスクリーンEXE)
(2=スクリーンセーバー)
xsize 初期ウインドゥXサイズ 640
ysize 初期ウインドゥYサイズ 480
hide 初期ウインドゥ非表示SW 0

例:

#packopt type 2
#packopt name "test"
#packopt runtime "hsp2c.hrt"

上の例では、「test.scr」というスクリーンセーバーを「hsp2c.hrt」というラ ンタイムを使用して作成します。

今まで通りに、「packfile編集」からパックされるファイルを選択して実行フ ァイルを作成することも可能です。「実行ファイル自動作成」を行なうと、 packfileが自動的に作成されるため、それまで保存されていたpackfileの情報 は上書きされるので注意して下さい。尚、「start.ax」はデフォルトで暗号化 されたものがpackfileに追加されます。また、「#packopt runtime "ランタイ ムファイル名"」で指定されたランタイムファイル(拡張子がhrtのもの)は、 hspcmp.dllと同じディレクトリか、または、runtimeディレクトリに置かれてい るものが使用されます。

loadlib.dllの統合について

ver2.6から、tomさんが製作された拡張プラグイン「loadlib.dll」に含まれる 全機能をHSP標準命令として組み込んでいます。llmodなど多くのloadlib.dll 利用アプリケーションをDLLなしで利用できるようになります。

同梱されているcommonフォルダに含まれるloadlibおよびllmod関連ヘッダファ イル(llmod.asやloadlib.asなど)は、内蔵命令用に修正されていますが、過去 に作成されたスクリプトなどで古いヘッダファイル(DLLを呼び出すもの) を使 用している場合は、内蔵命令のキーワードと衝突してエラーとなりますのでご 注意下さい。過去に作成されたloadlib使用スクリプトも、ver2.6に同梱されて いるヘッダファイルを使用すれば正常に動作するはずです。