Hot Soup Processor 改変史
赤色 -> HSP本体の拡張・改善
緑色 -> HSP及びスクリプトエディタのバグフィックス
青色 -> スクリプトエディタの拡張・その他
ver2.5は、以前のバージョンに対して次のような拡張・修正を行なっています。
このバージョンは、なるべくver2.xの上位互換で動作するように作られていますが、一部の機能で非互換になる可能性があります。
このアップデートによって、ver2.xで使用していたソーススクリプトが正常な動作しなくなる可能性は以下のものがあります。
-
新規に追加された命令の名前と、ユーザーがつけた変数の名前が重なるとエラーが発生します。
-
HSPでは、いままでビットシフト演算子として「{」「}」および、「<<」「>>」を認識してきましたが、
HSP ver2.5以降は、「<<」「>>」のみ使用でき、「{」「}」は別な用途に使われています。
以前のスクリプトで「{」「}」演算子を使用しているものは、修正する必要がありますのでご注意下さい。
-
objsend命令を使ってボタンをグループボックスに変更している場合は、ver2.5ではその中の表示が乱れてしまいます。
これは、redraw命令などでオブジェクト領域を除外するように設定しているため起こるようで、解決の難しい問題です。
当面は、グループボックスの前にmesbox命令のスタティックテキストで下に空白の領域を作成しておくことで回避できます。
グループボックスへの本格的な対応は、将来のバージョンをお待ち下さい。
-
ver2.5では、screen、width命令のウインドゥサイズの指定が、
クライアント領域サイズ(ウインドゥの枠やタイトルバーをのぞいた描画領域)に変更されています。
これにより、以前作ったスクリプトを実行させた場合、画面のサイズが数ドット大きくなることがあります。
このことが原因で、スクリプトが動作しなくなることはありませんが、見た目に気になるという場合は、
お手数ですが、サイズの値を修正していただくようお願い致します。
ver2.4h -> ver2.5
- HSPカーネル部分を見直し、一部アセンブラを使うことによりサイズを少しだけコンパクトにした。
- 英語版Windowsでも正常に実行するためのIME判別機能を追加した。
- #include命令は、カレントディレクトリの他にHSED2.EXE下にあるcommonディレクトリもサーチするように変更。
- if命令の条件実行をC言語風の記述(「{」〜「}」)で複数行に対応できるように変更。
- HSPモジュール機能をサポート。ユーザー定義命令の追加、スクリプトの再利用を可能にした。
- ローカルラベル機能をサポート。
- ウインドゥIDとして使用できる範囲を0〜31に変更。
- ラベルや変数名を59文字まで認識するように変更。また、日本語全角もラベル・変数名として正式にサポートした。
- ディレクトリを保存するシステム変数およびrefstrの最大文字数を256文字に変更。
- HSPランタイムの状態を取得するシステム変数hspstatを追加。
- 配置オブジェクトのフォント指定をするためのobjmode命令を追加。
また、sysfont命令にシステム組み込みフォントを選ぶ機能を追加。
- sndload命令に、aviファイルの再生位置、サイズ指定のためのオプションを追加。
- mesbox命令に横スクロールバー、スタティックテキスト表示のためのオプションを追加。
- input,mesbox命令での入力可能文字数を指定するオプションを追加。
- stick命令に[TAB]キーのチェックコード(1024)を追加。
- stick命令にウインドゥが非アクティブ時に無効になるオプションを追加。
- ginfo命令にウインドゥ全体のサイズ、ウインドゥ初期化サイズを取得するオプションを追加。
- DLLに渡す2.4互換パラメータに新しい2.5形式のPVALへのポインタを取得するフィールドを追加。
- 無限ループ時でもシステム変数cntがカウントされるように変更した。
- ファイル選択ダイアログなどでカレントディレクトリが変わった場合でもシステム変数curdirに反映されるように変更。
- システム変数hspverの値を、マイナーバージョンコードを含めた16進6ケタに変更した。
- システム変数winx,winyの値を、現在のウインドゥ描画エリアのサイズに変更した。
- ランタイムEXEファイルの起動時に、自動的に起動ディレクトリをカレントディレクトリとする仕様に変更。
- 文字列の演算および代入で上限(32000文字)を越えた場合にエラーを出すように変更。
- screen,width命令のウインドゥサイズ指定をクライアントエリアのサイズに統一した。
- bload,bsave命令でオフセット0での分割アクセスを可能にした。
- redraw命令の画面更新で配置オブジェクトを消してしまわないように変更。
- HSPウインドゥ内でaviファイル再生を行なうように変更。
- input命令の入力ボックスは、入力範囲を越えてもスクロールするように変更。
- ファイル保存ダイアログで「読み取り専用で開く」チェックボックスが表示されないように修正。
- システム変数exedirが間違って返される不具合を修正。
- ファイル選択ダイアログで、「ファイル」などコード$40を含む種類表示がうまく出ない不具合を修正。
- (*)input,mesbox命令の入力文字サイズのデフォルト値がおかしくなる不具合を修正。
- 半角カナを1文字だけ使った時にエラーになる不具合を修正。
- (*)ウインドゥ枠サイズが変更されている時にウインドゥサイズがずれる不具合を修正。
- (*)palcopy命令後にpalfade命令がうまく機能しなかった不具合を修正。
- ウインドゥが最小化された状態で、screen命令による再初期化を行なうとサイズが初期化されない不具合を修正。
- 「'」記号内のコードが正しく認識されない不具合を修正。
- 複数の「.」(ピリオド)を持つファイル名をpicload命令で読み込む際に失敗する不具合を修正。
- str命令のパラメータ2で変数指定をした場合の不具合を修正。
- (*)2回目以降のscreenおよびbgscr命令のパラメータが反映されないことがある不具合を修正。
- 日本語を含むEXEファイル名でエラーとなる不具合を修正。
- 作成したEXEで、64文字以上のコマンドラインパラメータを渡した時に一般保護違反が出ていた不具合を修正。
- Windows98の関連付け起動で、HSPスクリプトエディタが起動しないことがあった不具合を修正。
- 「登録されている拡張子は表示しない」状態で、EXEファイルおよびHSPスクリプトエディタが正常に動作しない不具合を修正。
- 非常に長いパス名をスクリプトエディタが認識しなかった不具合を修正。
- スクリプトエディタの「置換して次に」の動作がおかしかったのを修正。
- スクリプトエディタの削除メニューが使えなかった不具合を修正。同時に削除のショートカット表示を「Delete」に修正。
- スクリプトエディタのメニューからプログラムガイド、命令リファレンスなどが呼び出せなかった不具合を修正。
- スクリプトエディタで外部ファイルのコンパイル+実行をした場合にデバッグ情報が出力されなかった不具合を修正。
- スクリプトエディタとasファイルの関連付け時に、セーブに失敗することがあった不具合を修正。
- 大きな配列を確保した時にデバッグウインドゥの表示がマイナスになる不具合を修正。
- ヘルプ呼び出し時に、先頭文字'A'を認識しない不具合を修正。
- HSPスクリプトエディタのワンキーヘルプを、Windows HELP形式、HtmlHelp、およびHSPヘルプマネージャに対応。
- htmlになどよるヘルプ呼び出しキーワードの文字列長を無制限にした。
- デバッグウインドゥにモジュール内変数表示ON/OFFのスイッチを追加。
- 拡張プラグインDLL指定でのエラーを詳しく出力するように変更。
- hsed2.exeの主要機能をhspcmp.dllにまとめ、プラグインとしても使用可能にした。
- 拡張プラグインhspsock.dllをver1.2に更新。
ver2.5 -> ver2.55
- repeat命令に対しての仕様を変更。無限ループ、ループ無視などの方法を改変しました。
- キーやマウスからのイベント割り込み実行を指定するonkey、onclick命令を追加。また、割り込み処理用のシステム変数iparam,wparam,lparamを追加。
- 変数に割り当てられたメモリブロックをコピーするmemcpy命令、および固定値でクリアするmemset命令を追加。
- ループレベル、ネストレベルを返すシステム変数looplev,sublevを追加。
- HSPスクリプト中に小数および固定小数値を記述することを可能にした。
(バイナリデータとして扱えるだけで演算で使用することはできません)
- HSP終了時にモジュール内のクリーンアップ定義命令が呼び出される仕様を追加。
- packfileの暗号化に仮対応。
- 履歴付き実行機能を追加。スクリプトエディタに履歴付き実行メニューを追加。
およびログ出力の設定を行なうlogmode,logmes命令を新たに追加。
- HSPの中間コード体系を見直し実行速度が少しだけ向上した。
(2.6β5以前のバージョンと中間コード(オブジェクトファイル)に互換性がないので注意してください)
- すべてのソースをVisual C++ SP5で再コンパイルした。
- サブルーチン、モジュール呼び出しの深さ(ネスト)最大数を32重まで増やした。
- mesbox命令で配置した入力ボックスから取得される文字列の最大文字数を65535まで拡張した。
- パラメータ指定で認識される文字列のサイズ(文字列式を含む)を65535文字まで拡張した。
また、そのサイズを超える場合にはエラーを出すように修正。
- システム変数refstrのバッファを4096バイトに拡張、他ディレクトリ名などを保持する文字列バッファを拡張。
- ファイル選択ダイアログの拡張子指定(パラメータ1)を1023文字まで指定可能に修正。
- システム変数cmdlineの取得可能文字数を1024に修正。
- sndload命令で64Kよりも大きい音声ファイル(WAV)を扱えるように修正。
- フルカラーモード時に半透明合成を行なうオプションをgmode命令に追加。
- screen,bgscr命令に作成時非表示にするオプションを追加。
- (*)ID2以降のウインドゥスタイルをscreen、bgscr命令で再指定できるように修正。
- exec命令にコンテキストメニューの操作名を指定するパラメータを追加。
- dialog命令のオプション16,17(ファイル選択)でキャンセル時にrefstrの内容をクリアするように修正。
- button命令の配置時にオブジェクトIDをシステム変数statに返す仕様を追加。
- combox命令の配置時にオブジェクトIDをシステム変数statに返す仕様を追加。
- font命令に下線、打ち消し、アンチエイリアスのオプション指定を追加。
- int命令で文字列型を数値型に変換する際に「$1a80」のような文字列を16進数として変換するように変更。
- gmode1の状態でgcopy命令によるフルカラーコピーを行なった場合に、RGB=(0,0,0)を透過色として扱わないように修正。
- 拡張子「mpg」をムービーファイルとして認識するようにした。(ただし環境によってはウインドゥ内表示は行なわれないことがあります)
- getstr命令実行時に区切られた文字コードをシステム変数statに返すように修正。
- Windowsシャットダウン時にもonexit命令で指定された終了ラベルが実行されるように修正。
- カッコを使用した式の内部で文字列の比較を行なうとエラーになる不具合を修正。
- 「'〜'」で半角カナを指定した場合にコードの取得を失敗する不具合を修正。
- 配列の添字に負の値を指定した時に予期しないエラー表示が出る不具合を修正。
- magファイル読み込み時にファイルが存在しない時に落ちるのを修正。また、mag形式のファイルサイズ制限を撤廃。
- bmpsaveによる作られたファイルのヘッダがまれに開けないものになる不具合を修正。
- 画面の初期化サイズが4の倍数でない時にbmpsave命令で起こる不具合を修正。
- chgdisp命令のフルカラーモード切り替えがWindows2000など一部のビデオドライバで正常に動作しなかった不具合を修正。
- buffer命令で作成したウインドゥIDにオブジェクトの作成ができる不具合を修正。
- (*)buffer命令で作成した仮想画面でredraw命令を実行した場合の不具合を修正。
- button命令の名前に変数を指定できるように修正。
- (*)input、mesbox命令で使用される変数の初期値が反映されなかった不具合を修正。
- (*)mesbox命令のデフォルト内容サイズが大きい場合にうまく改行されない不具合を修正。
- NT系カーネルでinputオブジェクトの入力文字列が取得できない場合がある不具合を修正。
- print、mes命令で複数の改行を認識しなかった不具合を修正。
- (*)非常に大きなソースのコンパイル時に起こる不具合を修正。
- デバッグウインドゥの配列変数表示時に一般保護エラーが出る不具合を修正。
- exeファイル作成時に、同名ファイルが実行中の場合にエラーで止まる不具合を修正。
- (*)実行ファイルが深い階層にある時にDLLに渡すDPM情報が破壊される不具合を修正。
- 拡張プラグインをtype$20で呼び出すとrefstrが破壊される不具合を修正。
- (*)拡張プラグインとして登録する命令が241以上でエラーが出る不具合を修正。
- (*)#uselibで指定したDLLがない場合に不正処理で落ちる場合がある不具合を修正。
- 拡張プラグインhspext.dllのclipsetg命令がWindows2000で正常に動作しなかった不具合を修正。
- hspcmp.dllのヘッダファイル(hspcmp.as)を修正。
- スクリプトエディタのpackfile編集ダイアログで、カレントディレクトリが深い階層にあった場合に
正常なファイル情報が生成されない不具合を修正。また、生成されるpackfileの改行コードをCR+LFに変更。
- スクリプトエディタのpackfile編集画面に暗号化指定のスイッチを追加。
- スクリプトエディタのウインドゥ内へのファイルドラッグ&ドロップに対応した。
- スクリプトエディタにラベル一覧からの移動、およびカーソル行No.の表示機能を追加。
- スクリプトエディタのコマンドライン指定文字列のバッファサイズを拡張。
- スクリプトエディタのバージョンダイアログに表示されるURLを修正。
- ワンキーヘルプなどの命令説明に標準で備考を表示するように修正した。
また、htmlによる命令リファレンスを分割して表示を軽くした。
- 同梱のプラグインhspdx.dllをSinagawaさん製作のものと差し替えた。
- 拡張プラグインhspext、hgimg、loadlib、llmodを最新のものに更新した。