» 您尚未 登录   注册 | 社区银行 | 社区婚姻 | 社区成就 | 帮助 | 社区 | 无图版


火花天龙剑 -> 火炎之纹章 -> 火花学园 -> [原创] 776太阳剑“bug”浅析
 XML   RSS 2.0   WAP 

本页主题: [原创] 776太阳剑“bug”浅析 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
tata2007

头衔:孤独之狼孤独之狼
该用户目前不在线
级别: 火花会员
编号: 88604
精华: 6
发帖: 420
威望: 30 点
配偶: 单身
火 花 币: 20592 HHB
注册时间:2008-05-13
最后登陆:2024-09-26
艾雷布的骑士(I)
查看作者资料 发送短消息 引用回复这个帖子
[原创] 776太阳剑“bug”浅析

776里面的太阳剑是一个很强大的特技,不过与流星、月光不同的是,太阳剑会与某些武器冲突而不能发动,比如王者之剑。以前一度猜测这是程序的“bug”,最近由于改造的需要开始接触了一些65816汇编,于是很自然就想到了察看太阳剑的源代码,经过一番初步的尝试也算有了一些结论。不过由于本人只是刚刚接触汇编,水平比较渣,如有错误请大家批评指正。

如果没有特别指出的话,下文的数据一般采用16进制。

以下是关于太阳剑判定的部分源代码,反汇编工具用的是dispel DOS版,当然如果使用debug工具dump出来会更准确一些。


83/D87E:     BD4E00       LDA $004E,X
83/D881:     220DB083   JSR $83B00D
83/D885:     AD4D0F       LDA $0F4D    
83/D888:     F007           BEQ $D891
83/D88A:     C90600       CMP #$0006
83/D88D:     F002           BEQ $D891
83/D88F:     800F           BRA $D8A0    
83/D891:     A96400       LDA #$0064

83/D8A0:     60         RTS

需要关注的是83/D87E-83/D88F的一段,此部分是流星、月光所没有的。第一句就是获取攻击方的武器代码,然后调用子程序进行相关的处理,返回后再根据内存$0F4D-$0F4E地址的数值(16位)执行分支跳转,这里就是关键了。根据一些相关的程序初步判断$0F4D地址的数值就是武器的附加效果,$0F4E则是武器附加特技的低字节数据,也就是下面的BB部分。借用一下修改区置顶的776资料中关于武器属性的部分内容:

附加效果00   (02毒 04力量反噬 06吸血 08石化 0A生命值降为1 0C混乱 0E睡眠)
武器特技00 00   (参考特技代码BB CC)

BB:01-连击 02-鼓励   04-俘虏无视 08-祈祷   10-伏击 20-突击 40-大盾   80-看破
CC:01-怒   02-流星剑 04-月光剑   08-太阳剑 10-精英 40-双攻 20-必杀无视 80-不死

回过头来看前面的源代码,很容易知道程序判定只有在$0F4D-$0F4E地址的数值=0000或者0006的情况下才会执行后面的代码,否则结束子程序返回。什么意思呢?对比一下上面的特技效果表就很清楚了:
    只有武器不附带任何BB特技和效果、或者只带有吸血效果的前提下,太阳剑才会发动!
这就可以解释为什么会出现下面的现象:
“武器附加连续、魅力、祈祷、伏击、突击、大盾、见切这些特技中的任何一种,或者附加中毒、诅咒、睡眠、混乱、石化、HP为1这些特殊效果中的任何一种时,太阳发动不能。附加怒、月光、流星、太阳、精英这些特技都没事。”

现在可以明白了,这种现象并非bug,而是制作者有意为之。既然已经明白它的机理,要解除这些限制也就很简单了,将rom中1DA85-1DA87的原数据AD 4D 0F改成80 0A EA即可去掉所有武器附加特技、效果对太阳的封印(需要说一句,个人不推荐这种解除所有封印的修改,最好是保留武器附加效果的限制)。修改之后粗略地测试了一下,太阳剑的发动确实已经不再受其限制,暂时没有发现什么bug。有兴趣的朋友不妨可以再测试看看。

王者之剑的测试图



发布太阳剑补丁

