HSP : Hot Soup Processor ver3.6 / onion software 1997-2021(c)

title

HSP3.6 新機能ハイライト

  1. HSP3.6アップデート概要
  2. mes(print)命令の機能拡張について
  3. HSP3Dishの配置オブジェクトについて
  4. レイヤーオブジェクトについて
  5. 標準スプライトについて
  6. コールバックルーチンについて
  7. objcolor命令について
  8. rgbcolor命令について
  9. stick命令で取得されるキーの追加
  10. strexchange命令による文字列置き換えについて
  11. zipファイルの圧縮解凍サポートについて
  12. MUCOM88プラグインについて
  13. hspswプラグインについて
  14. hspinetプラグインの更新について
  15. 64bit(x64)版ランタイムについて
  16. コンパクト(hsp3c)版ランタイムについて
  17. HSPTVフォルダ素材について
  18. 英語版インターフェースの対応について
  19. HSP3Dishのスクリーンサイズ変更について
  20. viewcalc命令による座標変換について
  21. celbitmap命令による画像データ制御について
  22. HSP3DishのiOS,android版更新について
  23. HGIMG4の更新について

HSP3.6のアップデート概要

HSP3.6は、特に変更を意識することなく、HSP3.5と同様にお使い頂けます。 HSP3.6で変更された項目の概要は、以下の通りです。

標準命令の拡充

mes,print命令で影文字、縁取りなどの修飾ができるオプションが追加されています。 配置オブジェクトの配色を指定するためのobjcolor命令、ユーザー定義による配置オブジェクトを定義するためのobjlayer命令が追加されています。 他にもコールバックルーチンの厳格化や、24bitカラーコードを指定するためのrgbcolor命令など多くの新機能を搭載しています。
また、stick命令で取得されるキーの追加、ジョイスティック入力モジュールなど細かいアップデートも行われています。
Unicode文字を標準で使用する新しいランタイム、hsp3utf、hsp3_64などもアップデートされており、 いままでの機能はそのままに、ゲームだけでなく、ツール製作や手軽なプロトタイピングに役立つ機能を拡充しています。

プラグイン機能拡充

新規追加プラグイン「hspsw」(Steamプラットフォーム連携API)、「hspmucom」 (MML記述によるFM音源楽曲再生プラグイン)、「ZLibWrap.dll」(zipファイルの圧縮解凍)など 高度な機能拡張を同梱しており、すぐに利用可能です。

HSP3Dishの機能拡充

Windows/iOS/android/Linux/html5(WebGL)上での実行をサポートするHSP3Dishの各種機能を拡充しています。
文字列の描画を大きく見直し、すべてのプラットフォームで日本語を含む文字列の表示、半透明合成に対応しています。 また、新しい配置オブジェクトとしてチェックボックス、入力ボックスをサポートしています。(一部のプラットフォームのみ) Windows/Linuxプラットフォームでは、screen、bgscr命令によるウインドウサイズの変更、フルスクリーン表示に対応しています。 他にも、最新の端末に対応できる新しいSDKへの対応や、各種センサー情報の取得、ネットワークアクセス、HSPDX互換のスプライト描画機能も拡充しています。 webブラウザで動作するhsp3jsは、新たにWebAssembly形式の出力が可能です。HGIMG4描画の速度も大幅に向上し実用性がアップしました。 幅広いデバイスへの変換をサポートするHSP3Dish Helperツールも、より便利で手軽に利用できようになりました。

HGIMG4プラグインの更新

ハイレベルな3D表現を可能にするHGIMG4プラグインを大幅に更新しています。 システムの安定向上や高速化のほか、ライティング機能、ポストエフェクトに関する機能を充実させています。また、FBXモデル変換時の制約、複製時の制約など細かい使い勝手が向上しています。
新しいHGIMG4ツールでは、fbxファイルを変換した後の3Dデータをより詳細に確認、編集できるようになりました。マテリアル(.material)ファイルをGUIにより詳細に確認することが可能になっています。
新規の命令により、自由な形状の生成、物理衝突情報の取得、ノード階層情報の取得などが可能になります。ライティング機能ではラストの種類、個数が拡充され、より高度な表現を可能にしています。ポストエフェクトについても、標準のモジュールによるサポートを追加しました。

