Restored sound filters as disabling them caused too many side effects with some 32X games

This commit is contained in:
root 2021-05-22 19:40:01 +02:00
parent 45e3128e13
commit 6704bddae6

View File

@ -156,7 +156,7 @@ m16_32_s2_no_unal2:
@ limit
@ reg=int_sample, r12=1, r8=tmp, kills flags
.macro Limit reg
@ sub \reg, \reg, \reg, asr #2 @ reduce audio lvl some to avoid clipping
sub \reg, \reg, \reg, asr #2 @ reduce audio lvl some to avoid clipping
add r8, r12, \reg, asr #15
bics r8, r8, #1 @ in non-overflow conditions r8 is 0 or 1
movne \reg, #0x8000
@ -166,7 +166,7 @@ m16_32_s2_no_unal2:
@ limit and shift up by 16
@ reg=int_sample, r12=1, r8=tmp, kills flags
.macro Limitsh reg
@ sub \reg, \reg, \reg, asr #2 @ reduce audio lvl some to avoid clipping
sub \reg, \reg, \reg, asr #2 @ reduce audio lvl some to avoid clipping
add r8, r12,\reg, asr #15
bics r8, r8, #1 @ in non-overflow conditions r8 is 0 or 1
moveq \reg, \reg, lsl #16
@ -177,21 +177,21 @@ m16_32_s2_no_unal2:
@ filter out DC offset
@ in=int_sample (max 20 bit), y=filter memory, r8=tmp
@.macro DCfilt in y
@ rsb r8, \y, \in, lsl #12 @ fixpoint 20.12
@ add \y, \y, r8, asr #12 @ alpha = 1-1/4094
@ sub \in, \in, \y, asr #12
@.endm
.macro DCfilt in y
rsb r8, \y, \in, lsl #12 @ fixpoint 20.12
add \y, \y, r8, asr #12 @ alpha = 1-1/4094
sub \in, \in, \y, asr #12
.endm
@ lowpass filter
@ in=int_sample (max 20 bit), y=filter memory, r12=alpha(Q8), r8=tmp
@.macro LPfilt in y
.macro LPfilt in y
@ asr r8, \y, #8
@ rsb r8, r8, \in, lsl #4 @ fixpoint 20.12
@ sub r8, \in, \y, asr #12 @ fixpoint 20.12
@ mla \y, r8, r12, \y
@ asr \in, \y, #12
@.endm
sub r8, \in, \y, asr #12 @ fixpoint 20.12
mla \y, r8, r12, \y
asr \in, \y, #12
.endm
@ mix 32bit audio (with 16bits really used, upper bits indicate overflow) with normal 16 bit audio with left channel only
@ -220,14 +220,14 @@ m32_16l_st_loop:
add r6, r6, r12,asr #16
add r7, r7, r12,asr #16
ldr r12,[sp]
@ LPfilt r4, r3
@ LPfilt r5, lr
@ LPfilt r6, r3
@ LPfilt r7, lr
@ DCfilt r4, r10
@ DCfilt r5, r11
@ DCfilt r6, r10
@ DCfilt r7, r11
LPfilt r4, r3
LPfilt r5, lr
LPfilt r6, r3
LPfilt r7, lr
DCfilt r4, r10
DCfilt r5, r11
DCfilt r6, r10
DCfilt r7, r11
mov r12,#1
Limitsh r4
Limitsh r5
@ -248,10 +248,10 @@ m32_16l_st_end:
add r4, r4, r6
add r5, r5, r6
ldr r12,[sp]
@ LPfilt r4, r3
@ LPfilt r5, lr
@ DCfilt r4, r10
@ DCfilt r5, r11
LPfilt r4, r3
LPfilt r5, lr
DCfilt r4, r10
DCfilt r5, r11
mov r12,#1
Limitsh r4
Limitsh r5
@ -286,8 +286,8 @@ mix_32_to_16_mono:
sub r2, r2, #1
add r4, r4, r5
ldr r12,[sp]
@ LPfilt r4, r11
@ DCfilt r4, r10
LPfilt r4, r11
DCfilt r4, r10
mov r12,#1
Limit r4
strh r4, [r0], #2
@ -306,14 +306,14 @@ m32_16_mo_loop:
mov r12,r12,lsl #16
add r6, r6, r12,asr #16
ldr r12,[sp]
@ LPfilt r4, r11
@ LPfilt r5, r11
@ LPfilt r6, r11
@ LPfilt r7, r11
@ DCfilt r4, r10
@ DCfilt r5, r10
@ DCfilt r6, r10
@ DCfilt r7, r10
LPfilt r4, r11
LPfilt r5, r11
LPfilt r6, r11
LPfilt r7, r11
DCfilt r4, r10
DCfilt r5, r10
DCfilt r6, r10
DCfilt r7, r10
mov r12,#1
Limitsh r4
Limitsh r5
@ -335,10 +335,10 @@ m32_16_mo_end:
mov r6, r6, lsl #16
add r4, r4, r6, asr #16
ldr r12,[sp]
@ LPfilt r4, r11
@ LPfilt r5, r11
@ DCfilt r4, r10
@ DCfilt r5, r10
LPfilt r4, r11
LPfilt r5, r11
DCfilt r4, r10
DCfilt r5, r10
mov r12,#1
Limitsh r4
Limitsh r5
@ -352,8 +352,8 @@ m32_16_mo_no_unal2:
ldr r4, [r1], #4
add r4, r4, r5
ldr r12,[sp]
@ LPfilt r4, r11
@ DCfilt r4, r10
LPfilt r4, r11
DCfilt r4, r10
mov r12,#1
Limit r4
strh r4, [r0], #2
@ -411,14 +411,14 @@ m32_16l_st_l_loop:
mov r6, r6, asr r9
mov r7, r7, asr r9
ldr r12,[sp]
@ LPfilt r4, r3
@ LPfilt r5, lr
@ LPfilt r6, r3
@ LPfilt r7, lr
@ DCfilt r4, r10
@ DCfilt r5, r11
@ DCfilt r6, r10
@ DCfilt r7, r11
LPfilt r4, r3
LPfilt r5, lr
LPfilt r6, r3
LPfilt r7, lr
DCfilt r4, r10
DCfilt r5, r11
DCfilt r6, r10
DCfilt r7, r11
mov r12,#1
Limitsh r4
Limitsh r5
@ -441,10 +441,10 @@ m32_16l_st_l_end:
mov r4, r4, asr r9
mov r5, r5, asr r9
ldr r12,[sp]
@ LPfilt r4, r3
@ LPfilt r5, lr
@ DCfilt r4, r10
@ DCfilt r5, r11
LPfilt r4, r3
LPfilt r5, lr
DCfilt r4, r10
DCfilt r5, r11
mov r12,#1
Limitsh r4
Limitsh r5