summaryrefslogtreecommitdiff
path: root/asm/nw4r/snd/detail/snd_Bank.s
blob: 0340f34397904dc5e3606bd30de3e32b21910a0e (plain)
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global __ct__Q44nw4r3snd6detail4BankFPCv
__ct__Q44nw4r3snd6detail4BankFPCv:
/* 8036C854 003684B4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8036C858 003684B8  7C 08 02 A6 */	mflr r0
/* 8036C85C 003684BC  90 01 00 14 */	stw r0, 0x14(r1)
/* 8036C860 003684C0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8036C864 003684C4  7C 7F 1B 78 */	mr r31, r3
/* 8036C868 003684C8  48 00 02 15 */	bl __ct__Q44nw4r3snd6detail14BankFileReaderFPCv
/* 8036C86C 003684CC  38 00 00 00 */	li r0, 0
/* 8036C870 003684D0  7F E3 FB 78 */	mr r3, r31
/* 8036C874 003684D4  90 1F 00 0C */	stw r0, 0xc(r31)
/* 8036C878 003684D8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8036C87C 003684DC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8036C880 003684E0  7C 08 03 A6 */	mtlr r0
/* 8036C884 003684E4  38 21 00 10 */	addi r1, r1, 0x10
/* 8036C888 003684E8  4E 80 00 20 */	blr

.global __dt__Q44nw4r3snd6detail4BankFv
__dt__Q44nw4r3snd6detail4BankFv:
/* 8036C88C 003684EC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8036C890 003684F0  7C 08 02 A6 */	mflr r0
/* 8036C894 003684F4  2C 03 00 00 */	cmpwi r3, 0
/* 8036C898 003684F8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8036C89C 003684FC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8036C8A0 00368500  7C 7F 1B 78 */	mr r31, r3
/* 8036C8A4 00368504  41 82 00 10 */	beq lbl_8036C8B4
/* 8036C8A8 00368508  2C 04 00 00 */	cmpwi r4, 0
/* 8036C8AC 0036850C  40 81 00 08 */	ble lbl_8036C8B4
/* 8036C8B0 00368510  4B E6 E2 09 */	bl __dl__FPv
lbl_8036C8B4:
/* 8036C8B4 00368514  7F E3 FB 78 */	mr r3, r31
/* 8036C8B8 00368518  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8036C8BC 0036851C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8036C8C0 00368520  7C 08 03 A6 */	mtlr r0
/* 8036C8C4 00368524  38 21 00 10 */	addi r1, r1, 0x10
/* 8036C8C8 00368528  4E 80 00 20 */	blr

