================================================================================ ezlocal-dish-js モジュール Version 2.7 Copyright(C) 2024-2025 MIZUSHIKI ================================================================================ - 概要 -------------------------------------------------------------------------------- HSP3Dish.js をローカルで動作させる為の環境を構築、簡単にテストできるようにします 。 また、HSP3Dish helper の実行補助、出力HTMLの調整、nginx(ローカルサーバ)の起動、 テスト用ディレクトリへのファイルコピー、ローカル実行URLのリンク表示も行います。 QRコードを利用してスマホからローカル実行URLへ簡単にアクセスできます。 さらに、ランキング作成などが簡単になるPHP連携モジュールezphp.phpを同梱。 簡単にサーバへのテキスト保存またはSQLiteデータベース記録ができるようになります。 - 使い方 -------------------------------------------------------------------------------- #include "hsp3dish.as" #include "ezlocal-dish-js.hsp" ezLocalJS hsp3dish.as をインクルードした行のすぐ後で ezlocal-dish-js.hspをインクルードし、 ezLocalJS を実行してください。 -- 注意 ------------------------------------------------------------------------------ ezlocal-dish-js.hsp の中で通常ランタイムに上書き(#runtime "")しています。 このモジュールを使用しないときは ezLocalJS の行だけでなく #include "ezlocal-dish-js.hsp" の行もコメントアウトしてください。 - 対象HSP3バージョン -------------------------------------------------------------------------------- ・推奨: HSP3最新バージョン (β版も含むその時の最新版) ・動作可能: HSP3.51 ~ 但し HSP3.6, HSP3.7β1, HSP3.7β2 は「ブラウザ上にデータ保存できるようにする」が 使えません。 同梱サンプルはなるべくHSP3の最新バージョンでお試しください。 (テスト時のバージョンは HSP3.7β9 です。) 特に sample2, sample3 はブラウザへのデータ保存に依存した処理があるため HSP3.7β3 以降で確認してください。 - インストールされる環境について -------------------------------------------------------------------------------- -- nginx ------------------------------------------------------------------------------ フリーでオープンソースなWebサーバアプリケーション - 製作者: Igor Sysoev (Nginx Inc.) - 公式サイト: https://nginx.org - 保存場所: C:\nginx -- PHP-FPM ------------------------------------------------------------------------------ PHP実行方式の一つ。FastCGIプロトコルを介してWebサーバーと通信して処理を行う - 著作: Copyright © 2001-2024 The PHP Group - 頒布先: https://windows.php.net/download/ - 追加モジュール: bz2,curl,fileinfo,gettext,mbstring,exif,mysqli,pdo_mysql, pdo_sqlite,sqlite3 - 保存場所: C:\nginx\php - 環境のアンインストールについて -------------------------------------------------------------------------------- インストールする nginx はレジストリを書き換えません。 「C:\nginx」フォルダを削除すればアンインストール完了です。 PHP-FPMも「C:\nginx\php」に保存しているので一緒に消えます。 - オプションについて -------------------------------------------------------------------------------- hsp3dish.ini内の「; ezlocal-dish-js settings」で区切ったその下に ezlocal-dish-js 専用のオプション値を保存させてもらっています。 HTML調整オプションの中に「出力HTMLにスマホ表示等の調整を行う」がありますが、これ を指定するとHTMLソースにいくつかの調整を行います。 hsp3dish.ini内に下記のコマンドを書き込むことで調整を行うかどうかを個別に取捨選択 することができます。 「noAdj_***=1」を書き込むことで以下で解説している調整をしないようになります。 -- noAdj_border=1 ------------------------------------------------------------------------------ ゲーム画面の周りを囲んでいる線を消しています。 -- noAdj_controls=1 ------------------------------------------------------------------------------ 「Downloading...」などのステータス表示部分をゲームロード後に消しています。 また、昔名残のコントロールの残骸も邪魔になることがあるので消しています。 -- noAdj_systembox=1 ------------------------------------------------------------------------------ 下部に表示されている黒いシステムメッセージボックスを非表示にしています。 ただし、「#Error」が表示されるときは再表示するようになっています。 また、「デバッグ情報を出力する」を指定している場合はエラーではないメッセージが 表示されるときも再表示するようになっています。 -- noAdj_mobile=1 ------------------------------------------------------------------------------ スマホでページを表示したときに画面いっぱいに広がるように表示解像度を調整してい ます。 -- noAdj_logmes=1 or 2 ------------------------------------------------------------------------------ 「デバッグ情報を出力する」チェック時にlogmes内容を下部の黒いシステムメッセージ ボックスに表示するようにしています。 『1』でこれをしないようになり、『2』でconsole.logに表示するようになります。 -- noAdj_fixmtinfo=1 ------------------------------------------------------------------------------ HSP3.7β9まで、動作解像度(ENV.HSP_WX,WY)と表示解像度(ENV.HSP_SX,SY)が異なると きmtinfo,mousex(y)の値がズレてしまうようなので補正するようにしています。 - ブラウザへのデータ保存の仕方 -------------------------------------------------------------------------------- HTML調整オプション「ブラウザ上にデータ保存できるようにする」を指定するとsaveフォ ルダのような物が作られそこに保存できるようになります。 ・「save/ファイル名」を指定してテキスト等を保存できる。 ・フォルダを含めたファイルパスを指定する場合「\\」ではなく「/」を使用する。 ・「chdir "save" : notesave "frame.txt"」などカレントフォルダの移動が可能。 ・chdir "/save" とすると絶対パス扱いで一番親のsaveフォルダに移動できる。 (chdir "/" でsaveフォルダの1つ上のフォルダに移動できる。起動時の初期位置) ・保存を有効にするために必ず「devcontrol "syncfs"」を実行する必要がある。 ・ブラウザに保存されているデータを確認したい場合は、ブラウザの メニュー>その他 のツール>開発者ツール を起動。(ここではMicrosoft Edgeで説明) 「要素」「コンソール」などの並びの後ろのほうにある「アプリケーション」タブを開 き ストレージ>IndexedDB>/save>FILE_DATA を確認すると「キー」と「値」が表示 され、これが「ファイル名」と「データ」に相当する。 「contents: Int8Array」のところでメモリダンプのような形で確認でき、その行の右 端の方にある小さいアイコン「メモリインスペクターパネルで表示」をクリックすると 画面下部に詳細が表示される。 アルファベットなどは確認できるが日本語は表示されない。メモリを見るにUTF-8文字 列で保存されている模様。ここに表示されないだけで日本語でもちゃんと取り出せる。 - 同梱物 ezphp.php による テキスト保存, データベース編集 について -------------------------------------------------------------------------------- phpを介してテキスト保存/読込とsqlite編集を行う簡易的なサンプルを同梱しています。 mod_ezphp.hsp内にヘルプが記載されており、commonフォルダに置けばF1ヘルプでも参照 できます。 具体的な使い方はサンプルの sample2_ezphp-saveload.hsp, sample3_ezphp-sql.hsp を 参照してください。 また、SQLiteのデータベースファイルは簡単に中を見れたり編集できるフリーソフトがあ るので活用してみてください。 ・#include "mod_ezphp.hsp" があれば、ezphp.php もテスト用ディレクトリにコピーさ れるようになっています。 - 同梱物 mod_dish-js-gamepad.hsp について -------------------------------------------------------------------------------- Gamepad API を利用してゲームパッドの入力情報を取得しています。 https://developer.mozilla.org/ja/docs/Web/API/Gamepad_API mod_dish-js-gamepad.hsp内にヘルプが記載されており、commonフォルダに置けばF1ヘル プでも参照できます。 具体的な使い方はサンプルの sample5_gamepad.hsp を参照してください。 (法貴優雅さんのサンプルスクリプトを流用させて頂いてます。ありがとうございます!) https://hsp.tv/play/pforum.php?mode=pastwch&num=81890#81895 ゲームパッドが正しく機器に接続され、モジュールでゲームパッドを認識できる状態かど うかは以下のサイトで簡単に確認することができます。 Gamepad Tester - Check Controllers and Joysticks Online https://hardwaretester.com/gamepad - mtinfo, mousex, mousey の補正について -------------------------------------------------------------------------------- 動作解像度(ENV.HSP_WX,WY)と表示解像度(ENV.HSP_SX,SY)が異なるときmtinfo,mousex(y) の値がズレてしまうバグがあるようなので ezlocal-dish-js にはそれを補正する仕組み が内臓されています。 補正はhsp3dish.jsの改造とmtinfo,mousex(y)の#undefと再定義によって行われます。 mousex(y)は「redraw 0」の中で補正される仕組みなので「redraw 0」前では参照せず、 それ以降にmousex(y)の参照を記述してください。 補正が必要ない場合は、上述のオプション項目内の「noAdj_fixmtinfo=1」を参照して対 応してください。 (この補正はhsp3js\hsp3dish.jsの更新日時が2024/7/9以前の場合に適用されます。) - wpeek, lpeek, wpoke, lpoke の修正について -------------------------------------------------------------------------------- wpeek, lpeek, wpoke, lpoke は第2引数にバッファインデックス(Byte単位)を指定します が wpeek, wpoke は2byte毎、lpeek, lpoke は4byte毎の飛び飛び指定しかできません。 (5byte目を指定してwpeek,lpeekしても丸められて4byte目を指定したことになります。) これはメモリアライメントと呼ばれ実行環境によって制限が左右されるようです。 HSP3Dish.js を Windows上のブラウザで使用する場合はこの制限に当たるようです。 ezlocal-dish-js 使用時はこれらの命令を上書きして全て1byte毎に読み書きするように peek, poke へと分解しています。 ただしこの修正では、ちゃんと2byte毎4byte毎で処理を想定していた場合は分解される分 処理が遅くなってしまいます。 その場合は lpoke@hsp や wpeek@hsp() のように書くことで本来の命令を使用できます。 - HGIMG4のオートスケーリング修正対応について (unofficial-dish-js) -------------------------------------------------------------------------------- HSP3.7β9以下の環境でHGIMG4を使用する場合、公式のデータファイルではスマホ表示用 等のオートスケーリングが動作しません。 HSP3アップデーターでインストールした場合は、hsp3jsフォルダ(HSP3インストールフォ ルダ内)に以下の非公式ファイルが作成され、使用されます。 ・hsp3dish-gp.ezlocal-dish.js ・hsp3dishw-gp.ezlocal-dish.js ・hsp3dish-gp.ezlocal-dish.wasm HSP3アップデーターを使用しなかった場合は、ezlocal-dish-jsで「HGIMG4を使用する」 際にこれらの非公式ファイルをダウンロードしても良いか聞かれます。 (この対応はhsp3js\hsp3dish-gp.jsの更新日時が2024/7/9以前の場合に適用されます。) -- 上記のバグ修正について -------------------------------------------------------------------------------- これらのバグはHSP3.7β9時点において確認され、HSP3.6でも同じ症状を示しています。 公式へバグ報告したので、おそらく次回のアップデートでいくつかのバグは修正されると 思われます。 - 使用ライブラリ -------------------------------------------------------------------------------- qrcodelib.dll _ Copyright (C) 2006-2018 Kentaro Fukuchi QRコードを生成するための高速かつコンパクトなライブラリ ・ライセンス :GNU Lesser General Public License (LGPL) ・バイナリ頒布先: http://code.google.com/p/qrencode-win32/ ・ソースコード : https://github.com/fukuchi/libqrencode ・HSP3コード参考: https://codetter.com/?p=525 * ezlocal-dish-jsモジュール内にも文字列データ化したdllを内包。モジュールファイル だけでdllが見つからないときはdllをカレントディレクトリに吐き出して保存します。 文字列データ化と吐き出し方については以下を参考にしました。ありがとうございます。 mod_MSZip : Cabinet.dllを使用した圧縮解凍モジュール - HSPメモ帳 (Hiro さん) - https://blog.goo.ne.jp/hiro239415/e/fe657bd57b6d2de0c4855c0578452dd9 - 同梱ファイル -------------------------------------------------------------------------------- -- misaki_gothic_2nd.ttf ------------------------------------------------------------------------------ 美咲フォントTTF版「美咲ゴシック第2」: 8×8ドットの日本語ビットマップフォント - 製作者: 門真 なむ (Num Kadoma) - 公式サイト: https://littlelimit.net/font.htm - ライセンス: フリー[自由に利用、複製、再配布できるが、全て無保証] (詳細はsample_font\license_misaki.txtを参照ください) -- k8x12S.ttf ------------------------------------------------------------------------------ k8x12の非漢字を縦8ドット字形に変更 : 8×12ドットの日本語ビットマップフォント - 製作者: 門真 なむ (Num Kadoma) - 公式サイト: https://littlelimit.net/font.htm - ライセンス: フリー[自由に利用、複製、再配布できるが、全て無保証] (詳細はsample_font\license_k8x12.txtを参照ください) -- HGIMG4描画用シェーダーおよび画像ファイル(qbox.png) ------------------------------------------------------------------------------ HGIMG4とソースコードは修正BSDライセンス適用 : 複数ライブラリ使用し開発されてる - 製作者: Onion Software - 公式サイト: https://hsp.tv/ - ライセンス: 修正BSDライセンス (詳細はsample_hgimg4\license_hgimg4.txtを参照ください) - 免責、著作権、連絡先 -------------------------------------------------------------------------------- -- 免責 ------------------------------------------------------------------------------ 作者は、本モジュールの使用または使用不能から生じるコンピュータの故障、情報の消 失、その他あらゆる直接的及び間接的被害に関して一切の責任を負いません。 これに同意できない場合、本モジュールの使用を禁止します。 -- 著作権 ------------------------------------------------------------------------------ 著作権は作者である MIZUSHIKI が所有します。 Copyright(C) 2024-2025 MIZUSHIKI -- 連絡先 ------------------------------------------------------------------------------ [作者メールアドレス] suwa.mizushiki@gmail.com ================================================================================ - Changelogs -------------------------------------------------------------------------------- 2.7 2025/ 1/ 3 --------------------- - HGIMG4使用時に自動チェックするなどHGIMG4対応とサンプル(sample8,9)を追加同梱 - 実行しているデバイスの環境を調べるdishjs_devtype関数を追加 - ezLocalJS命令に自動チェックオプションを追加 - mtinfo,mousex(y)ズレ補正をlayerobj利用でなくredrawの再定義で行うように変更 - wpeek,lpeek,wpoke,lpokeのメモリアライメント問題を上書き修正 - モジュールを二重定義されないようにした - その他の細かい箇所の変更と修正 2.6 2024/11/ 2 --------------------- - delete命令を上書きしてブラウザ上のデータファイルを削除できるようにした - #dishjs_fontでフォント解像度や文字描画領域を調整できるようにした - 動作表示解像度違いズレ補正がマウスドラッグ時mousex(y)を更新できないバグを修正 - その他の細かい箇所の変更と修正 2.5 2024/10/30 --------------------- - ezphpsave,ezphploadにハッシュを利用した内容変更検出機能を追加 - #dishjs_fontコマンドを追加しフォントを変更できるようにした - その他の細かい箇所の変更と修正 2.4.1 2024/10/26 --------------------- - ezphploadでサイズが0byteのファイルを読み込むとエラーが出るのを修正 2.4 2024/10/26 --------------------- - ezphpsave,ezphploadにsaveフォルダ内かつ英数記号文字の制限を設けた - 動作解像度と表示解像度が異なるときのmtinfo,mousex(y)のズレを補正するようにした - 「デバッグ情報を出力する」でのlogmes表示に改行が含まれると起こるバグを修正 - その他の細かい箇所の変更と修正 2.3 2024/10/ 9 --------------------- - ezLocalJS命令に自動操作オプションを追加 - 「デバッグ情報を出力する」時にlogmes内容を下部の黒いシステムメッセージボックス に表示(オプションでOFFまたはconsole.log化可能) - 「ブラウザ上データ保存」に関して勘違いにより制限を注意喚起していたが文言を削除 - その他の細かい箇所の変更と修正 2.2 2024/ 9/22 --------------------- - ゲームパッドを利用できるようにするモジュールとサンプル(sample5)を追加同梱 - C:\nginxフォルダにPHP-FPMが入っていない場合の処理を追加 - その他の細かい箇所の変更と修正 2.1 2024/ 9/10 --------------------- - PHP-FPM(PHP実行環境)もインストールすることにした - ezphp.phpや新規サンプル(sample2,sample3)を追加同梱 - オプションにスマホ横向き全画面FIT(β機能)を追加。サンプル(sample4)追加同梱。 - オプションの表示解像度調整対象からタブレットを除外 - その他の細かい箇所の変更と修正 2.0.1 2024/ 8/26 --------------------- - ローカルIP取得が上手くいかないことがあったのでWi-Fi項目を優先取得に修正 2.0 2024/ 8/23 --------------------- - インストールするローカルサーバ環境をXAMPPからnginxに変更 - 127.0.0.1(localhost)のrootフォルダをデフォルト値でなく設定値を調べるようにした - IPv4アドレスの取得を英語版でも取得できるように修正 - その他の細かい箇所の変更と修正 1.1 2024/ 8/20 --------------------- - 二重起動防止の方法を起動させないのでなく前回のウィンドウを消すことに変更 - HTML調整でシステムメッセージとコントロール非表示のタイミングを変更 - HTML調整で画面サイズに合わせた表示解像度化をスマホだけでなくタブレットにも適用 - 画面サイズ指定されてることが明らかなのにhsp3dish.iniがない場合に警告を表示 - hsp3dish.iniオプションのsx,syに文字列の指定も可能にした - hsp3dish.ini作成時やdataファルダの有無注意喚起時にdotfw.asを考慮するようにした - hspinet,mod_regexpを独自関数登録していたがincludeに戻した - その他の細かい箇所の変更と修正 1.0.1 2024/ 8/18 --------------------- - hsドキュメント追加(モジュール内) - オプションの非対象バージョン時OFFと変数定義位置修正 1.0 2024/ 8/16 --------------------- - 公開 ================================================================================