dolphin/docs/DSP/free_dsp_rom/dsp_rom_readme.txt

65 lines
2.3 KiB
Plaintext
Raw Normal View History

Legal GC/WII DSP IROM replacement (v0.3.1)
-------------------------------------------------------
- irom: When running from the ROM entrypoint, skip the bootucode_ax branch
of the bootucode procedure. Since the ROM doesn't set any of the AX
registers, it could cause bad DMA transfers and crashes.
ligfx
10/aug/2017
Legal GC/WII DSP IROM replacement (v0.3)
-------------------------------------------------------
- coef: Explicitly set 23 different values that are used by GBA UCode, and
tweaked overall parameters to more closely match those 23 values.
- irom: Moved a few functions to their proper places, updated BootUCode to
configure DMA transfers using AX registers as well as IX registers (the GBA
UCode uses this to do two sequential transfers in one call), and added
partial functions used by GBA UCode.
ligfx
2/june/2017
Legal GC/WII DSP IROM replacement (v0.2.1)
-------------------------------------------------------
- coef: 4-tap polyphase FIR filters
- irom: unchanged
Coefficients are roughly equivalent to those in the official DROM.
Improves resampling quality greatly over linear interpolation.
See generate_coefs.py for details.
stgn
29/june/2015
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 22:54:55 +00:00
Legal GC/WII DSP IROM replacement (v0.2)
-------------------------------------------------------
- coef: crafted to use a linear interpolation when resampling (instead of
having a real 4 TAP FIR filter)
- irom: added all the mixing functions, some functions not used by AX/Zelda are
still missing
Should work with all AX, AXWii and Zelda UCode games. Card/IPL/GBA are most
likely still broken with it and require a real DSP ROM.
delroth
16/march/2013
Legal GC/WII DSP IROM replacement (v0.1)
-------------------------------------------------------
- coef: fake (zeroes)
- irom: reversed and rewrote ucode loading/reset part, everything else is missing
Good enough for Zelda ucode games (and maybe some AX too):
- WII: SMG 1/2, Pikmin 1/2 WII, Zelda TP WII, Donkey Kong Jungle Beat (WII), ...
- GC: Mario Kart Double Dash, Luigi Mansion, Super Mario Sunshine, Pikmin 1/2, Zelda WW, Zelda TP, ...
Basically... If game is not using coef and irom mixing functions it will work ok.
Dolphin emulator will report wrong CRCs, but it will work ok with mentioned games.
LM
31/july/2011