新しいHSPTV素材

自由に使える素材として、HSPTVフォルダに多くの素材が拡充されています。 HSP3オフィシャルキャラクター "珠音(たまね)"を始めとして、プロ生ちゃんコラボ素材など ゲームを中心に幅広く活用することができます。 新たなサンプルスクリプトも同梱し、オリジナルの作品作りのため、自由に活用することができます。 HSPTV素材を使用したWebアプリケーションを公開できるサービス、「WebDish」も公開されています。

HSP3.6で追加された新機能を手軽に試すことができるサンプルスクリプトが、「sample/new36」フォルダに含まれています。 ぜひ新しいサンプルでの動作を、実際に実行してお試しください。

mes(print)命令の機能拡張について

mes(print)命令が機能拡張され、文字の修飾などができるようになっています。
mes命令のパラメーターは以下の通りです。

		mes "strings",sw
		"strings" : 表示するメッセージまたは変数
		sw(0)     : オプション

mes命令の最初のパラメーターは、文字列または変数名を指定することができます。変数名を指定した場合は、変数に代入されている内容を表示します。
2番目のオプションパラメーターによって文字の修飾と動作の設定を行うことが可能です。

			   値  : マクロ名       : 動作
			 -----------------------------------------------------
			   1   : mesopt_nocr    : 最後に改行しない
			   2   : mesopt_shadow  : 影付き文字を描画する
			   4   : mesopt_outline : 縁取り文字を描画する
			   8   : mesopt_light   : 影付き/縁取りを簡易描画する
			   16  : mesopt_gmode   : gmodeの設定を反映する(HSP3Dishのみ)

オプションに2またはmesopt_shadowを指定した場合は、影の付いた文字を描画します。 オプションに4またはmesopt_outlineを指定した場合は、縁取りの付いた文字を描画します。 影と縁取りは、objcolor命令で指定された色が使用されます。 また、影と縁取りの幅はfont命令の第4パラメーターで指定することができます。

上の例では、左が影付き文字、中央が縁取り文字、右が通常の文字になります。 オプションに16またはmesopt_gmodeを指定した場合は、gmodeで指定した半透明、色加算などの設定を反映した描画を行います。 (このオプションは、HSP3Dish及びHGIMG4でのみ有効です。通常のHSP3ランタイムでは無視されます)
オプション値は加算することで複数を同時に指定することができます。 「mesopt_nocr+mesopt_shadow」を指定した場合は、影付きで改行しない表示となります。

HSP3Dishの配置オブジェクトについて

HSP3Dish及びHGIMG4ランタイムにおいて、チェックボックス、入力ボックスの サポートが追加されました。(入力ボックスはWindows/Linuxのみ)
chkbox、input命令をHSP3と同様に使用できます。また、objcolor、objmode命令などで設定される背景色、フォントの変更にも対応しています。
これらのGUIパーツはOSが提供する部品ではなく、HSP3Dishが独自に実装を行ったものです。 OSが提供する外観と異なる場合がありますが、異なるプラットフォーム間で統一された外観を提供することができます。 HSP3Dishの配置オブジェクトは、今後もHSP3と同様のパーツを拡充していく予定です。

レイヤーオブジェクトについて

レイヤーオブジェクトは、新しく提供されたユーザーによって定義される配置オブジェクトです。 あらかじめ画面上の描画を行うサブルーチンを登録しておくことで、指定したタイミング(レイヤー)で描画を実行させることができます。

			layerobj p1,p2,p3,*label,p4
			p1,p2     ; レイヤーオブジェクトのXYサイズ(ドット単位)
			p3(0)     : レイヤーID
			*label    : レイヤーオブジェクトの処理サブルーチン
			p4=0~(0) : オプション値

		 例 :
				layerobj 320,240,objlayer_normal,*laysub,100
				stop
			*laysub
				return
		

レイヤーオブジェクトはそれ自体では何の機能も持ちません。 画面内の特定のエリアをレイヤーオブジェクトとして管理し、描画のタイミングごとにユーザーのプログラム(コールバックルーチン)を呼び出します。 使い方は色々ありますが、後から追加されるモジュールなどで描画部分だけを独立して管理することができます。
また、objprm命令でパラメーターを受け取ることができ、独自の配置オブジェクトを設置したり、作成することも可能です。
レイヤーオブジェクトの詳細は、プログラミング・マニュアルの「レイヤーオブジェクト」の項目を参照してください。

