Skip to main content
Revolution Audio System
intermediate
ExploreProjectsRevolution Audio System

Revolution Audio System

This project implements a custom audio engine called BAudio, designed to run on the custom Macronix 16-bit audio DSP for the GameCube/Wii. It focuses on real-time audio processing and efficient DSP programming. The system handles playback, synthesis, mixing, ADSR envelopes, and DSP effects such as filtering, reverb, Dolby Pro Logic II, and message-based commands. All processing is executed through DSP microcode written in pure assembly, requiring careful optimization within the limited 8KB instruction memory. The goal of the project is to build a reliable and efficient audio pipeline while exploring low-level DSP techniques and real-time sound processing.

Milo Charming Magician
Milo Charming Magician
Published Apr 6, 2026
intermediate 2026/06/04 $0.00assemblyaudiodspengineprocessing
Macronix_logo_DSP
Macronix DSP16

Macronix 16-bit Audio DSP

This project develops BAudio, a custom audio engine designed for the Macronix 16-bit programmable DSP used in the Nintendo GameCube, Wii, and Wii U. The DSP acts as a slave processor dedicated to real-time audio processing, with built-in hardware support for ADPCM decoding to offload tasks from the CPU.

The system leverages 16 MB of ARAM to store PCM/ADPCM audio data, while also allowing additional data such as textures, animations, or other game assets. All DSP logic is implemented in assembly microcode, requiring careful instruction and memory optimization to operate efficiently within hardware constraints.

BAudio handles PCM/ADPCM playback, FM synthesis, mixing, ADSR envelopes, and DSP effects such as filtering, reverb, and Dolby Pro Logic II, along with message-based commands. The project demonstrates low-level DSP programming techniques and the creation of a reliable, high-performance audio pipeline in a constrained embedded environment as a 8KB program.

Macronix Audio DSP Hardware

dol-001
GCN DOL-001
motherboard.c11eef60926f6948aa1b9480635fbfcb7c6cd5379dea7263639b7ae7432ea4e1
Wii RVL-001
  • Clock: 81 MHz (GameCube) / 121.5 MHz (Wii)

  • Data Width: 16-bit, Big Endian

  • Memory:

    • Data RAM: 8 KB

    • Data ROM: 4 KB

    • Instruction RAM: 8 KB

    • Instruction ROM: 8 KB

  • Hardware Features: Built-in DSP ADPCM decoder

  • Boot ROM: Contains initialization microcode and data tables

Macronix DSP16 Development Kit

dsp16_ucode_tst
Macronix Audio DSP IDE
  • DSP IDE & Simulator – For writing, testing, and debugging DSP microcode in a virtual environment.

  • DSP Assembler – Converts assembly source code into machine instructions for the DSP.

  • DSP Linker – Links multiple object files and resolves addresses for DSP execution.

  • hex2bin – Converts hexadecimal output files into binary or C format for loading onto the DSP.

  • mxhex2h – Converts DSP hex files into C header files for integration with CPU-side code.