欢迎光临散文网 会员登陆 & 注册

究极绿宝石5.3——科普向,什么是金手指(七)

2022-01-27 17:44 作者:围巾胖头鱼  | 我要投稿

说在前面:

    上期专栏相比于第三、四期专栏,又介绍了一种新的探索映射表的方法:利用金手指修改变量取值来探索映射表。这样,我们就可以利用VBA模拟器中的“变量地址查看器”“查找金手指”和“金手指列表”这三个功能对VBA模拟器的内存进行任意探索。

    本期专栏只讲一个问题,就是把描述单只精灵的100个字节讲清楚,将会大量引用来自神奇宝贝百科的内容。由于究极绿宝石5是基于宝可梦系列第三世代的《绿宝石》,因此规则一般是参考神奇宝贝百科第三世代的设定。

    先来看一张映射表,作为描述精灵的总结:

描述精灵的100个字节

    说明一下上面这张图该怎么看。最左边的一列是相对地址,数字格式为十六进制,单位是字节。“相对地址”的概念源自于上期专栏介绍的映射表结构的通用性,比如说我们知道描述队伍首位精灵的起始地址是020244ec,那么就可以利用这一列的相对地址,加到起始地址上,来获得队伍首位精灵某项属性的变量地址。例如“种族”这个属性在相对地址20处,我们在十六进制下做加法:020244ec+20=0202450c,这就是队伍首位精灵种族的变量地址

    图中绿色的区域是非面板值,蓝色的区域是面板值,也就是说蓝色区域中的变量取值是由绿色区域中的变量取值用游戏程序计算得到的。反映在游戏中,就是说如果使用金手指修改面板值(蓝色区域)的变量,那么将这只精灵放回电脑、在精灵中心回复、与训练师对战时,蓝色区域的变量会根据绿色区域的变量重新计算,因此修改蓝色区域变量的金手指实际上是起不到作用的

    “变量名称”这一列,就是每个地址给出的4字节变量都是什么含义。四个字节的顺序从右向左排列,原因就是小端序。还是以精灵种族为例,上面我们计算出0202450c是队伍首位精灵的种族,它占的是从这个地址开始的2个字节,再往后2个字节,也就是0202450c+2=0202450e这个地址,就是队伍首位精灵携带道具的变量地址

    图中标注???的区域,是作者暂时没有找到任何实际意义的变量。也就是说,用金手指修改这些地方的变量,似乎对精灵没有任何影响。当然,如果有读者能发现这些未知区域的含义,欢迎补充!

    接下来作者对每个属性进行详细的介绍。

相对地址00,长度4字节,精灵性格

    神奇宝贝百科的描述:

性格(日文︰性格せいかく,英文︰Nature)于第三世代引入的宝可梦的一种特征。一共存在25种性格。

    精灵性格是一个8位十六进制数,这个数字除以25(10)的余数就决定了精灵是什么性格。8位十六进制数除以25的余数有25种可能,就是从0到24,每个数字映射到一个性格,比如3映射到固执,10映射到胆小、13映射到爽朗,15映射到内敛等等。上期专栏最后的彩蛋,对战开拓区桄榔的那只美纳斯,性格变量取值是C0E760E2:

美纳斯的全部信息

    放到win10程序员模式计算器中看一下:

C0E760E2转换为其他进制

    它转换到十进制之后是3236389090,除以25的余数是15,对应到内敛这个性格。计算一个十进制数除以25的余数是非常简单的,只需要看这个数字的最后两位数就可以了,因为100的整数倍除以25余数都是0。

相对地址04,长度2字节,精灵ID No.;相对地址06,长度2字节,精灵里ID No.

神奇宝贝百科的描述:

ID No.(日文︰ID,英文︰ID number)是印在每一位训练家训练家卡片、开拓通行证、训练家证或联盟卡上的一个6位数字编号,用于确认训练家的姓名和性别。训练家收服宝可梦时,宝可梦的资料中也会显示初训家的ID No.,可用于判断某只宝可梦是谁捕获的。

第六世代以及之前,ID No.只有5位,印在训练家卡片上,最大值为65535(实际上ID No.是十六进制的四位数,最大值为FFFF,也就是十进制中的65535)。

