{
  "added_at": "2026-10-20",
  "additional_evidence_urls": [
    "https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/Makefile",
    "https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/Dockerfile",
    "https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/hexconv.py",
    "https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/link.ld",
    "https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/source/dmcu.c",
    "https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/.github/workflows/build.yml",
    "https://github.com/GaryOderNichts/OpenDMCUFirm/commit/58ab01fe071f0c6df8798b8b178f8160d1c3cacf",
    "https://github.com/GaryOderNichts/evwii/blob/978b0068e003a15cd85b2141c5d5248369ed3d87/README.md"
  ],
  "category": "reconstruction-cases",
  "description_en": "Reimplements in C the firmware of the Wii U’s DMCU, the M68HC11-compatible display microcontroller in its AMD graphics controller, which in Wii mode reads the Video Interface state and configures display output, deinterlacing, scaling and overscan. The README says the work is based on reverse engineering of the original firmware but is not a byte-for-byte matching decompilation, and calls it a work in progress. The built image replaces the stock firmware in Wii mode when loaded through the evWii plugin.",
  "description_zh": "用 C 语言重新实现 Wii U 的 DMCU 固件。DMCU 是其 AMD 图形控制器中兼容 M68HC11 的显示微控制器，在 Wii 模式下读取视频接口（VI）状态，并配置显示输出、去隔行、缩放与过扫描。README 称这项工作基于对原固件的逆向工程，但并非逐字节一致的反编译，并说明项目仍在开发中。构建出的镜像经 evWii 插件载入后，在 Wii 模式下替代原厂固件。",
  "entry_url": "https://awesomerea.org/resources/opendmcufirm-wii-u-dmcu-firmware-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/opendmcufirm-wii-u-dmcu-firmware-case/",
  "evidence_url": "https://github.com/GaryOderNichts/OpenDMCUFirm/blob/9e6747f71cb91f2c182869b4df1091f6d5d8218d/README.md",
  "group": "cases",
  "id": "opendmcufirm-wii-u-dmcu-firmware-case",
  "json_url": "https://awesomerea.org/resources/opendmcufirm-wii-u-dmcu-firmware-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/opendmcufirm-wii-u-dmcu-firmware-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/opendmcufirm-wii-u-dmcu-firmware-case/index.md",
  "name": "OpenDMCUFirm: a reimplemented Wii U DMCU display firmware",
  "name_zh": "OpenDMCUFirm：重新实现的 Wii U DMCU 显示固件",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "scope",
    "prerequisites",
    "prerequisites",
    "testing",
    "license"
  ],
  "requirements": [
    "The reviewed main commit has no releases or tags. The README describes a work-in-progress reimplementation with potential issues expected; recent commits name registers and state fields, and one reports a function fully matched after a missing variable caused problems in 240p titles. link.ld warns that Nintendo’s nn_cmpt writes values into the middle of the DMCU’s ERAM and can overwrite the code.",
    "The build uses only the project’s C sources and needs no original firmware. Running the result needs a Wii U with the Aroma plugin environment and evWii: dmcu.d.hex goes in the SD card’s wiiu folder and is loaded with evWii’s “Load DMCU Firmware from SD Card” option for Wii mode.",
    "The compiler is GCC 3.3.6-m68hc1x-20060122 from the GNU 68HC11/12 packages. The Dockerfile sets it up on Ubuntu 24.04 from the checksum-verified Windows installer run under Wine, and a prebuilt garyodernichts/dmcubuilder image is offered; Python 3 runs hexconv.py to turn the S19 output into the DMCU hex format.",
    "CI only builds dmcu.d.hex in that container and uploads it as an artifact. The reviewed files contain no test suite, hardware test log or comparison with the stock firmware’s behavior.",
    "The repository has no license file and GitHub detects none; project source files state only that they are part of OpenDMCUFirm. The bundled 68HC11 and stdint headers keep their FSF GPL and BSD notices, evWii is GPL-2.0, and the original firmware keeps its own rights."
  ],
  "requirements_zh": [
    "所审阅的 main 提交没有发行版或标签。README 称这是仍在开发中的重新实现，预计会有问题；近期提交为寄存器和状态字段命名，其中一次提交称某个函数已完全一致，此前缺失的一个变量曾在 240p 游戏中引发问题。link.ld 警告 Nintendo 的 nn_cmpt 会直接向 DMCU 的 ERAM 中段写入数值，可能覆盖代码。",
    "构建只使用项目自己的 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 格式。",
    "CI 只在该容器中构建 dmcu.d.hex 并作为构件上传。所审文件中没有测试套件、硬件测试记录，也没有与原厂固件行为的比较。",
    "仓库没有许可证文件，GitHub 也未识别出许可证；项目源文件只注明属于 OpenDMCUFirm。随附的 68HC11 与 stdint 头文件保留各自的 FSF GPL 和 BSD 声明，evWii 采用 GPL-2.0，原始固件仍受其自身权利约束。"
  ],
  "targets": [
    "firmware"
  ],
  "url": "https://github.com/GaryOderNichts/OpenDMCUFirm",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