个人制作的太阳剑补丁,解除了武器附加特技对太阳的封印,同时保留武器附加效果的限制,下载地址如下:
http://bbs.chinaemu.org/read-htm-tid-82187.html
另外一个,有效期3个月
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=4117647


[ 此贴被tata2007在2008-07-06 21:15重新编辑 ]


圣战系谱TS改造版

[楼 主] | Posted:2008-06-13 14:52| 顶端
o_sharp

该用户目前不在线
级别: 火花会员
编号: 75673
精华: 1
发帖: 935
威望: 10 点
配偶: 单身
火 花 币: 3436 HHB
注册时间:2007-03-18
最后登陆:2015-02-28
查看作者资料 发送短消息 引用回复这个帖子


终于有源代码的解释了。

不过我认为,在能够封印太阳的众特技和特效之中,真正符合逻辑有充分理由的,只有恶魔斧的诅咒(没记错的话是叫诅咒)。战斗时攻击方的hp会变化是极为罕见的事,有两种可能:1.吸血武器或者太阳发动。2.恶魔斧。避免这两种情况同时发生无可非议。我猜想恶魔斧可以封印太阳是有意为之,至于其它的可能性应该是容量限制不得已而为之,或者是无意而为之。

我很感兴趣诅咒和太阳同时发动时,攻击方的hp是如何变化的。


And why do we fall, Bruce? So we can learn to pick ourselves up.
[1 楼] | Posted:2008-06-13 16:20| 顶端
tata2007

头衔:孤独之狼孤独之狼
该用户目前不在线
级别: 火花会员
编号: 88604
精华: 6
发帖: 420
威望: 30 点
配偶: 单身
火 花 币: 20592 HHB
注册时间:2008-05-13
最后登陆:2024-09-26
艾雷布的骑士(I)
查看作者资料 发送短消息 引用回复这个帖子


诅咒和太阳同时发动倒是没想到过,不过如果只是为了避免这二者同时发动,一条简单的分支语句就可以完成,反而不用像原版中那样用到2条分支跳转语句,占用空间还更少一些。

圣战系谱TS改造版

[2 楼] | Posted:2008-06-13 20:13| 顶端
o_sharp

该用户目前不在线
级别: 火花会员
编号: 75673
精华: 1
发帖: 935
威望: 10 点
配偶: 单身
火 花 币: 3436 HHB
注册时间:2007-03-18
最后登陆:2015-02-28
查看作者资料 发送短消息 引用回复这个帖子


武器特效且不论,那几个武器特技的判定看起来的确是有意而为之,因为那个条件可以移除。只是如果以正常的思维来考虑的话,这么做不合逻辑。
不过无关紧要,动机也不可考了。


And why do we fall, Bruce? So we can learn to pick ourselves up.
[3 楼] | Posted:2008-06-13 20:41| 顶端
realwky



该用户目前不在线
级别: 火花会员
编号: 44164
精华: 0
发帖: 214
威望: 0 点
配偶: 单身
火 花 币: 337 HHB
注册时间:2005-09-25
最后登陆:2024-05-29
查看作者资料 发送短消息 引用回复这个帖子


技术帖,支持下
[4 楼] | Posted:2008-06-13 22:24| 顶端
tata2007

头衔:孤独之狼孤独之狼
该用户目前不在线
级别: 火花会员
编号: 88604
精华: 6
发帖: 420
威望: 30 点
配偶: 单身
火 花 币: 20592 HHB
注册时间:2008-05-13
最后登陆:2024-09-26
艾雷布的骑士(I)
查看作者资料 发送短消息 引用回复这个帖子


其实个人更加倾向于只保留武器附加效果的限制,包括吸血,因为这些效果大多数比较邪恶。至于吸血本身已经很强,再给它搭配太阳的强制命中就有点无耻了。

圣战系谱TS改造版

[5 楼] | Posted:2008-06-16 01:53| 顶端
o_sharp

该用户目前不在线
级别: 火花会员
编号: 75673
精华: 1
发帖: 935
威望: 10 点
配偶: 单身
火 花 币: 3436 HHB
注册时间:2007-03-18
最后登陆:2015-02-28
查看作者资料 发送短消息 引用回复这个帖子


