diff options
| author | Linktothepast <kostamarino@gmail.com> | 2015-09-28 16:50:35 +0300 |
|---|---|---|
| committer | Linktothepast <kostamarino@gmail.com> | 2015-09-28 16:50:35 +0300 |
| commit | 748be565b8df535ef558e74b38cd0f4d615f8a21 (patch) | |
| tree | b151efee0a87e99125f2401325a9bddecf84fc73 /docs | |
| parent | cf17fccdd3093a1b8476b10183b1c4bde36da74d (diff) | |
| parent | ce493b897d6d3735c930a8465cc0c26bbe5feb86 (diff) | |
Merge remote-tracking branch 'dolphin-emu/master' into gameinis
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/DSP/free_dsp_rom/dsp_rom_readme.txt | 13 | ||||
| -rw-r--r-- | docs/DSP/free_dsp_rom/generate_coefs.py | 25 |
2 files changed, 38 insertions, 0 deletions
diff --git a/docs/DSP/free_dsp_rom/dsp_rom_readme.txt b/docs/DSP/free_dsp_rom/dsp_rom_readme.txt index bcaa2eee43..7dc073a80b 100644 --- a/docs/DSP/free_dsp_rom/dsp_rom_readme.txt +++ b/docs/DSP/free_dsp_rom/dsp_rom_readme.txt @@ -1,3 +1,16 @@ +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
+
Legal GC/WII DSP IROM replacement (v0.2)
-------------------------------------------------------
diff --git a/docs/DSP/free_dsp_rom/generate_coefs.py b/docs/DSP/free_dsp_rom/generate_coefs.py new file mode 100644 index 0000000000..5b1771429d --- /dev/null +++ b/docs/DSP/free_dsp_rom/generate_coefs.py @@ -0,0 +1,25 @@ +from numpy import * +from struct import pack + +def pack_coefs(c): + cw = list(zip(c[ :128][::-1], + c[128:256][::-1], + c[256:384][::-1], + c[384: ][::-1])) + m = max(sum(x) for x in cw) + return b''.join(pack('>4h', *(int(round(n / m * 32767)) for n in x)) for x in cw) + +x = linspace(-2, 2, 512, endpoint=False) + +w1 = hamming(512) +w2 = kaiser(512, pi * 9/4) + +coef_1 = [sinc(n * 0.5) for n in x] * w1 +coef_2 = [sinc(n * 0.75) for n in x] * w2 +coef_3 = [sinc(n) for n in x] * w1 + +with open('dsp_coef.bin', 'wb') as f: + f.write(pack_coefs(coef_1)) + f.write(pack_coefs(coef_2)) + f.write(pack_coefs(coef_3)) + f.write(b'\0' * 1024) |
