作者Append (鸦片)
看板Rockman
标题[心得] RockmanX3 存档继承 / 错误密码继承
时间Sun Jul 18 16:22:57 2021
虽然昨天贴了一个很奇妙地把Boss变不见的影片,
其实我只是想要研究一些存档继承的细节...
所以我们还是从存档继承开始。
-----------
(0) 前情提要:FF/BB/VAVA的生存状态
FF/BB/VAVA 是这个游戏的三个特殊头目,
他们有特别的弱点武器,
如果最後一击用弱点武器命中,他们会交代遗言之後爆炸;
如果最後一击用的是其他武器,他们会逃走而存活。
FF/BB 如果有至少一只存活,
就会在多普拉城第一关终点下方Boss房间,
以合体兽的形式出现;
如果两只都被击杀,
多普拉城第一关就会在终点上方的Boss房间出现垃圾压缩机。
从这里的叙述可以看的出来,他们至少有三种状态;
"还没打过" /
"逃走存活" /
"爆炸击杀"
这三个头目的击败/击杀其实总共只用了一个byte来描述。
在PS版这个位址是
0x0D811B,
SFC版这个位址是
0x7E1FD8。SS和PC我没有测试。
------------
(1) PS/SS/PC版的「存档继承」
https://youtu.be/yFBsirEOdIg
PS/SS/PC版的X3有存档的系统。
在密码画面按下Select / Mode / X,可以进入读取/写入存档的画面。
(为了写这篇找不少人讨论过,意外发现非常多人不知道有这个存档介面...)
能够用记忆卡存档真的是方便不少,不用抄密码就是方便。
但...这东西有个很奇妙的bug。
在标题画面读取存档的时候,
如果我们一边检查前面提到的「三个特殊头目的击败/击杀状态的记忆体位址」,
这时就会发现──
在读取存档之前,只要你「看到这个存档」,
不用真的读取他,这三个特殊头目的生存状态就已经读进记忆体中了。
即使你後来选择取消,这些三个特殊头目的生存状态也会留着。
换句话说,如果我先准备好一个已经打倒FF/BB/VAVA的存档,
在标题画面选择读取存档,偷看一眼这个存档,然後取消,
回去标题画面开始一轮新游戏──
这一轮FF/BB/VAVA的状态就会一直是已经被打倒的状态。
打完两只BOSS的过场动画还是会出来,
但FF/BB不会在关卡中乱入,VAVA关卡的传送点不会出现,
多普拉城第一关的Boss会是垃圾压缩机,
第二关的地形也会是完好的没有受到VAVA破坏,可以直接去拿刀。
这个bug只要有真正的存档功能都能够使用,
因此PS/SS/PC版都能用,
但...传奇合辑骨子里其实是个SFC版,
他的存档是帮你打上密码按确认,
所以没有办法这样继承。
後记: GC/PS2的合辑也不能用存档继承──他的存档介面很不一样。
--------
(2) 全版本通用的「错误密码继承」
https://youtu.be/03NUZDTnZkw
SFC版没有存档系统,那SFC版有办法做出类似的继承状态吗?
答案是...可以!
但我们需要一些关於密码表的知识。
先上连结。MMHP 有许多RM游戏的密码产生器,
其中X3的产生器在这
http://www.mmhp.net/Passwords/MMX3/
原则上想要什麽游戏进度,几乎都能够用这个存档产生器做出来 (虽然有点小bug...)
里面也有提供产生器背後的规则整理
http://www.mmhp.net/Passwords/PassCrackX3.html
这个游戏的进程完全记录在4x4的密码表中,
而他们每格数字有1~8的选择,能够纪录三个True/False的值。
那麽...仔细看一下密码表的规则会发现,
「好像有三个位置只决定了两件事情?」
是,密码产生器其实并没有写完这些部分 - 多半是因为对大部分玩家来说这不太重要。
我们比较一下密码产生器中的初始密码(左,序关结束的密码)
还有不幸在序关死光的密码 (右)
7741 7741
52
31 52
71
3441 3441
248
6 248
8
可以看到序关打完之後,
标上黄色的那一格从7->3,
浅蓝色那格从8->6。
在密码产生器的规则中可以看到,
浅蓝色那格决定了三件事情──包含一个奇偶数检查。
黄色那一格只决定了头部晶片和老虎击杀两件事情,
而没有提到7和3的差别。
很明显的,从7->3表示「序关打完了」──这非常明显是一个密码必须记录的事情。
但,如果「序关还没打完」就想要拿装备或打倒其他Boss,会发生什麽事呢?
依照密码产生器描述的规则,
我们可以尝试看看制作一个序关还没打完,
但是
VAVA已经被写在死亡笔记本上心脏麻痹而死的密码;
如果这个密码成立,我们就可以直接不管VAVA进城去拿光刀。
他应该会是
2741
5271
3441
2
688
按下去...显示 PASS WORD ERROR,看起来没有通过。
这很合理,如果你序关没有打完,你根本不应该有任何其他的游戏进程,
所以系统完全不让你有其他选项,直接给ERROR,看起来没有成功,但...
如果这个时间一边偷看记忆体,就会发现──虽然给了ERROR,
但是VAVA的生存状态已经被标上了「击败」+「击杀」。
是的,这样就已经继承好了!
所以只要这时候退出密码画面,按下START,热血开打直接进城,
就可以把Zero送去喂蚊子拿刀了。
这就是所谓的「错误密码继承」──刻意制作一个矛盾的密码,
符合系统的奇偶数检查规则,但是因为矛盾而被系统拒绝;
在这个过程中标记好这三个特殊头目生存状态,然後开始新的一轮游戏。
8BitisGr8 有利用这个bug来进行 X3 Any% Glitched "Save Glitch" Speedrun,
目前的通关纪录是17分46秒 (2015)
https://youtu.be/_B8py34x0TM
我不知道後来有没有再继续刷这个。
他里面使用的密码是怎麽构造出来的我其实不太清楚,
但原理应该和我上面构造的方式是一致的。
------
(3) 後记:8BitisGr8 使用的错误密码解析
他使用了 8763 8266 8758 1655
但...我看不出来这原本应该是什麽密码,至少它不是密码表上的。
虽然密码表规则上有说,X3其实有四组密码表,他只有列出其中一组的规则,
但其实每个位置存着什麽开关这件事情是固定的,只有对应的数字不同。
研究了两天这个密码之後突然想起,
原本只有想到序关进程可以产生错误密码,但...其实光刀也可以啊!
光刀必须要八大头目都打完才能存在,如果冲突的话就会跳Error成为错误密码。
事实上PS版不能同时使用两个以上的晶片,
所以对於需要跳关的Speedrun玩家来说也可以直接用晶片去构造出来。
但...既然SFC可以,所以我只需要用SFC版检查序关/光刀这两格。
我先穷举了序关发现没有效果,我想应该不是序关的问题;
那问题就是光刀了。
把光刀那格穷举1~8,发现把第二排第一格的8改成1,
赫然成为一个合法密码。
嗯,看看状态,
打了犀牛、水牛、老虎,干掉了VAVA,拿了脚装、犀牛老虎2E和老虎爱心,Zero已死
重复进入跳出关卡把同状态的四种密码都刷出来,
然後跟MMHP密码产生器的对照──完全一致!
也就是说,他很可能就是这样打了一轮,打了三只BOSS之後去干掉了VAVA,
顺路捡了脚装和2E1心,还让Zero去送死,然後拿到密码,
开始穷举光刀那一格看有没有影响,顶多尝试7次就可以凑出来了...
...不过既然只要改一格,说不定一开始根本就是打错密码?
or 他说不定也是一开始就看着记忆体发现有这回事...
嗯,猜不出来是不是他自己想到/刻意制作的,
但总之终於解开他用的密码的状态了。
--
███◣ ◢██◣ ◢██◣ █ ◢█ ◣ ◢ ◢██◣ ◣ █
█ ██ █ ██ █ ██ █◢█◤ █◣◢█ █ ██ █◣ █
█ ██ █ ██ █ ██◤ ████ █ ██ ██◣█ @ ptt.cc
███◤ █ ██ █ ██◣ █◥◤█ ████ ████
█◥█◣ █ ██ █ ██ █◥█◣ █ █ █ ██ █◥██ 鸦片(Append)
█ ◥█ ◥██◤ ◥██◤ █ ◥█ █ █ █ ██ █ ◥█twitch.tv/append
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.133.9.155 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Rockman/M.1626596580.A.4C1.html
1F:推 gn00191470: 推分析 开眼界了 07/18 16:48
2F:推 RuinAngel: 这看起来可以大幅短缩 SR 或是开出一个新项目啊 07/18 18:27
3F:→ Append: 其实8BitisGr8那个我觉得就已经是大幅缩短了 07/18 18:30
4F:→ Append: 但我不知道除了他以外有没有其他人想拿这个开新项目 07/18 18:30
5F:→ Append: 原理上 下面那篇的密码跟他用的几乎是同样规则 07/18 18:30
6F:→ Append: 应该可以看成同一个项目 07/18 18:30
7F:推 zeldaaice: 推 07/19 11:45
※ 编辑: Append (220.133.9.155 台湾), 07/19/2021 20:19:23
※ 编辑: Append (220.133.9.155 台湾), 07/19/2021 20:19:43
※ 编辑: Append (220.133.9.155 台湾), 07/21/2021 01:05:18
8F:推 chjimmy: 太专业了,完全没想过去拆解密码 07/23 17:41
9F:→ Append: 拆解密码其实都有现成的 我也都是读人家拆的结果 07/23 20:40