我对天之痕的代码修改起始于“至愚”大大的轩辕剑系列游戏原始数据查看、提取与修改器SuperSwdEditor.exe的启发

修改大类主要分三部分：

一.至愚查看器已经整理并查看到原代码的部分数据文件：
   这些都是在修改后能立即通过查看器就能知道修改效果的部分，最适合初级修改练手
（1）battle.ffd，战斗遇敌数据，这是唯一在至愚查看器里就能直接修改的数据文件
（2）level.dat，主角信息，也即其基本属性随等级升级的具体代码文件
（3）mon.dat，其中的活物数据，物品基本数据和法术初级数据和相应代码段显示。
     这是至愚查看器最主要，也是轩辕剑系列修改起来对提升难度与可玩性最简单实用的代码段。
     轩辕剑从云和山直到云之遥的难度强化都以此为初级基点
（4）Maps.dat，对物品，法术，以及怪物进行装备时的功能简介文字（单行）


二.至愚查看器没有详细展示出来的代码段及数据文件（因为代码段字节没有严格规律性，甚至没有序号，无法做成统一列表）
   能发现这些代码的能力无他，就是耐心的一个一个试出来！（好怀念当年可以连续通宵奋战的精力啊）
（1）mon.dat，法术数据高级代码段，没有代码序号提示（但实际有相应序列），只能一个个试出来
     包括了所有奇术，主角绝技，怪物特技，怪物普攻附带效果，武器及物品的攻击特殊效果
（2）FIGTALK.dat，对每场战斗进行修改锁定的程序代码文件
     这是3.0版推出之前曾困扰我多年最头疼的数据文件。
     比如你在活物数据里把宇文拓改的再强，通天塔第一战照样会被锁定成失去9成功力的废柴
     再比如2.03版刑天多出的一堆吐槽也在该文件中
（3）talk1.dat,talk2.dat,talk3.dat,talk4.dat，
     所有剧情与NPC对话文本所在的文件，任务奖励与宝箱内容也在其中

三.主程序文件swd3e.exe
   游戏运行中（尤其是战斗界面）各种具体的Bug问题都出在这里！
   这就不得不牵涉对作为计算机基础的汇编语言要有基本了解，
   通过反汇编软件IDA，可以对其中的语句与函数进行查看。
   但由于原程序是其他高级语言编译生成的exe文件，没有DOMO当初自己的游戏设计软件，
   就只能在不变动任何语句长度的前提下改动一些数据参数或nop掉一些语句，
   因此修改难度最大，已不在小教程可以讲授的范围内了。



接下来就对各个数据文件里的重要代码做一些示例，给大家抛砖引玉

先推广一下基本常识：
双字节16进制数据在文件里是从右到左读，
如10000的16进制数为2710h，在文件里则排列为 10 27

至于具体的修改工具很简单，用Winhex或Ultraedit直接改16进制代码数据

注意所有代码在文件开头部分都被编译了地址位置，
所以代码修改不能更改总长度，不然后面所有的代码地址就都乱了，游戏主程序都将无法正常读取

由于部分文件的2.02版与2.03版的大小不一样，同一个代码的16位地址也不一样
下面给出的所有示例的16位地址段都是基于2.03版文件


一，mon.dat

（1）活物数据，地址段：4130h-10410h
   
以下从最基础的活物数据开始，以我的Mod里的魔王“孙悟空”的数据代码为例

2.03原版的代码
01 00 代码  种类  等级  攻击  防御  敏捷  智慧  抗魔  打法  经验  生命四字节  攻击奇术一  攻击奇术二  攻击奇术三  特技一      特技二      恢复奇术一  恢复奇术二  可获物品    可偷物品    金钱        条件  意念  法 技 闪 逃 金 木 水 火 土    阴阳           王 收             耗体        放 装 加攻击(命)  加防御(灵)  加敏捷(体)  加命灵体力耐智需尾标(1B)
01 00 70 00 01 00 37 00 84 03 9C 00 4A 00 85 00 05 00 11 01 50 00 98 08 00 00 F2 17 02 00 F2 17 01 00 00 00 00 00 78 00 03 00 00 00 00 00 C1 17 01 00 00 00 00 00 90 0C 14 00 00 00 00 00 32 00 00 00 00 00 00 00 04 05 03 01 00 00 00 1E 00 00 01 19 00 00 00 00 08 00 00 06 00 FA 40 1A 00 01 F0 13 00 C8 00 14 00 14 00 15 00 B0 FF 1B 00 00 01 1E 00 

