summaryrefslogtreecommitdiff
path: root/arm9/asm/SND_util.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/asm/SND_util.s')
-rw-r--r--arm9/asm/SND_util.s39
1 files changed, 39 insertions, 0 deletions
diff --git a/arm9/asm/SND_util.s b/arm9/asm/SND_util.s
new file mode 100644
index 00000000..8a35db45
--- /dev/null
+++ b/arm9/asm/SND_util.s
@@ -0,0 +1,39 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start SND_CalcChannelVolume
+SND_CalcChannelVolume: ; 0x020CF6F4
+ ldr r1, _020CF75C ; =0xFFFFFD2D
+ cmp r0, r1
+ movlt r0, r1
+ blt _020CF70C
+ cmp r0, #0x0
+ movgt r0, #0x0
+_020CF70C:
+ ldr r1, _020CF760 ; =0x000002D3
+ ldr r2, _020CF764 ; =0x02103CAC
+ add r3, r0, r1
+ mvn r1, #0xef
+ cmp r0, r1
+ ldrb r2, [r2, r3]
+ movlt r0, #0x3
+ blt _020CF74C
+ mvn r1, #0x77
+ cmp r0, r1
+ movlt r0, #0x2
+ blt _020CF74C
+ mvn r1, #0x3b
+ cmp r0, r1
+ movlt r0, #0x1
+ movge r0, #0x0
+_020CF74C:
+ orr r0, r2, r0, lsl #0x8
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ bx lr
+ .balign 4
+_020CF75C: .word 0xFFFFFD2D
+_020CF760: .word 0x000002D3
+_020CF764: .word 0x02103CAC