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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
.include "asm/macros.inc"
.include "global.inc"
.section .bss
.global sCaptureLock
sCaptureLock: ; 0x021D1CB0
.space 0x4
.global sAlarmLock
sAlarmLock: ; 0x021D1CB4
.space 0x4
.global sChannelLock
sChannelLock: ; 0x021D1CB8
.space 0x4
.section .text
arm_func_start NNSi_SndInitResourceMgr
NNSi_SndInitResourceMgr: ; 0x020C0270
ldr r2, _020C0290 ; =sChannelLock
mov r3, #0x0
ldr r1, _020C0294 ; =sCaptureLock
ldr r0, _020C0298 ; =sAlarmLock
str r3, [r2, #0x0]
str r3, [r1, #0x0]
str r3, [r0, #0x0]
bx lr
.balign 4
_020C0290: .word sChannelLock
_020C0294: .word sCaptureLock
_020C0298: .word sAlarmLock
arm_func_start NNS_SndFreeAlarm
NNS_SndFreeAlarm: ; 0x020C029C
ldr r1, _020C02B8 ; =sAlarmLock
mov r2, #0x1
mvn r0, r2, lsl r0
ldr r2, [r1, #0x0]
and r0, r2, r0
str r0, [r1, #0x0]
bx lr
.balign 4
_020C02B8: .word sAlarmLock
arm_func_start NNS_SndAllocAlarm
NNS_SndAllocAlarm: ; 0x020C02BC
ldr r0, _020C02FC ; =sAlarmLock
mov r3, #0x1
ldr r2, [r0, #0x0]
mov r0, #0x0
_020C02CC:
ands r1, r2, r3
ldreq r1, _020C02FC ; =sAlarmLock
ldreq r2, [r1, #0x0]
orreq r2, r2, r3
streq r2, [r1, #0x0]
bxeq lr
add r0, r0, #0x1
cmp r0, #0x8
mov r3, r3, lsl #0x1
blt _020C02CC
mvn r0, #0x0
bx lr
.balign 4
_020C02FC: .word sAlarmLock
arm_func_start NNS_SndUnlockCapture
NNS_SndUnlockCapture: ; 0x020C0300
ldr r1, _020C0318 ; =sCaptureLock
mvn r0, r0
ldr r2, [r1, #0x0]
and r0, r2, r0
str r0, [r1, #0x0]
bx lr
.balign 4
_020C0318: .word sCaptureLock
arm_func_start NNS_SndLockCapture
NNS_SndLockCapture: ; 0x020C031C
ldr r1, _020C033C ; =sCaptureLock
ldr r2, [r1, #0x0]
ands r3, r0, r2
movne r0, #0x0
orreq r0, r2, r0
streq r0, [r1, #0x0]
moveq r0, #0x1
bx lr
.balign 4
_020C033C: .word sCaptureLock
arm_func_start NNS_SndUnlockChannel
NNS_SndUnlockChannel: ; 0x020C0340
stmdb sp!, {r4,lr}
movs r4, r0
ldmeqia sp!, {r4,pc}
mov r1, #0x0
bl SND_UnlockChannel
ldr r0, _020C036C ; =sChannelLock
mvn r1, r4
ldr r2, [r0, #0x0]
and r1, r2, r1
str r1, [r0, #0x0]
ldmia sp!, {r4,pc}
.balign 4
_020C036C: .word sChannelLock
arm_func_start NNS_SndLockChannel
NNS_SndLockChannel: ; 0x020C0370
stmdb sp!, {r4,lr}
movs r4, r0
moveq r0, #0x1
ldmeqia sp!, {r4,pc}
ldr r1, _020C03B4 ; =sChannelLock
ldr r1, [r1, #0x0]
ands r1, r4, r1
movne r0, #0x0
ldmneia sp!, {r4,pc}
mov r1, #0x0
bl SND_LockChannel
ldr r1, _020C03B4 ; =sChannelLock
mov r0, #0x1
ldr r2, [r1, #0x0]
orr r2, r2, r4
str r2, [r1, #0x0]
ldmia sp!, {r4,pc}
.balign 4
_020C03B4: .word sChannelLock
|