我的3.2版Mod的代码
01 00 代码  种类  等级  攻击  防御  敏捷  智慧  抗魔  打法  经验  生命四字节  攻击奇术一  攻击奇术二  攻击奇术三  特技一      特技二      恢复奇术一  恢复奇术二  可获物品    可偷物品    金钱        条件  意念  法 技 闪 逃 金 木 水 火 土    阴阳           王 收             耗体        放 装 加攻击(命)  加防御(灵)  加敏捷(体)  加命灵体力耐智需尾标(1B)
01 00 70 00 01 00 62 00 10 0E 58 02 B4 00 B8 0B 00 00 B2 00 B8 0B C0 D4 01 00 9C 17 12 00 1C 18 12 00 BC 17 12 00 78 00 12 00 00 00 00 00 FA 17 06 00 00 00 00 00 70 00 14 00 E8 0B 01 00 70 17 00 00 07 00 EC 03 06 05 14 00 14 00 00 64 3C 00 01 19 00 00 00 20 08 00 00 06 00 FA 40 1A 00 00 F0 07 00 2C 01 08 00 E8 03 09 00 14 00 1B 00 00 01 1E 00 


a.请注意至愚查看器里的有几项说明错误
  上面的代码示例的说明中已对这些错误做了修正：

错误说明	实际含义
力量		智慧
智慧		普攻特效
耐力		抗辅助魔法几率（越小越好，0为免疫）

其中普功特效和法术其实是类似的代码，见后面法术数据高级代码段介绍


b.意念招相关

2.03原版意念招
1.7攻  1.7防  1.7速  1.99攻0.5防 1.99速0.5防 无相性全抗50% 隐身  自爆  欺当前生命最低者 欺当前灵力最高者 欺当前体力最高者 欺低敏 欺当前防御最低者 山鬼吸魔 天将神使焰 土灵爪 凤精四连击 黑龙三道激光 白泽激光
E9 03  EA 03  EB 03  EC 03       F1 03       F2 03         F3 03 F4 03 F5 03            F6 03            F7 03            F8 03  F9 03            C7 00    10 01      13 01  3C 01      5E 01        72 01 

启动条件
1/3血 伙伴全灭 被暴击打 被法术打5次 被绝技打 玉儿小雪都在 被金打 被木打 被水打 被火打 被土打 收化失败 被封魔 麻痹解除 复活 我方有人灵力低于1/4 用2次加血术 miss 奇术或特技耗完
01    02       05       06          07       08           0A     0B     0C     0D     0E     0F       11     15       18   19                  1C          1B   1E

其中欺属性最低者都有一种Bug：如有三人健在且陈该属性最高则欺负优先级依次为张，玉，雪

注意“特技二”与意念招会发生冲突，设置了意念招，特技二就会无效，
所以比如想要独孤宁珂同时拥有召唤亚坦和子弹术两项特技，就不能给她添加意念招

从原版后面几个意念招可以看到，意念招本就可以设为怪物的专属特技，
但前提是DOMO有设计了该怪物发动此专属特技的动画，
比如我3.2Mod里黑龙与龙王都可以做三道激光特技，
而神龙就没有相应特技动画，强加该特技，神龙发动时就会报错卡住


c.代码最后部分装备时加的属性注意最后是否有1B000001的尾标，
  有此尾标加命灵体和力耐智才会生效，没有此尾标只有加攻防敏才会生效。


（2）物品基本数据示例（3.2版Mod代码），地址段：12DE0h-1C710h

雨皇花
                           等级  种类        图片                                               谁 价格        命恢复%     灵恢复%     体恢复%                 施放效果
D0 07 00 00 00 00 00 00 00 3D 00 0D 00 0E 00 11 0C 19 00 00 00 02 10 00 00 06 00 00 00 1A 00 04 F0 0B 00 D0 07 13 00 64 00 14 00 64 00 15 00 64 00 1B 00 00 02 64 00 D6 00 02 00 07 00 03 00 02 00 1E 00 

