アドレスを見た有効ステートかどうかの判断

MUGEN制作
08 /25 2017
方法としては2種類あります

潜らせるステート吟味の目的でそのステートにlifesetやhitbyがあるかどうかだけ知りたいなら
[[[[[P+0xbe8]]+0x14]+(n*0xa4)]+0x18]を使うといいんじゃないですかね
(nは0から始まる)

0=有効かどうか
4=何番目のステコンか
8=ステコン種別
12=-1が代入されてる
以下繰り返し

内訳はこんな感じ、ステートリストと似た感じになってます

ステコン種別の番号内訳は
varset=0x04
varadd=0x05
lifeset=0x0a
lifeadd=0x0b
hitby=0x1e
nothitby=0x1e(hitbyと同じ)
changeanim=0x20
hitdef=0x25
reversaldef=0x26
hitfalldamage=0x66
hitoverride=0x78
pause=0xd4
superpause=0xd6
helper=0x12c
parentvarset=0x130
parentvaradd=0x131

有効ステートになりうるものはこんな感じですかね

んでもう一つの方法ってのが
[[[[[P+0xbe8]]+0x14]+(n*0xa4)]+0x14]にあるステコン詳細をみる方法で小蓮はこっちを積んでます
0=トリガー先頭ad
4=有効フラグ?(1以外は確認できなかった)
8=persistent
12=ignore
16=ステコン種別
20=恐らく空き?
24=valueが定数じゃなかった時(lifeなどのリダイレクトを使う場合やrandomなど)何かのアドレスが書かれる
28=valueが定数じゃなかった時何かのアドレスが書かれる
32=value(hitoverrideの場合slot,varrangeの場合はfirst)
省略
96=パラメーター先頭アドレス(多分この36~92で賄いきれないとき用、hitdefやhelperなどパラメが多い奴が使ってた)
100=トリガー先頭ad
以下繰り返し

内訳はこんな感じ、ステコン種別はn*0x64+0x10をみていく感じです
こっちのメリットはvalueも一緒に見れるので潜らせる必要がなくなる点にあります
言ってしまえば"探査過程で絶対に落ちることのない探査"ですね
当然精度面では潜らせるタイプに劣るんですがこの唯一無二のメリットが強すぎる
精度も取りすぎてしまう方面での悪さなので実際に使ってみてそこまで気にならない感じでした

長くなったのでまとめると
何のステコンがあるのかだけ知りたい
[[[[[P+0xbe8]]+0x14]+(n*0xa4)]+0x18]
ステコンの中身まで知りたい
[[[[[P+0xbe8]]+0x14]+(n*0xa4)]+0x14]
どちらを選ぶかはお好みで

スポンサーサイト

コード実行

MUGEN制作
07 /27 2017
コード実行が重い ←まちがい

1024文字埋める処理が重い ←せいかい



折り畳みは検証



続きを読む

近況報告

MUGEN制作
07 /12 2017
そろそろ広告が出てくる時期なので

syao1
syao2
syao3
いい感じのSSが取れなかった


1月初めからちまちま新キャラ作ってます
うまく進めば8月中には公開できそうな(フラグ)

残像パワー参照

MUGEN制作
01 /11 2017
下の記事で使ってるやつ
知ったのは昨日なんですけど結構前からアドレス取得はこの方法が主流らしいですね
わざわざコードを組まなくてもP1orP2アドレスと先頭アドレスさえわかってしまえばどんなに深いアドレスでも簡単にとれるみたいです

高速探査組む前に知りたかった

邪眼キラー

MUGEN制作
01 /11 2017
1.投げ主体コードを取得します(先頭アドレス+0xbe8(=+3048))
2.1で取得した値に書いてある値を取得します
(投げ主体コードが0b90000だったら0b90000に書いてある値を取得)
3.2で取得した値+0x18(=+24)に書いてある値を取得します
3で取得した値が邪眼アドレスです

ちなみにafterimageとpower参照使えばコード組めなくても何とかなる
先頭アドレス取得と参照先ずらしをした後に
[State 残像参照1桁目]
type=displaytoclipboard
trigger1=1||var(0):=const(data.guard.sparkno);自身の先頭アドレス
trigger1=var(0)>99999
trigger1=1||var(1):=parent,var(0+(teamside=2))+340
text="%.*d%n%d"
params=(var(1)&255),0,var(0)+5012
ignorehitpause=1
[State 2桁目]
type=displaytoclipboard
trigger1=var(0)>99999
trigger1=var(1)!=[0,255]
text="%.*d%n%d"
params=(var(1)&65280)/256,0,var(0)+5013
ignorehitpause=1
[State 3桁目]
type=displaytoclipboard
trigger1=var(0)>99999
trigger1=var(1)!=[0,65535]
text="%.*d%n%d"
params=(var(1)&16711680)/65536,0,var(0)+5014
ignorehitpause=1
[State 4桁目]
type=displaytoclipboard
trigger1=var(0)>99999
trigger1=var(1)!=[0,16777215]
text="%.*d%n%d"
params=(var(1)<0)*128+(var(1)&2130706432)/16777216,0,var(0)+5015
ignorehitpause=1
[State 主体コードに合わせる]
type=afterimagetime
trigger1=1
time=var(0)+3048
ignorehitpause=1
[State 主体コードを元に邪眼中継に合わせる]
type=afterimagetime
trigger1=1
time=power
ignorehitpause=1
[State 邪眼中継を元に邪眼アドレスに合わせる]
type=afterimagetime
trigger1=1
time=power+24
ignorehitpause=1
[State 邪眼アドレスをconst(movement.airjump.num)に保存1桁目]
type=displaytoclipboard
trigger1=1
text="%.*d%n%d"
params=(power&255),0,var(0)+272
ignorehitpause=1
[State 2桁目]
type=displaytoclipboard
trigger1=1
text="%.*d%n%d"
params=(power&65280)/256,0,var(0)+273
ignorehitpause=1
[State 3桁目]
type=displaytoclipboard
trigger1=1
text="%.*d%n%d"
params=(power&16711680)/65536,0,var(0)+274
ignorehitpause=1
[State 4桁目]
type=displaytoclipboard
trigger1=1
text="%.*d%n%d"
params=(power<0)*128+(power&2130706432)/16777216,0,var(0)+275
ignorehitpause=1
[State リセット]
type=afterimagetime
trigger1=1
time=parent,var(0+(teamside=2))+376
ignorehitpause=1
[State リセット]
type=displaytoclipBoard
trigger1=1
text="%n"
params=var(0)+5012
ignorehitpause=1
これでconst(movement.airjump.num)に邪眼コードが入ります

邪眼アドレス
デバッグの左側がコードで取得した邪眼アドレス、右がconst(movement.airjump.num)
ちゃんと取れてますね

const(data.guard.sparkno)は自分の先頭アドレスに置き換えてね
後ライフ表示が巻き込まれるから気になる人は修復すればいいと思うよ

JQKJ

リンクフリーです

Http:が禁止ワードですがスパム対策です