3DS 实机里有一个 DSP 芯片,专门处理音频数据,例如音频解码、混音等
(DSP 芯片类似 CPU,可以运行程序,但只用于音频。)
每个 3DS 游戏启动时都会向 DSP 芯片发送一个 DSP 程序处理音频
之后游戏运行时向 DSP 芯片发送音频数据
也就是 DSP 通过游戏传出的执行程序处理音频解码、混音等数据
最初 Citra 开发人员写 DSP 时发现绝大部分游戏向 DSP 发送的程序都是一样的
所以 Citra 用的是 HLE DSP
即忽略游戏发送的 DSP 程序
直接在 C++ 里重新实现这个 DSP 程序的内容,处理音频
换句话说目前 CItra 就是不接收 DSP 程序,直接把 DSP 程序写死在 Citra 里
但现在的发现 XY 等游戏发送的 DSP 程序和大部分的游戏不一样,它包含了一个 AAC 解码模块
现在要做的是要让 Citra 能够接收处理 DSP 程序,按照里面的指令执行
困难的地方在于,3DS 用的 DSP 芯片的型号特殊,很难找全资料
所以 Citra 开发人员要先搞清楚怎么读它的程序指令
也因此要不断测试才能知道怎么解读机器语言
来自@matif525发的关于xy的说明