好吧,事实证明“游泳状态顶砖”出现的问题其实跟$0704没有直接关系……
经过分析,其实就是“顶砖”这个程序本身的原因,程序入口在$BCED,前面有2个字节的数据:04 12,分别对应大个子和小个子顶砖时对人物纵坐标的增加量。
12这个数据已经证明了没啥问题,关键在于04,这个数值实际上有点大了。一个显然的事实是,Mario在顶砖时,头顶是会进入到砖块当中一点的但是也只是“一点”啊,又不是把砖块顶穿了,按大格计算坐标的话Mario的头顶应该是跟砖块的坐标一致的,换句话说根本不需要增加这个修正量;实际上,就算开了游泳状态,大个子顶砖时的纵坐标只要再往上一个像素,被顶起的砖也不会发生向下偏移的现象,没错,就差了这么一个像素至于为什么游泳状态比正常状态顶到砖时的坐标偏低,估计是速度的原因,跳跃的上升速度快,游泳上升速度慢,因此游泳顶砖无法达到足够大的深度。
所以你懂的,把$BCEB的这个04改小一点就可以了,干脆改成0呗,测试下来,完美~(其实同理12也可以改小一点的,不过没问题就不改了)
不过,既然这个数可以改成0,那是不是意味着这段程序可以优化一下了?不过好像节省不了几个字节……
经过分析,其实就是“顶砖”这个程序本身的原因,程序入口在$BCED,前面有2个字节的数据:04 12,分别对应大个子和小个子顶砖时对人物纵坐标的增加量。
12这个数据已经证明了没啥问题,关键在于04,这个数值实际上有点大了。一个显然的事实是,Mario在顶砖时,头顶是会进入到砖块当中一点的但是也只是“一点”啊,又不是把砖块顶穿了,按大格计算坐标的话Mario的头顶应该是跟砖块的坐标一致的,换句话说根本不需要增加这个修正量;实际上,就算开了游泳状态,大个子顶砖时的纵坐标只要再往上一个像素,被顶起的砖也不会发生向下偏移的现象,没错,就差了这么一个像素至于为什么游泳状态比正常状态顶到砖时的坐标偏低,估计是速度的原因,跳跃的上升速度快,游泳上升速度慢,因此游泳顶砖无法达到足够大的深度。
所以你懂的,把$BCEB的这个04改小一点就可以了,干脆改成0呗,测试下来,完美~(其实同理12也可以改小一点的,不过没问题就不改了)
不过,既然这个数可以改成0,那是不是意味着这段程序可以优化一下了?不过好像节省不了几个字节……