在第三世代到第六世代中,每一位训练家都拥有一个隐藏的类似ID No.的编号,通常称为里ID No.(SID)。里ID No.主要是为了让游戏系统在当两个不同训练家的ID No.和名字相同时,仍然可以将他们分辨出来。另外里ID No.也和ID No.、个体值一起参与异色判定的计算。如果两个训练家有相同的名字、ID No.和里ID No.,那么游戏系统就会认为两人是同一个人。

    这里的精灵ID和精灵里ID,其实是第一次捕捉这只精灵的训练家的ID和里ID,百科称这种训练家叫“初训家”。训练家的ID和里ID在游戏刚开始创建完角色的时候就确定了,并且在此后的游戏中一直固定不变。由该训练师捕捉到的精灵,精灵的ID和里ID就和该训练师相同,因此一只精灵被捕捉后,此后的游戏中它的ID和里ID都一直固定不变。

    百科中提到了精灵的ID和里ID可以参与“异色判定”的计算,也就是常说的“闪光精灵”。来看一下百科对“异色宝可梦”这个词条的说明:

从第三世代起,宝可梦是否异色不再与其能力挂钩,而是由ID No.、里ID No.、初训家以及性格值共同决定。

(ID No. xor 里ID No.) xor (性格值前16位 xor 性格值后16位) < 8

    这里给出了一个判断精灵是否闪光的公式,用到了异或(xor)这个运算。不严格地讲,异或运算是针对1位二进制数的运算,也就是在0和1之间的运算,运算规则如下:

0 xor 0 = 0, 1 xor 0 = 1, 0 xor 1 = 1, 1 xor 1 = 0

    也就是说,两个相同的数异或,得到的结果是0,不同的数异或,结果就是1。

    上面公式中给的异或运算,其实是按位异或。因为参与运算的是16位2进制数,按位异或的意思就是参与运算的两个数,它们第0位的异或作为结果的第0位,第1位的异或作为结果的第1位……异或运算是按位进行的。

    多说一句,由于按位异或运算具有结合律,因此公式中的括号是多余的。

    如果拿上图那个美纳斯举例,看到第二行是02024748 0000045d,因此它的ID是045d,里ID是0000,再结合第一行的性格,前16位是60e2,后16位是c0e7,放到计算器里计算一下:

闪光精灵判定

    win10程序员模式计算器中,异或运算可以在左边中间的“按位”按钮里面找到。计算结果并不比8小,因此这只美纳斯没有闪光。

    游戏中,当取得水静市华丽大赛五项比赛大师组的冠军,并且被画家画像后,水静市博物馆的馆主会提供一个“镀闪”的功能,将精灵变成闪光的样子。其原理就是修改精灵性格这个变量,在保持性格不变(也就是除以25的余数不变)的情况下,满足上面那个异色判定的公式。

    这里可以给大家抛出一个问题:给定精灵的ID和里ID和一个特定的性格,如何生成这样的精灵性格值(8位16进制数),使得它既满足异色判定的公式,又满足它对应的性格是我们给定的性格?有兴趣的话可以在讨论区探讨一下。

相对地址08,长度10字节,精灵名称

    这里我们就不看百科了,在游戏中来到凯那市改精灵名称的小屋内看一看:

改名字的界面

    在修改名称的界面,可以按Select键切换大小写字母、数字和汉字,在汉字的界面,按L键或者R键可以浏览更多的汉字。还不知道Select键、L/R键的读者,可以去看第四期专栏的“VBA模拟器按键设置”,位置在VBA模拟器的“选项——手柄——设置——1...”。

    精灵名称的变量取值对应到字符的映射表。在究极绿宝石5中,每个字母、数字、特殊的可见字符和汉字都会对应到一个数字,只不过汉字会对应到2个字节的数字,而其他字符会对应到1个字节。反映在上图中,就是蓝色和橙黄色背景里的字符,对应的都是1个字节,而绿色背景中的汉字对应的都是2个字节。

    由于精灵名称的长度是10个字节,因此一只精灵的名称最长就是5个汉字,比如“究极奈克洛兹玛”在游戏中只能叫“究极奈克洛”,后面的汉字只好省略掉了。

    如果精灵的名称不足5个汉字(或者说10个字节),那么在名称的最后一个字符后面会跟上一个FF作为结束符。例如上面美纳斯的名字:

0202474c bf095809

02024750 02ff5c0c

    5809是“美”,bf09是“纳”,5c0c是“斯”,然后后面跟了一个ff(注意这个“后面”的说法,按照小端序,字节的顺序是从右到左的),再往后的字符就没有意义了。

    多说一句,汉字映射表中,数字的顺序和图中给的汉字的顺序有某种对应的关系,感兴趣的读者可以用前几期专栏给出的方法去探索一下字符的映射表。

