HSP : Hot Soup Processor ver3.7 / onion software 1997-2023(c)

# HSP3.7 新機能ハイライト

1. HSP3.7アップデート概要
2. プリプロセッサ命令、「#use」について
3. コンパクト(hsp3c)版ランタイムについて
4. HGIMG4ツールの更新について
5. HSP3Dishのboxf描画命令の修正について
6. DPM2形式による複数ファイルのパックについて
7. HSP3Dishサポートツールについて
8. 珠音ドットフレームワークについて
9. HSP3Dishのサウンド再生について
10. celload命令のID割り当てについて

## HSP3.7のアップデート概要

HSP3.7は、特に変更を意識することなく、HSP3.6と同様にお使い頂けます。 HSP3.7で変更された項目の概要は、以下の通りです。詳細な修正事項は「history.txt」を参照してください。

DPMファイル及びファイル暗号化埋め込み機能の更新

  HSP3.6までのファイル埋め込み機能(PACKFILE)ではファイル名の長さに制約がありフォルダの階層構造をサポートしていませんでした。
  HSP3.7では、ファイル埋め込み機能を更新してフォルダ構造や暗号化の刷新、HGIMG4への対応などを行っています。 また、HSP3Dishでの使用や対応ツールの強化などにより、今までよりも便利にご使用いただけます。 詳しくは、プログラミング・マニュアル「ファイルのパックと暗号化」をご覧ください。

変数名の管理とデバッグ機能の拡充

  HSP3.7では、大規模のスクリプトを安全に記述するための変数管理とデバッグを行うための仕組みが新たに導入されています。
  通常、スクリプト中で定義された変数は、それ以降は自由に内容の読み出し・書き込みが可能になります。 スクリプトの規模が大きくなり、扱う変数が膨大になった場合、誤って既に使用されている変数の内容を上書きしてしまったり、変数名のタイプミスにより予期しない動作となる可能性があります。
  このような問題を避けるために、初期化せずに変数を参照した際にエラーが表示されるオプションと、明示的に変数初期化を行うための#var,#varint,#varstr,,#vardouble等のプリプロセッサ命令が用意されました。 変数型を固定したり、代入を禁止することで意図しない変数の初期化や値の上書きを防止します。また、変数に関わる問題を発見するためのデバッグ機能も拡充されています。
  詳しくは、プログラミング・マニュアル「変数の初期化と保護」をご覧ください。
  さらに、特定の変数に値が代入されたタイミングでデバッグログに内容を記録する変数デバッグ機能が追加されています。 詳しくは、プログラミング・マニュアル「変数デバッグメッセージ」をご覧ください。

スクリプトエディタのソース解析機能

  HSP3.7では、スクリプトエディタ上で編集中のソース解析を行い、関連する変数やラベル、ユーザー定義命令・関数などに素早くアクセスすることが可能になりました。
  「キーワード定義への移動機能」、 「すべての参照を検索機能」、 「ラベル一覧機能」を利用することで、 大規模なスクリプトファイルであっても適切に流れを掴むことができます。これは、サンプルや他の人が作ったスクリプトの動作を確認する際にも強力な支援となります。

新規モジュール/プラグインの追加

  新しい機能を拡張するための各種モジュールが拡充されています。 バーチャルパッドをサポートするmod_vpadモジュール、 多彩な音声合成をサポートするhspvoicevoxプラグイン、 Windowsのボリューム設定、音量レベルメーターを取得するmod_mmaudioモジュール、 簡易的な麻雀の処理をまとめたmod_mahjongモジュール、 珠音ちゃん・プロ生ちゃんSD上半身コラボ素材を表示するためのmod_tamakeisdモジュール、 などなど多くの新機能を利用できます。

HSP3Dish android版のビルド機能修正

  HSP3Dishのandroid向けビルド機能を大きく変更しています。
  HSP3.6までのantツールを使用したビルドから、Gradleを使用した最新のビルド方法に変更されています。 これにより、Google Playストアでの配信に必要となるaab形式のファイルをビルドすることが可能になります。
  今まで通りデバイスへの変換をサポートするHSP3Dish Helperツールをご利用頂けますが、既存のプロジェクトとは互換性がないため、新規に作成する必要があるのでご注意ください。
  また、新しいHSP3Dish Helperでは、androidエミュレータの作成・実行、リリースバージョンの管理、ビルド後の自動実行などの機能が追加されています。

