[
板情報
|
R18ランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
|
メール
|
1-
101-
201-
301-
401-
この機能を使うにはJavaScriptを有効にしてください
|
【エミュレータ】Emueraスレ【+1】
282
:
あなたの名前を入力してください
:2021/06/06(日) 16:20:50 ID:2Zin1Qpw
昔、同じこと考えたなあ
要はCSV・ERBジェネレーターみたいなのが作れたらなと
Emuera側でポチポチするだけでCSV作れたら
バリアントによってはプレイヤーが手軽にオリキャラ持ち寄れるんじゃないかなみたいな
283
:
あなたの名前を入力してください
:2021/06/06(日) 16:39:37 ID:HsZmTquE
CSVの内容をEmueraの画面で出力して、ログをCSVファイルに保存させる形でやってたバリアントはある
今ならSAVETEXTで出力して拡張子を変えてねで済むかな
CSV形式にこだわらないなら、SAVECHARA/LOADCHARAでdatファイルに保存で済むのでは
284
:
あなたの名前を入力してください
:2021/06/06(日) 19:04:52 ID:cePTN0ls
CSVで調べていたからSAVECHARA/LOADCHARAはwikiでチェックしていなかったので
今制作しているものが終わったらいじってみます
285
:
あなたの名前を入力してください
:2021/06/06(日) 19:44:53 ID:HOy/u1bw
TWのモブ子セーブロードに使われてるね
286
:
あなたの名前を入力してください
:2021/06/08(火) 14:52:53 ID:TLkiUi4w
ここで質問していいのかわからないのですが、
INPUTMOUSEKEYでマウスの入力と、画面上に出力したボタンからの入力を同時に受け付ける方法ってあるのでしょうか?
マウスホイールでのステータス画面スクロールを実装したいと思いご教示いただきたく。
287
:
あなたの名前を入力してください
:2021/06/10(木) 00:08:26 ID:e2NKxmO.
>>286
RanceKのEmueraを使ってみてもいいのかな…… どうなのかな……
https://jbbs.shitaraba.net/bbs/read.cgi/otaku/16783/1595116469/457
288
:
286
:2021/06/10(木) 14:45:47 ID:DwU2fIQo
>>287
ありがとうございます。うーん、emuera本体をいじる必要がありそうですね。自分はパッチだけ弄ってる側なので今回は見送ることにします。
289
:
あなたの名前を入力してください
:2021/07/10(土) 03:25:11 ID:h60FpsDM
バイナリの取得場所がダークウェブ(パス入れないと入れず、検索エンジンからたどれない)のみなのが一番まずそう
なるほどたしかにexe系はちゃんと明るい場所に置かないとチェックできないと・・・
290
:
あなたの名前を入力してください
:2021/07/10(土) 20:33:52 ID:35eNoZEE
急に的外れなこと言い出してどうしたの
291
:
あなたの名前を入力してください
:2021/07/10(土) 20:42:13 ID:Qn9kCBpM
eratohoスレでアンチウイルスソフトがemuera.exeを弾いてしまうのでアップローダ上のzipファイルに含めるか否かで議論になってたけどその関係かな
292
:
あなたの名前を入力してください
:2021/09/04(土) 13:52:05 ID:HdZgv6Mg
すいません、質問です
以下のように関数ローカルで定数きった場合、続く配列宣言でその定数を認識してくれないのですが、これは仕様でしょうか
UserVars見る限りではいずれもERH内という限定がないので、いけそうに思ったのですが
>1次元配列変数を定義する際に変数名の前にCONSTを入れると、1次元配列の定数が定義されます。
><要素数>はすべて1〜1000000の範囲内の任意の整数または定数式です。省略した場合、1となります。
@HOGE(fuga:0 = "",fuga:1 = "")
#DIM CONST VALUE_COUNT = 2
#DIMS fuga,VALUE_COUNT ;<-コイツがエラー吐く
FOR index,0,VALUE_COUNT
PRINTFORML fuga:index
NEXT
293
:
あなたの名前を入力してください
:2021/09/06(月) 16:17:20 ID:UH5eeMCI
>>292
さっとコードを眺めた感じ、確かにエラーになりますね
弄り倒せるかどうかは調べてみないと何ともです
294
:
妊)|д゚)
:2021/09/06(月) 16:21:24 ID:UH5eeMCI
おっと、つけるの忘れてた
295
:
妊)|д゚)
:2021/09/13(月) 02:03:48 ID:Z7vYOd3Q
かなり環境依存かと思いますが.NetアプリとATOKで相性が出るみたいです
Emueraでも短時間で入力が連続した場合に落ちることがあります(手元で散々出てる
まあ、かなりエッジケースなので再現する人は少ないとは思いますが念のため告知
(Emuera側でどうこうできる案件ではないので対応は不可能かと思います)
296
:
あなたの名前を入力してください
:2021/09/18(土) 03:28:05 ID:15P/Ir1s
Atok側でAtikインサイトをOFFにしましょう
297
:
あなたの名前を入力してください
:2021/09/18(土) 14:42:10 ID:T46GHJW.
>>294
ありがとうございます
可能ならば、修正いただけると助かります
298
:
妊)|д゚)
:2021/09/19(日) 00:09:03 ID:qaH4XKMA
>>296
OFFでも再現したので対処法にはなりませんでした
現状はEmuera起動時はATOKを使わない、しかないでしょう
299
:
妊)|д゚)
:2021/10/12(火) 22:32:23 ID:8xRFF39k
Win11がリリースされて少し経ったので、Emuera絡みを
.Net Framework 4.8が普通に入ってるので特段影響はないかと思います
一応、手元では.Net5以降への移植はできてはいますが、
これは完全に個人的なお遊びの範疇なのと、配布ファイルが色々不便な形態になるので
現在のところ、.Net5以降に移行する予定はありません
300
:
あなたの名前を入力してください
:2021/10/13(水) 10:23:15 ID:a0ZsqD/s
emueraの場合、windows api 使ってるから、.net5系統に移植してもあまり美味しくなかったりする?
301
:
妊)|д゚)
:2021/10/14(木) 00:07:20 ID:NQmUlKVk
>>300
OS依存バリバリなので、そもそも多プラットフォーム展開できないですからねぇ
(すべてのOS用に処理を分岐させれば不可能ではないが、Windows依存コードが最低でも200ヶ所以上はあるので、現実的ではないどころの騒ぎではない)
後は配布面でのデメリットも大きいので、移行するメリットがない感じですね
302
:
あなたの名前を入力してください
:2021/10/14(木) 00:33:53 ID:/sGtGwLE
uEmueraはAndroidで動作してるけどソースを多数書き換えてUnity用のファイルも追加されてるみたいだし、未実装機能などもあるみたいですね
Windows向けビルドを作ってもEXEファイル1個だけではなく他のファイル群も一緒に配布しないと実行できないみたいですし
303
:
あなたの名前を入力してください
:2021/10/14(木) 00:59:45 ID:RG0BIGL.
Unity用のファイルが追加というよりUnityをベースとして作ってるのかも?
ウディタをSwitchに移植するのもUnity上でやりくりしてるなんて話あるし、Unityだとエミュレーションがやりやすいんだろうな
304
:
あなたの名前を入力してください
:2021/10/14(木) 02:21:06 ID:woxkVGW2
(.Net4→Unityは同言語・別フレームワークへの移植じゃないかなー)
305
:
あなたの名前を入力してください
:2021/10/14(木) 03:15:16 ID:8Tg19n.2
構文解析まわりが流用できても、表示関係は全部作り直しなんだろーなー
306
:
あなたの名前を入力してください
:2021/10/17(日) 14:13:02 ID:TF464/fI
随分前に妊)|д゚)さんかemuの人さんにセーブに記録される変数のサイズは大きくなる方には互換性ある(配列のサイズとか)と聞いた記憶が有るんじゃが
その認識で問題ないどす?
307
:
あなたの名前を入力してください
:2021/10/24(日) 10:41:34 ID:/xg64oQw
そもそも「表示関係は作り直し」とかそういうレベルではなく
内部で表示関係が切り分けされてなかったり内部の処理でWindowsに無自覚に依存してたりしてるからかなり苦しいよ
308
:
あなたの名前を入力してください
:2021/10/24(日) 21:29:11 ID:YBQNeG9g
表示関係の処理きちんと切り離そうにも、なんなら完全に一から実装し直した方が早いんじゃないかまであるくらい
内部まで表示関係が食い込んたりする
309
:
あなたの名前を入力してください
:2021/10/25(月) 12:48:37 ID:ZLumrMvc
でも1から構文解析まで作り直そうっていうなら今度エディタ連携とかLintとかも出来るように最近はやりのアプローチで解析木作ってほしいとか欲望が沸きあがってしまう…
310
:
妊)|д゚)
:2021/10/26(火) 22:08:34 ID:pmK0iwCM
そこまでやるんだったら、もう言語1から作り直せよ案件
311
:
妊)|д゚)
:2021/10/26(火) 22:19:55 ID:pmK0iwCM
で何となく
○1824+v12
https://ux.getuploader.com/ninnohito/download/478
・何かADDSPCHARAの動作が怪しいらしいので変っぽいところをとりあえずいじってみた
・コードを保持するとメモリ喰いすぎるので、保持せずにエラー時にファイルから読み出すように変更
多分これぐらいだと思う(色々遊んでたので何か変わってても文句言えない案件
312
:
あなたの名前を入力してください
:2021/10/26(火) 22:19:56 ID:FqEkuGLE
妊の人きた、これで勝つる
という訳ですみませんが良かったら
>>306
の質問にも回答頂けると大変助かるます
313
:
妊)|д゚)
:2021/10/26(火) 22:21:56 ID:pmK0iwCM
>>312
セーブデータの読み出しについてならYesですね
元々配列はデータが入ってるところまでのみ保存する仕様なので、大きくなる分はそこはデータ無しという扱いになるので互換性が維持されます
逆は…試したことないけど多分チェックしてないと思ったからエラーか例外になりそう
314
:
あなたの名前を入力してください
:2021/10/26(火) 22:22:42 ID:FqEkuGLE
>>313
|ω・)��゙ ㌧トトト㌧㌧
315
:
あなたの名前を入力してください
:2021/10/27(水) 00:07:40 ID:HSzPI/4M
妊の人おつ
自分で実装する気がないから気楽に言うけど、仮にやり直すならBASIC系よりも、もう少しC系の文法に寄せたいよね
316
:
あなたの名前を入力してください
:2021/10/27(水) 00:09:48 ID:i.qa2B2s
>>311
更新乙です
>・コードを保持するとメモリ喰いすぎるので、保持せずにエラー時にファイルから読み出すように変更
ということは、起動後にファイル上書きするとメッセージ内容ズレるのか
上書きする方が悪いのはわかるけど、ちと不安
317
:
あなたの名前を入力してください
:2021/11/09(火) 12:50:19 ID:nqPeoTuU
ちょっと前に出てた.Net5移行の移植に関して個人でやろうと思ってる話を
なんかちょっと前に話だけ聞いたけどそんなもの夢物語でマジで実現なんてできないだろうって甘く見てた.Net MAUI(WinFormsみたいなUIツールをマルチプラットフォームに動作できる形で提供するプロジェクト)が実現しそうなので
それが正式リリースきたらちょっと試しに触ってみるね…配布についてちょっと面倒は出るけど少なくてもWinだけじゃなくMacでもうごくようになるとかは少ないながら今では実現できない需要あるだろうし…
318
:
あなたの名前を入力してください
:2021/11/09(火) 19:14:19 ID:qeU5decc
マイナーバグ報告。スキップブロック、完全にスキップしてない…
こういうところの処理を枝刈りしたら早く&軽くなりません?
【対象】
Emuera1824+v11
【現象】
[SKIPSTART]〜[SKIPEND]ブロック間にC言語のソースを記入 (多段 {} が使用されている )するとパースエラーが出る
C言語に限らず、C#、js、powershellなど、{}をブロックに使用する言語で発生する。
エラーメッセージは以下。ファイル名・行番号報告なし
MinorShift.Emuera.Sub.CodeEE:予期しない行連結記号'}'が見つかりました
ERBコードに解釈不可能な行があるためEmueraを終了します
※互換性オプション「解釈不可能な行があっても実行する」により強制的に動作させることができます
emuera.logにログを出力します
※※※ログファイルをemuera.logに出力しました※※※
エンターキーもしくはクリックで終了します
319
:
妊)|д゚)
:2021/11/09(火) 21:23:55 ID:93FYgq6U
○1824+v13
https://ux.getuploader.com/ninnohito/download/479
・
>>318
修正
320
:
あなたの名前を入力してください
:2021/11/09(火) 21:39:43 ID:k1lUGqGs
>>319
お早い対応乙です
321
:
あなたの名前を入力してください
:2021/11/09(火) 23:09:32 ID:qeU5decc
妊の人、素早い修正どもです
>>318
修正OKでした
メモリ問題はパース時のオブジェクトnewで、1オブジェクトが(.NET Frameworkの)Gen2入り判定とされる85kBを超えるので、すぐにGCされないゴミが溜まっていくからのようです
v11→v12で少し改善してますが、C++のBoost HASHライブラリだと 数百M〜1GB 前後でパフォーマンスが悪化するらしいので、適度な強制GCは必要かもしれません
一定数のファイル・関数数以上の場合、ファイルをパースし終わるたびに GC.Collect(2,GCCollectionMode.Optimized,false); を入れてみますか?
322
:
妊)|д゚)
:2021/11/10(水) 09:32:02 ID:ZnnV3bmg
現実、ロード完了時に一番強いGC.Collect()して全部掃きだしてこれなんですよね
単純に行の解析済みデータのサイズが大きいのが問題という感じで、
メモリ使用量はここの再設計なしでは圧縮は難しそうです
323
:
あなたの名前を入力してください
:2021/11/11(木) 21:52:51 ID:kZ23/KU6
すみません、ここで聞いたら良い質問かどうかわからないんですが
Wikiを見るとローカル変数LOCALとLOCALSは廃止されたとあるのですが、
実際のバリアントを見ると今でもLOCALやLOCALSが普通に今でも使われています。
過去ログの議論を見ても実際に廃止にしたという話は見た限りではありませんでした。
実際問題現状ではどのような扱いになっているんでしょうか?
324
:
あなたの名前を入力してください
:2021/11/11(木) 22:05:12 ID:jIMyECB2
今でも廃止されてはないし、使えるけど、古い機能なので非推奨。
#DIMや#DIMSで変数定義して使うのが推奨されるやり方。
Obsoleteだし将来的に廃止される可能性はあるけど、実際問題としてまだまだ広く使われてるし
そう簡単には廃止されないと思われ
325
:
あなたの名前を入力してください
:2021/11/11(木) 23:34:41 ID:dHPoDVfM
obsoleteってよりはdeprecatedという雰囲気ではある
まぁ新規で作るなら使わないに越したことはない
326
:
あなたの名前を入力してください
:2021/11/11(木) 23:45:29 ID:/2YsLxkg
#DIMや#DIMSで困らないでしょうしね
327
:
あなたの名前を入力してください
:2021/11/22(月) 18:10:55 ID:23R4GUP.
正直出来ることならすでにあるLOCALやLOCALSを使った全ての変数をちゃんと#DIMや#DIMSで置き換えたい…
LOCALをちゃんとプログラミング的な配列として使ってる分にはいいんだけどera界隈は歴史的事情で一つの配列に全く別の意味の数字を入れるからコード読みづらくてメンテ性が…
328
:
あなたの名前を入力してください
:2021/11/24(水) 11:20:38 ID:Q411JnG2
>>327
それを成功させてるバリアントはいくつかあるので根気次第だ
329
:
妊)|д゚)
:2021/11/28(日) 00:33:29 ID:zfpZZuvg
メモリ使用量をちょっとだけ減らすテクニックはあるが、若干パフォーマンスと引き換えになるのが難しいところだのぉ…
330
:
あなたの名前を入力してください
:2021/11/28(日) 00:37:48 ID:y9N7oFQU
eraBIOSから起動するEmueraOSの完成が待たれる
331
:
妊)|д゚)
:2021/11/28(日) 01:25:29 ID:zfpZZuvg
理想論的には静的変数は全部連想配列的に扱うのが一番メモリの無駄が少ない気はするが、
パフォーマンスがかなり厳しい気がしないでもないがはてさて
332
:
あなたの名前を入力してください
:2021/11/28(日) 09:34:25 ID:OIcybwZg
パフォーマンス犠牲にしてメモリ使用量少し減らすくらいなら現行のままでいい気もする
333
:
あなたの名前を入力してください
:2021/11/29(月) 21:52:08 ID:Kan1dNi.
一部のバリアントは、少しなんてレベルじゃなく大きく複雑になっていますから。
プラグインになっている関数が非常に多いので、先日の対処があってもいずれヒープかスタックか、Framework の仕様限界が来て起動不能になると思います。
懸念があるのは一部の大型バリアントでしょうから、オプションで関数用変数やobsolute系変数など一部からDictionary・HashTable・DBなどを試行しては?
あと、破棄できる静的変数は積極的に破棄していいと思います (必ず初期化されていて、構文木的にさほど使われないものとか)
/// それ以前に、GetFilesでのファイル列挙時と読み込みforループ時に、ウインドウメッセージを処理できていない時間が長いのはよくないです
/// 読み込み途中で再起動するとウインドウ表示は無いけれどプロセスだけ一時的に残っちゃう時が…
334
:
あなたの名前を入力してください
:2021/11/30(火) 01:53:21 ID:IzYpg0fI
業務アプリでもないのですからロード中のハングなど些事でしてよ
LogicalLineとInstructionLineで削れるメンバの目星は付きますが、この構造を弄るとなるとそれなりの範囲でコード修正が必要ですわね
とはいえここを見直す以外に大きくメモリ消費を減らすのは厳しいので少しずつ手を入れるしかありませんわね
335
:
あなたの名前を入力してください
:2021/12/05(日) 03:39:32 ID:hQRn.Tso
バグ報告です。1824+v13(
>>319
)で確認
デバッグウィンドウのコンソールで、以下のように変数と定数を==で比較した場合、本来は比較として処理されるべきところが代入として処理されているようです
(以下の結果は、全て間に処理を挟まず連続して入力しています)
なお、直接確認したのはデバッグウィンドウのみですが、ERBファイル内でも同様の挙動をしているように見えます。
ITEM:0
1
ITEM:0 == 0
ITEM:0
0
LOCAL
0
LOCAL == 1
LOCAL
1
TALENT:0
1
TALENT:0 == 0
TALENT:0
0
TALENT:ASSI:0
0
TALENT:ASSI:0 == 1
TALENT:ASSI:0
1
336
:
あなたの名前を入力してください
:2021/12/05(日) 03:43:25 ID:hQRn.Tso
失礼、
>ERBファイル内でも同様の挙動をしているように見えます。
この部分撤回します。よく見たら思ってた挙動と違った
337
:
あなたの名前を入力してください
:2021/12/05(日) 12:58:22 ID:D3rdYu.s
真か偽かを返す式として解釈できる記述ではありますが、
警告Lv0 代入演算子に"=="が使われています
に相当する記述なので代入文としての解釈も可能、そして代入文としての解釈が優先されているようですね
現状のデバッグモードで真か偽かを確認したい場合はコンソールではなく変数ウォッチのタブを使うか、 (LOCAL == 1) のように括弧を付けて記述すれば良いかと思います
338
:
あなたの名前を入力してください
:2021/12/09(木) 01:02:18 ID:EdyF5kPE
Emuera1824v13のソース弄っていての気づき事項っす
1) Config.cs の getUpdateKey() で、ローダー(GetFiles)とは別にERB&CSVファイルを列挙している
.NETの仕様上、ファイル走査・列挙はファイルシステム分以外にはキャッシュしないから二重処理になってる
getUpdateKey()用のLastWriteTime取得をデータローダーの方に持っていくか、または*.ERB、*.CSV専用の読み込み関数を用意するのは如何?
2) 同 getUpdateKey()にて無駄な配列を確保している
ファイル数だけwritetimes配列を確保する必要がないような。デバッグ用か、凝ったHASHを計算するつもりだった名残かな?
3) 各 Directory.GetFiles() + for() は、foreach(var i in Directory.EnumerateFiles()) の方がいいかも
非同期読み込みするなら別だけど、.GetFiles から ListへのCopyと待機が余分に発生する
IEnumerable() で返ってくる方が遅延評価され僅かにマシ
4) 同、foreach()しかしないんなら、戻り値/引数はList() じゃなくてIEnumerable()で
遅延評価は副作用が怖いけど…
5) Framework Verを上げるなら、Unicode制御文字に注意
4.6.*からサポートされてる双方向文字や結合文字等、UNICODE制御文字が…
STRLENSUやエスケープ関数が危ない
欧米人は絵文字に喜んでるけれど、結合文字などのインジェクションクラッキングはどう思ってるんだろうね
6) 同、ファイルパスでロングパスと代替データストリーム(ファイル名:名前)が使えるようになってる
ほか、フォルダ名に空白が許可されてたりする
339
:
あなたの名前を入力してください
:2021/12/16(木) 13:07:46 ID:G76W/RCM
>欧米人は絵文字に喜んでるけれど、結合文字などのインジェクションクラッキングはどう思ってるんだろうね
これについては欧米人でも利用者は喜んでても実装側は複雑なUnicode仕様にf○ck言ってるのよく見かけるね…ただでさえUnicodeがバイト列として取り扱えないことにうだうだ言ってた人たちだから…
340
:
あなたの名前を入力してください
:2021/12/16(木) 23:26:47 ID:dY3biUeA
追加の気づき事項っす
7) GetFiles で、再帰呼び出しの制限がない
以前に、MSやGit (MSYS2) 、アーカイブソフトなどいろんなソフトでやらかしてる件です
GetFiles() をディレクトリ以下も走査する条件で呼んだ場合、ディレクトリの深さに依存して再帰呼び出しする仕様になっている
このとき無限フォルダ生成バグや、ハードリンクによる循環などが起こっていると、スタックオーバーフローで死んじゃう…
システム側で総列挙(対策済み)または再起深さ制限した方が良い
>>339
タイムリーに、VSでUNICODE双方向文字関連のセキュリティパッチが入りましたね
UTF16やUTF32でせっかく固定長の方向だったのに、またMBCS地獄ですからね
Emueraに関しては、通称UTF-8MAC (日本語濁音・半濁音が独特のエンコードされているやつ)食わしたとき、正常に動くのだろうか?
341
:
あなたの名前を入力してください
:2021/12/17(金) 02:31:47 ID:K5RM.Ck2
Emueraが大半のファイル/ディレクトリ読み込みでカレントディレクトリを無視する挙動になっているのは何か意図がお有りなのかしら?
解析モードで他所にあるファイルを食べさせることはできるようですのでセキュリティ的にはあまり意味がなさそうですわ
複数バリアントでのテストが行いにくいので、問題がないようでしたらcd起点で処理させるようにしたいと存じ上げますわ
342
:
あなたの名前を入力してください
:2021/12/24(金) 09:34:29 ID:eu2.Ul0M
>>341
Emueraはコンソールで使うことを意図せず、なおかつそういう使い方を知らずエクスプローラーでファイルを取り扱う人にとって直感的に使えるように…
…ということは特段なくまあeramakerからの伝統にのっとり実行ファイルのディレクトリ基準で動作し続けてきました
もしもemueraがその様に動作することを求めるのであれば2つの選択肢があります
1つはemuera改造をしている人達に要求を上げることです 運よく興味を持った人が出てきたら更新されるでしょう ですがまあemueraをコンソールから叩いてる人がそんなにいるとは思えませんこの界隈
2つは自分がemuera改造に乗り出すことです 自分でフォークして改造し…メンテする 必要ならば自分で作るのが最も端的な方策でしょう
2つ目にかかわって現在のEmuera界隈について
本来ならばemueraメンテナに対してパッチを投げて取り込んでもらうというのは一つのゴールでしたが現在中心的な開発者であったemuの人が実質的引退をして妊の人が代理で保守的なバグ修正を続けている状況です
そのためいつか複数のemuera改造を取り込んでまとめ上げようという意欲的な誰かが出てくるまでは新規の機能開発については個々にメンテし続けなければいけないでしょう
343
:
あなたの名前を入力してください
:2021/12/24(金) 09:39:44 ID:eu2.Ul0M
>>340
> Emueraに関しては、通称UTF-8MAC (日本語濁音・半濁音が独特のエンコードされているやつ)食わしたとき、正常に動くのだろうか?
ここについてはぶっちゃけEmuera内部では.Netのエンコーダに食わせて表示するときも.Netに食わせてレンダリングしてるだけだからそっちの実装次第かなぁ…
ただ濁音半濁音のせいでEmuera自体のコードで具合が出るかというと構文はほとんどがASCIIの範囲内で解決しているから.Netがそれを正しく取り扱えるのなら動くんじゃないかな
344
:
あなたの名前を入力してください
:2021/12/24(金) 21:00:47 ID:IIGECoNw
UTF-8MACと同等かは知らないけど、UTF-8でNFDの濁点文字を食わせてみた
結果としては「フォントによる」という感じで、
手元では游ゴシックだとほぼ問題なく表示されるけどメイリオだとダメだった
結合文字の濁点が使えれば喘ぎ声に使えて良いなぁと思ったんだけど、実用は厳しそう
345
:
あなたの名前を入力してください
:2021/12/25(土) 22:35:27 ID:j4aisRHk
.NET例外によるクラッシュです。以下長文也
〔対象〕 Emuera1824+v13
〔環境〕 Windows 11 Home 21H2 22000.376 / .Net Framework 4.8
【問題】
1, 「resourceディレクトリ」 に 「拡張子の最初の三文字がcsv」 (例: badfile.csvx) というファイルがあると、csvとして読み込んでしまう。
2, CSVに対する警告エラー表示のために行内容 を取得する際、ハンドル外例外 System.IO.FileNotFoundException が出力されクラッシュしてしまう。
【エラーログ】
警告Lv1:badfile.csvx:3行目:指定された画像ファイルが見つかりませんでした:;L.LMKNBJVHCGYIUHIOJLKMNNB NCGVYIHUIOJK;MN
予期しないエラーが発生しました:Emuera1824+v13
System.IO.FileNotFoundException:ファイル 'C:\XXX\XXXXX\x\XX\XXXX\era\erb\badfile.csvx' が見つかりませんでした。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
場所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
場所 System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
場所 System.IO.StreamReader..ctor(String path, Encoding encoding)
場所 System.IO.File.ReadLines(String path, Encoding encoding)
場所 MinorShift.Emuera.GameProc.Process.getRawTextFormFilewithLine(ScriptPosition position)
場所 MinorShift.Emuera.GameProc.Process.printRawLine(ScriptPosition position)
場所 MinorShift.Emuera.GameView.EmueraConsole.PrintWarning(String str, ScriptPosition position, Int32 level)
場所 MinorShift.Emuera.ParserMediator.FlushWarningList()
場所 MinorShift.Emuera.GameProc.Process.Initialize()
初期化中に致命的なエラーが発生したため処理を終了しました
※※※ログファイルをemuera.logに出力しました※※※
【原因&対処】
1 過去からあった模様。リソースCSV読み込みに Config.GetFiles() ではなく、System.IO.Directory.GetFiles() を直接呼んでいて、拡張子のチェック漏れ。
2 クラッシュはソースを保持しなくなった変更の影響のよう。
GameProc\Process.cs 内 getRawTextFormFilewithLine() のファイル読み込みがErbDir決め打ちになっていて、またファイル存在チェックをしていないため。
今の仕様では position (ScriptPosition) がフルパスまたは「Exeからの」相対パスを保持していないので、再スキャンが必要。
if ((position?.LineNo ?? 0) <= 0) return "";
//try {
var filepath = Directory.EnumerateFiles(Program.ExeDir, Path.GetFileName(position.Filename), SearchOption.AllDirectories)
.FirstOrDefault(cond => cond.IndexOf(position.Filename, 0, StringComparison.OrdinalIgnoreCase) > -1);
if (string.IsNullOrEmpty(filepath)) return $"<<File {position.Filename} not found.>>";
return File.ReadLines(/*Program.ErbDir + position.Filename*/ filepath, Config.Encode).DefaultIfEmpty("").ElementAtOrDefault(position.LineNo - 1) ?? "";
//} 以下catch節
オープンなとこでForkしてる人もいるわけですが、EraはOSSよりリアルでの炎上延焼リスクが大きいですからね
細々と、手前味噌でやるのがいいんじゃないかと
346
:
妊)|д゚)
:2022/02/16(水) 17:15:21 ID:ledALMn.
○1824+v14
https://ux.getuploader.com/ninnohito/download/480
・手元ではとっくに直してたけど、他になんか出てきたら面倒だなぁで寝かせてた
>>345
の単純な修正
347
:
あなたの名前を入力してください
:2022/02/16(水) 22:44:59 ID:KvIN9qkA
ERBって文法上の理由で構文の静的解析が完全にはできなくて
実行時じゃないと確定しない場合があるとかなんとかあった気がするんだけどどういうの書いたときだっけ
348
:
あなたの名前を入力してください
:2022/03/17(木) 22:02:25 ID:sS3qieYs
文法上の理由というのはわからないけど、同名ルーチンが複数のファイルにある時にどれが呼び出されるんだと思った覚えがあるなあ
調べてないからわからないけど多分OSのファイルシステム検索順で決まってるんじゃないかという気はした
349
:
あなたの名前を入力してください
:2022/03/19(土) 16:07:45 ID:98imkZM.
>>347
HOGE=1+1
いや冗談じゃなくこの構文ですらHOGEが文字列変数か整数変数かという情報がないと構文解析できない
350
:
あなたの名前を入力してください
:2022/03/20(日) 07:40:31 ID:.IwhNRQM
11か2じゃないの?で、文字列操作にそんな構文があるならPRINT文のバリアント要る?
351
:
あなたの名前を入力してください
:2022/03/30(水) 19:36:06 ID:Xwo/.nHw
定義型変数がintegerなのかcharacterなのか宣言しなければ機械語的にそれがなんなのかわからないのは普通じゃね?
352
:
あなたの名前を入力してください
:2022/03/30(水) 22:40:15 ID:rQ9AvgsI
言語によるけど、文字列連結演算子と数値加算演算子で別の文字使ってたりすると定まるでしょ
パッと思いつくのはPerlぐらいしかないけど、数値加算は + だけど文字列連結は . 使うみたいなやつ
353
:
あなたの名前を入力してください
:2022/03/30(水) 23:19:40 ID:tiCWYo7I
文字列をクォーテーションで括る必要あっても定まりそう
354
:
あなたの名前を入力してください
:2022/04/01(金) 22:09:41 ID:nlRpu1js
>>351
真面目に説明するが違う
より正確に言うならPRINTとか文字列変数への代入がリテラルではなく生文字列を要求するところが違う
世の中のおおよその言語とかだとさっきの事例は
HOGE="1+1"とかHOGE='1'+'1'とかHOGE=1+1とか
この様にして型を判別する前から、それが文字列であるか数字であるかにかかわらず構文を解析できる
勿論HOGE="1"+1みたいな型が整合しない式もあるが構文解析の段階ではそれを正しく解析できるしそれをはじくのは解析した後に型の検証をする際の話だ
355
:
あなたの名前を入力してください
:2022/04/01(金) 22:12:04 ID:nlRpu1js
>>350
そしてこれも間違っている
文字列変数だった場合
HOGE'="1+1"
文字列変数への代入は生文字列だから連結してくれたりはしない
356
:
あなたの名前を入力してください
:2022/04/03(日) 00:22:47 ID:b63BFHtE
そもそもHOGEが代入不可の何らかである可能性が否定できない
広域変数宣言、#DEFINEマクロ、関数の多重宣言、あるいはこの式が特殊な関数に記述/呼び出しされている場合などの可能性を考えると、
おおよそ全てを読み込み(=実行)してみるまで確定できない
357
:
妊)|д゚)
:2022/04/13(水) 21:59:39 ID:NwC8N5KE
○1824+v15
https://ux.getuploader.com/ninnohito/download/481
・LOADTEXTがあまりに致命的な面倒事を引き起こす原因になってくれてるのを修正
358
:
あなたの名前を入力してください
:2022/04/19(火) 20:29:00 ID:Jl1mLjhM
eraAWT自宅hybrid版 ver.1.0.4で、本体に同梱されているEmuera1824+v5では問題ないけどEmuera1824+v15に差し替えたらカスタムキャラやマップエディタのロードが正常動作しないようですね
とりあえず
REPLACE RESULTS:0, UNICODE(13) + UNICODE(10), "/"
の次の行に
REPLACE RESULTS:0, UNICODE(10), "/"
を追加すればv5でもv15でも正常動作しそうな感じかな
359
:
妊)|д゚)
:2022/04/21(木) 21:43:37 ID:hV3jHlQ2
前後を見てないけど、LOADTEXTで読みこんだ文字列の改行コードを手動でいじってる感じの処理だから、変更点の影響がもろに出る処理になってますね
簡単に言えば、v15ではLOADTEXTで読みこんだテキストの\rを殺してる(Emueraの文字列変数と同様の扱い)ので、
v15以降は改行コードは\nだけ考えればOKになります
360
:
妊)|д゚)
:2022/04/21(木) 21:47:55 ID:hV3jHlQ2
で、なぜこの挙動変更をしたかというと、
TextRendererのみ、\rがあると、そこで描画が1行下にずれてしまうという挙動をしてしまうので、
描画形式によって違いが生じない様にするためになります
361
:
あなたの名前を入力してください
:2022/04/21(木) 23:58:16 ID:TRSya166
つまり、MacOS9以前で作られた複数行テキストファイルを読み込ませたら改行が削除されて長い1行になってしまうということですね。
誰もやらないと思うけど。
362
:
妊)|д゚)
:2022/04/23(土) 10:54:06 ID:WKzYQxCU
>>361
そこらへんが問題になるようなら、それはそれでまた考えたいところ
(おそらく、単独\rを\nに差し替えるだけでいいだろうけど
363
:
あなたの名前を入力してください
:2022/05/03(火) 01:12:09 ID:gbb8VsdM
eratoho総合スレのInt.MinValueの絶対値は、THROWにしてしまってERBで対応させるべきだとおもう。
emuera本体でごちゃごちゃ変に例外的な処理入れるのよくないよ・・・
364
:
あなたの名前を入力してください
:2022/05/03(火) 12:40:28 ID:LA/0h29I
tohoTWが使ってるのは野良改造版だから、ここでは妊の人のEmueraの話ですね
少なくとも、.NETの例外をお漏らししてるから本体側に手当てが必要かと
類似案件で、エラーは出ないものの(-__INT_MIN__==__INT_MIN__) という式が真を返してます
つまり、数値の内部表現がdecimalやBigInteger型等でない限り、境界値__INT_MIN__で -INTVALUE != -ABS(INTVALUE)になります
対処ですが、ABS(__INT_MIN__)で実行時エラーにするか、正の範囲に丸めるか、そのまま返すか、お好みで
365
:
妊)|д゚)
:2022/05/03(火) 13:26:57 ID:5FFSlXaw
>>364
案件の方、確認したけど、そもそも.Net自体が
直接-long.MinValueするのは例外になると弾くくせに、一度変数に代入してその変数の-を取った場合は何もしないで素通しする素敵挙動ですわ
こっちは処理が通ってしまう仕様な以上、エラーにするのは現実的ではなさそうなので、実行時注意文表記で対応かな
まあ、とりあえずごねごねやっておきます。
366
:
あなたの名前を入力してください
:2022/05/04(水) 16:50:33 ID:M25qmfd6
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/expressions
#1183-unary-minus-operator
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/checked-and-unchecked
constant expression以外はcheckedがオプションなりコード側なりで明示的に指定されていなければ単項-のオーバーフローを無視する仕様ですわ
この振る舞い自体はオーバーフローチェックの実行時コストを考えると現実的かつ妥当なものですの
constant expressionの場合はその問題がないので既定でcheckedとして扱われ怒られるというわけですわね
367
:
あなたの名前を入力してください
:2022/05/07(土) 09:38:53 ID:6RE/JgMQ
OSDNの演算についてのページ
https://ja.osdn.net/projects/emuera/wiki/exop
での演算子の優先度表について||とするべきところが|?|となっていないでしょうか?
368
:
あなたの名前を入力してください
:2022/10/07(金) 18:46:05 ID:6M90G.z2
NOSAMES関数についてバグ報告
wikiの説明と違い!GROUPMATCHのような挙動をします
NOSAMES("HAGE","HIGE","HIGE","HUGE","HUGE")
NOSAMES(0,1,1,1,1,1)
上記をデバッグウインドウでテストしても共に戻り値は1になりました
369
:
妊)|д゚)
:2022/10/08(土) 17:31:45 ID:mFVtGyiQ
>>368
こりゃ、実装がおかしいですね、直してきます。
370
:
妊)|д゚)
:2022/10/08(土) 18:57:44 ID:mFVtGyiQ
○1824+v16
https://ux.getuploader.com/ninnohito/download/482
・
>>368
修正
・その他雑多な微変更
371
:
あなたの名前を入力してください
:2022/10/11(火) 00:31:29 ID:.NG1MpEk
おつです
372
:
あなたの名前を入力してください
:2022/11/03(木) 21:32:50 ID:iUB2hkcw
http://book-shelf-end.com/up/dwlink.cgi?eraRx3508.zip
Emuera私家改造版をベースにパフォーマンス改善等を行ったfork版ですわ
起動時で20%程度のメモリ消費削減と5%程度の実行速度アップが見込めるかと思われますわ
readmeにも記しましたがSKIPDISPでPRINT系命令を非表示にする際の挙動が異なりますので注意してくださいまし
正常動作・バグの発生問わず動作報告を頂けるとありがたいですわ
何分一人で行えるテストは量も質も程度が知れていますので
373
:
あなたの名前を入力してください
:2022/11/05(土) 20:07:35 ID:SwUDZlv6
>>372
eraten かーちゃん版144&口上&fix タイトル起動時
メモリ2.6GB前後:Emuera1824+v8.1(かーちゃん版デフォルトexe)
メモリ1.7GB前後:eee
メモリ消費量が半端なく減ってました すごい
374
:
あなたの名前を入力してください
:2022/11/06(日) 00:32:53 ID:ChpHeNFQ
全データは3回試行した平均結果ですわ
eraMegatenと簡単なテスト用バリアントの2つですわ
eraMegatenRev144+口上+fix
起動後にロードしてホーム
v16: 1768MB
eee: 1356MB
起動後にEmpty.bat走らせてロードしてホーム
v16: 228MB
eee: 270MB
eraMegatenの起動時間はうまく測れなかったですわ
以下はテスト用コード
計算だけのFOR文を1億回回した時
FOR i, 0, 100000000
var = MAX(var, 0)
NEXT
v16: 5163ms
eee: 4618ms
表示だけするFOR文を10万回
FOR i, 0, 100000
PRINTFORML var: {var}
NEXT
v16: 5785ms
eee: 5757ms
375
:
あなたの名前を入力してください
:2022/11/07(月) 02:19:26 ID:Rn0iwQow
eeeforkでeraMegatenRev144+口上+fix起動後ホーム画面で[114] - 魔貨交換 -> [2] アイテムと交換 でエラー落ちしました(1824+v16では落ちませんでした)
SHOP関連\MOUSE_UI_STORE_UTILS.ERBの781行目で予期しないエラーが発生しました:eee
System.IndexOutOfRangeException:インデックスが配列の境界外です。
場所 MinorShift.Emuera.GameData.Variable.ReferenceToken.CheckBounds(Int64[] arguments, Boolean[] doCheck)
場所 MinorShift.Emuera.GameData.Variable.ReferenceToken.CheckRangeValidityForLastDimension(Int64[] arguments, Int64 index1, Int64 index2, String funcName, Int64 i1, Int64 i2)
場所 MinorShift.Emuera.GameData.Function.FunctionMethodCreator.FindElementMethod.GetIntValue(ExpressionMediator exm, IOperandTerm[] arguments)
場所 MinorShift.Emuera.GameData.Function.FunctionMethod.GetReturnValue(ExpressionMediator exm, IOperandTerm[] arguments)
場所 MinorShift.Emuera.GameProc.Function.FunctionIdentifier.RETURNF_Instruction.DoInstruction(ExpressionMediator exm, InstructionLine func, ProcessState state)
場所 MinorShift.Emuera.GameProc.Process.runScriptProc()
場所 MinorShift.Emuera.GameProc.Process.GetValue(SuperUserDefinedMethodTerm udmt)
場所 MinorShift.Emuera.GameData.Function.SuperUserDefinedMethodTerm.GetIntValue(ExpressionMediator exm)
場所 MinorShift.Emuera.GameData.Variable.VariableTerm1D.GetStrValue(ExpressionMediator exm)
場所 MinorShift.Emuera.GameProc.Function.FunctionIdentifier.SET_Instruction.DoInstruction(ExpressionMediator exm, InstructionLine func, ProcessState state)
場所 MinorShift.Emuera.GameProc.Process.runScriptProc()
場所 MinorShift.Emuera.GameProc.Process.DoScript()
376
:
あなたの名前を入力してください
:2022/11/08(火) 21:14:26 ID:aphXF6xg
eee 0.1.0.1
http://book-shelf-end.com/up/dwlink.cgi?eraRx3517.zip
>>375
様の報告なさられたバグを修正いたしましたわ
動作報告をいただけたことを感謝申し上げますわ
わたくしの作業方針としましていわゆるホットパスにあたる部分を集中的に改良していきたいと思っております
現実的な用途においてPRINT系統の命令が秒間に実行される回数はせいぜい3桁程度でしょうからここのパフォーマンスは現状でも十分だと思っておりますわ
変数アクセスや数式の計算といった行為は非常に頻繁に行われるでしょうからこちらはまだ改善していきたいですわね
377
:
あなたの名前を入力してください
:2022/11/09(水) 20:27:06 ID:o1gXgRFc
調べても見つけられなかったんですが現状TOOLTIPの中身を改行するのは不可能ですか?
もしそうで可能ならば\nなり<br>なりで改行できるようにしていただけるとありがたいです
あとはSETDELAYと同じ要領でいいのでフォントサイズなんかも変えられるようにしていただけるとうれしいです
378
:
あなたの名前を入力してください
:2022/11/25(金) 19:58:22 ID:VGdKP1r6
>>376
eee 0.1.0.1でEra4Xを動かした所宙域マップおよび船内マップ表示が無くなりました
本体同梱のEmuera1824+v9・別途用意したEmuera1824+v16では正常にマップが表示されます
(それ以外は一応問題なく動いていそうでした)
379
:
あなたの名前を入力してください
:2022/12/03(土) 18:39:04 ID:IY.uy9KM
Emuera開発系の皆様、初めまして。
おかげさまでeraを楽しく遊ばせていただいております。
私はeraMegatenの起動が遅すぎる問題について、Emuera側の原因調査と改善を試みておりました。
つきまして、「Emuera1824+v8.1」にERBファイルを高速読み込みするモードを追加した改造版を作ってみました。
私個人の環境だとERB読み込み時間が24秒→5秒程度に改善しています。(その他の処理もあるため、全体としては通常の60%程度の時間でした。)
上記のご報告に加えて、ERBファイルのパッチではなくてEmuera自体の改造であるため
どこにアップロードしたらよいのか作法や手順等を知りたくてここに書き込みました。
お手数ですがご存じの方、よろしくお願いいたします。
380
:
あなたの名前を入力してください
:2022/12/03(土) 19:10:51 ID:IY.uy9KM
ちなみにERBファイル読み込み速度についてですが
読み込んだファイル内容を1行ずつ「Emuera\Sub\EraStreamReader.cs」の「public StringStream ReadEnabledLine()」
でチェック・取得している部分の処理がERBファイル読み込みの所要時間の大半を占めていました。
(既に皆様ご存じでしたらすみませんm(__)m)
上記の改造版ではチェック済みの内容をファイル出力しておくことで
次回以降はこのファイルをチェック無しで読み込むことで速度が改善するという理屈です。
381
:
あなたの名前を入力してください
:2022/12/03(土) 20:35:32 ID:4MnElVKw
アップロードはeraロダ3号機で良いのでは?
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板