原rom中,吸血武器是可以发动太阳并强制命中的,只是不会与太阳叠加,估计跟太阳用了同一段代码。
我要重做776,就把除了恶魔斧之外的这些封印效果一干去除,嘿嘿,游戏性最大化。


And why do we fall, Bruce? So we can learn to pick ourselves up.
[6 楼] | Posted:2008-06-16 02:07| 顶端
tata2007

头衔:孤独之狼孤独之狼
该用户目前不在线
级别: 火花会员
编号: 88604
精华: 6
发帖: 420
威望: 30 点
配偶: 单身
火 花 币: 20592 HHB
注册时间:2008-05-13
最后登陆:2024-09-26
艾雷布的骑士(I)
查看作者资料 发送短消息 引用回复这个帖子


下面是引用o_sharp于2008-06-16 02:07发表的:
原rom中,吸血武器是可以发动太阳并强制命中的,只是不会与太阳叠加,估计跟太阳用了同一段代码。
我要重做776,就把除了恶魔斧之外的这些封印效果一干去除,嘿嘿,游戏性最大化。

如果只是简单地将武器附加效果的封印解除的话,会带来一些其它的问题。曾经用一个具有二次攻击属性的武器作试验,如果给它加上睡眠效果,在原版里面命中敌人后就会停止攻击,甚至不能发动追击,也就是命中后只能发动一次攻击。去掉封印效果之后,他的攻击次数就不固定了,在发动了太阳的情况下就可以继续下一次攻击,否则停止。这样就导致战斗流程的不可预测性,所以我个人还是倾向于不解除武器附加效果对太阳的封印。


圣战系谱TS改造版

[7 楼] | Posted:2008-06-16 11:55| 顶端
1+1

头衔:追寻风的少年追寻风的少年
该用户目前不在线
级别: 火花会员
编号: 86990
精华: 0
发帖: 722
威望: 0 点
配偶: 单身
火 花 币: 1243 HHB
注册时间:2008-02-18
最后登陆:2016-09-14
查看作者资料 发送短消息 引用回复这个帖子


下面是引用o_sharp于2008-06-13 16:20发表的:
我很感兴趣诅咒和太阳同时发动时,攻击方的hp是如何变化的。


试了一下,将奥辛能力改满,当然幸运除外,幸运改为0,恶魔之斧改成技+80

然后攻击,得到的效果很让人诧异,难以用语言描述

http://776ips.ys168.com/的“其它”目录下下载“太阳 诅咒.rar”自己看吧

这个文件2.07M,解压后136M,AVI文件,要有心理准备


[8 楼] | Posted:2008-06-20 09:00| 顶端
o_sharp

该用户目前不在线
级别: 火花会员
编号: 75673
精华: 1
发帖: 935
威望: 10 点
配偶: 单身
火 花 币: 3436 HHB
注册时间:2007-03-18
最后登陆:2015-02-28
查看作者资料 发送短消息 引用回复这个帖子


看了,很有趣。无责任推测如下:
1.太阳吸血发生在诅咒减血之前。(这点是肯定的)
2.下面窗口只显示第一次hp变化,也就是太阳。诅咒扣到完没显示。
3.人物死亡的动画判定发生在战斗最后。战斗完hp为0,所以挂了。
4.但是地图人物数据貌似只在第一次变动时更新,诅咒减血的效果没有写到人物数据里。


And why do we fall, Bruce? So we can learn to pick ourselves up.
[9 楼] | Posted:2008-06-20 12:47| 顶端
1+1

头衔:追寻风的少年追寻风的少年
该用户目前不在线
级别: 火花会员
编号: 86990
精华: 0
发帖: 722
威望: 0 点
配偶: 单身
火 花 币: 1243 HHB
注册时间:2008-02-18
最后登陆:2016-09-14
查看作者资料 发送短消息 引用回复这个帖子


但是即使是没显示掉血,奥辛被诅咒也仅是掉20HP而已,不会挂

而实际情况是被攻击方挂了,但画面显示却是奥辛挂了

我无责任地想,可能是运行时有冲突,导致一系列的判定错误


[10 楼] | Posted:2008-06-20 14:18| 顶端
tata2007

