sound, fix mcd cdda (mono, resampling), type cleanup, remove minimp3

This commit is contained in:
kub 2022-02-08 20:49:43 +00:00
parent 9f1d5acdb4
commit f7741cac91
14 changed files with 193 additions and 89 deletions

View file

@ -153,6 +153,92 @@ m16_32_s2_no_unal2:
.global mix_16h_to_32_resample_stereo @ int *dest, short *src, int count, int fac16
mix_16h_to_32_resample_stereo:
stmfd sp!, {r4-r9,lr}
subs r2, r2, #2
mov r4, #0
bmi m16_32_rss_end
m16_32_rss_loop:
ldmia r0, {r5-r8}
lsr r9, r4, #16
ldr r12,[r1, r9, lsl #2]
add r4, r4, r3
lsr r9, r4, #16
ldr lr ,[r1, r9, lsl #2]
add r4, r4, r3
subs r2, r2, #2
add r6, r6, r12,asr #17
mov r12,r12,lsl #16
add r5, r5, r12,asr #17 @ we use half volume
add r8, r8, lr, asr #17
mov lr, lr, lsl #16
add r7, r7, lr, asr #17
stmia r0!,{r5-r8}
bpl m16_32_rss_loop
m16_32_rss_end:
tst r2, #1
ldmeqfd sp!, {r4-r9,pc}
lsr r9, r4, #16
ldr lr ,[r1, r9, lsl #2]
ldmia r0, {r5,r6}
mov r12,lr, lsl #16
add r5, r5, r12,asr #17
add r6, r6, lr, asr #17
stmia r0!,{r5,r6}
ldmfd sp!, {r4-r9,lr}
bx lr
.global mix_16h_to_32_resample_mono @ int *dest, short *src, int count, int fac16
mix_16h_to_32_resample_mono:
stmfd sp!, {r4-r6,r9,lr}
subs r2, r2, #2
mov r4, #0
bmi m16_32_rsm_end
m16_32_rsm_loop:
ldmia r0, {r5-r6}
lsr r9, r4, #16
ldr r12,[r1, r9, lsl #2]
add r4, r4, r3
lsr r9, r4, #16
ldr lr ,[r1, r9, lsl #2]
add r4, r4, r3
subs r2, r2, #2
add r5, r5, r12,asr #18
mov r12,r12,lsl #16
add r5, r5, r12,asr #18 @ we use half volume (= quarter vol per channel)
add r6, r6, lr, asr #18
mov lr, lr, lsl #16
add r6, r6, lr, asr #18
stmia r0!,{r5-r6}
bpl m16_32_rsm_loop
m16_32_rsm_end:
tst r2, #1
ldmeqfd sp!, {r4-r6,r9,pc}
lsr r9, r4, #16
ldr lr ,[r1, r9, lsl #2]
ldr r5, [r0]
mov r12,lr, lsl #16
add r5, r5, r12,asr #18
add r5, r5, lr, asr #18
str r5, [r0]
ldmfd sp!, {r4-r6,r9,lr}
bx lr
@ limit
@ reg=int_sample, r12=1, r8=tmp, kills flags
.macro Limit reg