总的来说,SoC中包含两个音频模块:
- 一个专为声音操作编程的专有DSP。 这由3DS游戏使用。
- 一个名为CSND的NDS音频模块的变体。 3DS、DS和GBA游戏都使用它。
3DS专用硬件
你可能知道,这个DSP之前也捆绑在任天堂DSi中,但被视为可选加速器。 在3DS中,它成为了指定的音频处理器,因此不再是可选组件。
该DSP名为CEVA TeakLite II ,运行频率约为134 MHz 。 它由ParthusCeva制造,该公司提供用于音频处理的可综合核心 ,我猜"synthesisable"是任天堂在合作时寻找的关键词。
此外,该DSP输出采样率高达32 kHz、16 bit的立体声样本(2通道)。
在这个组件旁边,我们可以找到512 KB的RAM,供DSP作为工作区使用。 它是双缓冲的(每个缓冲区256 KB),因此CPU和DSP都可以不间断地读写 。 除此之外,DSP还带有一个专用的DMA,可以在这512 KB内存中传输数据。
操作
出于所有目的和意图,游戏将此视为一个不透明的DSP。 因此,只有任天堂知道如何对其进行编程。
3DS编程,由于使用官方SDK开发,捆绑了一个DSP固件(完全由任天堂编写),该固件在运行时上传到DSP芯片 。 之后,程序依赖该固件执行与音频相关的例程。 此外,操作系统提供的音频服务进一步抽象了程序与DSP固件之间的通信 。
无论如何,尽管DSP固件可能多年来有所变化,但某些功能保持不变。 例如,DSP可以混合ADPCM和PCM样本。 支持多达24个通道 。 还有滤波和排序功能,包括生成PSG类声音。
有趣的是,破解3DS(使其可以执行自制应用程序)的步骤中,可选地涉及提取HOME菜单的DSP固件,以便自制程序可以使用它提供音频输出 。
向下兼容模块
另一方面,我们找到了CSND模块。 3DS可以将其用作DSP的扩展,而DS/DSi/GBA游戏则依赖它来模拟其硬件。
在功能方面,CSND具有32个通道,是NDS对应模块的两倍。
奇怪的是,早期的自制程序默认使用此模块提供声音,同时等待DSP被逆向工程。
流水线
DSP和CSND都独立工作,并分别将音频输出到扬声器。
值得注意的是,最初的任天堂3DS与扬声器的功能配合不佳,任天堂最终为嗡嗡声和3D滑块波动的情况提供了故障排除指南 ,所有这些都是由外壳设计引起的。