相对地址14,长度6字节,精灵主人名称

    在精灵的概况页面,会显示精灵主人的名称。根据映射表内容的通用性,主人名称所用的字符映射表和精灵名称是一样的,因此主人名称最长就是3个汉字,这也就是为什么在游戏刚开始的时候,有的玩家给自己的主角起名字超过了3个汉字,显示出来就会有乱码。

相对地址1E,长度1字节,隐藏特性/极限锻炼情况

    神奇宝贝百科的描述:

一种宝可梦可能会拥有多种特性,分为第一特性、第二特性和隐藏特性。但对于一只宝可梦来说,它只能拥有这三种特性其中一种。

    第一特性和第二特性统称为普通特性,而隐藏特性有个名称叫“梦特”。好多玩家在游戏一开始选择八代御三家的炎兔儿时,不知道刷了多久的“梦特”才出现了特性为自由者的炎兔儿。道具特性胶囊可以让精灵的特性在第一特性和第二特性之间切换,道具特性膏药可以让精灵的特性从普通特性变成隐藏特性(反之不行)。

    这个变量按二进制来看共有8位,最低位会决定精灵是普通特性还是隐藏特性。

    以上面的美纳斯为例,对应到02024760 00000000这一行,我们看的是低4位的0000,写成二进制就是16个0,最低位是0,说明美纳斯是普通特性。但是美纳斯有两个普通特性,第一特性是神奇鳞片, 第二特性是好胜,决定是哪个普通特性的变量不在这里。如果读者对第四期专栏还有印象的话,决定是第一还是第二特性的变量在个体值那个地方,下面也会有介绍。

    那么这个8位二进制数的其他7位有什么用呢?

    对于8位二进制数,我们把最低位称为第0位,然后从右到左依次是第1位,第2位,……,第7位。在这里,第1位到第6位描述的是精灵接受极限特训的情况。在世界锦标赛上,满级的精灵可以用银色王冠或者金色王冠进行极限特训,但只能修改面板值,让面板值达到个体值是V的样子,但是个体值本身没有变化。第1位到第6位,分别表示是否对HP、物攻、物防、速度、特攻、特防进行了特训,0就是没有特训过,1就是特训过。比如这个2进制数:

    就表示精灵接受了全能力的极限特训。

    第7位暂时未发现有什么特殊用途。

相对地址1F,长度1字节,火箭队伊布/性格薄荷使用情况

    这个字节分为低7位和第7位两个部分。

    低7位只会取值从0到25(10),共有26(10)种情况,表示该精灵是否吃过修改性格的薄荷。0表示没吃过,1到25分别表示吃了哪种性格的薄荷(因为一共有25种性格)。这也就是游戏中黑连的答题环节,可以用修改性格的薄荷让精灵的面板发生改变,但本身的性格没有发生变化。

    第7位有个特殊用途,制作组在这里用它来描述一些自定义的精灵特性(宝可梦百科中没有的)。比如说在紫堇市游戏厅地下抓到的那只火箭队伊布,有的玩家称其为“阿尔宙斯布”,是因为这只伊布用什么技能就会变成什么属性的伊布。这种特性是制作组自定义的产物,因此在这只火箭队伊布身上,第7位就是1,其它正常的精灵的第7位都是0。

相对地址20,长度2字节,精灵种族

    这个变量对应到精灵种族的映射表,从0001对应到妙蛙种子开始,到04AE对应到伽勒尔达摩形态的达摩狒狒为止,有接近1200种精灵。虽然图鉴上只有898种,但是算上银伴战兽、未知图腾、阿尔宙斯的多种类型(在映射表中,每种不同的形态都算作是一个不同的精灵类型)、各种精灵的地区形态、mega形态、极巨化形态等等,凑在一起就有了这么多。

相对地址22,长度2字节,精灵携带的道具

    这个变量对应到道具的映射表,从0000无道具开始,到02EA安神的原核(就是让火箭队伊布听话的那个道具)为止,共有700种左右的道具。

相对地址24,长度4字节,精灵经验值

    一只精灵100级的经验值可以到神奇宝贝百科上查到,它可以决定“精灵等级”这个面板值,因此如果使用金手指只修改精灵等级,而不修改精灵经验值的话,金手指是不会生效的,游戏程序会根据经验值自动计算出来精灵等级。

