正如你看到的,我们的百科缺少很多基本资料,然而我们手头的资料很多,苦于没有人手,你愿意入伙吗?想和我们一起干的话就进入宝可梦大百科的建设QQ群,群号为46066525。务必注明“编辑宝可梦大百科” 百科目前为邀请注册,有意注册编辑的同学请在首页的讨论页面或者在建设群内留下你的邮箱。

[ 站务 | 命名方案 | 常用模板 | 参考源 | 优秀词条 | 用户服务 | 联系我们 ]

第四代存档数据结构

Love Poke,Wiki Poke
跳到导航跳到搜索
这篇文章属于半成品,目前尚未完成。你可以帮助我们扩充完善它


DS系列的存档通常被存储为.SAV文件,并且其中包括两组数据。每一组数据包括一个小数据块和一个大数据块。精灵宝可梦 白金精灵宝可梦 钻石·珍珠的偏移量都有所差别,请勿混用。

在钻石·珍珠版本中,第一组小数据块起始于0x00000,结束于0x0C0FF,第一组大数据块起始于0x0C100,结束于0x1E2DF。在白金版本中,第一组小数据块起始于0x00000,结束于0x0CF2B,第一组大数据块起始于0x0CF2C,结束于0x1F10F。第二组数据则是第一组数据再偏移0x40000,三部游戏皆如此。两组数据互为备份关系。

小数据块

小数据块包括如下的数据:

偏移量 解释
0x68 - 0x77 训练家名字
0x78 - 0x79 训练家ID
0x7A - 0x7B 隐藏ID
0x7C - 0x7F 金钱
0x80 性别
0x81 来自
0x82 徽章
0x83 头像
0x9C 队伍中精灵数量
0xA0 - 0x627 队伍精灵数据块
0x630 - 0x8C3 普通道具数据占位
0x8C4 - 0x98B 重要道具数据占位
0x98C - 0xB4B 技能机器数据占位
0xB4C - 0xBEB 药品数据占位
0xBDC - 0xCEB 树果数据占位
0xCEC - 0xD27 精灵球数据占位
0xD28 - 0xD5B 战斗用品数据位
0xD5C - 0xD8B 邮件数据占位
0xCF18 - 0xCF2B 数据尾

数据占位

In these placeholders, each item takes 4 bytes with the following structure: 在这些数据占位中,每个道具占用4个字节,呈以下结构:

偏移量 解释
0x00 - 0x01 道具ID
0x02 - 0x03 道具数量

数据尾

每个数据块(包括大小两种数据块)的最后0x14个字节作为数据尾,呈以下结构:

偏移量 解释
0x00 - 0x03 用来连接大小数据块
0x04 - 0x07 存档编号
0x08 - 0x0B 数据块大小
0x0C - 0x0F K
0x10 - 0x11 T
0x12 - 0x13 数据块校验

校验

游戏采用CRC-16-CCITT算法进行校验,进行计算的数据为整个数据块但不包括数据尾。

实例

小数据块1

D1 01 00 00 | 42 04 00 00 | 00 C1 00 00 | 23 06 06 20 | 00 00 | 7E 7A

大数据块1

D0 01 00 00 | F1 02 00 00 | E0 21 01 00 | 23 06 06 20 | 01 00 | 0D 39


小数据块2

D0 01 00 00 | 41 04 00 00 | 00 C1 00 00 | 23 06 06 20 | 00 00 | 0C 7F

大数据块2

D1 01 00 00 | F2 02 00 00 | E0 21 01 00 | 23 06 06 20 | 01 00 | F6 8A

由于小数据块1中0x04 - 0x07处数据的值较大(42 04 00 00 > 41 04 00 00),因此为当前小数据块。然后通过0x00 - 0x03处的值(D1 01 00 00)寻找到大数据块。此处意味着当前大数据块其实是大数据块2(如果大数据块的校验是正确的)。

参考资料


精灵宝可梦游戏数据结构
第一代 精灵数据结构精灵种族数据结构
第二代 精灵数据结构精灵种族数据结构训练家数据结构
第三代 精灵数据结构精灵数据子结构精灵种族数据结构技能数据结构
华丽大赛数据结构华丽大赛技能数据结构道具数据结构精灵图鉴数据结构
存档数据结构
第四代 精灵数据结构存档数据结构