- UID
- 2290
- 阅读权限
- 40
- 精华
- 魅力
-
- 信用
-
- 注册时间
- 2009-2-8
- 在线时间
- 小时
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2017-5-5 23:27
|
显示全部楼层
地方找到了,那么接下来就得分析,这个得靠自己的经验,这里我就简单分析一下这个问题。
这段代码实际上是使用魔法消耗掉了MP,这里剧情使用了传送魔法,这个魔法也需要消耗MP,而这个剧情传送魔法的魔法代码是0x18(保存在内存0xA958),但是设计者并没有给0x18这个剧情传送魔法加入魔法的数据,根据这段代码所获取的传送魔法的消耗MP是0x90,无论人物有多少MP,经过这么一减,自然就变0了。
另外在22关贝伦哈尔特传送的时候MP却没有变成0。原因是0x016BE6~0x016BF0,这里判断人物代码是否为0x0E,如果是,则跳过消耗MP。
综上所述,剧情中的传送魔法有BUG,如果不是贝伦哈尔特使用的话会被清空MP。
修复方法也很简单。
方法1:不判断人物,判断魔法代码,如果魔法代码是0x18则跳过消耗MP。
修改之后的代码:
016BE6:move.w $a958,D0 (3038A958)
016BEA:cmpi.b #$18,D0 (0C000018)
016BEE:nop (4E71)
方法2:粗暴一点,直接跳转,不过不知道会不会出问题。
016BF0:beq $16c20 (6700002E) -> bra $16c20 (6000002E)
调试实例二:给特定人物增加经验值
首先要找到使用了给人物增加经验值的地方,方法有几个,不过最方便的就是打开剧情编辑器查看。
|
|