相对地址28,长度1字节,精灵技能PP上限

    对于精灵的每个技能,如果给精灵吃“PP提升剂”,吃一次PP上限会提高20%,两次是40%,三次是60%。最多只能吃3次,和吃一次“极限PP提升剂”的效果一样。这个变量只有1个字节,二进制共有8位,每2位代表一个技能,这个2位的二进制数就说明了每个技能的PP提升剂吃了几次,00(2)是没吃过,01(2)是吃了一次,10(2)是吃了两次,11(2)是吃了三次。比如这个数字:

    11100100(2)

    就表示第一个技能没提升PP上限,第二个技能提升了20%,第三个技能提升了40%,第四个技能提升了60%。

相对地址29,长度1字节,亲密度/孵化剩余周期

    这个地址的变量有两个含义,分为精灵是蛋还是正常精灵两种情况。

    如果是正常精灵,该字节描述的就是亲密度,神奇宝贝百科的描述:

亲密度(日文︰なつき度,英文︰Friendship)是表示训练家与宝可梦之间是否亲密的一个隐藏指标。亲密度首次出现在《皮卡丘》的皮卡丘身上,到第二世代开始扩展到全部宝可梦。亲密度可以影响部分宝可梦的进化,以及使用部分招式的威力。

亲密度首次出现在《皮卡丘》。它的数值位于0到255之间,……

    单个字节正好可以描述0~255这256种数字。在技能机分布的帖子中,技能机01-百万吨重踢和100-百万吨重拳都需要到暮水镇左下的房间中领取,条件就是队伍首位精灵亲密度的高低。这里可以给出具体数值:当首位精灵亲密度小于50时,会得到01-百万吨重踢;当首位精灵亲密度大于等于100时,会得到100-百万吨重拳;其他数值的亲密度不会得到技能机。

    如果是蛋,该字节描述的是距离蛋孵化出来还剩下多少个孵化周期,神奇宝贝百科的描述:

孵化周期(日文︰タマゴのサイクル,英文︰Egg cycle)指宝可梦的蛋从主角获得到孵化所用的步数。在不同世代中,一个孵化周期的步数有所不同:

在第二世代、第三世代,一个孵化周期为256步。

    也就是说,把这个字节对应的数字,和256相乘,就可以得到还需要走多少步就能把蛋孵化出来。从神奇宝贝百科的资料来看,孵化周期数最多的精灵都是神兽,在究极绿宝石5中,神奥地区随意镇的黄半仙可能会赠送神兽蛋,需要走3万多步才能孵化。

相对地址2C,长度8字节,精灵技能

    每2个字节描述一个技能,一共4个技能,所以需要8个字节。这个变量对应到技能的映射表,从0000无技能开始,到0387诡异咒语为止,共有900种左右的技能。

相对地址34,长度4字节,精灵技能当前PP数

    每个字节描述一个技能的当前PP数,一共4个技能,所以需要4个字节。

相对地址38,长度6字节,精灵努力值

    神奇宝贝百科的描述:

每种能力(HP、攻击、防御、速度、特攻、特防)都有其对应的基础点数,同时每只宝可梦都有它对应的可以获得的基础点数,打倒宝可梦后,对方宝可梦的可获得基础点数会加到己方所有参战宝可梦上(不会进行任何分配)。如果性格对该项能力没有增减,在100级时,每某种能力获得4点基础点数,对应能力值会上升1点,等级降低时对应的换算比例也会下降,但又略有不同,例如在50级时个体值为偶数的宝可梦就是8点基础点数对应1点能力值。

每种能力的基础点数最小为0,最大为255,但是6项基础点数合计不能超过510。

分配基础点数时,如果要某项基础点数全部都是有效的,则它必须是4的整倍数,否则这项基础点数除以4的余数是没有意义的。因此,将某项基础点数加到252的话,就没有再加下去的必要了,并且能实际影响到宝可梦的能力值的基础点数合计值最高为508,剩余的2点没有意义。

    努力值在神奇宝贝百科的官方说法中叫“基础点数”。这6个字节的变量,从前到后依次是HP、攻击、防御、速度、特攻、特防的努力值。例如本期的那只美纳斯:

    第一个字节的fc对应到HP努力值是252,第二个字节是00,第三个字节是04,表示防御努力值是4,第四个字节是00,第五个字节fc对应到特攻的努力值是252,第六个字节是00。(还不清楚这里的第一、第二这种顺序是什么意思的读者,可以在专栏中复习小端序这个概念)

    想要配努力值的读者,可以自己用计算器去换算。

