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
然后在减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