dolphin/docs/DSP
Pierre Bourdon 9a404ca6d4 Ship by default a free DSP ROM that can handle most games with LLE
At the end of July 2011, LM published a free DSP ROM that works with games
using the Zelda UCode. His ROM only has the code to handle UCode loading and a
few utility functions, the rest is missing. This includes the four large sound
mixing functions used by the AX UCode and the DROM containing coefficients used
for polyphase resampling in AX.

This is an improved, updated version of this ROM, which changes the following:

- We now have a free DROM that works for polyphase resampling by "emulating"
  linear interpolation. The coefficients contained in the DROM are normally a
  list of { c1, c2, c3, c4 } which are used to interpolate a sample value from
  four previous samples:
    out_sample = prev1 * c1 + prev2 * c2 + prev3 * c3 + prev4 * c4

  The coefficients are chosen depending on the fractional part of the current
  position (basically, our position between the previous and the next sample).
  We can use this fact to generate (c1, c2, c3, c4) for each possible
  fractional part so that:
    out_sample = prev3 * curr_pos + prev4 * (1 - curr_pos)

  Which is the formula for linear interpolation between prev3 and prev4. Linear
  interpolation is not as good as polyphase resampling but it still works very
  well and I couldn't really hear any difference between the two. If someone
  wants to generate real polyphase filter coefficients, they are welcome to
  submit a patch.

- The IROM now contains the 4 mixing functions used by the AX UCode: mix_add,
  mix_add_two, mix_add_ramp, mix_add_ramp_two. They are large, inlined
  functions (probably for performance reasons) in the official DSP IROM, our
  version prefers to use a loop. This *should* be more performant with our DSP
  JIT implementation, but I did not benchmark that.

Because the new DSP ROM is working just as well as the official ROM in 95% of
cases, it is now shipped by default with Dolphin and will be used with DSPLLE
if you don't have an official DSP ROM in User/GC. It will still display a panic
alert at every boot to notice you that you are using a non official DSP ROM
made by us, which is not perfect.

Games using the CARD, IPL or GBA UCodes are still broken. I don't know what
games this actually impacts, but this is a very small proportion compared to
what works.
2013-03-16 23:54:55 +01:00
..
DSP_InterC drop vs2008 projects in favor of vs2010 2011-02-11 15:43:05 +00:00
free_dsp_rom Ship by default a free DSP ROM that can handle most games with LLE 2013-03-16 23:54:55 +01:00
DSP_UC_AXWii.txt Hg: 2010-06-09 01:37:08 +00:00
DSP_UC_AX_DD7E72D5.txt dsp stuff - the same ucode hash under lle and hle now (had to rename couple of dissasms), ucode dumping under hle (debug only), small dsp:read32 change (needed for some homebrew) 2010-08-05 17:00:32 +00:00
DSP_UC_GBA.txt dsp stuff - the same ucode hash under lle and hle now (had to rename couple of dissasms), ucode dumping under hle (debug only), small dsp:read32 change (needed for some homebrew) 2010-08-05 17:00:32 +00:00
DSP_UC_IPL_24B22038.txt dsp stuff - the same ucode hash under lle and hle now (had to rename couple of dissasms), ucode dumping under hle (debug only), small dsp:read32 change (needed for some homebrew) 2010-08-05 17:00:32 +00:00
DSP_UC_Luigi.txt Hg: 2010-06-09 01:37:08 +00:00
DSP_UC_MP2.txt Some RE on MP2 ucode 2009-07-20 19:12:39 +00:00
DSP_UC_Pikmin2Wii.txt Hg: 2010-06-09 01:37:08 +00:00
DSP_UC_PikminWii.txt Hg: 2010-06-09 01:37:08 +00:00
DSP_UC_ROM.txt ROM dissasm "refresh" + RE + small fixes 2010-01-24 00:31:20 +00:00
DSP_UC_SuperMarioGalaxy.txt Hg: 2010-06-09 01:37:08 +00:00
DSP_UC_Zelda.txt allow "swapping" of hle'd ucodes 2010-08-04 11:44:06 +00:00
DSP_UC_Zelda_Wii.txt Hg: 2010-06-09 01:37:08 +00:00
GC_DSP.pdf Meta: 2010-06-02 18:00:22 +00:00
Zelda.txt Meta: 2010-06-02 18:00:22 +00:00
prefix_replace.py Meta: 2010-06-02 18:00:22 +00:00
unlockmemcard.ds Meta: 2010-06-02 18:00:22 +00:00
wwdsp.c Hg: 2010-06-09 01:37:08 +00:00
zeldaNotes.txt Meta: 2010-06-02 18:00:22 +00:00