前排提醒:文章部分編寫可能使用機器 (Microsoft Word 的文章檢查器)/AI(Grok 3-DeeperSearch,WPS AI prompt: 潤色這篇文章) 若有對機器生成內容敏感 請立即退出頁面
同時文章不僅在博客上發布 它還同時在我的网易云音乐专栏 微信公众号 B 站专栏 酷安發布 歡迎去捧個場
Just Wii#
Wii 的成功讓任天堂在 200X 年代聲名鵲起 但其缺點也一同出現
便攜與家用 上代與 “近代” 的對比 來源任天堂官方1
同世代的遊戲機分辨率
與同世代的遊戲機的分辨率對比 當時的 Wii 顯得十分渺小
看到此般情景 任天堂改進了 Wii 發布下一代遊戲機 (增強版的 Wii)
在 2011 的 E3 上 時任任天堂北美總裁的雷吉宣布下一代主機的 “面世”
來源:Gamespot youtube2
也在當時的 E3 展會上給大家试玩新的 “Wii U”
E3 2011 Wii U gamepad kiosk 版3 玩過 wu 的應該可以發現有什麼不同
直到 2012 年的正式發售 人們才確定了這個巨大平板 gamepad 的樣子
任天堂 Wii U 官網4
但是就僅僅如此嗎?下面就來看看 Wii U 的其他版本
特別的機型#
從 2010 年末到 2011 年初開始 任天堂開始做出第一版 Wii U 原型開發機
但是很可惜沒有圖片這裡貼一個 NDEV(Wii 初代開發機)的圖5(大概和 NDev 一樣 沒有配套的 Gamepad 而是用 Wii 的經典手柄來操作)
直到聰哥和團隊在開發任天堂大陸6的時候才有 gamepad 這個概念
第一版則是用一個不知道從哪裡來的屏幕黏到帶陀螺儀的 Wii 的光槍上
第二版原始 gamepad 把雞腿的搖桿部分弄了上去 然後再連接 Wii 的直柄
到了 2011 年的中期(E3 是 6 月份)任天堂的第二版原型開發機 [7] 這次附上了 gamepad
gamepad 背後的樣子
到了後面任天堂做出了 kiosk(小亭子 也叫 Wii U station 放试玩版游戏)的 Wii U8和 DRC
過了一陣子 任天堂做出了第三版的 Wii U 開發機 [9] 這次比第二版來說 有著巨大的進步 因為把機器塗白 比之前整潔很多 加了一個有線網口和 300G 硬盤 這時候能獨立運行系統了
又過了一段時間 最後一台 V(Ver)形的第四代測試機出來了 [10] RAM 的讀寫和 CPU 更快了
至此 V 型開發機落幕 接下來就是可以給第三方開發者的開發機 [11] 了(MP 型)
在 Wii U 發售之後 這種笨重大鐵盒漸漸不再提供給開發者 而是提供了 Development Kit 的開發機(代號都是 CAT-R) 主機外觀和普通零售的 Wii U 一樣 但是 gamepad 和主機各有幾款
在 2013 年 任天堂北美在巴西的 Anatel 機構上傳了幾台不同的 Wii U 拿許可(類似我們的入網許可) 但最大的亮點就是還有一款從來沒有出現過的機器 [12] 除了主機的前面板和 gamepad 的後蓋是亮 SYNC 色 玫紅色?(想不到有什麼顏色可以形容了 大概比主機的 SYNC 鍵亮一點)
但很可惜 這一台玫紅色的 Wii U 除了在 Anatel 的文檔裡面就再也沒有出現了 是唯一一台除了黑色 白色 綠色前面板的機器 也是唯一一台整台 Wii U 沒有 RF 射頻的開發機
到了 2014 年 任天堂開始提供綠色的前面板開發機
圖源: rare gameing dump13
開發機的頂部有跳線 drc 也有連接主機的開關
源:任天堂官方開發文檔
展示開發機的菜單13 下圖是普通 Retail 版的菜單做做對比
開發機中可以看到 DUMMY(系統配置) 這個應用在 kiosk8中也出現過
用來設置一些更高級的內容
到這裡 Wii U 的機型就介紹完了 但是還有更多的
硬件#
官網配置14
但事實上 如果破解了主機 逆向系統去看詳細信息的話 會發現這種組合很奇怪
PU#
有著三個 “百老匯”(Wii 的 CPU 核心)核心的 “Espresso” 蒸餾咖啡 IBM PowerPC 7XX CPU+AMD/ATi Radeon R700” 拿鐵 “GPU
內存#
這部分很有趣 分了三部分 一部分是 2G 的 512m DDR3L-1600*4 這 2G 內存 1G 內存留給 IOS(Internal OS 內部系統 Wii 到 Wii U 都跑著內部系統 類似內核的東西)剩下 1G 自由分配 第二個部分則是 32M 的特殊顯存 最後一份則是 3M 的 SRAM 用來增強 GPU 和內存之間的連接
原圖源 ifixit 第二版文章改成 Copetti 的介紹圖15
內存最有趣的一點是 當啟動 Wii 模式的時候 Wii U 的 IOS 會隱藏掉 2G 的內存 留下 32M 的內存 + 3M 的 SRAM 把自己的三個” 百老匯 “關剩一個 然後重新啟動進到 Wii 的 IOS 和系統
這時候 Wii U 會變成一台真正的 Wii 但是你還能用 Gamepad 顯示畫面和操作(DRC 攝像頭兩邊的是感應光條 順便吐槽一下 這東西在 Wii U 的 IOS 還是默認開啟 也沒有什麼遊戲用 DRC 的光條 純純浪費電)
fumofumo
但是你不能用 Gamepad 來操作 但是你可以用直柄
要退出也很簡單 指向菜單的 Wii U 標退出 或者按一下主機的電源鍵(類似沒有固化或者不是穩定的越獄) Wii U 自己會再重啟 回到 Wii U 的 IOS
FuMo
GPU#
它支持 1080P 輸出 雖然 GPU 大概與 Wii 一樣 但是廠家(ATi➡AMD)和技術不一樣了
首先它基於 TeraScale 架構 “最明顯的特徵是使用統一著色器模型,將頂點和像素單元集中到一個單元中, 現在稱為 SIMD 單元。” 引用自 copetti
任天堂把顯卡可以用的渲染 API 稱為 GX2 支持 OpenGL GLSL 3.3 和 OpenGL ESSL 還有新增的 H.264 硬件解碼也同時讓這塊 GPU 有著比當時的顯卡更好的視頻渲染能力(是給 Gamepad 串流遊戲畫面用的)
那我缺的這個 wiiuwiiu 誰來給我補啊
不但如此 Wii U 的 GPU 還封裝了一些 Wii 模式下才會使用的芯片 例如 Wii 的 GPU(這東西能在 Wii 模式獨享 3M 的內存拿去做顯存) 還有一個強制輸出 HDMI 信號的芯片
音頻#
任天堂把聲道玩的極致 在原來的電視雙聲道 + 4 個直柄的基礎上把電視和新的大號手柄再升級
在電視上可以達到 5.1 環繞聲
而在 gamepad 上能達到偽環繞聲
為什麼會說是 “偽” 呢 具體可以看看 ifixit 對於 Wii U 的拆解 其中也提到了 gamepad
這是 DRC 的拆解 但揚聲器這東西也只有兩個16
雖然與電視對比 DRC 的音頻不怎麼樣 但是 Wii U 整個系統就是不錯的組合 特別在一些官方的軟件與遊戲中表現的十分出色
任天堂大陸 dump 的遊戲裡可以看到 dspad... 和不帶 dspad... 的版本
更加明顯(聽起來也是)的例子是機器自帶的 Mii maker



