[ Mugen ] - persistent刷值原理在 Mugen 1.0下和win下的区别

如标题,这让我惊呆了。即使Mugen 1.0上相同写法,刷值算法上竟然存在了差异。


很多使用 type = null进行persistent 刷值的作者经常会用到 如下写法。

; Alive
[state 553]
type=null
trigger1=1
[state 554]
type=null
trigger1=1
persistent = 128            ; 这里统一写 128,通过下面循环次数控制,来进行刷值
ignorehitpause=1
[state 555]
type=null
trigger1=1
[state 556]
type=null
trigger1=1


[state ]         ; 判断用Flag
type=Varset
trigger1=var(44) > 256-6   ; 循环次数控制  这里代码将循环251次
Sysvar(1) = 8            
ignorehitpause=1

[state ]
type=selfstate
trigger1=sysvar(1) = 8   
value= 0               ; 转走
ignorehitpause=1


[state ]
type=selfstate
trigger1= sysvar(1) !=8
value=stateno          ; 循环刷值
ignorehitpause=1

---------------------------

以上写法经常应用在 亲变更,亲捏造里。


在WinMugen的情况下,效果是这样的:

以上写法中,循环次数为 251,256 - 251 = 5。 所以最后在

[state 554]
type=null
trigger1=1
persistent = 128            ; 这里统一写 128,通过下面循环次数控制,来进行刷值
ignorehitpause=1

 这个位置 会 在原来值的基础上 加上 5

比如,原来554该处有值为 4,那么刷值结束后,该处的值为 4 + 5 = 9 。

------------------

而在Mugen 1.0中 该写法并不能达到该效果

同样的写法下,Mugen1.0的效果则是将该处的值 直接刷成  (256 - 251 + 1 =) 6

注意,是直接刷成 6。 也就是说,该位置上原来的值就直接没了,变成6了。


这样通过刷值 就无法对一个位置进行加减,而是只能直接赋值。

这也是为什么,Mugen 1.0 日本没人做亲捏造的原因,因为普通亲捏造,必须用到上述写法,使得parent的位置进行偏移。在获取不了parent地址的情况下,必须在亲上进行加减运算。如果能使用%n,那还好办。但是恰恰不能使用%n了,那就无法亲捏造了。


本体亲捏造我还没研究,不知道能否可以实现。但是我进行Mugen 1.0 本体亲捏造实验的时候,一直报错,所以研究目前还没什么突破。


那亲变更呢?

会受到影响,主要是写法上不同,会导致是否受到影响。

很多亲变更的写法是刷parent_ID的时候,

值会刷 原parent的ID(影ID:即曾经的亲ID)和敌helper_ID(当前的亲ID)之间的差

即 亲ID - 影ID =  ID之差

在WinMugen中,只要用上述写法,只需要刷 ID之差,使得 影ID + ID之差 。就能得到 现在的 亲ID了。

这样写的目的是减少刷值次数。

但是,这样的写法恰恰 在 Mugen 1.0中是不行的。这样写会将该处的值 直接刷成 ID之差

原来的 影ID 直接就没了。


所以,只要改变一下写法,那么亲变更就应该可以进行。那就是直接刷成 亲ID ,不用去考虑什么影ID,直接先将影ID刷成0,然后再刷成亲ID就行了。(我没有实践过,只是我的理论猜想,希望有人实践一下。)



如果,如果说可以知道怎样刷值使得 可以在刷值位置能进行 加减运算,那么上面什么问题都能解决。

-------------------------


题外话, parent,parent_ID等位置,都变了,Alive也不再是 553 - 556了。所以很多东西肯定失效了。

超即死不失效是因为,我之前有讲过:因为Mugen 1.0下,Alive的位置是557 - 560,而WinMugen内很多超即死的写法里,553后面一长串的位置都用了ignorehitpause = 1,也就是默认进行了刷值。所以移植到Mugen 1.0后,甚至是1.1b后,都不会受到影响。


然后我说一下吧,Mugen 1.0内 :

---------------------

-3155  :  人物数据指针の重定向点


-2715  :  life

-2711  :  lifemax


-7         :  stateno

-3         :  prevstateno

1~512 : persistent

557~560 : Alive


1025 :  var(0) ~ var(59)

1265  :   fvar(0) ~ fvar(39)

1425  :   sysvar(0) ~ sysvar(4)

1445  :   sysfvar(0) ~ sysfvar(4)



2085 : parent_ID

2089  :   parent

2093  :   root

 ------------------

改天有空,弄个完整版的内存表出来。


上面parent 已经是 2089了,不再是 6693了。相差很大。

var(0)等变量的位置变化也很大。

人物数据指针重定向点,不再是 -3067(winmugen)了,而是 -3155


顺便提一下,Mugen 1.1b上的位置和 Mugen 1.0 又不完全一样。尤其是 parent的位置。


--------------------


Date : 2017.07.08

Author : yui




 
评论
 
回到顶部