La Nintendo 64 enfrentó un obstáculo técnico significativo en cuanto al audio: el espacio en los cartuchos era extremadamente limitado y la CPU de 93 MHz tenía ciclos restringidos para el procesamiento. A diferencia de la PlayStation, que podía transmitir audio redbook sin comprimir desde un CD, la N64 requería formatos comprimidos para incluir música en los cartuchos. Aunque el coprocesador RSP (Reality Signal Processor) de la consola podía manejar cierta descompresión, las soluciones estándar a menudo eran inadecuadas. El ADPCM (Adaptive Differential Pulse Code Modulation) ahorraba espacio pero era ineficiente, a menudo requiriendo demasiado almacenamiento para pistas de alta calidad. Por el contrario, formatos modernos como MP3 o Opus proporcionaban una excelente compresión, pero eran demasiado costosos computacionalmente para ejecutarse durante el juego activo sin afectar gravemente la tasa de fotogramas.
El Ultra Low Complexity Codec (ULC) aborda estos problemas funcionando como una versión 'más simple' del formato MP3. Al igual que el MP3, el ULC es un códec de transformación que utiliza la Transformada Discreta de Coseno Modificada (MDCT) para convertir datos PCM al dominio de la frecuencia. Sin embargo, elimina la compleja codificación de entropía (como la codificación Huffman) utilizada en el MP3. En su lugar, el ULC utiliza una sintaxis basada en nibbles donde cada coeficiente se almacena en solo 4 bits. Este diseño permite que el decodificador funcione sin lecturas de bits arbitrarias, lo que lo hace altamente eficiente. El ULC también incluye una función de 'relleno de ruido', que es particularmente efectiva para codificar sonidos de percusión como platillos y redoblantes, elementos que el MP3 tiene dificultades para representar con precisión.
La implementación de ULC en la N64 requirió navegar por las severas limitaciones de memoria del RSP, específicamente su memoria de datos (DMEM) de 4096 bytes y su memoria de instrucciones (IMEM). Para ajustar el decodificador en este espacio, la implementación utiliza matemáticas de punto fijo de 16 bits (Q1.14) en lugar de flotantes de 32 bits. Esta elección reduce el tráfico DMA y acelera el cálculo, aunque técnicamente introduce un nivel de ruido más alto. En la práctica, el autor encontró que este ruido era insignificante. El decodificador resultante consume solo alrededor del 4% del tiempo de la CPU de la N64 y el 5% del tiempo del RSP, permitiendo audio estéreo de 44100 Hz con tasas de bits cercanas a las de Opus. Esta eficiencia se demuestra en el port de Half-Life para N64, donde el ULC permitió la inclusión de 2,500 sonidos y 27 pistas de música dentro de una imagen de cartucho de 64 MB.
Si bien el ULC es un avance para el hardware de N64, es importante notar que su eficiencia proviene de su sintaxis simplificada en lugar de un algoritmo más avanzado. Al evitar la 'basura' de los códecs de transformación estándar, logra un equilibrio entre calidad y rendimiento que ni el ADPCM ni el Opus podrían proporcionar en este hardware específico. Sin embargo, debido a que depende de matemáticas de punto fijo de 16 bits para cumplir con las limitaciones de memoria del RSP, puede no alcanzar la fidelidad máxima absoluta de un decodificador basado en flotantes, incluso si esa diferencia es casi imperceptible para el oyente.