DRC 或者 TV 單獨播放一個都會顯得單調
操作系統#
Wii U 內部跑著四套不同的系統
第一個是 IOSU(代號星巴克 內部系統 wii U)是 Wii 的 IOS 升級版 不僅升級了性能 也升級了 “安全性”(Wii 被第一次破解是利用了這裡的物理內存 bug 兩個內存保存著系統 一個是加密的 另外一個是沒有加密的 破解的人用外部硬件焊接 結果發現內存的加密被倒轉了 但是內存的內容還是一樣的 合二為一最後得到了 Wii 的第一次破解)
第二個是 “濃縮咖啡” 的真 OS(也被叫做 Cafe OS) 剛開機看到的 Wii U 標就是 Cafe OS 弄出來的 隨後啟動” 正在連接 Nintendo Network “的系統菜單是 Cafe OS 開機之後做的第一件事 這也說明了它的靈活性 也有著” 先進 “的系統理念(遊戲機的系統不是固件 而是一個真正的系統 讓系統服務遊戲 而不是硬件直接服務遊戲)
也說明了 Wii U 像台機器 壞了一個地方還能跑
(題外話 兩台機器已經備份了重要文件 如果 Wii U 真的菜單壞了還能下回來 然後還原進去 全 MLC 備份 結果有一個系統 app 死活備份不進去 應該是壞了)
但靈活性帶來的結果是 內存佔用暴漲 原來只有 2g 的內存 被 cafe os 吃去 1g 之後還剩下 1g 給開發者們支配
第三和第四個系統則是留給兼容 Wii 用的 一個是上面” 內存 “部分說過的冷啟動 Wii 一個是熱啟動 Wii 給 Eshop 上買的 Wii 遊戲的系統 直接打開 Wii 遊戲
啟動和破解#
摘抄自 Copetti 謝謝你(到時候會買本電紙書支持的)15
“Starbuck 被喚醒並進行到…
執行在其重置矢量 (vector) 中找到的代碼 (0xFFFF0000) , 它指向它的掩碼 ROM (其中第一個啟動階段是, boot0). 第一个例行 (routine) 讓 Starbuck 將 boot0 複製到 Starbuck 的 SRAM, 所以它運行得更快.
boot0 然後通過閱讀 OTP 內存和 SEEPROM 上的標誌(flags)來初始化部分 I/O 和附近的區塊。 然後從 NAND 中獲取下一個引導步驟 (boot1)。
boot1 已經被加密和簽名,因此 Starbuck 首先檢查其簽名 (RSA 類型) 以及內容的完整性 (比較 SHA-1 哈希校驗值) 然後開始解密它 (使用 AES)。 所有需要的密鑰和證書都是從 OTP 內存中提取的。
更多 I/O 的初始化完成後。 然後,SEEPROM 和部分 OTP 將被鎖定無法再次訪問。 最後, boot1 部分的初始化就暫告一段落。
boot1 初始化更多 I/O 並準備使用 MEM2 和 MEM0 。 然後從 NAND 讀取 IOSU 固件 到 MEM1 並執行相同的驗證 & 解密過程。 如果一切順利,Starbuck 會禁用使用過的 OTP 內存,並完全清除敏感數據。 最後,它將轉到 IOSU 固件。
IOSU 固件 是一堆程序的集合。 首次啟動的是 IOSU Loader,它加載了剩下的其他固件 (像是 IOSU)到特定的內存位置 (SRAM 和 MEM0)。 然後它從 MEM1 中清除自己,跳到了在 IOSU 內核 等待的 SRAM。
IOSU 內核 首先快速進行 MEM1 檢查 , 一旦完成後, Starbuck 會運行在 IOSU。 為了能正常執行功能,IOSU 的相關模塊可以在 MEM0 上找到。
Espresso 是下一個,所以 IOSU 將 Cafe OS (加密形式) 複製到 MEM2 並啟動 Espresso。
Espresso 的第一個核心啟動後…
重置矢量(vector)處於地址 0x00000100, 此處被 Boot ROM 占用,所以它開始在那里執行.
MMU, L1/L2 緩存和註冊表被清除。 然後,Espresso 切換到 “翻譯模式”(激活 虛擬內存)。
通過篡改鎖定的 L1 緩存和空內存寫入,BootROM 被複製到 L1(為了更快地運行),而不會到達外部 RAM。
重置向量(reset vector)變成一個無限循環 (以阻止試圖重置 的 CPU)。
OTP 的 AES 密鑰已複製到 L1。 然後,OTP 被禁用。
Cafe OS 內核的 header 已複製到 L1,其簽名使用存儲的密鑰進行驗證。
Cafe OS 內核的數據通過使用 DMA 將數據散列和解密,以區塊的方式來回發送到 L1 緩存。
現在未加密的 Cafe OS 內核在 RAM 中映射完畢並準備執行。 L1 和 L2 已被刷新;啟動 ROM 已被禁用。 最後,跳轉執行 Cafe OS 內核。
Espresso,正在運行 Cafe OS 內核,檢查用於指引它啟動 系統菜單 應用程序的配置文件。
系統菜單 是從 NAND 到 MEM2 并像其他加密的程序一樣處理的。 如果一切正常, 系統菜單 將被啟動。
用戶現在將可以控制主機了!
“
Wii 模式的流程#
“重啟 Espresso.
將 Espresso 降頻並禁用兩個額外的核心。
上傳用於 DMCU 視頻編碼器的固件。
將 舊字體 (Gamecube 的字體) 上傳到 MEM1 的區域 它們可以從 EXI 接口訪問 (為了創建 舊的 EXI 路由)。
啟用 AHCI 接口上的兼容模式 (即連接到 SATA 光盤驅動器的接口),以便可以使用舊的 光盤接口 (DI) 協議來命令它。
將 OTP 內存中的密鑰複製到其內置的 SRAM,因為 vWii 會認為內部的 SRAM 是 傳統的 SEEPROM。
禁用 Wii U-exclusive I/O,但 GamePad 除外 (除非它被用戶或遊戲停用)。
啟動 IOS。 IOS 槽 的選擇取決於使用哪種 vWii 模式,如果在 HAI 模式中,則取決於遊戲。
為 vWii 設計的 IOS 軟件包已經略有改動,增加了一些模塊。 這包括 DI2SD 來模擬光盤驅動器和 OHCI1 將來自 GamePad 的輸入轉換成藍牙命令 (以此來使用 Wii 手柄)。
上傳 Wii 系統菜單 或 NAND 啟動程序 (運行 Wii 圖標的二進制文件) 到 MEM2, 選擇取決於使用的 vWii 模式。
由於 Espresso 將從 啟動 ROM 起就啟動,它只能使用 Wii U 的安全模型接收二進制。 因此,Wii 的相關程序都進行了修改以進行兼容。
啟動 Espresso,讓它處理並運行指定的二進制文件。
用戶現在將又可以控制主機了!
“
破解#
破解的話 大家還是想要玩遊戲或者是免簽 而要做到這一切都來自於 Cafe OS 和 IOSU(又一次題外話 如果重置了主機 原來外置硬盤的遊戲因為主機重置了系統 新系統的密鑰和硬盤對不上 導致硬盤的遊戲完全作廢 只能重新安裝 存檔也是一樣的)
貼一張圖 說明普通情況不要重置 Wii U 主機 因為硬盤也存著存檔
回到正題 Wii U 的破解現在都主要來自瀏覽器 而最初的破解也來自瀏覽器
任天堂不吸取 Wii 的經驗 沒有封上硬件 bug - 在 Wii 模式下面能提取 BootROM - 分析 破解 BootROM 拿到 AES 加密密鑰 - 瀏覽器是開源的 而且已經發現有漏洞了 - 用瀏覽器嘗試在 Wii U 的 IOSU 運行 bug 結果成功了
到了現在 雖然任天堂封堵了上面的軟件漏洞 但是新的方法是還是用了硬件漏洞(GPU 訪問共享顯存部分 剛好那一部分能繞過大部分 IOSU 的限制)
固化#
在破解之後 就要做固化
雖然破解完成了 但是斷電 / 關機 破解的環境就消失了 這時候我們就需要固化來自動破解系統
破解要寄生在系統裡面才能防止每次都要走一次破解的步驟 這時候 IOSU 啟動的步驟幫了大忙(任何東西都跑在 Cafe OS 上 而 IOSU 啟動之後會叫醒 Cafe OS Cafe OS 會叫”Wii U 菜單 “這個【頻道】起來) 而誰又不知道怎麼找到了 Wii U 官方模擬 DS 的模擬器讀取 ROM 的時候也能執行任意代碼 於是就有了前幾年很熱門的腦鍛煉(大部分 DS 遊戲都行 但唯獨這個腦鍛煉在 eshop 最便宜)固化破解
安裝了腦鍛煉之後 就是一個 Wii U 頻道了 也就說明它能在 Cafe OS 啟動完的時候代替預先設置的”Wii U 菜單 “ 從而完成破解的固化
然而免費和杞人憂天推動著固化的發展
任天堂北美公告17
過了 2023 年後 Wii U 的 eshop 也不能再買東西了 也包括 DS 的腦鍛煉 於是又做出了 Mii Maker(或者 Wii U 菜單)+ 自定義固件
sd 卡裡面的 fw.img 就是自定義固件
對於破解來說 這是一個巨大的成功 就像是 linux 可以自己 config 配置 想要內核有什麼就弄什麼固件 然後拷進 SD 卡加載就行
如今的破解 只需要在 sd 卡放入神奇文件 fw.img 和別的東西 打開瀏覽器 就可以完成破解了
最後與評價
Wii U 於 2012 年 11 月出貨~2017 年 1 月 31 日停產
對應的服務
2015 年 8 月 11 日 關停 Nintendo TVii
2017 年 11 月 8 日 關停 Miiverse
2024 年 4 月 9 日把任天堂網絡和老 eshop 完全關了
2024 年 7 月 3 日 官方沒配件了 Wii U 完全停產
關於 任天堂網絡 可以去 B 站搜搜下圖的視頻 挺有趣的
個人的觀點#
Wii U 確實是一台不錯的” 扮豬吃老虎 “遊戲機 雖然很笨重 又沒有什麼第三方好遊戲
但是它仍然是一台好遊戲機(許多新概念 任天堂當時放不下的雙屏 無線串流 2012 年的 NFC 視頻通話) 還是一台真正的” 任天堂 “遊戲機 not only Wii but also U
最後拿聰哥的一句話來結束這篇我寫了快兩個月的文章
“在我的名片上,我是任天堂的社長,在我的腦海裡,我是一名遊戲開發者,而在我內心深處,我是一名玩家。”
鳴謝和引用#
謝謝 Copetti 的《Wii U 架構》 前人栽樹 後人乘涼 沒有這篇文章 我就寫不了後面的部分了
感謝 Consolevariations 和 GaryOderNichts 做的 WiiUIdent 把主機不敏感的信息上傳到數據庫 能給人們看到 Wii U 實際存在的機型(Wii U 版魯大師)
也感謝 Rare Gaming Dump 組織和 Luckless Heaven 他們把有趣的東西保存下來