---
# System prepended metadata

title: GC《陽光瑪利歐》Any% ACE TAS 筆記

---

# GC《陽光瑪利歐》Any% ACE TAS 筆記

{%youtube 2_DeEV7WOp8 %} 


------

# TAS 製作

作者：zelpikukirby (大福)、su
調査協力：sup39、Noki doki
追記 (re-records)：45151

模擬器 Dolphin 5.0 Lua Core，使用四隻 GameCube 手把

觸發 Cutscene Underflow Glitch，利用 ACE 輸入代碼做到 Credit Warp


------

# 即時過場動畫的播放機制

遊戲提供 8 個 Slot 來記住即時過場動畫，
並且會去追蹤檢查「最新進度 (Cutscenes Started)」，
以及「已經放送 (Cutscenes Ended)」各自的 Slot 編號

動畫開始播放時，「最新進度」的 Slot 編號就會 +1，
然後把動畫內容放進 +1 後的 Slot
(例如，Slot 3 + 1 = Slot 4，遊戲會把最新進度的動畫內容放到 Slot 4)

當 Slot 全部填滿後，又會從頭開始覆蓋填過去

每當動畫結束，「已經放送」的 Slot 編號也會按相同規則操作，
+1 之後，變成和「最新進度」一樣

當兩者 Slot 編號相同，實際上就代表「已經播完最新一集辣！」，
完成處理即時過場動畫的播放事件


------

# Cutscene Underflow Glitch

::: info
觸發 Cutscene Underflow Glitch 之後會把動畫重播一圈
https://youtu.be/xhUd0e0Sgwo
:::

通常「已經放送」的 Slot 編號會跟上「最新進度」，
一旦沒跟上，就代表還有動畫沒播出來，就會持續播放下去

如果我們在一個動畫的播放期間，又突然插一個 Shine Get 動畫，
就會導致「已經放送」的 Slot 編號 +2，反而超前領先

例如，「最新進度」為 Slot 5，
「已經放送」就會是 Slot 4 +2，變成 Slot 6，
用 Slot 編號來算一下，要播放的動畫數量居然是 5 - 6 = -1？

這個時候就會觸發 Cutscene Underflow Glitch，
遊戲會把 -1 理解為 8 - 1 = 7，重播一圈已經播放過的動畫，
但通常不會發生有趣的狀況 (・ω・、)


------

# 亂數調整 Part 1 - 特定的即時過場動畫

時間點大概在 7m 45s ~ 8m 35s

即時過場動畫會根據海豚鎮的狀態變化 (泥漿怪、影子瑪莉歐是否在場等等)

在公主被綁架事件期間，如果我們讓右側鈴鐺塔的 Shine 出現，
動畫內容就會有一個特定值：8134A65C，並且放到 Slot 4

(Slot 1 ~ 3 先放了藍幣出現動畫 x2，還有山丘關入口出現動畫 x1)

要注意的是，進去山丘關會讓 Slot 重置洗掉，所以會一直留在海豚鎮，
這邊我們只好穿牆取得兩個 Shine，觸發泥漿怪入侵事件


------

# 亂數調整 Part 2 - 修改已經播放過的動畫

時間點大概在 9m 15s ~ 9m 32s

先前放到 Slot 4 的 8134A65C，
原本已經播放過的、亂數調整 Part 1 的 Shine 出現的動畫內容，
現在是時候對動畫內容動手腳了

在泥漿怪入侵事件期間，調整 Turbo Gate 在畫面上的攝影機視角資料，
就會變更 8134A65C 的動畫內容

取得理想位置後，視角移開不要再看，防止洗掉

(後續 Slot 5 ~ 8 放了 Shine Get 動畫 x2，藍幣出現動畫 x2)

::: info
Turbo Gate 是指用 Turbo 能力去水上漂，然後被撞爛的門
亂數調整中的 Turbo Gate 其實還在畫面上，只是我們被擋住看不到
https://youtu.be/HvjCcNHPyJY
:::


------

# 四隻手把

最後，我們在藍幣出現動畫期間 Shine Get，
觸發了 Cutscene Underflow Glitch，就會重播一圈已經播放過的動畫

那麼，修改過後的 Slot 4 的動畫內容變成什麼樣子呢？
答案是：根據玩家的四隻手把輸入決定

其實剛剛調整的 Turbo Gate 攝影機視角資料，
就是要把處理遊戲控制器的輸入資料的位置，寄放到 8134A65C

當遊戲要播放 Slot 4 的 Shine 出現動畫時，會去 8134A65C 裡看看有什麼東西，
結果就是被我們丟包到手把輸入區，因此就可以按按鍵來輸入代碼了

這個 ACE 連接了四隻手把，
輸入播放結局和避免當機的程式碼，就可以看到結局動畫


------

# 參考資料

https://tasvideos.org/8911S
#8911: zelpikukirby & su's GC Super Mario Sunshine "any% arbitrary code execution" in 09:50.40 - Submission #8911 - TASVideos
TASVideos 的投稿記錄

https://www.nicovideo.jp/watch/sm43448125
【TAS】スーパーマリオサンシャイン 任意コード実行 in 9:50.49 - ニコニコ
TAS 作者的 日文影片解說

https://youtu.be/2_DeEV7WOp8
[TAS] Super Mario Sunshine Arbitrary Code Execution Any% in 9:50.49 - YouTube
TAS 作者的 YouTube 影片

https://youtu.be/xhUd0e0Sgwo
Watching 8 Cutscenes Prevents Super Mario Sunshine from Crashing

https://youtu.be/u_3iNRO3DYY
Cutscene Underflow Demo

https://pastebin.com/H7jutG6w
Shine Spawn Cutscene Underflow ACE

https://youtu.be/HvjCcNHPyJY
Super Mario Sunshine Delfino Plaza Turbo Nozzle Gate Blue Coin


------
