2017 年 1 月,在維吉尼亞州赫恩登舉行的 Awesome Games Done Quick 上,TASBot——工具輔助競速機器人——看似在一台原廠 Super NES 上遊玩《Super Mario 64》與 Valve 的《Portal》,接著還透過主機轉接了一場現場 Skype 通話。機器內部完全沒有被改動:一切都以按鍵輸入的形式、每秒數千次,經由控制器埠送達,當時約有 20 萬人在 Twitch 上觀看。

這個方法稱為「完全控制」:利用《Super Mario Bros. 3》與《Mega Man》等遊戲中已知的程式錯誤,以緩衝區溢位進入記憶體,再啟動一個載入器,把控制器輸入串流當成原始組合語言運算碼來讀取。數個月前,團隊組織者 Allan Cecil(dwangoAC)已在中國的 Geekpwn 大會上展示過透過 NES 音效晶片串流高品質音訊;NES Classic 的輸入裝置則由 Peter Greenwood(micro500)打造。

這場演示從未聲稱是真正的模擬執行——《Ars Technica》寫道,對於是否真的在 SNES 上玩《Portal》,「答案依然是否定的」——但它讓人切身感受到重點所在:只要每秒有足夠多的按鍵輸入,一台 25 年前的主機也能充當任意現代軟體的輸出裝置。

把主機的控制器埠當成資料匯流排:按鍵輸入成為原始運算碼,而緩衝區溢位則啟動一個載入器來執行這股串流。

緩衝區溢位的程式錯誤讓機器人僅憑控制器輸入,就能把任意程式碼寫入主機記憶體。

在每秒數千次輸入的速度下,控制器埠實際上成了承載運算碼、音訊與視訊的資料匯流排。

在 AGDQ 現場分階段演示,讓一個競速工具變成公開展示:主機可以透過它的遊戲埠被重新程式化。

只要你能以足夠快的速度對任何輸入通道送出訊號,它就是一個程式設計介面——重新定義什麼算作輸入,比新硬體更能擴展一個平台。

這場實況以「Super N64」演示之名,成為 AGDQ 的傳奇。TASBot 的完全控制環節多年來都是這場馬拉松的固定節目,早已締造過諸如在不到一秒內「破關」《Super Mario Bros. 3》等壯舉。

追溯依據

參考來源

  1. How a robot got Super Mario 64 and Portal 'running' on an SNES Ars Technica · arstechnica.com ·