.global NoteOn__Q44nw4r3snd6detail4BankCFRCQ44nw4r3snd6detail10NoteOnInfo
NoteOn__Q44nw4r3snd6detail4BankCFRCQ44nw4r3snd6detail10NoteOnInfo:
/* 8036C8CC 0036852C  94 21 FF 30 */	stwu r1, -0xd0(r1)
/* 8036C8D0 00368530  7C 08 02 A6 */	mflr r0
/* 8036C8D4 00368534  80 A4 00 00 */	lwz r5, 0(r4)
/* 8036C8D8 00368538  90 01 00 D4 */	stw r0, 0xd4(r1)
/* 8036C8DC 0036853C  3C 00 43 30 */	lis r0, 0x4330
/* 8036C8E0 00368540  93 E1 00 CC */	stw r31, 0xcc(r1)
/* 8036C8E4 00368544  7C 7F 1B 78 */	mr r31, r3
/* 8036C8E8 00368548  93 C1 00 C8 */	stw r30, 0xc8(r1)
/* 8036C8EC 0036854C  7C 9E 23 78 */	mr r30, r4
/* 8036C8F0 00368550  80 DE 00 04 */	lwz r6, 4(r30)
/* 8036C8F4 00368554  38 81 00 08 */	addi r4, r1, 8
/* 8036C8F8 00368558  90 01 00 B0 */	stw r0, 0xb0(r1)
/* 8036C8FC 0036855C  80 FE 00 08 */	lwz r7, 8(r30)
/* 8036C900 00368560  90 01 00 B8 */	stw r0, 0xb8(r1)
/* 8036C904 00368564  48 00 01 F5 */	bl ReadInstInfo__Q44nw4r3snd6detail14BankFileReaderCFPQ44nw4r3snd6detail8InstInfoiii
/* 8036C908 00368568  2C 03 00 00 */	cmpwi r3, 0
/* 8036C90C 0036856C  40 82 00 0C */	bne lbl_8036C918
/* 8036C910 00368570  38 60 00 00 */	li r3, 0
/* 8036C914 00368574  48 00 01 50 */	b lbl_8036CA64
lbl_8036C918:
/* 8036C918 00368578  80 A1 00 08 */	lwz r5, 8(r1)
/* 8036C91C 0036857C  7F E3 FB 78 */	mr r3, r31
/* 8036C920 00368580  80 DF 00 0C */	lwz r6, 0xc(r31)
/* 8036C924 00368584  38 81 00 18 */	addi r4, r1, 0x18
/* 8036C928 00368588  48 00 04 A5 */	bl ReadWaveParam__Q44nw4r3snd6detail14BankFileReaderCFPQ44nw4r3snd6detail8WaveDataiPCv
/* 8036C92C 0036858C  2C 03 00 00 */	cmpwi r3, 0
/* 8036C930 00368590  40 82 00 0C */	bne lbl_8036C93C
/* 8036C934 00368594  38 60 00 00 */	li r3, 0
/* 8036C938 00368598  48 00 01 2C */	b lbl_8036CA64
lbl_8036C93C:
/* 8036C93C 0036859C  88 01 00 1A */	lbz r0, 0x1a(r1)
/* 8036C940 003685A0  38 60 00 02 */	li r3, 2
/* 8036C944 003685A4  2C 00 00 02 */	cmpwi r0, 2
/* 8036C948 003685A8  41 81 00 08 */	bgt lbl_8036C950
/* 8036C94C 003685AC  7C 03 03 78 */	mr r3, r0
lbl_8036C950:
/* 8036C950 003685B0  80 9E 00 18 */	lwz r4, 0x18(r30)
/* 8036C954 003685B4  80 BE 00 14 */	lwz r5, 0x14(r30)
/* 8036C958 003685B8  80 DE 00 1C */	lwz r6, 0x1c(r30)
/* 8036C95C 003685BC  80 FE 00 20 */	lwz r7, 0x20(r30)
/* 8036C960 003685C0  48 00 26 A5 */	bl AllocChannel__Q44nw4r3snd6detail7ChannelFiiiPFPQ44nw4r3snd6detail7ChannelQ54nw4r3snd6detail7Channel21ChannelCallbackStatusUl_vUl
/* 8036C964 003685C4  2C 03 00 00 */	cmpwi r3, 0
/* 8036C968 003685C8  7C 7F 1B 78 */	mr r31, r3
/* 8036C96C 003685CC  40 82 00 0C */	bne lbl_8036C978
/* 8036C970 003685D0  38 60 00 00 */	li r3, 0
/* 8036C974 003685D4  48 00 00 F0 */	b lbl_8036CA64
lbl_8036C978:
/* 8036C978 003685D8  80 9E 00 04 */	lwz r4, 4(r30)
/* 8036C97C 003685DC  80 1E 00 08 */	lwz r0, 8(r30)
/* 8036C980 003685E0  90 83 00 C0 */	stw r4, 0xc0(r3)
/* 8036C984 003685E4  6C 00 80 00 */	xoris r0, r0, 0x8000
/* 8036C988 003685E8  C8 22 A5 90 */	lfd f1, lbl_80642B90-_SDA2_BASE_(r2)
/* 8036C98C 003685EC  88 81 00 10 */	lbz r4, 0x10(r1)
/* 8036C990 003685F0  90 01 00 B4 */	stw r0, 0xb4(r1)
/* 8036C994 003685F4  C0 42 A5 80 */	lfs f2, lbl_80642B80-_SDA2_BASE_(r2)
/* 8036C998 003685F8  90 83 00 C4 */	stw r4, 0xc4(r3)
/* 8036C99C 003685FC  C8 01 00 B0 */	lfd f0, 0xb0(r1)
/* 8036C9A0 00368600  88 01 00 12 */	lbz r0, 0x12(r1)
/* 8036C9A4 00368604  EC 60 08 28 */	fsubs f3, f0, f1
/* 8036C9A8 00368608  C8 22 A5 98 */	lfd f1, lbl_80642B98-_SDA2_BASE_(r2)
/* 8036C9AC 0036860C  90 01 00 BC */	stw r0, 0xbc(r1)
/* 8036C9B0 00368610  C8 01 00 B8 */	lfd f0, 0xb8(r1)
/* 8036C9B4 00368614  EC 63 10 24 */	fdivs f3, f3, f2
/* 8036C9B8 00368618  EC 00 08 28 */	fsubs f0, f0, f1
/* 8036C9BC 0036861C  EC 63 00 F2 */	fmuls f3, f3, f3
/* 8036C9C0 00368620  EC 00 10 24 */	fdivs f0, f0, f2
/* 8036C9C4 00368624  EC 63 00 32 */	fmuls f3, f3, f0
/* 8036C9C8 00368628  D0 63 00 A8 */	stfs f3, 0xa8(r3)
/* 8036C9CC 0036862C  C0 01 00 14 */	lfs f0, 0x14(r1)
/* 8036C9D0 00368630  D0 03 00 B4 */	stfs f0, 0xb4(r3)
/* 8036C9D4 00368634  88 81 00 0C */	lbz r4, 0xc(r1)
/* 8036C9D8 00368638  48 00 34 45 */	bl SetAttack__Q44nw4r3snd6detail12EnvGeneratorFi
/* 8036C9DC 0036863C  88 81 00 0D */	lbz r4, 0xd(r1)
/* 8036C9E0 00368640  7F E3 FB 78 */	mr r3, r31
/* 8036C9E4 00368644  48 00 34 51 */	bl SetDecay__Q44nw4r3snd6detail12EnvGeneratorFi
/* 8036C9E8 00368648  88 81 00 0E */	lbz r4, 0xe(r1)
/* 8036C9EC 0036864C  7F E3 FB 78 */	mr r3, r31
/* 8036C9F0 00368650  48 00 34 E5 */	bl SetSustain__Q44nw4r3snd6detail12EnvGeneratorFi
/* 8036C9F4 00368654  88 81 00 0F */	lbz r4, 0xf(r1)
/* 8036C9F8 00368658  7F E3 FB 78 */	mr r3, r31
/* 8036C9FC 0036865C  48 00 34 E1 */	bl SetRelease__Q44nw4r3snd6detail12EnvGeneratorFi
/* 8036CA00 00368660  88 A1 00 11 */	lbz r5, 0x11(r1)
/* 8036CA04 00368664  7F E3 FB 78 */	mr r3, r31
/* 8036CA08 00368668  80 1E 00 10 */	lwz r0, 0x10(r30)
/* 8036CA0C 0036866C  38 81 00 18 */	addi r4, r1, 0x18
/* 8036CA10 00368670  38 A5 FF C0 */	addi r5, r5, -64
/* 8036CA14 00368674  C8 82 A5 90 */	lfd f4, lbl_80642B90-_SDA2_BASE_(r2)
/* 8036CA18 00368678  6C A5 80 00 */	xoris r5, r5, 0x8000
/* 8036CA1C 0036867C  6C 00 80 00 */	xoris r0, r0, 0x8000
/* 8036CA20 00368680  90 A1 00 B4 */	stw r5, 0xb4(r1)
/* 8036CA24 00368684  38 C0 00 00 */	li r6, 0
/* 8036CA28 00368688  C0 42 A5 84 */	lfs f2, lbl_80642B84-_SDA2_BASE_(r2)
/* 8036CA2C 0036868C  90 01 00 BC */	stw r0, 0xbc(r1)
/* 8036CA30 00368690  C8 01 00 B0 */	lfd f0, 0xb0(r1)
/* 8036CA34 00368694  C8 21 00 B8 */	lfd f1, 0xb8(r1)
/* 8036CA38 00368698  EC 60 20 28 */	fsubs f3, f0, f4
/* 8036CA3C 0036869C  C0 02 A5 88 */	lfs f0, lbl_80642B88-_SDA2_BASE_(r2)
/* 8036CA40 003686A0  EC 21 20 28 */	fsubs f1, f1, f4
/* 8036CA44 003686A4  80 BE 00 0C */	lwz r5, 0xc(r30)
/* 8036CA48 003686A8  EC 63 10 24 */	fdivs f3, f3, f2
/* 8036CA4C 003686AC  EC 21 10 24 */	fdivs f1, f1, f2
/* 8036CA50 003686B0  EC 63 08 2A */	fadds f3, f3, f1
/* 8036CA54 003686B4  D0 7F 00 AC */	stfs f3, 0xac(r31)
/* 8036CA58 003686B8  D0 1F 00 B0 */	stfs f0, 0xb0(r31)
/* 8036CA5C 003686BC  48 00 22 05 */	bl Start__Q44nw4r3snd6detail7ChannelFRCQ44nw4r3snd6detail8WaveDataiUl
/* 8036CA60 003686C0  7F E3 FB 78 */	mr r3, r31
lbl_8036CA64:
/* 8036CA64 003686C4  80 01 00 D4 */	lwz r0, 0xd4(r1)
/* 8036CA68 003686C8  83 E1 00 CC */	lwz r31, 0xcc(r1)
/* 8036CA6C 003686CC  83 C1 00 C8 */	lwz r30, 0xc8(r1)
/* 8036CA70 003686D0  7C 08 03 A6 */	mtlr r0
/* 8036CA74 003686D4  38 21 00 D0 */	addi r1, r1, 0xd0
/* 8036CA78 003686D8  4E 80 00 20 */	blr