標準スプライトについて

HSP3Dish、HGIMG4ランタイムでは、手軽に使用できる標準スプライトをサポートしました。
標準スプライトの命令は、hspdxプラグインとして追加されていた命令と互換があり、2D描画を手軽に扱うことが可能です。

HSP3で2D描画を行う際に、スプライト(矩形の画像)を利用するための手段はいくつか用意されていました。

		・HSPDXプラグイン
		・HGIMG/HGIMGXプラグイン
		・HGIMG3プラグイン
		・HGIMG4プラグイン
		・mod_spriteモジュール

この中で、HSPDX、HGIMG、HGIMGXまでのプラグインはHSP2時代のもので、すでに開発が終了しており、 現在のOSや環境で動作させることが困難になっています。
HGIMG3/HGIMG4プラグインには、3D機能とともに高機能な2Dスプライトとしての 機能も持っていますが、座標をすべて実数で管理し、機能が多い代わりに 習得する内容も増えて手軽には扱いずらい所がありました。
今回、最も長い歴史があり、多くのユーザーが使用してきたHSPDXプラグインの 命令をもとに、手軽で扱いやすい2D専用のスプライト命令を拡充しました。
シンプルな命令でスプライトを表示でき、スプライトの画像を自由に登録できる 柔軟なシステムを搭載しています。また、スプライトコールバックやマップ描画など ユニークな仕組みも導入され、元のHSPDXプラグインよりも利便性向上しています。
座標も整数で管理されており、2DゲームやUI表示などで扱いやすいものになっています。 もちろんイベントリストによる自律移動や3Dとの連携については、従来のプラグインを利用することもできます。
標準スプライトは、HSP3Dish、HGIMG4がサポートする全プラットフォームで動作します。 描画速度は、標準のHSP3ランタイムよりも優れており、ゲームの描画など速度を要求されるシーンでは ベストの選択肢となるはずです。
標準スプライトの詳細は、「標準スプライトプログラミングガイド」を参照してください。

コールバックルーチンについて

いままで、HSP3の中で発生していた割り込み、モジュール型変数のコンストラクタ、デストラクタなどを総称して 「コールバックルーチン」と定義し、従来よりも厳格に管理されます。
コールバックルーチン呼び出し時は限定された状況で、すぐにreturn命令により処理を終了させる必要があります。
以下の状況で呼び出されるラベル、またはユーザー定義命令はコールバックルーチンとして扱われます。

	・#deffunc命令で定義されるクリーンアップ命令の実行時
	・モジュール型変数のコンストラクタ、デストラクタ実行時
	・配置オブジェクト(objlayer)によるユーザー割り込み
	・es_setgosub命令によるスプライト表示割り込み(HSP3Dish)

コールバックルーチンは、通常のサブルーチンと同様に命令を記述することができますが、 wait,await,stop命令など時間待ちや停止をさせることができません。
もし、コールバックルーチンの実行中に使用できない命令があった場合は、 エラー42(コールバック内で使用できない命令です)というエラーが発生します。
コールバックルーチンの詳細は、プログラミング・マニュアルの「コールバックルーチン」の項目を参照してください。

objcolor命令について

配置オブジェクトの配色を指定するためのobjcolor命令が新規に追加されています。

	objcolor p1,p2,p3	配置オブジェクトの配色を指定する

		p1,p2,p3=0~255(0) : 色コード(R,G,Bの輝度)
		

objcolor命令により、入力ボックス等の配色を設定することができます。
objcolor命令による配色を有効にするためには、あらかじめobjmode命令のオプションで 「objmode_usecolor」を指定する必要があります。

	objmode objmode_usecolor
		

mesbox、input命令による入力ボックスは、rgbcolorで指定した文字色、color命令で指定した 背景色が適用されます。
また、mesboxによるテキスト入力ボックスは、[ctrl]+[A]キーにより全選択できるよう 修正されています。

rgbcolor命令について

