Terminology

什麼是任意程式碼執行 (ACE),它如何影響快速執行?

  • February 6, 2020

在過去幾週左右的時間裡,《薩爾達傳說:時之笛》創造了很多記錄。很多這些記錄都說“ACE”是造成這種情況的原因。我讀過“ACE”代表任意程式碼執行,但為什麼 ACE 現在突然創造了令人難以置信的記錄?

從我讀過的一篇文章中,ACE 可以描述為…

這意味著遊戲可以強制載入和執行保存文件名,就好像它是遊戲程式碼一樣——因此使用遊戲程式碼的保存文件名可以訪問遊戲開發和測試遺留下來的部分。

所以基本上在一系列遊戲內輸入中,您可以使用文件名來執行一些遺留的開發程式碼?

任意程式碼執行 (ACE) 是一種故障,它允許玩家使指令指針跳轉到玩家可以寫入的記憶體部分(例如文件名、某些演員的角度和位置、控制器輸入、 ETC)。當指令指針進入這部分記憶體時,它會將這部分記憶體作為程式碼執行。

換句話說,它允許玩家使用正常輸入編寫“程式碼”並在遊戲中執行它。

最明顯的快速執行應用程序是編寫和執行告訴遊戲執行結束積分的程式碼,正如我們在 OoT any% speedrun 中看到的那樣,但這肯定不是唯一的;在《時之笛 100% No Source Requirement》中,ACE 幾乎被用來給 Link 每一件物品。ACE 通常只允許在 any% 類別中,這確實限制了規則允許的應用程序。

Ocarina of Time 並不是唯一一款使用 ACE 的遊戲。例如,《超級瑪利歐世界》在其any% speedrun 中也使用了 ACE,使用精靈座標數據編寫程式碼來執行最終字幕(通常稱為“credits warp”)。它也可以用來編寫和執行整個遊戲


這不應與其他記憶體操作故障相混淆。例如,超級瑪利歐世界的Cloud Glitch濫用了 Bowser 的“距離下一個戰鬥週期的剩餘時間”計時器和雲的 x 座標共享一個寄存器的事實,因為它們從未打算一起出現在同一個房間裡。由於指令指針保持在正常範圍內,因此即使您通過濫用此共享記憶體來操縱遊戲的行為,您也不會在此處執行任何程式碼。

引用自:https://gaming.stackexchange.com/questions/363590