顯示廣告
隱藏 ✕
※ 本文為 TLdark 轉寄自 ptt.cc 更新時間: 2023-01-17 11:24:25
看板 C_Chat
作者 Append (鴉片)
標題 [心得] RockmanX 1.0 公路詛咒的機制與迴避
時間 Wed May 12 07:46:46 2021


※ [本文轉錄自 Rockman 看板 #1WcnSVdi ]

看板 Rockman
作者 Append (鴉片)
標題 [心得] RockmanX 1.0 公路詛咒的機制與迴避
時間 Wed May 12 07:45:31 2021


## 前言:「公路的詛咒」

  RockmanX的最初版卡帶有一個奇妙的防盜機制,(這應該是防盜機制,有許多記載)

   「豆砲打到沒有辦法造成傷害而反彈的東西,

     玩家就會被拔裝送回序關高速公路。」

  如果對這點沒有印象,首先我們可以看看影片:(注意0:06的位置)
  https://youtu.be/6gWaFwSZ08Q

  七年前我在這個版上發了一篇這個現象的研究。

      #1Ke19UXX (Rockman) [心得] RockmanX初版回溯Bug研究+咒殺八大
[心得] RockmanX初版回溯Bug研究+咒殺八大 - 看板 Rockman - 批踢踢實業坊
[圖]
Append (鴉片) 有影片有真相。推薦跳過序關的部分,從2:15開始看。  ---- RockmanX的日版最初版卡帶有個嚴重的Bug。 "打到堅硬的東西就會把你傳送回高速公路"─許多玩磁片版的玩家的印象可能是這樣。

  那時有了一些模糊的的研究結論,其中最重要的是:

      「玩一玩會發現有時候大補落地就會立刻消失,這時候就會發上述bug」

      「這可以讓我們秒殺boss」(!)

      「只要不拿腳就不會被送回公路,只會被踢出關卡」(!!)

      但其實我對那些結論其實一直很不滿意:那並不是一種機制的描述,我沒辦

  法從中預先知道我這次離開關卡會不會回到公路,因此不太容易在流程規劃把這

  個機制列入考量。七年過去,機緣巧合地重新面對了這個問題,在幾位朋友的幫

  助下終於釐清了這個防盜機制發生的過程,控制他發生與否的條件,以及為什麼

  不同模擬器會有不同結果。


-------------

## 詛咒的機制

      首先要先介紹ROM版本。開頭這個影片中,玩家是用ZSNES模擬器玩美版的Rom

  ,但其實日版美版的初版Rom都有這現象,他們分別會被取以下名字:

      Mega Man X (U) (V1.0) [!]

      Rockman X (J) (V1.0) [!]

  (U)和(J)分別表示美板與日板,V1.0表示初版,而後面的[!]表示這是驗證過的正確

  ROM。根據超任模擬器的大神 byuu (or 他後來改名叫 near) 的描述,這現象當初

  在日版的實機卡帶上有發生,而 Capcom 立刻做了臨時的物理修正──追加了一條

  跳線,並且很快的又重新釋出了完全修正的版本 V1.1。至於當初到底發生了什麼問

  題──這完全值得另外追加一篇介紹,如果我之後有看懂的話,下一篇我們就來講

  這個。




      為了方便在畫面上標示記憶體中的數值,本文以 Bizhawk 2.4 模擬器為例,選

  擇使用Snes9x核心。本段落所列出的記憶體位址以此為基準,其他模擬環境需要另

  外換算。首先要先介紹兩格關鍵的記憶體。


      (1) 「爆炸計數器」:位址"0x001F9D"。是這個防盜機制的核心。
          https://i.imgur.com/B2AlXUJ.png
[圖]
          https://i.imgur.com/5nBc1tv.png
[圖]
          https://i.imgur.com/XqFgaZ9.png
[圖]
          https://i.imgur.com/FoFtel1.png
[圖]

        - 是一個有號位元組(Signed Byte)

            - 可以裝的值的範圍是-128~+127,

            - 遊戲開始的時候這個值是0,
              每打倒一個敵人發生一次爆炸都會加一。

                - 有一些比較大型的敵人可能會爆炸不只一次。

                - 中頭目多半是16次,RT-55J是30次,Boss大多是64次。

                - 超過127之後會溢位(Overflow)回-128。

        - 當他是負值的時候,會發生一些奇怪的現象,
          姑且讓我們將其稱為「詛咒狀態」。

            - 詛咒狀態中,補血落地後只能存在6楨。

                - 很容易觸發,通常透過這個現象來檢查詛咒狀態的發動與否。

                - 但也因為這樣,在詛咒狀態中很難把E罐補滿。

            - 詛咒狀態中,如果使用豆炮打到無法造成傷害而發生反彈的敵人,則

              會強制離開關卡。這是大多數人對這個機制的第一印象,叮的一聲之

              後就回公路了。


                - 如果是還沒取得武器的八大關卡,會進入Weapon Get的結算

                    - 如果在演示動畫中看到變色的X傳送下來示範武器效果的畫面

                      ,系統就會承認你已經拿到這個特殊武器。

                    - 在選關畫面中,boss的生存與否,其實就是檢查你拿到幾個

                      武器;也就是說,當你拿到特殊武器的瞬間,boss就已經死

                      了。


                    - 換句話說,我們可以故意在關卡中觸發豆砲反彈,看到變色

                      的X,然後Boss就會被詛咒身亡。

                - 如果是其他關卡,或已經有這個武器了,則直接進入密碼畫面。

                    - 因此老西城內的 Boss 不能用這個方式跳過。

            - 詛咒狀態中在礦車上無法起跳。

                - 這不太重要,但要小心你可能會被礦車拖下去無底洞。

            - 詛咒狀態中衝刺豆砲會打開「序關旗標」,

              之後用任何方式離開關卡後會回公路

                - 序關旗標會在下一小節更詳細的介紹

      (2) 「序關旗標」:位址"0x001F9B"

            - 是一個位元組。有沒有正負號不太重要,他似乎只有幾種少數的值。

                - 在遊戲開始的時候是0

                - 序關通過的瞬間會變成4

                - 讀檔的時候可能有不同的值,但總之只要序關通過了就不會是0

            - 遊戲在離開關卡之後,

              會依據這個數值決定要把你送去選關畫面還是序關公路。

                - 以序關來說,如果玩家把三條命死光,會看到密碼畫面;

                  然後因為這時候序關旗標是0,系統會把玩家丟回公路的開頭

                - 但如果玩家通過序關,仍然會看到密碼畫面;

                  這時候序關旗標是4,因此系統會把玩家丟去選關畫面。

            - 在前一小節中有提到,在詛咒狀態中使用衝刺豆砲會打開序關旗標

                - 上面這句話就是「詛咒狀態中衝刺豆砲會把這個數值改成0」。

                - 目前沒有在關卡中把這個值改成不是0的方法,


                  所以沒有辦法取消效果。

            - 反過來說,只要確保禁止使用衝刺豆砲,這個數值就不會被改成0,

              玩家就不會被送回公路了。



## 應用方式

      基本上就是在關卡中找到適合叮的東西,然後叮下去;但因為觸發詛咒狀態有

  爆炸次數的限制,所以一但開始叮之後就要減少殺敵數,避免詛咒狀態被取消掉。

  原則上會先打企鵝關拿腳,但是因為衝刺豆砲很危險,所以記得「不要衝動,我是

  說不要衝豆。」有需要的時候盡量用冰特武取代豆砲。


  (1) 咒殺八大快速通關

      姑且拿寫這篇文章之前打的那一輪當範例,但下面的流程有稍微換個順序,讓

  變色龍隱形多發揮一些功用。

  https://youtu.be/k-c1Q_OtkWY

      0. 序關通過順路清怪大概會有90次左右的爆炸。

      1. 企鵝:可以叮的地方是後面的雪屋。

         - 拿到腳部裝備之後可以放心衝刺,但還是要避免衝刺發砲。

         - 原則上如果沿路有清蝙蝠,到冰屋附近應該已經發動詛咒狀態了。

             - 如果還沒,就打幾隻冰屋跑出來的蜻蜓

      2. 鍬形蟲:開場馬上有一隻盾兵可以叮。

      3. 變色龍:用剪刀打RT55J拿身體裝備,


                 然後下方通道的落石機器人變身完成之前可以叮。


         - 有需要的話也是可以用冰特武打個幾隻路上的怪,但盡量節制一點。

      4. 金剛:開場立刻換血拿E罐,

               然後上方的電球槍兵的飛彈可以叮,建議小跳射。

      5. 鐵鷹:開場上去拿愛心,E罐,頭部裝備,

               然後往上爬一點有個小矮兵,踢牆跳射。

         - 如果不想拿頭也可以不拿,不太重要,就是帥
           https://i.imgur.com/NoANoZn.png
[圖]

      6. 大象:前面有拿頭的話這裡可以拿手部,

               然後用冰車墊腳上去拿E,回頭底下拿愛心
         https://i.imgur.com/EY7yDaB.png
[圖]

      7. 犰狳:用衝刺的闖過前半段,變色龍集氣拿E,

               然後追上壓路機背後站好,這時壓路機應該會往下掉一層,

               原地豆砲連打可以打中壓路機往上伸的前輪。

         - 萬一沒追上也不用緊張,更前面一點點還有一階
           https://i.imgur.com/c07sdkQ.png
[圖]

      8. 章魚:用變色龍集氣躲掉關卡,兩隻鯨魚中頭目都用變色龍針刺清掉,

               後面轟炸河底的船的炸彈可以叮。

      9. 進城:還是要非常小心避免衝刺豆砲。

      沿路只有RT55J和兩隻鯨魚是爆炸次數較多的,加起來大約七十次;如果其他盡

  量換血,原則上應該不會湊到128次爆炸,也就是說可以在一輪詛咒狀態之內咒殺完

  八大頭目。對自己有自信的話,E罐可以少拿一點;原則上就是大象E最遠,其他都

  滿好拿的。頭部手部裝備也可以不拿,有身體總是可以換血的,不見得需要倚賴變

  色龍集氣。


(2) 波動拳

      基本上就是上面的流程跑一遍然後每關進去補道具,拿到就EXIT跳出。波動拳

  本身容易夾帶豆砲,所以對有無敵時間的boss(對我就是在說那隻萬惡的蜘蛛)來說

  是滿危險的。




## 模擬器的差異

      前文中有提到,ZSNES 1.51 可以觸發這個現象,但 Snes9x 1.53 不能。我自

  己有滿長的時間都是用SNESGT在玩這個版本,因為ZSNES他的E罐只會補一半。但藉

  著這個機會,剛好來檢查一些常用的模擬器,各自對這個防盜機制的相性如何。


      模擬器                  結果  版本

      ZSNES                   可以  1.51

      SNESGT                  可以

      Snes9x                  不可  1.56.2之前版本,至少到1.40都不可
                              可以  1.57之後版本,為什麼阿XD

      Bizhawk/Snes9x Core     可以  2.0之後版本
                                    很奇妙的2.0~2.6全部都可以,
                                    裡面的Snes9x核心到底是什麼版本?!

      下面一串 byuu 開發的模擬器當然是不會觸發的── byuu 有故意把這修掉。

      bsnes
      higan
      byuu
      Bizhawk/bsnes Core

      除此之外

      Bizhawk/Faust Core      不可

      迷你超任的Retroarch     不可

      迷你超任自帶Canoe       可以

      Wii Virtual Console引擎 可以(!!)

      SD2SNES  嗚嗚我沒有,但看起來不行 ...

               有看過 Speedrunner 之前在研究 1.0(J) 限定的 bug

               他們使用了SD2SNES,但是並沒有觸發

               不過我自己實在沒機會碰到,還是滿想知道準確的情況


      值得注意的是,那些被我標上「不可」的,他們之所以不能觸發,主要是他們

  的爆炸計數器那格的數字不會隨著爆炸上升;相對的,他們的行為是如果有一個正

  值,這會隨著爆炸次數不斷下降,到零就停止。也就是說,如果能夠修改記憶體,

  直接把爆炸計數器改成負值,立刻衝刺豆砲,或是拿豆砲反彈的話──該發生的詛

  咒都會發生。如果是用Snes9x,請注意他的記憶體位址算法和Bizhawk不同,所以記

  憶體位址要改成7E1F9D。




## 練習方式:Bizhawk / Snes9x

      上面的截圖中有顯示當前爆炸計數器與序關旗標兩格記憶體的數值,這其實是

  一個簡單的小型Lua腳本。總之先上連結 https://pastebin.com/aSQF5Krs
RMX1.0 Memory Watch - Pastebin.com
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time. ...

 

  如果有想要拿來練習套路,直接把上面這個lua腳本拿去用 Bizhawk 的 Lua Console

  載入就可以了。
  https://i.imgur.com/mGZHtuR.png
[圖]

      當然,如果你想用snes9x 1.60來進行練習,也可以用陽春一點的方式:

  Search Cheat 有個 RAM Watch 的功能,可以直接用 Load Watches 直接讀取想要監

  控的記憶體數值。總之還是先上連結 https://pastebin.com/Kpw4nTdU
RX_1.0J_watches - Pastebin.com
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time. ...

 

  直接把連結中的文字存檔,然後用 Load Watches 讀取這個文字檔就可以了。
  https://i.imgur.com/hczgi6d.png
[圖]



## 致謝

      在此感謝波紋(ProwainK)與阿痕(ds83171)的協力研究。事實上最關鍵的條件

  「衝刺豆彈」是由波紋在2019年告訴我的:

    「只要用衝刺豆彈擊中敵人 / 物件,就會更容易回到公路的樣子」

      雖然這個敘述不夠準確,但衝刺豆砲是幾年來我從來沒有注意到的切入點;前

  幾天阿痕以這句話為出發點做了幾次嘗試,發現這能夠完全避免被送回公路,於是

  他練習了幾輪之後,順利的在33分鐘完成一輪遊戲。有了阿痕大量測試的樣本,我

  們非常相信這個切入點很可能是對的,於是才有了這整次研究的產生。


      後來經過更多的搜尋,有看到更多文章與影片多少都有提到這件事情,但實在

  是沒看到準確的觸發控制。但如果還有機會,下次我們應該會來弄清楚一些其它人

  提到的,這個防盜機制實際上做了什麼,大家都遇到了什麼效果。




## 下集預告: The Cutting Room Floor 與 near.sh 的相關記載

      我目前找到最接近這個現象的記載是在 The Cutting Room Floor:

      https://tcrf.net/Mega_Man_X#Copy_Protection

      他在防盜機制的小節之內,寫了一些系統判定你玩的是盜版的時候會觸發的一

  些有趣現象,例如會失去所有的裝備、鎖住你的集氣炮、傳送回關卡開頭、吃到1up

  回序關、在128次爆炸之後衝刺豆炮讓你需要回到關卡開頭(!!!)...等等。欸,其實

  這個他已經寫出來了嘛。只是光是這樣寫我當初真沒看懂我們遇到的到底是其中的

  哪些。他同時也提到了 byuu 寫的段落──Capcom如何物理修正了1.0J的卡帶。詳

  細的部分我們下回再來──如果我真的能夠看懂那個電路圖的話 ...




## 給按End的人

    - 當年洛克人X1的初版卡帶的防盜設計,會讓玩家被傳送回公路。

    - 這個版本的ROM可以讓玩家在八大關卡開頭秒殺BOSS。

    - 我們最近研究出了刻意控制讓自己不會被傳回序關的方式,拿來幫助通關。

    - 對於七年前的自己,只能說,年輕人就是年輕人,太衝豆了。

--
 ███◣ ◢██◣ ◢██◣ █  ◢█ ◣    ◢ ◢██◣ ◣    █
 █  ██ █  ██ █  ██ █◢█◤ █◣◢█ █  ██ █◣  █
 █  ██ █  ██ █       ██◤   ████ █  ██ ██◣█ @ ptt.cc
 ███◤ █  ██ █       ██◣   █◥◤█ ████ ████
 █◥█◣ █  ██ █  ██ █◥█◣ █     █  ██ ◥█    鴉片(Append)
   ◥█ ◥██◤ ◥██◤ █  ◥█ █    █ █  ██   ◥twitch.tv/append

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.9.155 (臺灣)
※ 作者: Append 2021-05-12 07:46:46
※ 文章代碼(AID): #1WcnSVdi (Rockman)
※ 文章網址: https://www.ptt.cc/bbs/Rockman/M.1620776735.A.9EC.html

※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: Append (220.133.9.155 臺灣), 05/12/2021 07:46:46
lanjack: 我看了什麼1F 05/12 07:53
dogluckyno1: 推推2F 05/12 07:53
devilkool: 這篇真厲害3F 05/12 07:55
d9123155: 我印象中吃到1UP也會再從高速公路過一次4F 05/12 08:03
slough1003: 專業推5F 05/12 08:09
fragmentwing: 我竟然看完了6F 05/12 08:12
jensheng09: 77F 05/12 08:15
baiweilo: 小時候的回憶 大推8F 05/12 08:18
jidrwm: 今天的考據優文滿多的,給推9F 05/12 08:18
enjoi: 優文。10F 05/12 08:20
m26ageyn: 鴉片先推再看11F 05/12 08:31
apple00: 磁碟片盜版百分百都是這個公路輪迴版本12F 05/12 08:33
x4524: 洛克人專家13F 05/12 08:34
often897: 鴉片神人大大  推14F 05/12 08:35
qsx889: 希克馬:你就永遠迷失在公路裡吧 艾克斯! 拿大頭?!15F 05/12 08:37
uranus013: 小時候好像也有撞到防拷 不過是爬牆扣血的16F 05/12 08:45
NotLikeThis: 推鴉片17F 05/12 08:45
lazarus1121: 小時候有印象,而且打公路的蜜蜂如果火力太強還會讓18F 05/12 08:46
lazarus1121: 他死在斷橋右上,讓人跳不上去完全卡死XD
adolfal007: 推研究20F 05/12 08:46
Append: 吃到1up會回開頭/爬牆扣血確實也都是防盜機制21F 05/12 08:46
Append: 模擬器不太會直接觸發1up回開頭,但爬牆扣血能夠故意辦到
Append: 在城4的垂直往上爬的通道,爬高高然後連打方向鍵讓滑下來
Append: 的速度減慢,重複128次就會開始扣血
Append: 可以檢查記憶體位址0x1F9E,每次打方向鍵都會加一
tony90122001: 推研究26F 05/12 08:52
ConSeR: 跳線修正是怎麼修的?27F 05/12 08:53
ainamk: 人家就說還沒看懂電路圖了?_A_28F 05/12 08:54
Append: 真的還沒看懂,誰看懂了可以教我 https://reurl.cc/1gd0Ep29F 05/12 08:57
Bought this import Rockman: what are these wires!?!? : snes
[圖]
70 votes, 19 comments. I grabbed off eBay from a Japanese seller for very cheap. It looks pretty legit from the outside. Took it apart to clean it … ...

 
asdf70044: 今天優文真多30F 05/12 08:57
Append: 但簡單來說是阻止8M+4M被Remap成16M的過程31F 05/12 08:58
Append: 我有看懂他最後辦到了什麼,但我不知道為什麼這個電路可以
a760981: snes9x新版本也可以觸發到 到底?ww33F 05/12 08:59
w08152266: 推34F 05/12 08:59
b160160: 洛克人分析專家,太神了!35F 05/12 09:07
powerup: 專業文 推36F 05/12 09:07
hit0123: 嗯 這是學術論壇 看到論文也是很合理的37F 05/12 09:07
notneme159: 神人大推 這種細節也能找到38F 05/12 09:12
david7112123: 太神啦!39F 05/12 09:12
epidemic000: 我看了什麼40F 05/12 09:14
hermis: 朝聖41F 05/12 09:14
u07f08: 推鴉片研究,1.0丁又更完整了42F 05/12 09:14
matsurika: 專業43F 05/12 09:20
emulators: 題外話,請問有沒有研究出讓x5的z進入本來無法拿的裝備44F 05/12 09:23
emulators: 膠囊前的方法?
roho: 朝聖46F 05/12 09:23
Append: 金手指改座標直接進去如何?47F 05/12 09:25
a92109210: 優文48F 05/12 09:29
Append: https://youtu.be/z7SkedAT2mo TCRF有Z那兩個膠囊的對話49F 05/12 09:30
zerox1336: 推50F 05/12 09:33
FeiYue: 推研究,剛好有跟到實況51F 05/12 09:40
rickydai888: 專業推52F 05/12 09:47
artismydream: 推論文53F 05/12 09:48
cloud0528: 專業推54F 05/12 09:52
sword10723: 推推55F 05/12 09:54
john841221: 推 話說大大有興趣研究X3 多普拉城2 Boss爆炸skip嗎?56F 05/12 10:01
john841221: 一直很好奇運作原理為何
Append: 我沒聽過,我去找找58F 05/12 10:02
ConSeR: ok,我也看不懂XD59F 05/12 10:02
Teeaa: 看不懂給推60F 05/12 10:08
antinua: 太狂了61F 05/12 10:11
WindSucker: 一級玩家62F 05/12 10:11
Thunderstrok: 巫術王63F 05/12 10:15
RedFF: 佩服這麼認真研究的玩家64F 05/12 10:24
allen20937: 推65F 05/12 10:27
zero871015: 太猛了66F 05/12 10:29
ELDC: 默默看完給推 可以發論文了67F 05/12 10:39
CCNK: 嗯嗯 論文68F 05/12 10:49
justeat: 快推 不然別人以為我看不懂69F 05/12 10:49
Pocer: 給你推  真猛  小時候超討厭回公路bug70F 05/12 10:54
satan1212: 我以為是論文發表71F 05/12 10:57
bobby4755: 推 我小時候載到1.0也有遇過72F 05/12 10:59
k03004748549: 太猛了73F 05/12 11:14
crazy6341556: 太神啦74F 05/12 11:15
karta1897830: 鴉片大真神75F 05/12 11:24
david10ne: 太神了76F 05/12 11:29
abc55322: 神文留名77F 05/12 11:46
zeyoshi: 總之 rts記錄要更新了嗎78F 05/12 11:55
Append: 我想RTA是不會用這個的。79F 05/12 12:10
Append: 這就算要跑應該也會另外開新的分類吧
redhen0857: 馬的太專業惹81F 05/12 12:34
reigon1126: 讓我慢慢消化一下82F 05/12 13:02
xkiller1900: 先推,免得別人以為我看不懂83F 05/12 13:43
donkilu: 看是看得懂 但為什麼這個東西可以防盜板啊84F 05/12 14:11
donkilu: 聽起來比較像是overflow glitch而已

好像滿多人有這問題,看來確實是我沒寫清楚...
這不是"防止盜版的方法",這是"判斷是盜版之後妨害玩家正常遊戲"。
但...很不巧地,總之當時有些實機玩家仍然觸發了這些code。

其實塞一些code防止盜版玩家正常遊戲還滿常見的?
最常見的就是直接跳Anti-Piracy Screen然後卡在那邊。
另外就是我很喜歡的Pokemon BW/BW2 直接不給玩家經驗值。
雖然很不適合新手,但這遊戲沒經驗值超好玩的!

Fantasyweed: 太魔幻了......86F 05/12 14:21
rockmanx52: 就單純只是超Buggy到Capcom要整個程式重寫了4kb87F 05/12 16:00
rockmanx52: 然後那個「用一個jumper修正」完完全全是謠言 那是有
rockmanx52: 個模擬器作者推測 而且從來沒有實際驗證
mfkk3: 我到底看了什麼90F 05/12 17:11
HeterCompute: 太神啦91F 05/12 18:06
NekoArcueid: 推92F 05/12 18:16
r85270607: 看完之後只有  厲害93F 05/12 18:20
※ 編輯: Append (220.133.9.155 臺灣), 05/12/2021 20:04:07
wheateardoll: 推94F 05/12 20:11
greed3819: 推95F 05/13 05:28
※ 編輯: Append (220.133.9.155 臺灣), 05/13/2021 10:41:36

--
※ 看板: ACG 文章推薦值: 0 目前人氣: 0 累積人氣: 132 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