# OpenDMCUFirm：重新实现的 Wii U DMCU 显示固件

> 用 C 语言重新实现 Wii U 的 DMCU 固件。DMCU 是其 AMD 图形控制器中兼容 M68HC11 的显示微控制器，在 Wii 模式下读取视频接口（VI）状态，并配置显示输出、去隔行、缩放与过扫描。README 称这项工作基于对原固件的逆向工程，但并非逐字节一致的反编译，并说明项目仍在开发中。构建出的镜像经 evWii 插件载入后，在 Wii 模式下替代原厂固件。

- 类型：案例
- 目标：固件
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-19
- 收录于：2026-10-20
- 原始资源：<https://github.com/GaryOderNichts/OpenDMCUFirm>
- 一手来源：<https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/opendmcufirm-wii-u-dmcu-firmware-case/>
- 记录 JSON：<https://awesomerea.org/resources/opendmcufirm-wii-u-dmcu-firmware-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/opendmcufirm-wii-u-dmcu-firmware-case/index.md)

## 使用条件与局限

- **前提条件：**构建只使用项目自己的 C 源码，不需要原始固件。运行需要装有 Aroma 插件环境和 evWii 的 Wii U：将 dmcu.d.hex 放入 SD 卡的 wiiu 文件夹，再用 evWii 的“Load DMCU Firmware from SD Card”选项在 Wii 模式下载入。
- **前提条件：**编译器为 GNU 68HC11/12 软件包中的 GCC 3.3.6-m68hc1x-20060122。Dockerfile 在 Ubuntu 24.04 上用经校验和核对的 Windows 安装程序在 Wine 下配置该工具链，也提供预构建的 garyodernichts/dmcubuilder 镜像；再由 Python 3 运行 hexconv.py，将 S19 输出转换为 DMCU 的 hex 格式。
- **范围：**所审阅的 main 提交没有发行版或标签。README 称这是仍在开发中的重新实现，预计会有问题；近期提交为寄存器和状态字段命名，其中一次提交称某个函数已完全一致，此前缺失的一个变量曾在 240p 游戏中引发问题。link.ld 警告 Nintendo 的 nn_cmpt 会直接向 DMCU 的 ERAM 中段写入数值，可能覆盖代码。
- **测试证据：**CI 只在该容器中构建 dmcu.d.hex 并作为构件上传。所审文件中没有测试套件、硬件测试记录，也没有与原厂固件行为的比较。
- **许可：**仓库没有许可证文件，GitHub 也未识别出许可证；项目源文件只注明属于 OpenDMCUFirm。随附的 68HC11 与 stdint 头文件保留各自的 FSF GPL 和 BSD 声明，evWii 采用 GPL-2.0，原始固件仍受其自身权利约束。

## 一手来源

1. <https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/README.md>
2. <https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/Makefile>
3. <https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/Dockerfile>
4. <https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/hexconv.py>
5. <https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/link.ld>
6. <https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/source/dmcu.c>
7. <https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/.github/workflows/build.yml>
8. <https://github.com/GaryOderNichts/OpenDMCUFirm/commit/58ab01fe071f0c6df8798b8b178f8160d1c3cacf>
9. <https://github.com/GaryOderNichts/evwii/blob/978b0068e003a15cd85b2141c5d5248369ed3d87/README.md>

## 同分区更多条目：固件与硬件

- [reflecticon-224：在模拟硬件上运行 Lexicon 224 混响器固件](https://awesomerea.org/zh/resources/reflecticon-224-lexicon-emulation-case/index.md) · 案例
- [TeddyCloud：可自托管的 Toniebox 云端替代服务器](https://awesomerea.org/zh/resources/teddycloud-toniebox-server-case/index.md) · 案例
- [Valetudo：扫地机器人厂商云的本地替代](https://awesomerea.org/zh/resources/valetudo-robot-cloud-replacement-case/index.md) · 案例
- [EchoMuse：把第二代 Echo Dot 变成 Home Assistant 语音终端的替换软件](https://awesomerea.org/zh/resources/echomuse-echo-dot-voice-satellite-case/index.md) · 案例
- [OSIRIS：基于 MCU 协议研究替换 Onkyo 功放固件](https://awesomerea.org/zh/resources/osiris-onkyo-receiver-case/index.md) · 案例
- [Virtual MPC Sample：在 QEMU 中运行 Akai MPC Sample 固件](https://awesomerea.org/zh/resources/virtual-mpc-sample-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
