zh:guide:febuildergba:3点diff错误的自动检测_zh

通过3点DIFF自动检测错误

i.imgur.com_pgypmy7.jpg

它是一种工具,当ROM中出现无法解决的错误时,通过使用备份数据自动检测导致错误的数据。

假设你的ROM中有一个未知的错误。
这个错误是一个很难修复的错误,比如多次检查设置,但是为什么游戏结冰并且根本不工作。
FEBuilderGBA使用各种手段来保护ROM,但仍然不能没有发生。
此功能是通过将备份数据带入DIFF来自动检测错误的原因。

没有Jenkins

FE是SRPG.从一开始就需要时间来玩。
如果你在中间阶段进入舞台,你会忽略早期阶段的测试。
当你在中间阶段建立舞台时,即使你摧毁了早期的场地,你也不会注意到它。
不幸的是,对于GBAFE来说,还没有像CI Jenkins那样的东西。
通常情况下,您会在一段时间后发现游戏中的错误,但不会注意到它已被破坏。

进入到模拟器中重现错误

[#k1030f7f]

i.imgur.com_pgypmy7.jpg
首先,用模拟器推进游戏,直到错误再现。
当错误出现在它重现的地方时,这个工具就会出现。
(在启动此工具之前,请保存所有未写入的数据)

启动差异调试工具

i.imgur.com_e6hntl2.jpg
从菜单中选择工具 →差异调试工具。


屏幕说明

i.imgur.com_2qhvuml.jpg
当您启动该工具时,备份数据按日期顺序显示。

列表上方的数据是新的,数据越多,数据越旧。
双击列表,模拟器将自动启动。
7z压缩和ups等自动更改为gba rom并启动模拟器。

寻找“最后工作的ROM”

从备份列表中查找“没有错误的最新日期”。

我会尝试

这次是测试,所以我们只有三个数据。
我认为有很多数据实际排列在一起。

i.imgur.com_eftrkm6.jpg
首先,让我们看看列表底部最旧的备份。

双击列表中的项目以启动模拟器。

i.imgur.com_vlwgwt0.jpg
它正常工作。
这似乎是正确的数据。
关闭模拟器并查看下一个数据。

i.imgur.com_xbupwzz.jpg
让我们看看中间的数据。
同样,双击列表中的项目来启动模拟器。

i.imgur.com_cb9xbce.jpg
这也正常工作。
这似乎是正确的数据。

i.imgur.com_i307ypf.jpg
那么,如何在列表顶部的备份?
双击列表中的项目以启动模拟器。

i.imgur.com_jwfndwg.jpg
一个错误已被复制。
这个数据似乎被打破了。

i.imgur.com_ktdh4iy.jpg
那么,哪些是可以正常工作的最新备份数据?
这是中间数据。

顶部的最新备份数据被破坏。
因此,正确运行的最后一个数据是第二个数据。

请注意不要在这里犯错。
我正在寻找可正常工作的最新备份数据,而不是损坏的数据。
当然,这不是底部。
底部正常工作,但它不是最新的数据工作正常。

正确运行的最新数据是第二个数据。
这是重要的一点。

i.imgur.com_thtzvji.jpg
当您找到可正常工作的最新数据时,按下右下方的按钮可获得3点DIFF。

关于正确工作的最新数据的重要性。

正确工作的最新数据非常重要。

请务必查找“不会导致错误的最新日期备份”。

不会导致错误的最新备份的下一代备份数据是。

这是导致错误的最旧的备份数据。

换句话说,两者之间的区别在于生成错误的数据。

该程序并不完全符合您的想法,它只能以书面形式运行。
发生错误是因为我们错误地写了一些东西。
因此,错误总是隐藏在两个ROM之间的差异中。

罪魁祸首当然是在这个区别。让我们找出来。

但是,如果您进行各种更改,则会有更多更改。
那么,很难找出答案。
因此,我们通过考虑与当前ROM数据的差异来缩小范围。

因为错误也出现在当前的ROM中。
当前ROM中类似的错误也意味着当前ROM中有类似的数据。

在它们之间的差异中,当前ROM中的数据是导致错误的数据。

随着名字变长,我们使用这个工具来调用它,如下所示。
最新的不会导致错误的备份称为OK ROM。
导致错误的最老的备份称为NG ROM。
当前的ROM被称为CURRENT。

它在OK ROM中,不在NG ROM中。
它在OK ROM中,它不在CURRENT中。
此外,它存在于NG ROM和CURRENT中。

我们将使用三点DIFF来满足这三个条件的数据。
按按钮。

比较方法选择

i.imgur.com_hnuzcyl.jpg
比较方法会出来,但选择最上面的方法。
(这是前面解释的条件)

然后计算完成,并在列表中显示3点DIFF的结果。


i.imgur.com_uxgb3ma.jpg

有数据导致此错误。
让我们来找出答案。
(这次只有一个)

让我们适当调整列出的差异。
按1键写入OK ROM的数据。
按2键写入NG ROM的数据。
按3键写入CURRENT的数据。
按0键写入CURRENT的数据并清除写入标记。

i.imgur.com_hu9xd8i.jpg
基本上,请按1键写入数据。
写入数据后,请按F5键启动模拟器。
请检查操作。
该错误是否已解决?

如果这个错误还没有解决,看起来这个数据不是。
我们来写下面的数据。

当然,由于差分数据被强制写入,所以游戏可能不起作用。
在这种情况下,按3键恢复CURRENT数据。

让我们像这样合并差异。~
i.imgur.com_dzmh9nf.jpg

如果错误得到解决,那就是造成错误的数据。
我们从数据地址和书面内容估计原因。

当您找到解决该错误的地址时,似乎除了该数据以外的数据是无关的,所以让我们按3键返回CURRENT。
同样在这个时候,我会检查错误是否会在返回数据时再次发生。
也许,肇事者可能不是一个人,而是多个肇事者。 让我们小心。


那么通过合并数据,问题就解决了。
如果通过合并差异来解决问题,那很好。
如果是这样,让我们来调查数据写入地址的内容。
我们设置一个中断点,并使用调试器观察行为。
奇怪的东西应该在那里。

这一次,我在地图设置中指定了错误的地图对象。
最初我必须指定0x01,但由于指定了0x02,因此屏幕被破坏。
i.imgur.com_rxfjou8.jpg


使用这种方法,我们可以在一个小时左右修复神秘的错误。
无论如何,如果你得到一个你不知道原因的错误,你可能想要以这种方式探索错误数据。

辅助功能

i.imgur.com_uxgb3ma.jpg
如果您正在合并数据并且您不理解,请按下右下方的按钮。
“取消所有更改”。
在开始合并之前将所有数据覆盖到数据。
有了这个,你可以一次又一次地合并。

让我们放松一下,因为您习惯使用该工具。
如果有大量数据,请按住SHIFT键并按1键。
它通过写入数据自动将焦点移动到下一个数据。
一直按住键,文字越来越多。
在大约一半的合并之后执行诸如二进制搜索来检查操作可能是好的。

基本的想法

此功能通过二进制比较简化了错误修复,这是我很久以前写的。
使用二进制比较工具合并两点是很麻烦的,因此可以轻松地与3点合并进行合并,从而缩小这些改变。

http://ngmansion.xyz/wiki/hackfe/index.php?cmd=read&page=%E8%A7%A3%E8%AA%AC%2F%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E6%AF%94%E8%BC%83%E3%81%A7%E3%83%90%E3%82%B0%E4%BF%AE%E6%AD%A3

zh/guide/febuildergba/3点diff错误的自动检测_zh.txt · 最終更新: 2018/09/23 19:09 by 211.14.62.193