"Here's what I know: There's two sound codes, AX and non-AX. The DSP documentation

has not been distributed outside of Nintendo so only they can make new sound codes,

and they made two of them. One called AX that SDK users use, and another one for

themselves that many of their games use, for example Mario, Zelda, Pikmin and other

games. The HLE plugin is close to emulating the AX code fully, there's just a few

bugs left. But the non-AX code is not emulated at all by the HLE plugin, except for

one or two boot mails that you can find in UCode_Zelda.cpp.



The non-AX code has been converted to C code to some extent, but not well enough to

make a HLE plugin out of it as I understand it. So the first step towards getting

sound in Zelda is for example to make a non-AX game boot when you use the LLE

plugin. Currently all non-AX games freeze after a second or two as the non-AX code

ends up in the HALT function that stops all execution. So something goes wrong

during the first mail communications.



There's several things one could do next, (i) try to make sense of the mail

communication and find the incorrect mails. The mails in the HLE plugin looked

simple but in the LLE plugin there was something like 20 different mails before HALT

and I could not understand any of them. (ii) Check if the non-AX code has opcodes

that the AX code don't and find out if any of them fail and in that case try to fix

them. (iii) Start making HLE versions of frequently executed opcodes and hope that

luck strikes so that it fixes the emulation."