[心得] RockmanX3 存檔繼承 / 錯誤密碼繼承
雖然昨天貼了一個很奇妙地把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
5231 5271
3441 3441
2486 2488
可以看到序關打完之後,
標上黃色的那一格從7->3,
淺藍色那格從8->6。
在密碼產生器的規則中可以看到,
淺藍色那格決定了三件事情──包含一個奇偶數檢查。
黃色那一格只決定了頭部晶片和老虎擊殺兩件事情,
而沒有提到7和3的差別。
很明顯的,從7->3表示「序關打完了」──這非常明顯是一個密碼必須記錄的事情。
但,如果「序關還沒打完」就想要拿裝備或打倒其他Boss,會發生什麼事呢?
依照密碼產生器描述的規則,
我們可以嘗試看看製作一個序關還沒打完,
但是VAVA已經被寫在死亡筆記本上心臟麻痺而死的密碼;
如果這個密碼成立,我們就可以直接不管VAVA進城去拿光刀。
他應該會是
2741
5271
3441
2688
按下去...顯示 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://www.ptt.cc/bbs/Rockman/M.1626596580.A.4C1.html
推
07/18 16:48,
3年前
, 1F
07/18 16:48, 1F
推
07/18 18:27,
3年前
, 2F
07/18 18:27, 2F
→
07/18 18:30,
3年前
, 3F
07/18 18:30, 3F
→
07/18 18:30,
3年前
, 4F
07/18 18:30, 4F
→
07/18 18:30,
3年前
, 5F
07/18 18:30, 5F
→
07/18 18:30,
3年前
, 6F
07/18 18:30, 6F
推
07/19 11:45,
3年前
, 7F
07/19 11:45, 7F
※ 編輯: 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
推
07/23 17:41, , 8F
07/23 17:41, 8F
→
07/23 20:40, , 9F
07/23 20:40, 9F
Rockman 近期熱門文章
PTT遊戲區 即時熱門文章
32
95