相对地址3E,长度6字节,精灵选美值

    神奇宝贝百科的描述:

光泽会影响宝可梦在宝可梦华丽大赛一次审查和宝可梦超级华丽大赛的外表魅力的评审中获得分数。

一般宝可梦的初始光泽为0,而第三世代中与NPC交换的宝可梦的光泽为10。

当宝可梦吃了一个宝可方块或宝芬时,该宝可方块或宝芬的光滑度会增加宝可梦的光泽,上限为255,一旦增加就不会减少。

    选美值在神奇宝贝百科的官方说法中叫“光泽”。这6个字节的变量,前5个从前到后依次是帅气、美丽、可爱、聪明、强壮的选美值,最后一个字节是饱腹度,表示当前的精灵还能再吃多少能量方块(百科称为“宝可方块”)。能量方块有个口味值,如下图中的21:

能量方块

    当吃过的能量方块口味值加起来超过255时,精灵就不能再吃能量方块了,这里口味值就是加在了第六个字节——饱腹度——这个变量上。

    有关能量方块的详细分析,百度贴吧有大牛总结过(漆黑的魅影吧,“【新年搞事情】能量方块全析”),这里放个链接:https://tieba.baidu.com/p/4964770949

相对地址44,长度1字节,精灵是否携带病毒

神奇宝贝百科的描述:

宝可病毒状态以单字节储存于宝可梦的数据结构中。在十六进制中,其被标示为0xXY,其中首4位X表示宝可梦感染的宝可病毒的种类,末4位Y表示宝可梦被治愈剩余的时间。

正被宝可病毒感染或是已痊愈的宝可梦的X值不为0。若X非0且Y非0,则宝可梦正在被感染。若X非0而Y为0,则宝可梦已痊愈。若X为0且Y为0,则此宝可梦从未感染宝可病毒。X为0而Y非0是不合法的,但如果通过修改数据实现,则这只宝可梦的宝可病毒不会传染,且痊愈后不会免疫。

当游戏内置时钟到达午夜时,所有被感染的同行宝可梦的Y值都会减去1。如果某只宝可梦的Y值减至了0,那么它将会被治愈。

当游戏生成宝可病毒时,分配给宝可梦的Y取决于X,即初始状态的Y=X mod 4+1。其中mod是两数相除得到的余数。也就是说,X的首两位对状态无影响。

    说得很清楚了,作者无需补充。

相对地址45,长度1字节,捕捉精灵的地点

    这个字节对应到捕捉精灵地点的映射表,由于只有1个字节,因此捕捉地点最多只有255种,其中也包括了“命运的邂逅”。以本期的美纳斯为例:

    相对地址45这个位置对应到上面的3a这个字节,它映射到的地区就是对战开拓区。

相对地址46,长度1字节,捕捉精灵时的精灵等级

    这个字节对应的十进制数字就是捕捉精灵时的精灵等级,例如相对地址46这个位置对应到8f643a00的64这个字节,也就是100级。

相对地址47,长度1字节,捕捉精灵用的精灵球

    这个变量就是“球种”,二周目大吾的宅邸中有个博士可以修改精灵球种,就是改的这个变量。它对应到球种的映射表,共有27类球种,对应到27种精灵球(注意这里的映射表和道具里面那些精灵球道具的映射表不一样)。

相对地址48,长度4字节,精灵个体值

    这么说其实不太严谨,这个4字节32位的变量,最高位(第31位)表示的是第一特性还是第二特性,前提是这只精灵是普通特性的,0是第一特性,1是第二特性;次高位(第30位)表示的是这只精灵是不是蛋,0不是蛋,1是蛋。剩下的第0位到第29位表示的才是个体值。

神奇宝贝百科的描述:

个体值是每只宝可梦与生俱来的一个隐藏数值,与其他参数共同决定能力值。目前,每项能力都有对应的个体值,范围为从0至31。在初次见到、收服某只宝可梦或者获得宝可梦的蛋的同时,它的个体值即确定了,就算是进化也不会改变。

在爱好者群体中,通常用32进制(包括0~9和A(10)到V(31))表示第三世代及之后的宝可梦的个体值,并在前面加上此项数值的数目,通常V(31)和U(30)比较常用,T(29)较少用,S(28)及更低的表示数值则基本不会标出。例如,3V2U代表一只宝可梦有三项个体值是31,有两项个体值是30,5V代表一只宝可梦有5项个体值是31。

