summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorLinktothepast <kostamarino@gmail.com>2015-09-28 16:50:35 +0300
committerLinktothepast <kostamarino@gmail.com>2015-09-28 16:50:35 +0300
commit748be565b8df535ef558e74b38cd0f4d615f8a21 (patch)
treeb151efee0a87e99125f2401325a9bddecf84fc73 /docs
parentcf17fccdd3093a1b8476b10183b1c4bde36da74d (diff)
parentce493b897d6d3735c930a8465cc0c26bbe5feb86 (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.txt13
-rw-r--r--docs/DSP/free_dsp_rom/generate_coefs.py25
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)