diff --git a/Zelda-Microcode.md b/Zelda-Microcode.md index ed6b64c..a3da0c2 100644 --- a/Zelda-Microcode.md +++ b/Zelda-Microcode.md @@ -2,7 +2,7 @@ --- - There are four known versions of this uCode: the accelerator version, the DMA version, the light version and the SMS version. -- The accelerator version uses DPS's accelerator to read sound data, whereas the DMA version reads sound data by DMA transfers. +- The accelerator version uses the DSP's accelerator to read sound data, whereas the DMA version reads sound data by DMA transfers. - Most Zelda games use the accelerator version. Super Mario Galaxy uses the DMA version. - The light version doesn't use exceptions at all and has a different communication protocol which needs less mails from CPU. Luigi's Mansion, Pikmin and some other games use the light version. - The SMS version uses a different communication protocol which requires three sync mails every frame instead of two every 16 PBs. Super Mario Sunshine uses the SMS version (hence its name). @@ -21,7 +21,7 @@ These are all the mails that the game sends to the DSP upon initialization: ``` 00000002 8E000000 -90000800 -> Bit0-30: DMA Base address for sound data transfers from main mem +90000800 -> Bit0-30: DMA Base address for sound data transfers from main memory ``` Note that this command is available only in DMA version. @@ -55,7 +55,7 @@ These are all the mails that the game continuously sends to the DSP. 00000000 -> Unused ``` -The Legened of Zelda: Wind Waker keeps sending these forever, alternating between three different sets of buffers. +The Legend of Zelda: Wind Waker keeps sending these forever, alternating between three different sets of buffers. ### Synchronization Mails @@ -234,7 +234,7 @@ Phew. Now that your DsyncFrame successfully completed, you have to send another Like the well-known AX ucode, the Zelda ucode uses one parameter block (PB) per voice. (The number of voices is set by DsetupTable command). It also uses 4 much smaller PBs which seem to be used for something like reverb... -But let's work on the most important PBs, the voice ones. They can be found at the first address passed by DsetupTable command. Each block is 384 bytes long, ie 192 words. +But let's work on the most important PBs, the voice ones. They can be found at the first address passed by DsetupTable command. Each block is 384 bytes long (i.e. 192 words). Here is a table of what has been figured out inside these PBs (some parts of it may be wrong):