金块
                           等级  种类        图片                                               谁 价格        攻击伤害（此只能用于投掷伤害计算）
D0 07 00 00 00 00 00 00 00 3D 00 0E 00 0E 00 F7 0B 19 00 00 00 0A 00 00 00 06 00 00 20 1A 00 00 F0 0B 00 06 0D 07 00 FA 00 02 00 0A 00 03 00 0A 00 1E 00 

泥蚣袍
      金 木 水 火 土       等级  种类        图片                                               谁 加攻        加防        加敏
D0 07 32 32 32 32 32 00 00 40 00 15 00 0E 00 F7 0C 19 00 00 00 00 02 00 40 06 00 00 00 1A 00 00 F0 07 00 05 00 08 00 96 00 09 00 02 00 1E 00

鱼肠剑
                           等级  种类        图片                                               谁 买价        加攻        加防        加敏        熟练度      熟练经验                普攻效果 
D0 07 00 00 00 00 00 00 00 25 00 0B 00 0E 00 8A 0C 19 00 00 00 00 01 00 00 06 00 00 20 1A 00 00 80 0B 00 6C 07 07 00 B8 00 08 00 FF FF 09 00 04 00 0C 00 F0 00 0D 00 20 03 16 00 E0 20 64 00 E1 00 1E 00 

三清符笔
                           等级  种类        图片                                耗体           谁 熟练经验
D0 07 00 00 00 00 00 00 00 00 00 10 00 0E 00 53 0C 19 00 00 00 40 02 00 00 06 00 E8 43 1A 00 00 F0 0D 00 10 0E 16 00 29 00 1E 00 

谁拿：
10 张烈
20 玉儿
40 小雪
60 女性
80 靖仇
90 男性
F0 任意

武器效果代码段头标：
07 攻
08 防
09 敏
0B 价格
0C 满熟练度伤害
0D 熟练经验
64 普攻效果

a.除了法宝的代码段长度具有统一的长度，其他物品都因具体功能有长有短，
  需要具体测试其效果代码，且不能增加或缩短代码长度。

b.武器的“普通效果”和部分物品的“施放效果”即和怪物的普攻特效类似，见后面法术数据高级代码段介绍

c.凡是奇物类武器和防具都没有价格代码，在“谁用”的代码段后就直接是效果代码


（3）法术初级数据示例（3.2版Mod代码），地址段：1C760h-21440h

十邪散魂 
                                 14为绝技    动画代码？        辅助              耗灵
D0 07 00 00 00 00 00 00 00 00 00 11 00 0E 00 F1 17 19 00 00 00 10 00 00 00 06 00 E0 81 1A 00 01 00 64 00 80 00 1E 00

辅助：
10 00 对敌伤害
08 00 对敌辅助
04 00 对己辅助
00 10 对己治疗
01 00 对己解除状态
01 10 对己复活 


（4）法术数据高级代码段示例（3.2版Mod代码），地址段：18E0h-4120h
     这是至愚查看器没有解析出来，却功能最丰富的一个代码段
     由于没有任何序号代码，虽然从活物代码里可以看到其实应该有对应的序号，
     但长度和格式规律性差，只能根据每个代码段的头标和尾标来一个个测试出来。（当初最伤神的地方）

地址段：18E0h-28A0h
该段奇术特效的16进制序号在至愚查看器里有代码显示，
如第一个奇术金灵疾空的代码序号为1772h(在主角信息和活物数据里具体的引用代码即 7217)

地址段：28A0h-4120h
该段奇术特效的16进制序号在至愚查看器里没有代码显示
但在主角信息和活物数据里依然有具体的引用代码，分类入下

a.怪物普功特效
16位序号代码：9700-CE00
地址段：28A0h-2EA0h

b.部分物品释放效果与武器普攻效果
16位序号代码：CF00-0F01
地址段：2EA0h-34F0h

c.怪物特技与部分物品释放效果
16位序号代码：1001-4901
地址段：34F0h-3B40h

d.怪物特技与部分奇术
16位序号代码：4A01-7E01
地址段：3B40h-4120h


以下是具体代码示例