24bitカラーコードを指定するためのrgbcolor命令が追加されています。
従来、RGBそれぞれを「color 1,2,3」のように分けてパラメーターを記述していたものを 「rgbcolor $010203」のような形で記述することができます。
Web(html)等で使用する「#112233」のようなRGBコードと親和性の高い指定方法です。
実行される内容は、color命令も、rgbcolor命令も変わりません。色のコードを記述する方法が異なるのみになります。

stick命令で取得されるキーの追加

カーソルキーを始めとして、ゲームなどで使用されるキーの情報をまとめて取得するstick命令で、新しく[Z][X][C]、及び[A][W][D][S]のキー情報が追加されています。
追加された情報は、以下の数値として格納されます。

値(10進)値(16進)キー
1 $00001 カーソルキー左(←)
2 $00002 カーソルキー上(↑)
4 $00004 カーソルキー右(→)
8 $00008 カーソルキー下(↓)
16 $00010 スペースキー
32 $00020 Enterキー
64 $00040 Ctrlキー
128 $00080 ESCキー
256 $00100 マウスの左ボタン
512 $00200 マウスの右ボタン
1024 $00400 TABキー
2048 $00800 [Z]キー
4096 $01000 [X]キー
8192 $02000 [C]キー
16384 $04000 [A]キー
32768 $08000 [W]キー
65536 $10000 [D]キー
131072 $20000 [S]キー
HSP3Dishを含むすべてのプラットフォームでキー情報が追加されます。 従来のキー情報の値に変更はありません。上位互換として使用することが可能です。

strexchange命令による文字列置き換えについて

新規に追加された、strexchange命令はスクリプトに含まれる文字列データをすべてまとめて置き換える機能を持っています。 これにより、スクリプト内で使用する文字列を別な言語に翻訳したり、バージョンによってメッセージを差し替えるなどの処理が容易になります。
文字列置き換えは、3つのステップで実現されます。

実際のサンプルが「sample/new36/strex_test1.hsp」「sample/new36/strex_test2.hsp」として同梱されています。 最初のステップは、文字列データの作成です。strex_test1.hspのスクリプトは、strex_test2.hspに含まれる文字列を文字列データとして、strex_test2.strmapファイルに書き出します。 このファイルは、使用されている文字列とその管理情報(スクリプト内で使用されている位置を示しています)で構成されています。
テキストエディタ等でstrex_test2.strmapファイルを編集し、この中から置き換える必要がある文字列を書き換えます。 たとえば、「***こんにちは***」という文字列を「***Hello***」に書き換えることができます。文字列の長さは変わっても問題ありません。実際に書き換えたデータ「strex_test2en.strmap」もサンプルフォルダに同梱されています。
最後に、strex_test2.hspスクリプトの中で、自分自身の文字列を置き換えます。strexchange命令で文字列を編集した、「strex_test2en.strmap」ファイルを指定することで、スクリプト内の文字列が自動的にすべて置き換わります。

	strexchange "strex_test2en.strmap"
		

これにより、スクリプト内の文字列に手を加えることなく、別な内容に置き換えが可能です。置き換えのためのファイルを、複数用意することにより多国語に置き換えることもできます。
文字列の置き換えを適用せず、スクリプト内の文字列に戻す場合は、

	strexchange ""
		

のように空の文字列を指定してください。 置き換え文字列データのファイルには、元の文字列を示す数値(ハッシュコード)が含まれています。このコードと、スクリプト内の文字列をマッチングさせて、置き換えを行っています。 ですから、同じ文字列は同一のハッシュとしてまとめられてしまいますので注意してください。
また、あくまでもスクリプト内の文字列が対象となっているため、外部のテキストファイルを読み込んだり、文字コードから文字列を生成している場合には適用されません。
色々な場面で、翻訳やカスタマイズに威力を発揮します。ぜひご活用ください。

zipファイルの圧縮解凍サポートについて

ZLibWrap.dllライブラリを使用したzipファイル圧縮解凍をサポートしました。
シンプルな2つの命令で、スクリプトからファイルの圧縮、解凍を行うことが可能です。

	#include "zipfile.as"
		

を記述することで、以下の命令を使用することができます。 (実行の際には、ZLibWrap.dllファイルが必要となります。)

	ZipCompress "srcfiles", "zipfile"

		"srcfiles"で指定したファイル(ワイルドカード使用可)を
		"zipfile"で指定したファイルに圧縮して保存します。

	ZipExtract "zipfile", "path"

		"zipfile"で指定した圧縮ファイルを、"path"で指定したフォルダに解凍します。
		