个体值由2位十六进制数(00~1F,即十进制下的0~31)表示,占用5位字段。

在第三世代中,所有的个体值一起存储在一段32位(4字节)字段中,第一位决定了宝可梦的特性,第二位决定宝可梦是否为蛋的状态(0为否,1为是),接下来的三十位依次决定宝可梦的特防、特攻、速度、防御、攻击、HP的个体值。如果一只宝可梦只有一种特性,那么其对应字段首位就只会是0。

    然后再借用第四期专栏的一张图:

个体值

    这里举一个配置个体值的例子。比如我们想要一个0速5V的个体值,在空间队中使用。假设这只精灵就是第一特性,不是蛋,那我们把这个二进制写开了是这样:

    0 0 11111 11111 00000 11111 11111 11111

    31的二进制就是11111,0的二进制就是00000,按照顺序填好。

    然后在win10程序员计算器中输入这个二进制数:

配置个体值

    它的十六进制数是3FF07FFF,这就是我们想要的4字节变量取值了。

    另外,个体值还决定了觉醒力量这个技能是什么属性的,根据神奇宝贝百科的描述,觉醒力量的属性用如下的公式计算:

觉醒力量属性=Floor[(a+2×b+4×c+8×d+16×e+32×f)×15 / 63]

从a到f为宝可梦的各项个体值的最低有效位。即:如果对应的个体值为奇数,该项为1,否则为0。Floor表示取不超过括号内数值的整数中最大的一个。

a对应HP个体值。b对应攻击个体值。c对应防御个体值。d对应速度个体值。e对应特攻个体值。f对应特防个体值。

对于(a+2×b+4×c+8×d+16×e+32×f),就是将一个二进制数转换为十进制数的过程。这个过程将f~a所代表的值串接起来后得到一个最高六位的二进制数,然后将它转换为十进制。

    具体对应到哪个属性可以查看神奇宝贝百科,也可以看百科上的一个总结图:

觉醒力量属性计算表

相对地址4C,长度4字节,精灵缎带

    究极绿宝石5中,一只精灵最多可以获取25条缎带。其中20条为华丽大赛胜利得到的缎带,普通组、超级组、专家组、大师组这4组和帅气、美丽、可爱、聪明、强壮这5类比赛,4*5=20。剩下的5条缎带为:通关丰缘精灵联盟、努力值达到510(满努力)、打败对战塔50级的大君莉拉、打败对战塔自由级的大君莉拉、被当做模特让画家画像。

25条缎带

    这4个字节的变量,2进制为32位,其中低15位分为5组,一组是3位,5组分别代表帅气、美丽、可爱、聪明、强壮的华丽大赛,3位2进制的含义如下:

    000:未获得缎带;001:普通组缎带;010:超级组缎带;011:专家组缎带;100:大师组缎带

    从第15位到第19位(按最低位是第0位算),每一位代表剩下的缎带获取情况,0是未获得,1是获得。

    因此,满缎带对应的2进制数是:

    0000 0000 0000 11111 100 100 100 100 100

    对应的十六进制数是000FC924。

相对地址50,长度20个字节,面板值

    这里只需要说明一下相对地址是50处对应的单字节变量,表示的是精灵当前的异常状态,包括麻痹、睡眠、中毒、烧伤、冰冻等,其他的如精灵等级、面板上的各种数值都是直接对应到十进制数字。

    为什么这20个字节是面板值呢?用之前几期专栏介绍的方法,我们可以发现电脑中存放的精灵地址是从0202980C开始的,进一步探索可以发现,电脑仓库中的精灵只用了80个字节来描述,缺少的恰好就是这最后的20位面板值变量。这种设计方式只有一个解释,那就是最后的20个字节是可以通过前面的80个字节计算出来的,否则当一只精灵从电脑中拿出来时,它会缺少最后20个字节的信息。

    本期专栏以变量映射表为核心,将涉及到一只精灵的全部变量全都介绍了一遍。这100个字节是一个整体,很多情况下只修改其中一个或者若干个变量都会导致修改出来的精灵是个“四不像”,也就不是根据正常游戏流程可以得到的精灵。回顾一下使用金手指的原则,对于乱改精灵出现坏档的读者们是不是有所启发?

    变量映射表的探索之旅仍未结束,还有更加复杂和高级的用法尚未介绍,留待下期再见!

究极绿宝石5.3——科普向,什么是金手指(七)的评论 (共 条)

分享到微博请遵守国家法律