HSP : Hot Soup Processor ver2.55 / onion software 1997-2001(c)

プログラミング・マニュアル 1

目次
0.
クイックスタート

1.プログラミングガイド
2.スクリプト記述の基本 3.システムリファレンス 4.HSPの基本動作概念 5.プログラミングの注意点

0.クイックスタート


このマニュアルでは、HSPによるプログラミング方法と言語仕様全般を解説したものになっています。 もし初めてプログラミングに挑戦するという人は、最初に「初心者のためのHSP入門」を読むことをお勧めします。
もし、ある程度プログラミングの経験があり、HSPが初めてという方はこのクイックスタートをお読みいただいて実際に使ってみることをお勧めします。 使っている過程でわからないことが出てきたら、このマニュアルで検索をして調べてみてください。


1.プログラミングガイド


  • コモンディレクトリについて
  • 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」命令でファイルをサーチする順番は、

    のようになります。

  • ローカルラベルについて
  • HSP ver2.5ではローカルラベル機能をサポートしています。 これは、特殊な名前のラベルを何度でも使うことのできる機能で、 何でもない部分や、名前をつけるのが面倒な時などに便利です。
    	例:
    			mes "GO!"
    		*@
    			mes "A="+a
    			a+
    			if a<5 : goto *@back	; 前のローカルラベルに戻る
    			stop
    
    ローカルラベルは、「*@」という名前で定義します。これは、他の ラベルと違い1つのソーススクリプト内で何度でも置くことができます。
    このローカルラベルを、goto命令などで参照する時には、 「*@back」と「*@forward」を使います。 「*@back」は、その場所より上にあり一番近いローカルラベルを指します。 「*@forward」は、その場所より下にあり一番近いローカルラベルを指す ものになります。
    「*back」は、「*b」と省略することが可能です。
    「*forward」は、「*f」と省略することが可能です。

    ローカルラベルは、多用するとかえって見にくいスクリプトになって しまう可能性もあるので、後の見やすさを考えてから使ってみてください。

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


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


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


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


    DLL HGIMG.DLL/HGIMGX.DLL Ver2.55 作者:おにたま 作者のページ
    HSP ver2.55から標準で同梱されている、高速画像処理プラグインです。
    フルカラー、パレットモードでの2D・3Dグラフィック表示をサポートします。 スプライトを使用した2Dゲームから、3Dモデルを使った本格的なソフトまで幅広く 利用することができます。HGIMG.DLLで追加される主な機能は以下の通りです。
  • フルカラー、パレットモード、DirectXの有無などを切り替え可能なアーキテクチャ
  • 2Dスプライト、3Dポリゴンなどを共通の命令で設定可能な描画エンジン
  • 2Dスプライトの回転拡大縮小、α合成、透明色抜き処理、タイリング(BG表示)
  • 3D座標上の2Dスプライトと3Dポリゴンを混在可能なワールド管理
  • 3Dの階層構造を持ったポリゴンモデル表示、およびアニメーション管理
  • 文字フォントテクスチャをもとにメッセージを合成表示
  • スプライトの表示、移動の管理および衝突判定機能
  • await命令より細かい単位でのウェイトと処理の負荷検出機能
  • CPU処理や描画の負荷が変わってもアニメーションの速度を一定に保つ(フォールオフレンダリング)
  • 32bit float精度によるジオメトリ演算
  • 独自フォーマットによる3Dモデル、アニメーションデータの読み込み
    Windows95/Windows98/WindowsNT/2000で動作を確認しています。


  • DLL LOADLIB.DLL Ver2.55 作者:tom 作者のページ
    HSP ver2.55から標準で同梱されている、DirectX対応プラグインです。
    HSPの拡張プラグインとして作られていないDLLの呼び出しを可能にするDLLです。 このプラグインを使うことで、いままで使用することが不可能だったC言語などで使われているDLL、 さらにはWindowsが使用している各種DLLを直接HSPから呼び出すことができるようになります。 (ただし、これを使う場合には各種DLLの仕様と、呼び出しパラメータ型の知識が必要となります。 ) また、このDLLと組み合わせて使用するモジュールllmodを利用することで、HSP標準では 実現できない多くの機能をサポートします。
    Windows95/Windows98/WindowsNT/2000で動作を確認しています。

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



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

    「HSP拡張ランタイム」は別途オフィシャルサイトからダウンロードできます。

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

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

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

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


  • 海外版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"
    
    	"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.
    
    記録される内容は、記録モードで指定されたイベントごとに異なります。


    2.スクリプト記述の基本



    3.システムリファレンス



    4.HSPの基本動作概念




    5.プログラミングの注意点



    ONION software [一番上に戻る]
    [前のメニューに戻る]
    Go to ONION software HOMEPAGE