2023/11/28(火) [n年前の日記]
#1 [hsp] HSPDXについて調べている
プログラミング環境 HSP は、HGIMG3 を使うと DirectX で描画できるけど、直接描画時に奇数サイズを指定しても偶数サイズになってしまうバグがある。DirectX を使って描画できるプラグインとして、HGIMG3 の他に HSPDX があったことを思い出したので、そのあたりを調べてた。
_Divide by 0
_HSPDXFIX for HSP2.6x&3.x Ver 0.19c 2007/06/19 - ソフトウェアダウンロードコーナー
_緊急企画DirectXを使おうの巻
_緊急企画DirectXを使おうの巻
_緊急企画DirectXを使おうの巻
_DirectXスクリーンセーバー3分クッキングの巻
_OHDL - Reference - hspdxfix
ちなみに、HSPDX と HSPDXFIX があるけれど、HSPDXFIX の内容はHSPに同梱されている HSPDX に反映されているらしい。
_Divide by 0
_HSPDXFIX for HSP2.6x&3.x Ver 0.19c 2007/06/19 - ソフトウェアダウンロードコーナー
_緊急企画DirectXを使おうの巻
_緊急企画DirectXを使おうの巻
_緊急企画DirectXを使おうの巻
_DirectXスクリーンセーバー3分クッキングの巻
_OHDL - Reference - hspdxfix
ちなみに、HSPDX と HSPDXFIX があるけれど、HSPDXFIX の内容はHSPに同梱されている HSPDX に反映されているらしい。
- HSP 3.7 beta 7 同梱の hspdx.dll と、作者様のサイトで配布されている hspdxfix.dll は、バイナリが同じだった。
- hspdx.as と hspdxfix.as も内容がほとんど同じだった。
◎ 注意点その1 :
HSPDX の利用について、いくつか問題がある。まず、HSP 3.5以降では、HSPDX は古いプラグインということで、使用は非推奨になっていた。ちなみに、HSPの現行版は HSP 3.6。
_HSP3.5 アップデートガイド
_HSP3 アップデートガイド (HSP3.6アップデートガイド)
HSP 3.5 以降は、hspdx.dll と hspdx.as はかろうじて同梱されているものの、HSPDX のヘルプファイルやマニュアルページは同梱されてない。そのあたりが欲しかったら、HSP 3.4 (hsp34a.zip) を入手するか、hspdxfix を別途入手して HDP3.x のインストールフォルダにコピーしないといけない。
_HSP3.4でのセキュリティソフト誤認識について(技術情報)
_HSPDXFIX for HSP2.6x&3.x Ver 0.19c 2007/06/19 - ソフトウェアダウンロードコーナー
それにしても、「HSP3DISHを使え」と言われても…。HSP3DISHではスクリーンセーバを作れないから他のプラグインを検討してるわけで…。 *1
_HSP3.5 アップデートガイド
llmod3,HGIMG/HGIMGX,HSPDXのプラグイン・モジュールは非推奨となっています
5. パッケージの同梱終了について
(中略) また、以下のプラグイン・モジュールは、非推奨として扱われているため、マニュアル及びヘルプは、提供されません。
* llmod3 -> HSP3に対応した各種モジュールをご使用ください
* HGIMG / HGIMGX (3D描画用プラグイン) -> HGIMG3/HGIMG4をご使用ください
* HSPDX (2D描画用プラグイン) -> HSP3DISHをご使用ください
これらのプラグイン・モジュールは、コードが古くなっており、現行のWindows上での動作が保証されません。既存コードのコンパイル及び実行はサポートされますが、将来のバージョンでは対応されない可能性があります。
_HSP3 アップデートガイド (HSP3.6アップデートガイド)
4. パッケージの同梱終了について
これまでのフルセットに同梱されていたllmod3、HGIMG / HGIMGX (3D描画用プラグイン)/HSP3MT(ランタイム)/HSPLetパッケージは、同梱されません。 古いパッケージに含まれているランタイムを引き続き使用することは可能ですが、非推奨として扱われているため、マニュアル及びヘルプは、提供されません。
* llmod3 -> HSP3に対応した各種モジュールをご使用ください
* HGIMG / HGIMGX (3D描画用プラグイン) -> HGIMG3/HGIMG4をご使用ください
* HSPDX (2D描画用プラグイン) -> HSP3DISHをご使用ください
* HSP3MTランタイム -> hsp3utfやhsp3_64をご使用ください
* HSPLetランタイム -> HSP3Dish(html5)をご使用ください
これらのプラグイン・モジュールは、コードが古くなっており、現行のWindows上での動作が保証されません。 既存コードのコンパイル及び実行はサポートされますが、将来のバージョンでは対応されない可能性があります。
HSPDXプラグインは、古くからの利用者も多く現在のシステムでも実行可能なため、プラグインファイル自体は同梱されていますが、新規で使用することは推奨されません。
HSP 3.5 以降は、hspdx.dll と hspdx.as はかろうじて同梱されているものの、HSPDX のヘルプファイルやマニュアルページは同梱されてない。そのあたりが欲しかったら、HSP 3.4 (hsp34a.zip) を入手するか、hspdxfix を別途入手して HDP3.x のインストールフォルダにコピーしないといけない。
_HSP3.4でのセキュリティソフト誤認識について(技術情報)
_HSPDXFIX for HSP2.6x&3.x Ver 0.19c 2007/06/19 - ソフトウェアダウンロードコーナー
それにしても、「HSP3DISHを使え」と言われても…。HSP3DISHではスクリーンセーバを作れないから他のプラグインを検討してるわけで…。 *1
◎ 注意点その2 :
HSPは実行ファイル(.exe)を作れるけれど、拡張プラグインと呼ばれる .dll を利用している場合、作成した .exe と同じ場所に .dll を置いておかないといけない。hspdx.dll や hspdxfix.dll も拡張プラグインなので、生成した .exe と同じ場所に hspdx.dll or hspdxfix.dll を置いておくことになる。
もし、HSPDX を使ってスクリーンセーバを作った場合、利用者に対して、スクリーンセーバと同じ場所に hspdx.dll も置くことも要求しないといけない。それはちょっとアレだなと…。
ちなみに、HGIMG3 や hsp3dish は、拡張プラグインとは別の扱いらしい。HSP で生成した .exe の中に、おそらく HGIMG3 や hsp3dish の機能も含めてくれるようで、別途 .dll を置いておく必要はない。
もし、HSPDX を使ってスクリーンセーバを作った場合、利用者に対して、スクリーンセーバと同じ場所に hspdx.dll も置くことも要求しないといけない。それはちょっとアレだなと…。
ちなみに、HGIMG3 や hsp3dish は、拡張プラグインとは別の扱いらしい。HSP で生成した .exe の中に、おそらく HGIMG3 や hsp3dish の機能も含めてくれるようで、別途 .dll を置いておく必要はない。
◎ 注意点その3 :
HSPDX を使うには、MSVCR71.DLL が必要らしい。作者様のサイトで配布されているようなので、入手して hspdx.dll と一緒に配布したほうがいいのかもしれない。
_ソフトウェアダウンロードコーナー
自分の環境、Windows10 x64 22H2 の場合、C:\Windows\SysWOW64\ 以下に msvcr71.dll が入っていた。タイムスタンプは 2003/02/21。ファイルバージョンは 7.10.3052.4 になっていた。
_ソフトウェアダウンロードコーナー
自分の環境、Windows10 x64 22H2 の場合、C:\Windows\SysWOW64\ 以下に msvcr71.dll が入っていた。タイムスタンプは 2003/02/21。ファイルバージョンは 7.10.3052.4 になっていた。
◎ HSPDXの動作確認をした :
HGIMG3 は、hgrotate や hgrect を使った際、奇数サイズが偶数サイズになってしまうけれど、同じことを HSPDX で行ったらどうなるのか確認してみた。環境は Windows10 x64 22H2 + HSP 3.7 beta 7。
以下は8倍に拡大した図。
HSPDX は、奇数サイズはちゃんと奇数サイズで描画してくれる模様。描画速度に関してはまだ調べてないけれど、少なくとも見た目に関しては、HGIMG3 より真っ当な描画結果を返してくれるようだなと…。
検証に使ったソースと画像は以下。.
_01_hspdx_es_excopy.hsp
_tex_image.zip (tex.bmp, tex.png を入れてあるので解凍して利用)
以下は8倍に拡大した図。
HSPDX は、奇数サイズはちゃんと奇数サイズで描画してくれる模様。描画速度に関してはまだ調べてないけれど、少なくとも見た目に関しては、HGIMG3 より真っ当な描画結果を返してくれるようだなと…。
検証に使ったソースと画像は以下。.
_01_hspdx_es_excopy.hsp
_tex_image.zip (tex.bmp, tex.png を入れてあるので解凍して利用)
◎ ウインドウモードの動作について :
HSPDX は、es_screen命令を使って、フルスクリーンモードかウインドウモード(ウインドゥモード)を指定できるけれど、ウインドウモード時のサイズ指定が反映されないことに気づいた。
初期ウインドウサイズ(640x480)より小さいサイズを ―― 例えば 512x288等なら指定が反映されるけど。初期ウインドウサイズより大きいサイズを ―― 例えば 1280x720 を指定しても無視されてしまって、初期ウインドウサイズの中に指定したサイズが縮小表示されてしまう状態になった。描画内容が妙に小さくなってしまったので、最初は結構焦った…。
でもまあ、ドキュメント(HSPDXFIX.TXT)内で以下の記述があるので…。
HSPDX は、あくまでフルスクリーン描画を前提としたプログラムを作るためのプラグイン、と思っておいたほうがいいのかもしれない。
初期ウインドウサイズ(640x480)より小さいサイズを ―― 例えば 512x288等なら指定が反映されるけど。初期ウインドウサイズより大きいサイズを ―― 例えば 1280x720 を指定しても無視されてしまって、初期ウインドウサイズの中に指定したサイズが縮小表示されてしまう状態になった。描画内容が妙に小さくなってしまったので、最初は結構焦った…。
でもまあ、ドキュメント(HSPDXFIX.TXT)内で以下の記述があるので…。
このモードを使用することにより、デバッグをよりスムーズに行うことができますが、フルスクリーンモードでの動作に比べていろいろと制約があり、環境によってはパフォーマンス面で HSPの標準ウィンドウでの動作とほとんど変わらないことがあるため、デバッグ専用のモードだと割り切って使用した方がよいでしょう。
HSPDX は、あくまでフルスクリーン描画を前提としたプログラムを作るためのプラグイン、と思っておいたほうがいいのかもしれない。
◎ フルスクリーンモードが不安 :
Windows10 x64 22H2上でフルスクリーンモードを試してみたけれど、画面が出てくるまで妙に時間がかかる…。終了時も即座に終了せず、結構待たされる…。
DirectX等でフルスクリーンモードに切り替えると、デスクトップ上のアイコンの位置が盛大に変わってしまう問題が起きたりもするので、フルスクリーンモードへの変更は、ちと怖い…。
DirectX等でフルスクリーンモードに切り替えると、デスクトップ上のアイコンの位置が盛大に変わってしまう問題が起きたりもするので、フルスクリーンモードへの変更は、ちと怖い…。
*1: いやまあ、「今時スクリーンセーバ作るヤツなんて居ねえだろ」と思われてる可能性もありそうだけど。スクリーンセーバをまだ比較的簡単に作れそうだから、あえてわざわざHSPを使おうとしているわけで…。スクリーンセーバにしないで、単にデモプログラムの類を作るなら、HSPじゃなくて別言語+別ライブラリを選んだほうがいい…。HSPの言語仕様は正直ツラいものがあるので…。
[ ツッコむ ]
以上、1 日分です。