donut-decomp/asm/snd_adpcm.s

45 lines
2.1 KiB
ArmAsm
Raw Normal View History

2022-10-16 16:05:58 +00:00
.include "macros.inc"
.section .text, "ax" # 0x80006A00 - 0x80406260 ; 0x003FF860
2022-10-16 16:31:36 +00:00
.global DecodeDspAdpcm__Q34nw4r3snd6detailFP10_AXPBADPCMUc
DecodeDspAdpcm__Q34nw4r3snd6detailFP10_AXPBADPCMUc:
2022-10-16 16:05:58 +00:00
/* 80006A00 00002840 A0 E3 00 22 */ lhz r7, 0x22(r3)
/* 80006A04 00002844 54 80 63 26 */ rlwinm r0, r4, 12, 12, 19
/* 80006A08 00002848 A1 23 00 24 */ lhz r9, 0x24(r3)
/* 80006A0C 0000284C 38 A0 00 01 */ li r5, 0x1
/* 80006A10 00002850 7C E6 26 70 */ srawi r6, r7, 4
/* 80006A14 00002854 54 E4 07 3E */ clrlwi r4, r7, 28
/* 80006A18 00002858 54 C7 10 3A */ slwi r7, r6, 2
/* 80006A1C 0000285C 7C 00 07 34 */ extsh r0, r0
/* 80006A20 00002860 7C C3 3A 14 */ add r6, r3, r7
/* 80006A24 00002864 7C A4 20 30 */ slw r4, r5, r4
/* 80006A28 00002868 7D 03 3A AE */ lhax r8, r3, r7
/* 80006A2C 0000286C 7D 27 07 34 */ extsh r7, r9
/* 80006A30 00002870 A8 C6 00 02 */ lha r6, 0x2(r6)
/* 80006A34 00002874 7C 84 07 34 */ extsh r4, r4
/* 80006A38 00002878 A8 A3 00 26 */ lha r5, 0x26(r3)
/* 80006A3C 0000287C 7C 00 0E 70 */ srawi r0, r0, 1
/* 80006A40 00002880 7C E7 41 D6 */ mullw r7, r7, r8
/* 80006A44 00002884 7C A5 31 D6 */ mullw r5, r5, r6
/* 80006A48 00002888 7C 00 21 D6 */ mullw r0, r0, r4
/* 80006A4C 0000288C 7C E7 2A 14 */ add r7, r7, r5
/* 80006A50 00002890 7C E7 02 14 */ add r7, r7, r0
/* 80006A54 00002894 7C E7 56 70 */ srawi r7, r7, 10
/* 80006A58 00002898 38 E7 00 01 */ addi r7, r7, 0x1
/* 80006A5C 0000289C 7C E7 0E 70 */ srawi r7, r7, 1
/* 80006A60 000028A0 2C 07 7F FF */ cmpwi r7, 0x7fff
/* 80006A64 000028A4 40 81 00 0C */ ble lbl_80006A70
/* 80006A68 000028A8 38 E0 7F FF */ li r7, 0x7fff
/* 80006A6C 000028AC 48 00 00 10 */ b lbl_80006A7C
.global lbl_80006A70
lbl_80006A70:
/* 80006A70 000028B0 2C 07 80 00 */ cmpwi r7, -0x8000
/* 80006A74 000028B4 40 80 00 08 */ bge lbl_80006A7C
/* 80006A78 000028B8 38 E0 80 00 */ li r7, -0x8000
.global lbl_80006A7C
lbl_80006A7C:
/* 80006A7C 000028BC B1 23 00 26 */ sth r9, 0x26(r3)
/* 80006A80 000028C0 B0 E3 00 24 */ sth r7, 0x24(r3)
/* 80006A84 000028C4 7C E3 3B 78 */ mr r3, r7
/* 80006A88 000028C8 4E 80 00 20 */ blr