金灵疾空
头标  行为  伤害  相性  投像  动画延迟    释放速度    死亡特效    尾标
00 00 04 00 FA 00 01 00 00 00 04 00 0A 00 1A 00 37 00 0D 00 01 00 05 00

00 00 行为                
原地投掷 召唤位 原地攻击 原地施法 原地攻击？ 跑步攻击  跳跃
01 00    02 00  03 00    04 00    06 00      08 00     20  00


由于不同奇术的代码在“动画延迟”代码段后的长度与功能数量千差万别，
下面只列出效果代码或代码头标集
 
00 00 头标 后跟自身行为动作

02 00 辅助奇术效果持续时间

03 00 群体

04 00 动画延迟

05 00 尾标

06 00 恢复可闪避辅助奇术效果

07 00 可闪避辅助奇术效果

07 00 00 01 炎灼
07 00 00 02 退化
07 00 00 04 鬼降
07 00 00 08 所有 无效！
07 00 00 10 中毒
07 00 00 20 瘟疫
07 00 00 40 ？
07 00 00 80 濒死
07 00 01 00 定身
07 00 02 00 冻结 
07 00 04 00 石化
07 00 08 00 昏睡 
07 00 10 00 封魔 
07 00 20 00 失智
07 00 40 00 电解
07 00 80 00 盲目  

0C 00 不可闪避辅助奇术效果

