制作日記

こういうの作った方が、逃げにくいじゃない

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

playerEnableのダイアログ

特に目新しい事実はなかった
案外判定するタイミングが多いなってぐらい

とりあえず、確認出来た判定タイミングは以下の通り
プレイヤー本体読み込み時
読み込んだプレイヤー本体削除時(Shift+F4での再読み込み時など)
プレイヤー本体消去時
プレイヤー本体復帰時
ヘルパー召喚時
ヘルパー消去時
ラウンド終了時

で、判定内容

0044088B |> 8B0A /MOV ECX,DWORD PTR DS:[EDX] <<<<< EDXはプレイヤーアドレスのリストの先頭アドレス
先頭は1Pではなくて、1Pの4byte手前で、多分未使用の常に0
やってることは、アドレスEDXが指してる値、つまりプレイヤーアドレスを取得
0044088D |. 85C9 |TEST ECX,ECX <<<<< 取得したプレイヤーアドレスが0か否か
0044088F |. 74 0B |JE SHORT winmugen.0044089C <<<<< 0なら0044089Cにジャンプ
00440891 |. 8BA9 58010000 |MOV EBP,DWORD PTR DS:[ECX+158] <<<<< プレイヤーアドレス+0x158の値、いわゆる存在フラグをEBPに代入
00440897 |. 85ED |TEST EBP,EBP <<<<< 存在フラグが0か否か
00440899 |. 74 01 |JE SHORT winmugen.0044089C <<<<< 0なら044089Cにジャンプ
0044089B |. 47 |INC EDI <<<<< EDIを1増やす、初期値は0
0044089C |> 83C2 04 |ADD EDX,4 <<<<< EDXに4足す、つまり次のプレイヤーアドレスを指す
0044089F |. 4E |DEC ESI <<<<< ESIを1減らす、初期値はヘルパーmax+プレイヤー本体の最大数(4)+先頭の空き領域(1)
ヘルパーmaxが56なら61
004408A0 |.^75 E9 \JNZ SHORT winmugen.0044088B <<<<< 1減らしたESIが0でないなら、0044088Bに戻ってループ
つまり、このループで存在しているプレイヤーの数を調べている
004408A2 |. 5D POP EBP
004408A3 |> 8B88 4CB60000 MOV ECX,DWORD PTR DS:[EAX+B64C] <<<<< [EAX+B64C]の値は、別に記録しておいた存在してるプレイヤーの数
004408A9 |. 3BF9 CMP EDI,ECX <<<<< それを調査結果と比較
004408AB |. 74 1F JE SHORT winmugen.004408CC <<<<< 同じなら問題ないので、004408CCへジャンプしてエラー処理を飛ばす
異なっていたら、どっかで問題が起こってるので直下のエラー処理を実行
004408AD |. 51 PUSH ECX <<<<< 以降、playerenableset云々のダイアログを出す処理
004408AE |. 57 PUSH EDI
004408AF |. 05 34C50000 ADD EAX,0C534
004408B4 |. 68 089F4A00 PUSH winmugen.004A9F08 ; ASCII "PlayerEnableSet: count does not match enabled %i != %i"
004408B9 |. 50 PUSH EAX
004408BA |. E8 98190500 CALL winmugen.00492257

この処理が終わった後に、[EAX+B64C]の値が更新される
それから、もう一回同じようなチェックが行われている
そこでミスったら"PlayerEnableSet end:~"のダイアログが出る
こっちはそうそう出ないと思うけどね

ちなみに、[EAX+B64C]はプレイヤーアドレスのリストのちょっと手前

これ以外でplayerenablesetのダイアログが出そうなタイミングは
この処理の少し手前で[EAX+B640]の値が負数だった場合ぐらい
[EAX+B640]の値はヘルパーmax+プレイヤー本体の最大数(4)
ヘルパーmaxが56なら60

playerenableset使ってるのはここけだし、
上述の2か所以外でここに行く処理もない

コメントの投稿

非公開コメント

プロフィール

Author:drab
霊夢改変キャラ
「12 3 ! {V} [_]」
公開中
L霊夢でもl_reimuでも好きなように読んでください

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。