詳しくは、それぞれの命令ヘルプ、サンプルを参照してください

MUCOM88プラグインについて

HSP3.6では、MML記述によるFM音源再生をサポートするMUCOM88プラグインを標準で同梱しています。
NECのパソコンPC-8801シリーズで動作していた、FM音源のドライバーを再現したMUCOM88 Windowsが持つ機能を コントロールすることができます。
MUCOM88プラグインを使用することにより、単純な音楽の再生から、MMLの解釈までスクリプト言語から 幅広く制御することができます。
FM音源(OPNA)6音+PSG音源(3声)+リズム音源+PCM音源の合計11チャンネルをMML言語により記述できます。 Windowsのサウンド再生処理は、DirectX8以降のDirectSoundを使用し、Windows XP以降の環境で、 追加のコンポーネントを用意することなく動作させることができます。
MUCOM88プラグインの詳細は、付属のマニュアル(docs/hspmucom.txt)それぞれの命令ヘルプ、 サンプル(samples/mucom88)を参照してください。

HSPMUCOMは、Open MUCOM88プロジェクトの一部として公開されています。 Open MUCOM88プロジェクトについては、以下を参照してください。

	Open MUCOM88
		https://onitama.tv/mucom88/
		

Windows上で動作するMUCOM88 Windowsツール及びサンプルMMLが公開されています。
HSPMUCOM.DLL及びソースコードは、無償(非営利)である限りは自由に紹介、 複製、再配布することができます。その際には必ずドキュメントと ライセンス表記も含めるようにしてください。

hspswプラグインについて

HSP3.6では、Steamプラットフォーム用のAPIを呼び出すためのhspswプラグインを標準で同梱しています。
PCゲーム、PCソフトウェアをダウンロード販売するSteamプラットフォームで配信するアプリ上で、 ランキングや実績(トロフィー)、ステータスの読み書きといった機能をサポートすることができます。
hspswプラグインの詳細は、付属のマニュアル(doclib/hspsw.txt)、サンプル(samples/hspsw)を 参照してください。

	HSPSWプラグインマニュアル
		doclib/hspsw.txt
		

hspinetプラグインの更新について

hspinetプラグインのhttp/httpsリクエストで、 PUT/DELETEメソッドに対応したnetrequest_put、netrequest_deleteの 命令が追加されています。 これにより、より多くのWebAPIを利用することが可能になります。

	hspinetプラグインマニュアル
		doclib/hspinet.txt
		

64bit(x64)版ランタイムについて

64bit(x64)アプリとして動作するHSP3標準ランタイム(hsp3_64.exe)は、 標準でunicode(UTF-8)文字ベースで動作するものに変更されました。 使用する場合は、スクリプトの先頭に以下の行を指定してください。

	#include "hsp3_64.as"
		

動作の仕様は、HSP3UTF(UTF-8)版ランタイムと同様になっています。 64bit(x64)ランタイムは、64bit版のWindows上(Windows 7以降)でのみ動作します。

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

HSP3.51までのコンパクト版ランタイム(hsp3c)は、標準のHSP3から 一部機能を削除したものでしたが、HSP3.6から機能としては変わらないものになっています。 標準ランタイムとの大きな違いは、古いコンパイラによるシングルスレッドライブラリを 使用してビルドされており、ファイルサイズや使用メモリが削減されている反面で 新しいOSやCPU環境で実行の効率が落ちる可能性があります。
標準ランタイムは、最新のコンパイラ環境でビルドされており、多くの環境で効率的に 動作するよう最適化されています。
特に理由がない場合は、標準ランタイムを使用することを推奨しています。 ただし、標準ランタイムでは、Windows XP以降の動作をサポートするのに対して、 コンパクト版ランタイムは、Windows 98以降の動作をサポートしています。

コンパクト版ランタイムを使用する場合は、スクリプトの先頭に以下の行を指定してください。

	#include "hsp3c.as"
		

また、これに伴って、HSP3.51まで用意されていたマルチスレッド版ランタイム(hsp3mt)の同梱を終了しました。 hsp3mtを使用していたユーザーは、引き続き標準のHSP3ランタイムをご使用ください。