头衔:孤独之狼孤独之狼
该用户目前不在线
级别: 火花会员
编号: 88604
精华: 6
发帖: 420
威望: 30 点
配偶: 单身
火 花 币: 20592 HHB
注册时间:2008-05-13
最后登陆:2024-09-26
艾雷布的骑士(I)
查看作者资料 发送短消息 引用回复这个帖子


恶魔斧的封印效果还是很有必要的。

话说ys168跟我无缘-___-。


圣战系谱TS改造版

[11 楼] | Posted:2008-06-20 18:03| 顶端
1+1

头衔:追寻风的少年追寻风的少年
该用户目前不在线
级别: 火花会员
编号: 86990
精华: 0
发帖: 722
威望: 0 点
配偶: 单身
火 花 币: 1243 HHB
注册时间:2008-02-18
最后登陆:2016-09-14
查看作者资料 发送短消息 引用回复这个帖子


下面是引用tata2007于2008-06-20 18:03发表的:
话说ys168跟我无缘-___-。


怎么?上不了?


[12 楼] | Posted:2008-06-20 18:25| 顶端
tata2007

头衔:孤独之狼孤独之狼
该用户目前不在线
级别: 火花会员
编号: 88604
精华: 6
发帖: 420
威望: 30 点
配偶: 单身
火 花 币: 20592 HHB
注册时间:2008-05-13
最后登陆:2024-09-26
艾雷布的骑士(I)
查看作者资料 发送短消息 引用回复这个帖子


不仅是ys168,几个常见的网盘都是这样。
这也是为什么我的修改版没有发布网盘下载的原因之一。


圣战系谱TS改造版

[13 楼] | Posted:2008-06-21 05:38| 顶端
1+1

头衔:追寻风的少年追寻风的少年
该用户目前不在线
级别: 火花会员
编号: 86990
精华: 0
发帖: 722
威望: 0 点
配偶: 单身
火 花 币: 1243 HHB
注册时间:2008-02-18
最后登陆:2016-09-14
查看作者资料 发送短消息 引用回复这个帖子


可能是你机器“Internet属性”里安全级别设置的问题,用默认就行了

要不你将此URL[http://ys-d.ys168.com/?太阳%20诅咒.rar_68e0c0bkshs7bso0bsmo0cmlnln0b5bsqjtlmhu14z97f14z]拷到迅雷之类的下载工具里下载
别点击


[14 楼] | Posted:2008-06-21 09:51| 顶端
tata2007

头衔:孤独之狼孤独之狼
该用户目前不在线
级别: 火花会员
编号: 88604
精华: 6
发帖: 420
威望: 30 点
配偶: 单身
火 花 币: 20592 HHB
注册时间:2008-05-13
最后登陆:2024-09-26
艾雷布的骑士(I)
查看作者资料 发送短消息 引用回复这个帖子


谢谢了,不过跟安全级别设置无关,用迅雷也是这样。
网页白天打不开,但是在下半夜黎明时分可以打开,只是速度非常慢,光页面出来就要20分钟,所以说无缘。


圣战系谱TS改造版

[15 楼] | Posted:2008-06-21 15:44| 顶端
fanyidao



该用户目前不在线
级别: 注册会员
编号: 81210
精华: 0
发帖: 57
威望: 0 点
配偶: 单身
火 花 币: 19153 HHB
注册时间:2007-06-29
最后登陆:2015-12-26
查看作者资料 发送短消息 引用回复这个帖子


下载完毕,看看是什么样子的。ys168我上还是比较快的,不知道tata2007是不是网络服务公司的问题导致上不去呢。
[16 楼] | Posted:2008-06-22 13:57| 顶端
wangchen_bb



该用户目前不在线
级别: 火花会员
编号: 23234
精华: 0
发帖: 8
威望: 0 点
配偶: 单身
火 花 币: 18661 HHB
注册时间:2004-08-26
最后登陆:2020-05-18
查看作者资料 发送短消息 引用回复这个帖子


看到了有趣的东西
[17 楼] | Posted:2008-07-06 20:57| 顶端

火花天龙剑 -> 火花学园




Powered by PHPWind v3.0.1 Code © 2003-05 PHPWind
辽ICP备05016763号
Gzip enabled

You can contact us