1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-02-09 05:44:26 +00:00

code_800F9280 OK (#945)

* Match func_800F9280

* Match func_800FA3DC

* Audio_ProcessSeqCmd

* macro cleanup

* review

Co-authored-by: zelda2774 <zelda2774@invalid>
This commit is contained in:
zelda2774 2021-09-07 19:50:50 +02:00 committed by GitHub
parent b1cd46c37c
commit d63ed0c17a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 468 additions and 1843 deletions

View file

@ -1,782 +0,0 @@
.late_rodata
glabel jtbl_8014A640
.word L800F9588
.word L800F95F4
.word L800F9614
.word L800F97E4
.word L800F9940
.word L800F9A00
.word L800F9BD8
.word L800F9CE4
.word L800F9D20
.word L800F9DB4
.word L800F9DE8
.word L800F9E84
.word L800F9EB8
.word L800F9B00
.word L800F9F68
.word L800F9FB8
.text
glabel Audio_ProcessSeqCmd
/* B7069C 800F94FC 3C0E8013 */ lui $t6, %hi(D_8013340C) # $t6, 0x8013
/* B706A0 800F9500 91CE340C */ lbu $t6, %lo(D_8013340C)($t6)
/* B706A4 800F9504 27BDFF98 */ addiu $sp, $sp, -0x68
/* B706A8 800F9508 AFB00018 */ sw $s0, 0x18($sp)
/* B706AC 800F950C 00808025 */ move $s0, $a0
/* B706B0 800F9510 11C0000F */ beqz $t6, .L800F9550
/* B706B4 800F9514 AFBF001C */ sw $ra, 0x1c($sp)
/* B706B8 800F9518 3C01F000 */ lui $at, 0xf000
/* B706BC 800F951C 00817824 */ and $t7, $a0, $at
/* B706C0 800F9520 3C017000 */ lui $at, 0x7000
/* B706C4 800F9524 11E1000A */ beq $t7, $at, .L800F9550
/* B706C8 800F9528 3C048013 */ lui $a0, %hi(D_80133390) # $a0, 0x8013
/* B706CC 800F952C 00102C02 */ srl $a1, $s0, 0x10
/* B706D0 800F9530 30A5FFFF */ andi $a1, $a1, 0xffff
/* B706D4 800F9534 0C03CB5B */ jal AudioDebug_ScrPrt
/* B706D8 800F9538 24843390 */ addiu $a0, %lo(D_80133390) # addiu $a0, $a0, 0x3390
/* B706DC 800F953C 3C048013 */ lui $a0, %hi(D_80133398) # $a0, 0x8013
/* B706E0 800F9540 02002825 */ move $a1, $s0
/* B706E4 800F9544 30A5FFFF */ andi $a1, $a1, 0xffff
/* B706E8 800F9548 0C03CB5B */ jal AudioDebug_ScrPrt
/* B706EC 800F954C 24843398 */ addiu $a0, %lo(D_80133398) # addiu $a0, $a0, 0x3398
.L800F9550:
/* B706F0 800F9550 3C010F00 */ lui $at, 0xf00
/* B706F4 800F9554 02013824 */ and $a3, $s0, $at
/* B706F8 800F9558 0010C702 */ srl $t8, $s0, 0x1c
/* B706FC 800F955C 331900FF */ andi $t9, $t8, 0xff
/* B70700 800F9560 00073E02 */ srl $a3, $a3, 0x18
/* B70704 800F9564 2F210010 */ sltiu $at, $t9, 0x10
/* B70708 800F9568 102002A3 */ beqz $at, .L800F9FF8
/* B7070C 800F956C 30E500FF */ andi $a1, $a3, 0xff
/* B70710 800F9570 0019C880 */ sll $t9, $t9, 2
/* B70714 800F9574 3C018015 */ lui $at, %hi(jtbl_8014A640)
/* B70718 800F9578 00390821 */ addu $at, $at, $t9
/* B7071C 800F957C 8C39A640 */ lw $t9, %lo(jtbl_8014A640)($at)
/* B70720 800F9580 03200008 */ jr $t9
/* B70724 800F9584 00000000 */ nop
glabel L800F9588
/* B70728 800F9588 30E400FF */ andi $a0, $a3, 0xff
/* B7072C 800F958C 00046880 */ sll $t5, $a0, 2
/* B70730 800F9590 01A46821 */ addu $t5, $t5, $a0
/* B70734 800F9594 000D6880 */ sll $t5, $t5, 2
/* B70738 800F9598 01A46823 */ subu $t5, $t5, $a0
/* B7073C 800F959C 000D68C0 */ sll $t5, $t5, 3
/* B70740 800F95A0 3C098017 */ lui $t1, %hi(D_8016E750) # $t1, 0x8017
/* B70744 800F95A4 01A46821 */ addu $t5, $t5, $a0
/* B70748 800F95A8 2529E750 */ addiu $t1, %lo(D_8016E750) # addiu $t1, $t1, -0x18b0
/* B7074C 800F95AC 000D6880 */ sll $t5, $t5, 2
/* B70750 800F95B0 012D7021 */ addu $t6, $t1, $t5
/* B70754 800F95B4 91CF0260 */ lbu $t7, 0x260($t6)
/* B70758 800F95B8 3206FF00 */ andi $a2, $s0, 0xff00
/* B7075C 800F95BC 00063202 */ srl $a2, $a2, 8
/* B70760 800F95C0 15E0028D */ bnez $t7, .L800F9FF8
/* B70764 800F95C4 30C600FF */ andi $a2, $a2, 0xff
/* B70768 800F95C8 28C10080 */ slti $at, $a2, 0x80
/* B7076C 800F95CC 1020028A */ beqz $at, .L800F9FF8
/* B70770 800F95D0 02002825 */ move $a1, $s0
/* B70774 800F95D4 3C0100FF */ lui $at, 0xff
/* B70778 800F95D8 02013824 */ and $a3, $s0, $at
/* B7077C 800F95DC 00073B42 */ srl $a3, $a3, 0xd
/* B70780 800F95E0 30E7FFFF */ andi $a3, $a3, 0xffff
/* B70784 800F95E4 0C03E4A0 */ jal func_800F9280
/* B70788 800F95E8 30A500FF */ andi $a1, $a1, 0xff
/* B7078C 800F95EC 10000283 */ b .L800F9FFC
/* B70790 800F95F0 8FBF001C */ lw $ra, 0x1c($sp)
glabel L800F95F4
/* B70794 800F95F4 3C0100FF */ lui $at, 0xff
/* B70798 800F95F8 02012824 */ and $a1, $s0, $at
/* B7079C 800F95FC 00052B42 */ srl $a1, $a1, 0xd
/* B707A0 800F9600 30A5FFFF */ andi $a1, $a1, 0xffff
/* B707A4 800F9604 0C03E51D */ jal func_800F9474
/* B707A8 800F9608 30E400FF */ andi $a0, $a3, 0xff
/* B707AC 800F960C 1000027B */ b .L800F9FFC
/* B707B0 800F9610 8FBF001C */ lw $ra, 0x1c($sp)
glabel L800F9614
/* B707B4 800F9614 3C028017 */ lui $v0, %hi(D_8016E348) # $v0, 0x8017
/* B707B8 800F9618 2442E348 */ addiu $v0, %lo(D_8016E348) # addiu $v0, $v0, -0x1cb8
/* B707BC 800F961C 30F800FF */ andi $t8, $a3, 0xff
/* B707C0 800F9620 00586021 */ addu $t4, $v0, $t8
/* B707C4 800F9624 918A0000 */ lbu $t2, ($t4)
/* B707C8 800F9628 AFB8002C */ sw $t8, 0x2c($sp)
/* B707CC 800F962C 00001825 */ move $v1, $zero
/* B707D0 800F9630 19400023 */ blez $t2, .L800F96C0
/* B707D4 800F9634 01405825 */ move $t3, $t2
/* B707D8 800F9638 00187880 */ sll $t7, $t8, 2
/* B707DC 800F963C 01F87821 */ addu $t7, $t7, $t8
/* B707E0 800F9640 3C188017 */ lui $t8, %hi(D_8016E320) # $t8, 0x8017
/* B707E4 800F9644 2718E320 */ addiu $t8, %lo(D_8016E320) # addiu $t8, $t8, -0x1ce0
/* B707E8 800F9648 000F7840 */ sll $t7, $t7, 1
/* B707EC 800F964C 320400FF */ andi $a0, $s0, 0xff
/* B707F0 800F9650 AFA40030 */ sw $a0, 0x30($sp)
/* B707F4 800F9654 01F83021 */ addu $a2, $t7, $t8
/* B707F8 800F9658 00036840 */ sll $t5, $v1, 1
.L800F965C:
/* B707FC 800F965C 00CD7021 */ addu $t6, $a2, $t5
/* B70800 800F9660 91D90000 */ lbu $t9, ($t6)
/* B70804 800F9664 00457821 */ addu $t7, $v0, $a1
/* B70808 800F9668 5499000F */ bnel $a0, $t9, .L800F96A8
/* B7080C 800F966C 91F80000 */ lbu $t8, ($t7)
/* B70810 800F9670 14600261 */ bnez $v1, .L800F9FF8
/* B70814 800F9674 93A4002F */ lbu $a0, 0x2f($sp)
/* B70818 800F9678 3C0100FF */ lui $at, 0xff
/* B7081C 800F967C 02013824 */ and $a3, $s0, $at
/* B70820 800F9680 3206FF00 */ andi $a2, $s0, 0xff00
/* B70824 800F9684 00063202 */ srl $a2, $a2, 8
/* B70828 800F9688 00073B42 */ srl $a3, $a3, 0xd
/* B7082C 800F968C 30E7FFFF */ andi $a3, $a3, 0xffff
/* B70830 800F9690 30C600FF */ andi $a2, $a2, 0xff
/* B70834 800F9694 0C03E4A0 */ jal func_800F9280
/* B70838 800F9698 93A50033 */ lbu $a1, 0x33($sp)
/* B7083C 800F969C 10000257 */ b .L800F9FFC
/* B70840 800F96A0 8FBF001C */ lw $ra, 0x1c($sp)
/* B70844 800F96A4 91F80000 */ lbu $t8, ($t7)
.L800F96A8:
/* B70848 800F96A8 24630001 */ addiu $v1, $v1, 1
/* B7084C 800F96AC 306300FF */ andi $v1, $v1, 0xff
/* B70850 800F96B0 0078082A */ slt $at, $v1, $t8
/* B70854 800F96B4 5420FFE9 */ bnezl $at, .L800F965C
/* B70858 800F96B8 00036840 */ sll $t5, $v1, 1
/* B7085C 800F96BC 00001825 */ move $v1, $zero
.L800F96C0:
/* B70860 800F96C0 8FB9002C */ lw $t9, 0x2c($sp)
/* B70864 800F96C4 3C188017 */ lui $t8, %hi(D_8016E320) # $t8, 0x8017
/* B70868 800F96C8 2718E320 */ addiu $t8, %lo(D_8016E320) # addiu $t8, $t8, -0x1ce0
/* B7086C 800F96CC 00197880 */ sll $t7, $t9, 2
/* B70870 800F96D0 01F97821 */ addu $t7, $t7, $t9
/* B70874 800F96D4 000F7840 */ sll $t7, $t7, 1
/* B70878 800F96D8 320E00FF */ andi $t6, $s0, 0xff
/* B7087C 800F96DC 314900FF */ andi $t1, $t2, 0xff
/* B70880 800F96E0 AFAE0030 */ sw $t6, 0x30($sp)
/* B70884 800F96E4 19600014 */ blez $t3, .L800F9738
/* B70888 800F96E8 01F83021 */ addu $a2, $t7, $t8
/* B7088C 800F96EC 3204FF00 */ andi $a0, $s0, 0xff00
/* B70890 800F96F0 3C028017 */ lui $v0, %hi(D_8016E348)
/* B70894 800F96F4 00451021 */ addu $v0, $v0, $a1
/* B70898 800F96F8 00042202 */ srl $a0, $a0, 8
/* B7089C 800F96FC 308400FF */ andi $a0, $a0, 0xff
/* B708A0 800F9700 9042E348 */ lbu $v0, %lo(D_8016E348)($v0)
/* B708A4 800F9704 00036840 */ sll $t5, $v1, 1
.L800F9708:
/* B708A8 800F9708 00CD7021 */ addu $t6, $a2, $t5
/* B708AC 800F970C 91D90001 */ lbu $t9, 1($t6)
/* B708B0 800F9710 0099082A */ slt $at, $a0, $t9
/* B708B4 800F9714 54200004 */ bnezl $at, .L800F9728
/* B708B8 800F9718 24630001 */ addiu $v1, $v1, 1
/* B708BC 800F971C 306900FF */ andi $t1, $v1, 0xff
/* B708C0 800F9720 314300FF */ andi $v1, $t2, 0xff
/* B708C4 800F9724 24630001 */ addiu $v1, $v1, 1
.L800F9728:
/* B708C8 800F9728 306300FF */ andi $v1, $v1, 0xff
/* B708CC 800F972C 0062082A */ slt $at, $v1, $v0
/* B708D0 800F9730 5420FFF5 */ bnezl $at, .L800F9708
/* B708D4 800F9734 00036840 */ sll $t5, $v1, 1
.L800F9738:
/* B708D8 800F9738 320FFF00 */ andi $t7, $s0, 0xff00
/* B708DC 800F973C 000FC202 */ srl $t8, $t7, 8
/* B708E0 800F9740 330D00FF */ andi $t5, $t8, 0xff
/* B708E4 800F9744 29610005 */ slti $at, $t3, 5
/* B708E8 800F9748 10200004 */ beqz $at, .L800F975C
/* B708EC 800F974C AFAD003C */ sw $t5, 0x3c($sp)
/* B708F0 800F9750 254E0001 */ addiu $t6, $t2, 1
/* B708F4 800F9754 A18E0000 */ sb $t6, ($t4)
/* B708F8 800F9758 31CB00FF */ andi $t3, $t6, 0xff
.L800F975C:
/* B708FC 800F975C 2563FFFF */ addiu $v1, $t3, -1
/* B70900 800F9760 306300FF */ andi $v1, $v1, 0xff
/* B70904 800F9764 00601025 */ move $v0, $v1
/* B70908 800F9768 1123000D */ beq $t1, $v1, .L800F97A0
/* B7090C 800F976C 01204025 */ move $t0, $t1
.L800F9770:
/* B70910 800F9770 00027840 */ sll $t7, $v0, 1
/* B70914 800F9774 00CF2821 */ addu $a1, $a2, $t7
/* B70918 800F9778 90B8FFFF */ lbu $t8, -1($a1)
/* B7091C 800F977C 0003C840 */ sll $t9, $v1, 1
/* B70920 800F9780 00D92021 */ addu $a0, $a2, $t9
/* B70924 800F9784 A0980001 */ sb $t8, 1($a0)
/* B70928 800F9788 90ADFFFE */ lbu $t5, -2($a1)
/* B7092C 800F978C 2463FFFF */ addiu $v1, $v1, -1
/* B70930 800F9790 306300FF */ andi $v1, $v1, 0xff
/* B70934 800F9794 00601025 */ move $v0, $v1
/* B70938 800F9798 1503FFF5 */ bne $t0, $v1, .L800F9770
/* B7093C 800F979C A08D0000 */ sb $t5, ($a0)
.L800F97A0:
/* B70940 800F97A0 8FB9003C */ lw $t9, 0x3c($sp)
/* B70944 800F97A4 8FAF0030 */ lw $t7, 0x30($sp)
/* B70948 800F97A8 00097040 */ sll $t6, $t1, 1
/* B7094C 800F97AC 00CE1021 */ addu $v0, $a2, $t6
/* B70950 800F97B0 A0590001 */ sb $t9, 1($v0)
/* B70954 800F97B4 15000210 */ bnez $t0, .L800F9FF8
/* B70958 800F97B8 A04F0000 */ sb $t7, ($v0)
/* B7095C 800F97BC 3C0100FF */ lui $at, 0xff
/* B70960 800F97C0 02013824 */ and $a3, $s0, $at
/* B70964 800F97C4 00073B42 */ srl $a3, $a3, 0xd
/* B70968 800F97C8 30E7FFFF */ andi $a3, $a3, 0xffff
/* B7096C 800F97CC 93A4002F */ lbu $a0, 0x2f($sp)
/* B70970 800F97D0 93A50033 */ lbu $a1, 0x33($sp)
/* B70974 800F97D4 0C03E4A0 */ jal func_800F9280
/* B70978 800F97D8 93A6003F */ lbu $a2, 0x3f($sp)
/* B7097C 800F97DC 10000207 */ b .L800F9FFC
/* B70980 800F97E0 8FBF001C */ lw $ra, 0x1c($sp)
glabel L800F97E4
/* B70984 800F97E4 3C188017 */ lui $t8, %hi(D_8016E348) # $t8, 0x8017
/* B70988 800F97E8 2718E348 */ addiu $t8, %lo(D_8016E348) # addiu $t8, $t8, -0x1cb8
/* B7098C 800F97EC 30ED00FF */ andi $t5, $a3, 0xff
/* B70990 800F97F0 030D6021 */ addu $t4, $t8, $t5
/* B70994 800F97F4 918A0000 */ lbu $t2, ($t4)
/* B70998 800F97F8 AFAD002C */ sw $t5, 0x2c($sp)
/* B7099C 800F97FC 00001825 */ move $v1, $zero
/* B709A0 800F9800 01404825 */ move $t1, $t2
/* B709A4 800F9804 19400017 */ blez $t2, .L800F9864
/* B709A8 800F9808 01405825 */ move $t3, $t2
/* B709AC 800F980C 000D7880 */ sll $t7, $t5, 2
/* B709B0 800F9810 01ED7821 */ addu $t7, $t7, $t5
/* B709B4 800F9814 3C0D8017 */ lui $t5, %hi(D_8016E320) # $t5, 0x8017
/* B709B8 800F9818 25ADE320 */ addiu $t5, %lo(D_8016E320) # addiu $t5, $t5, -0x1ce0
/* B709BC 800F981C 000F7840 */ sll $t7, $t7, 1
/* B709C0 800F9820 00B8C821 */ addu $t9, $a1, $t8
/* B709C4 800F9824 02002025 */ move $a0, $s0
/* B709C8 800F9828 308400FF */ andi $a0, $a0, 0xff
/* B709CC 800F982C 93220000 */ lbu $v0, ($t9)
/* B709D0 800F9830 01ED3021 */ addu $a2, $t7, $t5
/* B709D4 800F9834 0003C040 */ sll $t8, $v1, 1
.L800F9838:
/* B709D8 800F9838 00D8C821 */ addu $t9, $a2, $t8
/* B709DC 800F983C 932E0000 */ lbu $t6, ($t9)
/* B709E0 800F9840 548E0004 */ bnel $a0, $t6, .L800F9854
/* B709E4 800F9844 24630001 */ addiu $v1, $v1, 1
/* B709E8 800F9848 306900FF */ andi $t1, $v1, 0xff
/* B709EC 800F984C 314300FF */ andi $v1, $t2, 0xff
/* B709F0 800F9850 24630001 */ addiu $v1, $v1, 1
.L800F9854:
/* B709F4 800F9854 306300FF */ andi $v1, $v1, 0xff
/* B709F8 800F9858 0062082A */ slt $at, $v1, $v0
/* B709FC 800F985C 5420FFF6 */ bnezl $at, .L800F9838
/* B70A00 800F9860 0003C040 */ sll $t8, $v1, 1
.L800F9864:
/* B70A04 800F9864 112B001C */ beq $t1, $t3, .L800F98D8
/* B70A08 800F9868 01204025 */ move $t0, $t1
/* B70A0C 800F986C 2567FFFF */ addiu $a3, $t3, -1
/* B70A10 800F9870 0127082A */ slt $at, $t1, $a3
/* B70A14 800F9874 10200016 */ beqz $at, .L800F98D0
/* B70A18 800F9878 312300FF */ andi $v1, $t1, 0xff
/* B70A1C 800F987C 8FAF002C */ lw $t7, 0x2c($sp)
/* B70A20 800F9880 3C188017 */ lui $t8, %hi(D_8016E320) # $t8, 0x8017
/* B70A24 800F9884 2718E320 */ addiu $t8, %lo(D_8016E320) # addiu $t8, $t8, -0x1ce0
/* B70A28 800F9888 000F6880 */ sll $t5, $t7, 2
/* B70A2C 800F988C 01AF6821 */ addu $t5, $t5, $t7
/* B70A30 800F9890 000D6840 */ sll $t5, $t5, 1
/* B70A34 800F9894 01B83021 */ addu $a2, $t5, $t8
/* B70A38 800F9898 00601025 */ move $v0, $v1
.L800F989C:
/* B70A3C 800F989C 00027040 */ sll $t6, $v0, 1
/* B70A40 800F98A0 00CE2821 */ addu $a1, $a2, $t6
/* B70A44 800F98A4 90AF0003 */ lbu $t7, 3($a1)
/* B70A48 800F98A8 0003C840 */ sll $t9, $v1, 1
/* B70A4C 800F98AC 00D92021 */ addu $a0, $a2, $t9
/* B70A50 800F98B0 24630001 */ addiu $v1, $v1, 1
/* B70A54 800F98B4 A08F0001 */ sb $t7, 1($a0)
/* B70A58 800F98B8 90AD0002 */ lbu $t5, 2($a1)
/* B70A5C 800F98BC 306300FF */ andi $v1, $v1, 0xff
/* B70A60 800F98C0 0067082A */ slt $at, $v1, $a3
/* B70A64 800F98C4 00601025 */ move $v0, $v1
/* B70A68 800F98C8 1420FFF4 */ bnez $at, .L800F989C
/* B70A6C 800F98CC A08D0000 */ sb $t5, ($a0)
.L800F98D0:
/* B70A70 800F98D0 2558FFFF */ addiu $t8, $t2, -1
/* B70A74 800F98D4 A1980000 */ sb $t8, ($t4)
.L800F98D8:
/* B70A78 800F98D8 150001C7 */ bnez $t0, .L800F9FF8
/* B70A7C 800F98DC 93A4002F */ lbu $a0, 0x2f($sp)
/* B70A80 800F98E0 3C0100FF */ lui $at, 0xff
/* B70A84 800F98E4 02013824 */ and $a3, $s0, $at
/* B70A88 800F98E8 00073B42 */ srl $a3, $a3, 0xd
/* B70A8C 800F98EC 30E7FFFF */ andi $a3, $a3, 0xffff
/* B70A90 800F98F0 30E5FFFF */ andi $a1, $a3, 0xffff
/* B70A94 800F98F4 AFA7003C */ sw $a3, 0x3c($sp)
/* B70A98 800F98F8 0C03E51D */ jal func_800F9474
/* B70A9C 800F98FC AFAC0024 */ sw $t4, 0x24($sp)
/* B70AA0 800F9900 8FAC0024 */ lw $t4, 0x24($sp)
/* B70AA4 800F9904 8FA4002C */ lw $a0, 0x2c($sp)
/* B70AA8 800F9908 8FA7003C */ lw $a3, 0x3c($sp)
/* B70AAC 800F990C 91990000 */ lbu $t9, ($t4)
/* B70AB0 800F9910 00047080 */ sll $t6, $a0, 2
/* B70AB4 800F9914 01C47021 */ addu $t6, $t6, $a0
/* B70AB8 800F9918 132001B7 */ beqz $t9, .L800F9FF8
/* B70ABC 800F991C 000E7040 */ sll $t6, $t6, 1
/* B70AC0 800F9920 3C0F8017 */ lui $t7, %hi(D_8016E320) # $t7, 0x8017
/* B70AC4 800F9924 25EFE320 */ addiu $t7, %lo(D_8016E320) # addiu $t7, $t7, -0x1ce0
/* B70AC8 800F9928 01CF1021 */ addu $v0, $t6, $t7
/* B70ACC 800F992C 90450000 */ lbu $a1, ($v0)
/* B70AD0 800F9930 0C03E4A0 */ jal func_800F9280
/* B70AD4 800F9934 90460001 */ lbu $a2, 1($v0)
/* B70AD8 800F9938 100001B0 */ b .L800F9FFC
/* B70ADC 800F993C 8FBF001C */ lw $ra, 0x1c($sp)
glabel L800F9940
/* B70AE0 800F9940 3C0100FF */ li $at, 0x00FF0000 # 0.000000
/* B70AE4 800F9944 02011024 */ and $v0, $s0, $at
/* B70AE8 800F9948 000213C2 */ srl $v0, $v0, 0xf
/* B70AEC 800F994C 304300FF */ andi $v1, $v0, 0xff
/* B70AF0 800F9950 14600003 */ bnez $v1, .L800F9960
/* B70AF4 800F9954 304500FF */ andi $a1, $v0, 0xff
/* B70AF8 800F9958 24650001 */ addiu $a1, $v1, 1
/* B70AFC 800F995C 30A500FF */ andi $a1, $a1, 0xff
.L800F9960:
/* B70B00 800F9960 30ED00FF */ andi $t5, $a3, 0xff
/* B70B04 800F9964 000DC080 */ sll $t8, $t5, 2
/* B70B08 800F9968 030DC021 */ addu $t8, $t8, $t5
/* B70B0C 800F996C 0018C080 */ sll $t8, $t8, 2
/* B70B10 800F9970 030DC023 */ subu $t8, $t8, $t5
/* B70B14 800F9974 0018C0C0 */ sll $t8, $t8, 3
/* B70B18 800F9978 320E00FF */ andi $t6, $s0, 0xff
/* B70B1C 800F997C 448E2000 */ mtc1 $t6, $f4
/* B70B20 800F9980 3C098017 */ lui $t1, %hi(D_8016E750)
/* B70B24 800F9984 030DC021 */ addu $t8, $t8, $t5
/* B70B28 800F9988 2529E750 */ addiu $t1, %lo(D_8016E750) # addiu $t1, $t1, -0x18b0
/* B70B2C 800F998C 0018C080 */ sll $t8, $t8, 2
/* B70B30 800F9990 01381021 */ addu $v0, $t1, $t8
/* B70B34 800F9994 05C10005 */ bgez $t6, .L800F99AC
/* B70B38 800F9998 468021A0 */ cvt.s.w $f6, $f4
/* B70B3C 800F999C 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B70B40 800F99A0 44814000 */ mtc1 $at, $f8
/* B70B44 800F99A4 00000000 */ nop
/* B70B48 800F99A8 46083180 */ add.s $f6, $f6, $f8
.L800F99AC:
/* B70B4C 800F99AC 3C0142FE */ li $at, 0x42FE0000 # 0.000000
/* B70B50 800F99B0 44815000 */ mtc1 $at, $f10
/* B70B54 800F99B4 C4420000 */ lwc1 $f2, ($v0)
/* B70B58 800F99B8 460A3003 */ div.s $f0, $f6, $f10
/* B70B5C 800F99BC 46001032 */ c.eq.s $f2, $f0
/* B70B60 800F99C0 E4400004 */ swc1 $f0, 4($v0)
/* B70B64 800F99C4 4503018D */ bc1tl .L800F9FFC
/* B70B68 800F99C8 8FBF001C */ lw $ra, 0x1c($sp)
/* B70B6C 800F99CC C4500004 */ lwc1 $f16, 4($v0)
/* B70B70 800F99D0 44852000 */ mtc1 $a1, $f4
/* B70B74 800F99D4 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B70B78 800F99D8 46101481 */ sub.s $f18, $f2, $f16
/* B70B7C 800F99DC 04A10004 */ bgez $a1, .L800F99F0
/* B70B80 800F99E0 46802220 */ cvt.s.w $f8, $f4
/* B70B84 800F99E4 44813000 */ mtc1 $at, $f6
/* B70B88 800F99E8 00000000 */ nop
/* B70B8C 800F99EC 46064200 */ add.s $f8, $f8, $f6
.L800F99F0:
/* B70B90 800F99F0 46089283 */ div.s $f10, $f18, $f8
/* B70B94 800F99F4 A445000C */ sh $a1, 0xc($v0)
/* B70B98 800F99F8 1000017F */ b .L800F9FF8
/* B70B9C 800F99FC E44A0008 */ swc1 $f10, 8($v0)
glabel L800F9A00
/* B70BA0 800F9A00 3C0100FF */ li $at, 0x00FF0000 # 0.000000
/* B70BA4 800F9A04 02011024 */ and $v0, $s0, $at
/* B70BA8 800F9A08 000213C2 */ srl $v0, $v0, 0xf
/* B70BAC 800F9A0C 304300FF */ andi $v1, $v0, 0xff
/* B70BB0 800F9A10 02003025 */ move $a2, $s0
/* B70BB4 800F9A14 304500FF */ andi $a1, $v0, 0xff
/* B70BB8 800F9A18 14600003 */ bnez $v1, .L800F9A28
/* B70BBC 800F9A1C 30C6FFFF */ andi $a2, $a2, 0xffff
/* B70BC0 800F9A20 24650001 */ addiu $a1, $v1, 1
/* B70BC4 800F9A24 30A500FF */ andi $a1, $a1, 0xff
.L800F9A28:
/* B70BC8 800F9A28 44858000 */ mtc1 $a1, $f16
/* B70BCC 800F9A2C 00001825 */ move $v1, $zero
/* B70BD0 800F9A30 04A10005 */ bgez $a1, .L800F9A48
/* B70BD4 800F9A34 468080A0 */ cvt.s.w $f2, $f16
/* B70BD8 800F9A38 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B70BDC 800F9A3C 44812000 */ mtc1 $at, $f4
/* B70BE0 800F9A40 00000000 */ nop
/* B70BE4 800F9A44 46041080 */ add.s $f2, $f2, $f4
.L800F9A48:
/* B70BE8 800F9A48 30E800FF */ andi $t0, $a3, 0xff
/* B70BEC 800F9A4C 00087880 */ sll $t7, $t0, 2
/* B70BF0 800F9A50 01E87821 */ addu $t7, $t7, $t0
/* B70BF4 800F9A54 000F7880 */ sll $t7, $t7, 2
/* B70BF8 800F9A58 01E87823 */ subu $t7, $t7, $t0
/* B70BFC 800F9A5C 000F78C0 */ sll $t7, $t7, 3
/* B70C00 800F9A60 44863000 */ mtc1 $a2, $f6
/* B70C04 800F9A64 01E87821 */ addu $t7, $t7, $t0
/* B70C08 800F9A68 3C0D8017 */ lui $t5, %hi(D_8016E750) # $t5, 0x8017
/* B70C0C 800F9A6C 25ADE750 */ addiu $t5, %lo(D_8016E750) # addiu $t5, $t5, -0x18b0
/* B70C10 800F9A70 000F7880 */ sll $t7, $t7, 2
/* B70C14 800F9A74 01ED2021 */ addu $a0, $t7, $t5
/* B70C18 800F9A78 04C10005 */ bgez $a2, .L800F9A90
/* B70C1C 800F9A7C 468034A0 */ cvt.s.w $f18, $f6
/* B70C20 800F9A80 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B70C24 800F9A84 44814000 */ mtc1 $at, $f8
/* B70C28 800F9A88 00000000 */ nop
/* B70C2C 800F9A8C 46089480 */ add.s $f18, $f18, $f8
.L800F9A90:
/* B70C30 800F9A90 3C01447A */ li $at, 0x447A0000 # 0.000000
/* B70C34 800F9A94 44815000 */ mtc1 $at, $f10
/* B70C38 800F9A98 3C098017 */ lui $t1, %hi(D_8016E750) # $t1, 0x8017
/* B70C3C 800F9A9C 2529E750 */ addiu $t1, %lo(D_8016E750) # addiu $t1, $t1, -0x18b0
/* B70C40 800F9AA0 460A9003 */ div.s $f0, $f18, $f10
.L800F9AA4:
/* B70C44 800F9AA4 0003C140 */ sll $t8, $v1, 5
/* B70C48 800F9AA8 00981021 */ addu $v0, $a0, $t8
/* B70C4C 800F9AAC C4500060 */ lwc1 $f16, 0x60($v0)
/* B70C50 800F9AB0 24630001 */ addiu $v1, $v1, 1
/* B70C54 800F9AB4 306300FF */ andi $v1, $v1, 0xff
/* B70C58 800F9AB8 46008101 */ sub.s $f4, $f16, $f0
/* B70C5C 800F9ABC 28610010 */ slti $at, $v1, 0x10
/* B70C60 800F9AC0 E4400064 */ swc1 $f0, 0x64($v0)
/* B70C64 800F9AC4 A445006C */ sh $a1, 0x6c($v0)
/* B70C68 800F9AC8 46022183 */ div.s $f6, $f4, $f2
/* B70C6C 800F9ACC 1420FFF5 */ bnez $at, .L800F9AA4
/* B70C70 800F9AD0 E4460068 */ swc1 $f6, 0x68($v0)
/* B70C74 800F9AD4 00087080 */ sll $t6, $t0, 2
/* B70C78 800F9AD8 01C87021 */ addu $t6, $t6, $t0
/* B70C7C 800F9ADC 000E7080 */ sll $t6, $t6, 2
/* B70C80 800F9AE0 01C87023 */ subu $t6, $t6, $t0
/* B70C84 800F9AE4 000E70C0 */ sll $t6, $t6, 3
/* B70C88 800F9AE8 01C87021 */ addu $t6, $t6, $t0
/* B70C8C 800F9AEC 000E7080 */ sll $t6, $t6, 2
/* B70C90 800F9AF0 012E7821 */ addu $t7, $t1, $t6
/* B70C94 800F9AF4 3419FFFF */ li $t9, 65535
/* B70C98 800F9AF8 1000013F */ b .L800F9FF8
/* B70C9C 800F9AFC A5F90250 */ sh $t9, 0x250($t7)
glabel L800F9B00
/* B70CA0 800F9B00 3C0100FF */ lui $at, 0xff
/* B70CA4 800F9B04 02011024 */ and $v0, $s0, $at
/* B70CA8 800F9B08 000213C2 */ srl $v0, $v0, 0xf
/* B70CAC 800F9B0C 304300FF */ andi $v1, $v0, 0xff
/* B70CB0 800F9B10 14600003 */ bnez $v1, .L800F9B20
/* B70CB4 800F9B14 304500FF */ andi $a1, $v0, 0xff
/* B70CB8 800F9B18 24650001 */ addiu $a1, $v1, 1
/* B70CBC 800F9B1C 30A500FF */ andi $a1, $a1, 0xff
.L800F9B20:
/* B70CC0 800F9B20 30ED00FF */ andi $t5, $a3, 0xff
/* B70CC4 800F9B24 000DC080 */ sll $t8, $t5, 2
/* B70CC8 800F9B28 030DC021 */ addu $t8, $t8, $t5
/* B70CCC 800F9B2C 0018C080 */ sll $t8, $t8, 2
/* B70CD0 800F9B30 030DC023 */ subu $t8, $t8, $t5
/* B70CD4 800F9B34 0018C0C0 */ sll $t8, $t8, 3
/* B70CD8 800F9B38 3204F000 */ andi $a0, $s0, 0xf000
/* B70CDC 800F9B3C 3C098017 */ lui $t1, %hi(D_8016E750)
/* B70CE0 800F9B40 00042302 */ srl $a0, $a0, 0xc
/* B70CE4 800F9B44 030DC021 */ addu $t8, $t8, $t5
/* B70CE8 800F9B48 320F0FFF */ andi $t7, $s0, 0xfff
/* B70CEC 800F9B4C 448F4000 */ mtc1 $t7, $f8
/* B70CF0 800F9B50 2529E750 */ addiu $t1, %lo(D_8016E750)
/* B70CF4 800F9B54 0018C080 */ sll $t8, $t8, 2
/* B70CF8 800F9B58 308400FF */ andi $a0, $a0, 0xff
/* B70CFC 800F9B5C 00047140 */ sll $t6, $a0, 5
/* B70D00 800F9B60 01381021 */ addu $v0, $t1, $t8
/* B70D04 800F9B64 004E1821 */ addu $v1, $v0, $t6
/* B70D08 800F9B68 05E10005 */ bgez $t7, .L800F9B80
/* B70D0C 800F9B6C 468044A0 */ cvt.s.w $f18, $f8
/* B70D10 800F9B70 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B70D14 800F9B74 44815000 */ mtc1 $at, $f10
/* B70D18 800F9B78 00000000 */ nop
/* B70D1C 800F9B7C 460A9480 */ add.s $f18, $f18, $f10
.L800F9B80:
/* B70D20 800F9B80 3C01447A */ li $at, 0x447A0000 # 0.000000
/* B70D24 800F9B84 44818000 */ mtc1 $at, $f16
/* B70D28 800F9B88 C4640060 */ lwc1 $f4, 0x60($v1)
/* B70D2C 800F9B8C 44854000 */ mtc1 $a1, $f8
/* B70D30 800F9B90 46109003 */ div.s $f0, $f18, $f16
/* B70D34 800F9B94 468042A0 */ cvt.s.w $f10, $f8
/* B70D38 800F9B98 E4600064 */ swc1 $f0, 0x64($v1)
/* B70D3C 800F9B9C 04A10005 */ bgez $a1, .L800F9BB4
/* B70D40 800F9BA0 46002181 */ sub.s $f6, $f4, $f0
/* B70D44 800F9BA4 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B70D48 800F9BA8 44819000 */ mtc1 $at, $f18
/* B70D4C 800F9BAC 00000000 */ nop
/* B70D50 800F9BB0 46125280 */ add.s $f10, $f10, $f18
.L800F9BB4:
/* B70D54 800F9BB4 460A3403 */ div.s $f16, $f6, $f10
/* B70D58 800F9BB8 A465006C */ sh $a1, 0x6c($v1)
/* B70D5C 800F9BBC 24180001 */ li $t8, 1
/* B70D60 800F9BC0 00987004 */ sllv $t6, $t8, $a0
/* B70D64 800F9BC4 E4700068 */ swc1 $f16, 0x68($v1)
/* B70D68 800F9BC8 944D0250 */ lhu $t5, 0x250($v0)
/* B70D6C 800F9BCC 01AEC825 */ or $t9, $t5, $t6
/* B70D70 800F9BD0 10000109 */ b .L800F9FF8
/* B70D74 800F9BD4 A4590250 */ sh $t9, 0x250($v0)
glabel L800F9BD8
/* B70D78 800F9BD8 3C0100FF */ lui $at, 0xff
/* B70D7C 800F9BDC 02011024 */ and $v0, $s0, $at
/* B70D80 800F9BE0 000213C2 */ srl $v0, $v0, 0xf
/* B70D84 800F9BE4 304300FF */ andi $v1, $v0, 0xff
/* B70D88 800F9BE8 14600003 */ bnez $v1, .L800F9BF8
/* B70D8C 800F9BEC 304500FF */ andi $a1, $v0, 0xff
/* B70D90 800F9BF0 24650001 */ addiu $a1, $v1, 1
/* B70D94 800F9BF4 30A500FF */ andi $a1, $a1, 0xff
.L800F9BF8:
/* B70D98 800F9BF8 30E800FF */ andi $t0, $a3, 0xff
/* B70D9C 800F9BFC 00087880 */ sll $t7, $t0, 2
/* B70DA0 800F9C00 01E87821 */ addu $t7, $t7, $t0
/* B70DA4 800F9C04 000F7880 */ sll $t7, $t7, 2
/* B70DA8 800F9C08 01E87823 */ subu $t7, $t7, $t0
/* B70DAC 800F9C0C 000F78C0 */ sll $t7, $t7, 3
/* B70DB0 800F9C10 32060F00 */ andi $a2, $s0, 0xf00
/* B70DB4 800F9C14 3C098017 */ lui $t1, %hi(D_8016E750)
/* B70DB8 800F9C18 00063202 */ srl $a2, $a2, 8
/* B70DBC 800F9C1C 01E87821 */ addu $t7, $t7, $t0
/* B70DC0 800F9C20 320E00FF */ andi $t6, $s0, 0xff
/* B70DC4 800F9C24 448E2000 */ mtc1 $t6, $f4
/* B70DC8 800F9C28 2529E750 */ addiu $t1, %lo(D_8016E750)
/* B70DCC 800F9C2C 000F7880 */ sll $t7, $t7, 2
/* B70DD0 800F9C30 30C600FF */ andi $a2, $a2, 0xff
/* B70DD4 800F9C34 00062140 */ sll $a0, $a2, 5
/* B70DD8 800F9C38 012FC021 */ addu $t8, $t1, $t7
/* B70DDC 800F9C3C 03041021 */ addu $v0, $t8, $a0
/* B70DE0 800F9C40 05C10005 */ bgez $t6, .L800F9C58
/* B70DE4 800F9C44 46802220 */ cvt.s.w $f8, $f4
/* B70DE8 800F9C48 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B70DEC 800F9C4C 44819000 */ mtc1 $at, $f18
/* B70DF0 800F9C50 00000000 */ nop
/* B70DF4 800F9C54 46124200 */ add.s $f8, $f8, $f18
.L800F9C58:
/* B70DF8 800F9C58 3C0142FE */ li $at, 0x42FE0000 # 0.000000
/* B70DFC 800F9C5C 44813000 */ mtc1 $at, $f6
/* B70E00 800F9C60 C44A0050 */ lwc1 $f10, 0x50($v0)
/* B70E04 800F9C64 46064003 */ div.s $f0, $f8, $f6
/* B70E08 800F9C68 46005032 */ c.eq.s $f10, $f0
/* B70E0C 800F9C6C E4400054 */ swc1 $f0, 0x54($v0)
/* B70E10 800F9C70 450100E1 */ bc1t .L800F9FF8
/* B70E14 800F9C74 0008C880 */ sll $t9, $t0, 2
/* B70E18 800F9C78 0328C821 */ addu $t9, $t9, $t0
/* B70E1C 800F9C7C 0019C880 */ sll $t9, $t9, 2
/* B70E20 800F9C80 0328C823 */ subu $t9, $t9, $t0
/* B70E24 800F9C84 0019C8C0 */ sll $t9, $t9, 3
/* B70E28 800F9C88 0328C821 */ addu $t9, $t9, $t0
/* B70E2C 800F9C8C 0019C880 */ sll $t9, $t9, 2
/* B70E30 800F9C90 01391021 */ addu $v0, $t1, $t9
/* B70E34 800F9C94 00441821 */ addu $v1, $v0, $a0
/* B70E38 800F9C98 C4700050 */ lwc1 $f16, 0x50($v1)
/* B70E3C 800F9C9C C4640054 */ lwc1 $f4, 0x54($v1)
/* B70E40 800F9CA0 44854000 */ mtc1 $a1, $f8
/* B70E44 800F9CA4 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B70E48 800F9CA8 46048481 */ sub.s $f18, $f16, $f4
/* B70E4C 800F9CAC 04A10004 */ bgez $a1, .L800F9CC0
/* B70E50 800F9CB0 468041A0 */ cvt.s.w $f6, $f8
/* B70E54 800F9CB4 44815000 */ mtc1 $at, $f10
/* B70E58 800F9CB8 00000000 */ nop
/* B70E5C 800F9CBC 460A3180 */ add.s $f6, $f6, $f10
.L800F9CC0:
/* B70E60 800F9CC0 46069403 */ div.s $f16, $f18, $f6
/* B70E64 800F9CC4 A465005C */ sh $a1, 0x5c($v1)
/* B70E68 800F9CC8 24180001 */ li $t8, 1
/* B70E6C 800F9CCC 00D86804 */ sllv $t5, $t8, $a2
/* B70E70 800F9CD0 E4700058 */ swc1 $f16, 0x58($v1)
/* B70E74 800F9CD4 944F0252 */ lhu $t7, 0x252($v0)
/* B70E78 800F9CD8 01ED7025 */ or $t6, $t7, $t5
/* B70E7C 800F9CDC 100000C6 */ b .L800F9FF8
/* B70E80 800F9CE0 A44E0252 */ sh $t6, 0x252($v0)
glabel L800F9CE4
/* B70E84 800F9CE4 30F800FF */ andi $t8, $a3, 0xff
/* B70E88 800F9CE8 00187C00 */ sll $t7, $t8, 0x10
/* B70E8C 800F9CEC 3C014600 */ lui $at, 0x4600
/* B70E90 800F9CF0 01E16825 */ or $t5, $t7, $at
/* B70E94 800F9CF4 3C0100FF */ lui $at, 0xff
/* B70E98 800F9CF8 02017024 */ and $t6, $s0, $at
/* B70E9C 800F9CFC 000EC402 */ srl $t8, $t6, 0x10
/* B70EA0 800F9D00 02002825 */ move $a1, $s0
/* B70EA4 800F9D04 00052E00 */ sll $a1, $a1, 0x18
/* B70EA8 800F9D08 330F00FF */ andi $t7, $t8, 0xff
/* B70EAC 800F9D0C 01AF2025 */ or $a0, $t5, $t7
/* B70EB0 800F9D10 0C0396C8 */ jal Audio_QueueCmdS8
/* B70EB4 800F9D14 00052E03 */ sra $a1, $a1, 0x18
/* B70EB8 800F9D18 100000B8 */ b .L800F9FFC
/* B70EBC 800F9D1C 8FBF001C */ lw $ra, 0x1c($sp)
glabel L800F9D20
/* B70EC0 800F9D20 30E200FF */ andi $v0, $a3, 0xff
/* B70EC4 800F9D24 00027080 */ sll $t6, $v0, 2
/* B70EC8 800F9D28 01C27021 */ addu $t6, $t6, $v0
/* B70ECC 800F9D2C 000E7080 */ sll $t6, $t6, 2
/* B70ED0 800F9D30 01C27023 */ subu $t6, $t6, $v0
/* B70ED4 800F9D34 000E70C0 */ sll $t6, $t6, 3
/* B70ED8 800F9D38 3C098017 */ lui $t1, %hi(D_8016E750) # $t1, 0x8017
/* B70EDC 800F9D3C 01C27021 */ addu $t6, $t6, $v0
/* B70EE0 800F9D40 2529E750 */ addiu $t1, %lo(D_8016E750) # addiu $t1, $t1, -0x18b0
/* B70EE4 800F9D44 000E7080 */ sll $t6, $t6, 2
/* B70EE8 800F9D48 012EC821 */ addu $t9, $t1, $t6
/* B70EEC 800F9D4C 32060F00 */ andi $a2, $s0, 0xf00
/* B70EF0 800F9D50 97380258 */ lhu $t8, 0x258($t9)
/* B70EF4 800F9D54 00063202 */ srl $a2, $a2, 8
/* B70EF8 800F9D58 30C600FF */ andi $a2, $a2, 0xff
/* B70EFC 800F9D5C 240D0001 */ li $t5, 1
/* B70F00 800F9D60 00CD7804 */ sllv $t7, $t5, $a2
/* B70F04 800F9D64 030F7024 */ and $t6, $t8, $t7
/* B70F08 800F9D68 15C000A3 */ bnez $t6, .L800F9FF8
/* B70F0C 800F9D6C 305900FF */ andi $t9, $v0, 0xff
/* B70F10 800F9D70 00196C00 */ sll $t5, $t9, 0x10
/* B70F14 800F9D74 3C010600 */ lui $at, 0x600
/* B70F18 800F9D78 01A1C025 */ or $t8, $t5, $at
/* B70F1C 800F9D7C 30CF00FF */ andi $t7, $a2, 0xff
/* B70F20 800F9D80 000F7200 */ sll $t6, $t7, 8
/* B70F24 800F9D84 3C0100FF */ lui $at, 0xff
/* B70F28 800F9D88 02016824 */ and $t5, $s0, $at
/* B70F2C 800F9D8C 030EC825 */ or $t9, $t8, $t6
/* B70F30 800F9D90 000DC402 */ srl $t8, $t5, 0x10
/* B70F34 800F9D94 02002825 */ move $a1, $s0
/* B70F38 800F9D98 00052E00 */ sll $a1, $a1, 0x18
/* B70F3C 800F9D9C 330E00FF */ andi $t6, $t8, 0xff
/* B70F40 800F9DA0 032E2025 */ or $a0, $t9, $t6
/* B70F44 800F9DA4 0C0396C8 */ jal Audio_QueueCmdS8
/* B70F48 800F9DA8 00052E03 */ sra $a1, $a1, 0x18
/* B70F4C 800F9DAC 10000093 */ b .L800F9FFC
/* B70F50 800F9DB0 8FBF001C */ lw $ra, 0x1c($sp)
glabel L800F9DB4
/* B70F54 800F9DB4 30EF00FF */ andi $t7, $a3, 0xff
/* B70F58 800F9DB8 000FC080 */ sll $t8, $t7, 2
/* B70F5C 800F9DBC 030FC021 */ addu $t8, $t8, $t7
/* B70F60 800F9DC0 0018C080 */ sll $t8, $t8, 2
/* B70F64 800F9DC4 030FC023 */ subu $t8, $t8, $t7
/* B70F68 800F9DC8 0018C0C0 */ sll $t8, $t8, 3
/* B70F6C 800F9DCC 3C098017 */ lui $t1, %hi(D_8016E750) # $t1, 0x8017
/* B70F70 800F9DD0 030FC021 */ addu $t8, $t8, $t7
/* B70F74 800F9DD4 2529E750 */ addiu $t1, %lo(D_8016E750) # addiu $t1, $t1, -0x18b0
/* B70F78 800F9DD8 0018C080 */ sll $t8, $t8, 2
/* B70F7C 800F9DDC 0138C821 */ addu $t9, $t1, $t8
/* B70F80 800F9DE0 10000085 */ b .L800F9FF8
/* B70F84 800F9DE4 A7300258 */ sh $s0, 0x258($t9)
glabel L800F9DE8
/* B70F88 800F9DE8 02003025 */ move $a2, $s0
/* B70F8C 800F9DEC 30C6FFFF */ andi $a2, $a2, 0xffff
/* B70F90 800F9DF0 10C00013 */ beqz $a2, .L800F9E40
/* B70F94 800F9DF4 00C01825 */ move $v1, $a2
/* B70F98 800F9DF8 00E01025 */ move $v0, $a3
/* B70F9C 800F9DFC 304200FF */ andi $v0, $v0, 0xff
/* B70FA0 800F9E00 00021400 */ sll $v0, $v0, 0x10
/* B70FA4 800F9E04 3C019000 */ lui $at, 0x9000
/* B70FA8 800F9E08 00412025 */ or $a0, $v0, $at
/* B70FAC 800F9E0C AFA20030 */ sw $v0, 0x30($sp)
/* B70FB0 800F9E10 30C5FFFF */ andi $a1, $a2, 0xffff
/* B70FB4 800F9E14 AFA60034 */ sw $a2, 0x34($sp)
/* B70FB8 800F9E18 0C0396D4 */ jal Audio_QueueCmdU16
/* B70FBC 800F9E1C AFA70038 */ sw $a3, 0x38($sp)
/* B70FC0 800F9E20 8FA20030 */ lw $v0, 0x30($sp)
/* B70FC4 800F9E24 3C010800 */ lui $at, 0x800
/* B70FC8 800F9E28 24050001 */ li $a1, 1
/* B70FCC 800F9E2C 00412025 */ or $a0, $v0, $at
/* B70FD0 800F9E30 0C0396C8 */ jal Audio_QueueCmdS8
/* B70FD4 800F9E34 3484FF00 */ ori $a0, $a0, 0xff00
/* B70FD8 800F9E38 8FA30034 */ lw $v1, 0x34($sp)
/* B70FDC 800F9E3C 8FA70038 */ lw $a3, 0x38($sp)
.L800F9E40:
/* B70FE0 800F9E40 3866FFFF */ xori $a2, $v1, 0xffff
/* B70FE4 800F9E44 10C0006C */ beqz $a2, .L800F9FF8
/* B70FE8 800F9E48 00E01025 */ move $v0, $a3
/* B70FEC 800F9E4C 304200FF */ andi $v0, $v0, 0xff
/* B70FF0 800F9E50 00021400 */ sll $v0, $v0, 0x10
/* B70FF4 800F9E54 3C019000 */ lui $at, 0x9000
/* B70FF8 800F9E58 00412025 */ or $a0, $v0, $at
/* B70FFC 800F9E5C 3C010800 */ lui $at, 0x800
/* B71000 800F9E60 00418025 */ or $s0, $v0, $at
/* B71004 800F9E64 3610FF00 */ ori $s0, $s0, 0xff00
/* B71008 800F9E68 0C0396D4 */ jal Audio_QueueCmdU16
/* B7100C 800F9E6C 30C5FFFF */ andi $a1, $a2, 0xffff
/* B71010 800F9E70 02002025 */ move $a0, $s0
/* B71014 800F9E74 0C0396C8 */ jal Audio_QueueCmdS8
/* B71018 800F9E78 00002825 */ move $a1, $zero
/* B7101C 800F9E7C 1000005F */ b .L800F9FFC
/* B71020 800F9E80 8FBF001C */ lw $ra, 0x1c($sp)
glabel L800F9E84
/* B71024 800F9E84 30EE00FF */ andi $t6, $a3, 0xff
/* B71028 800F9E88 000E7880 */ sll $t7, $t6, 2
/* B7102C 800F9E8C 01EE7821 */ addu $t7, $t7, $t6
/* B71030 800F9E90 000F7880 */ sll $t7, $t7, 2
/* B71034 800F9E94 01EE7823 */ subu $t7, $t7, $t6
/* B71038 800F9E98 000F78C0 */ sll $t7, $t7, 3
/* B7103C 800F9E9C 3C098017 */ lui $t1, %hi(D_8016E750) # $t1, 0x8017
/* B71040 800F9EA0 01EE7821 */ addu $t7, $t7, $t6
/* B71044 800F9EA4 2529E750 */ addiu $t1, %lo(D_8016E750) # addiu $t1, $t1, -0x18b0
/* B71048 800F9EA8 000F7880 */ sll $t7, $t7, 2
/* B7104C 800F9EAC 012FC021 */ addu $t8, $t1, $t7
/* B71050 800F9EB0 10000051 */ b .L800F9FF8
/* B71054 800F9EB4 AF100014 */ sw $s0, 0x14($t8)
glabel L800F9EB8
/* B71058 800F9EB8 3C0100F0 */ lui $at, 0xf0
/* B7105C 800F9EBC 02016824 */ and $t5, $s0, $at
/* B71060 800F9EC0 000DCD02 */ srl $t9, $t5, 0x14
/* B71064 800F9EC4 332E00FF */ andi $t6, $t9, 0xff
/* B71068 800F9EC8 2401000F */ li $at, 15
/* B7106C 800F9ECC 11C10019 */ beq $t6, $at, .L800F9F34
/* B71070 800F9ED0 30EF00FF */ andi $t7, $a3, 0xff
/* B71074 800F9ED4 000FC080 */ sll $t8, $t7, 2
/* B71078 800F9ED8 030FC021 */ addu $t8, $t8, $t7
/* B7107C 800F9EDC 0018C080 */ sll $t8, $t8, 2
/* B71080 800F9EE0 030FC023 */ subu $t8, $t8, $t7
/* B71084 800F9EE4 0018C0C0 */ sll $t8, $t8, 3
/* B71088 800F9EE8 3C098017 */ lui $t1, %hi(D_8016E750) # $t1, 0x8017
/* B7108C 800F9EEC 030FC021 */ addu $t8, $t8, $t7
/* B71090 800F9EF0 2529E750 */ addiu $t1, %lo(D_8016E750) # addiu $t1, $t1, -0x18b0
/* B71094 800F9EF4 0018C080 */ sll $t8, $t8, 2
/* B71098 800F9EF8 01381021 */ addu $v0, $t1, $t8
/* B7109C 800F9EFC 9043004D */ lbu $v1, 0x4d($v0)
/* B710A0 800F9F00 28610007 */ slti $at, $v1, 7
/* B710A4 800F9F04 1020003C */ beqz $at, .L800F9FF8
/* B710A8 800F9F08 306900FF */ andi $t1, $v1, 0xff
/* B710AC 800F9F0C 246D0001 */ addiu $t5, $v1, 1
/* B710B0 800F9F10 29210008 */ slti $at, $t1, 8
/* B710B4 800F9F14 10200038 */ beqz $at, .L800F9FF8
/* B710B8 800F9F18 A04D004D */ sb $t5, 0x4d($v0)
/* B710BC 800F9F1C 0009C880 */ sll $t9, $t1, 2
/* B710C0 800F9F20 00597021 */ addu $t6, $v0, $t9
/* B710C4 800F9F24 ADD0002C */ sw $s0, 0x2c($t6)
/* B710C8 800F9F28 240F0002 */ li $t7, 2
/* B710CC 800F9F2C 10000032 */ b .L800F9FF8
/* B710D0 800F9F30 A04F004C */ sb $t7, 0x4c($v0)
.L800F9F34:
/* B710D4 800F9F34 30F800FF */ andi $t8, $a3, 0xff
/* B710D8 800F9F38 00186880 */ sll $t5, $t8, 2
/* B710DC 800F9F3C 01B86821 */ addu $t5, $t5, $t8
/* B710E0 800F9F40 000D6880 */ sll $t5, $t5, 2
/* B710E4 800F9F44 01B86823 */ subu $t5, $t5, $t8
/* B710E8 800F9F48 000D68C0 */ sll $t5, $t5, 3
/* B710EC 800F9F4C 3C098017 */ lui $t1, %hi(D_8016E750) # $t1, 0x8017
/* B710F0 800F9F50 01B86821 */ addu $t5, $t5, $t8
/* B710F4 800F9F54 2529E750 */ addiu $t1, %lo(D_8016E750) # addiu $t1, $t1, -0x18b0
/* B710F8 800F9F58 000D6880 */ sll $t5, $t5, 2
/* B710FC 800F9F5C 012DC821 */ addu $t9, $t1, $t5
/* B71100 800F9F60 10000025 */ b .L800F9FF8
/* B71104 800F9F64 A320004D */ sb $zero, 0x4d($t9)
glabel L800F9F68
/* B71108 800F9F68 32020F00 */ andi $v0, $s0, 0xf00
/* B7110C 800F9F6C 00021202 */ srl $v0, $v0, 8
/* B71110 800F9F70 304200FF */ andi $v0, $v0, 0xff
/* B71114 800F9F74 10400006 */ beqz $v0, .L800F9F90
/* B71118 800F9F78 3C04F000 */ lui $a0, 0xf000
/* B7111C 800F9F7C 24010001 */ li $at, 1
/* B71120 800F9F80 1041000A */ beq $v0, $at, .L800F9FAC
/* B71124 800F9F84 32190001 */ andi $t9, $s0, 1
/* B71128 800F9F88 1000001C */ b .L800F9FFC
/* B7112C 800F9F8C 8FBF001C */ lw $ra, 0x1c($sp)
.L800F9F90:
/* B71130 800F9F90 320F00FF */ andi $t7, $s0, 0xff
/* B71134 800F9F94 3C058013 */ lui $a1, %hi(D_80133410)
/* B71138 800F9F98 00AF2821 */ addu $a1, $a1, $t7
/* B7113C 800F9F9C 0C0396BF */ jal Audio_QueueCmdS32
/* B71140 800F9FA0 90A53410 */ lbu $a1, %lo(D_80133410)($a1)
/* B71144 800F9FA4 10000015 */ b .L800F9FFC
/* B71148 800F9FA8 8FBF001C */ lw $ra, 0x1c($sp)
.L800F9FAC:
/* B7114C 800F9FAC 3C018013 */ lui $at, %hi(D_80133408) # $at, 0x8013
/* B71150 800F9FB0 10000011 */ b .L800F9FF8
/* B71154 800F9FB4 A0393408 */ sb $t9, %lo(D_80133408)($at)
glabel L800F9FB8
/* B71158 800F9FB8 320EFF00 */ andi $t6, $s0, 0xff00
/* B7115C 800F9FBC 3C038013 */ lui $v1, %hi(gAudioSpecId) # $v1, 0x8013
/* B71160 800F9FC0 000E7A02 */ srl $t7, $t6, 8
/* B71164 800F9FC4 3C018013 */ lui $at, %hi(D_801333CC) # $at, 0x8013
/* B71168 800F9FC8 24633414 */ addiu $v1, %lo(gAudioSpecId) # addiu $v1, $v1, 0x3414
/* B7116C 800F9FCC A02F33CC */ sb $t7, %lo(D_801333CC)($at)
/* B71170 800F9FD0 90780000 */ lbu $t8, ($v1)
/* B71174 800F9FD4 A0700000 */ sb $s0, ($v1)
/* B71178 800F9FD8 320400FF */ andi $a0, $s0, 0xff
/* B7117C 800F9FDC 0C0397E2 */ jal func_800E5F88
/* B71180 800F9FE0 A3B80059 */ sb $t8, 0x59($sp)
/* B71184 800F9FE4 0C03DC6F */ jal func_800F71BC
/* B71188 800F9FE8 93A40059 */ lbu $a0, 0x59($sp)
/* B7118C 800F9FEC 3C04F800 */ lui $a0, 0xf800
/* B71190 800F9FF0 0C0396BF */ jal Audio_QueueCmdS32
/* B71194 800F9FF4 00002825 */ move $a1, $zero
.L800F9FF8:
/* B71198 800F9FF8 8FBF001C */ lw $ra, 0x1c($sp)
.L800F9FFC:
/* B7119C 800F9FFC 8FB00018 */ lw $s0, 0x18($sp)
/* B711A0 800FA000 27BD0068 */ addiu $sp, $sp, 0x68
/* B711A4 800FA004 03E00008 */ jr $ra
/* B711A8 800FA008 00000000 */ nop

View file

@ -1,134 +0,0 @@
glabel func_800F9280
/* B70420 800F9280 27BDFFC8 */ addiu $sp, $sp, -0x38
/* B70424 800F9284 3C0E8013 */ lui $t6, %hi(D_80133408) # $t6, 0x8013
/* B70428 800F9288 91CE3408 */ lbu $t6, %lo(D_80133408)($t6)
/* B7042C 800F928C AFB00018 */ sw $s0, 0x18($sp)
/* B70430 800F9290 AFA60040 */ sw $a2, 0x40($sp)
/* B70434 800F9294 30C600FF */ andi $a2, $a2, 0xff
/* B70438 800F9298 309000FF */ andi $s0, $a0, 0xff
/* B7043C 800F929C AFBF001C */ sw $ra, 0x1c($sp)
/* B70440 800F92A0 AFA40038 */ sw $a0, 0x38($sp)
/* B70444 800F92A4 AFA5003C */ sw $a1, 0x3c($sp)
/* B70448 800F92A8 11C00003 */ beqz $t6, .L800F92B8
/* B7044C 800F92AC AFA70044 */ sw $a3, 0x44($sp)
/* B70450 800F92B0 24010002 */ li $at, 2
/* B70454 800F92B4 1601006A */ bne $s0, $at, .L800F9460
.L800F92B8:
/* B70458 800F92B8 30C6007F */ andi $a2, $a2, 0x7f
/* B7045C 800F92BC 30C600FF */ andi $a2, $a2, 0xff
/* B70460 800F92C0 2401007F */ li $at, 127
/* B70464 800F92C4 14C10019 */ bne $a2, $at, .L800F932C
/* B70468 800F92C8 00C03825 */ move $a3, $a2
/* B7046C 800F92CC 97AF0046 */ lhu $t7, 0x46($sp)
/* B70470 800F92D0 3C088017 */ lui $t0, %hi(gAudioContext+0x2854) # $t0, 0x8017
/* B70474 800F92D4 850819D4 */ lh $t0, %lo(gAudioContext+0x2854)($t0)
/* B70478 800F92D8 000FC0C3 */ sra $t8, $t7, 3
/* B7047C 800F92DC 0018C900 */ sll $t9, $t8, 4
/* B70480 800F92E0 0338C823 */ subu $t9, $t9, $t8
/* B70484 800F92E4 0019C880 */ sll $t9, $t9, 2
/* B70488 800F92E8 03280019 */ multu $t9, $t0
/* B7048C 800F92EC 93AB003F */ lbu $t3, 0x3f($sp)
/* B70490 800F92F0 320300FF */ andi $v1, $s0, 0xff
/* B70494 800F92F4 00031C00 */ sll $v1, $v1, 0x10
/* B70498 800F92F8 3C018500 */ lui $at, 0x8500
/* B7049C 800F92FC 00614825 */ or $t1, $v1, $at
/* B704A0 800F9300 000B6200 */ sll $t4, $t3, 8
/* B704A4 800F9304 012C2025 */ or $a0, $t1, $t4
/* B704A8 800F9308 AFA30028 */ sw $v1, 0x28($sp)
/* B704AC 800F930C AFA6002C */ sw $a2, 0x2c($sp)
/* B704B0 800F9310 00001012 */ mflo $v0
/* B704B4 800F9314 3045FFFF */ andi $a1, $v0, 0xffff
/* B704B8 800F9318 0C0396BF */ jal Audio_QueueCmdS32
/* B704BC 800F931C 00000000 */ nop
/* B704C0 800F9320 8FA30028 */ lw $v1, 0x28($sp)
/* B704C4 800F9324 10000018 */ b .L800F9388
/* B704C8 800F9328 8FA7002C */ lw $a3, 0x2c($sp)
.L800F932C:
/* B704CC 800F932C 3C088017 */ lui $t0, %hi(gAudioContext+0x2854) # $t0, 0x8017
/* B704D0 800F9330 950819D4 */ lhu $t0, %lo(gAudioContext+0x2854)($t0)
/* B704D4 800F9334 97B90046 */ lhu $t9, 0x46($sp)
/* B704D8 800F9338 320300FF */ andi $v1, $s0, 0xff
/* B704DC 800F933C 93AE003F */ lbu $t6, 0x3f($sp)
/* B704E0 800F9340 03280019 */ multu $t9, $t0
/* B704E4 800F9344 00031C00 */ sll $v1, $v1, 0x10
/* B704E8 800F9348 3C018200 */ lui $at, 0x8200
/* B704EC 800F934C 00616825 */ or $t5, $v1, $at
/* B704F0 800F9350 01C07825 */ move $t7, $t6
/* B704F4 800F9354 000FC200 */ sll $t8, $t7, 8
/* B704F8 800F9358 01B82025 */ or $a0, $t5, $t8
/* B704FC 800F935C AFA30028 */ sw $v1, 0x28($sp)
/* B70500 800F9360 AFA7002C */ sw $a3, 0x2c($sp)
/* B70504 800F9364 00002812 */ mflo $a1
/* B70508 800F9368 04A10002 */ bgez $a1, .L800F9374
/* B7050C 800F936C 00A00821 */ addu $at, $a1, $zero
/* B70510 800F9370 24A10003 */ addiu $at, $a1, 3
.L800F9374:
/* B70514 800F9374 00012883 */ sra $a1, $at, 2
/* B70518 800F9378 0C0396BF */ jal Audio_QueueCmdS32
/* B7051C 800F937C 00000000 */ nop
/* B70520 800F9380 8FA30028 */ lw $v1, 0x28($sp)
/* B70524 800F9384 8FA7002C */ lw $a3, 0x2c($sp)
.L800F9388:
/* B70528 800F9388 00105080 */ sll $t2, $s0, 2
/* B7052C 800F938C 01505021 */ addu $t2, $t2, $s0
/* B70530 800F9390 000A5080 */ sll $t2, $t2, 2
/* B70534 800F9394 01505023 */ subu $t2, $t2, $s0
/* B70538 800F9398 000A50C0 */ sll $t2, $t2, 3
/* B7053C 800F939C 01505021 */ addu $t2, $t2, $s0
/* B70540 800F93A0 3C0B8017 */ lui $t3, %hi(D_8016E750) # $t3, 0x8017
/* B70544 800F93A4 256BE750 */ addiu $t3, %lo(D_8016E750) # addiu $t3, $t3, -0x18b0
/* B70548 800F93A8 000A5080 */ sll $t2, $t2, 2
/* B7054C 800F93AC 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B70550 800F93B0 014B3021 */ addu $a2, $t2, $t3
/* B70554 800F93B4 44810000 */ mtc1 $at, $f0
/* B70558 800F93B8 C4C20000 */ lwc1 $f2, ($a2)
/* B7055C 800F93BC 93A9003F */ lbu $t1, 0x3f($sp)
/* B70560 800F93C0 00076200 */ sll $t4, $a3, 8
/* B70564 800F93C4 46020032 */ c.eq.s $f0, $f2
/* B70568 800F93C8 012C1025 */ or $v0, $t1, $t4
/* B7056C 800F93CC A4C20254 */ sh $v0, 0x254($a2)
/* B70570 800F93D0 A4C20256 */ sh $v0, 0x256($a2)
/* B70574 800F93D4 45010008 */ bc1t .L800F93F8
/* B70578 800F93D8 3C014100 */ lui $at, 0x4100
/* B7057C 800F93DC 44051000 */ mfc1 $a1, $f2
/* B70580 800F93E0 00612025 */ or $a0, $v1, $at
/* B70584 800F93E4 0C0396B6 */ jal Audio_QueueCmdF32
/* B70588 800F93E8 AFA60024 */ sw $a2, 0x24($sp)
/* B7058C 800F93EC 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B70590 800F93F0 44810000 */ mtc1 $at, $f0
/* B70594 800F93F4 8FA60024 */ lw $a2, 0x24($sp)
.L800F93F8:
/* B70598 800F93F8 00107080 */ sll $t6, $s0, 2
/* B7059C 800F93FC 01D07021 */ addu $t6, $t6, $s0
/* B705A0 800F9400 000E7080 */ sll $t6, $t6, 2
/* B705A4 800F9404 01D07023 */ subu $t6, $t6, $s0
/* B705A8 800F9408 000E70C0 */ sll $t6, $t6, 3
/* B705AC 800F940C 01D07021 */ addu $t6, $t6, $s0
/* B705B0 800F9410 3C0F8017 */ lui $t7, %hi(D_8016E750) # $t7, 0x8017
/* B705B4 800F9414 25EFE750 */ addiu $t7, %lo(D_8016E750) # addiu $t7, $t7, -0x18b0
/* B705B8 800F9418 000E7080 */ sll $t6, $t6, 2
/* B705BC 800F941C A4C00028 */ sh $zero, 0x28($a2)
/* B705C0 800F9420 A4C00018 */ sh $zero, 0x18($a2)
/* B705C4 800F9424 ACC00014 */ sw $zero, 0x14($a2)
/* B705C8 800F9428 01CF2021 */ addu $a0, $t6, $t7
/* B705CC 800F942C 00001825 */ move $v1, $zero
.L800F9430:
/* B705D0 800F9430 00036940 */ sll $t5, $v1, 5
/* B705D4 800F9434 24630001 */ addiu $v1, $v1, 1
/* B705D8 800F9438 008D1021 */ addu $v0, $a0, $t5
/* B705DC 800F943C 306300FF */ andi $v1, $v1, 0xff
/* B705E0 800F9440 28610010 */ slti $at, $v1, 0x10
/* B705E4 800F9444 E4400050 */ swc1 $f0, 0x50($v0)
/* B705E8 800F9448 A440005C */ sh $zero, 0x5c($v0)
/* B705EC 800F944C E4400060 */ swc1 $f0, 0x60($v0)
/* B705F0 800F9450 1420FFF7 */ bnez $at, .L800F9430
/* B705F4 800F9454 A440006C */ sh $zero, 0x6c($v0)
/* B705F8 800F9458 A4C00250 */ sh $zero, 0x250($a2)
/* B705FC 800F945C A4C00252 */ sh $zero, 0x252($a2)
.L800F9460:
/* B70600 800F9460 8FBF001C */ lw $ra, 0x1c($sp)
/* B70604 800F9464 8FB00018 */ lw $s0, 0x18($sp)
/* B70608 800F9468 27BD0038 */ addiu $sp, $sp, 0x38
/* B7060C 800F946C 03E00008 */ jr $ra
/* B70610 800F9470 00000000 */ nop

View file

@ -1,686 +0,0 @@
.late_rodata
glabel jtbl_8014A680
.word L800FAAE4
.word L800FAB28
.word L800FAB48
.word L800FAB84
.word L800FABAC
.word L800FABD0
.word L800FAC18
.word L800FAAFC
.word L800FAC24
.word L800FAC84
.word L800FACA4
.word L800FACD4
.word L800FACD4
.word L800FACD4
.word L800FAC3C
.text
glabel func_800FA3DC
/* B7157C 800FA3DC 27BDFF70 */ addiu $sp, $sp, -0x90
/* B71580 800FA3E0 AFB7003C */ sw $s7, 0x3c($sp)
/* B71584 800FA3E4 F7B40018 */ sdc1 $f20, 0x18($sp)
/* B71588 800FA3E8 3C0142FE */ lui $at, 0x42fe
/* B7158C 800FA3EC AFBE0040 */ sw $fp, 0x40($sp)
/* B71590 800FA3F0 AFB60038 */ sw $s6, 0x38($sp)
/* B71594 800FA3F4 AFB50034 */ sw $s5, 0x34($sp)
/* B71598 800FA3F8 3C178017 */ lui $s7, %hi(D_8016E750)
/* B7159C 800FA3FC 4481A000 */ mtc1 $at, $f20
/* B715A0 800FA400 AFBF0044 */ sw $ra, 0x44($sp)
/* B715A4 800FA404 AFB40030 */ sw $s4, 0x30($sp)
/* B715A8 800FA408 AFB3002C */ sw $s3, 0x2c($sp)
/* B715AC 800FA40C AFB20028 */ sw $s2, 0x28($sp)
/* B715B0 800FA410 AFB10024 */ sw $s1, 0x24($sp)
/* B715B4 800FA414 AFB00020 */ sw $s0, 0x20($sp)
/* B715B8 800FA418 26F7E750 */ addiu $s7, %lo(D_8016E750)
/* B715BC 800FA41C 0000A825 */ move $s5, $zero
/* B715C0 800FA420 3C16E300 */ li $s6, 0xE3000000 # 0.000000
/* B715C4 800FA424 241E0264 */ li $fp, 612
.L800FA428:
/* B715C8 800FA428 02BE0019 */ multu $s5, $fp
/* B715CC 800FA42C 00007012 */ mflo $t6
/* B715D0 800FA430 02EE9021 */ addu $s2, $s7, $t6
/* B715D4 800FA434 924F0260 */ lbu $t7, 0x260($s2)
/* B715D8 800FA438 51E00010 */ beql $t7, $zero, .L800FA47C
/* B715DC 800FA43C 92580013 */ lbu $t8, 0x13($s2)
/* B715E0 800FA440 0C039788 */ jal func_800E5E20
/* B715E4 800FA444 27A40070 */ addiu $a0, $sp, 0x70
/* B715E8 800FA448 24010001 */ li $at, 1
/* B715EC 800FA44C 10410007 */ beq $v0, $at, .L800FA46C
/* B715F0 800FA450 24010002 */ li $at, 2
/* B715F4 800FA454 10410005 */ beq $v0, $at, .L800FA46C
/* B715F8 800FA458 24010003 */ li $at, 3
/* B715FC 800FA45C 10410003 */ beq $v0, $at, .L800FA46C
/* B71600 800FA460 24010004 */ li $at, 4
/* B71604 800FA464 54410005 */ bnel $v0, $at, .L800FA47C
/* B71608 800FA468 92580013 */ lbu $t8, 0x13($s2)
.L800FA46C:
/* B7160C 800FA46C A2400260 */ sb $zero, 0x260($s2)
/* B71610 800FA470 0C03E53F */ jal Audio_ProcessSeqCmd
/* B71614 800FA474 8E44025C */ lw $a0, 0x25c($s2)
/* B71618 800FA478 92580013 */ lbu $t8, 0x13($s2)
.L800FA47C:
/* B7161C 800FA47C 13000047 */ beqz $t8, .L800FA59C
/* B71620 800FA480 0015C880 */ sll $t9, $s5, 2
/* B71624 800FA484 0335C821 */ addu $t9, $t9, $s5
/* B71628 800FA488 0019C880 */ sll $t9, $t9, 2
/* B7162C 800FA48C 0335C823 */ subu $t9, $t9, $s5
/* B71630 800FA490 0019C8C0 */ sll $t9, $t9, 3
/* B71634 800FA494 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B71638 800FA498 0335C821 */ addu $t9, $t9, $s5
/* B7163C 800FA49C 0019C880 */ sll $t9, $t9, 2
/* B71640 800FA4A0 44810000 */ mtc1 $at, $f0
/* B71644 800FA4A4 02F9A021 */ addu $s4, $s7, $t9
/* B71648 800FA4A8 00009825 */ move $s3, $zero
/* B7164C 800FA4AC 02A01025 */ move $v0, $s5
/* B71650 800FA4B0 02935021 */ addu $t2, $s4, $s3
.L800FA4B4:
/* B71654 800FA4B4 914B000E */ lbu $t3, 0xe($t2)
/* B71658 800FA4B8 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B7165C 800FA4BC 448B2000 */ mtc1 $t3, $f4
/* B71660 800FA4C0 05610004 */ bgez $t3, .L800FA4D4
/* B71664 800FA4C4 468021A0 */ cvt.s.w $f6, $f4
/* B71668 800FA4C8 44814000 */ mtc1 $at, $f8
/* B7166C 800FA4CC 00000000 */ nop
/* B71670 800FA4D0 46083180 */ add.s $f6, $f6, $f8
.L800FA4D4:
/* B71674 800FA4D4 46143283 */ div.s $f10, $f6, $f20
/* B71678 800FA4D8 26730001 */ addiu $s3, $s3, 1
/* B7167C 800FA4DC 327300FF */ andi $s3, $s3, 0xff
/* B71680 800FA4E0 2A610004 */ slti $at, $s3, 4
/* B71684 800FA4E4 460A0002 */ mul.s $f0, $f0, $f10
/* B71688 800FA4E8 5420FFF2 */ bnezl $at, .L800FA4B4
/* B7168C 800FA4EC 02935021 */ addu $t2, $s4, $s3
/* B71690 800FA4F0 46140402 */ mul.s $f16, $f0, $f20
/* B71694 800FA4F4 240A0001 */ li $t2, 1
/* B71698 800FA4F8 924C0012 */ lbu $t4, 0x12($s2)
/* B7169C 800FA4FC 3C014000 */ lui $at, 0x4000
/* B716A0 800FA500 00027E00 */ sll $t7, $v0, 0x18
/* B716A4 800FA504 000C6C00 */ sll $t5, $t4, 0x10
/* B716A8 800FA508 01A17025 */ or $t6, $t5, $at
/* B716AC 800FA50C 4459F800 */ cfc1 $t9, $31
/* B716B0 800FA510 44CAF800 */ ctc1 $t2, $31
/* B716B4 800FA514 01CFC025 */ or $t8, $t6, $t7
/* B716B8 800FA518 3C014F00 */ li $at, 0x4F000000 # 0.000000
/* B716BC 800FA51C 460084A4 */ cvt.w.s $f18, $f16
/* B716C0 800FA520 444AF800 */ cfc1 $t2, $31
/* B716C4 800FA524 00000000 */ nop
/* B716C8 800FA528 314A0078 */ andi $t2, $t2, 0x78
/* B716CC 800FA52C 51400013 */ beql $t2, $zero, .L800FA57C
/* B716D0 800FA530 440A9000 */ mfc1 $t2, $f18
/* B716D4 800FA534 44819000 */ mtc1 $at, $f18
/* B716D8 800FA538 240A0001 */ li $t2, 1
/* B716DC 800FA53C 46128481 */ sub.s $f18, $f16, $f18
/* B716E0 800FA540 44CAF800 */ ctc1 $t2, $31
/* B716E4 800FA544 00000000 */ nop
/* B716E8 800FA548 460094A4 */ cvt.w.s $f18, $f18
/* B716EC 800FA54C 444AF800 */ cfc1 $t2, $31
/* B716F0 800FA550 00000000 */ nop
/* B716F4 800FA554 314A0078 */ andi $t2, $t2, 0x78
/* B716F8 800FA558 15400005 */ bnez $t2, .L800FA570
/* B716FC 800FA55C 00000000 */ nop
/* B71700 800FA560 440A9000 */ mfc1 $t2, $f18
/* B71704 800FA564 3C018000 */ lui $at, 0x8000
/* B71708 800FA568 10000007 */ b .L800FA588
/* B7170C 800FA56C 01415025 */ or $t2, $t2, $at
.L800FA570:
/* B71710 800FA570 10000005 */ b .L800FA588
/* B71714 800FA574 240AFFFF */ li $t2, -1
/* B71718 800FA578 440A9000 */ mfc1 $t2, $f18
.L800FA57C:
/* B7171C 800FA57C 00000000 */ nop
/* B71720 800FA580 0540FFFB */ bltz $t2, .L800FA570
/* B71724 800FA584 00000000 */ nop
.L800FA588:
/* B71728 800FA588 44D9F800 */ ctc1 $t9, $31
/* B7172C 800FA58C 314B00FF */ andi $t3, $t2, 0xff
/* B71730 800FA590 0C03E803 */ jal Audio_QueueSeqCmd
/* B71734 800FA594 030B2025 */ or $a0, $t8, $t3
/* B71738 800FA598 A2400013 */ sb $zero, 0x13($s2)
.L800FA59C:
/* B7173C 800FA59C 9642000C */ lhu $v0, 0xc($s2)
/* B71740 800FA5A0 10400011 */ beqz $v0, .L800FA5E8
/* B71744 800FA5A4 244CFFFF */ addiu $t4, $v0, -1
/* B71748 800FA5A8 318DFFFF */ andi $t5, $t4, 0xffff
/* B7174C 800FA5AC 11A00006 */ beqz $t5, .L800FA5C8
/* B71750 800FA5B0 A64C000C */ sh $t4, 0xc($s2)
/* B71754 800FA5B4 C6440000 */ lwc1 $f4, ($s2)
/* B71758 800FA5B8 C6480008 */ lwc1 $f8, 8($s2)
/* B7175C 800FA5BC 46082181 */ sub.s $f6, $f4, $f8
/* B71760 800FA5C0 10000003 */ b .L800FA5D0
/* B71764 800FA5C4 E6460000 */ swc1 $f6, ($s2)
.L800FA5C8:
/* B71768 800FA5C8 C64A0004 */ lwc1 $f10, 4($s2)
/* B7176C 800FA5CC E64A0000 */ swc1 $f10, ($s2)
.L800FA5D0:
/* B71770 800FA5D0 32A400FF */ andi $a0, $s5, 0xff
/* B71774 800FA5D4 00042400 */ sll $a0, $a0, 0x10
/* B71778 800FA5D8 3C014100 */ lui $at, 0x4100
/* B7177C 800FA5DC 00812025 */ or $a0, $a0, $at
/* B71780 800FA5E0 0C0396B6 */ jal Audio_QueueCmdF32
/* B71784 800FA5E4 8E450000 */ lw $a1, ($s2)
.L800FA5E8:
/* B71788 800FA5E8 8E450014 */ lw $a1, 0x14($s2)
/* B7178C 800FA5EC 10A0008F */ beqz $a1, .L800FA82C
/* B71790 800FA5F0 3C0100FF */ li $at, 0x00FF0000 # 0.000000
/* B71794 800FA5F4 00A11024 */ and $v0, $a1, $at
/* B71798 800FA5F8 000213C2 */ srl $v0, $v0, 0xf
/* B7179C 800FA5FC 30A40FFF */ andi $a0, $a1, 0xfff
/* B717A0 800FA600 304700FF */ andi $a3, $v0, 0xff
/* B717A4 800FA604 00A01825 */ move $v1, $a1
/* B717A8 800FA608 304800FF */ andi $t0, $v0, 0xff
/* B717AC 800FA60C 14E00003 */ bnez $a3, .L800FA61C
/* B717B0 800FA610 3086FFFF */ andi $a2, $a0, 0xffff
/* B717B4 800FA614 24E80001 */ addiu $t0, $a3, 1
/* B717B8 800FA618 310800FF */ andi $t0, $t0, 0xff
.L800FA61C:
/* B717BC 800FA61C 00157080 */ sll $t6, $s5, 2
/* B717C0 800FA620 01D57023 */ subu $t6, $t6, $s5
/* B717C4 800FA624 000E7080 */ sll $t6, $t6, 2
/* B717C8 800FA628 01D57023 */ subu $t6, $t6, $s5
/* B717CC 800FA62C 3C0F8017 */ lui $t7, %hi(gAudioContext)
/* B717D0 800FA630 25EFF180 */ addiu $t7, %lo(gAudioContext) # addiu $t7, $t7, -0xe80
/* B717D4 800FA634 000E7140 */ sll $t6, $t6, 5
/* B717D8 800FA638 01CF2821 */ addu $a1, $t6, $t7
/* B717DC 800FA63C 8CB93530 */ lw $t9, 0x3530($a1)
/* B717E0 800FA640 24010030 */ li $at, 48
/* B717E4 800FA644 3062F000 */ andi $v0, $v1, 0xf000
/* B717E8 800FA648 001957C2 */ srl $t2, $t9, 0x1f
/* B717EC 800FA64C 51400078 */ beql $t2, $zero, .L800FA830
/* B717F0 800FA650 96420028 */ lhu $v0, 0x28($s2)
/* B717F4 800FA654 94A93538 */ lhu $t1, 0x3538($a1)
/* B717F8 800FA658 00021302 */ srl $v0, $v0, 0xc
/* B717FC 800FA65C 304200FF */ andi $v0, $v0, 0xff
/* B71800 800FA660 0121001A */ div $zero, $t1, $at
/* B71804 800FA664 00004812 */ mflo $t1
/* B71808 800FA668 24010001 */ li $at, 1
/* B7180C 800FA66C 1041000C */ beq $v0, $at, .L800FA6A0
/* B71810 800FA670 3127FFFF */ andi $a3, $t1, 0xffff
/* B71814 800FA674 24010002 */ li $at, 2
/* B71818 800FA678 1041000D */ beq $v0, $at, .L800FA6B0
/* B7181C 800FA67C 3083FFFF */ andi $v1, $a0, 0xffff
/* B71820 800FA680 24010003 */ li $at, 3
/* B71824 800FA684 10410011 */ beq $v0, $at, .L800FA6CC
/* B71828 800FA688 308BFFFF */ andi $t3, $a0, 0xffff
/* B7182C 800FA68C 24010004 */ li $at, 4
/* B71830 800FA690 50410045 */ beql $v0, $at, .L800FA7A8
/* B71834 800FA694 96420018 */ lhu $v0, 0x18($s2)
/* B71838 800FA698 10000048 */ b .L800FA7BC
/* B7183C 800FA69C 96420018 */ lhu $v0, 0x18($s2)
.L800FA6A0:
/* B71840 800FA6A0 00873021 */ addu $a2, $a0, $a3
/* B71844 800FA6A4 30C6FFFF */ andi $a2, $a2, 0xffff
/* B71848 800FA6A8 10000044 */ b .L800FA7BC
/* B7184C 800FA6AC 96420018 */ lhu $v0, 0x18($s2)
.L800FA6B0:
/* B71850 800FA6B0 0067082A */ slt $at, $v1, $a3
/* B71854 800FA6B4 10200003 */ beqz $at, .L800FA6C4
/* B71858 800FA6B8 00E01025 */ move $v0, $a3
/* B7185C 800FA6BC 00433023 */ subu $a2, $v0, $v1
/* B71860 800FA6C0 30C6FFFF */ andi $a2, $a2, 0xffff
.L800FA6C4:
/* B71864 800FA6C4 1000003D */ b .L800FA7BC
/* B71868 800FA6C8 96420018 */ lhu $v0, 0x18($s2)
.L800FA6CC:
/* B7186C 800FA6CC 448B8000 */ mtc1 $t3, $f16
/* B71870 800FA6D0 44875000 */ mtc1 $a3, $f10
/* B71874 800FA6D4 05610005 */ bgez $t3, .L800FA6EC
/* B71878 800FA6D8 468084A0 */ cvt.s.w $f18, $f16
/* B7187C 800FA6DC 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B71880 800FA6E0 44812000 */ mtc1 $at, $f4
/* B71884 800FA6E4 00000000 */ nop
/* B71888 800FA6E8 46049480 */ add.s $f18, $f18, $f4
.L800FA6EC:
/* B7188C 800FA6EC 3C0142C8 */ li $at, 0x42C80000 # 0.000000
/* B71890 800FA6F0 44814000 */ mtc1 $at, $f8
/* B71894 800FA6F4 46805420 */ cvt.s.w $f16, $f10
/* B71898 800FA6F8 04E10005 */ bgez $a3, .L800FA710
/* B7189C 800FA6FC 46089183 */ div.s $f6, $f18, $f8
/* B718A0 800FA700 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B718A4 800FA704 44812000 */ mtc1 $at, $f4
/* B718A8 800FA708 00000000 */ nop
/* B718AC 800FA70C 46048400 */ add.s $f16, $f16, $f4
.L800FA710:
/* B718B0 800FA710 46068482 */ mul.s $f18, $f16, $f6
/* B718B4 800FA714 24060001 */ li $a2, 1
/* B718B8 800FA718 3C014F00 */ li $at, 0x4F000000 # 0.000000
/* B718BC 800FA71C 444CF800 */ cfc1 $t4, $31
/* B718C0 800FA720 44C6F800 */ ctc1 $a2, $31
/* B718C4 800FA724 00000000 */ nop
/* B718C8 800FA728 46009224 */ cvt.w.s $f8, $f18
/* B718CC 800FA72C 4446F800 */ cfc1 $a2, $31
/* B718D0 800FA730 00000000 */ nop
/* B718D4 800FA734 30C60078 */ andi $a2, $a2, 0x78
/* B718D8 800FA738 50C00013 */ beql $a2, $zero, .L800FA788
/* B718DC 800FA73C 44064000 */ mfc1 $a2, $f8
/* B718E0 800FA740 44814000 */ mtc1 $at, $f8
/* B718E4 800FA744 24060001 */ li $a2, 1
/* B718E8 800FA748 46089201 */ sub.s $f8, $f18, $f8
/* B718EC 800FA74C 44C6F800 */ ctc1 $a2, $31
/* B718F0 800FA750 00000000 */ nop
/* B718F4 800FA754 46004224 */ cvt.w.s $f8, $f8
/* B718F8 800FA758 4446F800 */ cfc1 $a2, $31
/* B718FC 800FA75C 00000000 */ nop
/* B71900 800FA760 30C60078 */ andi $a2, $a2, 0x78
/* B71904 800FA764 14C00005 */ bnez $a2, .L800FA77C
/* B71908 800FA768 00000000 */ nop
/* B7190C 800FA76C 44064000 */ mfc1 $a2, $f8
/* B71910 800FA770 3C018000 */ li $at, 0x80000000 # 0.000000
/* B71914 800FA774 10000007 */ b .L800FA794
/* B71918 800FA778 00C13025 */ or $a2, $a2, $at
.L800FA77C:
/* B7191C 800FA77C 10000005 */ b .L800FA794
/* B71920 800FA780 2406FFFF */ li $a2, -1
/* B71924 800FA784 44064000 */ mfc1 $a2, $f8
.L800FA788:
/* B71928 800FA788 00000000 */ nop
/* B7192C 800FA78C 04C0FFFB */ bltz $a2, .L800FA77C
/* B71930 800FA790 00000000 */ nop
.L800FA794:
/* B71934 800FA794 44CCF800 */ ctc1 $t4, $31
/* B71938 800FA798 30C6FFFF */ andi $a2, $a2, 0xffff
/* B7193C 800FA79C 10000007 */ b .L800FA7BC
/* B71940 800FA7A0 96420018 */ lhu $v0, 0x18($s2)
/* B71944 800FA7A4 96420018 */ lhu $v0, 0x18($s2)
.L800FA7A8:
/* B71948 800FA7A8 30E6FFFF */ andi $a2, $a3, 0xffff
/* B7194C 800FA7AC 10400003 */ beqz $v0, .L800FA7BC
/* B71950 800FA7B0 00000000 */ nop
/* B71954 800FA7B4 10000001 */ b .L800FA7BC
/* B71958 800FA7B8 3046FFFF */ andi $a2, $v0, 0xffff
.L800FA7BC:
/* B7195C 800FA7BC 44898000 */ mtc1 $t1, $f16
/* B71960 800FA7C0 28C1012D */ slti $at, $a2, 0x12d
/* B71964 800FA7C4 14200002 */ bnez $at, .L800FA7D0
/* B71968 800FA7C8 468080A0 */ cvt.s.w $f2, $f16
/* B7196C 800FA7CC 2406012C */ li $a2, 300
.L800FA7D0:
/* B71970 800FA7D0 44865000 */ mtc1 $a2, $f10
/* B71974 800FA7D4 14400002 */ bnez $v0, .L800FA7E0
/* B71978 800FA7D8 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B7197C 800FA7DC A6470018 */ sh $a3, 0x18($s2)
.L800FA7E0:
/* B71980 800FA7E0 04C10004 */ bgez $a2, .L800FA7F4
/* B71984 800FA7E4 46805020 */ cvt.s.w $f0, $f10
/* B71988 800FA7E8 44812000 */ mtc1 $at, $f4
/* B7198C 800FA7EC 00000000 */ nop
/* B71990 800FA7F0 46040000 */ add.s $f0, $f0, $f4
.L800FA7F4:
/* B71994 800FA7F4 44889000 */ mtc1 $t0, $f18
/* B71998 800FA7F8 E6400020 */ swc1 $f0, 0x20($s2)
/* B7199C 800FA7FC E642001C */ swc1 $f2, 0x1c($s2)
/* B719A0 800FA800 46001181 */ sub.s $f6, $f2, $f0
/* B719A4 800FA804 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B719A8 800FA808 05010004 */ bgez $t0, .L800FA81C
/* B719AC 800FA80C 46809220 */ cvt.s.w $f8, $f18
/* B719B0 800FA810 44815000 */ mtc1 $at, $f10
/* B719B4 800FA814 00000000 */ nop
/* B719B8 800FA818 460A4200 */ add.s $f8, $f8, $f10
.L800FA81C:
/* B719BC 800FA81C 46083103 */ div.s $f4, $f6, $f8
/* B719C0 800FA820 A6480028 */ sh $t0, 0x28($s2)
/* B719C4 800FA824 AE400014 */ sw $zero, 0x14($s2)
/* B719C8 800FA828 E6440024 */ swc1 $f4, 0x24($s2)
.L800FA82C:
/* B719CC 800FA82C 96420028 */ lhu $v0, 0x28($s2)
.L800FA830:
/* B719D0 800FA830 10400014 */ beqz $v0, .L800FA884
/* B719D4 800FA834 244DFFFF */ addiu $t5, $v0, -1
/* B719D8 800FA838 31AEFFFF */ andi $t6, $t5, 0xffff
/* B719DC 800FA83C 32A300FF */ andi $v1, $s5, 0xff
/* B719E0 800FA840 A64D0028 */ sh $t5, 0x28($s2)
/* B719E4 800FA844 11C00006 */ beqz $t6, .L800FA860
/* B719E8 800FA848 00031C00 */ sll $v1, $v1, 0x10
/* B719EC 800FA84C C650001C */ lwc1 $f16, 0x1c($s2)
/* B719F0 800FA850 C6520024 */ lwc1 $f18, 0x24($s2)
/* B719F4 800FA854 46128281 */ sub.s $f10, $f16, $f18
/* B719F8 800FA858 10000003 */ b .L800FA868
/* B719FC 800FA85C E64A001C */ swc1 $f10, 0x1c($s2)
.L800FA860:
/* B71A00 800FA860 C6460020 */ lwc1 $f6, 0x20($s2)
/* B71A04 800FA864 E646001C */ swc1 $f6, 0x1c($s2)
.L800FA868:
/* B71A08 800FA868 C648001C */ lwc1 $f8, 0x1c($s2)
/* B71A0C 800FA86C 3C014700 */ lui $at, 0x4700
/* B71A10 800FA870 00612025 */ or $a0, $v1, $at
/* B71A14 800FA874 4600410D */ trunc.w.s $f4, $f8
/* B71A18 800FA878 44052000 */ mfc1 $a1, $f4
/* B71A1C 800FA87C 0C0396BF */ jal Audio_QueueCmdS32
/* B71A20 800FA880 00000000 */ nop
.L800FA884:
/* B71A24 800FA884 96590252 */ lhu $t9, 0x252($s2)
/* B71A28 800FA888 1320002C */ beqz $t9, .L800FA93C
/* B71A2C 800FA88C 00155080 */ sll $t2, $s5, 2
/* B71A30 800FA890 01555021 */ addu $t2, $t2, $s5
/* B71A34 800FA894 000A5080 */ sll $t2, $t2, 2
/* B71A38 800FA898 01555023 */ subu $t2, $t2, $s5
/* B71A3C 800FA89C 000A50C0 */ sll $t2, $t2, 3
/* B71A40 800FA8A0 01555021 */ addu $t2, $t2, $s5
/* B71A44 800FA8A4 000A5080 */ sll $t2, $t2, 2
/* B71A48 800FA8A8 02EAA021 */ addu $s4, $s7, $t2
/* B71A4C 800FA8AC 00008025 */ move $s0, $zero
/* B71A50 800FA8B0 00102140 */ sll $a0, $s0, 5
.L800FA8B4:
/* B71A54 800FA8B4 02841021 */ addu $v0, $s4, $a0
/* B71A58 800FA8B8 9443005C */ lhu $v1, 0x5c($v0)
/* B71A5C 800FA8BC 32A600FF */ andi $a2, $s5, 0xff
/* B71A60 800FA8C0 00063400 */ sll $a2, $a2, 0x10
/* B71A64 800FA8C4 10600018 */ beqz $v1, .L800FA928
/* B71A68 800FA8C8 2478FFFF */ addiu $t8, $v1, -1
/* B71A6C 800FA8CC 3C010100 */ lui $at, 0x100
/* B71A70 800FA8D0 330BFFFF */ andi $t3, $t8, 0xffff
/* B71A74 800FA8D4 A458005C */ sh $t8, 0x5c($v0)
/* B71A78 800FA8D8 11600006 */ beqz $t3, .L800FA8F4
/* B71A7C 800FA8DC 00C13025 */ or $a2, $a2, $at
/* B71A80 800FA8E0 C4500050 */ lwc1 $f16, 0x50($v0)
/* B71A84 800FA8E4 C4520058 */ lwc1 $f18, 0x58($v0)
/* B71A88 800FA8E8 46128281 */ sub.s $f10, $f16, $f18
/* B71A8C 800FA8EC 10000009 */ b .L800FA914
/* B71A90 800FA8F0 E44A0050 */ swc1 $f10, 0x50($v0)
.L800FA8F4:
/* B71A94 800FA8F4 02441821 */ addu $v1, $s2, $a0
/* B71A98 800FA8F8 C4660054 */ lwc1 $f6, 0x54($v1)
/* B71A9C 800FA8FC 240D0001 */ li $t5, 1
/* B71AA0 800FA900 020D7004 */ sllv $t6, $t5, $s0
/* B71AA4 800FA904 E4660050 */ swc1 $f6, 0x50($v1)
/* B71AA8 800FA908 964C0252 */ lhu $t4, 0x252($s2)
/* B71AAC 800FA90C 018E7826 */ xor $t7, $t4, $t6
/* B71AB0 800FA910 A64F0252 */ sh $t7, 0x252($s2)
.L800FA914:
/* B71AB4 800FA914 321900FF */ andi $t9, $s0, 0xff
/* B71AB8 800FA918 00195200 */ sll $t2, $t9, 8
/* B71ABC 800FA91C 00CA2025 */ or $a0, $a2, $t2
/* B71AC0 800FA920 0C0396B6 */ jal Audio_QueueCmdF32
/* B71AC4 800FA924 8C450050 */ lw $a1, 0x50($v0)
.L800FA928:
/* B71AC8 800FA928 26100001 */ addiu $s0, $s0, 1
/* B71ACC 800FA92C 321000FF */ andi $s0, $s0, 0xff
/* B71AD0 800FA930 2A010010 */ slti $at, $s0, 0x10
/* B71AD4 800FA934 5420FFDF */ bnezl $at, .L800FA8B4
/* B71AD8 800FA938 00102140 */ sll $a0, $s0, 5
.L800FA93C:
/* B71ADC 800FA93C 96580250 */ lhu $t8, 0x250($s2)
/* B71AE0 800FA940 1300002C */ beqz $t8, .L800FA9F4
/* B71AE4 800FA944 00155880 */ sll $t3, $s5, 2
/* B71AE8 800FA948 01755821 */ addu $t3, $t3, $s5
/* B71AEC 800FA94C 000B5880 */ sll $t3, $t3, 2
/* B71AF0 800FA950 01755823 */ subu $t3, $t3, $s5
/* B71AF4 800FA954 000B58C0 */ sll $t3, $t3, 3
/* B71AF8 800FA958 01755821 */ addu $t3, $t3, $s5
/* B71AFC 800FA95C 000B5880 */ sll $t3, $t3, 2
/* B71B00 800FA960 02EBA021 */ addu $s4, $s7, $t3
/* B71B04 800FA964 00008025 */ move $s0, $zero
/* B71B08 800FA968 00102140 */ sll $a0, $s0, 5
.L800FA96C:
/* B71B0C 800FA96C 02841021 */ addu $v0, $s4, $a0
/* B71B10 800FA970 9443006C */ lhu $v1, 0x6c($v0)
/* B71B14 800FA974 32A600FF */ andi $a2, $s5, 0xff
/* B71B18 800FA978 00063400 */ sll $a2, $a2, 0x10
/* B71B1C 800FA97C 10600018 */ beqz $v1, .L800FA9E0
/* B71B20 800FA980 246DFFFF */ addiu $t5, $v1, -1
/* B71B24 800FA984 3C010400 */ lui $at, 0x400
/* B71B28 800FA988 31ACFFFF */ andi $t4, $t5, 0xffff
/* B71B2C 800FA98C A44D006C */ sh $t5, 0x6c($v0)
/* B71B30 800FA990 11800006 */ beqz $t4, .L800FA9AC
/* B71B34 800FA994 00C13025 */ or $a2, $a2, $at
/* B71B38 800FA998 C4480060 */ lwc1 $f8, 0x60($v0)
/* B71B3C 800FA99C C4440068 */ lwc1 $f4, 0x68($v0)
/* B71B40 800FA9A0 46044401 */ sub.s $f16, $f8, $f4
/* B71B44 800FA9A4 10000009 */ b .L800FA9CC
/* B71B48 800FA9A8 E4500060 */ swc1 $f16, 0x60($v0)
.L800FA9AC:
/* B71B4C 800FA9AC 02441821 */ addu $v1, $s2, $a0
/* B71B50 800FA9B0 C4720064 */ lwc1 $f18, 0x64($v1)
/* B71B54 800FA9B4 240F0001 */ li $t7, 1
/* B71B58 800FA9B8 020FC804 */ sllv $t9, $t7, $s0
/* B71B5C 800FA9BC E4720060 */ swc1 $f18, 0x60($v1)
/* B71B60 800FA9C0 964E0250 */ lhu $t6, 0x250($s2)
/* B71B64 800FA9C4 01D95026 */ xor $t2, $t6, $t9
/* B71B68 800FA9C8 A64A0250 */ sh $t2, 0x250($s2)
.L800FA9CC:
/* B71B6C 800FA9CC 321800FF */ andi $t8, $s0, 0xff
/* B71B70 800FA9D0 00185A00 */ sll $t3, $t8, 8
/* B71B74 800FA9D4 00CB2025 */ or $a0, $a2, $t3
/* B71B78 800FA9D8 0C0396B6 */ jal Audio_QueueCmdF32
/* B71B7C 800FA9DC 8C450060 */ lw $a1, 0x60($v0)
.L800FA9E0:
/* B71B80 800FA9E0 26100001 */ addiu $s0, $s0, 1
/* B71B84 800FA9E4 321000FF */ andi $s0, $s0, 0xff
/* B71B88 800FA9E8 2A010010 */ slti $at, $s0, 0x10
/* B71B8C 800FA9EC 5420FFDF */ bnezl $at, .L800FA96C
/* B71B90 800FA9F0 00102140 */ sll $a0, $s0, 5
.L800FA9F4:
/* B71B94 800FA9F4 924D004D */ lbu $t5, 0x4d($s2)
/* B71B98 800FA9F8 11A000BC */ beqz $t5, .L800FACEC
/* B71B9C 800FA9FC 3C04F000 */ lui $a0, 0xf000
/* B71BA0 800FAA00 0C03E847 */ jal func_800FA11C
/* B71BA4 800FAA04 00802825 */ move $a1, $a0
/* B71BA8 800FAA08 54400004 */ bnezl $v0, .L800FAA1C
/* B71BAC 800FAA0C 9242004C */ lbu $v0, 0x4c($s2)
/* B71BB0 800FAA10 100000BB */ b .L800FAD00
/* B71BB4 800FAA14 A240004D */ sb $zero, 0x4d($s2)
/* B71BB8 800FAA18 9242004C */ lbu $v0, 0x4c($s2)
.L800FAA1C:
/* B71BBC 800FAA1C 00157880 */ sll $t7, $s5, 2
/* B71BC0 800FAA20 01F57823 */ subu $t7, $t7, $s5
/* B71BC4 800FAA24 10400004 */ beqz $v0, .L800FAA38
/* B71BC8 800FAA28 000F7880 */ sll $t7, $t7, 2
/* B71BCC 800FAA2C 244CFFFF */ addiu $t4, $v0, -1
/* B71BD0 800FAA30 100000AE */ b .L800FACEC
/* B71BD4 800FAA34 A24C004C */ sb $t4, 0x4c($s2)
.L800FAA38:
/* B71BD8 800FAA38 01F57823 */ subu $t7, $t7, $s5
/* B71BDC 800FAA3C 000F7940 */ sll $t7, $t7, 5
/* B71BE0 800FAA40 3C0E8017 */ lui $t6, %hi(gAudioContext+0x3530)
/* B71BE4 800FAA44 01CF7021 */ addu $t6, $t6, $t7
/* B71BE8 800FAA48 8DCE26B0 */ lw $t6, %lo(gAudioContext+0x3530)($t6)
/* B71BEC 800FAA4C 000ECFC2 */ srl $t9, $t6, 0x1f
/* B71BF0 800FAA50 572000A7 */ bnezl $t9, .L800FACF0
/* B71BF4 800FAA54 26B50001 */ addiu $s5, $s5, 1
/* B71BF8 800FAA58 9243004D */ lbu $v1, 0x4d($s2)
/* B71BFC 800FAA5C 00155080 */ sll $t2, $s5, 2
/* B71C00 800FAA60 01555021 */ addu $t2, $t2, $s5
/* B71C04 800FAA64 186000A0 */ blez $v1, .L800FACE8
/* B71C08 800FAA68 00009825 */ move $s3, $zero
/* B71C0C 800FAA6C 000A5080 */ sll $t2, $t2, 2
/* B71C10 800FAA70 01555023 */ subu $t2, $t2, $s5
/* B71C14 800FAA74 000A50C0 */ sll $t2, $t2, 3
/* B71C18 800FAA78 01555021 */ addu $t2, $t2, $s5
/* B71C1C 800FAA7C 000A5080 */ sll $t2, $t2, 2
/* B71C20 800FAA80 02EAA021 */ addu $s4, $s7, $t2
/* B71C24 800FAA84 0013C080 */ sll $t8, $s3, 2
.L800FAA88:
/* B71C28 800FAA88 02985821 */ addu $t3, $s4, $t8
/* B71C2C 800FAA8C 8D62002C */ lw $v0, 0x2c($t3)
/* B71C30 800FAA90 3C0100F0 */ lui $at, 0xf0
/* B71C34 800FAA94 00412024 */ and $a0, $v0, $at
/* B71C38 800FAA98 3C01000F */ lui $at, 0xf
/* B71C3C 800FAA9C 00042502 */ srl $a0, $a0, 0x14
/* B71C40 800FAAA0 00418824 */ and $s1, $v0, $at
/* B71C44 800FAAA4 308400FF */ andi $a0, $a0, 0xff
/* B71C48 800FAAA8 3050FF00 */ andi $s0, $v0, 0xff00
/* B71C4C 800FAAAC 00118C02 */ srl $s1, $s1, 0x10
/* B71C50 800FAAB0 00108202 */ srl $s0, $s0, 8
/* B71C54 800FAAB4 2C81000F */ sltiu $at, $a0, 0xf
/* B71C58 800FAAB8 00403825 */ move $a3, $v0
/* B71C5C 800FAABC 323100FF */ andi $s1, $s1, 0xff
/* B71C60 800FAAC0 321000FF */ andi $s0, $s0, 0xff
/* B71C64 800FAAC4 10200083 */ beqz $at, .L800FACD4
/* B71C68 800FAAC8 30E700FF */ andi $a3, $a3, 0xff
/* B71C6C 800FAACC 00046880 */ sll $t5, $a0, 2
/* B71C70 800FAAD0 3C018015 */ lui $at, %hi(jtbl_8014A680)
/* B71C74 800FAAD4 002D0821 */ addu $at, $at, $t5
/* B71C78 800FAAD8 8C2DA680 */ lw $t5, %lo(jtbl_8014A680)($at)
/* B71C7C 800FAADC 01A00008 */ jr $t5
/* B71C80 800FAAE0 00000000 */ nop
glabel L800FAAE4
/* B71C84 800FAAE4 322400FF */ andi $a0, $s1, 0xff
/* B71C88 800FAAE8 24050001 */ li $a1, 1
/* B71C8C 800FAAEC 0C03E890 */ jal Audio_SetVolScale
/* B71C90 800FAAF0 2406007F */ li $a2, 127
/* B71C94 800FAAF4 10000077 */ b .L800FACD4
/* B71C98 800FAAF8 9243004D */ lbu $v1, 0x4d($s2)
glabel L800FAAFC
/* B71C9C 800FAAFC 3C0C8017 */ lui $t4, %hi(D_8016E348)
/* B71CA0 800FAB00 01956021 */ addu $t4, $t4, $s5
/* B71CA4 800FAB04 918CE348 */ lbu $t4, %lo(D_8016E348)($t4)
/* B71CA8 800FAB08 322400FF */ andi $a0, $s1, 0xff
/* B71CAC 800FAB0C 24050001 */ li $a1, 1
/* B71CB0 800FAB10 14EC0070 */ bne $a3, $t4, .L800FACD4
/* B71CB4 800FAB14 2406007F */ li $a2, 127
/* B71CB8 800FAB18 0C03E890 */ jal Audio_SetVolScale
/* B71CBC 800FAB1C 320700FF */ andi $a3, $s0, 0xff
/* B71CC0 800FAB20 1000006C */ b .L800FACD4
/* B71CC4 800FAB24 9243004D */ lbu $v1, 0x4d($s2)
glabel L800FAB28
/* B71CC8 800FAB28 964F0254 */ lhu $t7, 0x254($s2)
/* B71CCC 800FAB2C 3C013000 */ lui $at, 0x3000
/* B71CD0 800FAB30 0015CE00 */ sll $t9, $s5, 0x18
/* B71CD4 800FAB34 01E17025 */ or $t6, $t7, $at
/* B71CD8 800FAB38 0C03E803 */ jal Audio_QueueSeqCmd
/* B71CDC 800FAB3C 01D92025 */ or $a0, $t6, $t9
/* B71CE0 800FAB40 10000064 */ b .L800FACD4
/* B71CE4 800FAB44 9243004D */ lbu $v1, 0x4d($s2)
glabel L800FAB48
/* B71CE8 800FAB48 023E0019 */ multu $s1, $fp
/* B71CEC 800FAB4C 00115E00 */ sll $t3, $s1, 0x18
/* B71CF0 800FAB50 3C010001 */ lui $at, 1
/* B71CF4 800FAB54 00005012 */ mflo $t2
/* B71CF8 800FAB58 02EA8021 */ addu $s0, $s7, $t2
/* B71CFC 800FAB5C 96180254 */ lhu $t8, 0x254($s0)
/* B71D00 800FAB60 030B2025 */ or $a0, $t8, $t3
/* B71D04 800FAB64 0C03E803 */ jal Audio_QueueSeqCmd
/* B71D08 800FAB68 00812025 */ or $a0, $a0, $at
/* B71D0C 800FAB6C 240D0001 */ li $t5, 1
/* B71D10 800FAB70 240C007F */ li $t4, 127
/* B71D14 800FAB74 A20D0013 */ sb $t5, 0x13($s0)
/* B71D18 800FAB78 A20C000F */ sb $t4, 0xf($s0)
/* B71D1C 800FAB7C 10000055 */ b .L800FACD4
/* B71D20 800FAB80 9243004D */ lbu $v1, 0x4d($s2)
glabel L800FAB84
/* B71D24 800FAB84 3C01B000 */ lui $at, (0xB0003000 >> 16) # lui $at, 0xb000
/* B71D28 800FAB88 34213000 */ ori $at, (0xB0003000 & 0xFFFF) # ori $at, $at, 0x3000
/* B71D2C 800FAB8C 00117E00 */ sll $t7, $s1, 0x18
/* B71D30 800FAB90 01E17025 */ or $t6, $t7, $at
/* B71D34 800FAB94 0010CC00 */ sll $t9, $s0, 0x10
/* B71D38 800FAB98 01D95025 */ or $t2, $t6, $t9
/* B71D3C 800FAB9C 0C03E803 */ jal Audio_QueueSeqCmd
/* B71D40 800FABA0 01472025 */ or $a0, $t2, $a3
/* B71D44 800FABA4 1000004B */ b .L800FACD4
/* B71D48 800FABA8 9243004D */ lbu $v1, 0x4d($s2)
glabel L800FABAC
/* B71D4C 800FABAC 3C01B000 */ lui $at, (0xB0004000 >> 16) # lui $at, 0xb000
/* B71D50 800FABB0 34214000 */ ori $at, (0xB0004000 & 0xFFFF) # ori $at, $at, 0x4000
/* B71D54 800FABB4 0011C600 */ sll $t8, $s1, 0x18
/* B71D58 800FABB8 03015825 */ or $t3, $t8, $at
/* B71D5C 800FABBC 00076C00 */ sll $t5, $a3, 0x10
/* B71D60 800FABC0 0C03E803 */ jal Audio_QueueSeqCmd
/* B71D64 800FABC4 016D2025 */ or $a0, $t3, $t5
/* B71D68 800FABC8 10000042 */ b .L800FACD4
/* B71D6C 800FABCC 9243004D */ lbu $v1, 0x4d($s2)
glabel L800FABD0
/* B71D70 800FABD0 023E0019 */ multu $s1, $fp
/* B71D74 800FABD4 0011CE00 */ sll $t9, $s1, 0x18
/* B71D78 800FABD8 3043FFFF */ andi $v1, $v0, 0xffff
/* B71D7C 800FABDC 00006012 */ mflo $t4
/* B71D80 800FABE0 02EC8021 */ addu $s0, $s7, $t4
/* B71D84 800FABE4 920F004E */ lbu $t7, 0x4e($s0)
/* B71D88 800FABE8 000F7400 */ sll $t6, $t7, 0x10
/* B71D8C 800FABEC 01D95025 */ or $t2, $t6, $t9
/* B71D90 800FABF0 0C03E803 */ jal Audio_QueueSeqCmd
/* B71D94 800FABF4 01432025 */ or $a0, $t2, $v1
/* B71D98 800FABF8 322400FF */ andi $a0, $s1, 0xff
/* B71D9C 800FABFC 24050001 */ li $a1, 1
/* B71DA0 800FAC00 2406007F */ li $a2, 127
/* B71DA4 800FAC04 0C03E890 */ jal Audio_SetVolScale
/* B71DA8 800FAC08 00003825 */ move $a3, $zero
/* B71DAC 800FAC0C A200004E */ sb $zero, 0x4e($s0)
/* B71DB0 800FAC10 10000030 */ b .L800FACD4
/* B71DB4 800FAC14 9243004D */ lbu $v1, 0x4d($s2)
glabel L800FAC18
/* B71DB8 800FAC18 A250004E */ sb $s0, 0x4e($s2)
/* B71DBC 800FAC1C 1000002D */ b .L800FACD4
/* B71DC0 800FAC20 9243004D */ lbu $v1, 0x4d($s2)
glabel L800FAC24
/* B71DC4 800FAC24 322400FF */ andi $a0, $s1, 0xff
/* B71DC8 800FAC28 320500FF */ andi $a1, $s0, 0xff
/* B71DCC 800FAC2C 0C03E890 */ jal Audio_SetVolScale
/* B71DD0 800FAC30 2406007F */ li $a2, 127
/* B71DD4 800FAC34 10000027 */ b .L800FACD4
/* B71DD8 800FAC38 9243004D */ lbu $v1, 0x4d($s2)
glabel L800FAC3C
/* B71DDC 800FAC3C 30F80001 */ andi $t8, $a3, 1
/* B71DE0 800FAC40 13000004 */ beqz $t8, .L800FAC54
/* B71DE4 800FAC44 00E08025 */ move $s0, $a3
/* B71DE8 800FAC48 02C02025 */ move $a0, $s6
/* B71DEC 800FAC4C 0C0396BF */ jal Audio_QueueCmdS32
/* B71DF0 800FAC50 00002825 */ move $a1, $zero
.L800FAC54:
/* B71DF4 800FAC54 320B0002 */ andi $t3, $s0, 2
/* B71DF8 800FAC58 11600003 */ beqz $t3, .L800FAC68
/* B71DFC 800FAC5C 02C02025 */ move $a0, $s6
/* B71E00 800FAC60 0C0396BF */ jal Audio_QueueCmdS32
/* B71E04 800FAC64 24050001 */ li $a1, 1
.L800FAC68:
/* B71E08 800FAC68 320D0004 */ andi $t5, $s0, 4
/* B71E0C 800FAC6C 11A00003 */ beqz $t5, .L800FAC7C
/* B71E10 800FAC70 02C02025 */ move $a0, $s6
/* B71E14 800FAC74 0C0396BF */ jal Audio_QueueCmdS32
/* B71E18 800FAC78 24050002 */ li $a1, 2
.L800FAC7C:
/* B71E1C 800FAC7C 10000015 */ b .L800FACD4
/* B71E20 800FAC80 9243004D */ lbu $v1, 0x4d($s2)
glabel L800FAC84
/* B71E24 800FAC84 00116600 */ sll $t4, $s1, 0x18
/* B71E28 800FAC88 3C01A000 */ lui $at, 0xa000
/* B71E2C 800FAC8C 3043FFFF */ andi $v1, $v0, 0xffff
/* B71E30 800FAC90 01817825 */ or $t7, $t4, $at
/* B71E34 800FAC94 0C03E803 */ jal Audio_QueueSeqCmd
/* B71E38 800FAC98 01E32025 */ or $a0, $t7, $v1
/* B71E3C 800FAC9C 1000000D */ b .L800FACD4
/* B71E40 800FACA0 9243004D */ lbu $v1, 0x4d($s2)
glabel L800FACA4
/* B71E44 800FACA4 00075880 */ sll $t3, $a3, 2
/* B71E48 800FACA8 01675821 */ addu $t3, $t3, $a3
/* B71E4C 800FACAC 00117600 */ sll $t6, $s1, 0x18
/* B71E50 800FACB0 3C015000 */ lui $at, 0x5000
/* B71E54 800FACB4 01C1C825 */ or $t9, $t6, $at
/* B71E58 800FACB8 000B5840 */ sll $t3, $t3, 1
/* B71E5C 800FACBC 00105400 */ sll $t2, $s0, 0x10
/* B71E60 800FACC0 032AC025 */ or $t8, $t9, $t2
/* B71E64 800FACC4 316DFFFF */ andi $t5, $t3, 0xffff
/* B71E68 800FACC8 0C03E803 */ jal Audio_QueueSeqCmd
/* B71E6C 800FACCC 030D2025 */ or $a0, $t8, $t5
/* B71E70 800FACD0 9243004D */ lbu $v1, 0x4d($s2)
.L800FACD4:
glabel L800FACD4
/* B71E74 800FACD4 26730001 */ addiu $s3, $s3, 1
/* B71E78 800FACD8 327300FF */ andi $s3, $s3, 0xff
/* B71E7C 800FACDC 0263082A */ slt $at, $s3, $v1
/* B71E80 800FACE0 5420FF69 */ bnezl $at, .L800FAA88
/* B71E84 800FACE4 0013C080 */ sll $t8, $s3, 2
.L800FACE8:
/* B71E88 800FACE8 A240004D */ sb $zero, 0x4d($s2)
.L800FACEC:
/* B71E8C 800FACEC 26B50001 */ addiu $s5, $s5, 1
.L800FACF0:
/* B71E90 800FACF0 32B500FF */ andi $s5, $s5, 0xff
/* B71E94 800FACF4 2AA10004 */ slti $at, $s5, 4
/* B71E98 800FACF8 1420FDCB */ bnez $at, .L800FA428
/* B71E9C 800FACFC 00000000 */ nop
.L800FAD00:
/* B71EA0 800FAD00 8FBF0044 */ lw $ra, 0x44($sp)
/* B71EA4 800FAD04 D7B40018 */ ldc1 $f20, 0x18($sp)
/* B71EA8 800FAD08 8FB00020 */ lw $s0, 0x20($sp)
/* B71EAC 800FAD0C 8FB10024 */ lw $s1, 0x24($sp)
/* B71EB0 800FAD10 8FB20028 */ lw $s2, 0x28($sp)
/* B71EB4 800FAD14 8FB3002C */ lw $s3, 0x2c($sp)
/* B71EB8 800FAD18 8FB40030 */ lw $s4, 0x30($sp)
/* B71EBC 800FAD1C 8FB50034 */ lw $s5, 0x34($sp)
/* B71EC0 800FAD20 8FB60038 */ lw $s6, 0x38($sp)
/* B71EC4 800FAD24 8FB7003C */ lw $s7, 0x3c($sp)
/* B71EC8 800FAD28 8FBE0040 */ lw $fp, 0x40($sp)
/* B71ECC 800FAD2C 03E00008 */ jr $ra
/* B71ED0 800FAD30 27BD0090 */ addiu $sp, $sp, 0x90

View file

@ -1971,7 +1971,7 @@ s32 Audio_ScheduleProcessCmds(void);
u32 func_800E5E20(u32* arg0);
u8* func_800E5E84(s32 arg0, u32* arg1);
s32 func_800E5EDC(void);
s32 func_800E5F88(u32 arg0);
s32 func_800E5F88(s32 arg0);
void Audio_PreNMIInternal(void);
s32 func_800E6680(void);
u32 Audio_NextRandom(void);
@ -2110,7 +2110,7 @@ void func_800F6FB4(u8);
void func_800F70F8();
void func_800F711C();
void func_800F7170(void);
// ? func_800F71BC(?);
void func_800F71BC(s32 arg0);
void Audio_SetSoundBanksMute(u16 muteMask);
void Audio_QueueSeqCmdMute(u8);
void Audio_ClearBGMMute(u8);

View file

@ -78,7 +78,7 @@ extern u32 __osTimerCounter;
extern OSPiHandle __CartRomHandle;
extern DmaEntry gDmaDataTable[0x60C];
//extern ? D_800D7288;
extern u8 D_801120C0[];
extern u64 D_801120C0[];
extern u8 D_80113070[];
extern u64 gJpegUCode[];
//extern ? D_80115440;
@ -380,7 +380,7 @@ extern u8 D_801333F8;
//extern ? sSeqCmdWrPos;
//extern ? sSeqCmdRdPos;
//extern ? D_80133408;
//extern ? D_8013340C;
extern u8 D_8013340C;
extern u8 gAudioSpecId;
//extern ? D_80133418;
extern AudioSpec gAudioSpecs[18];

View file

@ -1110,29 +1110,6 @@ typedef struct {
/* 0x0007 */ u8 semitone;
} OcarinaNote; // size = 0x8
#define Audio_DisableSeq(seqIdx, fadeOut) Audio_QueueCmdS32(0x83000000 | ((u8)seqIdx << 16), fadeOut)
#define Audio_Cmd82(seqIdx, a, b) Audio_QueueCmdS32(0x82000000 | ((u8)seqIdx << 16) | ((u8)a << 8), b)
#define Audio_StartSeq(seqIdx, fadeTimer, seqId) Audio_QueueSeqCmd(0x00000000 | ((u8)seqIdx << 24) | ((u8)(fadeTimer) << 0x10) | (u16)seqId)
#define Audio_SeqCmd7(seqIdx, a, b) Audio_QueueSeqCmd(0x70000000 | ((u8)seqIdx << 0x18) | ((u8)a << 0x10) | (u8)(b))
#define Audio_SeqCmdC(seqIdx, a, b, c) Audio_QueueSeqCmd(0xC0000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b << 8) | ((u8)(c)))
#define Audio_SeqCmdA(seqIdx, a) Audio_QueueSeqCmd(0xA0000000 | ((u8)seqIdx << 24) | ((u16)(a)))
#define Audio_SeqCmd1(seqIdx, a) Audio_QueueSeqCmd(0x100000FF | ((u8)seqIdx << 24) | ((u8)(a) << 16))
#define Audio_SeqCmdB(seqIdx, a, b, c) Audio_QueueSeqCmd(0xB0000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b << 8) | ((u8)c))
#define Audio_SeqCmdB30(seqIdx, a, b) Audio_QueueSeqCmd(0xB0003000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b))
#define Audio_SeqCmdB40(seqIdx, a, b) Audio_QueueSeqCmd(0xB0004000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b))
#define Audio_SeqCmd6(seqIdx, a, b, c) Audio_QueueSeqCmd(0x60000000 | ((u8)seqIdx << 24) | ((u8)(a) << 16) | ((u8)b << 8) | ((u8)c))
#define Audio_SeqCmdE0(seqIdx, a) Audio_QueueSeqCmd(0xE0000000 | ((u8)seqIdx << 24) | ((u8)a))
#define Audio_SeqCmdE01(seqIdx, a) Audio_QueueSeqCmd(0xE0000100 | ((u8)seqIdx << 24) | ((u16)a))
#define Audio_SeqCmd8(seqIdx, a, b, c) Audio_QueueSeqCmd(0x80000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b << 8) | ((u8)c))
#define Audio_SeqCmd3(seqIdx, a) Audio_QueueSeqCmd(0x80000000 | ((u8)seqIdx << 24) | ((u16)a))
#define Audio_SeqCmd5(seqIdx, a, b) Audio_QueueSeqCmd(0x50000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u16)(b)))
#define Audio_SeqCmd4(seqIdx, a, b) Audio_QueueSeqCmd(0x40000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)(b)))
#define Audio_SeqCmdF(seqIdx, a) Audio_QueueSeqCmd(0xF0000000 | ((u8)seqIdx << 24) | ((u8)a))
#define Unk2C_B8(v) (((v & 0x00F00000) >> 20))
#define Unk2C_B12(v) (((v & 0x000F0000) >> 16))
#define Unk2C_B16(v) (((v & 0x0000FF00) >> 8))
#define Unk2C_B24(v) (((v & 0x000000FF) >> 0))
typedef struct {
u8 len;
u8 notesIdx[8];

View file

@ -373,23 +373,23 @@ void Audio_QueueCmd(u32 opArgs, void** data) {
}
void Audio_QueueCmdF32(u32 opArgs, f32 data) {
Audio_QueueCmd(opArgs, &data);
Audio_QueueCmd(opArgs, (void**)&data);
}
void Audio_QueueCmdS32(u32 opArgs, s32 data) {
Audio_QueueCmd(opArgs, &data);
Audio_QueueCmd(opArgs, (void**)&data);
}
void Audio_QueueCmdS8(u32 opArgs, s8 data) {
u32 uData = data << 0x18;
Audio_QueueCmd(opArgs, &uData);
Audio_QueueCmd(opArgs, (void**)&uData);
}
void Audio_QueueCmdU16(u32 opArgs, u16 data) {
u32 uData = data << 0x10;
Audio_QueueCmd(opArgs, &uData);
Audio_QueueCmd(opArgs, (void**)&uData);
}
s32 Audio_ScheduleProcessCmds(void) {
@ -522,7 +522,7 @@ void func_800E5F34(void) {
// clang-format on
}
s32 func_800E5F88(u32 resetPreloadID) {
s32 func_800E5F88(s32 resetPreloadID) {
s32 resetStatus;
OSMesg msg;
s32 pad;

View file

@ -1,6 +1,22 @@
#include "ultra64.h"
#include "global.h"
// TODO: can these macros be shared between files? code_800F9280 seems to use
// versions without any casts...
#define Audio_DisableSeq(seqIdx, fadeOut) Audio_QueueCmdS32(0x83000000 | ((u8)seqIdx << 16), fadeOut)
#define Audio_StartSeq(seqIdx, fadeTimer, seqId) Audio_QueueSeqCmd(0x00000000 | ((u8)seqIdx << 24) | ((u8)(fadeTimer) << 0x10) | (u16)seqId)
#define Audio_SeqCmd7(seqIdx, a, b) Audio_QueueSeqCmd(0x70000000 | ((u8)seqIdx << 0x18) | ((u8)a << 0x10) | (u8)(b))
#define Audio_SeqCmdC(seqIdx, a, b, c) Audio_QueueSeqCmd(0xC0000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b << 8) | ((u8)(c)))
#define Audio_SeqCmdA(seqIdx, a) Audio_QueueSeqCmd(0xA0000000 | ((u8)seqIdx << 24) | ((u16)(a)))
#define Audio_SeqCmd1(seqIdx, a) Audio_QueueSeqCmd(0x100000FF | ((u8)seqIdx << 24) | ((u8)(a) << 16))
#define Audio_SeqCmdB(seqIdx, a, b, c) Audio_QueueSeqCmd(0xB0000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b << 8) | ((u8)c))
#define Audio_SeqCmdB40(seqIdx, a, b) Audio_QueueSeqCmd(0xB0004000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b))
#define Audio_SeqCmd6(seqIdx, a, b, c) Audio_QueueSeqCmd(0x60000000 | ((u8)seqIdx << 24) | ((u8)(a) << 16) | ((u8)b << 8) | ((u8)c))
#define Audio_SeqCmdE0(seqIdx, a) Audio_QueueSeqCmd(0xE0000000 | ((u8)seqIdx << 24) | ((u8)a))
#define Audio_SeqCmdE01(seqIdx, a) Audio_QueueSeqCmd(0xE0000100 | ((u8)seqIdx << 24) | ((u16)a))
#define Audio_SeqCmd8(seqIdx, a, b, c) Audio_QueueSeqCmd(0x80000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b << 8) | ((u8)c))
#define Audio_SeqCmdF(seqIdx, a) Audio_QueueSeqCmd(0xF0000000 | ((u8)seqIdx << 24) | ((u8)a))
typedef struct {
/* 0x0 */ f32 unk_00;
/* 0x4 */ f32 freqScale;
@ -19,9 +35,9 @@ typedef struct {
} FreqLerp;
typedef struct {
u16 unk_00;
u16 unk_02;
u8 unk_04[100];
/* 0x0 */ u16 unk_00;
/* 0x2 */ u16 unk_02;
/* 0x4 */ u8 unk_04[100];
} D_801306DC_s; // size = 0x68
typedef enum {
@ -389,7 +405,6 @@ OcarinaSongInfo gOcarinaSongNotes[14] = {
extern u8 D_801333F0;
extern u8 gAudioSEFlagSwapOff;
extern u8 D_80133408;
extern u8 D_8013340C;
extern u8 D_80133418;
/**

View file

@ -1,55 +1,66 @@
#include "ultra64.h"
#include "global.h"
#include "ultra64/abi.h"
extern unk_D_8016E750 D_8016E750[4];
extern u8 D_8016E348[4];
extern u32 sAudioSeqCmds[0x100];
extern u8 sSeqCmdRdPos;
extern u8 sSeqCmdWrPos;
extern u8 D_80133408;
extern u8 D_80133418;
extern u8 D_801333CC;
extern u8 D_80133410[];
void Audio_ProcessSeqCmd(u32 cmd);
// TODO: clean up these macros. They are similar to ones in code_800EC960.c but without casts.
#define Audio_StartSeq(seqIdx, fadeTimer, seqId) \
Audio_QueueSeqCmd(0x00000000 | ((seqIdx) << 24) | ((fadeTimer) << 16) | (seqId))
#define Audio_SeqCmdA(seqIdx, a) Audio_QueueSeqCmd(0xA0000000 | ((seqIdx) << 24) | (a))
#define Audio_SeqCmdB30(seqIdx, a, b) Audio_QueueSeqCmd(0xB0003000 | ((seqIdx) << 24) | ((a) << 16) | (b))
#define Audio_SeqCmdB40(seqIdx, a, b) Audio_QueueSeqCmd(0xB0004000 | ((seqIdx) << 24) | ((a) << 16) | (b))
#define Audio_SeqCmd3(seqIdx, a) Audio_QueueSeqCmd(0x30000000 | ((seqIdx) << 24) | (a))
#define Audio_SeqCmd5(seqIdx, a, b) Audio_QueueSeqCmd(0x50000000 | ((seqIdx) << 24) | ((a) << 16) | (b))
#define Audio_SeqCmd4(seqIdx, a, b) Audio_QueueSeqCmd(0x40000000 | ((seqIdx) << 24) | ((a) << 16) | (b))
#define Audio_SetVolScaleNow(seqIdx, volFadeTimer, volScale) \
Audio_ProcessSeqCmd(0x40000000 | ((u8)seqIdx << 24) | ((u8)volFadeTimer << 16) | ((u8)(volScale * 127.0f)));
#ifdef NON_MATCHING
void func_800F9280(u8 seqIdx, u8 seqId, u8 arg2, u16 fadeTimer) {
u8 temp_s0;
u8 i;
u16 dur;
s32 pad;
temp_s0 = seqIdx;
if (D_80133408 == 0 || temp_s0 == 2) {
if (D_80133408 == 0 || seqIdx == 2) {
arg2 &= 0x7F;
if (arg2 == 0x7F) {
Audio_QueueCmdS32(0x85000000 | ((u8)seqIdx << 16) | (seqId << 8),
((fadeTimer >> 3) * 0x3C * gAudioContext.audioBufferParameters.updatesPerFrame) & 0xFFFF);
dur = (fadeTimer >> 3) * 60 * gAudioContext.audioBufferParameters.updatesPerFrame;
Audio_QueueCmdS32(0x85000000 | _SHIFTL(seqIdx, 16, 8) | _SHIFTL(seqId, 8, 8), dur);
} else {
Audio_QueueCmdS32(0x82000000 | ((u8)seqIdx << 16) | (seqId << 8),
Audio_QueueCmdS32(0x82000000 | _SHIFTL(seqIdx, 16, 8) | _SHIFTL(seqId, 8, 8),
(fadeTimer * (u16)gAudioContext.audioBufferParameters.updatesPerFrame) / 4);
}
D_8016E750[temp_s0].unk_256 = D_8016E750[temp_s0].unk_254 = (arg2 << 8) | seqId;
D_8016E750[seqIdx].unk_254 = seqId | (arg2 << 8);
D_8016E750[seqIdx].unk_256 = seqId | (arg2 << 8);
if (D_8016E750[temp_s0].volCur != 1.0f) {
Audio_QueueCmdF32(0x41000000 | ((u8)seqIdx << 16), D_8016E750[temp_s0].volCur);
if (D_8016E750[seqIdx].volCur != 1.0f) {
Audio_QueueCmdF32(0x41000000 | _SHIFTL(seqIdx, 16, 8), D_8016E750[seqIdx].volCur);
}
D_8016E750[temp_s0].unk_28 = 0;
D_8016E750[temp_s0].unk_18 = 0;
D_8016E750[temp_s0].unk_14 = 0;
D_8016E750[seqIdx].unk_28 = 0;
D_8016E750[seqIdx].unk_18 = 0;
D_8016E750[seqIdx].unk_14 = 0;
for (i = 0; i < 0x10; i++) {
D_8016E750[temp_s0].unk_50[i].unk_00 = 1.0f;
D_8016E750[temp_s0].unk_50[i].unk_0C = 0;
D_8016E750[temp_s0].unk_50[i].unk_10 = 1.0f;
D_8016E750[temp_s0].unk_50[i].unk_1C = 0;
D_8016E750[seqIdx].unk_50[i].unk_00 = 1.0f;
D_8016E750[seqIdx].unk_50[i].unk_0C = 0;
D_8016E750[seqIdx].unk_50[i].unk_10 = 1.0f;
D_8016E750[seqIdx].unk_50[i].unk_1C = 0;
}
D_8016E750[temp_s0].unk_250 = 0;
D_8016E750[temp_s0].unk_252 = 0;
D_8016E750[seqIdx].unk_250 = 0;
D_8016E750[seqIdx].unk_252 = 0;
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/code_800F9280/func_800F9280.s")
#endif
void func_800F9474(u8 arg0, u16 arg1) {
Audio_QueueCmdS32(0x83000000 | ((u8)arg0 << 16),
@ -76,8 +87,276 @@ typedef enum {
CMDF
} SeqCmdType;
extern u32 D_8013340C;
#pragma GLOBAL_ASM("asm/non_matchings/code/code_800F9280/Audio_ProcessSeqCmd.s")
typedef struct {
u8 unk_0;
u8 unk_1; // importance?
} Struct_8016E320;
extern Struct_8016E320 D_8016E320[][5]; // sorted by unk_1, descending
void Audio_ProcessSeqCmd(u32 cmd) {
s32 pad[2];
u16 fadeTimer;
u16 channelMask;
u16 val;
u8 oldSpec;
u8 spec;
u8 op;
u8 subOp;
u8 seqIdx;
u8 seqId;
u8 seqArgs;
u8 found;
u8 port;
u8 duration;
u8 chanIdx;
u8 i;
s32 new_var;
f32 freqScale;
if (D_8013340C && (cmd & 0xF0000000) != 0x70000000) {
AudioDebug_ScrPrt((const s8*)D_80133390, (cmd >> 16) & 0xFFFF); // "SEQ H"
AudioDebug_ScrPrt((const s8*)D_80133398, cmd & 0xFFFF); // " L"
}
op = cmd >> 28;
seqIdx = (cmd & 0xF000000) >> 24;
switch (op) {
case 0x0:
// play sequence immediately
seqId = cmd & 0xFF;
seqArgs = (cmd & 0xFF00) >> 8;
fadeTimer = (cmd & 0xFF0000) >> 13;
if ((D_8016E750[seqIdx].unk_260 == 0) && (seqArgs < 0x80)) {
func_800F9280(seqIdx, seqId, seqArgs, fadeTimer);
}
break;
case 0x1:
// disable seq player
fadeTimer = (cmd & 0xFF0000) >> 13;
func_800F9474(seqIdx, fadeTimer);
break;
case 0x2:
// queue sequence
seqId = cmd & 0xFF;
seqArgs = (cmd & 0xFF00) >> 8;
fadeTimer = (cmd & 0xFF0000) >> 13;
new_var = seqArgs;
for (i = 0; i < D_8016E348[seqIdx]; i++) {
if (D_8016E320[seqIdx][i].unk_0 == seqId) {
if (i == 0) {
func_800F9280(seqIdx, seqId, seqArgs, fadeTimer);
}
return;
}
}
found = D_8016E348[seqIdx];
for (i = 0; i < D_8016E348[seqIdx]; i++) {
if (D_8016E320[seqIdx][i].unk_1 <= new_var) {
found = i;
i = D_8016E348[seqIdx]; // "break;"
}
}
if (D_8016E348[seqIdx] < 5) {
D_8016E348[seqIdx]++;
}
for (i = D_8016E348[seqIdx] - 1; i != found; i--) {
D_8016E320[seqIdx][i].unk_1 = D_8016E320[seqIdx][i - 1].unk_1;
D_8016E320[seqIdx][i].unk_0 = D_8016E320[seqIdx][i - 1].unk_0;
}
D_8016E320[seqIdx][found].unk_1 = seqArgs;
D_8016E320[seqIdx][found].unk_0 = seqId;
if (found == 0) {
func_800F9280(seqIdx, seqId, seqArgs, fadeTimer);
}
break;
case 0x3:
// unqueue/stop sequence
seqId = cmd & 0xFF;
fadeTimer = (cmd & 0xFF0000) >> 13;
found = D_8016E348[seqIdx];
for (i = 0; i < D_8016E348[seqIdx]; i++) {
if (D_8016E320[seqIdx][i].unk_0 == seqId) {
found = i;
i = D_8016E348[seqIdx]; // "break;"
}
}
if (found != D_8016E348[seqIdx]) {
for (i = found; i < D_8016E348[seqIdx] - 1; i++) {
D_8016E320[seqIdx][i].unk_1 = D_8016E320[seqIdx][i + 1].unk_1;
D_8016E320[seqIdx][i].unk_0 = D_8016E320[seqIdx][i + 1].unk_0;
}
D_8016E348[seqIdx]--;
}
if (found == 0) {
func_800F9474(seqIdx, fadeTimer);
if (D_8016E348[seqIdx] != 0) {
func_800F9280(seqIdx, D_8016E320[seqIdx][0].unk_0, D_8016E320[seqIdx][0].unk_1, fadeTimer);
}
}
break;
case 0x4:
// transition seq volume
duration = (cmd & 0xFF0000) >> 15;
val = cmd & 0xFF;
if (duration == 0) {
duration++;
}
D_8016E750[seqIdx].volTarget = (f32)val / 127.0f;
if (D_8016E750[seqIdx].volCur != D_8016E750[seqIdx].volTarget) {
D_8016E750[seqIdx].unk_08 = (D_8016E750[seqIdx].volCur - D_8016E750[seqIdx].volTarget) / (f32)duration;
D_8016E750[seqIdx].unk_0C = duration;
}
break;
case 0x5:
// transition freq scale for all channels
duration = (cmd & 0xFF0000) >> 15;
val = cmd & 0xFFFF;
if (duration == 0) {
duration++;
}
freqScale = (f32)val / 1000.0f;
for (i = 0; i < 16; i++) {
D_8016E750[seqIdx].unk_50[i].unk_14 = freqScale;
D_8016E750[seqIdx].unk_50[i].unk_1C = duration;
D_8016E750[seqIdx].unk_50[i].unk_18 = (D_8016E750[seqIdx].unk_50[i].unk_10 - freqScale) / (f32)duration;
}
D_8016E750[seqIdx].unk_250 = 0xFFFF;
break;
case 0xD:
// transition freq scale
duration = (cmd & 0xFF0000) >> 15;
chanIdx = (cmd & 0xF000) >> 12;
val = cmd & 0xFFF;
if (duration == 0) {
duration++;
}
freqScale = (f32)val / 1000.0f;
D_8016E750[seqIdx].unk_50[chanIdx].unk_14 = freqScale;
D_8016E750[seqIdx].unk_50[chanIdx].unk_18 =
(D_8016E750[seqIdx].unk_50[chanIdx].unk_10 - freqScale) / (f32)duration;
D_8016E750[seqIdx].unk_50[chanIdx].unk_1C = duration;
D_8016E750[seqIdx].unk_250 |= 1 << chanIdx;
break;
case 0x6:
// transition vol scale
duration = (cmd & 0xFF0000) >> 15;
chanIdx = (cmd & 0xF00) >> 8;
val = cmd & 0xFF;
if (duration == 0) {
duration++;
}
D_8016E750[seqIdx].unk_50[chanIdx].unk_04 = (f32)val / 127.0f;
if (D_8016E750[seqIdx].unk_50[chanIdx].unk_00 != D_8016E750[seqIdx].unk_50[chanIdx].unk_04) {
D_8016E750[seqIdx].unk_50[chanIdx].unk_08 =
(D_8016E750[seqIdx].unk_50[chanIdx].unk_00 - D_8016E750[seqIdx].unk_50[chanIdx].unk_04) /
(f32)duration;
D_8016E750[seqIdx].unk_50[chanIdx].unk_0C = duration;
D_8016E750[seqIdx].unk_252 |= 1 << chanIdx;
}
break;
case 0x7:
// set global io port
port = (cmd & 0xFF0000) >> 16;
val = cmd & 0xFF;
Audio_QueueCmdS8(0x46000000 | _SHIFTL(seqIdx, 16, 8) | _SHIFTL(port, 0, 8), val);
break;
case 0x8:
// set io port if channel masked
chanIdx = (cmd & 0xF00) >> 8;
port = (cmd & 0xFF0000) >> 16;
val = cmd & 0xFF;
if ((D_8016E750[seqIdx].unk_258 & (1 << chanIdx)) == 0) {
Audio_QueueCmdS8(0x06000000 | _SHIFTL(seqIdx, 16, 8) | _SHIFTL(chanIdx, 8, 8) | _SHIFTL(port, 0, 8),
val);
}
break;
case 0x9:
// set channel mask for command 0x8
D_8016E750[seqIdx].unk_258 = cmd & 0xFFFF;
break;
case 0xA:
// set channel stop mask
channelMask = cmd & 0xFFFF;
if (channelMask != 0) {
// with channel mask channelMask...
Audio_QueueCmdU16(0x90000000 | _SHIFTL(seqIdx, 16, 8), channelMask);
// stop channels
Audio_QueueCmdS8(0x08000000 | _SHIFTL(seqIdx, 16, 8) | 0xFF00, 1);
}
if ((channelMask ^ 0xFFFF) != 0) {
// with channel mask ~channelMask...
Audio_QueueCmdU16(0x90000000 | _SHIFTL(seqIdx, 16, 8), (channelMask ^ 0xFFFF));
// unstop channels
Audio_QueueCmdS8(0x08000000 | _SHIFTL(seqIdx, 16, 8) | 0xFF00, 0);
}
break;
case 0xB:
// update tempo
D_8016E750[seqIdx].unk_14 = cmd;
break;
case 0xC:
// start sequence with setup commands
subOp = (cmd & 0xF00000) >> 20;
if (subOp != 0xF) {
if (D_8016E750[seqIdx].unk_4D < 7) {
found = D_8016E750[seqIdx].unk_4D++;
if (found < 8) {
D_8016E750[seqIdx].unk_2C[found] = cmd;
D_8016E750[seqIdx].unk_4C = 2;
}
}
} else {
D_8016E750[seqIdx].unk_4D = 0;
}
break;
case 0xE:
subOp = (cmd & 0xF00) >> 8;
val = cmd & 0xFF;
switch (subOp) {
case 0:
// set sound mode
Audio_QueueCmdS32(0xF0000000, D_80133410[val]);
break;
case 1:
// set sequence starting disabled?
D_80133408 = val & 1;
break;
}
break;
case 0xF:
// change spec
spec = cmd & 0xFF;
D_801333CC = (cmd & 0xFF00) >> 8;
oldSpec = gAudioSpecId;
gAudioSpecId = spec;
func_800E5F88(spec);
func_800F71BC(oldSpec);
Audio_QueueCmdS32(0xF8000000, 0);
break;
}
}
void Audio_QueueSeqCmd(u32 cmd) {
sAudioSeqCmds[sSeqCmdWrPos++] = cmd;
@ -116,15 +395,13 @@ void func_800FA18C(u8 arg0, u8 arg1) {
u8 i;
for (i = 0; i < D_8016E750[arg0].unk_4D; i++) {
u8 unkb = (D_8016E750[arg0].unk_2C[i] & 0xF00000) >> 0x14;
u8 unkb = (D_8016E750[arg0].unk_2C[i] & 0xF00000) >> 20;
if (unkb == arg1) {
D_8016E750[arg0].unk_2C[i] = 0xFF000000;
}
}
}
#define Audio_SetVolScaleNow(seqIdx, volFadeTimer, volScale) \
Audio_ProcessSeqCmd(0x40000000 | ((u8)seqIdx << 0x18) | ((u8)volFadeTimer << 0x10) | ((u8)(volScale * 127.0f)));
void Audio_SetVolScale(u8 seqIdx, u8 scaleIdx, u8 targetVol, u8 volFadeTimer) {
f32 volScale;
@ -144,160 +421,118 @@ void Audio_SetVolScale(u8 seqIdx, u8 scaleIdx, u8 targetVol, u8 volFadeTimer) {
}
}
#ifdef NON_MATCHING
void func_800FA3DC(void) {
u32 sp70;
f32 temp_f0;
f32 temp_f0_2;
f32 temp_f16;
f32 temp_f2;
f32 temp_f6;
f32 temp_f8;
s32 temp_a0_2;
s32 temp_a2;
s32 temp_a3;
u32 temp_a1;
u16 temp_lo;
s32 temp_s0;
s32 temp_s0_2;
u8 temp_s1;
s32 temp_s3;
s32 temp_s3_2;
s32 temp_s5;
s32 temp_v0_10;
u8 temp_v0_4;
s32 temp_v1;
u16 temp_t4;
u16 temp_t5;
u16 temp_t5_2;
u16 temp_t8;
u16 temp_v0_2;
u16 temp_v0_5;
u16 temp_v0_6;
u16 temp_v1_2;
u16 temp_v1_3;
u8 temp_a0;
u32 temp_v0;
u8 temp_a3_3;
u8 temp_s0_3;
u8 temp_t3;
u8 temp_v0_9;
u8 temp_v1_4;
unk_D_8016E750* temp_s0_4;
unk_D_8016E750* temp_s0_5;
unk_D_8016E750* temp_s2;
void* temp_v0_7;
void* temp_v0_8;
s32 phi_s3;
f32 phi_f0;
f32 phi_f6;
u16 temp_v1;
u16 phi_a2;
s32 phi_a2_2;
f32 phi_f0_2;
u8 temp_v0_4;
u8 temp_a0;
u8 temp_s1;
u8 temp_s0_3;
u8 temp_a3_3;
s32 pad[3];
u32 sp70;
f32 phi_f0;
u8 phi_t0;
f32 phi_f8;
s32 phi_s0;
s32 phi_s0_2;
s32 phi_s3_2;
s32 phi_v1;
f32 phi_f16;
u8 i;
u8 j;
u8 k;
for (i = 0; i < 4; i++) {
temp_s2 = &D_8016E750[i];
if (temp_s2->unk_260 != 0) {
if (D_8016E750[i].unk_260 != 0) {
switch (func_800E5E20(&sp70)) {
case 1:
case 2:
case 3:
case 4:
temp_s2->unk_260 = 0;
Audio_ProcessSeqCmd(temp_s2->unk_25C);
D_8016E750[i].unk_260 = 0;
Audio_ProcessSeqCmd(D_8016E750[i].unk_25C);
break;
}
}
if (temp_s2->fadeVolUpdate) {
for (j = 0, phi_f0 = 1.0f; j < 4; j++) {
if (D_8016E750[i].fadeVolUpdate) {
phi_f0 = 1.0f;
for (j = 0; j < 4; j++) {
phi_f0 *= (D_8016E750[i].volScales[j] / 127.0f);
}
Audio_SeqCmd4(i, temp_s2->volFadeTimer, phi_f0 * 127.0f);
temp_s2->fadeVolUpdate = 0;
Audio_SeqCmd4(i, D_8016E750[i].volFadeTimer, (u8)(phi_f0 * 127.0f));
D_8016E750[i].fadeVolUpdate = 0;
}
if (temp_s2->unk_0C != 0) {
temp_s2->unk_0C--;
if (D_8016E750[i].unk_0C != 0) {
D_8016E750[i].unk_0C--;
if (temp_s2->unk_0C != 0) {
temp_s2->volCur = temp_s2->volCur - temp_s2->unk_08;
if (D_8016E750[i].unk_0C != 0) {
D_8016E750[i].volCur = D_8016E750[i].volCur - D_8016E750[i].unk_08;
} else {
temp_s2->volCur = temp_s2->volTarget;
D_8016E750[i].volCur = D_8016E750[i].volTarget;
}
Audio_QueueCmdF32(0x41000000 | _SHIFTL(i, 16, 8), temp_s2->volCur);
Audio_QueueCmdF32(0x41000000 | _SHIFTL(i, 16, 8), D_8016E750[i].volCur);
}
if (temp_s2->unk_14 != 0) {
phi_a2 = temp_s2->unk_14 & 0xFFF;
phi_t0 = (temp_s2->unk_14 & 0xFF0000) >> 0xF;
if (D_8016E750[i].unk_14 != 0) {
temp_a1 = D_8016E750[i].unk_14;
phi_t0 = (temp_a1 & 0xFF0000) >> 15;
phi_a2 = temp_a1 & 0xFFF;
if (phi_t0 == 0) {
phi_t0++;
}
if (gAudioContext.seqPlayers[i].enabled) {
temp_v0_4 = (temp_s2->unk_14 & 0xF000) >> 0xC;
temp_lo = gAudioContext.seqPlayers[i].tempo / 0x30;
temp_v0_4 = (temp_a1 & 0xF000) >> 12;
switch (temp_v0_4) {
case 1:
phi_a2 += temp_lo;
break;
case 2:
phi_a2 = temp_a2;
if (temp_v1 < temp_lo) {
phi_a2 = temp_lo - temp_v1;
if (phi_a2 < temp_lo) {
phi_a2 = temp_lo - phi_a2;
}
break;
case 3:
phi_a2 = temp_lo * (phi_a2 / 100.0f);
break;
case 4:
temp_v0_5 = temp_s2->unk_18;
phi_a2 = temp_lo;
if (temp_v0_5 != 0) {
phi_a2 = temp_v0_5 & 0xFFFF;
if (D_8016E750[i].unk_18) {
phi_a2 = D_8016E750[i].unk_18;
} else {
phi_a2 = temp_lo;
}
break;
}
if (phi_a2 >= 0x12D) {
phi_a2 = 0x12C;
if (phi_a2 > 300) {
phi_a2 = 300;
}
if (temp_s2->unk_18 == 0) {
temp_s2->unk_18 = temp_lo;
if (D_8016E750[i].unk_18 == 0) {
D_8016E750[i].unk_18 = temp_lo;
}
temp_s2->unk_20 = phi_a2;
temp_s2->unk_1C = temp_lo;
temp_s2->unk_28 = phi_t0;
temp_s2->unk_14 = 0;
temp_s2->unk_24 = (temp_s2->unk_1C - temp_s2->unk_20) / temp_s2->unk_28;
D_8016E750[i].unk_20 = phi_a2;
D_8016E750[i].unk_1C = gAudioContext.seqPlayers[i].tempo / 0x30;
D_8016E750[i].unk_24 = (D_8016E750[i].unk_1C - D_8016E750[i].unk_20) / phi_t0;
D_8016E750[i].unk_28 = phi_t0;
D_8016E750[i].unk_14 = 0;
}
}
if (temp_s2->unk_28 != 0) {
temp_s2->unk_28--;
if (temp_s2->unk_28 != 0) {
temp_s2->unk_1C = temp_s2->unk_1C - temp_s2->unk_24;
if (D_8016E750[i].unk_28 != 0) {
D_8016E750[i].unk_28--;
if (D_8016E750[i].unk_28 != 0) {
D_8016E750[i].unk_1C = D_8016E750[i].unk_1C - D_8016E750[i].unk_24;
} else {
temp_s2->unk_1C = temp_s2->unk_20;
D_8016E750[i].unk_1C = D_8016E750[i].unk_20;
}
Audio_QueueCmdS32(0x47000000 | _SHIFTL(i, 16, 8), temp_s2->unk_1C);
// set tempo
Audio_QueueCmdS32(0x47000000 | _SHIFTL(i, 16, 8), D_8016E750[i].unk_1C);
}
if (temp_s2->unk_252 != 0) {
if (D_8016E750[i].unk_252 != 0) {
for (k = 0; k < 0x10; k++) {
if (D_8016E750[i].unk_50[k].unk_0C != 0) {
D_8016E750[i].unk_50[k].unk_0C--;
@ -305,13 +540,16 @@ void func_800FA3DC(void) {
D_8016E750[i].unk_50[k].unk_00 -= D_8016E750[i].unk_50[k].unk_08;
} else {
D_8016E750[i].unk_50[k].unk_00 = D_8016E750[i].unk_50[k].unk_04;
temp_s2->unk_252 ^= (1 << k);
D_8016E750[i].unk_252 ^= (1 << k);
}
Audio_QueueCmdF32(0x01000000 | _SHIFTL(i, 16, 8) | (k, 8, 8), D_8016E750[i].unk_50[k].unk_00);
// CHAN_UPD_VOL_SCALE (i = seq, k = chan)
Audio_QueueCmdF32(0x01000000 | _SHIFTL(i, 16, 8) | _SHIFTL(k, 8, 8),
D_8016E750[i].unk_50[k].unk_00);
}
}
}
if (temp_s2->unk_250 != 0) {
if (D_8016E750[i].unk_250 != 0) {
for (k = 0; k < 0x10; k++) {
if (D_8016E750[i].unk_50[k].unk_1C != 0) {
D_8016E750[i].unk_50[k].unk_1C--;
@ -319,112 +557,109 @@ void func_800FA3DC(void) {
D_8016E750[i].unk_50[k].unk_10 -= D_8016E750[i].unk_50[k].unk_18;
} else {
D_8016E750[i].unk_50[k].unk_10 = D_8016E750[i].unk_50[k].unk_14;
temp_s2->unk_250 ^= (1 << k);
D_8016E750[i].unk_250 ^= (1 << k);
}
// CHAN_UPD_FREQ_SCALE
Audio_QueueCmdF32(0x04000000 | _SHIFTL(i, 16, 8) | _SHIFTL(k, 8, 8),
D_8016E750[i].unk_50[k].unk_10);
}
}
}
if (temp_s2->unk_4D != 0) {
if (D_8016E750[i].unk_4D != 0) {
if (func_800FA11C(0xF0000000, 0xF0000000) == 0) {
temp_s2->unk_4D = 0;
D_8016E750[i].unk_4D = 0;
return;
}
if (temp_s2->unk_4C != 0) {
temp_s2->unk_4C--;
} else if (!gAudioContext.seqPlayers[i].enabled) {
for (j = 0; j < temp_s2->unk_4D; j++) {
// temp_a0 = (temp_v0_10 & 0x00F00000) >> 20;
// temp_s1 = (temp_v0_10 & 0x000F0000) >> 16;
// temp_s0_3 = (temp_v0_10 & 0xFF00) >> 8;
// temp_a3_3 = (temp_v0_10 & 0xFF) >> 0;
temp_v0_10 = D_8016E750[i].unk_2C[j];
temp_a0 = Unk2C_B8(temp_v0_10);
temp_s1 = Unk2C_B12(temp_v0_10);
temp_s0_3 = Unk2C_B16(temp_v0_10);
temp_a3_3 = Unk2C_B24(temp_v0_10);
switch (temp_a0) {
case 0:
Audio_SetVolScale(temp_s1, 1, 0x7F, temp_a3_3);
break;
case 7:
if (temp_a3_3 == D_8016E348[i]) {
Audio_SetVolScale(temp_s1, 1, 0x7F, temp_s0_3);
}
break;
case 1:
Audio_SeqCmd3(i, temp_s2->unk_254);
break;
case 2:
Audio_StartSeq(temp_s1, 0, D_8016E750[temp_s1].unk_254);
D_8016E750[temp_s1].fadeVolUpdate = 1;
D_8016E750[temp_s1].volScales[1] = 0x7F;
break;
case 3:
Audio_SeqCmdB30(temp_s1, temp_s0_3, temp_a3_3);
break;
case 4:
Audio_SeqCmdB40(temp_s1, temp_a3_3, 0);
break;
case 5:
Audio_StartSeq(temp_s1, D_8016E750[temp_s1].unk_4E, temp_v0_10);
Audio_SetVolScale(temp_s1, 1, 0x7F, 0);
D_8016E750[temp_s1].unk_4E = 0;
break;
case 6:
temp_s2->unk_4E = temp_s0_3;
break;
case 8:
Audio_SetVolScale(temp_s1, temp_s0_3, 0x7F, temp_a3_3);
break;
case 14:
if (temp_a3_3 & 1) {
Audio_QueueCmdS32(0xE3000000, 0);
}
if (temp_a3_3 & 2) {
Audio_QueueCmdS32(0xE3000000U, 1);
}
if (temp_a3_3 & 4) {
Audio_QueueCmdS32(0xE3000000U, 2);
}
break;
case 9:
Audio_SeqCmdA(temp_s1, temp_v0_10);
break;
case 10:
Audio_SeqCmd5(temp_s1, temp_s0_3, (temp_a3_3 * 0xA));
break;
}
}
temp_s2->unk_4D = 0;
if (D_8016E750[i].unk_4C != 0) {
D_8016E750[i].unk_4C--;
continue;
}
if (gAudioContext.seqPlayers[i].enabled) {
continue;
}
for (j = 0; j < D_8016E750[i].unk_4D; j++) {
temp_a0 = (D_8016E750[i].unk_2C[j] & 0x00F00000) >> 20;
temp_s1 = (D_8016E750[i].unk_2C[j] & 0x000F0000) >> 16;
temp_s0_3 = (D_8016E750[i].unk_2C[j] & 0xFF00) >> 8;
temp_a3_3 = D_8016E750[i].unk_2C[j] & 0xFF;
switch (temp_a0) {
case 0:
Audio_SetVolScale(temp_s1, 1, 0x7F, temp_a3_3);
break;
case 7:
if (D_8016E348[i] == temp_a3_3) {
Audio_SetVolScale(temp_s1, 1, 0x7F, temp_s0_3);
}
break;
case 1:
Audio_SeqCmd3(i, D_8016E750[i].unk_254);
break;
case 2:
Audio_StartSeq(temp_s1, 1, D_8016E750[temp_s1].unk_254);
D_8016E750[temp_s1].fadeVolUpdate = 1;
D_8016E750[temp_s1].volScales[1] = 0x7F;
break;
case 3:
Audio_SeqCmdB30(temp_s1, temp_s0_3, temp_a3_3);
break;
case 4:
Audio_SeqCmdB40(temp_s1, temp_a3_3, 0);
break;
case 5:
temp_v1 = D_8016E750[i].unk_2C[j] & 0xFFFF;
Audio_StartSeq(temp_s1, D_8016E750[temp_s1].unk_4E, temp_v1);
Audio_SetVolScale(temp_s1, 1, 0x7F, 0);
D_8016E750[temp_s1].unk_4E = 0;
break;
case 6:
D_8016E750[i].unk_4E = temp_s0_3;
break;
case 8:
Audio_SetVolScale(temp_s1, temp_s0_3, 0x7F, temp_a3_3);
break;
case 14:
if (temp_a3_3 & 1) {
Audio_QueueCmdS32(0xE3000000, 0);
}
if (temp_a3_3 & 2) {
Audio_QueueCmdS32(0xE3000000, 1);
}
if (temp_a3_3 & 4) {
Audio_QueueCmdS32(0xE3000000, 2);
}
break;
case 9:
temp_v1 = D_8016E750[i].unk_2C[j] & 0xFFFF;
Audio_SeqCmdA(temp_s1, temp_v1);
break;
case 10:
Audio_SeqCmd5(temp_s1, temp_s0_3, (temp_a3_3 * 10) & 0xFFFF);
break;
}
}
D_8016E750[i].unk_4D = 0;
}
}
}
#else
void func_800FA3DC(void);
#pragma GLOBAL_ASM("asm/non_matchings/code/code_800F9280/func_800FA3DC.s")
#endif
extern u8 D_80133418;
extern u8 D_801333CC;
#define CMD46(a) (_SHIFTL(0x46, 24, 8) | _SHIFTL(a, 16, 8))
u8 func_800FAD34(void) {
if (D_80133418 != 0) {
if (D_80133418 == 1) {
if (func_800E5EDC() == 1) {
D_80133418 = 0;
Audio_QueueCmdS8(CMD46(2), D_801333CC);
Audio_QueueCmdS8(0x46020000, D_801333CC);
func_800F7170();
}
} else if (D_80133418 == 2) {
while (func_800E5EDC() != 1) {}
D_80133418 = 0;
Audio_QueueCmdS8(CMD46(2), D_801333CC);
Audio_QueueCmdS8(0x46020000, D_801333CC);
func_800F7170();
}
}