HSP3不具合の修正

  HSP3インタプリアコア部分で、HSP3.6リリース後に報告されたいくつかの不具合が修正されています。
  モジュール型配列変数の代入時の不具合、#constで定義されたdouble型実数値の有効桁数が少なかった不具合などが修正されています。

レガシー機能の廃止

  HSP3のランタイムやツールで古くなったもののいくつかを同梱終了しています。
  「コンパクト(hsp3c)版ランタイム」及び「Peasエディタ」はHSP3.6までのサポートとなります。

## プリプロセッサ命令、「#use」について

HSP3.7では従来の「#include」に代わり、「#use」というプリプロセッサ命令を利用できます。
#use命令は、「#include」と同様に別なスクリプトファイルを結合しますが、ファイルを簡易指定できるようになっています。たとえば、「#include "hsp3dish.as"」は「#use hsp3dish」と記述することができます。(どちらも機能的には、まったく同じ結果になります)
#use命令は「"hsp3dish.as"」のような文字列ではなく、「hsp3dish」のように拡張子を除いた名称だけを指定することができます。 パラメーターで指定された名前に「.as」という拡張子を付加したものをスクリプトファイルとして結合します。(パラメーターで指定される名前は、変数と同様のルールで記述された文字である必要があります。)
また、#use命令では「,」記号で区切ることで、複数の名前を連続で記述することが可能です。

    		#use strict,hsp3dish,mod_appconfig

こういった形で、従来よりも簡潔にファイルを呼び出して指定することができます。

## コンパクト(hsp3c)版ランタイムについて

HSP3.6までのコンパクト版ランタイム(hsp3c)は、HSP3.7から運用を廃止しています。
コンパクト版ランタイムは、Windows 98以降の動作をサポートするために古いコンパイラを使用していましたが、 ファイルサイズの僅かな削減以外のメリットが少なく、現行のOS上で実行の効率が悪いことから同梱を終了ることとしました。
hsp3cを使用していたユーザーは、引き続き標準のHSP3ランタイムをご使用頂くようお願い致します。

## HGIMG4ツールの更新について

HGIMG4について以下の修正を行っています。

HGIMG4ツール(gpbconv)の機能修正

  HGIMG4の3Dモデル変換に使用するHGIMG4ツール(gpbconv)の機能修正を行っています。
  変換された3Dデータのプレビュー機能が実装されているほか、 3Dモデル変換時のマテリアル名に日本語など英文字以外を含む場合、正しく認識されないことがあるため、マテリアル名修正に関するオプション指定を追加しました。 また、モデルファイルとは別にアニメーションデータをFBXファイルで用意したものを結合するためのオプションが追加されています。

## HSP3Dishのboxf描画命令の修正について

HSP3.7β2からWindows版のHSP3Dishでboxf命令の塗りつぶし範囲が標準ランタイムと異なる不具合を修正しています。
それまで右と下の1ドットがいままで描画されていなかったものを正常な動作に修正しています。 ほとんどの場合問題は出ないものと考えていますが、それまでの動作を基準に作成していたスクリプトで描画の結果が異なる場合がありますのでご了承ください。 システムリクエストにより、従来の描画に戻すことも可能です。その場合は、以下のようにsetreq命令を記述してください。

    			setreq SYSREQ_OLDBOXF,1		; HSP3.6のboxf動作を維持する

## DPM2形式による複数ファイルのパックについて

HSP3.7からパックして埋め込まれるデータの形式がDPM2という新しいものになりました。 これにより、いままでよりも制約の少ない自由なファイルのパック、暗号化を利用することができます。 HSP3.7では、複数の.dpmファイルを同時に使用することができるほか、ファイル名の長さやサイズの制限が緩和されています。
※HSP3.7β3版までとHSP3.7β4以降ではファイルのパックについての仕様が変更されています。#pack及び、#epack命令はHSP3.6と互換性のある動作になり、フォルダ構造やワイルドカードを試用した追加は、#packdir、#epackdir命令として新規に追加されました。
HSP3.7β3版までの仕様で記述されている方には、申し訳ありませんが#packdir、#epackdir命令を使用する形に修正をお願い致します。
詳しくは、「ファイルのパックと暗号化」の項目を参照してください。

