Case study

OpenDMCUFirm: a reimplemented Wii U DMCU display firmware

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.

Requirements and limitations

  • 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, and this review built or ran nothing.
  • 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. The reviewed sources establish no AI or REA use.

About this entry

Type
Case study
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Targets
Firmware

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Primary sources

  1. README.md GitHub · GaryOderNichts/OpenDMCUFirm · Revision 9e6747f
  2. Makefile GitHub · GaryOderNichts/OpenDMCUFirm · Revision 9e6747f
  3. Dockerfile GitHub · GaryOderNichts/OpenDMCUFirm · Revision 9e6747f
  4. hexconv.py GitHub · GaryOderNichts/OpenDMCUFirm · Revision 9e6747f
  5. link.ld GitHub · GaryOderNichts/OpenDMCUFirm · Revision 9e6747f
  6. source/dmcu.c GitHub · GaryOderNichts/OpenDMCUFirm · Revision 9e6747f
  7. .github/workflows/build.yml GitHub · GaryOderNichts/OpenDMCUFirm · Revision 9e6747f
  8. https://github.com/GaryOderNichts/OpenDMCUFirm/commit/58ab01fe071f0c6df8798b8b178f8160d1c3cacf
  9. README.md GitHub · GaryOderNichts/evwii · Revision 978b006