HSPTVフォルダ素材について

作品を発表する際に自由に使用することのできる画像と音のデータファイルとして、 HSPTVフォルダ素材を大幅に拡充しています。 手軽なライセンスで、HSP以外の作品でも使用することが可能です。 また、Web上でHSPのスクリプトを公開できる、「WebDishサービス」でも自由に参照することができます。 「HSPTVフォルダ素材」「WebDish素材」を活用して、多くの作品が作られることを願っています。

		HSP3.6 WebDish素材データ
		https://dev.onionsoft.net/seed/webdish_res.html
		WebDishサービス
		https://dev.onionsoft.net/seed/webdish.html
		

英語版インターフェースの対応について

Windows、及びLinux上のHSPランタイム実行時のエラーメッセージは、OS環境の文字コードをもとに日本語・英語を切り替えて表示します。
また、HSPインストールフォルダに、英語版スクリプトエディタを新規に同梱しています。
「hsed3_en.exe」を起動することで、メニューその他のインターフェースが英語になります。 HSP3本体の機能自体に変更はありませんが、英語版の環境で利用したい方はお試しください。
今後も、HSP開発環境の国際化に向けて準備を進めていきたいと考えています。

HSP3Dishのスクリーンサイズ変更について

HSP3Dish、HGIMG4のWindows/Linux版において、スクリーン(ウインドウ)サイズの動的な変更に対応しました。
いままでは、hsp3dish.iniファイルに記録されたサイズに従って起動時にサイズが固定されていましたが、 多くの方からサイズの変更とフルスクリーン対応の要望を頂き、修正致しました。 HSP3.6より、screen命令,bgscr命令によりスクリーン(ウインドウ)サイズを変更できます。

	screen p1,p2,p3,p4,p5,p6

	p1=0~(0) : ウィンドウID
	p2=1~(640): 初期化する画面サイズX(1ドット単位)
	p3=1~(480): 初期化する画面サイズY(1ドット単位)
	p4=0~1(0) : 初期化する画面モード
	p5=0~(-1) : ウィンドウの配置X(1ドット単位)
	p6=0~(-1) : ウィンドウの配置Y(1ドット単位)
		

p1のウインドウIDは、0のみとなります。 p4の初期化モードは、以下の値を指定することができます。

	  +4(screen_fixedsize) : サイズ固定ウィンドウ
	  +8(screen_tool)      : ツールウィンドウ
	 +16(screen_frame)     : 深い縁のあるウィンドウ
	 +256                  : フルスクリーン
		

p4に256を指定した場合は、指定された解像度のフルスクリーンとして初期化されます。
また、スクリーンサイズ変更時は、通常ランタイムとは異なり、それまでに読み込んだすべての画像バッファは失われますので注意してください。

viewcalc命令による座標変換について

HSP3Dish、HGIMG4において、描画時の座標変換を設定するviewcalc命令を追加しました。
viewcalc命令は、2D描画時のX,Y座標に任意の計算を適用することができる強力な機能です。 描画される表示物全体のスケーリングや移動、回転などを行うことができます。

	viewcalc p1,p2,p3,p4,p5

	p1(0)   : 設定モード
	p2(0.0) : パラメーター1(実数)
	p3(0.0) : パラメーター2(実数)
	p4(0.0) : パラメーター3(実数)
	p5(0.0) : パラメーター4(実数)
		

p1で指定する設定モードには、いくつかの種類があり多彩な変換を行うことが可能です。

	マクロ名            値   内容
	-----------------------------------------------------
	vptype_off           0   座標変換なし(デフォルト)
	vptype_translate     1   移動パラメーターを指定
	vptype_rotate        2   回転パラメーターを指定
	vptype_scale         3   スケールパラメーターを指定
	vptype_3dmatrix      4   4×4マトリクスによる座標変換
	vptype_2d            5   2D座標変換を設定
	vptype_3d            6   3D座標変換を設定
		

vptype_2dは、基本的な2D座標変換を適用するモードになっています。 パラメーター1~3で、X,Yのスケール(倍率)、回転角度(ラジアン単位)を設定することができます。

	viewcalc vptype_2d, 2.0, 2.0, 0.0
		

