2017年01月27日

前記事の続き(bindtotargetなど)

前記事で「結論から言うとできない」って言ったやつの解説
bindtorootとbindtoparentはステコン実行時に[Pアド+0x3434]とかに参照先アドレスを代入してるのだけれども、実際にpos等に数値代入するのはF処理終了時(もしかしたらキャラ処理終了時かも?、未検証)
だからキャラ処理でそこの数値を書き換えてやれば終了時に数値取得ができる

一方、target関連はというと

1.bindtotargetについて
これはステコン実行時にアドレスを保存せず、しかもF終了時ではなく即時に位置が変わっているみたい
よって、参照先を変えたいならtarget参照先弄りで変える必要がある

target参照先弄りは、%n等を用いて複数回アドレス取得する必要があるのでそれを行うくらいならpowerと残像使ってサクッと参照した方が楽(というかオバステじゃそもそも無理)


2.targetbindについて
こっちは即時にタゲ先の座標が移動するわけではなく、F終了時に座標移動
でも残念ながら参照や代入は独自にアドレス保存してやるわけではなく、target管理先のアドレスや自己アドレスをそのまま用いてる
(ちなみにpos=x,yと書くところの数値は
[[Pアド+0x220]+0x14]+Cとか+10にあったりする)
そのため、こちらも代入先を変えたければtarget参照先弄りを使う必要がある


以上より、bindtotargetとtargetbindを用いて簡単に参照や代入をするのは難しいと判断した

まあ狭い範囲の参照ならアドレス取得してpowerで見ればいいし、広範囲参照ならparentなり使えば良い
bindtorootのやつで便利になるのはコード使わないで基準アドレス取得するオバステ親捏造かな
書き換えるのに若干不安があるparent参照先弄りよりも書き換えても安全なbindtoだと取得が1F遅れるとしても採用する価値はあると思う

posted by メロンピエロ at 01:09| Comment(1) | MUGEN | このブログの読者になる | 更新情報をチェックする

2017年01月26日

新MUGENでのコード実行とか

DTC経由でスタックオーバーフロー使って任意箇所のコードを実行できないもんかと試してみた
winの方だとDTC用に使えるスタックは1024までなのに加えて、その直後にリターンアドレスがあるから弄りやすかった

新でもできねーかなと思ったら
・まず確保領域が4095
・それを超えたら強制的に4095番目にヌル文字代入
・リターンアドレスはなさげ(未確定

だったので無理そうでした

結局、今まで通りの既存コード利用でやるしかないんかね...

残像のアドレス保存は場所は違えどwinと同様にやってそうな感じはしたのでオバステで弄ればなんとかなるかな

あとbindtorootのやつもコードみて軽く調べたんだけども、新だと処理変わっててこれも無理
そのままだったら楽しかったのにな

そういえば、winmugenで「bindtoroot/parentで値取得出来るならbindtotargetとtargetbindはどうなん?」って思ったからちょいと調べた
結果から言うとできないんだけど、詳しくは別の記事で書きますわー
posted by メロンピエロ at 01:39| Comment(0) | MUGEN | このブログの読者になる | 更新情報をチェックする

2017年01月25日

残像でコード部分代入

アニメナンバーを取得するのに使ってみた
感想としては、
・一つ毎にDTCでコードを代入する必要が無いのは楽
・でも代入する時にいくつか注意する箇所があって少しめんどい

って感じですかね
総合的な記述量はグッと減るのでほかの記述でも採用してみる価値はあるかも
実際のコードの方は初めて組んでみましたが意外と簡単なものだった
簡単に自己アドレス取得するコードも作れたのでうれしい

ちなみにアニメ取得はelemが0の所謂ジャンクアニメも回避出来るようにしたので割と満足できる結果に

これをうまく使えば新MUGENでのコード実行も夢ではないかもねー
posted by メロンピエロ at 22:22| Comment(0) | MUGEN | このブログの読者になる | 更新情報をチェックする