Guihong Wang

Guihong的博客

魔理沙一生推
twitter_id
github
email
bilibili
steam
discord server
discord user
namemc
netease cloud music

一个迷茫的时代与失败者——Wii U

前排提醒:文章部分编写可能使用机器 (Microsoft Word 的文章检查器)/AI(Grok 3-DeeperSearch,WPS AI prompt: 润色这篇文章) 若有对机器生成内容敏感 请立即退出页面
同时文章不仅在博客上发布 它还同时在我的网易云音乐专栏 微信公众号 B 站专栏 酷安发布 欢迎去捧个场

Just Wii#

Wii 的成功让任天堂在 200X 年代声名鹊起 但其缺点也一同出现

image1

便携与家用 上代与 “近代” 的对比 来源任天堂官方1


image5

同世代的游戏机分辨率


与同世代的游戏机的分辨率对比 当时的 Wii 显得十分渺小
看到此般情景 任天堂改进了 Wii 发布下一代游戏机 (增强版的 Wii)

在 2011 的 E3 上 时任任天堂北美总裁的雷吉宣布下一代主机的 “面世”
image2

来源:Gamespot youtube2


也在当时的 E3 展会上给大家试玩新的 “Wii U”

image3

E3 2011 Wii U gamepad kiosk 版3 玩过 wu 的应该可以发现有什么不同

直到 2012 年的正式发售 人们才确定了这个巨大平板 gamepad 的样子

image4

任天堂 Wii U 官网4


但是就仅仅如此吗?下面就来看看 Wii U 的其他版本

特别的机型#

从 2010 年末到 2011 年初开始 任天堂开始做出第一版 Wii U 原型开发机
但是很可惜没有图片这里贴一个 NDEV(Wii 初代开发机)的图5(大概和 NDev 一样 没有配套的 Gamepad 而是用 Wii 的经典手柄来操作)

image6
image5
直到聪哥和团队在开发任天堂大陆6的时候才有 gamepad 这个概念

image7

第一版则是用一个不知道从哪里来的屏幕黏到带陀螺仪的 Wii 的光枪上


image8

第二版原始 gamepad 把鸡腿的摇杆部分弄了上去 然后再连接 Wii 的直柄

到了 2011 年的中期(E3 是 6 月份)任天堂的第二版原型开发机 [7] 这次附上了 gamepad
image9
image10

gamepad 背后的样子


到了后面任天堂做出了 kiosk(小亭子 也叫 Wii U station 放试玩版游戏)的 Wii U8和 DRC
image7
image6

过了一阵子 任天堂做出了第三版的 Wii U 开发机 [9] 这次比第二版来说 有着巨大的进步 因为把机器涂白 比之前整洁很多 加了一个有线网口和 300G 硬盘 这时候能独立运行系统了
image8
又过了一段时间 最后一台 V(Ver)形的第四代测试机出来了 [10] RAM 的读写和 CPU 更快了
image7
至此 V 型开发机落幕 接下来就是可以给第三方开发者的开发机 [11] 了(MP 型)
image8
在 Wii U 发售之后 这种笨重大铁盒渐渐不再提供给开发者 而是提供了 Development Kit 的开发机(代号都是 CAT-R) 主机外观和普通零售的 Wii U 一样 但是 gamepad 和主机各有几款

在 2013 年 任天堂北美在巴西的 Anatel 机构上传了几台不同的 Wii U 拿许可(类似我们的入网许可) 但最大的亮点就是还有一款从来没有出现过的机器 [12] 除了主机的前面板和 gamepad 的后盖是亮 SYNC 色 玫红色?(想不到有什么颜色可以形容了 大概比主机的 SYNC 键亮一点)
imagea
image9
但很可惜 这一台玫红色的 Wii U 除了在 Anatel 的文档里面就再也没有出现了 是唯一一台除了黑色 白色 绿色前面板的机器 也是唯一一台整台 Wii U 没有 RF 射频的开发机

到了 2014 年 任天堂开始提供绿色的前面板开发机
image9

图源: rare gameing dump13


imagea

开发机的顶部有跳线 drc 也有链接主机的开关


imageb

源:任天堂官方开发文档


imageb

展示开发机的菜单13 下图是普通 Retail 版的菜单做做对比


image
开发机中可以看到 DUMMY(系统配置) 这个应用在 kiosk8中也出现过
imagec
imaged
用来设置一些更高级的内容
到这里 Wii U 的机型就介绍完了 但是还有更多的

硬件#

imagee

官网配置14


但事实上 如果破解了主机 逆向系统去看详细信息的话 会发现这种组合很奇怪

PU#

有着三个 “百老汇”(Wii 的 CPU 核心)核心的 “Espresso” 蒸馏咖啡 IBM PowerPC 7XX CPU+AMD/ATi Radeon R700” 拿铁 “GPU

imagef

内存#

这部分很有趣 分了三部分 一部分是 2G 的 512m DDR3L-1600*4 这 2G 内存 1G 内存留给 IOS(Internal OS 内部系统 Wii 到 Wii U 都跑着内部系统 类似内核的东西)剩下 1G 自由分配 第二个部分则是 32M 的特殊显存 最后一份则是 3M 的 SRAM 用来增强 GPU 和内存之间的连接
image10

原图源 ifixit 第二版文章改成 Copetti 的介绍图15

