summaryrefslogtreecommitdiff
path: root/asm/nw4r/snd/detail/snd_adpcm.s
blob: a59d33139b205874869ca4b99ee98b273b28295a (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
.include "macros.inc"

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

.global DecodeDspAdpcm__Q34nw4r3snd6detailFP10_AXPBADPCMUc
DecodeDspAdpcm__Q34nw4r3snd6detailFP10_AXPBADPCMUc:
/* 80384C50 003808B0  A0 E3 00 22 */	lhz r7, 0x22(r3)
/* 80384C54 003808B4  54 80 63 26 */	rlwinm r0, r4, 0xc, 0xc, 0x13
/* 80384C58 003808B8  A1 23 00 24 */	lhz r9, 0x24(r3)
/* 80384C5C 003808BC  38 A0 00 01 */	li r5, 1
/* 80384C60 003808C0  7C E6 26 70 */	srawi r6, r7, 4
/* 80384C64 003808C4  54 E4 07 3E */	clrlwi r4, r7, 0x1c
/* 80384C68 003808C8  54 C7 10 3A */	slwi r7, r6, 2
/* 80384C6C 003808CC  7C 00 07 34 */	extsh r0, r0
/* 80384C70 003808D0  7C C3 3A 14 */	add r6, r3, r7
/* 80384C74 003808D4  7C A4 20 30 */	slw r4, r5, r4
/* 80384C78 003808D8  7D 03 3A AE */	lhax r8, r3, r7
/* 80384C7C 003808DC  7D 27 07 34 */	extsh r7, r9
/* 80384C80 003808E0  A8 C6 00 02 */	lha r6, 2(r6)
/* 80384C84 003808E4  7C 84 07 34 */	extsh r4, r4
/* 80384C88 003808E8  A8 A3 00 26 */	lha r5, 0x26(r3)
/* 80384C8C 003808EC  7C 00 0E 70 */	srawi r0, r0, 1
/* 80384C90 003808F0  7C E7 41 D6 */	mullw r7, r7, r8
/* 80384C94 003808F4  7C A5 31 D6 */	mullw r5, r5, r6
/* 80384C98 003808F8  7C 00 21 D6 */	mullw r0, r0, r4
/* 80384C9C 003808FC  7C E7 2A 14 */	add r7, r7, r5
/* 80384CA0 00380900  7C E7 02 14 */	add r7, r7, r0
/* 80384CA4 00380904  7C E7 56 70 */	srawi r7, r7, 0xa
/* 80384CA8 00380908  38 E7 00 01 */	addi r7, r7, 1
/* 80384CAC 0038090C  7C E7 0E 70 */	srawi r7, r7, 1
/* 80384CB0 00380910  2C 07 7F FF */	cmpwi r7, 0x7fff
/* 80384CB4 00380914  40 81 00 0C */	ble lbl_80384CC0
/* 80384CB8 00380918  38 E0 7F FF */	li r7, 0x7fff
/* 80384CBC 0038091C  48 00 00 10 */	b lbl_80384CCC
lbl_80384CC0:
/* 80384CC0 00380920  2C 07 80 00 */	cmpwi r7, -32768
/* 80384CC4 00380924  40 80 00 08 */	bge lbl_80384CCC
/* 80384CC8 00380928  38 E0 80 00 */	li r7, -32768
lbl_80384CCC:
/* 80384CCC 0038092C  B1 23 00 26 */	sth r9, 0x26(r3)
/* 80384CD0 00380930  B0 E3 00 24 */	sth r7, 0x24(r3)
/* 80384CD4 00380934  7C E3 3B 78 */	mr r3, r7
/* 80384CD8 00380938  4E 80 00 20 */	blr