1 @ Copyright (c) 2003-2021 James Daniels
2 @ Distributed under the MIT License
3 @ license terms: see LICENSE file in root or http://opensource.org/licenses/MIT
6 .SECTION .text,"ax",%progbits
12 .GLOBAL AAS_MixAudio_SetMode_Normal
13 .GLOBAL AAS_MixAudio_SetMode_Boost
14 .GLOBAL AAS_MixAudio_SetMode_BoostAndClip
16 .GLOBAL AAS_MixAudio_SetMaxChans_2
17 .GLOBAL AAS_MixAudio_SetMaxChans_4
18 .GLOBAL AAS_MixAudio_SetMaxChans_8
20 .GLOBAL _AAS_vol_lookup
23 @ Volume lookup table. -1 means use multiply, 0 to 7 means use bit shift.
26 .byte 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, 4
27 .byte -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5
28 .byte -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
29 .byte -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6
30 .byte -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
31 .byte -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
32 .byte -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
33 .byte -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7
41 _ma_mlane_r5_r0_r3_r5:
44 _ma_add_r5_r5_r0_lsl_0:
49 _ma_merge_noclip_start:
59 and r10,r14,r10,lsr #8
60 and r11,r14,r11,lsr #8
61 and r12,r14,r12,lsr #8
71 subs r14,r14,#0x2000000
72 .word 0xdaffffa5 @ ble ma_end
79 _ma_merge_boostnoclip_start:
89 and r10,r14,r10,lsr #7
90 and r11,r14,r11,lsr #7
91 and r12,r14,r12,lsr #7
101 subs r14,r14,#0x2000000
102 .word 0xdaffffa5 @ ble ma_end
106 _ma_merge_boostnoclip_end:
109 _ma_merge_clip_start:
110 _ma_mask_0x80808080: .word 0x80808080
117 .word 0xe51f2018 @ ldr r2,_ma_mask_0x80808080
127 beq no_clip1 @ perhaps not worthwhile?
145 beq no_clip2 @ perhaps not worthwhile?
156 and r1,r14,r10,lsr #8
159 and r10,r14,r10,lsr #7
163 beq no_clip3 @ perhaps not worthwhile?
173 and r0,r14,r11,lsr #8
174 and r1,r14,r12,lsr #8
176 and r11,r14,r11,lsr #7
177 and r12,r14,r12,lsr #7
178 add r8,r11,r12,lsl #8
181 beq no_clip4 @ perhaps not worthwhile?
195 subs r14,r14,#0x2000000
196 .word 0xdaffff6d @ ble ma_end
203 add r12,pc,#0x540 @ adr r12,ma_buffer_start
204 .word 0xea000091 @ b ma_start
205 add r0,pc,#0x248 @ adr r0,ma_again
208 add r12,pc,#0x460 @ adr r12,ma_buffer_start
209 .word 0xea000059 @ b ma_start
210 add r0,pc,#0x23c @ adr r0,ma_again
213 AAS_MixAudio_SetMode_BoostAndClip:
215 adr r0,_ma_merge_clip_start
216 mov r2,#((_ma_merge_clip_end-_ma_merge_clip_start)/4)
219 ldr r1,=_AAS_MixAudio_mod4
220 add r2,r2,#0x84000000
225 ldr r0,=_AAS_MixAudio_mod1
227 ldr r0,=_AAS_MixAudio_mod2
229 ldr r0,=_AAS_MixAudio_mod3
234 AAS_MixAudio_SetMode_Normal:
236 adr r0,_ma_merge_noclip_start
237 mov r2,#((_ma_merge_noclip_end-_ma_merge_noclip_start)/4)
241 AAS_MixAudio_SetMode_Boost:
243 adr r0,_ma_merge_boostnoclip_start
244 mov r2,#((_ma_merge_boostnoclip_end-_ma_merge_boostnoclip_start)/4)
267 AAS_MixAudio_SetMaxChans_4:
272 ldr r12,=_AAS_MixAudio_mod5
274 ldr r12,=_AAS_MixAudio_mod6
276 ldr r12,=_AAS_MixAudio_mod7
278 ldr r12,=_AAS_MixAudio_mod8
283 AAS_MixAudio_SetMaxChans_8:
288 AAS_MixAudio_SetMaxChans_2: