1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
.include "asm/macros.inc"
.include "global.inc"
.section .bss
.global SNDi_Work
SNDi_Work: ;0x03807F6C
.space 0x038084AC - 0x03807F6C
#todo unsure if these two belong here
.global _038084AC
_038084AC: ;0x038084AC
.space 0x038086EC - 0x038084AC
.global _038086EC
_038086EC: ;0x038086EC
.space 0x03808EEC - 0x038086EC
.section .text
arm_func_start SND_UpdateSharedWork
SND_UpdateSharedWork: ; 0x037FF448
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r5, #0
mov r4, r5
ldr r0, _037FF4E4 ; =SNDi_SharedWork
ldr r0, [r0]
cmp r0, #0
beq _037FF4D8
mov r7, r5
mov r6, #1
_037FF470:
mov r0, r7
bl SND_IsChannelActive
cmp r0, #0
orrne r0, r5, r6, lsl r7
movne r0, r0, lsl #16
movne r5, r0, lsr #16
add r7, r7, #1
cmp r7, #16
blt _037FF470
mov r0, #0
bl SND_IsCaptureActive
cmp r0, #0
orrne r0, r4, #1
movne r0, r0, lsl #16
movne r4, r0, lsr #16
mov r0, #1
bl SND_IsCaptureActive
cmp r0, #0
orrne r0, r4, #2
movne r0, r0, lsl #16
movne r4, r0, lsr #16
ldr r0, _037FF4E4 ; =SNDi_SharedWork
ldr r1, [r0]
strh r5, [r1, #8]
ldr r0, [r0]
strh r4, [r0, #10]
_037FF4D8:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
_037FF4E4: .word SNDi_SharedWork
arm_func_start SND_SetPlayerGlobalVariable
SND_SetPlayerGlobalVariable: ; 0x037FF4E8
ldr r2, _037FF500 ; =SNDi_SharedWork
ldr r2, [r2]
add r0, r2, r0, lsl #1
add r0, r0, #512 ; 0x200
strh r1, [r0, #96] ; 0x60
bx lr
_037FF500: .word SNDi_SharedWork
arm_func_start SND_SetPlayerLocalVariable
SND_SetPlayerLocalVariable: ; 0x037FF504
ldr r3, _037FF520 ; =SNDi_SharedWork
ldr ip, [r3]
mov r3, #36 ; 0x24
mla r3, r0, r3, ip
add r0, r3, r1, lsl #1
strh r2, [r0, #32]
bx lr
_037FF520: .word SNDi_SharedWork
|