内存最有趣的一点的是 当启动 Wii 模式的时候 Wii U 的 IOS 会隐藏掉 2G 的内存 留下 32M 的内存 + 3M 的 SRAM 把自己的三个” 百老汇 “关剩一个 然后重新启动进到 Wii 的 IOS 和系统

这时候 Wii U 会变成一台真正的 Wii 但是你还能用 Gamepad 显示画面和操作(DRC 摄像头两边的是感应光条 顺便吐槽一下 这东西在 Wii U 的 IOS 还是默认开启 也没有什么游戏用 DRC 的光条 纯纯浪费电)
imagec

fumofumo


但是你不能用 Gamepad 来操作 但是你可以用直柄

要退出也很简单 指向菜单的 Wii U 标退出 或者按一下主机的电源键(类似没有固化或者不是稳定的越狱) Wii U 自己会再重启 回到 Wii U 的 IOS
imaged

FuMo

GPU#

它支持 1080P 输出 虽然 GPU 大概与 Wii 一样 但是厂家(ATi➡AMD)和技术不一样了

首先它基于 TeraScale 架构 “最明显的特征是使用统一着色器模型,将顶点和像素单元集中到一个单元中, 现在称为 SIMD 单元。” 引用自 copetti

任天堂把显卡可以用的渲染 API 称为 GX2 支持 OpenGL GLSL 3.3 和 OpenGL ESSL 还有新增的 H.264 硬件解码也同时让这块 GPU 有着比当时的显卡更好的视频渲染能力(是给 Gamepad 串流游戏画面用的)
image11

那我缺的这个 wiiuwiiu 谁来给我补啊


不但如此 Wii U 的 GPU 还封装了一些 Wii 模式下才会使用的芯片 例如 Wii 的 GPU(这东西能在 Wii 模式独享 3M 的内存拿去做显存) 还有一个强制输出 HDMI 信号的芯片

音频#

任天堂把声道玩的极致 在原来的电视双声道 + 4 个直柄的基础上把电视和新的大号手柄再升级
image2

在电视上可以达到 5.1 环绕声


image3

而在 gamepad 上能达到伪环绕声


为什么会说是 “伪” 呢 具体可以看看 ifixit 对于 Wii U 的拆解 其中也提到了 gamepad
image12

这是 DRC 的拆解 但扬声器这东西也只有两个16


虽然与电视对比 DRC 的音频不怎么样 但是 Wii U 整个系统就是不错的组合 特别在一些官方的软件与游戏中表现的十分出色
image13

任天堂大陆 dump 的游戏里可以看到 dspad... 和不带 dspad... 的版本


更加明显(听起来也是)的例子是机器自带的 Mii maker
image14

TV
TV

DRC
DRC

mix
mix

DRC 或者 TV 单独播放一个都会显得单调

操作系统#

Wii U 内部跑着四套不同的系统

第一个是 IOSU(代号星巴克 内部系统 wii U)是 Wii 的 IOS 升级版 不仅升级了性能 也升级了 “安全性”(Wii 被第一次破解是利用了这里的物理内存 bug 两个内存保存着系统 一个是加密的 另外一个是没有加密的 破解的人用外部硬件焊接 结果发现内存的加密被倒转了 但是内存的内容还是一样的 合二为一最后得到了 Wii 的第一次破解)

第二个是 “浓缩咖啡” 的真 OS(也被叫做 Cafe OS) 刚开机看到的 Wii U 标就是 Cafe OS 弄出来的 随后启动” 正在连接 Nintendo Network “的系统菜单是 Cafe OS 开机之后做的第一件事 这也说明了它的灵活性 也有着” 先进 “的系统理念(游戏机的系统不是固件 而是一个真正的系统 让系统服务游戏 而不是硬件直接服务游戏)
imagee

也说明了 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(又一次题外话 如果重置了主机 原来外置硬盘的游戏因为主机重置了系统 新系统的密钥和硬盘对不上 导致硬盘的游戏完全作废 只能重新安装 存档也是一样的)
image15

贴一张图 说明普通情况不要重置 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 菜单 “ 从而完成破解的固化

然而免费和杞人忧天推动着固化的发展
image16

任天堂北美公告17


过了 2023 年后 Wii U 的 eshop 也不能再买东西了 也包括 DS 的脑锻炼 于是又做出了 Mii Maker(或者 Wii U 菜单)+ 自定义固件
image17

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 站搜搜下图的视频 挺有趣的
image18

个人的观点#

Wii U 确实是一台不错的” 扮猪吃老虎 “游戏机 虽然很笨重 又没有什么第三方好游戏
imagef
但是它仍然是一台好游戏机(许多新概念 任天堂当时放不下的双屏 无线串流 2012 年的 NFC 视频通话) 还是一台真正的” 任天堂 “游戏机 not only Wii but also U

最后拿聪哥的一句话来结束这篇我写了快两个月的文章
“在我的名片上,我是任天堂的社长,在我的脑海里,我是一名游戏开发者,而在我内心深处,我是一名玩家。”

鸣谢和引用#

谢谢 Copetti 的《Wii U 架构》 前人栽树 后人乘凉 没有这篇文章 我就写不了后面的部分了

感谢 Consolevariations 和 GaryOderNichts 做的 WiiUIdent 把主机不敏感的信息上传到数据库 能给人们看到 Wii U 实际存在的机型(Wii U 版鲁大师)
image19
image4
也感谢 Rare Gaming Dump 组织和 Luckless Heaven 他们把有趣的东西保存下来

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。