diff --git a/pico/sound/mix_arm.S b/pico/sound/mix_arm.S index 24523a17..60438988 100644 --- a/pico/sound/mix_arm.S +++ b/pico/sound/mix_arm.S @@ -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