0C 00 00 00 00 01 金象攻击力上升30%
0C 00 00 00 00 02 （金钟罩）？
0C 00 00 00 00 04 借物代形
0C 00 00 00 00 08 攻击力下降
0C 00 00 00 00 10 (隐形 有BUG 仅陈靖仇与于小雪可用）
0C 00 00 00 00 20 增强防御力
0C 00 00 00 00 40 增加行动力
0C 00 00 00 00 80 增强攻击力
0C 00 00 00 01 00 破血除咒
0C 00 00 00 02 00 伤害转移
0C 00 00 00 04 00 猛烈攻击
0C 00 00 00 08 00 防御力下降
0C 00 00 00 10 00 速度下降
0C 00 00 00 20 00 火象攻击力上升30%
0C 00 00 00 40 00 水象攻击力上升30%
0C 00 00 00 80 00 木象攻击力上升30%
0C 00 00 40 00 00 土象攻击力上升30%

0D 00 死亡方式

0E 00 增加五行抗性

12 00 吸血

13 00 吸魔

14 00 吸体

15 00 撤出战斗

16 00 召唤

17 00 投射速度

19 00 查看五行

1A 00 施法速度（后面的值越大越快）

1E 00 抢钱

1F 00 偷宝

对以上这些代码的修改注意不要过度，很容易出现各种卡机和Bug。
而且有一些效果设置依然不在这些代码中，比如宁珂的机关枪释放数量，
再比如张烈的游气化金不能施加到有借物代形的角色上。
估计这些设置在更复杂的投射动画文件里，暂时还未找到出处。


二，level.dat

主角信息，也即其基本属性随等级升级的具体代码文件
代码按至愚查看器可见的顺序排列

以3.2Mod里陈靖仇的1-6级为例
        命  灵  体  力  耐  智  敏          抗  时  经验    习得奇术
05000000640023001400080006000A001800040005000100010000000000
05000000B40032001E000800060012001800040005000100010064000000
050000000E014B002D0008000900160018000400050001000100DC00000001007D17
05000000680164003C0008000C001A001800040005000100010090010000
05000000C2017D004B000A000F001E001800040005000100010080020000
050000001C0296005A000C001200220018000400050001000100AC0300000100BE17

“抗”指的是抗敌方辅助魔法能力，值越小越好

“时”是中辅助魔法后的持续回合指数（不是具体回合数），越小越好，
但也和主角的敏捷度相关，前期虽然设的小，但1回合很慢，实际持续时间不比高等级低


三，Maps.dat

对物品，法术，以及怪物进行装备时的功能简介文字（单行）

不同版本代码段启示地址：

      2.03  2.02
护驾：16AFB 16AE3

物品：1FD69 1FD51

法术：29ABC 29AA4

虽然2.02简体版与2.03繁体版的文件大小与内容有所不同
但文字代码都是台湾繁体Big5码

如要根据繁体中文转换为想搜索到的代码文字段
请先由简转繁（百度上很容易搜到在线转换工具）
再由繁转Big码（也百度上搜一下转换工具）

如果想把文件里的Big5码段转换成文字，请用此在线工具
http://www.qqxiuzi.cn/bianma/zifuji.php


四，FIGTALK.dat

对每场战斗进行修改锁定的程序代码文件

没有固定的长度和格式规律，
有时代码段很长且中间有时会杂以对话文字，比如仙翁刑天
有时代码仅为16字节的空段，比如没有任何特殊剧情的普通迷宫战斗
只能以段落尾标(30 75 FF FF)作为分段区隔标记

以2.03原版赤贯星独孤宁珂一战的战斗锁定为例

属性锁定，地址段：5A20h
等级锁定          攻防敏锁定  攻击  防御  敏捷  攻击术锁定  攻击术一    攻击术二    攻击术三    特技锁定    特技一      特技二      死亡效果锁定      结束括号
46 00 00 00 32 00 34 00 00 00 24 04 78 00 5F 00 38 00 00 00 86 17 05 00 85 17 06 00 12 18 05 00 4B 00 00 00 79 01 05 00 78 01 04 00 33 00 00 00 06 00 29

小雪结局获得奖励锁定，地址段：5A70h 
      无空霸海    九龙云生胄  天神战袍    天仙神衣    霞云彩绫
35 00 AA 0C 35 00 FB 0C 35 00 FE 0C 35 00 FF 0C 35 00 32 0D 01 00

玉儿结局获得奖励锁定，地址段：5A90h
      无空霸海    神术        九龙云生胄  天神战袍    天仙神衣    霞云彩绫
35 00 AA 0C 35 00 B8 0C 35 00 FB 0C 35 00 FE 0C 35 00 FF 0C 35 00 32 0D 01 00
35 00 E8 0B 35 00 11 0C 35 00 CB 0B 35 00 C2 0B 35 00 C7 0B 35 00 BD 0B 01 00


每场Boss战的音乐文件名代码为ASCII码，所以在16位进制编辑器里可以直接看到，
在不改变名字长度的前提下就直接修改文件名字，就可以实现Boss战音乐的更换。


五，talk1.dat,talk2.dat,talk3.dat,talk4.dat

所有剧情与NPC对话文本所在的文件
包括任务奖励（比如talk3.dat里的古维然五色药材任务）与宝箱内容

通过对话文字转换成Big5码后，再用16进制编辑器的搜索功能就能找到对应文字代码段
在不改变原来句子长度的前提下，就能在句内修改对话文字

注意任务奖励的物品名称是以序号的形式（见至愚查看器物品属性第一项）以ASCII码显示，
在16位进制编辑器里可以直接看到，所以也可以直接进行修改，
但注意改的只是名字，物品具体代码则要在其附近寻找
比如原版太原换衣服任务中泥蚣袍的序号为3319，
查到后改为3318，并把物品代码“F70C”改为“F60C”
奖励提示和具体获得物即会换成玄雪丝衣

地图宝箱物品则都集中于talk4.dat中，
物品名称同样是以序号形式的ASCII码显示，物品代码则紧随其后
起始地址：5BFAh
比如查到七仙神针的序号3183，改为3155，并把具体代码6F0C改为530C
则三清符笔就会改在小小塔与飞贼王夺宝的宝箱中才能得到


六，swd3e.exe

这里对没有汇编基础的朋友没法讲授，而对学好了汇编的高手，则能做我的老师哈。

只简单列出一些从IDA中分析出的2.03版主程序文件的部分函数段，给大家参考

sub_45BEA0 战斗界面所有主角指令总函数（攻击，奇术，收妖，法宝指令等全是其下子函数）

sub_45EE20 偷窃指令总函数

sub_471E80 融合指令总函数

sub_472D50 蓄劲指令总函数

sub_4743C0 投掷指令总函数

sub_474AF0 炼妖指令总函数（完整性很有疑问）

sub_474E80 绝技指令总函数

发现函数功能的小技巧是看一些功能的说明文字的Big5码在哪些函数段里
由于汇编语言函数的高度复杂，以上的函数功能总结可能都不完全也不准确

