众所周知,NDS游戏的存档被老任加了密,也就是所谓的校验码,而校验码则是由存档中某些数据通过某个算法来得出的。如果不知道那个算法,也就无从修改存档。当然,在本文中,不会讲怎么破解那个算法,毕竟是比较高深的东西(对于笔者来说),而本文又定为“大众篇”,即是让所有玩家都能修改存档。肯定有人糊涂了,不讲算法却又修改,怎么弄呢?我的方法就是:绕过算法,直接搞定校验码。说白了,就是投机取巧。但是很实用。
先说一下需要准备的工具:一个32位的文档编辑器,本文中使用的是UltraEdit(以下简称UE);一个用于生成IPS文件的软件,本文中使用的是模拟天下论坛的阿一制作的IPS_Pro(以下简称IP);一个用于纪录表格的软件或笔纸,本文中使用EXCEL来纪录;计算器,WINDOWS自带。当然少不了一台NDS,一个烧录设备。
在本人成功修改的二十余个存档中,以CONTACT的存档数据比较复杂,当然复杂只是数据多而已,有耐心的话修改成功是没有问题的。下面就以CONTACK的存档修改为例子。为了统一,以新建的游戏来进行修改。
经过漫长的片头之后,终于能开始游戏了,我们现在的任务就是去存档,一路上都不要战斗。先找博士说完话,然后去存一下盘。存好后退出游戏,将存档放到电脑中,命名为01.SAV,M3用户最好用SAV存档,这样能统一。存好后,再次进入游戏。在读存档之前,先看一下存档01的状态(图01)然后纪录下来。读存档,然后在屋里乱走,使走路技能上升,上升后再次存档,退出游戏。然后重新进入游戏,看一下状态(图02),纪录下来(图03)。将存档放到电脑中,命名为02。
接下来,我们要用IP,如图所示(图04),将01.sav设成原文件,02.sav设成新文件,补丁选项选择“生成IPS文件”,然后点开始生成,保存为01-02.ips文件。接下来我们将IPS文件及2个SAV文件都读入UE中。
首先我们来看一下01存档和02存档,在上面来回切换就会发现,有几个地方数据变化了,将这些变化的数据纪录下来。(图05)。现在我们来用表格和IPS文件对照看(图06)。发现了么?这些我标示出来的不就是刚才我们从01、02存档中看到的变化的数么?最前面先是地址,然后的数是代表这个地址上放的数据的长度,因为2C和30地址上的数据都是占1位的,所以是01;而34地址上的数占了2位,所以是02。由此发现,IPS文件里,地址整个是占4位(包括后面的3个00),长度也是4位(包括后面的3个00),而数据则按照长度来定位长。用IPS文件的好处就是我们把整个存档都看全,只要找一下2个存档之间的不同就可以了。好了,现在我们就以IPS文件来完善表格。有人会问,那我们怎么知道01存档中原来的数据是什么?有2个方法:1是由于我们有了变化的地址,只要在1中找到地址,就可以找到数据了;2是既然我们能做从01到02变化的IPS文件,怎么不能做个从02到01变化的呢?两种方法都可以~本人推荐使用第2种,对照着看统计比较简单。对了还忘了说一句,在IPS文件中,地址如果是2位以上的时候,到SAV文件中是反着的,比如IPS文件中的C439地址,在SAV文件中应该是39C4地址。
统计好后(图07),会发现到地址CE54后,会重复从2C开始的数。所以我们只要统计到6720地址就OK了。统计干什么用呢?一会就知道了~接着,我们把NDS的系统时间调到和存档02的时间一样。然后迅速进入游戏,读档,存档。以上一定要在1分钟内完成。然后退出游戏重新进入,看到“时间”如果和存档02的一样就成功了(图08)。把这个存档存入电脑,存为03。然后做一个02-03的IPS文件,在UE中打开,你会发现,只有几行而已(图09)。将其加入到统计表中(图10),其中无变化的我就没写。只有3个数发生了变化,让我们来想想有可能什么数发生变化:首先是现实时间,年月日小时分钟都一样没变,唯一变化的可能就是秒;游戏进行时间,因为比存档02游戏时间要长,所以游戏进行时间肯定要变大。其他的呢?移动技能在如此短时间内应该不会变,其他的我们也都没动。这样就可以肯定,30地址是秒,而34地址的,就是游戏进行时间。有人也许不信,那咱们可以实验,首先30地址数据绝不会大于3C,也就是60。其次,34地址,我们可以来看看这个数:847F。之前我也说过,这些数据排的都是反着的,也就是说这个数实际上应该是:7F84。可7F84又是什么呢?我们来把这个数换成10进制的:32644,这是什么数?别急,接下来我们把这个数除以3600,得9点多。9点多是什么?看一下之前存档图。哦!原来就是游戏进行时间,9分钟。不妨在试试之前的2个数,会发现都是8点多,也就是8分钟。什么?还不信?那就在游戏中等待一分钟,然后看看时间是不是变成10点多了。当然这些小的规律会在你多次修改中慢慢的发现的。可6720地址是什么?也许有人会问:NDS存档不是有校验码么,它去哪了?没错!6720地址就是校验码。
接下来就是重头戏了,有了之前那么多数据的铺垫,如何绕过算法直接搞定校验码呢?我们再次来看刚才统计表,将存档02和03的3个有变化的数分别相加,如果有2位以上的数据要拆成1位来算。存档02:2C+B5+7D+75=1D3;存档03:27+84+7F+A9=1D3。怎么样?有点修改的眉目了么?没错,既然他的和是一样的,我们何不增大其中一个数的同时减小另一个数,保持和不变不就可以了么?不多说,来做个实验。
以下由于涉及改数据,所以请在改之前备份,不再特别提醒。
将存档3中的游戏进行时间34地址,改为F013。同时别忘记了,刚才统计的时候我们将下面重复的暂时没理它,可改数据的时候一定要将它一起改,否则就会出错哦。下面的地址是CE5C,也该成F013。按照刚才的方法算一下,居然是1分钟。为什么要改1分钟呢?因为1分钟是根本不可能存档的。可能成功么?将改后的存档导入到烧录卡中,进游戏看看。(图11)
怎么样?是不是觉得自己小有所成了呢?这还只是初步。现在我们来改改人物的技能。还记得01和02存档有什么区别么?没错,就是走路技能升了一级。让我们回过头来看那个表格。(图12)此表格中唯一变大1的数,就是我用红框框起来的。6变7。通过观察存档后我们发现,这个数就是走路技能的等级。后面的12和02是什么呢?应该就是走路技能的经验了,这个我们不用理它。现在我们继续在存档3上修改。我们要将这个技能改为99级。
既然加上了2个数,我们就要将总和扩大,由原来的1D3扩大为1E1(加两个7)。同时我们再把秒的值减去,因为这个数最大就到3C,对于我们来增加其他的数意义不大。这样,我们就是:游戏进行时间+技能等级*2+校验码=1BA。2个技能等级分别改为63后,1BA-63*2=F4。接下来只要保证游戏进行时间和校验码的和为F4就行了。我把游戏进行时间就改为007F,校验码就是75。再次提醒,别忘了下面地址的。这里有个技巧就是,找不到下面技能地址时,用CE54-2C+上面的技能地址就找到了。一共要改8个数。改好后导入,进游戏中,看看(图13)至于后面那个经验为什么会变100,是因为到99级就满了,所以100只是个象征的数,告诉你不能再升级了。还想改?自己来吧!存档里的数都给你了,就看你自己能不能发现了。方法和上面都是一样的!
有人会问:这不很简单么?怎么复杂了?这只是游戏开始的数据,到后面,有了道具,有了钱,数据会变的非常的多、非常的混乱。而我当时在研究这游戏的时候恰恰就是在那时候研究的……总之,要修改是一定要有耐心的。切忌不要为了一点小的挫折而放弃,有恒心的话一定能修改成功的。
小总结:这种找和的方法,不知道是不是我最早发现的……因为毕竟不是破解算法,所以我的实力还远远比不上那些做动物之森、任天狗修改器的人,但是我希望借此抛砖引玉,来帮助一些编程高手,解决NDS存档的校验码问题,而不拘泥于算法。同时,这种存档修改法有一个局限性,就是必须要能随时存档,这样才能很好的找到数据的变化。像〈失落的魔法〉那种一关存一次档的,用这种方法就不好改了。
最后一句,预祝大家都能改成功
先下一个对应游戏存档,然后放入SAVES里就行了
下载修档器 或金手指