2015-06-27 21:45:31 +00:00
|
|
|
from numpy import *
|
|
|
|
from struct import pack
|
|
|
|
|
2017-06-02 23:20:25 +00:00
|
|
|
def convert_coefs(c):
|
2015-06-27 21:45:31 +00:00
|
|
|
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)
|
2017-06-02 23:20:25 +00:00
|
|
|
return [int(round(n / m * 32767)) & 0xffff for x in cw for n in x]
|
|
|
|
|
|
|
|
def pack_coefs(short_coefs):
|
|
|
|
return b''.join(pack('>H', c) for c in short_coefs)
|
2015-06-27 21:45:31 +00:00
|
|
|
|
2017-06-03 21:45:52 +00:00
|
|
|
x = linspace(-2, 2, 512, endpoint=True)
|
2015-06-27 21:45:31 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
|
2017-06-02 23:20:25 +00:00
|
|
|
short_coefs = convert_coefs(coef_1) + convert_coefs(coef_2) + convert_coefs(coef_3) + [0] * 512
|
|
|
|
|
2017-06-03 21:45:52 +00:00
|
|
|
# needed for GBA ucode
|
|
|
|
gba_coefs = (
|
|
|
|
(0x03b, 0x0065),
|
|
|
|
(0x043, 0x0076),
|
|
|
|
(0x0ca, 0x3461),
|
|
|
|
(0x0e2, 0x376f),
|
|
|
|
(0x1b8, 0x007f),
|
|
|
|
(0x1b8, 0x007f),
|
|
|
|
(0x1f8, 0x0009),
|
|
|
|
(0x1fc, 0x0003),
|
|
|
|
(0x229, 0x657c),
|
|
|
|
(0x231, 0x64fc),
|
|
|
|
(0x259, 0x6143),
|
|
|
|
(0x285, 0x5aff),
|
|
|
|
(0x456, 0x102f),
|
|
|
|
(0x468, 0xf808),
|
|
|
|
(0x491, 0x6a0f),
|
|
|
|
(0x5f1, 0x0200),
|
|
|
|
(0x5f6, 0x7f65),
|
|
|
|
(0x65b, 0x0000),
|
|
|
|
(0x66b, 0x0000),
|
|
|
|
(0x66c, 0x06f2),
|
|
|
|
(0x6fe, 0x0008),
|
|
|
|
(0x723, 0xffe0),
|
|
|
|
(0x766, 0x0273),
|
|
|
|
)
|
|
|
|
for (addr, value) in gba_coefs:
|
|
|
|
old_value = short_coefs[addr]
|
|
|
|
if old_value != value:
|
|
|
|
print("At %04x: replacing %04x with %04x (diff. of % #x)" % (addr, old_value, value, value - old_value))
|
|
|
|
short_coefs[addr] = value
|
|
|
|
|
2015-06-27 21:45:31 +00:00
|
|
|
with open('dsp_coef.bin', 'wb') as f:
|
2017-06-02 23:20:25 +00:00
|
|
|
f.write(pack_coefs(short_coefs))
|