看板 Rockman 關於我們 聯絡資訊
雖然昨天貼了一個很奇妙地把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
gn00191470: 推分析 開眼界了 07/18 16:48
RuinAngel: 這看起來可以大幅短縮 SR 或是開出一個新項目啊 07/18 18:27
Append: 其實8BitisGr8那個我覺得就已經是大幅縮短了 07/18 18:30
Append: 但我不知道除了他以外有沒有其他人想拿這個開新項目 07/18 18:30
Append: 原理上 下面那篇的密碼跟他用的幾乎是同樣規則 07/18 18:30
Append: 應該可以看成同一個項目 07/18 18:30
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
chjimmy: 太專業了,完全沒想過去拆解密碼 07/23 17:41
Append: 拆解密碼其實都有現成的 我也都是讀人家拆的結果 07/23 20:40