最近,通过远程控制虚拟机的方式,洛克人 EXE 5 DS 等不支持使用 Wi-Fi 对战的游戏也可以进行初步的远程游玩了。在 EXE 4 和 EXE 5 中,组建构筑最复杂的部分即为 ABD 芯片夹的编辑。
自动战斗数据(Auto Battle Data,简称 ABD),也被称为黑暗魂(Dark Soul),是在洛克人 EXE 4 和 EXE 5 两作里拥有的,由 AI 控制的,以玩家的芯片使用习惯来组建其特有芯片夹的系统。在对战中,它的主要作用是使玩家在一段时间内保持无敌,并在此期间自动使用出玩家最常用的若干张芯片。
在 GBA 原版中,经过“训练”的 ABD 非常破坏平衡;在 DS 版中,ABD 被大幅削弱,但这不代表编辑 ABD 是没有意义的。想要修改 GBA 版本的 ABD,我们有现成的软件,直接修改存档即可;但想要修改 DS 版本的 ABD,又该如何操作呢?
最初,我试图通过分析存档文件,直接修改存档的 ABD 芯片夹,但是存档文件过于复杂,难以找到想要修改的地址,因此行不通;
随后,我想要通过修改芯片的使用数量来修改卡片夹,但是修改芯片使用数量后,并没有发现 ABD 使用的芯片有很大的变化;
查阅资料,简单的得知了在 DS 版本中的 ABD 卡片夹原理:
在 5 DS 中,ABD 使用的芯片频度并非由芯片的使用数量决定,而是按芯片的 内部编号顺序 决定。在不考虑某些特殊芯片下,编号越小,ABD 使用该芯片则越频繁。
这样的话,设 ABD 的芯片夹所在的相邻地址
M
,
N
,
P
M, N, P
M,N,P 存有编号分别为
x
,
y
,
z
(
x
<
y
<
z
)
x, y, z (x < y < z)
x,y,z(x<y<z) 的芯片(假设 ABD 只记录这三张芯片),这时若再使用一张编号为
w
(
x
<
w
<
y
)
w (x < w < y)
w(x<w<y) 的芯片,那么这三个地址对应的芯片编号应该为
x
,
w
,
y
x, w, y
x,w,y。这样,我们就有了寻找 ABD 芯片夹的思路:先使用一张完全没有用过的芯片,再检查哪个地址对应的值发生了后移,后移的值所对应的地址即为我们要找的地址。
这里我们以芯片 嫉妒
为例,因为一般在单机中几乎是不可能用到这张芯片的。查表得知它的编号为 00D4
。
我们加载一个完美存档。通过测试得知,这个存档使用的 Mega 芯片有 正义拳击
(00D8
)、Z 光剑
(00DA
)、超级火神炮
(00DC
)、萝露 SP
(00DE
)。我们假设在这个存档中只有这四张 Mega 芯片被记录,如果使用了 嫉妒
,那么它会顶替掉 正义拳击
的位置;相应的,原来的值也会后移一位。
通过内存搜索,我们最终找到了使用的芯片 嫉妒
所在的地址 121633A2
;查看邻近的内存,我们可以推测,这非常有可能是 ABD 的芯片夹地址。
我们把前两张 Mega 芯片换为 梦幻辉光
与 圣域
,随后再进行测试,我们发现 ABD 确实开始使用这两张芯片,说明这就是我们需要的地址。
进一步查看发现,开始新游戏后,ABD 芯片夹的地址的值均变为 FFFF
,说明对于留空的芯片夹,它的值会被填充为 FFFF
。
ABD 存储 Std 芯片、Mega 芯片与 Giga 芯片的地址是相邻的,但是记录 PA 的位置却很不寻常。对于这之间的 800x
值的作用,尚且待读者进一步探索。
现在,我们可以直接输出金手指了:
// S 芯片
12163372 0000XXXX
12163374 0000XXXX
12163376 0000XXXX
12163378 0000XXXX
1216337A 0000YYYY
1216337C 0000YYYY
1216337E 0000YYYY
12163380 0000YYYY
12163382 0000ZZZZ
12163384 0000ZZZZ
12163386 0000WWWW
12163388 0000WWWW
1216338A 0000HHHH
1216338C 0000JJJJ
1216338E 0000KKKK
12163390 0000LLLL
12163392 0000MMMM
12163394 0000NNNN
12163396 0000PPPP
12163398 0000QQQQ
1216339A 0000RRRR
1216339C 0000SSSS
1216339E 0000TTTT
121633A0 0000UUUU
// M 芯片
121633A2 0000MEG1
121633A4 0000MEG2
121633A6 0000MEG3
121633A8 0000MEG4
121633AA 0000MEG5
// G 芯片
121633AC 0000GIGA
// PA
121633BE 0000PRAD
使用金手指组建构筑时,注意不要违反对战规则。