## HSP3Dishサポートツールにいて

HSP3Dishでのプロジェクト設定やdpmファイルなどの作成をサポートするツールが新規で追加されています。 以下のサポートツールは、HSP3Dish HelperやHSPスクリプトエディタから起動することができます。

    		ツール名                         起動方法
    		--------------------------------------------------------------------------
    		Dish P Helper                    HSP3Dish Helper Androidタブから
    		#packoptリスト作成ツール         スクリプトエディタ「ツール」メニューから
    		#packリスト作成ツール            スクリプトエディタ「ツール」メニューから
    		Android/iOSアイコン作成ツール    HSP3Dish Helper Android/iOSタブから
    		dotfwマップエディタ              スクリプトエディタ「ツール」メニューから

## 珠音ドットフレームワークにいて

「珠音（たまね）ドットフレームワーク」は、ドット絵のHSP3オフィシャル素材とHSP3Dish上で使用できるライブラリのセットです。 ゲームに特化したシンプルな命令セットとオールインワンの素材パッケージで手軽にレトロスタイルの自作ゲームを作り始めることが可能です。 作成したゲームは、WindowsだけでなくWebやラズパイ、Linux、android、iOSなどで発表することが可能です。 サンプルスクリプトが「sample/dotfw」フォルダに用意されていますのでお試しください。
詳しくは、珠音ドットフレームワークマニュアルを参照してください。

## HSP3Dishのサウンド再生について

Windows版のHSP3Dish及びHGIMG4のサウンド再生について更新を行っています。 内蔵のサウンドシステムを切り離して外部のサウンド関連プラグインを利用する機能が追加されています。 これにより、hspoggプラグインを利用してoggファイルの再生を行うことが可能になります。 また、HGIMG3及びhspoggプラグインでは、oggファイル再生をオンメモリで行うよう修正されています。
暗号化されたdpmファイルや埋め込みデータを含めてHSP3が扱うファイルシステムからサウンドデータの読み込みが可能になりました。従来までのストリーミングによる再生を行う方法も選択できますので、状況に応じてお使い頂けます。

    		ファイル種別                     再生方法
    		--------------------------------------------------------------------------
    		wave形式(拡張子.wav)             オンメモリ再生(埋め込みデータ対応)
    		ogg vorbis形式(拡張子.ogg)       オンメモリ再生(埋め込みデータ対応)
    		ogg vorbis形式(拡張子.s)         ストリーミング再生(埋め込みデータ非対応)

詳しくは、hspoggマニュアルを参照してください。

## celload命令のID割り当てについて

HSP3.7β4から、celload命令で読み込みウインドウIDの指定を省略(またはマイナス値)して自動的にIDを割り当てる際の動作が修正されています。
ceload命令のウィンドウIDパラメーターが省略された場合には、すでに読み込まれている画像ファイルと同一のファイル名を指定した場合、 読み込まれているウインドウIDが再利用されます。 この動作は、標準のHSP3ランタイム、HSP3Dishランタイムを含むすべてのプラットフォームで適用されます。
これにより、重複した画像を読み込もうとした場合に、リソースを共有してメモリを節約することができます。 外部のモジュール内で画像を使用する場合や、ソースを再利用した場合にリソースの重複を防ぎます。 (既存のバージョンでは、重複した画像が読み込まれても常に新しいIDが割り当てられています。)
この変更により、既存のスクリプトで重複した画像ファイルを複数の異なるウインドウIDに読み込んでいる場合などで、IDの割り当てに不一致が起こる可能性があります。 ウインドウIDの再利用をしたくない場合は、「celload "a.png",celid_auto」のようにパラメーターにcelid_auto(または-1)を指定してください。
詳しくは、CEL関連命令についてを参照してください。