トップページ > 記事閲覧
SpoilerALの修正パッチ
投稿日 : 2016/08/30(Tue) 03:36
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 2hT12tRTQ0Cl2D443IEiA.
参照先
SpoilerALの修正パッチ

SpoilerAL 6.1 修正パッチ (2018.04.23)

使い方は付属の readme.txt を参照してください。
添付のテキストは修正履歴です。

※注意
古いSpoilerAL修正パッチでは「version.dll」をSpoilerALのフォルダ内に置く仕様でしたが、
現在は「version.dll」から「winmm.dll」へ変更しています。
不要な「version.dll」がフォルダ内に残っていると正常に機能しません。
「version.dll」が残っていれば削除してください。

記事編集 編集
Re: SpoilerALの修正パッチ (No.1)
投稿日 : 2016/09/05(Mon) 01:26
投稿者 amateur◆kR..xsXL6RU
ID情報 : rFrwBAZ7sMqknBWfMnVT8/
参照先
精力的にパッチを更新していただき、ありがとうございます。
SSGを書くのがどんどん便利になり、大変助かっております。

今回、多数の演算子が追加されたようですが、
更新後のドキュメント(HowToSSGの「アドレス」の項目)と、
ネット上のプログラミング言語の演算子の解説ページを参考にしたりして、
どうにか追加の演算子の内容は把握できたかなと思っています。
後は、実際にSSGを書く中で使い方に慣れていきたいと思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.2)
投稿日 : 2016/09/06(Tue) 01:04
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : AEJGLsPO6R06C/jKz.7HH/
参照先
2件の修正を行いました。

・[define]の置き換え用の文字列が数文字しか使えなかった (単なるバグ)
・32bitと64bitキャストの仕様を変更

キャストですが、[1, 0] などとカンマ区切りの書式を[define]を使うことなく
直に電卓項目に使用すると電卓項目の書式のカンマとして認識され使えない事が分かりました。

そのままカンマを区切りとして使い続けるには大幅な変更が必要になるため
代わりのものに変更しました。(まだ64bit演算使ってるSSGも無いと思うので・・・)

32bit→64bit Cast64::0x80000000
64bit→32bit Cast32::0x123456789ABCDEF0

// 合成のようなもの (引数 $low, $high)
[define MakeQWord] ($low | Cast64::$high << 32)

// 下位ワードの取得 (引数 $Val、変数名は適当)
[define LowDWord] Cast32::$Val

// 上位ワードの取得 (引数 $Val、変数名は適当)
[define HighDWord] Cast32::($Val >> 32)
記事編集 編集
Re: SpoilerALの修正パッチ (No.3)
投稿日 : 2016/09/06(Tue) 22:49
投稿者 (仔猫)◆KCezBilYINU
ID情報 : igMbiif6SuGvdJWXVnNbQ0
参照先
更新ありがとう御座います。

6.2のコードがうまく書けないので
未だ6.1で書いてます(方々のSSGを参考に勉強中です)

そう言えば変数の中身をアドレスネーミングで表示できないのかなぁ…と。
ツクール系でアドレスネーミングを使いますと2n+1が表示されてしまいますので、これをうまく表示できれば(電卓側で確認しろよと言われそう…汗)

たとえば変数に置き換えて表示とかできれば利便性があがるような?
(AL側のデバッグモードを使わなくても変数の中身をみたい場合とか)

(変数をそのまま)
[subject]最大HP  [  '+' _mem,@ssl->{A},4,num,-,%d '+'  ]:dir

(2n+1をデコード表示)
[subject]最大HP  [  '+' _mem,[!@ssl->{A},($Val-1)/2!],4,num,-,%d '+'  ]:dir

(もしくはアドレスの中身を加工表示)
[subject]最大HP  [  '+' _mem,[!0x400100,($Val-1)/2!],4,num,-,%d '+'  ]:dir
記事編集 編集
Re: SpoilerALの修正パッチ (No.4)
投稿日 : 2016/09/07(Wed) 01:40
投稿者 amateur◆kR..xsXL6RU
ID情報 : rTFDXsh8/MosvwYaMqX/g0
参照先
>>変態紳士さん
別スレでも書きましたが、
メモリを確保する機能の追加、あらためてお礼申し上げます。
サンプルSSGに「ERW」は「プログラム用」と説明が書かれてますが、
これは、プログラム改造のパラサイトルーチン等に使えるということでしょうか。

>>3 (仔猫)さん
ツクールや、エウシュリー製等の暗号化されたメモリ上の値を、
アドレスネーミングの現在値(num)に、復号化された(ゲーム画面上の)値で表示できれば、と私も最近思っていたところです。
[io_fep]を使えば電卓の現在値で確認は可能ですが、それだと選択中の項目の現在値しか確認できないですし(アドレスネーミングなら、複数の項目の現在値を一度に確認可能)。
暗号化されている場合の他に、9bitとか14bit等の、バイト単位で読み取れないサイズの値の場合も、
現状のアドレスネーミングではゲーム画面上の数値を表示できませんので困っていたりします。

一応、値が1から99(レベル表示等)のように、数十から数百程度の値しかとらない場合は、
例えばツクール(2n+1)なら、【3=1】等のとりうる全ての値分の行のフリーリストを書けば(表計算ソフトを使えば簡単)、
ゲーム画面上の値をfree_list型のアドレスネーミングで表示可能ですが、
とりうる値が数万、数十万、あるいはそれ以上もあると、フリーリストに書くのは非現実的で無理がありますね。

該当アドレスから読み取った値に対して演算を行う、[io_fep]のアドレスネーミング版のような機能があれば、と思うのですが、
実装は難しいでしょうか。(欲張りに次々要望して申し訳ないのですが・・・)
記事編集 編集
Re: SpoilerALの修正パッチ (No.5)
投稿日 : 2016/09/07(Wed) 03:28
投稿者 amateur◆kR..xsXL6RU
ID情報 : rTFDXsh8/MosvwYaMqX/g0
参照先
>>4に書いた、メモリ上の値が暗号化されている等の場合に、アドレスネーミングでゲーム画面上の値を表示させる件ですが、
ファンネルライトと、最新パッチで追加された「メモリを確保する機能」を組み合わせれば、
暗号化された値等をゲーム画面上の値に変換してアドレスネーミング表示できそうですね。

具体的には、
・ファンネルライトの「条件式」は「use」
・同「書き込むアドレス」は、新機能の「メモリを確保する機能」で空きメモリ【 _Memory::(id) 】を指定し、
・同「書き込むバイト列」には、「置き換え型」命令($? $$)の中のアドレスコーディングに、
項目本体のアドレスの格納値をポインタ変換演算子で読み取って変数定義 → 復号化等の変換式を関数的構文で書いた[define](予め定義しておく)の記号を呼び出して代入、という方法で記述。
・そのファンネルライトで書き込んだ空きメモリのアドレス【 _Memory\:\:(id) 】を指定して、アドレスネーミング(num)で読み取る。
という方法でいけそう?

出来たとしても、上記方法でアドレスネーミング表示させたい項目が多い場合は、
全項目に対し、逐一、[allocate]で空きメモリ確保、[funnel][/funnel]で括る、ファンネルファイル記述、が必要なので面倒かもしれませんが・・・
記事編集 編集
Re: SpoilerALの修正パッチ (No.6)
投稿日 : 2016/09/07(Wed) 03:54
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : uKmEnxi5LPuitOsfBx1bQ/
参照先
>>3 (仔猫)さん
>そう言えば変数の中身をアドレスネーミングで表示できないのかなぁ…と。
>ツクール系でアドレスネーミングを使いますと2n+1が表示されてしまいますので、これをうまく表示できれば(電卓側で確認しろよと言われそう…汗)

最近ツクール系が増えたようですが詳しくは知らないので何とも言えません。
2n+1ですと普通に書けそうですが何か不都合でしょうか。
符号ビットの仕様が分かりませんがテキスト(長すぎるので添付ファイル)を書いてみました。

※追記
添付ファイルですが、仕様が分からないし全く未検証なので長々と書いている部分に間違いを見つけました。
具体的にはコメントアウトしている場所です。

>>4 amateurさん
>これは、プログラム改造のパラサイトルーチン等に使えるということでしょうか。
想定していますが確かめていません。
ただし、確保するアドレスが毎回変動するので、
絶対アドレス(jmp eax, call eax, push address+ret など)で指定するか、
相対アドレスの場合は確保したアドレスを減算して相対アドレスに変換する必要があります。

>フリーリストに書くのは非現実的で無理がありますね。
ファイルサイズが大きすぎて32bitプロセスのメモリ空間ではどうなるか分かりませんね。

>該当アドレスから読み取った値に対して演算を行う、[io_fep]のアドレスネーミング版のような機能があれば、と思うのですが、
>実装は難しいでしょうか。(欲張りに次々要望して申し訳ないのですが・・・)
[define]ではダメなんでしょうか?
メモリへの書き込みは[io_fep]じゃないとできませんが、
読み込みは[define]をマクロ関数にしてアドレスネーミングの式を置き換えられました。
何が出来ないのか理解できていません。

※追記
>全項目に対し、逐一、[allocate]で空きメモリ確保、[funnel][/funnel]で括る、ファンネルファイル記述、が必要なので面倒かもしれませんが・・・
語弊があったかもしれませんが[allocate]の回数は少ない方がいいです。
SSGの切り替えかSpoilerALの終了まで解放されません。
アドレスを少しずつずらして読み書きがいいと思います。
ゲーム側に確保されるのでプロテクトの厳しいゲームで変な事になっても困ると思いますし。

記事編集 編集
Re: SpoilerALの修正パッチ (No.7)
投稿日 : 2016/09/07(Wed) 07:21
投稿者 (仔猫)◆KCezBilYINU
ID情報 : igMbiif6SuGvdJWXVnNbQ0
参照先
>変態紳士さん
添付ファイルありがとう御座います。
実装されてた機能はこう使うのかと目から鱗です勉強になりました。

>amateurさん
流石です。ファンネルライトで実現させる方法…これも思いつきませんでした。
レスありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.8)
投稿日 : 2016/09/08(Thu) 01:57
投稿者 amateur◆kR..xsXL6RU
ID情報 : zzGJthKcyBohKJRUY0ZUe/
参照先
>>6 変態紳士さん
プログラム改造のパラサイトルーチン等に使えるか云々について、
>ただし、確保するアドレスが毎回変動するので、
成程、そのとおりですね・・・
単にcall命令で確保した空きメモリのアドレスを呼び出すというわけにはいきませんね。

>[define]ではダメなんでしょうか?
[define]をどう使えばアドレスネーミングに復号化した値を表示できるのか分からないです・・・
[define]はアドレスコーディング部分に置換処理を行うもの、という認識なのですが、
アドレスネーミングの式(アドレス部分?)を置き換えても、演算結果は結局「アドレス」とみなされるので、
演算結果のアドレスの格納値をそのまま表示することにしかならないと思うのですが・・・
(アドレスネーミングの式を幾ら置き換えたり演算しても、読み取った値に対する演算はされない・・・と思います)
それとも、[define]に何か別の使用法があるのでしょうか?

一応、添付していただいたテキストを参考に、
SpoilerALを対象プロセスにしたSSG(添付しました)を作って念のため試したのですが、
添付SSGの[/script]の後ろに書いたとおり、
[io_fep]を使用しても、暗号化されたメモリ上の値を、復号化してアドレスネーミングで表示させることは不可能だと思います。
・・・だと思うのですが、私が何か勘違いをしていて、論点が違ってるのでしょうか。

記事編集 編集
Re: SpoilerALの修正パッチ (No.9)
投稿日 : 2016/09/08(Thu) 02:06
投稿者 amateur◆kR..xsXL6RU
ID情報 : PiGaaHkh8e76H5UbrFM2R/
参照先
>>7 (仔猫)さん
ファンネルライトを使用する方法ですが、
>>6で変態紳士さんからご指摘のあった[allocate]の使用回数の問題の他にも、
よく考えると穴だらけですね(汗)

まず、ファンネルライトは、該当項目への書込みに「付随して」書込み処理が行われる仕様なので、
SSGを読み込み後、該当項目に一度も書込みをしていない場合は、
>>5の方法だと、アドレスネーミングの現在値は「0」なんですよね。
したがって、最初に該当項目を表示させる際、対象となる全項目用の空きメモリのアドレスに、
対象項目の格納値を復号化等した値を書き込む処理を、一括トグルで必須コード的に行う必要があると思います。
一括トグルのチェインファイルには、
(各項目用の空きメモリのアドレス), (>>5に書いたファンネルライトの「書き込むバイト列」と同じ記述), (00000000 または何も書かない)
という感じで各行を書くことになるかと。

あと、変態紳士さんからのご指摘を受け、[allocate]の使用回数を減らすためにも、
例えば、キャラのステータス等を[repeat]で複数人分表示させる場合、
[allocate]で確保した空きメモリは、各キャラで共用とする(=同時に1人分しかアドレスネーミングの正確な表示はできない)つもりです。
SpoilerAL上で各キャラの表示を切り替える際には、上記の一括トグルを必須コード的にONにする、という感じで。

…というか、上記の一括トグル項目だけでもいいような気がしてきた・・・
一応、>>5で書いた方法のサンプル的なSSG(対象プロセスはSpoilerAL)を作ったので、添付します。
項目1と項目2は書換えできませんが、一括トグルをONにすると、項目1と項目2のアドレスネーミングに値が反映されます。

記事編集 編集
Re: SpoilerALの修正パッチ (No.10)
投稿日 : 2016/09/08(Thu) 03:43
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : uKmEnxi5LPuitOsfBx1bQ/
参照先
>>8 amateurさん
「アドレスネーミング」を勘違いしていました。
どうもすみません。(命名は本体を作った人ですのでこんな事も・・・)

↓ドキュメント通りのアドレスネーミングであれば以下の書式ですが
_mem, アドレス, サイズ, num, エラー時の代替え文字列, 書式指定フィールド
(現在は _memo でも _abc でも動作してしまう、アンダースコアさえあれば動く)

↓こういうのがあれば
_mem, アドレス, サイズ, fep_num, エラー時の代替え文字列, 書式指定フィールド

または
_fep, アドレス, サイズ, num, エラー時の代替え文字列, 書式指定フィールド

という話ですよね(たぶん)
たしかに現状はメモリから読み込んだ値を無加工で表示するしかないです。
出来そうな気がしますが具体的には事はコードを見てからになると思います。

それとエウシュリーの話が出てきましたので[define]とビットシフトで書いたSSGとdiffテキストを添付しておきます。
あくまでサンプルです。

記事編集 編集
Re: SpoilerALの修正パッチ (No.11)
投稿日 : 2016/09/08(Thu) 21:13
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : uKmEnxi5LPuitOsfBx1bQ/
参照先
>>3-9 (仔猫)さん、amateurさん
アドレスネーミングに以下の書式を追加しておきました。

_mem, アドレス, サイズ, fep_num, エラー時の代替え文字列, 書式指定フィールド

num を fep_num に変えると表示が変化します。
記事編集 編集
Re: SpoilerALの修正パッチ (No.12)
投稿日 : 2016/09/08(Thu) 22:22
投稿者 amateur◆kR..xsXL6RU
ID情報 : XXKHaOcIZwPZkozEJGwks0
参照先
>>10 変態紳士さん
添付していただいたSSG等、内容を理解するのが大変そうな大作ですね。
これは、時間のあるときに本腰入れて勉強したいと思います。

>たしかに現状はメモリから読み込んだ値を無加工で表示するしかないです。
やはり、アドレスネーミングはそういう仕様ですよね。
・・・と思ったら、早速パッチの更新が。「fep_num」の書式追加、ありがとうございます!
添付のSSGで確認したところ、正常に動作しており、
[io_fep]の演算(出力値への演算。添付SSGでは【(メモリ上の値-1)/2】)が、
アドレスネーミングの表示にも機能しています。

>>5や>>9で書いた方法は、色々問題があって使いづらいので、大変ありがたいです。
迅速に要望に応えてくださり、感謝いたします。

記事編集 編集
Re: SpoilerALの修正パッチ (No.13)
投稿日 : 2016/09/08(Thu) 22:24
投稿者 (仔猫)◆KCezBilYINU
ID情報 : igMbiif6SuGvdJWXVnNbQ0
参照先
>>11
>変態紳士さん
更新ありがとう御座います。アドレスネーミング派には朗報です!
簡単な確認もデバッグモードを使わなく済むので助かります。

>>9-12
>amateurさん
検証ありがとうございます助かります。
サンプルSSGの正常動作を確認しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.14)
投稿日 : 2016/09/12(Mon) 01:37
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : uKmEnxi5LPuitOsfBx1bQ/
参照先
>>4 amateurさん
>これは、プログラム改造のパラサイトルーチン等に使えるということでしょうか。

パラサイトルーチンのサンプル的なものを用意しました。
source\test\__parasite_test__.ssg

トグルから書き込んだ後、その下の電卓項目で[10進/16進]の切り替えボタンをクリックするとメッセージが表示されます。
APIのテストも兼ねているので若干大きくなっています。
記事編集 編集
Re: SpoilerALの修正パッチ (No.15)
投稿日 : 2016/09/12(Mon) 22:20
投稿者 amateur◆kR..xsXL6RU
ID情報 : CdBdp39lRS9OWqh/85Gl11
参照先
>>14
サンプルSSG、ありがとうございます。
[allocate]で確保した空きメモリを使用したパラサイトルーチン作成方法が大体分かったような気がします。

APIの部分がよく理解できていないので、とりあえず、
パラサイトルーチン部分だけのSSGに修正したみましたが、こんなものでしょうか。

記事編集 編集
Re: SpoilerALの修正パッチ (No.16)
投稿日 : 2016/09/13(Tue) 01:47
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : uKmEnxi5LPuitOsfBx1bQ/
参照先
>>15 amateurさん
戻ってきたら成功ですね。遠い所へ旅立ってしまうと失敗です。

>APIの部分がよく理解できていないので
APIに関しては、DLLのアドレスから更に関数アドレスを拾ってくるもので、
呼び出すときは(スタックなので)引数を逆順にPUSHしてCALLで呼び出せます。

呼び出すよりは基準アドレスにしたり、
関数の中身を書き換えて無効化したり(エウシュリーの時のように)
そういった事にも使えます。

アドレスの部分を書いていたら、各行に相対アドレスを書くの面倒くさいと思ったので
コードの途中で改行できるようにしておきました。
説明が大変なのでテキストを添付。

アドレスコーディングも円記号付きで改行できます。

記事編集 編集
Re: SpoilerALの修正パッチ (No.17)
投稿日 : 2016/09/13(Tue) 22:42
投稿者 amateur◆kR..xsXL6RU
ID情報 : 9VQ.Pp2Nnw2tUO4TtSzyG.
参照先
>>16
APIの部分の解説ありがとうございます。
といっても、分かったような分からないようなという感じですが(汗)
[group]parasite の最後の2行は、「情報」と「[10進/16進]ボタンがクリックされました」の文字列ということは分かりましたが、
関数アドレス部分の処理は私にはまだ理解が難しいようです。
そもそもスタックの操作に慣れていないというレベルでして・・・
やはり、基本からしっかり勉強しないといけないようです。

それと、パッチ更新ありがとうございます。
円記号(\)付加で改行に対応とのことで、
一行に本来書くべきコードを改行で分割できたら読みやすくなりそうですね。
下記のように無意味に改行しても正常に機能しました。
--------------------------------------------------------
[subject]パラサイトルーチンの作成/ON\/OFF/_:b_toggle\
, 0x00, ssl->parasite, offset
--------------------------------------------------------
記事編集 編集
Re: SpoilerALの修正パッチ (No.18)
投稿日 : 2016/09/14(Wed) 17:53
投稿者 774
ID情報 : 4/YMm7zO.KbBAH9IaQwyk0
参照先
パッチ適応前に読み込めるSSGをパッチ後に読み取ろうとするとSpoilerALが動作を停止します。

環境:Win10Home 64Bit
問題あるSSG:kn氏のGEARS of DRAGOON 〜迷宮のウロボロス〜
同じkn氏のでもBunnyBlackは読み込めたからSSGの修正ではなく読み込み側の問題かと思って投稿してます。

追記:
タイトル側のところの表が制限されてるみたいで、表示が途中で切れます。
これもバッチ適用前は正常です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.19)
投稿日 : 2016/09/14(Wed) 19:15
投稿者 NEExploiT◆1I03EIw9l9M
ID情報 : w0pf.r3wllN/F5MWppwNC0
参照先
エクスポートアドレスを取得できるようになりましたか
色々使いみちはありそうですが
一つ懸念は、名前が無い場合や難読化の為に文字化けさせた場合ですね
99%無い事態ですが序数指定も検討しておくといいかもしれません
記事編集 編集
Re: SpoilerALの修正パッチ (No.20)
投稿日 : 2016/09/14(Wed) 19:19
投稿者 amateur◆kR..xsXL6RU
ID情報 : JZoSo9ny/otDY95KjwL56.
参照先
>>18
私も偶々そのゲーム持ってる(インストールしたまま)ので、【2016.09.13】分の最新パッチ適用の状態で
件のknさん作SSGを選択すると、読み込みに失敗してSpoilerALが落ちてしまいますね。
ただ、一つ前の【2016.09.10】分のパッチに戻したら、上記SSGが正常に読み込めました。
なお、上記のSSGは臨時板のバックアップの「過去板サルベージ依頼等 」記事 ( No.101 )からDL可能ですね。

(追記)
毎回ではないかもですが、SpoilerALが落ちる際には下記のエラー表示がよく出ます。
「メモリストリームの拡大中にメモリが足りなくなりました」

それと、再現性確認のための参考情報ですが、
SSG作者のknさんは体験版で解析されたらしいので、体験版でもSSGは動作すると思います。
Holyseal 〜聖封〜」の「RPG体験版ver1.00」で、ミラーの[6]が速くDLできるっぽい(試したら約4分)です。
一応、上記からDLした体験版でも同様の結果でした。
記事編集 編集
Re: SpoilerALの修正パッチ (No.21)
投稿日 : 2016/09/14(Wed) 21:52
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : uKmEnxi5LPuitOsfBx1bQ/
参照先
>>19 NEExploiTさん
>序数
序数は実装した時から使えます。(無名の関数を想定しています)
読みにくいですが差分のHowToSSGに序数の書き方があります。

ただ、規格外な名前には対応していません。
エクスポート関数はコンパイル後にバイナリを書き換えれば変な関数名も作れてしまいます。
名前をプロテクトにしても効果が無いので滅多に出現しないと思いますが・・・

>>18 774さん
>>20 amateurさん
報告どぉもです。
コードの途中の改行する機能に付随するバグでした。
直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.22)
投稿日 : 2016/09/14(Wed) 22:04
投稿者 amateur◆kR..xsXL6RU
ID情報 : xX6KHvbMLMuJvmaB5LCCF1
参照先
>>21 変態紳士さん
迅速な対応、ありがとうございます。
確認したところ、正常に動作するようになりました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.23)
投稿日 : 2016/09/15(Thu) 18:20
投稿者 gwendolyn
ID情報 : lRLwnHgsPSUYhNo6joMBn1
参照先
最新の修正パッチ(09.13)を当てるとspoilerAL本体が起動できなくなります。確認したところとこのKAMT.ssgが原因だそうです。
このssg削除すればちゃんと起動できます。
またパッチを削除すればこのssgもちゃんとロードされます。

修正できますか?

記事編集 編集
Re: SpoilerALの修正パッチ (No.24)
投稿日 : 2016/09/15(Thu) 21:29
投稿者 amateur◆kR..xsXL6RU
ID情報 : LsdYcufh7T9iqt0vUkMrV0
参照先
>>23
私の環境では、そのSSGをSpoilerALのSSGフォルダに入れても、問題なくSpoilerALは起動しますよ。
そのゲームは持ってないので、添付のSSGが正常に使用できるのかは知りませんけど。
一応「神採りアルケミーマイスター」体験版をDLしてそのSSGを読み込みましたが、
そのSSGが使えない(多分アドレスのずれが原因)だけで、
SpoilerALの動作自体には問題はありませんでした。

念のため確認しますが、>>21の変態紳士さんの書込み以降にパッチを再DLして試しましたか?
もし試していないなら、最新パッチを再DLして試してみては。
>>21で変態紳士さんが書いていらっしゃるとおり、
最新パッチ(2016.09.13分)は昨日に修正(ファイル差し替え)されていますので。

>>18で774さん、>>20で私が書いてるのと似たような症状っぽい気がするのですが、
それは上記のとおり修正済みのはずです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.25)
投稿日 : 2016/09/15(Thu) 22:39
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : OILa74xruKTkxYU6ms6Wj.
参照先
>>23 gwendolynさん
報告どぉもです。

この修正パッチは頻繁に更新しています。
なので、報告前には最新版での確認をお願いします。
注文が多いと年寄りだと言われそうですが・・・

作ってる環境では確認できませんでした。
新しく見つかったバグなら修正しようと思うので、
念のため再度最新の状態で確認をお願いします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.26)
投稿日 : 2016/09/18(Sun) 05:22
投稿者 通りすがり
ID情報 : xhTylvH.iO7YP26FL7fov/
参照先
最新の修正パッチ(09.17)を当ててたらspoilerAL本体が起動できなくなりました。すぐに強制終了します。
検証の結果ssgフォルダ内に以前のバージョンのssgが入ってると起こるみたいで、フォルダ内を6.2のだけにした時とwinmm.dllを消した時しか正常に動作しません。併用は不可能でしょうか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.27)
投稿日 : 2016/09/18(Sun) 08:51
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : OILa74xruKTkxYU6ms6Wj.
参照先
>>26
>併用は不可能でしょうか?
併用は可能です。情報が少なすぎて見当が付きません。
何が干渉しているか見当は付きますか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.28)
投稿日 : 2016/09/18(Sun) 11:03
投稿者 通りすがり
ID情報 : jrCZ9Ixx2pdlnS9l9W9oU0
参照先
いろいろと試したら起動できるようになりました。原因は不明。複数のssgが干渉しあって起きたとしか言いようがないです。ファイルを移動させたり戻したりでも結果が変わったりするので見当はつきませんでした。すみません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.29)
投稿日 : 2016/09/18(Sun) 17:14
投稿者 amateur◆kR..xsXL6RU
ID情報 : ZhuSTlyjYCVy67Q6e/KHu1
参照先
>>28
最新パッチ当てましたが、私の環境では>>26のような症状は今のところ一度も起きませんね。
一応、SpoilerAL6.1用の過去のSSG(>>18に書かれているSSG等複数)を読み込んだりして幾つかのゲームで何回か試しましたが、
特にSpoilerALの動作に問題はありません(SSGフォルダには6.1用の過去のSSGが大量に入っています)。

最新パッチを当てる前は、どの日付分のパッチを当てていたのか、
あるいは、パッチを当てること自体が初めてなのか、
>>26のような症状が起きたのは初めてなのか、今までにもあったのか、
そのあたりの詳しい情報を書いた方がいいのでは。
そういうことは他人には分からない情報なので、質問・依頼する側が積極的に申告すべきかと思います。

この掲示板の利用規約にも書いてますが
「需要が満たされない時の対処法」(この部分は本家猫缶Index時代からほぼ同じテンプレ)にある、
「閲覧者に自分の書き込みを読んでもらうこと・ 自分の状況を理解してもらうことの2点に留意」(引用)ということですね。
つまり「隣に座ってプレイしているのを見ている場合でも無い限り、発言の内容が十分に理解できない」(同じく引用)
のですが、本家猫缶Index時代から、守らない人が多い(だからこそ規約等にテンプレ的にずっと残ってる)のですよね。
記事編集 編集
Re: SpoilerALの修正パッチ (No.30)
投稿日 : 2016/09/19(Mon) 06:16
投稿者 RICK◆PIflJPH.oeY
ID情報 : w/YsfXVRClIpTOuNx61NR0
参照先
最新パッチを当てた場合、私が作ったツクール製のSSGが大量にあるとSSGの解析中にフリーズし、起動できなくなる模様です。

逆に私が作ったSSGのフォルダを削除すると使えるようになります。
おそらくツクール製のSSGの構文に引っかかるものがあるかもしれないので調査をお願いします。

RPGツクールXP/VXのゲームは通過し、VX Aceのゲームで停止します。

これらの大きな違いは"[group]item_ssr"のコードの複雑さにあるのでそのあたりが原因かもしれません。

ドメイン移転直前(2016/09/15 01:13)時点の修正パッチでは正常動作することを確認しました。

一応OSはWindows10でウィルス対策はKingSoftです。

【添付ファイルの説明(左から)】
1.解析が止まった瞬間を捕らえたスクショ
2.正常動作を確認した修正パッチ(2016/09/15 01:13版)
3.解析が停止したことを確認したSSG2つ

記事編集 編集
Re: SpoilerALの修正パッチ (No.31)
投稿日 : 2016/09/19(Mon) 07:06
投稿者 (仔猫)◆KCezBilYINU
ID情報 : rEJID857HEZobEaiEqljC/
参照先
方々、お疲れ様です。
RICKさんのSSGですが僕のところでは特に問題なく検索で表示されるようです。

しかし、今後のこともあるので『安定版』と『最新版』と『最新版の1つ前』の3つ(旧バージョンを2つぐらい含めて)公開して下さるとユーザー側で、どの版で異常があるか判断材料になりやすいかと(報告しやすいかな)

追記です。
>>30
ALの検索では止まらないですが…
タイトルセレクト画面で該当のSSGが表示されません(選択できない状態です)

SpoilerAL.logを確認すると

RICK\MONSTER RINGDOM 〜 ホーリー祭3rd.ssg,2378375365
[Distinction]

RICK\淫魔島のエクスプローラー 体験版.ssg,2658760035
[Distinction]

と[Distinction]以降の項目〜が空欄になってます。
------------------------------------------
パッチを当ててない時の挙動

RICK\MONSTER RINGDOM 〜 ホーリー祭3rd.ssg,2378375365
[Distinction]
39,661549:creator=RICK,maker=ARCSTAR RINGDOM,process=Game.exe,title=MONSTER RINGDOM 〜 ホーリー祭3rd

RICK\淫魔島のエクスプローラー 体験版.ssg,2658760035
[Distinction]
39,660120:creator=RICK,maker=24ぺーじ,process=Game.exe,title=淫魔島のエクスプローラー 体験版
----------------------------

追記2
手持ちのverでは09/10版以前ではOK(問題なく選択できる)
09/17版(最新)ではNGです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.32)
投稿日 : 2016/09/19(Mon) 22:42
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : lmIfydl/UVmXF02KfrbmR1
参照先
>>30 RICKさん
>>31 (仔猫)さん

修正しました。

円記号(\)で改行する機能に付随するバグでした。
元々のコードに習いファイルを64KBごとに読み込んでいるのですが、
2バイトの改行コードが64KBの境界をまたいだ時に起きるバグでした。
2バイト文字は問題ありません。改行のみです。

>『安定版』と『最新版』
気持ちは分かりますが否定的な回答をします。
その方法はバージョン管理と呼ばれるものでロールバックを実現させるシステムが存在しますが、
何よりもバージョンに2つ、3つとブランチ(分岐)を増やしてしまうと分岐の数だけ更新の負担が増えてしまいます。

バージョンのコミット(最新版の公開)は安定していなければならなくなりますが、今回の様な潜在的なバグというのは
結局のところ安定版として公開した後に見つかるものだと思います。

>ALの検索では止まらないですが…
修正前のものですが、SpoilerAL.log を削除するとフリーズする事を確認できました。

※追記
追加機能のネタが無くなってきました。。。
記事編集 編集
Re: SpoilerALの修正パッチ (No.33)
投稿日 : 2016/09/20(Tue) 07:42
投稿者 (仔猫)◆KCezBilYINU
ID情報 : igMbiif6SuGvdJWXVnNbQ0
参照先
更新ありがとうございます
僕のところでは問題なくなりました(読み込めてます)

>今回の様な潜在的なバグ
あー、確かにそうですね。
今回のように現象を再現できなければお手上げですし。
記事編集 編集
Re: SpoilerALの修正パッチ (No.34)
投稿日 : 2016/09/20(Tue) 21:05
投稿者 dipper◆LEFxdWWYR3c
ID情報 : FyiyLXgYH8rBIZARmkWI10
参照先
どうもお久しぶりです。


>>変態紳士さん

早速で何なのですが、[fep_num]でエラーが出たのでご報告を。
確認した限りでは[io_fep]の出力側に[: :]や[. .]があるとエラーが出るようです。

とりあえず確認用のSSGを添付しておきます。ご確認お願い致します。

記事編集 編集
Re: SpoilerALの修正パッチ (No.35)
投稿日 : 2016/09/21(Wed) 05:16
投稿者 粘着質
ID情報 : bT.ev70BxqjAqutIFXJKP0
参照先
お世話になります

スレの趣旨とは外れるのですが
SpoilerALでSSGを読み込んだ際に空白の項目が最上部に追加され
以降、起動時にその項目が増えていく現象の解決方法はありますでしょうか?

マウスオンした際に出る誤認識SSGを圧縮するなりして除外すれば
回復は可能なのですが、何が条件で起きているのかがさっぱりなので
もし修正可能であれば、方法を教えていただきたく
記事編集 編集
Re: SpoilerALの修正パッチ (No.36)
投稿日 : 2016/09/21(Wed) 05:59
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : OILa74xruKTkxYU6ms6Wj.
参照先
>>34 dipperさん

添付ファイルが役に立ちました。
直しておきました。


>>35 粘着質さん

>回復は可能なのですが、何が条件で起きているのかがさっぱりなので
>もし修正可能であれば、方法を教えていただきたく
まず、他の方の修正がスムーズに行われている一番の理由ですが、
「製作者の環境で不具合を再現出来ている」からです。

>現象の解決方法はありますでしょうか?
他の人にとって再現性は数少ない手がかりです。
他人の環境で再現させようとしてください。
そうすれば解決する可能性が高くなります。

粘着質さんの場合、修正パッチを導入した環境で起きているのか、
オリジナルのバージョン6.1で起きているのか書かれていません。
該当のSSGのタイトルも書いてください。

・手順1
最新版にしてテストしてみる。
一日に何度も修正がある事も多いので、
修正パッチを導入している場合は最新版にする(日付は無視して更新)。

・手順2
パッチを削除した状態で比べてみる。
これで導入前か導入後か判断できる。

・手順3
SSGフォルダをコピーや移動またはバックアップし、
現行のSSGフォルダのファイルを半分程度に削除してみる。
再現する場合は現行のSSGフォルダを更に半分に減らし、再現する限り半分に減らし続け、
消去法で残ったSSGファイルが不具合の対象になる。

報告に必要な内容
・不具合の内容
・再現方法
・修正パッチの導入前か導入後か
・不具合を引き起こしているSSGとダウンロード先
・その他、出来る限り詳しく (詳しく書くと再現性が高くなる)
記事編集 編集
Re: SpoilerALの修正パッチ (No.37)
投稿日 : 2016/09/21(Wed) 19:09
投稿者 dipper◆LEFxdWWYR3c
ID情報 : FyiyLXgYH8rBIZARmkWI10
参照先
>>36 変態紳士さん

早速の対応ありがとうございます。
確認した限りでは問題なく使用できています。


>>※追記
>>追加機能のネタが無くなってきました。。。

それと追加機能のネタと言うか要望ですけど。
以前からアドレスネーミングで使える[free_list]のコマンド(?)版があればなと思っていました。
実装されれば単純にリストに使う容量が1/2に減り、[free_list]用のリストを含めれば1/3は減りますし。
それだけではなく、リストファイル一つでアドレスネーミング用、実行用リストファイルとして使えますから。

使用感は下記のような感じでしょうか?

まずは御一考お願い致します。


■free_list

[subject]項目名: free_list, アドレス, リストファイル

[group]リストファイル
1=表示1
2=表示2
-=書き換えは行わず表示用
20=表示20
[/group]
記事編集 編集
Re: SpoilerALの修正パッチ (No.38)
投稿日 : 2016/09/22(Thu) 05:16
投稿者 RICK◆PIflJPH.oeY
ID情報 : iVYDp36oncAGHLZONIPZR.
参照先
こちらも追加機能のネタというか要望ですが、
UTF-8で書かれたSSGも読み込みできるように出来ませんか?
BOM付き、BOMなしは問いません。

現状だとUTF-8 BOM付きだとヘッダが正しくないと表示され、
UTF-8 BOMなしだと文字化けします。

というのはたまにUTF-8にはあってSHIFT-JISにはない文字をリストで採用することがあるからです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.39)
投稿日 : 2016/09/22(Thu) 06:30
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : OILa74xruKTkxYU6ms6Wj.
参照先
>>37 dipperさん

コマンド版というのが理解できていません。

>-=書き換えは行わず表示用
これはリストに何も行わず表示したいという事でしょうか?
マイナスという文字が認識対象なのかどうか調べないといけませんが・・・

間違った解釈のまま進めても無意味ですし、まずは仕様を把握する方が先です。

>>38 RICKさん
>UTF-8で書かれたSSG
無理だと思います。なんせ内部のコードがSHIFT-JIS(CodePage932)で構成されていますから・・・
仮にUTF8を読み込んでも内部処理のためにCP932に変換しなければならず、
手動で変換しても文字コードに無い文字は出力できません。
これは仕方ない事だと思います。

SpoilerALの最終更新日時は2003年ですが、当時はマルチバイト文字を扱うのが主流でした。
近年はOSを含めUTF-16LEを扱うものが多くて外字を除けば表現できたりします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.40)
投稿日 : 2016/09/22(Thu) 18:21
投稿者 dipper◆LEFxdWWYR3c
ID情報 : FyiyLXgYH8rBIZARmkWI10
参照先
>>39 変態紳士さん

コマンドと言うのが変な表現でしたね。
解説どおりなら項目種別のことを言いたかっただけです。

説明が下手なので申し訳ありませんが、free_list用のリストを使ってlistやb_listの様にリスト処理を行いたいといった趣旨です。


>-=書き換えは行わず表示用

「 - 」はd_listでいう空行でリスト上は表示するけどメモリ上には書き込まないといった意味で使いました。
下記@をd_list用のリストに置き換えると下記Aといった感じです。


■@

[group]リストファイル
1=表示1
2=表示2
-=書き換えは行わず表示用
20=表示20
[/group]

■A

[group]リストファイル
表示1
表示2
書き換えは行わず表示用
表示20
[/group]

[group]チェインファイル
1
2

20
[/group]




それとoffset指定が抜けてたので訂正。

[subject]項目名: free_list, アドレス, リストファイル

[subject]項目名: free_list, アドレス, リストファイル, offset
記事編集 編集
Re: SpoilerALの修正パッチ (No.41)
投稿日 : 2016/09/22(Thu) 19:11
投稿者 RICK◆PIflJPH.oeY
ID情報 : 1zDHnZ2szC64NJVBBLlIS.
参照先
>>39 変態紳士さん

やはりUTF-8で書かれたSSGを読み込むのは無理でのようですね。

それでは追加の要望を書かせていただきます。

あと現状(6.1)では
[replace]でポインタを指定できるのは一度のみのようですが、
これを複数回使用可能にすることはできませんか?

例:
[subject]test:dir
[replace]@ssl->address_test,ssl->test
[/group]


[group]test
[subject]test:calc,0x04,0,99
[subject]test1:dir
[replace]@ssl->address_test1,ssl->test1
[back]
[/group]

[group]test1
[repeat]ssl->test2,0,8,1
[/group]


[group]test2
[subject][!L($Val+1)!]:calc,0x[!$Val*4!],0,9999
[/group]

※address_testとadress_test1には多重ポインタを採用します。
記事編集 編集
Re: SpoilerALの修正パッチ (No.42)
投稿日 : 2016/09/22(Thu) 19:32
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : OILa74xruKTkxYU6ms6Wj.
参照先
>>40 dipperさん
リストの書式を統一して使い回したいという事ですか。
そう思う事は多いですね。

確かに不自然なほど規格化できていないリスト群ですが、
バイト列を扱える部分とそうでないところがあったような・・・?
気がします。(本体を作った人じゃないので分かりません)

リスト系の処理はそれぞれが独立していて一つ一つ作り直しになるので労働力もそれなりです。
アセンブラで書くコードが大きくなればなるほど人間コンパイラみたいな状態で神経質になりますし。
○○が出来るとかいう目的みたいなものが無くて萎えると言いますか。
なんというかビミョーな案件ですね。マトモなエディタなら矩形選択でコピペすればいいわけですし。

後回しになるか放置になるか分かりませんが保留させてください。
時々コードを読み返して簡単だったら実装になると思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.43)
投稿日 : 2016/09/22(Thu) 19:50
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : OILa74xruKTkxYU6ms6Wj.
参照先
>>41 RICKさん

>[replace]でポインタを指定できるのは一度のみ
[replace]でポインタと言いますか、多重[replace]自体が困難だったと思います。
以前、~のラプソディというタイトルで多重[replace]を行った事がありますが、
[replace]内でオフセット[.0.]から同じアドレスを減算してゼロに戻すような処理になりました。

コード上の[replace]は、SSGファイルの行の配列としては静的に展開されており、各行の解釈が動的に行われています。
これは再帰処理と呼ばれる処理に当てはめていますので、オフセットアドレス属性を途中で外す事は出来ません。
現状の[replace]の仕組みとしては困難かもしれません。

コードを読み返した上で進展があれば報告します。
記事編集 編集
Re: SpoilerALの修正パッチ (No.44)
投稿日 : 2016/09/23(Fri) 06:06
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : lmIfydl/UVmXF02KfrbmR1
参照先
>>41 RICKさん

テスト用にSSGファイルを用意しました。
現状でもポインタを使った多重[replace]は問題ないようです。

やはり[replace]中のオフセット解除が問題となります。
添付ファイルの[2ndToNull]グループのような事を行わないと解除できません。
~のラプソディの時にこれで苦労したような・・・

しかし、コード上は再帰処理中に属性解除は出来ないので、
オフセット解除を行うのなら[define]でモジュールアドレスから取得する方が効率的になります。

※追記
添付ファイルはヘッダを6.1にしても動くようです。

>あと現状(6.1)では
>[replace]でポインタを指定できるのは一度のみのようですが、
>これを複数回使用可能にすることはできませんか?

意味が違うのであれば別ですが、これは解決?なのでしょうか。

記事編集 編集
Re: SpoilerALの修正パッチ (No.45)
投稿日 : 2016/09/24(Sat) 04:19
投稿者 RICK◆PIflJPH.oeY
ID情報 : TiEnYMJcRP4t3Lu9mFH0L.
参照先
多分解決でいいと思います。
お手数おかけして申し訳ありませんでした。
記事編集 編集
Re: SpoilerALの修正パッチ (No.46)
投稿日 : 2016/09/28(Wed) 18:44
投稿者 dipper◆LEFxdWWYR3c
ID情報 : FyiyLXgYH8rBIZARmkWI10
参照先
>>42 変態紳士さん

返信が遅れて申し訳ありません。
もし機能の追加が出来そうでしたら、その時はよろしくお願い致します。


それと追加の要望なのですが…
下記@の処理だと0x400000、0x400004、0x400008...に0x500000の格納値を書き込むといった処理ですが、
バイト列の相対ジャンプ命令や反復命令のジャンプ値を格納する変数を追加することは可能でしょうか?
例えば下記A、Bの様にジャンプ値を格納する変数(仮に「$Jmp」)があれば一定間隔でステータスなどを管理しているゲームは便利だと思うのですが。
どうか御一考よろしくお願い致します。


■@
[subject]test/_:toggle,0x400000,*[ 0x0100 :: [:0x500000:] *],??

■A
[subject]test/_:toggle,0x400000,*[ 0x0100 :: [:0x500000+$Jmp:] *],??

上記は0x400000=[:0x500000:]、0x400004=[:0x500004:]、0x400008=[:0x500008:]...

■B
[subject]test/_:toggle,0x400000,*[ 0x0100 :: [:0x400004+$Jmp:] *+01 0C *],??

上記は0x400000=[:0x400004:]、0x400010=[:0x400014:]、0x400020=[:0x400024:]...
記事編集 編集
Re: SpoilerALの修正パッチ (No.47)
投稿日 : 2016/09/28(Wed) 19:35
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : OILa74xruKTkxYU6ms6Wj.
参照先
>>46 dipperさん
メモリの塗りつぶしだけじゃなくてコピーが出来ますね。

ジャンプ jump ($Jmp) というより、相対アドレス relative address ($Rel) かと思います。
または、開始アドレスが分かっているので absolute address ($Addr) のようなものを用意して減算するか、
繰り返し回数の count ($Cnt) で計算するか、そんなところでしょうか。

しかし、アドレスコーディングとバイト列のコードは分離されていて、規定の変数を追加する事はできません。
アセンブラから関数の引数を増やすとなると全ての呼び出し元を書き換えないといけませんし・・・
この場合は範囲が巨大になりすぎて手におえない可能性もあります。

SpoilerALのソースコードを読んでから検討します。
記事編集 編集
Re: SpoilerALの修正パッチ (No.48)
投稿日 : 2016/09/28(Wed) 21:06
投稿者 dipper◆LEFxdWWYR3c
ID情報 : FyiyLXgYH8rBIZARmkWI10
参照先
>>47 変態紳士さん

早速の返信ありがとうございます。

個人的には repeat の $Val 感覚で使える count ($Cnt) が良い様な気がします。
とは言っても、これ以上無理も言えないので簡単な方でお願いできればと思います。
搭載は、やはり難しいようですね。
ですが、お時間のある時にでも、ご検討のほどよろしくお願い致します。

というか面倒事しか、お願いしていないような…
記事編集 編集
Re: SpoilerALの修正パッチ (No.49)
投稿日 : 2016/10/01(Sat) 17:33
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 1FEI0U3d1/9ixStXY/B9l1
参照先
>>48 dipperさん
バイト列の反復命令に $Rel を実装しました。
サンプル的なSSGは source\test\__memory_copy__.ssg です。

count ($Cnt) というより index ($Idx) ですが、
$Rel ではダメだという場合は早目に連絡してください。

その場合は現行の $Rel を廃止して切り替えます。
両方とか全部とかは面倒なので・・・
記事編集 編集
Re: SpoilerALの修正パッチ (No.50)
投稿日 : 2016/10/01(Sat) 22:59
投稿者 dipper◆LEFxdWWYR3c
ID情報 : NfsgY3tSYDXJTZ.gO6SWu/
参照先
>>49 変態紳士さん

パッチの機能実装ありがとございす。
まさか、こんなにも早く実装して頂けるとは思ってもいませんでした。

まだ、添付されているテストSSGでの確認しかしていませんが、
少し修正して相対ジャンプ命令も反映される事を確認しました。

個人的には、要望どおりの効果が得られ、とても満足な仕上がりになっています。


早速この機能を使えそうなゲームがあるので色々試したいと思います。
(いつSSGが完成するかは未定ですけど…)
記事編集 編集
Re: SpoilerALの修正パッチ (No.51)
投稿日 : 2016/10/03(Mon) 18:01
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 5vCy/77Am9O/F8wzIJjKN/
参照先
>> 変態紳士さん

度々申し訳ありません。
また要望がありまして、投稿させて頂きました。


現状 [io_fep] は list や b_list には効果が無いですよね?
そこで要望は [io_fep] を list や b_list などで機能するように対応して頂きたいのと
上記の機能が搭載できた場合、アドレスネーミングに fep_num の様に fep_list、fep_free_list の様な感じで、
[io_fep] の効果を参照できる項目を追加して頂けないでしょうか。

現在SSGを作成しているゲームは例えば 16進数:0x2E14EA 10進数:3020010 と格納されている場合、
30 20 10 で分解され三つの項目を管理している様な箇所が多数存在しています。

リストを使いたい項目も、そういった箇所が多数存在していまして今回要望を出させて頂きました。
どうかご検討のほどよろしくお願い致します。
記事編集 編集
Re: SpoilerALの修正パッチ (No.52)
投稿日 : 2016/10/03(Mon) 21:17
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>51 dipperさん
list系はクラスですね・・・
アセンブラから既存のフレームワークを解析してクラスを実装するのは苦行です。
[define]の時もクラスでしたが、既存のクラスを拡張し型の認識方法を変える事で既存のクラスと違う動作をするようにしています。

大変なので出来る事なら現状のままSSG製作側で対処をお願いします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.53)
投稿日 : 2016/10/03(Mon) 23:44
投稿者 dipper◆LEFxdWWYR3c
ID情報 : NfsgY3tSYDXJTZ.gO6SWu/
参照先
>>52 変態紳士さん

そうですか実装は難しいですか、残念です。お時間を取らせました。
SSGについては caution を用いてリストを確認できる様に対応しようと思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.54)
投稿日 : 2016/10/07(Fri) 01:05
投稿者 dipper◆LEFxdWWYR3c
ID情報 : NfsgY3tSYDXJTZ.gO6SWu/
参照先
>> 変態紳士さん

毎度のパッチ更新ありがとうございます。

早速本題ですが adjustment の方に不具合があったので修正して頂けないでしょうか?
内容は size を使用すると、変換したバイト列がおかしくなるようです。

[size]4 を使用した場合、値が 1 の場合は変換されるバイト列は本来 01000000 なのですが 00000001 になってしまうようです。
一応、確認用のSSGを添付しておきます。

可能であれば修正をお願いできないでしょうか。

■追記

動作の確認はSpoilerAL ver 6.2です。
そもそもSpoilerAL ver 6.1は size の機能しなかったので、いつの間にかパッチに追加された機能でしょうか?

■追記2
私の環境だと修正パッチ (2016.10.06) と (2016.10.07)で確認したところ MName:: を使用するとエラー落ちしてしまうようです。

原因を確認中ですが一部SSGでSpoilerALが展開される前に終了してしまいます。

記事編集 編集
Re: SpoilerALの修正パッチ (No.55)
投稿日 : 2016/10/07(Fri) 06:02
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>54 dipperさん
修正しました。

>そもそもSpoilerAL ver 6.1は size の機能しなかったので、いつの間にかパッチに追加された機能でしょうか?
隠れバグが何かのオマケで直ったような事ではないでしょうか。

>MName:: を使用するとエラー落ちしてしまうようです。
こちらでは何も起きませんが、タイトルが分かったらお願いします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.56)
投稿日 : 2016/10/07(Fri) 07:04
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 5vCy/77Am9O/F8wzIJjKN/
参照先
>>55 変態紳士さん

早速の対応ありがとうございます。
ただ、>>54の添付SSGで使用して確認した所、
リスト選択時に「モジュール WINMM.DLL のアドレス73B3DA61 でアドレス FFFFFFFF に対する読み込み違反がおきました」
とエラーが発生しました。環境の問題でしょうか?

それと MName のエラーの再現が出来たので確認用のSSGを添付しておきます。
こちらはパッチを外して確認するとエラーは発生しませんでした。
パッチを適用していると「SSG for SpoilerAL ver 6.1」「SSG for SpoilerAL ver 6.2」でも発生します。
これも、もしかして環境依存でしょうか…

■追記

>>そもそもSpoilerAL ver 6.1は size の機能しなかったので、いつの間にかパッチに追加された機能でしょうか?
>隠れバグが何かのオマケで直ったような事ではないでしょうか。

改めて確認しましたらパッチ未適用でも size は機能してました。
ただ、パッチ適用後「SSG for SpoilerAL ver 6.1」だと機能しなく、
「SSG for SpoilerAL ver 6.2」なら機能するといった状態でした。
最新版のパッチだとエラーで確認出来なかったので 2016.10.03 にダウンロードしたパッチで確認しました。

記事編集 編集
Re: SpoilerALの修正パッチ (No.57)
投稿日 : 2016/10/07(Fri) 07:10
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>56 dipperさん
なんだか怪しい気がしてきたので早いうちに対応します。
情報ありがとうございました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.58)
投稿日 : 2016/10/08(Sat) 00:20
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>56 dipperさん
たぶん直りました。
というのも添付のSSGでは再現しなかったのですが、
他のSSGの挙動が変なので修正しました。

特定のゲームでデバッグモードにしたままSSGを開くとログ画面がメイン画面を巻き込んでフリーズするものでした。
更に別のPCでは違う動作をしていたり色々でしたが、一カ所メモリの扱いを間違えていたので直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.59)
投稿日 : 2016/10/08(Sat) 01:39
投稿者 dipper◆LEFxdWWYR3c
ID情報 : NfsgY3tSYDXJTZ.gO6SWu/
参照先
>>58 変態紳士さん

早速の対応ありがとうございます。お疲れ様です。
早速パッチを適用して確認してみました。


>>56 に添付したSSGは正常に動作することを確認しました。
ただ、いまだ動作しないSSGがあり パッチに同梱されている __memory_copy__.ssg で確認した所、起動できませんでした。
おそらく、SSGを投稿したり、ゲーム解析について語るスレ で話題に上がった Memory:: が原因だと思われます。

>>54のSSGで確認した所 adjustment はまだエラーが発生します。
リスト選択時に「モジュール WINMM.DLL のアドレス 7440DA41 でアドレス FFFFFFFF に対する読み込み違反がおきました」と発生しました。

そして、さらに確認した所 toggle があると何故か起動しませんでした。
>>56 SSGの [group]main 内に↓を追加したところ起動しませんでした。
[subject]テスト//:toggle,0x00,00000000,??

b_toggle を使用すると起動はするのですが選択すると「モジュール WINMM.DLL のアドレス 7441E27F でアドレス FFFFFFFF に対する読み込み違反がおきました」と発生しました。

環境依存なようなので意味が無いでしょうけど、確認用のSSGを添付しておきます。

記事編集 編集
Re: SpoilerALの修正パッチ (No.60)
投稿日 : 2016/10/08(Sat) 02:33
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>59 dipperさん
VMware に Windows 2000 Professional Service Pack 4 (x86) を新規インストールした環境でテストしましたが、
何も起きないようです。

>WINMM.DLL のアドレス
これなんですけど、エラーが出ている時はDLLの開始アドレスが必要になります。
DLLですし固定アドレスじゃないので。
エラーが出ている最中に、うさみみで[メニュー]-[移動]-[表示アドレスを指定]-[次のモジュール]を何度かクリックすると見つかります。

CPU依存を疑い始めたけど調べようがなく、10月1日の分も複数あるので、
とりあえず動作する最新のものをアップロードして頂けないでしょうか。
新規の環境で再現しないという事は、差分を最小限にして適用した方が不具合を調査するより早いかもです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.61)
投稿日 : 2016/10/08(Sat) 03:05
投稿者 ユウちゃん
ID情報 : 0UPeu3JUnu8p4KeC5H5PD1
参照先
横から失礼。
私の環境でも>>59の添付ファイルで同じようにエラーが出ました。
「モジュール WINMM.DLL のアドレス 706CE27Fでアドレス FFFFFFFF に対する読み込み違反がおきました」
WINMM.DLLの開始アドレス706C0000

こちらの環境Win10 Pro 64bit
使用パッチVer2016.10.08
です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.62)
投稿日 : 2016/10/08(Sat) 03:13
投稿者 dipper◆LEFxdWWYR3c
ID情報 : NfsgY3tSYDXJTZ.gO6SWu/
参照先
>>60 変態紳士さん

私の環境で現状問題なく使用できるのは 2016.01.03 の16時頃に入手したパッチです。
それを添付しておきます。

それと __memory_copy__.ssg は下記を削除すると表示できました。

[subject]コピー元[ '+' _mem, _0x00400050, 0x24, null, - '+' ]//_:string, _0x00400050, 0x24, null
[subject]コピー先[ '+' _mem, _Memory\:\:0, 0x24, null, - '+' ]//_:string, _Memory::0, 0x24, null

ただ下記だとエラー落ちしませんでした。

[subject]現在値[ '+' _mem,_0x00400050,0x04,num,-,%d '+' ]//_:string, _0x00400050, 0x24, null

■追記

添付2の __memory_copy__.ssg を修正したSSGで確認した所 Memory はどうやら機能しているようです。
機能していないように思えたのは toggle 系のエラーのためかも知れません。


>>WINMM.DLL のアドレス

下記のような記載でよろしいでしょうか?


■adjustment
winmm.dll
743C0000

erroraddress
743EDA41

■b_toggle
winmm.dll
743C0000

erroraddress
743CE27F

記事編集 編集
Re: SpoilerALの修正パッチ (No.63)
投稿日 : 2016/10/08(Sat) 04:38
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>62 dipperさん
とても助かっています。
とりあえずはフランケンシュタインしてみました。(ツギハギにする事を言うらしい)

こちらでは頂いたSSGファイルは全て動くようです。
まだ以前のバージョンに近づける要素は残していますが、
バグ修正も含んでいますのである程度戻してみました。

テスト用なら幾つでも用意できるのですが、人任せになるので・・・

■追記
読み込み違反の件ですが、通常はコードセグメントからジャンプしてもデータセグメントに飛んでいく事は無いのですが、
何故かデータセグメントを実行しFFFFFFFFのアドレスを読み込もうとしているようです。
なんとなくですが、ジャンプ命令をJMP ptr16:32(オペコード:0xEA)に変えたせいで環境依存が発生しているような気がします。
(怪しいのでジャンプは戻しましたが)
もしくは別のモジュールのアドレスなのかな?

>>61 ユウちゃんさん
ご迷惑をおかけします。
こちらも変なアドレスのようです。コードセグメントからはみ出してます。
今回(4:30頃)の修正で直ればジャンプ命令ですね。
記事編集 編集
Re: SpoilerALの修正パッチ (No.64)
投稿日 : 2016/10/08(Sat) 05:32
投稿者 pera
ID情報 : dEsMvHB5seH29pA8W0iR21
参照先
ありがたく使わせて頂いております。

2016.09.17版から最新2016.10.07版に更新したところ、
タイトルセレクトから一部のタイトルを選択した時に
本来ならSpoilerALに移る所が強制終了してしまうようです。
2016.09.17版に戻すとどのSSGも正常に使えました。
SSGファイルを最小まで減らしても同じ結果でした。

添付した最初の2つはエラーが出るSSGの一例で
3つ目は最新パッチを当てた状態でも正常に使えました。
環境の違い等で不具合が再現されないようでしたら申し訳ないです。

記事編集 編集
Re: SpoilerALの修正パッチ (No.65)
投稿日 : 2016/10/08(Sat) 05:48
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>64 peraさん
ご迷惑をおかけしております。

>2016.10.07
こちらは既に最新ではなくなりました。
この日付のものは早急な修正が必要とされたので更新しました。
ただし修正済みと言っても、新しい事もあり、万全な検証が行われているわけでもありません。

現在、2016.10.08のものは同日に2回目の修正となっています。
記事編集 編集
Re: SpoilerALの修正パッチ (No.66)
投稿日 : 2016/10/08(Sat) 05:49
投稿者 dipper◆LEFxdWWYR3c
ID情報 : NfsgY3tSYDXJTZ.gO6SWu/
参照先
>>62 変態紳士さん

早速の対応ありがとうございます。
確認した限りですが、今まで添付した確認用のSSGで確認した所「adjustment」「toggle」「アドレスネーミング」のエラーは発生しませんでした。
それと adjustment の修正も確認が出来ました。

後ほど、他のSSGも動作確認してみます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.67)
投稿日 : 2016/10/08(Sat) 05:58
投稿者 (仔猫)◆KCezBilYINU
ID情報 : SzycEX2TAWquIqbhGWdJV.
参照先
方々、お疲れ様です。
amateurさんのスレでも報告しましたがALの問題なくなりました。

更新ありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.68)
投稿日 : 2016/10/08(Sat) 12:11
投稿者 ユウちゃん
ID情報 : 0UPeu3JUnu8p4KeC5H5PD1
参照先
>>62 変態紳士さん
>>59 での読み込み違反は直ってるようです。
また>>64 peraさんが添付してる3つのファイルも読み込めることを確認できました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.69)
投稿日 : 2016/10/08(Sat) 15:05
投稿者 pera
ID情報 : Tyw9Zn.0bTNx2PHFAUgIm1
参照先
>>65 変態紳士さん
最新版に更新したところ問題なく読み込めるようになっていました。
既に何度か修正されている事に気づかずお手数おかけしました。
添付したSSGの動作確認をされた方もありがとうございました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.70)
投稿日 : 2016/10/14(Fri) 01:21
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
項目のツリーを修正しました。6.1も共通です。

・マウスダウンがクリック扱いになる不具合
 (通常のクリックは、マウスアップ時の項目がマウスダウンと同じ場合に発生)
・マウスダウンでボタンを押したまま別の項目にカーソル移動すると、別の項目まで反応する不具合
 (同じく展開時の自動スクロールで展開した位置にある項目が反応する不具合)
・選択項目にフォーカス表示(点線の囲み)が無いため、現在の選択が分からなくなる問題
 (一括グループは見分けがつかなかった)
・ホバー(マウスカーソル移動時の反転)のエフェクトが完全な反転だったのでギラギラして読みにくい問題
 (畑にあるカラス避けみたいだった)

地味なので修正履歴に書いてなかったり。。。
記事編集 編集
Re: SpoilerALの修正パッチ (No.71)
投稿日 : 2016/10/15(Sat) 13:32
投稿者 匿名
ID情報 : 6b2UI6aUdjrQ4A.kD8xpg/
参照先
古いバージョン(6.0)用に作られたSSGは最新でも特に問題なければうごきますよね?SSGスレッドほうで聞いた方がよかったのかな?
記事編集 編集
Re: SpoilerALの修正パッチ (No.72)
投稿日 : 2016/10/16(Sun) 05:30
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>71
>特に問題なければうごきますよね
[readme.txt]の[システム要件]を満たしていない場合は動作しません。
その他の動作はSpoilerAL6.1に依存します。
当然、SpoilerAL6.1にパッチを当てる前から問題があるSSGも動作しません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.73)
投稿日 : 2016/10/18(Tue) 04:19
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 1FEI0U3d1/9ixStXY/B9l1
参照先
機能追加ではないのですが、
メイン画面のメニューに[ツール]を追加可能にし、プロセス選択ツールやURLの登録が出来るようにしました。
使い方は、readme.txt の [ツールメニューの追加方法] の項と、
menu.ini の記述を参照してください。

これも修正や機能追加と違うので履歴に書いて無かったり・・・
記事編集 編集
Re: SpoilerALの修正パッチ (No.74)
投稿日 : 2016/10/18(Tue) 06:11
投稿者 (仔猫)◆KCezBilYINU
ID情報 : i2AoCQdUk3/aOAxieKS6c0
参照先
>>73
変態紳士さん、パッチ更新ありがとうございます。

>メイン画面のメニューに[ツール]を追加可能にし、プロセス選択ツールやURLの登録が出来るようにしました。
スゴいですね。たとえば現在使用中のSSGをテキストエディタで開いたりとか可能ですか?

配色が目に優しい色になっていい感じです。
>選択項目にフォーカス表示
特に問題ないのですが。項目がスクロールするぐらい長いと途中で折り返しになってしまいまして…。
見た目がちょっと気になります。
記事編集 編集
Re: SpoilerALの修正パッチ (No.75)
投稿日 : 2016/10/18(Tue) 07:12
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 1FEI0U3d1/9ixStXY/B9l1
参照先
>>74 (仔猫)さん

>たとえば現在使用中のSSGをテキストエディタで開いたりとか可能ですか?
ショートカットファイルのプロパティにあるような内容ならできますが、現状は出来ません。
もし編集してもSpoilerALは毎回再起動した方が良いのではと思ったりしますし。
まぁ、ファイルが沢山あると選択する手間が省けますが・・・

>項目がスクロールするぐらい長いと途中で折り返しになってしまいまして…。
見直してみます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.76)
投稿日 : 2016/10/18(Tue) 20:11
投稿者 (仔猫)◆KCezBilYINU
ID情報 : i2AoCQdUk3/aOAxieKS6c0
参照先
>>たとえば現在使用中のSSGをテキストエディタで開いたりとか可能ですか?
>ショートカットファイルのプロパティにあるような内容ならできますが、現状は出来ません。
了解です(SSL等ファイルに分割されてる場合もありますし、よく考えたらちょっと無理ですよね)

吉里吉里解析ツールとプロセス選択ツールの呼び出しを確認しました。
これは便利です!
記事編集 編集
Re: SpoilerALの修正パッチ (No.77)
投稿日 : 2016/10/18(Tue) 21:37
投稿者 yun◆6As0zdMqREo
ID情報 : uALBCA01GFo4uGozH7xL2/
参照先
お世話になってます。
要望なのですが、
SSGのタイトルセレクト画面においてファイル名に「.」が入っていると、そのタイトルが
セレクト画面にでてこない問題はなおせるでしょうか?

また、>>70での修正でだいぶ扱いやすくなったのですが、SSGデバックモードの場合でも
対象項目をクリックしてからデバックが表示されるようにできないでしょうか?
現状ではマウスを項目にもっていっただけでデバックとしてアドレスが表示されてしまい、
目的としている項目のデバックがしにくくて仕方ありません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.78)
投稿日 : 2016/10/20(Thu) 06:45
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 1FEI0U3d1/9ixStXY/B9l1
参照先
>>74 (仔猫)さん
>項目がスクロールするぐらい長いと途中で折り返しになってしまいまして…。
直しました。
ただし既知の不具合を含んでいます。
[subject]にsplitというのが書けますが長さの計算をしていないためスクロールできません。
これは新たにコードを追加すれば対処できますが色々面倒なので一旦終了です。

この件で多くの(本体の)不具合が見つかりました。変更箇所が多いので多少の注意が必要です。
パッチ導入前で初めからスクロールバーが表示されているのもバグですし、
水平方向にスクロール出来ないのもバグでした。

>>77 yunさん
>SSGのタイトルセレクト画面においてファイル名に「.」が入っていると、そのタイトルが
>セレクト画面にでてこない問題はなおせるでしょうか?
直しておきました。
SpoilerALにある独自の文字列クラス(TStringDivision::WCList)のバグでした。

>SSGデバックモードの場合でも
>対象項目をクリックしてからデバックが表示されるようにできないでしょうか?
>現状ではマウスを項目にもっていっただけでデバックとしてアドレスが表示されてしまい、
>目的としている項目のデバックがしにくくて仕方ありません。
カーソル移動時はアドレスネーミングの更新が行われログが発生します。
これはアドレスネーミングの確認の意味が含まれます。
長い間使われてきた機能で変更にも無理があるため、
デバッグモードからマウスオーバーを除いた新たなモードを追加しました。

ちなみに、バグ=虫(狭義ではソフトウェアプログラムの不具合)、デバッグ=その駆除、殺虫や補殺ですが、
デバッグモードというのは狭義では不具合を修正するための動作で、広義では殺虫モードです。
殺虫剤みたいなのでアナライズ(解析)モードでいいのではと思ったりします。
今年は蚊が多いみたいですし。
記事編集 編集
Re: SpoilerALの修正パッチ (No.79)
投稿日 : 2016/10/20(Thu) 15:39
投稿者 匿名◆M44ZrXg5An2
ID情報 : 6b2UI6aUdjrQ4A.kD8xpg/
参照先
グレイメルカ他でいろいろお世話になってますどこで聞くのがいいのかわからなかったので
SpoilerALの事なのでここで、既に入れているSSGファイルと競合?して後から入れたSSGが起動しなかったり
SpoilerAL自体がエラー落ちしやすくなったりはあるんですか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.80)
投稿日 : 2016/10/20(Thu) 20:17
投稿者 (仔猫)◆KCezBilYINU
ID情報 : BaxmJFnvaIKeW4IYTUBQ//
参照先
>>78
変態紳士さん、更新ありがとうございます。

>ただし既知の不具合を含んでいます。
>[subject]にsplitというのが書けますが長さの計算をしていないためスクロールできません。
了解です。splitはコメント行としても使える機能だったのですね(yunさんのSSGで確認しました)
どうしても項目を確認したいときはALのウィンドウを調整します。

あと横スクロールバーが常時表示されてるのも直りまして、見やすくなりました。
修正ありがとうございます。

>>81
>今回の画面の修正は数十ヶ所の書き換えがありました。
大手術(修正)だったのですね!?
splitの正常化を確認しました。ありがたや。
記事編集 編集
Re: SpoilerALの修正パッチ (No.81)
投稿日 : 2016/10/20(Thu) 22:43
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>79 匿名さん
> 既に入れているSSGファイルと競合?して後から入れたSSGが起動しなかったり
SSGファイル同士で競合が発生する仕組みではありません。
起動時にログファイルから処理を行っている事もありますから設定をリセットした方がいいかもしれませんね。
・SpoilerAL.exe のディレクトリの SpoilerAL.log ファイルを削除
・SpoilerAL.exe のディレクトリの save フォルダを削除
・Windows ディレクトリの regedit.exe を起動し、HKEY_CURRENT_USER\Software\Atsu を削除

>SpoilerAL自体がエラー落ちしやすくなったりはあるんですか?
作っている時はコードの間違いで落ちますが、開発環境で問題が無くなってからアップロードしています。
環境によって動作が変わる事はよくあります。
どのような事をすれば落ちるのか報告をお願いします。
(ついでに既出や修正済みの報告も多いので、報告前にダウンロードしなおして再確認をお願いします)

>>80 (仔猫)さん
splitの件ですが、いちおう修正が完了しました。
ただ、splitは左揃えのみでセンタリングのような書式はテスト出来ていません。
今回の画面の修正は数十ヶ所の書き換えがありました。間違いだらけです・・・
記事編集 編集
Re: SpoilerALの修正パッチ (No.82)
投稿日 : 2016/10/20(Thu) 23:38
投稿者 yun◆6As0zdMqREo
ID情報 : uALBCA01GFo4uGozH7xL2/
参照先
>>78 変態紳士さん

ありがとうございます。無事両方ともの動作を確認しました。
デバックモードに関しては、私が作ったウディタのssgで平気で200回近くのrepeatを使ってたりするので、
デバックモードになっているとなかなか終わらないばかりかフリーズしたりしてまともに機能を使えなかったり
したので、これでデバックしやすくなりました。
ありがとうございました。

>>80(仔猫)さん

>splitはコメント行としても使える機能だったのですね(yunさんのSSGで確認しました)
cautionをつかった時にどこに注意書きが表示されるのか最初わからなかったので、
splitをつかったみようと思ってやってみたら案外分かりやすかっただけです。
cautionの注意書きがどこに表示されているのかが分かったのは割と最近だったりしますが、
個人的にsplitでかいたほうが見落とすこともないだろうということで、極力splitを使ってますね。(好みの問題)
記事編集 編集
Re: SpoilerALの修正パッチ (No.83)
投稿日 : 2016/10/20(Thu) 23:42
投稿者 匿名◆M44ZrXg5An2
ID情報 : 6b2UI6aUdjrQ4A.kD8xpg/
参照先
>>81 変態紳士さん
ゲーム起動してSpoilerAL起動その後SSG等に書かれている操作でサーチ後書き換えで落ちる時と
同一ゲームでSpoilerAL起動と同時に落ちたりかと思えば反応は重いですが動いたりまちまちな感じですね
記事編集 編集
Re: SpoilerALの修正パッチ (No.84)
投稿日 : 2016/10/21(Fri) 00:05
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>83 匿名さん
再現方法が皆無なのと、環境か何かに依存している可能性もありますので、
こちらとしては何も出来ません。

とりあえず、報告があったという事だけ記憶しておきます。
ちなみにパッチは報告前にダウンロードしなおしたものでしょうか?
(修正済みの内容で報告される事はよくあるので・・・)
もし古いものであればいつごろダウンロードしたものか教えてください。
記事編集 編集
Re: SpoilerALの修正パッチ (No.85)
投稿日 : 2016/10/21(Fri) 00:20
投稿者 匿名◆M44ZrXg5An2
ID情報 : 6b2UI6aUdjrQ4A.kD8xpg/
参照先
>>81の書き込み読んだあと書かれてたこと+スレッドトップに張られてるの落としてやってみましたが
すぐ落ちたり挙動が安定してない感じですねこっちのPCの問題かもなんですね
動画やニコニコやツベの音楽動画見つつやってる時もあるのでメモリ不足になってたりするのかな?
記事編集 編集
Re: SpoilerALの修正パッチ (No.86)
投稿日 : 2016/10/21(Fri) 00:40
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>85 匿名さん
とりあえず、>>36の方法で調べてみてください。
落ちる場合、>>81の設定のリセットを行ってください。
その結果を報告してください。情報が少なすぎるので何もできません。

勿論、このような場合は修正する事が目的であって、動作させる事は目的ではありません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.87)
投稿日 : 2016/10/21(Fri) 01:06
投稿者 匿名◆M44ZrXg5An2
ID情報 : 6b2UI6aUdjrQ4A.kD8xpg/
参照先 https://necocan-index.rick-addison.com/necocan2/mtpt.cgi&room=nekokan&mode=view&no=159
>>86 変態紳士さん問題がよく起きてるのは
URLスレにある凡庸SSGのgame.exeを起動させたいゲーム名に一括して書き換える事で起動出来たゲームでよく起こってます
ゲーム名等まで出しちゃうと色々ご迷惑になると思うので省きますが
問題なく動いてたり6.1>6.2UPのファイルありの方がよく落ちてる感じですね
無しでも落ちてたりしますがこれはこっちの環境の問題ですかね?

追記>>88 amateurさんすいませんでした、一応は目お通してたんですがそこまで落ちやすいSSGと認識してませんでした問題なく動くこともあったのでできるだけ気を付けるようにします
記事編集 編集
Re: SpoilerALの修正パッチ (No.88)
投稿日 : 2016/10/21(Fri) 01:25
投稿者 amateur◆kR..xsXL6RU
ID情報 : iQxErmQvHkOhUC5/ybamN.
参照先
>>87 匿名さん
横からレスで恐縮ですが、
そのSSG(臨時板管理人さん作)については、エラーでよく落ちて動作が安定しないのは当該SSG自体の仕様ですよ。
SSGを読み込んだ後、「情報」欄に下記のような記載が表示されるはずです。(引用)
-----------------------------
エラーよく出るかと思います・・・
読み込み時間の為1〜2秒まってからサーチ開始するようにするとマシかも
サーチ開始されない場合はSpoilerALを再起動してください。
-----------------------------
そのSSGでは、サーチ補正を多用してるのと、「SRPG Studio」製のゲームに汎用対応するため、
物凄く複雑な内容になってるので動作が安定しない(&動作が重い)のだと思います。
実際、私もそのSSGを使用してると、高頻度でSpoilerALが落ちてしまいます。

最低限、SSGの「情報」欄と「注意事項」欄に書いてあることは読んでください。
SSG製作者の端くれとして、これらを読まずに使用されるのはガックリです…
使用される場合に絶対に読んでほしいから書いているわけでして。飾りで書いているわけではありません。

それと、質問されるのはよいのですが、
その場合、可能な限り、具体的な状況、環境、症状を書いてくださいね。
>>87に書いてある情報(具体的にどのSSGを使用した時の症状か)を>>79の最初の質問時に書いてくださっていたら、
無駄な遣り取りで時間を浪費せずに、もっと早く問題が解決したはずです。
グレイメルカの件の際にも同様のことを申し上げましたが…
記事編集 編集
Re: SpoilerALの修正パッチ (No.89)
投稿日 : 2016/10/24(Mon) 02:24
投稿者 名無し
ID情報 : qk4dxD6jFfrVAbUhNPn2s.
参照先
バグと思われるものがありましたので報告します。
bitlistを使用した時、下記のようにリストファイルに改行のみの行があると

[group]A

1
2
3
4
5
6
7
[/group]

「リストファイルが読み込めません!SSGにミスはありませんか?指定されたファイルは存在していますか?」とメッセージが出てリストが表示されなくなってしまいました。
6.1及び9/19時点のパッチ(落としたファイルのタイムスタンプから推測)では上記メッセージ出ることなくリストは表示されます。
手元に残っているのでは10/14以降のは全て上記メッセージが出ます。
OSはWin10 64bitです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.90)
投稿日 : 2016/10/24(Mon) 20:23
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>89 名無しさん
>bitlistを使用した時、下記のようにリストファイルに改行のみの行があると
>表示されなくなってしまいました。

報告ありがとうございました。
修正しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.91)
投稿日 : 2016/10/24(Mon) 21:05
投稿者 名無し
ID情報 : RiLq8ikeSx8w9qks3Pl721
参照先
>>90 変態紳士さん
報告部分が修正されている事を確認しました。
修正ありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.92)
投稿日 : 2016/10/28(Fri) 21:41
投稿者 amateur◆kR..xsXL6RU
ID情報 : QJ.z8C47qd.osIs7Gyxfs1
参照先
修正パッチのお陰で、快適にSSGを作成・利用できて大変助かっております。あらためてお礼申し上げます。
修正パッチで実現したアドレスネーミングのunicode文字列表示機能について、
バグかと思われる症状に出くわしたのですが、例えば、

[subject]文字列【 '+' _mem, (アドレス), 48, unicode,?? '+' 】/ON/_: toggle, (アドレス), 63006C00420074006E0048006900670068006C0069006700680074000000, 000000000000000000000000000000000000000000000000000000000000

のように、「最大バイト数」に「48」と書いた場合、該当文字列のアドレスのバイト列に「4800」(unicodeで「H」)があると、
その文字以降はアドレスネーミングで表示されないようです。
(修正パッチは先程最新分をDLして再適用しました)

上記の例では、unicodeで「clBtnHighlight」と表示されるはずですが、
「最大バイト数」の「48」と、書き込むバイト列の6文字目に該当するバイト列「4800」の「48」が一致しているのが原因かと思われますが、
その文字(6文字目)以降はアドレスネーミングで表示されず、「clBtn」と5文字目までしか表示されない、という症状です。

幾つかのケースで検証した確認用のSSGを添付します(対象プロセスはSpoilerAL.exe)。詳細はSSGに記載してありますのでご参照ください。
お願いしてばかりで恐縮ですがよろしくお願いいたします。

記事編集 編集
Re: SpoilerALの修正パッチ (No.93)
投稿日 : 2016/10/29(Sat) 00:07
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : hawhNksd5H7Be3gn.TEMo.
参照先
>>92 amateurさん
報告ありがとうございました。
修正完了です。

見つかりにくそうなバグなので助かりました。
虫取り名人の称号を差し上げます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.94)
投稿日 : 2016/10/29(Sat) 01:09
投稿者 amateur◆kR..xsXL6RU
ID情報 : QJ.z8C47qd.osIs7Gyxfs1
参照先
>>93 変態紳士さん
修正ありがとうございます。(は、早い・・・!)
確認したところ、>>92の添付SSGの全項目でunicode文字列が正常表示されました。
いつも迅速に対応してくださって本当に感謝です。
虫取り名人ですか・・・リアルで虫取りしてたのって○十年前ですねえ・・・(遠い目)
記事編集 編集
Re: SpoilerALの修正パッチ (No.95)
投稿日 : 2016/10/30(Sun) 01:51
投稿者 (仔猫)◆KCezBilYINU
ID情報 : i2AoCQdUk3/aOAxieKS6c0
参照先
(変態紳士さん更新ありがとうございます!)
(amateurさんが適応能力高いのは…やはり経験ですか〜納得です。)
記事編集 編集
Re: SpoilerALの修正パッチ (No.96)
投稿日 : 2016/11/05(Sat) 00:43
投稿者 七星◆y3el2XfkmCg
ID情報 : t2vFXQ2H8Qqp6MTECPrk5/
参照先
いつもお世話になっております、ありがとうございます
要望というより提案ですけど、[repeat]のループ判定符号化
および式号にフォーマットを追加というのはどうでしょうか


拙作ながらサンプルをSDK8.1、v140_xpでビルドしてみました
私のネイティブ経験はなっちゃいないと思うので、超適当な実装ですが
紛い物を示すために添付のDLLを使うとタスクバーがZpoilerALになります

ループ変数の最上位ビットは多段[repeat]などでビットフィールド扱いしても
ループ総量的に立たんだろと楽観ですけど…逆にわざと立てるとか有るのかな?

ワードリピートへのパラサイトは元々バグのあるこの式号で
%を含むとリピート出来なくなっても、まぁ問題ないんじゃないカナカナ


ちなみにUTF-16LEはstring項目だと現実的ではありませんか?
UCS-2とcp932を遣り取りするのもどうなんだって気もしますが

version.dll→winmm.dllにしたのも環境問題とかでしょうか
ラッパーDLLはエクスポートが少ない方が楽なんですよね?

記事編集 編集
Re: SpoilerALの修正パッチ (No.97)
投稿日 : 2016/11/05(Sat) 21:21
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 26eNVele50YbGwiP1VyeZ1
参照先
>>96 七星さん
お返事遅くなりました。
庭を耕していました。

>要望というより提案ですけど、[repeat]のループ判定符号化
>および式号にフォーマットを追加というのはどうでしょうか
書式は以下のようになっています。
――――――――――――――――――――
[repeat]SSRファイル, 開始値, 終了値, 増加値
――――――――――――――――――――
この繰り返しの判定を符号付比較に変更できる方法が無いかという事ですね。
[repeat]はクラスで属性を付加していないので以下のように書式の拡張を検討しています。
――――――――――――――――――――
[repeat]SSRファイル, 開始値, 終了値, 増加値, 符号の有無(unsigned, signed)
――――――――――――――――――――
実装に関しては添付のテキストを参照。

>私のネイティブ経験はなっちゃいないと思うので、超適当な実装ですが
>紛い物を示すために添付のDLLを使うとタスクバーがZpoilerALになります
こちらこそ命名規則は手抜きもいいところです。(←面倒なので直す気力はありませんが)
"source\SpoilerAL-winmm.dll\FixAdjustByString\FixAdjustByString.c" は、
以下の修正に使われているので別の実装になる予定です。
"source\test\__dialog_test__.ssg"

>ループ変数の最上位ビットは多段ループなどでビットフィールド扱いしても
>ループ総量的に立たんだろと楽観ですけど…逆にわざと立てるとか有るのかな?
符号ビットまでループカウンターが踏み込むかという事ですよね。
どこかで見た資料にはユーザーモードのプロセスが確保したメモリアドレスは符号ビットまで使わず、
カーネルモード(デバイスドライバなど)のプロセスやシステム既定のDLLが使用するとか。
でもゲームにトリッキーなロジックがあっても自然な事ですし、下位互換を考えるとSSGの書式の拡張になるかも。

(長すぎ↓)

記事編集 編集
Re: SpoilerALの修正パッチ (No.98)
投稿日 : 2016/11/05(Sat) 21:23
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 26eNVele50YbGwiP1VyeZ1
参照先
(↑長すぎ)

>ちなみにUTF-16LEはstring項目だと現実的ではありませんか?
>UCS-2とcp932を遣り取りするのもどうなんだって気もしますが
もしかするとアドレスコーディングを使わずにUTF-16LEですか?
SSGのテキストは'\0'が混じるから無理ですが、SSGの書き方はどんな感じでしょう?
これは理解が追いついていないという事で話に続きがあれば。

>version.dll→winmm.dllにしたのも環境問題とかでしょうか
>ラッパーDLLはエクスポートが少ない方が楽なんですよね?
それはログにあります。
>>https://necocan-index.rick-addison.com/bbs/patio.cgi?pg=160&read=4
>>SSGを投稿したり、ゲーム解析について語るスレ, No.113 - 115
XPと2000はversion.dllをシステムディレクトリから引っ張ってくる仕様で、
それを分かっていながらversion.dllで実装していた経緯があります。
本当に楽か?と言われれば、整理しやすいか、容量が肥大化しないか、というくらいで、
各エクスポート関数はジャンプするだけで、数に関してもコピペなので変わらないです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.99)
投稿日 : 2016/11/05(Sat) 23:26
投稿者 七星◆y3el2XfkmCg
ID情報 : 2g59tyikJgCCEcY.NoBmr0
参照先
>>97-98 変態紳士さん
日も変わらぬ内に返信頂けるとは。過去ログ、PSAPI関連のみと思って見落としていました
XP以前の場合、version.dllだと配置するだけではDLLハイジャック出来なかったのですね
FixAdjustByString.cに記述したのは元のソースコードが最も少なかったからという事で…

[repeat]の変換式は項目名やパラメータなどにも使用でき、利用法はアイデア次第となると
アドレス空間に十分でも、やはり互換性維持は必要でしょうか(3GBスイッチ?知らないな
ワードリピートに限ってはドキュメントと挙動が違う事もあり、今一使い道が分かりませんが
例が多段デリファレンスなのを見るに、リンクリスト追跡とかを想定してるのかしら…

string項目というのは文字列編集向けのこれですね↓(対応スイッチとしてはこんな感じ?
[subject]SpoilerAL.EXE:string,0x0066F7A4,0x20,unicode
文字列変更はそう需要なさそうで、表示だけならアドレスネーミングでも十分なのですが
項目の現在値なら[enabled]で制御できたり、ツリーへの表示もその辺便利かなと思いまして

と書いていて2,3閃いたのですが、エクスポートのようにセクションアドレス取得などは如何でしょう
あれはあれでUTF-8とかでしたよね('A`)もっとも私自身はセクション基準のSSGは書いてませんが
むしろ[define]置換後、Parsing直前の最終的なアドレスコーディング文とかログ確認できれば…
というのも考えなしに{define}を乱用すると、同じ式が繰り返し現れパースの無駄に繋がるか?と
いずれも実装対費用効果としてどうなのかな、という程度の思いつきですが

P.S. countの再計算って必要ですか?補数だからStepに負数とか間違えない限りは…?(よく分かってない
記事編集 編集
Re: SpoilerALの修正パッチ (No.100)
投稿日 : 2016/11/06(Sun) 22:09
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : zrKtjGLCFEb8jzYJzlbP2/
参照先
>>99 七星さん

・[repeat] の書式を拡張し符号の有無に対応
・ワードリピートの繰り返し回数で負の値を無視するように変更
 (符号よりも0x80000000回はフリーズするので・・・)
・SSRファイルに [! Fn,書式 !] を追加
 (可変引数の方が最もらしいのですが、動的な書式じゃないので投げやりに)
・string項目のUNICODE (UTF-16LE) 対応
とりあえずここまで。

大して検証せずに作ったので、いったんサンプルとして添付します。
スレッドトップの分は次回更新予定です。

>string項目
詳細ありがとうございました。

>セクションアドレス取得
今の書式だとエクスポート関数と区別しないといけないので、
頭に演算子でも付けてみようかと思ったり。

>P.S. countの再計算って必要ですか?
count = (long)(End - Begin) / (long)Step;
↑この部分ですよね?
なんとなくです。(たぶんループが正しく書けている時は必要ないです)

追記
2016/11/07: ワードリピートが変?だったので修正
2016/11/08: 添付ファイルを更新してスレッドトップに統合

記事編集 編集
Re: SpoilerALの修正パッチ (No.101)
投稿日 : 2016/11/07(Mon) 00:15
投稿者 七星◆y3el2XfkmCg
ID情報 : 2g59tyikJgCCEcY.NoBmr0
参照先
>>100 変態紳士さん

早速形にして頂いてありがとうございます
どちらも良い塩梅で、Unicode文字列も書き込めています

既存の式号では桁揃えも自由にならなかったのでprintf万歳です
(オーバーランが頭をよぎりましたが元からsnprintfでした

Unicodeの書き込み需要は不透明ですが、Unity(Mono)等も
バッキングストアはワイド文字なので機会は増えそうです

あるいはネタで書き換えるか…validationは大事ですよね

(あ…元々のワードリピートバグも直ってる
 ふとSYMOPT_UNDNAMEとかUnicodeエスケープとか思い出したけど
 微妙かな…スタックサイズ等は有った方が解りやすいし…C++装飾はともかく
記事編集 編集
Re: SpoilerALの修正パッチ (No.102)
投稿日 : 2016/11/07(Mon) 01:27
投稿者 amateur◆kR..xsXL6RU
ID情報 : z5p3fNu26//udI3hVJInp1
参照先
>>100 変態紳士さん
更新ありがとうございます。
>・[repeat] の書式を拡張し符号の有無に対応
これについては、ループ変数「$Val」について、負の数も使えるようになった、ということ?ですよね。
(末尾に「signed」と書けば、ループ変数が負の数もとりうる、ということ?)

元々あったワードリピートのバグ(別スレのNo.255で私が触れた件)も修正されていました。
こちらもありがとうございます。

それと、string項目のUNICODE (UTF-16LE) 対応、ありがとうございます。
七星さんが「需要は不透明」と仰っていますが、これに関しては実はそのうち私から要望させていただこうかと思っていました。
Unityや吉里吉里(Javaもですが)では、アイテムの性能等をUNICODE文字で格納しているゲームが結構あって(Ninetail系に多かった気が)、
今6.2書式で作り直し中の某ゲームのSSGで使うかも、と思っていたところです(具体的に必要になったら要望するつもりでした)。

というわけで、七星さん、string項目のUNICODE対応について先に要望してくださってありがとうございます。

 ※一応、ワードリピートの動作検証用のSSGを添付しておきます

(追記)
ワードリピートについてですが、時々、アイテムやスキル等のデータで、
各アイテム等のデータ構造体の特定のオフセットのアドレスに、
次のアイテム等のデータへのポインタを置いてるゲームがありますので、
一応、そういう場合はワードリピートをアドレスのポインタ部分に使えば楽に書けることがあります。
 例)  [! R($Val), [: !]  (データ1個目の基準アドレス)  [! R($Val), +(オフセット) :] !]
最近では、SRPG Studio製の某ゲームで、クラス(職業)のデータがそういうタイプでした。
そのゲームではクラスが80種以上あったので、ワードリピート使ってアドレスを記述すると、
最後のクラスデータのアドレスは[! !]部分を展開するとポインタを80個以上使うことになり、
まともに動くのかなと心配でしたが、特に問題なく動作しています。

記事編集 編集
Re: SpoilerALの修正パッチ (No.103)
投稿日 : 2016/11/07(Mon) 05:39
投稿者 七星◆y3el2XfkmCg
ID情報 : 2g59tyikJgCCEcY.NoBmr0
参照先
>>102 amateurさん
偏に負数というと書式的にも実質的にもマイナスは使えていました
プロセッサは負数を2の補数で扱うので、例えば-3=0xFFFFFFFDになります
考え方としては0x100000000(32bit部分0)-3=0xFFFFFFFDで
0xFFFFFFFD+3=0x100000000と下位32bitが0に戻ります(-3+3=0)
(なんだこの説明は…詳しくは「2の補数」の解説を探してください

そんな訳で計算時に符号の扱いが問題になるのは除法くらいですが
こと比較になると-3なのか4294967293なのかで全く異なってきます
負数同士なら0xFFFFFFFD(-3)<0xFFFFFFFF(-1)も成り立ちますが
この最上位ビットを符号として扱わないと0より大きくなってしまいます
そのため[repeat].ssr,-3,-1のようなループ条件は出来ても
[repeat].ssr,-1,1といった負数から0ないし正数へは不可能でした
そしてワードリピートに負数を与えると膨大な正数と見なし死んでいました

(アドレスコーディング時の符号解釈は既に11.01で対応してくださっています
 …が、おや?オペランドと演算子が詰まってしまいますか?Ver.11.01

しかし文字列でパラメータ管理とかそんなのも有りますか…
追記はリンクリストっぽいですね、要素の追加削除などは配列より有利…なはずが
余裕のある配列で現在数を管理する方が多くの場面で適してしまうという…

記事編集 編集
Re: SpoilerALの修正パッチ (No.104)
投稿日 : 2016/11/07(Mon) 21:44
投稿者 amateur◆kR..xsXL6RU
ID情報 : P75UuKCLqtMnW/XG.2A8z/
参照先
>>103 七星さん
詳しいご説明ありがとうございます。
従来でも負数は使えてたんですね・・・無知ですみませんです。
今までは、開始値「-1」終了値「1」のように「負数から0ないし正数へは不可能」だったのが、
今回のパッチで可能になった、そういうことだったのですね。

文字列でパラメータ管理、こういうタイプは困るんですよね・・・書換えが難しいケースが多くて。
(吉里吉里解析ツールではUnicode文字列の書換え機能もあって問題ないですが)
Javardryではそれで難儀しました。
よく考えると、吉里吉里やUnityでは、文字列だけではなく文字数も書換えないといけないみたいなので、
string項目での対処は難しそうですね・・・(Unityの場合は、文字列格納のバイト数に余裕がなかった気が・・・)
ダブルリスト使うか、文字列を参照するポインタ自体の書換えで対処するのが現実的かも。

それと、追記に書いたようなのはリンクリストと呼ぶのですね。
時々こういうタイプのゲームは見かけますが。
このタイプは、等差でデータが連続して並んでいるように見えて、
実は途中で全く別のアドレス領域にデータのアドレスが飛んでいる場合がありますね。
>>102で書いた例でも、最初は公差でアドレスが表現可能だと思っていたら、実は違っていました。
それと、>>102で書いた例は、クラス(職業)の数は約80個ではなく実際には155個ありました(汗)
それでも問題なく動いてますので意外にワードリピートは使えますね・・・1000個とかでどうかは?ですが。

ところで、ワードリピートを使用してアドレスを書くと、
項目表示ずらし技が使えない、ような気が。アドレス部分を下記のように書くのは駄目っぽいです。
 [! R($Val+[:Memory::0:]),[: !] {データ1個目の基準アドレス} [! R($Val+[:Memory::0:]),+0x4:] !]
HowToSSGの[repeat]の「静的展開」に書いてるアウト事例に該当ですね。
項目数多い場合はちょっと困りますが、「1-30個目まで」みたいに小分け表示するくらいしか思いつかない・・・
記事編集 編集
Re: SpoilerALの修正パッチ (No.105)
投稿日 : 2016/11/09(Wed) 01:29
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : zrKtjGLCFEb8jzYJzlbP2/
参照先
>>99-104 七星さん, amateurさん

・条件演算子(三項演算子)を追加 (6.2)
・セグメントアドレスの取得に対応 (6.2)

上記の2件を追加しました。サンプル的なSSGは以下です。
source\test\__ternary_test__.ssg
source\test\__segment_test__.ssg

> …が、おや?オペランドと演算子が詰まってしまいますか?Ver.11.01
静的展開されるコードは文字と文字の間のスペースを削除していました。
ので、ただのトリミングに変えました。

>> 七星さん

負数の説明ありがとうございました。
そういえば知り合いの口座も負数に対応していました。

逆順ループは出来ませんけど・・・ ステップが負数なら逆順にするべき?でしょうか。

>>amateurさん

>リンクリスト
.NETではリストと区別してリンクリストとか呼びますね。
ポリゴンの面の各要素をポインタで扱い双方向リストを生成しつつ同時に面と面の接続辺で接続順にソートを行うと速いけど、
普通の比較では遅いと言われたりします。
仕組みはGoogle先生に画像検索で「線形リスト 双方向リスト」を訪ねると教えてくれます。

>>ワードリピート
使い方自体知りませんでした・・・
スタティックに変換されるから、二次的な解釈で変換された構文として利用できる?というものでしょうか。
記事編集 編集
Re: SpoilerALの修正パッチ (No.106)
投稿日 : 2016/11/09(Wed) 18:15
投稿者 七星◆y3el2XfkmCg
ID情報 : 2g59tyikJgCCEcY.NoBmr0
参照先
>>105 変態紳士さん

すわ、三項演算子ですか、界隈では稀に良く議論の的になるという…
条件結果を乗算していたのからすれば、とても解りやすくなりそうです

セクションサイズはVirtualSize自体ではなく、加算済みアドレスですか
[adjustment]も渡すのは終端だし、他演算子との一貫性でもALらしいでしょうか
(演算子がこっそり変わるのをミテシマッタ

そして失礼ですがVer11.08?09?でも不具合が残っているようです
置き換え型バイト列でも「0xC sar 3」などアルファベットと単語演算子が隣接すると
「0xCsar3」「0xCidiv0xC」「0xAgt0」「0x8000000Alt0」の解析エラーとなります

お知り合いは自動借り入れを出来るのか、されてしまったのか…
私は今のところ逆順が必要になった事はありませんが、置換先で最大値から引いても可能?
メモリ上で逆に置かれるのってビットマップのピクセルラインくらいでしょうか

記事編集 編集
Re: SpoilerALの修正パッチ (No.107)
投稿日 : 2016/11/09(Wed) 21:23
投稿者 amateur◆kR..xsXL6RU
ID情報 : xaafhDTY1QU/FgQWujfz6/
参照先
>>105 変態紳士さん
パッチ更新ありがとうございます。
セグメントアドレスの取得機能は、ベースアドレスを.dataセクション開始からのオフセットで表現する際等に便利ですね。
MName::nul+0x3C から辿る手法と比べて記述を簡略化できそうです。([define]の置換が効かない[adjustment]のオプション部分に使うのも良さそう)
条件演算子(三項演算子)のことは全く知りませんでした・・・まずGoogle先生に聞いて勉強します。

あと、「線形リスト 双方向リスト」を検索して解説読んでみました。リンクリストにも色んな種類があるのですね。
私が>>102の追記に書いた例は、後方(と言ってよいのか?)へのポインタしかない片方向リストのようです。

ワードリピートは・・・私も実際にSSGで使ったのは3回くらいしかなく使いこなせてないのですが、
HowToSSGに書いているように、[repeat]でループ変数の増加に伴って、アドレスのポインタの数も増加させるという用途くらいしか思いつかないです。
上記のリンクリストでデータを格納してる場合のアドレス記述に使えるようで(七星さんが仰るように正にこれを想定した機能かもですが)、
別スレの(No.277)に七星さんが見事なサンプルSSGをアップされています。

それと、そのワードリピートにバグらしきものがあるようなのですが、
[repeat]の「開始値」が0以外(1以上?)だと、ループ変数=「開始値」の時のワードリピートの文字列の出力回数が必ず「1」になってしまうようです。
(例えば「開始値」が「10」でも、その時の文字列出力回数は必ず1回)
そして、開始値の次の値以降は、「増加値」が幾つかは関係なく、必ず1ずつ出力回数が増えていきます(2,3,4,5・・・となる)。
どうやら【 開始値が「0」で、増加値が「1」 】以外ではワードリピートが正常に機能していないようです。

なお、11.06分と今日DLした最新パッチで動作検証しました。
参考に検証用のSSG(対象プロセスは、SpoilerAL.exe)を添付します。
パッチ更新直後で申し訳ないですが、よろしくお願いします。

記事編集 編集
Re: SpoilerALの修正パッチ (No.108)
投稿日 : 2016/11/11(Fri) 02:07
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : zrKtjGLCFEb8jzYJzlbP2/
参照先
>>106 七星さん
なおしました。

>三項演算子
SpoilerALとは関係ありませんが、
とあるコンパイラは代入先が1つだと示せるので最適化しやすいようです。(分岐無しの論理演算に切り替えたり)。
逆に1つの式が最適化されてしまうとコード全体の最適化に含まれない事も時々あります。
コンパイラの中の人が頭良くないので卵が先か鶏が先かと・・・

>知り合いは
定期預金とセットになっているらしく定期の中身を拝借すると負数になってました。
CD機もキャストボタンがあると親切設計です。

>>107 amateurさん
なおしたつもりです。
テストが不十分だと思うので。

>条件演算子
エクセルのIF関数と似たような感じです。VBAならIIfだったかな。
説明用にテキストを添付します。(google先生の方が詳しいと思うけど)

記事編集 編集
Re: SpoilerALの修正パッチ (No.109)
投稿日 : 2016/11/11(Fri) 03:03
投稿者 amateur◆kR..xsXL6RU
ID情報 : DpGSbI7OSqetEch/ncCMt0
参照先
>>108
変態紳士さん、パッチ更新ありがとうございます。
ワードリピート、開始値が0以外でも正常動作するようになりました。
それと、条件演算子はエクセルのIF関数と似たような感じですか。
確かに、添付いただいたテキスト読むと、構造が似てますね。
IF関数は時々SSGのリスト作成等で使うので、馴染みのあるものに例えていただいて理解しやすいです。
これで、七星さんのSSGも何とか理解できそうかな、という気が(何となくですが)してきました。
いつも解説やフォローまでしていただいて感謝です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.110)
投稿日 : 2016/11/11(Fri) 18:16
投稿者 七星◆y3el2XfkmCg
ID情報 : 2g59tyikJgCCEcY.NoBmr0
参照先
>>108 変態紳士さん

迅速な対応有り難うございます…しかし新たな不具合が勃発したような
string項目のunicodeのみ現在値の]が欠けます、書き込みに実害はなさそう…?
終端処理の問題でしょうか、実装直後は正常に表示されていたと思うのですが

(Data->_M_finish = Data->_M_start + cchMultiByte;とかで良いのかな
 するとbcb6_std_string_resizeのバグっぽいですね、leaオペランド多すぎ?
 この頃というかBorlandのstringはvector<char>のような物でしょうか

そして割と致命的なものが…バイト列も詰まらなくなった所為か
バイト列にスペースが混じると意図しない解釈がなされてしまいます

未定義の最適化とかコンパイラの深い闇を思い出しました
銀行の策略…キャストが犯罪になる日ですね

記事編集 編集
Re: SpoilerALの修正パッチ (No.111)
投稿日 : 2016/11/12(Sat) 02:58
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : zrKtjGLCFEb8jzYJzlbP2/
参照先
>>110 七星さん
報告どぉもです。直しておきました。

> string項目のunicode
WideCharToMultiByte の返す長さで文字の長さを調整したのですが、
この変換は入力文字数の指定が無ければ出力バッファに書き込める分だけ処理していました。
返ってくる長さもターミネーターを無視してます。
更にSTLのstd::stringは'\0'の検査をしないので連結すると'\0'を含む位置で切れてました。
No.100のSSGファイルは問題ないようなので、WideCharToMultiByte の戻り値は条件があるようです。
ちなみに今までのunicode項目は戻り値を使ってないので問題ないです。

> Data->_M_finish = Data->_M_start + cchMultiByte;
Borland の string が string::resize で縮小するときは、

char *resizeEnd = Data->_M_start + resizeLength;
memmove(resizeEnd, Data->_M_finish, 1);
Data->_M_finish = resizeEnd;

こんな事になってました。

>バイト列にスペースが混じると
スペースの削除から $? $$ を除外してみました。
こちらの修正はいつも通り作った感じです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.112)
投稿日 : 2016/11/12(Sat) 03:47
投稿者 七星◆y3el2XfkmCg
ID情報 : 2g59tyikJgCCEcY.NoBmr0
参照先
>>111 変態紳士さん
スペース問題は解決したようです、お疲れ様です

No.100だと問題ないですか?決定直後以外]が欠けると思うのですが
lea ebx, [ebx + ecx + edx]はMASMだとエラーを吐かないようですが
VC++のインラインアセンブラで同じ命令を記述すると

'オペランド 2' で使用できないレジスタが指定されています。

となります、コンパイル後もlea ebx, [edx+ecx]になっている様に見えます

記事編集 編集
Re: SpoilerALの修正パッチ (No.113)
投稿日 : 2016/11/12(Sat) 04:45
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : zrKtjGLCFEb8jzYJzlbP2/
参照先
>>112 七星さん
>lea ebx, [edx+ecx]に
これは立派な虫ですね。
捕まえないと被害が出ていました。
どうもありがとうございました。

とりあえず部分修正しました。
しかしながら、こちらでは添付して頂いた画像のようにならないので、どうなったかは分かりません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.114)
投稿日 : 2016/11/12(Sat) 05:47
投稿者 七星◆y3el2XfkmCg
ID情報 : 2g59tyikJgCCEcY.NoBmr0
参照先
>>113 変態紳士さん
確実な再現性ではなかったのですね。No.100、No.110共々
私の環境では正常に]まで表示される様になりました

ちなみにこの環境(Windows7 64bit WOW64)では
WideCharToMultiByte()をcchWideChar=-1で使うと
マルチバイト分+1(NULL分?)が返ります(空文字=1)
これがcchMultiByteを超えるような場合は0が返り
GetLastError()はERROR_INSUFFICIENT_BUFFERとなるようです

(Data->_M_finish = Data->_M_start + デクリメントされた戻り値;に変えるか
 あるいはTSSString_Read_UnicodeStringはそのままに
 bcb6_std_string_resizeのleaを修正するだけで正常になっていました
記事編集 編集
Re: SpoilerALの修正パッチ (No.115)
投稿日 : 2016/11/12(Sat) 07:16
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : zrKtjGLCFEb8jzYJzlbP2/
参照先
>>114 七星さん
色々と迷走していたようで、bcb6_std_string_resizeのleaだけでも問題無かったようです。
こうなるとAPIは仕様通りと考えるべきで、別の方法で問題が消えた理由が分からなくなってきました。
とりあえず不要な部分は前の状態に戻しておきます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.116)
投稿日 : 2016/11/22(Tue) 19:29
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : zrKtjGLCFEb8jzYJzlbP2/
参照先
以下、GUI関連の修正です。6.1も共通。

2016/11/22
・スクロールバーの水平・垂直のうち片方が表示されない不具合を修正
・スクロール範囲が正しくない不具合を修正
・ホイールのスクロール範囲が正しくない不具合を修正
・上下キーのスクロール範囲が正しくない不具合を修正
・アドレスネーミングが変化した時にスクロール範囲が反映されない不具合を修正
・最大化などリサイズ時に背景サイズとスクロール範囲が反映されない不具合を修正
・画面の左右分割のスプリッター移動時に背景サイズとスクロール範囲が反映されない不具合を修正
・ディレクトリ項目の展開時に複数回の描画が発生し画面がチラつく不具合を修正
・ディレクトリ項目の展開時に0.2秒経過した時点でカーソルが砂時計になるように変更
 (今まではアプリケーションが応答していない時に砂時計になっていた)
・画面の描画で、画面の外にある項目まで演算して描画しようとしていたので修正
記事編集 編集
Re: SpoilerALの修正パッチ (No.117)
投稿日 : 2016/11/27(Sun) 18:20
投稿者 amateur◆kR..xsXL6RU
ID情報 : GO6PAoxd3qrq5s9OvAcW71
参照先
変態紳士さん、パッチ更新お疲れ様です。
この度は[error_skip]を追加してくださって、重ねてお礼申し上げます。

(このスレしか読まれていない方は[error_skip]について意味不明だと思うので以下補足)
---------------------------
修正履歴中、2016.11.27の・[error_skip] を追加、について、
[error_skip]とは何ぞやと疑問に思われる方もいらっしゃると思いますが、
これは別スレで私が愚痴っていたのを変態紳士さんがご多忙の中読んでくださって、
SpoilerAL修正パッチでご対応くださったものです。
(本来このスレで扱うべき話題だと思いますが、話の流れで別スレでやり取りしてしまいました)

簡単に説明しますと、[child_rw]による下位項目一括書換え中に[enabled]等の偽判定でエラーが出たり、
一括トグル等の一括系(ダブル系でチェインファイル使用時を含む)書き込みの途中でエラーが出ると、
エラーが出た部分で一括書き込みがストップしてそこから後は書換えされないという、
デフォルトのSpoilerAL6.1からの仕様があるのですが、
修正パッチで新たに [error_skip] という属性が追加され、
これを付けることで一括書換えの途中でエラーが出ても書換えがストップしなくなる、というものです。

[error_skip]について興味がある方は、こちらのスレの(No.298)と(No.299)と(No.302)、(No.316)から(No.323)までを参照していただければと思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.118)
投稿日 : 2016/11/28(Mon) 00:19
投稿者 (仔猫)◆KCezBilYINU
ID情報 : kG/YyE2NbKB6lyGtrPMSQ.
参照先
変態紳士さん、更新ありがとうございます。

amateurさんアイデアすごいです。これでアイテム等の一括置き換えでエラーポップを抑制できます。
(該当スレの[enabled]と[repeat]談話も読ませて頂いてます。勉強になりました)
記事編集 編集
Re: SpoilerALの修正パッチ (No.119)
投稿日 : 2016/11/29(Tue) 01:43
投稿者 (仔猫)◆KCezBilYINU
ID情報 : kG/YyE2NbKB6lyGtrPMSQ.
参照先
変態紳士さん
機能追加ありがとうございます。

バグかな?
と思う現象が発生しましたので報告します。
特定のSSGで縦スクロールのスライドバーが消えてしまう現象が発生してます。

ケース1、何かの拍子に消えてそれ以降は出現しない。
ケース2、最初から終わりまで出現しない。
の2つのパターンがありました。

どちらの場合も
まだ下に項目がある状態=右横に出る筈の状態です。
該当の現象が発生するのは11/27、11/28版で確認しました。

正常に表示されるバージョン
手持ちので確認できたのは11/19版では問題ありません。

追記:正常に修正されたので添付画像を削除しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.120)
投稿日 : 2016/11/29(Tue) 01:57
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : zrKtjGLCFEb8jzYJzlbP2/
参照先
>>119 (仔猫)さん
GUIのバグは根深いようで・・・
先ほども修正して更新していますので、再度テストをお願いできますでしょうか。
こちらでは中くらいのバグをいくつか見つけて修正を行いましたが、それ以降変わった事は起きなくなっています。
尚、11/28版は複数あります。

というか、項目のツリーですが、本来は表形式でデータベースなどを表示するグリッドを改造したものだったりします。
カスタムコントロールを作ったつもりが中途半端な(というよりバグしかない)状態で。
速度が遅いのはコレが影響していたりと・・・

>>121
>GUIを独自で作られたのですか
いえ、自分が作ったらこんな物は作りません。
元々のSpoilerALに使われています。
ですからSpoilerALが遅かったりバグが多かったりと。
記事編集 編集
Re: SpoilerALの修正パッチ (No.121)
投稿日 : 2016/11/29(Tue) 02:09
投稿者 (仔猫)◆KCezBilYINU
ID情報 : Lxk.KhoJ6rRb0XErwLMLV/
参照先
変態紳士さん対応ありがとう御座います。

結果はNGでした。
しかし特に実害はないので…ゆっくり修正で全然OKです。

(ぐはっ、GUIを独自で作られたのですか…ありがたや)
(目に優しい色とかもですね・・。)

>>120
ああ、GUIは勘違いでしたか。すいません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.122)
投稿日 : 2016/11/29(Tue) 02:34
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : zrKtjGLCFEb8jzYJzlbP2/
参照先
>>121 (仔猫)さん
再修正しました。
スクロールバーの表示の部分を変更してみました。
こちらでは再現方法が確立できていないので、何か方法があればいいんですがね。

添付の画像を拝見したところ、フォーカスの矩形が垂直スクロールバーの領域を避けていますね。
スクロールバーやらは自動ではなく、全てプログラムで計算していますので、
計算した領域は正しいようです。
つまり、表示・非表示の切り替えが上手くいってないと。

>>123
>…そういえば最初に表示されてる領域の一番下が、ちょうど節目(分割or区切り)があって
>特定のSSGだけで発生するのはそれが原因だったのかな?
SSGというより・・・
特定のOS (GUIは描画等の順序が変わったりします)
特定のテーマ
特定のウィンドウサイズ
特定の左右分割サイズ
特定のスクロール位置からの項目展開
↑GUIに限ってはこんな条件が影響します。今回は添付して頂いた画像が手掛かりになりました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.123)
投稿日 : 2016/11/29(Tue) 02:39
投稿者 (仔猫)◆KCezBilYINU
ID情報 : kG/YyE2NbKB6lyGtrPMSQ.
参照先
>>122
変態紳士さん
直りました!対応ありがとう!(早い・・・!)

>つまり、表示・非表示の切り替えが上手くいってないと。
…そういえば最初に表示されてる領域の一番下が、ちょうど節目(分割or区切り)があって
特定のSSGだけで発生するのはそれが原因だったのかな?

>↑GUIに限ってはこんな条件が影響します。今回は添付して頂いた画像が手掛かりになりました。
修正ありがとうございます。そこまで大変だとは思いませんでしたお疲れ様です。

>strlen::
これは!?amateurさんのサンプルSSGでUnicode文字入力は同じ文字数なら入力可能と報告があったので
ならこれとセットにすると(文字数を得手→変数化→ファンネルライトかトレース等で代入)
結果:Unicode文字列・・・もう怖くないヨ!
と脳内変換されましたが・・・。(Unicodeの場合はwcslen::を使うのですね。)
-----------------------------------------
,_[:[:[:[:[:[.0x00.]:]+0x38:]+0x08:]+0x14:]+0x08:]+0x08=030000006972375F1653
ギアドラ2のUnicode文字置き換えをd_listでやってる部分です。

03000000が文字数なんですが…この部分を書き換えればOKかな!?

>>124
変態紳士さん情報ありがとうございます。
いやー知りませんでした。末尾00が必要だったのかなぁ…
この先続くバイト列は00が埋まってまして…必要ないと思って省略しちゃいました(滝汗

2文字の時は
,_[:[:[:[:[:[.0x00.]:]+0x38:]+0x08:]+0x10:]+0x08:]+0x08=0200000021713D5C0000
と末尾0000で埋めてあります。最大3文字なので結果オーライでしょうか?今後は気をつけないと…。
記事編集 編集
Re: SpoilerALの修正パッチ (No.124)
投稿日 : 2016/11/29(Tue) 03:08
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : zrKtjGLCFEb8jzYJzlbP2/
参照先
>>123 (仔猫)さん
>strlen
過去にあったのですが、「英雄伝説GOLD」というタイトルのSSGを作った時に
文字列でアイテムを認識しているゲームでした。
しかもポインタで示された文字列を書き換えた後にポインタの近くにある文字列長(文字列と並んでない)
を書き換えないとゲームが落ちる仕組みでして。
SSG利用者はアイテム名に記載された文字列の長さを個別に設定しなければならなかったので、
そんなナンセンスなものもあった事を思い出して追加しました。

>69 72 37 5F 16 53 物強化(UTF-16LE)
ナルターミネーター(終端の0000)は不要なゲームなのでしょうか?
UNICODEならwcslenが終端の0000を見つけて、文字数として「物強化」なら3を返します。0000が無かったら見つかるまで探すので・・・
ANSIはstrlenで終端の00を見つけて、こちらはバイト数(全角は2バイトとして)を返します。

追記:

>末尾00
間違う事も無いとは思いますが語弊を含んでいる気がしまして。
UNICODEだと1文字が2バイトなのでナル・ターミネーター(null terminator)は2バイトの0000です。
ANSIはマルチバイトなのでナルターミネーターは1バイトの00です。
ついでに、UTF16-LE(UNICODE)は0030(0x3000)が全角スペースだったりゼロも混じるので必ず2バイト単位です。

まちがえました。
「英雄*戦姫GOLD」です。
RPGというところまでは合ってるのですが。もう歳でしょうか。
記事編集 編集
Re: SpoilerALの修正パッチ (No.125)
投稿日 : 2016/11/29(Tue) 07:33
投稿者 (仔猫)◆KCezBilYINU
ID情報 : kG/YyE2NbKB6lyGtrPMSQ.
参照先
>>124
変態紳士さん
詳細ありがとうございます。

>間違う事も無いとは思いますが語弊を含んでいる気がしまして。
文字列の最後が00でANSIではこれでOKですが
Unicodeの場合ですと0000と2バイト必要なのですね。メモメモ。

>英雄伝説GOLD
該当タイトルは持ってなかったので残念ながらSSGは拝見できませんでした。
うーむ…気になります。英雄*戦姫GOLDでしたか…ファルコム系かなぁ…と思ったりしたのですが。探してみると臨時板で「どうしたものか…」さんが補完してくれてました。ありがたや。
記事編集 編集
Re: SpoilerALの修正パッチ (No.126)
投稿日 : 2016/11/30(Wed) 02:34
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : zrKtjGLCFEb8jzYJzlbP2/
参照先
致命的なバグを発見したので直しました。

・項目のツリー展開時に無限ループになるバグを修正
・カーソルが砂時計になるまでの時間を0.5秒に変更

ツリー展開時に時間がかかるとOSの中の人は「(応答なし)」という状態に変更しています。
ここまでは問題ないのですが、復帰したときにWM_SIZEというメッセージ(復帰したからサイズ変更した)が飛んできます。
アプリケーションは画面のリサイズ時に再描画を行っています。

つまり、無限に描画を繰り返し、キャッシュされて処理が速くなったら「(応答なし)」にならないので無限ループが終わる、
もしくは、ウィンドウを最前面で処理していないときはWM_SIZEが送られないらしくループもしない。
といった状態になります。

これがSpoilerAL6.1が作られたBorlandC++Builder6の仕様でなければOSの仕様で、
いずれにしても外部に問題が・・・
いちおう対応させておきました。


追記:

2016/12/01
ディレクトリ項目の展開が速くなるようにしました。(SSGパーサーではなくGUIの処理を変更)
アドレスネーミングを使った数百件のサブ項目を含んでいる時に改善されます。
異常なくらい速くなりますが、パッチ導入前が遅いだけだったり・・・
記事編集 編集
Re: SpoilerALの修正パッチ (No.127)
投稿日 : 2016/12/02(Fri) 03:23
投稿者 amateur◆kR..xsXL6RU
ID情報 : CH/zv29Vn9P62NLwmgqeU0
参照先
変態紳士さん、パッチ更新お疲れ様です。
修正パッチでSSGの作成が捗り、とても助かっています。
またしても頼ってしまうことになり恐縮なのですが、
実数電卓に関する変な挙動を発見したので報告させていただきます。
最新パッチ適用時と、パッチを削除したデフォルトのSpoilerAL6.1の両方で同じ挙動でしたので、
おそらくSpoilerALに元からある仕様(バグ?)っぽいのですが、
簡単に言うと、
 ・実数電卓に対して [io_fep] が正常に機能しない
 ・実数電卓の項目(実数電卓に対して[io_fep]を使用した場合の[io_fep]の演算式を含む)に、16進数を書くと正常動作しない
というものです。(16進数を書くと正常動作しないのは仕様なのかもですが)

一応、6.1用(パッチ無し用)と、6.2用の検証用SSGを添付します。
(私が実際に確認した具体的な挙動は添付SSGに書かせていただきました)
特に急ぎの対応を必要としている件ではありませんので、
お手すきの際にでもご確認いただければ幸いです。

記事編集 編集
Re: SpoilerALの修正パッチ (No.128)
投稿日 : 2016/12/03(Sat) 07:41
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : GSFMvGAKPlgzKjAiHgomF/
参照先
>>127 amateurさん

GUIのスクロールバグ(Borland社の不具合)があったので先に直していました。

件の実数電卓ですが、io_fep単体がどうとかではなく浮動小数点数のパーサー自体(計算は全部パーサーを通ります)に問題がありました。
デバッグログに関しても、何を入力しても正常に出力されないバグがありました。

16進数は浮動小数点数の解釈には使われませんので、そのためかと。
$Valが予約語という事に関しては、コード上は浮動小数点数パーサーでは何を代入しても反映されないように定数扱いしていました。
整数パーサーは変数になっています。

かなり重症なので6.2用の浮動小数点数パーサーを追加しました。
少し強引に浮動小数点数を整数として解釈しているところもありますが、
インタプリタというのは「良きに計らえ」といった動作が好まれるので、
まぁ適当実装ですね。

浮動小数点数パーサーは作り直したというべきですが、以下が変更内容です。
互換性を考えると6.2専用にしました。

・「0x」で始まる16進数、「0」で始まる8進数、それ以外の浮動小数点数を解釈するように変更
・$Valを定数から変数に変更
・ビットシフトやエンディアン反転など無理やり実装(倍精度浮動小数点数しか正しく動かないと思います、需要が無い気がするので・・・)
・メモリーアクセス関連を無理やり実装(6.1には無かった)
・メモリーアローケートを実装
・defineを実装

追記:

[io_fep]ですが、クラスを介して多重演算しているので速度に関しては僅かに[define]の方が速かったりします。
SSGファイルの可読性で選ぶことになると思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.129)
投稿日 : 2016/12/03(Sat) 19:46
投稿者 amateur◆kR..xsXL6RU
ID情報 : 1a6f/8TBJr0/DWL9zOoAY1
参照先
変態紳士さん、パッチ更新ありがとうございます。
面倒なことをお願いしてしまいまして本当に申し訳ないです。
 (浮動小数点数パーサーを作り直していただいたとのことで・・・お疲れ様です)
成程、浮動小数点数の計算自体に問題があったわけですね。
更新分のパッチ適用したところ、>>127のSSGに書いた問題点、最大値と最小値の件以外は正常動作しました。
16進数は浮動小数点数の解釈には使われない、とのことですので最大値と最小値の件は仕様ということですね。
10進数で書けば問題のないことなのでこれは仕様ということで承知いたしました。

書いてくださった変更点のうち、
ビットシフトについては、どうも正常に動作していない感じですが(下記のような感じで書いたらdoubleも含め異常に巨大な値に)

[io_fep]$Val<<1 ,$Val>>1
[subject]floatのテスト【 '+' _mem, 0x00601F00, 4,fep_num ,??,%.2f '+' 】/現在値/_:f_calc, 0x00601F00, 0, 65535, float
[subject]doubleのテスト【 '+' _mem, 0x00601F08, 8,fep_num ,??,%.2f '+' 】/現在値/_:f_calc, 0x00601F08, 0, 65535, double
[/io_fep]

(上記でdoubleの場合のデバッグモードのログ)
--------
Parsing「$Val」→[5.000000]
Parsing「1」→[1.000000]
Parsing「<<」→[9234631035923202048.000000]
--------

[define]と[allocate]については、実数電卓の[io_fep]でも機能するようになりました(試したら旧パッチでは確かに機能してなかったです)
「メモリーアクセス関連」についてですが、[::](ポインタ変換)等が使えるということでしょうか?
[allocate]0, 1000, RW
[io_fep]$Val*[:Memory::0:] ,$Val/[:Memory::0:]
[subject]doubleのテスト【 '+' _mem, 0x00601F08, 8,fep_num ,??,%.2f '+' 】/現在値/_:f_calc, 0x00601F08, 0, 65535, double
[/io_fep]
のように書いたら、SSG読み込み直後にSpoilerALが落ちてしまいますが、[::]とは別のことなのでしょうか。
 ※エラー表示例:「モジュール 'WINMM.DLL' のアドレス 7234FB98 でアドレス 00000000 に対する読み込み違反がおきました」
記事編集 編集
Re: SpoilerALの修正パッチ (No.130)
投稿日 : 2016/12/04(Sun) 00:44
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : GSFMvGAKPlgzKjAiHgomF/
参照先
>>129 amateurさん
>ビットシフトについては、どうも正常に動作していない感じですが
掛算ではありません。
ビットシフトは「ビットのシフト」です。
グーグル先生に「Wikipedia IEEE754」をお尋ねください。
16進数がありえないという事も理解いただけるかと思います。

ただし、浮動小数点数をロードした時点でFPUが指数を解釈しなおしますので、
暗号化や複合化にも使えないと思います。
そもそも、プログラミング言語では浮動小数点数のビットシフトなど有りませんから。
そういった意味では使い道が無いと思います。
浮動小数点数をシフトする事は演算としては間違いですから。

>[::](ポインタ変換)等が使えるということでしょうか
使えればいいな。という程度で作っています。
0x00400000 は 十進数で 4194304 ですが、浮動小数点数で誤差が発生したときに
4194303.999999 という意味不明なアドレスになる事があります。
アドレスに浮動小数点数を使うべきではないのですが、
SpoilerALが不便なので無理矢理ということです。

ただし、多くのコードは検証の段階に来ていません。
現状は整数と浮動小数点数を別々にしてしまっているので1つの機能につき2倍の製作時間が必要となり、
検証も2倍の労力を割いてしまいます。
管理できないコードが増加する傾向にありますので、整数と浮動小数点数のパーサーを統合して作り直す事を検討しています。


追記:

整数と浮動小数点数のパーサーを統合しました。
パーサーの変更は全ての演算に影響が出ますので多少神経質ですが、
今回は文字列のマークアップに変更はありません。

2016/12/05
Borland社のGUIのバグを修正
記事編集 編集
Re: SpoilerALの修正パッチ (No.131)
投稿日 : 2016/12/04(Sun) 03:03
投稿者 amateur◆kR..xsXL6RU
ID情報 : Oy.LCDYlQtDmVLo1xMF0c/
参照先
>掛算ではありません。
>ビットシフトは「ビットのシフト」です。
ああ、同じ「5」でも、doubleでのバイナリは全く違うので、結果も全然違うということですね。
2倍にしたかったら素直に *2 ということですね。
浮動小数点数のビットシフトなんて初めてなので勘違いしてました。済みません。

>グーグル先生に「Wikipedia IEEE754」をお尋ねください。
基本形式は「二進および十進の浮動小数点数データの集合」とありました。
浮動小数点数の演算では16進数というのがそもそもないのですね。

メモリーアクセス関連は、浮動小数点数では無理がありそうですね。
確かに、小数点以下のあるアドレスなんておかしいですが、でも浮動小数点数で誤差が発生してそういう場合もありうる、と。
浮動小数点数の演算って難しいんですね。
変態紳士さんのご説明を読んで漸く大変さが少し理解できた気がします・・・

>1つの機能につき2倍の製作時間が必要となり、
>検証も2倍の労力を割いてしまいます。
何か、とんでもなく面倒なことをお願いしてしまったような・・・
>>127で実数電卓についてお願いしたときは、こんなに大変なことだとは想像もしていませんでした。
何というか、本当に申し訳ないです。

(追記)
書き込む前にページ更新を忘れて気付きませんでしたが、
パッチ更新ありがとうございます。
適用して少し試しましたが、今のところ問題なさそうです。
それと、メモリーアクセスが動作するようになったようです。
下記のように書いてもSSGが読み込まれ、正常に演算されています。

[io_fep]$Val*[:0x601F10:8] ,$Val/[:0x601F10:8]
[subject]doubleのテスト【 '+' _mem, 0x00601F08, 8,fep_num ,??,%.2f '+' 】/現在値/_:f_calc, 0x00601F08, 0, 65535, double
[/io_fep]

doubleの場合、[:(アドレス):8] のように8バイト読み取りにしないと駄目ですね(最初気付きませんでした)
記事編集 編集
Re: SpoilerALの修正パッチ (No.132)
投稿日 : 2016/12/06(Tue) 19:08
投稿者 (仔猫)◆KCezBilYINU
ID情報 : hxukakYtynvoJMlarF0O40
参照先
変態紳士さん更新ありがとうございます。

>2016/12/05
>Borland社のGUIのバグを修正
これは一体どういうことか…ALがテキパキ仕事をするようになりました。
パッチ無しを機関車とすると新幹線(リニア?)になった感じが…。

特にtoggle系の処理ですが、表示側(アドレスネーミング)へカーソルを移動しなくても即反映されて超快適です。
ありがたや。(えー。表示全体が早くなってます?試しにCPU動作クロックを抑えてみましたが…超軽いです。12/1に更新されてましたか…気がつかなかったです。)

>>133
>全ての項目でアドレスネーミングを使用し文字列を取得しています。
>項目が表示する時に幅を記録して逐次変更という形式にしました。
詳細ありがとうございます、効果が出てますね。
記事編集 編集
Re: SpoilerALの修正パッチ (No.133)
投稿日 : 2016/12/07(Wed) 05:53
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : GSFMvGAKPlgzKjAiHgomF/
参照先
>>132 (仔猫)さん

そうですね。
以前と比べると意味不明な速度です。

パッチ無しでも、
水平スクロールの幅を求めるため項目の名称を取得していますが、
この処理は文字列を取得するためにアドレスネーミングを呼び出す必要があります。

パッチ無しでは、
ディレクトリ項目を展開した時点で完全な水平スクロールの幅を求めるため、
全ての項目でアドレスネーミングを使用し文字列を取得しています。
しかも表示の時は再度アドレスネーミングを呼び出しています。

この処理を変更し、
項目が表示する時に幅を記録して逐次変更という形式にしました。

もし仮にウィンドウサイズが100万ピクセル×100万ピクセルだと理論上は遅くなりますが、
それが実現できる高性能なコンピュータなら遅くないはず・・・
(65535ピクセルは超えられないと思いますが)

クラスの拡張が出来なかったので
クイックソートや二分探索など余計なアルゴリズムが追加されてしまったのは秘密です。
(もっとスマートな方法があるかもしれないので)

>Borland社のGUIのバグを修正
↑これですが、以下が正しいスクロール位置にならないというコンパイラを作っているベンダーさんのバグです。
・垂直スクロールバーをドラッグした後のホイールスクロール
・垂直スクロールバーをドラッグした後の上下キースクロール

追記:

2016/12/08
対象のプロセスを起動していないと遅い状態だったのを
それなりに速くしました。

ただし、(MName::パッケージ版.exe|MName::ダウンロード版.bin) という書き方は遅いです。
以下のように書いておき MName::nul (6.2)でアクセスすると速くなります。
[process]パッケージ版.exe
[process]ダウンロード版.bin
記事編集 編集
Re: SpoilerALの修正パッチ (No.134)
投稿日 : 2016/12/08(Thu) 20:13
投稿者 (仔猫)◆KCezBilYINU
ID情報 : T52Eqpbi.nNHsCnZngl/s1
参照先
変態紳士さん更新ありがとうございます。

>2016/12/08
>対象のプロセスを起動していないと遅い状態だったのを
>それなりに速くしました。
正常に動くSSGでは該当プロセスが無いときの表示が軽いです。良好!

訂正:
少し不具合がありそうです。
今のところ一件だけですが正常にアドレスが取得できなくなってます。
MName::nulを使ってるSSGですが該当プロセスがあるのにMName::nulには0(対象のプロセスを開けません。)が入ってます。
12/5版では正常です。タイトル"幻影のゴーストビル(体験版)"とそのSSGが該当してます。

[process]幻影のゴーストビル(体験版).exe
[process]幻影のゴーストビル.exe
特定の文字コードが原因とかでしょうか?
試しに実行ファイルを0.exeとリネームして[process]0.exeとしてみると正常に作動します。

追記:
12/09版にて正常動作確認しました。修正ありがたや。

追記2:
念のため過去自分が作ったSSGの動作チェックをしてたのですが
ワードリピートを使ったSSGが仕様変更?の為か正常に動かなくなってます。
パッチなしではOKで手持ちのパッチでは11/09日まではOK。11/14以降はNGで正常に動作してないようです。

該当のゲームタイトル
『"WE ARE BANDITS!! ウィーアーバンディッツ 〜恥辱に手折られし戦場の花〜(体験版)"』とそのSSGです。

>>135
変態紳士さんご配慮ありがとうございます。
ワードリピートを正しい仕様に直した事で副作用でしたか…。

問題が解決したため添付ファイルを削除しました。

追記3:
あと1つありました…大ボスです。
ギアドラ2のSSGですが起動すると非常に動作が不安定になりました。
ほぼ100%でALがエラー落ちします。

12/06版のパッチでは(OK)
12/08以降で残念ながら12/09(最新)でも(NG)
です。。。色々試してみてもエラーの発生する原因が特定できてないので…うーん。
少しずつSSGのコードをコメントアウトして挙動を探ってみてます。

原因判明しました。traceでした。
traceを表示代わりに使ってるのでそれが原因です(正しい書式ではないので)お騒がせしました。

>>136
amateurさん
ありがとうございます。どう書けばいいのか分からずでした。($Val+1)とするのでしたか…助かります。
記事編集 編集
Re: SpoilerALの修正パッチ (No.135)
投稿日 : 2016/12/09(Fri) 19:41
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : GSFMvGAKPlgzKjAiHgomF/
参照先
>>134 (仔猫)さん

>幻影のゴーストビル(体験版)
昨日は修正ファイルをアップしてから寝てました。

>ワードリピート
仕様変更ではなくワードリピートは明らかに仕様通り動作しておらず、
完全なバグだったので修正したのですが、
そのバグがある状態で作られたSSGが動作しないようで・・・
ヘッダが6.2でしか適用されないようにしました。

バグがあっても頑張って作った過去のSSGは動かないと困るので、
というか、あんな状態でよく使えたものだと感心します。

――――――――――――――――――――――――――――――――――――――――
※注意事項
ワードリピートの修正はヘッダを6.2にしないと動作しないように変更しました。
ヘッダを6.1にしている場合は以前の動作になります。
――――――――――――――――――――――――――――――――――――――――

追記:

ついでに[PageUp]、[PageDown]、[Home]、[End]で操作できるようにしました。
全部スクロール操作です。

2016/12/10 0:45頃

水平スクロールで右にずらした状態で、
キー操作の垂直スクロール(↑, ↓, PageUp, PageDown, Home, End)すると
表示バグ(再描画部分の反転表示が水平スクロールしていない)が発生したので修正しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.136)
投稿日 : 2016/12/09(Fri) 21:42
投稿者 amateur◆kR..xsXL6RU
ID情報 : wq.B5PeyXj7h4b7bIUd5Y.
参照先
>>134 (仔猫)さん
変態紳士さんがご説明&パッチ修正でご対応くださったので蛇足かもですが、
件のSSGは、ヘッダを6.2にした場合、
 [!R1,[\:!] → [!R($Val+1),[\:!]
 [!R1,[:!] → [!R($Val+1),[:!]
 [!R1,+0x4\:]!] → [!R($Val+1),+0x4\:]!]
 [!R1,+0x4:]!] → [!R($Val+1),+0x4:]!]
と修正すれば正常動作するのではないかと思います。

参考) 該当部分を修正後の記述。体験版で試したら一応動いてました。
----------------
[group]unit_rpt1
[subject]No.[!L$Val+1!]  '+' _mem,_MName\:\:game.exe=>base;[\:$base+0x3C\:]=>pl;[\:$base+$pl+0x154\:]=>data;[\:[!R($Val+1),[\:!][\:[\:[\:$base+$data+0x6F30\:]+0x1F0\:]+0x4\:][!R($Val+1),+0x4\:]!]+0x40\:],0x20,unicode,-:dir
[replace]_MName::game.exe=>base;[:$base+0x3C:]=>pl;[:$base+$pl+0x154:]=>data;[!R($Val+1),[:!][:[:[:$base+$data+0x6F30:]+0x1F0:]+0x4:][!R($Val+1),+0x4:]!],ssl->status
[back]
[/group]

[group]unit_rpt2
[subject]No.[!L$Val+1!]  '+' _mem,_MName\:\:game.exe=>base;[\:$base+0x3C\:]=>pl;[\:$base+$pl+0x154\:]=>data;[\:[!R($Val+1),[\:!][\:[\:[\:$base+$data+0x6F30\:]+0x254\:]+0x4\:][!R($Val+1),+0x4\:]!]+0x40\:],0x20,unicode,-:dir
[replace]_MName::game.exe=>base;[:$base+0x3C:]=>pl;[:$base+$pl+0x154:]=>data;[!R($Val+1),[:!][:[:[:$base+$data+0x6F30:]+0x254:]+0x4:][!R($Val+1),+0x4:]!],ssl->status
[back]
[/group]
----------------

>>135 変態紳士さん
パッチ更新ありがとうございます。
ヘッダが6.1か6.2かでワードリピートの動作が変わることを確認しました。
>>134の(仔猫)さんがリンク貼ってくださったゲームのSSGが、
旧仕様(というかバグ)の記述が6.1で、本来の正しい記述が6.2で、各々ワードリピート使用部分が正常動作していました。

>ついでに[PageUp]、[PageDown]、[Home]、[End]で操作できるようにしました。
物凄く操作しやすくなりました! 
こちらもありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.137)
投稿日 : 2016/12/10(Sat) 18:50
投稿者 (仔猫)◆KCezBilYINU
ID情報 : T52Eqpbi.nNHsCnZngl/s1
参照先
変態紳士さん更新ありがとうございます。

traceでのALが落ちる現象を報告しましたが、それから色々と試したところ、原因はどうもロック項目ではないかと…。
ロック項目の動作(値の固定化)があると異常動作でALが落ちてる感じです。
通常のSSGでもロック項目で値の固定化をするとALの異常落ちを確認しました。
使用したタイトルは最近依頼があった"奴隷ハーレム解放戦線(体験版)"とそのSSGです。

12/06版では(OK)
12/08以降では(NG)
です。

追記:
>>138
変態紳士さん
12/11版にて問題解決を確認しました。

>それぞれのインターフェース(関数の引数を増やすような処理)を修正する事になりまして、
>妙に手間取りました。
お手数おかけしました。お陰で大変使いやすいALになってます。
特に画面の更新が早くて素晴らしい。

修正ありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.138)
投稿日 : 2016/12/11(Sun) 15:48
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : GSFMvGAKPlgzKjAiHgomF/
参照先
>>137 (仔猫)さん
報告どうもです。
修正しました。

>>132
>表示側(アドレスネーミング)へカーソルを移動しなくても即反映され...
↑この処理(書き込み後の表示項目の更新)がロック項目に影響を及ぼしていました。

書き込み可能な項目が15種類+ディレクトリ項目の一括機能+ロック中の書き込み動作+
それぞれのインターフェース(関数の引数を増やすような処理)を修正する事になりまして、
妙に手間取りました。

追記:

2016/12/12
パーサーが0.5を正しく認識できないので修正。
対象のプロセスを発見した時点の処理が怪しいので修正。

2016/12/14
Borland社のGUIのバグを修正
水平スクロールしたまま項目を選択すると正しくないスクロール位置で表示していた。
記事編集 編集
Re: SpoilerALの修正パッチ (No.139)
投稿日 : 2016/12/15(Thu) 19:00
投稿者 (仔猫)◆KCezBilYINU
ID情報 : hxukakYtynvoJMlarF0O40
参照先
変態紳士さん、更新ありがとう御座います。
今のところ問題なく動いてます。
(Linux+Wineでも動作確認しました)

僕の躓いた(Linux + Wine)時のパッチとかSSにとってみました。
まだ動いてない方の参考になるかもと。
変態紳士さんのreadme.txtに詳しく方法が書かれてるのでセットでみてください。(正常に動いてる方には無用なパッチです)

添付1は3.0024D232 のアドレスに WINMM.DLL という文字列があるのでW(57) を _(5F) に変更して上書き
添付2は6.3D 4F C7 2E というバイト列を検索 7.検索結果が1件しかない事を確認し81 E8 AC E6 に変更して上書き

(この添付2の画像はすでに過去のやり方になりましたがバイナリエディタ(BZ)の使い方として…残しておきます。)

>>140
変態紳士さん、ありがとうございます。
おおー。これで差し替えが簡単になります。

記事編集 編集
Re: SpoilerALの修正パッチ (No.140)
投稿日 : 2016/12/16(Fri) 00:26
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : HZHKDJMuSkse2GztUvE61/
参照先
>>139 (仔猫)さん
報告どぉもです。
パッチを入れ替える作業が面倒だと思うので方法を変更しました。
詳しくは readme.txt を参照してください。

追記:

2016/12/18
スクロール関連の修正
特定の環境で動作するようにメニュー関連の修正

2016/12/19
修正された trace と copy は 6.2 で動作するように変更
記事編集 編集
Re: SpoilerALの修正パッチ (No.141)
投稿日 : 2016/12/20(Tue) 23:25
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : HZHKDJMuSkse2GztUvE61/
参照先
[define]を強化しました。
動作検証中。。。

※添付ファイルはスレッドトップへ統合しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.142)
投稿日 : 2016/12/23(Fri) 17:49
投稿者 amateur◆kR..xsXL6RU
ID情報 : BeyA7MMIfzRm04vR3z1Pe1
参照先
>>変態紳士さん
あちらのスレで続けるのも何ですので、こちらでレスさせていただきます。
ファンネルライトの部分を修正していただき、ありがとうございます。
報告させていただいた件、全て正常動作するようになりました。
速度とメモリの問題、これは難しそうですね。
年末の忙しい時期にお手数をおかけして恐縮ですが、こちらは急ぎませんので、
お時間に余裕のある際にでもゆっくりご対応いただければ幸いです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.143)
投稿日 : 2016/12/24(Sat) 12:13
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : HZHKDJMuSkse2GztUvE61/
参照先
>>142 amateurさん
すべてを[define]の対象にすると静的に処理され、置換された文字列がバッファに蓄積されてしまうようです。
ウディタ解析用SSGの読み込み時に置換された文字列をファイルに出力してみましたが、
従来のdefineはSSGファイルのロード時は7件の変換だったのに対し、
静的な処理も含めて全てを置換するとロードだけで22,694件まで増えます。

更にSSRなどのリストはdefineで定義されている場合と定義されていない場合の状態別でメモリに読み込むため、
巨大な容量になるようです。

色々と問題があるので個別に実装しました。
ウディタ解析用SSGのロードは速くなりました。
Xデーなのでチキンを買ってきます。

・NA /adjust_check
・NA /adjustment
・NA /caution
・NA /child_rw
・NA /e_with
・NA /enabled
・NA /funnel
・NA /involve
・NA /io_fep
・NA /note
・NA /script
・NA /size
・NA back
・NA root
・NG input
・NG SSRファイル (重すぎ)
・NG subject (重すぎ)
・NG タグ自体の置換 (個別なので無理)
・OK adjust_check
・OK adjustment
・OK calc
・OK caution
・OK child_rw
・OK creator
・OK distinction
・OK e_with
・OK enabled
・OK free_list (項目側、グループは未検証)
・OK funnel
・OK involve (参照元)
・OK io_fep
・OK list (項目側、グループは未検証)
・OK maker
・OK note
・OK process
・OK repeat (参照元)
・OK replace (参照元)
・OK size
・OK string
・OK title
・OK toggle (項目側、グループは未検証)
・OK val
記事編集 編集
Re: SpoilerALの修正パッチ (No.144)
投稿日 : 2016/12/24(Sat) 14:53
投稿者 amateur◆kR..xsXL6RU
ID情報 : Y2xkjxyD7THILBkVJmRi81
参照先
>>143 変態紳士さん
ご対応ありがとうございます!
早速>>141のパッチを適用してみたところ、仰るとおりウディタ解析用SSGは10秒未満(以前と同じレベルの速度で)読込みできました。
毎度面倒なことをお願いしてばかりで申し訳ないです・・・
今回も迅速なご対応に感謝です。
ところで、>>143の "・NA /adjust_check"以下の記述は、[define]での置換の可否でしょうか

それと、直接私が困っているのではないのですけど、
【改造依頼】 正しい性奴隷の使い方のスレッドの(No.31)の報告について、
(No.32)で私が書いたとおり、上記スレのTakeさん作の(No.11)のSSG(ヘッダは6.2)がtrace項目が原因?でSSG読込みに失敗(SpoilerALが落ちる)するようです。
このSSG自体が7万行以上もある超大作SSGなのでそれも影響しているのかもですが・・・
一応、私の方でtraceとcopyの動作検証をしてみたのですが、
どちらも>>141のパッチおよびスレッドトップの(2016.12.20)のパッチの両方でSpoilerALが落ちてしまいます。
どうも、ロック周期で両項目の書込みが行われるタイミングで落ちるようですが。
検証用のSSGを添付しますので、お手すきの際にでもご確認いただければと思います。

追記
>>141のパッチを適用してみたところ、とりあえず、[adjustment]のオプション部分に[define]の置換が正常に機能するようになったことを確認しました。
下記のような記述が可能になっています( {Ti}の部分が置換箇所 )
 [adjustment]search, _MName::nul, 8B ?? $4 {Ti} $$ 83??0189?? $4 {Ti} $$, _MName::nul, _MName::nul:+.text, 1
上記はウディタ解析用SSGの記述ですが、これで「プレイ時間増えない」について必須コード項目が不要になりました!
引き続き、色々試してみたいと思います。

記事編集 編集
Re: SpoilerALの修正パッチ (No.145)
投稿日 : 2016/12/25(Sun) 10:45
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 2z67YVPX0XPp593v4i4EG/
参照先
>>144 amateurさん

>ところで、>>143の "・NA /adjust_check"以下の記述は、[define]での置換の可否でしょうか
そうです。個別の実装ですので1カ所の書き換えというわけではありません。
ですので部分的に動作不良という事もありえます。

NA 適用外 引数が無い場合など
NG 未実装 遅くなりすぎるか、プログラムの構造でメモリを大量消費するなど
OK 実装済 ただし検証していない

>trace項目
単純にバグだったので修正しました。
ただしtraceはお勧めしません。

2017/01/01
以下の修正
・電卓の画像を変更しても即座に反映されない
・電卓を10進数にした状態で画像を変更すると10進/16進の表示が逆になり切り替えても直らない
記事編集 編集
Re: SpoilerALの修正パッチ (No.146)
投稿日 : 2016/12/25(Sun) 16:17
投稿者 amateur◆kR..xsXL6RU
ID情報 : qP49YWohFNC0RXmWcxqeZ/
参照先
変態紳士さん、パッチ更新ありがとうございます。
traceとcopyが正常動作するようになっていました。
traceは・・・確かにあまり使いたくないですね。

>ですので部分的に動作不良という事もありえます。
承知しました。色々実際に試して確認していこうと思います。

それと、メモリ消費量も[define]強化以前と同程度に戻っていますね。
ウディタ解析用SSGで確認しました。
こちらもありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.147)
投稿日 : 2017/01/06(Fri) 04:17
投稿者 amateur◆kR..xsXL6RU
ID情報 : Nkymk6K7wbyD09aDC5Wkc/
参照先
変態紳士さん、散々お世話になった昨年に続き今年も早速お願いとなり恐縮ですが、
SpoilerAL側にメモリを確保する件でご相談があります。
(SpoilerAL修正パッチは、2017.01.01と2017.01.06を適用して試しましたが結果は同じでした)

神秘の泉・レーツェルコンティネント2というSRPG Studio製のフリーゲームについて、
添付SSG(1個目)ではSpoilerAL側にメモリを確保しているのですが、
そのSpoilerAL側に確保したメモリアドレスに書き込む一部の項目が正常に機能しないのです。
原因を色々探ったところ、どうも添付SSGの「30個ずつデータ表示をずらす」と「101-130個目のデータを表示させる」の項目(クラスデータ・敵味方ユニットデータにあり)について、
 _L Memory::0 のようにSpoilerAL側のメモリに書き込むように記述しているのに(169-171行目や175-177行目等)、
ゲーム側のメモリ(SpoilerAL側に確保されたアドレスと同じ数値のアドレス)に値を書き込んでしまっているようです。
この際、ゲーム側のメモリの該当アドレス(本来はSpoilerAL側のメモリアドレス)が読み書き不可能な領域の場合は、
"アドレス[0x864718]で読み込みエラー。"のように表示され、
読み書き可能な領域の場合は、本来SpoilerAL側のメモリに書き込まれるべき値がそのままゲーム側のメモリに書き込まれるようです。

なお、同じ内容でメモリ確保をゲーム側に変えた(というより、元々ゲーム側にメモリ確保するよう書いていたSSGを、SpoilerAL側にメモリ確保するように修正したのですが)SSGでは、
上記の項目、「30個ずつデータ表示をずらす」と「101-130個目のデータを表示させる」(クラスデータ・敵味方ユニットデータとも)が正常機能しています。
念のため、ゲーム側にメモリ確保した分のSSGを2個目に添付します。
それと、参考として両SSGの内容の比較結果をこちらに公開しています。

私のSSGの書き方が何か間違っているのかもしれませんが、自分では幾らチェックしても分かりませんでした。
分かりにくい説明で面倒なことをお願いして申し訳ないのですが、お手すきの際にでもご確認いただければ有り難いです。
よろしくお願いします。

記事編集 編集
Re: SpoilerALの修正パッチ (No.148)
投稿日 : 2017/01/07(Sat) 03:09
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : wiV1gw0vQHsY9cKSTlNLa/
参照先
>>147 amateurさん
ローカルプロセスのメモリ確保の件、修正しました。

>>149 amateurさん
>他に追加された、fep_list、fep_free_listについては、
「神採りアルケミーマイスター」のSSGで「ユニットリスト読み込み」なる項目があり、
眺めていたら fep_free_list があればこんな事にはならなかったと思った次第です。
_fmt については、そもそもアドレス書式があるのに最後に読み込む必要があるのかと思った次第。
次期新作は「マイスター」と付いているので面白い?のかどうか分かりませんが多少期待してます。

>表示ずらし
N×Nの[repeat]だと簡単に数万件のメモリになりますが、
多重ループしない場合はGUIの表示速度に任せてもいいのではと思ったり。(最近行ったGUIの変更でディレクトリ項目の展開速度が速くなったので)
ただ、急な変更で多重ループになると静的解釈の[repeat]はメモリを圧迫するのでどちらが良いのかはケースバイケースのような気がします。
500件以上とか読みにくい場合も微妙なところです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.149)
投稿日 : 2017/01/07(Sat) 18:04
投稿者 amateur◆kR..xsXL6RU
ID情報 : NMbxXwxWQwEF500euDZIh0
参照先
>>148
変態紳士さん、ご対応ありがとうございます。
問題のSSGが正常に動作するようになりました。

それと、アドレスネーミングの新書式の追加、こちらもありがとうございます。
少し試してみましたが、「fmt」については、
値の部分(アドレスコーディングの演算結果)をそのまま「num」等の書式に応じて表示する、という仕様のようですね。(アドレスから値を読み取るのではない)

項目のID部分(項目の通し番号)などは今まで、表示ずらしを使う場合、[io_fep]とfep_numの組み合わせでアドレスネーミング表示させていましたが、
この方法だと項目本体が電卓項目だと、電卓の現在値まで[io_fep]の演算後の値になってしまうのが難点でしたので、
fmtの実装で、表示ずらしに伴う項目のIDの表示ずらしも便利になりそうです。

あと、[repeat]の[! @ssl->リストファイル, $Val !]を使った項目名等の表示も、
表示ずらしを使うと項目名の表示がずらせずに不便だったのですが( [!!]内に[:Memory::0:L]のように[::]は使えないので)、
 _fmt, 値, サイズ, list, エラー時の代替え文字列, リストファイル名, 初項, 公差
の書式を使い、「値」部分に、"_0x[!$Val!]+[:Memory::0:L]" のように書くことで、
項目名等の表示をずらすのが簡単になると思います。

他に追加された、fep_list、fep_free_listについては、
[io_fep]の「出力値への演算」(復号化)後の値に応じたリスト中の文字列を表示させるものでしょうか。
エウシュリー(AGE)など値が暗号化されているゲームに使うと便利そうですね。

沢山の便利な機能を追加してくださって大感謝です。
SSGの書き方の幅がさらに広がりそうで本当に助かります。
記事編集 編集
Re: SpoilerALの修正パッチ (No.150)
投稿日 : 2017/01/07(Sat) 22:08
投稿者 amateur◆kR..xsXL6RU
ID情報 : NMbxXwxWQwEF500euDZIh0
参照先
変態紳士さん、連日のお願いとなり申し訳ないのですが、
ご対応いただいた最新の2017.01.07分のパッチを適用すると、
添付のSSG(Venus Blood-RAGNAROK- SLG体験版ver2用)の「ユニットデータ」→「スキル」→「称号スキル」の書換え時に、
添付スクショのようなエラーとなり書換えができません。
なお、一つ前の2017.01.06のSpoilerAL修正パッチに戻すと正常に書換え可能です。

これは私の適当な印象レベルの話でしかないですが、
同じようなエラー表示が、このゲームの専用スレの(No.17)に私が書いたwcslen::の件の際にも出ていたようなのですが。
今回エラー表示の出るスキル書換えに関しても、ダブルリスト項目のリストにwcslen::を使っています。
(上記リンク先の、string項目での種族・特攻の文字列書換え後のwcslen::を使った文字数修正項目は正常動作しています)

お手数をおかけしますが、よろしくお願いします。


(以下は>>148へのレスです)
fep_list、fep_free_listについては、やはりエウ作品を想定されたのですね。
ローテート演算子も追加いただきましたし、今後はエウ作品のSSGも書きやすくなりそうですね。
(私は戦女神シリーズの新作を期待してるのですが・・・もう出ないのかな。2のリメイクでも・・・)

表示ずらしについては、どうなんでしょう。
これを使う動機としては、仰るとおり、
 ・[repeat]を使いすぎるとメモリ使用量が増大し、SSG読み込みに時間がかかる
 ・あまり項目数が多いと読みにくい
と2点なのですが。

私が初めて表示ずらしを使ったのは昨年夏ごろに作っていたSSGで、
調子に乗ってアイテムやスキル等のデータを[repeat]を使って書いていたら、
SSG読み込みがどんどん遅くなったので何とかならないかと思ったのがキッカケでした。
アイテムとかスキルとか、一つ一つの種別だと読みにくいのは許容範囲でも、
色んなところで[repeat]を使ってると、次第にSSG読み込み時間が鬱陶しくなってくることがありまして。
これはSSG使用者側よりも、SSG作成中に動作確認のために何度もSSGを再読み込みする必要のある作成側の方が気になるかもしれません。

記事編集 編集
Re: SpoilerALの修正パッチ (No.151)
投稿日 : 2017/01/08(Sun) 06:34
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : GcRj9gLNbDo3c3ucmSgaR.
参照先
>>150 amateurさん
修正しました。

修正はすぐ終わったのですが、ゲームが分からなくて「称号スキル」というのをセットするのに時間がかかりました。
その間、称号スキルが空の状態で弾かれてました。。。

ローカル変数はアセンブリ言語の書き換えが61箇所あります。(もともと多いけど前回の修正で1.5倍くらいに増量)
これはSSGの項目の種類に比例した数で、個々は大して難しくないのですが数が多いです。
ですので今回wcslenは関係ありません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.152)
投稿日 : 2017/01/09(Mon) 04:34
投稿者 amateur◆kR..xsXL6RU
ID情報 : z34E2S/rqpqqhqYLshlsI/
参照先
>> 変態紳士さん
修正ありがとうございます。
試したところ正常に動作しています。(wcslenは無関係だったのですね。適当なこと書いてすみません)
称号スキルのこと、お願いする際にフォローしておくべきでした。申し訳ありません。
というか、スキル関係を作りかけの中途半端のままお願いすべきではなかったと反省しています・・・

最近、[define]の強化やアドレスネーミングの新書式追加など大幅アップデートが続きましたし、
パッチ自体がどんどん複雑になってるのだろうなと何となく想像がつきますが、
やはり修正作業は大変なのですね。本当にお疲れ様です。

私も面倒くさいと放置するのが気が引けてきたので、
件のゲームのスキル変更機能が何とか形になりました。
早速、一部にアドレスネーミングのfmtを使ってみました。バッチリ正常動作しています。
今までなら[io_fep]とfep_numを使う必要があったケースですが、fmtだけで済むので記述が楽です。
wcslen::等もそうですが、便利な機能の追加ありがとうございます。

(昨日の夕方からずっと掲示板に接続できずお礼が遅れました。すみません)
記事編集 編集
Re: SpoilerALの修正パッチ (No.153)
投稿日 : 2017/01/09(Mon) 06:41
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : wiV1gw0vQHsY9cKSTlNLa/
参照先
>>152 amateurさん
おはようございました。
HowToSSGに書いてないのですが、_fmt は文字列(ただし4バイト以下)も扱えます。

// 「T」 バイト列「87 54」, リトルエンディアン「0x5487」, ビッグエンディアン「0x8754」
// 「U」 バイト列「87 55」, リトルエンディアン「0x5587」, ビッグエンディアン「0x8755」
// サンプルなので「$Val = 0;」とゼロを代入しています。

// $Val == 0 の時は「T」、1 の時は「U」、対象のプロセスが見つからない時は「-」を表示
[subject]_fmt, _$Val = 0; [~ 0x8754 + $Val ~2], 2, null, -:dir
[back]

// ローカルメモリで変動する時は以下のようにします。
[subject]_fmt, _L $Val = 0; [~ 0x8754 + $Val ~2], 2, null, -:dir
[back]

「A」に 1 を足して「B」も可能です。
漢数字の「一二三」はバイト列に規則性が無いので free_list になります。
記事編集 編集
Re: SpoilerALの修正パッチ (No.154)
投稿日 : 2017/01/09(Mon) 17:43
投稿者 amateur◆kR..xsXL6RU
ID情報 : 9FKS6Lf/tw/U9UWTQcaS51
参照先
>>153 変態紳士さん
おお、文字列も表示可能なんですか >fmt
追加されたアドレスネーミングの書式はまだ色々と使い道がありそうですね。
教えてくださってありがとうございます。

追記;
追加のご説明ありがとうございます。
エンディアン反転演算子の使用例を初めて見ました。
この演算子、多分値がビッグエンディアンで格納されているゲームで使うんだろうなと思うものの、
実際にはそんなゲームほとんど見たことがなく、使ったことがなかったです・・・
記事編集 編集
Re: SpoilerALの修正パッチ (No.155)
投稿日 : 2017/01/11(Wed) 22:17
投稿者 amateur◆kR..xsXL6RU
ID情報 : IA9.YStnxp1bqHNm8bNoG/
参照先
変態紳士さん、毎度お手間をとらせてしまい恐縮ですが、
またしてもご相談があります。
今回はダブルリストとダブルトグルの挙動についてなのですが、
SpoilerAL修正パッチ適用の有無を問わず(デフォルトのSpoilerAL 6.1からの仕様?)、
ダブルリストの処理する内容を記述したリストファイルの書式、
 ",アドレス=バイト列" において、「アドレス」部分にアドレスコーディングの分割を使用すると、
正常に動作しないようなのです。(チェインファイル指定した場合はアドレスコーディング分割を使用しても正常動作します)
添付のSSG(1個目が6.1用、2個目が6.2用。対象プロセスはSpoilerAL.exe)で試したところ、いずれも結果は同じでした。(書換え結果は下記のとおり)
-----------------------
リストの テスト1 (アドレスコーディング分割使用 →正常動作しない) を選択した結果
00601F00-00601F2F: 30h(48)Byte [Windows ANSI]
Address : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF
00601F00 : 0A D0 D0 00 10 0A AA AA AA A0 00 00 00 00 00 00 ミミ ェェェ&#63728;
00601F10 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00601F20 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

リストの テスト2 (〃 使用せず →正常動作する) を選択した結果
00601F00-00601F2F: 30h(48)Byte [Windows ANSI]
Address : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF
00601F00 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00601F10 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00601F20 : FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 &#63731;&#63731;&#63731;&#63731;
-----------------------
バグではなく元々こういう仕様なのかもしれませんが。
なお、ダブルトグルでもアドレスコーディング分割を使用すると同様の結果となりました。(添付SSGで確認)

それと、ダブルトグルについて、SpoilerAL 6.1修正パッチ(2017.01.10)を適用して6.2用の添付SSG・2個目を試すと、
リストのテスト4からテスト6のどれを選択(チェック)しても
「モジュール 'WINMM.DLL' のアドレス 683B743B でアドレス 00000070 に対する読み込み違反がおきました。」
のようなエラー表示が出ます。
エラー表示は出ても、テスト5(アドレスコーディング分割は使用せず)は書換え自体は正常に行われるのですが、
チェインファイル指定したテスト6は書換え自体がされません。(6.1用では正常に書換えされる)
アドレスコーディング分割を使用したテスト4は、正常に書換えがされません。(エラー表示の出ない6.1用と書換え結果自体は同じ)

度重なるお願いで申し訳ありませんが、ご確認いただければ幸いです。
よろしくお願いします。

記事編集 編集
Re: SpoilerALの修正パッチ (No.156)
投稿日 : 2017/01/11(Wed) 23:13
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : GcRj9gLNbDo3c3ucmSgaR.
参照先
>>155 amateurさん
報告ありがとうございました。

>「モジュール 'WINMM.DLL' のアドレス 683B743B でアドレス 00000070 に対する読み込み違反がおきました。」
これはバグでしたので修正しました。
どうもです。

「アドレスコーディング分割」についてですが、
コードを読んだところ初めに見つかった「=」で分割しているようです。
しかしアドレスコーディングにも左辺代入の「=」があるので考えています。

※追記:

左辺代入の場合、1つ前の演算子は様々です。

';' アドレスコーディングの分割
'?' 三項演算子の真式の中での代入
':' 三項演算子の偽式の中での代入
'(' 括弧の中での代入
'[' 括弧と同様、アドレスやエンディアン反転など
'=' 多重代入および代入値を用いた複合代入

これらを認識するためには全ての演算子を認識する必要があります。
アドレスコーディングからマークアップの部分だけ引用して分離するプログラムを作成しています。
記事編集 編集
Re: SpoilerALの修正パッチ (No.157)
投稿日 : 2017/01/12(Thu) 01:05
投稿者 amateur◆kR..xsXL6RU
ID情報 : IA9.YStnxp1bqHNm8bNoG/
参照先
>>156 変態紳士さん
早速のご対応ありがとうございます。(早い!)
ダブルトグルのエラー表示がされなくなり、
チェインファイル指定した場合にも書換えが正常に行われるようになりました。

>コードを読んだところ初めに見つかった「=」で分割しているようです。
",アドレス=バイト列" や "アドレス=ONのバイト列/OFFのバイト列" の" = "(アドレスとバイト列の区切り)と、
右辺代入の" => "の" = "の部分や、左辺代入の" = " が誤認されるのが原因というわけですか。
右辺代入や左辺代入の場合、続けてセミコロン;でアドレスコーディング分割しますから
結果的にこんなことになるというわけですね。

右辺代入の=>だけなら=>を読み飛ばすようにすれば大丈夫そうに思えますが、
左辺代入の=は全く同じですから難しそうですね。
記事編集 編集
Re: SpoilerALの修正パッチ (No.158)
投稿日 : 2017/01/12(Thu) 04:33
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : wiV1gw0vQHsY9cKSTlNLa/
参照先
>>157 amateurさん
グループ内の要素におけるアドレスコーディングの「=(イコール記号)」分割に対応しました。
ダブルリストとダブルトグルが対象になります。
記事編集 編集
Re: SpoilerALの修正パッチ (No.159)
投稿日 : 2017/01/12(Thu) 21:48
投稿者 amateur◆kR..xsXL6RU
ID情報 : BzQoPf2VoRhTOHOvGP8Mv/
参照先
>>158 変態紳士さん
こんなに早くご対応くださってありがとうございます。
試してみたところ、ダブルリストとダブルトグルのリスト内で、
右辺代入(6.2では左辺代入も)&アドレスコーディング分割が正常動作するようになりました。
(代入&アドレスコーディング分割を2回使っても正常動作していました)

wcslen::等の実装で文字列書換えがしやすくなり、ダブルリストで文字列書換えすることが増えそうな気がするので、
リスト内で代入&分割を使えるようになってとても助かります。
いつも面倒なお願いに応えてくださって感謝いたします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.160)
投稿日 : 2017/01/14(Sat) 03:30
投稿者 amateur◆kR..xsXL6RU
ID情報 : 9v.qpVBz.wzFRtPUnVWWe0
参照先
変態紳士さん、いつもお世話になっています。
バグらしき挙動を発見したのでご報告させていただきます。
原因は分からないのですが、
Gears of Dragoon〜迷宮のウロボロス〜SSG(左記リンク先のRPG体験版でも動作すると思います)の、
「パーティメンバー」→「パーティメンバーのデータ」→(キャラ選択)→「スキルレベル」→「習得可能な全スキルのレベルを一括変更」に値を入力すると、
「SpoilerAL.exe は動作を停止しました」とエラー表示が出てSpoilerALが落ちてしまいます。(添付のスクショ参照)
(「キャラデータ」→(キャラ選択)→「スキルレベル」→「習得可能な全スキルのレベルを一括変更」でも同じ)

いくつか手持ちのSpoilerAL修正パッチを適用して試したところ、
「2016.12.20」「2017.01.08」「2017.01.10」は正常動作。
一方、
「2017.01.11」(>>156のダブルトグルのエラー表示修正時のもの)以降、
「2017.01.12」と最新の「2017.01.13」では上記のとおりエラーとなり、
「2017.01.11」以降のパッチでエラーとなるようです。

問題のSSGの該当箇所の記述は下記のとおりです。
--------------------------------------------------------
[subject]スキルレベル:dir
[define skillLv] {charAD};0xCE05B4B1=>hash;{AD2}
[define M0+4] Memory::0 +0x100 +0x[!($Val-1)*0x4!]
[funnel]ssl->skillLv_Funnel
[subject]習得可能な全スキルのレベルを一括変更【 '+' _mem, _{M0+4}, 4,num ,??,%d '+' 】/変更後のレベル/_:calc, _{M0+4}, 0, 99999, unsigned
[/funnel]
[undef M0+4]

--------------------------------------------------------
[group]skillLv_Funnel
use, _{skillLv};1=>num;{Num}, *[_0x2DBC :: *{ *+ 01 08 04000000 :: $4 [:{M0+4}:] $$ 00000000 *+ 01 04 *} *]
[/group]
--------------------------------------------------------

念のためRPG体験版をDLして試したところ、体験版でもSSGは動作しているようです(少なくともスキルレベルの項目は)。
ただし、「スキルカスタム」で1つでもスキルポイントを振らないと(「セット」→ポイント振る→「セット」で確定)、
スキルレベルの変更自体が機能しない(条件判定で弾かれる)ようです。

何度もすみませんが、ご確認のほどよろしくお願いします。

記事編集 編集
Re: SpoilerALの修正パッチ (No.161)
投稿日 : 2017/01/14(Sat) 22:05
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : GcRj9gLNbDo3c3ucmSgaR.
参照先
>>160 amateurさん
報告ありがとうございました。1行で直るタイプでした。

ですが、項目の下部に空白の行が連続しています。
これはGUIのバグかもしれないので調査を継続します。
と思ったら、これは任意の空白行だったのですね。
スクロールの視認性対策かと思います。

SSGのインデントがよく分からない状態ですが、表計算ソフトからの出力でしょうか。
自分用という意味もありますが、インデントを自動生成するソフトを作ってみようかと思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.162)
投稿日 : 2017/01/14(Sat) 22:45
投稿者 amateur◆kR..xsXL6RU
ID情報 : R28HjhnOb/5hpvjFClHi60
参照先
>>161 変態紳士さん
ご対応ありがとうございます。問題のSSGの該当箇所が正常動作するようになりました。
いつもお願いばかりで恐縮です。

>項目の下部に空白の行が連続しています
お察しのとおり、視認性対策なんです。
SSGの最下部あたりは、下位項目を開いたり閉じたりすると、何度もスクロールする必要があったりと、
見難いというか面倒なので、最下部に空白行があればマシなのではと入れてみましたが・・・

>SSGのインデントがよく分からない状態
自分でも適当すぎてよく分からないです(汗)
このSSGではリスト作成以外で表計算ソフトを使ってるわけではないのですが。
件のSSGのように長くなってくると(階層項目が一杯あったりして)何字分を字下げしていたか分からなくなってくるという・・・
なので最近はタブ使うようにしていますが。

インデントを自動生成するソフト、これは楽しみですね。
自分で適当にやってると、ご指摘どおり訳が分からなくなってきますので。
記事編集 編集
Re: SpoilerALの修正パッチ (No.163)
投稿日 : 2017/01/22(Sun) 18:57
投稿者 amateur◆kR..xsXL6RU
ID情報 : vGOHKTEe3.1tkOP83BsMV0
参照先
変態紳士さん、いつも大変お世話になっております。
先日アドレスネーミングに追加くださった「_fmt」について気になることがあるのですが、
"_fmt"を使用して、値がゼロとなる場合、「0」と表示されず、「エラー時の代替え文字列」が表示されるようです。
ゼロ以外の値になる場合は正常に表示されているようですが。
念のため、検証用のSSG(例によって対象プロセスはSpoilerAL.exe)を添付します。
お手すきの際にでもご確認いただければと思います。
頼ってばかりで申し訳ありませんが、よろしくお願いします。

追記;
添付SSGを差し替えしました。
_fmtの「list」「free_list」でも同様でしたので添付SSGに追加しました。

記事編集 編集
Re: SpoilerALの修正パッチ (No.164)
投稿日 : 2017/01/22(Sun) 20:48
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : wiV1gw0vQHsY9cKSTlNLa/
参照先
>>163 amateurさん
報告ありがとうございました。
修正しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.165)
投稿日 : 2017/01/22(Sun) 21:55
投稿者 amateur◆kR..xsXL6RU
ID情報 : vGOHKTEe3.1tkOP83BsMV0
参照先
>>164
変態紳士さん、ご対応ありがとうございます!
値ゼロでも正常表示されるようになりました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.166)
投稿日 : 2017/01/22(Sun) 22:35
投稿者 dipper◆LEFxdWWYR3c
ID情報 : Qkjahlf6vfHdq76vOBKS40
参照先
>>164 変態紳士さん

どうも、お久しぶりです。
パッチの修正ありがとうございます。
相変わらずの迅速な対応には感服いたします。

Meine Reise のSSGを投稿した時に_fmtの不具合に気付いていたのですが、すっかり報告を忘れていました。(汗)


>>165 amateurさん

_fmtの不具合の報告ありがとうございます。
ちょうど、Meine Reise のSSGに_fmtを使用していたので大変助かりました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.167)
投稿日 : 2017/01/29(Sun) 14:42
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : ywuVFvf1rd/Es0nZXCmhr1
参照先
2017/01/29
ツリー項目のフォントの初期値を"MS Pゴシック"から"MS ゴシック"へ変更

等幅なので数字の位置が揃います。
初期値なので SpoilerAL.exe を一度でも起動している場合は適用されません。
その場合は、[メニュー]-[表示]-[カスタマイズ]-[フォント設定]-[フォントスタイル]から変更するか、
"save\default.txt" を変更するか、"save" フォルダを削除すると変更されます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.168)
投稿日 : 2017/02/05(Sun) 21:40
投稿者 ユウちゃん
ID情報 : dSglJQUfDI2ylH.JB501/0
参照先
(2017.02.05)のパッチを当てたところいくつかのSSGが選択したとたんエラーが出ることなく落ちるようになりました。
どうもlist項目があるだけで落ちるようなんですが・・・

記事編集 編集
Re: SpoilerALの修正パッチ (No.169)
投稿日 : 2017/02/06(Mon) 04:54
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>168 ユウちゃんさん
報告どおもです。
修正しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.170)
投稿日 : 2017/02/08(Wed) 19:33
投稿者 dipper◆LEFxdWWYR3c
ID情報 : E/ZeIjWFP3ZY0xpivKSo31
参照先
>> 変態紳士さん

パッチの更新ありがとうございます。
まさかこんなに早くlistのio_fep対応が実装されるとは思ってもいませんでした。
list項目しかまだ確認していませんが、機能する事を確認しました。

嬉しすぎて言葉になりません。本当に感謝いたします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.171)
投稿日 : 2017/02/09(Thu) 03:15
投稿者 dipper◆LEFxdWWYR3c
ID情報 : E/ZeIjWFP3ZY0xpivKSo31
参照先
>> 変態紳士さん

<# #> を使用するとエラーが発生する箇所を見つけたので報告させて頂きます。
[subject]〜:dir で <# #> を使用してさらに <# #> 内に [\: \:] もとい \ を使用すると正常に機能しないようです。

パッチ(2017.02.09)で発生することを確認しました。
それと確認用のSSGを添付しておきます。

記事編集 編集
Re: SpoilerALの修正パッチ (No.172)
投稿日 : 2017/02/09(Thu) 04:14
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : nG/mvCFinj1g3rNhYTYMR/
参照先
>>171 dipperさん
報告どおもです。
直しておきました。

1時間きったけどピザの配達は30分らしいです。
ピザ屋の3輪バイクが倒し過ぎで転がらないか心配です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.173)
投稿日 : 2017/02/09(Thu) 18:21
投稿者 dipper◆LEFxdWWYR3c
ID情報 : WMmoGEgp/RazrCXsaE4fK1
参照先
>>172 変態紳士さん

早速の修正ありがとうございます。
正常に使用できることを確認しました。

> 1時間きったけどピザの配達は30分らしいです。
どちらも早すぎです。
それに比べ私は14時間って…

> ピザ屋の3輪バイクが倒し過ぎで転がらないか心配です。
裏を返せばそれぐらい倒さなければ曲がれないという事です。(テキトー)
記事編集 編集
Re: SpoilerALの修正パッチ (No.174)
投稿日 : 2017/02/09(Thu) 19:46
投稿者 七星◆y3el2XfkmCg
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
日々の修正お疲れ様です、今更ですがNot Defined Error!のままだと分からん!と思ったので
性懲りも無くFixAdjustByString.cを間借りしてサンプルをv141_xpでビルドしてみました
元々が自前のエラーNoすら破棄する場合もあったので、宜しくないねじ込み方の実装…

例によってタスクバーがZpoilerALになります、書き込み不能領域を項目とするSSGも同封しておきます

(適当に作った後でよく考えたらOnSubjectWriteErrorに入ったばかりならGetLastErrorもまだ有効かすら
 しかもここの文字列…ライトエラーイベントなのに読み込みエラーとか誤植らしきものも
 OpenProcessと[enabled]周りも整備しないと良くないし…なんだかMSの自虐ガイドラインを思い出しました)

記事編集 編集
Re: SpoilerALの修正パッチ (No.175)
投稿日 : 2017/02/10(Fri) 02:07
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>174 七星さん
どぉもありがとうです。
ほぼ、似たようなものを実装しました。

ただし、値の固定をすると稀にメッセージが別の物になる可能性があります。
記事編集 編集
Re: SpoilerALの修正パッチ (No.176)
投稿日 : 2017/02/10(Fri) 03:50
投稿者 七星◆y3el2XfkmCg
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>175 変態紳士さん
す、素早い…夜分遅くにありがとうございます
作られた時代からしてシリアル処理だろーと
深く考えてませんでしたが周期処理も有りましたね、浅慮極まる

ソースを追ってみて一見システムコールしなそうでも、スコープを抜ける時の罠もありましたか
TSSGActionListnerメソッド突入時で間に合うなら、合理的かつ通知しやすいかと思ったのですけど

…と早速で何ですが利用モードによってTSSGProcessAccessListner側のShowMessageとで2回出る罠もありました(元々
プロセスのオープンエラーや有効条件が偽でもエラー定数と流れてくるものの、TMainFormは一緒くたに処理
いっそのことモーダルダイアログは全廃してGuideFormへ流す…というのも微妙な感じになりますよね

2000の記事にあるならバルーンとか使える…?しても表示位置は…?じっくりコトコト煮詰めるべきか
そういえばSpoilerALにはステータスバーがアリマセンネ


追記:
TSSGActionListnerメソッド突入時にGetLastErrorする物も試作してみました
プロセスのオープンエラーと有効条件が偽の場合も整備してみましたが
GetLastError自体はここでも良好そうなものの、現在値もツリーに表示していて
有効条件が偽の項目があると読み込み時にもOnSubjectDisabledが呼ばれるので
エラーコードを上書きしてしまい個別処理した方が良さそうな雰囲気

ついでに「プロセスメモリのライトエラーイベント」で読み込みエラーと書かれている誤植の修正
"Not Defined Error!"でShowMessageが呼ばれるとコール先で破棄する実験(今はほぼ意味なさそう
バルーンは実装方法がよく分からなくて模索中…改めてクラスとBorlandで呼出規約がカオスですね

記事編集 編集
Re: SpoilerALの修正パッチ (No.177)
投稿日 : 2017/02/11(Sat) 05:30
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>176 七星さん
どぉもです。
実装しておきました。ネタは同じですが若干違うアプローチになりました。

バルーンですか・・・ 普通はWTLやMFCで書くけど。
前に使ったソースはタイマーを自前で用意するタイプだったと思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.178)
投稿日 : 2017/02/11(Sat) 07:18
投稿者 七星◆y3el2XfkmCg
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>177 変態紳士さん
Wow...随分様相が変わりましたね。MFCはファットなアレですね、WTLはまだ健在なのでしょうか?
Visual Studio 2017 RCのインストーラーでは「MFCとATLのサポート(x86とx64)」に加え、
いつの間にか「Visual C++ ATLのサポート」も増え、若干どういう事なのな感じになっていました

とりあえずdでもないやっつけですが、やれない事はないようだとバルーン版も作ってみました
しかしよく分からない事にMSDNではバルーン周りがMinimum supported Vistaとなっています
SDKヘッダを見るにIEバージョンに依存し、2000はIE5.01までで問題なさそうに見えるのですが。

モーダルダイアログのShowMessageから根こそぎバルーンなどに移行することで
通常モードのガイド無しだとCan't Write Memory!と併せて出てしまう問題も
個別に潰さなくてもバルーン内容が上書きされるだけで煩わしくなくなりそうですが
別のエラーが連続で出るような場合にはちょっとアレですかね…(あるのかな

ところで、[allocate]のLocalが機能していない気がします、BSWAP32('Loc')←これの所為でしょうか

記事編集 編集
Re: SpoilerALの修正パッチ (No.179)
投稿日 : 2017/02/12(Sun) 09:15
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>178 七星さん
それっぽいものを実装しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.180)
投稿日 : 2017/02/13(Mon) 05:14
投稿者 七星◆y3el2XfkmCg
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>179 変態紳士さん
ありがとうございます、Localの動作も確認できました。(電卓にテンキー入力だと一瞬で消えるような)

こちらは実験ということでShowMessage自体をShowToolTipにすり替え、SetTimerするものを。
なんとなく動いてますがDLLロードスレッドとShowMessageコールスレッドは同じなんでしょうか
>バルーンは、クリックされるか、問題が解決されるか、一定の時間が経過すると消えます。
先の自虐ガイドラインには斯様に書かれていますが、TTM_SETDELAYTIMEはヒットテスト限定でしょうし、
TOOLINFOにはNOTIFYICONDATAの様なタイムアウトも無いのでAPI側に用意されてるのか謎です
(Shift押下時にGetFocusから位置を調整しようとしたら状況でまばらになりますね…)

"最大値より大きい値は入力できません!"などは割と頻出するダイアログだと思うので
バルーンにすると結構快適になりそうですが、加えて入力値もクリアしてみるテスト…
本当は入力値を全選択して直しやすい様にしようと思ったらCalcButtonPushFuncはかなり面倒な事してますね
RAD Studio 2007のVCLドキュメントだとTEditにSelTextなるプロパティもあるようですが果たしてこの頃に実装されているのか
Publishedプロパティでないと実行時型情報がなくて分かりにくい…pdb欲しい

それと確か元々あったような不具合を思い出したので、そのSSGも添付しておきます
リスト抽出で全く同じリストをd_listに設定するとまるで読み込まれせん
パラメータが異なれば表示用だけは抽出できる様ですが、値リストが機能しません
リスト抽出をローカル指定にすると不思議と起こらないようです

記事編集 編集
Re: SpoilerALの修正パッチ (No.181)
投稿日 : 2017/02/13(Mon) 22:25
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : nG/mvCFinj1g3rNhYTYMR/
参照先
>>180 七星さん
それっぽい修正をしました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.182)
投稿日 : 2017/02/14(Tue) 20:39
投稿者 七星◆y3el2XfkmCg
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>181 変態紳士さん
OKしなくても次の操作に移れるだけで十二分に快適になりました
私の独断と偏見による思いつきに連日お付き合いくださって感謝の限りです
確認不足で申し訳ないですが、ShowMessageはエラーだけではありませんでした
時として情報が表示される事があったので添付のテキストに纏めておきます
この直後で子窓が出る時も一瞬で消えるようです、ここらフォーカスは面倒かも…

リスト抽出も修正してくださっった様で、FixSetSSGDataFileでしょうか
表示用は問題なくなったのですが、値リストが妙なのは私の環境ですか?
具体的には>>180のsameとdiffで1行目のみ正常、2行目以降は反映されません
4,12,16行目のみSSG Error. No List-File!となる以外はエラーすら出ません
フゥー…元ソースの問題点が分からない上に修正版も何してるのか分からないorz

最後に機能的なネタを一つ…対象プロセスをDLLから指定するのはお行儀悪いですかね
実用的にはUnity等の実行ファイル名が異なるも特有DLLをロードするエンジン向け汎用に。
機会は無いかと思われますがrundll32.exeとかにも時として有用?(起動引数見るべき?
SSG側は[process]:mono.dllとかファイル名無効文字を接頭辞にするだけでも済みそうですが
実装側で全プロセスの全モジュールを列挙しなければならなくなって嫌らしいかすら
メインウィンドウのクラス名やタイトルとかの方がまだマシ…?

記事編集 編集
Re: SpoilerALの修正パッチ (No.183)
投稿日 : 2017/02/15(Wed) 23:19
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>182 七星さん
本日のそれっぽい修正です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.184)
投稿日 : 2017/02/17(Fri) 00:32
投稿者 七星◆y3el2XfkmCg
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>183 変態紳士さん
ありがとうございます、d_listの両方でリスト抽出しても正常な書き込みが確認できました
今ではお陰様で[trace]や[allocate]、$Relも実装されているので更に応用が広がりそうです
「手打ちが面倒だから」という理由では使用しない方がよい?アーアー聞こえない
記事編集 編集
Re: SpoilerALの修正パッチ (No.185)
投稿日 : 2017/02/19(Sun) 11:38
投稿者 七星◆y3el2XfkmCg
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
先週の今週で失礼します。>>182からアレやコレや悩んだあげく、やはりモジュールはナァ…と
ウィンドウクラス名を調べていたら下記のように謀ったかの如く私的には十分だったので


○ARCGameEngine:ARCGameEngine

△RPGツクールXP/VX/VX Ace:RGSS Player
世代が違ってもクラス名が変わらない

×RPGツクールMV:Chrome_WidgetWin_0、Chrome_SystemMessageWindow、Base_PowerMessageWindow
Chromeのクラス名そのままなので割と致命的

○Unity:UnityWndClass
起動設定時にも、表示されていないが存在している

△WOLF RPGエディター2:起動中です、この処理にはしばらく時間がかかることがあります
開発中のVer2.20βではゲームタイトルが頭に挿入されてしまう(↑どういうクラス名ですか

○吉里吉里2:×TApplication、TTVPMainForm、TTVPWindowForm
こいつもVCLかっ!?オーナー名はSpoilerALと被るが、それ以外は固有名?


[process]<ウィンドウクラス名> のようなファイル名にできない文字で始め、TProcessCtrl_FindProcessにて
if(nProcessNameLength > 2 && ProcessName->_M_start[0] == '<' && ProcessName->_M_finish[-1] == '>') {
ProcessName->_M_finish[-1] = 0;
HWND hWnd = FindWindowA(ProcessName->_M_start + 1, NULL);
if(!hWnd || !GetWindowThreadProcessId(hWnd, &dwProcessId)) dwProcessId = 0;
ProcessName->_M_finish[-1] = '>';
}

といった具合のウィンドウクラス名によるプロセスID解決を実装するのは如何でしょうか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.186)
投稿日 : 2017/02/20(Mon) 00:27
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>185 七星さん
どぉもです。
同じ物(コピペ?)を実装しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.187)
投稿日 : 2017/02/20(Mon) 02:16
投稿者 七星◆y3el2XfkmCg
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>186 変態紳士さん
採納感謝します、Unityゲームを一貫して[process]<UnityWndClass>のみで捕捉できる様になりました
メモリ・プロセス→対象プロセスの追加でもウィンドウクラス式が有効になりますし、こうかは ばつぐんだ!

書式についてもこのままで問題ないでしょうか? [process]タグなら複数定義もタイトルセレクト表示もそのままでいけますし
ウィンドウクラス名に禁止文字はなさそうなので、エスケープ処理が要るパラメータ分割は…とそんな提案になりましたが。

特有モジュール指定は概ねナンセンスとして、ウィンドウテキストもエクスプローラーがフォルダ名ですしクラス名併用なら時として有用?
(DL版兼用…は[process]二つで済むケースが多そう。マルチプロセスなど被るファイル名向き?Verやゲーム進行でテキストが変わる場合は…('A`)
他に対象プロセスを一意に指定できる効率的なアプローチがあったら、追加実装するとき妨げにならないか少し心配になったり
ワイルドカードは廃止?されたようなので、まだ " * / : ? | なども接頭辞や区切り文字として使えるので余裕でしょうか

ところで、ProcessNameへのイメージ名差し戻しは行わなくても良いものですか?
attachedProcessNameはアドレス→アドレス補正の試作などのラベルにしか使われてなさそう…?
HWNDをNULL初期化しておいて検出されていたらEntry->szExeFileから割り当てとかで済むのかしら
記事編集 編集
Re: SpoilerALの修正パッチ (No.188)
投稿日 : 2017/02/20(Mon) 23:01
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>書式についてもこのままで問題ないでしょうか?
特に問題無い気がします。
[process] が複数ある場合、どれか1つが対象になる事を明示できるのでタグ名も現状のままで。

>特有モジュール指定
>クラス名併用なら時として有用?
実装してみました。
CriticalSection の付近に処理を加えると遅くなる気配があったのですが、
実際の所はよく分かりません。
待機中のGUIが重かったので一度は取り換えた場所の機能追加です。

多分、ロード済みモジュールだけの指定だと遅いかも。
ダイナミックロードも対象なのでPEヘッダは使わないとして、
ネイティブAPIを除けば CreateRemoteThread が速いだろうけど・・・
(プロセスが見つかるまでの待機中にディレクトリ項目を展開する場面でGUIの速度が変わります)

>ところで、ProcessNameへのイメージ名差し戻し
現状の差し戻しを行わないコードが正しいと思います。
この差し戻しですが、元々のソースではバグです。

ワイルドカードで一度見つけたものは二度目はイメージ名に変えて高速化するという意図だと思います。
TProcessCtrl::FindProcess を呼び出している唯一の場所は TProcessCtrl::Attach で
ゲームを再起動したときに再び呼ばれる関数です。
(TProcessCtrl::Attach が正常に終了した後は TProcessCtrl::Entry の変数でアクセスします)
このイメージ名差し戻しの方法は、対象プロセス終了後に別の実行モジュールを起動するとワイルドカードでは認識しない不具合を含んでいました。

現在のソースで差し戻しをする意味はありません。
イメージ名の大文字小文字が実際の名前になって_mbsicmpが速くなるかもしれない(体感できるわけがない)程度です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.189)
投稿日 : 2017/02/21(Tue) 01:17
投稿者 七星◆y3el2XfkmCg
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>188 変態紳士さん
嗚呼、やはりプロセス毎にモジュールを列挙して比較する実装になりますよね
確かにPID選別からの追加条件ならば実用的ですね、単純指定時は然もありなんな所ですか
(というかむしろRGSS系RPGツクールとかヒープ列挙が激遅…ToolHelpの仕様でしょうか
 うさみみもToolHelpを使うなと言うし、HEAPLIST32だけなら速いがdでもないトラップ?)

クラス名併用についてはFindWindowAのウィンドウテキストlpWindowNameを想定してました
DL版の一部で実体がmain.binになるという話から、クラス名+タイトルの方が一意的かな?と
もっともタイトルにVersionやゲーム内日付が入ったりで、ころころ変わり使い物にならない場合も…
手元でWNDCLASSEXA.lpszClassNameにASCIIコード総当たりのRegisterClassExAを繰り返してみたら
空文字でERROR_INVALID_NAMEが返る以外は通ったので、区切り文字エスケープ必要かって感もありますが
>SetWindowText 関数は、タブ文字(ASCII コード 0x09)の展開は行いません。タブ文字は、縦線文字(|)として表示されます。
この辺りの制約から決めても良さそうですか?そういえば通常はタブ文字もファイル名にできませんね

attachedProcessNameはそういう意図だったんですね、6.0のソースコードを眺めていたら
値渡しされた引数の参照渡しに割り当てられてたので↓にしか影響ないものかと思ってました

記事編集 編集
Re: SpoilerALの修正パッチ (No.190)
投稿日 : 2017/02/21(Tue) 21:00
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>attachedProcessName
おや?、よく見たらそんな事になってたんですね。
間違っていたようなので修正しました。

>ToolHelp
ループするとダメな人が入ってるのかも。
少し速いものに交換してみました。

>ERROR_INVALID_NAME
>SetWindowText
テスト中ですが微妙に変更しました。
しかし、読みやすいかと言われればそうでもないので・・・
(変更の可能性があります)
記事編集 編集
Re: SpoilerALの修正パッチ (No.191)
投稿日 : 2017/02/22(Wed) 05:13
投稿者 七星◆y3el2XfkmCg
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>190 変態紳士さん
ありがとうございます、急に本格的な実装になってきてドッキリ
GetWindowTextを使用して比較する場合は前方一致で如何でしょう?
「<ウィンドウクラス>ウィンドウテキスト」くらいに考えていたら
組み合わせも考慮するとなると、そう単純には行きませんね…
1行でアレコレ指定だとコマンドラインオプションの様になっていくのでしょうか

いっそCommandLineToArgvWで解釈できる形にするのはアリですかね?
「[process]?Notepad "*無題 - メモ帳" :kernel32.dll」の様に「/」は「/op:」「/op=」とか汎用に残し…
(ANSI版ないけど、半角スペース含んでたプロセス名を括らないといけなくなるのは
 ファイル名禁止文字で始まらないパラメータ同士をスペース結合すれば互換性保てる?


モジュールは単純指定してもToolHelpで許容範囲かと思われますが
それとは別にFindProcess後のTProcessCtrl::LoadHeapList(void)が
特定プロセスで元々もたつく様です(RPGツクールXP/VX/VX Ace等)

MSDNのサンプルをGetCurrentProcessId()からRGSS PlayerのPIDにしてみても
やはり非常に時間が掛かります、THeapListData::GetHeapEntryVec(DWORD ProcessID)を見ると
Heap32Next()せずに打ち切っているようですが、Heap32First()だけでもワンテンポ遅れます
HEAPLIST32.th32HeapIDからHEAPENTRY32.dwAddressを算出できればHEAPLIST32取得だけで済むのでしょうか?
//※このdo{}while()ブロックは、WindowsXP上で 異常に時間がかかる場合があったので、一時カット。
これも然りNT系には宜しくないのですかねToolHelp….NET Frameworkでも9x用の如き扱いですし
(うさみみのヒープリスト詳細はDLL食わせてHeapWalkしてるみたいですね…ALで介入は性に合わなそう)
記事編集 編集
Re: SpoilerALの修正パッチ (No.192)
投稿日 : 2017/02/23(Thu) 00:23
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>190 七星さん
>GetWindowTextAを使用して比較する場合は前方一致で如何でしょう?
なるる。それで行こうかと思います。

>1行でアレコレ指定だとコマンドラインオプションの様になっていくのでしょうか
そこから見直してもいいのですが、かなり手前の処理に介入するような気がしています。
簡単ならいいのですが。

>CommandLineToArgvWで
>「[process]<Notepad> "*無題 - メモ帳" :kernel32.dll」の様な
過去のSSGも読み込むべきなので、クラスはともかく実行ファイルの指定では引数の開始を表す文字を決めて、
その区切り文字より後ろの文字列をCommandLineToArgvWに渡す事になると思います。

この引数の仕様はドキュメントこそ無いものの、
ダブルクォーテーションが2つ連続する場合に1文字のダブルクォーテーションとする事になっているようです。
(VisualC++6.0 の C-RuntimeLibrary [libc*.lib] はこれにバグがありました)

どちらにしてもエスケープ文字の代わりは必要になってきます。
HTMLのように <Notepad title="無題 - メモ帳" module=kernel32.dll>
実行ファイル指定では notepad.exe<module=kernel32.dll> のような書き方とかも考えましたが、
コードが面倒になると思ったり。

コードは "source\SpoilerAL-winmm.dll\EditBinEx\crt\CommandLineToArgvW.h" がUNICODE版で互換の物ですが、
ANSI版のソースもハードディスクにあったはずですので必要になればどうにかなります。

>HeapWalk
PEB構造体のメンバは公式のドキュメントに含まれていないので、
CreateRemoteThread でコードインジェクションのテストをしてみましたが、
高い誤検出率を誇るセキュリティソフトが削除してしまいました。
たぶん誤検出されない方法で実験してみます。

と思ったら、グローバルフックはウィンドウがないと注入できない様子。
.Netは検出自体しないようなので特殊なパターンで書いたらセキュリティソフトの誤検出を回避できる?

※追記

>「L"a \"b\\\"c\" d"」が「a/b"c/d」ではなく「a/b\c d」
"" → " でして
\" は " ではないです。(円記号はディレクトリにも使われるので、これは仕様通り)
通常の連続しないダブルクォーテーションは間にある空白を区切りとして扱わない意味で文字としては消えます。
(ゲイツさんがBASIC好きだったのを思い出しました)

コードインジェクションの方は一応成功しましたが、
GetModuleHandleA("kernel32.dll") のハンドルから PAGE_EXECUTE_READWRITE の領域に複製して、
CreateRemoteThread のアドレスを引越しさせると誤認識しないようです。
ただ、3件程度のヒープハンドルで memcpy を含めてループしてみると Heap32ListFirst(Next) の4.5倍の時間になりました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.193)
投稿日 : 2017/02/23(Thu) 07:28
投稿者 七星◆MH.ms4.V3i2
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
安易すぎたのと字面が面白くなかったのでトリップを変えました

>>192 変態紳士さん
>その区切り文字より後ろの文字列をCommandLineToArgvWに渡す事になると思います。
確かに半角スペース混入を補正するよりは、そちらのほうが面倒がなさそうですね

コマンドラインのエスケープ処理は妙な覚えもありましたが、明文化されてない文法もありましたか
既に規格化?されAPIも用意されてるものなら実装もまとまりやすいかと愚考してみたり

しかしCommandLineToArgvW(HANDLE, const wchar_t*, int*)はなんだか挙動が異なる気も…
「L"a \"b\\\"c\" d"」が「a/b"c/d」ではなく「a/b\c d」となったり、ここらが当時との環境差でしょうか
結局ワイド文字が要る場面があるなら最初に変換してと思いましたが、まぁその辺はなんとでもなりますか

ヒープの方がややこしそうですね、HNumber::さえ保てれば良いものやらどうか
やはりCreateRemoteThreadは誤検出とかも起こりますか…ちょっと躊躇われますね、SSG読み込むだけで対象にスレッドが走るのも
.NETは除外されていたり、DllImportのような実行時インポートは対象でなかったりするのでしょうか


※追記への追記
>"" → " でして
それは承知しているのですが、MSDNにはCommandLineToArgvWだと引用符が続かない場合を除き
>(2n) + 1 backslashes followed by a quotation mark again produce n backslashes followed by a quotation mark.
とも書かれていて、実際Win32APIのCommandLineToArgvWは最初のパラメータ以外なら\"を"と解釈するようで…
これはC++ コマンド ライン引数の解析とも同じ解釈の仕方ではないでしょうか
もっとも、Win32APIはWin32APIで「L"a \"b\"\"c\" d"」が「a/b"c d」と妙な気もするのですが。

ヒープは元より遅くなると本末転倒ですね…PEBと介入以外ではやはりToolHelpしかないのでしょうか
th32HeapIDはToolHelpでしか意味がない様な事が書かれていますが…するとHEAPLIST32からはHeap32First以外道がなくなりますよね
記事編集 編集
Re: SpoilerALの修正パッチ (No.194)
投稿日 : 2017/02/23(Thu) 22:46
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>193 七星さん
>ToolHelp
ToolHelpもそうですが最適化されないBorlandC++Builder6のSTLも怪しいので、
TProcessCtrl::LoadHeapList を取り換えてみました。
APIはとりあえず現状のままです。

ツクール系でヒープが重そうなソフトが入ってないので速度を試すような事はしていません。

>CommandLineToArgvW
なるる。いつの間にか変わっていたのですね。(libcからみれば)
しかしながら、変更されるという事は定まったものとも言い切れず・・・
これは似たようなコードで代用する方がいいかもです。
(と思ったけどVisualStudio2005でも同じ様子、バグが無ければいいけれど)

>.NETは除外されていたり
どこか遠い国の人が訴えてくれないかと思ったり。
誤検知を突破しても誤検知率が向上するだろうし・・・
本日は入国審査をクリアしたところで終了です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.195)
投稿日 : 2017/02/24(Fri) 07:41
投稿者 七星◆MH.ms4.V3i2
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>194 変態紳士さん
お疲れ様です、失礼…確認できていませんでしたか、DLsiteの去年間ランキング上位とかポピュラーなの見繕ってみると
Succubus Rhapsodia(これはXPかな?)が体験版タイトル画面から既にプロセスオープンで待たされました
しかし同程度のROBFEOY(VX Aceかしら)体験版は体感出来るレベルではなかったので総サイズはほぼ関係ない?
蛇足ですがSTAND-Mxもプロセスのヒープ情報を分析中で長時間固まる同じ傾向を示すんですよね
RPGツクール以外でもそういった物があったような記憶があるのですが失念しました(WOW64とかCPU、OS由来ではないよな…?

やはりネックはHeap32First()でしょうか、if文内のheapListData操作をコメントアウトしても変化はみられませんでしたが、
if (FALSE && Heap32First(〜とするだけでSSGを開いてから項目が表示されるまでの時間がまるで異なりました
SSGの記述量に関係なく、アドレスネーミングや現在値の表示で、SSG開いてすぐプロセスオープンしようとするものなら
対象をRGSS Playerにするだけで何でも良いようです、体感的にはXP>VX>VX Aceな感じもしますが、ヒープの細切れ具合でしょうか


CommandLineToArgvWは変わったのでしょうか…?""はOSのコマンドラインパーサー云々によるものに当たるのだかよく分かりませんが
それ抜きでも最初のプログラムパス用と残りの引数で\の解釈は異なるみたいですね…頭に半角スペースを付けて渡すというのも何だかアレ
記事編集 編集
Re: SpoilerALの修正パッチ (No.196)
投稿日 : 2017/02/25(Sat) 00:02
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>Heap32First
何の根拠のない推測ですが、
Heap32First は呼び出された時点で全件列挙し CloseHandle でバッファの解放を行っているのではないかと、
その列挙時に付属の情報をどれだけ蓄積しているかで速度に影響が出ているかも?しれない。
(kernel32.dll のAPIが遅い理由はそれほど多くないと思いまして)
飽くまで推測です。

CreateRemoteThread + HeapWalk でナントカ動作しているものを添付します。
微妙に誤検出が怖いのでスレッドトップは後回しです。

>CommandLineToArgvWは変わったのでしょうか…?
CommandLineToArgvWは使用頻度の低いAPIで、不具合が含まれているであろうという予想から互換の関数を検討しています。

>""はOSのコマンドラインパーサー云々によるものに当たるのだかよく分かりませんが
コンソールに限ってはコマンドラインパーサーに該当するAPIはありません。
それぞれのプログラムが内包するlibcの解釈(C言語ではmain関数に入る前の初期化ライブラリ)でパーシングします。
古いVisualC++にはlibc(CRT)のフルセットのコードが含まれていましたが、現在はフルセットではないのでソースがありません。

検討中です。ですが今回もAPIではなく変な物をくっ付けるかもしれません。

※用事が無くなったのでファイルは削除
記事編集 編集
Re: SpoilerALの修正パッチ (No.197)
投稿日 : 2017/02/25(Sat) 09:15
投稿者 七星◆MH.ms4.V3i2
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>196 変態紳士さん
早速試してみました、が…うちの環境(Windows7 SP1 64bit※全プログラムでDEP有効、セキュリティソフトやDefenderは無効)では
「モジュール 'WINMM.DLL' のアドレス 0F233270 でアドレス 76141000 に対する読み込み違反がおきました。」
と出て失敗、どうにもkernel32.dll領域の一部がState = MEM_RESERVEでProtect = 0みたいなのでモジュール複製を

MEMORY_BASIC_INFORMATION mbi;
size_t dst = (size_t)hKernel32Clone - (size_t)modInfo.lpBaseOfDll;
for(size_t lpAddress = modInfo.lpBaseOfDll; lpAddress < (size_t)modInfo.lpBaseOfDll + modInfo.SizeOfImage; ) {
if(VirtualQuery(lpAddress, &mbi, sizeof(mbi))) {
if(mbi.State == MEM_COMMIT) memcpy(dst + (size_t)mbi.BaseAddress, mbi.BaseAddress, mbi.RegionSize);
lpAddress += mbi.RegionSize;
} else lpAddress += 0x1000;
}


としてリージョンごとに行ったら機能しました。(こんなスキャン方法で良いのだろうか…ところでntdll.libがない…のはv141_xpだけか)
ToolHelpとは雲泥の差です、アドレス→アドレス補正の試作から「対象プロセスの、ヒープ領域を取得」においても固まる事なく一瞬でした
懸念はやはりお行儀が宜しくない事でしょうか…そういえばToolhelp32ReadProcessMemoryとか如何にも効率の悪そうな関数もありましたね

>それぞれのプログラムが内包するlibcの解釈(C言語ではmain関数に入る前の初期化ライブラリ)でパーシングします。
なるほど、そこがCライブラリが介入する部分ですか、なんだかコマンドプロンプトの段階からも含めると解釈がこんがらがってきました
私としてはウィンドウクラスやらの書式は白紙でも構いませんので、どうぞ実装しやすい方法でよろしくお願いします
記事編集 編集
Re: SpoilerALの修正パッチ (No.198)
投稿日 : 2017/02/25(Sat) 23:28
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>197 七星さん
>リージョン
どうもありがとぉです。これで環境依存しなくて済みます。
同じものを組み込みました。

>ウィンドウクラスやらの書式
実際にキーボードをペチペチするとすぐに出来てしまいました。
アッサリしすぎているので逆に不安だったり。

>ntdll.lib
こちらでは Windows SDK (Platform SDK) の 8.0 と 8.1 に含まれていました。
Windows Driver Kit (WDK) では当然のように含まれていますが、以前の Platform SDK には無いです。
個別でインストールした覚えがないので、Visual Studio のカスタムインストール後のアップデート(オプションを含む)なのかな?

>ToolHelpとは雲泥の差
との事ですので、
奇妙なコードですがスレッドトップへ移行しました。

まだ検証は不十分ですが有難うございました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.199)
投稿日 : 2017/02/26(Sun) 19:43
投稿者 七星◆MH.ms4.V3i2
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>198 変態紳士さん
お疲れ様です、なかなかに素敵な塩梅です。コマンドライン由来ということで<RGS"S P"layer>としても良いわけですね
パラメータごとに括るというよりは、クォート内だと半角スペースをセパレータとして認識しない、と捉えるべきでしょうか
コマンドライン風だとクラスも単一接頭辞の方が?とも思いましたが、プロセス名とは排他ですし<>のままで良さそうですね
ウィンドウクラス+ウィンドウテキスト前方一致は重宝しそうです。

ntdll.libはSDK8以降だったんですね、10.0.14393.0を入れてありますが、ツールセットをXPにするとSDK7になる所為でした


ちなみに実装をお願いしている間、No.40のfree_list形式なグループの使い回しについて
d_listで値リストを数値に限定しなければ事足りるのではないか、的なサンプルが出来たので提出しておきます

  • もともと行が「書き込む値」のみと判別されるパターンにのみ適用
  • 数値解釈が行頭のみで終わっても、0扱いにせず途中まで解釈できた値とする
  • strtoul()で行うので書き込む値にLONG_MAXより大きい値を指定できなかった問題も解決
  • 4バイト未満で負数を指定した場合、読み込み時に符号拡張されないのでリストとマッチしない問題の解決
  • リスト値に対して入力値への演算を行うことで、実質的に入出力変換属性を適用する(使われない出力値への演算
  • 表示用リストにもfree_list形式を使っても見やすいように、メモを表示するときに使用するフォントをリストにも適用する

従来は数値以外が混入していたら0と評価されていましたが、この辺り仕様としては未定義の部類?で互換性は失われないと思いますが…
free_list使い回し以外にもリスト値の後ろへコメントを入れられる様になるかなと副次効果も期待、strtoul.asmは数値以外が混じると妙な気が
(行まるまるコメントはStatusVecを調整してもよさそうだけど、アドレスネーミング側はそのままだと0評価かな…こちらも符号拡張されない


そういえば…[replace]のオフセットは取得できても、一括やダブル系といった
offset項目のオフセットはアドレスコーディングで取得できませんでしたよね?
OffsetAddressはローカル変数ですし…TSSGSubjectならParsingまで渡ってくるので
GetAddressStr()の解析結果を保持しておきアクセス方法を用意すれば良いのでしょうか
(一般項目でもアクセスアドレスを取得できれば[funnel]なども[replace]掛けなくてよくなる?
 必要になった時だけ遅延取得にしないとオーバーヘッドになったり再帰ループするかな…

記事編集 編集
Re: SpoilerALの修正パッチ (No.200)
投稿日 : 2017/02/27(Mon) 17:09
投稿者 どんたこす
ID情報 : VooXe7GNH9HjnHlxTm6Z9.
参照先 https://adult-game-cheat.rick-addison.com/archives/introduction.html#SSG-2
どこに書けばいいのか迷ったのでここで投稿させていただきます。
SpoilerALの最新パッチをあてると管理人さんが公開しているRPGツクールVX Ace汎用SSGが起動しなくなる現象が起きています。
使用するときはwinmm.dllを消せば問題ないのですが、一応書き込んでおきます。

ページ下部12番にssgがあります。
記事編集 編集
Re: SpoilerALの修正パッチ (No.201)
投稿日 : 2017/02/27(Mon) 19:01
投稿者 dipper◆LEFxdWWYR3c
ID情報 : l2qTRzoipE2HvASxfGieV0
参照先
>>200 どんたこすさん

横から失礼します。

元々「RPGツクールVX Ace汎用SSG」はメモリ消費の激しいSSGです。
もしかすると「RPGツクールVX Ace汎用SSG」は修正パッチと相性が悪く、
修正パッチの適用前以上にメモリを消費してオーバーフローを起こしているのかも知れません。
一応の解決方法としては「アダルト同人RPG改造館」のFAQにも記載されていますが、SSGを下記の様に変更すれば解決するかも知れません。
もし、見当違いでしたら申し訳ありません。


[group]item
[repeat]Game->item_ssr,0,999,1
[/group]

[group]weapon
[repeat]Game->weapon_ssr,0,999,1
[/group]

[group]armor
[repeat]Game->armor_ssr,0,999,1
[/group]



[group]item
[repeat]Game->item_ssr,0,500,1
[/group]

[group]weapon
[repeat]Game->weapon_ssr,0,500,1
[/group]

[group]armor
[repeat]Game->armor_ssr,0,500,1
[/group]


■追記■

私の環境では変更前の「RPGツクールVX Ace汎用SSG」はオーバーフローしているのか起動できませんでした。
そこで試しに「RPGツクールVX Ace汎用SSG」をSpoilerAL ver 6.2に対応させ、[define]を使用した所、メモリ消費が17Mほどで起動できました。
サンプルとしてSSGを添付したかったのですが、改変したSSGを添付しいいのか明記されてなかったので見送らせて頂きました。

とりあえず手順をテキストファイルに記載してみました。

記事編集 編集
Re: SpoilerALの修正パッチ (No.202)
投稿日 : 2017/02/27(Mon) 20:22
投稿者 どんたこす
ID情報 : VooXe7GNH9HjnHlxTm6Z9.
参照先
>>201 dipperさん
その方法で変更したら無事起動するようになりました。
ありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.203)
投稿日 : 2017/02/27(Mon) 21:00
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : zarxCQ/PDFa6UQW6JxMqp1
参照先
>> No.201 dipperさん
SpoilerAL ver 6.2の対応例をご教示いただきありがとうございました。

item_baseもweapon_baseもarmor_baseもやってることは同じなので
item_baseだけでよさそうですね。

SpoilerAL ver 6.2への対応を前向きに検討したいと思います。

【追記】
[define item_base]@Game->address_base
(中略)
[undef item_base]

[group]address_base
(中略)
[/group]

みたいな書き方はできないのでしょうか?
疑問に思ったので質問させていただきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.204)
投稿日 : 2017/02/27(Mon) 23:25
投稿者 dipper◆LEFxdWWYR3c
ID情報 : l2qTRzoipE2HvASxfGieV0
参照先
>>202 RICK(管理人)さん

>[define item_base]@Game->address_base

試した限りでは機能しないようでした。

[group]address_money などの様に改行したいと言った事でしょうか?
そうだとしたら下記の様に末尾に"\"を挿入すれば改行出来たはずです。


[define item_base][.0x00.]=>tmp;\
[:$tmp+0x04:]=>modulo;\
($modulo!=0)*$modulo=>modulo1;〜(中略)〜


ただ、item_baseの末尾に"\"を使用すると何故かbase値が算出出来なかったですけど…
記事編集 編集
Re: SpoilerALの修正パッチ (No.205)
投稿日 : 2017/02/27(Mon) 23:35
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>199 七星さん
strtoul.asmの修正をしました。

>free_list形式なグループの使い回し
各リスト毎に解釈が違いますから、現状の仕様の隙間を探す事になりますよね。
ただ、それを実行するほどの気力が・・・

>>200-204 どんたこすさん、dipperさん、RICK(管理人)さん
調べてはみたのですが、メモリの使用量が大きいのでコケているはずの場所に辿り着けませんでした。

>どんたこすさん
報告どぉもです。

>メモリ消費が17Mほどで起動できました。
dipperさん、そこまで減るんですね。驚きました。
しかし落ちなくなって修正対象なのかどうか。

>RICK(管理人)さん
グループを参照する機能が速くないので・・・ (メモリも圧迫気味)
それが出来たらテキストの置換で修正できるという事でしょうか。

>ただ、item_baseに末尾に"\"を使用すると何故かbase値が算出出来なかったですけど…
先ほど修正してみましたが、どうでしょうか?

>ただ、下記の様に"[.0x00.]=>tmp;\"のみに"\"を付けて試しましたが「0x」の解析エラー。と出るようです。
すみませんが、この機能はSSGファイルがバイナリデータとして完全一致していないと検証できません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.206)
投稿日 : 2017/02/28(Tue) 00:38
投稿者 dipper◆LEFxdWWYR3c
ID情報 : l2qTRzoipE2HvASxfGieV0
参照先
>>205 変態紳士さん

早速の対応ありがとうございます。
ただ、下記の様に"[.0x00.]=>tmp;\"のみに"\"を付けて試しましたが「0x」の解析エラー。と出るようです。

[define item_base][.0x00.]=>tmp;\
[:$tmp+0x04:]=>modulo;($modulo!=0)*$modulo=>modulo1;〜(中略)〜

■追記■

>>205 変態紳士さん
>すみませんが、この機能はSSGファイルがバイナリデータとして完全一致していないと検証できません。

>>201で言った手前あまりファイルを添付したくは無かったのですが、確認用として期間限定でSSGを添付します。
それとタイトルを戻したら(識別用に変更していた)「0x4」の解析エラー。とでました。

>>207 変態紳士さん
早速の反応ありがとうございます。
添付ファイルは削除しました。

動作確認をしたゲームは何故か未だに削除していなかったWorldBreak2体験版です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.207)
投稿日 : 2017/02/28(Tue) 00:38
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>206 dipperさん
再度修正を行いました。
微妙に当てずっぽうです。

SSGファイルは受け取りました。ありがとうございました。
「RPGツクールVX Ace」のゲームが無いという事態に陥っていますが、
何とか確認してみます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.208)
投稿日 : 2017/02/28(Tue) 01:03
投稿者 七星◆MH.ms4.V3i2
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>205 変態紳士さん
ああいえ、free_listを使い回すと言ったものの
d_list以外へは初項+公差が前提ですから実装は難しいというかナンセンスかなと思ってます
なので>>199の実装だけなら実質互換性を維持しつつ楽な実現法ではないかなというお話です
提案者の意向にそう形かは解りませんが。
記事編集 編集
Re: SpoilerALの修正パッチ (No.209)
投稿日 : 2017/02/28(Tue) 01:10
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>206 dipperさん
確認できました。(ので直しておきました)
ふりーむの一番上にあった伝説のチョコレートに対応しました。
迅速丁寧な取引でした。やふ億ポイントを差し上げます。

>>208 七星さん
なんだか凄そうです。
まだ全部は確認出来てなかったりしますがソースを読んでみます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.210)
投稿日 : 2017/02/28(Tue) 01:32
投稿者 dipper◆LEFxdWWYR3c
ID情報 : l2qTRzoipE2HvASxfGieV0
参照先
>>209 変態紳士さん

早速の対応ありがとうございます。
"\"が機能する事を確認しました。
それと、複数"\"を使用しても機能する事も確認できました。


>>変態紳士さん

ただ、残念なことにメモリ消費が約200Mで10倍以上消費する結果になりました…まあ以前は異様に少なかった気がしますけど。
メモリ消費を確認したのは別のSSGだった様で、お騒がせして申し訳ありませんでした。
記事編集 編集
Re: SpoilerALの修正パッチ (No.211)
投稿日 : 2017/02/28(Tue) 06:38
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : zarxCQ/PDFa6UQW6JxMqp1
参照先
>>dipperさん 変態紳士さん

”\”による改行の修正ありがとうございます。
わざわざお付き合いくださいましてありがとうございます。


[define item_base]@Game->address_base
(中略)
[undef item_base]

[group]address_base
(中略)
[/group]

上記のような書き方をしたいのは理由があります。

@コードを1行で書こうとすると横長すぎて気持ち悪い。
A\を使って改行してもコードが長すぎるのですっきりとしない感じがする(特にコードの終端で閉じる要素が使えない点)
Bできればコードを1つの関数として独立させ必要に応じて参照する感じにしたい。

私の美学がわがままといえばそれまでですが、上記の要素を満たした機能ができれば幸いです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.212)
投稿日 : 2017/02/28(Tue) 18:25
投稿者 七星◆MH.ms4.V3i2
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>209 変態紳士さん
ぶっちゃけd_listが書き込む値の解釈に使用するTStringDivision::ToLongDefは
変換終了文字が空=全部変換でない場合、デフォルト値を返すようになっていますが
デフォルト値はSSGからは指定できず0固定なので、このメソッドの使用をやめて
途中までの解釈でも其の値を返すだけで、値リストにfree_list使えるかな、というだけのものです

元々は書き込む値を解釈できなかった場合、未処理ではなくデフォルト値を書き込む挙動になっているので
未処理は空行にするという仕様で、書き込む値に解釈できない文字列が混入するのはSSGミスだけだと思うので
実質的な互換性は維持されるものかと思うのですが。FEPは見よう見まねでくっつけただけですし…
(項目に符号設定がなく4バイト未満の読み込みを符号拡張できないので、全ての処理はリスト値へ適用


ところでTSSGSubjectインスタンス構造体で気になったのですが、4バイトの空きって合計でも有りますかね?
SSGC.GetAddress()がTSSGSubjectサブクラスから呼ばれた場合、算出アドレスをキャッシュしておいて
アドレスコーディングから変数なり演算子で参照できないかな、と思ったのですが(判定部を添付1
(実現すれば[replace]いらずで、バイト列や[io_fep]や[funnel]のコーディング部から項目のアクセスアドレスを取得できる


ちなみにこの過程で、修正パッチを導入していると一括実数電卓を表示するだけで
アクセス違反が起きる不具合を発見したのですが、確認できますでしょうか?


>>213 のびさん
その辺りはSpoilerALが元々アドレス昇順にしてしまってるので互換性ですかね
SSGバージョンで切り換えるか、演算子を別途用意するかになるのでしょうか
ヒープ基点に出来るケースって割と少なくなかったりするのかな…

記事編集 編集
Re: SpoilerALの修正パッチ (No.213)
投稿日 : 2017/02/28(Tue) 20:16
投稿者 のび
ID情報 : icmhWeQUUBpUWa4hlEDh5.
参照先
どうも、お久しぶりなのです。または、始めましてです。
久しぶりに改造関係を触りだして、ここへたどり着きました。

そんな感じで、いきなりですが、ヒープの話が気になって見てみました。_HNumber::1の番号の話なのです。
ヒープ取る所のソースを見たのですが、index順ではなく、アドレスの若い順にしているのですね。
TProcessCtrl_LoadHeapListで、qsortしております。

_HNumberで扱う番号はヒープのindexであろうかと妄想しております。
GetProcessHeapsで取得したままでindex順だと思いますので(根拠のほどがぐぐっても見つからないのですが)、
ここのところ、確認してみてください。

確認用SSGは、適当にこんなので。
[subject]電卓/現在値/_:calc, _HNumber::1, 0, 0xFFFFFFFF, unsigned
[subject]電卓/現在値/_:calc, _HNumber::2, 0, 0xFFFFFFFF, unsigned
[subject]電卓/現在値/_:calc, _HNumber::3, 0, 0xFFFFFFFF, unsigned
[subject]電卓/現在値/_:calc, _HNumber::4, 0, 0xFFFFFFFF, unsigned
[subject]電卓/現在値/_:calc, _HNumber::5, 0, 0xFFFFFFFF, unsigned
[subject]電卓/現在値/_:calc, _HNumber::6, 0, 0xFFFFFFFF, unsigned
[subject]電卓/現在値/_:calc, _HNumber::7, 0, 0xFFFFFFFF, unsigned

ヒープのインデックス番号は、うさみみのCtrl+Gのやつでモジュール名の所を見てください。
記事編集 編集
Re: SpoilerALの修正パッチ (No.214)
投稿日 : 2017/02/28(Tue) 20:51
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>211 RICK(管理人)さん
関数化させたオブジェクト指向寄りの記述を希望と解釈いたしました。
現状では以下の理由で実装の見通しが悪い事をお伝えします。

>>205
>グループを参照する機能が速くないので・・・ (メモリも圧迫気味)

>>212 七星さん
>ところでTSSGSubjectインスタンス構造体で気になったのですが、4バイトの空きって合計でも有りますかね?
"extern\TSSGSubject.h" の padding3 か、(padding2は使っています)
"SubjectProperty\SSGSubjectProperty.h" の構造体に追加して、
"FixMainForm\DGrid\TMainForm_DrawTree.c" のような扱いもできます。

>ちなみにこの過程で、修正パッチを導入していると一括実数電卓を表示するだけで
>アクセス違反が起きる不具合を発見したのですが、確認できますでしょうか?
修正しました。
"Parsing\Attach_Parsing.c"の462行目にあるアドレスを間違えていました。

>>213 のびさん
>TProcessCtrl_LoadHeapListで、qsortしております。
少し意図が伝わりませんでしたが「HNumberでソートしているけど問題無いか」という質問でしょうか。
HNumberは6.1(修正パッチを導入前)に合わせています。(合わせなければ過去のSSGが動作しないため)
これは、6.0 のコードで STL の std::map のキーにアドレスを設定した時点でソートされますので、元々はソートされていたという事になります。
6.1の動作結果もソート済みですので。
記事編集 編集
Re: SpoilerALの修正パッチ (No.215)
投稿日 : 2017/02/28(Tue) 21:36
投稿者 dipper◆LEFxdWWYR3c
ID情報 : iAq7BLWVLfrdfZBBGQG8s1
参照先
>>211 RICK(管理人)さん

「RPGツクールVX Ace汎用SSG」を下記の様に変更すると要望通りになるかと思います。
恐らく、チェインファイルを多段で使用できなかったのは、チェインファイルだと"$Val"が解析出来なかったのが原因かと予測してます。
$Idxを使用することで正常に算出されるようです。


[group]item_ssr
[subject]アイテムNo.[!L($Val+1)!]//_/:calc,〜(中略)〜
[/group]

[group]item_ssr
[subject]アイテムNo.[!L($Val+1)!]//_/:calc,@Game->address_base
[/group]


■↓は追加。

[group]address_base
($Idx+1)*2+1=>key;
[.0x00.]=>tmp;
[:$tmp+0x04:]=>modulo;($modulo!=0)*$modulo=>modulo1;$modulo==0=>modulo2;〜(中略)〜
[/group]

※添付1:改変手順のテキストファイル([define]使用版)

記事編集 編集
Re: SpoilerALの修正パッチ (No.216)
投稿日 : 2017/02/28(Tue) 22:04
投稿者 七星◆MH.ms4.V3i2
ID情報 : EO1F4.qa2sHkDF3axAhPO0
参照先
>>214 変態紳士さん
すわ、スペース無ければコンストラクタとデストラクタでか?考えていたら
既に斯様なものまで実装されていたとは、確認不足でした。リピード格納はここでしたか
これがあればフィールド追加は自由でしょうか?(paddingがゼロでない時は未初期化なだけかしら

特に問題がないようであれば、お手隙の際にでも>>212のような項目アドレスへの変数か演算子をお願いしたいです
何分マークアップだのポーランド変換だのパース周りへは考えられる頭がないので、立て込む中申し訳ない…
コーディング部で項目アドレスが取得できれば、項目の書き込み前あるいは後の値取得なども容易になると思うのです
switch((LONG_PTR)RetAddr)のcaseがSSGC.GetAddress()のリターンアドレスなので-5バイトがCALL命令になっています

一括実数電卓も正常になったのを確認しました、有り難うございます
…とツリーの現在値が0から動かないのですが、この辺りは修正に含まれていませんでしたっけ
記事編集 編集
Re: SpoilerALの修正パッチ (No.217)
投稿日 : 2017/02/28(Tue) 23:29
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Rpl0M0EWSnJO/VkBHFcSz.
参照先
>>216 七星さん

>paddingがゼロでない時は未初期化なだけかしら
padding2 はゼロしか見てないのですが、もしかしたら何かあるのかもしれませんね。
(padding3が終端にある事から拡張クラスのVTableである可能性、無い気はするし、だとしても落ちるけど)

>項目アドレスへの変数か演算子を
歳のせいか何なのか・・・ 人のコードを読むのが遅くなっています。
読んでからにします。
>GetAddress
なるほど、低水準言語では短くなりますね。
ただ元のCも同じコードを追加しますので実装はちょっと遅いかも。

>…とツリーの現在値が0から動かないのですが、 この辺りは修正に含まれていませんでしたっけ
「ツリーの現在値」というのは一括実数電卓に表示される現在値ではないかと思います。
それで一括実数電卓の現在値を確認したところ、1を代入してもゼロになっていたのですが。
コードを検証中に気が付いて16進から10進に切り替えて入力すると更新されました。

※追記
$Addrにて各項目のアクセス後のアドレスを変数として実装しました。
テストはまた今度。
記事編集 編集
Re: SpoilerALの修正パッチ (No.218)
投稿日 : 2017/03/01(Wed) 12:02
投稿者 七星◆MH.ms4.V3i2
ID情報 : Z74HqRslc7LOTW4i0xdFW0
参照先
>>217 変態紳士さん
早期実装すぎて吃驚です、誠にありがとうございます
ファンネルからも項目のアドレスが取得できました、これは便利です
(このようなswitchだとジャンプテーブルにはならんようですね
 CALLを置き換えるより呼び出し先で管理しとけばメンテ楽かと思い…

>拡張クラスのVTableである可能性
そういう構造になる実装もあるのでしょうか、てっきり
先頭にのみインスタンスクラスのVTableが当たり前かと考えてました
特に問題はないと思いますが、>>212のSSGにおける初回計算時ウォッチ風景を添付しておきます
起動毎に0だったり最上位ビットが立つ様な値だったり、それも同じ項目で異なることもありました
未初期化の再利用領域っぽく見えます、デバッグヒープアロケーターの使用有無は関係ないようでした
(SDK 10.0.14393.0、ツールセット2017(v141)、共有と発行用に最適化されたデバッグ情報付き

強いて言えばrealな項目だとSSGC.GetAddress()が呼ばれないので、$Addrの値が未定義となるくらいでしょうか
自己ビルドではなく添付のDLLを使用して、下記のような同パラメータ項目でも0だったりアドレスみたいな値だったりしました
[involve]SAL
[group]Toggle
0x00650000,$4 $Addr $$
[/group]
[/involve]

[subject]TSSCalc :calc ,0x00650000,-0x80000000,0x7FFFFFFF
[subject]TSSBundleToggle:b_toggle,0x00000000,SAL->Toggle,real
[subject]TSSBundleToggle:b_toggle,0x00000000,SAL->Toggle,real
[subject]TSSBundleToggle:b_toggle,0x00000000,SAL->Toggle,real


それでツリーの現在値というのは、右ペインの電卓に表示される現在値ではなくて
現在値もツリーに表示する、左ペインのツリー行末に表示される[値]というアレです
6.0ソースだとgui\MainUnit.cppの1484行目で実数用フォーマットに
TStringDivision::ToStringDouble(double, const char *)ではなく
TStringDivision::ToString(unsigned long, const char *)を呼び出しているので
整数型にキャストされたあげく、[%f]でフォーマットしようとして0.000000固定になる問題です
マシンコードのアドレスは>>216のリンク先にある通りです

電卓は電卓の方で16進だと実数に%0?X使ってますね…IEEE754を生で表示するべきでしょうか?
そんな形式は手動入力するの無茶だろという話になりますね(笑


>>219 のびさん
確かに元のAL仕様を引き継いだものですが、Windowsの仕様と異なるなら、余計な話というよりある種問題かもしれません
GetProcessHeaps()が返す配列は、[0]がGetProcessHeap()の返すデフォルトプロセスヒープと同じになるような順序ということですよね
正直メモリ管理は詳しく知りませんが、AL仕様だとプロセスヒープとプライベートヒープが解らなくなりますし、使い所が皆無ではなさそうな気も

記事編集 編集
Re: SpoilerALの修正パッチ (No.219)
投稿日 : 2017/03/01(Wed) 16:04
投稿者 のび
ID情報 : N4e0EHyCC1UZeOkrjQtTf.
参照先
>>212 七星さん >>214 変態紳士さん
ヒープ取得の所、6.0からコピペして動かしてみました。
なるほど、std::mapの機能なのですね。意図して並び替えているようですね。

ヒープのindexが必要になることって無いのかもしれませんね。
考えずに余計な話をしてしまいました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.220)
投稿日 : 2017/03/01(Wed) 17:18
投稿者 のび
ID情報 : N4e0EHyCC1UZeOkrjQtTf.
参照先
これまでの話を見れていないのですが、
もしかして、こんなCの関数をSSGから呼び出して値を得ることは出来るようになりますでしょうか

BOOL FindKeyAddr(UINT key, ULONG addr, ULONG *nextAddr)
{
struct
{
UINT key;
UINT a;
UINT b;
ULONG next;
} data;

for (;;)
{
if (!ReadProc(addr, &data, sizeof(data)))
return FALSE;
if (data.key == key)
{
*nextAddr = addr;
return TRUE;
}
if (!data.next)
return FALSE;
addr = data.next;
}
}

これはツクール系のキーを見る所なのだけども、
こういうのを呼び出せればSSGがシンプルに出来ると思ったのです。専用の関数だけども。
記事編集 編集
Re: SpoilerALの修正パッチ (No.221)
投稿日 : 2017/03/01(Wed) 22:11
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>218 七星さん
>先頭にのみインスタンスクラスのVTableが当たり前かと考えてました
当たり前だと思います。
Borlandなので何でもかんでも怪しいというか、ただそれだけです。
BorlandC++Builder6でクラスのプロパティ変数(フィールド)を追加してもクラスのサイズは同じだったので、何となく使えそうです。

>現在値もツリーに表示する、左ペインのツリー行末に表示される[値]というアレです
そんな機能があったのですね。
直しておきました。

>表示用リストにもfree_list形式を使っても見やすいように、メモを表示するときに使用するフォントをリストにも適用する
それと、これを修正パッチに導入させてもらいました。

>>220 のびさん
その固有のモジュールの設計でしょうから、関数がエクスポートされているか調べるのが先だと思います。
話題が少し違う気もするので「SSGを投稿したり、ゲーム解析について語るスレ」をお勧めしてみます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.222)
投稿日 : 2017/03/01(Wed) 23:11
投稿者 (仔猫)◆KCezBilYINU
ID情報 : Nn.DpA2RuaOK4c7rR5uRx0
参照先
仔猫です(やり残したゲーム解析があったのでお邪魔してます)
新機能追加ありがとうございます。

報告です
AL修正パッチですが、Unicodeの文字入力を行うとエラーが出るようです。
該当ゲームタイトルは"魔剣士リーネ2"体験版とそのSSGです。

02/21版では(OK)
02/28版以降(NG)です。

追記:
03/02版にて修正確認しました。ありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.223)
投稿日 : 2017/03/01(Wed) 23:34
投稿者 七星◆MH.ms4.V3i2
ID情報 : Z74HqRslc7LOTW4i0xdFW0
参照先
>>221 変態紳士さん
ありがとうございます、現在値もツリーに表示するは既定オフなので気づかれにくいですね
これをオンにしたまま、うっかりSSGデバッグモードにするとParsingログでスローダウンしますし。
リストも見やすくなりました。今にして思えば引数の積み直しはFLDを残したまま
004457F0 83EC08 SUB ESP,8
004457F3 DD1C24 FSTP QWORD PTR [ESP]

とすればキャスト潰しつつもピッタリ収まりますね(VC++もこのようなコードを生成しますし)
しかしx87 FPU命令は遅かったような覚えがあるので、普通にPUSHのままで良いですかね
(IntelもSSEを使えと言うが、そんな命令スペースはないので…

>プロパティ変数(フィールド)を追加してもクラスのサイズは同じ
プロパティ…変数、ですか?__propertyならC#と同じく、フィールド(メンバ変数)かのように扱える
アクセサ(メソッド)ではなかったでしょうか、クラスのサイズというのはインスタンスサイズですか?

そういえばキー云々の話でふと思ったのですが、アドレスコーディングでwhile文の様な真似は難しいですよね?
オペランドが真な限り指定式を評価し続けるようなのは…後置記法のスタックマシンに実装できるものでしょうか
記事編集 編集
Re: SpoilerALの修正パッチ (No.224)
投稿日 : 2017/03/02(Thu) 00:35
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>222 (仔猫)さん
報告どぉもです。
修正しておきました。

>>223 七星さん
>004457F0 83EC08 SUB ESP,8
>004457F3 DD1C24 FSTP QWORD PTR [ESP]
短くなるので変えておきました。

以前の修正はアドレスネーミングの浮動小数点数の表示で、
double型をmemcpyして整数として扱おうとしていたような気がします。
TStringDivision::ToString 全般ではなかったので他に同じバグがあるかどうかまでは分かりません。

浮動小数点数に関しては、もともとのパーサーはログも出力しなかったので、
話題になれば大規模なものを作れという事になりかねず出来れば避けたいところです。

>プロパティ
概念的な呼び方でして実際はメンバ変数です。
これは説明が悪かったのですが、BorlandC++Builder6でクラスにメンバ変数を追加してもサイズは変更しなかったと伝えるべきでした。
結果、終端にある領域は単なるパディングで予約領域ではありませんでした。

>アドレスコーディングでwhile文の様な真似は難しいですよね?
アドレスコーディングは可能なものから実装しています。
パーサーが解読できる書式に出来なかったが現状ですが、その辺は他の方が実装すれば一味違うかもしれません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.225)
投稿日 : 2017/03/02(Thu) 12:26
投稿者 七星◆MH.ms4.V3i2
ID情報 : Z74HqRslc7LOTW4i0xdFW0
参照先
>>224 変態紳士さん
あ、それでも良いんですね。アドレスネーミングの方はnew char[DataSize+1]からdoubleにmemcpyのみでしたね(元だとfloat考慮されてない?
そしてそこでも誤爆されるTStringDivision::ToString(unsigned long, const char *)…オーバーロードしたつもりだったのでしょうか
しかもフォーマット末尾で判別しているのでsnprintfを使っているにも関わらず、後ろに文字列を入れられないのが微妙に不便でした
(strtodも16進数を解釈できてないみたいですね、C99からではないのかしら…

浮動小数点数の出番は少ないと思うのでどうでしょうか…アドレスコーディングだけにアドレス計算がメインですし
RPGツクールMVはJavaScriptで値が全部doubleかつアライメントもされてないですが、デベロッパーツールに任せられますし
Bulldozer系はFPUが共有なので更に遅いという実情から、普通のアプリでは積極的には使われないだろういう楽観
そもそも浮動小数点数をきっちり理解してゴリゴリ扱える人なら、自身でパーサーも改良してくれるだろうという希望的観測…

>メンバ変数を追加してもサイズは変更しなかった
>結果、終端にある領域は単なるパディングで予約領域ではありませんでした。

なるほど、アライメント?パディングされまくりだったという事ですね
stringなどメンバのも含めると使われていない領域はかなり多いのでしょうか

whileはやはり現状の実装では厳しいですか、現状のまま簡単かつ合理的な実装ができるならと思ったのですが、変数共有の子パーサは…重そうですね
いつしか良いアイディアが浮かんだら程度の片隅くらいに…とパーサーで少し気になる事が、三項演算子は代入より優先ですよね?
「$4 1 ? 2 : 3 => a; $a $$」とか「$4 $a = 1 ? 2 : 3; $a $$」のような括弧がないとき妙な挙動になると思うのですが仕様でしょうか?


そしてコソコソと2017.03.02を元にNo.199を修正…入出力変換属性を正規適用(符号拡張はこれに任せよう)、fep時は単体書き込みにファンネル発動を合わせてみました
ぶっちゃけfree_listよりも[io_fep]の方が重要な気がしてきました。というのもダブルリストで連式やチェインファイルを使うと現在値の比較がとても重いのです
現在値もツリーに表示する、で多量のダブルリストがあると、作者モードですらチカチカ点滅して、ガイド無しにしないと操作できたものではありません
例えばダブルリストから「XX ?? ?? ?? YY」のような値操作をしたいとき、,0x00=XX,0x04=YYや,0x00=XX ?? ?? ?? YYといった記述になると思いますが
こんな時ダブルリストに[io_fep]を適用して出力値への演算で[:[.$Idx.] + 4:1] << 8 | [:[.$Idx.]:1]とビットフィールドにすると単体比較に出来て速いです
こうすると値リストも書き込む値単体にしなければならないので、ダブルリストの書き込み先は[allocate]アドレスにして、ファンネルで実際のアドレスに配置します

記事編集 編集
Re: SpoilerALの修正パッチ (No.226)
投稿日 : 2017/03/03(Fri) 03:11
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : pil79HoUkT1sR6LOp9qkO1
参照先
>>225 七星さん
>「$4 1 ? 2 : 3 => a; $a $$」とか「$4 $a = 1 ? 2 : 3; $a $$」のような括弧がないとき妙な挙動になると思うのですが仕様でしょうか?
報告どぉもです。直しておきました。

※追記
whileループを実装してみました。
"source\test\__while_test__.ssg"
記事編集 編集
Re: SpoilerALの修正パッチ (No.227)
投稿日 : 2017/03/03(Fri) 13:36
投稿者 七星◆MH.ms4.V3i2
ID情報 : Z74HqRslc7LOTW4i0xdFW0
参照先
>>226 変態紳士さん
ヒェッ…もう実装できたのですか、感謝の言葉が無いくらい感無量です
可変長リストの完全な走査も可能になりますね、夢が広がry
(ループ毎に文字列比較したい時はstrlen::してから8バイトずつが良いのかな…?

三項演算子の修正は確認できたのですが、括弧バグが再燃した気がします
$a = 0; $b = ($a += 1) + 1; $a
Parsing「0」→[0x0]
Parsing「=」→[0x0]
Parsing「1」→[0x1]
Parsing「1」→[0x1]
Parsing「+」→[0x2]
Parsing「+=」→[0x2]
Parsing「=」→[0x2]
Parsing「$a」→[0x2]
記事編集 編集
Re: SpoilerALの修正パッチ (No.228)
投稿日 : 2017/03/03(Fri) 18:29
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
>>226 変態紳士さん
while文の実装ありがとうございます。


さっそくwhile文を使ってみようと思ったのですが、サンプルには1重のものしかなかったので質問させていただきます。

これを上手く使えばRGSSシリーズのSSGの軽量化が望めそうです。

以下のコードをSSG化するにはどうすればよいでしょうか?
以下のコードはRPGツクールVX Aceのアイテムエディタのアドレス部分です。

添付ファイルは以下のコードを見やすくしたものです。


_[!@Game->keyitem_list_2,$Val!]=>key;
[.0x00.]=>tmp;
[:$tmp+0x04:]=>modulo;
($modulo!=0)*$modulo=>modulo1;
$modulo==0=>modulo2;
$modulo1|$modulo2=>modulo;
0=>i;
0=>j;
while ($i < $modulo) {
[:[:$tmp+0x0C:]+$i*4:]=>base;
while ($j < 10) {
if ([:$base+0x04:]==$key){
break;
}
else {
[:$base+0x0C:]=>base;
$j++;
}
}
$i++;
}
$base+0x08

記事編集 編集
Re: SpoilerALの修正パッチ (No.229)
投稿日 : 2017/03/03(Fri) 19:07
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>227 七星さん
>括弧バグ
左辺代入にバグがあったみたいです。直しておきました。

>>228 RICK(管理人)さん
「{」と「}」はdefineで予約済みです。処理のスコープには「(」と「)」のペアをお使いください。
条件式にも括弧が必要です。
多重ループに関しては先ほど更新した分で対応しました。(さっきまでは対応してなかったので)

「if」と「else」は三項演算子で代用してください、
それから「break」は使用できませんのでフラグ変数をご検討ください。

シングルループは条件式ではなく処理の「(」と「)」を省くことが出来ますが、
今現在のコードでは多重ループで括弧を省くことは出来ません。
※修正済み

演算の部分を変更していますので大きなバグがある可能性があります。
その点はご注意ください。

モジュールの修正を優先しますのでSSGの記述方法はまた後ほど。
記事編集 編集
Re: SpoilerALの修正パッチ (No.230)
投稿日 : 2017/03/03(Fri) 20:08
投稿者 のび
ID情報 : AcU27q0DBiuNYql5nCDDZ.
参照先
whileでRGSS300のゲームでお金のところをやってみました。

↓とりあえずこうですかね
[group]address_money
0x466B=>key;[:(MName::RGSS300.dll)+0x2AC044:]=>base;
[:$base+0x04:]=>modulo;[:[:$base+0x0C:]+($modulo?$key%$modulo*4:0):]=>base;
while([:$base:]!=$key)[:$base+0x0C:]=>base;
[:[:[:[:$base+0x08:]+0x00:]+0x04:]+0x0C:]+0x04
[/group]

そして、関数化したいのですが、find_keyの呼び出し方がわからずです。妄想でこう書いてみましたが、
[group]find_key
[define find_key]base;
while([:$base:]!=$key)[:$base+0x0C:]=>base;$base
[/group]

[group]address_money
0x466B=>key;[:(MName::RGSS300.dll)+0x2AC044:]=>base;
[:$base+0x04:]=>modulo;[:[:$base+0x0C:]+($modulo?$key%$modulo*4:0):]=>{find_key}=>base;
[:[:[:[:$base+0x08:]+0x00:]+0x04:]+0x0C:]+0x04
[/group]

どこかが動かずで、デバックはこう
Parsing「{find_key}」→[0xA4E5880]
Parsing「base」→[0xA4E5880]
Parsing「$base」→[0xA4E5880]
Parsing「0x08」→[0x8]
Parsing「+」→[0xA4E5888]
Parsing「:]」→[0xA47F0A8]

{find_key}の使い方はあってますでしょうか。
記事編集 編集
Re: SpoilerALの修正パッチ (No.231)
投稿日 : 2017/03/03(Fri) 20:33
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
ゲームの解析依頼はお受けしません。そのコーディングもしません。
修正を優先します。
記事編集 編集
Re: SpoilerALの修正パッチ (No.232)
投稿日 : 2017/03/03(Fri) 20:45
投稿者 七星◆MH.ms4.V3i2
ID情報 : Z74HqRslc7LOTW4i0xdFW0
参照先
>>229 変態紳士さん
お疲れ様です、自分が以前作ったSSGも問題なく動作を確認できました
多重ループまで実装されるとは恐れ入ります

>>230 のびさん
[define]は[subject]と同じように読み込まれる場所においてください、改行する場合は末尾に\を付けて。
参照してない[group]に置いてあっても定義が行われません、[involve]より外側トップレベルに配置するのが望ましいです
あちらで[group]内に書いた時はwhileがなく[repeat]でコードをワードリピートするためです、ちなみにただのテキスト置換です


そしてこぼれ話というか…ガイドいくらなんでも重すぎ、と思ってC#でいうBeginUpdate()/EndUpdate()的な事すれば解消するのではと
試しにステータスバーっぽいとこクリックでWM_SETREDRAWしてみたけど重さ変わんね、と無駄になった残骸を置いておきます
コントロールよりもそもそもTRichEditStringsの変更が重いのかよく分からない、引き続き調査をしてみる所存
追記:
TStrings.Addが呼び出してるTRichEditStrings.Insertをすり替えてみた、EM_REPLACESELが重すぎてどうにもなりませんね

記事編集 編集
Re: SpoilerALの修正パッチ (No.233)
投稿日 : 2017/03/03(Fri) 21:10
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
>>229 変態紳士さん

いつの間にかHow To SSGも更新されていたのですね。

228のコードをwhile文と三項演算子を用いて書いてみましたが
これであっているのかわからなかったので質問させていただきます。

breakが使えないとのことなのでそれについては諦めることにしました。

下記コードに間違ってる点はないでしょうか?
特に11行目がわかりません。

とりあえずまた添付しておきます。


[group]address_item
_[!@Game->keyitem_list_2,$Idx!]=>key;
[.0x00.]=>tmp;
[:$tmp+0x04:]=>modulo;
$modulo?$key%$modulo*4:0=>modulo;
0=>i;
while ($i < $modulo) (\
 0=>j;
 [:[:$tmp+0x0C:]+$i*4:]=>temp;
 while ($j < 10) (\
  ([:$temp+0x04:]==$key) ?($temp=>base;):([:$temp+0x0C:]=>temp;j++;)
 )\
 $i++;
)\
$base+0x08
[/group]


【修正1】2017/03/04 06:55
文法を間違っていたところがあるので修正

記事編集 編集
Re: SpoilerALの修正パッチ (No.234)
投稿日 : 2017/03/03(Fri) 22:31
投稿者 のび
ID情報 : N4e0EHyCC1UZeOkrjQtTf.
参照先
>>231 変態紳士さん
大変失礼しました。
どうも俺は何かを理解していないので、こういう所はだめですね。どこでもだめだけどね。
ではここまでにしますね。

>>232 七星さん
「参照してない[group]に置いてあっても定義が行われません」のところ、今理解しました。
[involve]の外へ持っていって、それで動くことを確認しました。報告しておきます。
\の話も了解です。七星さんのをコピーしたのに、なぜ消したんだか。どうもです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.235)
投稿日 : 2017/03/04(Sat) 06:14
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>233 RICK(管理人)さん
極端な構文エラーらしいものは見つかりませんでした。
(式が合っているかは確かめていませんので)
何だか2つくらい書式が混ざっている気もします。

>特に11行目
三項演算子は「条件式 ? 真式 : 偽式」の3要素ですが、プログラミングでも長くなったり可読性の観点から括弧で括る事があります。
それとは別に11行目の偽式は「([:$temp+0x0C:]=>temp;j++;)」となっており、
2つの処理を行っているので括弧を外すことは出来ません。

>breakが使えないとのことなのでそれについては諦めることにしました。
フラグ変数でよければ書けます。
――――――――――――――――――――
$break = 0;
while (!$break && ループの条件式)
(
  (三項演算子の条件式) ?
  (真式 真式で break も可) :
  (偽式 ← ここで「$break = 1」)
)
――――――――――――――――――――
表現上、論理否定「!」を使わない場合は $break を $continue として 0 と 1 を入れ替えます。
上記のサンプルは全角スペースが入っていますのでコピペで動きません。

それと文法としては怪しいのですが「0=>j;」はループの外で大丈夫でしょうか。
$iの各要素を対象ではなく合計で10件という指定になっています。


>>234 のびさん
パーサーを変更しているときは神経質だと思います。
ループの追加は範囲が拡大するので、1つ直せば数か所壊れる内容で、結局そんなものではないかと。
タイミングというのもあります。

それからこちらの修正パッチは元々「SSGを投稿したり、ゲーム解析について語るスレ」にありましたが、
専門的になる事や話題が混ざると混乱してしまう事もあり引っ越しというか独立したスレッドになりました。
それら経緯も含めて「○○系のゲームのSSG」のような話題は扱っておりません。

その方が汎用的な構文と基本的な演算を求める上では良いのではないかと思ったりしますし、
時と場合によっては負担となる事もありますので。
実際、時と場合という曖昧な基準に傾きますがケースバイケースでしか扱えない気もします。


※追記
>>236 RICK(管理人)さん
「j++」が一カ所ありますが「$j++」かもしれません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.236)
投稿日 : 2017/03/04(Sat) 06:40
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
>>235 変態紳士さん

構文チェックありがとうございました。
なんだか違和感を感じていたのですがこういう書き方もあるのですね。


>>フラグ変数でよければ書けます。

こういう書き方があったのですね。非常に参考になりました。
これでwhile〜break文が書けるようになります。
ついでにこの掲示板でインデントをつけるには全角スペースを使えばよかったのですね。(管理人ながら失念してました。)


>>それと文法としては怪しいのですが「0=>j;」はループの外で大丈夫でしょうか。

よく考えたら下記2行は逆でしたね。

0=>j;
while ($i < $modulo) (\

最近プログラミングに触れていないのでうっかりミスをしてしまいました。


色々とありがとうございました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.237)
投稿日 : 2017/03/04(Sat) 20:47
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
while文を試しに使ってみたところ、繰り返し回数が多い場合(約2000回?)SpoilerALが強制終了してしまいました。
検証お願いします。

【添付ファイルの説明】
ざくざくアクターズ1.05cのSSGです。

ざくざくアクターズ-test5.ssg:アイテムエディタの部分にwhile文を使わなかった場合
ざくざくアクターズ-test6.ssg:アイテムエディタの部分にwhile文を使った場合(動作はざくざくアクターズ-test5.ssgとほぼ同じはず)
Save23.rvdata2:ざくざくアクターズのセーブデータ(図鑑コンプ済み)

記事編集 編集
Re: SpoilerALの修正パッチ (No.238)
投稿日 : 2017/03/05(Sun) 08:48
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>232 七星さん
>ガイドいくらなんでも重すぎ
それっぽい変更をしてみました。


>>237 RICK(管理人)さん
構文に間違いがありました。
whileですが「{」と「}」をスコープと間違えているようです。
defineは純粋な置換ですので無駄に「w{hil}e」という書き方も出来ます。
ですので「while($j<10){item_part01}」はスコープが無い状態になります。
それと修正パッチの方にもバグがありましたので直しておきました。

動作確認を行ったコードです。(タブを全角スペース2つに置換しています)
[define item_base] \
  $count = [:[.0x04.]:]; \
  $array = [:[.0x0C.]:]; \
  $i = $base = 0; \
  while (!$base && $i < $count) \
  ( \
    $element = [:$array + $i++ * 4:]; \
    $j = 10; \
    while (!($base = ([:$element + 0x04:] == $key ? $element : 0)) && $j--) \
      $element = [:$element + 0x0C:]; \
  )
記事編集 編集
Re: SpoilerALの修正パッチ (No.239)
投稿日 : 2017/03/05(Sun) 13:17
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
>>238 変態紳士さん
ありがとうございます、早速導入してみたのですが、デバッグモードでの重さは変わらず…
私の環境ではWM_SETREDRAW = FALSEしておいてもEM_REPLACESELの速度は変わらない様に感じたのですが
開発環境ではこれで改善されるのでしょうか?例えば添付のSSGとか、拙作のARCGameEngine汎用SSGであるとか…

.NETでもRichTextBoxにはBegin/EndUpdateがなく、AppendTextもEM_REPLACESELだけど少し速いような気も
riched32.dllは今やriched20.dllのラッパーみたいなのでバックエンドは変わらないと思うのですが

あ、ところでTSSGSubject->addressの0初期化をお願いしたいです、未計算時の判定に使えるかなと。


適当にVX Aceのグローバル変数をwhileで列挙するサンプルを書いてみました、スレ違いになるのでここに多くは書きませんが
VX AceだとRuby 1.9.2なのでentries_packedを始め、従来の構造体メンバにも影響がある変更のようですね
そういえばSpoilerALの論理演算子は短絡評価されないものでしたっけ…評価させたくない場合は三項演算子を使うべきか

記事編集 編集
Re: SpoilerALの修正パッチ (No.240)
投稿日 : 2017/03/05(Sun) 21:58
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
>>238 変態紳士さん
実装&修正&コード案の提示ありがとうございます。
while文とdefineを活用したところ記述量を大幅に削減することができました。
特にVX Aceは568KBあったのが10KBほどに減りました。

ところで、三項演算子とOR(|)を組み合わせて
現状分けている2つの[define global]を合体させようとすると
一部の機能(変数とかアイテムとか)を使用する際に計算結果がおかしくなる場合が起こりました。

検証用のSSGを添付しておきます。
検証に使用したSSGは姫武道家ニーナ 〜敗者の末路は敵国の慰め者〜(RGSS103J)と魔法探偵アネット 着せ替え探索型RPG 〜人狼の秘密 〜(RGSS104J)です。
体験版でもアドレスは変わらないと思います。
できれば検証をお願いします。

【追記】
再現用のSSGファイルを添付しておきました。
アドレスを取得したいのでビットごとの論理OR演算子を使用しています。

【さらに追記】
今検証したところ動作確認しました。
昨日の動作不安定は何だったのだろう・・・
お騒がせして申し訳ありませんでした。

記事編集 編集
Re: SpoilerALの修正パッチ (No.241)
投稿日 : 2017/03/06(Mon) 07:05
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : pil79HoUkT1sR6LOp9qkO1
参照先
>RICK(管理人)さん
「|」の使い方が間違っています。
論理演算の「|」は2つとも処理した値に論理和を用いる事になり重くなる原因ともなります。
条件文の「||」であれば前方から処理し、どちらかがゼロでなければ真(1)を返します。
真偽値ではなく実行結果を返す場合は三項演算子を用いる事になり、三項演算子も処理の順番を決める事になります。

それから再現用ファイルの添付をお願いします。


>>239 七星さん

>短絡評価
スタック構造なのでそれを無視するためのコードを組み込まなければ無理でしょう。
(既に無視するコードが増え続けてますが・・・)

>開発環境ではこれで改善されるのでしょうか?
とりあえず解決してしまって。遅くなるSSGの内容が異なるのではないかと。

>TSSGSubject->addressの0
"source\diff" の方では初期化済みだったのでミスでした。
記事編集 編集
Re: SpoilerALの修正パッチ (No.242)
投稿日 : 2017/03/06(Mon) 18:08
投稿者 七星◆MH.ms4.V3i2
ID情報 : GrkBIMO0enUaj5SGV5jkC.
参照先
>>241 変態紳士さん
>スタック構造なのでそれを無視するためのコードを組み込まなければ無理
ですよね、破壊的な変更にもなりますし、「$and1st ? $and2nd : 0」や「$or1st ? 1 : $or2nd」での代替になるのでしょうか

>とりあえず解決してしまって
なんと、環境にも依ったりは…、OSとかWOW64とかGPUとか…GDIに関係するやらしないやら
超適当にヒープへキャッシュして纏めて追加するコードにしてみましたが、どうでしょう
SSGデバッグモード+ダイアログサーチでも、かなりスローダウンを低減できると思うのですが
(COMタスクメモリアロケータでも使うべきだろうか…なんだか不備があるような気がする

記事編集 編集
Re: SpoilerALの修正パッチ (No.243)
投稿日 : 2017/03/07(Tue) 18:34
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
今日のパッチを適用したところガイドはそこそこ軽くなったような気がしますが(RGSSシリーズの汎用SSG(define,whileで最適化済み)で検証)、
No.240の2番目SSGが使えなくなっていました。
No.240の1番目SSGは使えるので無理に統合せず分割式でいこうと思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.244)
投稿日 : 2017/03/07(Tue) 19:49
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>243 RICK(管理人)さん
確認しましたが動作するようです。
SSGで動作しない項目、確認した際のゲームタイトル、対象の行がどこなのか、何の命令なのか(分かる範囲で)お願いします。

>>242 七星さん
短絡評価にしました。
それとガイドですが七星さんのコードを使わせてもらいました。
こちらの環境でも以前より少し速いと思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.245)
投稿日 : 2017/03/07(Tue) 21:11
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
[define global1][:[:(MName::RGSS103J.dll)+0x003BB6:]+0x019C30:]
[define global2][:(MName::RGSS104J.dll)+0x184498:]
[define global]((MName::RGSS103J.dll)?(({global1}):0)|((MName::RGSS104J.dll)?(({global2})):0)=>base;{common1}

再び検証したところ、この部分が意図せぬ動作をしているようでした。
カッコの書き方や構文の書き方等間違っているところはありますでしょうか?

検証したのはNo.240と同じゲームです。

添付1はSSG
添付2はSSGのデバッグモードの動作例です。

記事編集 編集
Re: SpoilerALの修正パッチ (No.246)
投稿日 : 2017/03/07(Tue) 21:43
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
>>244 変態紳士さん
ありがとうございます、両方評価したい時はビット演算子が使われているでしょうし実質問題はないのでしょうか
ぶっちゃけ私のコードという程のものでも…校正も任せっぱなしですし。EM_SETSELは-1,-1でも良さそうですけど
自分で組んでいたら妙な所で0xC0000005が起きたりしてヒープ壊したかな、.NETの実装に倣ってみるかと右往左往したり…
(VCLの奇妙さを修正しようとしてVCLの派生を参考にするというのも可笑しな話だ

>>245 RICKさん
{global1}の括弧が手前が多いか後ろが少ないですね
時に管理お疲れ様です、閲覧状況は正常を維持できてるようです
VPSの不調かCloudflareと相性でも悪いのかと思っていたら攻撃だったのですね
記事編集 編集
Re: SpoilerALの修正パッチ (No.247)
投稿日 : 2017/03/08(Wed) 01:01
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>246 七星さん
>両方評価したい時はビット演算子が使われているでしょうし実質問題はないのでしょうか
6.2限定になりますが、短絡評価でない事を利用して条件式に用いる論理和や論理積の第2オペランドで代入を行っているような、
そんな奇抜なSSGがあったとしたら修正が必要になります。

>EM_SETSELは-1,-1でも
こちらで変更した部分でスッキリしないところがあったので修正しました。

>>245 RICK(管理人)さん
改行して階層が分かるようなインデントを入れてみました。(パーサーはこんな感じの解釈)

・括弧が閉じられていない。(構文エラー)
・三項演算子の「?」と「:」が同じ階層に無い。(構文エラー)
・「|」で結合せず、処理の順序を決め(この場合はRGSS103JとRGSS104Jの出現頻度)、三項演算子の中に三項演算子を使いネストする方が速い。
・1度しか使われていないのであれば [define] もわずかに負担。ただし処理が大きい場合は可読性との兼ね合い。

[define global] \
  ( \
    ( \
      MName::RGSS103J.dll \
    )
    ? \
    ( \
      ( \
        {global1} \
      ) \
      : \
      0 \
    ) \
    | \
    ( \
      ( \
        MName::RGSS104J.dll \
      ) \
      ? \
      ( \
        ( \
          {global2} \
        ) \
      ) \
      : \
      0 \
    ) \
    => base; \
    {common1}

// 例: RGSS104J を優先する場合
[define global] \
  $base = \
    MName::RGSS104J.dll ? [:MName::RGSS104J.dll + 0x184498:] : \
    MName::RGSS103J.dll ? [:[:MName::RGSS103J.dll + 0x003BB6:] + 0x019C30:] : \
    0; \
  {common1}
記事編集 編集
Re: SpoilerALの修正パッチ (No.248)
投稿日 : 2017/03/08(Wed) 07:21
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
>>247 変態紳士さん
>1度しか使われていないのであれば [define] もわずかに負担。ただし処理が大きい場合は可読性との兼ね合い。

個人的には\で改行するより新たに[define] を定義したほうがシンプルになると思っています。関数みたいな扱いができるのであれば別ですが。

括弧の数は改行して確かめるのが良さそうですね。


>「|」で結合せず、処理の順序を決め(この場合はRGSS103JとRGSS104Jの出現頻度)、三項演算子の中に三項演算子を使いネストする方が速い。

その発想はありませんでした。頭が固くてだめですね。もう少し柔軟にならないと。

最後に、構文チェックと修正案ありがとうございました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.249)
投稿日 : 2017/03/08(Wed) 18:18
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
妙な挙動に遭遇したのでご報告を。SpoilerAL 6.1 修正パッチ (2017.03.08)版です
短絡評価に起因するものかと思いますが、スタックが崩れている気がします

<# 4 * (3 && 2) #>
Parsing「4」→[0x4]
Parsing「3」→[0x3]
Parsing「2」→[0x2]
Parsing「&&」→[0x1]
Parsing「*」→[0x1]


<# 4 * (0 || 2) #>
Parsing「4」→[0x4]
Parsing「0」→[0x0]
Parsing「2」→[0x2]
Parsing「||」→[0x1]
Parsing「*」→[0x0]



>>251 変態紳士さん
お疲れ様です、論理演算子を使っていたSSGの復旧も確認できました
記事編集 編集
Re: SpoilerALの修正パッチ (No.250)
投稿日 : 2017/03/08(Wed) 19:30
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>249 七星さん
報告どぉもです。
修正しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.251)
投稿日 : 2017/03/09(Thu) 21:25
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
SpoilerAL 6.1 修正パッチ (2017.03.09)版です
複合代入のオペランドが明後日から来る気配がします

<# $a = 7; $b = 1; $a += 2, %3d #>
Parsing「7」→[0x7]
Parsing「=」→[0x7]
Parsing「1」→[0x1]
Parsing「=」→[0x1]
Parsing「2」→[0x2]
Parsing「+=」→[0x3]


<# $a = 7; while(0); $a += 2, %3d #>
Parsing「7」→[0x7]
Parsing「=」→[0x7]
Parsing「while」→[0x7]
Parsing「0」→[0x0]
Parsing「2」→[0x2]
Parsing「+=」→[0x4]


簡易検証した一覧SSGを添付しておきます

記事編集 編集
Re: SpoilerALの修正パッチ (No.252)
投稿日 : 2017/03/11(Sat) 19:12
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
三項演算子で
(条件式)?(真式):(書き換え不可)
みたいな処理はできませんか?
[enable]を使えば良さそうですが、三項演算子を使ったほうが楽な気がしたので提案してみました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.253)
投稿日 : 2017/03/11(Sat) 19:35
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>251 七星さん
複合代入を修正しました。どぉもです。
ガイドのバッファリングも変更しました。

>>252 RICK(管理人)さん
>(条件式)?(真式):(書き換え不可)
「書き換え不可」の意味を読み取れませんでした。
三項演算子はメモリなどを書き換えるものではないので式の使われ方が不明です。

それと[enable]と同時に話になるという事は関数や属性の様なものを想像しますが、
もしそうなら、演算子の領分を超えて機能を持たせると混乱を招くだけではなく使い方次第で問題になるので良い事だとは思いません。
演算子は速度にしても動作にしてもアトミックであるべきで。。。
どちらにしても話を掴めていません。

何かのプログラミング言語を参考にされているのであれば、
その仕様か用途などが分かるリンクを示していただけると有難いです。

また、言語拡張ではなく実装で困っているのであれば、まずは目的からお願いします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.254)
投稿日 : 2017/03/11(Sat) 19:44
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
>>253 変態紳士さん
(書き換え不可)というのは[enable]でいう偽判定時の処理もしくは無効を意味するつもりで書きました。

項目を1つ書くたびに[enable]で囲う必要がある事象に遭遇しています。
それよりは三項演算子で処理したほうが便利で速い気がしたので提案させていただきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.255)
投稿日 : 2017/03/11(Sat) 21:12
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>254 RICK(管理人)さん
>項目を1つ書くたびに[enable]で囲う必要がある事象に遭遇しています。
>それよりは三項演算子で処理したほうが便利で速い気がしたので提案させていただきました。

なるほど、理解しました。SSGを書いてそうなる事はあります。
しかし話を評価するようで申し訳ないですが、これは演算子の領分ではないです。

演算をする部分は、速度が重視され、影響範囲が大きく、他を巻き込んで壊れやすい部分で、
その部分で目的以外の状態値を返す構造というのも違和感が大きく・・・

SSGの記述で思いつくのは元のアドレスから値を読み取る方法です。
書き込みはアドレスネーミングと違ってGUIに大した速度差もないだろうと思ったり。
長い式で値を固定したら多少遅い気はしますが、元々の固定自体が安定していない気もするし。

もし書式を拡張するなら項目の引数の拡張で、その書式がどうなるかという事になります。
記事編集 編集
Re: SpoilerALの修正パッチ (No.256)
投稿日 : 2017/03/11(Sat) 22:20
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
>>253 変態紳士さん
ありがとうございます、なるほどタイマーからではなく直接メッセージキューにポストですか
こちらの環境でもタイマー式と比べても遜色ない速度に仕上がっていると思います

(アドレス0と[error_skip]ではダメかな…そういえば[enabled]って読み書き区別がない…
 $AddrのようにIsEnabledの呼び出し元をTSSGSubjectにストアしておけば判定できそう

 6.1なら↓だけで[enabled]$Valとすれば読み取り専用、三項演算子にかけ別条件とか
 これだと6.1かつ[enabled]内限定なので、やっぱりTSSGSubjectフィールドにストアかな

記事編集 編集
Re: SpoilerALの修正パッチ (No.257)
投稿日 : 2017/03/11(Sat) 22:29
投稿者 amateur◆kR..xsXL6RU
ID情報 : e9jr.BYdPyZ2cH/K5iYdj/
参照先
変態紳士さん、修正パッチ作成お疲れ様です。
色々便利な機能が追加されて助かっております。

横から出しゃばってすみません。管理人さんのご提案の件についてですが、
七星さんが既に>>256で言及されているので蛇足かもですが、
三項演算子の真式または偽式の部分がそのまま項目のアドレスとなる場合なら、
「偽式」部分を、0とか1と書けば、アクセスエラーとなって結果的に書込みがされない、となると思います。

ただ、これには問題点もあり、
一つ目は、SpoilerALのガイドフォームにエラー表示が出るので、SSG使用者が「正常に動作していない」と誤解する恐れがあること、
二つ目は、[child_rw]を使って下位項目一括書換えの途中の項目や、
一括トグル等のチェインファイルの途中の行で「偽式」になると、
一括書換えがそこでストップする(最後の項目や行まで処理が行われない)ということですね。

二つ目に関しては、変態紳士さんがパッチで追加してくださった[error_skip]を使うことで一括書換えストップを回避できますが。
それでも、SpoilerALのガイドフォームにエラー表示が出る問題は避けられないですね。
自分で書いたSSGでも、エラー表示が出ると一瞬何事かと思ってしまうので違和感は結構大きいかと思います。

それと、これに関連する?かもしれないのですが、
別スレの(No.440)で七星さんが教えてくださったのですが、
ファンネルファイルのアドレス部分で三項演算子を使い、「偽式」部分を「0」と書くと、
三項演算子の条件式の判定により「偽式」(つまり0)と評価されると、
ファンネルファイルの条件式の評価とは関係なく(たとえ真判定となる場合でも)、
次の行の判定に進んでしまうのだそうです。
(ファンネルファイルでは、条件式よりもアドレスの方が先に評価されるとのことです)
この結果、ファンネルファイルにおいて本来想定したのとは異なる処理がされる恐れがあるので、
ファンネルファイルのアドレス部分に関しては、三項演算子の「偽式」には「0」ではなく「1」等と書いた方が良さそうです。
アドレスが「1」でもアクセスエラーで書込みがされないのは変わらないと思いますので。
記事編集 編集
Re: SpoilerALの修正パッチ (No.258)
投稿日 : 2017/03/12(Sun) 00:15
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>アドレス0と[error_skip]
なるる。
こんな感じでSSGの書き方では一歩及びません。(本当に一歩なのかはアレがソレです)

それとは全くの別件で私的な事ですが、
近々こちらへ来れる機会が減る感じで4月には絶滅しているかもしれません。
(暖かくなったら居なくなる虫もいるという事で)
記事編集 編集
Re: SpoilerALの修正パッチ (No.259)
投稿日 : 2017/03/12(Sun) 06:27
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
自分が考えているのは新たな予約語変数$NULLを設け、
$NULLが出てきた場合[enable]の偽判定と同じ処理をするというのはどうでしょうか?

そうすれば

(条件式)?(真式):$NULL

と書けば実現できそうな気がしますが。
記事編集 編集
Re: SpoilerALの修正パッチ (No.260)
投稿日 : 2017/03/12(Sun) 08:34
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>259 RICK(管理人)さん
>(条件式)?(真式):$NULL
演算子が属性のようなものを返す事はありません。
属性を含まないNULLは「0」と同じ意味です。

また、言語拡張に機能を望むべきではないでしょう。
どちらにしてもそれは大きな変更となるでしょうし、他の演算の速度に影響を及ぼします。
これを実装するかどうかは開発する人によってニュアンスが変わってくるとは思いますが、
言語拡張で機能を解決する種類のプログラミング言語は設計として一長一短が見られます。

マシン語さえ操作するSSGの記述からして、
オブジェクトという概念が相見える事は少ないと思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.261)
投稿日 : 2017/03/12(Sun) 11:36
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
>>258 変態紳士さん
おや、年度末ですものね、ご多忙でしょうか

添付テキストのような感じで既定変数にReadフラグ、ついでに仮想メソッドGetSizeから項目Sizeは如何でしょうか
「[enabled]$Read」として読み取り専用(ツリー現在値表示用)とか、「[enabled]$Read ? 読み込み条件 : 書き込み条件」など、
GetAddressに先んじて呼ばれるので、読み込みと書き込みを別々のアドレスにするとか妙な事も可能に。
$Sizeはlist+[io_fep]でサイズに応じて符号拡張するとかですかね、トグルや最大文字のサイズも取得できるので何かに使えるかな…

そういえばダブルリスト周りはボツな感じでしょうか、結局To(U)LongDefをstrtoulにするだけでも済みそうですけど
(書き込む値だけのときに限り[io_fep]と[funnel]も適用すれば更に柔軟性が…

004C43D6-6A00 PUSH 0
004C43D8-90 NOP
004C43DB-6BD218 IMUL EDX,EDX,18
004C43DE-FF3410 PUSH DWORD PTR [EAX+EDX]
004C43E1-E86E6B1100 CALL 005DAF54 (strtoul)
004C43E6-83C40C ADD ESP,C

004C54BD-6A00 PUSH 0
004C54BF-90 NOP
004C54C2-6BD218 IMUL EDX,EDX,18
004C54C5-FF3410 PUSH DWORD PTR [EAX+EDX]
004C54C8-E8875A1100 CALL 005DAF54 (strtoul)
004C54CD-83C40C ADD ESP,C


それと一つ気になったのですが、TAG_PROCEDUREがTAG_MNAMEに先行されなければならないのは仕様でしょうか
プロセスがHMODULEを持っていることもあるので、DOSヘッダとPEヘッダチェックがあるし必須でなければ制約のないほうが、と思うのですが。

記事編集 編集
Re: SpoilerALの修正パッチ (No.262)
投稿日 : 2017/03/12(Sun) 12:54
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>261 七星さん
>TAG_PROCEDUREがTAG_MNAMEに先行されなければならないのは仕様でしょうか
_Parsing の事でしょうか。その関数ではTAG_PROCEDUREは2ヶ所あります。
1つは演算結果を序数として引数に与える場合です。
もう一つは、
switch(...) {... default: ... lpNext = lpPostfix[i + 1]; switch(lpNext->Tag) { case TAG_PROCEDURE:
という遠回りな処理に当たるもので1つ先のタグも含めている部分です。後者は演算以外で関数名か序数を引数に与えています。
どちらかが先行するような処理は無い気がします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.263)
投稿日 : 2017/03/12(Sun) 13:08
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
>>262 変態紳士さん
あーと…Markupの方でしょうか、任意アドレス::関数名というような事が出来ればと思ったのですが

if (nNumberOfTag && lpTagArray[nNumberOfTag - 1].Tag == TAG_MNAME)
{
APPEND_TAG_WITH_CONTINUE(TAG_PROCEDURE, 2, PRIORITY_FUNCTION, OS_PUSH);
}


現状のコレはMName::が前提ということではないのでしょうか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.264)
投稿日 : 2017/03/12(Sun) 14:25
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>263 七星さん
>Markupの方
なるる。当初の仕様です。
用途は、MName::以外で拾ってきたモジュールハンドル(アドレス)を使うという事でしょうか。
書式として解放しても問題無いような気がします。
バイト列の方は、確か開始と終了の括弧を認識していたと思うので $4 ... $$ のブロックでも大丈夫なような。

※追記
>任意アドレス::関数名
上記の変更をしました。
$Read, $Size を追加しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.265)
投稿日 : 2017/03/12(Sun) 22:58
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
>>264 変態紳士さん
ありがとうございます、組み替え型バイト列でもプロセスより読み取ったモジュールハンドルからエクスポート解決できました
$Sizeも元々サイズ0のチェイン項目を除き機能してます。ただ、$Readが該当時以外の時「SSGS->canReadOpen = FALSE;」されておらず
常にTRUEなっています…プロセスを読み取れたかではなく、現在のコーディング評価が読み取り用に呼ばれたかを判定したいので…
記事編集 編集
Re: SpoilerALの修正パッチ (No.266)
投稿日 : 2017/03/13(Mon) 00:01
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>265 七星さん
Cのソース(source\diff)と整合性が必要なのでそのままでは実装できません。
IsEnabledの引数を変えるかどうするか分かりませんが修正はまた今度。

※追記
直しておきました。
それとダブルリスト周りをstrtoulにしておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.267)
投稿日 : 2017/03/15(Wed) 19:59
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
動作検証中・・・

左辺代入および複合代入を拡張しました。
間接演算子やポインタ変換演算子を用いたアドレスに書き込めるようにしました。
右辺代入は対象外です。

変数名の先頭に「$」が有っても無くても動作するようにしました。

添付ファイルは更新前のファイルとバブルソートのサンプルです。
スレッドトップはそのまま。

※追記
本体はスレッドトップへ移行
記事編集 編集
Re: SpoilerALの修正パッチ (No.268)
投稿日 : 2017/03/17(Fri) 01:16
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 7BSCo/bEOmOaEcZfRuR7L1
参照先
>>267 変態紳士さん

反応が遅れて申し訳ありません。今頃気づきました。
添付ファイル2の道具のソート機能は私の環境では特に問題なく機能しているようです。

アドレスコーディング中にアドレスへ書き込めると言うのは、とても便利ですね。
これを用いれば、連番などの規則性のある処理には while を使うことでチェインファイル不要で簡略化出来ますね。

あと[! !]にローカル変数が使用できれば不規則な値を while を使用して簡略化できるのでは?とも思いました。
もっとも[repeat]処理中以外でも使用できる様にしなければならないので難しそうですけど。
記事編集 編集
Re: SpoilerALの修正パッチ (No.269)
投稿日 : 2017/03/17(Fri) 03:14
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>268 dipperさん

どぉもです。

>[! !]にローカル変数
それは静的な処理なので基本的には無理です。

ちなみにHowToSSGに「不変文字列」だとか「静的な展開」だとか書かれていますが、
SSGのロード時にメモリ上でテキストを置換するのと同じような処理です。
(実際は置換よりも遥かにメモリを食いつぶして遅い)

実行時には置換済みテキストの解釈で変数とか意味が無くなっているので。
アドレスコーディングを持ってきても別の問題が発生しそうです。

※追記
「呪いの魔剣に闇憑き乙女 体験版」のソートを追加してみました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.270)
投稿日 : 2017/03/22(Wed) 18:31
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 7BSCo/bEOmOaEcZfRuR7L1
参照先
>>269 変態紳士さん

>>[! !]にローカル変数
>それは静的な処理なので基本的には無理です。
やはり無理でしたか…残念です。
不規則な値を使用する場合はチェインファイルを使うしかないですね。

> ※追記
「呪いの魔剣に闇憑き乙女 体験版」SSGにソートを追加して頂きありがとうございます。
早速「【改造依頼】呪いの魔剣に闇憑き乙女」に投稿したSSGを差し替えてみました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.271)
投稿日 : 2017/03/23(Thu) 01:04
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>270 dipperさん
どぉもです。

memmoveを追加しました。
呪いの魔剣の場合は12バイトですが、
他のゲームで出現キャラをソートするとスワップ用の変数が呪文のように長くなるので実装です。
サンプルは呪いの魔剣です。

書式は、以下のように書くと対象プロセスのアドレスからローカルアドレスへ
memmove(L Memory::0, address, size);

以下のように書くとローカルアドレスから対象プロセスのアドレスへ
memmove(address, L Memory::0, size);

「L 」を付けるかどうかで変わります。
記事編集 編集
Re: SpoilerALの修正パッチ (No.272)
投稿日 : 2017/03/23(Thu) 14:53
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
やや御無沙汰でした、機能追加毎度ありがとうございます
二三不具合と思しき物を発見したので報告です

  • Parsing.cにおいてIsBadWritePtr()による制御が不適切(論理否定)でローカルポインタへの書き込みが機能しない
    (加えて書き込み不可時の解析エラー。がパースエラーと紛らわしいのでOnSubjectWriteErrorなり専用通知を呼び出した方が…

  • いつの間にかlpProcNameに対するトリミング後の終端処理が抜け落ち、スペースなど後続文字が削られずエクスポート関数とマッチしない

  • ポインタ変換演算子や間接演算子+括弧に対する代入式を第1オペランドとして扱おうとすると予期しない演算順序になる

    ○<# (*Memory::0 = 1) + 2 #>
    Parsing「1」→[0x1]
    Parsing「0」→[0x0]
    Parsing「Memory::」→[0x3430000]
    Parsing「*」→[0x1]
    Parsing「2」→[0x2]
    Parsing「+」→[0x3]

    ×<# (*(Memory::0) = 1) + 2 #>
    Parsing「1」→[0x1]
    Parsing「0」→[0x0]
    Parsing「Memory::」→[0x3430000]
    Parsing「2」→[0x2]
    Parsing「+」→[0x3430002]
    Parsing「*」→[0x1]

    ×<# ([:Memory::0:] = 1) + 2 #>
    Parsing「1」→[0x1]
    Parsing「0」→[0x0]
    Parsing「Memory::」→[0x3430000]
    Parsing「2」→[0x2]
    Parsing「+」→[0x3430002]
    Parsing「:]」→[0x1]

    ○<# (([:Memory::0:] = 1)) + 2 #>
    Parsing「1」→[0x1]
    Parsing「0」→[0x0]
    Parsing「Memory::」→[0x3430000]
    Parsing「:]」→[0x1]
    Parsing「2」→[0x2]
    Parsing「+」→[0x3]


ちなみにIsBadXxxPtr()はVista以降obsoleteとなっているようですが良いのでしょうか?(VirtualQueryでも使えというのだろうか
RemarksとMSDNブログの社員エントリーで言及される理由は、SEHで実際にアクセスするので別スレッドのスタックガードページを破壊しうるとか。
> Dereferencing potentially invalid pointers can disable stack expansion in other threads.
とするとCライブラリ依存になるtry-exceptはさておき、VEHを使おうが(これはこれで適切なアンワインドの仕方がよく分からないけど)、
アクセス違反ひいてはWin32例外を自前で処理するなというように聞こえますが、WriteProcessMemoryにしろ任意アドレスだけど内部処理どうなのだろう
(使うなとは書いてあるが…今だ存在しているし互換性のために残されるだろうけど…
記事編集 編集
Re: SpoilerALの修正パッチ (No.273)
投稿日 : 2017/03/24(Fri) 04:03
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>272 七星さん
どぉもです。直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.274)
投稿日 : 2017/03/24(Fri) 05:42
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 7BSCo/bEOmOaEcZfRuR7L1
参照先
>>273 変態紳士さん

毎度の更新ありがとうございます。

>>memmove
おお、サイズ単位で値を入れ替える機能ですか、また便利そうな機能が…
私の環境ではサンプルSSGは問題なく機能しているかと思います。


あと、七星さんのバグ報告の「ポインタ変換演算子や間接演算子+括弧〜」と同一のバグだと思っていたら、どうやら別件のバグみたいだったので報告させて頂きます。
修正パッチ(2017.03.21)だと [!R($Val+1),*(!] 〜 [!R($Val+1),)!] は機能するのですが、修正パッチ(2017.03.23)、(2017.03.24)だと機能しないようです。
それと、確認用のサンプルSSGも添付しておきます。

記事編集 編集
Re: SpoilerALの修正パッチ (No.275)
投稿日 : 2017/03/24(Fri) 20:53
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>272 dipperさん
直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.276)
投稿日 : 2017/03/24(Fri) 21:22
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 7BSCo/bEOmOaEcZfRuR7L1
参照先
>>275 変態紳士さん

早速の対応ありがとうございます。
>>274に添付したSSGは問題なくなったのですが、別のSSGだと何故かうまく展開出来ないようです。

動作確認したゲームはダーク・アミュレット体験版です。
症状を確認したSSGと一応、正常動作の確認できた「winmm.dll」を添付しておきます。(削除しました)
ご確認をお願い致します。

それと諸事情により、>>267の添付ファイル3と>>271のSSGを削除して頂ければありがたいです。


※追記
諸事情により、変態紳士さんに削除して頂いたのサンプルSSGを再アップしておきます。
サンプル対象ゲームは「呪いの魔剣に闇憑き乙女 体験版」です。

添付ファイル2=バブルソートのサンプル (>>267の添付ファイル3)
添付ファイル3=memmoveのサンプル    (>>271の添付ファイル)

記事編集 編集
Re: SpoilerALの修正パッチ (No.277)
投稿日 : 2017/03/24(Fri) 22:23
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>276 dipperさん
どぉもです。
[味方][1:-]-[スキル]が展開出来なかったので、それを対象に修正してみました。

>>267の添付ファイル3と>>271のSSG
削除しました。利用者が現行のSSGと混同してしまう可能性、という事かと思います。
ただ、memmove は HowToSSG に無ければサンプルも無い状態に・・・(ソートとかは実際のゲームじゃないとサンプルとして無理があるので)
分かる人には分かる隠しコマンドという事で。。。

※追記
製作中だと修正とか(差し止めたい時も)問題があるだろうし、部分的な機能(ソートしかない状態)にすればいい気もしてきた。
ただ、その場合はベースアドレスを流用するから、現時点のような問題が解消するわけじゃないですね。
記事編集 編集
Re: SpoilerALの修正パッチ (No.278)
投稿日 : 2017/03/24(Fri) 22:47
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 7BSCo/bEOmOaEcZfRuR7L1
参照先
>>277 変態紳士さん

素早い対応ありがとうございます。
正常に動作するようになりました。

> >>267の添付ファイル3と>>271のSSG
> 削除しました。利用者が現行のSSGと混同してしまう可能性、という事かと思います。
対応ありがとうございます。
いやただ、製品版で動作を確認していないような書き込みに加え、いらない子(SSG)と言われたので、ただの…(略

> ただ、memmove は HowToSSG に無ければサンプルも無い状態に・・・
> 分かる人には分かる隠しコマンドという事で。。。
あ、そう言えばそうですね…
一応、>>267の添付ファイル3と>>271のSSGは持っているので、その内>>276辺りに私の方で改めて添付しようかと…
記事編集 編集
Re: SpoilerALの修正パッチ (No.279)
投稿日 : 2017/03/24(Fri) 23:47
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
>>変態紳士さん
修正お疲れ様です。間接操作はファンネル以外で使える機会有るかなぁと考えていたら
[repeat]でリストファイルを作りたかった思い出が蘇り、
nocacheとwhileがある今なら…と碌でもないサンプルが出来ました

リスト抽出をトリガーに、リソースセクションの分割された文字列テーブルをローカルメモリに整列します
これを応用すれば、飛び飛びなメモリを圧縮したり、ポインタが混ざっていても対応できるゥ!

惜しむらくはリスト抽出のパラメータがアドレス以外定数なことでしょうか

StrSize = TStringDivision::ToULongDef(tmpV[2], 1);
RowSize = TStringDivision::ToULongDef(tmpV[3], 1);
StepSize= TStringDivision::ToULongDef(tmpV[4], 1);

この辺りをIsNocacheならばTSSGCtrl::Parsing()で算出するのは如何でしょう?(特にRowSize
Valには実引数として抽出リストのAddress = GetAddress(SSGS, tmpV[1]);を与える感じで。
リスト抽出はunicodeも未対応でしたっけ…行毎にWideCharToMultiByteしなくちゃならなくなるのかな

サンプルだとlistでも十分ですが、やはり公差に限定されないd_listで重宝しそうです
連式の抽出リストを構築したり、演算済みのnumリストを作っても良いでしょうけど、
リストと演算は分離が合理的ですし、符号拡張や速度的にも、数値行に[io_fep]と[funnel]を適用したい所です…
(そういえばTSSCalcは::ToByteCodeでも元からSSGC.CheckIO_FEPが掛かるので、list_fepは一貫性に欠けているような
 …コーディング汎用向けにfep演算子とかfunnelコール、memcmp/strcmp関数とかあったら役に立つケースとか有るだろうか…?


あ、ところで「著作権を放棄します。」なんて書かれていますが、過去版含めミラーを設けたりしても宜しいでしょうか?

記事編集 編集
Re: SpoilerALの修正パッチ (No.280)
投稿日 : 2017/03/26(Sun) 02:12
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
一部のリストを free_list と共有できるようにしました。

HowToSSG では以下のような記載になっていますが、
――――――――――――――――――――――――――――――――――――――――
ダブルリスト項目
[subject]項目名: d_list, アドレス, リストファイル1, 最小値, 最大値, リストファイル2, オフセットか
――――――――――――――――――――――――――――――――――――――――
この「リストファイル1」の前に「+」を付け、
「リストファイル1」「リストファイル2」共に free_list のグループを指定する事になります。

グループ側で
[group]ばいとれつのりすと
,0x20=C03A
[group]
などと「,」で始まりバイト列を指定している場合は共有できません。

以下のような書式のグループが対象になります。
[group]ふりーりすと
1=チェーンソー
2=エクスカリバー
3=当たりが出たらもう1本
4=芝刈り機
[group]


>>279 七星さん
どぉもです。

>著作権を放棄
はい。
誰かがブランチを作ったとか、別の場所でアップロードされたとか、海外等でウィルスが混ざったとか、
色々と面倒です。
ゲーム製作側から苦情があっても面倒ですし。
権利は初めから無かった事にしています。

>過去版含めミラー
ログですか?
本体のファイルは過去のものが利用できると面倒だと思ったり。(それ以外は大丈夫です)
ただ、開発が1か月くらい止まっていれば終了しているので、その後は何をしていただいても結構です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.281)
投稿日 : 2017/03/27(Mon) 01:48
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先 https://github.com/sceawung/source/commit/master
>>280 変態紳士さん
然る御方は「ソースがドキュメントだ」と仰っていましたし
変更履歴を視覚化しておくとユーザーもバグ報告が捗るかなと。
とりあえずソースコードのみgithubにミラーリングしてみました

(旧DLLもバグ混入の時期特定やフォールバック用にどうかなと思うのですが。
 ETagを用いて再DLを制御しているのでサーバーへの負荷は最小限のはず…
記事編集 編集
Re: SpoilerALの修正パッチ (No.282)
投稿日 : 2017/03/27(Mon) 18:22
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
d_listでfree_listを参照できるようになったようですね。
ありがとうございます。

ところで
@Game->weapon_listのように
@をつけた状態で=より前の部分、=のあとの部分を参照するには
どうすれば良いでしょうか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.283)
投稿日 : 2017/03/27(Mon) 19:26
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>282 RICK(管理人)さん
@で指定する先はバイト列です。
元々の動作を確認して頂ければと思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.284)
投稿日 : 2017/03/27(Mon) 19:45
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 7BSCo/bEOmOaEcZfRuR7L1
参照先
>>283 変態紳士さん

横から失礼します。
勝手な想像ですけど、RICK(管理人)さんは下記の様にしたいといった事ではないでしょうか?


[group]status_ssr
[subject][!@Game->actors_list_1,$Val!]:dir
[replace]_[!@Game->actors_list_2,$Val!]*4,Game->status_info
[back]
[/group]

[group]actors_list_1
actors1

actors10
[/group]

[group]actors_list_2
1

10
[/group]



[group]status_ssr
[subject][!@Game->actors_list,$Val!]:dir
[replace]_[!@Game->actors_list,$Val!]*4,Game->status_info
[back]
[/group]

[group]actors_list
1=actors1

10=actors10
[/group]
記事編集 編集
Re: SpoilerALの修正パッチ (No.285)
投稿日 : 2017/03/27(Mon) 21:23
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : ybAdnDHIbTvhaygQtEj2f1
参照先
>>283 変態紳士さん
d_listに@を使う構文があることを失念しておりました。
混乱を招いてしまったことにお詫びを申し上げます。

>>284 dipperさん
フォローありがとうございます!まさにその通りです。
最初からそのように書くべきでしたね。
記事編集 編集
Re: SpoilerALの修正パッチ (No.286)
投稿日 : 2017/03/27(Mon) 21:42
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>285 RICK(管理人)さん
それは free_list でも d_list でもないです。

ネタを仕込むようなタイミングではないので、作成中も含めてNGという回答が多くなります。
作成後はバグ潰しか別の案件に移行し更に雑な返事になります。
これは人によってマージンが違いますが、私の場合は余裕を作成に割り当てるタイプのようで。
(作っている内容を二転三転させたくないというのもありまして)

ただ、そのリストは6.0のソースコードでは全く別の場所だと思いますが、確認はしてみます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.287)
投稿日 : 2017/03/28(Tue) 01:22
投稿者 レン
ID情報 : mYmppguXte34qTLiIKPFP1
参照先
>変態紳士さん
いつもお世話になっております。
いつのパッチが原因かはわかりませんがパッチをあてたところ「 呪いの魔剣に闇憑き乙女」のSSGを展開した際ターン数や所持金などのゲーム内の数値や文字?を読み込んで表示する項目を開くと「アドレス8FAC00E0アドレス8FAC00Eに対する読み込み違反が起きました。」(アドレス数値は毎回変わる)というエラーが表示されるようになりました。
一度エラーが出て閉じるを押してそのままやっても普通にSSGは使えたのですが一度SpoilerALを終了させてもう一度起動すると同じようにエラーが出ます。
また同様のエラーが出ていた別ゲームの「遊聖天使プリマヴェールDrei ダークミッション」のP吉様のSSGでは最新のパッチをあてたところ数値や文字を表示する項目を開くとエラーなどは出ずにSpoilerAL自体が落ちるようになりました。
ほかに「Venus Blood -RAGNAROK-」「天秤のLaDEA」「てぃんくるクルセイダーすPSS」で確認しましたがやはり数値や文字を表示する項目を開くとSpoilerALが落ちました。
持っているSSG全部を試したわけではないですがつい最近の物である「遊聖天使プリマヴェールDrei ダークミッション」や「Venus Blood -RAGNAROK-」のSSGが使えず落ちることを考えるとそれ以前のSSGは全滅だと思います。
対象ゲームを起動せずにSSGを開いた場合当然項目は数値が「0」だったり「????」だったりですがエラーが出たりSpoilerALが落ちたりといったことはないです。
少なくとも「Venus Blood -RAGNAROK-」の製品版修正パッチ1.05がでた際にamateur様の最新SSGで動作確認をして問題がなかったのを覚えていますので恐らく2017/02/14以降の何れかのパッチが原因ではないかと思います。

尚こちらのOSはWin8.1の64bitです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.288)
投稿日 : 2017/03/28(Tue) 17:57
投稿者 ナス◆7u.0h1NDCYM
ID情報 : bxr0JMq7V6PP1zFvhmJG61
参照先
>>287 レンさん
おそらくセキュリティソフトが原因ではないかと思います。
私も2月末にそういったエラーが出て、SSとって報告しようとしたときにふと思い試したところ改善されたので。
私と同様であれば、SpoilerAL.exeもしくはそれが保存されたフォルダをセキュリティソフトの例外に設定すれば改善されると思います。

追記
エラーのSSのせていましたがエラーさせて確認したら、その頃と変わっていたので削除しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.289)
投稿日 : 2017/03/28(Tue) 19:15
投稿者 レン
ID情報 : mYmppguXte34qTLiIKPFP1
参照先
> ナス◆7u.0h1NDCYMさん
アドバイスありがとございます。
ご指摘通りセキュリティソフトの例外設定に追加したところ問題なく作動するようになりました。
他の方はそういった症状がでてない様でしたので何が原因なんだろうと思いいろいろ試してたのですが、すでに例外設定したと思いこんでいたのでセキュリティソフトは頭から抜けてました。
本当にありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.290)
投稿日 : 2017/03/28(Tue) 21:27
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>284 dipperさん
>>285 RICK(管理人)さん
左辺を「*」、右辺を「+」で参照するようにしました。
可読性(その時の気分?)のようなものですが、「@*」と「@+」でも構いません。

d_list に「*」は不要です。
それから名前の先頭に使えない文字となります。
機能拡張時の衝突を避けるため、先頭には記号を付けない方が無難かもしれません。

[group]status_ssr
[subject][!+Game->actors_list_1,$Val!]:dir
[replace]_[!*Game->actors_list_2,$Val!]*4,Game->status_info
[back]
[/group]

[group]actors_list
1=actors1
2=actors2
3=actors3
[/group]
記事編集 編集
Re: SpoilerALの修正パッチ (No.291)
投稿日 : 2017/03/28(Tue) 21:43
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先 https://github.com/sceawung/source/commit/a31390765661f0ca9288e65172879eca443e8e07
些細なバグを発見したので↑の参照先に。文字列項目がWCHARと判断される条件が、
7文字かつunicで始まるか、4〜7文字目がode\0、と奇妙なことになっています。

ついでに抽出リストがnocacheのとき限定でパラメータをParsingするサンプル
(既定変数として$Listに抽出リストのアドレスを与え、WCHARもサポートする。除算は括弧内で可能?
 あとオマケとしてメニューのバージョン情報をちょろまかすコード―winmm.c
d_listの値リストが書き込む値単体の時io_fepを適用するサンプルが出来ました

相変わらずオリジナルソースとの整合性を考えていないLow-Level前提コードですが。
よく考えたら間接操作が実装されたおかげで、[io_fep]さえサポートすれば[funnel]非対応のままでも
入力値への演算で$Addr、$Idx、$Val、$Size等を活用すれば代替できるかしら…

(項目オプションに,fep,funnelとかマヌケだし…連式だとリストインデックスくらいしか与えられないし
 というかダイアログ項目だとlistやd_listにはSettingが呼ばれてない…?
記事編集 編集
Re: SpoilerALの修正パッチ (No.292)
投稿日 : 2017/03/28(Tue) 21:44
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : GFHGBbQgdBMErV65/HyA90
参照先
>>No.290 変態紳士さん
対応ありがとうございます。
おかげでリストファイル作成の手間が省けるようになりました。

>d_list に「*」は不要です。
>それから名前の先頭に使えない文字となります。
>機能拡張時の衝突を避けるため、先頭には記号を付けない方が無難かもしれません。

もし名前の先頭に「*」を使いたい場合は「\*ローラのリボン」のようにすればOKですか?


【質問】
MName:nulは以下のプロセスに対応していますか?
ただし、[process]で設定されていない場合に限っての質問です。
@「メモリ・プロセス」⇒「対象のプロセスを追加」で選択したプロセス
A「SpoilerALプロセス選択ツール」で選択したプロセス

【背景】
最近のDL版で採用されるプロテクトでは本命プロセスが
ランダム文字列で生成される場合があります。
例としては【改造依頼】呪いの魔剣に闇憑き乙女のすれのレスNo.32が該当します。
記事編集 編集
Re: SpoilerALの修正パッチ (No.293)
投稿日 : 2017/03/28(Tue) 21:53
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>287 レンさん
>>288 ナスさん
再現もしなければ原因も分からなかったのですが、セキュリティソフトと聞いて納得です。
ナスさん、ありがとうございました。

昔はアンチウイルスソフトを併用すると片方を削除する事があったけど、
マイクロソフトの「悪意のあるソフトウェアの削除ツール」はセキュリティソフトを悪意と認識しないようです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.294)
投稿日 : 2017/03/28(Tue) 22:27
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>291 七星さん
>些細なバグを発見したので
ソースを見ないと見つからないバグでした。ありがとうございました。

>抽出リストがnocacheのとき限定でパラメータをParsingするサンプル
>メニューのバージョン情報
>d_listの値リストが書き込む値単体の時io_fepを適用するサンプル
どうもです。しばらく読んでから取り込もうと思います。

>>292 RICK(管理人)さん
>もし名前の先頭に「*」を使いたい場合は「\*ローラのリボン」のようにすればOKですか?
わかりません。
6.0のソースコードにエスケープシーケンスが使える場合と使えない場合があります。
人が書いた6.0のコードを読んで動作を予測する事は、動作結果のように確実性がありませんので、
この場合はコードを読む読まないに関わらず実証された事柄が全てかと思います。

>MName:nulは以下のプロセスに対応していますか?
>[process]で設定されていない場合に限って

>@「メモリ・プロセス」⇒「対象のプロセスを追加」で選択したプロセス
対応しない気がしていましたが、やってみなければ分かりません。

>A「SpoilerALプロセス選択ツール」で選択したプロセス
根拠を求めればSpoilerALプロセス選択ツールを逆コンパイルしてみなければ分かりません。
しかし、根拠とは無関係に動作結果が正解となります。
記事編集 編集
Re: SpoilerALの修正パッチ (No.295)
投稿日 : 2017/03/28(Tue) 23:36
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : GFHGBbQgdBMErV65/HyA90
参照先
>>No.294 変態紳士さん
>>MName:nulは以下のプロセスに対応していますか?
>>[process]で設定されていない場合に限って

>>@「メモリ・プロセス」⇒「対象のプロセスを追加」で選択したプロセス
>対応しない気がしていましたが、やってみなければ分かりません。

>>A「SpoilerALプロセス選択ツール」で選択したプロセス
>根拠を求めればSpoilerALプロセス選択ツールを逆コンパイルしてみなければ分かりません。
>しかし、根拠とは無関係に動作結果が正解となります。

とりあえず、プロセス名はウィンドウクラスで取得するのが無難そうですね。
ウィンドウクラスを指定すれば本命プロセスの名前がランダムであろうと対応できそうなので。
ウィンドウクラスはClsInfoで取得するのが最も手軽です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.296)
投稿日 : 2017/03/28(Tue) 23:55
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 7BSCo/bEOmOaEcZfRuR7L1
参照先
>>290 変態紳士さん

パッチの更新ありがとうございます。
既に実装されているとは、驚くばかりです。

とりあえず現行の修正パッチだと下記のリストはd_list、左辺、右辺で機能するようです。
動作確認用にSSGを添付しておきます。
まあ、相変わらずテキトーに作成したので、変態紳士さんの想定していた形かは不明ですけど…


// ぐるーぷ*なし/右辺*なし
[group]actors_list_01
0=actors0
1=actors1
2=actors2
3=actors3
[/group]

// ぐるーぷ*なし/右辺*あり
[group]actors_list_02
0=*actors0
1=*actors1
2=*actors2
3=*actors3
[/group]

// ぐるーぷ*あり/右辺*なし
[group]*actors_list_01
0=actors10
1=actors11
2=actors12
3=actors13
[/group]

// ぐるーぷ*あり/右辺*あり
[group]*actors_list_02
0=*actors10
1=*actors11
2=*actors12
3=*actors13
[/group]

記事編集 編集
Re: SpoilerALの修正パッチ (No.297)
投稿日 : 2017/03/29(Wed) 02:34
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
ファイル指定のファイル名に*や+を接頭して切り出し制御ってことですよね
#(ナンバーサイン)や$('#'+1、BASIC文字変数、Regex末尾記号)はどうかなと思いましたが、
いっそのこと切り出し文字を指定するようなのは…実装コストと汎用性のバランスは如何ほどか

開始文字なし、終了文字「=」で、先頭から「=」の前までを切り出し
開始文字「=」、終了文字なしで、「=」より後から末尾までを切り出し
開始文字「x」、終了文字「=」で、「x」より後から「=」の前までを切り出し

という具合に…TStringDivision周りを使えば文字だけでなく文字列もいける?
(むしろ指定する文法をどうするかが悩ましそうだ…
記事編集 編集
Re: SpoilerALの修正パッチ (No.298)
投稿日 : 2017/03/29(Wed) 06:33
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>297 七星さん
>#(ナンバーサイン)
「*」ではなく「#」を使いたかったのですが、エンディアン反転で使われていました。

全てを正規表現の外部モジュールに任せたいと思ったり。
もちろん、規模は大きく、互換も無く、過去のSSGを切り捨てるので、
本当に元も子もない話だったり。

それと>>291のコードを組み込んでみました。

※一部を訂正
記事編集 編集
Re: SpoilerALの修正パッチ (No.299)
投稿日 : 2017/03/29(Wed) 08:45
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先 https://github.com/sceawung/source/commit/e17f3f8b8af16cf3e653edcb421590db5ffd7099
>>298 変態紳士さん
練り直し有り難うございます、微妙にバグがあったので↑修正です

互換性との兼ね合いはやはり死活問題ですね…。項目ツリーを動的にするのは現実的ではないので
ローカル抽出リストの間接操作+動的サイズは∞の可能性を秘めるのではないかと期待しています

あと一応サーバーダウン等の保険としてこちらで最後に使用した添付ファイルもミラーしてみました
掲示板の添付ファイルとは最大で1時間過去のものとなりますが…(それ以前のは非公開になっていきます
>本体のファイルは過去のものが利用できると面倒だと思ったり。的にはどんなもんでしょう
記事編集 編集
Re: SpoilerALの修正パッチ (No.300)
投稿日 : 2017/03/29(Wed) 23:04
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>299 七星さん
なおしておきました。

>過去のもの
古い報告を避けたいのと、新しいDLLが評価されない事を避けたいと思いまして。
落ちるはずなのに落ちないのも修正が遅れる原因になるわけで。
ソースの方は利用者でコンパイルできる環境も少ないので問題にはならないと思います。

しかし、わざわざ用意して頂いているのなら、そのうち別の誰かがする事かもしれませんので、
干渉や抑制をしても良い事は無いかもしれません。
(想定する一つのケースとしては海外でウイルス付きで公開されたり)

個人的には古いDLLが使えない方が報告が正確かなと。
もっとも、複数人で管理するソースはこんな方法を選ぶ事も無いでしょうけど。
記事編集 編集
Re: SpoilerALの修正パッチ (No.301)
投稿日 : 2017/03/30(Thu) 01:36
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先
>>300 変態紳士さん
お疲れ様です。なるほど、確かに古い奴で動くから良いや、と報告されない可能性なんかも考えられますね。
では現状のように添付ファイルが更新されたら、古いバックアップは非公開とする設定にしておきます

懸念事項としては毎時0分のcronなので最大で1時間の遅れが生じうる事と、
指定時刻に掲示板サーバーあるいはcronサーバーが落ちていると更に遅れる可能性がありますが…。
cronサーバーは数十GBと十数万ファイルを使え、昔の契約が10年は残ってるので、その辺りは余裕のはず。

現在の仕様としてはwgetでCloudFlareが発行したクッキーとETagを併用しサーバー負荷にならない要求にしつつ
更新をチェックして、zipファイルからsource以下とreadme.txtをREADME.mdとしてcommitするようにしてあります
pushできたらリリースを新規作成して、古いリリースを非公開化、新リリースにETagのタイムスタンプ名でミラーします
※source以下に「SpoilerAL-*」とマッチするディレクトリが1つ以外の場合、一連の作業は行われません
―たかだか十数行のシェルスクリプトで実現できたので、また別の問題がありましたら遠慮無く仰ってください
記事編集 編集
Re: SpoilerALの修正パッチ (No.302)
投稿日 : 2017/03/30(Thu) 06:32
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : M2CKbGI707g1aTnYCCc6g.
参照先
>>296 dipperさん
報告が遅れてしまいました。
サンプルファイルの作成ありがとうございました。
おかげで動作確認がとれました。バグ修正時には役立っています。

>>301 七星さん
ありがとうございました。
結果的に注文をしてしまいました。
本来は権利を持たないので理解や厚意と受け取ります。

仮にスレ主が消失した時は自由にしていただく事を希望します。
記事編集 編集
Re: SpoilerALの修正パッチ (No.303)
投稿日 : 2017/03/31(Fri) 07:55
投稿者 七星◆MH.ms4.V3i2
ID情報 : p5jM6fG8hm1S92uAEZ7lB/
参照先 https://github.com/sceawung/source/commit/00cfa26eb09eda5b145dfb878deb527c801a0100
もう年度が替わる時期ですね、絶滅されてしまうのでしょうか…そして開発環境が更新されているゥ…バグというか不備があったので↑に。
インラインアセンブラにより実装される関数でプロローグコードが抑制されておらず、リスト抽出が落ちる問題と
現在値もツリーに表示する、でスライス接頭辞付きリストファイル指定に対応していない問題の修正です。
(ここでの切り出し自体は実装してないです…その前に力尽きました。しかもdでも無い方法でコード修正行いました

検証に使用した書いた本人も訳が分からなくなってきた複雑なSSGも添付しておきます
(Value.dwFileOSがd_list+free_listのスライス、StringFileInfoが動的リスト構築

記事編集 編集
Re: SpoilerALの修正パッチ (No.304)
投稿日 : 2017/04/01(Sat) 00:49
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>303 七星さん
どぉもです。
なおしておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.305)
投稿日 : 2017/04/01(Sat) 04:21
投稿者 七星◆MH.ms4.V3i2
ID情報 : BXfphnn2SudbHe170S9/m/
参照先 https://github.com/sceawung/source/commit/5827d595fd826b728171b091feebd9902624ea7f
>>304 変態紳士さん
確認できました、お疲れ様です。ちょっとした思いつきですが、↑のような感じで
値の固定ラベルが'@'なり何かだったら項目名を表示する様なのは如何なもんでしょう?
電卓で値に項目名が入ると邪魔ですが、消したり他の項目は選択がツリーでしか分からないので。

ここだと選択時にしか呼び出されないので、現在値を<# #>とかで出してると更新されないですが、
そもそもツリーへの現在値表示はSpoilerALの設定でしておいた方が(書式固定なのはともかく)分離されますし、
項目名自体をアドレースネーミングで作っている時はむしろ余分な再演算が避けられるかな、と。


それと提案というより質問みたいなものですが、エクスポートディレクトリ以外の有用性はどんなもんでしょう
現在の実装だと、転送された関数は関数アドレスではなく転送先を示す構造体のアドレスになりますよね?
場合によってはソレが欲しい時もあるでしょうし、これを解決するのは微妙な事になりそうなので…
インポートディレクトリを参照すればロード時に解決されたアドレスが取得でき…ますよね?(その関数をロードするモジュールがあれば
対象モジュールがインポートするアドレスに合わせるという意味でも、どうかなと思うのですが

あと調べきれなかったのですが、リソースディレクトリと.rsrcセクションは必ず同一になるのでしょうか?
そういえば無名のセクションがあるモジュールをぽつぽつ見かけますが…こいつらどうしたもんだろう…
記事編集 編集
Re: SpoilerALの修正パッチ (No.306)
投稿日 : 2017/04/01(Sat) 06:07
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>305 七星さん
>'@'なり何かだったら項目名を表示
なかなか良さそうです。

>エクスポートディレクトリ以外
色々ありすぎて演算子でアクセスしていいのかと思ったり。
MName::ModuleName:::ImportDirectory::関数名
とかになるんでしょうか、コロンが3つとか紛らわしいし、それに長い気が。
リソースとかアドレスが必要なものはいいとして。
にしても気力が・・・

>リソースディレクトリと.rsrcセクションは必ず同一になるのでしょうか?
保証されているかというところでは、たぶん保証されていない気がします。
たぶん、Win32APIなどはリソースディレクトリでアクセスするのではないでしょうか。
(逆汗が必要だったり)
仮にそうだとしたらセクションはコンパイラ依存だったりして。(コンパイラで .data に違いがあるので)
何にせよ、資料がなくて分かりませんでした。

>そういえば無名のセクションがあるモジュールをぽつぽつ見かけますが…こいつらどうしたもんだろう…
#か何かでインデックスにしましょうか。
ただ名前が無いものは流用できないですよね。
記事編集 編集
Re: SpoilerALの修正パッチ (No.307)
投稿日 : 2017/04/01(Sat) 07:10
投稿者 七星◆MH.ms4.V3i2
ID情報 : BXfphnn2SudbHe170S9/m/
参照先 https://github.com/sceawung/source/commit/5c600a4ff3fc3602b8aeb6dc2f4d2d506364e4b8
>>306 変態紳士さん
Debug Help LibraryのSymEnumSymbols関数はモジュールと関数の区切りが「!」でしたが、
(HMODULE):!(モジュール!関数名)」とかだと論理否定と衝突しますかね、VSデバッガにしろ「!」はファイル名に使える文字ではないのか…
実装コストに対して活用性や必須性も怪しいでしょうか(今はwhileもありますし…関数名や汎用比較用にmemcmp関数とかのが有用?

MSDNのPeering Inside the PEを眺めてみたら、DataDirectoryはセクションを見ずに済むくらいしか書かれてなく…
.rsrcにリソースがあるとは書かれていたので…とりあえずリソースは.rsrcでアクセスしておけば済むんですかね
AL側でやるとしたら精々序数でDataDirectoryの各RVAとサイズを取得するくらいでしょうか?(それはそれで簡単すぎてコーディングで済みますね

>ただ名前が無いものは流用できないですよね。
嗚呼…そうでうすね、こちらは序数だと一意性が保証できないですね


ちなみにレポジトリをドメイン移管に対応しておきました、微妙に同一コミットへ別タグが付きました

追記:
電卓定義ファイルの改行指定の参照先がモードになっている不具合の修正を参照先にしたためました、しかしこれ縦幅が機能しないような。

あとfree_listといえば「[repeat]SSRファイル, ループ値リストファイル」という書式でも使える様に修正しようとしたら
6.2だとそもそもこの書式が機能せず、[!$Val!]が奇妙な文字に置換されたり、落ちるのですが、オミットされていたりしますか?
オリジナルの6.1ではループ値リストファイルには「File::ライブラリファイル名->グループ名」のように専用接頭辞が付くアレです。

ところで、一つ気になったのですが…「=」と「=>」は同じ優先順位ですが、「a = 1 => b;」とした時は
同順位なので出現順序から「=」の結合法則(右から左)に従い、「=>」が先に評価されるという理解で良いのでしょうか?
「=>」は専ら文末に書かれるので最後かと思いましたが、同処理の演算子で順位が異なるのも可笑しいというものでしょうか
(もっとも今更演算順序を変える訳にもいかないでしょうけど

更なる追記:
追加修正として電卓項目の現在値前部補足文字が「_」の時だけでなく「_」で始まる時も項目名を非表示にして、
「_」で始まる2文字以上の時は、その2文字目以降をツリー現在値の書式指定として扱うようにしてみました。
「[subject]SecurityCookie/_[%p]/@:calc」とすると、現在値もツリーに表示する、でポインタとして16進数8桁で表示されるってな具合です。

ついでにツリー現在値が「[..]」になってしまう項目に対し、TSSArg*->ToString仮想メソッドを呼び出し、その返り値を現在値とするように。
ビットリストやダブルトグル項目が「[11111000000000000000000000000000]」と2進表示になります。(ビットリストは下位から上位へ並ぶが…

時に、条件演算子を使えば代替可能な話ではありますが…Pythonの「and」「or」演算子のような
真偽値を返すのではく、オペランド自体をショートサーキットで返す論理演算子の新設は如何でしょうか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.308)
投稿日 : 2017/04/04(Tue) 00:15
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>307 七星さん

>インポートディレクトリ
現状の・・・

[process]SpoilerAL.exe

(略)

[subject]<# MName\:\:winmm.dll\:!kernel32.dll!GetCurrentProcess #>/現在値/_:calc, 0, 0, 0xFFFFFFFF, unsigned
[subject]<# MName\:\:winmm.dll\:!GetCurrentProcess #>/現在値/_:calc, 0, 0, 0xFFFFFFFF, unsigned
[subject]<# MName\:\:nul\:!kernel32.dll!ReadProcessMemory #>/現在値/_:calc, 0, 0, 0xFFFFFFFF, unsigned
[subject]<# MName\:\:nul\:!ReadProcessMemory #>/現在値/_:calc, 0, 0, 0xFFFFFFFF, unsigned
[subject]<# MName\:\:nul\:!oleaut32.dll!4 #>/現在値/_:calc, 0, 0, 0xFFFFFFFF, unsigned
[subject]<# MName\:\:nul\:!oleaut32.dll!(4) #>/現在値/_:calc, 0, 0, 0xFFFFFFFF, unsigned
[subject]<# MName\:\:nul\:!oleaut32.dll!(3+1) #>/現在値/_:calc, 0, 0, 0xFFFFFFFF, unsigned
[subject]<# n=4;MName\:\:nul\:!oleaut32.dll!(n) #>/現在値/_:calc, 0, 0, 0xFFFFFFFF, unsigned

SpoilerAL.exe が ReadProcessMemory をインポートすると
winmm.dll は ReadProcessMemory をインポートしていないという結果になります。

>「[repeat]SSRファイル, ループ値リストファイル」
修正しました。

>「a = 1 => b;」
想定していません。右辺代入が珍しいので。

>%p
Borland C++ Builer 6 は古いので無いですね。
snprintfを拡張した方がいいのでしょうか。

他、しばらく拡張できません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.309)
投稿日 : 2017/04/04(Tue) 15:23
投稿者 七星◆MH.ms4.V3i2
ID情報 : BXfphnn2SudbHe170S9/m/
参照先 https://github.com/sceawung/source/commit/95f95e82cb4cfb8e2f755fc3fafa889787ed05cb
>>308 変態紳士さん
年度始めという時期に思い付きまで形にしてくださって有り難うございます

>SpoilerAL.exe が ReadProcessMemory をインポートすると
>winmm.dll は ReadProcessMemory をインポートしていないという結果になります。

これは何れかのインポート以外NULLになるという事でしょうか?試しに↓の様に書いてみましたが

[subject]<# (MName::kernel32.dll ::ReadProcessMemory),%08X #>:calc
[subject]<# (MName::nul :!kernel32.dll!ReadProcessMemory),%08X #>:calc
[subject]<# (MName::winmm.dll:!kernel32.dll!ReadProcessMemory),%08X #>:calc


全て同じアドレスが表示されましたし、示して下さった例でも全てアドレスが表示されましたが、また別の話でしょうか
そういえば見落としていたら申し訳ないですが、斯様に括ると<# #>以外においても
:”等のエスケープがいつからか不要になったのは仕様と捉えて問題ないですか?


[repeat]に関しては0時前のをDLし直してみたのですが、File::指定は何故かまだStackHashで死にました。
精査してみたところTSSGCtrl_ReadSSRFile_ReplaceDefineが怪しい気がして…
とりあえず「lea ecx, [tmpS]」→「lea ecx, [edx]」で一応動きましたが
これだと元リスト自体が置換されてしまうでしょうか、<ebp - 68H>…どこで確保されたのだろう
参照先の様に“bcb6_std_string_assign”→“bcb6_std_string_ctor_assign”としても動きましたが、これで良いのでしょうか

>想定していません。右辺代入が珍しいので。
確かに、優先順位が同等で結合法則が異なる演算子がある言語は浮かびません。
括弧で明示するか、そもそも混在させない方が良さそうですね。

>Borland C++ Builer 6 は古いので無いですね。
アレ…?私の環境では0x004AE7A0にぶん投げるだけで「[%p]」も普通にフォーマットされましたけど、これがTStringDivision::ToStringで実装はsnprintfですよね…?
何処かですり替わっているのでしょうか。どのみち「%08X」で済みそうな気もしますが…No.307は後々用にリベースして実装して下さった'@'を除き、参照先を更新しておきました
(レポジトリの同一コミットに別タグがポコポコ付いていますが、nginxの変遷と共にETagフォーマットが変化したと思われ、これは元々想定していたのでミラーに影響はありません
記事編集 編集
Re: SpoilerALの修正パッチ (No.310)
投稿日 : 2017/04/04(Tue) 17:53
投稿者 dipper◆LEFxdWWYR3c
ID情報 : O5n7NaM.sKqTvD.RyfyO8.
参照先
>> 変態紳士さん

毎度の更新ありがとうございます。
不具合らしき所があったので、ご報告させて頂きます。

どうやら[!*ssl->〜,$Val!]が機能していないように思えます。
「*」はもう不要なのかな? と思い[!ssl->〜,$Val!]で試したところ、
こちらは[repeat]の$Val値(16進数)が返っているようです。

一応、確認用のSSGファイルを添付しておきますので、
お時間のある時で構いませんので、ご確認お願い致します。

記事編集 編集
Re: SpoilerALの修正パッチ (No.311)
投稿日 : 2017/04/05(Wed) 19:35
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>309 七星さん
>インポート以外NULLになるという事でしょうか
確認したら動作するみたいです。
まだ何か問題が残っていそうな気がしますが、こんな感じでいいのでしょうか。

>斯様に括ると<# #>以外においても
>“:”等のエスケープがいつからか不要になったのは仕様と捉えて問題ないですか?
副次効果ですが検索方法が変わらない限り使えます。(準仕様?)

「memmove(dest, src, count)」というC言語の書式がありますが、
電卓のアドレスに使うと「,」が項目引数の区切りになり、以前は検索方法が干渉していました。
これを回避するため、項目の「,」は「(」と「)」のペアがゼロ階層の箇所を見つけるように変更しています。

ソースは以下です。
"source\SpoilerAL-winmm.dll\OptimizeStringDivision\TStringDivision_Half.c"
"source\SpoilerAL-winmm.dll\OptimizeStringDivision\TStringDivision_List.c"

元々のBorlandのアセンブリは汎用的に使うとボトルネックになるし、特定の場所から呼ばれるだけなので置き換えました。

>ebp - 68H
既にスコープで破棄された std::string でした。
生成と破棄を行うように変更しました。

>%p
記憶が曖昧かも。
使えたら問題ありません。

>>310 dipperさん
直しておきました。
1行で直るタイプでした。
テスト用のSSGをありがとうございました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.312)
投稿日 : 2017/04/05(Wed) 20:37
投稿者 七星◆MH.ms4.V3i2
ID情報 : BXfphnn2SudbHe170S9/m/
参照先 https://github.com/sceawung/source/commit/6e8211ce57b79dd0aa812f483e6822a69731044f
>>311 変態紳士さん
[repeat]でのFile::指定、並びに指定されたリスト内での{define}参照、両方確認できました、お疲れ様です。
やはりエスケープ云々はTStringDivision周りの根本的な梃入れに因る物でしたか、現状は実装上の仕様ということですね

[subject]<# ((MName::kernel32.dll)::HeapAlloc),%08X #>:calc
[subject]<# ((MName::nul):!kernel32.dll!HeapAlloc),%08X #>:calc
[subject]<# ((MName::ntdll.dll)::RtlAllocateHeap),%08X #>:calc


[process]をSpoilerALに↑こんな事をしてみました。

Parsing「kernel32.dll」→[0x75090000]
Parsing「HeapAlloc」→[0x7515A495]
--------
Parsing「nul」→[0x400000]
Parsing「kernel32.dll」→[0x0]
Parsing「HeapAlloc」→[0x7730E0C6]
--------
Parsing「ntdll.dll」→[0x772E0000]
Parsing「RtlAllocateHeap」→[0x7730E0C6]


となって::HeapAllocが転送情報を指す一方、:!kernel32.dll!HeapAlloc
転送先である::RtlAllocateHeapと同じ関数アドレスを示してくれたので、目論見は達成できる様です

追記:
(2017.04.05)で混入したバグの修正と、(2017.04.06)で実装して下さった現在値MODで、前部捕捉文字が「_」1文字の時
ツリー現在値まで実質非表示にしてしまう問題、実数電卓において文字列関数の呼び出しミスが復活する問題、
[..]になる項目でDrawStrへ既に入っている項目名を削ってしまう問題のやっつけな修正、を参照先に。
(「case 5:// atBOOL_VECTOR」はbreak;し忘れたのではなく、それがメイン―むしろそれ以外は必要ないかもしれない―という印で…申し訳ない
記事編集 編集
Re: SpoilerALの修正パッチ (No.313)
投稿日 : 2017/04/07(Fri) 22:56
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>312 七星さん
どぉもです。
直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.314)
投稿日 : 2017/04/08(Sat) 04:59
投稿者 七星◆MH.ms4.V3i2
ID情報 : BXfphnn2SudbHe170S9/m/
参照先 https://github.com/sceawung/source/commit/66920a6ac2495db2962bb6dd4fcf3445258e7794
>>313 変態紳士さん
ビットリスト並びにダブルトグルのツリー現在値がバッチリ表示されました、お疲れ様です。
デバッグログも解りやすくなりましたし、ヒープリストにも再び手が入る兆しが…?セキュリティソフト対策でしょうか
ビルドから除外を切り換えて、4種を試してみましたが、Windows7 64bitでは何れも同じヒープリストになりました。
Heap32First()を使用するLoadHeapList無印は相変わらずRGSS等で重いですが、他3種はすこぶる快適です。

しかしながら…新たに添付してくださったファイルでも、電卓のツリー現在値フォーマット部分はスタック修正しか見受けられないのですが…
一緒くたにTStringDivision::ToString(unsigned long, const char*)へ投げてしまうと、No.216-224で修正した問題が復活してしまいます。

また、前部補足文字には元から「アンダーバー(_)を指定すると何も表示しません。」という仕様があります。
従って2文字以上の時に限定しないと、ツリー現在値の書式指定ではなく、前部補足文字を非表示にしようとして
_”としているSSGは、前部補足文字のみならず、ツリー現在値まで実質非表示になってしまいます。

ついでにUnicode文字列項目で指定バイト数を超えて書き込んでしまう問題と、末尾に付加するバイト列がNULL文字以外の時にstringに対しchar*扱いの切り落としになっている問題、
バッファのUnicode向け調整(無理矢理)、おまけとしてパディング領域が有ったので適当に正規化を施してみました。書き込みとダイアログを共通化でき…たはず。
記事編集 編集
Re: SpoilerALの修正パッチ (No.315)
投稿日 : 2017/04/09(Sun) 02:29
投稿者 dipper◆LEFxdWWYR3c
ID情報 : O5n7NaM.sKqTvD.RyfyO8.
参照先
>>311 変態紳士さん

毎度の更新ありがとうございます。
修正パッチ(2017.04.09)でも正常に機能している事が確認できました。

それと、早急に対応して頂いたのに、返信が遅くなってしまい申し訳ありません。
キーボードが昇天してしまったので、今頃になってしまいました…
記事編集 編集
Re: SpoilerALの修正パッチ (No.316)
投稿日 : 2017/04/09(Sun) 13:16
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>314 七星さん
どぉもです。直してみました。

>>315 dipperさん
猫が気に入ったキーを外したのかも。
記事編集 編集
Re: SpoilerALの修正パッチ (No.317)
投稿日 : 2017/04/09(Sun) 22:37
投稿者 七星◆MH.ms4.V3i2
ID情報 : BXfphnn2SudbHe170S9/m/
参照先 https://github.com/sceawung/source/commit/50a0e7c2e0ba7eb647c838ee5c7c58899ee5eba6
>>316 変態紳士さん
度々の更新、重ね重ね有り難うございます。th32HeapIDの方は妥当性を検証して使用する様にしたのですね
Heap32First()するのがSpoilerALだけなら軽いですし、良さそうです。改めてAPI内部を調べてみたら、
以前仰った様にRtlCreateQueryDebugBuffer,RtlQueryProcessDebugInformation,RtlDestroyQueryDebugBufferが毎回呼ばれていました

そして…小出しに仕事を増やすような真似になって申し訳ないですが、アドレスネーミングのfree_list部分で

+#if defined(FIX_PARSER) && FIX_PARSER
+ ReplaceDefine(&attributeSelector, &tmpS);
+#endif


とされている所、ここは所謂動的展開でattributeSelectorではなくTSSGSubject*->attributeを参照しないと置換されない様に思いますがどうでしょう
以前[group]側は未検証と仰っていた部分でしょうか、他の動的展開部分も同じ様な実装になっていると見受けられますが…
ついでにd_listへ使えるfree_list書式を、アドレスネーミングのfree_listでも対応させ、ループ値リストファイルも同様にしてみました。
そういえば[repeat]がループ値リストファイル指定の時、$Idxが未定義なのは未実装ということで仕様ですよね?

ところで、Windows 10 Creators Updateに合わせ、Windows SDKも10.0.15063.0が公開されたみたいです
UWP用とデスクトップ用に分離したっぽく、デスクトップ用SDKのみだとインストール容量が随分と減りました

追記:[subject]項目名:split,labelまたはrollで、パラメータ1が空なら項目名を、さもなくば置換して描写文字とする実装も追加してみました(なぜラベルのインデント無効化されてるのだろう…
    (アドレスネーミング専用のツリー項目や、[define]の中身を区切り・表示に使えるかなと。オペランドを返す論理演算子はこんなので良いのだろうか―おまけで書式の解放、%nで死ぬのはご愛敬

(2017.04.10)版のTSSGCtrl_ReadSSRFile_ReplaceDefine.asm、tmpSのデリファレンスが過剰ですリターンアドレスが逆です、修正・実装ありがとうございます
記事編集 編集
Re: SpoilerALの修正パッチ (No.318)
投稿日 : 2017/04/14(Fri) 20:25
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>317 七星さん
どぉもです。直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.319)
投稿日 : 2017/04/15(Sat) 05:23
投稿者 七星◆MH.ms4.V3i2
ID情報 : avY7ip41JN1Te5JnQrs0e1
参照先
>>318 変態紳士さん
お疲れ様です。細々としたバグがあったので報告です

FixRepeat/TSSGCtrl_EnumReadSSR_SwitchTmpS_0.asmの6行目
extrn @bcb6_std_string_dtor@4:dword”宣言で間接コールになりアクセス違反

NocachedMemoryList/TSSGCtrl_GetSSGDataFile_FixSetSSGDataFile.asmの135行目
test dword ptr [IsNocache], 0”となっている為、nocacheが機能していません

演算順序っぽいもの…右辺代入では起こらず
[subject]<#L var = 2 && 0; $var #>:split,label
Parsing「2」→[0x2]
Parsing「var」→[0x2]
Parsing「0」→[0x0]
Parsing「&&」→[0x0]
Parsing「$var」→[0x2]

[subject]<#L var = 0 || 2; $var #>:split,label
Parsing「0」→[0x0]
Parsing「var」→[0x0]
Parsing「2」→[0x2]
Parsing「||」→[0x1]
Parsing「$var」→[0x0]


あとは紛らわしい問題として、未定義変数インクリメントやmemmove()失敗時“〜の解析エラー。”になる、とか。
それと[repeat]の$Idxは、File::指定時のみ$Valと異なる実装になりますが、これで仕様でしょうか?

追記:
ALを終了させるとたまに対象プロセスも死ぬのですが
OnSSGCtrlCleared/OnSSGCtrlCleared.cのこれは
[allocate],,Localの物までVirtualFreeEx()していませんか?

そういえばModifyLockNameですが、TMainForm::SetCalcNowValueとの一貫性を考えると
項目名の取得先をSSGSではなく、_this->selectSubjectとした方が良さそうです(一括書き換え時はdir名が入る
記事編集 編集
Re: SpoilerALの修正パッチ (No.320)
投稿日 : 2017/04/17(Mon) 00:43
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>319 七星さん
直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.321)
投稿日 : 2017/04/17(Mon) 02:05
投稿者 七星◆MH.ms4.V3i2
ID情報 : avY7ip41JN1Te5JnQrs0e1
参照先 https://github.com/sceawung/source/blame/c5d33250/SpoilerAL-winmm.dll/extern/bcb6_std_string_assign_cstr.asm#L21
>>320 変態紳士さん
迅速な対応恐れ入ります。久しぶりにまともなSSGを組んでみましたが
概ねフル活用してみた限り、破綻無く機能していると思います

追記:組んでる最中にバグを見つけたのをすっかり忘れていました
strlen()の引数がsrcではなくdestになっている為、bcb6_std_string_assign_cstr()を使用するfep_numが正常に描写されません
(bcb6__snprintf()に戻り値があるので、負数でないときbcb6_std_string_assign_cstr_with_length()した方が?

それと以前、準仕様と仰っていた括弧内でのエスケープ不要ですが、<# #>だとFindDelimiter()には実装されていないので
ここだけ“,”がエスケープ必須となるのは整合性的にどうなのでしょう(本来はエスケープするのが仕様ですけど…
記事編集 編集
Re: SpoilerALの修正パッチ (No.322)
投稿日 : 2017/04/17(Mon) 21:48
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>319 七星さん
どぉもです。直してみました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.323)
投稿日 : 2017/04/17(Mon) 23:40
投稿者 七星◆MH.ms4.V3i2
ID情報 : avY7ip41JN1Te5JnQrs0e1
参照先 https://github.com/sceawung/source/commit/c2967684#diff-e948b5bc3396a90d3ccff098f070eeceR63
>>322 変態紳士さん
fep_numは正常に機能するようになりましたが、
[!F,!]のスタックに変更漏れがあり、機能しなくなりました
記事編集 編集
Re: SpoilerALの修正パッチ (No.324)
投稿日 : 2017/04/18(Tue) 01:03
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>323 七星さん
直しておきました。

※追記
キャッスルマイスター(解析用でしょうか?)のSSGを作っていただいたので修正しておきました。

記事編集 編集
Re: SpoilerALの修正パッチ (No.325)
投稿日 : 2017/04/18(Tue) 05:46
投稿者 七星◆MH.ms4.V3i2
ID情報 : JtWREUO0JfssILUesRR3k/
参照先 https://github.com/sceawung/source/blob/e3d1bd4/SpoilerAL-winmm.dll/Parsing/Parsing.c#L824
>>324 変態紳士さん
確認しました、ありがとうございます。準仕様が浸食していく…。
条件演算子はオペランド省略どころか、いつの間にやら文も使えたのですね(whileで代用を修正しなくては

ローカルメモリと間接操作の活用で如何にリストをハードコードせず、改造しやすく整列するかと作ってみましたが、
製品版で想定以上のデータが入ってくるとヒープオーバーフローするような粗雑な組み方だったり、
配置可能エリアは増えていくようなので、とりあえずツリー更新毎にリストアップし続けてみたり、実験色の強い物に。

追記:ふと…strl'en::'の検出が非等値になっています
記事編集 編集
Re: SpoilerALの修正パッチ (No.326)
投稿日 : 2017/04/19(Wed) 23:01
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
if, else, break, continue を追加しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.327)
投稿日 : 2017/04/20(Thu) 18:35
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : Ntiptg5mB03UuevH6fbYa.
参照先
最新のパッチだと
以下のようにwhile文を組むと=>の部分でエラーが出ます。

[define find_key]while($base&&([:$base:]!=$key))[:$base+0x0C:]=>base
[define global][:(MName::RGSS301.dll)+0x2AC044:]=>base;[:$base+0x04:]=>modulo;[:[:$base+0x0C:]+($modulo?$key%$modulo*4:0):]=>base;{find_key}
[define $Game_Party]$key=0x466B;{global};[:[:[:[:$base+0x08:]+0x00:]+0x04:]+0x0C:]=>base
while文全体を括弧でくくると構文エラーを回避できるものの、計算結果がおかしくなります。

 スクリプトを展開しました。ツリー上から、書き換えたい項目を選択してください。
対象のプロセスを開けません。
--------
Parsing「0x466B」→[0x466B]
Parsing「$key」→[0x466B]
Parsing「RGSS301.dll」→[0x3D50000]
Parsing「0x2AC044」→[0x2AC044]
Parsing「+」→[0x3FFC044]
Parsing「:]」→[0x469D800]
Parsing「base」→[0x469D800]
Parsing「$base」→[0x469D800]
Parsing「0x04」→[0x4]
Parsing「+」→[0x469D804]
Parsing「:]」→[0x13]
Parsing「modulo」→[0x13]
Parsing「$base」→[0x469D800]
Parsing「0x0C」→[0xC]
Parsing「+」→[0x469D80C]
Parsing「:]」→[0x4743470]
Parsing「$modulo」→[0x13]
Parsing「?」→[0x4743470]
Parsing「$key」→[0x466B]
Parsing「$modulo」→[0x13]
Parsing「%」→[0xF]
Parsing「4」→[0x4]
Parsing「*」→[0x3C]
Parsing「+」→[0x47434AC]
Parsing「:]」→[0x4F6EFF8]
Parsing「base」→[0x4F6EFF8]
Parsing「while」→[0x0]
Parsing「$base」→[0x4F6EFF8]
Parsing「$base」→[0x4F6EFF8]
Parsing「:]」→[0x466B]
Parsing「$key」→[0x466B]
Parsing「!=」→[0x0]
Parsing「&&」→[0x0]
「=>」の解析エラー。
アドレス[0x0]で読み込みエラー。
記事編集 編集
Re: SpoilerALの修正パッチ (No.328)
投稿日 : 2017/04/20(Thu) 19:03
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
for, do-while を追加しました。

>>327 RICK(管理人)さん
更新したものをアップロードしました。
もう一度お願いできますでしょうか。
記事編集 編集
Re: SpoilerALの修正パッチ (No.329)
投稿日 : 2017/04/20(Thu) 19:54
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : Ntiptg5mB03UuevH6fbYa.
参照先
>>328 変態紳士さん
正常動作を確認いたしました。
ご対応ありがとうございました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.330)
投稿日 : 2017/04/21(Fri) 23:09
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
while, do-while, for, if, else, break, continue のテスト用のSSGを追加しました。
source\test\__while_do-while_for_if_else_break_continue_test__.ssg
記事編集 編集
Re: SpoilerALの修正パッチ (No.331)
投稿日 : 2017/04/22(Sat) 07:02
投稿者 RICK(管理人)◆PIflJPH.oeY
ID情報 : Ntiptg5mB03UuevH6fbYa.
参照先
ifとelseはあるようですが、
else ifは使えるのでしょうか?
else(if(条件式)(処理))で対応すればいいのでしょうか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.332)
投稿日 : 2017/04/22(Sat) 15:54
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>331 RICK(管理人)さん
「if (...)」 と書かれている部分を 「if (0) else if (...)」とすればテストできますが、不具合があるようなので修正します。

※追記
修正しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.333)
投稿日 : 2017/04/22(Sat) 22:34
投稿者 仔猫in軒下◆KCezBilYINU
ID情報 : mAvcY9pJD8W68V3/Fv4kJ1
参照先
仔猫です。
高級言語で書けるようになってスゴいことに…。更新ありがとうございます。

報告ですが、以前作ったAL6.2のSSGなのですが…表示で誤動作するようになってました。
(一ヶ月ぐらい前の更新からと思われます。)03/15版ではOK

具体的にはスモール括弧"("  ")"を含んだ時です。
内部で処理されずにそのまま表示されてるようです。

一応、大文字括弧"( " " )"へ置き換えれば問題ないですが…。

[subject]No.[!L$Val+1!] '+' _mem,_[\:{A}+0x[!0x0C*$Val!]\:]=>B;0xE6E17F14=>H;[\:{T}\:]+0x08,0x20,unicode, '+' ( '+' _mem,_[\:{A}+0x[!0x0C*$Val!]\:]=>B;0x2CFB01B7=>H;[\:{T}\:]+0x08,0x20,unicode,NoData '+' ):dir

追記:
>>334
問題解消されました、修正ありがとう御座います。
準仕様…メモリー転送系でしょうか?また勉強したいです(…仕事が片づかない)
記事編集 編集
Re: SpoilerALの修正パッチ (No.334)
投稿日 : 2017/04/23(Sun) 02:13
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
>>333 仔猫in軒下さん
報告どぉもです。直しておきました。

>>309-311 準仕様 (memmove に伴う)
こちらの影響でした。両立できないと既存のSSGを巻き込んでしまう・・・
と思ったのですが、いつも通り仕様の隙間を抜けて回避しました。

半角丸括弧は↑こんな使い方もあります。
しかし、問題が起きればどうなるか分からないところが準仕様とも。
記事編集 編集
Re: SpoilerALの修正パッチ (No.335)
投稿日 : 2017/04/26(Wed) 06:46
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9M12DC5sPlOaTMiKj3t3D0
参照先
printf, dprintf を追加しました。

printf は SpoilerAL のデバッグモードのガイドウィンドウに出力します。
dprintf は OutputDebugString (Windows API) を利用し書式化した文字列を出力します。

dprintf のメッセージは DebugView というツールで取得できます。
Google より「Microsoft DebugView」と検索してダウンロードできます。

書式については以下のように記述し、
――――――――――
dprintf("AL:現在値 = %u, 最大値 = %u", $cur, $max);
――――――――――
DebugView より [メニュー]−[Edit]−[Filter/Highlight] を呼び出し、
[Include] のテキストを 「AL:*」 とします。
これにより接頭辞が 「AL:」 以外のログを省くことが出来ます。

他のツールを探す場合は 「OutputDebugString ツール」 などのキーワードで探してください。
この方法は別のプロセスで監視するので SpoilerAL のダイイング・メッセージにもなります。
記事編集 編集
Re: SpoilerALの修正パッチ (No.336)
投稿日 : 2017/05/02(Tue) 23:28
投稿者 amateur◆kR..xsXL6RU
ID情報 : 0ciNn0R8E0ewptfbrXnqr1
参照先
パッチ更新お疲れ様です。
本日5/2更新分のパッチを適用した後に気付いたのですが、
項目名中に、半角括弧"("があると、その後ろにそれに対応する半角括弧")"がないと、
当該項目が表示されない、という問題があるようです。(アドレスネーミング部分以外の箇所での話です)

一応、検証用のSSGを添付します。
このSSGのうち、3つ目の
 項目名:テスト3 ( ) 前が半角括弧、後ろが全角括弧(これは表示されない)
は表示されないようです。

記事編集 編集
Re: SpoilerALの修正パッチ (No.337)
投稿日 : 2017/05/03(Wed) 10:33
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : DB4NzWA4nAVdIx88prSNh.
参照先
>>336 amateurさん
修正しました。

元々のプログラムですが、
1.半角角括弧 "]" を含む行を探す
2."[subject]" で始まる行であれば、後ろの文字列を使う
3.タグより後ろから半角コロン ":" で前後2つの文字列に分割
4.半角コロン ":" までの文字列を半角カンマ "," で分割して配列にする
こんな事をしています。

この方法では 「memmove(dest, src, count)」 というカンマで引数を区切る書式が使えません。
これを回避するために半角丸括弧 「(」 と 「)」 でネストされた階層を検出しゼロ階層でしか分割しないようにしました。

しかしこれには問題があり、バイト列などは文字列の途中から検出するようになっていますので、
色々と面倒な方法で回避しています。

そもそも、文字列の解析は1回で行うべきで数値IDのタグで分岐するべきなのですが、
プログラム全体の話ですので作り直さない限り変更など不可能です。
毒を食らわば皿まで食べるのが礼儀のようです。

今回の対象は半角コロン「:」なので、
ネストされ見つからなければ階層を無視して最後に見つかったもので分割するようにしました。

この話は >>309, >>311, >>333 と続いていますが、
副次効果で ( ) の区間はエスケープ不要になったり、<# #> の中をエスケープ不要にしたり、
dprintf の引数に " " で文字列を使えるようにしたり、
そういった機能(副作用)にも反映されています。
大きな問題も起きていないので出来れば生かそうと思っています。
記事編集 編集
Re: SpoilerALの修正パッチ (No.338)
投稿日 : 2017/05/03(Wed) 17:08
投稿者 amateur◆kR..xsXL6RU
ID情報 : Kd5NdOOoCXQDHCwGaQmVg0
参照先
>>337 変態紳士さん
修正ありがとうございます。半角丸括弧の問題が解決されていました。
何となく仔猫さんの>>333の報告内容と関係がありそうな気がしていましたが、
これもmemmoveに関連したものだったのですね。

前の丸括弧を半角で書いてるのに、後ろの閉じる括弧をうっかり全角にしてしまうミスもありそうなので(今回はそれが原因で気付いたのですが)、
過去に同じミスをしたSSGが動かないとか、意外に問題になりそうな気がしてご報告させていただきました。
しかし、またまた面倒なお願いになってしまったようで申し訳ないです。

>副次効果で ( ) の区間はエスケープ不要になったり、<# #> の中をエスケープ不要にしたり、
これについては、私は今のところ、この場合でも敢えて\でエスケープして書くようにしています。
準仕様(副作用)ということで、正式仕様というわけではなさそうなので、
もし後で元の仕様に戻る(\が必要になる)と、その間に\無しで書いたSSGが正常動作しなくなると困るかな、と思いまして・・・
記事編集 編集
Re: SpoilerALの修正パッチ (No.339)
投稿日 : 2017/05/03(Wed) 21:57
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : DB4NzWA4nAVdIx88prSNh.
参照先
>>338 amateurさん
カンマを使えなくするわけにもいきませんので、
半角括弧がペアにならない場合は括弧に「\」円記号を付けて回避するしかないと思います。
それとアドレス書式で括弧がペアにならないのは間違いですので、
括弧のペアが間違っているような状態では動作しない方がいいとも思います。

準仕様ではありますが、printf, dprintf, memmove と機能を潰していくのは現実的ではないでしょう。
別の方法がある気がしないのでこのままです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.340)
投稿日 : 2017/05/03(Wed) 22:30
投稿者 amateur◆kR..xsXL6RU
ID情報 : Kd5NdOOoCXQDHCwGaQmVg0
参照先
>>339 変態紳士さん
>括弧のペアが間違っているような状態では動作しない方がいいとも思います。
アドレス部分では確かにそうですね・・・
一応、アドレス部分に括弧を使う場合は間違えないよう気をつけているのですが、
項目名部分に括弧を書く際は今まで結構適当に書いていた気がするので、
過去に書いたSSGは大丈夫かな?と少し心配になっていました。

そういえば、昨日SSGを書いている際、while多重ループにif文を入れて書いてると、括弧が矢鱈と多くなり、
括弧の数を間違えて(後ろの括弧が足りなかった)、"「(」の解析エラー"となってしまいました。
while文とかfor文とか括弧を使う書式が増えたこともあり、括弧には注意ですね。

それと準仕様の件、承知しました。様子を見て大丈夫そうなら\無しで書いていこうかと思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.341)
投稿日 : 2017/05/10(Wed) 20:51
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : DB4NzWA4nAVdIx88prSNh.
参照先
return を追加しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.342)
投稿日 : 2017/05/30(Tue) 23:35
投稿者 amateur◆kR..xsXL6RU
ID情報 : vSIJByAK4RxripJrUL9Al.
参照先
パッチ更新お疲れ様です。他にも色々ご助言等ありがとうございます。
バグ報告というか、ご相談になると思うのですが
このスレのトップにあるヴァーレントゥーガ(フリーゲーム)のSSGについて、
私が保存している修正パッチのうち、2017.05.21(とそれ以前)の修正パッチでは正常動作するのですが、
手持ちの「2017.05.25」と「2017.05.27」(最新版)のパッチではSSG選択後、SpoilerALが起動しません(タスクマネージャーのプロセス一覧からSpoilerAL.exeが途中で消えてしまう)。
 (5/21から5/25までの間のパッチはDLしておりません。その間に更新があったのかも知らないのですが)
4月下旬から5月半ばまでの期間に作成(更新)していたSSGなので、その期間にアップされていた修正パッチなら動作する(していた)と思います。

なお、セキュリティソフトが原因かと思い、念のためSpoilerAL.exeとwinmm.dll、
SpoilerALのフォルダ自体を例外設定に追加したりしましたが症状は変わらずでした。

他のSSGについてですが、
最近私が作ったものだと、上記のリンク先のスレッドトップの1個目に添付したSRPG Studio製ゲーム用のSSGと、
王国のソウルスミス・体験版用SSGは正常動作しています。
他にもウディタのスレにアップしたウディタ解析用SSGも動作しており、
何故かヴァーレントゥーガのSSGだけ読み込みに失敗するという奇妙なことになっています。

原因の心当たりは・・・while文等のここ2-3箇月で追加された新機能を使いすぎ?くらいしか思い浮かばないです。
while文等の新機能自体は、上記のSRPG Studio用SSGや王国のソウルスミス用のSSGでも使ってますので、これだけが原因とも思えず・・・
ただ、ヴァーレントゥーガのSSGにだけ当て嵌まる条件として、このSSGにだけ「if文」を使っています。
if文の書き方について細かいところは動作検証しつつ手探り的に書いてましたので、この辺が怪しい気もしますが・・・(if文で終わる時に分割の ; がアドレスコーディングの末尾に必要か否か等)
件のSSGについて、私の書き方に何か問題があったのかもしれませんが、
エラー表示が何も出ず、SSG読み込み中にプロセス一覧からSpoilerAL.exeがいつの間にか消えてるだけなので、
原因を特定する情報が何もない状況です。
5/21から5/25までの間のパッチ更新で何か関係ありそうな情報があればSSG修正が出来るのではと思い、書き込みさせていただきました。
最悪、件のSSGを使用する時のみ、2017.05.21の修正パッチを使用することで対処することも考えていますが・・・
お手すきの際にでもご返信いただければ幸いです。
度々面倒なことをお願いして恐縮ですが、よろしくお願いします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.343)
投稿日 : 2017/05/30(Tue) 23:46
投稿者 dipper◆LEFxdWWYR3c
ID情報 : iGGKA9ATGUZVcceTCsPiC0
参照先
>amateurさん

現行のパッチで「ヴァーレントゥーガ」のSSGが起動しないのは [group]AreaWindow_SSR にある

[subject]同全ユニットの忠誠・信用度を書込み値【 '+' _mem, _L{M0}+0x1E8, 4,num ,??,%d '+' 】に一括変更/現在値/_:calc, _L{M0}+0x1E8, 0, 0x7FFFFFFFF, unsigned

の「0x7FFFFFFFF」が原因だと思われます。
「0xFFFFFFFF」以上の数値が設定されたSSGだと起動出来なくなっているのではないかと推測します。
記事編集 編集
Re: SpoilerALの修正パッチ (No.344)
投稿日 : 2017/05/31(Wed) 00:11
投稿者 amateur◆kR..xsXL6RU
ID情報 : vSIJByAK4RxripJrUL9Al.
参照先
>>343 dipperさん
情報ありがとうございます。
おっしゃるとおり、その「0x7FFFFFFFF」が原因のようでした。
「0x7FFFFFFF」に変更したら、それだけで正常動作(SSG読み込み)可能になりましたので。
「F」が1個多かったのですね・・・お恥ずかしい単純ミスでした。
むしろ、少し前までのパッチでは、電卓の最大値「0x7FFFFFFFF」と書いても動作(実際の書込みは当然「0xFFFFFFFF」が上限でしょうけど)していたのが驚きです。
最近、dipperさんによく助けられているような気がしますが、
毎度のフォロー、本当にありがとうございます。

というわけで、変態紳士さん、お騒がせして申し訳ありませんでした。
記事編集 編集
Re: SpoilerALの修正パッチ (No.345)
投稿日 : 2017/06/09(Fri) 03:05
投稿者 dipper◆LEFxdWWYR3c
ID情報 : bNcRFCRE6g.alr46uMHGt.
参照先
>>変態紳士さん

どうも、ご無沙汰しております。
早速で恐縮なのですが、一件バグらしきものがあったので報告させて頂きます。

memmoveでSpoilerALに確保されたメモリにアクセスする際、
下記のような感じだと、どうやら機能しないようです。(「L 」のあとに半角スペースを挿むと正常に機能します)

memmove(L{mem}+0x14,L{mem}+0x10,4)


お手すきの時で構いませんので、ご確認お願い致します。
それと、一応確認用のSSGも添付しておきます。

記事編集 編集
Re: SpoilerALの修正パッチ (No.346)
投稿日 : 2017/06/09(Fri) 05:35
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : rS65E8ubdiBRAwSCU6MkE0
参照先
>>345 dipperさん
>「L 」のあとに半角スペースを挿むと正常に機能します
これは半角スペースも含めて「L 」という文字列です。

defineの時はLの後のスペースは無視するようにしたのですが、
memmoveでスペースを無視するのはコードが長すぎるので・・・
現在の仕様です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.347)
投稿日 : 2017/06/09(Fri) 19:49
投稿者 dipper◆LEFxdWWYR3c
ID情報 : bNcRFCRE6g.alr46uMHGt.
参照先
>>346 変態紳士さん

早速の回答ありがとうございます。

「L 」半角スペースが正規表記だったのですね。
今度からはそちらを使用して行きます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.348)
投稿日 : 2017/06/10(Sat) 05:50
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : rS65E8ubdiBRAwSCU6MkE0
参照先
>>347 dipperさん
見直してみれば案外簡単だったので直しておきました。

それ以外には、バイト列の「反復命令」(*[ 反復サイズのアドレス式 :: 反復するバイト列 *])に使用する
「反復サイズのアドレス式」を変更しました。

アドレス式で演算出来るのはいいのですが、IO_FEP、replace、アドレス補正などの属性が有効になっていたので、
サイズを指定しても属性が余計な演算になるという問題がありました。
この属性を無効にしました。ただし、もともと利用頻度が低かったのか極めて遅いです。
$Relも便利ですが反復命令に該当しますので・・・
記事編集 編集
Re: SpoilerALの修正パッチ (No.349)
投稿日 : 2017/06/10(Sat) 21:59
投稿者 dipper◆LEFxdWWYR3c
ID情報 : bNcRFCRE6g.alr46uMHGt.
参照先
>>348 変態紳士さん

memmoveの「L」の修正ありがとうございます。
>>345 に添付したSSGで機能することが確認できました。

まさか対応して頂けるとは思いませんでした。しかもこんなに早く…
改めてまして、対応ありがとうございます。


>反復サイズのアドレス式

SSGを自作し始めたころ「反復サイズのアドレス式」を使用した際、
replace加算されるとは知らず"_"を付けずに総バイトサイズを使用したので、ゲームがフリーズした経験を思い出しました。
その時は「replace加算される」くらいは記載しといてくれと思いましたね。
と言うかIO_FEPも計算されてたんですか…
記事編集 編集
Re: SpoilerALの修正パッチ (No.350)
投稿日 : 2017/06/18(Sun) 05:08
投稿者 amateur◆kR..xsXL6RU
ID情報 : lwqaXPX5Sxrqftk6tfK2/0
参照先
変態紳士さん、パッチ更新お疲れ様です。
以前作ったグランブーム国物語 〜 スマイルと目覚めし力 〜というフリーゲームのSSGを修正していて気付いたのですが、
このゲームの「kmyCore.dll」というモジュールに、
「??1DrawInfo@kmyGfx@@UAE@XZ」というエクスポート関数があるのですが、
これを用いて、
 MName::kmyCore.dll::??1DrawInfo@kmyGfx@@UAE@XZ
と書くと、
--------------
Parsing「kmyCore.dll」→[0x543B0000]
Parsing「::」→[0x543B0000]
Parsing「?」→[0x543B0000]
Parsing「?」→[0x543B0000]
--------------
SSGデバッグモードのログが上記のようになり、
正常に関数名を認識できていないようです。
(「MName::kmyCore.dll::??1DrawInfo@kmyGfx@@UAE@XZ」は、上記の場合だと「0x543B949E」になるはず)
念のため、検証用に上記ゲームのSSGを添付します。
一番上の「☆【必須】ベースアドレス確定(開いてすぐ閉じること)」という項目で確認しました。
お手すきの際にでもご対応いただければ幸いです。
よろしくお願いします。

記事編集 編集
Re: SpoilerALの修正パッチ (No.351)
投稿日 : 2017/06/18(Sun) 16:39
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : rS65E8ubdiBRAwSCU6MkE0
参照先
>>350 amateurさん
修正しました。

そのままでは「?」を演算子として認識します。
関数名を「"」で括る事で対応します。

こんな感じで
MName::kmyCore.dll::"??1DrawInfo@kmyGfx@@UAE@XZ"

このような名前は、C言語ではなくオーバーライド可能なC++関数の内部名称としてIDEから規則的に生成されます。

エクスポート関数のアクセス方法としては名前ではなく序数という方法もあり、こちらは確実にアクセスできますが、
IDEから生成されるような関数は序数が変わらないという保証はないので、やはりC++でも名前を使うべきなんでしょうか。
記事編集 編集
Re: SpoilerALの修正パッチ (No.352)
投稿日 : 2017/06/18(Sun) 18:07
投稿者 amateur◆kR..xsXL6RU
ID情報 : 5BOR0P.GMsJmBrht3NoTy/
参照先
>>351 変態紳士さん
修正ありがとうございます。
関数名を""で括ることで正常動作することを確認いたしました。助かります。
従来でも問題なく認識されていた関数名は""で括っても、括らなくてもどちらでも構わないようですね。
いつも迅速にご対応くださって本当にありがとうございます。

関数の一覧を眺めていたら時々「序数」云々というのを目にしますが、そんな違いがあるのですね。
記事編集 編集
Re: SpoilerALの修正パッチ (No.353)
投稿日 : 2017/06/20(Tue) 18:54
投稿者 dipper◆LEFxdWWYR3c
ID情報 : bNcRFCRE6g.alr46uMHGt.
参照先
>> 変態紳士さん

毎度のパッチ更新ありがとうございます。

それとは別で、変態紳士さんにお伺いしたいのですが、
[funnel]は 文字列項目(string) だと機能しないのはSpoilerALの仕様なのでしょうか?

折角strlen、wcslenがあるのに、文字列項目だと[funnel]が機能しなかったので、
文字列項目を書き換えた際に、文字数を管理するアドレスも同時に書き換えるといった処理が出来ませんでした。

可能でしたら、[funnel]を文字列項目でも機能する様にして頂けると、非常に有り難いです。
お手すきの際に、ご一考頂けないでしょうか。よろしくお願い致します。

一応、確認用のSSGを添付しておきます。


■追記
調べた限りですが、項目別の[funnel]機能。
(bitlist, trace, copy は未検証)

●[funnel]機能する項目
calc, toggle, list, b_calc, b_toggle, b_list

●[funnel]機能しない項目
string, f_calc, bf_calc, d_toggle, d_list

記事編集 編集
Re: SpoilerALの修正パッチ (No.354)
投稿日 : 2017/06/21(Wed) 00:56
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : rS65E8ubdiBRAwSCU6MkE0
参照先
>>353 dipperさん
$Val変数の互換性に問題があったので放置されていたようです。

●従来、[funnel] が機能していた項目
calc, list, b_calc, b_list ($Valは書込値)
toggle, b_toggle (ONの時は$Val==1, OFFの時は$Val==0)
copy (4バイト以下の時のみ機能する)

●従来、[funnel] が機能していなかった項目
string, f_calc, bf_calc, d_toggle, d_list, bitlist ($Valが4バイト整数型なので放置された、と思う)
trace (内部でfunnelを応用しているので不可)

●仕様変更後、[funnel] を機能させた項目
string ($Valは文字列からリトルエンディアンで4バイト整数型にキャスト、4バイトを超える部分は無視)
f_calc, bf_calc, d_toggle, d_list ($Valは常にゼロを使用、下手な事をしても遅いだけなので・・・)
bitlist ($Valは32bit値をそのまま使用、未実装だった理由は不明)

copy, trace は元々が不完全なので放置です。

[funnel] が動作しないのを知っててグループに属性を付けていたら修正が必要になりますが・・・
たぶん無いと思うので仕様変更です。問題があれば6.2専用にします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.355)
投稿日 : 2017/06/21(Wed) 02:04
投稿者 dipper◆LEFxdWWYR3c
ID情報 : bNcRFCRE6g.alr46uMHGt.
参照先
>> 354 変態紳士さん

早速の対応ありがとうございます。

動作報告なのですが、string とパッチ更新前に機能していた項目は、(恐らく)問題なく機能していると思います。
ただ、d_list は[funnel]が機能せず、f_calc, bf_calc はモジュールエラーになり、d_toggle はエラー落ちするようです。
f_calc, bf_calc, d_toggle は[funnel]を使用しなくてもエラーになるようです。

●f_calc, bf_calc モジュールエラー
00400000-SpoilerAL先頭アドレス
005038FE-エラーアドレス

とりあえず、確認用に使用したSSGを添付しておきます。
追加部分は適当ですけど…

記事編集 編集
Re: SpoilerALの修正パッチ (No.356)
投稿日 : 2017/06/21(Wed) 06:53
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : rS65E8ubdiBRAwSCU6MkE0
参照先
>>355 dipperさん
どぉもです。直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.357)
投稿日 : 2017/06/21(Wed) 19:55
投稿者 dipper◆LEFxdWWYR3c
ID情報 : bNcRFCRE6g.alr46uMHGt.
参照先
>> 356 変態紳士さん

迅速な対応感謝いたします。
>>355のSSGで f_calc, bf_calc, d_toggle, d_list が正常に機能する事を確認出来ました。

改めまして、要望を聞き入れて頂きありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.358)
投稿日 : 2017/07/04(Tue) 18:21
投稿者 dipper◆LEFxdWWYR3c
ID情報 : h6J.DilH.Fa1bnuAkkkW91
参照先
>> 変態紳士さん

毎度お世話になっております。
早速で恐縮なのですが「d_toggle」にバグらしきものがあったので報告させて頂きたいと思います。

===== @ =====

「d_toggle」の処理リストにチェインファイルを使用するとエラー落ちするようです。
添付してあるSSGで説明しますと、

@「d_toggle」項目を1,2,3,4とチェックしてから、5をチェックするとエラー落ち。
A「d_toggle」項目を6,5,4,3,2とチェックしてから、1をチェックするとエラー落ち。

ちなみに「d_toggle」項目の6にチェインファイルを使用しています。
(チェックできる回数の違いは、5項目チェックするまでにチェインファイルの使用している項目をチェックしてるかどうか?)

それとTakeさんの作成された「正しい性奴隷の使い方」のSSGの「プログラム改造->項目一覧」も、
これに該当するのか一つでもチェックするとエラー落ちする様です。
(もっともTakeさんSSGを使用していて気付いたんですけどね…)

===== A =====

[group]d_toggle_list_03
0x00=01/00
0x00=02/00
0x00=03/00
0x00=04/00
0x00=05/00
0x00=06/00
[/group]

こちらは仕様かも知れませんが、上記のように「d_toggle」で同アドレスで処理させようとすると「0x00=06/00」しか機能しないようです。
一応、添付SSGの「d_toggle2」項目が動作確認用の項目です。

================

お手すきの時で構いませんので、ご確認のほどよろしくお願い致します。

記事編集 編集
Re: SpoilerALの修正パッチ (No.359)
投稿日 : 2017/07/05(Wed) 01:28
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : chyK.1f7hNTWBZbMQ.F.r/
参照先
>>358 dipperさん
直しておきました。テスト用のSSGが役に立ちました。
同アドレスで処理できない方は仕様ですね。
通常ならリストにするか特殊なものならファンネルでなんとか。
記事編集 編集
Re: SpoilerALの修正パッチ (No.360)
投稿日 : 2017/07/05(Wed) 02:04
投稿者 dipper◆LEFxdWWYR3c
ID情報 : h6J.DilH.Fa1bnuAkkkW91
参照先
>>359 変態紳士さん

早速の対応ありがとうございます。
>>358 の添付SSGとTakeさんの作成された「正しい性奴隷の使い方」のSSGで動作確認できました。

同アドレスは、やはり仕様でしたか。
態々ご確認ありがとうございます。
>>358 を投稿してからリスト系があるので、態々「d_toggle」で同アドレスの変更をする需要が無いこと気付きました…
しいて言えばチェックボックスの見た目ぐらいでしょうか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.361)
投稿日 : 2017/07/10(Mon) 21:51
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : chyK.1f7hNTWBZbMQ.F.r/
参照先
memset, memset16, memset32, memset64 を実装しました。
サンプルは source\test\__memset32__.ssg です。

領域を指定した値で塗りつぶす関数です。
書式は以下のようになります。

memset(アドレス, 値, 件数)

memsetは1バイト単位、
memset16は2バイト単位、
memset32は4バイト単位、
memset64は8バイト単位で書き込みます。
アドレスは memmove と同じで「L 」を付けるとローカルメモリです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.362)
投稿日 : 2017/07/11(Tue) 22:24
投稿者 amateur◆kR..xsXL6RU
ID情報 : 2ahJlD8VxhDi08IBqo/P6.
参照先
>>361 変態紳士さん
memsetの実装、ありがとうございます。
サンプルのSSG、正常に機能していました。実際に使ってみるとどんな機能なのかよく分かりますね。

memmoveで書込む前に、値ゼロで塗りつぶす処理をmemmoveで(確保した空きメモリで不使用部分のアドレスを転送元アドレスに指定)最近やっていたのですが、
memsetならもっと簡単・お手軽に値ゼロで塗りつぶせますね。
他にも同じ値の繰り返し書き込みに使用したり、使い道が色々ありそうです。
便利な機能が次々追加されて本当に有り難いです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.363)
投稿日 : 2017/07/18(Tue) 00:55
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : NBsgF7Wu6GtBJo3hy86zj/
参照先
[process] で「ウィンドウタイトルのみ」と「ウィンドウタイトルとモジュール名」を有効にしました。
クラス名が滅茶苦茶な事になっている場合があるので、
タイトルに正規表現を使って、ついでにモジュール名を追加すれば特定できるかと思ったり。

こんな感じで使います。
――――――――――
[process]*".*ウィンドウタイトル.*" :モジュール名 /regex
――――――――――


・留意事項1

1行で指定する場合はAND指定、複数行は各行がOR指定です。
例えば次のような場合は指定が矛盾します。
――――――――――
[process]<Notepad> *"無題 - メモ帳"
[process]notepad.exe
――――――――――
1行目は「無題 - メモ帳」を対象としますが、
2行目は「notepad.exe」であれば何でもいいので「無題」でなくとも対象にします。


・留意事項2

この書き方は「:」のみの指定で、プロセスが見つかるまでの待機中はGUIの反応が悪くなります。
――――――――――
[process]:UniqueName.dll
――――――――――
件数がプロセス×モジュールとなり「MName::」を呼び出す度に微妙な反応速度になります。
この方法しかない場合は仕方ありませんが出来るなら避けたい方法です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.364)
投稿日 : 2017/07/18(Tue) 23:50
投稿者 dipper◆LEFxdWWYR3c
ID情報 : h6J.DilH.Fa1bnuAkkkW91
参照先
>>363 変態紳士さん

態々、私の投稿した別記事を見て頂けたのでしょうか?
修正パッチ(2017.07.18)で[process]の「:」のみの指定が機能する事を確認出来ました。
態々、修正して頂きありがとうございます。


●ここからは参考までに私の環境下での[process]指定の使用感。
使用パッチ:(2017.07.18)
使用SSG :【改造依頼】プロナント・シンフォニー のNo.10に投稿したSSG


>・留意事項2
>この書き方は「:」のみの指定で、プロセスが見つかるまでの待機中はGUIの反応が悪くなります。

下記の3つのプロセス指定を比べてみると、
展開速度・使用メモリは、それほど差を感じませんでした。(使用メモリも3つ共に5MB台)
(もっと大きなファイルだと違うのでしょうか?)
―――――@―――――
[process] :GuruGuruSMF4.dll
―――――A―――――
[process]Game.exe
―――――B―――――
[process]Game.exe :GuruGuruSMF4.dll
―――――――――――

ただ、下記の様に最初にプロセス指定が認識できない指定が存在すると、
明らかに展開速度が遅くなり使用メモリも5MBから8MBと増えました。
あとは、Aが@より微妙にメモリを消費するかな? 程度でした。
―――――@―――――
[process]Game1.exe ←「プロナント・シンフォニー」には存在しない実行ファイル名
[process]Game.exe
―――――A―――――
[process] :GuruGuru.dll ←「プロナント・シンフォニー」には存在しないモジュール名
[process] :GuruGuruSMF4.dll
―――――――――――

上記の確認方法以外では、以前このスレの>>358に添付したSSGを下記の様に書き換えて、SSGを展開後「d_toggle2」項目を選択すると、
展開直後は使用メモリは3MBに対して「d_toggle2」項目選択後は6〜7MBになりました。
書き換え前は、展開直後・「d_toggle2」項目選択後は共に3MBでした。
―――――――――――
[process]SpoilerAL.exe

[process]SpoilerAL1.exe
[process]SpoilerAL.exe
―――――――――――
記事編集 編集
Re: SpoilerALの修正パッチ (No.365)
投稿日 : 2017/07/19(Wed) 00:29
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : NBsgF7Wu6GtBJo3hy86zj/
参照先
>>364 dipperさん
>私の投稿した別記事を見て頂けたのでしょうか
はい。見てから直しました。
紛らわしい内容ですみません。

今回はメモリの占有率は関係しません。
プロセスが見つかるまで監視している状態のループ回数が問題になります。
(パッチ無しでアドレスネーミングを多用したような遅さになります)

以下のような書き方ですが、

[process]:モジュール名

これはアドレスネーミングを併用し「MName::」を何度も呼び出すと極端に遅くなります。
そうでない場合も遅くなります。特に古いCPUなど。
その期間はSpoilerALが対象プロセスを見つけるまでなので、
待機中はどうでもいいと割り切ってしまえば問題ではありませんが、モジュール名のみの指定はプロセス監視の方法自体がよいとは言えません。

複数行で、1行目にクラス名、2行目にプロセス名、3行目にプロセスがロードするモジュール名のみ、
という場合は3つ目が余計です。

それと、今回の修正でウィンドウのタイトルを基準に指定できるようにしました。
固有のゲームを指定する場合は、以下のような1行のみ(複数行だと汎用)で指定する事もできます。

[process]*".*プロナント・シンフォニー.*" :GuruGuruSMF4.dll /regex

まぁ、これだけでSSGを更新するのも手間ですけど。
記事編集 編集
Re: SpoilerALの修正パッチ (No.366)
投稿日 : 2017/07/20(Thu) 21:09
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : NBsgF7Wu6GtBJo3hy86zj/
参照先
・[define] で項目名を置換できるようにしました。
・電卓項目、一括電卓項目、実数電卓項目、一括実数電卓項目の最小値と最大値で「min」「max」の定数が使えるようにしました。

※追記
2017.07.23
・同じ項目に使われるメモリが小さくなるように変更 (ただし静的な展開で書き換えると同じではなくなる)
記事編集 編集
Re: SpoilerALの修正パッチ (No.367)
投稿日 : 2017/07/31(Mon) 17:34
投稿者 dipper◆LEFxdWWYR3c
ID情報 : h6J.DilH.Fa1bnuAkkkW91
参照先
>> 変態紳士さん

返信が遅れて申し訳ありません。
7/20頃から予定外の事が立て続けに起こり、今頃になってしまいました。

それと修正パッチの更新ありがとうございます。
知らない内にメモリ周りが、かなり改善されているようでSpoilerAL使用者としては有り難い限りです。
当然と言えば当然ですが、SpoilerAL6.1のSSGを「SSG for SpoilerAL ver 6.1」→「SSG for SpoilerAL ver 6.2」と書き換えるだけで、かなり(SSGによっては劇的に)展開速度が違いますね。
(使用メモリはそれ程変わらないですけど)

>[process]:モジュール名
>これはアドレスネーミングを併用し「MName::」を何度も呼び出すと極端に遅くなります。

[process]:モジュール名 は最終手段と考えた方が良さそうですね。


あと下記の様な感じで、項目名に現在値を記載すると電卓などの現在値が二重表示されてしまうのは現在(修正パッチ (2017.07.30))の仕様でしょうか?

[subject]所持金[<#*[.0x00.]#>]/所持金/:calc,0x00,0,9999999,signed

所持金[0][0](Min:0 Max:9999999)
記事編集 編集
Re: SpoilerALの修正パッチ (No.368)
投稿日 : 2017/07/31(Mon) 22:40
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : NBsgF7Wu6GtBJo3hy86zj/
参照先
>>367 dipperさん
>現在値が二重表示
報告どぉもです。直しておきました。
これは変更漏れですね。インライン展開された場所なのでメモリ関連の変更箇所は多いかもです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.369)
投稿日 : 2017/08/01(Tue) 17:49
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 9n8lwGypnxt7Y2rE0nvDz.
参照先
>>368 変態紳士さん

早速の対応ありがとうございます。
現在値の二重表示が解消された事を確認できました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.370)
投稿日 : 2017/08/02(Wed) 00:20
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 9n8lwGypnxt7Y2rE0nvDz.
参照先
>> 変態紳士さん

連投になってしまい申し訳ありません。
バグらしきものがあったので報告させて頂きたいと思います。

toggle のチャックボックスがオフ値の時でもチェックされたままのようです。
取り合えず確認用のSSGを添付しておきます。

お手隙の際で構いませんので、ご確認お願い致します。

記事編集 編集
Re: SpoilerALの修正パッチ (No.371)
投稿日 : 2017/08/02(Wed) 05:59
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : IZnKtS23N5677tM5YlLUK.
参照先
>>370 dipperさん
どぉもです。直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.372)
投稿日 : 2017/08/02(Wed) 19:43
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 9n8lwGypnxt7Y2rE0nvDz.
参照先
>>371 変態紳士さん

早速の対応ありがとうございます。
toggle のチャックボックスが正常に機能するようになりました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.373)
投稿日 : 2017/08/03(Thu) 23:22
投稿者 質問です
ID情報 : .su1YNqE.di.ALUU.H3py1
参照先
少々ハマっていますので質問させてください

Ryzen 7+Win10 Pro 64bitでPCを作ったのですが、パッチを適応するとバックグラウンドプロセスでは起動していることになっているのですが、画面には表示されません
SpoilerAL.exeを起動すればしただけプロセス上では多重起動していきます
winmm.dllを削除するとSpoilerAL.exeは起動しますし、過去のSSGによる書き換えも可能です
SpoilerALは新しくDLし、何も手を加えていない状態です
同じく最新版パッチを当てたIntelマシンではそのまま起動しますので差がわからず悩んでいます
確認点等あればご享受ください
記事編集 編集
Re: SpoilerALの修正パッチ (No.374)
投稿日 : 2017/08/04(Fri) 00:40
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : IZnKtS23N5677tM5YlLUK.
参照先
>>373
>Ryzen 7+Win10 Pro 64bitでPCを作ったのですが、
>(略)
>多重起動していきます
原因は分かりません。
その時の状態はアイドルですか?フリーズですか?
(CPUの使用率が上がるかどうかですが、コアがいくつもあるので沢山起動してみるとか)

>SpoilerALは新しくDLし、何も手を加えていない状態です
環境に関しては管理者権限を加えてセキュリティソフトを停止させてから確認を行ってください。

>同じく最新版パッチを当てたIntelマシンではそのまま起動しますので差がわからず悩んでいます
差が分かれば何とかなりますがCPU依存は確認できないので。

>確認点等あればご享受ください
いつの時点まで動作するとかなら対応できますが・・・

何か方法を考えますが、似たような環境で動作するという情報があれば分かりやすいので、
差異を見つける方が楽かもしれないです。

※追記
2017.08.04
添付ファイルの内容で実行すると、
winmm.dll と同じ場所に winmm.log というファイルが出力されますので、
ログファイルを添付して報告をお願いします。

2017.08.05
必要ないので添付ファイルを削除
記事編集 編集
Re: SpoilerALの修正パッチ (No.375)
投稿日 : 2017/08/04(Fri) 22:25
投稿者 No.373
ID情報 : .su1YNqE.di.ALUU.H3py1
参照先
>>374
変態紳士◆G9/eqTtPaq.様
解決のための手段を用意していただきありがとうございます。
当方で仮想環境を作成する際に作業を行った
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2146361
こちらに原因があるかと思い、書き込み後OS再インストールを行っておりました。
再インストール後は正常に動作するようになり、現状ではエラーログを吐き出させることはできなくなりました。
お手数をおかけして申し訳ありませんでした。
記事編集 編集
Re: SpoilerALの修正パッチ (No.376)
投稿日 : 2017/08/05(Sat) 03:53
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : IZnKtS23N5677tM5YlLUK.
参照先
>>375 No.373さん

報告どぉもです。
ログの続きの大規模なデバッグをしなくて済みました。
(数百のDLLファイルをテストしてもらう事に・・・ ならなくてよかった)
記事編集 編集
Re: SpoilerALの修正パッチ (No.377)
投稿日 : 2017/08/05(Sat) 18:26
投稿者 amateur◆kR..xsXL6RU
ID情報 : 3A.hr3/oBYGVhn9JHWf71.
参照先
パッチ更新お疲れ様です。
バグらしきものを見つけましたのでご報告させていただきます。
string項目について、
・ANSI書換えは、UNICODEで書き換わってしまう。
・UNICODE書換えは、文字列部分はUNICODEで書き換わっているのですが、
 終端符号部分が「00」になってしまうので、UNICODE文字列としても正常に認識されない。
 さらに、終端符号部分「00」の後ろに「0C 0D E0」という謎のバイト列が付加されてしまう。

上記のように、string項目のANSI・UNICODE書換えともに、正常に機能していないようです。
なお、私の手持ちのパッチのうち、「2017.07.30」「2017.07.31」と「2017.08.02」(最新版)のパッチでは上記のような症状でしたが、
「2017.07.26」のパッチでは正常機能しています。

確認用のSSG(対象プロセスは「SpoilerAL.exe」)を添付します。
お時間がある時で結構ですので、ご確認いただけると幸いです。

記事編集 編集
Re: SpoilerALの修正パッチ (No.378)
投稿日 : 2017/08/06(Sun) 04:14
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : IZnKtS23N5677tM5YlLUK.
参照先
>>377 amateurさん
どぉもです。
直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.379)
投稿日 : 2017/08/06(Sun) 17:27
投稿者 amateur◆kR..xsXL6RU
ID情報 : BsO7Sy7xKOoq7xZv1t/Yz1
参照先
>>378 変態紳士さん
修正ありがとうございます。
string項目が正常に機能するのを確認いたしました。
いつも迅速にご対応くださって感謝です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.380)
投稿日 : 2017/08/21(Mon) 17:06
投稿者 仔猫in軒下◆KCezBilYINU
ID情報 : h1dPu6JCr39YBbllw9sFO0
参照先
いつも更新ありがとうございます。

不具合かな?と思ったので報告します。
表示(V)→名称検索(F)で項目名の検索をかけると何もヒットしなくなりました。

07/26版ではOK
08/01版(最新8/20)でNGです。

追記:
dipperさん補足ありがとう。
リスト検索機能はパッチなしの状態でも同エラーが出るので…謎です。

変態紳士さん修正ありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.381)
投稿日 : 2017/08/21(Mon) 21:29
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 9n8lwGypnxt7Y2rE0nvDz.
参照先
横から失礼します。
>>380 仔猫さんの捕捉なのですが下記方法だとエラーメッセージが表示されました。

SSG展開後、項目を選択していない状態で、
表示(V)→名称検索(F)→検索「リスト文字列」選択→適当な文字列入力
で検索を開始すると「モジュール SpoilerAL.exe のアドレス 00484145 でアドレス 00000005 に対する読み込み違反がおきました」と表示されました。
既に判明もしくは解決している様でしたら申し訳ありません。

00400000-SpoilerAL先頭アドレス

追記:
>>382 変態紳士さん

パッチ修正ありがとうございます。
こちらも仔猫さんの報告された箇所が正常に機能している事を確認できました。

「リスト文字列」方はどうやら私の使い方が間違っていたようです。(上記のやり方だとエラーは出ますけど)
「リスト文字列」は選択したリスト項目のリストを検索する機能なようですね。(パッチ修正前でも機能しますし)

お騒がせして申し訳ありません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.382)
投稿日 : 2017/08/22(Tue) 01:52
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : IZnKtS23N5677tM5YlLUK.
参照先
>>380-381 仔猫さん、dipperさん
修正しておきました。
それとは別の最適化をしていたので少し遅れました。
ロードなど全体的に5〜10%程度速くなります。(ならないかもしれないけど遅くはならないので)
記事編集 編集
Re: SpoilerALの修正パッチ (No.383)
投稿日 : 2017/08/23(Wed) 03:29
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : IZnKtS23N5677tM5YlLUK.
参照先
「#include」を実装しました。

■概要
「#include」を記述した位置に外部ファイルを読み込みます。

■用途
共通の記述があればコンパクトに出来ます。
defineの関数マクロを外部ファイルに記述し使い回す事もできます。
コピペが面倒な時に使えます。
他にはSSGが大きいので分割したい時や、他人のSSGに1行だけで挿入したい時など。

■注意
行の途中で「#include」は出来ません。
認識されるのは行からインデント (1バイト空白文字) を除いた先頭のみです。

■書式
#include "外部ファイル"

パスは「#include」が記述されたファイルのディレクトリを基準に相対パスを適用します。
パスの記述にエスケープ文字は使えません。

■拡張子
拡張子は何でも構いませんが、ファイル指定で拡張子を省くことは出来ません。
C言語ではヘッダーを示す「*.h, *.hpp, *.hxx」、
マイクロソフト・マクロ・アセンブラではインクルードを示す「*.inc」など、
推奨される拡張子はありますが決まりはありません。(IDEでは必要になりますが)

■循環参照
「外部ファイルA」が「外部ファイルB」を参照し、
「外部ファイルB」が「外部ファイルA」を参照すると無限ループになります。
ナントカ言語では無視するための構文がありますが、
構文を増やすと面倒なので自動で循環参照を回避しています。
記事編集 編集
Re: SpoilerALの修正パッチ (No.384)
投稿日 : 2017/08/27(Sun) 23:38
投稿者 amateur◆kR..xsXL6RU
ID情報 : Z48aRN4u8cSZq75Vm2Fe..
参照先
パッチの更新お疲れ様です。
いつも色々とお世話になっております。
バグなのか仕様なのか分からないのですが、
memset系の動作で気になることがあったのでご報告させていただきます。
大雑把に説明すると、
・アドレスコーディングの先頭部分にmemset系を書くのはOK(以下、連続してmemset系を書いてもOK)
・同先頭部分にmemset系以外を書くと、以降に「;」で分割してmemset系を書いても書込みエラーとなる。
・同先頭部分がmemset系、次がmemset系以外の式、その次がmemset系の場合
 → 2箇所目のmemset系は書込みエラーとなる。
 → memset系以外の式、memset系、の順番だと、「memset系以外の式」の後ろのmemset系がエラーとなる?
・if文の真・偽の処理箇所(括弧で括った箇所)についても上記と同様で、先頭にmemset系を書かないとmemset系は書込みエラー。
 ただし、
  tmp=400; if(1)(memset32(L $Addr+0x8, 0xBB, 1); memset(L $Addr+0x10, 0x66, 0x20);)
 のように、if文の前に何らかの式があってもOK(if文の括弧で括った処理箇所内において先頭か否かで判定される?)

私が検証したところ以上のような感じでした。memset系はそういう仕様なのかもですが・・・
念のため、動作検証用のSSGを添付します。
お手すきの際にでもご確認いただければ幸いです。よろしくお願いします。

記事編集 編集
Re: SpoilerALの修正パッチ (No.385)
投稿日 : 2017/08/27(Sun) 23:56
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 9n8lwGypnxt7Y2rE0nvDz.
参照先
【改造依頼】領地貴族の>>18、>>21の方が記載されていますが、どうやら特定の環境だとincludeが正常に機能しないようです。
私の環境では該当せず検証などは出来ませんが一応ご報告させて頂きます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.386)
投稿日 : 2017/08/29(Tue) 00:56
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : IZnKtS23N5677tM5YlLUK.
参照先
>>384 amateurさん
どぉもです。検証用のSSGをありがとうございました。
直しておきました。

>>385 dipperさん
こちらも直しておきました。
パッチを更新すると以下の手順は不要で、不具合の再現はできません。

以前の分だと以下のようにすると再現します。
1.SpoilerAL.exe を起動し、SSGの選択画面で終了
2._sort.inc の1行目に「#include "_sort_ssl.inc"」の行を挿入し保存
3.再度 SpoilerAL.exe を起動し、kizoku.ssg を選択

この場合、以下のいずれかの方法で直ります。
・確実な方法は修正パッチを更新
・ユーザー環境なら SpoilerAL.log を削除してから起動
・SSGを配布する場合は kizoku.ssg を上書き保存して更新日時を変更
記事編集 編集
Re: SpoilerALの修正パッチ (No.387)
投稿日 : 2017/08/29(Tue) 21:28
投稿者 amateur◆kR..xsXL6RU
ID情報 : FWdmogN5bb0JrTXVo2YSi1
参照先
>>386 変態紳士さん
ご対応ありがとうございます。
memsetの件、問題なく動作するようになりました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.388)
投稿日 : 2017/08/30(Wed) 19:33
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 9n8lwGypnxt7Y2rE0nvDz.
参照先
>>386 変態紳士さん

返信が遅れて申し訳ありません。
私の環境でですが更新前のパッチで不具合の再現確認と更新されたパッチでは再現されない事が確認できました。
パッチの修正ありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.389)
投稿日 : 2017/08/31(Thu) 22:08
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : IZnKtS23N5677tM5YlLUK.
参照先
以下のウィンドウを吸着するようにしました。
・メインウィンドウ
・ガイドウィンドウ
・名称検索ウィンドウ
・サーチ補正ウィンドウ
上記のウィンドウ、画面の端、タスクバーにくっ付きます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.390)
投稿日 : 2017/09/02(Sat) 00:15
投稿者 匿名
ID情報 : z2EuGBdIeJivP4Isy5UHI1
参照先
ssgをファイルに入れゲームを改造しようとしても〈”RGSS player”〉 *〜
となっているものは改造しようとしてもエラーとなってしまいます。
対処法がわかる方は教えてくださるとありがたいです。
ssgは princes×hunterです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.391)
投稿日 : 2017/09/02(Sat) 00:24
投稿者 匿名
ID情報 : z2EuGBdIeJivP4Isy5UHI1
参照先
すいませんなんとかできました
記事編集 編集
Re: SpoilerALの修正パッチ (No.392)
投稿日 : 2017/09/07(Thu) 03:59
投稿者 名無し
ID情報 : hl/Vs7UmpC1Ltz0hDxTON0
参照先
バグと思われるものがありましたので報告します
起きている事象は以下の通りです

猫缶IndexのバックアップにあるREDCATさん作成の
「1121Dredcat.dgc」or「1121Dredcat.exe」に含まれる
「MAIN55.ssg」を介して起動するSSG(Comic Party ver1.23以外)を
8/28以降のSpoilerAL修正パッチを当てた状態で起動すると
一番上に表示されるタイトルは選択したものが表示されるものの
それ以外は「Comic Party ver1.23」のものが表示されるようになっています

8/25以前のSpoilerAL修正パッチを当てた状態では正常に起動できています
(7/29のはSpoilerALが落ちましたが)

ちなみに自分は「ダンジョンクルセイダーズ」のSSGを起動しようとして
上記事象に気が付きました
記事編集 編集
Re: SpoilerALの修正パッチ (No.393)
投稿日 : 2017/09/07(Thu) 04:52
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : JxUMD8GMshxv9spS5NsPQ1
参照先
>>392 名無しさん
詳細どぉもです。

こちらのページからダウンロードして調査していますが、
https://necocan-index.rick-addison.com/necocan/001/fssgfiles.html
こちらでは再現していません。

1.SSGフォルダ → 「_SSG」にして退避
2.新しく「SSG」フォルダを作成
3.「1121Dredcat.dgc」を全て解凍
4.再現しなかったので「SpoilerAL.log」を削除
5.今度は退避した「_SSG」フォルダの中身を上書きしてみる
6.何も起きない(現状)

さらに条件があるのかもしれません。
何分、再現しない事には大した事は出来ませんので・・・
しばらく調べてみます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.394)
投稿日 : 2017/09/07(Thu) 05:52
投稿者 名無し
ID情報 : hl/Vs7UmpC1Ltz0hDxTON0
参照先
再現されませんでしたか。。。
こちらの環境に何か問題あるのかと思って
一度SpoilerALを削除してレジストリも削除したうえで
SpoilerALを入れ直してみましたが最新の修正パッチ(9/6)環境下では
>>392で書いた状態になりました

当面は6.1の環境と6.2の環境の両方を用意して
使い分けて対処します



追記:
どうやら自分だけではなかったようですね

1つのSSGファイルに複数タイトルがあった場合
識別情報のうち
[title][creator][maker]の3つは選んだタイトルのものが表示
[process][note]はSSGファイル内の最初のタイトルのものが表示されてるようです
(メニューバーのメモリ・プロセス→対象プロセスの追加を開いた時に稼働プロセスの再取得の右に最初のタイトルのプロセスが表示されていました)
記事編集 編集
Re: SpoilerALの修正パッチ (No.395)
投稿日 : 2017/09/07(Thu) 06:00
投稿者 dipper◆LEFxdWWYR3c
ID情報 : vVTlIkzJGAVCSB8Wcn9EG0
参照先
横から失礼いたします。
同じ様な状況になったので、その時の手順と状況をご報告させて頂きます。

====================
1.「SSG」フォルダを一時退避
2.「SpoilerAL.log」を削除
3.新規に「SSG」フォルダ作成後「Redcat」フォルダを「SSG」フォルダへ
====================
1.SSGタイトルは個別に表示される
2.「6月の天使」を起動(ただし、どうも項目内容が「Comic Party ver1.23」)(「ひぐらしのなく頃に買」は項目内容が「Let's Trade!」)
3.「7lcw+2(第X次文化大戦)」「Let's Trade!」「Comic Party ver1.23」「洞窟物語」は正常な内容
====================

以上のことから「SpoilerAL.log」を眺めていて思ったのですが、
SSGファイルに複数のタイトルがある場合、最初のタイトルの項目内容が、それ以降のタイトルの項目内容になっている気がします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.396)
投稿日 : 2017/09/07(Thu) 22:21
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : JxUMD8GMshxv9spS5NsPQ1
参照先
>>394-395 名無しさん、dipperさん
どぉもです。直しておきました。

ついでに6.1にあった「SpoilerAL.log」のバグも直しておきました。
「タイトルセレクト」画面のリストの1件目に空白行が出たりするバグです。
ログファイルのゲームタイトルの順序が発生条件に含まれていたので環境毎に発生したりしなかったり・・・
パッチ適用時は「SpoilerAL.log」を削除してから起動してください。(削除は1回でいいです)

※以下修正記事

それと「#include」の機能を縮小する事になりました。
今までは「#include "外部ファイル"」の1行だけのファイルが動作しましたが、
今回から [script] 〜 [/script] の中に書かないと無効になります。

※define と include を間違えました。誤記です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.397)
投稿日 : 2017/09/07(Thu) 22:45
投稿者 dipper◆LEFxdWWYR3c
ID情報 : vVTlIkzJGAVCSB8Wcn9EG0
参照先
>>396 変態紳士さん

パッチ修正ありがとうございます。
確認した限りですが、私の環境では修正されている事が確認できました。

>それと「#define」の機能を縮小する事になりました。
「#define」?…「#include」だったような?
それとも変更されたのでしょうか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.398)
投稿日 : 2017/09/07(Thu) 23:07
投稿者 名無し
ID情報 : hl/Vs7UmpC1Ltz0hDxTON0
参照先
>>396 変態紳士さん

私の方でも報告した件が修正されていることを確認しました
対応していただきありがとうございます


追記:(追記した分を修正)
報告した分の修正は上記のように確認しましたが
修正されたパッチを当てるとSpoilerALが落ちたりSSGが正しく機能しなくなるのがあるのを確認しました
確認できたのは
SpoilerALが落ちたのは七星さん作成の「天結いキャッスルマイスター」
SSGが正しく機能しなくなったのはdipperさん作成の「領地貴族」です
記事編集 編集
Re: SpoilerALの修正パッチ (No.399)
投稿日 : 2017/09/08(Fri) 00:51
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : JxUMD8GMshxv9spS5NsPQ1
参照先
>>398 名無しさん
ロードで落ちるのを直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.400)
投稿日 : 2017/09/08(Fri) 00:58
投稿者 名無し
ID情報 : hl/Vs7UmpC1Ltz0hDxTON0
参照先
>>399 変態紳士さん
最新パッチを当てることにより
追記で報告した事象両方とも解消されましたので報告します
対応ありがとうございました
記事編集 編集
Re: SpoilerALの修正パッチ (No.401)
投稿日 : 2017/09/18(Mon) 18:04
投稿者 仔猫in軒下◆KCezBilYINU
ID情報 : 6aP11iIEeSzQDd1WLbAck0
参照先
変態紳士さん更新ありがとうございます。
バグ報告します

%sを使った上で下記のようなAL6.2書式で書きますと、なぜかAL側本体のアドレスへアクセスしてるようなのです。
(AL本体をプロセスに指定してこれらの値が出るのはOKなのですが他のSSGでも全く同じ値が表示されてしまう)
[subject]DOS ( '+'<# 0x400050,%s #>/文字列/_:string,0x400050,0x20,00
[subject]BCC++( '+'<# 0x602000,%s #>/文字列/_:string,0x602000,0x20,00
[subject]ASCII( '+'<# 0x649085,%s #>/文字列/_:string,0x649085,0x20,00
[subject]Debug( '+'<# 0x65A1E9,%s #>/文字列/_:string,0x65A1E9,0x20,00

追記:異常があるのは表示部です。

追記2:
変態紳士さん修正ありがとう御座います。問題なく文字列を拾えてます。
あと…片側括弧を使わない件了解です(これは本件とは関係なかったのですね。)
記事編集 編集
Re: SpoilerALの修正パッチ (No.402)
投稿日 : 2017/09/20(Wed) 03:19
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : JxUMD8GMshxv9spS5NsPQ1
参照先
>>401 仔猫さん
どぉもです。直しておきました。

既出ですが「<# #>」に「'+'」は不要です。
それから「(」と「)」はペアにする必要があります。
どうしても片方だけ表示したい場合は「<#0x28,%c#>」を入れるか、または全角文字で代用してください。

「%s」のついでに「%S」も直しておきました。
「%S」は Microsoft 仕様で UNICODE 文字列です。(これは SUSv2 の仕様とは異なります)
記事編集 編集
Re: SpoilerALの修正パッチ (No.403)
投稿日 : 2017/09/20(Wed) 04:02
投稿者 amateur◆kR..xsXL6RU
ID情報 : /r8njUKDckwA2pxt0vdIy1
参照先
いつもお世話になっています。
パッチ更新していただいたばかりで恐縮ですが、バグらしきものがありましたのでご報告します。
[adjustment]でアドレス補正する場合の、アドレス補正演算子[_ _]について、
[_MName::nul_] のように書くと、
 Parsing「MName::nul」→[0x0]
と、モジュールアドレス演算子が正常機能していないようです。
( [_MName::SpoilerAL.exe_] とモジュール名を書いても駄目)
「MName::nul」の箇所を[define]で置換したり、
MName::nul=>mo;[_$mo_] のように変数定義してやれば正常機能しているようです。

なお、最近の手持ちのパッチで試したところ、
「2017.08.22」「2017.08.28」「2017.09.05」「2017.09.08」「2017.09.16」「2017.09.20」(最新)
で同様の症状でした。

念のため、動作検証用のSSGを添付します。
上記のように回避方法はあるのですが、
お時間のある際にでもご確認いただければ有難いです。
よろしくお願いします。

記事編集 編集
Re: SpoilerALの修正パッチ (No.404)
投稿日 : 2017/09/20(Wed) 06:26
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : JxUMD8GMshxv9spS5NsPQ1
参照先
>>403 amateurさん
どぉもです。直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.405)
投稿日 : 2017/09/20(Wed) 19:00
投稿者 仔猫in軒下◆KCezBilYINU
ID情報 : 6aP11iIEeSzQDd1WLbAck0
参照先
あと…
使い方が間違ってるかもですが…%fの使い方はこれであってるでしょうか?(floatの表示がうまくできなくて)

プロセス指定はAL本体です。

[subject]float(8.000)→ <# 0x5F0290,%0.3f #>//_:f_calc,0x5F0290,0.001,99.9999,float
[subject]float(1.000)→ <# 0x5F0294,%0.3f #>//_:f_calc,0x5F0294,0.001,99.9999,float

>>406 amateurさん
検証ありがとうございます。

>_mem ならfloatもdoubleも問題なく表示できるので別に困るわけではありませんが。
そうなんですよね。特に困らないのですが…。
もし使えるなら<# #>で書式を揃えてみたいなぁと。
記事編集 編集
Re: SpoilerALの修正パッチ (No.406)
投稿日 : 2017/09/20(Wed) 21:34
投稿者 amateur◆kR..xsXL6RU
ID情報 : U9RTuZXUZu6/qjWRpaJ681
参照先
>>404 変態紳士さん
修正ありがとうございます。
報告しました件、問題なく動作するようになりました。
こんなに早くご対応いただけるとは・・・お疲れ様です。

それと、仔猫さんがご報告されていた「%s」と「%S」の文字列表示、
こんな書式も使えるとは知りませんでした。
<# #> で数値だけでなく文字列も表示できるので便利ですね。
こちらもありがとうございます。

>>405 仔猫さん
私も <# #> でfloat表示はやったことがないのですが、
 <# [:0x5F0290:],%.3f #>
と書いても「0.000」と表示されますね。
よく考えると、 <# #> ではバイト数指定ができない?ので、
「%.3f」等と書いてもfloatかdoubleかをどうやって判断させるのだろうと思いました。
( [: :]なら、4バイトの値を読み込むので4バイト指定と同じ(→float)かなと思ったものの、結果は上記のとおり・・)
私が知らないだけで、floatかdoubleかを指定する書式があるのかな・・・?

fmtだと、下記のようにサイズを4バイト指定でfloat表示されますが、
 _fmt, _[\:0x5F0290\:], 4,num ,--,%.3f

 _fmt,_[\:0x5F0290\:8], 8,num ,--,%.3f
と8バイト指定しても、doubleは無理でした。
演算結果は最終的に4バイトになるからfmtだと8バイトのdoubleは駄目ってことでしょうか・・・?
_mem ならfloatもdoubleも問題なく表示できるので別に困るわけではありませんが。
記事編集 編集
Re: SpoilerALの修正パッチ (No.407)
投稿日 : 2017/09/20(Wed) 23:18
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : JxUMD8GMshxv9spS5NsPQ1
参照先
>>405-406 仔猫さん、amateurさん
直しておきました。
テスト用のSSGも添付しておきます。

>「%s」と「%S」
>>SSGを投稿したり、ゲーム解析について語るスレ (No.559)
上記の追記に記載があります。
ちなみに符号付整数の「%hd」は「0xFFFF」を「-1」、「%hhd」は「0xFF」を「-1」と解釈します。

記事編集 編集
Re: SpoilerALの修正パッチ (No.408)
投稿日 : 2017/09/20(Wed) 23:55
投稿者 仔猫in軒下◆KCezBilYINU
ID情報 : 6aP11iIEeSzQDd1WLbAck0
参照先
>>407
変態紳士さん
更新ありがとうございます。

テスト用SSGの動作完璧です(なるほどこうやって使えば良いのか〜。)

>>405を修正すると…。
[subject]float(8.000)→ <# [:0x5F0290:4],%0.3f #>//_:f_calc,0x5F0290,0.001,99.9999,float
ですね。

これでも動くのかな?
[subject]float(8.000)→ <# *[.0x5F0290.],%0.3f #>//_:f_calc,0x5F0290,0.001,99.9999,float

>>409 amateurさん
おお!検証ありがとうございます。
いろいろ使えそうですね。
記事編集 編集
Re: SpoilerALの修正パッチ (No.409)
投稿日 : 2017/09/21(Thu) 00:41
投稿者 amateur◆kR..xsXL6RU
ID情報 : U9RTuZXUZu6/qjWRpaJ681
参照先
>>407 変態紳士さん
何と、9/20だけで3回目の更新、ありがとうございます。
テスト用のSSGもありがとうございます。使い方がよく分かりました。
floatとdouble、両方<# #>で表示できていました。
[: :4] でfloat、[: :8] でdoubleを表示、ということのようですね。
「1 / 3」を実数表示とか、他にも色々機能が・・・
本当にお疲れ様です。

それと、「%s」「%S」や「%hd」「%hhd」についての追記していただいた箇所、
見落としていました。二度もご説明させてしまい申し訳ありません。
「I1toI4::」等の符号拡張を使わなくても、1バイト・2バイトの数値を符号付整数で表示できるのですね。
時々、1バイト単位で符号付で表示させたい場合等がありますので、これはまた便利な機能です。
色々ありがとうございます。


>>408 仔猫さん
[<# [:0x400050:4] , %.3f #>]
については、
[<# *0x400050 , %.3f #>]
[<# [:0x400050:] , %.3f #>]
上記2つの書き方でも同様に動作しているようです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.410)
投稿日 : 2017/10/24(Tue) 19:46
投稿者 dipper◆LEFxdWWYR3c
ID情報 : q2IZ9wgF7GkIHZB47PvTZ/
参照先
>> 変態紳士さん

どうもご無沙汰してます。
早速なのですがバグらしきものがあったので報告させて頂きます。
反復命令の「反復サイズのアドレス式」に変数を使うと、反復命令が正常に処理されないようです。

「 *[ _0xC8=>i;$i*2 :: 01000000 *+ 01 04 *] 」
を実行すると
「 000C8000 00002000 00100000 00100400 」
の様に置き換わりました。
一応確認用のSSGを添付しておきます。

お手隙の時が構いませんので、ご確認お願い致します。

※追記
下記二つも添付したSSGの「[group]main」に挿入すれば「反復サイズのアドレス式」は「400(0x190)」になるはずですが、
何故か「 *[.0x00.]+(0xC8*2) 」は正常に処理されませんでした。

[subject]正常に機能しない項目[ <# [:{M}:L] #> ]/現在値/:toggle,_L {M},*[ _*[.0x00.]+(0xC8*2) :: 01000000 *+ 01 04 *],??
[subject]正常に機能する項目 [ <# [:{M}:L] #> ]/現在値/:toggle,_L {M},*[ _*([.0x00.])+0xC8*2 :: 01000000 *+ 01 04 *],??


再現出来ませんでしたが、時々項目へのアクセススピードがかなり遅くなる事もありました。

記事編集 編集
Re: SpoilerALの修正パッチ (No.411)
投稿日 : 2017/10/26(Thu) 03:00
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9qE.nysbvqg.FOeYWd3xE.
参照先
>>410 dipperさん

どぉもです。添付ファイルが役に立ったのですぐに直りました。
「$4 $$」などの区間を検索除外するコードが変数の「$」を誤認識するバグがありました。


それから「400(0x190)」の内容ですが、0x400190 もしくは 0x400000+0x190 という話だと思います。
まず、
[replace]0x00,ssl->main を
[replace]_MName::nul, ssl->main に変えると相対アドレスに反映されます。

つづいて、反復命令の書式ですが
*[ 反復サイズのアドレス式 :: 反復するバイト列 *]
これは2つの要素で構成されています。
「反復サイズのアドレス式」は合計バイト数で「反復するバイト列」はその内容です。

*[ _*[.0x00.]+(0xC8*2) の場合、*(0x00400000)+(0xC8*2) == 0x00505A4D+(0xC8*2) == 0x00505A4D+0x190 == 0x00505BDD バイト
_[.0xC8*2.] の場合、[.0xC8*2.] == [.0x190.] == 0x00400190 バイト
_*[.0xC8*2.] の場合、*[.0xC8*2.] == *[.0x190.] == *(0x00400190) == 0 バイト

ということでメモリが確保されていない場合は落ちますが・・・
数値(0x400190)を確認するだけなら成功?なのでしょうか。
記事編集 編集
Re: SpoilerALの修正パッチ (No.412)
投稿日 : 2017/10/26(Thu) 03:41
投稿者 dipper◆LEFxdWWYR3c
ID情報 : q2IZ9wgF7GkIHZB47PvTZ/
参照先
>>411 変態紳士さん

早速の対応ありがとうございます。
変数が機能するのを確認できました。


>「400(0x190)」

説明不足で、誤解させてしまったようで申し訳ありません。
「 *[ 」を使いたかっただけなので…(汗)
「 *[ :: *](反復命令) 」内で間接演算子の「 *[ 」を使用すると反復命令の「 *[ 」と誤認されているのか、
挙動がおかしいような気がすると言いたかったのです。

あと色々試した所、確証は無いのですが「反復サイズのアドレス式」に「 MName:: 」「 Memory:: 」など「 :: 」がある場合は正常に機能しないような気がします。
お手数をお掛けしますが、こちらもよろしければご確認よろしくお願い致します。

それと一応確認用のSSGを添付しておきます。

※追記
SSGに「 *[.0x00.]+(0xC8*2) 」「 *([.0x00.])+0xC8*2 」の項目を追加

記事編集 編集
Re: SpoilerALの修正パッチ (No.413)
投稿日 : 2017/10/26(Thu) 20:24
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9qE.nysbvqg.FOeYWd3xE.
参照先
>>412 dipperさん

間接演算子を誤認識するバグを修正しました。
「MName::」や「Memory::」は丸括弧で括る事で対応するようにしました。
「_(アドレス書式)」もしくは「_L(アドレス書式)」のように全体を括れば大丈夫です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.414)
投稿日 : 2017/10/26(Thu) 21:23
投稿者 dipper◆LEFxdWWYR3c
ID情報 : q2IZ9wgF7GkIHZB47PvTZ/
参照先
>>413 変態紳士さん

早速のご対応ありがとうございます。
>>412 に添付したSSGで機能することが確認できました。


それと、大変申し上げにくいのですがもう一件バグらしいものが…
doubleの値を [::8] で参照した時、添付したSSGのような処理(おそらく変数代入演算子?)をすると「_fmt」「<# #>」では参照できませんでした。

もっとも私の記載ミスかも知れませんが、ご確認をお願いできないでしょうか?
よろしくお願い致します。

記事編集 編集
Re: SpoilerALの修正パッチ (No.415)
投稿日 : 2017/10/27(Fri) 02:37
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9qE.nysbvqg.FOeYWd3xE.
参照先
>>414 dipperさん
ログが大きいのでテキストを添付します。
とりあえず、添付の方法で使い分けてください。

記事編集 編集
Re: SpoilerALの修正パッチ (No.416)
投稿日 : 2017/10/27(Fri) 19:18
投稿者 dipper◆LEFxdWWYR3c
ID情報 : q2IZ9wgF7GkIHZB47PvTZ/
参照先
>>415 変態紳士さん

確認、返信ありがとうございます。


double関連は思っていた以上に大きな問題だったのですね…
現状doubleは>>414に添付したSSGの処理でも機能するのでmemを使用しようかと思っています。(<# #>が使用できればそちらも併用しつつ)
あと、fmtは現状doubleには対応してなかったのですね。

それと気になったことが一点、>>415に添付されたテキストをSSG化した所、
私の環境だと< >、memの順番だとdouble値を表示してくれましたが、
下記の様に< >の項目順番を下げると< >がdouble値が表示されなくなりました。


[subject]現在値< > [<# L [: {B1} :L8], %f #>] /現在値/:f_calc, _L {B1}
[subject]現在値(mem) [ '+' _mem, _L {A1}; $ad, 8, num, -, %f '+' ] /現在値/:f_calc, _L {B1}

[subject]現在値(mem) [ '+' _mem, _L {A1}; $ad, 8, num, -, %f '+' ] /現在値/:f_calc, _L {B1}
[subject]現在値< > [<# L [: {B1} :L8], %f #>] /現在値/:f_calc, _L {B1}
記事編集 編集
Re: SpoilerALの修正パッチ (No.417)
投稿日 : 2017/10/27(Fri) 20:18
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9qE.nysbvqg.FOeYWd3xE.
参照先
>>416 dipperさん
以下を追加しました。内容に関しては追加のHowToSSGを参照してください。

[: :I], [: :I1], [: :I2], [: :I3], [: :I4], [: :I5], [: :I6], [: :I7], [: :I8],
[: :R], [: :R4], [: :R8],
[: :LI], [: :LI1], [: :LI2], [: :LI3], [: :LI4], [: :LI5], [: :LI6], [: :LI7], [: :LI8],
[: :LR], [: :LR4], [: :LR8]

>下記の様に< >の項目順番を下げると< >がdouble値が表示されなくなりました。
浮動小数点数と整数の正のゼロは同じですが、(浮動小数点数には負のゼロがあります)
それ以外はバイナリとして一致しません。
トリッキーな方法で一致する事もありますが基本的には違うものです。

SSGをロードして画面の表示時にローカルメモリを初期化する事と思いますが、
どちらが先にメモリを初期化するかの違いが出ています。
つまり、4バイト整数と8バイト浮動小数点数の違いです。

添付のSSGファイルの要領で対処できます。

記事編集 編集
Re: SpoilerALの修正パッチ (No.418)
投稿日 : 2017/10/27(Fri) 22:18
投稿者 dipper◆LEFxdWWYR3c
ID情報 : q2IZ9wgF7GkIHZB47PvTZ/
参照先
パッチの機能追加ありがとうございます。
「 [::I] 」「 [::R] 」が正常に機能する事が確認できました。
まさかこんなにも早く対応して頂けるとは思ってもいませんでした。

これからSSGを作成するにあたって注意する点は、浮動小数点数を<# #>で参照するSSGには経路のポインタ全てに忘れずに「 [::I] 」を使用する事ですね。
「 [::I] 」の追加漏れ(と間接演算子の[::I]変換漏れ)があり浮動小数点数を参照出来ず悪戦苦闘してました…
記事編集 編集
Re: SpoilerALの修正パッチ (No.419)
投稿日 : 2017/10/27(Fri) 23:34
投稿者 dipper◆LEFxdWWYR3c
ID情報 : q2IZ9wgF7GkIHZB47PvTZ/
参照先
>>415 変態紳士さん

連投すみません。

>>415の添付ファイルに$Val、$Idxを追加してみたのですが、何故か$Val、$Idxが機能しないような?
とりあえず確認用のSSGを添付しておきます。

記事編集 編集
Re: SpoilerALの修正パッチ (No.420)
投稿日 : 2017/10/28(Sat) 01:02
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9qE.nysbvqg.FOeYWd3xE.
参照先
>>419 dipperさん
$Idxが使えるようにしておきました。
$Valの方は使われていなかったようです。
確認用のSSGファイルを添付しておきます。

記事編集 編集
Re: SpoilerALの修正パッチ (No.421)
投稿日 : 2017/10/28(Sat) 04:51
投稿者 dipper◆LEFxdWWYR3c
ID情報 : q2IZ9wgF7GkIHZB47PvTZ/
参照先
>>420 変態紳士さん

連日の対応ありがとうございます。
浮動小数点数の演算時でも「 $Idx 」が機能する事が確認できました。

あと、どうやら「 [define B1]{B0} ? {B0} : ({B0} = {M0}) 」だと以降の演算部分(今回の場合は「 +$Idx*4 」で$Valが機能してないと思った原因)が機能しないようですね。
「 [define B1]{B0} ? 0 : ({B0} = {M0});{B0} 」に直した所、正常に演算されました。
それと「 $Val 」は「 0x[! $Val !] 」でないと機能しないようです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.422)
投稿日 : 2017/10/28(Sat) 05:44
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9qE.nysbvqg.FOeYWd3xE.
参照先
>>421 dipperさん
>「 [define B1]{B0} ? {B0} : ({B0} = {M0}) 」だと以降の演算部分(今回の場合は「 +$Idx*4 」)が機能しない
演算子の優先順位によるものです。それが正常な動作で、そうならないようにするには三項演算子の開始から終了までの全体を丸括弧で括るのが定石です。
C言語のdefine文であれば、define側に括弧を用いる事が当たり前ですが、
SSGはインタプリタなので括弧を解釈する時間すら短縮する目的で省く事も考えられます。

>「 $Val 」は「 0x[! $Val !] 」でないと機能しない
そちらは静的な解釈で動作するタイミングが違います。
SSGファイルの読み込み時、$Val が 0xFF であれば 0x[! $Val !] はSSGファイルに 0xFF と書かれているのと同じ動作になります。
ロード時の静的な解釈でメモリ上のテキストを置換してから動的な解釈を開始します。
なので実行時には変数の概念がありません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.423)
投稿日 : 2017/10/28(Sat) 17:25
投稿者 dipper◆LEFxdWWYR3c
ID情報 : q2IZ9wgF7GkIHZB47PvTZ/
参照先
>>422 変態紳士さん

ご指摘ありがとうございます。
色々不勉強が露見している…

それとバグらしきものが一件あったのでご報告させて頂きます。
「 %f 」でオフセット演算子を使用すると「 [.0x04.] 」の場合は機能せず「 [. 0x04 .] 」の場合しか機能しないようでした。
一応、確認用のSSGファイルを添付しておきます。

記事編集 編集
Re: SpoilerALの修正パッチ (No.424)
投稿日 : 2017/10/28(Sat) 20:10
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 9qE.nysbvqg.FOeYWd3xE.
参照先
>>423 dipperさん
どぉもです。直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.425)
投稿日 : 2017/10/28(Sat) 21:51
投稿者 dipper◆LEFxdWWYR3c
ID情報 : q2IZ9wgF7GkIHZB47PvTZ/
参照先
>>424 変態紳士さん

早速のパッチ修正ありがとうございます。
>>423に添付したSSGで正常に機能してる事が確認できました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.426)
投稿日 : 2017/11/01(Wed) 20:52
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 5ssDWwMmDw8qdAUi4vCTV0
参照先
>> 変態紳士さん

毎度パッチの更新ありがとうございます。
早速なのですがバグらしきものがあったので報告させて頂きます。

どうやらバイト列で条件分岐命令など「 :: 」がある命令に、同じく「 :: 」がある命令を埋め込むとエラーが発生しSSGが展開できないようです。
動作表見たいなものを下記に記載と確認用のSSGを添付しておきます。
確認用のSSG(6.1)は「 winmm.dll 」を外した状態なら特に問題なく展開できました。

お手数をお掛けしますが、ご確認よろしくお願い致します。

==============================
マスクバイト命令は「 ?やその他の命令を埋め込むことはできません。 」とあるので割愛。
条件分岐命令などの値はHowToSSGのコピペなので適当。

*< FF :: 01 :: FF *>
┣× *< FF :: *{ FF :: 01 *} :: FF *> (モジュール WINMM.DLL のアドレス 7210B500 でアドレス 00953000 に対する読み込み違反がおきました) (WINMM.DLL先頭アドレス 72100000)
┣× *< FF :: *[ 0x20 :: FF00 *] :: FF *> (モジュール WINMM.DLL のアドレス 6F9CB4B0 でアドレス 008E3000 に対する読み込み違反がおきました) (WINMM.DLL先頭アドレス 6F9C0000)
┗× *< FF :: <_ A020 :: FFCC _> :: FF *> (モジュール WINMM.DLL のアドレス 7210B4B0 でアドレス 00863000 に対する読み込み違反がおきました) (WINMM.DLL先頭アドレス 72100000)
*{ FF :: 01 :: FF *}
┣× *{ FF :: *< FF :: 01 *> :: FF *} (モジュール WINMM.DLL のアドレス 6F9CB47C でアドレス 03617000 に対する読み込み違反がおきました) (WINMM.DLL先頭アドレス 6F9C0000)
┣○ *{ FF :: *[ 0x20 :: FF00 *] :: FF *}
┗× *{ FF :: <_ A020 :: FFCC _> :: FF *} (外部例外 EEFFACE)
*[ 0x20 :: FF00 *]
┣× *[ 0x20 :: *< FF :: 01 :: FF *> *] (モジュール WINMM.DLL のアドレス 7210BA7C でアドレス 00893000 に対する読み込み違反がおきました) (WINMM.DLL先頭アドレス 72100000)
┣○ *[ 0x20 :: *{ FF :: 01 :: FF *} *]
┗× *[ 0x20 :: <_ A020 :: FFCC _> *] (外部例外 EEFFACE)

記事編集 編集
Re: SpoilerALの修正パッチ (No.427)
投稿日 : 2017/11/03(Fri) 06:13
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Jz6HyVXmbnvl88LqcNfrG.
参照先
>>426 dipperさん
どぉもです。直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.428)
投稿日 : 2017/11/03(Fri) 20:50
投稿者 dipper◆LEFxdWWYR3c
ID情報 : 5ssDWwMmDw8qdAUi4vCTV0
参照先
>>427 変態紳士さん

問題なく起動できるようになりました。
迅速な対応ありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.429)
投稿日 : 2017/11/04(Sat) 01:16
投稿者 七星◆MH.ms4.V3i2
ID情報 : H/JWZdpve2emNqRE9yzuF0
参照先
ご無沙汰しております、お疲れ様です。大分浦島状態ですが2,3気になった点を

ウィンドウ+モジュール指定が機能しなくなった様に思いますが、この辺りを読んでいると
どうも正規表現時に限定されているのでしょうか(MultiByteToWideChar()の論理否定が不要?

それと今更ながらに気づいたのですが、このトリミングは必須でしょうか
添付のようなSSGだとアドレスネーミングで取得したリストの行頭がトリムされ、元リストにまで置換が及んでいます
これだと従来の空白による桁揃えが出来ません、2番目の<@ @>は元リストに波及しませんがトリムで同じく桁揃え不可です

ちなみにHowToSSGの初期変数ですが、$Readの実装は現在のコード評価が値の読み込み用かを示すものなので、説明が少し奇妙です

記事編集 編集
Re: SpoilerALの修正パッチ (No.430)
投稿日 : 2017/11/05(Sun) 04:34
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Jz6HyVXmbnvl88LqcNfrG.
参照先
>>429 七星さん
おひさしぶりです。
直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.431)
投稿日 : 2017/11/19(Sun) 21:34
投稿者 七星◆MH.ms4.V3i2
ID情報 : H/JWZdpve2emNqRE9yzuF0
参照先 https://github.com/sceawung/source/commit/2ec5432#diff-ff0feb1ebb241ac241672b45c658eecdR4194
毎度ながら修正パッチの更新ありがとうございます

意図的かバグかちょっと怪しい所ですが、参照先の更新において
前述されるTAG_INDIRECTIONが考慮されず、間接参照された整数も64bit型になります
オーバーフロー時の挙動が変わり、HowToSSGとの整合性も崩れています

間接演算子。[: :]と同等でプログラミング言語の書式に合わせたものです。
[: :] は *( ) に置き換える事もできます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.432)
投稿日 : 2017/11/19(Sun) 23:20
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : Jz6HyVXmbnvl88LqcNfrG.
参照先
>>431 七星さん
どぉもです。直しておきました。
たしかに「*( )」が64bitになってました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.433)
投稿日 : 2017/12/14(Thu) 06:07
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : xcUYTNgN1hR.H0rg2frLq1
参照先
動作検証中...

SSGパーサーにプラグイン機能を追加してみました。(添付ファイル)
仕様変更するかもしれないし、動作速度も微妙に遅くなった気がしないでもないので、
とりあえずは検証中です。

プラグインのサンプルとして "source\plugin-example" を用意しています。
プラグインの作成にはC言語の開発環境が必要になります。
ドキュメントは "source\plugin-example\documents" に入っています。

※追記
2017/12/23: 添付ファイルを更新してスレッドトップに統合
記事編集 編集
Re: SpoilerALの修正パッチ (No.434)
投稿日 : 2017/12/15(Fri) 22:08
投稿者 RICK@管理人◆PIflJPH.oeY
ID情報 : sXmF79WViYrv22OWtNzHP1
参照先
[define before_after](([:$base:]==0x0001A007)||([:$base:]==0x00012007)||([:$base:]==0x00012107)||([:$base:]==0x0001A107))?($base+0x08):([:$base+0x10:])
[define range][.0x00.]=>base;([:$base+0x08:]>$val)?{before_after}=>base;$base+$val*4:0

[repeat]Game->plant_ssr,0,3,1

[group]plant_ssr
[subject]植物[!L($Val+1)!]:dir
[subject]成長度:calc,_$val=2601;{range}=>base;$base+0x[!$Val*10*4!],0,13
[subject]水分度:calc,_$val=2602;{range}=>base;$base+0x[!$Val*10*4!],0,100
[subject]栄養度:calc,_$val=2603;{range}=>base;$base+0x[!$Val*10*4!],0,100
[subject]体力度:calc,_$val=2605;{range}=>base;$base+0x[!$Val*10*4!],0,100
[subject]美的度:calc,_$val=2606;{range}=>base;$base+0x[!$Val*10*4!],0,100
[subject]薬効度:calc,_$val=2607;{range}=>base;$base+0x[!$Val*10*4!],0,100
[subject]レア度:calc,_$val=2608;{range}=>base;$base+0x[!$Val*10*4!],0,100
[back]
[/group]

上記のように記述すると、[!L($Val+1)!]の部分は反映されますが、
$base+0x[!$Val*10*4!]の部分は反映されない模様です。
おそらく、三項演算子の部分が影響していると思われるのですが、これは仕様ですか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.435)
投稿日 : 2017/12/15(Fri) 22:56
投稿者 amateur◆kR..xsXL6RU
ID情報 : afHW6OjFW.HBoKI2tAaK4.
参照先
>>434 RICKさん
横からですみません。
 [define range][.0x00.]=>base;([:$base+0x08:]>$val)?{before_after}=>base;$base+$val*4:0
の箇所は、
 [define range][.0x00.]=>base;([:$base+0x08:]>$val)? (({before_after})=>base;$base+$val*4) :0
とすればよいのかな?と思います。

 条件式 ? 真式 : 偽式
の「真式」または「偽式」の部分でアドレスコーディングの分割「;」を使う場合は
「真式」または「偽式」部分全体を丸括弧()で括る必要があったと思います。
括弧で括らないと、「;」 の箇所で三項演算子の解釈が終わってしまうのではと。

また、[define range] についは、
三項演算子の中で入れ子で三項演算子を使っている?ようなので、
{before_after}の部分を
({before_after})というように丸括弧()で括らないといけないような気がした…のですが、
真式全体を括弧で括っていれば、重ねて括弧は不要なのかも?
このような書き方を私は試したことがないので実際のところはどうなのか分かりませんが、
括弧を使うべきか否か迷ったら、取り敢えず括弧で括っておいた方が無難のように思います。
記事編集 編集
Re: SpoilerALの修正パッチ (No.436)
投稿日 : 2017/12/16(Sat) 00:55
投稿者 七星◆MH.ms4.V3i2
ID情報 : BLnMoN4nZjS3x3pr0QPwy.
参照先
>>433 変態紳士さん
KO RE HA!!ということで早速エンコーディング変換を適当に書いてみました
ただディレクトリをSpoilerAL.iniで指定しないと'in\\\0'が実装定義+バグ?で
エスケープシーケンスが2文字以上になるとIntelliSenseと異なりコンパイラの闇に吸い込まれるよう
返り値の左辺代入などや、DWORDの時Highワードがクリアされずログと論理判定もちょっと怪しい

読み込みをDLLに限定するとテキストファイルやコンパイラ出力が煩わしくなさそうです
ちなみにサンプルは現在値もツリーに表示していると連発されツリーもおかしくなったり…

現状ではプラグインからのプロセスアクセスはPID渡して独自にやってねという感じでしょうか
プラグイン側に閉じられても困るし…自由すぎる分インターフェイスの策定は悩ましいですね

記事編集 編集
Re: SpoilerALの修正パッチ (No.437)
投稿日 : 2017/12/16(Sat) 03:55
投稿者 RICK@管理人◆PIflJPH.oeY
ID情報 : UiAzIYUoWrgN4BupYByBr1
参照先
>>435 amateurさん
おっしゃる通りでどうやらカッコが必要だったようです。
ただ、A?B:Cがセットなのでカッコでくくるなら(A?B:C)のほうがいいような・・・

というわけで、下記のように変更したら正常動作いたしました。

[define before_after](([:$base:]==0x0001A007)||([:$base:]==0x00012007)||([:$base:]==0x00012107)||([:$base:]==0x0001A107))?($base+0x08):([:$base+0x10:])
[define range][.0x00.]=>base;(([:$base+0x08:]>$val)?({before_after})=>base;$base+$val*4:0)

お騒がせして申し訳ありませんでした。
記事編集 編集
Re: SpoilerALの修正パッチ (No.438)
投稿日 : 2017/12/16(Sat) 21:39
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : xcUYTNgN1hR.H0rg2frLq1
参照先
>>434-437 RICK@管理人さん、amateurさん
[define]に式を書くまではいいのですが、
それを置き換える側の「{ }」に接続する演算子の優先順位で問題が発生します。

そういう場合は、
[define abc]a ? b : c

[define abc](a ? b : c)
とする事で、優先順位の問題は無くなり、defineの定義に汎用性が確保されます。

ただし、インタープリタは丸括弧「( )」ですら処理に時間が発生しますので、
省略して処理速度を優先するようなコードも想定できます。


>>436 七星さん
>'in\\\0'
以前これと同じバグがあったのですが、今回もコンパイラによって動作が違うようで・・・
とりあえず直しました。
それとスタックの処理が怪しいので少し変更しました。

>PID渡して独自に
そうですね。
winmm.dll がエクスポートするか、関数ポインタを渡しておくか、SDKを用意するか、
色々方法はありますが必要なものが分かっていません。
それ以外にもエラー処理とかコールバック処理とか不足している気がします。

※追記
>返り値の左辺代入
>DWORDの時Highワード
>ログ
修正しました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.439)
投稿日 : 2017/12/17(Sun) 13:28
投稿者 七星◆MH.ms4.V3i2
ID情報 : BLnMoN4nZjS3x3pr0QPwy.
参照先
>>438 変態紳士さん
お疲れ様です。複数文字リテラルはMSVCだとエスケープシーケンス2文字目以降が上位に積まれるようですが
全部エスケープシーケンスで書けばバイトスワップ不要という仕様でしょうか、ドキュメントが見当たらない…
実装定義かつVisualStudioが外部コンパイラを扱えるといっても自社のIntelliSenseが異なる評価は如何なモノか。
適当に'[^']+\\[^']*\\[^']*'で全文検索してみると、ちらほらと、問題なさそうな部分も有りました

返り値の問題は解決したのですが、第2引数以降での左辺代入「printf("%p", Val = 0);」がパースエラーになりました
Parsing「printf」→[0x0]
Parsing「0」→[0x0]
Parsing「Val」→[0x0]
「=」の解析エラー。

ちなみにprintf("%p", 0);が「00000000"」となったりもしました

密かにUTF-8対応もしてくださったようで…少し気になったのが、文字列項目で書き込むとNULL終端されないようです(これも'00\0\0'の所為か
エンコード関数の想定としてはRubyでのリスト抽出と、抽出するメモリをcp932で構築した方がUTF-16leからも効率的と考えた次第です

今のところ実引数が足りない場合HeapAllocの初期値0で、全ての引数は省略可能だが、デフォルトは0固定という事で良いのでしょうか
数値はそのまま渡るのでPARAM_STRINGへも問題ないようですが、PARAM_DWORDに文字列を突っ込むのは想定外ですかね

最低限エラー通知くらいは必要になりそうですが、プラグインでエラーを保持してGetLastError()もどきは些か問題がある気がしますし
返り値に加えエラー値を戻すのは迂遠な気もしますし、プラグインからガイド出力なら汎用性あるかしら…あとは変数の参照渡しとか?
プラグインを書く人は多くなさそうなので、SSGからの呼び出し方法をまず確定させてからか…全体が決まらないとそれも難しいでしょうか

それとプラグインとは別件ですが、たまにAL終了時クラッシュする再現性が不透明だったものが特定できました

  • [process]にウィンドウ指定が含まれる
  • [allocate]を使用している
  • ALはプロセスIDを捕捉していないが、条件にあうプロセスは存在している
    (主にゲームの再起動、またはリモートメモリにアクセスしていない場合)

以上を満たしていると

  1. TMainFormのデストラクタでDeleteProcessMonitor()によりCRITICAL_SECTIONが削除される
  2. TSSGCtrlのデストラクタで::Clear()からOnSSGCtrlCleared()が呼ばれ、メモリ解放にTProcessCtrl::Open()へ
  3. 同::Attach(string)が行われTProcessCtrl_FindProcess()に戻り、StopProcessMonitor()削除済みcsが引数に使われる

ということが起きます、これは再起動されたプロセスに対してメモリ解放が行われる危険性も…?
PROCESSMEMORYBLOCKにGetProcessTimes()からCreationTimeでも格納しておくべきでしょうか
記事編集 編集
Re: SpoilerALの修正パッチ (No.440)
投稿日 : 2017/12/18(Mon) 22:46
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : xcUYTNgN1hR.H0rg2frLq1
参照先
>>439 七星さん
どぉもです。沢山見つけていただいてありがとでした。
いちおう直しておきました。

>'[^']+\\[^']*\\[^']*'
>左辺代入「printf("%p", Val = 0);」がパースエラー
>printf("%p", 0);が「00000000"」
>UTF-8 (中略) '00\0\0'
>PARAM_DWORDに文字列
>プラグインからガイド出力
>AL終了時クラッシュ

>デフォルトは0固定
デフォルト値を指定する書式自体がないので・・・ 一応はできるくらいの認識です。
↑書式を考えると今度はパーサーで死にそうなので。。。
記事編集 編集
Re: SpoilerALの修正パッチ (No.441)
投稿日 : 2017/12/21(Thu) 21:59
投稿者 七星◆MH.ms4.V3i2
ID情報 : BLnMoN4nZjS3x3pr0QPwy.
参照先
>>440 変態紳士さん
少し間が空いてしまいました。libはいずこと思ったらエクスポートに修正パッチが割り当ててくれるのですね
パースは問題なくなったように見えますが、気がついた所ではmemmove()でスタックがおかしいようです
第2引数が第1引数に引き摺られて、MoveProcessMemory()呼び出し時点でlpSrcがlpDestと同一になります

一つ思ったのですがダブルクォートを普遍的に文字列リテラルとして先頭アドレスを返す訳にはいかないでしょうか
char* str = "ABC";」の真似事のような。コールスタックはすっきりしそうですが、パーサとしては複雑になりますかね
関数名指定と競合しそうでもありますが…寿命は現スコープのみとなるでしょうが、SSG上で文字列を元に演算するくらいには有用?

デフォルト引数はC++においてもコンパイル時に呼び出し側が補完されるだけですし、パーサを複雑にするほど必要ではないですね
既定値までエクスポートするのはゴチャゴチャしますし、不足時0さえ決まっていれば大抵はそれで済むでしょうし。
思えば参照渡しの方がアドレス演算子を単項として実装しただけでは、QWORDやDOUBLEを指定・知る術がありませんね…
記事編集 編集
Re: SpoilerALの修正パッチ (No.442)
投稿日 : 2017/12/22(Fri) 21:16
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : xcUYTNgN1hR.H0rg2frLq1
参照先
>>441 七星さん
どぉもです。

>エクスポート
プラグインの部分を少し変更しました。

>memmove()でスタック
直しておきました。が、(printfとか)変更しました。

>ダブルクォートを普遍的に文字列リテラルとして
変更可能な文字列変数や文字列定数を扱うような事でしょうか。
事前にバッファリングしてポインタとIsStringの様なフラグを持てば。
大きな変更をすると出来るはずですが、なんだか大きそうな気がするので。
記事編集 編集
Re: SpoilerALの修正パッチ (No.443)
投稿日 : 2017/12/23(Sat) 00:06
投稿者 七星◆MH.ms4.V3i2
ID情報 : BLnMoN4nZjS3x3pr0QPwy.
参照先
>>442 変態紳士さん
有り難うございます、手元で試した限りでは従来のSSGもプラグインも問題なさそうです

文字列リテラルは左様ですね、出現時バッファしてバッファアドレスを返し
リストアップしておいてパーサを抜ける時に解放的なものを考えていましたが
文法として独立させると実引数とかもリモートやらローカルやら間怠っこしくなりそうですね

此度の実装でmemmoveのコピー元にも文字列指定が出来るみたいですし、それで用は成せそうです
コピー先のスレッドセーフまで望むならプラグインにHeapAlloc/HeapFreeの真似事をさせても済むかしら
記事編集 編集
Re: SpoilerALの修正パッチ (No.444)
投稿日 : 2018/01/06(Sat) 21:34
投稿者 七星◆MH.ms4.V3i2
ID情報 : z9zL9z.rnFNg78a4Vj0T80
参照先
明けましたオメデトウゴザイマシタ。昨年末の修正で条件分岐に害虫が発生したようなのでご報告

then節およびelse節で括られていない三項演算子があると条件式に関係なく実行されます

検証用のSSGを添付します、SSGデバッグモードにてラベルにフォーカスしてください

記事編集 編集
Re: SpoilerALの修正パッチ (No.445)
投稿日 : 2018/01/07(Sun) 10:06
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 23aZm679tEAf85OX7Ij7k1
参照先
>>444 七星さん
>明けましたオメデトウゴザイマシタ。昨年末の修正で条件分岐に害虫が発生したようなのでご報告
どういたしましてオメデトウゴザイマシタ。今年も虫を取りました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.446)
投稿日 : 2018/01/09(Tue) 21:14
投稿者 七星◆MH.ms4.V3i2
ID情報 : z9zL9z.rnFNg78a4Vj0T80
参照先
>>445 変態紳士さん
年明け早々から迅速な対応ありがとうございます

SSGコードのプラグイン化を進めていますが、ドキュメントよろしくsprintfを直接エクスポートしても破綻なく動いてくれています
ローカルリスト抽出はqsortとの相性も良く、フォーマットやらソートやら多くの部分をCライブラリに丸投げできそうです

追記
ところでNo.417あたりにも通ずる話なのですが、プラグイン関数にPARAM_DOUBLEがあっても整数パーサではオペランドが整数固定なので
sprintf($dest, "%f", [:$PFLOAT:R])といったものは切り捨てられる上、可変長引数では型が不一致となるのは致し方なしといった所でしょうか

それとRETURN_DOUBLEの場合、エクスポート関数の戻り値はuint64_tで定義し、*reinterpret_cast<uint64_t*>(double*)などして返すべきでしょうか
現状の実装だとST(0)を参照していないのでエクスポート関数の戻り値をdoubleとすると事ができないように思いますが

おまけ:then節の最後でif文が評価されると外側のelse節が引き摺られるようです
検証用を添付します、同じくSSGデバッグモードにてラベルにフォーカスしてください

記事編集 編集
Re: SpoilerALの修正パッチ (No.447)
投稿日 : 2018/01/15(Mon) 18:09
投稿者 七星◆MH.ms4.V3i2
ID情報 : z9zL9z.rnFNg78a4Vj0T80
参照先 https://github.com/sceawung/source/commit/1eb9b4e
修正パッチのアップデートお疲れ様です。新たに実装してくださったstrcpy,wcscpyですが、
「strcpy」の解析エラーになります、case TAG_STRCPY(_BEGIN)にあたるような分岐が抜けている所為でしょうか
それと/regexスイッチを使用すると正規表現の有無に関わらずアクセス違反が発生するようになりました

よくよく考えたらdoubleフォーマットに限って言えば、I8で読み出してそのまま渡せば問題はなさそう…
可変長引数のMS仕様からすれば、float型はdouble型に変換とのことなので、ftod::も必要でしょうか?
(プラグインにはTSSGCtrl::ReadSSGとTSSGCtrl::Clear時のイベントハンドラがあると便利カモ
 アドレスパース時は繁雑すぎるかしら…DllMainはユーザー定義イベントを扱っても良いのだろうか

ところでCompareVersionはメンバ参照にVersionを経由していないようですが、これはCだと許されるのでしょうか


日に日にパーサが複雑なり…#undef _HAS_EXCEPTIONSすれば静的変数以外ならCRT非依存でSTL扱えないかと考えていた最中
ふとstd::mapを使ってた属性を思いだし、変数スコープの簡便な実装を思いついたので参照先に拵えてみました
(属性のコンストラクタはインライン化されてるんですか!ヤダー、BC++の例外ハンドラ構造体をよく調べてない…
草案というか素案レベルの実装ですが。外側のスコープは参照しだすと参照先を保持してソコに戻さないとだし
おまけに本来ハッシュ一致時に行うキー比較が無いので、変数名の衝突がハッシュ関数依存という…
(変数名ならFNV-1の方が良さそう?lower_boundとキーが一致すればinsert不要?テンプレートゆえ関数も型毎に…

残りの端々はチェインファイル不要な[replace]としての[offset]。それと[enabled]と[funnel]を併用したとき
項目で有効条件に関わる書き換えを行うと、元実装では付随する書き込み処理が影響を受けてしまいます
付随してという目的上、違和感がありファンネルファイル自体に条件式もあるので、6.2なら修正したらどうかなと
([trace]に関してもTSSTrace::WriteでSSGC.IsEnabledするので、TSSGCtrl::FunnelingでIsEnabledは不要のはず
 [enabled]や[io_fep]をアドレスコーディングから呼び出す関数…はパーサが再帰するけど如何なものか…
記事編集 編集
Re: SpoilerALの修正パッチ (No.448)
投稿日 : 2018/01/16(Tue) 02:22
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : 23aZm679tEAf85OX7Ij7k1
参照先
>>447 七星さん

>double
>可変長引数
psrse_int, parse_real, parse_reset を追加しましたが、
整数/浮動小数点数パーサーの両方で使えるという事であれば以下のようになります。
double ... [: :8], [: :F8] (キャストなし、整数パーサーはガイドにキャストされていない値が表示される)
float .... [: :F], [: :F4] (パーサー内部で float → double のキャスト、整数パーサーは同上)

ただ、この方法がナントカ言語やナントカScriptと比べて使い勝手とか微妙です。
今更ですが変数の型とか後付では厳しいですし。。。

>CompareVersion
適当に書いて読み返しすらしていなかったり。
直しました。

>スコープ
用法用量を読んでみます。後日になります。

>/regexスイッチ
直しておきました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.449)
投稿日 : 2018/01/16(Tue) 18:07
投稿者 七星◆MH.ms4.V3i2
ID情報 : z9zL9z.rnFNg78a4Vj0T80
参照先 https://github.com/sceawung/source/compare/9067fae...d3043e8
>>448 変態紳士さん
/regexスイッチ、プラグインコンパイル、共に正常化を確認しました

あ、なるほど、float読み込み時点でdoubleにキャストしてたら要りませんね
元々がアドレスコーディングと銘打つ以上、整数演算性能が犠牲になっても本末転倒でしょうし
実装としてはプラグインに精度を保ったまま渡す手段があれば十分かな、と思います


スコープ変数はお手隙の際にでも。初期化されていない変数を使用してなければ問題ないはずですし
グローバルスコープは実質[adjustment]向けなので、コレ無しだと互換性は完全に維持される…カナ?

ただ…実用に向けては課題も多そうです。接頭辞とハッシュはさておき、間接参照以上に参照透過性の低下が顕在化するため
元実装では、アドレス(0ならスキップ)→条件式なファンネルの評価順序を参照先よろしく改めるべきかと思います
条件式を先に評価すれば、アドレス部で間接書き込みも正当に…破壊的な変更になるので6.3にしてしまおう


外側のスコープ参照はAdd/Eraseにして、MARKUP_VARIABLEにTScopeAttribute*を持たせれば…と思いましたが
TSSGCtrl::GetAttributeに・同じTypeが複数ある場合、返されるのは格納順の若いほう。とコメントがあるものの
SSGS->GetAttribute()が内側から並ぶことをMakeNowAttributeVec()の実装で保証できるのか一寸理解が及びませんでした
OPTIMIZE_ALLOCATORをオフにしても、BC++のアロケータがトップダウンを保証しているわけでも無さそうですし
[enabled]と[replace]も外側からの評価を実装しようと思いきや、コレで躓きました。(順不同なら階層持たせ常にソート?

スコープを明確にするには[scope]へ定数式を実装して…グローバルスコープは別タグか[script]に定数式か…


P.S.実引数指定部で b = a = 1 といった具合に括弧なしで代入を複数回行うと、評価がおかしいようです
  そういえばいつの間にかfor文でコンマが使えますが、return 0, 1;は括らないと無理なので順次評価演算子という訳ではない…?


リベース。あとはスコープ明示宣言の初期化定数式…[script]は上位で処理されちゃってましたヌェ
…むしろ未定義のスコープ変数が参照されたらグローバル変数と見なす方が、自然でグローバル宣言も不要だろうか


これしきのパースに正規表現使う必要ないだろうとは思われるしかし(ものぐさ)
記事編集 編集
Re: SpoilerALの修正パッチ (No.450)
投稿日 : 2018/01/21(Sun) 06:08
投稿者 七星◆MH.ms4.V3i2
ID情報 : z9zL9z.rnFNg78a4Vj0T80
参照先 https://github.com/sceawung/source/commit/3c2f25c
更新お疲れ様です。先日からどうも ret = printf("%d%d", 1, 2); のようなコードにおいて(ALのprintfは値を返しませんが

Parsing「printf」→[0x0]
Parsing「1」→[0x1]
Parsing「ret」→[0x1]
Parsing「2」→[0x2]

という具合に意図しないタイミングで左辺が実行されます。 !(lpMarkup->Type & (OS_CLOSE | OS_DELIMITER)) とされた影響でしょうか?

それと未定義のスコープ変数ですが、グローバルスコープ扱いにしないとグローバル宣言構文が必須になってしまうので…。記述的にも実装的にも即す?形へ
実数モードのチェックは値の保守に…不要でしょうか? IEEE 754倍精度で上位32ビットが全て0となるのはDBL_TRUE_MIN〜DBL_MINの下半分くらいですかね
(接頭辞も元実装が@でグループ参照している事を鑑みると、それも自分で書いておいて良い実装とは云いがたいけれど
 さりとて他の候補も#くらいのもので、数値変数かつハッシュによる管理を考えれば不自然でもないが、コメント接頭辞な言語は多し…
 Attribute実装⇒安易に@としたけれど、サブ/コルーチンが予約されているのを見るとグループ参照で実装する場合の枷と成るか否か?


ところで…矢継ぎ早のようで恐縮ですが、menu.iniによるツールメニューについて、SSGパスを与える手段は如何でしょう
例えば参照先よろしくlpFile未指定ならとか。関連付けられたプログラムで開かれる筈です(引数に変数実装は面倒だっただけとも言う
記事編集 編集
Re: SpoilerALの修正パッチ (No.451)
投稿日 : 2018/01/21(Sun) 23:25
投稿者 dipper◆LEFxdWWYR3c
ID情報 : iJIkvwGECPbp2wGxUllct/
参照先
>> 変態紳士さん

別スレでは態々閲覧、さらには修正パッチの修正ありがとうございます。
本当なら別スレに投稿した後、こちらのスレにも報告しようと思ったのですが寝オチしてしまいました…

それと「条件分岐命令」「条件付き置換命令」「反復命令」の件は修正されたことを確認できました。対応ありがとうございます。

ただ「マスクバイト命令」はエラーがでるようでした。
(確認したバイト列はHowToSSGに記載されている「 <_ A020 :: FFCC _> 」を使用しました)
記事編集 編集
Re: SpoilerALの修正パッチ (No.452)
投稿日 : 2018/02/25(Sun) 14:43
投稿者 ハマテツ
ID情報 : boQHC02bUI7GFlbvXW7RT0
参照先
いつもありがとうございます。
解決済みのものなら申し訳ないのですが、パッチをspoilerAL.exeがあるフォルダにコピペし、起動使用としたところ、

『モジュール"SpoilerAL.exe"のアドレス00483415でアドレス0359D4E0に対する読み込み違反がおきました。』
と、
『モジュール"SpoilerAL.exe"のアドレス00562CF4でアドレス0000002Cに対する読み込み違反がおきました。』
の二つのエラーが出て起動ができません。

よろしくお願いします。
記事編集 編集
Re: SpoilerALの修正パッチ (No.453)
投稿日 : 2018/02/25(Sun) 15:45
投稿者  
ID情報 : fA8PgQWXVbWnRSzomv3Ot/
参照先
>>ハマテツさん

他の人の報告もありませんし自分も修正パッチあてましたがそのようなエラーは起きてません。
一度SpoilerALを削除してからもう一度試してみた方がいいのでは?

あとコピペしただけに見られますが
※注意
古いSpoilerAL修正パッチでは「version.dll」をSpoilerALのフォルダ内に置く仕様でしたが、
現在は「version.dll」から「winmm.dll」へ変更しています。
不要な「version.dll」がフォルダ内に残っていると正常に機能しません。
「version.dll」が残っていれば削除してください。

という注意書きがありますがそちらは大丈夫ですか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.454)
投稿日 : 2018/02/25(Sun) 19:21
投稿者 454
ID情報 : IvMwJ3u7Xe6EtPMdMsS8m.
参照先
403
Forbidden
Access to this resource on the server is denied!

と表示されて落とせません
記事編集 編集
Re: SpoilerALの修正パッチ (No.455)
投稿日 : 2018/02/26(Mon) 17:38
投稿者 tototo
ID情報 : RLMs82YrlxzE6Z0atlDTt.
参照先
ハテマツ様
横から失礼します。

>『モジュール"SpoilerAL.exe"のアドレス00483415でアドレス0359D4E0に対する読み込み違反がおきました。』
と、
>『モジュール"SpoilerAL.exe"のアドレス00562CF4でアドレス0000002Cに対する読み込み違反がおきました。』

自分も同様のエラーに悩み、状況を報告するために詳しい再現実験を繰り返しましたが、
その過程で、レジストリのあつ氏のキーを一度削除し、再ダウンしたSpoilerALのフォルダを
c:\直下に配置したところ、エラーが解消しました。
(それまではFドライブに各種エディタ類のフォルダを作り、更にその下に配置していました)
(その状況を再度構成すると、やはりエラーになります)

お役に立てないかも知れませんが、対策のご参考になれば。
記事編集 編集
Re: SpoilerALの修正パッチ (No.456)
投稿日 : 2018/02/26(Mon) 19:55
投稿者 RICK@管理人◆PIflJPH.oeY
ID情報 : hs0uQi0MhhTGitibNifhF/
参照先
>>はまテツさん
以下を試せば解決するかもしれません。

@SpoilerALとその最新版の修正パッチを再ダウンロード
ASpoilerALのレジストリとフォルダ内のファイルを全削除
B念のためPCを再起動
CダウンロードしたSpoilerALとその最新版修正パッチと現時点で必要なSSGのみで再構成

>>454
ファイルに対する直リンクでのダウンロードを禁止しています。
ブラウザをシークレットモードにしていたり、テキストエディタやメールをクリックした場合はダウンロードできません。
シークレットモードでないブラウザで掲示板経由でダウンロードしてください
記事編集 編集
Re: SpoilerALの修正パッチ (No.457)
投稿日 : 2018/02/27(Tue) 03:33
投稿者 天津飯
ID情報 : SthNe1USHo6aOJQJDS5Ij/
参照先
すみません初歩的な質問で申し訳ないのですが
アップロードされているzipファイルが壊れていて解凍できないというエラーが起こるのですが
何かソフトが必要なのでしょうか?
LhaplusとWinRARで試したのですが数日前のファイルからうまく行かず困っております
記事編集 編集
Re: SpoilerALの修正パッチ (No.458)
投稿日 : 2018/02/27(Tue) 23:16
投稿者 七星◆MH.ms4.V3i2
ID情報 : CGWksTG6Gv3mdJr1Kai4H/
参照先 https://github.com/sceawung/source/releases
>>457 天津飯さん
rarかつLhaplusならともかくWinRARさえ解凍できないzipは
ダウンロード失敗によるファイル破損ではないかと思います
私的なバックアップですが参照先のファイルは如何でしょう
※最新のスレッド添付とは最大で1時間の遅れが有ります
添付ファイル自体がおかしい(unzipできない)場合はこちらも滞る仕様です

No.456で管理人さんが仰る様にノーリファラでないかも確認してみてください
キャッシュあるいはCloudflareの経路に因り破損している可能性も微粒子レベルで…?
記事編集 編集
Re: SpoilerALの修正パッチ (No.459)
投稿日 : 2018/02/27(Tue) 23:34
投稿者 天津飯
ID情報 : SthNe1USHo6aOJQJDS5Ij/
参照先
>>458
七星さん
ご確認ありがとうございます
参照先のファイルはLhaplusにて解凍可能で中身も問題なく参照できました
根本原因に関してはもうすこし調べてみます
記事編集 編集
Re: SpoilerALの修正パッチ (No.460)
投稿日 : 2018/02/28(Wed) 06:40
投稿者 RICK@管理人◆PIflJPH.oeY
ID情報 : Jz8wciKT7KhQI50vZRfVv.
参照先
自分も一時期ダウンロードに失敗する事がありましたが、
ブラウザキャッシュ等を完全に削除したら問題が解決されました。

ちなみに、mixhostに移転してからはCloudflareは使用していません。
記事編集 編集
Re: SpoilerALの修正パッチ (No.461)
投稿日 : 2018/02/28(Wed) 12:57
投稿者 七星◆MH.ms4.V3i2
ID情報 : CGWksTG6Gv3mdJr1Kai4H/
参照先
そういえばレスポンスヘッダが見慣れぬ物に変わっていましたっけ
他にCDNを介していないなら主にクライアント側の問題でしょうか

ブラウザを変えて試してみて、ブラウザ特有ならやはりキャッシュクリアなり…
mixhostはQUIC対応してる様なので、もしChromeをお使いなら「chrome://flags」にて
#enable-quic」を検索して「Experimental QUIC protocol」を「Disabled」にしますとか

(仮にこれが原因ならブラウズ時点でエラーを吐きそう…関係なければDefaultに戻して下さい
記事編集 編集
Re: SpoilerALの修正パッチ (No.462)
投稿日 : 2018/03/04(Sun) 14:43
投稿者 団子
ID情報 : JA2cTI.mx93vzBlyWQmJj1
参照先
宝箱ドロップ率100%固定お願いしますm(_ _)m
---
箱確実化は累計失敗ボーナスで実現しているんですね
ありがとうございます助かりました
記事編集 編集
Re: SpoilerALの修正パッチ (No.463)
投稿日 : 2018/03/07(Wed) 02:47
投稿者 dipper◆LEFxdWWYR3c
ID情報 : EiVYqQTJYhioyaH.okbci.
参照先
>> 変態紳士さん

どうも、お久しぶりです。未だに修正パッチの更新ありがとうございます。
早速なのですがバグらしきものを発見したので報告させて頂きたいと思います。

「d_toggle」なのですがアドレス指定が同じ場合、同アドレスの最下層のリストしか機能しないようです。
確認用SSGも添付させて頂きます。

お手隙の時で構いませんのでご確認お願い致します。


内容を取り下げさせて頂きます。お騒がせしました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.464)
投稿日 : 2018/03/07(Wed) 04:27
投稿者 七星◆MH.ms4.V3i2
ID情報 : YfqcAN4vkF098qIkTTgvA/
参照先
>>463 dipperさん
横からで失礼しますが、その挙動はビットリスト同様に元々の実装仕様です
ダブルトグル及びビットリスト項目はチェックした行だけを書き込むのではなく
チェック状態の変更をトリガーにして全行のチェック状態を適用しています
そのためアドレスが重なっている要素があると、後続の値で上書きされます

もっとも例である処理リスト.LSTには重複アドレスが記述されているので
失念していた可能性もありますが…処理関数はUIからの受け取りも書き込みも全行を対象とします
void TMainForm::MultiListUpdate(void)ではなくvoid __fastcall TMainForm::MultiLBoxClick(TObject*)から実行したり
unsigned long TSSDoubleToggle::Write(TSSGCtrl&, TSSArg*)自体も部分処理ができる様にしなければ修正は難しそうです
記事編集 編集
Re: SpoilerALの修正パッチ (No.465)
投稿日 : 2018/03/07(Wed) 04:51
投稿者 dipper◆LEFxdWWYR3c
ID情報 : EiVYqQTJYhioyaH.okbci.
参照先
>>464 七星さん

そう言えば以前、ここのスレで同じことを自分で報告していました…
その時に「仕様」と変態紳士さんに言われていました…

すっかり忘れていました…>>463は取り下げさせて頂きます。お騒がせしました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.466)
投稿日 : 2018/03/08(Thu) 20:06
投稿者 466
ID情報 : 3RgGJ7vJFMlgyDC2Zn1SS0
参照先
PCを変えたので新しく入れ直したのですが
修正パッチをコピーしたところ起動することができませんでした
SpoilerALもパッチもついさきほどDLしたばかりなのでなにが問題なのかわかりません
記事編集 編集
Re: SpoilerALの修正パッチ (No.467)
投稿日 : 2018/04/07(Sat) 01:53
投稿者 ああああ
ID情報 : BISwejLsoNaFzwZtzYfBr1
参照先
自分も>>466のようになってしまいました。
最新版も入れてみましたが駄目でした。

あと、「trojan.fakeav」というトロイの木馬らしきウィルスを検出したので報告しておきます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.468)
投稿日 : 2018/04/08(Sun) 06:49
投稿者 nr
ID情報 : ZCO6ZKTqxFLbdWlt1bGRH/
参照先
修正パッチがダウンロードできないのでもう一度上げなおして貰えませんか?
記事編集 編集
Re: SpoilerALの修正パッチ (No.469)
投稿日 : 2018/04/08(Sun) 09:10
投稿者 ああああ
ID情報 : BISwejLsoNaFzwZtzYfBr1
参照先 http://necocan-index.rick-addison.com/bbs/patio.cgi?read=29amp;ukey=1
>>467について補足
検出したセキュリティソフトはnortonです。
記事編集 編集
Re: SpoilerALの修正パッチ (No.470)
投稿日 : 2018/04/09(Mon) 09:24
投稿者 74
ID情報 : .Bk1Iq5jtA4DrcuZ/0STk/
参照先
ウィルスバスターでもひっかかる
記事編集 編集
Re: SpoilerALの修正パッチ (No.471)
投稿日 : 2018/04/09(Mon) 16:25
投稿者 ああああ
ID情報 : BISwejLsoNaFzwZtzYfBr1
参照先
>>470
ウィルスバスターですか。
検出された後の修正パッチを入れてもspoilerALって動きますか?
こちらは動かなかったので・・・
記事編集 編集
Re: SpoilerALの修正パッチ (No.472)
投稿日 : 2018/04/09(Mon) 21:44
投稿者 74
ID情報 : .Bk1Iq5jtA4DrcuZ/0STk/
参照先
動くけど余りお勧めせんな
記事編集 編集
Re: SpoilerALの修正パッチ (No.473)
投稿日 : 2018/04/09(Mon) 22:20
投稿者 ああああ
ID情報 : BISwejLsoNaFzwZtzYfBr1
参照先
動きましたか・・・
ありがとうございます。
記事編集 編集
Re: SpoilerALの修正パッチ (No.474)
投稿日 : 2018/04/09(Mon) 22:36
投稿者 横から
ID情報 : Qc6xppEQAilSoSm.yyJ3W.
参照先
報告されるなら、検出されたファイルが具体的にどれなのかハッキリ書くべきだと思いますが。
検出されたのは下記のパスのファイル「example.dll」ではないですか?
source\plugin-example\Plugin\example.dll"
こちらではAviraでスキャンすると上記ファイルが検出されましたが、
パッチ「winmm.dll」を含め、他のファイルは何も検知されませんでした。

これは普通にSSGを使うだけなら不要なファイルなので、
パッチ「winmm.dll」を使うだけなら問題ないと思いますが。

インストールしてなくても利用可能な無料オンラインスキャンのサービス提供してるメーカーは多いので、
心配であれば、自分のPCに入れてるセキュリティソフトだけでなく、色々試してみては。

問題ないファイルを誤検出するのはよくある話ですし(というか、誤検出は普通にPC使ってても悩みの種ですね)
その結果がどうであれ、パッチを使用するかどうかは自己責任を大前提に、
各利用者が自分で判断すべきものですね。
どのセキュリティソフトでも検知されないから絶対に安全、とも断定はできませんし。
正規に購入した著名な商業メーカーのゲーム等でも、インストールしたファイルがウィルス検知されることも珍しくないですから、
その辺は気にしたらキリが無いという気もします。

パッチのreadmeに、
  サポートはありません。
  問題が起きても全ては自己責任でお願いします。
と書かれています。無料で提供されているフリーのソフトやツール類では常識的なことですね。
記事編集 編集
Re: SpoilerALの修正パッチ (No.475)
投稿日 : 2018/04/10(Tue) 01:07
投稿者 変態紳士◆G9/eqTtPaq.
ID情報 : t20X67ahv9CbuIpExGI9n1
参照先
>>466-474 の方々

他のスレッドに比例してアクセス数が増加しておりました。
それに伴い混乱を防ぐためコメントを控えていました。(はぐれメタルのようなものです)

さて、ウイルス検出の件ですが、誤検出を疑っていますし対策もありません。

以前にも誤検出が発生した事があり、セキュリティーソフトウェアに誤検出させないプログラムに悩まされました。
今回は疑われやすいコードに心当たりがありませんので、対策しようにも方法が無く出来ません。

>パッチ「winmm.dll」を使うだけなら問題ないと思いますが。
その通りですね。
セキュリティーソフトウェアの検出はファイル単位です。

当初より問題の有無を判断する材料としてソースコードを添付しております。
各々の環境で開発ソフトウェアを導入すれば「winmm.dll」を生成可能になるので、
悪意のあるソースコードでなければウイルスのように振舞う事はありません。
ただし、セキュリティーソフトウェアの誤検出によって誤動作や実行防止される可能性は残ります。

セキュリティーソフトウェアの誤検出も自己責任だと思っています。
(セキュリティーソフトウェアの数も多すぎますし)
慎重な対応方法としてはセキュリティーソフトウェアの会社への報告だと思います。
またセキュリティーソフトウェアの更新などで誤検出対応が絶望的な場合は、検出から除外するのも一つの方法です。
記事編集 編集
Re: SpoilerALの修正パッチ (No.476)
投稿日 : 2018/04/10(Tue) 17:26
投稿者
ID情報 : 1TY5Zuu06Z/acbIsFkEee1
参照先
私のPCでも4月8日よりウイルスバスタークラウドでパッチのwinmm.dllがtroy検知されて削除されてしまいます7日までは削除されなかったので誤検出かもしれませんが使えなくなりとても困っています。
記事編集 編集
Re: SpoilerALの修正パッチ (No.477)
投稿日 : 2018/04/10(Tue) 17:56
投稿者 NEExploiT◆Li46agv7Gxg
ID情報 : AZ/QhEA3/MLwmZY5YWhYm/
参照先
フックってだけでもヒューリスティックで検出されることあるし
SpoilerALフォルダを除外指定しといた方が無難
記事編集 編集
Re: SpoilerALの修正パッチ (No.478)
投稿日 : 2018/04/12(Thu) 09:57
投稿者 MK
ID情報 : ffx5K8LMpGBgNWActwgfn1
参照先
SpoilerAL 6.1 修正パッチがDLできません。
再UPしていただけないでしょうか。
記事編集 編集
Re: SpoilerALの修正パッチ (No.479)
投稿日 : 2018/04/12(Thu) 11:00
投稿者 MK
ID情報 : ffx5K8LMpGBgNWActwgfn1
参照先
ありがとうございました。
DLできるようになりました。
記事編集 編集
Re: SpoilerALの修正パッチ (No.480)
投稿日 : 2018/04/24(Tue) 06:39
投稿者 んあら
ID情報 : HvjrQi0H0v5Cw1fuReyov1
参照先
最新修正パッチ(2018.04.23)のSpoilerALを使っているのですが、
再起動した際に「パネルに画像を使う」のチェックが外れてしまっています。
何か対処方法はありますでしょうか?
記事編集 編集
件名 スレッドをトップへソート
名前
メールアドレス
URL
ファイル添付


暗証キー
画像認証 (右画像の数字を入力) 投稿キー
コメント

- WEB PATIO -