伪决死简单分析
东方永夜抄吧
全部回复
仅看楼主
level 11
游戏里中弹后,一般情况下会先将一个标志(byte:17d5efc,代码44cc2d)设为1,该标志非0说明处于决死状态。
然后在减BOMB前检查这个标志(代码:44c9f2),
如果该值非0,且BOMB数 >= 2,就减2个B(代码:44ca7e),
否则减1个B(代码:44caaa)。
然后将这个标志再改回0,
接着应该还会做一些其他BOMB相关的处理,让之后的几帧按照自机处于BOMB状态时的逻辑来处理。
然后之后的每一帧的逻辑处理中,代码 44d31a 都会写个 0 到该标志里。(大概是为了确保非决死状态时该标志肯定为0,所以通过改内存仅仅把这个标志改了是没用的[滑稽]
但是若中弹的那一帧就按了X(伪决死),不知为何将标志设为1的代码 44cc2d 貌似并没有被执行。
于是标志仍然为0,之后的一切就当非决死处理了。
把游戏的中弹逻辑处理流程整理一下可能是这样:
中弹了?
...是,判断当前帧的按键状态中是否有Bomb键(X)
......是,判断决死标志是否 不等于 0 并且 Bomb数 >= 2
.........是,减2个B
......否则
.........(是0),减1个B
......决死标志设为 0
......放Bomb相关的其他处理...
...否则(没有按Bomb键)
......决死标志设为 1
......决死状态时的其他处理...
如果2un在中弹处理代码后面立刻加个把决死标志设为1的代码的话,那么估计伪决死就不存在了。
至于是忘了加这个代码了,还是故意不加,还是根本没发现,只有2un知道。
所以我不敢说这是个BUG还是啥。
差不多就是这样吧。
@雨天放晴1
2015年02月03日 03点02分 1
level 11
看到雨天娘的某句话,突然觉得伪决死是 2un 故意放进去的,但是 2un 没有想到:
2un:“我就放个1/60秒才能按出来的彩蛋看有谁能发现?”
雨天娘:“看我连着三四次按出来 (ΦωΦ)”
2un: (゚д゚) 松那把卡纳!
[滑稽][滑稽]
2015年02月03日 04点02分 3
上次那个1f贴我找tas那边的单帧研究,他们也说是1f,于是我丢了份rep:帮我瞅瞅…我觉得没这么短吧,看我1 2 4个bomb。 回复:槽,还真都是第一帧按的
2015年02月03日 05点02分
我:[金馆长stress]
2015年02月03日 05点02分
level 11
规划决死时放了个伪决死不就蠢了
2015年02月03日 10点02分 4
我似乎干过[喷]
2015年02月03日 14点02分
1