onitama / openhsp Goto Github PK
View Code? Open in Web Editor NEWHot Soup Processor (HSP3)
Home Page: https://hsp.tv
License: BSD 3-Clause "New" or "Revised" License
Hot Soup Processor (HSP3)
Home Page: https://hsp.tv
License: BSD 3-Clause "New" or "Revised" License
どうやら、repeat loop
間で呼び出されたスタックの呼び出し命令が無視されています。
コード例
#define ctype add(%1) %tstack %s1 mes "add " + %1
#define opt %tstack mes "opt " + %o
add("1")
add("2")
add("3")
add("4")
add("5")
repeat 5
opt
loop
エラーメッセージ
#HSP script preprocessor ver3.6beta3 / onion software 1997-2020(c)
#Use file [hspdef.as]
#Use file [dish_enhance.as]
#1 unresolved macro(s).[ss.hsp]
stack
#Fatal error reported.
linux/hsp3ext_sock.cppが最近追加されたようですが、対応する.oがOBJS内に追加されていないようです。
※OpenHSPはsvnとgitを併用して開発されているので、こういった報告をどこにすべきかよくわかっていません。報告する場所が別にあるのでしたら申し訳ありません。
※ svnが主なのであればPullRequestsを送るとsvn側がまずいかなと思ったので そうしておりません。 PullRequestsを送るべきであればそのようにいたします。
memset の sizeof(buf)
はここでは sizeof(char*)
なので、おそらく間違っています。
OpenHSP/src/hsp3/linux/hsp3gr_linux.cpp
Lines 94 to 100 in 01ef11a
現状はユーザー定義関数の実行が無限ループ内で行われるので動作が止まってしまいます。
具体的にはこういったコードで、ユーザー定義関数内で有効な操作があるまで画面更新を行わずawait
ループを回すようなプログラムが動きません。
https://github.com/AmefuriTell/amayadori/blob/a5ff39165aac7b11b731e3dd37e5da49ecab1ab9/reversi/Reversi.hsp
解決案の一つとしてはasyncifyを使うと大きな変更なく上のようなプログラムも動くようになりました。
ただし、出力されるhsp3dish.jsのサイズが元の1.9Mから2.4MBに増えました。
これは、asyncifyを適用する関数をコンパイル時に指定すれば軽減できるそうです。
master...zakki:em-asyncify
他の対応として素直にはcode_callfunc()
内で実行せずに親側で実行することも考えられますが、手を入れる必要のある個所が多そうです。
不具合の説明
chdpm 命令で絶対パスを指定すると、エラー 12 で DPM ファイルの読み込みが失敗します。
カレントディレクトリを適切に変更し、相対パスを指定した場合、問題は発生しません。
再現手順
chdpm "C:\\tmp\\mydata.dpm"
を実行する期待する動作
chdpm
命令でエラーが発生しない。後続処理で bload
命令などでファイル内容を読み込むことができる。
スクリーンショット
なし
実行環境
追加情報
FilePack::LoadPackFile
関数で行われるカレントディレクトリの補完が絶対パスの入力を考慮しないせいで、誤ったファイルパスに対するアクセスが行われていると推測します。
この不具合報告は HSPTV!掲示板 #96757 に掲載した内容と同じものです。
makeコマンドを実行すると、
src/hsp3dish/emscripten/hgtex.cpp:47:26: 致命的エラー: SDL2/SDL_ttf.h: そのようなファイルやディレクトリはありません #include <SDL2/SDL_ttf.h> ^
のような表示が出て失敗する。
CentOS 7.8.2003
SDL1.2/2
EGL
gtk2
HSPTV!掲示板 #95674 より、古くから使用されている Trac/Subversion/MantisBT のあたりを GitHub に移行したいと考えられてはいるものの、実現に至っていないものとお見受けします。HSPTV!掲示板 #97672 にも書き込みましたが、わたしも GitHub への移行を熱烈に歓迎するひとのひとりです。
それから、この onitama/OpenHSP リポジトリは Subversion とは別に時折コミットされているように見えますが、同期状態や運用ポリシーがよくわからず、疑問に思っています。 本リポジトリの現状の位置づけは HSP Linux/Raspberry Pi 向けであることを Subversion の package/linux/readme.txt より発見(以下引用)。
HSP Linux/Raspberry Pi
は、以下のリポジトリ管理に変更されました
https://github.com/onitama/OpenHSP
移行にあたって、何が障害となっているのでしょうか?
掲示板の書き込みでは「今後はWindows版も含めた全般についてもgithubに統一する方向で考えています。(今までは文字コードの問題で統一できていませんでした)」と書かれており、ソースコード上の問題はもはや解消しているかのような印象を受けます。
移行には何が必要ですか? 以下は想像にもとづくものです。
git svn
で Subversion のリポジトリをまるごと移行するRaspberry Pi版HSP(hsp3dish)において、キーボードやマウス製品によっては、キー入力やマウス入力ができない状態になります。
以下は問題が発生した製品ですが、どの製品も、Raspberry Pi OS buster のデスクトップ画面を操作する分には問題無く動作することを確認しています。HSP(hsp3dish)の実行時のみ、問題が発生します。
尚、以下の製品はHSP(hsp3dish)でも動作しました。
OpenHSP/src/hsp3dish/raspbian/hsp3dish.cpp の initKeyboard()、updateKeyboard() 内で、/dev/input/by-id 以下に event-kbd(キーボード), event-mouse(マウス)が、それぞれ1つずつ出現することを前提にした実装のために問題が発生するようです。
問題が発生するキーボード・マウス製品について調べたところ、/dev/input/by-id に対して、以下の情報を返すことが分かりました。
結果、Logicool K400r 接続時は、HSPからはキーボードが存在しないものとして扱われてしまい、更に、updateKeyboard() の先頭で、キーボードが見つからないため、マウス入力の解析処理もキャンセルされ、キーボードもマウスも無反応の状態になります。
BUFFALO BSKBW03WH + A4Tech XL-755BK の接続時は、キーボードを1つ、マウスを1つ接続してある状態なのに、HSPからはキーボード2つ、マウス2つが接続されているように見えてしまい、キーボード側、もしくはマウス側の、片方の情報しか取得できない状態になります。
手元の環境で hsp3dish.cpp の、initKeyboard()、updateKeyboard()、doneKeyboard() に修正を加えて試してみましたが、
以下の処理に変えることで問題が起きていた各製品も利用できるようになることを確認しました。
一応、手元で修正・動作確認したファイルも添付しておきます。
Dxライブラリとアイコンファイルが破損しています。
破損しているDxライブラリのあるディレクトリ
破損しているアイコンファイル
Since gcc 10
, you can write Unicode characters without using the universal-character-name. However, this is a backward-incompatible change and breaks comment of the form
#if 0
<string with Unicode character(s)>
#endif
Some of the source codes in this repository include such comments. For example, src/hsp3dish/geometry.cpp
has
#if 0
(注意)
透視変換マトリックスを掛けた後にこのマトリックスを掛ける。
----------解説-------------
...
#endif
and this comment prevents make
(and gcc
inside it) from completing the build process:
$ make
g++ -Wno-write-strings --exec-charset=UTF-8 -DHSPDISH -DHSPLINUX -DHSPDEBUG -DUSE_OBAQ -c src/hsp3dish/geometry.cpp -o src/hsp3dish/geometry.do
src/hsp3dish/geometry.cpp:580:1: error: extended character 。 is not valid in an identifier
580 | ���視変換マトリックスを掛けた後にこのマトリックスを掛ける。
| ^
src/hsp3dish/geometry.cpp:585:70: error: extended character 。 is not valid in an identifier
585 | 後方クリップ面のZ座標 F,その時のZバッファ値Zf ���する。
| ^
src/hsp3dish/geometry.cpp:592:1: error: extended character 。 is not valid in an identifier
592 | ���なるようにしたい。
| ^
src/hsp3dish/geometry.cpp:595:14: error: extended character 。 is not valid in an identifier
595 | z = N/(1-rN) ���なる。
| ^
src/hsp3dish/geometry.cpp:601:1: error: extended character 。 is not valid in an identifier
601 | ���なるような変換マトリックスを用意する。
| ^
src/hsp3dish/geometry.cpp:608:3: error: extended character 。 is not valid in an identifier
608 | Z ���ZBufferの値。
| ^
src/hsp3dish/geometry.cpp:622:1: error: extended character 、 is not valid in an identifier
622 | ���すると、
| ^
src/hsp3dish/geometry.cpp:627:1: error: extended character 、 is not valid in an identifier
627 | ���れを解くと、
| ^
src/hsp3dish/geometry.cpp:632:1: error: extended character 。 is not valid in an identifier
632 | ���なる。
| ^
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
641 | ���※※※※※※※※※※※※※※※※※※※※※※※※
| ^
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:641:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
643 | ���※※※※※※※※※※※※※※※※※※※※※※※※
| ^
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
src/hsp3dish/geometry.cpp:643:1: error: extended character ※ is not valid in an identifier
make: *** [makefile:425: src/hsp3dish/geometry.do] Error 1
In the first place, #if 0
is not a multi-line comment. Please just never use it.
If you would really want to stick to #if 0
, you can avoid the use of Unicode characters in it. In other words, you may want to write the comments not in Japanese but in English.
If you would really want to stick to #if 0
and Japanese comments, you can additionally comment the lines out by //
or /* ... */
. For example,
#if 0
//(注意)
//透視変換マトリックスを掛けた後にこのマトリックスを掛ける。
//----------解説-------------
//...
#endif
The English and Japanese manuals have a broken hyperlink in the "Quick Start" section.
v36/doclib/hspprog.htm
v36en/doclib/hspprog.htm
Both have a link to beginner/start.htm
which does not exist.
A working destination appears to be beginner/COVER.HTM
Not sure if the links should be corrected in the manuals or if the target should be renamed.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.