のように指定した場合は、X,Y方向に2倍のスケールで表示、角度は0となります。
他にも色々なパラメーターを指定できます。詳しくは、viewcalc命令のヘルプを参照してください。

celbitmap命令による画像データ制御について

HSP3Dish、HGIMG4において、変数バッファの内容を画像データとして扱うためのcelbitmap命令を追加しました。
これまで、HSP3Dishではドット単位の画像データに直接アクセスすることができませんでしたが、この命令によりメモリの内容を画像データとして読み書きできるようになります。

	celbitmap p1,var,p2

	p1(0)   : ウインドウID
	var     : イメージを置き換えるための配列変数
	p2(0)   : 動作オプション
		

celbitmap命令を使用する際には、あらかじめbuffer命令により作成したオフスクリーンバッファと、置き換えるための変数バッファを初期化する必要があります。
オフスクリーンバッファは、buffer命令でscreen_offscreenのオプションを指定して作成してください。

	buffer 2,256,256,screen_offscreen
		

その後、バッファを置き換えるための変数バッファを作成します。
dim命令により、1次元配列を初期化して作成してください。作成するサイズは、オフスクリーンバッファのXサイズ×Yサイズになります。

	dim bitmap, 256*256
		

これで、celbitmap命令を使用する準備が整いました。
celbitmap命令により、オフスクリーンバッファのIDと配列変数を指定することで、変数バッファの内容がそのまま画像イメージとして適用されます。
変数バッファは、1要素あたり1ドットとなります。1ドットは、32bitの要素をR,G,B,Aそれぞれ8bit単位で格納されるRGB形式のデータとなります。(3.6β2版と3.6β3版でRGBの並び順が変更になっています。ご注意ください)
たとえば、「$ff204080」(16進数)を指定した場合は、A=$ff(255)、B=$20(32)、G=$40(64)、R=$80(128)となります。(カッコ内は10進数)
画像データの置き換えは、コストの高い処理になるため、大きなサイズのイメージを置き換える場合、フレームレートが下がることがありますので注意してください。
p2パラメーターにより、置き換えの形式や動作を指定することができます。

	 値  マクロ             動作
	---------------------------------------------------------
	  0  celbitmap_rgb      $aabbggrr形式でデータを保持する
	  1  celbitmap_bgr      $aarrggbb形式でデータを保持する
	  16 celbitmap_capture  描画画面の内容を変数に読み出す
		

通常は、OpenGLの標準に合わせたcelbitmap_rgbの形式が使用されます。オプションにcelbitmap_bgrを指定した場合は、DirectX標準に合わせたARGBの並びになります。
celbitmap_captureを指定した場合は、描画先の画面上のデータを配列変数に読み出します。(読み出しのサイズはオフスクリーンバッファのサイズになります)
※celbitmap_captureオプションは、実験的な実装です。現在は、Windows(DirectX版HGIMG4を除く)、Linux版でのみ使用できますのでご了承ください。

HSP3DishのiOS,android版更新について

HSP3DishのiOS,android版は、それぞれの新しいSDKに対応しています。

	iOS版	  : XCode10以降用 iOS14,64bit対応
	android版 : Android SDK 10 (API 29),64bit対応、
	            SDKr25、NDK r12以降、AdMob(Google Firebase)対応
		

iOS、android版ともに64bitバイナリの出力に対応しています。 それぞれ対応したバージョンのSDKや開発環境が必要となりますので、 詳しくは、マニュアルを参照してください。

	HSP3Dishマニュアルインデックス
		hsp3dish.htm
		
既存のプロジェクトが正しくビルドできなくなる可能性があるため、 既存のプロジェクトは、再度作成し直すことを推奨します。

HGIMG4の更新について

HSP3.6では、それまでのHGIMG4から大きく修正を行なっています。 より強力で使いやすくなるよう、各種機能を見直しました。 以前のバージョンからの上位互換で動作するよう設計されていますが、 一部の機能で動作が異なる場合がありますので、過去に作成したスクリプトを 動作させる際にはご注意ください。 詳しく使い方は、HGIMG4プログラミングガイドをご覧ください。

	HGIMG4プログラミングガイド
		doclib/hgimg4.html
		

追加変更された項目の概要は以下の通りです。

ONION software