日常の戯言とかなんとか

スポンサーサイト

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

Alive偽装その2

その1では、最も基本的な0~127の範囲でAliveを書き換える方法について解説しました。
ここでは、それ以外の範囲の書き換えについて解説していきます。

なお、この記事では一部の数値を16進数で扱います。記事中の16進数で表記されている数値は頭に「0x」と付けてあります。16進数ってなんぞやって人はこのへんあたりを参照したらいいんじゃないかね。

Aliveやgametime、damageなどのMUGENの内部で扱われている整数はすべて4バイトの整数で格納されています。(-2147483648~2147483647、0x00000000~0xFFFFFFFFの範囲です)
超即死の記事でステコン数553~556の位置にAliveの数値が格納されていると言いましたが、これをより細かくみると、553個目にはAliveの1バイト目、554個目には2バイト目、555個目には3バイト目、556個目には4バイト目の数値が格納されています。
無題

その1では553個目のステコンのみにpersistent=128を付けましたが、554個目にのみ付けた場合はどうなるでしょうか。553個目に
ignorehitpauseを付けた場合、32512になったかと思います。まず、1バイト目は1なのでステコンが実行されて0に、その次に2バイト目は0なのでpersistentの効果で127になります。32512=256×127なので、ちゃんと書き換わっています。その後も読み込むごとに256ずつAliveが減っているのがわかります。

では、1~4バイト目をまとめて書き換えて、例えばAliveを2137401907(0x7F662A33)にしてみます。
最も簡単な方法は、超即死を読み込んでAliveを0にしてからpersistent=52,43,103,128と指定しているステートを1回読み込むことです。
記述例は以下のようになります。
[statedef 10000,超即死ステート]
~中略~
[state 553]
type = null
trigger1 = 1
ignorehitpause = 1
[state 554]
type = null
trigger1 = 1
ignorehitpause = 1
[state 555]
type = null
trigger1 = 1
ignorehitpause = 1
[state 556]
type = null
trigger1 = 1
ignorehitpause = 1
[state 557]
type = changestate
trigger1 = Alive
value = stateno
ignorehitpause = 1
persistent = 256
[state 557]
type = changestate
trigger1 = 1
value = 10001
ignorehitpause = 1
persistent = 256

[statedef 10001,Alive偽装ステート]
~中略~
[state 553]
type = null
trigger1 = 1
ignorehitpause = 1
persistent = 52
[state 554]
type = null
trigger1 = 1
ignorehitpause = 1
persistent = 43
[state 555]
type = null
trigger1 = 1
ignorehitpause = 1
persistent = 103
[state 556]
type = null
trigger1 = 1
ignorehitpause = 1
persistent = 128
[state 557]
type = changestate
trigger1 = 1
value = 10001
ignorehitpause = 1
persistent = 256

最後に、Aliveを負の数にする場合が残っていますが、この記事も長くなってきたのでまた次の記事で解説します



スポンサーサイト
2012-12-16 : MUGEN解説 : コメント : 0 : トラックバック : 0
Pagetop
コメントの投稿
非公開コメント

Pagetop
« next  ホーム  prev »

プロフィール

@ひたち

Author:@ひたち
「@」を忘れるべからず
読みは普通に「ひたち」でいいんじゃないの

検索フォーム

アクセスカウンター

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