diff --git a/asm/bss_audio.s b/asm/bss_audio.s deleted file mode 100644 index d12148c3c..000000000 --- a/asm/bss_audio.s +++ /dev/null @@ -1,71 +0,0 @@ -# This is most likely (part of) the bss section for audio/heap.c -.include "macros.inc" - -.section .bss - -# This is almost certainly the tail end of gAudioSessionPool, specifically this probably a reference to -# gAudioSessionPool.size -glabel D_803AFBD0 -.skip 8 - -glabel gAudioInitPool -.skip 16 - -glabel gNotesAndBuffersPool -.skip 48 - -glabel gSeqAndBankPool -.skip 16 - -glabel gPersistentCommonPool -.skip 16 - -glabel gTemporaryCommonPool -.skip 16 - -glabel gSeqLoadedPool -.skip 464 - -glabel gBankLoadedPool -.skip 464 - -glabel gUnusedLoadedPool -.skip 464 - -glabel gUnkPool1 -.skip 400 - -glabel D_803B0348 -.skip 16 - -glabel D_803B0358 -.skip 8 - -glabel D_803B0360 -.skip 16 - -glabel D_803B0370 -.skip 16 - -glabel gUnkLoadStatus -.skip 64 - -glabel gBankLoadStatus -.skip 64 - -glabel gSeqLoadStatus -.skip 256 - -glabel D_803B0500 -.skip 1 - -glabel D_803B0501 -.skip 3 - -# Probably gAudioUnusedBuffer -glabel D_803B0504 -.skip 4100 - -# Based on SM64 this should be the beginning of load.c's BSS stuff -glabel gNotes -.skip 4 diff --git a/asm/non_matchings/audio/heap/func_800B93BC.s b/asm/non_matchings/audio/heap/func_800B93BC.s deleted file mode 100644 index dd3c15542..000000000 --- a/asm/non_matchings/audio/heap/func_800B93BC.s +++ /dev/null @@ -1,497 +0,0 @@ -glabel func_800B93BC -/* 0B9FBC 800B93BC 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 0B9FC0 800B93C0 AFBF001C */ sw $ra, 0x1c($sp) -/* 0B9FC4 800B93C4 AFB00018 */ sw $s0, 0x18($sp) -/* 0B9FC8 800B93C8 00808025 */ move $s0, $a0 -/* 0B9FCC 800B93CC 8FBF0060 */ lw $ra, 0x60($sp) -/* 0B9FD0 800B93D0 AFA50054 */ sw $a1, 0x54($sp) -/* 0B9FD4 800B93D4 AFA60058 */ sw $a2, 0x58($sp) -/* 0B9FD8 800B93D8 240D000C */ li $t5, 12 -/* 0B9FDC 800B93DC 240C0001 */ li $t4, 1 -/* 0B9FE0 800B93E0 24080002 */ li $t0, 2 -.L800B93E4: -/* 0B9FE4 800B93E4 14E00176 */ bnez $a3, .L800B99C0 -/* 0B9FE8 800B93E8 8FAE0054 */ lw $t6, 0x54($sp) -/* 0B9FEC 800B93EC 3C0E803B */ lui $t6, %hi(gSeqLoadedPool) # $t6, 0x803b -/* 0B9FF0 800B93F0 25CEFC48 */ addiu $t6, %lo(gSeqLoadedPool) # addiu $t6, $t6, -0x3b8 -/* 0B9FF4 800B93F4 160E0006 */ bne $s0, $t6, .L800B9410 -/* 0B9FF8 800B93F8 26070194 */ addiu $a3, $s0, 0x194 -/* 0B9FFC 800B93FC 3C0F803B */ lui $t7, %hi(gSeqLoadStatus) # $t7, 0x803b -/* 0BA000 800B9400 25EF0400 */ addiu $t7, %lo(gSeqLoadStatus) # addiu $t7, $t7, 0x400 -/* 0BA004 800B9404 AFAF0034 */ sw $t7, 0x34($sp) -/* 0BA008 800B9408 10000012 */ b .L800B9454 -/* 0BA00C 800B940C A3A00033 */ sb $zero, 0x33($sp) -.L800B9410: -/* 0BA010 800B9410 3C18803B */ lui $t8, %hi(gBankLoadedPool) # $t8, 0x803b -/* 0BA014 800B9414 2718FE18 */ addiu $t8, %lo(gBankLoadedPool) # addiu $t8, $t8, -0x1e8 -/* 0BA018 800B9418 16180007 */ bne $s0, $t8, .L800B9438 -/* 0BA01C 800B941C 3C0E803B */ lui $t6, %hi(gUnusedLoadedPool) # $t6, 0x803b -/* 0BA020 800B9420 3C0B803B */ lui $t3, %hi(gBankLoadStatus) # $t3, 0x803b -/* 0BA024 800B9424 256B03C0 */ addiu $t3, %lo(gBankLoadStatus) # addiu $t3, $t3, 0x3c0 -/* 0BA028 800B9428 24190001 */ li $t9, 1 -/* 0BA02C 800B942C A3B90033 */ sb $t9, 0x33($sp) -/* 0BA030 800B9430 10000008 */ b .L800B9454 -/* 0BA034 800B9434 AFAB0034 */ sw $t3, 0x34($sp) -.L800B9438: -/* 0BA038 800B9438 25CEFFE8 */ addiu $t6, %lo(gUnusedLoadedPool) # addiu $t6, $t6, -0x18 -/* 0BA03C 800B943C 160E0005 */ bne $s0, $t6, .L800B9454 -/* 0BA040 800B9440 3C0F803B */ lui $t7, %hi(gUnkLoadStatus) # $t7, 0x803b -/* 0BA044 800B9444 25EF0380 */ addiu $t7, %lo(gUnkLoadStatus) # addiu $t7, $t7, 0x380 -/* 0BA048 800B9448 24180002 */ li $t8, 2 -/* 0BA04C 800B944C A3B80033 */ sb $t8, 0x33($sp) -/* 0BA050 800B9450 AFAF0034 */ sw $t7, 0x34($sp) -.L800B9454: -/* 0BA054 800B9454 84E6001E */ lh $a2, 0x1e($a3) -/* 0BA058 800B9458 3C0B803B */ lui $t3, %hi(gBankLoadStatus) # $t3, 0x803b -/* 0BA05C 800B945C 2401FFFF */ li $at, -1 -/* 0BA060 800B9460 14C10003 */ bne $a2, $at, .L800B9470 -/* 0BA064 800B9464 256B03C0 */ addiu $t3, %lo(gBankLoadStatus) # addiu $t3, $t3, 0x3c0 -/* 0BA068 800B9468 10000004 */ b .L800B947C -/* 0BA06C 800B946C 00004825 */ move $t1, $zero -.L800B9470: -/* 0BA070 800B9470 8FB90034 */ lw $t9, 0x34($sp) -/* 0BA074 800B9474 00D97021 */ addu $t6, $a2, $t9 -/* 0BA078 800B9478 91C90000 */ lbu $t1, ($t6) -.L800B947C: -/* 0BA07C 800B947C 84E4002A */ lh $a0, 0x2a($a3) -/* 0BA080 800B9480 2401FFFF */ li $at, -1 -/* 0BA084 800B9484 8FAF0034 */ lw $t7, 0x34($sp) -/* 0BA088 800B9488 14810003 */ bne $a0, $at, .L800B9498 -/* 0BA08C 800B948C 93B90033 */ lbu $t9, 0x33($sp) -/* 0BA090 800B9490 10000003 */ b .L800B94A0 -/* 0BA094 800B9494 00005025 */ move $t2, $zero -.L800B9498: -/* 0BA098 800B9498 008FC021 */ addu $t8, $a0, $t7 -/* 0BA09C 800B949C 930A0000 */ lbu $t2, ($t8) -.L800B94A0: -/* 0BA0A0 800B94A0 1599003C */ bne $t4, $t9, .L800B9594 -/* 0BA0A4 800B94A4 AFB90020 */ sw $t9, 0x20($sp) -/* 0BA0A8 800B94A8 24040004 */ li $a0, 4 -/* 0BA0AC 800B94AC 1489001A */ bne $a0, $t1, .L800B9518 -/* 0BA0B0 800B94B0 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b -/* 0BA0B4 800B94B4 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1) -/* 0BA0B8 800B94B8 00001825 */ move $v1, $zero -/* 0BA0BC 800B94BC 3C02803B */ lui $v0, %hi(gNotes) # $v0, 0x803b -/* 0BA0C0 800B94C0 18A0000D */ blez $a1, .L800B94F8 -/* 0BA0C4 800B94C4 00000000 */ nop -/* 0BA0C8 800B94C8 8C421508 */ lw $v0, %lo(gNotes)($v0) -.L800B94CC: -/* 0BA0CC 800B94CC 904E00B2 */ lbu $t6, 0xb2($v0) -/* 0BA0D0 800B94D0 55C60006 */ bnel $t6, $a2, .L800B94EC -/* 0BA0D4 800B94D4 24630001 */ addiu $v1, $v1, 1 -/* 0BA0D8 800B94D8 8C4F00B0 */ lw $t7, 0xb0($v0) -/* 0BA0DC 800B94DC 000FC7C2 */ srl $t8, $t7, 0x1f -/* 0BA0E0 800B94E0 17000005 */ bnez $t8, .L800B94F8 -/* 0BA0E4 800B94E4 00000000 */ nop -/* 0BA0E8 800B94E8 24630001 */ addiu $v1, $v1, 1 -.L800B94EC: -/* 0BA0EC 800B94EC 0065082A */ slt $at, $v1, $a1 -/* 0BA0F0 800B94F0 1420FFF6 */ bnez $at, .L800B94CC -/* 0BA0F4 800B94F4 244200C0 */ addiu $v0, $v0, 0xc0 -.L800B94F8: -/* 0BA0F8 800B94F8 14650007 */ bne $v1, $a1, .L800B9518 -/* 0BA0FC 800B94FC 01661021 */ addu $v0, $t3, $a2 -/* 0BA100 800B9500 90590000 */ lbu $t9, ($v0) -/* 0BA104 800B9504 24010005 */ li $at, 5 -/* 0BA108 800B9508 240E0003 */ li $t6, 3 -/* 0BA10C 800B950C 13210002 */ beq $t9, $at, .L800B9518 -/* 0BA110 800B9510 24090003 */ li $t1, 3 -/* 0BA114 800B9514 A04E0000 */ sb $t6, ($v0) -.L800B9518: -/* 0BA118 800B9518 148A001E */ bne $a0, $t2, .L800B9594 -/* 0BA11C 800B951C 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b -/* 0BA120 800B9520 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1) -/* 0BA124 800B9524 00001825 */ move $v1, $zero -/* 0BA128 800B9528 3C02803B */ lui $v0, %hi(gNotes) # $v0, 0x803b -/* 0BA12C 800B952C 18A0000E */ blez $a1, .L800B9568 -/* 0BA130 800B9530 00000000 */ nop -/* 0BA134 800B9534 8C421508 */ lw $v0, %lo(gNotes)($v0) -/* 0BA138 800B9538 84E4002A */ lh $a0, 0x2a($a3) -.L800B953C: -/* 0BA13C 800B953C 904F00B2 */ lbu $t7, 0xb2($v0) -/* 0BA140 800B9540 55E40006 */ bnel $t7, $a0, .L800B955C -/* 0BA144 800B9544 24630001 */ addiu $v1, $v1, 1 -/* 0BA148 800B9548 8C5800B0 */ lw $t8, 0xb0($v0) -/* 0BA14C 800B954C 0018CFC2 */ srl $t9, $t8, 0x1f -/* 0BA150 800B9550 17200005 */ bnez $t9, .L800B9568 -/* 0BA154 800B9554 00000000 */ nop -/* 0BA158 800B9558 24630001 */ addiu $v1, $v1, 1 -.L800B955C: -/* 0BA15C 800B955C 0065082A */ slt $at, $v1, $a1 -/* 0BA160 800B9560 1420FFF6 */ bnez $at, .L800B953C -/* 0BA164 800B9564 244200C0 */ addiu $v0, $v0, 0xc0 -.L800B9568: -/* 0BA168 800B9568 1465000A */ bne $v1, $a1, .L800B9594 -/* 0BA16C 800B956C 00000000 */ nop -/* 0BA170 800B9570 84EE002A */ lh $t6, 0x2a($a3) -/* 0BA174 800B9574 24010005 */ li $at, 5 -/* 0BA178 800B9578 24180003 */ li $t8, 3 -/* 0BA17C 800B957C 016E1021 */ addu $v0, $t3, $t6 -/* 0BA180 800B9580 904F0000 */ lbu $t7, ($v0) -/* 0BA184 800B9584 240A0003 */ li $t2, 3 -/* 0BA188 800B9588 11E10002 */ beq $t7, $at, .L800B9594 -/* 0BA18C 800B958C 00000000 */ nop -/* 0BA190 800B9590 A0580000 */ sb $t8, ($v0) -.L800B9594: -/* 0BA194 800B9594 15200004 */ bnez $t1, .L800B95A8 -/* 0BA198 800B9598 01205825 */ move $t3, $t1 -/* 0BA19C 800B959C ACE00000 */ sw $zero, ($a3) -/* 0BA1A0 800B95A0 1000008A */ b .L800B97CC -/* 0BA1A4 800B95A4 00001025 */ move $v0, $zero -.L800B95A8: -/* 0BA1A8 800B95A8 15400004 */ bnez $t2, .L800B95BC -/* 0BA1AC 800B95AC 01404825 */ move $t1, $t2 -/* 0BA1B0 800B95B0 24020001 */ li $v0, 1 -/* 0BA1B4 800B95B4 10000085 */ b .L800B97CC -/* 0BA1B8 800B95B8 ACE20000 */ sw $v0, ($a3) -.L800B95BC: -/* 0BA1BC 800B95BC 24020003 */ li $v0, 3 -/* 0BA1C0 800B95C0 144B0005 */ bne $v0, $t3, .L800B95D8 -/* 0BA1C4 800B95C4 00000000 */ nop -/* 0BA1C8 800B95C8 14490003 */ bne $v0, $t1, .L800B95D8 -/* 0BA1CC 800B95CC 00000000 */ nop -/* 0BA1D0 800B95D0 1000007E */ b .L800B97CC -/* 0BA1D4 800B95D4 8CE20000 */ lw $v0, ($a3) -.L800B95D8: -/* 0BA1D8 800B95D8 144B0004 */ bne $v0, $t3, .L800B95EC -/* 0BA1DC 800B95DC 00000000 */ nop -/* 0BA1E0 800B95E0 ACE00000 */ sw $zero, ($a3) -/* 0BA1E4 800B95E4 10000079 */ b .L800B97CC -/* 0BA1E8 800B95E8 00001025 */ move $v0, $zero -.L800B95EC: -/* 0BA1EC 800B95EC 14490004 */ bne $v0, $t1, .L800B9600 -/* 0BA1F0 800B95F0 8FAF0020 */ lw $t7, 0x20($sp) -/* 0BA1F4 800B95F4 24020001 */ li $v0, 1 -/* 0BA1F8 800B95F8 10000074 */ b .L800B97CC -/* 0BA1FC 800B95FC ACE20000 */ sw $v0, ($a3) -.L800B9600: -/* 0BA200 800B9600 55E0002F */ bnel $t7, $zero, .L800B96C0 -/* 0BA204 800B9604 8FAF0020 */ lw $t7, 0x20($sp) -/* 0BA208 800B9608 150B0016 */ bne $t0, $t3, .L800B9664 -/* 0BA20C 800B960C 3C02803B */ lui $v0, %hi(gSequencePlayers) # $v0, 0x803b -/* 0BA210 800B9610 3C03803B */ lui $v1, %hi(gSequenceChannels) # $v1, 0x803b -/* 0BA214 800B9614 24631A30 */ addiu $v1, %lo(gSequenceChannels) # addiu $v1, $v1, 0x1a30 -/* 0BA218 800B9618 24421510 */ addiu $v0, %lo(gSequencePlayers) # addiu $v0, $v0, 0x1510 -/* 0BA21C 800B961C 8C580000 */ lw $t8, ($v0) -.L800B9620: -/* 0BA220 800B9620 0018CFC2 */ srl $t9, $t8, 0x1f -/* 0BA224 800B9624 53200006 */ beql $t9, $zero, .L800B9640 -/* 0BA228 800B9628 24420148 */ addiu $v0, $v0, 0x148 -/* 0BA22C 800B962C 904E0004 */ lbu $t6, 4($v0) -/* 0BA230 800B9630 84EF001E */ lh $t7, 0x1e($a3) -/* 0BA234 800B9634 11CF0004 */ beq $t6, $t7, .L800B9648 -/* 0BA238 800B9638 00000000 */ nop -/* 0BA23C 800B963C 24420148 */ addiu $v0, $v0, 0x148 -.L800B9640: -/* 0BA240 800B9640 5443FFF7 */ bnel $v0, $v1, .L800B9620 -/* 0BA244 800B9644 8C580000 */ lw $t8, ($v0) -.L800B9648: -/* 0BA248 800B9648 3C18803B */ lui $t8, %hi(gSequenceChannels) # $t8, 0x803b -/* 0BA24C 800B964C 27181A30 */ addiu $t8, %lo(gSequenceChannels) # addiu $t8, $t8, 0x1a30 -/* 0BA250 800B9650 14580004 */ bne $v0, $t8, .L800B9664 -/* 0BA254 800B9654 00000000 */ nop -/* 0BA258 800B9658 ACE00000 */ sw $zero, ($a3) -/* 0BA25C 800B965C 1000005B */ b .L800B97CC -/* 0BA260 800B9660 00001025 */ move $v0, $zero -.L800B9664: -/* 0BA264 800B9664 15090048 */ bne $t0, $t1, .L800B9788 -/* 0BA268 800B9668 3C02803B */ lui $v0, %hi(gSequencePlayers) # $v0, 0x803b -/* 0BA26C 800B966C 3C03803B */ lui $v1, %hi(gSequenceChannels) # $v1, 0x803b -/* 0BA270 800B9670 24631A30 */ addiu $v1, %lo(gSequenceChannels) # addiu $v1, $v1, 0x1a30 -/* 0BA274 800B9674 24421510 */ addiu $v0, %lo(gSequencePlayers) # addiu $v0, $v0, 0x1510 -/* 0BA278 800B9678 8C590000 */ lw $t9, ($v0) -.L800B967C: -/* 0BA27C 800B967C 001977C2 */ srl $t6, $t9, 0x1f -/* 0BA280 800B9680 51C00006 */ beql $t6, $zero, .L800B969C -/* 0BA284 800B9684 24420148 */ addiu $v0, $v0, 0x148 -/* 0BA288 800B9688 904F0004 */ lbu $t7, 4($v0) -/* 0BA28C 800B968C 84F8002A */ lh $t8, 0x2a($a3) -/* 0BA290 800B9690 11F80004 */ beq $t7, $t8, .L800B96A4 -/* 0BA294 800B9694 00000000 */ nop -/* 0BA298 800B9698 24420148 */ addiu $v0, $v0, 0x148 -.L800B969C: -/* 0BA29C 800B969C 5443FFF7 */ bnel $v0, $v1, .L800B967C -/* 0BA2A0 800B96A0 8C590000 */ lw $t9, ($v0) -.L800B96A4: -/* 0BA2A4 800B96A4 3C19803B */ lui $t9, %hi(gSequenceChannels) # $t9, 0x803b -/* 0BA2A8 800B96A8 27391A30 */ addiu $t9, %lo(gSequenceChannels) # addiu $t9, $t9, 0x1a30 -/* 0BA2AC 800B96AC 14590036 */ bne $v0, $t9, .L800B9788 -/* 0BA2B0 800B96B0 24020001 */ li $v0, 1 -/* 0BA2B4 800B96B4 10000045 */ b .L800B97CC -/* 0BA2B8 800B96B8 ACE20000 */ sw $v0, ($a3) -/* 0BA2BC 800B96BC 8FAF0020 */ lw $t7, 0x20($sp) -.L800B96C0: -/* 0BA2C0 800B96C0 558F0032 */ bnel $t4, $t7, .L800B978C -/* 0BA2C4 800B96C4 8CE20000 */ lw $v0, ($a3) -/* 0BA2C8 800B96C8 150B0017 */ bne $t0, $t3, .L800B9728 -/* 0BA2CC 800B96CC 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b -/* 0BA2D0 800B96D0 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1) -/* 0BA2D4 800B96D4 00001825 */ move $v1, $zero -/* 0BA2D8 800B96D8 3C02803B */ lui $v0, %hi(gNotes) # $v0, 0x803b -/* 0BA2DC 800B96DC 18A0000E */ blez $a1, .L800B9718 -/* 0BA2E0 800B96E0 00000000 */ nop -/* 0BA2E4 800B96E4 8C421508 */ lw $v0, %lo(gNotes)($v0) -/* 0BA2E8 800B96E8 84E6001E */ lh $a2, 0x1e($a3) -.L800B96EC: -/* 0BA2EC 800B96EC 905800B2 */ lbu $t8, 0xb2($v0) -/* 0BA2F0 800B96F0 57060006 */ bnel $t8, $a2, .L800B970C -/* 0BA2F4 800B96F4 24630001 */ addiu $v1, $v1, 1 -/* 0BA2F8 800B96F8 8C5900B0 */ lw $t9, 0xb0($v0) -/* 0BA2FC 800B96FC 001977C2 */ srl $t6, $t9, 0x1f -/* 0BA300 800B9700 15C00005 */ bnez $t6, .L800B9718 -/* 0BA304 800B9704 00000000 */ nop -/* 0BA308 800B9708 24630001 */ addiu $v1, $v1, 1 -.L800B970C: -/* 0BA30C 800B970C 0065082A */ slt $at, $v1, $a1 -/* 0BA310 800B9710 1420FFF6 */ bnez $at, .L800B96EC -/* 0BA314 800B9714 244200C0 */ addiu $v0, $v0, 0xc0 -.L800B9718: -/* 0BA318 800B9718 14650003 */ bne $v1, $a1, .L800B9728 -/* 0BA31C 800B971C 00001025 */ move $v0, $zero -/* 0BA320 800B9720 1000002A */ b .L800B97CC -/* 0BA324 800B9724 ACE00000 */ sw $zero, ($a3) -.L800B9728: -/* 0BA328 800B9728 15090017 */ bne $t0, $t1, .L800B9788 -/* 0BA32C 800B972C 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b -/* 0BA330 800B9730 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1) -/* 0BA334 800B9734 00001825 */ move $v1, $zero -/* 0BA338 800B9738 3C02803B */ lui $v0, %hi(gNotes) # $v0, 0x803b -/* 0BA33C 800B973C 18A0000E */ blez $a1, .L800B9778 -/* 0BA340 800B9740 00000000 */ nop -/* 0BA344 800B9744 8C421508 */ lw $v0, %lo(gNotes)($v0) -/* 0BA348 800B9748 84E4002A */ lh $a0, 0x2a($a3) -.L800B974C: -/* 0BA34C 800B974C 904F00B2 */ lbu $t7, 0xb2($v0) -/* 0BA350 800B9750 55E40006 */ bnel $t7, $a0, .L800B976C -/* 0BA354 800B9754 24630001 */ addiu $v1, $v1, 1 -/* 0BA358 800B9758 8C5800B0 */ lw $t8, 0xb0($v0) -/* 0BA35C 800B975C 0018CFC2 */ srl $t9, $t8, 0x1f -/* 0BA360 800B9760 17200005 */ bnez $t9, .L800B9778 -/* 0BA364 800B9764 00000000 */ nop -/* 0BA368 800B9768 24630001 */ addiu $v1, $v1, 1 -.L800B976C: -/* 0BA36C 800B976C 0065082A */ slt $at, $v1, $a1 -/* 0BA370 800B9770 1420FFF6 */ bnez $at, .L800B974C -/* 0BA374 800B9774 244200C0 */ addiu $v0, $v0, 0xc0 -.L800B9778: -/* 0BA378 800B9778 14650003 */ bne $v1, $a1, .L800B9788 -/* 0BA37C 800B977C 24020001 */ li $v0, 1 -/* 0BA380 800B9780 10000012 */ b .L800B97CC -/* 0BA384 800B9784 ACE20000 */ sw $v0, ($a3) -.L800B9788: -/* 0BA388 800B9788 8CE20000 */ lw $v0, ($a3) -.L800B978C: -/* 0BA38C 800B978C 14400007 */ bnez $v0, .L800B97AC -/* 0BA390 800B9790 00000000 */ nop -/* 0BA394 800B9794 158B000D */ bne $t4, $t3, .L800B97CC -/* 0BA398 800B9798 00000000 */ nop -/* 0BA39C 800B979C 11890009 */ beq $t4, $t1, .L800B97C4 -/* 0BA3A0 800B97A0 24020001 */ li $v0, 1 -/* 0BA3A4 800B97A4 10000009 */ b .L800B97CC -/* 0BA3A8 800B97A8 ACE20000 */ sw $v0, ($a3) -.L800B97AC: -/* 0BA3AC 800B97AC 15890007 */ bne $t4, $t1, .L800B97CC -/* 0BA3B0 800B97B0 00000000 */ nop -/* 0BA3B4 800B97B4 118B0003 */ beq $t4, $t3, .L800B97C4 -/* 0BA3B8 800B97B8 00001025 */ move $v0, $zero -/* 0BA3BC 800B97BC 10000003 */ b .L800B97CC -/* 0BA3C0 800B97C0 ACE00000 */ sw $zero, ($a3) -.L800B97C4: -/* 0BA3C4 800B97C4 100000AD */ b .L800B9A7C -/* 0BA3C8 800B97C8 00001025 */ move $v0, $zero -.L800B97CC: -/* 0BA3CC 800B97CC 004D0019 */ multu $v0, $t5 -/* 0BA3D0 800B97D0 2401FFFF */ li $at, -1 -/* 0BA3D4 800B97D4 8FAE0034 */ lw $t6, 0x34($sp) -/* 0BA3D8 800B97D8 0000C012 */ mflo $t8 -/* 0BA3DC 800B97DC 00F8C821 */ addu $t9, $a3, $t8 -/* 0BA3E0 800B97E0 8723001E */ lh $v1, 0x1e($t9) -/* 0BA3E4 800B97E4 50610012 */ beql $v1, $at, .L800B9830 -/* 0BA3E8 800B97E8 8CE40000 */ lw $a0, ($a3) -/* 0BA3EC 800B97EC 8FA50020 */ lw $a1, 0x20($sp) -/* 0BA3F0 800B97F0 01C37821 */ addu $t7, $t6, $v1 -/* 0BA3F4 800B97F4 A1E00000 */ sb $zero, ($t7) -/* 0BA3F8 800B97F8 5585000D */ bnel $t4, $a1, .L800B9830 -/* 0BA3FC 800B97FC 8CE40000 */ lw $a0, ($a3) -/* 0BA400 800B9800 8CF80000 */ lw $t8, ($a3) -/* 0BA404 800B9804 030D0019 */ multu $t8, $t5 -/* 0BA408 800B9808 0000C812 */ mflo $t9 -/* 0BA40C 800B980C 00F97021 */ addu $t6, $a3, $t9 -/* 0BA410 800B9810 85C4001E */ lh $a0, 0x1e($t6) -/* 0BA414 800B9814 AFBF0060 */ sw $ra, 0x60($sp) -/* 0BA418 800B9818 0C02E3AA */ jal discard_bank -/* 0BA41C 800B981C AFA70028 */ sw $a3, 0x28($sp) -/* 0BA420 800B9820 8FA70028 */ lw $a3, 0x28($sp) -/* 0BA424 800B9824 240C0001 */ li $t4, 1 -/* 0BA428 800B9828 8FBF0060 */ lw $ra, 0x60($sp) -/* 0BA42C 800B982C 8CE40000 */ lw $a0, ($a3) -.L800B9830: -/* 0BA430 800B9830 8FA50020 */ lw $a1, 0x20($sp) -/* 0BA434 800B9834 24010001 */ li $at, 1 -/* 0BA438 800B9838 10800005 */ beqz $a0, .L800B9850 -/* 0BA43C 800B983C 26030198 */ addiu $v1, $s0, 0x198 -/* 0BA440 800B9840 10810032 */ beq $a0, $at, .L800B990C -/* 0BA444 800B9844 26030198 */ addiu $v1, $s0, 0x198 -/* 0BA448 800B9848 1000008C */ b .L800B9A7C -/* 0BA44C 800B984C 00001025 */ move $v0, $zero -.L800B9850: -/* 0BA450 800B9850 8C6F0000 */ lw $t7, ($v1) -/* 0BA454 800B9854 A4FF001E */ sh $ra, 0x1e($a3) -/* 0BA458 800B9858 ACEF0014 */ sw $t7, 0x14($a3) -/* 0BA45C 800B985C 8FB80058 */ lw $t8, 0x58($sp) -/* 0BA460 800B9860 ACF80018 */ sw $t8, 0x18($a3) -/* 0BA464 800B9864 8FAE0058 */ lw $t6, 0x58($sp) -/* 0BA468 800B9868 8C790000 */ lw $t9, ($v1) -/* 0BA46C 800B986C 032E1021 */ addu $v0, $t9, $t6 -/* 0BA470 800B9870 AC620004 */ sw $v0, 4($v1) -/* 0BA474 800B9874 8CEF0020 */ lw $t7, 0x20($a3) -/* 0BA478 800B9878 8FB80034 */ lw $t8, 0x34($sp) -/* 0BA47C 800B987C 01E2082B */ sltu $at, $t7, $v0 -/* 0BA480 800B9880 5020001D */ beql $at, $zero, .L800B98F8 -/* 0BA484 800B9884 8CE30014 */ lw $v1, 0x14($a3) -/* 0BA488 800B9888 84F9002A */ lh $t9, 0x2a($a3) -/* 0BA48C 800B988C 03197021 */ addu $t6, $t8, $t9 -/* 0BA490 800B9890 10A00005 */ beqz $a1, .L800B98A8 -/* 0BA494 800B9894 A1C00000 */ sb $zero, ($t6) -/* 0BA498 800B9898 50AC000B */ beql $a1, $t4, .L800B98C8 -/* 0BA49C 800B989C 84E4002A */ lh $a0, 0x2a($a3) -/* 0BA4A0 800B98A0 1000000F */ b .L800B98E0 -/* 0BA4A4 800B98A4 240FFFFF */ li $t7, -1 -.L800B98A8: -/* 0BA4A8 800B98A8 84E4002A */ lh $a0, 0x2a($a3) -/* 0BA4AC 800B98AC AFA70028 */ sw $a3, 0x28($sp) -/* 0BA4B0 800B98B0 0C02E3E3 */ jal discard_sequence -/* 0BA4B4 800B98B4 AFA30024 */ sw $v1, 0x24($sp) -/* 0BA4B8 800B98B8 8FA30024 */ lw $v1, 0x24($sp) -/* 0BA4BC 800B98BC 10000007 */ b .L800B98DC -/* 0BA4C0 800B98C0 8FA70028 */ lw $a3, 0x28($sp) -/* 0BA4C4 800B98C4 84E4002A */ lh $a0, 0x2a($a3) -.L800B98C8: -/* 0BA4C8 800B98C8 AFA70028 */ sw $a3, 0x28($sp) -/* 0BA4CC 800B98CC 0C02E3AA */ jal discard_bank -/* 0BA4D0 800B98D0 AFA30024 */ sw $v1, 0x24($sp) -/* 0BA4D4 800B98D4 8FA30024 */ lw $v1, 0x24($sp) -/* 0BA4D8 800B98D8 8FA70028 */ lw $a3, 0x28($sp) -.L800B98DC: -/* 0BA4DC 800B98DC 240FFFFF */ li $t7, -1 -.L800B98E0: -/* 0BA4E0 800B98E0 A4EF002A */ sh $t7, 0x2a($a3) -/* 0BA4E4 800B98E4 8C790008 */ lw $t9, 8($v1) -/* 0BA4E8 800B98E8 8C780000 */ lw $t8, ($v1) -/* 0BA4EC 800B98EC 03197021 */ addu $t6, $t8, $t9 -/* 0BA4F0 800B98F0 ACEE0020 */ sw $t6, 0x20($a3) -/* 0BA4F4 800B98F4 8CE30014 */ lw $v1, 0x14($a3) -.L800B98F8: -/* 0BA4F8 800B98F8 8CEF0000 */ lw $t7, ($a3) -/* 0BA4FC 800B98FC 00601025 */ move $v0, $v1 -/* 0BA500 800B9900 39F80001 */ xori $t8, $t7, 1 -/* 0BA504 800B9904 1000005D */ b .L800B9A7C -/* 0BA508 800B9908 ACF80000 */ sw $t8, ($a3) -.L800B990C: -/* 0BA50C 800B990C 8C790000 */ lw $t9, ($v1) -/* 0BA510 800B9910 8C6E0008 */ lw $t6, 8($v1) -/* 0BA514 800B9914 8FB80058 */ lw $t8, 0x58($sp) -/* 0BA518 800B9918 A4FF002A */ sh $ra, 0x2a($a3) -/* 0BA51C 800B991C 032E7821 */ addu $t7, $t9, $t6 -/* 0BA520 800B9920 01F8C823 */ subu $t9, $t7, $t8 -/* 0BA524 800B9924 2722FFF0 */ addiu $v0, $t9, -0x10 -/* 0BA528 800B9928 ACE20020 */ sw $v0, 0x20($a3) -/* 0BA52C 800B992C 8FAF0058 */ lw $t7, 0x58($sp) -/* 0BA530 800B9930 ACEF0024 */ sw $t7, 0x24($a3) -/* 0BA534 800B9934 8C780004 */ lw $t8, 4($v1) -/* 0BA538 800B9938 8FB90034 */ lw $t9, 0x34($sp) -/* 0BA53C 800B993C 0058082B */ sltu $at, $v0, $t8 -/* 0BA540 800B9940 1020001B */ beqz $at, .L800B99B0 -/* 0BA544 800B9944 00000000 */ nop -/* 0BA548 800B9948 84EE001E */ lh $t6, 0x1e($a3) -/* 0BA54C 800B994C 032E7821 */ addu $t7, $t9, $t6 -/* 0BA550 800B9950 10A00005 */ beqz $a1, .L800B9968 -/* 0BA554 800B9954 A1E00000 */ sb $zero, ($t7) -/* 0BA558 800B9958 50AC000B */ beql $a1, $t4, .L800B9988 -/* 0BA55C 800B995C 84E4001E */ lh $a0, 0x1e($a3) -/* 0BA560 800B9960 1000000F */ b .L800B99A0 -/* 0BA564 800B9964 2418FFFF */ li $t8, -1 -.L800B9968: -/* 0BA568 800B9968 84E4001E */ lh $a0, 0x1e($a3) -/* 0BA56C 800B996C AFA70028 */ sw $a3, 0x28($sp) -/* 0BA570 800B9970 0C02E3E3 */ jal discard_sequence -/* 0BA574 800B9974 AFA30024 */ sw $v1, 0x24($sp) -/* 0BA578 800B9978 8FA30024 */ lw $v1, 0x24($sp) -/* 0BA57C 800B997C 10000007 */ b .L800B999C -/* 0BA580 800B9980 8FA70028 */ lw $a3, 0x28($sp) -/* 0BA584 800B9984 84E4001E */ lh $a0, 0x1e($a3) -.L800B9988: -/* 0BA588 800B9988 AFA70028 */ sw $a3, 0x28($sp) -/* 0BA58C 800B998C 0C02E3AA */ jal discard_bank -/* 0BA590 800B9990 AFA30024 */ sw $v1, 0x24($sp) -/* 0BA594 800B9994 8FA30024 */ lw $v1, 0x24($sp) -/* 0BA598 800B9998 8FA70028 */ lw $a3, 0x28($sp) -.L800B999C: -/* 0BA59C 800B999C 2418FFFF */ li $t8, -1 -.L800B99A0: -/* 0BA5A0 800B99A0 A4F8001E */ sh $t8, 0x1e($a3) -/* 0BA5A4 800B99A4 8C790000 */ lw $t9, ($v1) -/* 0BA5A8 800B99A8 AC790004 */ sw $t9, 4($v1) -/* 0BA5AC 800B99AC 8CE20020 */ lw $v0, 0x20($a3) -.L800B99B0: -/* 0BA5B0 800B99B0 1000FFD1 */ b .L800B98F8 -/* 0BA5B4 800B99B4 00401825 */ move $v1, $v0 -/* 0BA5B8 800B99B8 10000030 */ b .L800B9A7C -/* 0BA5BC 800B99BC 00001025 */ move $v0, $zero -.L800B99C0: -/* 0BA5C0 800B99C0 8FAF0058 */ lw $t7, 0x58($sp) -/* 0BA5C4 800B99C4 AFBF0060 */ sw $ra, 0x60($sp) -/* 0BA5C8 800B99C8 26040004 */ addiu $a0, $s0, 4 -/* 0BA5CC 800B99CC 01CF0019 */ multu $t6, $t7 -/* 0BA5D0 800B99D0 AFA7005C */ sw $a3, 0x5c($sp) -/* 0BA5D4 800B99D4 00002812 */ mflo $a1 -/* 0BA5D8 800B99D8 0C02E3FF */ jal soundAlloc -/* 0BA5DC 800B99DC 00000000 */ nop -/* 0BA5E0 800B99E0 8E180000 */ lw $t8, ($s0) -/* 0BA5E4 800B99E4 240D000C */ li $t5, 12 -/* 0BA5E8 800B99E8 8FA7005C */ lw $a3, 0x5c($sp) -/* 0BA5EC 800B99EC 030D0019 */ multu $t8, $t5 -/* 0BA5F0 800B99F0 8FBF0060 */ lw $ra, 0x60($sp) -/* 0BA5F4 800B99F4 24080002 */ li $t0, 2 -/* 0BA5F8 800B99F8 240C0001 */ li $t4, 1 -/* 0BA5FC 800B99FC 0000C812 */ mflo $t9 -/* 0BA600 800B9A00 02197021 */ addu $t6, $s0, $t9 -/* 0BA604 800B9A04 1440000B */ bnez $v0, .L800B9A34 -/* 0BA608 800B9A08 ADC20014 */ sw $v0, 0x14($t6) -/* 0BA60C 800B9A0C 10E00007 */ beqz $a3, .L800B9A2C -/* 0BA610 800B9A10 00000000 */ nop -/* 0BA614 800B9A14 10EC0005 */ beq $a3, $t4, .L800B9A2C -/* 0BA618 800B9A18 00000000 */ nop -/* 0BA61C 800B9A1C 54E80006 */ bnel $a3, $t0, .L800B9A38 -/* 0BA620 800B9A20 8E0F0000 */ lw $t7, ($s0) -/* 0BA624 800B9A24 1000FE6F */ b .L800B93E4 -/* 0BA628 800B9A28 00003825 */ move $a3, $zero -.L800B9A2C: -/* 0BA62C 800B9A2C 10000013 */ b .L800B9A7C -/* 0BA630 800B9A30 00001025 */ move $v0, $zero -.L800B9A34: -/* 0BA634 800B9A34 8E0F0000 */ lw $t7, ($s0) -.L800B9A38: -/* 0BA638 800B9A38 01ED0019 */ multu $t7, $t5 -/* 0BA63C 800B9A3C 0000C012 */ mflo $t8 -/* 0BA640 800B9A40 0218C821 */ addu $t9, $s0, $t8 -/* 0BA644 800B9A44 A73F001E */ sh $ra, 0x1e($t9) -/* 0BA648 800B9A48 8E0F0000 */ lw $t7, ($s0) -/* 0BA64C 800B9A4C 8FAE0058 */ lw $t6, 0x58($sp) -/* 0BA650 800B9A50 01ED0019 */ multu $t7, $t5 -/* 0BA654 800B9A54 0000C012 */ mflo $t8 -/* 0BA658 800B9A58 0218C821 */ addu $t9, $s0, $t8 -/* 0BA65C 800B9A5C AF2E0018 */ sw $t6, 0x18($t9) -/* 0BA660 800B9A60 8E030000 */ lw $v1, ($s0) -/* 0BA664 800B9A64 006D0019 */ multu $v1, $t5 -/* 0BA668 800B9A68 246E0001 */ addiu $t6, $v1, 1 -/* 0BA66C 800B9A6C 00007812 */ mflo $t7 -/* 0BA670 800B9A70 020FC021 */ addu $t8, $s0, $t7 -/* 0BA674 800B9A74 8F020014 */ lw $v0, 0x14($t8) -/* 0BA678 800B9A78 AE0E0000 */ sw $t6, ($s0) -.L800B9A7C: -/* 0BA67C 800B9A7C 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BA680 800B9A80 8FB00018 */ lw $s0, 0x18($sp) -/* 0BA684 800B9A84 27BD0050 */ addiu $sp, $sp, 0x50 -/* 0BA688 800B9A88 03E00008 */ jr $ra -/* 0BA68C 800B9A8C 00000000 */ nop diff --git a/asm/non_matchings/audio/heap/func_800B9BE4.s b/asm/non_matchings/audio/heap/func_800B9BE4.s deleted file mode 100644 index f95db81dc..000000000 --- a/asm/non_matchings/audio/heap/func_800B9BE4.s +++ /dev/null @@ -1,273 +0,0 @@ -.section .late_rodata - -glabel D_800F2E80 -.float 262159.0 - -.section .text - -glabel func_800B9BE4 -/* 0BA7E4 800B9BE4 3C01800F */ lui $at, %hi(D_800F2E80) # $at, 0x800f -/* 0BA7E8 800B9BE8 C4202E80 */ lwc1 $f0, %lo(D_800F2E80)($at) -/* 0BA7EC 800B9BEC 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 0BA7F0 800B9BF0 27A40014 */ addiu $a0, $sp, 0x14 -/* 0BA7F4 800B9BF4 46007102 */ mul.s $f4, $f14, $f0 -/* 0BA7F8 800B9BF8 27A2002C */ addiu $v0, $sp, 0x2c -/* 0BA7FC 800B9BFC 24C30004 */ addiu $v1, $a2, 4 -/* 0BA800 800B9C00 46006182 */ mul.s $f6, $f12, $f0 -/* 0BA804 800B9C04 00000000 */ nop -/* 0BA808 800B9C08 460C7202 */ mul.s $f8, $f14, $f12 -/* 0BA80C 800B9C0C E7A4000C */ swc1 $f4, 0xc($sp) -/* 0BA810 800B9C10 E7A6002C */ swc1 $f6, 0x2c($sp) -/* 0BA814 800B9C14 46004282 */ mul.s $f10, $f8, $f0 -/* 0BA818 800B9C18 00000000 */ nop -/* 0BA81C 800B9C1C 460C6402 */ mul.s $f16, $f12, $f12 -/* 0BA820 800B9C20 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 0BA824 800B9C24 460E8480 */ add.s $f18, $f16, $f14 -/* 0BA828 800B9C28 46009102 */ mul.s $f4, $f18, $f0 -/* 0BA82C 800B9C2C E7A40030 */ swc1 $f4, 0x30($sp) -.L800B9C30: -/* 0BA830 800B9C30 C486FFFC */ lwc1 $f6, -4($a0) -/* 0BA834 800B9C34 C48AFFF8 */ lwc1 $f10, -8($a0) -/* 0BA838 800B9C38 240F0001 */ li $t7, 1 -/* 0BA83C 800B9C3C 460C3202 */ mul.s $f8, $f6, $f12 -/* 0BA840 800B9C40 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 0BA844 800B9C44 460A7402 */ mul.s $f16, $f14, $f10 -/* 0BA848 800B9C48 46104480 */ add.s $f18, $f8, $f16 -/* 0BA84C 800B9C4C 444EF800 */ cfc1 $t6, $31 -/* 0BA850 800B9C50 44CFF800 */ ctc1 $t7, $31 -/* 0BA854 800B9C54 00000000 */ nop -/* 0BA858 800B9C58 46009124 */ cvt.w.s $f4, $f18 -/* 0BA85C 800B9C5C 444FF800 */ cfc1 $t7, $31 -/* 0BA860 800B9C60 00000000 */ nop -/* 0BA864 800B9C64 31EF0078 */ andi $t7, $t7, 0x78 -/* 0BA868 800B9C68 51E00013 */ beql $t7, $zero, .L800B9CB8 -/* 0BA86C 800B9C6C 440F2000 */ mfc1 $t7, $f4 -/* 0BA870 800B9C70 44812000 */ mtc1 $at, $f4 -/* 0BA874 800B9C74 240F0001 */ li $t7, 1 -/* 0BA878 800B9C78 46049101 */ sub.s $f4, $f18, $f4 -/* 0BA87C 800B9C7C 44CFF800 */ ctc1 $t7, $31 -/* 0BA880 800B9C80 00000000 */ nop -/* 0BA884 800B9C84 46002124 */ cvt.w.s $f4, $f4 -/* 0BA888 800B9C88 444FF800 */ cfc1 $t7, $31 -/* 0BA88C 800B9C8C 00000000 */ nop -/* 0BA890 800B9C90 31EF0078 */ andi $t7, $t7, 0x78 -/* 0BA894 800B9C94 15E00005 */ bnez $t7, .L800B9CAC -/* 0BA898 800B9C98 00000000 */ nop -/* 0BA89C 800B9C9C 440F2000 */ mfc1 $t7, $f4 -/* 0BA8A0 800B9CA0 3C018000 */ lui $at, 0x8000 -/* 0BA8A4 800B9CA4 10000007 */ b .L800B9CC4 -/* 0BA8A8 800B9CA8 01E17825 */ or $t7, $t7, $at -.L800B9CAC: -/* 0BA8AC 800B9CAC 10000005 */ b .L800B9CC4 -/* 0BA8B0 800B9CB0 240FFFFF */ li $t7, -1 -/* 0BA8B4 800B9CB4 440F2000 */ mfc1 $t7, $f4 -.L800B9CB8: -/* 0BA8B8 800B9CB8 00000000 */ nop -/* 0BA8BC 800B9CBC 05E0FFFB */ bltz $t7, .L800B9CAC -/* 0BA8C0 800B9CC0 00000000 */ nop -.L800B9CC4: -/* 0BA8C4 800B9CC4 A46F0000 */ sh $t7, ($v1) -/* 0BA8C8 800B9CC8 44CEF800 */ ctc1 $t6, $31 -/* 0BA8CC 800B9CCC C486001C */ lwc1 $f6, 0x1c($a0) -/* 0BA8D0 800B9CD0 C4880018 */ lwc1 $f8, 0x18($a0) -/* 0BA8D4 800B9CD4 24190001 */ li $t9, 1 -/* 0BA8D8 800B9CD8 460C3282 */ mul.s $f10, $f6, $f12 -/* 0BA8DC 800B9CDC 24840004 */ addiu $a0, $a0, 4 -/* 0BA8E0 800B9CE0 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 0BA8E4 800B9CE4 46087402 */ mul.s $f16, $f14, $f8 -/* 0BA8E8 800B9CE8 46105480 */ add.s $f18, $f10, $f16 -/* 0BA8EC 800B9CEC 4458F800 */ cfc1 $t8, $31 -/* 0BA8F0 800B9CF0 44D9F800 */ ctc1 $t9, $31 -/* 0BA8F4 800B9CF4 00000000 */ nop -/* 0BA8F8 800B9CF8 46009124 */ cvt.w.s $f4, $f18 -/* 0BA8FC 800B9CFC 4459F800 */ cfc1 $t9, $31 -/* 0BA900 800B9D00 00000000 */ nop -/* 0BA904 800B9D04 33390078 */ andi $t9, $t9, 0x78 -/* 0BA908 800B9D08 53200013 */ beql $t9, $zero, .L800B9D58 -/* 0BA90C 800B9D0C 44192000 */ mfc1 $t9, $f4 -/* 0BA910 800B9D10 44812000 */ mtc1 $at, $f4 -/* 0BA914 800B9D14 24190001 */ li $t9, 1 -/* 0BA918 800B9D18 46049101 */ sub.s $f4, $f18, $f4 -/* 0BA91C 800B9D1C 44D9F800 */ ctc1 $t9, $31 -/* 0BA920 800B9D20 00000000 */ nop -/* 0BA924 800B9D24 46002124 */ cvt.w.s $f4, $f4 -/* 0BA928 800B9D28 4459F800 */ cfc1 $t9, $31 -/* 0BA92C 800B9D2C 00000000 */ nop -/* 0BA930 800B9D30 33390078 */ andi $t9, $t9, 0x78 -/* 0BA934 800B9D34 17200005 */ bnez $t9, .L800B9D4C -/* 0BA938 800B9D38 00000000 */ nop -/* 0BA93C 800B9D3C 44192000 */ mfc1 $t9, $f4 -/* 0BA940 800B9D40 3C018000 */ lui $at, 0x8000 -/* 0BA944 800B9D44 10000007 */ b .L800B9D64 -/* 0BA948 800B9D48 0321C825 */ or $t9, $t9, $at -.L800B9D4C: -/* 0BA94C 800B9D4C 10000005 */ b .L800B9D64 -/* 0BA950 800B9D50 2419FFFF */ li $t9, -1 -/* 0BA954 800B9D54 44192000 */ mfc1 $t9, $f4 -.L800B9D58: -/* 0BA958 800B9D58 00000000 */ nop -/* 0BA95C 800B9D5C 0720FFFB */ bltz $t9, .L800B9D4C -/* 0BA960 800B9D60 00000000 */ nop -.L800B9D64: -/* 0BA964 800B9D64 0082082B */ sltu $at, $a0, $v0 -/* 0BA968 800B9D68 44D8F800 */ ctc1 $t8, $31 -/* 0BA96C 800B9D6C 24630002 */ addiu $v1, $v1, 2 -/* 0BA970 800B9D70 1420FFAF */ bnez $at, .L800B9C30 -/* 0BA974 800B9D74 A479000E */ sh $t9, 0xe($v1) -/* 0BA978 800B9D78 00C01825 */ move $v1, $a2 -/* 0BA97C 800B9D7C 27A4000C */ addiu $a0, $sp, 0xc -/* 0BA980 800B9D80 27A2004C */ addiu $v0, $sp, 0x4c -.L800B9D84: -/* 0BA984 800B9D84 4448F800 */ cfc1 $t0, $31 -/* 0BA988 800B9D88 24090001 */ li $t1, 1 -/* 0BA98C 800B9D8C 44C9F800 */ ctc1 $t1, $31 -/* 0BA990 800B9D90 C4860000 */ lwc1 $f6, ($a0) -/* 0BA994 800B9D94 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 0BA998 800B9D98 46003224 */ cvt.w.s $f8, $f6 -/* 0BA99C 800B9D9C 4449F800 */ cfc1 $t1, $31 -/* 0BA9A0 800B9DA0 00000000 */ nop -/* 0BA9A4 800B9DA4 31290078 */ andi $t1, $t1, 0x78 -/* 0BA9A8 800B9DA8 51200013 */ beql $t1, $zero, .L800B9DF8 -/* 0BA9AC 800B9DAC 44094000 */ mfc1 $t1, $f8 -/* 0BA9B0 800B9DB0 44814000 */ mtc1 $at, $f8 -/* 0BA9B4 800B9DB4 24090001 */ li $t1, 1 -/* 0BA9B8 800B9DB8 46083201 */ sub.s $f8, $f6, $f8 -/* 0BA9BC 800B9DBC 44C9F800 */ ctc1 $t1, $31 -/* 0BA9C0 800B9DC0 00000000 */ nop -/* 0BA9C4 800B9DC4 46004224 */ cvt.w.s $f8, $f8 -/* 0BA9C8 800B9DC8 4449F800 */ cfc1 $t1, $31 -/* 0BA9CC 800B9DCC 00000000 */ nop -/* 0BA9D0 800B9DD0 31290078 */ andi $t1, $t1, 0x78 -/* 0BA9D4 800B9DD4 15200005 */ bnez $t1, .L800B9DEC -/* 0BA9D8 800B9DD8 00000000 */ nop -/* 0BA9DC 800B9DDC 44094000 */ mfc1 $t1, $f8 -/* 0BA9E0 800B9DE0 3C018000 */ lui $at, 0x8000 -/* 0BA9E4 800B9DE4 10000007 */ b .L800B9E04 -/* 0BA9E8 800B9DE8 01214825 */ or $t1, $t1, $at -.L800B9DEC: -/* 0BA9EC 800B9DEC 10000005 */ b .L800B9E04 -/* 0BA9F0 800B9DF0 2409FFFF */ li $t1, -1 -/* 0BA9F4 800B9DF4 44094000 */ mfc1 $t1, $f8 -.L800B9DF8: -/* 0BA9F8 800B9DF8 00000000 */ nop -/* 0BA9FC 800B9DFC 0520FFFB */ bltz $t1, .L800B9DEC -/* 0BAA00 800B9E00 00000000 */ nop -.L800B9E04: -/* 0BAA04 800B9E04 44C8F800 */ ctc1 $t0, $31 -/* 0BAA08 800B9E08 240B0001 */ li $t3, 1 -/* 0BAA0C 800B9E0C A4690000 */ sh $t1, ($v1) -/* 0BAA10 800B9E10 C48A0004 */ lwc1 $f10, 4($a0) -/* 0BAA14 800B9E14 444AF800 */ cfc1 $t2, $31 -/* 0BAA18 800B9E18 44CBF800 */ ctc1 $t3, $31 -/* 0BAA1C 800B9E1C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 0BAA20 800B9E20 46005424 */ cvt.w.s $f16, $f10 -/* 0BAA24 800B9E24 444BF800 */ cfc1 $t3, $31 -/* 0BAA28 800B9E28 00000000 */ nop -/* 0BAA2C 800B9E2C 316B0078 */ andi $t3, $t3, 0x78 -/* 0BAA30 800B9E30 51600013 */ beql $t3, $zero, .L800B9E80 -/* 0BAA34 800B9E34 440B8000 */ mfc1 $t3, $f16 -/* 0BAA38 800B9E38 44818000 */ mtc1 $at, $f16 -/* 0BAA3C 800B9E3C 240B0001 */ li $t3, 1 -/* 0BAA40 800B9E40 46105401 */ sub.s $f16, $f10, $f16 -/* 0BAA44 800B9E44 44CBF800 */ ctc1 $t3, $31 -/* 0BAA48 800B9E48 00000000 */ nop -/* 0BAA4C 800B9E4C 46008424 */ cvt.w.s $f16, $f16 -/* 0BAA50 800B9E50 444BF800 */ cfc1 $t3, $31 -/* 0BAA54 800B9E54 00000000 */ nop -/* 0BAA58 800B9E58 316B0078 */ andi $t3, $t3, 0x78 -/* 0BAA5C 800B9E5C 15600005 */ bnez $t3, .L800B9E74 -/* 0BAA60 800B9E60 00000000 */ nop -/* 0BAA64 800B9E64 440B8000 */ mfc1 $t3, $f16 -/* 0BAA68 800B9E68 3C018000 */ lui $at, 0x8000 -/* 0BAA6C 800B9E6C 10000007 */ b .L800B9E8C -/* 0BAA70 800B9E70 01615825 */ or $t3, $t3, $at -.L800B9E74: -/* 0BAA74 800B9E74 10000005 */ b .L800B9E8C -/* 0BAA78 800B9E78 240BFFFF */ li $t3, -1 -/* 0BAA7C 800B9E7C 440B8000 */ mfc1 $t3, $f16 -.L800B9E80: -/* 0BAA80 800B9E80 00000000 */ nop -/* 0BAA84 800B9E84 0560FFFB */ bltz $t3, .L800B9E74 -/* 0BAA88 800B9E88 00000000 */ nop -.L800B9E8C: -/* 0BAA8C 800B9E8C 44CAF800 */ ctc1 $t2, $31 -/* 0BAA90 800B9E90 A46B0002 */ sh $t3, 2($v1) -/* 0BAA94 800B9E94 240D0001 */ li $t5, 1 -/* 0BAA98 800B9E98 C4920008 */ lwc1 $f18, 8($a0) -/* 0BAA9C 800B9E9C 444CF800 */ cfc1 $t4, $31 -/* 0BAAA0 800B9EA0 44CDF800 */ ctc1 $t5, $31 -/* 0BAAA4 800B9EA4 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 0BAAA8 800B9EA8 46009124 */ cvt.w.s $f4, $f18 -/* 0BAAAC 800B9EAC 444DF800 */ cfc1 $t5, $31 -/* 0BAAB0 800B9EB0 00000000 */ nop -/* 0BAAB4 800B9EB4 31AD0078 */ andi $t5, $t5, 0x78 -/* 0BAAB8 800B9EB8 51A00013 */ beql $t5, $zero, .L800B9F08 -/* 0BAABC 800B9EBC 440D2000 */ mfc1 $t5, $f4 -/* 0BAAC0 800B9EC0 44812000 */ mtc1 $at, $f4 -/* 0BAAC4 800B9EC4 240D0001 */ li $t5, 1 -/* 0BAAC8 800B9EC8 46049101 */ sub.s $f4, $f18, $f4 -/* 0BAACC 800B9ECC 44CDF800 */ ctc1 $t5, $31 -/* 0BAAD0 800B9ED0 00000000 */ nop -/* 0BAAD4 800B9ED4 46002124 */ cvt.w.s $f4, $f4 -/* 0BAAD8 800B9ED8 444DF800 */ cfc1 $t5, $31 -/* 0BAADC 800B9EDC 00000000 */ nop -/* 0BAAE0 800B9EE0 31AD0078 */ andi $t5, $t5, 0x78 -/* 0BAAE4 800B9EE4 15A00005 */ bnez $t5, .L800B9EFC -/* 0BAAE8 800B9EE8 00000000 */ nop -/* 0BAAEC 800B9EEC 440D2000 */ mfc1 $t5, $f4 -/* 0BAAF0 800B9EF0 3C018000 */ lui $at, 0x8000 -/* 0BAAF4 800B9EF4 10000007 */ b .L800B9F14 -/* 0BAAF8 800B9EF8 01A16825 */ or $t5, $t5, $at -.L800B9EFC: -/* 0BAAFC 800B9EFC 10000005 */ b .L800B9F14 -/* 0BAB00 800B9F00 240DFFFF */ li $t5, -1 -/* 0BAB04 800B9F04 440D2000 */ mfc1 $t5, $f4 -.L800B9F08: -/* 0BAB08 800B9F08 00000000 */ nop -/* 0BAB0C 800B9F0C 05A0FFFB */ bltz $t5, .L800B9EFC -/* 0BAB10 800B9F10 00000000 */ nop -.L800B9F14: -/* 0BAB14 800B9F14 44CCF800 */ ctc1 $t4, $31 -/* 0BAB18 800B9F18 A46D0004 */ sh $t5, 4($v1) -/* 0BAB1C 800B9F1C 240F0001 */ li $t7, 1 -/* 0BAB20 800B9F20 C486000C */ lwc1 $f6, 0xc($a0) -/* 0BAB24 800B9F24 444EF800 */ cfc1 $t6, $31 -/* 0BAB28 800B9F28 44CFF800 */ ctc1 $t7, $31 -/* 0BAB2C 800B9F2C 24840010 */ addiu $a0, $a0, 0x10 -/* 0BAB30 800B9F30 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 0BAB34 800B9F34 46003224 */ cvt.w.s $f8, $f6 -/* 0BAB38 800B9F38 444FF800 */ cfc1 $t7, $31 -/* 0BAB3C 800B9F3C 00000000 */ nop -/* 0BAB40 800B9F40 31EF0078 */ andi $t7, $t7, 0x78 -/* 0BAB44 800B9F44 51E00013 */ beql $t7, $zero, .L800B9F94 -/* 0BAB48 800B9F48 440F4000 */ mfc1 $t7, $f8 -/* 0BAB4C 800B9F4C 44814000 */ mtc1 $at, $f8 -/* 0BAB50 800B9F50 240F0001 */ li $t7, 1 -/* 0BAB54 800B9F54 46083201 */ sub.s $f8, $f6, $f8 -/* 0BAB58 800B9F58 44CFF800 */ ctc1 $t7, $31 -/* 0BAB5C 800B9F5C 00000000 */ nop -/* 0BAB60 800B9F60 46004224 */ cvt.w.s $f8, $f8 -/* 0BAB64 800B9F64 444FF800 */ cfc1 $t7, $31 -/* 0BAB68 800B9F68 00000000 */ nop -/* 0BAB6C 800B9F6C 31EF0078 */ andi $t7, $t7, 0x78 -/* 0BAB70 800B9F70 15E00005 */ bnez $t7, .L800B9F88 -/* 0BAB74 800B9F74 00000000 */ nop -/* 0BAB78 800B9F78 440F4000 */ mfc1 $t7, $f8 -/* 0BAB7C 800B9F7C 3C018000 */ lui $at, 0x8000 -/* 0BAB80 800B9F80 10000007 */ b .L800B9FA0 -/* 0BAB84 800B9F84 01E17825 */ or $t7, $t7, $at -.L800B9F88: -/* 0BAB88 800B9F88 10000005 */ b .L800B9FA0 -/* 0BAB8C 800B9F8C 240FFFFF */ li $t7, -1 -/* 0BAB90 800B9F90 440F4000 */ mfc1 $t7, $f8 -.L800B9F94: -/* 0BAB94 800B9F94 00000000 */ nop -/* 0BAB98 800B9F98 05E0FFFB */ bltz $t7, .L800B9F88 -/* 0BAB9C 800B9F9C 00000000 */ nop -.L800B9FA0: -/* 0BABA0 800B9FA0 44CEF800 */ ctc1 $t6, $31 -/* 0BABA4 800B9FA4 A46F0006 */ sh $t7, 6($v1) -/* 0BABA8 800B9FA8 1482FF76 */ bne $a0, $v0, .L800B9D84 -/* 0BABAC 800B9FAC 24630008 */ addiu $v1, $v1, 8 -/* 0BABB0 800B9FB0 03E00008 */ jr $ra -/* 0BABB4 800B9FB4 27BD0050 */ addiu $sp, $sp, 0x50 diff --git a/asm/non_matchings/audio/heap/func_800BA00C.s b/asm/non_matchings/audio/heap/func_800BA00C.s deleted file mode 100644 index 40da0100b..000000000 --- a/asm/non_matchings/audio/heap/func_800BA00C.s +++ /dev/null @@ -1,170 +0,0 @@ -.section .late_rodata - -glabel jpt_800F2E84 -.word L800BA210, L800BA1E4, L800BA14C, L800BA094 -.word L800BA050 - -.section .text - -glabel func_800BA00C -/* 0BAC0C 800BA00C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0BAC10 800BA010 AFB20020 */ sw $s2, 0x20($sp) -/* 0BAC14 800BA014 3C12803B */ lui $s2, %hi(D_803B0500) # $s2, 0x803b -/* 0BAC18 800BA018 26520500 */ addiu $s2, %lo(D_803B0500) # addiu $s2, $s2, 0x500 -/* 0BAC1C 800BA01C 924E0000 */ lbu $t6, ($s2) -/* 0BAC20 800BA020 AFBF0024 */ sw $ra, 0x24($sp) -/* 0BAC24 800BA024 AFB1001C */ sw $s1, 0x1c($sp) -/* 0BAC28 800BA028 25CFFFFF */ addiu $t7, $t6, -1 -/* 0BAC2C 800BA02C 2DE10005 */ sltiu $at, $t7, 5 -/* 0BAC30 800BA030 1020007A */ beqz $at, .L800BA21C -/* 0BAC34 800BA034 AFB00018 */ sw $s0, 0x18($sp) -/* 0BAC38 800BA038 000F7880 */ sll $t7, $t7, 2 -/* 0BAC3C 800BA03C 3C01800F */ lui $at, %hi(jpt_800F2E84) -/* 0BAC40 800BA040 002F0821 */ addu $at, $at, $t7 -/* 0BAC44 800BA044 8C2F2E84 */ lw $t7, %lo(jpt_800F2E84)($at) -/* 0BAC48 800BA048 01E00008 */ jr $t7 -/* 0BAC4C 800BA04C 00000000 */ nop -glabel L800BA050 -/* 0BAC50 800BA050 3C10803B */ lui $s0, %hi(gSequencePlayers) # $s0, 0x803b -/* 0BAC54 800BA054 3C11803B */ lui $s1, %hi(gSequenceChannels) # $s1, 0x803b -/* 0BAC58 800BA058 26311A30 */ addiu $s1, %lo(gSequenceChannels) # addiu $s1, $s1, 0x1a30 -/* 0BAC5C 800BA05C 26101510 */ addiu $s0, %lo(gSequencePlayers) # addiu $s0, $s0, 0x1510 -.L800BA060: -/* 0BAC60 800BA060 0C02FBCB */ jal sequence_player_disable -/* 0BAC64 800BA064 02002025 */ move $a0, $s0 -/* 0BAC68 800BA068 26100148 */ addiu $s0, $s0, 0x148 -/* 0BAC6C 800BA06C 1611FFFC */ bne $s0, $s1, .L800BA060 -/* 0BAC70 800BA070 00000000 */ nop -/* 0BAC74 800BA074 92420000 */ lbu $v0, ($s2) -/* 0BAC78 800BA078 3C08803B */ lui $t0, %hi(D_803B0504) # $t0, 0x803b -/* 0BAC7C 800BA07C 25080504 */ addiu $t0, %lo(D_803B0504) # addiu $t0, $t0, 0x504 -/* 0BAC80 800BA080 24180004 */ li $t8, 4 -/* 0BAC84 800BA084 2459FFFF */ addiu $t9, $v0, -1 -/* 0BAC88 800BA088 AD180000 */ sw $t8, ($t0) -/* 0BAC8C 800BA08C 10000063 */ b .L800BA21C -/* 0BAC90 800BA090 A2590000 */ sb $t9, ($s2) -glabel L800BA094 -/* 0BAC94 800BA094 3C08803B */ lui $t0, %hi(D_803B0504) # $t0, 0x803b -/* 0BAC98 800BA098 25080504 */ addiu $t0, %lo(D_803B0504) # addiu $t0, $t0, 0x504 -/* 0BAC9C 800BA09C 8D020000 */ lw $v0, ($t0) -/* 0BACA0 800BA0A0 3C06803B */ lui $a2, %hi(gMaxSimultaneousNotes) # $a2, 0x803b -/* 0BACA4 800BA0A4 10400005 */ beqz $v0, .L800BA0BC -/* 0BACA8 800BA0A8 2449FFFF */ addiu $t1, $v0, -1 -/* 0BACAC 800BA0AC 0C02E7EE */ jal func_800B9FB8 -/* 0BACB0 800BA0B0 AD090000 */ sw $t1, ($t0) -/* 0BACB4 800BA0B4 1000005A */ b .L800BA220 -/* 0BACB8 800BA0B8 924E0000 */ lbu $t6, ($s2) -.L800BA0BC: -/* 0BACBC 800BA0BC 8CC670B0 */ lw $a2, %lo(gMaxSimultaneousNotes)($a2) -/* 0BACC0 800BA0C0 00002025 */ move $a0, $zero -/* 0BACC4 800BA0C4 00001825 */ move $v1, $zero -/* 0BACC8 800BA0C8 18C0001A */ blez $a2, .L800BA134 -/* 0BACCC 800BA0CC 3C07803B */ lui $a3, %hi(gAudioBufferParameters) # $a3, 0x803b -/* 0BACD0 800BA0D0 3C05803B */ lui $a1, %hi(gNotes) # $a1, 0x803b -/* 0BACD4 800BA0D4 24A51508 */ addiu $a1, %lo(gNotes) # addiu $a1, $a1, 0x1508 -/* 0BACD8 800BA0D8 24E77088 */ addiu $a3, %lo(gAudioBufferParameters) # addiu $a3, $a3, 0x7088 -.L800BA0DC: -/* 0BACDC 800BA0DC 8CAA0000 */ lw $t2, ($a1) -/* 0BACE0 800BA0E0 24840001 */ addiu $a0, $a0, 1 -/* 0BACE4 800BA0E4 01431021 */ addu $v0, $t2, $v1 -/* 0BACE8 800BA0E8 8C4B00B0 */ lw $t3, 0xb0($v0) -/* 0BACEC 800BA0EC 000B67C2 */ srl $t4, $t3, 0x1f -/* 0BACF0 800BA0F0 5180000E */ beql $t4, $zero, .L800BA12C -/* 0BACF4 800BA0F4 0086082A */ slt $at, $a0, $a2 -/* 0BACF8 800BA0F8 904D0059 */ lbu $t5, 0x59($v0) -/* 0BACFC 800BA0FC 51A0000B */ beql $t5, $zero, .L800BA12C -/* 0BAD00 800BA100 0086082A */ slt $at, $a0, $a2 -/* 0BAD04 800BA104 C4E40018 */ lwc1 $f4, 0x18($a3) -/* 0BAD08 800BA108 3C06803B */ lui $a2, %hi(gMaxSimultaneousNotes) # $a2, 0x803b -/* 0BAD0C 800BA10C E4440068 */ swc1 $f4, 0x68($v0) -/* 0BAD10 800BA110 8CAE0000 */ lw $t6, ($a1) -/* 0BAD14 800BA114 01C31021 */ addu $v0, $t6, $v1 -/* 0BAD18 800BA118 904F0058 */ lbu $t7, 0x58($v0) -/* 0BAD1C 800BA11C 35F80010 */ ori $t8, $t7, 0x10 -/* 0BAD20 800BA120 A0580058 */ sb $t8, 0x58($v0) -/* 0BAD24 800BA124 8CC670B0 */ lw $a2, %lo(gMaxSimultaneousNotes)($a2) -/* 0BAD28 800BA128 0086082A */ slt $at, $a0, $a2 -.L800BA12C: -/* 0BAD2C 800BA12C 1420FFEB */ bnez $at, .L800BA0DC -/* 0BAD30 800BA130 246300C0 */ addiu $v1, $v1, 0xc0 -.L800BA134: -/* 0BAD34 800BA134 92420000 */ lbu $v0, ($s2) -/* 0BAD38 800BA138 24190010 */ li $t9, 16 -/* 0BAD3C 800BA13C AD190000 */ sw $t9, ($t0) -/* 0BAD40 800BA140 2449FFFF */ addiu $t1, $v0, -1 -/* 0BAD44 800BA144 10000035 */ b .L800BA21C -/* 0BAD48 800BA148 A2490000 */ sb $t1, ($s2) -glabel L800BA14C -/* 0BAD4C 800BA14C 3C08803B */ lui $t0, %hi(D_803B0504) # $t0, 0x803b -/* 0BAD50 800BA150 25080504 */ addiu $t0, %lo(D_803B0504) # addiu $t0, $t0, 0x504 -/* 0BAD54 800BA154 8D020000 */ lw $v0, ($t0) -/* 0BAD58 800BA158 3C03803B */ lui $v1, %hi(D_803B7180) # $v1, 0x803b -/* 0BAD5C 800BA15C 24637180 */ addiu $v1, %lo(D_803B7180) # addiu $v1, $v1, 0x7180 -/* 0BAD60 800BA160 10400006 */ beqz $v0, .L800BA17C -/* 0BAD64 800BA164 3C06803B */ lui $a2, %hi(D_803B718C) # $a2, 0x803b -/* 0BAD68 800BA168 244AFFFF */ addiu $t2, $v0, -1 -/* 0BAD6C 800BA16C 0C02E7EE */ jal func_800B9FB8 -/* 0BAD70 800BA170 AD0A0000 */ sw $t2, ($t0) -/* 0BAD74 800BA174 1000002A */ b .L800BA220 -/* 0BAD78 800BA178 924E0000 */ lbu $t6, ($s2) -.L800BA17C: -/* 0BAD7C 800BA17C 24C6718C */ addiu $a2, %lo(D_803B718C) # addiu $a2, $a2, 0x718c -/* 0BAD80 800BA180 24040A00 */ li $a0, 2560 -/* 0BAD84 800BA184 00001025 */ move $v0, $zero -.L800BA188: -/* 0BAD88 800BA188 8C6B0000 */ lw $t3, ($v1) -/* 0BAD8C 800BA18C 01626021 */ addu $t4, $t3, $v0 -/* 0BAD90 800BA190 A5800000 */ sh $zero, ($t4) -/* 0BAD94 800BA194 8C6D0000 */ lw $t5, ($v1) -/* 0BAD98 800BA198 01A27021 */ addu $t6, $t5, $v0 -/* 0BAD9C 800BA19C A5C00002 */ sh $zero, 2($t6) -/* 0BADA0 800BA1A0 8C6F0000 */ lw $t7, ($v1) -/* 0BADA4 800BA1A4 01E2C021 */ addu $t8, $t7, $v0 -/* 0BADA8 800BA1A8 A7000004 */ sh $zero, 4($t8) -/* 0BADAC 800BA1AC 8C790000 */ lw $t9, ($v1) -/* 0BADB0 800BA1B0 03224821 */ addu $t1, $t9, $v0 -/* 0BADB4 800BA1B4 24420008 */ addiu $v0, $v0, 8 -/* 0BADB8 800BA1B8 1444FFF3 */ bne $v0, $a0, .L800BA188 -/* 0BADBC 800BA1BC A5200006 */ sh $zero, 6($t1) -/* 0BADC0 800BA1C0 24630004 */ addiu $v1, $v1, 4 -/* 0BADC4 800BA1C4 5466FFF0 */ bnel $v1, $a2, .L800BA188 -/* 0BADC8 800BA1C8 00001025 */ move $v0, $zero -/* 0BADCC 800BA1CC 92420000 */ lbu $v0, ($s2) -/* 0BADD0 800BA1D0 240A0004 */ li $t2, 4 -/* 0BADD4 800BA1D4 AD0A0000 */ sw $t2, ($t0) -/* 0BADD8 800BA1D8 244BFFFF */ addiu $t3, $v0, -1 -/* 0BADDC 800BA1DC 1000000F */ b .L800BA21C -/* 0BADE0 800BA1E0 A24B0000 */ sb $t3, ($s2) -glabel L800BA1E4 -/* 0BADE4 800BA1E4 3C08803B */ lui $t0, %hi(D_803B0504) # $t0, 0x803b -/* 0BADE8 800BA1E8 25080504 */ addiu $t0, %lo(D_803B0504) # addiu $t0, $t0, 0x504 -/* 0BADEC 800BA1EC 8D020000 */ lw $v0, ($t0) -/* 0BADF0 800BA1F0 10400003 */ beqz $v0, .L800BA200 -/* 0BADF4 800BA1F4 244CFFFF */ addiu $t4, $v0, -1 -/* 0BADF8 800BA1F8 10000008 */ b .L800BA21C -/* 0BADFC 800BA1FC AD0C0000 */ sw $t4, ($t0) -.L800BA200: -/* 0BAE00 800BA200 92420000 */ lbu $v0, ($s2) -/* 0BAE04 800BA204 244DFFFF */ addiu $t5, $v0, -1 -/* 0BAE08 800BA208 10000004 */ b .L800BA21C -/* 0BAE0C 800BA20C A24D0000 */ sb $t5, ($s2) -glabel L800BA210 -/* 0BAE10 800BA210 0C02E894 */ jal func_800BA250 -/* 0BAE14 800BA214 00000000 */ nop -/* 0BAE18 800BA218 A2400000 */ sb $zero, ($s2) -.L800BA21C: -/* 0BAE1C 800BA21C 924E0000 */ lbu $t6, ($s2) -.L800BA220: -/* 0BAE20 800BA220 8FB00018 */ lw $s0, 0x18($sp) -/* 0BAE24 800BA224 8FBF0024 */ lw $ra, 0x24($sp) -/* 0BAE28 800BA228 29C10003 */ slti $at, $t6, 3 -/* 0BAE2C 800BA22C 50200004 */ beql $at, $zero, .L800BA240 -/* 0BAE30 800BA230 24020001 */ li $v0, 1 -/* 0BAE34 800BA234 10000002 */ b .L800BA240 -/* 0BAE38 800BA238 00001025 */ move $v0, $zero -/* 0BAE3C 800BA23C 24020001 */ li $v0, 1 -.L800BA240: -/* 0BAE40 800BA240 8FB1001C */ lw $s1, 0x1c($sp) -/* 0BAE44 800BA244 8FB20020 */ lw $s2, 0x20($sp) -/* 0BAE48 800BA248 03E00008 */ jr $ra -/* 0BAE4C 800BA24C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/audio/heap/func_800BA250.s b/asm/non_matchings/audio/heap/func_800BA250.s deleted file mode 100644 index f0dd1cb2d..000000000 --- a/asm/non_matchings/audio/heap/func_800BA250.s +++ /dev/null @@ -1,413 +0,0 @@ -.section .late_rodata - -glabel D_800F2E98 -.float 0.001171875 - -glabel D_800F2E9C -.float 2880000.0 - -.section .text - -glabel func_800BA250 -/* 0BAE50 800BA250 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0BAE54 800BA254 3C0E803B */ lui $t6, %hi(D_803B0501) # $t6, 0x803b -/* 0BAE58 800BA258 91CE0501 */ lbu $t6, %lo(D_803B0501)($t6) -/* 0BAE5C 800BA25C 3C18800F */ lui $t8, %hi(D_800EA4D8) # $t8, 0x800f -/* 0BAE60 800BA260 AFB60030 */ sw $s6, 0x30($sp) -/* 0BAE64 800BA264 000E7880 */ sll $t7, $t6, 2 -/* 0BAE68 800BA268 01EE7821 */ addu $t7, $t7, $t6 -/* 0BAE6C 800BA26C 000F78C0 */ sll $t7, $t7, 3 -/* 0BAE70 800BA270 2718A4D8 */ addiu $t8, %lo(D_800EA4D8) # addiu $t8, $t8, -0x5b28 -/* 0BAE74 800BA274 3C01803B */ lui $at, %hi(gSampleDmaNumListItems) # $at, 0x803b -/* 0BAE78 800BA278 AFBF003C */ sw $ra, 0x3c($sp) -/* 0BAE7C 800BA27C AFBE0038 */ sw $fp, 0x38($sp) -/* 0BAE80 800BA280 AFB70034 */ sw $s7, 0x34($sp) -/* 0BAE84 800BA284 AFB5002C */ sw $s5, 0x2c($sp) -/* 0BAE88 800BA288 AFB40028 */ sw $s4, 0x28($sp) -/* 0BAE8C 800BA28C AFB30024 */ sw $s3, 0x24($sp) -/* 0BAE90 800BA290 AFB20020 */ sw $s2, 0x20($sp) -/* 0BAE94 800BA294 AFB1001C */ sw $s1, 0x1c($sp) -/* 0BAE98 800BA298 AFB00018 */ sw $s0, 0x18($sp) -/* 0BAE9C 800BA29C 01F8B021 */ addu $s6, $t7, $t8 -/* 0BAEA0 800BA2A0 AC206E58 */ sw $zero, %lo(gSampleDmaNumListItems)($at) -/* 0BAEA4 800BA2A4 8ED90000 */ lw $t9, ($s6) -/* 0BAEA8 800BA2A8 3C14803B */ lui $s4, %hi(gAudioBufferParameters) # $s4, 0x803b -/* 0BAEAC 800BA2AC 26947088 */ addiu $s4, %lo(gAudioBufferParameters) # addiu $s4, $s4, 0x7088 -/* 0BAEB0 800BA2B0 A6990002 */ sh $t9, 2($s4) -/* 0BAEB4 800BA2B4 0C0343E0 */ jal osAiSetFrequency -/* 0BAEB8 800BA2B8 3324FFFF */ andi $a0, $t9, 0xffff -/* 0BAEBC 800BA2BC A6820004 */ sh $v0, 4($s4) -/* 0BAEC0 800BA2C0 3C0D803B */ lui $t5, %hi(D_803B717C) # $t5, 0x803b -/* 0BAEC4 800BA2C4 8DAD717C */ lw $t5, %lo(D_803B717C)($t5) -/* 0BAEC8 800BA2C8 96870002 */ lhu $a3, 2($s4) -/* 0BAECC 800BA2CC 3C0C803B */ lui $t4, %hi(gMaxSimultaneousNotes) # $t4, 0x803b -/* 0BAED0 800BA2D0 258C70B0 */ addiu $t4, %lo(gMaxSimultaneousNotes) # addiu $t4, $t4, 0x70b0 -/* 0BAED4 800BA2D4 00ED001A */ div $zero, $a3, $t5 -/* 0BAED8 800BA2D8 00007012 */ mflo $t6 -/* 0BAEDC 800BA2DC 25CF000F */ addiu $t7, $t6, 0xf -/* 0BAEE0 800BA2E0 31F8FFF0 */ andi $t8, $t7, 0xfff0 -/* 0BAEE4 800BA2E4 A6980006 */ sh $t8, 6($s4) -/* 0BAEE8 800BA2E8 86830006 */ lh $v1, 6($s4) -/* 0BAEEC 800BA2EC 44873000 */ mtc1 $a3, $f6 -/* 0BAEF0 800BA2F0 3C04803B */ lui $a0, %hi(D_803B0348) # $a0, 0x803b -/* 0BAEF4 800BA2F4 24680010 */ addiu $t0, $v1, 0x10 -/* 0BAEF8 800BA2F8 46803220 */ cvt.s.w $f8, $f6 -/* 0BAEFC 800BA2FC 2479FFF0 */ addiu $t9, $v1, -0x10 -/* 0BAF00 800BA300 A699000A */ sh $t9, 0xa($s4) -/* 0BAF04 800BA304 A6880008 */ sh $t0, 8($s4) -/* 0BAF08 800BA308 3C12803B */ lui $s2, %hi(D_803B70AC) # $s2, 0x803b -/* 0BAF0C 800BA30C 265270AC */ addiu $s2, %lo(D_803B70AC) # addiu $s2, $s2, 0x70ac -/* 0BAF10 800BA310 24840348 */ addiu $a0, %lo(D_803B0348) # addiu $a0, $a0, 0x348 -/* 0BAF14 800BA314 15A00002 */ bnez $t5, .L800BA320 -/* 0BAF18 800BA318 00000000 */ nop -/* 0BAF1C 800BA31C 0007000D */ break 7 -.L800BA320: -/* 0BAF20 800BA320 2401FFFF */ li $at, -1 -/* 0BAF24 800BA324 15A10004 */ bne $t5, $at, .L800BA338 -/* 0BAF28 800BA328 3C018000 */ lui $at, 0x8000 -/* 0BAF2C 800BA32C 14E10002 */ bne $a3, $at, .L800BA338 -/* 0BAF30 800BA330 00000000 */ nop -/* 0BAF34 800BA334 0006000D */ break 6 -.L800BA338: -/* 0BAF38 800BA338 240100C0 */ li $at, 192 -/* 0BAF3C 800BA33C 0101001A */ div $zero, $t0, $at -/* 0BAF40 800BA340 00006812 */ mflo $t5 -/* 0BAF44 800BA344 25AE0001 */ addiu $t6, $t5, 1 -/* 0BAF48 800BA348 A68E000C */ sh $t6, 0xc($s4) -/* 0BAF4C 800BA34C 8686000C */ lh $a2, 0xc($s4) -/* 0BAF50 800BA350 0066001A */ div $zero, $v1, $a2 -/* 0BAF54 800BA354 14C00002 */ bnez $a2, .L800BA360 -/* 0BAF58 800BA358 00000000 */ nop -/* 0BAF5C 800BA35C 0007000D */ break 7 -.L800BA360: -/* 0BAF60 800BA360 2401FFFF */ li $at, -1 -/* 0BAF64 800BA364 14C10004 */ bne $a2, $at, .L800BA378 -/* 0BAF68 800BA368 3C018000 */ lui $at, 0x8000 -/* 0BAF6C 800BA36C 14610002 */ bne $v1, $at, .L800BA378 -/* 0BAF70 800BA370 00000000 */ nop -/* 0BAF74 800BA374 0006000D */ break 6 -.L800BA378: -/* 0BAF78 800BA378 3C0146FA */ li $at, 0x46FA0000 # 32000.000000 -/* 0BAF7C 800BA37C 44812000 */ mtc1 $at, $f4 -/* 0BAF80 800BA380 00007812 */ mflo $t7 -/* 0BAF84 800BA384 31F8FFF8 */ andi $t8, $t7, 0xfff8 -/* 0BAF88 800BA388 46082283 */ div.s $f10, $f4, $f8 -/* 0BAF8C 800BA38C A698000E */ sh $t8, 0xe($s4) -/* 0BAF90 800BA390 8689000E */ lh $t1, 0xe($s4) -/* 0BAF94 800BA394 44868000 */ mtc1 $a2, $f16 -/* 0BAF98 800BA398 3C01800F */ lui $at, %hi(D_800F2E98) # $at, 0x800f -/* 0BAF9C 800BA39C 25390008 */ addiu $t9, $t1, 8 -/* 0BAFA0 800BA3A0 46808020 */ cvt.s.w $f0, $f16 -/* 0BAFA4 800BA3A4 252DFFF8 */ addiu $t5, $t1, -8 -/* 0BAFA8 800BA3A8 A6990010 */ sh $t9, 0x10($s4) -/* 0BAFAC 800BA3AC A68D0012 */ sh $t5, 0x12($s4) -/* 0BAFB0 800BA3B0 3C18800F */ lui $t8, %hi(D_800EA5CC) # $t8, 0x800f -/* 0BAFB4 800BA3B4 240D0001 */ li $t5, 1 -/* 0BAFB8 800BA3B8 E68A0014 */ swc1 $f10, 0x14($s4) -/* 0BAFBC 800BA3BC C4322E98 */ lwc1 $f18, %lo(D_800F2E98)($at) -/* 0BAFC0 800BA3C0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BAFC4 800BA3C4 44812000 */ mtc1 $at, $f4 -/* 0BAFC8 800BA3C8 46009183 */ div.s $f6, $f18, $f0 -/* 0BAFCC 800BA3CC 3C01803B */ lui $at, %hi(gVolume) # $at, 0x803b -/* 0BAFD0 800BA3D0 46002203 */ div.s $f8, $f4, $f0 -/* 0BAFD4 800BA3D4 E686001C */ swc1 $f6, 0x1c($s4) -/* 0BAFD8 800BA3D8 E6880018 */ swc1 $f8, 0x18($s4) -/* 0BAFDC 800BA3DC 92CE0005 */ lbu $t6, 5($s6) -/* 0BAFE0 800BA3E0 AD8E0000 */ sw $t6, ($t4) -/* 0BAFE4 800BA3E4 96CF000C */ lhu $t7, 0xc($s6) -/* 0BAFE8 800BA3E8 8718A5CC */ lh $t8, %lo(D_800EA5CC)($t8) -/* 0BAFEC 800BA3EC A42FFBC0 */ sh $t7, %lo(gVolume)($at) -/* 0BAFF0 800BA3F0 3C01800F */ lui $at, %hi(D_800F2E9C) # $at, 0x800f -/* 0BAFF4 800BA3F4 C42A2E9C */ lwc1 $f10, %lo(D_800F2E9C)($at) -/* 0BAFF8 800BA3F8 44989000 */ mtc1 $t8, $f18 -/* 0BAFFC 800BA3FC 3C01803B */ lui $at, %hi(D_803B7178) # $at, 0x803b -/* 0BB000 800BA400 460A0402 */ mul.s $f16, $f0, $f10 -/* 0BB004 800BA404 C4287178 */ lwc1 $f8, %lo(D_803B7178)($at) -/* 0BB008 800BA408 468091A0 */ cvt.s.w $f6, $f18 -/* 0BB00C 800BA40C 46068103 */ div.s $f4, $f16, $f6 -/* 0BB010 800BA410 46082283 */ div.s $f10, $f4, $f8 -/* 0BB014 800BA414 4459F800 */ cfc1 $t9, $31 -/* 0BB018 800BA418 44CDF800 */ ctc1 $t5, $31 -/* 0BB01C 800BA41C 00000000 */ nop -/* 0BB020 800BA420 460054A4 */ cvt.w.s $f18, $f10 -/* 0BB024 800BA424 444DF800 */ cfc1 $t5, $31 -/* 0BB028 800BA428 00000000 */ nop -/* 0BB02C 800BA42C 31A10004 */ andi $at, $t5, 4 -/* 0BB030 800BA430 31AD0078 */ andi $t5, $t5, 0x78 -/* 0BB034 800BA434 11A00012 */ beqz $t5, .L800BA480 -/* 0BB038 800BA438 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 0BB03C 800BA43C 44819000 */ mtc1 $at, $f18 -/* 0BB040 800BA440 240D0001 */ li $t5, 1 -/* 0BB044 800BA444 46125481 */ sub.s $f18, $f10, $f18 -/* 0BB048 800BA448 44CDF800 */ ctc1 $t5, $31 -/* 0BB04C 800BA44C 00000000 */ nop -/* 0BB050 800BA450 460094A4 */ cvt.w.s $f18, $f18 -/* 0BB054 800BA454 444DF800 */ cfc1 $t5, $31 -/* 0BB058 800BA458 00000000 */ nop -/* 0BB05C 800BA45C 31AD0078 */ andi $t5, $t5, 0x78 -/* 0BB060 800BA460 15A00005 */ bnez $t5, .L800BA478 -/* 0BB064 800BA464 00000000 */ nop -/* 0BB068 800BA468 440D9000 */ mfc1 $t5, $f18 -/* 0BB06C 800BA46C 3C018000 */ lui $at, 0x8000 -/* 0BB070 800BA470 10000007 */ b .L800BA490 -/* 0BB074 800BA474 01A16825 */ or $t5, $t5, $at -.L800BA478: -/* 0BB078 800BA478 10000005 */ b .L800BA490 -/* 0BB07C 800BA47C 240DFFFF */ li $t5, -1 -.L800BA480: -/* 0BB080 800BA480 440D9000 */ mfc1 $t5, $f18 -/* 0BB084 800BA484 00000000 */ nop -/* 0BB088 800BA488 05A0FFFB */ bltz $t5, .L800BA478 -/* 0BB08C 800BA48C 00000000 */ nop -.L800BA490: -/* 0BB090 800BA490 3C01803B */ lui $at, %hi(D_803B70B4) # $at, 0x803b -/* 0BB094 800BA494 A42D70B4 */ sh $t5, %lo(D_803B70B4)($at) -/* 0BB098 800BA498 92CE0004 */ lbu $t6, 4($s6) -/* 0BB09C 800BA49C 86980008 */ lh $t8, 8($s4) -/* 0BB0A0 800BA4A0 44D9F800 */ ctc1 $t9, $31 -/* 0BB0A4 800BA4A4 A68E0000 */ sh $t6, ($s4) -/* 0BB0A8 800BA4A8 86850000 */ lh $a1, ($s4) -/* 0BB0AC 800BA4AC 868D000A */ lh $t5, 0xa($s4) -/* 0BB0B0 800BA4B0 00650019 */ multu $v1, $a1 -/* 0BB0B4 800BA4B4 00007812 */ mflo $t7 -/* 0BB0B8 800BA4B8 A68F0006 */ sh $t7, 6($s4) -/* 0BB0BC 800BA4BC 00000000 */ nop -/* 0BB0C0 800BA4C0 03050019 */ multu $t8, $a1 -/* 0BB0C4 800BA4C4 8D980000 */ lw $t8, ($t4) -/* 0BB0C8 800BA4C8 0000C812 */ mflo $t9 -/* 0BB0CC 800BA4CC A6990008 */ sh $t9, 8($s4) -/* 0BB0D0 800BA4D0 0018C880 */ sll $t9, $t8, 2 -/* 0BB0D4 800BA4D4 01A50019 */ multu $t5, $a1 -/* 0BB0D8 800BA4D8 0338C821 */ addu $t9, $t9, $t8 -/* 0BB0DC 800BA4DC 0019C880 */ sll $t9, $t9, 2 -/* 0BB0E0 800BA4E0 00007012 */ mflo $t6 -/* 0BB0E4 800BA4E4 A68E000A */ sh $t6, 0xa($s4) -/* 0BB0E8 800BA4E8 00000000 */ nop -/* 0BB0EC 800BA4EC 00C50019 */ multu $a2, $a1 -/* 0BB0F0 800BA4F0 00007812 */ mflo $t7 -/* 0BB0F4 800BA4F4 A68F000C */ sh $t7, 0xc($s4) -/* 0BB0F8 800BA4F8 868D000C */ lh $t5, 0xc($s4) -/* 0BB0FC 800BA4FC 92CF0006 */ lbu $t7, 6($s6) -/* 0BB100 800BA500 032D0019 */ multu $t9, $t5 -/* 0BB104 800BA504 000FC140 */ sll $t8, $t7, 5 -/* 0BB108 800BA508 00007012 */ mflo $t6 -/* 0BB10C 800BA50C 01D8C821 */ addu $t9, $t6, $t8 -/* 0BB110 800BA510 272D01E0 */ addiu $t5, $t9, 0x1e0 -/* 0BB114 800BA514 AE4D0000 */ sw $t5, ($s2) -/* 0BB118 800BA518 8ECE0014 */ lw $t6, 0x14($s6) -/* 0BB11C 800BA51C 8ECF0010 */ lw $t7, 0x10($s6) -/* 0BB120 800BA520 8ED90018 */ lw $t9, 0x18($s6) -/* 0BB124 800BA524 8ECD001C */ lw $t5, 0x1c($s6) -/* 0BB128 800BA528 01EEC021 */ addu $t8, $t7, $t6 -/* 0BB12C 800BA52C 8ECF0020 */ lw $t7, 0x20($s6) -/* 0BB130 800BA530 03198021 */ addu $s0, $t8, $t9 -/* 0BB134 800BA534 8ED80024 */ lw $t8, 0x24($s6) -/* 0BB138 800BA538 3C19803B */ lui $t9, %hi(D_803AFBD0) # $t9, 0x803b -/* 0BB13C 800BA53C 8F39FBD0 */ lw $t9, %lo(D_803AFBD0)($t9) -/* 0BB140 800BA540 01AF7021 */ addu $t6, $t5, $t7 -/* 0BB144 800BA544 01D88821 */ addu $s1, $t6, $t8 -/* 0BB148 800BA548 02115021 */ addu $t2, $s0, $s1 -/* 0BB14C 800BA54C 032A5823 */ subu $t3, $t9, $t2 -/* 0BB150 800BA550 256BFF00 */ addiu $t3, $t3, -0x100 -/* 0BB154 800BA554 AC8B0000 */ sw $t3, ($a0) -/* 0BB158 800BA558 0C02E453 */ jal func_800B914C -/* 0BB15C 800BA55C AC8A000C */ sw $t2, 0xc($a0) -/* 0BB160 800BA560 3C04803B */ lui $a0, %hi(D_803B0358) # $a0, 0x803b -/* 0BB164 800BA564 24840358 */ addiu $a0, %lo(D_803B0358) # addiu $a0, $a0, 0x358 -/* 0BB168 800BA568 AC900000 */ sw $s0, ($a0) -/* 0BB16C 800BA56C 0C02E472 */ jal seq_and_bank_pool_init -/* 0BB170 800BA570 AC910004 */ sw $s1, 4($a0) -/* 0BB174 800BA574 8ECD0010 */ lw $t5, 0x10($s6) -/* 0BB178 800BA578 3C04803B */ lui $a0, %hi(D_803B0360) # $a0, 0x803b -/* 0BB17C 800BA57C 24840360 */ addiu $a0, %lo(D_803B0360) # addiu $a0, $a0, 0x360 -/* 0BB180 800BA580 AC8D0000 */ sw $t5, ($a0) -/* 0BB184 800BA584 8ECF0014 */ lw $t7, 0x14($s6) -/* 0BB188 800BA588 AC8F0004 */ sw $t7, 4($a0) -/* 0BB18C 800BA58C 8ECE0018 */ lw $t6, 0x18($s6) -/* 0BB190 800BA590 0C02E491 */ jal persistent_pools_init -/* 0BB194 800BA594 AC8E0008 */ sw $t6, 8($a0) -/* 0BB198 800BA598 8ED8001C */ lw $t8, 0x1c($s6) -/* 0BB19C 800BA59C 3C04803B */ lui $a0, %hi(D_803B0370) # $a0, 0x803b -/* 0BB1A0 800BA5A0 24840370 */ addiu $a0, %lo(D_803B0370) # addiu $a0, $a0, 0x370 -/* 0BB1A4 800BA5A4 AC980000 */ sw $t8, ($a0) -/* 0BB1A8 800BA5A8 8ED90020 */ lw $t9, 0x20($s6) -/* 0BB1AC 800BA5AC AC990004 */ sw $t9, 4($a0) -/* 0BB1B0 800BA5B0 8ECD0024 */ lw $t5, 0x24($s6) -/* 0BB1B4 800BA5B4 0C02E4C0 */ jal temporary_pools_init -/* 0BB1B8 800BA5B8 AC8D0008 */ sw $t5, 8($a0) -/* 0BB1BC 800BA5BC 0C02E378 */ jal reset_bank_and_seq_load_status -/* 0BB1C0 800BA5C0 00000000 */ nop -/* 0BB1C4 800BA5C4 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b -/* 0BB1C8 800BA5C8 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1) -/* 0BB1CC 800BA5CC 3C13803B */ lui $s3, %hi(gNotesAndBuffersPool) # $s3, 0x803b -/* 0BB1D0 800BA5D0 2673FBE8 */ addiu $s3, %lo(gNotesAndBuffersPool) # addiu $s3, $s3, -0x418 -/* 0BB1D4 800BA5D4 00057880 */ sll $t7, $a1, 2 -/* 0BB1D8 800BA5D8 01E57823 */ subu $t7, $t7, $a1 -/* 0BB1DC 800BA5DC 000F2980 */ sll $a1, $t7, 6 -/* 0BB1E0 800BA5E0 0C02E3FF */ jal soundAlloc -/* 0BB1E4 800BA5E4 02602025 */ move $a0, $s3 -/* 0BB1E8 800BA5E8 3C01803B */ lui $at, %hi(gNotes) # $at, 0x803b -/* 0BB1EC 800BA5EC 0C02F74D */ jal note_init_all -/* 0BB1F0 800BA5F0 AC221508 */ sw $v0, %lo(gNotes)($at) -/* 0BB1F4 800BA5F4 0C02F4DA */ jal init_note_free_list -/* 0BB1F8 800BA5F8 00000000 */ nop -/* 0BB1FC 800BA5FC 3C18803B */ lui $t8, %hi(gMaxSimultaneousNotes) # $t8, 0x803b -/* 0BB200 800BA600 8F1870B0 */ lw $t8, %lo(gMaxSimultaneousNotes)($t8) -/* 0BB204 800BA604 868E000C */ lh $t6, 0xc($s4) -/* 0BB208 800BA608 02602025 */ move $a0, $s3 -/* 0BB20C 800BA60C 01D80019 */ multu $t6, $t8 -/* 0BB210 800BA610 00002812 */ mflo $a1 -/* 0BB214 800BA614 0005C900 */ sll $t9, $a1, 4 -/* 0BB218 800BA618 0C02E3FF */ jal soundAlloc -/* 0BB21C 800BA61C 03202825 */ move $a1, $t9 -/* 0BB220 800BA620 3C01803B */ lui $at, %hi(gNoteSubsEu) # $at, 0x803b -/* 0BB224 800BA624 3C10803B */ lui $s0, %hi(D_803B70C8) # $s0, 0x803b -/* 0BB228 800BA628 3C11803B */ lui $s1, %hi(D_803B70D0) # $s1, 0x803b -/* 0BB22C 800BA62C AC22FBC4 */ sw $v0, %lo(gNoteSubsEu)($at) -/* 0BB230 800BA630 263170D0 */ addiu $s1, %lo(D_803B70D0) # addiu $s1, $s1, 0x70d0 -/* 0BB234 800BA634 261070C8 */ addiu $s0, %lo(D_803B70C8) # addiu $s0, $s0, 0x70c8 -.L800BA638: -/* 0BB238 800BA638 8E450000 */ lw $a1, ($s2) -/* 0BB23C 800BA63C 02602025 */ move $a0, $s3 -/* 0BB240 800BA640 000568C0 */ sll $t5, $a1, 3 -/* 0BB244 800BA644 0C02E3FF */ jal soundAlloc -/* 0BB248 800BA648 01A02825 */ move $a1, $t5 -/* 0BB24C 800BA64C 26100004 */ addiu $s0, $s0, 4 -/* 0BB250 800BA650 1611FFF9 */ bne $s0, $s1, .L800BA638 -/* 0BB254 800BA654 AE02FFFC */ sw $v0, -4($s0) -/* 0BB258 800BA658 3C12803B */ lui $s2, %hi(gSynthesisReverbs) # $s2, 0x803b -/* 0BB25C 800BA65C 3C02803B */ lui $v0, %hi(sAudioSynthesisPad) # $v0, 0x803b -/* 0BB260 800BA660 2442FBB0 */ addiu $v0, %lo(sAudioSynthesisPad) # addiu $v0, $v0, -0x450 -/* 0BB264 800BA664 2652F790 */ addiu $s2, %lo(gSynthesisReverbs) # addiu $s2, $s2, -0x870 -.L800BA668: -/* 0BB268 800BA668 26520108 */ addiu $s2, $s2, 0x108 -/* 0BB26C 800BA66C 0242082B */ sltu $at, $s2, $v0 -/* 0BB270 800BA670 1420FFFD */ bnez $at, .L800BA668 -/* 0BB274 800BA674 A240FEF9 */ sb $zero, -0x107($s2) -/* 0BB278 800BA678 92CF0006 */ lbu $t7, 6($s6) -/* 0BB27C 800BA67C 3C17803B */ lui $s7, %hi(gNumSynthesisReverbs) # $s7, 0x803b -/* 0BB280 800BA680 26F7FBC3 */ addiu $s7, %lo(gNumSynthesisReverbs) # addiu $s7, $s7, -0x43d -/* 0BB284 800BA684 A2EF0000 */ sb $t7, ($s7) -/* 0BB288 800BA688 82EE0000 */ lb $t6, ($s7) -/* 0BB28C 800BA68C 3C12803B */ lui $s2, %hi(gSynthesisReverbs) # $s2, 0x803b -/* 0BB290 800BA690 2652F790 */ addiu $s2, %lo(gSynthesisReverbs) # addiu $s2, $s2, -0x870 -/* 0BB294 800BA694 19C0005F */ blez $t6, .L800BA814 -/* 0BB298 800BA698 0000A825 */ move $s5, $zero -/* 0BB29C 800BA69C 241E0008 */ li $fp, 8 -/* 0BB2A0 800BA6A0 8ED80008 */ lw $t8, 8($s6) -.L800BA6A4: -/* 0BB2A4 800BA6A4 0015C880 */ sll $t9, $s5, 2 -/* 0BB2A8 800BA6A8 02602025 */ move $a0, $s3 -/* 0BB2AC 800BA6AC 03191021 */ addu $v0, $t8, $t9 -/* 0BB2B0 800BA6B0 904D0001 */ lbu $t5, 1($v0) -/* 0BB2B4 800BA6B4 000D7980 */ sll $t7, $t5, 6 -/* 0BB2B8 800BA6B8 A64F0006 */ sh $t7, 6($s2) -/* 0BB2BC 800BA6BC 904E0000 */ lbu $t6, ($v0) -/* 0BB2C0 800BA6C0 31E5FFFF */ andi $a1, $t7, 0xffff -/* 0BB2C4 800BA6C4 0005C840 */ sll $t9, $a1, 1 -/* 0BB2C8 800BA6C8 A24E0004 */ sb $t6, 4($s2) -/* 0BB2CC 800BA6CC 94580002 */ lhu $t8, 2($v0) -/* 0BB2D0 800BA6D0 A25E0001 */ sb $fp, 1($s2) -/* 0BB2D4 800BA6D4 03202825 */ move $a1, $t9 -/* 0BB2D8 800BA6D8 0C02E3FF */ jal soundAlloc -/* 0BB2DC 800BA6DC A6580008 */ sh $t8, 8($s2) -/* 0BB2E0 800BA6E0 96450006 */ lhu $a1, 6($s2) -/* 0BB2E4 800BA6E4 AE420018 */ sw $v0, 0x18($s2) -/* 0BB2E8 800BA6E8 02602025 */ move $a0, $s3 -/* 0BB2EC 800BA6EC 00056840 */ sll $t5, $a1, 1 -/* 0BB2F0 800BA6F0 0C02E3FF */ jal soundAlloc -/* 0BB2F4 800BA6F4 01A02825 */ move $a1, $t5 -/* 0BB2F8 800BA6F8 92430004 */ lbu $v1, 4($s2) -/* 0BB2FC 800BA6FC 964F0006 */ lhu $t7, 6($s2) -/* 0BB300 800BA700 240E0002 */ li $t6, 2 -/* 0BB304 800BA704 24010001 */ li $at, 1 -/* 0BB308 800BA708 AE42001C */ sw $v0, 0x1c($s2) -/* 0BB30C 800BA70C AE40000C */ sw $zero, 0xc($s2) -/* 0BB310 800BA710 AE400010 */ sw $zero, 0x10($s2) -/* 0BB314 800BA714 A2400003 */ sb $zero, 3($s2) -/* 0BB318 800BA718 A24E0002 */ sb $t6, 2($s2) -/* 0BB31C 800BA71C 10610037 */ beq $v1, $at, .L800BA7FC -/* 0BB320 800BA720 AE4F0014 */ sw $t7, 0x14($s2) -/* 0BB324 800BA724 34198000 */ li $t9, 32768 -/* 0BB328 800BA728 0323001A */ div $zero, $t9, $v1 -/* 0BB32C 800BA72C 24180001 */ li $t8, 1 -/* 0BB330 800BA730 00006812 */ mflo $t5 -/* 0BB334 800BA734 A2580000 */ sb $t8, ($s2) -/* 0BB338 800BA738 14600002 */ bnez $v1, .L800BA744 -/* 0BB33C 800BA73C 00000000 */ nop -/* 0BB340 800BA740 0007000D */ break 7 -.L800BA744: -/* 0BB344 800BA744 2401FFFF */ li $at, -1 -/* 0BB348 800BA748 14610004 */ bne $v1, $at, .L800BA75C -/* 0BB34C 800BA74C 3C018000 */ lui $at, 0x8000 -/* 0BB350 800BA750 17210002 */ bne $t9, $at, .L800BA75C -/* 0BB354 800BA754 00000000 */ nop -/* 0BB358 800BA758 0006000D */ break 6 -.L800BA75C: -/* 0BB35C 800BA75C A64D000A */ sh $t5, 0xa($s2) -/* 0BB360 800BA760 02602025 */ move $a0, $s3 -/* 0BB364 800BA764 24050020 */ li $a1, 32 -/* 0BB368 800BA768 0C02E3FF */ jal soundAlloc -/* 0BB36C 800BA76C 00008825 */ move $s1, $zero -/* 0BB370 800BA770 AE420020 */ sw $v0, 0x20($s2) -/* 0BB374 800BA774 02602025 */ move $a0, $s3 -/* 0BB378 800BA778 0C02E3FF */ jal soundAlloc -/* 0BB37C 800BA77C 24050020 */ li $a1, 32 -/* 0BB380 800BA780 AE420024 */ sw $v0, 0x24($s2) -/* 0BB384 800BA784 02602025 */ move $a0, $s3 -/* 0BB388 800BA788 0C02E3FF */ jal soundAlloc -/* 0BB38C 800BA78C 24050020 */ li $a1, 32 -/* 0BB390 800BA790 AE420028 */ sw $v0, 0x28($s2) -/* 0BB394 800BA794 02602025 */ move $a0, $s3 -/* 0BB398 800BA798 0C02E3FF */ jal soundAlloc -/* 0BB39C 800BA79C 24050020 */ li $a1, 32 -/* 0BB3A0 800BA7A0 868F000C */ lh $t7, 0xc($s4) -/* 0BB3A4 800BA7A4 AE42002C */ sw $v0, 0x2c($s2) -/* 0BB3A8 800BA7A8 59E00015 */ blezl $t7, .L800BA800 -/* 0BB3AC 800BA7AC 82ED0000 */ lb $t5, ($s7) -/* 0BB3B0 800BA7B0 02408025 */ move $s0, $s2 -/* 0BB3B4 800BA7B4 02602025 */ move $a0, $s3 -.L800BA7B8: -/* 0BB3B8 800BA7B8 0C02E3FF */ jal soundAlloc -/* 0BB3BC 800BA7BC 24050300 */ li $a1, 768 -/* 0BB3C0 800BA7C0 244E0180 */ addiu $t6, $v0, 0x180 -/* 0BB3C4 800BA7C4 AE020034 */ sw $v0, 0x34($s0) -/* 0BB3C8 800BA7C8 AE0E0038 */ sw $t6, 0x38($s0) -/* 0BB3CC 800BA7CC 02602025 */ move $a0, $s3 -/* 0BB3D0 800BA7D0 0C02E3FF */ jal soundAlloc -/* 0BB3D4 800BA7D4 24050300 */ li $a1, 768 -/* 0BB3D8 800BA7D8 24580180 */ addiu $t8, $v0, 0x180 -/* 0BB3DC 800BA7DC AE020098 */ sw $v0, 0x98($s0) -/* 0BB3E0 800BA7E0 AE18009C */ sw $t8, 0x9c($s0) -/* 0BB3E4 800BA7E4 8699000C */ lh $t9, 0xc($s4) -/* 0BB3E8 800BA7E8 26310001 */ addiu $s1, $s1, 1 -/* 0BB3EC 800BA7EC 26100014 */ addiu $s0, $s0, 0x14 -/* 0BB3F0 800BA7F0 0239082A */ slt $at, $s1, $t9 -/* 0BB3F4 800BA7F4 5420FFF0 */ bnel $at, $zero, .L800BA7B8 -/* 0BB3F8 800BA7F8 02602025 */ move $a0, $s3 -.L800BA7FC: -/* 0BB3FC 800BA7FC 82ED0000 */ lb $t5, ($s7) -.L800BA800: -/* 0BB400 800BA800 26B50001 */ addiu $s5, $s5, 1 -/* 0BB404 800BA804 26520108 */ addiu $s2, $s2, 0x108 -/* 0BB408 800BA808 02AD082A */ slt $at, $s5, $t5 -/* 0BB40C 800BA80C 5420FFA5 */ bnel $at, $zero, .L800BA6A4 -/* 0BB410 800BA810 8ED80008 */ lw $t8, 8($s6) -.L800BA814: -/* 0BB414 800BA814 3C04803B */ lui $a0, %hi(gMaxSimultaneousNotes) # $a0, 0x803b -/* 0BB418 800BA818 0C02EC0C */ jal func_800BB030 -/* 0BB41C 800BA81C 8C8470B0 */ lw $a0, %lo(gMaxSimultaneousNotes)($a0) -/* 0BB420 800BA820 0C033624 */ jal osWritebackDCacheAll -/* 0BB424 800BA824 00000000 */ nop -/* 0BB428 800BA828 8FBF003C */ lw $ra, 0x3c($sp) -/* 0BB42C 800BA82C 8FB00018 */ lw $s0, 0x18($sp) -/* 0BB430 800BA830 8FB1001C */ lw $s1, 0x1c($sp) -/* 0BB434 800BA834 8FB20020 */ lw $s2, 0x20($sp) -/* 0BB438 800BA838 8FB30024 */ lw $s3, 0x24($sp) -/* 0BB43C 800BA83C 8FB40028 */ lw $s4, 0x28($sp) -/* 0BB440 800BA840 8FB5002C */ lw $s5, 0x2c($sp) -/* 0BB444 800BA844 8FB60030 */ lw $s6, 0x30($sp) -/* 0BB448 800BA848 8FB70034 */ lw $s7, 0x34($sp) -/* 0BB44C 800BA84C 8FBE0038 */ lw $fp, 0x38($sp) -/* 0BB450 800BA850 03E00008 */ jr $ra -/* 0BB454 800BA854 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/audio/heap/func_800BA858.s b/asm/non_matchings/audio/heap/func_800BA858.s deleted file mode 100644 index dd808acea..000000000 --- a/asm/non_matchings/audio/heap/func_800BA858.s +++ /dev/null @@ -1,27 +0,0 @@ -glabel unk_pool1_lookup -/* 0BB458 800BA858 3C03803B */ lui $v1, %hi(D_803B01C4) # $v1, 0x803b -/* 0BB45C 800BA85C 8C6301C4 */ lw $v1, %lo(D_803B01C4)($v1) -/* 0BB460 800BA860 00A03025 */ move $a2, $a1 -/* 0BB464 800BA864 3C05803B */ lui $a1, %hi(gUnkPool1) # $a1, 0x803b -/* 0BB468 800BA868 1860000E */ blez $v1, .L800BA8A4 -/* 0BB46C 800BA86C 00001025 */ move $v0, $zero -/* 0BB470 800BA870 24A501B8 */ addiu $a1, %lo(gUnkPool1) # addiu $a1, $a1, 0x1b8 -.L800BA874: -/* 0BB474 800BA874 84AE0018 */ lh $t6, 0x18($a1) -/* 0BB478 800BA878 24420001 */ addiu $v0, $v0, 1 -/* 0BB47C 800BA87C 0043082A */ slt $at, $v0, $v1 -/* 0BB480 800BA880 148E0006 */ bne $a0, $t6, .L800BA89C -/* 0BB484 800BA884 00000000 */ nop -/* 0BB488 800BA888 84AF001A */ lh $t7, 0x1a($a1) -/* 0BB48C 800BA88C 14CF0003 */ bne $a2, $t7, .L800BA89C -/* 0BB490 800BA890 00000000 */ nop -/* 0BB494 800BA894 03E00008 */ jr $ra -/* 0BB498 800BA898 8CA20010 */ lw $v0, 0x10($a1) - -.L800BA89C: -/* 0BB49C 800BA89C 1420FFF5 */ bnez $at, .L800BA874 -/* 0BB4A0 800BA8A0 24A5000C */ addiu $a1, $a1, 0xc -.L800BA8A4: -/* 0BB4A4 800BA8A4 00001025 */ move $v0, $zero -/* 0BB4A8 800BA8A8 03E00008 */ jr $ra -/* 0BB4AC 800BA8AC 00000000 */ nop diff --git a/asm/non_matchings/audio/heap/func_800BA8B0.s b/asm/non_matchings/audio/heap/func_800BA8B0.s deleted file mode 100644 index d606c4c3e..000000000 --- a/asm/non_matchings/audio/heap/func_800BA8B0.s +++ /dev/null @@ -1,125 +0,0 @@ -glabel func_800BA8B0 -/* 0BB4B0 800BA8B0 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0BB4B4 800BA8B4 AFB10018 */ sw $s1, 0x18($sp) -/* 0BB4B8 800BA8B8 AFB00014 */ sw $s0, 0x14($sp) -/* 0BB4BC 800BA8BC 00808025 */ move $s0, $a0 -/* 0BB4C0 800BA8C0 00A08825 */ move $s1, $a1 -/* 0BB4C4 800BA8C4 10800009 */ beqz $a0, .L800BA8EC -/* 0BB4C8 800BA8C8 AFBF001C */ sw $ra, 0x1c($sp) -/* 0BB4CC 800BA8CC 24010001 */ li $at, 1 -/* 0BB4D0 800BA8D0 1081000A */ beq $a0, $at, .L800BA8FC -/* 0BB4D4 800BA8D4 3C0F803B */ lui $t7, %hi(D_803B7070) # $t7, 0x803b -/* 0BB4D8 800BA8D8 24010002 */ li $at, 2 -/* 0BB4DC 800BA8DC 1081000A */ beq $a0, $at, .L800BA908 -/* 0BB4E0 800BA8E0 3C18803B */ lui $t8, %hi(D_803B7074) # $t8, 0x803b -/* 0BB4E4 800BA8E4 1000000B */ b .L800BA914 -/* 0BB4E8 800BA8E8 8FB9003C */ lw $t9, 0x3c($sp) -.L800BA8EC: -/* 0BB4EC 800BA8EC 3C0E803B */ lui $t6, %hi(D_803B706C) # $t6, 0x803b -/* 0BB4F0 800BA8F0 8DCE706C */ lw $t6, %lo(D_803B706C)($t6) -/* 0BB4F4 800BA8F4 10000006 */ b .L800BA910 -/* 0BB4F8 800BA8F8 AFAE003C */ sw $t6, 0x3c($sp) -.L800BA8FC: -/* 0BB4FC 800BA8FC 8DEF7070 */ lw $t7, %lo(D_803B7070)($t7) -/* 0BB500 800BA900 10000003 */ b .L800BA910 -/* 0BB504 800BA904 AFAF003C */ sw $t7, 0x3c($sp) -.L800BA908: -/* 0BB508 800BA908 8F187074 */ lw $t8, %lo(D_803B7074)($t8) -/* 0BB50C 800BA90C AFB8003C */ sw $t8, 0x3c($sp) -.L800BA910: -/* 0BB510 800BA910 8FB9003C */ lw $t9, 0x3c($sp) -.L800BA914: -/* 0BB514 800BA914 001140C0 */ sll $t0, $s1, 3 -/* 0BB518 800BA918 02002025 */ move $a0, $s0 -/* 0BB51C 800BA91C 03281021 */ addu $v0, $t9, $t0 -/* 0BB520 800BA920 8C490008 */ lw $t1, 8($v0) -/* 0BB524 800BA924 15200002 */ bnez $t1, .L800BA930 -/* 0BB528 800BA928 00000000 */ nop -/* 0BB52C 800BA92C 8C510004 */ lw $s1, 4($v0) -.L800BA930: -/* 0BB530 800BA930 0C02EA16 */ jal unk_pool1_lookup -/* 0BB534 800BA934 02202825 */ move $a1, $s1 -/* 0BB538 800BA938 14400049 */ bnez $v0, .L800BAA60 -/* 0BB53C 800BA93C 3C04803B */ lui $a0, %hi(gUnkPool1) # $a0, 0x803b -/* 0BB540 800BA940 8FAA003C */ lw $t2, 0x3c($sp) -/* 0BB544 800BA944 001158C0 */ sll $t3, $s1, 3 -/* 0BB548 800BA948 248401B8 */ addiu $a0, %lo(gUnkPool1) # addiu $a0, $a0, 0x1b8 -/* 0BB54C 800BA94C 24010001 */ li $at, 1 -/* 0BB550 800BA950 014B1021 */ addu $v0, $t2, $t3 -/* 0BB554 800BA954 8C86000C */ lw $a2, 0xc($a0) -/* 0BB558 800BA958 8C450008 */ lw $a1, 8($v0) -/* 0BB55C 800BA95C 16010002 */ bne $s0, $at, .L800BA968 -/* 0BB560 800BA960 8C470004 */ lw $a3, 4($v0) -/* 0BB564 800BA964 24E70010 */ addiu $a3, $a3, 0x10 -.L800BA968: -/* 0BB568 800BA968 AFA50034 */ sw $a1, 0x34($sp) -/* 0BB56C 800BA96C AFA60038 */ sw $a2, 0x38($sp) -/* 0BB570 800BA970 0C02E3FF */ jal soundAlloc -/* 0BB574 800BA974 AFA70030 */ sw $a3, 0x30($sp) -/* 0BB578 800BA978 8FA60038 */ lw $a2, 0x38($sp) -/* 0BB57C 800BA97C 3C0D803B */ lui $t5, %hi(gUnkPool1) # $t5, 0x803b -/* 0BB580 800BA980 25AD01B8 */ addiu $t5, %lo(gUnkPool1) # addiu $t5, $t5, 0x1b8 -/* 0BB584 800BA984 00066080 */ sll $t4, $a2, 2 -/* 0BB588 800BA988 01866023 */ subu $t4, $t4, $a2 -/* 0BB58C 800BA98C 000C6080 */ sll $t4, $t4, 2 -/* 0BB590 800BA990 018D1821 */ addu $v1, $t4, $t5 -/* 0BB594 800BA994 AC620010 */ sw $v0, 0x10($v1) -/* 0BB598 800BA998 10400031 */ beqz $v0, .L800BAA60 -/* 0BB59C 800BA99C 8FA70030 */ lw $a3, 0x30($sp) -/* 0BB5A0 800BA9A0 00E02025 */ move $a0, $a3 -/* 0BB5A4 800BA9A4 00402825 */ move $a1, $v0 -/* 0BB5A8 800BA9A8 8FA60034 */ lw $a2, 0x34($sp) -/* 0BB5AC 800BA9AC 0C02EAA0 */ jal audio_dma_copy_immediate -/* 0BB5B0 800BA9B0 AFA30020 */ sw $v1, 0x20($sp) -/* 0BB5B4 800BA9B4 8FA30020 */ lw $v1, 0x20($sp) -/* 0BB5B8 800BA9B8 8FAE0034 */ lw $t6, 0x34($sp) -/* 0BB5BC 800BA9BC 3C0F803B */ lui $t7, %hi(gSeqLoadStatus) # $t7, 0x803b -/* 0BB5C0 800BA9C0 A4700018 */ sh $s0, 0x18($v1) -/* 0BB5C4 800BA9C4 A471001A */ sh $s1, 0x1a($v1) -/* 0BB5C8 800BA9C8 12000009 */ beqz $s0, .L800BA9F0 -/* 0BB5CC 800BA9CC AC6E0014 */ sw $t6, 0x14($v1) -/* 0BB5D0 800BA9D0 24010001 */ li $at, 1 -/* 0BB5D4 800BA9D4 1201000F */ beq $s0, $at, .L800BAA14 -/* 0BB5D8 800BA9D8 3C0A803B */ lui $t2, %hi(gCtlEntries) # $t2, 0x803b -/* 0BB5DC 800BA9DC 24010002 */ li $at, 2 -/* 0BB5E0 800BA9E0 52010020 */ beql $s0, $at, .L800BAA64 -/* 0BB5E4 800BA9E4 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BB5E8 800BA9E8 1000001E */ b .L800BAA64 -/* 0BB5EC 800BA9EC 8FBF001C */ lw $ra, 0x1c($sp) -.L800BA9F0: -/* 0BB5F0 800BA9F0 25EF0400 */ addiu $t7, %lo(gSeqLoadStatus) # addiu $t7, $t7, 0x400 -/* 0BB5F4 800BA9F4 022F1021 */ addu $v0, $s1, $t7 -/* 0BB5F8 800BA9F8 90580000 */ lbu $t8, ($v0) -/* 0BB5FC 800BA9FC 24010005 */ li $at, 5 -/* 0BB600 800BAA00 24190005 */ li $t9, 5 -/* 0BB604 800BAA04 53010017 */ beql $t8, $at, .L800BAA64 -/* 0BB608 800BAA08 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BB60C 800BAA0C 10000014 */ b .L800BAA60 -/* 0BB610 800BAA10 A0590000 */ sb $t9, ($v0) -.L800BAA14: -/* 0BB614 800BAA14 8C680010 */ lw $t0, 0x10($v1) -/* 0BB618 800BAA18 8D4A7080 */ lw $t2, %lo(gCtlEntries)($t2) -/* 0BB61C 800BAA1C 00115880 */ sll $t3, $s1, 2 -/* 0BB620 800BAA20 01715823 */ subu $t3, $t3, $s1 -/* 0BB624 800BAA24 000B5880 */ sll $t3, $t3, 2 -/* 0BB628 800BAA28 25090004 */ addiu $t1, $t0, 4 -/* 0BB62C 800BAA2C 014B6021 */ addu $t4, $t2, $t3 -/* 0BB630 800BAA30 AD890004 */ sw $t1, 4($t4) -/* 0BB634 800BAA34 0C02ED61 */ jal func_800BB584 -/* 0BB638 800BAA38 02202025 */ move $a0, $s1 -/* 0BB63C 800BAA3C 3C0D803B */ lui $t5, %hi(gBankLoadStatus) # $t5, 0x803b -/* 0BB640 800BAA40 25AD03C0 */ addiu $t5, %lo(gBankLoadStatus) # addiu $t5, $t5, 0x3c0 -/* 0BB644 800BAA44 022D1021 */ addu $v0, $s1, $t5 -/* 0BB648 800BAA48 904E0000 */ lbu $t6, ($v0) -/* 0BB64C 800BAA4C 24010005 */ li $at, 5 -/* 0BB650 800BAA50 240F0005 */ li $t7, 5 -/* 0BB654 800BAA54 51C10003 */ beql $t6, $at, .L800BAA64 -/* 0BB658 800BAA58 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BB65C 800BAA5C A04F0000 */ sb $t7, ($v0) -.L800BAA60: -/* 0BB660 800BAA60 8FBF001C */ lw $ra, 0x1c($sp) -.L800BAA64: -/* 0BB664 800BAA64 8FB00014 */ lw $s0, 0x14($sp) -/* 0BB668 800BAA68 8FB10018 */ lw $s1, 0x18($sp) -/* 0BB66C 800BAA6C 03E00008 */ jr $ra -/* 0BB670 800BAA70 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/audio/load/audio_init.s b/asm/non_matchings/audio/load/audio_init.s index f96444478..07f6545fb 100644 --- a/asm/non_matchings/audio/load/audio_init.s +++ b/asm/non_matchings/audio/load/audio_init.s @@ -13,7 +13,7 @@ glabel D_800F2EA8 glabel audio_init /* 0BCCDC 800BC0DC 27BDFF70 */ addiu $sp, $sp, -0x90 -/* 0BCCE0 800BC0E0 3C0E800F */ lui $t6, %hi(D_800EA5DC) # $t6, 0x800f +/* 0BCCE0 800BC0E0 3C0E800F */ lui $t6, %hi(gAudioLoadLock) # $t6, 0x800f /* 0BCCE4 800BC0E4 AFBF002C */ sw $ra, 0x2c($sp) /* 0BCCE8 800BC0E8 AFB50028 */ sw $s5, 0x28($sp) /* 0BCCEC 800BC0EC AFB40024 */ sw $s4, 0x24($sp) @@ -21,7 +21,7 @@ glabel audio_init /* 0BCCF4 800BC0F4 AFB2001C */ sw $s2, 0x1c($sp) /* 0BCCF8 800BC0F8 AFB10018 */ sw $s1, 0x18($sp) /* 0BCCFC 800BC0FC AFB00014 */ sw $s0, 0x14($sp) -/* 0BCD00 800BC100 25CEA5DC */ addiu $t6, %lo(D_800EA5DC) # addiu $t6, $t6, -0x5a24 +/* 0BCD00 800BC100 25CEA5DC */ addiu $t6, %lo(gAudioLoadLock) # addiu $t6, $t6, -0x5a24 /* 0BCD04 800BC104 ADC00000 */ sw $zero, ($t6) /* 0BCD08 800BC108 3C04800F */ lui $a0, %hi(D_800EA5D0) # $a0, 0x800f /* 0BCD0C 800BC10C 8C84A5D0 */ lw $a0, %lo(D_800EA5D0)($a0) @@ -77,26 +77,26 @@ glabel audio_init /* 0BCDBC 800BC1BC 3C01803B */ lui $at, %hi(D_803B7178) # $at, 0x803b /* 0BCDC0 800BC1C0 240E0032 */ li $t6, 50 /* 0BCDC4 800BC1C4 E4247178 */ swc1 $f4, %lo(D_803B7178)($at) -/* 0BCDC8 800BC1C8 3C01803B */ lui $at, %hi(D_803B717C) # $at, 0x803b +/* 0BCDC8 800BC1C8 3C01803B */ lui $at, %hi(gRefreshRate) # $at, 0x803b /* 0BCDCC 800BC1CC 10000010 */ b .L800BC210 -/* 0BCDD0 800BC1D0 AC2E717C */ sw $t6, %lo(D_803B717C)($at) +/* 0BCDD0 800BC1D0 AC2E717C */ sw $t6, %lo(gRefreshRate)($at) .L800BC1D4: /* 0BCDD4 800BC1D4 3C01800F */ lui $at, %hi(D_800F2EA4) # $at, 0x800f /* 0BCDD8 800BC1D8 C4262EA4 */ lwc1 $f6, %lo(D_800F2EA4)($at) /* 0BCDDC 800BC1DC 3C01803B */ lui $at, %hi(D_803B7178) # $at, 0x803b /* 0BCDE0 800BC1E0 240F003C */ li $t7, 60 /* 0BCDE4 800BC1E4 E4267178 */ swc1 $f6, %lo(D_803B7178)($at) -/* 0BCDE8 800BC1E8 3C01803B */ lui $at, %hi(D_803B717C) # $at, 0x803b +/* 0BCDE8 800BC1E8 3C01803B */ lui $at, %hi(gRefreshRate) # $at, 0x803b /* 0BCDEC 800BC1EC 10000008 */ b .L800BC210 -/* 0BCDF0 800BC1F0 AC2F717C */ sw $t7, %lo(D_803B717C)($at) +/* 0BCDF0 800BC1F0 AC2F717C */ sw $t7, %lo(gRefreshRate)($at) .L800BC1F4: /* 0BCDF4 800BC1F4 3C01800F */ lui $at, %hi(D_800F2EA8) # $at, 0x800f /* 0BCDF8 800BC1F8 C4282EA8 */ lwc1 $f8, %lo(D_800F2EA8)($at) /* 0BCDFC 800BC1FC 3C01803B */ lui $at, %hi(D_803B7178) # $at, 0x803b /* 0BCE00 800BC200 2419003C */ li $t9, 60 /* 0BCE04 800BC204 E4287178 */ swc1 $f8, %lo(D_803B7178)($at) -/* 0BCE08 800BC208 3C01803B */ lui $at, %hi(D_803B717C) # $at, 0x803b -/* 0BCE0C 800BC20C AC39717C */ sw $t9, %lo(D_803B717C)($at) +/* 0BCE08 800BC208 3C01803B */ lui $at, %hi(gRefreshRate) # $at, 0x803b +/* 0BCE0C 800BC20C AC39717C */ sw $t9, %lo(gRefreshRate)($at) .L800BC210: /* 0BCE10 800BC210 0C032FD2 */ jal func_800CBF48 /* 0BCE14 800BC214 00000000 */ nop @@ -119,10 +119,10 @@ glabel audio_init /* 0BCE54 800BC254 AC2070C4 */ sw $zero, %lo(D_803B70C4)($at) /* 0BCE58 800BC258 3C01803B */ lui $at, %hi(gAudioLibSoundMode) # $at, 0x803b /* 0BCE5C 800BC25C A02070B6 */ sb $zero, %lo(gAudioLibSoundMode)($at) -/* 0BCE60 800BC260 3C02803B */ lui $v0, %hi(D_803B70D8) # $v0, 0x803b -/* 0BCE64 800BC264 3C01803B */ lui $at, %hi(D_803B70D4) # $at, 0x803b -/* 0BCE68 800BC268 244270D8 */ addiu $v0, %lo(D_803B70D8) # addiu $v0, $v0, 0x70d8 -/* 0BCE6C 800BC26C AC2070D4 */ sw $zero, %lo(D_803B70D4)($at) +/* 0BCE60 800BC260 3C02803B */ lui $v0, %hi(gAudioTasks) # $v0, 0x803b +/* 0BCE64 800BC264 3C01803B */ lui $at, %hi(gAudioTask) # $at, 0x803b +/* 0BCE68 800BC268 244270D8 */ addiu $v0, %lo(gAudioTasks) # addiu $v0, $v0, 0x70d8 +/* 0BCE6C 800BC26C AC2070D4 */ sw $zero, %lo(gAudioTask)($at) /* 0BCE70 800BC270 3C04803B */ lui $a0, %hi(D_803B6720) # $a0, 0x803b /* 0BCE74 800BC274 3C05803B */ lui $a1, %hi(D_803B6738) # $a1, 0x803b /* 0BCE78 800BC278 AC400034 */ sw $zero, 0x34($v0) @@ -144,12 +144,12 @@ glabel audio_init /* 0BCEB8 800BC2B8 AC206E58 */ sw $zero, %lo(gSampleDmaNumListItems)($at) /* 0BCEBC 800BC2BC 0C02E43C */ jal func_800B90F0 /* 0BCEC0 800BC2C0 8C84A5D4 */ lw $a0, %lo(D_800EA5D4)($a0) -/* 0BCEC4 800BC2C4 3C06803B */ lui $a2, %hi(D_803B7180) # $a2, 0x803b +/* 0BCEC4 800BC2C4 3C06803B */ lui $a2, %hi(gAiBuffers) # $a2, 0x803b /* 0BCEC8 800BC2C8 3C14803B */ lui $s4, %hi(gAudioInitPool) # $s4, 0x803b /* 0BCECC 800BC2CC 3C11803B */ lui $s1, %hi(D_803B718C) # $s1, 0x803b /* 0BCED0 800BC2D0 2631718C */ addiu $s1, %lo(D_803B718C) # addiu $s1, $s1, 0x718c /* 0BCED4 800BC2D4 2694FBD8 */ addiu $s4, %lo(gAudioInitPool) # addiu $s4, $s4, -0x428 -/* 0BCED8 800BC2D8 24C67180 */ addiu $a2, %lo(D_803B7180) # addiu $a2, $a2, 0x7180 +/* 0BCED8 800BC2D8 24C67180 */ addiu $a2, %lo(gAiBuffers) # addiu $a2, $a2, 0x7180 /* 0BCEDC 800BC2DC 24100A00 */ li $s0, 2560 /* 0BCEE0 800BC2E0 02802025 */ move $a0, $s4 .L800BC2E4: @@ -178,17 +178,17 @@ glabel audio_init /* 0BCF38 800BC338 00D1082B */ sltu $at, $a2, $s1 /* 0BCF3C 800BC33C 5420FFE9 */ bnel $at, $zero, .L800BC2E4 /* 0BCF40 800BC340 02802025 */ move $a0, $s4 -/* 0BCF44 800BC344 3C01803B */ lui $at, %hi(D_803B0501) # $at, 0x803b -/* 0BCF48 800BC348 3C18803B */ lui $t8, %hi(D_803B0500) # $t8, 0x803b -/* 0BCF4C 800BC34C A0200501 */ sb $zero, %lo(D_803B0501)($at) -/* 0BCF50 800BC350 27180500 */ addiu $t8, %lo(D_803B0500) # addiu $t8, $t8, 0x500 +/* 0BCF44 800BC344 3C01803B */ lui $at, %hi(gAudioResetPresetIdToLoad) # $at, 0x803b +/* 0BCF48 800BC348 3C18803B */ lui $t8, %hi(gAudioResetStatus) # $t8, 0x803b +/* 0BCF4C 800BC34C A0200501 */ sb $zero, %lo(gAudioResetPresetIdToLoad)($at) +/* 0BCF50 800BC350 27180500 */ addiu $t8, %lo(gAudioResetStatus) # addiu $t8, $t8, 0x500 /* 0BCF54 800BC354 24190001 */ li $t9, 1 -/* 0BCF58 800BC358 0C02E803 */ jal func_800BA00C +/* 0BCF58 800BC358 0C02E803 */ jal audio_shut_down_and_reset_step /* 0BCF5C 800BC35C A3190000 */ sb $t9, ($t8) -/* 0BCF60 800BC360 3C11803B */ lui $s1, %hi(D_803B706C) # $s1, 0x803b +/* 0BCF60 800BC360 3C11803B */ lui $s1, %hi(gSeqFileHeader) # $s1, 0x803b /* 0BCF64 800BC364 3C1200BC */ lui $s2, %hi(_sequencesSegmentRomStart) # $s2, 0xbc /* 0BCF68 800BC368 26525F60 */ addiu $s2, %lo(_sequencesSegmentRomStart) # addiu $s2, $s2, 0x5f60 -/* 0BCF6C 800BC36C 2631706C */ addiu $s1, %lo(D_803B706C) # addiu $s1, $s1, 0x706c +/* 0BCF6C 800BC36C 2631706C */ addiu $s1, %lo(gSeqFileHeader) # addiu $s1, $s1, 0x706c /* 0BCF70 800BC370 27B50060 */ addiu $s5, $sp, 0x60 /* 0BCF74 800BC374 AE350000 */ sw $s5, ($s1) /* 0BCF78 800BC378 02A02825 */ move $a1, $s5 @@ -196,10 +196,10 @@ glabel audio_init /* 0BCF80 800BC380 0C02EAA0 */ jal audio_dma_copy_immediate /* 0BCF84 800BC384 24060010 */ li $a2, 16 /* 0BCF88 800BC388 8E280000 */ lw $t0, ($s1) -/* 0BCF8C 800BC38C 3C02803B */ lui $v0, %hi(D_803B707C) # $v0, 0x803b +/* 0BCF8C 800BC38C 3C02803B */ lui $v0, %hi(gSequenceCount) # $v0, 0x803b /* 0BCF90 800BC390 2401FFF0 */ li $at, -16 /* 0BCF94 800BC394 85090002 */ lh $t1, 2($t0) -/* 0BCF98 800BC398 2442707C */ addiu $v0, %lo(D_803B707C) # addiu $v0, $v0, 0x707c +/* 0BCF98 800BC398 2442707C */ addiu $v0, %lo(gSequenceCount) # addiu $v0, $v0, 0x707c /* 0BCF9C 800BC39C 02802025 */ move $a0, $s4 /* 0BCFA0 800BC3A0 3130FFFF */ andi $s0, $t1, 0xffff /* 0BCFA4 800BC3A4 001050C0 */ sll $t2, $s0, 3 @@ -218,8 +218,8 @@ glabel audio_init /* 0BCFD8 800BC3D8 0C02ED0F */ jal func_800BB43C /* 0BCFDC 800BC3DC 02402825 */ move $a1, $s2 /* 0BCFE0 800BC3E0 3C110096 */ lui $s1, %hi(_audio_banksSegmentRomStart) # $s1, 0x96 -/* 0BCFE4 800BC3E4 3C12803B */ lui $s2, %hi(D_803B7070) # $s2, 0x803b -/* 0BCFE8 800BC3E8 26527070 */ addiu $s2, %lo(D_803B7070) # addiu $s2, $s2, 0x7070 +/* 0BCFE4 800BC3E4 3C12803B */ lui $s2, %hi(gAlCtlHeader) # $s2, 0x803b +/* 0BCFE8 800BC3E8 26527070 */ addiu $s2, %lo(gAlCtlHeader) # addiu $s2, $s2, 0x7070 /* 0BCFEC 800BC3EC 26316260 */ addiu $s1, %lo(_audio_banksSegmentRomStart) # addiu $s1, $s1, 0x6260 /* 0BCFF0 800BC3F0 AE550000 */ sw $s5, ($s2) /* 0BCFF4 800BC3F4 02202025 */ move $a0, $s1 @@ -279,10 +279,10 @@ glabel audio_init /* 0BD0C8 800BC4C8 1473FFEB */ bne $v1, $s3, .L800BC478 /* 0BD0CC 800BC4CC A1690002 */ sb $t1, 2($t3) .L800BC4D0: -/* 0BD0D0 800BC4D0 3C11803B */ lui $s1, %hi(D_803B7074) # $s1, 0x803b +/* 0BD0D0 800BC4D0 3C11803B */ lui $s1, %hi(gAlTbl) # $s1, 0x803b /* 0BD0D4 800BC4D4 3C120098 */ lui $s2, %hi(_audio_tablesSegmentRomStart) # $s2, 0x98 /* 0BD0D8 800BC4D8 26529AA0 */ addiu $s2, %lo(_audio_tablesSegmentRomStart) # addiu $s2, $s2, -0x6560 -/* 0BD0DC 800BC4DC 26317074 */ addiu $s1, %lo(D_803B7074) # addiu $s1, $s1, 0x7074 +/* 0BD0DC 800BC4DC 26317074 */ addiu $s1, %lo(gAlTbl) # addiu $s1, $s1, 0x7074 /* 0BD0E0 800BC4E0 AE350000 */ sw $s5, ($s1) /* 0BD0E4 800BC4E4 02402025 */ move $a0, $s2 /* 0BD0E8 800BC4E8 02A02825 */ move $a1, $s5 @@ -330,8 +330,8 @@ glabel audio_init /* 0BD190 800BC590 0C030497 */ jal init_sequence_players /* 0BD194 800BC594 00000000 */ nop /* 0BD198 800BC598 3C0F7655 */ lui $t7, (0x76557364 >> 16) # lui $t7, 0x7655 -/* 0BD19C 800BC59C 3C18800F */ lui $t8, %hi(D_800EA5DC) # $t8, 0x800f -/* 0BD1A0 800BC5A0 2718A5DC */ addiu $t8, %lo(D_800EA5DC) # addiu $t8, $t8, -0x5a24 +/* 0BD19C 800BC59C 3C18800F */ lui $t8, %hi(gAudioLoadLock) # $t8, 0x800f +/* 0BD1A0 800BC5A0 2718A5DC */ addiu $t8, %lo(gAudioLoadLock) # addiu $t8, $t8, -0x5a24 /* 0BD1A4 800BC5A4 35EF7364 */ ori $t7, (0x76557364 & 0xFFFF) # ori $t7, $t7, 0x7364 /* 0BD1A8 800BC5A8 AF0F0000 */ sw $t7, ($t8) /* 0BD1AC 800BC5AC 8FBF002C */ lw $ra, 0x2c($sp) diff --git a/asm/non_matchings/audio/load/func_800BB584.s b/asm/non_matchings/audio/load/func_800BB584.s index 07b5c9b36..a761d6ed1 100644 --- a/asm/non_matchings/audio/load/func_800BB584.s +++ b/asm/non_matchings/audio/load/func_800BB584.s @@ -1,6 +1,6 @@ glabel func_800BB584 -/* 0BC184 800BB584 3C03803B */ lui $v1, %hi(D_803B7074) # $v1, 0x803b -/* 0BC188 800BB588 8C637074 */ lw $v1, %lo(D_803B7074)($v1) +/* 0BC184 800BB584 3C03803B */ lui $v1, %hi(gAlTbl) # $v1, 0x803b +/* 0BC188 800BB588 8C637074 */ lw $v1, %lo(gAlTbl)($v1) /* 0BC18C 800BB58C 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 0BC190 800BB590 000478C0 */ sll $t7, $a0, 3 /* 0BC194 800BB594 AFBF0014 */ sw $ra, 0x14($sp) diff --git a/asm/non_matchings/audio/load/func_800BB780.s b/asm/non_matchings/audio/load/func_800BB780.s deleted file mode 100644 index ce3bd68e2..000000000 --- a/asm/non_matchings/audio/load/func_800BB780.s +++ /dev/null @@ -1,60 +0,0 @@ -glabel func_800BB780 -/* 0BC380 800BB780 3C0E803B */ lui $t6, %hi(D_803B7070) # $t6, 0x803b -/* 0BC384 800BB784 8DCE7070 */ lw $t6, %lo(D_803B7070)($t6) -/* 0BC388 800BB788 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 0BC38C 800BB78C 000478C0 */ sll $t7, $a0, 3 -/* 0BC390 800BB790 AFBF0024 */ sw $ra, 0x24($sp) -/* 0BC394 800BB794 AFB00020 */ sw $s0, 0x20($sp) -/* 0BC398 800BB798 01CF1021 */ addu $v0, $t6, $t7 -/* 0BC39C 800BB79C 8C460008 */ lw $a2, 8($v0) -/* 0BC3A0 800BB7A0 2401FFF0 */ li $at, -16 -/* 0BC3A4 800BB7A4 8C590004 */ lw $t9, 4($v0) -/* 0BC3A8 800BB7A8 24C6001E */ addiu $a2, $a2, 0x1e -/* 0BC3AC 800BB7AC 00808025 */ move $s0, $a0 -/* 0BC3B0 800BB7B0 00C1C024 */ and $t8, $a2, $at -/* 0BC3B4 800BB7B4 00A03825 */ move $a3, $a1 -/* 0BC3B8 800BB7B8 2706FFF0 */ addiu $a2, $t8, -0x10 -/* 0BC3BC 800BB7BC 3C04803B */ lui $a0, %hi(gBankLoadedPool) # $a0, 0x803b -/* 0BC3C0 800BB7C0 2484FE18 */ addiu $a0, %lo(gBankLoadedPool) # addiu $a0, $a0, -0x1e8 -/* 0BC3C4 800BB7C4 AFA60054 */ sw $a2, 0x54($sp) -/* 0BC3C8 800BB7C8 24050001 */ li $a1, 1 -/* 0BC3CC 800BB7CC AFB00010 */ sw $s0, 0x10($sp) -/* 0BC3D0 800BB7D0 0C02E4EF */ jal func_800B93BC -/* 0BC3D4 800BB7D4 AFB90028 */ sw $t9, 0x28($sp) -/* 0BC3D8 800BB7D8 8FA60054 */ lw $a2, 0x54($sp) -/* 0BC3DC 800BB7DC 14400003 */ bnez $v0, .L800BB7EC -/* 0BC3E0 800BB7E0 00402825 */ move $a1, $v0 -/* 0BC3E4 800BB7E4 1000001A */ b .L800BB850 -/* 0BC3E8 800BB7E8 00001025 */ move $v0, $zero -.L800BB7EC: -/* 0BC3EC 800BB7EC 8FA40028 */ lw $a0, 0x28($sp) -/* 0BC3F0 800BB7F0 AFA5002C */ sw $a1, 0x2c($sp) -/* 0BC3F4 800BB7F4 0C02EAA0 */ jal audio_dma_copy_immediate -/* 0BC3F8 800BB7F8 24840010 */ addiu $a0, $a0, 0x10 -/* 0BC3FC 800BB7FC 3C0A803B */ lui $t2, %hi(gCtlEntries) # $t2, 0x803b -/* 0BC400 800BB800 8D4A7080 */ lw $t2, %lo(gCtlEntries)($t2) -/* 0BC404 800BB804 8FA8002C */ lw $t0, 0x2c($sp) -/* 0BC408 800BB808 00105880 */ sll $t3, $s0, 2 -/* 0BC40C 800BB80C 01705823 */ subu $t3, $t3, $s0 -/* 0BC410 800BB810 000B5880 */ sll $t3, $t3, 2 -/* 0BC414 800BB814 014B6021 */ addu $t4, $t2, $t3 -/* 0BC418 800BB818 25090004 */ addiu $t1, $t0, 4 -/* 0BC41C 800BB81C AD890004 */ sw $t1, 4($t4) -/* 0BC420 800BB820 0C02ED61 */ jal func_800BB584 -/* 0BC424 800BB824 02002025 */ move $a0, $s0 -/* 0BC428 800BB828 3C0D803B */ lui $t5, %hi(gBankLoadStatus) # $t5, 0x803b -/* 0BC42C 800BB82C 25AD03C0 */ addiu $t5, %lo(gBankLoadStatus) # addiu $t5, $t5, 0x3c0 -/* 0BC430 800BB830 020D1021 */ addu $v0, $s0, $t5 -/* 0BC434 800BB834 904E0000 */ lbu $t6, ($v0) -/* 0BC438 800BB838 24010005 */ li $at, 5 -/* 0BC43C 800BB83C 240F0002 */ li $t7, 2 -/* 0BC440 800BB840 51C10003 */ beql $t6, $at, .L800BB850 -/* 0BC444 800BB844 8FA2002C */ lw $v0, 0x2c($sp) -/* 0BC448 800BB848 A04F0000 */ sb $t7, ($v0) -/* 0BC44C 800BB84C 8FA2002C */ lw $v0, 0x2c($sp) -.L800BB850: -/* 0BC450 800BB850 8FBF0024 */ lw $ra, 0x24($sp) -/* 0BC454 800BB854 8FB00020 */ lw $s0, 0x20($sp) -/* 0BC458 800BB858 27BD0058 */ addiu $sp, $sp, 0x58 -/* 0BC45C 800BB85C 03E00008 */ jr $ra -/* 0BC460 800BB860 00000000 */ nop diff --git a/asm/non_matchings/audio/load/func_800BB864.s b/asm/non_matchings/audio/load/func_800BB864.s deleted file mode 100644 index 7d2f8a1ad..000000000 --- a/asm/non_matchings/audio/load/func_800BB864.s +++ /dev/null @@ -1,81 +0,0 @@ -glabel func_800BB864 -/* 0BC464 800BB864 3C0E803B */ lui $t6, %hi(D_803B7070) # $t6, 0x803b -/* 0BC468 800BB868 8DCE7070 */ lw $t6, %lo(D_803B7070)($t6) -/* 0BC46C 800BB86C 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 0BC470 800BB870 AFB0001C */ sw $s0, 0x1c($sp) -/* 0BC474 800BB874 000478C0 */ sll $t7, $a0, 3 -/* 0BC478 800BB878 00C08025 */ move $s0, $a2 -/* 0BC47C 800BB87C AFBF0024 */ sw $ra, 0x24($sp) -/* 0BC480 800BB880 AFB10020 */ sw $s1, 0x20($sp) -/* 0BC484 800BB884 01CF1021 */ addu $v0, $t6, $t7 -/* 0BC488 800BB888 8C460008 */ lw $a2, 8($v0) -/* 0BC48C 800BB88C 2401FFF0 */ li $at, -16 -/* 0BC490 800BB890 8C590004 */ lw $t9, 4($v0) -/* 0BC494 800BB894 24C6001E */ addiu $a2, $a2, 0x1e -/* 0BC498 800BB898 00808825 */ move $s1, $a0 -/* 0BC49C 800BB89C 00C1C024 */ and $t8, $a2, $at -/* 0BC4A0 800BB8A0 00A03825 */ move $a3, $a1 -/* 0BC4A4 800BB8A4 2706FFF0 */ addiu $a2, $t8, -0x10 -/* 0BC4A8 800BB8A8 3C04803B */ lui $a0, %hi(gBankLoadedPool) # $a0, 0x803b -/* 0BC4AC 800BB8AC 2484FE18 */ addiu $a0, %lo(gBankLoadedPool) # addiu $a0, $a0, -0x1e8 -/* 0BC4B0 800BB8B0 AFA60064 */ sw $a2, 0x64($sp) -/* 0BC4B4 800BB8B4 24050001 */ li $a1, 1 -/* 0BC4B8 800BB8B8 AFB10010 */ sw $s1, 0x10($sp) -/* 0BC4BC 800BB8BC 0C02E4EF */ jal func_800B93BC -/* 0BC4C0 800BB8C0 AFB90038 */ sw $t9, 0x38($sp) -/* 0BC4C4 800BB8C4 8FA60064 */ lw $a2, 0x64($sp) -/* 0BC4C8 800BB8C8 14400003 */ bnez $v0, .L800BB8D8 -/* 0BC4CC 800BB8CC AFA2003C */ sw $v0, 0x3c($sp) -/* 0BC4D0 800BB8D0 1000002D */ b .L800BB988 -/* 0BC4D4 800BB8D4 00001025 */ move $v0, $zero -.L800BB8D8: -/* 0BC4D8 800BB8D8 3C04803B */ lui $a0, %hi(gCtlEntries) # $a0, 0x803b -/* 0BC4DC 800BB8DC 24847080 */ addiu $a0, %lo(gCtlEntries) # addiu $a0, $a0, 0x7080 -/* 0BC4E0 800BB8E0 A2110006 */ sb $s1, 6($s0) -/* 0BC4E4 800BB8E4 8C890000 */ lw $t1, ($a0) -/* 0BC4E8 800BB8E8 00111880 */ sll $v1, $s1, 2 -/* 0BC4EC 800BB8EC 00711823 */ subu $v1, $v1, $s1 -/* 0BC4F0 800BB8F0 00031880 */ sll $v1, $v1, 2 -/* 0BC4F4 800BB8F4 24480004 */ addiu $t0, $v0, 4 -/* 0BC4F8 800BB8F8 01235021 */ addu $t2, $t1, $v1 -/* 0BC4FC 800BB8FC AD480004 */ sw $t0, 4($t2) -/* 0BC500 800BB900 8C8B0000 */ lw $t3, ($a0) -/* 0BC504 800BB904 26070108 */ addiu $a3, $s0, 0x108 -/* 0BC508 800BB908 00E02025 */ move $a0, $a3 -/* 0BC50C 800BB90C 01636021 */ addu $t4, $t3, $v1 -/* 0BC510 800BB910 AD800008 */ sw $zero, 8($t4) -/* 0BC514 800BB914 AE02013C */ sw $v0, 0x13c($s0) -/* 0BC518 800BB918 8FAD0038 */ lw $t5, 0x38($sp) -/* 0BC51C 800BB91C AE060144 */ sw $a2, 0x144($s0) -/* 0BC520 800BB920 24060001 */ li $a2, 1 -/* 0BC524 800BB924 25AE0010 */ addiu $t6, $t5, 0x10 -/* 0BC528 800BB928 AE0E0140 */ sw $t6, 0x140($s0) -/* 0BC52C 800BB92C AFA7002C */ sw $a3, 0x2c($sp) -/* 0BC530 800BB930 0C033358 */ jal osCreateMesgQueue -/* 0BC534 800BB934 26050120 */ addiu $a1, $s0, 0x120 -/* 0BC538 800BB938 92180000 */ lbu $t8, ($s0) -/* 0BC53C 800BB93C 8FA7002C */ lw $a3, 0x2c($sp) -/* 0BC540 800BB940 26090124 */ addiu $t1, $s0, 0x124 -/* 0BC544 800BB944 37190008 */ ori $t9, $t8, 8 -/* 0BC548 800BB948 A2190000 */ sb $t9, ($s0) -/* 0BC54C 800BB94C AFA90010 */ sw $t1, 0x10($sp) -/* 0BC550 800BB950 26040140 */ addiu $a0, $s0, 0x140 -/* 0BC554 800BB954 2605013C */ addiu $a1, $s0, 0x13c -/* 0BC558 800BB958 0C02EAD6 */ jal audio_dma_partial_copy_async -/* 0BC55C 800BB95C 26060144 */ addiu $a2, $s0, 0x144 -/* 0BC560 800BB960 3C08803B */ lui $t0, %hi(gBankLoadStatus) # $t0, 0x803b -/* 0BC564 800BB964 250803C0 */ addiu $t0, %lo(gBankLoadStatus) # addiu $t0, $t0, 0x3c0 -/* 0BC568 800BB968 02281021 */ addu $v0, $s1, $t0 -/* 0BC56C 800BB96C 904A0000 */ lbu $t2, ($v0) -/* 0BC570 800BB970 24010005 */ li $at, 5 -/* 0BC574 800BB974 240B0001 */ li $t3, 1 -/* 0BC578 800BB978 51410003 */ beql $t2, $at, .L800BB988 -/* 0BC57C 800BB97C 8FA2003C */ lw $v0, 0x3c($sp) -/* 0BC580 800BB980 A04B0000 */ sb $t3, ($v0) -/* 0BC584 800BB984 8FA2003C */ lw $v0, 0x3c($sp) -.L800BB988: -/* 0BC588 800BB988 8FBF0024 */ lw $ra, 0x24($sp) -/* 0BC58C 800BB98C 8FB0001C */ lw $s0, 0x1c($sp) -/* 0BC590 800BB990 8FB10020 */ lw $s1, 0x20($sp) -/* 0BC594 800BB994 03E00008 */ jr $ra -/* 0BC598 800BB998 27BD0068 */ addiu $sp, $sp, 0x68 diff --git a/asm/non_matchings/audio/load/func_800BB99C.s b/asm/non_matchings/audio/load/func_800BB99C.s deleted file mode 100644 index b0f6c4101..000000000 --- a/asm/non_matchings/audio/load/func_800BB99C.s +++ /dev/null @@ -1,49 +0,0 @@ -glabel func_800BB99C -/* 0BC59C 800BB99C 3C0E803B */ lui $t6, %hi(D_803B706C) # $t6, 0x803b -/* 0BC5A0 800BB9A0 8DCE706C */ lw $t6, %lo(D_803B706C)($t6) -/* 0BC5A4 800BB9A4 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0BC5A8 800BB9A8 0004C0C0 */ sll $t8, $a0, 3 -/* 0BC5AC 800BB9AC AFBF001C */ sw $ra, 0x1c($sp) -/* 0BC5B0 800BB9B0 AFA40030 */ sw $a0, 0x30($sp) -/* 0BC5B4 800BB9B4 01D81021 */ addu $v0, $t6, $t8 -/* 0BC5B8 800BB9B8 8C460008 */ lw $a2, 8($v0) -/* 0BC5BC 800BB9BC 8C480004 */ lw $t0, 4($v0) -/* 0BC5C0 800BB9C0 00807825 */ move $t7, $a0 -/* 0BC5C4 800BB9C4 2401FFF0 */ li $at, -16 -/* 0BC5C8 800BB9C8 24C6000F */ addiu $a2, $a2, 0xf -/* 0BC5CC 800BB9CC 00A03825 */ move $a3, $a1 -/* 0BC5D0 800BB9D0 00C1C824 */ and $t9, $a2, $at -/* 0BC5D4 800BB9D4 3C04803B */ lui $a0, %hi(gSeqLoadedPool) # $a0, 0x803b -/* 0BC5D8 800BB9D8 03203025 */ move $a2, $t9 -/* 0BC5DC 800BB9DC 2484FC48 */ addiu $a0, %lo(gSeqLoadedPool) # addiu $a0, $a0, -0x3b8 -/* 0BC5E0 800BB9E0 AFB9002C */ sw $t9, 0x2c($sp) -/* 0BC5E4 800BB9E4 24050001 */ li $a1, 1 -/* 0BC5E8 800BB9E8 AFAF0010 */ sw $t7, 0x10($sp) -/* 0BC5EC 800BB9EC 0C02E4EF */ jal func_800B93BC -/* 0BC5F0 800BB9F0 AFA80024 */ sw $t0, 0x24($sp) -/* 0BC5F4 800BB9F4 8FA6002C */ lw $a2, 0x2c($sp) -/* 0BC5F8 800BB9F8 14400003 */ bnez $v0, .L800BBA08 -/* 0BC5FC 800BB9FC 00402825 */ move $a1, $v0 -/* 0BC600 800BBA00 1000000F */ b .L800BBA40 -/* 0BC604 800BBA04 00001025 */ move $v0, $zero -.L800BBA08: -/* 0BC608 800BBA08 8FA40024 */ lw $a0, 0x24($sp) -/* 0BC60C 800BBA0C 0C02EAA0 */ jal audio_dma_copy_immediate -/* 0BC610 800BBA10 AFA50028 */ sw $a1, 0x28($sp) -/* 0BC614 800BBA14 8FA90030 */ lw $t1, 0x30($sp) -/* 0BC618 800BBA18 3C0A803B */ lui $t2, %hi(gSeqLoadStatus) # $t2, 0x803b -/* 0BC61C 800BBA1C 254A0400 */ addiu $t2, %lo(gSeqLoadStatus) # addiu $t2, $t2, 0x400 -/* 0BC620 800BBA20 012A1021 */ addu $v0, $t1, $t2 -/* 0BC624 800BBA24 904B0000 */ lbu $t3, ($v0) -/* 0BC628 800BBA28 24010005 */ li $at, 5 -/* 0BC62C 800BBA2C 8FA50028 */ lw $a1, 0x28($sp) -/* 0BC630 800BBA30 11610002 */ beq $t3, $at, .L800BBA3C -/* 0BC634 800BBA34 240C0002 */ li $t4, 2 -/* 0BC638 800BBA38 A04C0000 */ sb $t4, ($v0) -.L800BBA3C: -/* 0BC63C 800BBA3C 00A01025 */ move $v0, $a1 -.L800BBA40: -/* 0BC640 800BBA40 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BC644 800BBA44 27BD0030 */ addiu $sp, $sp, 0x30 -/* 0BC648 800BBA48 03E00008 */ jr $ra -/* 0BC64C 800BBA4C 00000000 */ nop diff --git a/asm/non_matchings/audio/load/func_800BBA50.s b/asm/non_matchings/audio/load/func_800BBA50.s deleted file mode 100644 index 17d003904..000000000 --- a/asm/non_matchings/audio/load/func_800BBA50.s +++ /dev/null @@ -1,89 +0,0 @@ -glabel func_800BBA50 -/* 0BC650 800BBA50 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 0BC654 800BBA54 3C0E803B */ lui $t6, %hi(D_803B706C) # $t6, 0x803b -/* 0BC658 800BBA58 8DCE706C */ lw $t6, %lo(D_803B706C)($t6) -/* 0BC65C 800BBA5C 0004C0C0 */ sll $t8, $a0, 3 -/* 0BC660 800BBA60 AFBF002C */ sw $ra, 0x2c($sp) -/* 0BC664 800BBA64 AFB20028 */ sw $s2, 0x28($sp) -/* 0BC668 800BBA68 AFB10024 */ sw $s1, 0x24($sp) -/* 0BC66C 800BBA6C AFB00020 */ sw $s0, 0x20($sp) -/* 0BC670 800BBA70 AFA40048 */ sw $a0, 0x48($sp) -/* 0BC674 800BBA74 01D81021 */ addu $v0, $t6, $t8 -/* 0BC678 800BBA78 8C500008 */ lw $s0, 8($v0) -/* 0BC67C 800BBA7C 8C480004 */ lw $t0, 4($v0) -/* 0BC680 800BBA80 00C08825 */ move $s1, $a2 -/* 0BC684 800BBA84 00807825 */ move $t7, $a0 -/* 0BC688 800BBA88 2401FFF0 */ li $at, -16 -/* 0BC68C 800BBA8C 2610000F */ addiu $s0, $s0, 0xf -/* 0BC690 800BBA90 00A03825 */ move $a3, $a1 -/* 0BC694 800BBA94 02013024 */ and $a2, $s0, $at -/* 0BC698 800BBA98 3C04803B */ lui $a0, %hi(gSeqLoadedPool) # $a0, 0x803b -/* 0BC69C 800BBA9C 00C08025 */ move $s0, $a2 -/* 0BC6A0 800BBAA0 2484FC48 */ addiu $a0, %lo(gSeqLoadedPool) # addiu $a0, $a0, -0x3b8 -/* 0BC6A4 800BBAA4 24050001 */ li $a1, 1 -/* 0BC6A8 800BBAA8 AFAF0010 */ sw $t7, 0x10($sp) -/* 0BC6AC 800BBAAC 0C02E4EF */ jal func_800B93BC -/* 0BC6B0 800BBAB0 AFA8003C */ sw $t0, 0x3c($sp) -/* 0BC6B4 800BBAB4 14400003 */ bnez $v0, .L800BBAC4 -/* 0BC6B8 800BBAB8 00409025 */ move $s2, $v0 -/* 0BC6BC 800BBABC 10000032 */ b .L800BBB88 -/* 0BC6C0 800BBAC0 00001025 */ move $v0, $zero -.L800BBAC4: -/* 0BC6C4 800BBAC4 2A010041 */ slti $at, $s0, 0x41 -/* 0BC6C8 800BBAC8 10200010 */ beqz $at, .L800BBB0C -/* 0BC6CC 800BBACC 8FA4003C */ lw $a0, 0x3c($sp) -/* 0BC6D0 800BBAD0 8FA4003C */ lw $a0, 0x3c($sp) -/* 0BC6D4 800BBAD4 02402825 */ move $a1, $s2 -/* 0BC6D8 800BBAD8 0C02EAA0 */ jal audio_dma_copy_immediate -/* 0BC6DC 800BBADC 02003025 */ move $a2, $s0 -/* 0BC6E0 800BBAE0 8FA90048 */ lw $t1, 0x48($sp) -/* 0BC6E4 800BBAE4 3C0A803B */ lui $t2, %hi(gSeqLoadStatus) # $t2, 0x803b -/* 0BC6E8 800BBAE8 254A0400 */ addiu $t2, %lo(gSeqLoadStatus) # addiu $t2, $t2, 0x400 -/* 0BC6EC 800BBAEC 012A1021 */ addu $v0, $t1, $t2 -/* 0BC6F0 800BBAF0 904B0000 */ lbu $t3, ($v0) -/* 0BC6F4 800BBAF4 24010005 */ li $at, 5 -/* 0BC6F8 800BBAF8 240C0002 */ li $t4, 2 -/* 0BC6FC 800BBAFC 51610022 */ beql $t3, $at, .L800BBB88 -/* 0BC700 800BBB00 02401025 */ move $v0, $s2 -/* 0BC704 800BBB04 1000001F */ b .L800BBB84 -/* 0BC708 800BBB08 A04C0000 */ sb $t4, ($v0) -.L800BBB0C: -/* 0BC70C 800BBB0C 02402825 */ move $a1, $s2 -/* 0BC710 800BBB10 0C02EAA0 */ jal audio_dma_copy_immediate -/* 0BC714 800BBB14 24060040 */ li $a2, 64 -/* 0BC718 800BBB18 262700D4 */ addiu $a3, $s1, 0xd4 -/* 0BC71C 800BBB1C 00E02025 */ move $a0, $a3 -/* 0BC720 800BBB20 AFA70034 */ sw $a3, 0x34($sp) -/* 0BC724 800BBB24 262500EC */ addiu $a1, $s1, 0xec -/* 0BC728 800BBB28 0C033358 */ jal osCreateMesgQueue -/* 0BC72C 800BBB2C 24060001 */ li $a2, 1 -/* 0BC730 800BBB30 922E0000 */ lbu $t6, ($s1) -/* 0BC734 800BBB34 8FA70034 */ lw $a3, 0x34($sp) -/* 0BC738 800BBB38 263900F0 */ addiu $t9, $s1, 0xf0 -/* 0BC73C 800BBB3C 35D80010 */ ori $t8, $t6, 0x10 -/* 0BC740 800BBB40 A2380000 */ sb $t8, ($s1) -/* 0BC744 800BBB44 8FA4003C */ lw $a0, 0x3c($sp) -/* 0BC748 800BBB48 AFB90010 */ sw $t9, 0x10($sp) -/* 0BC74C 800BBB4C 26450040 */ addiu $a1, $s2, 0x40 -/* 0BC750 800BBB50 2606FFC0 */ addiu $a2, $s0, -0x40 -/* 0BC754 800BBB54 0C02EABE */ jal audio_dma_copy_async -/* 0BC758 800BBB58 24840040 */ addiu $a0, $a0, 0x40 -/* 0BC75C 800BBB5C 8FA80048 */ lw $t0, 0x48($sp) -/* 0BC760 800BBB60 3C0F803B */ lui $t7, %hi(gSeqLoadStatus) # $t7, 0x803b -/* 0BC764 800BBB64 25EF0400 */ addiu $t7, %lo(gSeqLoadStatus) # addiu $t7, $t7, 0x400 -/* 0BC768 800BBB68 010F1021 */ addu $v0, $t0, $t7 -/* 0BC76C 800BBB6C 90490000 */ lbu $t1, ($v0) -/* 0BC770 800BBB70 24010005 */ li $at, 5 -/* 0BC774 800BBB74 240A0001 */ li $t2, 1 -/* 0BC778 800BBB78 51210003 */ beql $t1, $at, .L800BBB88 -/* 0BC77C 800BBB7C 02401025 */ move $v0, $s2 -/* 0BC780 800BBB80 A04A0000 */ sb $t2, ($v0) -.L800BBB84: -/* 0BC784 800BBB84 02401025 */ move $v0, $s2 -.L800BBB88: -/* 0BC788 800BBB88 8FBF002C */ lw $ra, 0x2c($sp) -/* 0BC78C 800BBB8C 8FB00020 */ lw $s0, 0x20($sp) -/* 0BC790 800BBB90 8FB10024 */ lw $s1, 0x24($sp) -/* 0BC794 800BBB94 8FB20028 */ lw $s2, 0x28($sp) -/* 0BC798 800BBB98 03E00008 */ jr $ra -/* 0BC79C 800BBB9C 27BD0048 */ addiu $sp, $sp, 0x48 diff --git a/asm/non_matchings/audio/load/func_800BBCD0.s b/asm/non_matchings/audio/load/func_800BBCD0.s deleted file mode 100644 index 564e4294a..000000000 --- a/asm/non_matchings/audio/load/func_800BBCD0.s +++ /dev/null @@ -1,72 +0,0 @@ -glabel func_800BBCD0 -/* 0BC8D0 800BBCD0 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 0BC8D4 800BBCD4 AFB50028 */ sw $s5, 0x28($sp) -/* 0BC8D8 800BBCD8 3C15803B */ lui $s5, %hi(gAlBankSets) # $s5, 0x803b -/* 0BC8DC 800BBCDC 26B57078 */ addiu $s5, %lo(gAlBankSets) # addiu $s5, $s5, 0x7078 -/* 0BC8E0 800BBCE0 8EA20000 */ lw $v0, ($s5) -/* 0BC8E4 800BBCE4 00047040 */ sll $t6, $a0, 1 -/* 0BC8E8 800BBCE8 AFBF002C */ sw $ra, 0x2c($sp) -/* 0BC8EC 800BBCEC AFB40024 */ sw $s4, 0x24($sp) -/* 0BC8F0 800BBCF0 AFB30020 */ sw $s3, 0x20($sp) -/* 0BC8F4 800BBCF4 AFB2001C */ sw $s2, 0x1c($sp) -/* 0BC8F8 800BBCF8 AFB10018 */ sw $s1, 0x18($sp) -/* 0BC8FC 800BBCFC AFB00014 */ sw $s0, 0x14($sp) -/* 0BC900 800BBD00 AFA5003C */ sw $a1, 0x3c($sp) -/* 0BC904 800BBD04 004E7821 */ addu $t7, $v0, $t6 -/* 0BC908 800BBD08 95F10000 */ lhu $s1, ($t7) -/* 0BC90C 800BBD0C 3C14803B */ lui $s4, %hi(gBankLoadStatus) # $s4, 0x803b -/* 0BC910 800BBD10 269403C0 */ addiu $s4, %lo(gBankLoadStatus) # addiu $s4, $s4, 0x3c0 -/* 0BC914 800BBD14 0222C021 */ addu $t8, $s1, $v0 -/* 0BC918 800BBD18 93120000 */ lbu $s2, ($t8) -/* 0BC91C 800BBD1C 26310001 */ addiu $s1, $s1, 1 -/* 0BC920 800BBD20 3239FFFF */ andi $t9, $s1, 0xffff -/* 0BC924 800BBD24 12400020 */ beqz $s2, .L800BBDA8 -/* 0BC928 800BBD28 03208825 */ move $s1, $t9 -/* 0BC92C 800BBD2C 24130001 */ li $s3, 1 -.L800BBD30: -/* 0BC930 800BBD30 8EA80000 */ lw $t0, ($s5) -/* 0BC934 800BBD34 02602025 */ move $a0, $s3 -/* 0BC938 800BBD38 24050002 */ li $a1, 2 -/* 0BC93C 800BBD3C 02284821 */ addu $t1, $s1, $t0 -/* 0BC940 800BBD40 91300000 */ lbu $s0, ($t1) -/* 0BC944 800BBD44 26310001 */ addiu $s1, $s1, 1 -/* 0BC948 800BBD48 322AFFFF */ andi $t2, $s1, 0xffff -/* 0BC94C 800BBD4C 02905821 */ addu $t3, $s4, $s0 -/* 0BC950 800BBD50 916C0000 */ lbu $t4, ($t3) -/* 0BC954 800BBD54 01408825 */ move $s1, $t2 -/* 0BC958 800BBD58 00001825 */ move $v1, $zero -/* 0BC95C 800BBD5C 298D0002 */ slti $t5, $t4, 2 -/* 0BC960 800BBD60 39AD0001 */ xori $t5, $t5, 1 -/* 0BC964 800BBD64 166D0005 */ bne $s3, $t5, .L800BBD7C -/* 0BC968 800BBD68 00000000 */ nop -/* 0BC96C 800BBD6C 0C02E6A4 */ jal get_bank_or_seq -/* 0BC970 800BBD70 02003025 */ move $a2, $s0 -/* 0BC974 800BBD74 10000001 */ b .L800BBD7C -/* 0BC978 800BBD78 00401825 */ move $v1, $v0 -.L800BBD7C: -/* 0BC97C 800BBD7C 14600004 */ bnez $v1, .L800BBD90 -/* 0BC980 800BBD80 02002025 */ move $a0, $s0 -/* 0BC984 800BBD84 0C02EDE0 */ jal func_800BB780 -/* 0BC988 800BBD88 24050002 */ li $a1, 2 -/* 0BC98C 800BBD8C 00401825 */ move $v1, $v0 -.L800BBD90: -/* 0BC990 800BBD90 2652FFFF */ addiu $s2, $s2, -1 -/* 0BC994 800BBD94 324E00FF */ andi $t6, $s2, 0xff -/* 0BC998 800BBD98 15C0FFE5 */ bnez $t6, .L800BBD30 -/* 0BC99C 800BBD9C 01C09025 */ move $s2, $t6 -/* 0BC9A0 800BBDA0 AFA30034 */ sw $v1, 0x34($sp) -/* 0BC9A4 800BBDA4 AFB00030 */ sw $s0, 0x30($sp) -.L800BBDA8: -/* 0BC9A8 800BBDA8 8FB00030 */ lw $s0, 0x30($sp) -/* 0BC9AC 800BBDAC 8FAF003C */ lw $t7, 0x3c($sp) -/* 0BC9B0 800BBDB0 8FA20034 */ lw $v0, 0x34($sp) -/* 0BC9B4 800BBDB4 A1F00000 */ sb $s0, ($t7) -/* 0BC9B8 800BBDB8 8FBF002C */ lw $ra, 0x2c($sp) -/* 0BC9BC 800BBDBC 8FB50028 */ lw $s5, 0x28($sp) -/* 0BC9C0 800BBDC0 8FB40024 */ lw $s4, 0x24($sp) -/* 0BC9C4 800BBDC4 8FB30020 */ lw $s3, 0x20($sp) -/* 0BC9C8 800BBDC8 8FB2001C */ lw $s2, 0x1c($sp) -/* 0BC9CC 800BBDCC 8FB10018 */ lw $s1, 0x18($sp) -/* 0BC9D0 800BBDD0 8FB00014 */ lw $s0, 0x14($sp) -/* 0BC9D4 800BBDD4 03E00008 */ jr $ra -/* 0BC9D8 800BBDD8 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/asm/non_matchings/audio/load/func_800BBDDC.s b/asm/non_matchings/audio/load/func_800BBDDC.s deleted file mode 100644 index 32493ad1a..000000000 --- a/asm/non_matchings/audio/load/func_800BBDDC.s +++ /dev/null @@ -1,75 +0,0 @@ -glabel func_800BBDDC -/* 0BC9DC 800BBDDC 3C0F803B */ lui $t7, %hi(D_803B707C) # $t7, 0x803b -/* 0BC9E0 800BBDE0 95EF707C */ lhu $t7, %lo(D_803B707C)($t7) -/* 0BC9E4 800BBDE4 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0BC9E8 800BBDE8 AFA5002C */ sw $a1, 0x2c($sp) -/* 0BC9EC 800BBDEC 30AE00FF */ andi $t6, $a1, 0xff -/* 0BC9F0 800BBDF0 008F082B */ sltu $at, $a0, $t7 -/* 0BC9F4 800BBDF4 01C02825 */ move $a1, $t6 -/* 0BC9F8 800BBDF8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BC9FC 800BBDFC 10200038 */ beqz $at, .L800BBEE0 -/* 0BCA00 800BBE00 00803025 */ move $a2, $a0 -/* 0BCA04 800BBE04 3C18803B */ lui $t8, %hi(D_803B706C) # $t8, 0x803b -/* 0BCA08 800BBE08 8F18706C */ lw $t8, %lo(D_803B706C)($t8) -/* 0BCA0C 800BBE0C 0004C8C0 */ sll $t9, $a0, 3 -/* 0BCA10 800BBE10 3C091971 */ lui $t1, (0x19710515 >> 16) # lui $t1, 0x1971 -/* 0BCA14 800BBE14 03191021 */ addu $v0, $t8, $t9 -/* 0BCA18 800BBE18 8C480008 */ lw $t0, 8($v0) -/* 0BCA1C 800BBE1C 3C0A800F */ lui $t2, %hi(D_800EA5DC) # $t2, 0x800f -/* 0BCA20 800BBE20 254AA5DC */ addiu $t2, %lo(D_800EA5DC) # addiu $t2, $t2, -0x5a24 -/* 0BCA24 800BBE24 15000002 */ bnez $t0, .L800BBE30 -/* 0BCA28 800BBE28 35290515 */ ori $t1, (0x19710515 & 0xFFFF) # ori $t1, $t1, 0x515 -/* 0BCA2C 800BBE2C 8C460004 */ lw $a2, 4($v0) -.L800BBE30: -/* 0BCA30 800BBE30 30AB0002 */ andi $t3, $a1, 2 -/* 0BCA34 800BBE34 AD490000 */ sw $t1, ($t2) -/* 0BCA38 800BBE38 11600008 */ beqz $t3, .L800BBE5C -/* 0BCA3C 800BBE3C 00A01825 */ move $v1, $a1 -/* 0BCA40 800BBE40 00C02025 */ move $a0, $a2 -/* 0BCA44 800BBE44 27A50023 */ addiu $a1, $sp, 0x23 -/* 0BCA48 800BBE48 AFA3001C */ sw $v1, 0x1c($sp) -/* 0BCA4C 800BBE4C 0C02EF34 */ jal func_800BBCD0 -/* 0BCA50 800BBE50 AFA60028 */ sw $a2, 0x28($sp) -/* 0BCA54 800BBE54 8FA3001C */ lw $v1, 0x1c($sp) -/* 0BCA58 800BBE58 8FA60028 */ lw $a2, 0x28($sp) -.L800BBE5C: -/* 0BCA5C 800BBE5C 306C0001 */ andi $t4, $v1, 1 -/* 0BCA60 800BBE60 1180001A */ beqz $t4, .L800BBECC -/* 0BCA64 800BBE64 3C0D803B */ lui $t5, %hi(gBankLoadStatus) # 0x803b -/* 0BCA68 800BBE68 01A66821 */ addu $t5, $t5, $a2 -/* 0BCA6C 800BBE6C 91AD03C0 */ lbu $t5, %lo(gBankLoadStatus)($t5) # 0x3c0($t5) -/* 0BCA70 800BBE70 24010001 */ li $at, 1 -/* 0BCA74 800BBE74 00002025 */ move $a0, $zero -/* 0BCA78 800BBE78 29AE0002 */ slti $t6, $t5, 2 -/* 0BCA7C 800BBE7C 39CE0001 */ xori $t6, $t6, 1 -/* 0BCA80 800BBE80 15C10007 */ bne $t6, $at, .L800BBEA0 -/* 0BCA84 800BBE84 00001825 */ move $v1, $zero -/* 0BCA88 800BBE88 24050002 */ li $a1, 2 -/* 0BCA8C 800BBE8C 0C02E6A4 */ jal get_bank_or_seq -/* 0BCA90 800BBE90 AFA60028 */ sw $a2, 0x28($sp) -/* 0BCA94 800BBE94 8FA60028 */ lw $a2, 0x28($sp) -/* 0BCA98 800BBE98 10000001 */ b .L800BBEA0 -/* 0BCA9C 800BBE9C 00401825 */ move $v1, $v0 -.L800BBEA0: -/* 0BCAA0 800BBEA0 1460000A */ bnez $v1, .L800BBECC -/* 0BCAA4 800BBEA4 00C02025 */ move $a0, $a2 -/* 0BCAA8 800BBEA8 0C02EE67 */ jal func_800BB99C -/* 0BCAAC 800BBEAC 24050002 */ li $a1, 2 -/* 0BCAB0 800BBEB0 14400006 */ bnez $v0, .L800BBECC -/* 0BCAB4 800BBEB4 3C0F7655 */ lui $t7, (0x76557364 >> 16) # lui $t7, 0x7655 -/* 0BCAB8 800BBEB8 3C18800F */ lui $t8, %hi(D_800EA5DC) # $t8, 0x800f -/* 0BCABC 800BBEBC 2718A5DC */ addiu $t8, %lo(D_800EA5DC) # addiu $t8, $t8, -0x5a24 -/* 0BCAC0 800BBEC0 35EF7364 */ ori $t7, (0x76557364 & 0xFFFF) # ori $t7, $t7, 0x7364 -/* 0BCAC4 800BBEC4 10000006 */ b .L800BBEE0 -/* 0BCAC8 800BBEC8 AF0F0000 */ sw $t7, ($t8) -.L800BBECC: -/* 0BCACC 800BBECC 3C197655 */ lui $t9, (0x76557364 >> 16) # lui $t9, 0x7655 -/* 0BCAD0 800BBED0 3C08800F */ lui $t0, %hi(D_800EA5DC) # $t0, 0x800f -/* 0BCAD4 800BBED4 2508A5DC */ addiu $t0, %lo(D_800EA5DC) # addiu $t0, $t0, -0x5a24 -/* 0BCAD8 800BBED8 37397364 */ ori $t9, (0x76557364 & 0xFFFF) # ori $t9, $t9, 0x7364 -/* 0BCADC 800BBEDC AD190000 */ sw $t9, ($t0) -.L800BBEE0: -/* 0BCAE0 800BBEE0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BCAE4 800BBEE4 27BD0028 */ addiu $sp, $sp, 0x28 -/* 0BCAE8 800BBEE8 03E00008 */ jr $ra -/* 0BCAEC 800BBEEC 00000000 */ nop diff --git a/asm/non_matchings/audio/load/func_800BBF44.s b/asm/non_matchings/audio/load/func_800BBF44.s deleted file mode 100644 index cf6976308..000000000 --- a/asm/non_matchings/audio/load/func_800BBF44.s +++ /dev/null @@ -1,113 +0,0 @@ -glabel func_800BBF44 -/* 0BCB44 800BBF44 3C0E803B */ lui $t6, %hi(D_803B707C) # $t6, 0x803b -/* 0BCB48 800BBF48 95CE707C */ lhu $t6, %lo(D_803B707C)($t6) -/* 0BCB4C 800BBF4C 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0BCB50 800BBF50 AFB10018 */ sw $s1, 0x18($sp) -/* 0BCB54 800BBF54 00AE082B */ sltu $at, $a1, $t6 -/* 0BCB58 800BBF58 00A08825 */ move $s1, $a1 -/* 0BCB5C 800BBF5C AFBF001C */ sw $ra, 0x1c($sp) -/* 0BCB60 800BBF60 AFB00014 */ sw $s0, 0x14($sp) -/* 0BCB64 800BBF64 AFA40040 */ sw $a0, 0x40($sp) -/* 0BCB68 800BBF68 10200057 */ beqz $at, .L800BC0C8 -/* 0BCB6C 800BBF6C AFA60048 */ sw $a2, 0x48($sp) -/* 0BCB70 800BBF70 3C0F803B */ lui $t7, %hi(D_803B706C) # $t7, 0x803b -/* 0BCB74 800BBF74 8DEF706C */ lw $t7, %lo(D_803B706C)($t7) -/* 0BCB78 800BBF78 8FA80040 */ lw $t0, 0x40($sp) -/* 0BCB7C 800BBF7C 0005C0C0 */ sll $t8, $a1, 3 -/* 0BCB80 800BBF80 01F81021 */ addu $v0, $t7, $t8 -/* 0BCB84 800BBF84 8C590008 */ lw $t9, 8($v0) -/* 0BCB88 800BBF88 00084880 */ sll $t1, $t0, 2 -/* 0BCB8C 800BBF8C 01284821 */ addu $t1, $t1, $t0 -/* 0BCB90 800BBF90 17200002 */ bnez $t9, .L800BBF9C -/* 0BCB94 800BBF94 000948C0 */ sll $t1, $t1, 3 -/* 0BCB98 800BBF98 8C510004 */ lw $s1, 4($v0) -.L800BBF9C: -/* 0BCB9C 800BBF9C 01284821 */ addu $t1, $t1, $t0 -/* 0BCBA0 800BBFA0 3C0A803B */ lui $t2, %hi(gSequencePlayers) # $t2, 0x803b -/* 0BCBA4 800BBFA4 254A1510 */ addiu $t2, %lo(gSequencePlayers) # addiu $t2, $t2, 0x1510 -/* 0BCBA8 800BBFA8 000948C0 */ sll $t1, $t1, 3 -/* 0BCBAC 800BBFAC 012A8021 */ addu $s0, $t1, $t2 -/* 0BCBB0 800BBFB0 0C02FBCB */ jal sequence_player_disable -/* 0BCBB4 800BBFB4 02002025 */ move $a0, $s0 -/* 0BCBB8 800BBFB8 8FAB0048 */ lw $t3, 0x48($sp) -/* 0BCBBC 800BBFBC 27A50028 */ addiu $a1, $sp, 0x28 -/* 0BCBC0 800BBFC0 27A6002C */ addiu $a2, $sp, 0x2c -/* 0BCBC4 800BBFC4 11600018 */ beqz $t3, .L800BC028 -/* 0BCBC8 800BBFC8 02202025 */ move $a0, $s1 -/* 0BCBCC 800BBFCC AFA0002C */ sw $zero, 0x2c($sp) -/* 0BCBD0 800BBFD0 AFA00028 */ sw $zero, 0x28($sp) -/* 0BCBD4 800BBFD4 0C02EEE8 */ jal get_missing_bank -/* 0BCBD8 800BBFD8 02202025 */ move $a0, $s1 -/* 0BCBDC 800BBFDC 8FAC002C */ lw $t4, 0x2c($sp) -/* 0BCBE0 800BBFE0 24010001 */ li $at, 1 -/* 0BCBE4 800BBFE4 00402025 */ move $a0, $v0 -/* 0BCBE8 800BBFE8 15810009 */ bne $t4, $at, .L800BC010 -/* 0BCBEC 800BBFEC 26050005 */ addiu $a1, $s0, 5 -/* 0BCBF0 800BBFF0 24050002 */ li $a1, 2 -/* 0BCBF4 800BBFF4 02003025 */ move $a2, $s0 -/* 0BCBF8 800BBFF8 0C02EE19 */ jal func_800BB864 -/* 0BCBFC 800BBFFC AFA20024 */ sw $v0, 0x24($sp) -/* 0BCC00 800BC000 10400031 */ beqz $v0, .L800BC0C8 -/* 0BCC04 800BC004 8FA40024 */ lw $a0, 0x24($sp) -/* 0BCC08 800BC008 1000000B */ b .L800BC038 -/* 0BCC0C 800BC00C A2040005 */ sb $a0, 5($s0) -.L800BC010: -/* 0BCC10 800BC010 0C02EF34 */ jal func_800BBCD0 -/* 0BCC14 800BC014 02202025 */ move $a0, $s1 -/* 0BCC18 800BC018 54400008 */ bnel $v0, $zero, .L800BC03C -/* 0BCC1C 800BC01C A2110004 */ sb $s1, 4($s0) -/* 0BCC20 800BC020 1000002A */ b .L800BC0CC -/* 0BCC24 800BC024 8FBF001C */ lw $ra, 0x1c($sp) -.L800BC028: -/* 0BCC28 800BC028 0C02EF34 */ jal func_800BBCD0 -/* 0BCC2C 800BC02C 26050005 */ addiu $a1, $s0, 5 -/* 0BCC30 800BC030 50400026 */ beql $v0, $zero, .L800BC0CC -/* 0BCC34 800BC034 8FBF001C */ lw $ra, 0x1c($sp) -.L800BC038: -/* 0BCC38 800BC038 A2110004 */ sb $s1, 4($s0) -.L800BC03C: -/* 0BCC3C 800BC03C 00002025 */ move $a0, $zero -/* 0BCC40 800BC040 24050002 */ li $a1, 2 -/* 0BCC44 800BC044 0C02E6A4 */ jal get_bank_or_seq -/* 0BCC48 800BC048 02203025 */ move $a2, $s1 -/* 0BCC4C 800BC04C 14400013 */ bnez $v0, .L800BC09C -/* 0BCC50 800BC050 00401825 */ move $v1, $v0 -/* 0BCC54 800BC054 8E0D0000 */ lw $t5, ($s0) -/* 0BCC58 800BC058 8FB80048 */ lw $t8, 0x48($sp) -/* 0BCC5C 800BC05C 000D78C0 */ sll $t7, $t5, 3 -/* 0BCC60 800BC060 05E2001A */ bltzl $t7, .L800BC0CC -/* 0BCC64 800BC064 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BCC68 800BC068 13000007 */ beqz $t8, .L800BC088 -/* 0BCC6C 800BC06C 02202025 */ move $a0, $s1 -/* 0BCC70 800BC070 02202025 */ move $a0, $s1 -/* 0BCC74 800BC074 24050002 */ li $a1, 2 -/* 0BCC78 800BC078 0C02EE94 */ jal func_800BBA50 -/* 0BCC7C 800BC07C 02003025 */ move $a2, $s0 -/* 0BCC80 800BC080 10000004 */ b .L800BC094 -/* 0BCC84 800BC084 00401825 */ move $v1, $v0 -.L800BC088: -/* 0BCC88 800BC088 0C02EE67 */ jal func_800BB99C -/* 0BCC8C 800BC08C 24050002 */ li $a1, 2 -/* 0BCC90 800BC090 00401825 */ move $v1, $v0 -.L800BC094: -/* 0BCC94 800BC094 5040000D */ beql $v0, $zero, .L800BC0CC -/* 0BCC98 800BC098 8FBF001C */ lw $ra, 0x1c($sp) -.L800BC09C: -/* 0BCC9C 800BC09C 8FA40040 */ lw $a0, 0x40($sp) -/* 0BCCA0 800BC0A0 0C03046C */ jal init_sequence_player -/* 0BCCA4 800BC0A4 AFA3003C */ sw $v1, 0x3c($sp) -/* 0BCCA8 800BC0A8 8FA3003C */ lw $v1, 0x3c($sp) -/* 0BCCAC 800BC0AC 92080000 */ lbu $t0, ($s0) -/* 0BCCB0 800BC0B0 A2000088 */ sb $zero, 0x88($s0) -/* 0BCCB4 800BC0B4 A600000E */ sh $zero, 0xe($s0) -/* 0BCCB8 800BC0B8 35090080 */ ori $t1, $t0, 0x80 -/* 0BCCBC 800BC0BC A2090000 */ sb $t1, ($s0) -/* 0BCCC0 800BC0C0 AE030014 */ sw $v1, 0x14($s0) -/* 0BCCC4 800BC0C4 AE030070 */ sw $v1, 0x70($s0) -.L800BC0C8: -/* 0BCCC8 800BC0C8 8FBF001C */ lw $ra, 0x1c($sp) -.L800BC0CC: -/* 0BCCCC 800BC0CC 8FB00014 */ lw $s0, 0x14($sp) -/* 0BCCD0 800BC0D0 8FB10018 */ lw $s1, 0x18($sp) -/* 0BCCD4 800BC0D4 03E00008 */ jr $ra -/* 0BCCD8 800BC0D8 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/audio/port_eu/create_next_audio_frame_task.s b/asm/non_matchings/audio/port_eu/create_next_audio_frame_task.s index 78e72eb91..8e9d45b98 100644 --- a/asm/non_matchings/audio/port_eu/create_next_audio_frame_task.s +++ b/asm/non_matchings/audio/port_eu/create_next_audio_frame_task.s @@ -86,10 +86,10 @@ glabel create_next_audio_frame_task /* 0CC064 800CB464 00791821 */ addu $v1, $v1, $t9 /* 0CC068 800CB468 8463718C */ lh $v1, %lo(D_803B718C)($v1) # 0x718c($v1) /* 0CC06C 800CB46C 00104080 */ sll $t0, $s0, 2 -/* 0CC070 800CB470 3C04803B */ lui $a0, %hi(D_803B7180) # 0x803b +/* 0CC070 800CB470 3C04803B */ lui $a0, %hi(gAiBuffers) # 0x803b /* 0CC074 800CB474 10600004 */ beqz $v1, .L800CB488 /* 0CC078 800CB478 00882021 */ addu $a0, $a0, $t0 -/* 0CC07C 800CB47C 8C847180 */ lw $a0, %lo(D_803B7180)($a0) # 0x7180($a0) +/* 0CC07C 800CB47C 8C847180 */ lw $a0, %lo(gAiBuffers)($a0) # 0x7180($a0) /* 0CC080 800CB480 0C03443C */ jal osAiSetNextBuffer /* 0CC084 800CB484 00032880 */ sll $a1, $v1, 2 .L800CB488: @@ -152,58 +152,58 @@ glabel create_next_audio_frame_task /* 0CC14C 800CB54C 00003025 */ move $a2, $zero /* 0CC150 800CB550 2401FFFF */ li $at, -1 /* 0CC154 800CB554 10410007 */ beq $v0, $at, .L800CB574 -/* 0CC158 800CB558 3C10803B */ lui $s0, %hi(D_803B0500) # $s0, 0x803b +/* 0CC158 800CB558 3C10803B */ lui $s0, %hi(gAudioResetStatus) # $s0, 0x803b /* 0CC15C 800CB55C 8FCA0058 */ lw $t2, 0x58($fp) -/* 0CC160 800CB560 3C01803B */ lui $at, %hi(D_803B0501) # $at, 0x803b -/* 0CC164 800CB564 26100500 */ addiu $s0, %lo(D_803B0500) # addiu $s0, $s0, 0x500 +/* 0CC160 800CB560 3C01803B */ lui $at, %hi(gAudioResetPresetIdToLoad) # $at, 0x803b +/* 0CC164 800CB564 26100500 */ addiu $s0, %lo(gAudioResetStatus) # addiu $s0, $s0, 0x500 /* 0CC168 800CB568 240B0005 */ li $t3, 5 -/* 0CC16C 800CB56C A02A0501 */ sb $t2, %lo(D_803B0501)($at) +/* 0CC16C 800CB56C A02A0501 */ sb $t2, %lo(gAudioResetPresetIdToLoad)($at) /* 0CC170 800CB570 A20B0000 */ sb $t3, ($s0) .L800CB574: -/* 0CC174 800CB574 3C10803B */ lui $s0, %hi(D_803B0500) # $s0, 0x803b -/* 0CC178 800CB578 26100500 */ addiu $s0, %lo(D_803B0500) # addiu $s0, $s0, 0x500 +/* 0CC174 800CB574 3C10803B */ lui $s0, %hi(gAudioResetStatus) # $s0, 0x803b +/* 0CC178 800CB578 26100500 */ addiu $s0, %lo(gAudioResetStatus) # addiu $s0, $s0, 0x500 /* 0CC17C 800CB57C 920C0000 */ lbu $t4, ($s0) /* 0CC180 800CB580 1180000F */ beqz $t4, .L800CB5C0 /* 0CC184 800CB584 00000000 */ nop -/* 0CC188 800CB588 0C02E803 */ jal func_800BA00C +/* 0CC188 800CB588 0C02E803 */ jal audio_shut_down_and_reset_step /* 0CC18C 800CB58C 00000000 */ nop /* 0CC190 800CB590 1440000B */ bnez $v0, .L800CB5C0 /* 0CC194 800CB594 00000000 */ nop /* 0CC198 800CB598 920D0000 */ lbu $t5, ($s0) /* 0CC19C 800CB59C 3C04800F */ lui $a0, %hi(D_800EA3B4) # $a0, 0x800f -/* 0CC1A0 800CB5A0 3C05803B */ lui $a1, %hi(D_803B0501) # $a1, 0x803b +/* 0CC1A0 800CB5A0 3C05803B */ lui $a1, %hi(gAudioResetPresetIdToLoad) # $a1, 0x803b /* 0CC1A4 800CB5A4 15A00004 */ bnez $t5, .L800CB5B8 /* 0CC1A8 800CB5A8 00003025 */ move $a2, $zero /* 0CC1AC 800CB5AC 8C84A3B4 */ lw $a0, %lo(D_800EA3B4)($a0) /* 0CC1B0 800CB5B0 0C033630 */ jal osSendMesg -/* 0CC1B4 800CB5B4 90A50501 */ lbu $a1, %lo(D_803B0501)($a1) +/* 0CC1B4 800CB5B4 90A50501 */ lbu $a1, %lo(gAudioResetPresetIdToLoad)($a1) .L800CB5B8: /* 0CC1B8 800CB5B8 1000008F */ b .L800CB7F8 /* 0CC1BC 800CB5BC 00001025 */ move $v0, $zero .L800CB5C0: /* 0CC1C0 800CB5C0 3C02803B */ lui $v0, %hi(D_803B70C0) # $v0, 0x803b /* 0CC1C4 800CB5C4 8C4270C0 */ lw $v0, %lo(D_803B70C0)($v0) -/* 0CC1C8 800CB5C8 3C0F803B */ lui $t7, %hi(D_803B70D8) # $t7, 0x803b -/* 0CC1CC 800CB5CC 3C12803B */ lui $s2, %hi(D_803B70D4) # $s2, 0x803b +/* 0CC1C8 800CB5C8 3C0F803B */ lui $t7, %hi(gAudioTasks) # $t7, 0x803b +/* 0CC1CC 800CB5CC 3C12803B */ lui $s2, %hi(gAudioTask) # $s2, 0x803b /* 0CC1D0 800CB5D0 00027080 */ sll $t6, $v0, 2 /* 0CC1D4 800CB5D4 01C27021 */ addu $t6, $t6, $v0 /* 0CC1D8 800CB5D8 000E7100 */ sll $t6, $t6, 4 -/* 0CC1DC 800CB5DC 25EF70D8 */ addiu $t7, %lo(D_803B70D8) # addiu $t7, $t7, 0x70d8 -/* 0CC1E0 800CB5E0 265270D4 */ addiu $s2, %lo(D_803B70D4) # addiu $s2, $s2, 0x70d4 +/* 0CC1DC 800CB5DC 25EF70D8 */ addiu $t7, %lo(gAudioTasks) # addiu $t7, $t7, 0x70d8 +/* 0CC1E0 800CB5E0 265270D4 */ addiu $s2, %lo(gAudioTask) # addiu $s2, $s2, 0x70d4 /* 0CC1E4 800CB5E4 01CFC021 */ addu $t8, $t6, $t7 /* 0CC1E8 800CB5E8 AE580000 */ sw $t8, ($s2) -/* 0CC1EC 800CB5EC 3C08803B */ lui $t0, %hi(D_803B70C8) # 0x803b +/* 0CC1EC 800CB5EC 3C08803B */ lui $t0, %hi(gAudioCmdBuffers) # 0x803b /* 0CC1F0 800CB5F0 3C10803B */ lui $s0, %hi(D_803B70C4) # $s0, 0x803b /* 0CC1F4 800CB5F4 0002C880 */ sll $t9, $v0, 2 /* 0CC1F8 800CB5F8 8E1070C4 */ lw $s0, %lo(D_803B70C4)($s0) /* 0CC1FC 800CB5FC 01194021 */ addu $t0, $t0, $t9 -/* 0CC200 800CB600 8D0870C8 */ lw $t0, %lo(D_803B70C8)($t0) # 0x70c8($t0) -/* 0CC204 800CB604 3C0A803B */ lui $t2, %hi(D_803B7180) # $t2, 0x803b -/* 0CC208 800CB608 3C01803B */ lui $at, %hi(D_803B70D0) # $at, 0x803b -/* 0CC20C 800CB60C 254A7180 */ addiu $t2, %lo(D_803B7180) # addiu $t2, $t2, 0x7180 +/* 0CC200 800CB600 8D0870C8 */ lw $t0, %lo(gAudioCmdBuffers)($t0) # 0x70c8($t0) +/* 0CC204 800CB604 3C0A803B */ lui $t2, %hi(gAiBuffers) # $t2, 0x803b +/* 0CC208 800CB608 3C01803B */ lui $at, %hi(gAudioCmd) # $at, 0x803b +/* 0CC20C 800CB60C 254A7180 */ addiu $t2, %lo(gAiBuffers) # addiu $t2, $t2, 0x7180 /* 0CC210 800CB610 00104880 */ sll $t1, $s0, 2 /* 0CC214 800CB614 012A3821 */ addu $a3, $t1, $t2 -/* 0CC218 800CB618 AC2870D0 */ sw $t0, %lo(D_803B70D0)($at) +/* 0CC218 800CB618 AC2870D0 */ sw $t0, %lo(gAudioCmd)($at) /* 0CC21C 800CB61C 8CEB0000 */ lw $t3, ($a3) /* 0CC220 800CB620 3C05803B */ lui $a1, %hi(gAudioBufferParameters) # $a1, 0x803b /* 0CC224 800CB624 24A57088 */ addiu $a1, %lo(gAudioBufferParameters) # addiu $a1, $a1, 0x7088 @@ -239,10 +239,10 @@ glabel create_next_audio_frame_task /* 0CC294 800CB694 8C84A3AC */ lw $a0, %lo(D_800EA3AC)($a0) /* 0CC298 800CB698 0C0335D4 */ jal osRecvMesg /* 0CC29C 800CB69C AFC70040 */ sw $a3, 0x40($fp) -/* 0CC2A0 800CB6A0 3C10803B */ lui $s0, %hi(D_803B70D0) # $s0, 0x803b +/* 0CC2A0 800CB6A0 3C10803B */ lui $s0, %hi(gAudioCmd) # $s0, 0x803b /* 0CC2A4 800CB6A4 2401FFFF */ li $at, -1 /* 0CC2A8 800CB6A8 10410003 */ beq $v0, $at, .L800CB6B8 -/* 0CC2AC 800CB6AC 261070D0 */ addiu $s0, %lo(D_803B70D0) # addiu $s0, $s0, 0x70d0 +/* 0CC2AC 800CB6AC 261070D0 */ addiu $s0, %lo(gAudioCmd) # addiu $s0, $s0, 0x70d0 /* 0CC2B0 800CB6B0 0C032F2C */ jal func_800CBCB0 /* 0CC2B4 800CB6B4 8FC40054 */ lw $a0, 0x54($fp) .L800CB6B8: @@ -297,7 +297,7 @@ glabel create_next_audio_frame_task /* 0CC378 800CB778 2508B830 */ addiu $t0, %lo(aspMainTextStart) # addiu $t0, $t0, -0x47d0 /* 0CC37C 800CB77C 24091000 */ li $t1, 4096 /* 0CC380 800CB780 000C68C0 */ sll $t5, $t4, 3 -/* 0CC384 800CB784 3C18803B */ lui $t8, %hi(D_803B70C8) # 0x803b +/* 0CC384 800CB784 3C18803B */ lui $t8, %hi(gAudioCmdBuffers) # 0x803b /* 0CC388 800CB788 00107080 */ sll $t6, $s0, 2 /* 0CC38C 800CB78C 030EC021 */ addu $t8, $t8, $t6 /* 0CC390 800CB790 AC600004 */ sw $zero, 4($v1) @@ -311,7 +311,7 @@ glabel create_next_audio_frame_task /* 0CC3B0 800CB7B0 AC600024 */ sw $zero, 0x24($v1) /* 0CC3B4 800CB7B4 AC600028 */ sw $zero, 0x28($v1) /* 0CC3B8 800CB7B8 AC60002C */ sw $zero, 0x2c($v1) -/* 0CC3BC 800CB7BC 8F1870C8 */ lw $t8, %lo(D_803B70C8)($t8) # 0x70c8($t8) +/* 0CC3BC 800CB7BC 8F1870C8 */ lw $t8, %lo(gAudioCmdBuffers)($t8) # 0x70c8($t8) /* 0CC3C0 800CB7C0 3C08800F */ lui $t0, %hi(D_800EA484) # $t0, 0x800f /* 0CC3C4 800CB7C4 AC780030 */ sw $t8, 0x30($v1) /* 0CC3C8 800CB7C8 8FD90070 */ lw $t9, 0x70($fp) diff --git a/asm/non_matchings/audio/port_eu/func_800CB818.s b/asm/non_matchings/audio/port_eu/func_800CB818.s deleted file mode 100644 index 0b06b7947..000000000 --- a/asm/non_matchings/audio/port_eu/func_800CB818.s +++ /dev/null @@ -1,135 +0,0 @@ -glabel func_800CB818 -/* 0CC418 800CB818 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0CC41C 800CB81C AFBF002C */ sw $ra, 0x2c($sp) -/* 0CC420 800CB820 AFBE0028 */ sw $fp, 0x28($sp) -/* 0CC424 800CB824 90820000 */ lbu $v0, ($a0) -/* 0CC428 800CB828 24010081 */ li $at, 129 -/* 0CC42C 800CB82C 03A0F025 */ move $fp, $sp -/* 0CC430 800CB830 10410014 */ beq $v0, $at, .L800CB884 -/* 0CC434 800CB834 00803825 */ move $a3, $a0 -/* 0CC438 800CB838 24010082 */ li $at, 130 -/* 0CC43C 800CB83C 10410016 */ beq $v0, $at, .L800CB898 -/* 0CC440 800CB840 24010083 */ li $at, 131 -/* 0CC444 800CB844 1041001F */ beq $v0, $at, .L800CB8C4 -/* 0CC448 800CB848 24010088 */ li $at, 136 -/* 0CC44C 800CB84C 10410012 */ beq $v0, $at, .L800CB898 -/* 0CC450 800CB850 240100F0 */ li $at, 240 -/* 0CC454 800CB854 10410033 */ beq $v0, $at, .L800CB924 -/* 0CC458 800CB858 240100F1 */ li $at, 241 -/* 0CC45C 800CB85C 10410035 */ beq $v0, $at, .L800CB934 -/* 0CC460 800CB860 3C03803B */ lui $v1, %hi(gSequencePlayers+0x148) # 0x803b -/* 0CC464 800CB864 240100F2 */ li $at, 242 -/* 0CC468 800CB868 10410046 */ beq $v0, $at, .L800CB984 -/* 0CC46C 800CB86C 3C03803B */ lui $v1, %hi(gSequencePlayers+0x148) # $v1, 0x803b -/* 0CC470 800CB870 240100F3 */ li $at, 243 -/* 0CC474 800CB874 5041005C */ beql $v0, $at, .L800CB9E8 -/* 0CC478 800CB878 90E40001 */ lbu $a0, 1($a3) -/* 0CC47C 800CB87C 1000005E */ b .L800CB9F8 -/* 0CC480 800CB880 8FDF002C */ lw $ra, 0x2c($fp) -.L800CB884: -/* 0CC484 800CB884 90E40002 */ lbu $a0, 2($a3) -/* 0CC488 800CB888 0C02EF77 */ jal func_800BBDDC -/* 0CC48C 800CB88C 24050003 */ li $a1, 3 -/* 0CC490 800CB890 10000059 */ b .L800CB9F8 -/* 0CC494 800CB894 8FDF002C */ lw $ra, 0x2c($fp) -.L800CB898: -/* 0CC498 800CB898 90E40001 */ lbu $a0, 1($a3) -/* 0CC49C 800CB89C 90E50002 */ lbu $a1, 2($a3) -/* 0CC4A0 800CB8A0 90E60003 */ lbu $a2, 3($a3) -/* 0CC4A4 800CB8A4 0C02EFBC */ jal func_800BBEF0 -/* 0CC4A8 800CB8A8 AFC70030 */ sw $a3, 0x30($fp) -/* 0CC4AC 800CB8AC 8FC70030 */ lw $a3, 0x30($fp) -/* 0CC4B0 800CB8B0 90E40001 */ lbu $a0, 1($a3) -/* 0CC4B4 800CB8B4 0C032E99 */ jal func_800CBA64 -/* 0CC4B8 800CB8B8 8CE50004 */ lw $a1, 4($a3) -/* 0CC4BC 800CB8BC 1000004E */ b .L800CB9F8 -/* 0CC4C0 800CB8C0 8FDF002C */ lw $ra, 0x2c($fp) -.L800CB8C4: -/* 0CC4C4 800CB8C4 90E20001 */ lbu $v0, 1($a3) -/* 0CC4C8 800CB8C8 3C0F803B */ lui $t7, %hi(gSequencePlayers) # $t7, 0x803b -/* 0CC4CC 800CB8CC 25EF1510 */ addiu $t7, %lo(gSequencePlayers) # addiu $t7, $t7, 0x1510 -/* 0CC4D0 800CB8D0 00027080 */ sll $t6, $v0, 2 -/* 0CC4D4 800CB8D4 01C27021 */ addu $t6, $t6, $v0 -/* 0CC4D8 800CB8D8 000E70C0 */ sll $t6, $t6, 3 -/* 0CC4DC 800CB8DC 01C27021 */ addu $t6, $t6, $v0 -/* 0CC4E0 800CB8E0 000E70C0 */ sll $t6, $t6, 3 -/* 0CC4E4 800CB8E4 01CF2021 */ addu $a0, $t6, $t7 -/* 0CC4E8 800CB8E8 8C980000 */ lw $t8, ($a0) -/* 0CC4EC 800CB8EC 0018CFC2 */ srl $t9, $t8, 0x1f -/* 0CC4F0 800CB8F0 53200041 */ beql $t9, $zero, .L800CB9F8 -/* 0CC4F4 800CB8F4 8FDF002C */ lw $ra, 0x2c($fp) -/* 0CC4F8 800CB8F8 8CE50004 */ lw $a1, 4($a3) -/* 0CC4FC 800CB8FC 14A00005 */ bnez $a1, .L800CB914 -/* 0CC500 800CB900 00000000 */ nop -/* 0CC504 800CB904 0C02FBCB */ jal sequence_player_disable -/* 0CC508 800CB908 00000000 */ nop -/* 0CC50C 800CB90C 1000003A */ b .L800CB9F8 -/* 0CC510 800CB910 8FDF002C */ lw $ra, 0x2c($fp) -.L800CB914: -/* 0CC514 800CB914 0C032E82 */ jal seq_player_fade_to_zero_volume -/* 0CC518 800CB918 00402025 */ move $a0, $v0 -/* 0CC51C 800CB91C 10000036 */ b .L800CB9F8 -/* 0CC520 800CB920 8FDF002C */ lw $ra, 0x2c($fp) -.L800CB924: -/* 0CC524 800CB924 8CE80004 */ lw $t0, 4($a3) -/* 0CC528 800CB928 3C01803B */ lui $at, %hi(gAudioLibSoundMode) # $at, 0x803b -/* 0CC52C 800CB92C 10000031 */ b .L800CB9F4 -/* 0CC530 800CB930 A02870B6 */ sb $t0, %lo(gAudioLibSoundMode)($at) -.L800CB934: -/* 0CC534 800CB934 3C02803B */ lui $v0, %hi(gSequencePlayers) # $v0, 0x803b -/* 0CC538 800CB938 904B1510 */ lbu $t3, %lo(gSequencePlayers)($v0) -/* 0CC53C 800CB93C 90681658 */ lbu $t0, %lo(gSequencePlayers+0x148)($v1) -/* 0CC540 800CB940 3C04803B */ lui $a0, %hi(gSequencePlayers+0x290) # $a0, 0x803b -/* 0CC544 800CB944 3C05803B */ lui $a1, %hi(gSequencePlayers+0x3D8) # $a1, 0x803b -/* 0CC548 800CB948 90AA18E8 */ lbu $t2, %lo(gSequencePlayers+0x3D8)($a1) -/* 0CC54C 800CB94C 908E17A0 */ lbu $t6, %lo(gSequencePlayers+0x290)($a0) -/* 0CC550 800CB950 3C01803B */ lui $at, %hi(gSequencePlayers) # $at, 0x803b -/* 0CC554 800CB954 35620024 */ ori $v0, $t3, 0x24 -/* 0CC558 800CB958 A0221510 */ sb $v0, %lo(gSequencePlayers)($at) -/* 0CC55C 800CB95C 3C01803B */ lui $at, %hi(gSequencePlayers+0x148) # $at, 0x803b -/* 0CC560 800CB960 35030024 */ ori $v1, $t0, 0x24 -/* 0CC564 800CB964 A0231658 */ sb $v1, %lo(gSequencePlayers+0x148)($at) -/* 0CC568 800CB968 3C01803B */ lui $at, %hi(gSequencePlayers+0x290) # $at, 0x803b -/* 0CC56C 800CB96C 35D80024 */ ori $t8, $t6, 0x24 -/* 0CC570 800CB970 A03817A0 */ sb $t8, %lo(gSequencePlayers+0x290)($at) -/* 0CC574 800CB974 3C01803B */ lui $at, %hi(gSequencePlayers+0x3D8) # $at, 0x803b -/* 0CC578 800CB978 354C0024 */ ori $t4, $t2, 0x24 -/* 0CC57C 800CB97C 1000001D */ b .L800CB9F4 -/* 0CC580 800CB980 A02C18E8 */ sb $t4, %lo(gSequencePlayers+0x3D8)($at) -.L800CB984: -/* 0CC584 800CB984 3C02803B */ lui $v0, %hi(gSequencePlayers) # $v0, 0x803b -/* 0CC588 800CB988 90421510 */ lbu $v0, %lo(gSequencePlayers)($v0) -/* 0CC58C 800CB98C 90631658 */ lbu $v1, %lo(gSequencePlayers+0x148)($v1) -/* 0CC590 800CB990 3C04803B */ lui $a0, %hi(gSequencePlayers+0x290) # $a0, 0x803b -/* 0CC594 800CB994 908417A0 */ lbu $a0, %lo(gSequencePlayers+0x290)($a0) -/* 0CC598 800CB998 3C05803B */ lui $a1, %hi(gSequencePlayers+0x3D8) # $a1, 0x803b -/* 0CC59C 800CB99C 304FFFDF */ andi $t7, $v0, 0xffdf -/* 0CC5A0 800CB9A0 90A518E8 */ lbu $a1, %lo(gSequencePlayers+0x3D8)($a1) -/* 0CC5A4 800CB9A4 3C01803B */ lui $at, %hi(gSequencePlayers) # $at, 0x803b -/* 0CC5A8 800CB9A8 35E20004 */ ori $v0, $t7, 4 -/* 0CC5AC 800CB9AC A0221510 */ sb $v0, %lo(gSequencePlayers)($at) -/* 0CC5B0 800CB9B0 306AFFDF */ andi $t2, $v1, 0xffdf -/* 0CC5B4 800CB9B4 35430004 */ ori $v1, $t2, 4 -/* 0CC5B8 800CB9B8 3C01803B */ lui $at, %hi(gSequencePlayers+0x148) # $at, 0x803b -/* 0CC5BC 800CB9BC A0231658 */ sb $v1, %lo(gSequencePlayers+0x148)($at) -/* 0CC5C0 800CB9C0 308FFFDF */ andi $t7, $a0, 0xffdf -/* 0CC5C4 800CB9C4 35F90004 */ ori $t9, $t7, 4 -/* 0CC5C8 800CB9C8 3C01803B */ lui $at, %hi(gSequencePlayers+0x290) # $at, 0x803b -/* 0CC5CC 800CB9CC A03917A0 */ sb $t9, %lo(gSequencePlayers+0x290)($at) -/* 0CC5D0 800CB9D0 30AAFFDF */ andi $t2, $a1, 0xffdf -/* 0CC5D4 800CB9D4 354C0004 */ ori $t4, $t2, 4 -/* 0CC5D8 800CB9D8 3C01803B */ lui $at, %hi(gSequencePlayers+0x3D8) # $at, 0x803b -/* 0CC5DC 800CB9DC 10000005 */ b .L800CB9F4 -/* 0CC5E0 800CB9E0 A02C18E8 */ sb $t4, %lo(gSequencePlayers+0x3D8)($at) -/* 0CC5E4 800CB9E4 90E40001 */ lbu $a0, 1($a3) -.L800CB9E8: -/* 0CC5E8 800CB9E8 90E50002 */ lbu $a1, 2($a3) -/* 0CC5EC 800CB9EC 0C02ECE2 */ jal func_800BB388 -/* 0CC5F0 800CB9F0 90E60003 */ lbu $a2, 3($a3) -.L800CB9F4: -/* 0CC5F4 800CB9F4 8FDF002C */ lw $ra, 0x2c($fp) -.L800CB9F8: -/* 0CC5F8 800CB9F8 03C0E825 */ move $sp, $fp -/* 0CC5FC 800CB9FC 8FDE0028 */ lw $fp, 0x28($fp) -/* 0CC600 800CBA00 03E00008 */ jr $ra -/* 0CC604 800CBA04 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/audio/port_eu/func_800CBCB0.s b/asm/non_matchings/audio/port_eu/func_800CBCB0.s index 355e814f9..5a9678b15 100644 --- a/asm/non_matchings/audio/port_eu/func_800CBCB0.s +++ b/asm/non_matchings/audio/port_eu/func_800CBCB0.s @@ -19,14 +19,14 @@ glabel func_800CBCB0 /* 0CC8D4 800CBCD4 AFB1002C */ sw $s1, 0x2c($sp) /* 0CC8D8 800CBCD8 00047202 */ srl $t6, $a0, 8 /* 0CC8DC 800CBCDC 325800FF */ andi $t8, $s2, 0xff -/* 0CC8E0 800CBCE0 3C138019 */ lui $s3, %hi(D_80193820) # $s3, 0x8019 +/* 0CC8E0 800CBCE0 3C138019 */ lui $s3, %hi(sAudioCmd) # $s3, 0x8019 /* 0CC8E4 800CBCE4 3C15803B */ lui $s5, %hi(gSequencePlayers) # $s5, 0x803b /* 0CC8E8 800CBCE8 03A0F025 */ move $fp, $sp /* 0CC8EC 800CBCEC AFBF004C */ sw $ra, 0x4c($sp) /* 0CC8F0 800CBCF0 AFB00028 */ sw $s0, 0x28($sp) /* 0CC8F4 800CBCF4 31D100FF */ andi $s1, $t6, 0xff /* 0CC8F8 800CBCF8 26B51510 */ addiu $s5, %lo(gSequencePlayers) # addiu $s5, $s5, 0x1510 -/* 0CC8FC 800CBCFC 26733820 */ addiu $s3, %lo(D_80193820) # addiu $s3, $s3, 0x3820 +/* 0CC8FC 800CBCFC 26733820 */ addiu $s3, %lo(sAudioCmd) # addiu $s3, $s3, 0x3820 /* 0CC900 800CBD00 03009025 */ move $s2, $t8 /* 0CC904 800CBD04 241400F0 */ li $s4, 240 /* 0CC908 800CBD08 24160148 */ li $s6, 328 @@ -43,7 +43,7 @@ glabel func_800CBCB0 /* 0CC930 800CBD30 308A00F0 */ andi $t2, $a0, 0xf0 /* 0CC934 800CBD34 168A0005 */ bne $s4, $t2, .L800CBD4C /* 0CC938 800CBD38 01208825 */ move $s1, $t1 -/* 0CC93C 800CBD3C 0C032E06 */ jal func_800CB818 +/* 0CC93C 800CBD3C 0C032E06 */ jal eu_process_audio_cmd /* 0CC940 800CBD40 02002025 */ move $a0, $s0 /* 0CC944 800CBD44 10000071 */ b .L800CBF0C /* 0CC948 800CBD48 02201025 */ move $v0, $s1 @@ -59,7 +59,7 @@ glabel func_800CBCB0 /* 0CC96C 800CBD6C 02AB1821 */ addu $v1, $s5, $t3 /* 0CC970 800CBD70 11800005 */ beqz $t4, .L800CBD88 /* 0CC974 800CBD74 00000000 */ nop -/* 0CC978 800CBD78 0C032E06 */ jal func_800CB818 +/* 0CC978 800CBD78 0C032E06 */ jal eu_process_audio_cmd /* 0CC97C 800CBD7C 02002025 */ move $a0, $s0 /* 0CC980 800CBD80 10000062 */ b .L800CBF0C /* 0CC984 800CBD84 02201025 */ move $v0, $s1 diff --git a/asm/non_matchings/audio/seqplayer/func_800BEBA4.s b/asm/non_matchings/audio/seqplayer/func_800BEBA4.s deleted file mode 100644 index 8b1765b32..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BEBA4.s +++ /dev/null @@ -1,29 +0,0 @@ -glabel sequence_channel_disable -/* 0BF7A4 800BEBA4 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0BF7A8 800BEBA8 AFB20020 */ sw $s2, 0x20($sp) -/* 0BF7AC 800BEBAC AFB1001C */ sw $s1, 0x1c($sp) -/* 0BF7B0 800BEBB0 AFB00018 */ sw $s0, 0x18($sp) -/* 0BF7B4 800BEBB4 00808825 */ move $s1, $a0 -/* 0BF7B8 800BEBB8 AFBF0024 */ sw $ra, 0x24($sp) -/* 0BF7BC 800BEBBC 00008025 */ move $s0, $zero -/* 0BF7C0 800BEBC0 24120004 */ li $s2, 4 -/* 0BF7C4 800BEBC4 02202025 */ move $a0, $s1 -.L800BEBC8: -/* 0BF7C8 800BEBC8 0C02FAD5 */ jal seq_channel_layer_free -/* 0BF7CC 800BEBCC 02002825 */ move $a1, $s0 -/* 0BF7D0 800BEBD0 26100001 */ addiu $s0, $s0, 1 -/* 0BF7D4 800BEBD4 5612FFFC */ bnel $s0, $s2, .L800BEBC8 -/* 0BF7D8 800BEBD8 02202025 */ move $a0, $s1 -/* 0BF7DC 800BEBDC 0C02F506 */ jal note_pool_clear -/* 0BF7E0 800BEBE0 26240084 */ addiu $a0, $s1, 0x84 -/* 0BF7E4 800BEBE4 922E0000 */ lbu $t6, ($s1) -/* 0BF7E8 800BEBE8 31D9FF7F */ andi $t9, $t6, 0xff7f -/* 0BF7EC 800BEBEC A2390000 */ sb $t9, ($s1) -/* 0BF7F0 800BEBF0 37280040 */ ori $t0, $t9, 0x40 -/* 0BF7F4 800BEBF4 A2280000 */ sb $t0, ($s1) -/* 0BF7F8 800BEBF8 8FBF0024 */ lw $ra, 0x24($sp) -/* 0BF7FC 800BEBFC 8FB20020 */ lw $s2, 0x20($sp) -/* 0BF800 800BEC00 8FB1001C */ lw $s1, 0x1c($sp) -/* 0BF804 800BEC04 8FB00018 */ lw $s0, 0x18($sp) -/* 0BF808 800BEC08 03E00008 */ jr $ra -/* 0BF80C 800BEC0C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/audio/seqplayer/func_800BFD90.s b/asm/non_matchings/audio/seqplayer/func_800BFD90.s deleted file mode 100644 index 6ec05e641..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BFD90.s +++ /dev/null @@ -1,875 +0,0 @@ -.section .late_rodata - -glabel jpt_800F2F90 -.word L800C0124, L800C0078, L800C0140, L800C0150 -.word L800C0094, L800C035C, L800C03B4, L800C03EC -.word L800C03EC, L800C0438, L800C0448, L800C03EC -.word L800BFE40, L800BFE40, L800BFE40, L800C0468 -.word L800C048C, L800C049C, L800C01E8, L800C034C -.word L800BFE40, L800BFE40, L800C02B4, L800C0298 -.word L800C0288, L800C026C, L800C0254, L800C0238 -.word L800C021C, L800C01B4, L800C0160, L800C0184 -.word L800C0304, L800C02D0, L800C0338, L800C04BC -.word L800C04AC, L800C0518, L800C0528, L800C0590 -.word L800C0630, L800BFEC4, L800C00D0, L800C0608 -.word L800BFE40, L800BFE40, L800C0640, L800C0068 -.word L800C0040, L800BFFF8, L800BFFF8, L800BFFF8 -.word L800BFFA0, L800BFF90, L800BFF48, L800BFF10 -.word L800BFFA0, L800BFFA0, L800BFFA0, L800BFED4 -.word L800BFEB4, L800C0880, L800BFE7C - -glabel jpt_800F308C -.word L800C0684, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C07E4, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0814, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0830, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0858, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C06EC, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0708, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C06BC, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C06CC, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0714, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0760, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C077C - -.section .text - -glabel func_800BFD90 -/* 0C0990 800BFD90 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 0C0994 800BFD94 AFBF002C */ sw $ra, 0x2c($sp) -/* 0C0998 800BFD98 AFB40028 */ sw $s4, 0x28($sp) -/* 0C099C 800BFD9C AFB30024 */ sw $s3, 0x24($sp) -/* 0C09A0 800BFDA0 AFB20020 */ sw $s2, 0x20($sp) -/* 0C09A4 800BFDA4 AFB1001C */ sw $s1, 0x1c($sp) -/* 0C09A8 800BFDA8 AFB00018 */ sw $s0, 0x18($sp) -/* 0C09AC 800BFDAC 8C820000 */ lw $v0, ($a0) -/* 0C09B0 800BFDB0 00809025 */ move $s2, $a0 -/* 0C09B4 800BFDB4 000277C2 */ srl $t6, $v0, 0x1f -/* 0C09B8 800BFDB8 11C002BC */ beqz $t6, .L800C08AC -/* 0C09BC 800BFDBC 0002C080 */ sll $t8, $v0, 2 -/* 0C09C0 800BFDC0 0701000D */ bgez $t8, .L800BFDF8 -/* 0C09C4 800BFDC4 00008025 */ move $s0, $zero -/* 0C09C8 800BFDC8 00808825 */ move $s1, $a0 -/* 0C09CC 800BFDCC 24120010 */ li $s2, 16 -.L800BFDD0: -/* 0C09D0 800BFDD0 8E240048 */ lw $a0, 0x48($s1) -/* 0C09D4 800BFDD4 50800004 */ beql $a0, $zero, .L800BFDE8 -/* 0C09D8 800BFDD8 26100004 */ addiu $s0, $s0, 4 -/* 0C09DC 800BFDDC 0C02FC64 */ jal seq_channel_layer_process_script -/* 0C09E0 800BFDE0 00000000 */ nop -/* 0C09E4 800BFDE4 26100004 */ addiu $s0, $s0, 4 -.L800BFDE8: -/* 0C09E8 800BFDE8 1612FFF9 */ bne $s0, $s2, .L800BFDD0 -/* 0C09EC 800BFDEC 26310004 */ addiu $s1, $s1, 4 -/* 0C09F0 800BFDF0 100002AF */ b .L800C08B0 -/* 0C09F4 800BFDF4 8FBF002C */ lw $ra, 0x2c($sp) -.L800BFDF8: -/* 0C09F8 800BFDF8 8E540044 */ lw $s4, 0x44($s2) -/* 0C09FC 800BFDFC 8E990000 */ lw $t9, ($s4) -/* 0C0A00 800BFE00 00195080 */ sll $t2, $t9, 2 -/* 0C0A04 800BFE04 05430006 */ bgezl $t2, .L800BFE20 -/* 0C0A08 800BFE08 9643001A */ lhu $v1, 0x1a($s2) -/* 0C0A0C 800BFE0C 924B0003 */ lbu $t3, 3($s2) -/* 0C0A10 800BFE10 316C0080 */ andi $t4, $t3, 0x80 -/* 0C0A14 800BFE14 558002A6 */ bnel $t4, $zero, .L800C08B0 -/* 0C0A18 800BFE18 8FBF002C */ lw $ra, 0x2c($sp) -/* 0C0A1C 800BFE1C 9643001A */ lhu $v1, 0x1a($s2) -.L800BFE20: -/* 0C0A20 800BFE20 26510060 */ addiu $s1, $s2, 0x60 -/* 0C0A24 800BFE24 10600004 */ beqz $v1, .L800BFE38 -/* 0C0A28 800BFE28 00601025 */ move $v0, $v1 -/* 0C0A2C 800BFE2C 246DFFFF */ addiu $t5, $v1, -1 -/* 0C0A30 800BFE30 A64D001A */ sh $t5, 0x1a($s2) -/* 0C0A34 800BFE34 31A2FFFF */ andi $v0, $t5, 0xffff -.L800BFE38: -/* 0C0A38 800BFE38 14400291 */ bnez $v0, .L800C0880 -/* 0C0A3C 800BFE3C 83B3004B */ lb $s3, 0x4b($sp) -.L800BFE40: -glabel L800BFE40 -/* 0C0A40 800BFE40 0C02FC42 */ jal m64_read_u8 -/* 0C0A44 800BFE44 02202025 */ move $a0, $s1 -/* 0C0A48 800BFE48 284100C1 */ slti $at, $v0, 0xc1 -/* 0C0A4C 800BFE4C 305000FF */ andi $s0, $v0, 0xff -/* 0C0A50 800BFE50 14200201 */ bnez $at, .L800C0658 -/* 0C0A54 800BFE54 00401825 */ move $v1, $v0 -/* 0C0A58 800BFE58 244EFF3F */ addiu $t6, $v0, -0xc1 -/* 0C0A5C 800BFE5C 2DC1003F */ sltiu $at, $t6, 0x3f -/* 0C0A60 800BFE60 1020FFF7 */ beqz $at, .L800BFE40 -/* 0C0A64 800BFE64 000E7080 */ sll $t6, $t6, 2 -/* 0C0A68 800BFE68 3C01800F */ lui $at, %hi(jpt_800F2F90) -/* 0C0A6C 800BFE6C 002E0821 */ addu $at, $at, $t6 -/* 0C0A70 800BFE70 8C2E2F90 */ lw $t6, %lo(jpt_800F2F90)($at) -/* 0C0A74 800BFE74 01C00008 */ jr $t6 -/* 0C0A78 800BFE78 00000000 */ nop -glabel L800BFE7C -/* 0C0A7C 800BFE7C 92240018 */ lbu $a0, 0x18($s1) -/* 0C0A80 800BFE80 14800005 */ bnez $a0, .L800BFE98 -/* 0C0A84 800BFE84 2482FFFF */ addiu $v0, $a0, -1 -/* 0C0A88 800BFE88 0C02FAE9 */ jal sequence_channel_disable -/* 0C0A8C 800BFE8C 02402025 */ move $a0, $s2 -/* 0C0A90 800BFE90 1000027C */ b .L800C0884 -/* 0C0A94 800BFE94 02408825 */ move $s1, $s2 -.L800BFE98: -/* 0C0A98 800BFE98 304F00FF */ andi $t7, $v0, 0xff -/* 0C0A9C 800BFE9C 000FC080 */ sll $t8, $t7, 2 -/* 0C0AA0 800BFEA0 0238C821 */ addu $t9, $s1, $t8 -/* 0C0AA4 800BFEA4 A22F0018 */ sb $t7, 0x18($s1) -/* 0C0AA8 800BFEA8 8F290004 */ lw $t1, 4($t9) -/* 0C0AAC 800BFEAC 1000FFE4 */ b .L800BFE40 -/* 0C0AB0 800BFEB0 AE290000 */ sw $t1, ($s1) -glabel L800BFEB4 -/* 0C0AB4 800BFEB4 0C02FC53 */ jal m64_read_compressed_u16 -/* 0C0AB8 800BFEB8 02202025 */ move $a0, $s1 -/* 0C0ABC 800BFEBC 10000270 */ b .L800C0880 -/* 0C0AC0 800BFEC0 A642001A */ sh $v0, 0x1a($s2) -glabel L800BFEC4 -/* 0C0AC4 800BFEC4 924B0000 */ lbu $t3, ($s2) -/* 0C0AC8 800BFEC8 356C0020 */ ori $t4, $t3, 0x20 -/* 0C0ACC 800BFECC 1000026C */ b .L800C0880 -/* 0C0AD0 800BFED0 A24C0000 */ sb $t4, ($s2) -glabel L800BFED4 -/* 0C0AD4 800BFED4 0C02FC47 */ jal m64_read_s16 -/* 0C0AD8 800BFED8 02202025 */ move $a0, $s1 -/* 0C0ADC 800BFEDC 922E0018 */ lbu $t6, 0x18($s1) -/* 0C0AE0 800BFEE0 8E2D0000 */ lw $t5, ($s1) -/* 0C0AE4 800BFEE4 304BFFFF */ andi $t3, $v0, 0xffff -/* 0C0AE8 800BFEE8 000E7880 */ sll $t7, $t6, 2 -/* 0C0AEC 800BFEEC 022FC021 */ addu $t8, $s1, $t7 -/* 0C0AF0 800BFEF0 AF0D0004 */ sw $t5, 4($t8) -/* 0C0AF4 800BFEF4 92390018 */ lbu $t9, 0x18($s1) -/* 0C0AF8 800BFEF8 27290001 */ addiu $t1, $t9, 1 -/* 0C0AFC 800BFEFC A2290018 */ sb $t1, 0x18($s1) -/* 0C0B00 800BFF00 8E8A0014 */ lw $t2, 0x14($s4) -/* 0C0B04 800BFF04 014B6021 */ addu $t4, $t2, $t3 -/* 0C0B08 800BFF08 1000FFCD */ b .L800BFE40 -/* 0C0B0C 800BFF0C AE2C0000 */ sw $t4, ($s1) -glabel L800BFF10 -/* 0C0B10 800BFF10 0C02FC42 */ jal m64_read_u8 -/* 0C0B14 800BFF14 02202025 */ move $a0, $s1 -/* 0C0B18 800BFF18 922E0018 */ lbu $t6, 0x18($s1) -/* 0C0B1C 800BFF1C 022E7821 */ addu $t7, $s1, $t6 -/* 0C0B20 800BFF20 A1E20014 */ sb $v0, 0x14($t7) -/* 0C0B24 800BFF24 92380018 */ lbu $t8, 0x18($s1) -/* 0C0B28 800BFF28 8E2D0000 */ lw $t5, ($s1) -/* 0C0B2C 800BFF2C 0018C880 */ sll $t9, $t8, 2 -/* 0C0B30 800BFF30 02394821 */ addu $t1, $s1, $t9 -/* 0C0B34 800BFF34 AD2D0004 */ sw $t5, 4($t1) -/* 0C0B38 800BFF38 922A0018 */ lbu $t2, 0x18($s1) -/* 0C0B3C 800BFF3C 254B0001 */ addiu $t3, $t2, 1 -/* 0C0B40 800BFF40 1000FFBF */ b .L800BFE40 -/* 0C0B44 800BFF44 A22B0018 */ sb $t3, 0x18($s1) -glabel L800BFF48 -/* 0C0B48 800BFF48 922C0018 */ lbu $t4, 0x18($s1) -/* 0C0B4C 800BFF4C 022C1021 */ addu $v0, $s1, $t4 -/* 0C0B50 800BFF50 904E0013 */ lbu $t6, 0x13($v0) -/* 0C0B54 800BFF54 25CFFFFF */ addiu $t7, $t6, -1 -/* 0C0B58 800BFF58 A04F0013 */ sb $t7, 0x13($v0) -/* 0C0B5C 800BFF5C 92240018 */ lbu $a0, 0x18($s1) -/* 0C0B60 800BFF60 0224C021 */ addu $t8, $s1, $a0 -/* 0C0B64 800BFF64 93190013 */ lbu $t9, 0x13($t8) -/* 0C0B68 800BFF68 00801825 */ move $v1, $a0 -/* 0C0B6C 800BFF6C 00036880 */ sll $t5, $v1, 2 -/* 0C0B70 800BFF70 13200005 */ beqz $t9, .L800BFF88 -/* 0C0B74 800BFF74 248BFFFF */ addiu $t3, $a0, -1 -/* 0C0B78 800BFF78 022D4821 */ addu $t1, $s1, $t5 -/* 0C0B7C 800BFF7C 8D2A0000 */ lw $t2, ($t1) -/* 0C0B80 800BFF80 1000FFAF */ b .L800BFE40 -/* 0C0B84 800BFF84 AE2A0000 */ sw $t2, ($s1) -.L800BFF88: -/* 0C0B88 800BFF88 1000FFAD */ b .L800BFE40 -/* 0C0B8C 800BFF8C A22B0018 */ sb $t3, 0x18($s1) -glabel L800BFF90 -/* 0C0B90 800BFF90 922C0018 */ lbu $t4, 0x18($s1) -/* 0C0B94 800BFF94 258EFFFF */ addiu $t6, $t4, -1 -/* 0C0B98 800BFF98 1000FFA9 */ b .L800BFE40 -/* 0C0B9C 800BFF9C A22E0018 */ sb $t6, 0x18($s1) -glabel L800BFFA0 -/* 0C0BA0 800BFFA0 0C02FC47 */ jal m64_read_s16 -/* 0C0BA4 800BFFA4 02202025 */ move $a0, $s1 -/* 0C0BA8 800BFFA8 240100FA */ li $at, 250 -/* 0C0BAC 800BFFAC 16010003 */ bne $s0, $at, .L800BFFBC -/* 0C0BB0 800BFFB0 02001825 */ move $v1, $s0 -/* 0C0BB4 800BFFB4 1660FFA2 */ bnez $s3, .L800BFE40 -/* 0C0BB8 800BFFB8 00000000 */ nop -.L800BFFBC: -/* 0C0BBC 800BFFBC 240100F9 */ li $at, 249 -/* 0C0BC0 800BFFC0 54610004 */ bnel $v1, $at, .L800BFFD4 -/* 0C0BC4 800BFFC4 240100F5 */ li $at, 245 -/* 0C0BC8 800BFFC8 0661FF9D */ bgez $s3, .L800BFE40 -/* 0C0BCC 800BFFCC 00000000 */ nop -/* 0C0BD0 800BFFD0 240100F5 */ li $at, 245 -.L800BFFD4: -/* 0C0BD4 800BFFD4 54610004 */ bnel $v1, $at, .L800BFFE8 -/* 0C0BD8 800BFFD8 8E8F0014 */ lw $t7, 0x14($s4) -/* 0C0BDC 800BFFDC 0660FF98 */ bltz $s3, .L800BFE40 -/* 0C0BE0 800BFFE0 00000000 */ nop -/* 0C0BE4 800BFFE4 8E8F0014 */ lw $t7, 0x14($s4) -.L800BFFE8: -/* 0C0BE8 800BFFE8 3058FFFF */ andi $t8, $v0, 0xffff -/* 0C0BEC 800BFFEC 01F8C821 */ addu $t9, $t7, $t8 -/* 0C0BF0 800BFFF0 1000FF93 */ b .L800BFE40 -/* 0C0BF4 800BFFF4 AE390000 */ sw $t9, ($s1) -glabel L800BFFF8 -/* 0C0BF8 800BFFF8 0C02FC42 */ jal m64_read_u8 -/* 0C0BFC 800BFFFC 02202025 */ move $a0, $s1 -/* 0C0C00 800C0000 240100F3 */ li $at, 243 -/* 0C0C04 800C0004 16010003 */ bne $s0, $at, .L800C0014 -/* 0C0C08 800C0008 02001825 */ move $v1, $s0 -/* 0C0C0C 800C000C 1660FF8C */ bnez $s3, .L800BFE40 -/* 0C0C10 800C0010 00000000 */ nop -.L800C0014: -/* 0C0C14 800C0014 240100F2 */ li $at, 242 -/* 0C0C18 800C0018 54610004 */ bnel $v1, $at, .L800C002C -/* 0C0C1C 800C001C 8E2D0000 */ lw $t5, ($s1) -/* 0C0C20 800C0020 0661FF87 */ bgez $s3, .L800BFE40 -/* 0C0C24 800C0024 00000000 */ nop -/* 0C0C28 800C0028 8E2D0000 */ lw $t5, ($s1) -.L800C002C: -/* 0C0C2C 800C002C 00024E00 */ sll $t1, $v0, 0x18 -/* 0C0C30 800C0030 00095603 */ sra $t2, $t1, 0x18 -/* 0C0C34 800C0034 01AA5821 */ addu $t3, $t5, $t2 -/* 0C0C38 800C0038 1000FF81 */ b .L800BFE40 -/* 0C0C3C 800C003C AE2B0000 */ sw $t3, ($s1) -glabel L800C0040 -/* 0C0C40 800C0040 26500084 */ addiu $s0, $s2, 0x84 -/* 0C0C44 800C0044 0C02F506 */ jal note_pool_clear -/* 0C0C48 800C0048 02002025 */ move $a0, $s0 -/* 0C0C4C 800C004C 0C02FC42 */ jal m64_read_u8 -/* 0C0C50 800C0050 02202025 */ move $a0, $s1 -/* 0C0C54 800C0054 02002025 */ move $a0, $s0 -/* 0C0C58 800C0058 0C02F55E */ jal note_pool_fill -/* 0C0C5C 800C005C 00402825 */ move $a1, $v0 -/* 0C0C60 800C0060 1000FF77 */ b .L800BFE40 -/* 0C0C64 800C0064 00000000 */ nop -glabel L800C0068 -/* 0C0C68 800C0068 0C02F506 */ jal note_pool_clear -/* 0C0C6C 800C006C 26440084 */ addiu $a0, $s2, 0x84 -/* 0C0C70 800C0070 1000FF73 */ b .L800BFE40 -/* 0C0C74 800C0074 00000000 */ nop -glabel L800C0078 -/* 0C0C78 800C0078 0C02FC47 */ jal m64_read_s16 -/* 0C0C7C 800C007C 02202025 */ move $a0, $s1 -/* 0C0C80 800C0080 8E8C0014 */ lw $t4, 0x14($s4) -/* 0C0C84 800C0084 304EFFFF */ andi $t6, $v0, 0xffff -/* 0C0C88 800C0088 018E7821 */ addu $t7, $t4, $t6 -/* 0C0C8C 800C008C 1000FF6C */ b .L800BFE40 -/* 0C0C90 800C0090 AE4F0034 */ sw $t7, 0x34($s2) -glabel L800C0094 -/* 0C0C94 800C0094 2401FFFF */ li $at, -1 -/* 0C0C98 800C0098 1261FF69 */ beq $s3, $at, .L800BFE40 -/* 0C0C9C 800C009C 00000000 */ nop -/* 0C0CA0 800C00A0 8E580034 */ lw $t8, 0x34($s2) -/* 0C0CA4 800C00A4 0013C840 */ sll $t9, $s3, 1 -/* 0C0CA8 800C00A8 8E8C0014 */ lw $t4, 0x14($s4) -/* 0C0CAC 800C00AC 03191821 */ addu $v1, $t8, $t9 -/* 0C0CB0 800C00B0 906D0000 */ lbu $t5, ($v1) -/* 0C0CB4 800C00B4 90690001 */ lbu $t1, 1($v1) -/* 0C0CB8 800C00B8 000D5200 */ sll $t2, $t5, 8 -/* 0C0CBC 800C00BC 012A3821 */ addu $a3, $t1, $t2 -/* 0C0CC0 800C00C0 30EBFFFF */ andi $t3, $a3, 0xffff -/* 0C0CC4 800C00C4 018B7021 */ addu $t6, $t4, $t3 -/* 0C0CC8 800C00C8 1000FF5D */ b .L800BFE40 -/* 0C0CCC 800C00CC AE4E0034 */ sw $t6, 0x34($s2) -glabel L800C00D0 -/* 0C0CD0 800C00D0 0C02FC42 */ jal m64_read_u8 -/* 0C0CD4 800C00D4 02202025 */ move $a0, $s1 -/* 0C0CD8 800C00D8 928F0004 */ lbu $t7, 4($s4) -/* 0C0CDC 800C00DC 3C03803B */ lui $v1, %hi(gAlBankSets) # $v1, 0x803b -/* 0C0CE0 800C00E0 8C637078 */ lw $v1, %lo(gAlBankSets)($v1) -/* 0C0CE4 800C00E4 000FC040 */ sll $t8, $t7, 1 -/* 0C0CE8 800C00E8 24040001 */ li $a0, 1 -/* 0C0CEC 800C00EC 0078C821 */ addu $t9, $v1, $t8 -/* 0C0CF0 800C00F0 97270000 */ lhu $a3, ($t9) -/* 0C0CF4 800C00F4 24050002 */ li $a1, 2 -/* 0C0CF8 800C00F8 00E36821 */ addu $t5, $a3, $v1 -/* 0C0CFC 800C00FC 91A80000 */ lbu $t0, ($t5) -/* 0C0D00 800C0100 00E84821 */ addu $t1, $a3, $t0 -/* 0C0D04 800C0104 01225023 */ subu $t2, $t1, $v0 -/* 0C0D08 800C0108 01435821 */ addu $t3, $t2, $v1 -/* 0C0D0C 800C010C 91700000 */ lbu $s0, ($t3) -/* 0C0D10 800C0110 0C02E6A4 */ jal get_bank_or_seq -/* 0C0D14 800C0114 02003025 */ move $a2, $s0 -/* 0C0D18 800C0118 10400002 */ beqz $v0, .L800C0124 -/* 0C0D1C 800C011C 00000000 */ nop -/* 0C0D20 800C0120 A2500006 */ sb $s0, 6($s2) -.L800C0124: -glabel L800C0124 -/* 0C0D24 800C0124 0C02FC42 */ jal m64_read_u8 -/* 0C0D28 800C0128 02202025 */ move $a0, $s1 -/* 0C0D2C 800C012C 02402025 */ move $a0, $s2 -/* 0C0D30 800C0130 0C02FF36 */ jal set_instrument -/* 0C0D34 800C0134 304500FF */ andi $a1, $v0, 0xff -/* 0C0D38 800C0138 1000FF41 */ b .L800BFE40 -/* 0C0D3C 800C013C 00000000 */ nop -glabel L800C0140 -/* 0C0D40 800C0140 924C0000 */ lbu $t4, ($s2) -/* 0C0D44 800C0144 318EFFFD */ andi $t6, $t4, 0xfffd -/* 0C0D48 800C0148 1000FF3D */ b .L800BFE40 -/* 0C0D4C 800C014C A24E0000 */ sb $t6, ($s2) -glabel L800C0150 -/* 0C0D50 800C0150 92580000 */ lbu $t8, ($s2) -/* 0C0D54 800C0154 37190002 */ ori $t9, $t8, 2 -/* 0C0D58 800C0158 1000FF39 */ b .L800BFE40 -/* 0C0D5C 800C015C A2590000 */ sb $t9, ($s2) -glabel L800C0160 -/* 0C0D60 800C0160 0C02FC42 */ jal m64_read_u8 -/* 0C0D64 800C0164 02202025 */ move $a0, $s1 -/* 0C0D68 800C0168 02402025 */ move $a0, $s2 -/* 0C0D6C 800C016C 0C02FF5B */ jal sequence_channel_set_volume -/* 0C0D70 800C0170 304500FF */ andi $a1, $v0, 0xff -/* 0C0D74 800C0174 92490001 */ lbu $t1, 1($s2) -/* 0C0D78 800C0178 352A0040 */ ori $t2, $t1, 0x40 -/* 0C0D7C 800C017C 1000FF30 */ b .L800BFE40 -/* 0C0D80 800C0180 A24A0001 */ sb $t2, 1($s2) -glabel L800C0184 -/* 0C0D84 800C0184 0C02FC42 */ jal m64_read_u8 -/* 0C0D88 800C0188 02202025 */ move $a0, $s1 -/* 0C0D8C 800C018C 44822000 */ mtc1 $v0, $f4 -/* 0C0D90 800C0190 3C013C00 */ li $at, 0x3C000000 # 0.007813 -/* 0C0D94 800C0194 44814000 */ mtc1 $at, $f8 -/* 0C0D98 800C0198 468021A0 */ cvt.s.w $f6, $f4 -/* 0C0D9C 800C019C 924C0001 */ lbu $t4, 1($s2) -/* 0C0DA0 800C01A0 358E0040 */ ori $t6, $t4, 0x40 -/* 0C0DA4 800C01A4 A24E0001 */ sb $t6, 1($s2) -/* 0C0DA8 800C01A8 46083282 */ mul.s $f10, $f6, $f8 -/* 0C0DAC 800C01AC 1000FF24 */ b .L800BFE40 -/* 0C0DB0 800C01B0 E64A0020 */ swc1 $f10, 0x20($s2) -glabel L800C01B4 -/* 0C0DB4 800C01B4 0C02FC47 */ jal m64_read_s16 -/* 0C0DB8 800C01B8 02202025 */ move $a0, $s1 -/* 0C0DBC 800C01BC 304FFFFF */ andi $t7, $v0, 0xffff -/* 0C0DC0 800C01C0 448F8000 */ mtc1 $t7, $f16 -/* 0C0DC4 800C01C4 3C014700 */ li $at, 0x47000000 # 32768.000000 -/* 0C0DC8 800C01C8 44812000 */ mtc1 $at, $f4 -/* 0C0DCC 800C01CC 468084A0 */ cvt.s.w $f18, $f16 -/* 0C0DD0 800C01D0 92590001 */ lbu $t9, 1($s2) -/* 0C0DD4 800C01D4 372D0080 */ ori $t5, $t9, 0x80 -/* 0C0DD8 800C01D8 A24D0001 */ sb $t5, 1($s2) -/* 0C0DDC 800C01DC 46049183 */ div.s $f6, $f18, $f4 -/* 0C0DE0 800C01E0 1000FF17 */ b .L800BFE40 -/* 0C0DE4 800C01E4 E6460030 */ swc1 $f6, 0x30($s2) -glabel L800C01E8 -/* 0C0DE8 800C01E8 0C02FC42 */ jal m64_read_u8 -/* 0C0DEC 800C01EC 02202025 */ move $a0, $s1 -/* 0C0DF0 800C01F0 2449007F */ addiu $t1, $v0, 0x7f -/* 0C0DF4 800C01F4 312A00FF */ andi $t2, $t1, 0xff -/* 0C0DF8 800C01F8 924E0001 */ lbu $t6, 1($s2) -/* 0C0DFC 800C01FC 000A5880 */ sll $t3, $t2, 2 -/* 0C0E00 800C0200 3C01800F */ lui $at, %hi(gPitchBendFrequencyScale) -/* 0C0E04 800C0204 002B0821 */ addu $at, $at, $t3 -/* 0C0E08 800C0208 C4285C20 */ lwc1 $f8, %lo(gPitchBendFrequencyScale)($at) -/* 0C0E0C 800C020C 35CF0080 */ ori $t7, $t6, 0x80 -/* 0C0E10 800C0210 A24F0001 */ sb $t7, 1($s2) -/* 0C0E14 800C0214 1000FF0A */ b .L800BFE40 -/* 0C0E18 800C0218 E6480030 */ swc1 $f8, 0x30($s2) -glabel L800C021C -/* 0C0E1C 800C021C 0C02FC42 */ jal m64_read_u8 -/* 0C0E20 800C0220 02202025 */ move $a0, $s1 -/* 0C0E24 800C0224 92590001 */ lbu $t9, 1($s2) -/* 0C0E28 800C0228 A2420009 */ sb $v0, 9($s2) -/* 0C0E2C 800C022C 372D0020 */ ori $t5, $t9, 0x20 -/* 0C0E30 800C0230 1000FF03 */ b .L800BFE40 -/* 0C0E34 800C0234 A24D0001 */ sb $t5, 1($s2) -glabel L800C0238 -/* 0C0E38 800C0238 0C02FC42 */ jal m64_read_u8 -/* 0C0E3C 800C023C 02202025 */ move $a0, $s1 -/* 0C0E40 800C0240 924A0001 */ lbu $t2, 1($s2) -/* 0C0E44 800C0244 A242000A */ sb $v0, 0xa($s2) -/* 0C0E48 800C0248 354B0020 */ ori $t3, $t2, 0x20 -/* 0C0E4C 800C024C 1000FEFC */ b .L800BFE40 -/* 0C0E50 800C0250 A24B0001 */ sb $t3, 1($s2) -glabel L800C0254 -/* 0C0E54 800C0254 8E220000 */ lw $v0, ($s1) -/* 0C0E58 800C0258 80430000 */ lb $v1, ($v0) -/* 0C0E5C 800C025C 244C0001 */ addiu $t4, $v0, 1 -/* 0C0E60 800C0260 AE2C0000 */ sw $t4, ($s1) -/* 0C0E64 800C0264 1000FEF6 */ b .L800BFE40 -/* 0C0E68 800C0268 A643001E */ sh $v1, 0x1e($s2) -glabel L800C026C -/* 0C0E6C 800C026C 0C02FC47 */ jal m64_read_s16 -/* 0C0E70 800C0270 02202025 */ move $a0, $s1 -/* 0C0E74 800C0274 8E8E0014 */ lw $t6, 0x14($s4) -/* 0C0E78 800C0278 304FFFFF */ andi $t7, $v0, 0xffff -/* 0C0E7C 800C027C 01CFC021 */ addu $t8, $t6, $t7 -/* 0C0E80 800C0280 1000FEEF */ b .L800BFE40 -/* 0C0E84 800C0284 AE580080 */ sw $t8, 0x80($s2) -glabel L800C0288 -/* 0C0E88 800C0288 0C02FC42 */ jal m64_read_u8 -/* 0C0E8C 800C028C 02202025 */ move $a0, $s1 -/* 0C0E90 800C0290 1000FEEB */ b .L800BFE40 -/* 0C0E94 800C0294 A242007C */ sb $v0, 0x7c($s2) -glabel L800C0298 -/* 0C0E98 800C0298 0C02FC42 */ jal m64_read_u8 -/* 0C0E9C 800C029C 02202025 */ move $a0, $s1 -/* 0C0EA0 800C02A0 0002C8C0 */ sll $t9, $v0, 3 -/* 0C0EA4 800C02A4 A6590012 */ sh $t9, 0x12($s2) -/* 0C0EA8 800C02A8 A640000E */ sh $zero, 0xe($s2) -/* 0C0EAC 800C02AC 1000FEE4 */ b .L800BFE40 -/* 0C0EB0 800C02B0 A6400016 */ sh $zero, 0x16($s2) -glabel L800C02B4 -/* 0C0EB4 800C02B4 0C02FC42 */ jal m64_read_u8 -/* 0C0EB8 800C02B8 02202025 */ move $a0, $s1 -/* 0C0EBC 800C02BC 00021940 */ sll $v1, $v0, 5 -/* 0C0EC0 800C02C0 A6430010 */ sh $v1, 0x10($s2) -/* 0C0EC4 800C02C4 A643000C */ sh $v1, 0xc($s2) -/* 0C0EC8 800C02C8 1000FEDD */ b .L800BFE40 -/* 0C0ECC 800C02CC A6400014 */ sh $zero, 0x14($s2) -glabel L800C02D0 -/* 0C0ED0 800C02D0 0C02FC42 */ jal m64_read_u8 -/* 0C0ED4 800C02D4 02202025 */ move $a0, $s1 -/* 0C0ED8 800C02D8 000268C0 */ sll $t5, $v0, 3 -/* 0C0EDC 800C02DC A64D000E */ sh $t5, 0xe($s2) -/* 0C0EE0 800C02E0 0C02FC42 */ jal m64_read_u8 -/* 0C0EE4 800C02E4 02202025 */ move $a0, $s1 -/* 0C0EE8 800C02E8 000248C0 */ sll $t1, $v0, 3 -/* 0C0EEC 800C02EC A6490012 */ sh $t1, 0x12($s2) -/* 0C0EF0 800C02F0 0C02FC42 */ jal m64_read_u8 -/* 0C0EF4 800C02F4 02202025 */ move $a0, $s1 -/* 0C0EF8 800C02F8 00025100 */ sll $t2, $v0, 4 -/* 0C0EFC 800C02FC 1000FED0 */ b .L800BFE40 -/* 0C0F00 800C0300 A64A0016 */ sh $t2, 0x16($s2) -glabel L800C0304 -/* 0C0F04 800C0304 0C02FC42 */ jal m64_read_u8 -/* 0C0F08 800C0308 02202025 */ move $a0, $s1 -/* 0C0F0C 800C030C 00025940 */ sll $t3, $v0, 5 -/* 0C0F10 800C0310 A64B000C */ sh $t3, 0xc($s2) -/* 0C0F14 800C0314 0C02FC42 */ jal m64_read_u8 -/* 0C0F18 800C0318 02202025 */ move $a0, $s1 -/* 0C0F1C 800C031C 00026140 */ sll $t4, $v0, 5 -/* 0C0F20 800C0320 A64C0010 */ sh $t4, 0x10($s2) -/* 0C0F24 800C0324 0C02FC42 */ jal m64_read_u8 -/* 0C0F28 800C0328 02202025 */ move $a0, $s1 -/* 0C0F2C 800C032C 00027100 */ sll $t6, $v0, 4 -/* 0C0F30 800C0330 1000FEC3 */ b .L800BFE40 -/* 0C0F34 800C0334 A64E0014 */ sh $t6, 0x14($s2) -glabel L800C0338 -/* 0C0F38 800C0338 0C02FC42 */ jal m64_read_u8 -/* 0C0F3C 800C033C 02202025 */ move $a0, $s1 -/* 0C0F40 800C0340 00027900 */ sll $t7, $v0, 4 -/* 0C0F44 800C0344 1000FEBE */ b .L800BFE40 -/* 0C0F48 800C0348 A64F0018 */ sh $t7, 0x18($s2) -glabel L800C034C -/* 0C0F4C 800C034C 0C02FC42 */ jal m64_read_u8 -/* 0C0F50 800C0350 02202025 */ move $a0, $s1 -/* 0C0F54 800C0354 1000FEBA */ b .L800BFE40 -/* 0C0F58 800C0358 A2420004 */ sb $v0, 4($s2) -glabel L800C035C -/* 0C0F5C 800C035C 0C02FC42 */ jal m64_read_u8 -/* 0C0F60 800C0360 02202025 */ move $a0, $s1 -/* 0C0F64 800C0364 92980004 */ lbu $t8, 4($s4) -/* 0C0F68 800C0368 3C03803B */ lui $v1, %hi(gAlBankSets) # $v1, 0x803b -/* 0C0F6C 800C036C 8C637078 */ lw $v1, %lo(gAlBankSets)($v1) -/* 0C0F70 800C0370 0018C840 */ sll $t9, $t8, 1 -/* 0C0F74 800C0374 24040001 */ li $a0, 1 -/* 0C0F78 800C0378 00796821 */ addu $t5, $v1, $t9 -/* 0C0F7C 800C037C 95A70000 */ lhu $a3, ($t5) -/* 0C0F80 800C0380 24050002 */ li $a1, 2 -/* 0C0F84 800C0384 00E34821 */ addu $t1, $a3, $v1 -/* 0C0F88 800C0388 91280000 */ lbu $t0, ($t1) -/* 0C0F8C 800C038C 00E85021 */ addu $t2, $a3, $t0 -/* 0C0F90 800C0390 01425823 */ subu $t3, $t2, $v0 -/* 0C0F94 800C0394 01636021 */ addu $t4, $t3, $v1 -/* 0C0F98 800C0398 91900000 */ lbu $s0, ($t4) -/* 0C0F9C 800C039C 0C02E6A4 */ jal get_bank_or_seq -/* 0C0FA0 800C03A0 02003025 */ move $a2, $s0 -/* 0C0FA4 800C03A4 1040FEA6 */ beqz $v0, .L800BFE40 -/* 0C0FA8 800C03A8 00000000 */ nop -/* 0C0FAC 800C03AC 1000FEA4 */ b .L800BFE40 -/* 0C0FB0 800C03B0 A2500006 */ sb $s0, 6($s2) -glabel L800C03B4 -/* 0C0FB4 800C03B4 326E00FF */ andi $t6, $s3, 0xff -/* 0C0FB8 800C03B8 AFAE0034 */ sw $t6, 0x34($sp) -/* 0C0FBC 800C03BC 0C02FC42 */ jal m64_read_u8 -/* 0C0FC0 800C03C0 02202025 */ move $a0, $s1 -/* 0C0FC4 800C03C4 305000FF */ andi $s0, $v0, 0xff -/* 0C0FC8 800C03C8 0C02FC47 */ jal m64_read_s16 -/* 0C0FCC 800C03CC 02202025 */ move $a0, $s1 -/* 0C0FD0 800C03D0 8E8F0014 */ lw $t7, 0x14($s4) -/* 0C0FD4 800C03D4 8FB90034 */ lw $t9, 0x34($sp) -/* 0C0FD8 800C03D8 3058FFFF */ andi $t8, $v0, 0xffff -/* 0C0FDC 800C03DC 01F81821 */ addu $v1, $t7, $t8 -/* 0C0FE0 800C03E0 03306821 */ addu $t5, $t9, $s0 -/* 0C0FE4 800C03E4 1000FE96 */ b .L800BFE40 -/* 0C0FE8 800C03E8 A06D0000 */ sb $t5, ($v1) -glabel L800C03EC -/* 0C0FEC 800C03EC 0C02FC42 */ jal m64_read_u8 -/* 0C0FF0 800C03F0 02202025 */ move $a0, $s1 -/* 0C0FF4 800C03F4 240100C8 */ li $at, 200 -/* 0C0FF8 800C03F8 16010005 */ bne $s0, $at, .L800C0410 -/* 0C0FFC 800C03FC 02001825 */ move $v1, $s0 -/* 0C1000 800C0400 02629823 */ subu $s3, $s3, $v0 -/* 0C1004 800C0404 00135E00 */ sll $t3, $s3, 0x18 -/* 0C1008 800C0408 1000FE8D */ b .L800BFE40 -/* 0C100C 800C040C 000B9E03 */ sra $s3, $t3, 0x18 -.L800C0410: -/* 0C1010 800C0410 240100CC */ li $at, 204 -/* 0C1014 800C0414 14610005 */ bne $v1, $at, .L800C042C -/* 0C1018 800C0418 02629824 */ and $s3, $s3, $v0 -/* 0C101C 800C041C 00029E00 */ sll $s3, $v0, 0x18 -/* 0C1020 800C0420 00137603 */ sra $t6, $s3, 0x18 -/* 0C1024 800C0424 1000FE86 */ b .L800BFE40 -/* 0C1028 800C0428 01C09825 */ move $s3, $t6 -.L800C042C: -/* 0C102C 800C042C 0013CE00 */ sll $t9, $s3, 0x18 -/* 0C1030 800C0430 1000FE83 */ b .L800BFE40 -/* 0C1034 800C0434 00199E03 */ sra $s3, $t9, 0x18 -glabel L800C0438 -/* 0C1038 800C0438 0C02FC42 */ jal m64_read_u8 -/* 0C103C 800C043C 02202025 */ move $a0, $s1 -/* 0C1040 800C0440 1000FE7F */ b .L800BFE40 -/* 0C1044 800C0444 A2420003 */ sb $v0, 3($s2) -glabel L800C0448 -/* 0C1048 800C0448 0C02FC47 */ jal m64_read_s16 -/* 0C104C 800C044C 02202025 */ move $a0, $s1 -/* 0C1050 800C0450 8E890014 */ lw $t1, 0x14($s4) -/* 0C1054 800C0454 304AFFFF */ andi $t2, $v0, 0xffff -/* 0C1058 800C0458 01535821 */ addu $t3, $t2, $s3 -/* 0C105C 800C045C 012B6021 */ addu $t4, $t1, $t3 -/* 0C1060 800C0460 1000FE77 */ b .L800BFE40 -/* 0C1064 800C0464 81930000 */ lb $s3, ($t4) -glabel L800C0468 -/* 0C1068 800C0468 0C02FC42 */ jal m64_read_u8 -/* 0C106C 800C046C 02202025 */ move $a0, $s1 -/* 0C1070 800C0470 92590000 */ lbu $t9, ($s2) -/* 0C1074 800C0474 00027880 */ sll $t7, $v0, 2 -/* 0C1078 800C0478 31F80004 */ andi $t8, $t7, 4 -/* 0C107C 800C047C 332DFFFB */ andi $t5, $t9, 0xfffb -/* 0C1080 800C0480 030D5025 */ or $t2, $t8, $t5 -/* 0C1084 800C0484 1000FE6E */ b .L800BFE40 -/* 0C1088 800C0488 A24A0000 */ sb $t2, ($s2) -glabel L800C048C -/* 0C108C 800C048C 0C02FC42 */ jal m64_read_u8 -/* 0C1090 800C0490 02202025 */ move $a0, $s1 -/* 0C1094 800C0494 1000FE6A */ b .L800BFE40 -/* 0C1098 800C0498 A2420002 */ sb $v0, 2($s2) -glabel L800C049C -/* 0C109C 800C049C 0C02FC42 */ jal m64_read_u8 -/* 0C10A0 800C04A0 02202025 */ move $a0, $s1 -/* 0C10A4 800C04A4 1000FE66 */ b .L800BFE40 -/* 0C10A8 800C04A8 A242007D */ sb $v0, 0x7d($s2) -glabel L800C04AC -/* 0C10AC 800C04AC 0C02FC42 */ jal m64_read_u8 -/* 0C10B0 800C04B0 02202025 */ move $a0, $s1 -/* 0C10B4 800C04B4 1000FE62 */ b .L800BFE40 -/* 0C10B8 800C04B8 A2420007 */ sb $v0, 7($s2) -glabel L800C04BC -/* 0C10BC 800C04BC 2401FFFF */ li $at, -1 -/* 0C10C0 800C04C0 1261FE5F */ beq $s3, $at, .L800BFE40 -/* 0C10C4 800C04C4 00000000 */ nop -/* 0C10C8 800C04C8 92240018 */ lbu $a0, 0x18($s1) -/* 0C10CC 800C04CC 8E2B0000 */ lw $t3, ($s1) -/* 0C10D0 800C04D0 8E490034 */ lw $t1, 0x34($s2) -/* 0C10D4 800C04D4 00046080 */ sll $t4, $a0, 2 -/* 0C10D8 800C04D8 022C7021 */ addu $t6, $s1, $t4 -/* 0C10DC 800C04DC ADCB0004 */ sw $t3, 4($t6) -/* 0C10E0 800C04E0 922F0018 */ lbu $t7, 0x18($s1) -/* 0C10E4 800C04E4 00131040 */ sll $v0, $s3, 1 -/* 0C10E8 800C04E8 01221821 */ addu $v1, $t1, $v0 -/* 0C10EC 800C04EC 25F90001 */ addiu $t9, $t7, 1 -/* 0C10F0 800C04F0 A2390018 */ sb $t9, 0x18($s1) -/* 0C10F4 800C04F4 906D0000 */ lbu $t5, ($v1) -/* 0C10F8 800C04F8 90780001 */ lbu $t8, 1($v1) -/* 0C10FC 800C04FC 8E8C0014 */ lw $t4, 0x14($s4) -/* 0C1100 800C0500 000D5200 */ sll $t2, $t5, 8 -/* 0C1104 800C0504 030A3821 */ addu $a3, $t8, $t2 -/* 0C1108 800C0508 30E9FFFF */ andi $t1, $a3, 0xffff -/* 0C110C 800C050C 01895821 */ addu $t3, $t4, $t1 -/* 0C1110 800C0510 1000FE4B */ b .L800BFE40 -/* 0C1114 800C0514 AE2B0000 */ sw $t3, ($s1) -glabel L800C0518 -/* 0C1118 800C0518 0C02FC42 */ jal m64_read_u8 -/* 0C111C 800C051C 02202025 */ move $a0, $s1 -/* 0C1120 800C0520 1000FE47 */ b .L800BFE40 -/* 0C1124 800C0524 A2420008 */ sb $v0, 8($s2) -glabel L800C0528 -/* 0C1128 800C0528 0C02FC47 */ jal m64_read_s16 -/* 0C112C 800C052C 02202025 */ move $a0, $s1 -/* 0C1130 800C0530 8E8E0014 */ lw $t6, 0x14($s4) -/* 0C1134 800C0534 304FFFFF */ andi $t7, $v0, 0xffff -/* 0C1138 800C0538 01CF1821 */ addu $v1, $t6, $t7 -/* 0C113C 800C053C 90790000 */ lbu $t9, ($v1) -/* 0C1140 800C0540 24630007 */ addiu $v1, $v1, 7 -/* 0C1144 800C0544 A2590003 */ sb $t9, 3($s2) -/* 0C1148 800C0548 906DFFFA */ lbu $t5, -6($v1) -/* 0C114C 800C054C 92590001 */ lbu $t9, 1($s2) -/* 0C1150 800C0550 A24D0002 */ sb $t5, 2($s2) -/* 0C1154 800C0554 9078FFFB */ lbu $t8, -5($v1) -/* 0C1158 800C0558 372D0020 */ ori $t5, $t9, 0x20 -/* 0C115C 800C055C A2580005 */ sb $t8, 5($s2) -/* 0C1160 800C0560 806AFFFC */ lb $t2, -4($v1) -/* 0C1164 800C0564 A64A001E */ sh $t2, 0x1e($s2) -/* 0C1168 800C0568 9069FFFD */ lbu $t1, -3($v1) -/* 0C116C 800C056C A2490009 */ sb $t1, 9($s2) -/* 0C1170 800C0570 906CFFFE */ lbu $t4, -2($v1) -/* 0C1174 800C0574 A24C000A */ sb $t4, 0xa($s2) -/* 0C1178 800C0578 906BFFFF */ lbu $t3, -1($v1) -/* 0C117C 800C057C A24B0004 */ sb $t3, 4($s2) -/* 0C1180 800C0580 906E0000 */ lbu $t6, ($v1) -/* 0C1184 800C0584 A24D0001 */ sb $t5, 1($s2) -/* 0C1188 800C0588 1000FE2D */ b .L800BFE40 -/* 0C118C 800C058C A24E0007 */ sb $t6, 7($s2) -glabel L800C0590 -/* 0C1190 800C0590 0C02FC42 */ jal m64_read_u8 -/* 0C1194 800C0594 02202025 */ move $a0, $s1 -/* 0C1198 800C0598 A2420003 */ sb $v0, 3($s2) -/* 0C119C 800C059C 0C02FC42 */ jal m64_read_u8 -/* 0C11A0 800C05A0 02202025 */ move $a0, $s1 -/* 0C11A4 800C05A4 A2420002 */ sb $v0, 2($s2) -/* 0C11A8 800C05A8 0C02FC42 */ jal m64_read_u8 -/* 0C11AC 800C05AC 02202025 */ move $a0, $s1 -/* 0C11B0 800C05B0 A2420005 */ sb $v0, 5($s2) -/* 0C11B4 800C05B4 0C02FC42 */ jal m64_read_u8 -/* 0C11B8 800C05B8 02202025 */ move $a0, $s1 -/* 0C11BC 800C05BC 0002C600 */ sll $t8, $v0, 0x18 -/* 0C11C0 800C05C0 00185603 */ sra $t2, $t8, 0x18 -/* 0C11C4 800C05C4 A64A001E */ sh $t2, 0x1e($s2) -/* 0C11C8 800C05C8 0C02FC42 */ jal m64_read_u8 -/* 0C11CC 800C05CC 02202025 */ move $a0, $s1 -/* 0C11D0 800C05D0 A2420009 */ sb $v0, 9($s2) -/* 0C11D4 800C05D4 0C02FC42 */ jal m64_read_u8 -/* 0C11D8 800C05D8 02202025 */ move $a0, $s1 -/* 0C11DC 800C05DC A242000A */ sb $v0, 0xa($s2) -/* 0C11E0 800C05E0 0C02FC42 */ jal m64_read_u8 -/* 0C11E4 800C05E4 02202025 */ move $a0, $s1 -/* 0C11E8 800C05E8 A2420004 */ sb $v0, 4($s2) -/* 0C11EC 800C05EC 0C02FC42 */ jal m64_read_u8 -/* 0C11F0 800C05F0 02202025 */ move $a0, $s1 -/* 0C11F4 800C05F4 924C0001 */ lbu $t4, 1($s2) -/* 0C11F8 800C05F8 A2420007 */ sb $v0, 7($s2) -/* 0C11FC 800C05FC 358B0020 */ ori $t3, $t4, 0x20 -/* 0C1200 800C0600 1000FE0F */ b .L800BFE40 -/* 0C1204 800C0604 A24B0001 */ sb $t3, 1($s2) -glabel L800C0608 -/* 0C1208 800C0608 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0C120C 800C060C 44815000 */ mtc1 $at, $f10 -/* 0C1210 800C0610 A6400012 */ sh $zero, 0x12($s2) -/* 0C1214 800C0614 A640000E */ sh $zero, 0xe($s2) -/* 0C1218 800C0618 A6400016 */ sh $zero, 0x16($s2) -/* 0C121C 800C061C A6400010 */ sh $zero, 0x10($s2) -/* 0C1220 800C0620 A640000C */ sh $zero, 0xc($s2) -/* 0C1224 800C0624 A6400014 */ sh $zero, 0x14($s2) -/* 0C1228 800C0628 1000FE05 */ b .L800BFE40 -/* 0C122C 800C062C E64A0030 */ swc1 $f10, 0x30($s2) -glabel L800C0630 -/* 0C1230 800C0630 0C02FC42 */ jal m64_read_u8 -/* 0C1234 800C0634 02202025 */ move $a0, $s1 -/* 0C1238 800C0638 1000FE01 */ b .L800BFE40 -/* 0C123C 800C063C A2420005 */ sb $v0, 5($s2) -glabel L800C0640 -/* 0C1240 800C0640 0C02FC47 */ jal m64_read_s16 -/* 0C1244 800C0644 02202025 */ move $a0, $s1 -/* 0C1248 800C0648 0C02FC42 */ jal m64_read_u8 -/* 0C124C 800C064C 02202025 */ move $a0, $s1 -/* 0C1250 800C0650 1000FDFB */ b .L800BFE40 -/* 0C1254 800C0654 00000000 */ nop -.L800C0658: -/* 0C1258 800C0658 306E00F0 */ andi $t6, $v1, 0xf0 -/* 0C125C 800C065C 3064000F */ andi $a0, $v1, 0xf -/* 0C1260 800C0660 2DC100B1 */ sltiu $at, $t6, 0xb1 -/* 0C1264 800C0664 1020FDF6 */ beqz $at, .L800BFE40 -/* 0C1268 800C0668 308800FF */ andi $t0, $a0, 0xff -/* 0C126C 800C066C 000E7080 */ sll $t6, $t6, 2 -/* 0C1270 800C0670 3C01800F */ lui $at, %hi(jpt_800F308C) -/* 0C1274 800C0674 002E0821 */ addu $at, $at, $t6 -/* 0C1278 800C0678 8C2E308C */ lw $t6, %lo(jpt_800F308C)($at) -/* 0C127C 800C067C 01C00008 */ jr $t6 -/* 0C1280 800C0680 00000000 */ nop -glabel L800C0684 -/* 0C1284 800C0684 308F00FF */ andi $t7, $a0, 0xff -/* 0C1288 800C0688 000FC880 */ sll $t9, $t7, 2 -/* 0C128C 800C068C 02596821 */ addu $t5, $s2, $t9 -/* 0C1290 800C0690 8DA30048 */ lw $v1, 0x48($t5) -/* 0C1294 800C0694 10600007 */ beqz $v1, .L800C06B4 -/* 0C1298 800C0698 00000000 */ nop -/* 0C129C 800C069C 8C730000 */ lw $s3, ($v1) -/* 0C12A0 800C06A0 0013C040 */ sll $t8, $s3, 1 -/* 0C12A4 800C06A4 001857C2 */ srl $t2, $t8, 0x1f -/* 0C12A8 800C06A8 000A4E00 */ sll $t1, $t2, 0x18 -/* 0C12AC 800C06AC 1000FDE4 */ b .L800BFE40 -/* 0C12B0 800C06B0 00099E03 */ sra $s3, $t1, 0x18 -.L800C06B4: -/* 0C12B4 800C06B4 1000FDE2 */ b .L800BFE40 -/* 0C12B8 800C06B8 2413FFFF */ li $s3, -1 -glabel L800C06BC -/* 0C12BC 800C06BC 308B00FF */ andi $t3, $a0, 0xff -/* 0C12C0 800C06C0 024B7021 */ addu $t6, $s2, $t3 -/* 0C12C4 800C06C4 1000FDDE */ b .L800BFE40 -/* 0C12C8 800C06C8 A1D30058 */ sb $s3, 0x58($t6) -glabel L800C06CC -/* 0C12CC 800C06CC 308300FF */ andi $v1, $a0, 0xff -/* 0C12D0 800C06D0 02432821 */ addu $a1, $s2, $v1 -/* 0C12D4 800C06D4 28610004 */ slti $at, $v1, 4 -/* 0C12D8 800C06D8 1020FDD9 */ beqz $at, .L800BFE40 -/* 0C12DC 800C06DC 80B30058 */ lb $s3, 0x58($a1) -/* 0C12E0 800C06E0 240FFFFF */ li $t7, -1 -/* 0C12E4 800C06E4 1000FDD6 */ b .L800BFE40 -/* 0C12E8 800C06E8 A0AF0058 */ sb $t7, 0x58($a1) -glabel L800C06EC -/* 0C12EC 800C06EC 309900FF */ andi $t9, $a0, 0xff -/* 0C12F0 800C06F0 02596821 */ addu $t5, $s2, $t9 -/* 0C12F4 800C06F4 81B80058 */ lb $t8, 0x58($t5) -/* 0C12F8 800C06F8 02789823 */ subu $s3, $s3, $t8 -/* 0C12FC 800C06FC 00135600 */ sll $t2, $s3, 0x18 -/* 0C1300 800C0700 1000FDCF */ b .L800BFE40 -/* 0C1304 800C0704 000A9E03 */ sra $s3, $t2, 0x18 -glabel L800C0708 -/* 0C1308 800C0708 308C00FF */ andi $t4, $a0, 0xff -/* 0C130C 800C070C 1000005C */ b .L800C0880 -/* 0C1310 800C0710 A64C001A */ sh $t4, 0x1a($s2) -glabel L800C0714 -/* 0C1314 800C0714 0C02FC47 */ jal m64_read_s16 -/* 0C1318 800C0718 02202025 */ move $a0, $s1 -/* 0C131C 800C071C 02003025 */ move $a2, $s0 -/* 0C1320 800C0720 30C5000F */ andi $a1, $a2, 0xf -/* 0C1324 800C0724 00A03025 */ move $a2, $a1 -/* 0C1328 800C0728 AFA50034 */ sw $a1, 0x34($sp) -/* 0C132C 800C072C 02402025 */ move $a0, $s2 -/* 0C1330 800C0730 0C02FA84 */ jal seq_channel_set_layer -/* 0C1334 800C0734 A7A20052 */ sh $v0, 0x52($sp) -/* 0C1338 800C0738 8FA60034 */ lw $a2, 0x34($sp) -/* 0C133C 800C073C 1440FDC0 */ bnez $v0, .L800BFE40 -/* 0C1340 800C0740 97A70052 */ lhu $a3, 0x52($sp) -/* 0C1344 800C0744 8E8E0014 */ lw $t6, 0x14($s4) -/* 0C1348 800C0748 0006C880 */ sll $t9, $a2, 2 -/* 0C134C 800C074C 02596821 */ addu $t5, $s2, $t9 -/* 0C1350 800C0750 8DB80048 */ lw $t8, 0x48($t5) -/* 0C1354 800C0754 01C77821 */ addu $t7, $t6, $a3 -/* 0C1358 800C0758 1000FDB9 */ b .L800BFE40 -/* 0C135C 800C075C AF0F0050 */ sw $t7, 0x50($t8) -glabel L800C0760 -/* 0C1360 800C0760 02002825 */ move $a1, $s0 -/* 0C1364 800C0764 30AA000F */ andi $t2, $a1, 0xf -/* 0C1368 800C0768 01402825 */ move $a1, $t2 -/* 0C136C 800C076C 0C02FAD5 */ jal seq_channel_layer_free -/* 0C1370 800C0770 02402025 */ move $a0, $s2 -/* 0C1374 800C0774 1000FDB2 */ b .L800BFE40 -/* 0C1378 800C0778 00000000 */ nop -glabel L800C077C -/* 0C137C 800C077C 2401FFFF */ li $at, -1 -/* 0C1380 800C0780 1261FDAF */ beq $s3, $at, .L800BFE40 -/* 0C1384 800C0784 02402025 */ move $a0, $s2 -/* 0C1388 800C0788 02003025 */ move $a2, $s0 -/* 0C138C 800C078C 30C5000F */ andi $a1, $a2, 0xf -/* 0C1390 800C0790 00A03025 */ move $a2, $a1 -/* 0C1394 800C0794 0C02FA84 */ jal seq_channel_set_layer -/* 0C1398 800C0798 AFA50034 */ sw $a1, 0x34($sp) -/* 0C139C 800C079C 2401FFFF */ li $at, -1 -/* 0C13A0 800C07A0 1041FDA7 */ beq $v0, $at, .L800BFE40 -/* 0C13A4 800C07A4 8FA60034 */ lw $a2, 0x34($sp) -/* 0C13A8 800C07A8 8E4C0034 */ lw $t4, 0x34($s2) -/* 0C13AC 800C07AC 00135840 */ sll $t3, $s3, 1 -/* 0C13B0 800C07B0 8E980014 */ lw $t8, 0x14($s4) -/* 0C13B4 800C07B4 018B1821 */ addu $v1, $t4, $t3 -/* 0C13B8 800C07B8 90790000 */ lbu $t9, ($v1) -/* 0C13BC 800C07BC 906E0001 */ lbu $t6, 1($v1) -/* 0C13C0 800C07C0 00064880 */ sll $t1, $a2, 2 -/* 0C13C4 800C07C4 00196A00 */ sll $t5, $t9, 8 -/* 0C13C8 800C07C8 02496021 */ addu $t4, $s2, $t1 -/* 0C13CC 800C07CC 01CD3821 */ addu $a3, $t6, $t5 -/* 0C13D0 800C07D0 8D8B0048 */ lw $t3, 0x48($t4) -/* 0C13D4 800C07D4 30EFFFFF */ andi $t7, $a3, 0xffff -/* 0C13D8 800C07D8 030F5021 */ addu $t2, $t8, $t7 -/* 0C13DC 800C07DC 1000FD98 */ b .L800BFE40 -/* 0C13E0 800C07E0 AD6A0050 */ sw $t2, 0x50($t3) -glabel L800C07E4 -/* 0C13E4 800C07E4 0C02FC47 */ jal m64_read_s16 -/* 0C13E8 800C07E8 02202025 */ move $a0, $s1 -/* 0C13EC 800C07EC 8E8E0014 */ lw $t6, 0x14($s4) -/* 0C13F0 800C07F0 02002825 */ move $a1, $s0 -/* 0C13F4 800C07F4 30B9000F */ andi $t9, $a1, 0xf -/* 0C13F8 800C07F8 304DFFFF */ andi $t5, $v0, 0xffff -/* 0C13FC 800C07FC 03202825 */ move $a1, $t9 -/* 0C1400 800C0800 02802025 */ move $a0, $s4 -/* 0C1404 800C0804 0C02FBA2 */ jal sequence_channel_enable -/* 0C1408 800C0808 01CD3021 */ addu $a2, $t6, $t5 -/* 0C140C 800C080C 1000FD8C */ b .L800BFE40 -/* 0C1410 800C0810 00000000 */ nop -glabel L800C0814 -/* 0C1414 800C0814 3218000F */ andi $t8, $s0, 0xf -/* 0C1418 800C0818 00184880 */ sll $t1, $t8, 2 -/* 0C141C 800C081C 02896021 */ addu $t4, $s4, $t1 -/* 0C1420 800C0820 0C02FAE9 */ jal sequence_channel_disable -/* 0C1424 800C0824 8D840030 */ lw $a0, 0x30($t4) -/* 0C1428 800C0828 1000FD85 */ b .L800BFE40 -/* 0C142C 800C082C 00000000 */ nop -glabel L800C0830 -/* 0C1430 800C0830 02202025 */ move $a0, $s1 -/* 0C1434 800C0834 0C02FC42 */ jal m64_read_u8 -/* 0C1438 800C0838 A3A80055 */ sb $t0, 0x55($sp) -/* 0C143C 800C083C 93A80055 */ lbu $t0, 0x55($sp) -/* 0C1440 800C0840 00085080 */ sll $t2, $t0, 2 -/* 0C1444 800C0844 028A5821 */ addu $t3, $s4, $t2 -/* 0C1448 800C0848 8D790030 */ lw $t9, 0x30($t3) -/* 0C144C 800C084C 03227021 */ addu $t6, $t9, $v0 -/* 0C1450 800C0850 1000FD7B */ b .L800BFE40 -/* 0C1454 800C0854 A1D30058 */ sb $s3, 0x58($t6) -glabel L800C0858 -/* 0C1458 800C0858 02202025 */ move $a0, $s1 -/* 0C145C 800C085C 0C02FC42 */ jal m64_read_u8 -/* 0C1460 800C0860 A3A80055 */ sb $t0, 0x55($sp) -/* 0C1464 800C0864 93A80055 */ lbu $t0, 0x55($sp) -/* 0C1468 800C0868 00086880 */ sll $t5, $t0, 2 -/* 0C146C 800C086C 028D7821 */ addu $t7, $s4, $t5 -/* 0C1470 800C0870 8DF80030 */ lw $t8, 0x30($t7) -/* 0C1474 800C0874 03024821 */ addu $t1, $t8, $v0 -/* 0C1478 800C0878 1000FD71 */ b .L800BFE40 -/* 0C147C 800C087C 81330058 */ lb $s3, 0x58($t1) -.L800C0880: -glabel L800C0880 -/* 0C1480 800C0880 02408825 */ move $s1, $s2 -.L800C0884: -/* 0C1484 800C0884 24120010 */ li $s2, 16 -/* 0C1488 800C0888 00008025 */ move $s0, $zero -.L800C088C: -/* 0C148C 800C088C 8E240048 */ lw $a0, 0x48($s1) -/* 0C1490 800C0890 50800004 */ beql $a0, $zero, .L800C08A4 -/* 0C1494 800C0894 26100004 */ addiu $s0, $s0, 4 -/* 0C1498 800C0898 0C02FC64 */ jal seq_channel_layer_process_script -/* 0C149C 800C089C 00000000 */ nop -/* 0C14A0 800C08A0 26100004 */ addiu $s0, $s0, 4 -.L800C08A4: -/* 0C14A4 800C08A4 1612FFF9 */ bne $s0, $s2, .L800C088C -/* 0C14A8 800C08A8 26310004 */ addiu $s1, $s1, 4 -.L800C08AC: -/* 0C14AC 800C08AC 8FBF002C */ lw $ra, 0x2c($sp) -.L800C08B0: -/* 0C14B0 800C08B0 8FB00018 */ lw $s0, 0x18($sp) -/* 0C14B4 800C08B4 8FB1001C */ lw $s1, 0x1c($sp) -/* 0C14B8 800C08B8 8FB20020 */ lw $s2, 0x20($sp) -/* 0C14BC 800C08BC 8FB30024 */ lw $s3, 0x24($sp) -/* 0C14C0 800C08C0 8FB40028 */ lw $s4, 0x28($sp) -/* 0C14C4 800C08C4 03E00008 */ jr $ra -/* 0C14C8 800C08C8 27BD0060 */ addiu $sp, $sp, 0x60 diff --git a/asm/non_matchings/audio/seqplayer/func_800C1138.s b/asm/non_matchings/audio/seqplayer/func_800C1138.s deleted file mode 100644 index b0168ea6f..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800C1138.s +++ /dev/null @@ -1,33 +0,0 @@ -glabel func_800C1138 -/* 0C1D38 800C1138 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0C1D3C 800C113C AFB20020 */ sw $s2, 0x20($sp) -/* 0C1D40 800C1140 AFB00018 */ sw $s0, 0x18($sp) -/* 0C1D44 800C1144 AFB1001C */ sw $s1, 0x1c($sp) -/* 0C1D48 800C1148 3C10803B */ lui $s0, %hi(gSequencePlayers) # $s0, 0x803b -/* 0C1D4C 800C114C 3C12803B */ lui $s2, %hi(gSequenceChannels) # $s2, 0x803b -/* 0C1D50 800C1150 AFBF0024 */ sw $ra, 0x24($sp) -/* 0C1D54 800C1154 AFA40028 */ sw $a0, 0x28($sp) -/* 0C1D58 800C1158 26521A30 */ addiu $s2, %lo(gSequenceChannels) # addiu $s2, $s2, 0x1a30 -/* 0C1D5C 800C115C 26101510 */ addiu $s0, %lo(gSequencePlayers) # addiu $s0, $s0, 0x1510 -/* 0C1D60 800C1160 24110001 */ li $s1, 1 -/* 0C1D64 800C1164 8E0E0000 */ lw $t6, ($s0) -.L800C1168: -/* 0C1D68 800C1168 000E7FC2 */ srl $t7, $t6, 0x1f -/* 0C1D6C 800C116C 562F0006 */ bnel $s1, $t7, .L800C1188 -/* 0C1D70 800C1170 26100148 */ addiu $s0, $s0, 0x148 -/* 0C1D74 800C1174 0C030233 */ jal func_800C08CC -/* 0C1D78 800C1178 02002025 */ move $a0, $s0 -/* 0C1D7C 800C117C 0C02F7FE */ jal sequence_player_process_sound -/* 0C1D80 800C1180 02002025 */ move $a0, $s0 -/* 0C1D84 800C1184 26100148 */ addiu $s0, $s0, 0x148 -.L800C1188: -/* 0C1D88 800C1188 5612FFF7 */ bnel $s0, $s2, .L800C1168 -/* 0C1D8C 800C118C 8E0E0000 */ lw $t6, ($s0) -/* 0C1D90 800C1190 0C02F2F1 */ jal process_notes -/* 0C1D94 800C1194 00000000 */ nop -/* 0C1D98 800C1198 8FBF0024 */ lw $ra, 0x24($sp) -/* 0C1D9C 800C119C 8FB00018 */ lw $s0, 0x18($sp) -/* 0C1DA0 800C11A0 8FB1001C */ lw $s1, 0x1c($sp) -/* 0C1DA4 800C11A4 8FB20020 */ lw $s2, 0x20($sp) -/* 0C1DA8 800C11A8 03E00008 */ jr $ra -/* 0C1DAC 800C11AC 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/audio/seqplayer/seq_channel_layer_process_script.s b/asm/non_matchings/audio/seqplayer/seq_channel_layer_process_script.s deleted file mode 100644 index 0eafc89e9..000000000 --- a/asm/non_matchings/audio/seqplayer/seq_channel_layer_process_script.s +++ /dev/null @@ -1,807 +0,0 @@ -.section .late_rodata - -glabel jpt_800F2F10 -.word L800BF3E8, L800BF600, L800BF600, L800BF380 -.word L800BF348, L800BF600, L800BF600, L800BF3C8 -.word L800BF308, L800BF600, L800BF600, L800BF2D0 - -glabel jpt_800F2F40 -.word L800BF408, L800BF450, L800BF4B0, L800BF478 -.word L800BF478, L800BF4C4, L800BF534, L800BF5BC -.word L800BF450, L800BF408, L800BF5C4, L800BF5F0 - -glabel D_800F2F70 -.float 16129.0 - -glabel D_800F2F74 -.float 16129.0 - -glabel D_800F2F78 -.float 16129.0 - -glabel jpt_800F2F7C -.word L800BFA20, L800BFA28, L800BFA20, L800BFA28 -.word L800BFA20 - -.section .text - -glabel seq_channel_layer_process_script -/* 0BFD90 800BF190 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 0BFD94 800BF194 240E0001 */ li $t6, 1 -/* 0BFD98 800BF198 AFBF002C */ sw $ra, 0x2c($sp) -/* 0BFD9C 800BF19C AFB40028 */ sw $s4, 0x28($sp) -/* 0BFDA0 800BF1A0 AFB30024 */ sw $s3, 0x24($sp) -/* 0BFDA4 800BF1A4 AFB20020 */ sw $s2, 0x20($sp) -/* 0BFDA8 800BF1A8 AFB1001C */ sw $s1, 0x1c($sp) -/* 0BFDAC 800BF1AC AFB00018 */ sw $s0, 0x18($sp) -/* 0BFDB0 800BF1B0 AFAE0044 */ sw $t6, 0x44($sp) -/* 0BFDB4 800BF1B4 8C820000 */ lw $v0, ($a0) -/* 0BFDB8 800BF1B8 00808825 */ move $s1, $a0 -/* 0BFDBC 800BF1BC 00027FC2 */ srl $t7, $v0, 0x1f -/* 0BFDC0 800BF1C0 51E002A2 */ beql $t7, $zero, .L800BFC4C -/* 0BFDC4 800BF1C4 8FBF002C */ lw $ra, 0x2c($sp) -/* 0BFDC8 800BF1C8 84830038 */ lh $v1, 0x38($a0) -/* 0BFDCC 800BF1CC 00024080 */ sll $t0, $v0, 2 -/* 0BFDD0 800BF1D0 000278C0 */ sll $t7, $v0, 3 -/* 0BFDD4 800BF1D4 28610002 */ slti $at, $v1, 2 -/* 0BFDD8 800BF1D8 1420000E */ bnez $at, .L800BF214 -/* 0BFDDC 800BF1DC 2478FFFF */ addiu $t8, $v1, -1 -/* 0BFDE0 800BF1E0 05000299 */ bltz $t0, .L800BFC48 -/* 0BFDE4 800BF1E4 A4980038 */ sh $t8, 0x38($a0) -/* 0BFDE8 800BF1E8 8489003A */ lh $t1, 0x3a($a0) -/* 0BFDEC 800BF1EC 848A0038 */ lh $t2, 0x38($a0) -/* 0BFDF0 800BF1F0 012A082A */ slt $at, $t1, $t2 -/* 0BFDF4 800BF1F4 54200295 */ bnel $at, $zero, .L800BFC4C -/* 0BFDF8 800BF1F8 8FBF002C */ lw $ra, 0x2c($sp) -/* 0BFDFC 800BF1FC 0C02F448 */ jal seq_channel_layer_note_decay -/* 0BFE00 800BF200 00000000 */ nop -/* 0BFE04 800BF204 922C0000 */ lbu $t4, ($s1) -/* 0BFE08 800BF208 358D0020 */ ori $t5, $t4, 0x20 -/* 0BFE0C 800BF20C 1000028E */ b .L800BFC48 -/* 0BFE10 800BF210 A22D0000 */ sb $t5, ($s1) -.L800BF214: -/* 0BFE14 800BF214 05E20004 */ bltzl $t7, .L800BF228 -/* 0BFE18 800BF218 92220008 */ lbu $v0, 8($s1) -/* 0BFE1C 800BF21C 0C02F448 */ jal seq_channel_layer_note_decay -/* 0BFE20 800BF220 02202025 */ move $a0, $s1 -/* 0BFE24 800BF224 92220008 */ lbu $v0, 8($s1) -.L800BF228: -/* 0BFE28 800BF228 2401FF7F */ li $at, -129 -/* 0BFE2C 800BF22C 0041C024 */ and $t8, $v0, $at -/* 0BFE30 800BF230 24010001 */ li $at, 1 -/* 0BFE34 800BF234 13010003 */ beq $t8, $at, .L800BF244 -/* 0BFE38 800BF238 24010002 */ li $at, 2 -/* 0BFE3C 800BF23C 57010003 */ bnel $t8, $at, .L800BF24C -/* 0BFE40 800BF240 8E22004C */ lw $v0, 0x4c($s1) -.L800BF244: -/* 0BFE44 800BF244 A2200008 */ sb $zero, 8($s1) -/* 0BFE48 800BF248 8E22004C */ lw $v0, 0x4c($s1) -.L800BF24C: -/* 0BFE4C 800BF24C 92280000 */ lbu $t0, ($s1) -/* 0BFE50 800BF250 26300050 */ addiu $s0, $s1, 0x50 -/* 0BFE54 800BF254 8C540044 */ lw $s4, 0x44($v0) -/* 0BFE58 800BF258 35090004 */ ori $t1, $t0, 4 -/* 0BFE5C 800BF25C A2290000 */ sb $t1, ($s1) -/* 0BFE60 800BF260 97B3004A */ lhu $s3, 0x4a($sp) -/* 0BFE64 800BF264 AFA20068 */ sw $v0, 0x68($sp) -.L800BF268: -/* 0BFE68 800BF268 0C02FC42 */ jal m64_read_u8 -/* 0BFE6C 800BF26C 02002025 */ move $a0, $s0 -/* 0BFE70 800BF270 284100C1 */ slti $at, $v0, 0xc1 -/* 0BFE74 800BF274 305200FF */ andi $s2, $v0, 0xff -/* 0BFE78 800BF278 142000FD */ bnez $at, .L800BF670 -/* 0BFE7C 800BF27C 00402825 */ move $a1, $v0 -/* 0BFE80 800BF280 284100CD */ slti $at, $v0, 0xcd -/* 0BFE84 800BF284 1420000A */ bnez $at, .L800BF2B0 -/* 0BFE88 800BF288 24ABFF3F */ addiu $t3, $a1, -0xc1 -/* 0BFE8C 800BF28C 244AFF0C */ addiu $t2, $v0, -0xf4 -/* 0BFE90 800BF290 2D41000C */ sltiu $at, $t2, 0xc -/* 0BFE94 800BF294 102000DA */ beqz $at, .L800BF600 -/* 0BFE98 800BF298 000A5080 */ sll $t2, $t2, 2 -/* 0BFE9C 800BF29C 3C01800F */ lui $at, %hi(jpt_800F2F10) -/* 0BFEA0 800BF2A0 002A0821 */ addu $at, $at, $t2 -/* 0BFEA4 800BF2A4 8C2A2F10 */ lw $t2, %lo(jpt_800F2F10)($at) -/* 0BFEA8 800BF2A8 01400008 */ jr $t2 -/* 0BFEAC 800BF2AC 00000000 */ nop -.L800BF2B0: -/* 0BFEB0 800BF2B0 2D61000C */ sltiu $at, $t3, 0xc -/* 0BFEB4 800BF2B4 102000D2 */ beqz $at, .L800BF600 -/* 0BFEB8 800BF2B8 000B5880 */ sll $t3, $t3, 2 -/* 0BFEBC 800BF2BC 3C01800F */ lui $at, %hi(jpt_800F2F40) -/* 0BFEC0 800BF2C0 002B0821 */ addu $at, $at, $t3 -/* 0BFEC4 800BF2C4 8C2B2F40 */ lw $t3, %lo(jpt_800F2F40)($at) -/* 0BFEC8 800BF2C8 01600008 */ jr $t3 -/* 0BFECC 800BF2CC 00000000 */ nop -glabel L800BF2D0 -/* 0BFED0 800BF2D0 92030018 */ lbu $v1, 0x18($s0) -/* 0BFED4 800BF2D4 14600005 */ bnez $v1, .L800BF2EC -/* 0BFED8 800BF2D8 2462FFFF */ addiu $v0, $v1, -1 -/* 0BFEDC 800BF2DC 0C02FAC6 */ jal seq_channel_layer_disable -/* 0BFEE0 800BF2E0 02202025 */ move $a0, $s1 -/* 0BFEE4 800BF2E4 10000259 */ b .L800BFC4C -/* 0BFEE8 800BF2E8 8FBF002C */ lw $ra, 0x2c($sp) -.L800BF2EC: -/* 0BFEEC 800BF2EC 304C00FF */ andi $t4, $v0, 0xff -/* 0BFEF0 800BF2F0 000C6880 */ sll $t5, $t4, 2 -/* 0BFEF4 800BF2F4 020D7021 */ addu $t6, $s0, $t5 -/* 0BFEF8 800BF2F8 A20C0018 */ sb $t4, 0x18($s0) -/* 0BFEFC 800BF2FC 8DCF0004 */ lw $t7, 4($t6) -/* 0BFF00 800BF300 1000FFD9 */ b .L800BF268 -/* 0BFF04 800BF304 AE0F0000 */ sw $t7, ($s0) -glabel L800BF308 -/* 0BFF08 800BF308 0C02FC47 */ jal m64_read_s16 -/* 0BFF0C 800BF30C 02002025 */ move $a0, $s0 -/* 0BFF10 800BF310 92190018 */ lbu $t9, 0x18($s0) -/* 0BFF14 800BF314 8E180000 */ lw $t8, ($s0) -/* 0BFF18 800BF318 304DFFFF */ andi $t5, $v0, 0xffff -/* 0BFF1C 800BF31C 00194080 */ sll $t0, $t9, 2 -/* 0BFF20 800BF320 02084821 */ addu $t1, $s0, $t0 -/* 0BFF24 800BF324 AD380004 */ sw $t8, 4($t1) -/* 0BFF28 800BF328 920A0018 */ lbu $t2, 0x18($s0) -/* 0BFF2C 800BF32C 3053FFFF */ andi $s3, $v0, 0xffff -/* 0BFF30 800BF330 254B0001 */ addiu $t3, $t2, 1 -/* 0BFF34 800BF334 A20B0018 */ sb $t3, 0x18($s0) -/* 0BFF38 800BF338 8E8C0014 */ lw $t4, 0x14($s4) -/* 0BFF3C 800BF33C 018D7021 */ addu $t6, $t4, $t5 -/* 0BFF40 800BF340 1000FFC9 */ b .L800BF268 -/* 0BFF44 800BF344 AE0E0000 */ sw $t6, ($s0) -glabel L800BF348 -/* 0BFF48 800BF348 0C02FC42 */ jal m64_read_u8 -/* 0BFF4C 800BF34C 02002025 */ move $a0, $s0 -/* 0BFF50 800BF350 920F0018 */ lbu $t7, 0x18($s0) -/* 0BFF54 800BF354 020FC821 */ addu $t9, $s0, $t7 -/* 0BFF58 800BF358 A3220014 */ sb $v0, 0x14($t9) -/* 0BFF5C 800BF35C 92180018 */ lbu $t8, 0x18($s0) -/* 0BFF60 800BF360 8E080000 */ lw $t0, ($s0) -/* 0BFF64 800BF364 00184880 */ sll $t1, $t8, 2 -/* 0BFF68 800BF368 02095021 */ addu $t2, $s0, $t1 -/* 0BFF6C 800BF36C AD480004 */ sw $t0, 4($t2) -/* 0BFF70 800BF370 920B0018 */ lbu $t3, 0x18($s0) -/* 0BFF74 800BF374 256C0001 */ addiu $t4, $t3, 1 -/* 0BFF78 800BF378 1000FFBB */ b .L800BF268 -/* 0BFF7C 800BF37C A20C0018 */ sb $t4, 0x18($s0) -glabel L800BF380 -/* 0BFF80 800BF380 920D0018 */ lbu $t5, 0x18($s0) -/* 0BFF84 800BF384 020D1021 */ addu $v0, $s0, $t5 -/* 0BFF88 800BF388 904E0013 */ lbu $t6, 0x13($v0) -/* 0BFF8C 800BF38C 25CFFFFF */ addiu $t7, $t6, -1 -/* 0BFF90 800BF390 A04F0013 */ sb $t7, 0x13($v0) -/* 0BFF94 800BF394 92030018 */ lbu $v1, 0x18($s0) -/* 0BFF98 800BF398 0203C821 */ addu $t9, $s0, $v1 -/* 0BFF9C 800BF39C 93380013 */ lbu $t8, 0x13($t9) -/* 0BFFA0 800BF3A0 00602025 */ move $a0, $v1 -/* 0BFFA4 800BF3A4 00044880 */ sll $t1, $a0, 2 -/* 0BFFA8 800BF3A8 13000005 */ beqz $t8, .L800BF3C0 -/* 0BFFAC 800BF3AC 246BFFFF */ addiu $t3, $v1, -1 -/* 0BFFB0 800BF3B0 02094021 */ addu $t0, $s0, $t1 -/* 0BFFB4 800BF3B4 8D0A0000 */ lw $t2, ($t0) -/* 0BFFB8 800BF3B8 1000FFAB */ b .L800BF268 -/* 0BFFBC 800BF3BC AE0A0000 */ sw $t2, ($s0) -.L800BF3C0: -/* 0BFFC0 800BF3C0 1000FFA9 */ b .L800BF268 -/* 0BFFC4 800BF3C4 A20B0018 */ sb $t3, 0x18($s0) -glabel L800BF3C8 -/* 0BFFC8 800BF3C8 0C02FC47 */ jal m64_read_s16 -/* 0BFFCC 800BF3CC 02002025 */ move $a0, $s0 -/* 0BFFD0 800BF3D0 8E8C0014 */ lw $t4, 0x14($s4) -/* 0BFFD4 800BF3D4 304DFFFF */ andi $t5, $v0, 0xffff -/* 0BFFD8 800BF3D8 3053FFFF */ andi $s3, $v0, 0xffff -/* 0BFFDC 800BF3DC 018D7021 */ addu $t6, $t4, $t5 -/* 0BFFE0 800BF3E0 1000FFA1 */ b .L800BF268 -/* 0BFFE4 800BF3E4 AE0E0000 */ sw $t6, ($s0) -glabel L800BF3E8 -/* 0BFFE8 800BF3E8 0C02FC42 */ jal m64_read_u8 -/* 0BFFEC 800BF3EC 02002025 */ move $a0, $s0 -/* 0BFFF0 800BF3F0 8E0F0000 */ lw $t7, ($s0) -/* 0BFFF4 800BF3F4 0002CE00 */ sll $t9, $v0, 0x18 -/* 0BFFF8 800BF3F8 0019C603 */ sra $t8, $t9, 0x18 -/* 0BFFFC 800BF3FC 01F84821 */ addu $t1, $t7, $t8 -/* 0C0000 800BF400 1000FF99 */ b .L800BF268 -/* 0C0004 800BF404 AE090000 */ sw $t1, ($s0) -glabel L800BF408 -/* 0C0008 800BF408 8E030000 */ lw $v1, ($s0) -/* 0C000C 800BF40C 240100C1 */ li $at, 193 -/* 0C0010 800BF410 90640000 */ lbu $a0, ($v1) -/* 0C0014 800BF414 24680001 */ addiu $t0, $v1, 1 -/* 0C0018 800BF418 14A1000B */ bne $a1, $at, .L800BF448 -/* 0C001C 800BF41C AE080000 */ sw $t0, ($s0) -/* 0C0020 800BF420 00840019 */ multu $a0, $a0 -/* 0C0024 800BF424 3C01800F */ lui $at, %hi(D_800F2F70) # $at, 0x800f -/* 0C0028 800BF428 C4282F70 */ lwc1 $f8, %lo(D_800F2F70)($at) -/* 0C002C 800BF42C 00005012 */ mflo $t2 -/* 0C0030 800BF430 448A2000 */ mtc1 $t2, $f4 -/* 0C0034 800BF434 00000000 */ nop -/* 0C0038 800BF438 468021A0 */ cvt.s.w $f6, $f4 -/* 0C003C 800BF43C 46083283 */ div.s $f10, $f6, $f8 -/* 0C0040 800BF440 1000FF89 */ b .L800BF268 -/* 0C0044 800BF444 E62A0028 */ swc1 $f10, 0x28($s1) -.L800BF448: -/* 0C0048 800BF448 1000FF87 */ b .L800BF268 -/* 0C004C 800BF44C A2240005 */ sb $a0, 5($s1) -glabel L800BF450 -/* 0C0050 800BF450 8E030000 */ lw $v1, ($s0) -/* 0C0054 800BF454 240100C9 */ li $at, 201 -/* 0C0058 800BF458 90640000 */ lbu $a0, ($v1) -/* 0C005C 800BF45C 246B0001 */ addiu $t3, $v1, 1 -/* 0C0060 800BF460 14A10003 */ bne $a1, $at, .L800BF470 -/* 0C0064 800BF464 AE0B0000 */ sw $t3, ($s0) -/* 0C0068 800BF468 1000FF7F */ b .L800BF268 -/* 0C006C 800BF46C A2240003 */ sb $a0, 3($s1) -.L800BF470: -/* 0C0070 800BF470 1000FF7D */ b .L800BF268 -/* 0C0074 800BF474 A6240022 */ sh $a0, 0x22($s1) -glabel L800BF478 -/* 0C0078 800BF478 240100C4 */ li $at, 196 -/* 0C007C 800BF47C 54A10006 */ bnel $a1, $at, .L800BF498 -/* 0C0080 800BF480 92390000 */ lbu $t9, ($s1) -/* 0C0084 800BF484 922D0000 */ lbu $t5, ($s1) -/* 0C0088 800BF488 35AE0010 */ ori $t6, $t5, 0x10 -/* 0C008C 800BF48C 10000004 */ b .L800BF4A0 -/* 0C0090 800BF490 A22E0000 */ sb $t6, ($s1) -/* 0C0094 800BF494 92390000 */ lbu $t9, ($s1) -.L800BF498: -/* 0C0098 800BF498 332FFFEF */ andi $t7, $t9, 0xffef -/* 0C009C 800BF49C A22F0000 */ sb $t7, ($s1) -.L800BF4A0: -/* 0C00A0 800BF4A0 0C02F448 */ jal seq_channel_layer_note_decay -/* 0C00A4 800BF4A4 02202025 */ move $a0, $s1 -/* 0C00A8 800BF4A8 1000FF6F */ b .L800BF268 -/* 0C00AC 800BF4AC 00000000 */ nop -glabel L800BF4B0 -/* 0C00B0 800BF4B0 0C02FC53 */ jal m64_read_compressed_u16 -/* 0C00B4 800BF4B4 02002025 */ move $a0, $s0 -/* 0C00B8 800BF4B8 3053FFFF */ andi $s3, $v0, 0xffff -/* 0C00BC 800BF4BC 1000FF6A */ b .L800BF268 -/* 0C00C0 800BF4C0 A6220034 */ sh $v0, 0x34($s1) -glabel L800BF4C4 -/* 0C00C4 800BF4C4 0C02FC42 */ jal m64_read_u8 -/* 0C00C8 800BF4C8 02002025 */ move $a0, $s0 -/* 0C00CC 800BF4CC 2841007F */ slti $at, $v0, 0x7f -/* 0C00D0 800BF4D0 305200FF */ andi $s2, $v0, 0xff -/* 0C00D4 800BF4D4 1420000D */ bnez $at, .L800BF50C -/* 0C00D8 800BF4D8 00402825 */ move $a1, $v0 -/* 0C00DC 800BF4DC 2401007F */ li $at, 127 -/* 0C00E0 800BF4E0 54410004 */ bnel $v0, $at, .L800BF4F4 -/* 0C00E4 800BF4E4 A2220001 */ sb $v0, 1($s1) -/* 0C00E8 800BF4E8 10000003 */ b .L800BF4F8 -/* 0C00EC 800BF4EC A2200001 */ sb $zero, 1($s1) -/* 0C00F0 800BF4F0 A2220001 */ sb $v0, 1($s1) -.L800BF4F4: -/* 0C00F4 800BF4F4 AE200044 */ sw $zero, 0x44($s1) -.L800BF4F8: -/* 0C00F8 800BF4F8 240100FF */ li $at, 255 -/* 0C00FC 800BF4FC 14A1FF5A */ bne $a1, $at, .L800BF268 -/* 0C0100 800BF500 00000000 */ nop -/* 0C0104 800BF504 1000FF58 */ b .L800BF268 -/* 0C0108 800BF508 A2200018 */ sb $zero, 0x18($s1) -.L800BF50C: -/* 0C010C 800BF50C 8FA40068 */ lw $a0, 0x68($sp) -/* 0C0110 800BF510 324500FF */ andi $a1, $s2, 0xff -/* 0C0114 800BF514 26260044 */ addiu $a2, $s1, 0x44 -/* 0C0118 800BF518 0C02FF1A */ jal get_instrument -/* 0C011C 800BF51C 26270018 */ addiu $a3, $s1, 0x18 -/* 0C0120 800BF520 1440FF51 */ bnez $v0, .L800BF268 -/* 0C0124 800BF524 A2220001 */ sb $v0, 1($s1) -/* 0C0128 800BF528 241800FF */ li $t8, 255 -/* 0C012C 800BF52C 1000FF4E */ b .L800BF268 -/* 0C0130 800BF530 A2380001 */ sb $t8, 1($s1) -glabel L800BF534 -/* 0C0134 800BF534 0C02FC42 */ jal m64_read_u8 -/* 0C0138 800BF538 02002025 */ move $a0, $s0 -/* 0C013C 800BF53C A2220008 */ sb $v0, 8($s1) -/* 0C0140 800BF540 0C02FC42 */ jal m64_read_u8 -/* 0C0144 800BF544 02002025 */ move $a0, $s0 -/* 0C0148 800BF548 8FA90068 */ lw $t1, 0x68($sp) -/* 0C014C 800BF54C 862B0022 */ lh $t3, 0x22($s1) -/* 0C0150 800BF550 868D000C */ lh $t5, 0xc($s4) -/* 0C0154 800BF554 8528001E */ lh $t0, 0x1e($t1) -/* 0C0158 800BF558 00485021 */ addu $t2, $v0, $t0 -/* 0C015C 800BF55C 014B6021 */ addu $t4, $t2, $t3 -/* 0C0160 800BF560 018D9021 */ addu $s2, $t4, $t5 -/* 0C0164 800BF564 324E00FF */ andi $t6, $s2, 0xff -/* 0C0168 800BF568 29C10080 */ slti $at, $t6, 0x80 -/* 0C016C 800BF56C 14200002 */ bnez $at, .L800BF578 -/* 0C0170 800BF570 01C09025 */ move $s2, $t6 -/* 0C0174 800BF574 00009025 */ move $s2, $zero -.L800BF578: -/* 0C0178 800BF578 92390008 */ lbu $t9, 8($s1) -/* 0C017C 800BF57C A2320004 */ sb $s2, 4($s1) -/* 0C0180 800BF580 332F0080 */ andi $t7, $t9, 0x80 -/* 0C0184 800BF584 11E00008 */ beqz $t7, .L800BF5A8 -/* 0C0188 800BF588 00000000 */ nop -/* 0C018C 800BF58C 8E180000 */ lw $t8, ($s0) -/* 0C0190 800BF590 93090000 */ lbu $t1, ($t8) -/* 0C0194 800BF594 A6290020 */ sh $t1, 0x20($s1) -/* 0C0198 800BF598 8E080000 */ lw $t0, ($s0) -/* 0C019C 800BF59C 250A0001 */ addiu $t2, $t0, 1 -/* 0C01A0 800BF5A0 1000FF31 */ b .L800BF268 -/* 0C01A4 800BF5A4 AE0A0000 */ sw $t2, ($s0) -.L800BF5A8: -/* 0C01A8 800BF5A8 0C02FC53 */ jal m64_read_compressed_u16 -/* 0C01AC 800BF5AC 02002025 */ move $a0, $s0 -/* 0C01B0 800BF5B0 3053FFFF */ andi $s3, $v0, 0xffff -/* 0C01B4 800BF5B4 1000FF2C */ b .L800BF268 -/* 0C01B8 800BF5B8 A6220020 */ sh $v0, 0x20($s1) -glabel L800BF5BC -/* 0C01BC 800BF5BC 1000FF2A */ b .L800BF268 -/* 0C01C0 800BF5C0 A2200008 */ sb $zero, 8($s1) -glabel L800BF5C4 -/* 0C01C4 800BF5C4 0C02FC47 */ jal m64_read_s16 -/* 0C01C8 800BF5C8 02002025 */ move $a0, $s0 -/* 0C01CC 800BF5CC 8E8B0014 */ lw $t3, 0x14($s4) -/* 0C01D0 800BF5D0 304CFFFF */ andi $t4, $v0, 0xffff -/* 0C01D4 800BF5D4 3053FFFF */ andi $s3, $v0, 0xffff -/* 0C01D8 800BF5D8 016C6821 */ addu $t5, $t3, $t4 -/* 0C01DC 800BF5DC AE2D001C */ sw $t5, 0x1c($s1) -/* 0C01E0 800BF5E0 0C02FC42 */ jal m64_read_u8 -/* 0C01E4 800BF5E4 02002025 */ move $a0, $s0 -/* 0C01E8 800BF5E8 1000FF1F */ b .L800BF268 -/* 0C01EC 800BF5EC A2220018 */ sb $v0, 0x18($s1) -glabel L800BF5F0 -/* 0C01F0 800BF5F0 92390000 */ lbu $t9, ($s1) -/* 0C01F4 800BF5F4 372F0002 */ ori $t7, $t9, 2 -/* 0C01F8 800BF5F8 1000FF1B */ b .L800BF268 -/* 0C01FC 800BF5FC A22F0000 */ sb $t7, ($s1) -.L800BF600: -glabel L800BF600 -/* 0C0200 800BF600 30A300F0 */ andi $v1, $a1, 0xf0 -/* 0C0204 800BF604 240100D0 */ li $at, 208 -/* 0C0208 800BF608 10610005 */ beq $v1, $at, .L800BF620 -/* 0C020C 800BF60C 240100E0 */ li $at, 224 -/* 0C0210 800BF610 50610012 */ beql $v1, $at, .L800BF65C -/* 0C0214 800BF614 8E8B0090 */ lw $t3, 0x90($s4) -/* 0C0218 800BF618 1000FF13 */ b .L800BF268 -/* 0C021C 800BF61C 00000000 */ nop -.L800BF620: -/* 0C0220 800BF620 8E98008C */ lw $t8, 0x8c($s4) -/* 0C0224 800BF624 30A9000F */ andi $t1, $a1, 0xf -/* 0C0228 800BF628 3C01800F */ lui $at, %hi(D_800F2F74) # $at, 0x800f -/* 0C022C 800BF62C 03094021 */ addu $t0, $t8, $t1 -/* 0C0230 800BF630 91130000 */ lbu $s3, ($t0) -/* 0C0234 800BF634 C4242F74 */ lwc1 $f4, %lo(D_800F2F74)($at) -/* 0C0238 800BF638 02730019 */ multu $s3, $s3 -/* 0C023C 800BF63C 00005012 */ mflo $t2 -/* 0C0240 800BF640 448A8000 */ mtc1 $t2, $f16 -/* 0C0244 800BF644 00000000 */ nop -/* 0C0248 800BF648 468084A0 */ cvt.s.w $f18, $f16 -/* 0C024C 800BF64C 46049183 */ div.s $f6, $f18, $f4 -/* 0C0250 800BF650 1000FF05 */ b .L800BF268 -/* 0C0254 800BF654 E6260028 */ swc1 $f6, 0x28($s1) -/* 0C0258 800BF658 8E8B0090 */ lw $t3, 0x90($s4) -.L800BF65C: -/* 0C025C 800BF65C 30AC000F */ andi $t4, $a1, 0xf -/* 0C0260 800BF660 016C6821 */ addu $t5, $t3, $t4 -/* 0C0264 800BF664 91AE0000 */ lbu $t6, ($t5) -/* 0C0268 800BF668 1000FEFF */ b .L800BF268 -/* 0C026C 800BF66C A22E0003 */ sb $t6, 3($s1) -.L800BF670: -/* 0C0270 800BF670 240100C0 */ li $at, 192 -/* 0C0274 800BF674 14A10008 */ bne $a1, $at, .L800BF698 -/* 0C0278 800BF678 30A300C0 */ andi $v1, $a1, 0xc0 -/* 0C027C 800BF67C 0C02FC53 */ jal m64_read_compressed_u16 -/* 0C0280 800BF680 02002025 */ move $a0, $s0 -/* 0C0284 800BF684 922F0000 */ lbu $t7, ($s1) -/* 0C0288 800BF688 A6220038 */ sh $v0, 0x38($s1) -/* 0C028C 800BF68C 35F80020 */ ori $t8, $t7, 0x20 -/* 0C0290 800BF690 10000133 */ b .L800BFB60 -/* 0C0294 800BF694 A2380000 */ sb $t8, ($s1) -.L800BF698: -/* 0C0298 800BF698 92290000 */ lbu $t1, ($s1) -/* 0C029C 800BF69C 24010001 */ li $at, 1 -/* 0C02A0 800BF6A0 3128FFDF */ andi $t0, $t1, 0xffdf -/* 0C02A4 800BF6A4 A2280000 */ sb $t0, ($s1) -/* 0C02A8 800BF6A8 8FAA0068 */ lw $t2, 0x68($sp) -/* 0C02AC 800BF6AC 8D4B0000 */ lw $t3, ($t2) -/* 0C02B0 800BF6B0 000B6180 */ sll $t4, $t3, 6 -/* 0C02B4 800BF6B4 000C6FC2 */ srl $t5, $t4, 0x1f -/* 0C02B8 800BF6B8 15A10041 */ bne $t5, $at, .L800BF7C0 -/* 0C02BC 800BF6BC 00000000 */ nop -/* 0C02C0 800BF6C0 30A300C0 */ andi $v1, $a1, 0xc0 -/* 0C02C4 800BF6C4 10600007 */ beqz $v1, .L800BF6E4 -/* 0C02C8 800BF6C8 24010040 */ li $at, 64 -/* 0C02CC 800BF6CC 10610014 */ beq $v1, $at, .L800BF720 -/* 0C02D0 800BF6D0 24010080 */ li $at, 128 -/* 0C02D4 800BF6D4 1061001D */ beq $v1, $at, .L800BF74C -/* 0C02D8 800BF6D8 02602025 */ move $a0, $s3 -/* 0C02DC 800BF6DC 10000026 */ b .L800BF778 -/* 0C02E0 800BF6E0 8FA60034 */ lw $a2, 0x34($sp) -.L800BF6E4: -/* 0C02E4 800BF6E4 0C02FC53 */ jal m64_read_compressed_u16 -/* 0C02E8 800BF6E8 02002025 */ move $a0, $s0 -/* 0C02EC 800BF6EC 8E030000 */ lw $v1, ($s0) -/* 0C02F0 800BF6F0 3053FFFF */ andi $s3, $v0, 0xffff -/* 0C02F4 800BF6F4 02602025 */ move $a0, $s3 -/* 0C02F8 800BF6F8 90660000 */ lbu $a2, ($v1) -/* 0C02FC 800BF6FC 246E0001 */ addiu $t6, $v1, 1 -/* 0C0300 800BF700 AE0E0000 */ sw $t6, ($s0) -/* 0C0304 800BF704 91CF0000 */ lbu $t7, ($t6) -/* 0C0308 800BF708 A22F0003 */ sb $t7, 3($s1) -/* 0C030C 800BF70C 8E180000 */ lw $t8, ($s0) -/* 0C0310 800BF710 27090001 */ addiu $t1, $t8, 1 -/* 0C0314 800BF714 AE090000 */ sw $t1, ($s0) -/* 0C0318 800BF718 10000017 */ b .L800BF778 -/* 0C031C 800BF71C A6220036 */ sh $v0, 0x36($s1) -.L800BF720: -/* 0C0320 800BF720 0C02FC53 */ jal m64_read_compressed_u16 -/* 0C0324 800BF724 02002025 */ move $a0, $s0 -/* 0C0328 800BF728 8E030000 */ lw $v1, ($s0) -/* 0C032C 800BF72C 3053FFFF */ andi $s3, $v0, 0xffff -/* 0C0330 800BF730 02602025 */ move $a0, $s3 -/* 0C0334 800BF734 90660000 */ lbu $a2, ($v1) -/* 0C0338 800BF738 24680001 */ addiu $t0, $v1, 1 -/* 0C033C 800BF73C AE080000 */ sw $t0, ($s0) -/* 0C0340 800BF740 A2200003 */ sb $zero, 3($s1) -/* 0C0344 800BF744 1000000C */ b .L800BF778 -/* 0C0348 800BF748 A6220036 */ sh $v0, 0x36($s1) -.L800BF74C: -/* 0C034C 800BF74C 8E030000 */ lw $v1, ($s0) -/* 0C0350 800BF750 96330036 */ lhu $s3, 0x36($s1) -/* 0C0354 800BF754 90660000 */ lbu $a2, ($v1) -/* 0C0358 800BF758 246A0001 */ addiu $t2, $v1, 1 -/* 0C035C 800BF75C AE0A0000 */ sw $t2, ($s0) -/* 0C0360 800BF760 914C0000 */ lbu $t4, ($t2) -/* 0C0364 800BF764 02602025 */ move $a0, $s3 -/* 0C0368 800BF768 A22C0003 */ sb $t4, 3($s1) -/* 0C036C 800BF76C 8E0D0000 */ lw $t5, ($s0) -/* 0C0370 800BF770 25AE0001 */ addiu $t6, $t5, 1 -/* 0C0374 800BF774 AE0E0000 */ sw $t6, ($s0) -.L800BF778: -/* 0C0378 800BF778 28C10080 */ slti $at, $a2, 0x80 -/* 0C037C 800BF77C 50200004 */ beql $at, $zero, .L800BF790 -/* 0C0380 800BF780 2406007F */ li $a2, 127 -/* 0C0384 800BF784 04C30003 */ bgezl $a2, .L800BF794 -/* 0C0388 800BF788 44864000 */ mtc1 $a2, $f8 -/* 0C038C 800BF78C 2406007F */ li $a2, 127 -.L800BF790: -/* 0C0390 800BF790 44864000 */ mtc1 $a2, $f8 -.L800BF794: -/* 0C0394 800BF794 3C01800F */ lui $at, %hi(D_800F2F78) # $at, 0x800f -/* 0C0398 800BF798 C4302F78 */ lwc1 $f16, %lo(D_800F2F78)($at) -/* 0C039C 800BF79C 46804020 */ cvt.s.w $f0, $f8 -/* 0C03A0 800BF7A0 325900C0 */ andi $t9, $s2, 0xc0 -/* 0C03A4 800BF7A4 02599023 */ subu $s2, $s2, $t9 -/* 0C03A8 800BF7A8 324F00FF */ andi $t7, $s2, 0xff -/* 0C03AC 800BF7AC 01E09025 */ move $s2, $t7 -/* 0C03B0 800BF7B0 46000282 */ mul.s $f10, $f0, $f0 -/* 0C03B4 800BF7B4 46105483 */ div.s $f18, $f10, $f16 -/* 0C03B8 800BF7B8 10000018 */ b .L800BF81C -/* 0C03BC 800BF7BC E6320028 */ swc1 $f18, 0x28($s1) -.L800BF7C0: -/* 0C03C0 800BF7C0 10600007 */ beqz $v1, .L800BF7E0 -/* 0C03C4 800BF7C4 24010040 */ li $at, 64 -/* 0C03C8 800BF7C8 1061000B */ beq $v1, $at, .L800BF7F8 -/* 0C03CC 800BF7CC 24010080 */ li $at, 128 -/* 0C03D0 800BF7D0 5061000D */ beql $v1, $at, .L800BF808 -/* 0C03D4 800BF7D4 96330036 */ lhu $s3, 0x36($s1) -/* 0C03D8 800BF7D8 1000000C */ b .L800BF80C -/* 0C03DC 800BF7DC 02602025 */ move $a0, $s3 -.L800BF7E0: -/* 0C03E0 800BF7E0 0C02FC53 */ jal m64_read_compressed_u16 -/* 0C03E4 800BF7E4 02002025 */ move $a0, $s0 -/* 0C03E8 800BF7E8 3053FFFF */ andi $s3, $v0, 0xffff -/* 0C03EC 800BF7EC A6220036 */ sh $v0, 0x36($s1) -/* 0C03F0 800BF7F0 10000006 */ b .L800BF80C -/* 0C03F4 800BF7F4 02602025 */ move $a0, $s3 -.L800BF7F8: -/* 0C03F8 800BF7F8 96330034 */ lhu $s3, 0x34($s1) -/* 0C03FC 800BF7FC 10000003 */ b .L800BF80C -/* 0C0400 800BF800 02602025 */ move $a0, $s3 -/* 0C0404 800BF804 96330036 */ lhu $s3, 0x36($s1) -.L800BF808: -/* 0C0408 800BF808 02602025 */ move $a0, $s3 -.L800BF80C: -/* 0C040C 800BF80C 325800C0 */ andi $t8, $s2, 0xc0 -/* 0C0410 800BF810 02589023 */ subu $s2, $s2, $t8 -/* 0C0414 800BF814 324900FF */ andi $t1, $s2, 0xff -/* 0C0418 800BF818 01209025 */ move $s2, $t1 -.L800BF81C: -/* 0C041C 800BF81C 92280003 */ lbu $t0, 3($s1) -/* 0C0420 800BF820 A6240038 */ sh $a0, 0x38($s1) -/* 0C0424 800BF824 01040019 */ multu $t0, $a0 -/* 0C0428 800BF828 00005012 */ mflo $t2 -/* 0C042C 800BF82C 000A5A03 */ sra $t3, $t2, 8 -/* 0C0430 800BF830 A62B003A */ sh $t3, 0x3a($s1) -/* 0C0434 800BF834 8E8C0000 */ lw $t4, ($s4) -/* 0C0438 800BF838 8FB90068 */ lw $t9, 0x68($sp) -/* 0C043C 800BF83C 8FA90068 */ lw $t1, 0x68($sp) -/* 0C0440 800BF840 000C7080 */ sll $t6, $t4, 2 -/* 0C0444 800BF844 05C30006 */ bgezl $t6, .L800BF860 -/* 0C0448 800BF848 8D230000 */ lw $v1, ($t1) -/* 0C044C 800BF84C 932F0003 */ lbu $t7, 3($t9) -/* 0C0450 800BF850 31F80040 */ andi $t8, $t7, 0x40 -/* 0C0454 800BF854 57000008 */ bnel $t8, $zero, .L800BF878 -/* 0C0458 800BF858 922C0000 */ lbu $t4, ($s1) -/* 0C045C 800BF85C 8D230000 */ lw $v1, ($t1) -.L800BF860: -/* 0C0460 800BF860 8FAF0068 */ lw $t7, 0x68($sp) -/* 0C0464 800BF864 8FAE0068 */ lw $t6, 0x68($sp) -/* 0C0468 800BF868 000350C0 */ sll $t2, $v1, 3 -/* 0C046C 800BF86C 05410005 */ bgez $t2, .L800BF884 -/* 0C0470 800BF870 0003C900 */ sll $t9, $v1, 4 -/* 0C0474 800BF874 922C0000 */ lbu $t4, ($s1) -.L800BF878: -/* 0C0478 800BF878 358D0020 */ ori $t5, $t4, 0x20 -/* 0C047C 800BF87C 100000B8 */ b .L800BFB60 -/* 0C0480 800BF880 A22D0000 */ sb $t5, ($s1) -.L800BF884: -/* 0C0484 800BF884 92240001 */ lbu $a0, 1($s1) -/* 0C0488 800BF888 240100FF */ li $at, 255 -/* 0C048C 800BF88C 14810004 */ bne $a0, $at, .L800BF8A0 -/* 0C0490 800BF890 00801025 */ move $v0, $a0 -/* 0C0494 800BF894 072300ED */ bgezl $t9, .L800BFC4C -/* 0C0498 800BF898 8FBF002C */ lw $ra, 0x2c($sp) -/* 0C049C 800BF89C 85E2001C */ lh $v0, 0x1c($t7) -.L800BF8A0: -/* 0C04A0 800BF8A0 5440001F */ bnel $v0, $zero, .L800BF920 -/* 0C04A4 800BF8A4 868C000C */ lh $t4, 0xc($s4) -/* 0C04A8 800BF8A8 8FB80068 */ lw $t8, 0x68($sp) -/* 0C04AC 800BF8AC 862A0022 */ lh $t2, 0x22($s1) -/* 0C04B0 800BF8B0 8709001E */ lh $t1, 0x1e($t8) -/* 0C04B4 800BF8B4 93040006 */ lbu $a0, 6($t8) -/* 0C04B8 800BF8B8 02494021 */ addu $t0, $s2, $t1 -/* 0C04BC 800BF8BC 010A9021 */ addu $s2, $t0, $t2 -/* 0C04C0 800BF8C0 0C02F27E */ jal get_drum -/* 0C04C4 800BF8C4 324500FF */ andi $a1, $s2, 0xff -/* 0C04C8 800BF8C8 14400007 */ bnez $v0, .L800BF8E8 -/* 0C04CC 800BF8CC 24430004 */ addiu $v1, $v0, 4 -/* 0C04D0 800BF8D0 922D0000 */ lbu $t5, ($s1) -/* 0C04D4 800BF8D4 86390038 */ lh $t9, 0x38($s1) -/* 0C04D8 800BF8D8 35AE0020 */ ori $t6, $t5, 0x20 -/* 0C04DC 800BF8DC A22E0000 */ sb $t6, ($s1) -/* 0C04E0 800BF8E0 100000D9 */ b .L800BFC48 -/* 0C04E4 800BF8E4 A639003C */ sh $t9, 0x3c($s1) -.L800BF8E8: -/* 0C04E8 800BF8E8 8C4F000C */ lw $t7, 0xc($v0) -/* 0C04EC 800BF8EC 8E280000 */ lw $t0, ($s1) -/* 0C04F0 800BF8F0 AE2F001C */ sw $t7, 0x1c($s1) -/* 0C04F4 800BF8F4 90490000 */ lbu $t1, ($v0) -/* 0C04F8 800BF8F8 00085980 */ sll $t3, $t0, 6 -/* 0C04FC 800BF8FC 05600003 */ bltz $t3, .L800BF90C -/* 0C0500 800BF900 A2290018 */ sb $t1, 0x18($s1) -/* 0C0504 800BF904 90580001 */ lbu $t8, 1($v0) -/* 0C0508 800BF908 A2380005 */ sb $t8, 5($s1) -.L800BF90C: -/* 0C050C 800BF90C AE230048 */ sw $v1, 0x48($s1) -/* 0C0510 800BF910 C4640004 */ lwc1 $f4, 4($v1) -/* 0C0514 800BF914 10000090 */ b .L800BFB58 -/* 0C0518 800BF918 E6240024 */ swc1 $f4, 0x24($s1) -/* 0C051C 800BF91C 868C000C */ lh $t4, 0xc($s4) -.L800BF920: -/* 0C0520 800BF920 85D9001E */ lh $t9, 0x1e($t6) -/* 0C0524 800BF924 86290022 */ lh $t1, 0x22($s1) -/* 0C0528 800BF928 024C6821 */ addu $t5, $s2, $t4 -/* 0C052C 800BF92C 01B97821 */ addu $t7, $t5, $t9 -/* 0C0530 800BF930 01E99021 */ addu $s2, $t7, $t1 -/* 0C0534 800BF934 324500FF */ andi $a1, $s2, 0xff -/* 0C0538 800BF938 28A10080 */ slti $at, $a1, 0x80 -/* 0C053C 800BF93C 14200005 */ bnez $at, .L800BF954 -/* 0C0540 800BF940 00A09025 */ move $s2, $a1 -/* 0C0544 800BF944 922B0000 */ lbu $t3, ($s1) -/* 0C0548 800BF948 35780020 */ ori $t8, $t3, 0x20 -/* 0C054C 800BF94C 10000082 */ b .L800BFB58 -/* 0C0550 800BF950 A2380000 */ sb $t8, ($s1) -.L800BF954: -/* 0C0554 800BF954 240100FF */ li $at, 255 -/* 0C0558 800BF958 14810003 */ bne $a0, $at, .L800BF968 -/* 0C055C 800BF95C 8FAC0068 */ lw $t4, 0x68($sp) -/* 0C0560 800BF960 10000002 */ b .L800BF96C -/* 0C0564 800BF964 8D840040 */ lw $a0, 0x40($t4) -.L800BF968: -/* 0C0568 800BF968 8E240044 */ lw $a0, 0x44($s1) -.L800BF96C: -/* 0C056C 800BF96C 922E0008 */ lbu $t6, 8($s1) -/* 0C0570 800BF970 11C00061 */ beqz $t6, .L800BFAF8 -/* 0C0574 800BF974 00000000 */ nop -/* 0C0578 800BF978 92220004 */ lbu $v0, 4($s1) -/* 0C057C 800BF97C 0045082A */ slt $at, $v0, $a1 -/* 0C0580 800BF980 10200003 */ beqz $at, .L800BF990 -/* 0C0584 800BF984 00403025 */ move $a2, $v0 -/* 0C0588 800BF988 10000001 */ b .L800BF990 -/* 0C058C 800BF98C 00A03025 */ move $a2, $a1 -.L800BF990: -/* 0C0590 800BF990 1080000A */ beqz $a0, .L800BF9BC -/* 0C0594 800BF994 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0C0598 800BF998 0C02F243 */ jal instrument_get_audio_bank_sound -/* 0C059C 800BF99C 00C02825 */ move $a1, $a2 -/* 0C05A0 800BF9A0 8E2D0048 */ lw $t5, 0x48($s1) -/* 0C05A4 800BF9A4 004DC826 */ xor $t9, $v0, $t5 -/* 0C05A8 800BF9A8 2F390001 */ sltiu $t9, $t9, 1 -/* 0C05AC 800BF9AC AFB90044 */ sw $t9, 0x44($sp) -/* 0C05B0 800BF9B0 AE220048 */ sw $v0, 0x48($s1) -/* 0C05B4 800BF9B4 10000003 */ b .L800BF9C4 -/* 0C05B8 800BF9B8 C4400004 */ lwc1 $f0, 4($v0) -.L800BF9BC: -/* 0C05BC 800BF9BC 44810000 */ mtc1 $at, $f0 -/* 0C05C0 800BF9C0 AE200048 */ sw $zero, 0x48($s1) -.L800BF9C4: -/* 0C05C4 800BF9C4 3C03800F */ lui $v1, %hi(gNoteFrequencies) # $v1, 0x800f -/* 0C05C8 800BF9C8 92280004 */ lbu $t0, 4($s1) -/* 0C05CC 800BF9CC 24636020 */ addiu $v1, %lo(gNoteFrequencies) # addiu $v1, $v1, 0x6020 -/* 0C05D0 800BF9D0 00127880 */ sll $t7, $s2, 2 -/* 0C05D4 800BF9D4 006F4821 */ addu $t1, $v1, $t7 -/* 0C05D8 800BF9D8 C5260000 */ lwc1 $f6, ($t1) -/* 0C05DC 800BF9DC 92380008 */ lbu $t8, 8($s1) -/* 0C05E0 800BF9E0 00085080 */ sll $t2, $t0, 2 -/* 0C05E4 800BF9E4 006A5821 */ addu $t3, $v1, $t2 -/* 0C05E8 800BF9E8 C5680000 */ lwc1 $f8, ($t3) -/* 0C05EC 800BF9EC 46003082 */ mul.s $f2, $f6, $f0 -/* 0C05F0 800BF9F0 2401FF7F */ li $at, -129 -/* 0C05F4 800BF9F4 03016024 */ and $t4, $t8, $at -/* 0C05F8 800BF9F8 258EFFFF */ addiu $t6, $t4, -1 -/* 0C05FC 800BF9FC 2DC10005 */ sltiu $at, $t6, 5 -/* 0C0600 800BFA00 46004302 */ mul.s $f12, $f8, $f0 -/* 0C0604 800BFA04 10200008 */ beqz $at, .L800BFA28 -/* 0C0608 800BFA08 000E7080 */ sll $t6, $t6, 2 -/* 0C060C 800BFA0C 3C01800F */ lui $at, %hi(jpt_800F2F7C) -/* 0C0610 800BFA10 002E0821 */ addu $at, $at, $t6 -/* 0C0614 800BFA14 8C2E2F7C */ lw $t6, %lo(jpt_800F2F7C)($at) -/* 0C0618 800BFA18 01C00008 */ jr $t6 -/* 0C061C 800BFA1C 00000000 */ nop -glabel L800BFA20 -/* 0C0620 800BFA20 10000002 */ b .L800BFA2C -/* 0C0624 800BFA24 46006006 */ mov.s $f0, $f12 -.L800BFA28: -glabel L800BFA28 -/* 0C0628 800BFA28 46001006 */ mov.s $f0, $f2 -.L800BFA2C: -/* 0C062C 800BFA2C 46001283 */ div.s $f10, $f2, $f0 -/* 0C0630 800BFA30 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0C0634 800BFA34 44818000 */ mtc1 $at, $f16 -/* 0C0638 800BFA38 26220008 */ addiu $v0, $s1, 8 -/* 0C063C 800BFA3C 3C0146FE */ li $at, 0x46FE0000 # 32512.000000 -/* 0C0640 800BFA40 46105481 */ sub.s $f18, $f10, $f16 -/* 0C0644 800BFA44 E452000C */ swc1 $f18, 0xc($v0) -/* 0C0648 800BFA48 922D0008 */ lbu $t5, 8($s1) -/* 0C064C 800BFA4C 31B90080 */ andi $t9, $t5, 0x80 -/* 0C0650 800BFA50 53200017 */ beql $t9, $zero, .L800BFAB0 -/* 0C0654 800BFA54 962B0020 */ lhu $t3, 0x20($s1) -/* 0C0658 800BFA58 968F0008 */ lhu $t7, 8($s4) -/* 0C065C 800BFA5C 3C08803B */ lui $t0, %hi(D_803B70B4) # $t0, 0x803b -/* 0C0660 800BFA60 850870B4 */ lh $t0, %lo(D_803B70B4)($t0) -/* 0C0664 800BFA64 448F2000 */ mtc1 $t7, $f4 -/* 0C0668 800BFA68 86290038 */ lh $t1, 0x38($s1) -/* 0C066C 800BFA6C 44814000 */ mtc1 $at, $f8 -/* 0C0670 800BFA70 468021A0 */ cvt.s.w $f6, $f4 -/* 0C0674 800BFA74 44882000 */ mtc1 $t0, $f4 -/* 0C0678 800BFA78 44898000 */ mtc1 $t1, $f16 -/* 0C067C 800BFA7C 962A0020 */ lhu $t2, 0x20($s1) -/* 0C0680 800BFA80 468084A0 */ cvt.s.w $f18, $f16 -/* 0C0684 800BFA84 46083282 */ mul.s $f10, $f6, $f8 -/* 0C0688 800BFA88 448A8000 */ mtc1 $t2, $f16 -/* 0C068C 800BFA8C 468021A0 */ cvt.s.w $f6, $f4 -/* 0C0690 800BFA90 46808120 */ cvt.s.w $f4, $f16 -/* 0C0694 800BFA94 46069202 */ mul.s $f8, $f18, $f6 -/* 0C0698 800BFA98 00000000 */ nop -/* 0C069C 800BFA9C 46044482 */ mul.s $f18, $f8, $f4 -/* 0C06A0 800BFAA0 46125183 */ div.s $f6, $f10, $f18 -/* 0C06A4 800BFAA4 10000009 */ b .L800BFACC -/* 0C06A8 800BFAA8 E4460008 */ swc1 $f6, 8($v0) -/* 0C06AC 800BFAAC 962B0020 */ lhu $t3, 0x20($s1) -.L800BFAB0: -/* 0C06B0 800BFAB0 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 0C06B4 800BFAB4 44818000 */ mtc1 $at, $f16 -/* 0C06B8 800BFAB8 448B4000 */ mtc1 $t3, $f8 -/* 0C06BC 800BFABC 00000000 */ nop -/* 0C06C0 800BFAC0 46804120 */ cvt.s.w $f4, $f8 -/* 0C06C4 800BFAC4 46048283 */ div.s $f10, $f16, $f4 -/* 0C06C8 800BFAC8 E44A0008 */ swc1 $f10, 8($v0) -.L800BFACC: -/* 0C06CC 800BFACC 44809000 */ mtc1 $zero, $f18 -/* 0C06D0 800BFAD0 2401FF7F */ li $at, -129 -/* 0C06D4 800BFAD4 E4520004 */ swc1 $f18, 4($v0) -/* 0C06D8 800BFAD8 92380008 */ lbu $t8, 8($s1) -/* 0C06DC 800BFADC E6200024 */ swc1 $f0, 0x24($s1) -/* 0C06E0 800BFAE0 03016024 */ and $t4, $t8, $at -/* 0C06E4 800BFAE4 24010005 */ li $at, 5 -/* 0C06E8 800BFAE8 5581001C */ bnel $t4, $at, .L800BFB5C -/* 0C06EC 800BFAEC 862A0038 */ lh $t2, 0x38($s1) -/* 0C06F0 800BFAF0 10000019 */ b .L800BFB58 -/* 0C06F4 800BFAF4 A2320004 */ sb $s2, 4($s1) -.L800BFAF8: -/* 0C06F8 800BFAF8 10800011 */ beqz $a0, .L800BFB40 -/* 0C06FC 800BFAFC 3C03800F */ lui $v1, %hi(gNoteFrequencies) -/* 0C0700 800BFB00 0C02F243 */ jal instrument_get_audio_bank_sound -/* 0C0704 800BFB04 00000000 */ nop -/* 0C0708 800BFB08 8E2E0048 */ lw $t6, 0x48($s1) -/* 0C070C 800BFB0C 3C03800F */ lui $v1, %hi(gNoteFrequencies) # $v1, 0x800f -/* 0C0710 800BFB10 24636020 */ addiu $v1, %lo(gNoteFrequencies) # addiu $v1, $v1, 0x6020 -/* 0C0714 800BFB14 004E6826 */ xor $t5, $v0, $t6 -/* 0C0718 800BFB18 2DAD0001 */ sltiu $t5, $t5, 1 -/* 0C071C 800BFB1C AFAD0044 */ sw $t5, 0x44($sp) -/* 0C0720 800BFB20 AE220048 */ sw $v0, 0x48($s1) -/* 0C0724 800BFB24 0012C880 */ sll $t9, $s2, 2 -/* 0C0728 800BFB28 00797821 */ addu $t7, $v1, $t9 -/* 0C072C 800BFB2C C5E60000 */ lwc1 $f6, ($t7) -/* 0C0730 800BFB30 C4480004 */ lwc1 $f8, 4($v0) -/* 0C0734 800BFB34 46083402 */ mul.s $f16, $f6, $f8 -/* 0C0738 800BFB38 10000007 */ b .L800BFB58 -/* 0C073C 800BFB3C E6300024 */ swc1 $f16, 0x24($s1) -.L800BFB40: -/* 0C0740 800BFB40 24636020 */ addiu $v1, $v1, %lo(gNoteFrequencies) -/* 0C0744 800BFB44 00124880 */ sll $t1, $s2, 2 -/* 0C0748 800BFB48 AE200048 */ sw $zero, 0x48($s1) -/* 0C074C 800BFB4C 00694021 */ addu $t0, $v1, $t1 -/* 0C0750 800BFB50 C5040000 */ lwc1 $f4, ($t0) -/* 0C0754 800BFB54 E6240024 */ swc1 $f4, 0x24($s1) -.L800BFB58: -/* 0C0758 800BFB58 862A0038 */ lh $t2, 0x38($s1) -.L800BFB5C: -/* 0C075C 800BFB5C A62A003C */ sh $t2, 0x3c($s1) -.L800BFB60: -/* 0C0760 800BFB60 8E220000 */ lw $v0, ($s1) -/* 0C0764 800BFB64 24010001 */ li $at, 1 -/* 0C0768 800BFB68 00025880 */ sll $t3, $v0, 2 -/* 0C076C 800BFB6C 000BC7C2 */ srl $t8, $t3, 0x1f -/* 0C0770 800BFB70 1701000B */ bne $t8, $at, .L800BFBA0 -/* 0C0774 800BFB74 000278C0 */ sll $t7, $v0, 3 -/* 0C0778 800BFB78 8E2C0040 */ lw $t4, 0x40($s1) -/* 0C077C 800BFB7C 000268C0 */ sll $t5, $v0, 3 -/* 0C0780 800BFB80 15800003 */ bnez $t4, .L800BFB90 -/* 0C0784 800BFB84 00000000 */ nop -/* 0C0788 800BFB88 05A30030 */ bgezl $t5, .L800BFC4C -/* 0C078C 800BFB8C 8FBF002C */ lw $ra, 0x2c($sp) -.L800BFB90: -/* 0C0790 800BFB90 0C02F448 */ jal seq_channel_layer_note_decay -/* 0C0794 800BFB94 02202025 */ move $a0, $s1 -/* 0C0798 800BFB98 1000002C */ b .L800BFC4C -/* 0C079C 800BFB9C 8FBF002C */ lw $ra, 0x2c($sp) -.L800BFBA0: -/* 0C07A0 800BFBA0 05E00003 */ bltz $t7, .L800BFBB0 -/* 0C07A4 800BFBA4 00009025 */ move $s2, $zero -/* 0C07A8 800BFBA8 1000001A */ b .L800BFC14 -/* 0C07AC 800BFBAC 24120001 */ li $s2, 1 -.L800BFBB0: -/* 0C07B0 800BFBB0 8E240040 */ lw $a0, 0x40($s1) -/* 0C07B4 800BFBB4 10800005 */ beqz $a0, .L800BFBCC -/* 0C07B8 800BFBB8 00000000 */ nop -/* 0C07BC 800BFBBC 92290002 */ lbu $t1, 2($s1) -/* 0C07C0 800BFBC0 8FA80044 */ lw $t0, 0x44($sp) -/* 0C07C4 800BFBC4 15200003 */ bnez $t1, .L800BFBD4 -/* 0C07C8 800BFBC8 00000000 */ nop -.L800BFBCC: -/* 0C07CC 800BFBCC 10000011 */ b .L800BFC14 -/* 0C07D0 800BFBD0 24120001 */ li $s2, 1 -.L800BFBD4: -/* 0C07D4 800BFBD4 55000006 */ bnel $t0, $zero, .L800BFBF0 -/* 0C07D8 800BFBD8 8C8A0044 */ lw $t2, 0x44($a0) -/* 0C07DC 800BFBDC 0C02F448 */ jal seq_channel_layer_note_decay -/* 0C07E0 800BFBE0 02202025 */ move $a0, $s1 -/* 0C07E4 800BFBE4 1000000B */ b .L800BFC14 -/* 0C07E8 800BFBE8 24120001 */ li $s2, 1 -/* 0C07EC 800BFBEC 8C8A0044 */ lw $t2, 0x44($a0) -.L800BFBF0: -/* 0C07F0 800BFBF0 522A0004 */ beql $s1, $t2, .L800BFC04 -/* 0C07F4 800BFBF4 8E2B0048 */ lw $t3, 0x48($s1) -/* 0C07F8 800BFBF8 10000006 */ b .L800BFC14 -/* 0C07FC 800BFBFC 24120001 */ li $s2, 1 -/* 0C0800 800BFC00 8E2B0048 */ lw $t3, 0x48($s1) -.L800BFC04: -/* 0C0804 800BFC04 15600003 */ bnez $t3, .L800BFC14 -/* 0C0808 800BFC08 00000000 */ nop -/* 0C080C 800BFC0C 0C02F499 */ jal init_synthetic_wave -/* 0C0810 800BFC10 02202825 */ move $a1, $s1 -.L800BFC14: -/* 0C0814 800BFC14 52400005 */ beql $s2, $zero, .L800BFC2C -/* 0C0818 800BFC18 8E240040 */ lw $a0, 0x40($s1) -/* 0C081C 800BFC1C 0C02F691 */ jal alloc_note -/* 0C0820 800BFC20 02202025 */ move $a0, $s1 -/* 0C0824 800BFC24 AE220040 */ sw $v0, 0x40($s1) -/* 0C0828 800BFC28 8E240040 */ lw $a0, 0x40($s1) -.L800BFC2C: -/* 0C082C 800BFC2C 50800007 */ beql $a0, $zero, .L800BFC4C -/* 0C0830 800BFC30 8FBF002C */ lw $ra, 0x2c($sp) -/* 0C0834 800BFC34 8C980044 */ lw $t8, 0x44($a0) -/* 0C0838 800BFC38 56380004 */ bnel $s1, $t8, .L800BFC4C -/* 0C083C 800BFC3C 8FBF002C */ lw $ra, 0x2c($sp) -/* 0C0840 800BFC40 0C02F935 */ jal note_vibrato_init -/* 0C0844 800BFC44 00000000 */ nop -.L800BFC48: -/* 0C0848 800BFC48 8FBF002C */ lw $ra, 0x2c($sp) -.L800BFC4C: -/* 0C084C 800BFC4C 8FB00018 */ lw $s0, 0x18($sp) -/* 0C0850 800BFC50 8FB1001C */ lw $s1, 0x1c($sp) -/* 0C0854 800BFC54 8FB20020 */ lw $s2, 0x20($sp) -/* 0C0858 800BFC58 8FB30024 */ lw $s3, 0x24($sp) -/* 0C085C 800BFC5C 8FB40028 */ lw $s4, 0x28($sp) -/* 0C0860 800BFC60 03E00008 */ jr $ra -/* 0C0864 800BFC64 27BD0070 */ addiu $sp, $sp, 0x70 diff --git a/asm/non_matchings/audio/seqplayer/func_800C08CC.s b/asm/non_matchings/audio/seqplayer/sequence_player_process_sequence.s similarity index 98% rename from asm/non_matchings/audio/seqplayer/func_800C08CC.s rename to asm/non_matchings/audio/seqplayer/sequence_player_process_sequence.s index 5733f7b6c..7233e5a42 100644 --- a/asm/non_matchings/audio/seqplayer/func_800C08CC.s +++ b/asm/non_matchings/audio/seqplayer/sequence_player_process_sequence.s @@ -45,7 +45,7 @@ glabel jpt_800F3430 .section .text -glabel func_800C08CC +glabel sequence_player_process_sequence /* 0C14CC 800C08CC 27BDFFA0 */ addiu $sp, $sp, -0x60 /* 0C14D0 800C08D0 AFBF002C */ sw $ra, 0x2c($sp) /* 0C14D4 800C08D4 AFB30028 */ sw $s3, 0x28($sp) @@ -169,10 +169,10 @@ glabel func_800C08CC /* 0C168C 800C0A8C 9628000A */ lhu $t0, 0xa($s1) .L800C0A90: /* 0C1690 800C0A90 96290008 */ lhu $t1, 8($s1) -/* 0C1694 800C0A94 3C03803B */ lui $v1, %hi(D_803B70B4) # $v1, 0x803b +/* 0C1694 800C0A94 3C03803B */ lui $v1, %hi(gTempoInternalToExternal) # $v1, 0x803b /* 0C1698 800C0A98 01095021 */ addu $t2, $t0, $t1 /* 0C169C 800C0A9C A62A000A */ sh $t2, 0xa($s1) -/* 0C16A0 800C0AA0 846370B4 */ lh $v1, %lo(D_803B70B4)($v1) +/* 0C16A0 800C0AA0 846370B4 */ lh $v1, %lo(gTempoInternalToExternal)($v1) /* 0C16A4 800C0AA4 3142FFFF */ andi $v0, $t2, 0xffff /* 0C16A8 800C0AA8 0043082A */ slt $at, $v0, $v1 /* 0C16AC 800C0AAC 5420019C */ bnel $at, $zero, .L800C1120 @@ -371,7 +371,7 @@ glabel L800C0D50 /* 0C1954 800C0D54 02002025 */ move $a0, $s0 /* 0C1958 800C0D58 240100DD */ li $at, 221 /* 0C195C 800C0D5C 16410007 */ bne $s2, $at, .L800C0D7C -/* 0C1960 800C0D60 3C03803B */ lui $v1, %hi(D_803B70B4) # $v1, 0x803b +/* 0C1960 800C0D60 3C03803B */ lui $v1, %hi(gTempoInternalToExternal) # $v1, 0x803b /* 0C1964 800C0D64 304A00FF */ andi $t2, $v0, 0xff /* 0C1968 800C0D68 000A5880 */ sll $t3, $t2, 2 /* 0C196C 800C0D6C 016A5823 */ subu $t3, $t3, $t2 @@ -388,7 +388,7 @@ glabel L800C0D50 /* 0C1994 800C0D94 01D8C821 */ addu $t9, $t6, $t8 /* 0C1998 800C0D98 A6390008 */ sh $t9, 8($s1) .L800C0D9C: -/* 0C199C 800C0D9C 846370B4 */ lh $v1, %lo(D_803B70B4)($v1) +/* 0C199C 800C0D9C 846370B4 */ lh $v1, %lo(gTempoInternalToExternal)($v1) /* 0C19A0 800C0DA0 96220008 */ lhu $v0, 8($s1) /* 0C19A4 800C0DA4 24090001 */ li $t1, 1 /* 0C19A8 800C0DA8 0062082A */ slt $at, $v1, $v0 @@ -635,7 +635,7 @@ glabel L800C10A0 /* 0C1CF4 800C10F4 55C10007 */ bnel $t6, $at, .L800C1114 /* 0C1CF8 800C10F8 24420004 */ addiu $v0, $v0, 4 /* 0C1CFC 800C10FC AFA20034 */ sw $v0, 0x34($sp) -/* 0C1D00 800C1100 0C02FF64 */ jal func_800BFD90 +/* 0C1D00 800C1100 0C02FF64 */ jal sequence_channel_process_script /* 0C1D04 800C1104 AFA30030 */ sw $v1, 0x30($sp) /* 0C1D08 800C1108 8FA20034 */ lw $v0, 0x34($sp) /* 0C1D0C 800C110C 8FA30030 */ lw $v1, 0x30($sp) diff --git a/asm/non_matchings/audio/synthesis/func_800B70EC.s b/asm/non_matchings/audio/synthesis/func_800B70EC.s index 2bdbac4d2..223657749 100644 --- a/asm/non_matchings/audio/synthesis/func_800B70EC.s +++ b/asm/non_matchings/audio/synthesis/func_800B70EC.s @@ -20,7 +20,7 @@ glabel func_800B70EC /* 0B7D34 800B7134 AFA50044 */ sw $a1, 0x44($sp) .L800B7138: /* 0B7D38 800B7138 2690FFFF */ addiu $s0, $s4, -1 -/* 0B7D3C 800B713C 0C03044E */ jal func_800C1138 +/* 0B7D3C 800B713C 0C03044E */ jal process_sequences /* 0B7D40 800B7140 02002025 */ move $a0, $s0 /* 0B7D44 800B7144 86AE000C */ lh $t6, 0xc($s5) /* 0B7D48 800B7148 0C02DC0D */ jal synthesis_load_note_subs_eu diff --git a/data/data_0DD0A0_2_1_2.s b/data/data_0DD0A0_2_1_2.s index e5dd3b04d..bf318b55d 100644 --- a/data/data_0DD0A0_2_1_2.s +++ b/data/data_0DD0A0_2_1_2.s @@ -9,25 +9,32 @@ glabel D_800EA4D0 glabel D_800EA4D4 .word 0x01145fff -glabel D_800EA4D8 +glabel gAudioSessionPresets .word 0x000068b0, 0x01180100, D_800EA4D0, 0x7fff0000 .word 0x00002a00, 0x00004600, 0x00000000, 0x00005800 -.word 0x00002800, 0x00000000, 0x000068b0, 0x01140100 -.word D_800EA4D0, 0x7fff0000, 0x00002a00, 0x00004600 -.word 0x00000000, 0x00005800, 0x00002800, 0x00000000 +.word 0x00002800, 0x00000000 + +.word 0x000068b0, 0x01140100, D_800EA4D0, 0x7fff0000 +.word 0x00002a00, 0x00004600, 0x00000000, 0x00005800 +.word 0x00002800, 0x00000000 + .word 0x000068b0, 0x011c0100, D_800EA4D0, 0x7fff0000 .word 0x00002a00, 0x00004600, 0x00000000, 0x00005800 -.word 0x00002800, 0x00000000, 0x000068b0, 0x011c0100 -.word D_800EA4D0, 0x7fff0000, 0x00002a00, 0x00004600 -.word 0x00000000, 0x00005800, 0x00002800, 0x00000000 +.word 0x00002800, 0x00000000 + +.word 0x000068b0, 0x011c0100, D_800EA4D0, 0x7fff0000 +.word 0x00002a00, 0x00004600, 0x00000000, 0x00005800 +.word 0x00002800, 0x00000000 + .word 0x000068b0, 0x01100100, D_800EA4D0, 0x7fff0000 .word 0x00002a00, 0x00004600, 0x00000000, 0x00004800 -.word 0x00002000, 0x00000000, 0x000068b0, 0x01100100 -.word D_800EA4D4, 0x7fff0000, 0x00002a00, 0x00004600 -.word 0x00000000, 0x00004800, 0x00002000, 0x00000000 -.word 0x1c000000 +.word 0x00002000, 0x00000000 -glabel D_800EA5CC +.word 0x000068b0, 0x01100100, D_800EA4D4, 0x7fff0000 +.word 0x00002a00, 0x00004600, 0x00000000, 0x00004800 +.word 0x00002000, 0x00000000, 0x1c000000 + +glabel gTatumsPerBeat .hword 0x0030, 0x0000 glabel D_800EA5D0 @@ -39,5 +46,5 @@ glabel D_800EA5D4 glabel D_800EA5D8 .word 0x00000000 -glabel D_800EA5DC +glabel gAudioLoadLock .word 0x00000000 diff --git a/mk64.ld b/mk64.ld index 5194c986f..dbf6d9e9c 100644 --- a/mk64.ld +++ b/mk64.ld @@ -412,8 +412,9 @@ SECTIONS BUILD_DIR/src/memory.o(.bss); BUILD_DIR/src/framebuffers.o(.bss*); BUILD_DIR/src/audio/synthesis.o(.bss*); - BUILD_DIR/asm/bss_audio.o(.bss*); + BUILD_DIR/src/audio/heap.o(.bss*); BUILD_DIR/src/audio/load.o(.bss); + BUILD_DIR/src/audio/data.o(.bss); . = ALIGN(0x8); } END_NOLOAD(code_8028DF00) diff --git a/src/audio/data.c b/src/audio/data.c index 25f05a007..ea9c65549 100644 --- a/src/audio/data.c +++ b/src/audio/data.c @@ -425,3 +425,20 @@ f32 gDefaultPanVolume[128] = { 0.184465f, 0.172295f, 0.160098f, 0.147877f, 0.135634f, 0.12337f, 0.111087f, 0.098786f, 0.086471f, 0.074143f, 0.061803f, 0.049454f, 0.037097f, 0.024734f, 0.012368f, 0.0f }; + +s32 D_803B70C0; +s32 D_803B70C4; +u64 *gAudioCmdBuffers[2]; // probably wrong +u64 *gAudioCmd; +struct SPTask *gAudioTask; // gAudioTask? +struct SPTask gAudioTasks[2]; // gAudioTasks? +f32 D_803B7178; +s32 gRefreshRate; +s16 *gAiBuffers[3]; // unconfirmed, osAiSetNextBuffer vaddr +u32 D_803B718C; // osAiSetNextBuffer nbytes +s16 load_bss_pad3; +u16 D_803B7192; // unconfirmed +u32 gAudioRandom; +s32 gAudioErrorFlags; +u32 D_803B71A0[4]; // unconfirmed +u8 D_803B71B0[4]; // unconfirmed diff --git a/src/audio/data.h b/src/audio/data.h index 34f6f8727..59c016f16 100644 --- a/src/audio/data.h +++ b/src/audio/data.h @@ -7,6 +7,9 @@ #define AUDIO_LOCK_NOT_LOADING 0x76557364 #define AUDIO_LOCK_LOADING 0x19710515 +#define NUMAIBUFFERS 3 +#define AIBUFFER_LEN (0xa0 * 16) + // number of DMAs performed during this frame extern s32 gCurrAudioFrameDmaCount; @@ -33,4 +36,24 @@ extern f32 gStereoPanVolume[128]; extern f32 gDefaultPanVolume[128]; extern u32 gAudioRandom; +extern s16 gTatumsPerBeat; // D_800EA5CC +extern volatile s32 gAudioLoadLock; // D_800EA5DC + +extern s32 D_803B70C0; +extern s32 D_803B70C4; +extern u64 *gAudioCmdBuffers[2]; // probably wrong +extern u64 *gAudioCmd; // D_803B70D0 +extern struct SPTask *gAudioTask; // D_803B70D4 +extern struct SPTask gAudioTasks[2]; // D_803B70D8 +extern f32 D_803B7178; +extern s32 gRefreshRate; +extern s16 *gAiBuffers[NUMAIBUFFERS]; // D_803B7180 +extern u32 D_803B718C; // osAiSetNextBuffer nbytes +extern s16 load_bss_pad3; +extern u16 D_803B7192; // unconfirmed +extern u32 gAudioRandom; +extern s32 gAudioErrorFlags; +extern u32 D_803B71A0[4]; // unconfirmed +extern u8 D_803B71B0[4]; // unconfirmed + #endif diff --git a/src/audio/external.h b/src/audio/external.h index 1afcaa84f..5e8a6d6de 100644 --- a/src/audio/external.h +++ b/src/audio/external.h @@ -4,6 +4,25 @@ #include "common_structs.h" #include "camera.h" +#define ADSR_STATE_DISABLED 0 +#define ADSR_STATE_INITIAL 1 +#define ADSR_STATE_START_LOOP 2 +#define ADSR_STATE_LOOP 3 +#define ADSR_STATE_FADE 4 +#define ADSR_STATE_HANG 5 +#define ADSR_STATE_DECAY 6 +#define ADSR_STATE_RELEASE 7 +#define ADSR_STATE_SUSTAIN 8 + +#define ADSR_ACTION_RELEASE 0x10 +#define ADSR_ACTION_DECAY 0x20 +#define ADSR_ACTION_HANG 0x40 + +#define ADSR_DISABLE 0 +#define ADSR_HANG -1 +#define ADSR_GOTO -2 +#define ADSR_RESTART -3 + // Sequence arguments, passed to seq_player_play_sequence. seqId may be bit-OR'ed with // SEQ_VARIATION; this will load the same sequence, but set a variation // bit which may be read by the sequence script. diff --git a/src/audio/heap.c b/src/audio/heap.c index 08cc4e71a..331713a62 100644 --- a/src/audio/heap.c +++ b/src/audio/heap.c @@ -1,11 +1,49 @@ #include #include +#include "audio/data.h" +#include "audio/effects.h" #include "audio/heap.h" #include "audio/load.h" #include "audio/synthesis.h" #include "audio/playback.h" #include "audio/seqplayer.h" +s16 gVolume; +s8 gUseReverb; +s8 gNumSynthesisReverbs; +struct NoteSubEu *gNoteSubsEu; + +struct SoundAllocPool gAudioSessionPool; +struct SoundAllocPool gAudioInitPool; +struct SoundAllocPool gNotesAndBuffersPool; +u8 sAudioHeapPad[0x20]; // probably two unused pools +struct SoundAllocPool gSeqAndBankPool; +struct SoundAllocPool gPersistentCommonPool; +struct SoundAllocPool gTemporaryCommonPool; + +struct SoundMultiPool gSeqLoadedPool; +struct SoundMultiPool gBankLoadedPool; +struct SoundMultiPool gUnusedLoadedPool; + +struct Unk1Pool gUnkPool1; + +struct PoolSplit sSessionPoolSplit; +struct PoolSplit2 sSeqAndBankPoolSplit; +struct PoolSplit sPersistentCommonPoolSplit; +struct PoolSplit sTemporaryCommonPoolSplit; + +u8 gUnkLoadStatus[0x40]; +u8 gBankLoadStatus[0x40]; +u8 gSeqLoadStatus[0x100]; + +volatile u8 gAudioResetStatus; +u8 gAudioResetPresetIdToLoad; +s32 gAudioResetFadeOutFramesLeft; + +u8 gAudioUnusedBuffer[0x1000]; + +struct Note *gNotes; + /** * Given that (almost) all of these are format strings, it is highly likely * that they are meant to be used in some sort of printf variant. But I don't @@ -156,14 +194,14 @@ void func_800B90E0(struct SoundAllocPool *pool) { // inspired by sound_init_main_pools in sm64 void func_800B90F0(s32 arg0) { sound_alloc_pool_init(&gAudioInitPool, &D_803B71B0, arg0); - sound_alloc_pool_init(&gLeftVolRampings, D_803B71B0 + arg0, D_800EA5D0 - arg0); + sound_alloc_pool_init(&gAudioSessionPool, D_803B71B0 + arg0, D_800EA5D0 - arg0); } // inspired by session_pools_init in sm64 void func_800B914C(struct PoolSplit *arg0) { - gLeftVolRampings.cur = gLeftVolRampings.start; - sound_alloc_pool_init(&gNotesAndBuffersPool, soundAlloc(&gLeftVolRampings, arg0->wantSeq), arg0->wantSeq); - sound_alloc_pool_init(&gSeqAndBankPool, soundAlloc(&gLeftVolRampings, arg0->wantCustom), arg0->wantCustom); + gAudioSessionPool.cur = gAudioSessionPool.start; + sound_alloc_pool_init(&gNotesAndBuffersPool, soundAlloc(&gAudioSessionPool, arg0->wantSeq), arg0->wantSeq); + sound_alloc_pool_init(&gSeqAndBankPool, soundAlloc(&gAudioSessionPool, arg0->wantCustom), arg0->wantCustom); } void seq_and_bank_pool_init(struct PoolSplit2 *a) { @@ -192,335 +230,220 @@ void temporary_pools_init(struct PoolSplit *a) { temporary_pool_clear(&gUnusedLoadedPool.temporary); } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-15-2023 -void *func_800B93BC(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg3, s32 id) { - u8 *sp34; - u8 sp33; - struct TemporaryPool *sp28; - struct SoundAllocPool *sp24; - s32 sp20; - s16 temp_a0; - s16 temp_a2; - s16 temp_v1_2; - s32 var_a3; +void *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg3, s32 id) { + struct TemporaryPool *tp; + struct SoundAllocPool *pool; + void *ret; + u16 UNUSED _firstVal; + u16 UNUSED _secondVal; + u16 firstVal; + u16 secondVal; s32 var_v1_2; - s32 var_v1_3; - s32 var_v1_4; - s32 var_v1_5; - struct Note *var_v0; - struct Note *var_v0_2; - struct Note *var_v0_6; - struct Note *var_v0_7; - struct SequencePlayer *var_v0_4; - struct SequencePlayer *var_v0_5; - struct SoundAllocPool *temp_v1_3; - struct SoundAllocPool *temp_v1_4; - struct TemporaryPool *var_a3_2; - u32 temp_a0_2; - u32 temp_v1; - u32 var_v0_3; - u8 *temp_v0; - u8 *temp_v0_2; - u8 *temp_v0_3; - u8 *temp_v0_4; - u8 *var_v0_8; - u8 *var_v1; - u8 var_t1; - u8 var_t2; + u8 *table; + u8 isSound; - var_a3 = arg3; -loop_1: - if (var_a3 == 0) { - var_a3_2 = &arg0->temporary; + if (arg3 == 0) { + tp = &arg0->temporary; if (arg0 == &gSeqLoadedPool) { - sp34 = gSeqLoadStatus; - sp33 = 0; - } else if (arg0 == &gBankLoadedPool) { - sp33 = 1; - sp34 = gBankLoadStatus; - } else if (arg0 == &gUnusedLoadedPool) { - sp33 = 2; - sp34 = gUnkLoadStatus; - } - temp_a2 = var_a3_2->entries[0].id; - if (temp_a2 == -1) { - var_t1 = 0; + table = gSeqLoadStatus; isSound = 0; } else { - var_t1 = sp34[temp_a2]; + // wtf? + firstVal += 0; + if (arg0 == &gBankLoadedPool) { + isSound = 1; table = gBankLoadStatus; + } else if (arg0 == &gUnusedLoadedPool) { + table = gUnkLoadStatus; isSound = 2; + } } - temp_a0 = var_a3_2->entries[1].id; - if (temp_a0 == -1) { - var_t2 = 0; + if (tp->entries[0].id == -1) { + firstVal = 0; } else { - var_t2 = sp34[temp_a0]; + firstVal = table[tp->entries[0].id]; } - sp20 = (s32) sp33; - if (sp33 == 1) { - if (var_t1 == 4) { - var_v1_2 = 0; - if (gMaxSimultaneousNotes > 0) { - var_v0 = gNotes; -loop_18: - if ((var_v0->noteSubEu.bankId != temp_a2) || (((u32) var_v0->unkB0 >> 0x1F) == 0)) { - var_v1_2 += 1; - var_v0 += 0xC0; - if (var_v1_2 < gMaxSimultaneousNotes) { - goto loop_18; - } + if (tp->entries[1].id == -1) { + secondVal = 0; + } else { + secondVal = table[tp->entries[1].id]; + } + if (isSound == 1) { + if (firstVal == 4) { + for (var_v1_2 = 0; var_v1_2 < gMaxSimultaneousNotes; var_v1_2++) { + if (gNotes[var_v1_2].noteSubEu.bankId == tp->entries[0].id && gNotes[var_v1_2].noteSubEu.enabled) { + break; } } - temp_v0 = &gBankLoadStatus[temp_a2]; if (var_v1_2 == gMaxSimultaneousNotes) { - var_t1 = 3; - if (*temp_v0 != 5) { - *temp_v0 = 3; + if (gBankLoadStatus[tp->entries[0].id] != SOUND_LOAD_STATUS_5) { + gBankLoadStatus[tp->entries[0].id] = SOUND_LOAD_STATUS_DISCARDABLE; } + firstVal = SOUND_LOAD_STATUS_DISCARDABLE; } } - if (var_t2 == 4) { - var_v1_3 = 0; - if (gMaxSimultaneousNotes > 0) { - var_v0_2 = gNotes; -loop_27: - if ((var_v0_2->noteSubEu.bankId != var_a3_2->entries[1].id) || (((u32) var_v0_2->unkB0 >> 0x1F) == 0)) { - var_v1_3 += 1; - var_v0_2 += 0xC0; - if (var_v1_3 < gMaxSimultaneousNotes) { - goto loop_27; + if (secondVal == 4) { + for (var_v1_2 = 0; var_v1_2 < gMaxSimultaneousNotes; var_v1_2++) { + if (gNotes[var_v1_2].noteSubEu.bankId == tp->entries[1].id && gNotes[var_v1_2].noteSubEu.enabled) { + break; + } + } + if (var_v1_2 == gMaxSimultaneousNotes) { + if (gBankLoadStatus[tp->entries[1].id] != SOUND_LOAD_STATUS_5) { + gBankLoadStatus[tp->entries[1].id] = SOUND_LOAD_STATUS_DISCARDABLE; + } + secondVal = SOUND_LOAD_STATUS_DISCARDABLE; + } + } + } + if (firstVal == 0) { + tp->nextSide = 0; + } else if (secondVal == 0) { + tp->nextSide = 1; + } else { + if ((firstVal == 3) && (secondVal == 3)) { + // ? + } else if (firstVal == 3) { + tp->nextSide = 0; + } else if (secondVal == 3) { + tp->nextSide = 1; + } else { + if (isSound == 0) { + if (firstVal == SOUND_LOAD_STATUS_COMPLETE) { + for (var_v1_2 = 0; var_v1_2 < SEQUENCE_PLAYERS; var_v1_2++) { + if (gSequencePlayers[var_v1_2].enabled && gSequencePlayers[var_v1_2].seqId == tp->entries[0].id) { + break; + } + } + if (var_v1_2 == SEQUENCE_PLAYERS) { + tp->nextSide = 0; + goto out; + } + } + if (secondVal == SOUND_LOAD_STATUS_COMPLETE) { + for (var_v1_2 = 0; var_v1_2 < SEQUENCE_PLAYERS; var_v1_2++) { + if (gSequencePlayers[var_v1_2].enabled && gSequencePlayers[var_v1_2].seqId == tp->entries[1].id) { + break; + } + } + if (var_v1_2 == SEQUENCE_PLAYERS) { + tp->nextSide = 1; + goto out; + } + } + } else if (isSound == 1) { + if (firstVal == SOUND_LOAD_STATUS_COMPLETE) { + for (var_v1_2 = 0; var_v1_2 < gMaxSimultaneousNotes; var_v1_2++) { + if (gNotes[var_v1_2].noteSubEu.bankId == tp->entries[0].id && gNotes[var_v1_2].noteSubEu.enabled) { + break; + } + } + if (var_v1_2 == gMaxSimultaneousNotes) { + tp->nextSide = 0; + goto out; + } + } + if (secondVal == SOUND_LOAD_STATUS_COMPLETE) { + for (var_v1_2 = 0; var_v1_2 < gMaxSimultaneousNotes; var_v1_2++) { + if (gNotes[var_v1_2].noteSubEu.bankId == tp->entries[1].id && gNotes[var_v1_2].noteSubEu.enabled) { + break; + } + } + if (var_v1_2 == gMaxSimultaneousNotes) { + tp->nextSide = 1; + goto out; } } } - if (var_v1_3 == gMaxSimultaneousNotes) { - temp_v0_2 = &gBankLoadStatus[var_a3_2->entries[1].id]; - var_t2 = 3; - if (*temp_v0_2 != 5) { - *temp_v0_2 = 3; - } - } - } - } - if (var_t1 == 0) { - var_a3_2->nextSide = 0; - var_v0_3 = 0; - goto block_84; - } - if (var_t2 == 0) { - var_v0_3 = 1; - var_a3_2->nextSide = 1; - goto block_84; - } - if ((var_t1 == 3) && (var_t2 == 3)) { - var_v0_3 = var_a3_2->nextSide; - goto block_84; - } - if (var_t1 == 3) { - var_a3_2->nextSide = 0; - var_v0_3 = 0; - goto block_84; - } - if (var_t2 == 3) { - var_v0_3 = 1; - var_a3_2->nextSide = 1; - goto block_84; - } - if (sp20 == 0) { - if (var_t1 == 2) { - var_v0_4 = gSequencePlayers; -loop_47: - if ((((u32) var_v0_4->unk0 >> 0x1F) == 0) || (var_v0_4->seqId != var_a3_2->entries[0].id)) { - var_v0_4 += 0x148; - if (var_v0_4 != gSequenceChannels) { - goto loop_47; - } - } - if (var_v0_4 == gSequenceChannels) { - var_a3_2->nextSide = 0; - var_v0_3 = 0; - goto block_84; - } - goto block_52; - } -block_52: - if (var_t2 == 2) { - var_v0_5 = gSequencePlayers; -loop_54: - if ((((u32) var_v0_5->unk0 >> 0x1F) == 0) || (var_v0_5->seqId != var_a3_2->entries[1].id)) { - var_v0_5 += 0x148; - if (var_v0_5 != gSequenceChannels) { - goto loop_54; - } - } - var_v0_3 = 1; - if (var_v0_5 == gSequenceChannels) { - var_a3_2->nextSide = 1; - goto block_84; - } - goto block_76; - } - goto block_76; - } - if (sp20 == (s32) 1U) { - if (var_t1 == 2) { - var_v1_4 = 0; - if (gMaxSimultaneousNotes > 0) { - var_v0_6 = gNotes; -loop_63: - if ((var_v0_6->noteSubEu.bankId != var_a3_2->entries[0].id) || (((u32) var_v0_6->unkB0 >> 0x1F) == 0)) { - var_v1_4 += 1; - var_v0_6 += 0xC0; - if (var_v1_4 < gMaxSimultaneousNotes) { - goto loop_63; + if (tp->nextSide == 0) { + if (firstVal == SOUND_LOAD_STATUS_IN_PROGRESS) { + if (secondVal != SOUND_LOAD_STATUS_IN_PROGRESS) { + tp->nextSide = 1; + goto out; } + } else { + goto out; } - } - var_v0_3 = 0; - if (var_v1_4 == gMaxSimultaneousNotes) { - var_a3_2->nextSide = 0; - goto block_84; - } - goto block_68; - } -block_68: - if (var_t2 == 2) { - var_v1_5 = 0; - if (gMaxSimultaneousNotes > 0) { - var_v0_7 = gNotes; -loop_71: - if ((var_v0_7->noteSubEu.bankId != var_a3_2->entries[1].id) || (((u32) var_v0_7->unkB0 >> 0x1F) == 0)) { - var_v1_5 += 1; - var_v0_7 += 0xC0; - if (var_v1_5 < gMaxSimultaneousNotes) { - goto loop_71; + } else { + if (secondVal == SOUND_LOAD_STATUS_IN_PROGRESS) { + if (firstVal != SOUND_LOAD_STATUS_IN_PROGRESS) { + tp->nextSide = 0; + goto out; } + } else { + goto out; } } - var_v0_3 = 1; - if (var_v1_5 == gMaxSimultaneousNotes) { - var_a3_2->nextSide = 1; - goto block_84; - } - goto block_76; - } - goto block_76; - } -block_76: - var_v0_3 = var_a3_2->nextSide; - if (var_v0_3 == 0) { - if (var_t1 == 1) { - var_v0_3 = 1; - if (var_t2 != 1) { - var_a3_2->nextSide = 1; - goto block_84; - } - goto block_83; - } - goto block_84; - } - if (var_t2 == 1) { - var_v0_3 = 0; - if (var_t1 != 1) { - var_a3_2->nextSide = 0; - goto block_84; - } -block_83: - return NULL; - } -block_84: - temp_v1_2 = var_a3_2->entries[var_v0_3].id; - if (temp_v1_2 != -1) { - sp34[temp_v1_2] = 0; - if (sp20 == (s32) 1U) { - sp28 = var_a3_2; - discard_bank((s32) var_a3_2->entries[var_a3_2->nextSide].id); - } - } - temp_a0_2 = var_a3_2->nextSide; - temp_v1_3 = &arg0->temporary.pool; - if (temp_a0_2 != 0) { - temp_v1_4 = &arg0->temporary.pool; - if (temp_a0_2 != 1) { return NULL; + out:; } - var_a3_2->entries[1].id = (s16) id; - var_v0_8 = (&temp_v1_4->start[temp_v1_4->size] - size) - 0x10; - var_a3_2->entries[1].ptr = var_v0_8; - var_a3_2->entries[1].size = (u32) size; - if ((u32) var_v0_8 < (u32) temp_v1_4->cur) { - sp34[var_a3_2->entries[0].id] = 0; - switch (sp20) { /* switch 1; irregular */ - case 0: /* switch 1 */ - sp28 = var_a3_2; - sp24 = temp_v1_4; - discard_sequence((s32) var_a3_2->entries[0].id); -block_106: - var_a3_2 = sp28; - break; - case 1: /* switch 1 */ - sp28 = var_a3_2; - sp24 = temp_v1_4; - discard_bank((s32) var_a3_2->entries[0].id); - goto block_106; - } - var_a3_2->entries[0].id = -1; - temp_v1_4->cur = temp_v1_4->start; - var_v0_8 = var_a3_2->entries[1].ptr; - } - var_v1 = var_v0_8; - goto block_99; } - var_a3_2->entries[0].id = (s16) id; - var_a3_2->entries[0].ptr = temp_v1_3->start; - var_a3_2->entries[0].size = (u32) size; - temp_v0_3 = &temp_v1_3->start[size]; - temp_v1_3->cur = temp_v0_3; - if ((u32) var_a3_2->entries[1].ptr < (u32) temp_v0_3) { - sp34[var_a3_2->entries[1].id] = 0; - switch (sp20) { /* irregular */ + + pool = &arg0->temporary.pool; + if (tp->entries[tp->nextSide].id != (s8)-1) { + table[tp->entries[tp->nextSide].id] = SOUND_LOAD_STATUS_NOT_LOADED; + if (isSound == TRUE) { + discard_bank(tp->entries[tp->nextSide].id); + } + } + switch (tp->nextSide) { case 0: - sp28 = var_a3_2; - sp24 = temp_v1_3; - discard_sequence((s32) var_a3_2->entries[1].id); -block_96: - var_a3_2 = sp28; + tp->entries[0].ptr = pool->start; + tp->entries[0].id = (s16) id; + tp->entries[0].size = (u32) size; + pool->cur = pool->start + size; + if (tp->entries[1].ptr < pool->cur) { + table[tp->entries[1].id] = 0; + switch (isSound) { /* irregular */ + case 0: + discard_sequence((s32) tp->entries[1].id); + break; + case 1: + discard_bank((s32) tp->entries[1].id); + break; + } + tp->entries[1].id = -1; + tp->entries[1].ptr = pool->start + pool->size; + } + ret = tp->entries[0].ptr; break; case 1: - sp28 = var_a3_2; - sp24 = temp_v1_3; - discard_bank((s32) var_a3_2->entries[1].id); - goto block_96; - } - var_a3_2->entries[1].id = -1; - var_a3_2->entries[1].ptr = &temp_v1_3->start[temp_v1_3->size]; + tp->entries[1].ptr = pool->start + pool->size - size - 0x10; + tp->entries[1].id = (s16) id; + tp->entries[1].size = (u32) size; + if ((u32) tp->entries[1].ptr < (u32) pool->cur) { + table[tp->entries[0].id] = 0; + switch (isSound) { /* switch 1; irregular */ + case 0: /* switch 1 */ + discard_sequence((s32) tp->entries[0].id); + break; + case 1: /* switch 1 */ + discard_bank((s32) tp->entries[0].id); + break; + } + tp->entries[0].id = -1; + pool->cur = pool->start; + } + ret = tp->entries[1].ptr; + break; + default: + return NULL; } - var_v1 = var_a3_2->entries[0].ptr; -block_99: - var_a3_2->nextSide ^= 1; - return var_v1; + tp->nextSide ^= 1; + return ret; } - arg3 = var_a3; - temp_v0_4 = soundAlloc(&arg0->persistent.pool, arg1 * size); - arg0->persistent.entries[arg0->persistent.numEntries].ptr = temp_v0_4; - if (temp_v0_4 == NULL) { - if ((arg3 != 0) && (arg3 != 1)) { - if (arg3 == 2) { - var_a3 = 0; - goto loop_1; - } - goto block_116; + ret = soundAlloc(&arg0->persistent.pool, arg1 * size); + arg0->persistent.entries[arg0->persistent.numEntries].ptr = ret; + if (ret == NULL) { + switch (arg3) { + case 2: + return alloc_bank_or_seq(arg0, arg1, size, 0, id); + case 1: + case 0: + return NULL; } - return NULL; } -block_116: arg0->persistent.entries[arg0->persistent.numEntries].id = (s16) id; arg0->persistent.entries[arg0->persistent.numEntries].size = (u32) size; - temp_v1 = arg0->persistent.numEntries; - arg0->persistent.numEntries = temp_v1 + 1; - return arg0->persistent.entries[temp_v1].ptr; + return arg0->persistent.entries[arg0->persistent.numEntries++].ptr; } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B93BC.s") -#endif void *get_bank_or_seq(s32 poolIdx, s32 arg1, s32 id) { void *ret; @@ -576,8 +499,6 @@ void *get_bank_or_seq_inner(s32 poolIdx, s32 arg1, s32 bankId) { return NULL; } -#ifdef NEEDS_RODATA -// inspired by func_eu_802e27e4_unused from SM64 void func_800B9BE4(f32 arg0, f32 arg1, u16 *arg2) { s32 i; f32 tmp[16]; @@ -597,268 +518,171 @@ void func_800B9BE4(f32 arg0, f32 arg1, u16 *arg2) { arg2[i] = tmp[i]; } } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9BE4.s") -#endif -// inspired by decrease_reverb_gain from SM64 -void func_800B9FB8(void) { +void decrease_reverb_gain(void) { s32 i; for (i = 0; i < gNumSynthesisReverbs; i++) { gSynthesisReverbs[i].reverbGain -= gSynthesisReverbs[i].reverbGain / 4; } } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -? func_800B9FB8(); /* extern */ -? func_800BA250(); /* extern */ -extern u8 D_803B0500; -extern s32 D_803B0504; -extern s32 D_803B7180; -extern ? D_803B718C; +s32 audio_shut_down_and_reset_step(void) { + s32 i; + s32 j; -s32 func_800BA00C(void) { - s32 *var_v1_2; - s32 var_a0; - s32 var_v0; - s32 var_v1; - struct SequencePlayer *var_s0; - void *temp_t1; - void *temp_v0; - void *temp_v0_2; - - switch (D_803B0500) { + switch (gAudioResetStatus) { case 5: - var_s0 = gSequencePlayers; - do { - sequence_player_disable(var_s0); - var_s0 += 0x148; - } while (var_s0 != gSequenceChannels); - D_803B0504 = 4; - D_803B0500 -= 1; + for (i = 0; i < SEQUENCE_PLAYERS; i++) { + sequence_player_disable(&gSequencePlayers[i]); + } + gAudioResetFadeOutFramesLeft = 4; + gAudioResetStatus--; break; case 4: - if (D_803B0504 != 0) { - D_803B0504 -= 1; - func_800B9FB8(); + if (gAudioResetFadeOutFramesLeft != 0) { + gAudioResetFadeOutFramesLeft--; + decrease_reverb_gain(); } else { - var_a0 = 0; - var_v1 = 0; - if (gMaxSimultaneousNotes > 0) { - do { - var_a0 += 1; - temp_v0 = gNotes + var_v1; - if ((((u32) temp_v0->unkB0 >> 0x1F) != 0) && (temp_v0->unk59 != 0)) { - temp_v0->unk68 = (f32) gAudioBufferParameters.updatesPerFrameInv; - temp_v0_2 = gNotes + var_v1; - temp_v0_2->unk58 = (u8) (temp_v0_2->unk58 | 0x10); - } - var_v1 += 0xC0; - } while (var_a0 < gMaxSimultaneousNotes); + for (i = 0; i < gMaxSimultaneousNotes; i++) { + if (gNotes[i].noteSubEu.enabled && gNotes[i].adsr.state != ADSR_STATE_DISABLED) { + gNotes[i].adsr.fadeOutVel = gAudioBufferParameters.updatesPerFrameInv; + gNotes[i].adsr.action |= ADSR_ACTION_RELEASE; + } } - D_803B0504 = 0x00000010; - D_803B0500 -= 1; + gAudioResetFadeOutFramesLeft = 0x00000010; + gAudioResetStatus--; } break; case 3: - var_v1_2 = &D_803B7180; - if (D_803B0504 != 0) { - D_803B0504 -= 1; - func_800B9FB8(); + if (gAudioResetFadeOutFramesLeft != 0) { + gAudioResetFadeOutFramesLeft--; + decrease_reverb_gain(); } else { - do { - var_v0 = 0; -loop_18: - *(*var_v1_2 + var_v0) = 0; - (*var_v1_2 + var_v0)->unk2 = 0; - (*var_v1_2 + var_v0)->unk4 = 0; - temp_t1 = *var_v1_2 + var_v0; - var_v0 += 8; - temp_t1->unk6 = 0; - if (var_v0 != 0xA00) { - goto loop_18; + for (i = 0; i < NUMAIBUFFERS; i++) { + for (j = 0; j < (s32) (AIBUFFER_LEN / sizeof(s16)); j++) { + gAiBuffers[i][j] = 0; } - var_v1_2 += 4; - } while (var_v1_2 != &D_803B718C); - D_803B0504 = 4; - D_803B0500 -= 1; + } + gAudioResetFadeOutFramesLeft = 4; + gAudioResetStatus--; } break; case 2: - if (D_803B0504 != 0) { - D_803B0504 -= 1; + if (gAudioResetFadeOutFramesLeft != 0) { + gAudioResetFadeOutFramesLeft--; } else { - D_803B0500 -= 1; + gAudioResetStatus--; } break; case 1: - func_800BA250(); - D_803B0500 = 0; + audio_reset_session(); + gAudioResetStatus = 0; break; } - if ((s32) D_803B0500 < 3) { + if (gAudioResetStatus < 3) { return 0; } return 1; } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA00C.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-15-2023 -? func_800B914C(? *, s16, s16, u16); /* extern */ -? reset_bank_and_seq_load_status(); /* extern */ -extern s32 D_803AFBD0; -extern ? D_803B0348; -extern struct PoolSplit2 D_803B0358; -extern struct PoolSplit D_803B0360; -extern struct PoolSplit D_803B0370; -extern u8 D_803B0501; -extern s32 D_803B70AC; -extern s16 D_803B70B4; -extern ? D_803B70C8; -extern ? D_803B70D0; -extern f32 D_803B7178; -extern s32 D_803B717C; -extern s32 gSampleDmaNumListItems; -extern u16 gVolume; -extern ? sAudioSynthesisPad; -static ? D_800EA4D8; /* unable to generate initializer */ -static s16 D_800EA5CC; /* unable to generate initializer */ - -void func_800BA250(void) { - ? *var_s0; - f32 temp_f0; - s16 *temp_v0_2; - s16 *temp_v0_3; - s16 temp_a2; - s16 temp_t0; - s32 temp_t2; - s32 temp_t9; +void audio_reset_session(void) { s32 var_s1; s32 var_s5; - struct SynthesisReverb *var_s0_2; - struct SynthesisReverb *var_s2; - struct SynthesisReverb *var_s2_2; - u16 temp_t7; - u32 temp_s0; - u32 temp_s1; - u8 temp_v1; - void *temp_s6; - void *temp_v0; + s32 temp; + u32 totalMem; + u32 temporaryMem; + u32 persistentMem; + s16 *mem; + struct SynthesisReverb *reverb; + struct ReverbSettingsEU *reverbSettings; + struct AudioSessionSettingsEU *temp_s6 = &gAudioSessionPresets[gAudioResetPresetIdToLoad]; - temp_s6 = (D_803B0501 * 0x28) + &D_800EA4D8; gSampleDmaNumListItems = 0; - temp_t9 = temp_s6->unk0; - gAudioBufferParameters.frequency = (u16) temp_t9; - gAudioBufferParameters.aiFrequency = osAiSetFrequency(temp_t9 & 0xFFFF); - gAudioBufferParameters.samplesPerFrameTarget = (((s32) gAudioBufferParameters.frequency / (s32) D_803B717C) + 0xF) & 0xFFF0; - temp_t0 = gAudioBufferParameters.samplesPerFrameTarget + 0x10; + gAudioBufferParameters.frequency = temp_s6->frequency; + gAudioBufferParameters.aiFrequency = osAiSetFrequency(gAudioBufferParameters.frequency); + gAudioBufferParameters.samplesPerFrameTarget = ALIGN16(gAudioBufferParameters.frequency / gRefreshRate); gAudioBufferParameters.minAiBufferLength = gAudioBufferParameters.samplesPerFrameTarget - 0x10; - gAudioBufferParameters.maxAiBufferLength = temp_t0; - gAudioBufferParameters.updatesPerFrame = (temp_t0 / 192) + 1; - temp_a2 = gAudioBufferParameters.updatesPerFrame; - gAudioBufferParameters.samplesPerUpdate = ((s16) gAudioBufferParameters.samplesPerFrameTarget / temp_a2) & 0xFFF8; - temp_f0 = (f32) temp_a2; + gAudioBufferParameters.maxAiBufferLength = gAudioBufferParameters.samplesPerFrameTarget + 0x10; + gAudioBufferParameters.updatesPerFrame = ((gAudioBufferParameters.samplesPerFrameTarget + 0x10) / 192) + 1; + gAudioBufferParameters.samplesPerUpdate = (gAudioBufferParameters.samplesPerFrameTarget / gAudioBufferParameters.updatesPerFrame) & ~0x0007; gAudioBufferParameters.samplesPerUpdateMax = gAudioBufferParameters.samplesPerUpdate + 8; gAudioBufferParameters.samplesPerUpdateMin = gAudioBufferParameters.samplesPerUpdate - 8; - gAudioBufferParameters.resampleRate = 32000.0f / (f32) gAudioBufferParameters.frequency; - gAudioBufferParameters.unkUpdatesPerFrameScaled = 0.001171875f / temp_f0; - gAudioBufferParameters.updatesPerFrameInv = 1.0f / temp_f0; - gMaxSimultaneousNotes = (s32) temp_s6->unk5; - gVolume = temp_s6->unkC; - D_803B70B4 = (s16) (u32) (((temp_f0 * 2880000.0f) / (f32) D_800EA5CC) / D_803B7178); - gAudioBufferParameters.presetUnk4 = (s16) temp_s6->unk4; + gAudioBufferParameters.resampleRate = 32000.0f / ((f32)(s32)gAudioBufferParameters.frequency); + gAudioBufferParameters.unkUpdatesPerFrameScaled = 0.001171875f / gAudioBufferParameters.updatesPerFrame; + gAudioBufferParameters.updatesPerFrameInv = 1.0f / gAudioBufferParameters.updatesPerFrame; + gMaxSimultaneousNotes = temp_s6->maxSimultaneousNotes; + gVolume = temp_s6->volume; + gTempoInternalToExternal = (u32) (((gAudioBufferParameters.updatesPerFrame * 2880000.0f) / gTatumsPerBeat) / D_803B7178); + gAudioBufferParameters.presetUnk4 = temp_s6->unk1; gAudioBufferParameters.samplesPerFrameTarget *= gAudioBufferParameters.presetUnk4; gAudioBufferParameters.maxAiBufferLength *= gAudioBufferParameters.presetUnk4; gAudioBufferParameters.minAiBufferLength *= gAudioBufferParameters.presetUnk4; - gAudioBufferParameters.updatesPerFrame = temp_a2 * gAudioBufferParameters.presetUnk4; - D_803B70AC = (gMaxSimultaneousNotes * 0x14 * gAudioBufferParameters.updatesPerFrame) + (temp_s6->unk6 << 5) + 0x1E0; - temp_s0 = temp_s6->unk10 + temp_s6->unk14 + temp_s6->unk18; - temp_s1 = temp_s6->unk1C + temp_s6->unk20 + temp_s6->unk24; - temp_t2 = temp_s0 + temp_s1; - D_803B0348.unk0 = (s32) ((D_803AFBD0 - temp_t2) - 0x100); - D_803B0348.unkC = temp_t2; - func_800B914C(&D_803B0348, gAudioBufferParameters.presetUnk4, temp_a2, gAudioBufferParameters.frequency); - D_803B0358.wantPersistent = temp_s0; - D_803B0358.wantTemporary = temp_s1; - seq_and_bank_pool_init(&D_803B0358); - D_803B0360.wantSeq = temp_s6->unk10; - D_803B0360.wantBank = temp_s6->unk14; - D_803B0360.wantUnused = temp_s6->unk18; - persistent_pools_init(&D_803B0360); - D_803B0370.wantSeq = temp_s6->unk1C; - D_803B0370.wantBank = temp_s6->unk20; - D_803B0370.wantUnused = temp_s6->unk24; - temporary_pools_init(&D_803B0370); + gAudioBufferParameters.updatesPerFrame *= gAudioBufferParameters.presetUnk4; + gMaxAudioCmds = (gMaxSimultaneousNotes * 0x14 * gAudioBufferParameters.updatesPerFrame) + (temp_s6->numReverbs * 0x20) + 0x1E0; + persistentMem = temp_s6->persistentSeqMem + temp_s6->persistentBankMem + temp_s6->unk_18; + temporaryMem = temp_s6->temporarySeqMem + temp_s6->temporaryBankMem + temp_s6->unk_24; + totalMem = persistentMem + temporaryMem; + temp = (gAudioSessionPool.size - totalMem) - 0x100; + sSessionPoolSplit.wantSeq = temp; + sSessionPoolSplit.wantCustom = totalMem; + func_800B914C(&sSessionPoolSplit); + sSeqAndBankPoolSplit.wantPersistent = persistentMem; + sSeqAndBankPoolSplit.wantTemporary = temporaryMem; + seq_and_bank_pool_init(&sSeqAndBankPoolSplit); + sPersistentCommonPoolSplit.wantSeq = temp_s6->persistentSeqMem; + sPersistentCommonPoolSplit.wantBank = temp_s6->persistentBankMem; + sPersistentCommonPoolSplit.wantUnused = temp_s6->unk_18; + persistent_pools_init(&sPersistentCommonPoolSplit); + sTemporaryCommonPoolSplit.wantSeq = temp_s6->temporarySeqMem; + sTemporaryCommonPoolSplit.wantBank = temp_s6->temporaryBankMem; + sTemporaryCommonPoolSplit.wantUnused = temp_s6->unk_24; + temporary_pools_init(&sTemporaryCommonPoolSplit); reset_bank_and_seq_load_status(); - gNotes = soundAlloc(&gNotesAndBuffersPool, gMaxSimultaneousNotes * 0xC0); + gNotes = soundAlloc(&gNotesAndBuffersPool, gMaxSimultaneousNotes * sizeof(struct Note)); note_init_all(); init_note_free_list(); gNoteSubsEu = soundAlloc(&gNotesAndBuffersPool, gAudioBufferParameters.updatesPerFrame * gMaxSimultaneousNotes * 0x10); - var_s0 = &D_803B70C8; - do { - var_s0 += 4; - var_s0->unk-4 = soundAlloc(&gNotesAndBuffersPool, D_803B70AC * 8); - } while (var_s0 != &D_803B70D0); - var_s2 = gSynthesisReverbs; - do { - var_s2 += 0x108; - var_s2->unk-107 = 0; - } while ((u32) var_s2 < (u32) &sAudioSynthesisPad); - gNumSynthesisReverbs = (s8) temp_s6->unk6; - var_s2_2 = gSynthesisReverbs; - var_s5 = 0; - if (gNumSynthesisReverbs > 0) { - do { - temp_v0 = temp_s6->unk8 + (var_s5 * 4); - temp_t7 = temp_v0->unk1 << 6; - var_s2_2->windowSize = temp_t7; - var_s2_2->downsampleRate = temp_v0->unk0; - var_s2_2->useReverb = 8; - var_s2_2->reverbGain = temp_v0->unk2; - var_s2_2->ringBuffer.left = soundAlloc(&gNotesAndBuffersPool, (temp_t7 & 0xFFFF) * 2); - temp_v1 = var_s2_2->downsampleRate; - var_s2_2->ringBuffer.right = soundAlloc(&gNotesAndBuffersPool, var_s2_2->windowSize * 2); - var_s2_2->nextRingBufferPos = 0; - var_s2_2->unkC = 0; - var_s2_2->curFrame = 0; - var_s2_2->framesLeftToIgnore = 2; - var_s2_2->bufSizePerChannel = (s32) var_s2_2->windowSize; - if (temp_v1 != 1) { - var_s2_2->resampleFlags = 1; - var_s2_2->resampleRate = (u16) (0x8000 / (s32) temp_v1); - var_s1 = 0; - var_s2_2->resampleStateLeft = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); - var_s2_2->resampleStateRight = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); - var_s2_2->unk24 = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); - var_s2_2->unk28 = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); - if (gAudioBufferParameters.updatesPerFrame > 0) { - var_s0_2 = var_s2_2; - do { - temp_v0_2 = soundAlloc(&gNotesAndBuffersPool, 0x00000300U); - var_s0_2->items[0][0].toDownsampleLeft = temp_v0_2; - var_s0_2->items[0][0].toDownsampleRight = temp_v0_2 + 0x180; - temp_v0_3 = soundAlloc(&gNotesAndBuffersPool, 0x00000300U); - var_s0_2->items[1][0].toDownsampleLeft = temp_v0_3; - var_s0_2->items[1][0].toDownsampleRight = temp_v0_3 + 0x180; - var_s1 += 1; - var_s0_2 += 0x14; - } while (var_s1 < gAudioBufferParameters.updatesPerFrame); - } + for (var_s5 = 0; var_s5 != 2; var_s5++) { + gAudioCmdBuffers[var_s5] = soundAlloc(&gNotesAndBuffersPool, gMaxAudioCmds * sizeof(u64)); + } + for (var_s5 = 0; var_s5 < 4; var_s5++) { + gSynthesisReverbs[var_s5].useReverb = 0; + } + gNumSynthesisReverbs = temp_s6->numReverbs; + for (var_s5 = 0; var_s5 < gNumSynthesisReverbs; var_s5++) { + reverb = &gSynthesisReverbs[var_s5]; + reverbSettings = &temp_s6->reverbSettings[var_s5]; + reverb->windowSize = reverbSettings->windowSize * 64; + reverb->downsampleRate = reverbSettings->downsampleRate; + reverb->reverbGain = reverbSettings->gain; + reverb->useReverb = 8; + reverb->ringBuffer.left = soundAlloc(&gNotesAndBuffersPool, reverb->windowSize * 2); + reverb->ringBuffer.right = soundAlloc(&gNotesAndBuffersPool, reverb->windowSize * 2); + reverb->nextRingBufferPos = 0; + reverb->unkC = 0; + reverb->curFrame = 0; + reverb->bufSizePerChannel = reverb->windowSize; + reverb->framesLeftToIgnore = 2; + if (reverb->downsampleRate != 1) { + reverb->resampleFlags = 1; + reverb->resampleRate = 0x8000 / reverb->downsampleRate; + reverb->resampleStateLeft = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); + reverb->resampleStateRight = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); + reverb->unk24 = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); + reverb->unk28 = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); + for (var_s1 = 0; var_s1 < gAudioBufferParameters.updatesPerFrame; var_s1++) { + mem = soundAlloc(&gNotesAndBuffersPool, 0x00000300U); + reverb->items[0][var_s1].toDownsampleLeft = mem; + reverb->items[0][var_s1].toDownsampleRight = mem + (DEFAULT_LEN_1CH / sizeof(s16)); + mem = soundAlloc(&gNotesAndBuffersPool, 0x00000300U); + reverb->items[1][var_s1].toDownsampleLeft = mem; + reverb->items[1][var_s1].toDownsampleRight = mem + (DEFAULT_LEN_1CH / sizeof(s16)); } - var_s5 += 1; - var_s2_2 += 0x108; - } while (var_s5 < gNumSynthesisReverbs); + } } func_800BB030(gMaxSimultaneousNotes); osWritebackDCacheAll(); } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA250.s") -#endif void *unk_pool1_lookup(s32 poolIdx, s32 id) { s32 i; @@ -871,86 +695,60 @@ void *unk_pool1_lookup(s32 poolIdx, s32 id) { return NULL; } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -? func_800BB584(s32); /* extern */ -extern s32 D_803B706C; -extern s32 D_803B7070; -extern s32 D_803B7074; - -void func_800BA8B0(s32 arg0, s32 arg1) { - s32 sp3C; - s32 sp38; - u32 sp34; - u32 sp30; - void *sp20; +// SM64 does not appear to have a function +// comparable to this one, not a clue what +// this one is doing. +void func_800BA8B0(s32 poolIdx, s32 id) { + ALSeqFile *sp3C; s32 temp_a2; - s32 var_s1; u32 temp_a1; - u32 var_a3; - u8 *temp_v0_3; - u8 *temp_v0_4; - u8 *temp_v0_5; - void *temp_v0; - void *temp_v0_2; + u8 *var_a3; + u8 *temp_v0; + s32 pad; - var_s1 = arg1; - switch (arg0) { /* irregular */ + switch (poolIdx) { /* irregular */ case 0: - sp3C = D_803B706C; + sp3C = gSeqFileHeader; break; case 1: - sp3C = D_803B7070; + sp3C = gAlCtlHeader; break; case 2: - sp3C = D_803B7074; + sp3C = gAlTbl; break; } - temp_v0 = sp3C + (var_s1 * 8); - if (temp_v0->unk8 == 0) { - var_s1 = temp_v0->unk4; + if (sp3C->seqArray[id].len == 0) { + id = sp3C->seqArray[id].offset; } - if (unk_pool1_lookup(arg0, var_s1) == NULL) { - temp_v0_2 = sp3C + (var_s1 * 8); + if (unk_pool1_lookup(poolIdx, id) == NULL) { temp_a2 = gUnkPool1.pool.numAllocatedEntries; - temp_a1 = temp_v0_2->unk8; - var_a3 = temp_v0_2->unk4; - if (arg0 == 1) { + temp_a1 = sp3C->seqArray[id].len; + var_a3 = sp3C->seqArray[id].offset; + if (poolIdx == 1) { var_a3 += 0x10; } - sp34 = temp_a1; - sp38 = temp_a2; - sp30 = var_a3; - temp_v0_3 = soundAlloc(&gUnkPool1.pool, temp_a1); - gUnkPool1.entries[temp_a2].ptr = temp_v0_3; - if (temp_v0_3 != NULL) { - sp20 = (temp_a2 * 0xC) + &gUnkPool1; - audio_dma_copy_immediate(var_a3, temp_v0_3, sp34); - gUnkPool1.entries[temp_a2].poolIndex = (s16) arg0; - gUnkPool1.entries[temp_a2].id = (s16) var_s1; - gUnkPool1.entries[temp_a2].size = sp34; - switch (arg0) { /* switch 1; irregular */ + gUnkPool1.entries[temp_a2].ptr = soundAlloc(&gUnkPool1.pool, temp_a1); + if (gUnkPool1.entries[temp_a2].ptr != NULL) { + audio_dma_copy_immediate(var_a3, gUnkPool1.entries[temp_a2].ptr, temp_a1); + gUnkPool1.entries[temp_a2].poolIndex = poolIdx; + gUnkPool1.entries[temp_a2].id = id; + gUnkPool1.entries[temp_a2].size = temp_a1; + switch (poolIdx) { /* switch 1; irregular */ case 0: /* switch 1 */ - temp_v0_4 = &gSeqLoadStatus[var_s1]; - if (*temp_v0_4 != 5) { - *temp_v0_4 = 5; - return; + if (gSeqLoadStatus[id] != 5) { + gSeqLoadStatus[id] = 5; } break; case 1: /* switch 1 */ - gCtlEntries[var_s1].instruments = (struct Instrument **) (gUnkPool1.entries[temp_a2].ptr + 4); - func_800BB584(var_s1); - temp_v0_5 = &gBankLoadStatus[var_s1]; - if (*temp_v0_5 != 5) { - *temp_v0_5 = 5; + gCtlEntries[id].instruments = (struct Instrument **) (gUnkPool1.entries[temp_a2].ptr + 4); + func_800BB584(id); + if (gBankLoadStatus[id] != 5) { + gBankLoadStatus[id] = 5; } break; + case 2: /* switch 1 */ + break; } } - } else { - case 2: /* switch 1 */ } } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA8B0.s") -#endif diff --git a/src/audio/heap.h b/src/audio/heap.h index c37f1814b..cc81a3039 100644 --- a/src/audio/heap.h +++ b/src/audio/heap.h @@ -99,26 +99,41 @@ void *soundAlloc(struct SoundAllocPool *pool, u32 size); void sound_alloc_pool_init(struct SoundAllocPool *pool, void *memAddr, u32 size); void persistent_pool_clear(struct PersistentPool *persistent); void temporary_pool_clear(struct TemporaryPool *temporary); -void *get_bank_or_seq(s32 poolIdx, s32 arg1, s32 id); -void *get_bank_or_seq_inner(s32 poolIdx, s32 arg1, s32 bankId); -void func_800B9BE4(f32, f32, u16*); void func_800B90E0(struct SoundAllocPool *pool); void func_800B90F0(s32); void func_800B914C(struct PoolSplit*); -void func_800B9FB8(void); void seq_and_bank_pool_init(struct PoolSplit2 *a); void persistent_pools_init(struct PoolSplit *a); void temporary_pools_init(struct PoolSplit *a); +void *alloc_bank_or_seq(struct SoundMultiPool*, s32, s32, s32, s32); +void *get_bank_or_seq(s32 poolIdx, s32 arg1, s32 id); +void *get_bank_or_seq_inner(s32 poolIdx, s32 arg1, s32 bankId); +void func_800B9BE4(f32, f32, u16*); +void decrease_reverb_gain(void); +s32 audio_shut_down_and_reset_step(void); +void audio_reset_session(void); void *unk_pool1_lookup(s32 poolIdx, s32 id); +void func_800BA8B0(s32, s32); extern s32 D_800EA5D0; extern u8 D_803B71B0[]; +extern u8 gAudioResetPresetIdToLoad; // D_803B0501 +extern s32 gMaxAudioCmds; // D_803B70AC +extern s16 gTempoInternalToExternal; // D_803B70B4 +extern u64 *gAudioCmdBuffers[]; // D_803B70C8 +extern f32 D_803B7178; +extern s32 gRefreshRate; // D_803B717C +extern u32 gSampleDmaNumListItems; // D_803B6E58 +extern struct AudioSessionSettingsEU gAudioSessionPresets[]; // D_800EA4D8 + // Note: In some .asm files D_803AFBC8 has been replaced with gLeftVolRampings // That is almost certainly incorrect, but I don't know how to fix it at this point +extern s16 gVolume; // D_803AFBC0 +extern s8 gUseReverb; extern s8 gNumSynthesisReverbs; // D_803AFBC3 -extern struct SoundAllocPool gLeftVolRampings; +extern struct NoteSubEu *gNoteSubsEu; extern struct SoundAllocPool gAudioSessionPool; // D_803AFBC8 extern struct SoundAllocPool gAudioInitPool; // D_803AFBD8 extern struct SoundAllocPool gNotesAndBuffersPool; @@ -126,11 +141,20 @@ extern struct SoundAllocPool gPersistentCommonPool; // D_803AFC28 extern struct SoundAllocPool gTemporaryCommonPool; // D_803AFC38 extern struct SoundMultiPool gSeqLoadedPool; // D_803AFC48 extern struct SoundMultiPool gBankLoadedPool; // D_803AFE18 +extern struct SoundMultiPool gUnusedLoadedPool; extern struct Unk1Pool gUnkPool1; // D_803B01B8 +extern struct PoolSplit sSessionPoolSplit; // D_803B0348 +extern struct PoolSplit2 sSeqAndBankPoolSplit; // D_803B0358 +extern struct PoolSplit sPersistentCommonPoolSplit; // D_803B0360; +extern struct PoolSplit sTemporaryCommonPoolSplit; // D_803B0370; +extern struct SoundMultiPool gUnusedLoadedPool; // D_803AFFE8 +extern struct SoundAllocPool gSeqAndBankPool; // D_803AFC18 extern u8 gBankLoadStatus[64]; // D_803B03C0 extern u8 gUnkLoadStatus[64]; extern u8 gSeqLoadStatus[256]; // D_803B0400 -extern struct SoundMultiPool gUnusedLoadedPool; // D_803AFFE8 -extern struct SoundAllocPool gSeqAndBankPool; // D_803AFC18 +extern volatile u8 gAudioResetStatus; // D_803B0500 +extern u8 gAudioResetPresetIdToLoad; +extern s32 gAudioResetFadeOutFramesLeft; // D_803B0504 +extern struct Note *gNotes; #endif // AUDIO_HEAP_H diff --git a/src/audio/internal.h b/src/audio/internal.h index a9aaa4628..a8b4da076 100644 --- a/src/audio/internal.h +++ b/src/audio/internal.h @@ -512,8 +512,10 @@ struct AudioSessionSettingsEU { /* 0x0E */ u16 unk3; // always 0 /* 0x10 */ u32 persistentSeqMem; /* 0x14 */ u32 persistentBankMem; - /* 0x18, 0x1C */ u32 temporarySeqMem; - /* 0x1C, 0x20 */ u32 temporaryBankMem; + /* 0x18 */ u32 unk_18; + /* 0x1C */ u32 temporarySeqMem; + /* 0x20 */ u32 temporaryBankMem; + /* 0x24 */ u32 unk_24; }; // 0x30 on shindou struct AudioSessionSettings { @@ -545,6 +547,17 @@ struct AudioBufferParametersEU { /*0x1C*/ f32 unkUpdatesPerFrameScaled; // 3.0f / (1280.0f * updatesPerFrame) }; +/** + * This definition comes from SM64. For reasons not fully understood + * eu_process_audio_cmd does not match properly if this definition + * is used. + * We're either: + * Missing a compiler -D for IS_BIG_ENDIAN + * or + * The version of that function in MK64 is significantly different + * from its SM64 counterpart + * Or we just have a poor understanding of this part of the system. + struct EuAudioCmd { union { #if IS_BIG_ENDIAN @@ -583,5 +596,25 @@ struct EuAudioCmd { #endif } u2; }; +**/ + +struct EuAudioCmd { + union { + struct { + u8 op; + u8 arg1; + u8 arg2; + u8 arg3; + } s; + s32 first; + } u; + union { + s32 as_s32; + u32 as_u32; + f32 as_f32; + u8 as_u8; + s8 as_s8; + } u2; +}; #endif // AUDIO_INTERNAL_H diff --git a/src/audio/load.c b/src/audio/load.c index c16453e3f..c450e905c 100644 --- a/src/audio/load.c +++ b/src/audio/load.c @@ -46,36 +46,20 @@ u8 sSampleDmaReuseQueueTail2; // sSampleDmaReuseQueueTail2 u8 sSampleDmaReuseQueueHead1; // sSampleDmaReuseQueueHead1 u8 sSampleDmaReuseQueueHead2; // sSampleDmaReuseQueueHead2 -s32 D_803B706C; -s32 D_803B7070; -s32 D_803B7074; +ALSeqFile *gSeqFileHeader; +ALSeqFile *gAlCtlHeader; +ALSeqFile *gAlTbl; u8 *gAlBankSets; -u16 D_803B707C; +u16 gSequenceCount; struct CtlEntry *gCtlEntries; struct AudioBufferParametersEU gAudioBufferParameters; u32 D_803B70A8; -s32 D_803B70AC; +s32 gMaxAudioCmds; s32 gMaxSimultaneousNotes; -s16 D_803B70B4; +s16 gTempoInternalToExternal; s8 gAudioLibSoundMode; s32 D_803B70B8; // According to sm64 this is s8 not s32 s32 gCurrAudioFrameDmaCount; // file split around here? -s32 D_803B70C0; -s32 D_803B70C4; -s32 D_803B70C8[2]; // probably wrong -s32 D_803B70D0; -struct SPTask *D_803B70D4; // gAudioTask? -struct SPTask D_803B70D8[2]; // gAudioTasks? -f32 D_803B7178; -s32 D_803B717C; -void *D_803B7180[3]; // unconfirmed, osAiSetNextBuffer vaddr -u32 D_803B718C; // osAiSetNextBuffer nbytes -s16 load_bss_pad3; -u16 D_803B7192; // unconfirmed -u32 gAudioRandom; -s32 gAudioErrorFlags; -u32 D_803B71A0[4]; // unconfirmed -u8 D_803B71B0[4]; // unconfirmed extern OSMesgQueue D_803B6720; extern OSIoMesg D_803B6740; @@ -281,106 +265,103 @@ void *func_800BAD0C(uintptr_t devAddr, u32 size, s32 arg2, u8 *dmaIndexRef) { return (devAddr - dmaDevAddr) + dma->buffer; } -//generated by m2c commit b7eac665cffd02361f73cec283ef16d0a35a0e5b -extern s32 gCurrAudioFrameDmaCount; +extern ? gCurrAudioFrameDmaIoMesgBufs; +extern OSMesgQueue gCurrAudioFrameDmaQueue; +extern u32 sSampleDmaListSize1; +extern ? sSampleDmaReuseQueue1; +extern ? sSampleDmaReuseQueue2; +extern u8 sSampleDmaReuseQueueHead2; +extern u8 sSampleDmaReuseQueueTail1; +extern u8 sSampleDmaReuseQueueTail2; +extern ? sSampleDmas; void *func_800BAD0C(u32 devAddr, u32 size, s32 arg2, u8 *dmaIndexRef) { - struct SharedDma *sp40; + void *sp40; s32 sp30; s32 temp_t9; + s32 temp_t9_2; + s32 temp_t9_3; s32 temp_v0_2; s32 temp_v0_4; - s32 temp_v1_3; s32 var_t2; s32 var_t3; - struct SharedDma *temp_t0; - struct SharedDma *var_a0; - struct SharedDma *var_t0; u16 temp_v0_6; - u32 temp_a1; - u32 temp_a1_2; u32 temp_s0; u32 var_v1; u32 var_v1_2; u8 *temp_v0_3; u8 *temp_v0_5; u8 temp_a0; - u8 temp_a1_3; - u8 temp_a1_4; u8 temp_a3; u8 temp_t2; u8 temp_v0; - u8 temp_v1; - u8 temp_v1_2; + void *temp_t0; + void *var_a0; + void *var_t0; var_t3 = 0; - if ((arg2 != 0) || (temp_a1 = sSampleDmaListSize1, temp_v0 = *dmaIndexRef, var_v1 = 0, ((temp_v0 < temp_a1) == 0))) { - temp_a1_2 = gSampleDmaNumListItems; + if ((arg2 != 0) || (temp_v0 = *dmaIndexRef, var_v1 = 0, ((temp_v0 < (u32) sSampleDmaListSize1) == 0))) { var_v1_2 = sSampleDmaListSize1; - if (var_v1_2 < temp_a1_2) { - var_a0 = &sSampleDmas[var_v1_2]; + if (var_v1_2 < (u32) gSampleDmaNumListItems) { + var_a0 = (var_v1_2 * 0x10) + &sSampleDmas; loop_4: temp_t0 = var_a0; - temp_v0_2 = devAddr - var_a0->source; - if ((temp_v0_2 >= 0) && ((u32) (var_a0->bufSize - size) >= (u32) temp_v0_2)) { - if (var_a0->ttl == 0) { - temp_a1_3 = sSampleDmaReuseQueueTail2; - if (sSampleDmaReuseQueueHead2 != temp_a1_3) { - temp_a3 = var_a0->reuseIndex; - temp_v0_3 = &sSampleDmaReuseQueue2[temp_a1_3]; - if (temp_a1_3 != temp_a3) { - sSampleDmaReuseQueue2[temp_a3] = *temp_v0_3; - sSampleDmas[*temp_v0_3].reuseIndex = var_a0->reuseIndex; - } - sSampleDmaReuseQueueTail2 = temp_a1_3 + 1; + temp_v0_2 = devAddr - var_a0->unk4; + if ((temp_v0_2 >= 0) && ((u32) (var_a0->unkA - size) >= (u32) temp_v0_2)) { + if ((var_a0->unkE == 0) && (sSampleDmaReuseQueueHead2 != sSampleDmaReuseQueueTail2)) { + temp_a3 = var_a0->unkD; + temp_v0_3 = &sSampleDmaReuseQueue2 + sSampleDmaReuseQueueTail2; + if (sSampleDmaReuseQueueTail2 != temp_a3) { + *(&sSampleDmaReuseQueue2 + temp_a3) = *temp_v0_3; + (&sSampleDmas + (*temp_v0_3 * 0x10))->unkD = (u8) var_a0->unkD; } + sSampleDmaReuseQueueTail2 += 1; } - var_a0->ttl = 0x3C; + var_a0->unkE = 0x3CU; *dmaIndexRef = (u8) var_v1_2; - return &var_a0->buffer[devAddr] - var_a0->source; + return (var_a0->unk0 + devAddr) - var_a0->unk4; } var_v1_2 += 1; var_a0 += 0x10; - if (var_v1_2 >= temp_a1_2) { + if (var_v1_2 >= (u32) gSampleDmaNumListItems) { sp40 = temp_t0; goto block_14; } goto loop_4; } block_14: - temp_a1_4 = sSampleDmaReuseQueueTail2; var_t0 = sp40; - if ((sSampleDmaReuseQueueHead2 != temp_a1_4) && (arg2 != 0)) { - temp_t2 = sSampleDmaReuseQueue2[temp_a1_4]; - sSampleDmaReuseQueueTail2 = temp_a1_4 + 1; - var_t0 = &sSampleDmas[temp_t2]; + if ((sSampleDmaReuseQueueHead2 != sSampleDmaReuseQueueTail2) && (arg2 != 0)) { + temp_t2 = *(&sSampleDmaReuseQueue2 + sSampleDmaReuseQueueTail2); + temp_t9 = temp_t2 * 0x10; + sSampleDmaReuseQueueTail2 += 1; + var_t0 = &sSampleDmas + temp_t9; var_t3 = 1; sp30 = (s32) temp_t2; } goto block_27; } - var_t0 = &sSampleDmas[temp_v0]; - if (temp_a1 != 0) { + var_t0 = &sSampleDmas + (temp_v0 * 0x10); + if (sSampleDmaListSize1 != 0) { loop_19: - temp_t9 = var_v1 * 0x10; + temp_t9_2 = var_v1 * 0x10; var_v1 += 1; - temp_v0_4 = devAddr - var_t0->source; - if ((temp_v0_4 >= 0) && ((u32) (var_t0->bufSize - size) >= (u32) temp_v0_4)) { - if (var_t0->ttl == 0) { - temp_v1 = sSampleDmaReuseQueueTail1; - temp_a0 = var_t0->reuseIndex; - temp_v0_5 = &sSampleDmaReuseQueue1[temp_v1]; - if (temp_v1 != temp_a0) { - sSampleDmaReuseQueue1[temp_a0] = *temp_v0_5; - sSampleDmas[*temp_v0_5].reuseIndex = var_t0->reuseIndex; + temp_v0_4 = devAddr - var_t0->unk4; + if ((temp_v0_4 >= 0) && ((u32) (var_t0->unkA - size) >= (u32) temp_v0_4)) { + if (var_t0->unkE == 0) { + temp_a0 = var_t0->unkD; + temp_v0_5 = &sSampleDmaReuseQueue1 + sSampleDmaReuseQueueTail1; + if (sSampleDmaReuseQueueTail1 != temp_a0) { + *(&sSampleDmaReuseQueue1 + temp_a0) = *temp_v0_5; + (&sSampleDmas + (*temp_v0_5 * 0x10))->unkD = (u8) var_t0->unkD; } - sSampleDmaReuseQueueTail1 = temp_v1 + 1; + sSampleDmaReuseQueueTail1 += 1; } - var_t0->ttl = 2; - return &var_t0->buffer[devAddr] - var_t0->source; + var_t0->unkE = 2U; + return (var_t0->unk0 + devAddr) - var_t0->unk4; } - var_t0 = sSampleDmas + temp_t9; - if (var_v1 >= temp_a1) { + var_t0 = &sSampleDmas + temp_t9_2; + if (var_v1 >= (u32) sSampleDmaListSize1) { goto block_27; } goto loop_19; @@ -388,23 +369,22 @@ loop_19: block_27: var_t2 = sp30; if (var_t3 == 0) { - temp_v1_2 = sSampleDmaReuseQueueTail1; - var_t2 = (s32) sSampleDmaReuseQueue1[temp_v1_2]; - sSampleDmaReuseQueueTail1 = temp_v1_2 + 1; - var_t0 = sSampleDmas + (var_t2 * 0x10); + var_t2 = (s32) *(&sSampleDmaReuseQueue1 + sSampleDmaReuseQueueTail1); + sSampleDmaReuseQueueTail1 += 1; + var_t0 = &sSampleDmas + (var_t2 * 0x10); } - temp_v0_6 = var_t0->bufSize; + temp_v0_6 = var_t0->unkA; temp_s0 = devAddr & ~0xF; - var_t0->ttl = 2; - var_t0->source = temp_s0; - var_t0->sizeUnused = temp_v0_6; - temp_v1_3 = gCurrAudioFrameDmaCount; - gCurrAudioFrameDmaCount = temp_v1_3 + 1; + var_t0->unkE = 2; + var_t0->unk4 = temp_s0; + var_t0->unk8 = temp_v0_6; + temp_t9_3 = gCurrAudioFrameDmaCount * 0x18; + gCurrAudioFrameDmaCount += 1; sp30 = var_t2; sp40 = var_t0; - osPiStartDma(&gCurrAudioFrameDmaIoMesgBufs[temp_v1_3], 0, 0, temp_s0, var_t0->buffer, (u32) temp_v0_6, &gCurrAudioFrameDmaQueue); + osPiStartDma(temp_t9_3 + &gCurrAudioFrameDmaIoMesgBufs, 0, 0, temp_s0, var_t0->unk0, (u32) temp_v0_6, &gCurrAudioFrameDmaQueue); *dmaIndexRef = (u8) var_t2; - return &var_t0->buffer[devAddr - temp_s0]; + return (devAddr - temp_s0) + var_t0->unk0; } #else GLOBAL_ASM("asm/non_matchings/audio/load/func_800BAD0C.s") @@ -583,27 +563,23 @@ void patch_sound(struct AudioBankSound *sound, u8 *memBase, u8 *offsetBase) { } #ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -extern s32 D_803B7074; - -void func_800BB584(s32 arg0) { +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Sep-12-2023 +void func_800BB584(s32 bankId) { s32 sp18; - s32 var_a1; + struct CtlEntry *temp_v0; struct CtlEntry *temp_v0_2; - struct CtlEntry *temp_v0_3; - void *temp_v0; + u8 *var_a1; - temp_v0 = D_803B7074 + (arg0 * 8); - if (temp_v0->unk8 == 0) { - var_a1 = (D_803B7074 + (temp_v0->unk4 * 8))->unk4; + if (gAlTbl->seqArray[bankId].len == 0) { + var_a1 = gAlTbl->seqArray[(s32) gAlTbl->seqArray[bankId].offset].offset; } else { - var_a1 = temp_v0->unk4; + var_a1 = gAlTbl->seqArray[bankId].offset; } - temp_v0_2 = &gCtlEntries[arg0]; - sp18 = arg0 * 0xC; - patch_audio_bank((struct AudioBank *) (temp_v0_2->instruments - 4), (u8 *) var_a1, (u32) temp_v0_2->numInstruments, (u32) temp_v0_2->numDrums); - temp_v0_3 = &gCtlEntries[arg0]; - temp_v0_3->drums = temp_v0_3->instruments->unk-4; + temp_v0 = &gCtlEntries[bankId]; + sp18 = bankId * 0xC; + patch_audio_bank((struct AudioBank *) (temp_v0->instruments - 4), var_a1, (u32) temp_v0->numInstruments, (u32) temp_v0->numDrums); + temp_v0_2 = &gCtlEntries[bankId]; + temp_v0_2->drums = temp_v0_2->instruments->unk-4; } #else GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB584.s") @@ -678,168 +654,112 @@ void patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 #undef BASE_OFFSET } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -void *func_800B93BC(struct SoundMultiPool *, ?, u32, s32, s32); /* extern */ -? func_800BB584(s32); /* extern */ -extern s32 D_803B7070; +struct AudioBank *bank_load_immediate(s32 bankId, s32 arg1) { + s32 alloc; + s32 stackPadding0[4]; + s32 stackPadding1[5]; + struct AudioBank *ret; + u8 *ctlData; -void *func_800BB780(s32 arg0, s32 arg1) { - u32 sp54; - void *sp2C; - s32 sp28; - u32 temp_a2; - u8 *temp_v0_3; - void *temp_v0; - void *temp_v0_2; - - temp_v0 = D_803B7070 + (arg0 * 8); - temp_a2 = ((temp_v0->unk8 + 0x1E) & ~0xF) - 0x10; - sp54 = temp_a2; - sp28 = temp_v0->unk4; - temp_v0_2 = func_800B93BC(&gBankLoadedPool, 1, temp_a2, arg1, arg0); - if (temp_v0_2 == NULL) { + alloc = gAlCtlHeader->seqArray[bankId].len + 0xf; + alloc = ALIGN16(alloc); + alloc -= 0x10; + ctlData = gAlCtlHeader->seqArray[bankId].offset; + ret = alloc_bank_or_seq(&gBankLoadedPool, 1, alloc, arg1, bankId); + if (ret == NULL) { return NULL; } - sp2C = temp_v0_2; - audio_dma_copy_immediate(sp28 + 0x10, temp_v0_2, temp_a2); - gCtlEntries[arg0].instruments = sp2C + 4; - func_800BB584(arg0); - temp_v0_3 = &gBankLoadStatus[arg0]; - if (*temp_v0_3 != 5) { - *temp_v0_3 = 2; + audio_dma_copy_immediate((u32) (ctlData + 0x10), ret, (u32) alloc); + gCtlEntries[bankId].instruments = ret->instruments; + func_800BB584(bankId); + if (gBankLoadStatus[bankId] != 5) { + gBankLoadStatus[bankId] = 2; } - return sp2C; + return ret; } -#else -GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB780.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -u8 *func_800B93BC(struct SoundMultiPool *, ?, s32, s32, s32); /* extern */ -extern s32 D_803B7070; +struct AudioBank *bank_load_async(s32 bankId, s32 arg1, struct SequencePlayer *seqPlayer) { + size_t alloc; + s32 stackPadding0[9]; + struct AudioBank *ret; + u8 *ctlData; + s32 stackPadding1[2]; -s32 func_800BB864(s32 arg0, s32 arg1, struct SequencePlayer *arg2) { - s32 sp64; - u8 *sp3C; - s32 sp38; - OSMesgQueue *sp2C; - OSMesgQueue *temp_a3; - s32 temp_a2; - u8 *temp_v0_2; - u8 *temp_v0_3; - void *temp_v0; - - temp_v0 = D_803B7070 + (arg0 * 8); - temp_a2 = ((temp_v0->unk8 + 0x1E) & ~0xF) - 0x10; - sp64 = temp_a2; - sp38 = temp_v0->unk4; - temp_v0_2 = func_800B93BC(&gBankLoadedPool, 1, temp_a2, arg1, arg0); - sp3C = temp_v0_2; - if (temp_v0_2 == NULL) { - return 0; - } - arg2->loadingBankId = (u8) arg0; - gCtlEntries[arg0].instruments = (struct Instrument **) (temp_v0_2 + 4); - temp_a3 = &arg2->bankDmaMesgQueue; - gCtlEntries[arg0].drums = NULL; - arg2->bankDmaCurrMemAddr = temp_v0_2; - arg2->bankDmaRemaining = temp_a2; - arg2->bankDmaCurrDevAddr = sp38 + 0x10; - sp2C = temp_a3; - osCreateMesgQueue(temp_a3, &arg2->bankDmaMesg, 1); - arg2->unk0 = (u8) (arg2->unk0 | 8); - audio_dma_partial_copy_async(&arg2->bankDmaCurrDevAddr, &arg2->bankDmaCurrMemAddr, &arg2->bankDmaRemaining, temp_a3, &arg2->bankDmaIoMesg); - temp_v0_3 = &gBankLoadStatus[arg0]; - if (*temp_v0_3 != 5) { - *temp_v0_3 = 1; - } - return (s32) sp3C; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB864.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -void *func_800B93BC(struct SoundMultiPool *, ?, u32, s32, s32); /* extern */ -extern s32 D_803B706C; - -void *func_800BB99C(s32 arg0, s32 arg1) { - u32 sp2C; - void *sp28; - u32 sp24; - u32 temp_t9; - u8 *temp_v0_3; - void *temp_v0; - void *temp_v0_2; - - temp_v0_2 = D_803B706C + (arg0 * 8); - temp_t9 = (temp_v0_2->unk8 + 0xF) & ~0xF; - sp2C = temp_t9; - sp24 = temp_v0_2->unk4; - temp_v0 = func_800B93BC(&gSeqLoadedPool, 1, temp_t9, arg1, arg0); - if (temp_v0 == NULL) { + alloc = gAlCtlHeader->seqArray[bankId].len + 0xF; + alloc = ALIGN16(alloc); + alloc -= 0x10; + ctlData = gAlCtlHeader->seqArray[bankId].offset; + ret = alloc_bank_or_seq(&gBankLoadedPool, 1, alloc, arg1, bankId); + if (ret == NULL) { return NULL; } - sp28 = temp_v0; - audio_dma_copy_immediate(sp24, temp_v0, sp2C); - temp_v0_3 = &gSeqLoadStatus[arg0]; - if (*temp_v0_3 != 5) { - *temp_v0_3 = 2; + seqPlayer->loadingBankId = bankId; + gCtlEntries[bankId].instruments = ret->instruments; + gCtlEntries[bankId].drums = NULL; + seqPlayer->bankDmaCurrMemAddr = (u8*) ret; + seqPlayer->bankDmaCurrDevAddr = (uintptr_t) (ctlData + 0x10); + seqPlayer->bankDmaRemaining = alloc; + if (1) { } + osCreateMesgQueue(&seqPlayer->bankDmaMesgQueue, &seqPlayer->bankDmaMesg, 1); + seqPlayer->bankDmaInProgress = TRUE; + audio_dma_partial_copy_async(&seqPlayer->bankDmaCurrDevAddr, &seqPlayer->bankDmaCurrMemAddr, &seqPlayer->bankDmaRemaining, &seqPlayer->bankDmaMesgQueue, &seqPlayer->bankDmaIoMesg); + if (gBankLoadStatus[bankId] != 5) { + gBankLoadStatus[bankId] = 1; } - return temp_v0; + return ret; } -#else -GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB99C.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -void *func_800B93BC(struct SoundMultiPool *, ?, s32, s32, s32); /* extern */ -extern s32 D_803B706C; +void *sequence_dma_immediate(s32 seqId, s32 arg1) { + s32 seqLength; + void *ptr; + u8 *seqData; -void *func_800BBA50(s32 arg0, s32 arg1, struct SequencePlayer *arg2) { - u32 sp3C; - OSMesgQueue *sp34; - OSMesgQueue *temp_a3; - s32 temp_a2; - u8 *temp_v0_3; - u8 *temp_v0_4; - void *temp_v0; - void *temp_v0_2; - - temp_v0_2 = D_803B706C + (arg0 * 8); - temp_a2 = (temp_v0_2->unk8 + 0xF) & ~0xF; - sp3C = temp_v0_2->unk4; - temp_v0 = func_800B93BC(&gSeqLoadedPool, 1, temp_a2, arg1, arg0); - if (temp_v0 == NULL) { + seqLength = gSeqFileHeader->seqArray[seqId].len; + seqLength = ALIGN16(seqLength); + seqData = gSeqFileHeader->seqArray[seqId].offset; + ptr = alloc_bank_or_seq(&gSeqLoadedPool, 1, seqLength, arg1, seqId); + if (ptr == NULL) { return NULL; } - if (temp_a2 < 0x41) { - audio_dma_copy_immediate(sp3C, temp_v0, (u32) temp_a2); - temp_v0_3 = &gSeqLoadStatus[arg0]; - if (*temp_v0_3 != 5) { - *temp_v0_3 = 2; + + audio_dma_copy_immediate((uintptr_t) seqData, ptr, seqLength); + if (gSeqLoadStatus[seqId] != 5) { + gSeqLoadStatus[seqId] = 2; + } + return ptr; +} + +void *sequence_dma_async(s32 seqId, s32 arg1, struct SequencePlayer *seqPlayer) { + s32 seqLength; + void *ptr; + u8 *seqData; + OSMesgQueue *mesgQueue; + + seqLength = gSeqFileHeader->seqArray[seqId].len; + seqLength = ALIGN16(seqLength); + seqData = gSeqFileHeader->seqArray[seqId].offset; + ptr = alloc_bank_or_seq(&gSeqLoadedPool, 1, seqLength, arg1, seqId); + if (ptr == NULL) { + return NULL; + } + if (seqLength < 0x41) { + audio_dma_copy_immediate((uintptr_t) seqData, ptr, (u32) seqLength); + if (1) {} + if (gSeqLoadStatus[seqId] != 5) { + gSeqLoadStatus[seqId] = 2; } } else { - audio_dma_copy_immediate(sp3C, temp_v0, 0x00000040U); - temp_a3 = &arg2->seqDmaMesgQueue; - sp34 = temp_a3; - osCreateMesgQueue(temp_a3, &arg2->seqDmaMesg, 1); - *arg2 = (u8) (*arg2 | 0x10); - audio_dma_copy_async(sp3C + 0x40, temp_v0 + 0x40, temp_a2 - 0x40, temp_a3, &arg2->seqDmaIoMesg); - temp_v0_4 = &gSeqLoadStatus[arg0]; - if (*temp_v0_4 != 5) { - *temp_v0_4 = 1; + audio_dma_copy_immediate((uintptr_t) seqData, ptr, 0x00000040U); + mesgQueue = &seqPlayer->seqDmaMesgQueue; + osCreateMesgQueue(mesgQueue, &seqPlayer->seqDmaMesg, 1); + seqPlayer->seqDmaInProgress = TRUE; + audio_dma_copy_async((uintptr_t) (seqData + 0x40), (u8*) ptr + 0x40, seqLength - 0x40, mesgQueue, &seqPlayer->seqDmaIoMesg); + if (gSeqLoadStatus[seqId] != 5) { + gSeqLoadStatus[seqId] = 1; } } - return temp_v0; + return ptr; } -#else -GLOBAL_ASM("asm/non_matchings/audio/load/func_800BBA50.s") -#endif u8 get_missing_bank(u32 seqId, s32 *nonNullCount, s32 *nullCount) { void *temp; @@ -871,219 +791,154 @@ u8 get_missing_bank(u32 seqId, s32 *nonNullCount, s32 *nullCount) { return ret; } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -void *func_800BB780(u8, ?); /* extern */ +struct AudioBank *load_banks_immediate(s32 seqId, u8 *outDefaultBank) { + void *ret; + u32 bankId; + u16 offset; + u8 i; -void *func_800BBCD0(s32 arg0, s8 *arg1) { - void *sp34; - s32 sp30; - s32 var_s1; - u16 temp_s1; - u8 temp_s0; - u8 temp_t4; - u8 temp_t6; - u8 var_s2; - void *var_v1; + offset = ((u16 *) gAlBankSets)[seqId]; + for (i = gAlBankSets[offset++]; i != 0; i--) { + bankId = gAlBankSets[offset++]; - temp_s1 = *(gAlBankSets + (arg0 * 2)); - var_s2 = gAlBankSets[temp_s1]; - var_s1 = (temp_s1 + 1) & 0xFFFF; - if (var_s2 != 0) { - do { - temp_s0 = gAlBankSets[var_s1]; - temp_t4 = gBankLoadStatus[temp_s0]; - var_s1 = (var_s1 + 1) & 0xFFFF; - var_v1 = NULL; - if ((((s32) temp_t4 < 2) ^ 1) == 1) { - var_v1 = get_bank_or_seq(1, 2, (s32) temp_s0); - } - if (var_v1 == NULL) { - var_v1 = func_800BB780(temp_s0, 2); - } - temp_t6 = (var_s2 - 1) & 0xFF; - var_s2 = temp_t6; - } while (temp_t6 != 0); - sp34 = var_v1; - sp30 = (s32) temp_s0; + if (IS_BANK_LOAD_COMPLETE(bankId) == TRUE) { + ret = get_bank_or_seq(1, 2, bankId); + } else { + ret = NULL; + } + + if (ret == NULL) { + ret = bank_load_immediate(bankId, 2); + } } - *arg1 = (s8) sp30; - return sp34; + *outDefaultBank = bankId; + return ret; } -#else -GLOBAL_ASM("asm/non_matchings/audio/load/func_800BBCD0.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -s32 func_800BB99C(u32, ?, u32); /* extern */ -? func_800BBCD0(u32, ? *, u32); /* extern */ -extern s32 D_803B706C; -extern u16 D_803B707C; -static s32 D_800EA5DC = 0; +void preload_sequence(u32 seqId, u8 preloadMask) { + void *sequenceData; + u8 temp; -void func_800BBDDC(u32 arg0, s32 arg1) { - ? sp23; - s32 sp1C; - s32 temp_t6; - s32 var_v1; - u32 var_a2; - void *temp_v0; - void *temp_v0_2; - void *var_v1_2; + if (seqId >= gSequenceCount) { + return; + } - temp_t6 = arg1 & 0xFF; - var_a2 = arg0; - if (arg0 < (u16) D_803B707C) { - temp_v0 = D_803B706C + (arg0 * 8); - if (temp_v0->unk8 == 0) { - var_a2 = temp_v0->unk4; + if (gSeqFileHeader->seqArray[seqId].len == 0) { + seqId = (u32) gSeqFileHeader->seqArray[seqId].offset; + } + + gAudioLoadLock = AUDIO_LOCK_LOADING; + if (preloadMask & PRELOAD_BANKS) { + load_banks_immediate(seqId, &temp); + } + + if (preloadMask & PRELOAD_SEQUENCE) { + // @bug should be IS_SEQ_LOAD_COMPLETE + if (IS_BANK_LOAD_COMPLETE(seqId) == TRUE) { + sequenceData = get_bank_or_seq(0, 2, seqId); + } else { + sequenceData = NULL; } - D_800EA5DC = 0x19710515; - var_v1 = temp_t6; - if (temp_t6 & 2) { - sp1C = var_v1; - arg0 = var_a2; - func_800BBCD0(var_a2, &sp23, var_a2); - var_v1 = sp1C; - var_a2 = arg0; + if (sequenceData == NULL && sequence_dma_immediate(seqId, 2) == NULL) { + gAudioLoadLock = AUDIO_LOCK_NOT_LOADING; + return; } - if (var_v1 & 1) { - var_v1_2 = NULL; - if ((((s32) gBankLoadStatus[var_a2] < 2) ^ 1) == 1) { - arg0 = var_a2; - temp_v0_2 = get_bank_or_seq(0, 2, (s32) var_a2); - var_a2 = arg0; - var_v1_2 = temp_v0_2; - } - if ((var_v1_2 == NULL) && (func_800BB99C(var_a2, 2, var_a2) == 0)) { - D_800EA5DC = 0x76557364; + } + + gAudioLoadLock = AUDIO_LOCK_NOT_LOADING; +} + +void load_sequence(u32 player, u32 seqId, s32 loadAsync) { + if (!loadAsync) { + gAudioLoadLock = AUDIO_LOCK_LOADING; + } + load_sequence_internal(player, seqId, loadAsync); + if (!loadAsync) { + gAudioLoadLock = AUDIO_LOCK_NOT_LOADING; + } +} + +void load_sequence_internal(u32 player, u32 seqId, s32 loadAsync) { + void *sequenceData; + struct SequencePlayer *seqPlayer = &gSequencePlayers[player]; + UNUSED u32 padding[2]; + + if (seqId >= gSequenceCount) { + return; + } + + if (gSeqFileHeader->seqArray[seqId].len == 0) { + seqId = (u32) gSeqFileHeader->seqArray[seqId].offset; + } + + sequence_player_disable(seqPlayer); + if (loadAsync) { + s32 numMissingBanks = 0; + s32 dummy = 0; + s32 bankId = get_missing_bank(seqId, &dummy, &numMissingBanks); + if (numMissingBanks == 1) { + if (bank_load_async(bankId, 2, seqPlayer) == NULL) { return; } - goto block_11; - } -block_11: - D_800EA5DC = 0x76557364; - } -} -#else -GLOBAL_ASM("asm/non_matchings/audio/load/func_800BBDDC.s") -#endif - -//load_sequence -void func_800BBEF0(u32 player, u32 seqId, s32 loadAsync) { - if (!loadAsync) { - D_800EA5DC = AUDIO_LOCK_LOADING; // gAudioLoadLock - } - func_800BBF44(player, seqId, loadAsync); - if (!loadAsync) { - D_800EA5DC = AUDIO_LOCK_NOT_LOADING; - } -} - -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -s32 func_800BB864(u8, ?, struct SequencePlayer *); /* extern */ -u8 *func_800BB99C(u32, ?); /* extern */ -u8 *func_800BBA50(u32, ?, struct SequencePlayer *); /* extern */ -s32 func_800BBCD0(u32, u8 *, s32 *); /* extern */ -extern s32 D_803B706C; -extern u16 D_803B707C; - -//load_sequence_internal -void func_800BBF44(u32 arg0, u32 arg1, s32 arg2) { - u8 *sp3C; - s32 sp2C; - s32 sp28; - s32 sp24; - struct SequencePlayer *temp_s0; - u32 var_s1; - u8 *temp_v0_3; - u8 *var_v0; - u8 *var_v1; - u8 temp_a0; - u8 temp_v0_2; - void *temp_v0; - - var_s1 = arg1; - if (arg1 < (u16) D_803B707C) { - temp_v0 = D_803B706C + (arg1 * 8); - if (temp_v0->unk8 == 0) { - var_s1 = temp_v0->unk4; - } - temp_s0 = &gSequencePlayers[arg0]; - sequence_player_disable(temp_s0); - if (arg2 != 0) { - sp2C = 0; - sp28 = 0; - temp_v0_2 = get_missing_bank(var_s1, &sp28, &sp2C); - temp_a0 = temp_v0_2; - if (sp2C == 1) { - sp24 = (s32) temp_v0_2; - if (func_800BB864(temp_a0, 2, temp_s0) != 0) { - temp_s0->defaultBank[0] = (u8) sp24; - goto block_10; - } - } else { - if (func_800BBCD0(var_s1, temp_s0->defaultBank) == 0) { - return; - } - goto block_10; - } - } else if (func_800BBCD0(var_s1, temp_s0->defaultBank, &sp2C) != 0) { -block_10: - temp_s0->seqId = (u8) var_s1; - temp_v0_3 = get_bank_or_seq(0, 2, (s32) var_s1); - var_v1 = temp_v0_3; - if (temp_v0_3 == NULL) { - if (!(temp_s0->unk0 & 0x10000000)) { - if (arg2 != 0) { - var_v0 = func_800BBA50(var_s1, 2, temp_s0); - } else { - var_v0 = func_800BB99C(var_s1, 2); - } - var_v1 = var_v0; - if (var_v0 != NULL) { - goto block_16; - } - } - } else { -block_16: - sp3C = var_v1; - init_sequence_player(arg0); - temp_s0->scriptState.depth = 0; - temp_s0->delay = 0; - temp_s0->unk0 = (s8) ((u8) temp_s0->unk0 | 0x80); - temp_s0->seqData = var_v1; - temp_s0->scriptState.pc = var_v1; + // @bug This should set the last bank (i.e. the first in the JSON) + // as default, not the missing one. This code path never gets + // taken, though -- all sequence loading is synchronous. + seqPlayer->defaultBank[0] = bankId; + } else { + if (load_banks_immediate(seqId, &seqPlayer->defaultBank[0]) == NULL) { + return; } } + } else if (load_banks_immediate(seqId, &seqPlayer->defaultBank[0]) == NULL) { + return; } + + seqPlayer->seqId = seqId; + sequenceData = get_bank_or_seq(0, 2, seqId); + if (sequenceData == NULL) { + if (seqPlayer->seqDmaInProgress) { + return; + } + if (loadAsync) { + sequenceData = sequence_dma_async(seqId, 2, seqPlayer); + } else { + sequenceData = sequence_dma_immediate(seqId, 2); + } + + if (sequenceData == NULL) { + return; + } + } + + init_sequence_player(player); + seqPlayer->scriptState.depth = 0; + seqPlayer->delay = 0; + seqPlayer->enabled = TRUE; + seqPlayer->seqData = sequenceData; + seqPlayer->scriptState.pc = sequenceData; } -#else -GLOBAL_ASM("asm/non_matchings/audio/load/func_800BBF44.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 ? func_800B90F0(s32); /* extern */ -? func_800BA00C(); /* extern */ +? audio_shut_down_and_reset_step(); /* extern */ ? func_800BB43C(s32 *, ? *); /* extern */ -extern s8 D_803B0500; -extern s8 D_803B0501; +extern s8 gAudioResetStatus; +extern s8 gAudioResetPresetIdToLoad; extern OSMesgQueue D_803B6720; -extern s32 *D_803B706C; -extern s32 *D_803B7070; -extern s32 *D_803B7074; -extern s16 D_803B707C; +extern void *D_803B6738; +extern s32 *gSeqFileHeader; +extern s32 *gAlCtlHeader; +extern s32 *gAlTbl; +extern s16 gSequenceCount; extern s32 D_803B70B8; extern s32 D_803B70C0; extern s32 D_803B70C4; -extern s32 D_803B70D4; -extern ? D_803B70D8; +extern s32 gAudioTask; +extern ? gAudioTasks; extern f32 D_803B7178; -extern s32 D_803B717C; -extern void *D_803B7180; +extern s32 gRefreshRate; +extern void *gAiBuffers; extern ? D_803B718C; extern ? D_803B7192; extern ? D_803B71A0; @@ -1098,7 +953,7 @@ extern s32 gSampleDmaNumListItems; static s32 D_800EA5D0 = 0x00048C00; static s32 D_800EA5D4 = 0x00002600; static u32 D_800EA5D8 = 0; -static s32 D_800EA5DC = 0; +static s32 gAudioLoadLock = 0; void audio_init(void) { s32 sp8C; @@ -1126,7 +981,7 @@ void audio_init(void) { void *temp_t3; void *temp_t7_2; - D_800EA5DC = 0; + gAudioLoadLock = 0; temp_t7 = (s32) D_800EA5D0 / 8; if (temp_t7 > 0) { var_v0 = &D_803B71B0; @@ -1149,16 +1004,16 @@ void audio_init(void) { switch (osTvType) { /* irregular */ case 0: D_803B7178 = 20.03042f; - D_803B717C = 0x00000032; + gRefreshRate = 0x00000032; break; case 2: D_803B7178 = 16.546f; - D_803B717C = 0x0000003C; + gRefreshRate = 0x0000003C; break; default: case 1: D_803B7178 = 16.713f; - D_803B717C = 0x0000003C; + gRefreshRate = 0x0000003C; break; } func_800CBF48(&gGfxSPTaskOutputBufferSize); @@ -1171,15 +1026,15 @@ void audio_init(void) { D_803B70C0 = 0; D_803B70C4 = 0; gAudioLibSoundMode = 0; - D_803B70D4 = 0; - D_803B70D8.unk34 = 0; - D_803B70D8.unk84 = 0; + gAudioTask = 0; + gAudioTasks.unk34 = 0; + gAudioTasks.unk84 = 0; osCreateMesgQueue(&D_803B6720, &D_803B6738, 1); osCreateMesgQueue(&gCurrAudioFrameDmaQueue, &gCurrAudioFrameDmaMesgBufs, 0x00000040); gCurrAudioFrameDmaCount = 0; gSampleDmaNumListItems = 0; func_800B90F0(D_800EA5D4); - var_a2 = &D_803B7180; + var_a2 = &gAiBuffers; do { sp3C = var_a2; var_v1 = 0; @@ -1196,26 +1051,26 @@ loop_18: } var_a2 += 4; } while ((u32) var_a2 < (u32) &D_803B718C); - D_803B0501 = 0; - D_803B0500 = 1; - func_800BA00C(); - D_803B706C = &sp60; + gAudioResetPresetIdToLoad = 0; + gAudioResetStatus = 1; + audio_shut_down_and_reset_step(); + gSeqFileHeader = &sp60; audio_dma_copy_immediate((u32) &_sequencesSegmentRomStart, &sp60, 0x00000010U); - temp_t1 = D_803B706C->unk2; + temp_t1 = gSeqFileHeader->unk2; temp_a1 = (((temp_t1 & 0xFFFF) * 8) + 0x13) & ~0xF; - D_803B707C = temp_t1; + gSequenceCount = temp_t1; temp_v0 = soundAlloc(&gAudioInitPool, temp_a1); - D_803B706C = temp_v0; + gSeqFileHeader = temp_v0; audio_dma_copy_immediate((u32) &_sequencesSegmentRomStart, temp_v0, temp_a1); - func_800BB43C(D_803B706C, &_sequencesSegmentRomStart); - D_803B7070 = &sp60; + func_800BB43C(gSeqFileHeader, &_sequencesSegmentRomStart); + gAlCtlHeader = &sp60; audio_dma_copy_immediate((u32) &_audio_banksSegmentRomStart, &sp60, 0x00000010U); - temp_s3 = D_803B7070->unk2; + temp_s3 = gAlCtlHeader->unk2; temp_a1_2 = ((temp_s3 * 8) + 0x13) & ~0xF; temp_v0_2 = soundAlloc(&gAudioInitPool, temp_a1_2); - D_803B7070 = temp_v0_2; + gAlCtlHeader = temp_v0_2; audio_dma_copy_immediate((u32) &_audio_banksSegmentRomStart, temp_v0_2, temp_a1_2); - func_800BB43C(D_803B7070, &_audio_banksSegmentRomStart); + func_800BB43C(gAlCtlHeader, &_audio_banksSegmentRomStart); gCtlEntries = soundAlloc(&gAudioInitPool, temp_s3 * 0xC); var_v1_2 = 0; if (temp_s3 > 0) { @@ -1223,7 +1078,7 @@ loop_18: var_s0_2 = 0; do { sp8C = var_v1_2; - audio_dma_copy_immediate((D_803B7070 + var_s1)->unk4, &sp60, 0x00000010U); + audio_dma_copy_immediate((gAlCtlHeader + var_s1)->unk4, &sp60, 0x00000010U); (gCtlEntries + var_s0_2)->unk1 = (s8) sp60; var_v1_2 = sp8C + 1; temp_t3 = gCtlEntries + var_s0_2; @@ -1232,19 +1087,19 @@ loop_18: temp_t3->unk2 = (s8) sp64; } while (var_v1_2 != temp_s3); } - D_803B7074 = &sp60; + gAlTbl = &sp60; audio_dma_copy_immediate((u32) &_audio_tablesSegmentRomStart, &sp60, 0x00000010U); - temp_a1_3 = ((D_803B7074->unk2 * 8) + 0x13) & ~0xF; + temp_a1_3 = ((gAlTbl->unk2 * 8) + 0x13) & ~0xF; temp_v0_3 = soundAlloc(&gAudioInitPool, temp_a1_3); - D_803B7074 = temp_v0_3; + gAlTbl = temp_v0_3; audio_dma_copy_immediate((u32) &_audio_tablesSegmentRomStart, temp_v0_3, temp_a1_3); - func_800BB43C(D_803B7074, &_audio_tablesSegmentRomStart); + func_800BB43C(gAlTbl, &_audio_tablesSegmentRomStart); temp_v0_4 = soundAlloc(&gAudioInitPool, 0x00000100U); gAlBankSets = temp_v0_4; audio_dma_copy_immediate((u32) &_instrument_setsSegmentRomStart, temp_v0_4, 0x00000100U); sound_alloc_pool_init(&gUnkPool1.pool, soundAlloc(&gAudioInitPool, D_800EA5D8), D_800EA5D8); init_sequence_players(); - D_800EA5DC = 0x76557364; + gAudioLoadLock = 0x76557364; } #else GLOBAL_ASM("asm/non_matchings/audio/load/audio_init.s") diff --git a/src/audio/load.h b/src/audio/load.h index 58c5f7d64..7b045fb47 100644 --- a/src/audio/load.h +++ b/src/audio/load.h @@ -18,11 +18,18 @@ void decrease_sample_dma_ttls(void); void func_800BB030(s32); s32 func_800BB304(struct AudioBankSample*); s32 func_800BB388(s32 bankId, s32 instId, s32 arg2); -void func_800BBEF0(u32 player, u32 seqId, s32 loadAsync); -void func_800BBF44(u32 player, u32 seqId, s32 loadAsync); -u8 get_missing_bank(u32 seqId, s32 *nonNullCount, s32 *nullCount); void patch_sound(struct AudioBankSound *sound, u8 *memBase, u8 *offsetBase); +void func_800BB584(s32); void patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums); +struct AudioBank *bank_load_immediate(s32, s32); +struct AudioBank *bank_load_async(s32, s32, struct SequencePlayer*); +void *sequence_dma_immediate(s32, s32); +void *sequence_dma_async(s32, s32, struct SequencePlayer*); +u8 get_missing_bank(u32 seqId, s32 *nonNullCount, s32 *nullCount); +struct AudioBank *load_banks_immediate(s32, u8*); +void preload_sequence(u32, u8); +void load_sequence(u32, u32, s32); +void load_sequence_internal(u32, u32, s32); extern u32 D_803B70A8; // sDmaBufSize // This is really data, not a volatile @@ -37,6 +44,10 @@ extern struct SequenceChannel gSequenceChannelNone; extern struct AudioListItem gLayerFreeList; extern struct NotePool gNoteFreeLists; extern u8 *gAlBankSets; +extern ALSeqFile *gSeqFileHeader; // D_803B706C +extern ALSeqFile *gAlCtlHeader; // D_803B7070 +extern ALSeqFile *gAlTbl; // D_803B7074 +extern u16 gSequenceCount; // D_803B707C extern struct CtlEntry *gCtlEntries; extern struct AudioBufferParametersEU gAudioBufferParameters; extern s32 gMaxSimultaneousNotes; diff --git a/src/audio/port_eu.c b/src/audio/port_eu.c index aabc748a5..3d8e6fd40 100644 --- a/src/audio/port_eu.c +++ b/src/audio/port_eu.c @@ -1,6 +1,7 @@ #include #include +#include "audio/seqplayer.h" #include "audio/port_eu.h" #include "audio/load.h" @@ -9,7 +10,7 @@ OSMesgQueue D_801937D8; OSMesgQueue D_801937F0; OSMesgQueue D_80193808; -struct EuAudioCmd D_80193820[0x100]; +struct EuAudioCmd sAudioCmd[0x100]; // Seems oversized by 1 OSMesg D_80194020[2]; @@ -44,17 +45,17 @@ char port_eu_unused_string7[] = "Undefined Port Command %d\n"; #ifdef MIPS_TO_C //generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 s32 func_800B70EC(s32, s32 *, s32, s16); /* extern */ -s32 func_800BA00C(); /* extern */ +s32 audio_shut_down_and_reset_step(); /* extern */ ? func_800CBCB0(void *); /* extern */ -extern u8 D_803B0500; -extern u8 D_803B0501; +extern u8 gAudioResetStatus; +extern u8 gAudioResetPresetIdToLoad; extern s32 D_803B70B8; extern s32 D_803B70C0; extern s32 D_803B70C4; -extern ? D_803B70C8; -extern s32 D_803B70D0; -extern ? D_803B70D8; -extern ? D_803B7180; +extern ? gAudioCmdBuffers; +extern s32 gAudioCmd; +extern ? gAudioTasks; +extern ? gAiBuffers; extern ? D_803B718C; extern ? aspMainDataEnd; extern ? aspMainDataStart; @@ -94,7 +95,7 @@ void *create_next_audio_frame_task(void) { sp74 = osAiGetLength() >> 2; temp_v1 = *(&D_803B718C + (temp_hi_2 * 2)); if (temp_v1 != 0) { - osAiSetNextBuffer(*(&D_803B7180 + (temp_hi_2 * 4)), temp_v1 * 4); + osAiSetNextBuffer(*(&gAiBuffers + (temp_hi_2 * 4)), temp_v1 * 4); } var_s1 = gCurrAudioFrameDmaCount; var_s0 = 0; @@ -128,18 +129,18 @@ void *create_next_audio_frame_task(void) { gCurrAudioFrameDmaCount = 0; decrease_sample_dma_ttls(); if (osRecvMesg(D_800EA3B0, &sp58, 0) != -1) { - D_803B0501 = (u8) sp58; - D_803B0500 = 5; + gAudioResetPresetIdToLoad = (u8) sp58; + gAudioResetStatus = 5; } - if ((D_803B0500 != 0) && (func_800BA00C() == 0)) { - if (D_803B0500 == 0) { - osSendMesg(D_800EA3B4, (void *) D_803B0501, 0); + if ((gAudioResetStatus != 0) && (audio_shut_down_and_reset_step() == 0)) { + if (gAudioResetStatus == 0) { + osSendMesg(D_800EA3B4, (void *) gAudioResetPresetIdToLoad, 0); } return NULL; } - D_803B70D4 = (D_803B70C0 * 0x50) + &D_803B70D8; - temp_a3 = (D_803B70C4 * 4) + &D_803B7180; - D_803B70D0 = *(&D_803B70C8 + (D_803B70C0 * 4)); + gAudioTask = (D_803B70C0 * 0x50) + &gAudioTasks; + temp_a3 = (D_803B70C4 * 4) + &gAiBuffers; + gAudioCmd = *(&gAudioCmdBuffers + (D_803B70C0 * 4)); sp60 = *temp_a3; temp_s1_2 = (D_803B70C4 * 2) + &D_803B718C; *temp_s1_2 = (((gAudioBufferParameters.samplesPerFrameTarget - sp74) + 0x40) & 0xFFF0) + 0x10; @@ -153,92 +154,83 @@ void *create_next_audio_frame_task(void) { if (osRecvMesg(D_800EA3AC, &sp54, 0) != -1) { func_800CBCB0(sp54); } - D_803B70D0 = func_800B70EC(D_803B70D0, &sp70, sp60, *temp_s1_2); + gAudioCmd = func_800B70EC(gAudioCmd, &sp70, sp60, *temp_s1_2); gAudioRandom = osGetCount() * (gAudioRandom + D_803B70B8); gAudioRandom += *(*sp40 + ((D_803B70B8 & 0xFF) * 2)); - D_803B70D4->unk40 = 0; - D_803B70D4->unk44 = 0; - D_803B70D4->unk0 = 2; - D_803B70D4->unk4 = 0; - D_803B70D4->unk8 = rspbootTextStart; - D_803B70D4->unkC = (s32) (rspbootTextEnd - rspbootTextStart); - D_803B70D4->unk10 = &aspMainTextStart; - D_803B70D4->unk18 = &aspMainDataStart; - D_803B70D4->unk14 = 0x00001000; - D_803B70D4->unk1C = (s32) (((s32) (&aspMainDataEnd - &aspMainDataStart) >> 3) * 8); - D_803B70D4->unk20 = 0; - D_803B70D4->unk24 = 0; - D_803B70D4->unk28 = 0; - D_803B70D4->unk2C = 0; - D_803B70D4->unk30 = (s32) *(&D_803B70C8 + (D_803B70C0 * 4)); - D_803B70D4->unk38 = 0; - D_803B70D4->unk3C = 0; - D_803B70D4->unk34 = (s32) (sp70 * 8); + gAudioTask->unk40 = 0; + gAudioTask->unk44 = 0; + gAudioTask->unk0 = 2; + gAudioTask->unk4 = 0; + gAudioTask->unk8 = rspbootTextStart; + gAudioTask->unkC = (s32) (rspbootTextEnd - rspbootTextStart); + gAudioTask->unk10 = &aspMainTextStart; + gAudioTask->unk18 = &aspMainDataStart; + gAudioTask->unk14 = 0x00001000; + gAudioTask->unk1C = (s32) (((s32) (&aspMainDataEnd - &aspMainDataStart) >> 3) * 8); + gAudioTask->unk20 = 0; + gAudioTask->unk24 = 0; + gAudioTask->unk28 = 0; + gAudioTask->unk2C = 0; + gAudioTask->unk30 = (s32) *(&gAudioCmdBuffers + (D_803B70C0 * 4)); + gAudioTask->unk38 = 0; + gAudioTask->unk3C = 0; + gAudioTask->unk34 = (s32) (sp70 * 8); if (D_800EA484 < sp70) { D_800EA484 = sp70; } - return D_803B70D4; + return gAudioTask; } #else GLOBAL_ASM("asm/non_matchings/audio/port_eu/create_next_audio_frame_task.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -? func_800BBDDC(u8, ?); /* extern */ +void eu_process_audio_cmd(struct EuAudioCmd *cmd) { + s32 i; -void func_800CB818(void *arg0) { - s32 temp_a1; - struct SequencePlayer *temp_a0; - u8 temp_v0; - u8 temp_v0_2; + switch (cmd->u.s.op) { + case 0x81: + preload_sequence(cmd->u.s.arg2, 3); + break; - temp_v0 = arg0->unk0; - switch (temp_v0) { /* irregular */ - case 0x81: - func_800BBDDC(arg0->unk2, 3); - return; - case 0x82: - case 0x88: - func_800BBEF0((u32) arg0->unk1, (u32) arg0->unk2, (s32) arg0->unk3); - func_800CBA64((s32) arg0->unk1, arg0->unk4); - return; - case 0x83: - temp_v0_2 = arg0->unk1; - temp_a0 = &gSequencePlayers[temp_v0_2]; - if (((u32) *temp_a0 >> 0x1F) != 0) { - temp_a1 = arg0->unk4; - if (temp_a1 == 0) { - sequence_player_disable(temp_a0); - return; + case 0x82: + case 0x88: + load_sequence(cmd->u.s.arg1, cmd->u.s.arg2, cmd->u.s.arg3); + func_800CBA64(cmd->u.s.arg1, cmd->u2.as_s32); + break; + + case 0x83: + if (gSequencePlayers[cmd->u.s.arg1].enabled != FALSE) { + if (cmd->u2.as_s32 == 0) { + sequence_player_disable(&gSequencePlayers[cmd->u.s.arg1]); + } + else { + seq_player_fade_to_zero_volume(cmd->u.s.arg1, cmd->u2.as_s32); + } } - seq_player_fade_to_zero_volume((s32) temp_v0_2, temp_a1); - return; - } - return; - case 0xF0: - gAudioLibSoundMode = (s8) arg0->unk4; - return; - case 0xF1: - gSequencePlayers[0] |= 0x24; - gSequencePlayers[1] |= 0x24; - gSequencePlayers[2] |= 0x24; - gSequencePlayers[3] |= 0x24; - return; - case 0xF2: - gSequencePlayers[0] = (gSequencePlayers[0] & 0xFFDF) | 4; - gSequencePlayers[1] = (gSequencePlayers[1] & 0xFFDF) | 4; - gSequencePlayers[2] = (gSequencePlayers[2] & 0xFFDF) | 4; - gSequencePlayers[3] = (gSequencePlayers[3] & 0xFFDF) | 4; - return; + break; + + case 0xf0: + gAudioLibSoundMode = cmd->u2.as_s32; + break; + + case 0xf1: + for (i = 0; i < 4; i++) { + gSequencePlayers[i].muted = TRUE; + gSequencePlayers[i].recalculateVolume = TRUE; + } + break; + + case 0xf2: + for (i = 0; i < 4; i++) { + gSequencePlayers[i].muted = FALSE; + gSequencePlayers[i].recalculateVolume = TRUE; + } + break; case 0xF3: - func_800BB388((s32) arg0->unk1, (s32) arg0->unk2, (s32) arg0->unk3); + func_800BB388(cmd->u.s.arg1, cmd->u.s.arg2, cmd->u.s.arg3); break; } } -#else -GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CB818.s") -#endif void seq_player_fade_to_zero_volume(s32 arg0, s32 fadeOutTime) { struct SequencePlayer *player; @@ -275,7 +267,7 @@ void func_800CBAB4(void) { } void func_800CBB48(s32 arg0, s32 *arg1) { - struct EuAudioCmd *cmd = &D_80193820[D_800EA3A0[0] & 0xff]; + struct EuAudioCmd *cmd = &sAudioCmd[D_800EA3A0[0] & 0xff]; cmd->u.first = arg0; cmd->u2.as_u32 = *arg1; D_800EA3A0[0]++; @@ -316,11 +308,8 @@ void func_800CBC24(void) D_800EA3A4[0] = D_800EA3A0[0]; } - #ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -? func_800CB818(struct EuAudioCmd *); /* extern */ - +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Sep-13-2023 void func_800CBCB0(u32 arg0) { s32 temp_t8; s32 var_s1; @@ -339,16 +328,16 @@ void func_800CBCB0(u32 arg0) { if (temp_t8 != var_s1) { do { temp_s0 = &D_80193820[var_v0 & 0xFF]; - temp_a0 = temp_s0->u.s.arg3; + temp_a0 = temp_s0->u.s.op; var_s1 = (var_s1 + 1) & 0xFF; if ((temp_a0 & 0xF0) == 0xF0) { - func_800CB818(temp_s0); + eu_process_audio_cmd(temp_s0); } else { - temp_v0 = temp_s0->u.s.arg2; + temp_v0 = temp_s0->u.s.arg1; if ((s32) temp_v0 < 4) { temp_v1 = &gSequencePlayers[temp_v0]; if (temp_a0 & 0x80) { - func_800CB818(temp_s0); + eu_process_audio_cmd(temp_s0); } else if (temp_a0 & 0x40) { switch (temp_a0) { /* switch 1; irregular */ case 0x41: /* switch 1 */ @@ -359,14 +348,14 @@ void func_800CBCB0(u32 arg0) { temp_v1->tempo = temp_s0->u2.as_s32 * 0x30; break; case 0x48: /* switch 1 */ - temp_v1->transposition = (s16) (s8) temp_s0->u2.pad0[0]; + temp_v1->transposition = (s16) (s8) temp_s0->u2.as_u8; break; case 0x46: /* switch 1 */ - temp_v1->seqVariationEu[temp_s0->u.s.op] = (s8) temp_s0->u2.pad0[0]; + temp_v1->seqVariationEu[temp_s0->u.s.arg3] = (s8) temp_s0->u2.as_u8; break; } } else if (((u32) temp_v1->unk0 >> 0x1F) != 0) { - temp_a1 = temp_s0->u.s.arg1; + temp_a1 = temp_s0->u.s.arg2; if ((s32) temp_a1 < 0x10) { temp_v0_2 = temp_v1->channels[temp_a1]; if (temp_v0_2 != &gSequenceChannelNone) { @@ -381,23 +370,23 @@ void func_800CBCB0(u32 arg0) { break; case 3: temp_v0_2->changes.as_u8 |= 0x20; - temp_v0_2->newPan = (u8) (s8) temp_s0->u2.pad0[0]; + temp_v0_2->newPan = (u8) (s8) temp_s0->u2.as_u8; break; case 4: temp_v0_2->changes.as_u8 |= 0x80; temp_v0_2->freqScale = (bitwise f32) temp_s0->u2.as_s32; break; case 5: - temp_v0_2->reverbVol = (u8) (s8) temp_s0->u2.pad0[0]; + temp_v0_2->reverbVol = (u8) (s8) temp_s0->u2.as_u8; break; case 6: - temp_v1_2 = temp_s0->u.s.op; + temp_v1_2 = temp_s0->u.s.arg3; if ((s32) temp_v1_2 < 8) { - temp_v0_2->soundScriptIO[temp_v1_2] = (s8) temp_s0->u2.pad0[0]; + temp_v0_2->soundScriptIO[temp_v1_2] = (s8) temp_s0->u2.as_u8; } break; case 8: - temp_v0_2->unk0 = (u8) ((((s8) temp_s0->u2.pad0[0] * 0x10) & 0x10) | (temp_v0_2->unk0 & 0xFFEF)); + temp_v0_2->unk0 = (u8) ((((s8) temp_s0->u2.as_u8 * 0x10) & 0x10) | (temp_v0_2->unk0 & 0xFFEF)); break; } } @@ -406,7 +395,7 @@ void func_800CBCB0(u32 arg0) { } } var_v0 = var_s1; - temp_s0->u.s.arg3 = 0; + temp_s0->u.s.op = 0; } while (temp_t8 != var_s1); } } diff --git a/src/audio/port_eu.h b/src/audio/port_eu.h index b389382f6..78c4a65c2 100644 --- a/src/audio/port_eu.h +++ b/src/audio/port_eu.h @@ -3,6 +3,7 @@ #include "audio/internal.h" +void eu_process_audio_cmd(struct EuAudioCmd*); void seq_player_fade_to_zero_volume(s32 arg0, s32 fadeOutTime); void func_800CBA64(s32 playerIndex, s32 fadeInTime); void func_800CBAB4(void); @@ -17,7 +18,7 @@ extern OSMesgQueue D_801937D8; extern OSMesgQueue D_801937F0; extern OSMesgQueue D_80193808; -extern struct EuAudioCmd D_80193820[0x100]; +extern struct EuAudioCmd sAudioCmd[0x100]; extern OSMesg D_80194020[]; extern OSMesg D_80194028[]; @@ -31,4 +32,4 @@ extern OSMesgQueue *D_800EA3B4; extern s32 D_800EA484; extern s32 D_800EA4A4; -#endif \ No newline at end of file +#endif diff --git a/src/audio/seqplayer.c b/src/audio/seqplayer.c index 944fe2353..5c739764f 100644 --- a/src/audio/seqplayer.c +++ b/src/audio/seqplayer.c @@ -6,6 +6,7 @@ #include "audio/seqplayer.h" #include "audio/load.h" #include "audio/heap.h" +#include "audio/effects.h" #include "audio/playback.h" #include "audio/external.h" @@ -286,442 +287,413 @@ u16 m64_read_compressed_u16(struct M64ScriptState *state) { return ret; } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -extern s16 D_803B70B4; - void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { - struct SequenceChannel *sp68; - s32 sp44; - f32 temp_f0; + struct SequencePlayer *seqPlayer; + struct SequenceChannel *seqChannel; + UNUSED u32 pad0; + struct M64ScriptState *state; + struct Portamento *portamento; + struct AudioBankSound *sound; + struct Instrument *instrument; + struct Drum *drum; + s32 temp_a0_5; + u16 sp3A; + s32 sameSound; + UNUSED u32 pad1; + u8 cmd; + UNUSED u8 cmdSemitone; + f32 tuning; + s32 vel; + UNUSED s32 usedSemitone; + f32 freqScale; + f32 temp_f12; f32 temp_f2; - f32 var_f0; - f32 var_f0_2; - f32 var_f4; - s16 temp_v0_11; - s16 temp_v0_4; - s16 temp_v0_6; - s16 temp_v1; - s32 temp_a1; - s32 temp_s2; - s32 temp_t4_2; - s32 temp_t5; - s32 temp_t6; - s32 temp_t8; - s32 temp_v0_17; - s32 temp_v0_19; - s32 temp_v0_3; - s32 temp_v0_8; - s32 temp_v1_12; - s32 temp_v1_6; - s32 temp_v1_7; - s32 temp_v1_8; - s32 var_a2; - s32 var_s2; - s32 var_s2_2; - s32 var_s2_3; - struct AudioBankSound *temp_v1_13; - struct Drum *temp_v0_15; - struct Instrument *var_a0_2; - struct M64ScriptState *temp_s0; - struct Note *temp_a0_4; - struct Note *temp_a0_5; - struct Portamento *temp_v0_18; - struct SequenceChannel *temp_v0_2; - struct SequencePlayer *temp_s4; - u16 temp_v0_10; - u16 temp_v0_12; - u16 temp_v0_13; - u16 temp_v0_14; - u16 temp_v0_7; - u16 var_a0; - u16 var_s3; - u32 temp_v0; - u32 temp_v0_20; - u8 *temp_v1_10; - u8 *temp_v1_11; - u8 *temp_v1_4; - u8 *temp_v1_5; - u8 *temp_v1_9; - u8 temp_a0; - u8 temp_a0_2; - u8 temp_a0_3; - u8 temp_t4; - u8 temp_v0_16; - u8 temp_v0_9; - u8 temp_v1_2; - u8 temp_v1_3; - u8 var_a2_2; - u8 var_v0; - void *temp_v0_5; - sp44 = 1; - temp_v0 = layer->unk0; - if ((temp_v0 >> 0x1F) != 0) { - temp_v1 = layer->delay; - if (temp_v1 >= 2) { - layer->delay = temp_v1 - 1; - if (!(temp_v0 & 0x20000000) && (layer->duration >= layer->delay)) { + sameSound = TRUE; + if (layer->enabled == FALSE) { + return; + } + + if (layer->delay > 1) { + layer->delay--; + if (!layer->stopSomething && layer->delay <= layer->duration) { + seq_channel_layer_note_decay(layer); + layer->stopSomething = TRUE; + } + return; + } + + if (!layer->continuousNotes) { + seq_channel_layer_note_decay(layer); + } + + if (PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_1 || + PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_2) { + layer->portamento.mode = 0; + } + + seqChannel = layer->seqChannel; + seqPlayer = seqChannel->seqPlayer; + layer->notePropertiesNeedInit = TRUE; + + for (;;) { + state = &layer->scriptState; + cmd = m64_read_u8(state); + + if (cmd <= 0xc0) { + break; + } + + switch (cmd) { + case 0xff: // layer_end; function return or end of script + if (state->depth == 0) { + // N.B. this function call is *not* inlined even though it's + // within the same file, unlike in the rest of this function. + seq_channel_layer_disable(layer); + return; + } + state->pc = state->stack[--state->depth]; + break; + + case 0xfc: // layer_call + if (0 && state->depth >= 4) { + } + sp3A = m64_read_s16(state); + state->stack[state->depth++] = state->pc; + state->pc = seqPlayer->seqData + sp3A; + break; + + case 0xf8: // layer_loop; loop start, N iterations (or 256 if N = 0) + if (0 && state->depth >= 4) { + } + state->remLoopIters[state->depth] = m64_read_u8(state); + state->stack[state->depth++] = state->pc; + break; + + case 0xf7: // layer_loopend + if (--state->remLoopIters[state->depth - 1] != 0) { + state->pc = state->stack[state->depth - 1]; + } else { + state->depth--; + } + break; + + case 0xfb: // layer_jump + sp3A = m64_read_s16(state); + state->pc = seqPlayer->seqData + sp3A; + break; + + case 0xf4: + state->pc += (s8)m64_read_u8(state); + break; + + case 0xc1: // layer_setshortnotevelocity + case 0xca: // layer_setpan + temp_a0_5 = *(state->pc++); + if (cmd == 0xc1) { + layer->velocitySquare = (f32)(temp_a0_5 * temp_a0_5) / 16129.0f; + } else { + layer->pan = temp_a0_5; + } + break; + + case 0xc2: // layer_transpose; set transposition in semitones + case 0xc9: // layer_setshortnoteduration + temp_a0_5 = *(state->pc++); + if (cmd == 0xc9) { + layer->noteDuration = temp_a0_5; + } else { + layer->transposition = temp_a0_5; + } + break; + + case 0xc4: // layer_somethingon + case 0xc5: // layer_somethingoff + if (cmd == 0xc4) { + layer->continuousNotes = TRUE; + } else { + layer->continuousNotes = FALSE; + } seq_channel_layer_note_decay(layer); - layer->unk0 = (s8) ((u8) layer->unk0 | 0x20); - } - } else { - if (!(temp_v0 & 0x10000000)) { - seq_channel_layer_note_decay(layer); - } - temp_t8 = layer->portamento.mode & ~0x80; - if ((temp_t8 == 1) || (temp_t8 == 2)) { + break; + + case 0xc3: // layer_setshortnotedefaultplaypercentage + sp3A = m64_read_compressed_u16(state); + layer->shortNoteDefaultPlayPercentage = sp3A; + break; + + case 0xc6: // layer_setinstr + cmd = m64_read_u8(state); + if (cmd >= 0x7f) { + if (cmd == 0x7f) { + layer->instOrWave = 0; + } else { + layer->instOrWave = cmd; + layer->instrument = NULL; + } + + if (1) { + } + + if (cmd == 0xff) { + layer->adsr.releaseRate = 0; + } + break; + } + + if ((layer->instOrWave = get_instrument(seqChannel, cmd, &layer->instrument, &layer->adsr)) == 0) { + layer->instOrWave = 0xff; + } + break; + + case 0xc7: // layer_portamento + layer->portamento.mode = m64_read_u8(state); + + // cmd is reused for the portamento's semitone + cmd = m64_read_u8(state) + seqChannel->transposition + + layer->transposition + seqPlayer->transposition; + + if (cmd >= 0x80) { + cmd = 0; + } + + layer->portamentoTargetNote = cmd; + + // If special, the next param is u8 instead of var + if (PORTAMENTO_IS_SPECIAL(layer->portamento)) { + layer->portamentoTime = *((state)->pc++); + break; + } + + sp3A = m64_read_compressed_u16(state); + layer->portamentoTime = sp3A; + break; + + case 0xc8: // layer_disableportamento layer->portamento.mode = 0; - } - temp_v0_2 = layer->seqChannel; - temp_s0 = &layer->scriptState; - temp_s4 = temp_v0_2->seqPlayer; - layer->unk0 = (s8) ((u8) layer->unk0 | 4); - var_s3 = sp4A; - sp68 = temp_v0_2; -loop_11: - temp_v0_3 = m64_read_u8(temp_s0); - temp_s2 = temp_v0_3 & 0xFF; - if (temp_v0_3 >= 0xC1) { - switch (temp_v0_3) { /* switch 5; irregular */ - case 0xFF: /* switch 5 */ - temp_v1_2 = temp_s0->depth; - if (temp_v1_2 == 0) { - seq_channel_layer_disable(layer); - return; - } - temp_t4 = (temp_v1_2 - 1) & 0xFF; - temp_s0->depth = temp_t4; - temp_s0->pc = temp_s0->stack[temp_t4]; - goto loop_11; - case 0xFC: /* switch 5 */ - temp_v0_4 = m64_read_s16(temp_s0); - temp_t5 = temp_v0_4 & 0xFFFF; - temp_s0->stack[temp_s0->depth] = temp_s0->pc; - var_s3 = temp_v0_4 & 0xFFFF; - temp_s0->depth += 1; - temp_s0->pc = &temp_s4->seqData[temp_t5]; - goto loop_11; - case 0xF8: /* switch 5 */ - temp_s0->remLoopIters[temp_s0->depth] = m64_read_u8(temp_s0); - temp_s0->stack[temp_s0->depth] = temp_s0->pc; - temp_s0->depth += 1; - goto loop_11; - case 0xF7: /* switch 5 */ - temp_v0_5 = temp_s0 + temp_s0->depth; - temp_v0_5->unk13 = (u8) (temp_v0_5->unk13 - 1); - temp_v1_3 = temp_s0->depth; - if ((temp_s0 + temp_v1_3)->unk13 != 0) { - temp_s0->pc = *(temp_s0 + (temp_v1_3 * 4)); - } else { - temp_s0->depth = temp_v1_3 - 1; - } - goto loop_11; - case 0xFB: /* switch 5 */ - temp_v0_6 = m64_read_s16(temp_s0); - var_s3 = temp_v0_6 & 0xFFFF; - temp_s0->pc = &temp_s4->seqData[temp_v0_6 & 0xFFFF]; - goto loop_11; - case 0xF4: /* switch 5 */ - temp_s0->pc = &temp_s0->pc[m64_read_u8(temp_s0)]; - goto loop_11; - case 0xC1: /* switch 5 */ - case 0xCA: /* switch 5 */ - temp_v1_4 = temp_s0->pc; - temp_a0 = *temp_v1_4; - temp_s0->pc = temp_v1_4 + 1; - if (temp_v0_3 == 0xC1) { - layer->velocitySquare = (f32) (temp_a0 * temp_a0) / 16129.0f; - } else { - layer->pan = temp_a0; - } - goto loop_11; - case 0xC2: /* switch 5 */ - case 0xC9: /* switch 5 */ - temp_v1_5 = temp_s0->pc; - temp_a0_2 = *temp_v1_5; - temp_s0->pc = temp_v1_5 + 1; - if (temp_v0_3 == 0xC9) { - layer->noteDuration = temp_a0_2; - } else { - layer->transposition = (s16) temp_a0_2; - } - goto loop_11; - case 0xC4: /* switch 5 */ - case 0xC5: /* switch 5 */ - if (temp_v0_3 == 0xC4) { - layer->unk0 = (s8) ((u8) layer->unk0 | 0x10); - } else { - layer->unk0 = (s8) ((u8) layer->unk0 & 0xFFEF); - } - seq_channel_layer_note_decay(layer); - goto loop_11; - case 0xC3: /* switch 5 */ - temp_v0_7 = m64_read_compressed_u16(temp_s0); - var_s3 = temp_v0_7 & 0xFFFF; - layer->shortNoteDefaultPlayPercentage = (s16) temp_v0_7; - goto loop_11; - case 0xC6: /* switch 5 */ - temp_v0_8 = m64_read_u8(temp_s0); - if (temp_v0_8 >= 0x7F) { - if (temp_v0_8 == 0x7F) { - layer->instOrWave = 0; - } else { - layer->instOrWave = (u8) temp_v0_8; - layer->instrument = NULL; - } - if (temp_v0_8 == 0xFF) { - layer->adsr.releaseRate = 0; - } - } else { - temp_v0_9 = get_instrument(sp68, temp_v0_8 & 0xFF & 0xFF, &layer->instrument, &layer->adsr); - layer->instOrWave = temp_v0_9; - if (temp_v0_9 == 0) { - layer->instOrWave = 0xFF; - } - } - goto loop_11; - case 0xC7: /* switch 5 */ - layer->portamento.mode = m64_read_u8(temp_s0); - temp_t6 = (m64_read_u8(temp_s0) + sp68->transposition + layer->transposition + temp_s4->transposition) & 0xFF; - var_s2 = temp_t6; - if (temp_t6 >= 0x80) { - var_s2 = 0; - } - layer->portamentoTargetNote = (u8) var_s2; - if (layer->portamento.mode & 0x80) { - layer->portamentoTime = (u16) *temp_s0->pc; - temp_s0->pc += 1; - } else { - temp_v0_10 = m64_read_compressed_u16(temp_s0); - var_s3 = temp_v0_10 & 0xFFFF; - layer->portamentoTime = temp_v0_10; - } - goto loop_11; - case 0xC8: /* switch 5 */ - layer->portamento.mode = 0; - goto loop_11; - case 0xCB: /* switch 5 */ - temp_v0_11 = m64_read_s16(temp_s0); - var_s3 = temp_v0_11 & 0xFFFF; - layer->adsr.envelope = (struct AdsrEnvelope *) &temp_s4->seqData[temp_v0_11 & 0xFFFF]; - layer->adsr.releaseRate = m64_read_u8(temp_s0); - goto loop_11; - case 0xCC: /* switch 5 */ - layer->unk0 = (s8) ((u8) layer->unk0 | 2); - goto loop_11; - default: /* switch 5 */ - temp_v1_6 = temp_v0_3 & 0xF0; - switch (temp_v1_6) { /* switch 6; irregular */ - case 0xD0: /* switch 6 */ - var_s3 = (u16) temp_s4->shortNoteVelocityTable[temp_v0_3 & 0xF]; - layer->velocitySquare = (f32) (var_s3 * var_s3) / 16129.0f; + break; + + case 0xcb: + sp3A = m64_read_s16(state); + layer->adsr.envelope = (struct AdsrEnvelope *) (seqPlayer->seqData + sp3A); + layer->adsr.releaseRate = m64_read_u8(state); + break; + + case 0xcc: + layer->ignoreDrumPan = TRUE; + break; + + default: + switch (cmd & 0xf0) { + case 0xd0: // layer_setshortnotevelocityfromtable + sp3A = seqPlayer->shortNoteVelocityTable[cmd & 0xf]; + layer->velocitySquare = (f32)(sp3A * sp3A) / 16129.0f; break; - case 0xE0: /* switch 6 */ - layer->noteDuration = temp_s4->shortNoteDurationTable[temp_v0_3 & 0xF]; + case 0xe0: // layer_setshortnotedurationfromtable + layer->noteDuration = seqPlayer->shortNoteDurationTable[cmd & 0xf]; break; - } - goto loop_11; - } - } else { - temp_v1_7 = temp_v0_3 & 0xC0; - if (temp_v0_3 == 0xC0) { - layer->delay = m64_read_compressed_u16(temp_s0); - layer->unk0 = (s8) ((u8) layer->unk0 | 0x20); - goto block_119; - } - layer->unk0 = (s8) ((u8) layer->unk0 & 0xFFDF); - if (((u32) (sp68->unk0 << 6) >> 0x1F) == 1) { - temp_v1_8 = temp_v0_3 & 0xC0; - if (temp_v1_8 != 0) { - if (temp_v1_8 != 0x40) { - var_a0 = var_s3; - if (temp_v1_8 != 0x80) { - var_a2 = sp34; - } else { - temp_v1_9 = temp_s0->pc; - var_a2 = (s32) *temp_v1_9; - temp_s0->pc = temp_v1_9 + 1; - var_a0 = (u16) layer->playPercentage; - layer->noteDuration = temp_v1_9[1]; - temp_s0->pc += 1; - } - } else { - temp_v0_12 = m64_read_compressed_u16(temp_s0); - temp_v1_10 = temp_s0->pc; - var_a0 = temp_v0_12 & 0xFFFF; - var_a2 = (s32) *temp_v1_10; - temp_s0->pc = temp_v1_10 + 1; - layer->noteDuration = 0; - layer->playPercentage = (s16) temp_v0_12; - } - } else { - temp_v0_13 = m64_read_compressed_u16(temp_s0); - temp_v1_11 = temp_s0->pc; - var_a0 = temp_v0_13 & 0xFFFF; - var_a2 = (s32) *temp_v1_11; - temp_s0->pc = temp_v1_11 + 1; - layer->noteDuration = temp_v1_11[1]; - temp_s0->pc += 1; - layer->playPercentage = (s16) temp_v0_13; - } - if ((var_a2 >= 0x80) || (var_a2 < 0)) { - var_a2 = 0x0000007F; - } - temp_f0 = (f32) var_a2; - var_s2_2 = (temp_s2 - (temp_s2 & 0xC0)) & 0xFF; - layer->velocitySquare = (temp_f0 * temp_f0) / 16129.0f; - } else { - switch (temp_v1_7) { /* switch 4; irregular */ - case 0x0: /* switch 4 */ - temp_v0_14 = m64_read_compressed_u16(temp_s0); - var_s3 = temp_v0_14 & 0xFFFF; - layer->playPercentage = (s16) temp_v0_14; + default: break; - case 0x40: /* switch 4 */ - var_s3 = (u16) layer->shortNoteDefaultPlayPercentage; - break; - case 0x80: /* switch 4 */ - var_s3 = (u16) layer->playPercentage; - break; - } - var_a0 = var_s3; - var_s2_2 = (temp_s2 - (temp_s2 & 0xC0)) & 0xFF; } - layer->delay = (s16) var_a0; - layer->duration = (s16) ((s32) (layer->noteDuration * var_a0) >> 8); - if (((temp_s4->unk0 & 0x20000000) && (sp68->muteBehavior & 0x40)) || (temp_v1_12 = sp68->unk0, (temp_v1_12 & 0x10000000))) { - layer->unk0 = (s8) ((u8) layer->unk0 | 0x20); - goto block_119; - } - temp_a0_3 = layer->instOrWave; - var_v0 = temp_a0_3; - if (temp_a0_3 == 0xFF) { - if (temp_v1_12 & 0x08000000) { - var_v0 = (u8) sp68->instOrWave; - goto block_88; - } - } else { -block_88: - if (var_v0 == 0) { - temp_v0_15 = get_drum((s32) sp68->bankId, (var_s2_2 + sp68->transposition + layer->transposition) & 0xFF); - temp_v1_13 = temp_v0_15 + 4; - if (temp_v0_15 == NULL) { - layer->unk0 = (s8) ((u8) layer->unk0 | 0x20); - layer->delayUnused = layer->delay; - return; - } - layer->adsr.envelope = temp_v0_15->envelope; - layer->adsr.releaseRate = temp_v0_15->releaseRate; - if (!(layer->unk0 & 0x02000000)) { - layer->pan = temp_v0_15->pan; - } - layer->sound = temp_v1_13; - var_f4 = temp_v1_13->tuning; - goto block_117; - } - temp_a1 = (var_s2_2 + temp_s4->transposition + sp68->transposition + layer->transposition) & 0xFF; - if (temp_a1 >= 0x80) { - layer->unk0 = (s8) ((u8) layer->unk0 | 0x20); - } else { - if (temp_a0_3 == 0xFF) { - var_a0_2 = sp68->instrument; - } else { - var_a0_2 = layer->instrument; - } - if (layer->portamento.mode != 0) { - temp_v0_16 = layer->portamentoTargetNote; - var_a2_2 = temp_v0_16; - if ((s32) temp_v0_16 < temp_a1) { - var_a2_2 = (u8) temp_a1; - } - if (var_a0_2 != NULL) { - temp_v0_17 = instrument_get_audio_bank_sound(var_a0_2, (s32) var_a2_2); - sp44 = temp_v0_17 == (s32) layer->sound; - layer->sound = (struct AudioBankSound *) temp_v0_17; - var_f0 = temp_v0_17->unk4; - } else { - var_f0 = 1.0f; - layer->sound = NULL; - } - temp_f2 = gNoteFrequencies[temp_a1] * var_f0; - temp_t4_2 = layer->portamento.mode & ~0x80; - switch (temp_t4_2) { /* switch 3 */ - case 1: /* switch 3 */ - case 3: /* switch 3 */ - case 5: /* switch 3 */ - var_f0_2 = gNoteFrequencies[layer->portamentoTargetNote] * var_f0; - break; - default: /* switch 3 */ - case 2: /* switch 3 */ - case 4: /* switch 3 */ - var_f0_2 = temp_f2; - break; - } - temp_v0_18 = &layer->portamento; - temp_v0_18->extent = (temp_f2 / var_f0_2) - 1.0f; - if (layer->portamento.mode & 0x80) { - temp_v0_18->speed = ((f32) temp_s4->tempo * 32512.0f) / ((f32) layer->delay * (f32) D_803B70B4 * (f32) layer->portamentoTime); - } else { - temp_v0_18->speed = 127.0f / (f32) layer->portamentoTime; - } - temp_v0_18->cur = 0.0f; - layer->freqScale = var_f0_2; - if ((layer->portamento.mode & ~0x80) == 5) { - layer->portamentoTargetNote = (u8) temp_a1; - } - } else if (var_a0_2 != NULL) { - temp_v0_19 = instrument_get_audio_bank_sound(var_a0_2, temp_a1); - sp44 = temp_v0_19 == (s32) layer->sound; - layer->sound = (struct AudioBankSound *) temp_v0_19; - layer->freqScale = gNoteFrequencies[temp_a1] * temp_v0_19->unk4; - } else { - layer->sound = NULL; - var_f4 = gNoteFrequencies[temp_a1]; -block_117: - layer->freqScale = var_f4; - } - } - layer->delayUnused = layer->delay; -block_119: - temp_v0_20 = layer->unk0; - if (((u32) (temp_v0_20 * 4) >> 0x1F) == 1) { - if ((layer->note != NULL) || (temp_v0_20 & 0x10000000)) { - seq_channel_layer_note_decay(layer); - } - } else { - var_s2_3 = 0; - if (!(temp_v0_20 & 0x10000000)) { - var_s2_3 = 1; - } else { - temp_a0_4 = layer->note; - if ((temp_a0_4 == NULL) || (layer->status == 0)) { - var_s2_3 = 1; - } else if (sp44 == 0) { - seq_channel_layer_note_decay(layer); - var_s2_3 = 1; - } else if (layer != temp_a0_4->parentLayer) { - var_s2_3 = 1; - } else if (layer->sound == NULL) { - init_synthetic_wave(temp_a0_4, layer); - } - } - if (var_s2_3 != 0) { - layer->note = alloc_note(layer); - } - temp_a0_5 = layer->note; - if ((temp_a0_5 != NULL) && (layer == temp_a0_5->parentLayer)) { - note_vibrato_init(temp_a0_5); - } - } - } - } } } + + if (cmd == 0xc0) { // layer_delay + layer->delay = m64_read_compressed_u16(state); + layer->stopSomething = TRUE; + } else { + layer->stopSomething = FALSE; + + if (seqChannel->largeNotes == TRUE) { + switch (cmd & 0xc0) { + case 0x00: // layer_note0 (play percentage, velocity, duration) + sp3A = m64_read_compressed_u16(state); + vel = *(state->pc++); + layer->noteDuration = *(state->pc++); + layer->playPercentage = sp3A; + break; + + case 0x40: // layer_note1 (play percentage, velocity) + sp3A = m64_read_compressed_u16(state); + vel = *(state->pc++); + layer->noteDuration = 0; + layer->playPercentage = sp3A; + break; + + case 0x80: // layer_note2 (velocity, duration; uses last play percentage) + sp3A = layer->playPercentage; + vel = *(state->pc++); + layer->noteDuration = *(state->pc++); + break; + } + if ((vel >= 0x80) || (vel < 0)) { + vel = 0x0000007F; + } + // the remaining bits are used for the semitone + cmd -= (cmd & 0xc0); + layer->velocitySquare = ((f32)(vel) * (f32)vel) / 16129.0f; + } else { + switch (cmd & 0xc0) { + case 0x00: // play note, type 0 (play percentage) + sp3A = m64_read_compressed_u16(state); + layer->playPercentage = sp3A; + break; + + case 0x40: // play note, type 1 (uses default play percentage) + sp3A = layer->shortNoteDefaultPlayPercentage; + break; + + case 0x80: // play note, type 2 (uses last play percentage) + sp3A = layer->playPercentage; + break; + } + + // the remaining bits are used for the semitone + cmd -= cmd & 0xc0; + } + + layer->delay = sp3A; + layer->duration = layer->noteDuration * sp3A >> 8; + if ((seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_STOP_NOTES) != 0) + || seqChannel->stopSomething2 + ) { + layer->stopSomething = TRUE; + + } else { + s32 temp = layer->instOrWave; + if (temp == 0xff) { + if (!seqChannel->hasInstrument) return; + temp = seqChannel->instOrWave; + } + if (temp == 0) + { // drum + // cmd is reused for the drum semitone + cmd += seqChannel->transposition + layer->transposition; + + drum = get_drum(seqChannel->bankId, cmd); + if (drum == NULL) { + layer->stopSomething = TRUE; + layer->delayUnused = layer->delay; + return; + } else { + layer->adsr.envelope = drum->envelope; + layer->adsr.releaseRate = drum->releaseRate; + if (!layer->ignoreDrumPan) { + layer->pan = drum->pan; + } + layer->sound = &drum->sound; + layer->freqScale = layer->sound->tuning; + } + } else { // instrument + // cmd is reused for the instrument semitone + cmd += seqPlayer->transposition + seqChannel->transposition + layer->transposition; + + if (cmd >= 0x80) { + layer->stopSomething = TRUE; + } else { + if (layer->instOrWave == 0xffu) { + instrument = seqChannel->instrument; + } else { + instrument = layer->instrument; + } + + if (layer->portamento.mode != 0) { + if (layer->portamentoTargetNote < cmd) { + vel = cmd; + } else { + vel = layer->portamentoTargetNote; + } + + if (instrument != NULL) { + sound = instrument_get_audio_bank_sound(instrument, vel); + sameSound = (sound == layer->sound); + layer->sound = sound; + tuning = sound->tuning; + } else { + layer->sound = NULL; + tuning = 1.0f; + } + + temp_f2 = gNoteFrequencies[cmd] * tuning; + temp_f12 = gNoteFrequencies[layer->portamentoTargetNote] * tuning; + + portamento = &layer->portamento; + switch (PORTAMENTO_MODE(layer->portamento)) { + case PORTAMENTO_MODE_1: + case PORTAMENTO_MODE_3: + case PORTAMENTO_MODE_5: + freqScale = temp_f12; + break; + + case PORTAMENTO_MODE_2: + case PORTAMENTO_MODE_4: + default: + freqScale = temp_f2; + break; + } + + portamento->extent = temp_f2 / freqScale - 1.0f; + + if (PORTAMENTO_IS_SPECIAL(layer->portamento)) { + portamento->speed = US_FLOAT(32512.0) * FLOAT_CAST(seqPlayer->tempo) + / ((f32) layer->delay * (f32) gTempoInternalToExternal + * FLOAT_CAST(layer->portamentoTime)); + } else { + portamento->speed = US_FLOAT(127.0) / FLOAT_CAST(layer->portamentoTime); + } + portamento->cur = 0.0f; + layer->freqScale = freqScale; + if (PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_5) { + layer->portamentoTargetNote = cmd; + } + } else if (instrument != NULL) { + sound = instrument_get_audio_bank_sound(instrument, cmd); + sameSound = (sound == layer->sound); + layer->sound = sound; + layer->freqScale = gNoteFrequencies[cmd] * sound->tuning; + } else { + layer->sound = NULL; + layer->freqScale = gNoteFrequencies[cmd]; + } + } + } + layer->delayUnused = layer->delay; + } + } + + if (layer->stopSomething == TRUE) { + if (layer->note != NULL || layer->continuousNotes) { + seq_channel_layer_note_decay(layer); + } + return; + } + + cmd = FALSE; + if (!layer->continuousNotes) { + cmd = TRUE; + } else if (layer->note == NULL || layer->status == SOUND_LOAD_STATUS_NOT_LOADED) { + cmd = TRUE; + } else if (sameSound == FALSE) { + seq_channel_layer_note_decay(layer); + cmd = TRUE; + } + else if (layer != layer->note->parentLayer) { + cmd = TRUE; + } + else if (layer->sound == NULL) { + init_synthetic_wave(layer->note, layer); + } + + if (cmd != FALSE) { + layer->note = alloc_note(layer); + } + + if (layer->note != NULL && layer->note->parentLayer == layer) { + note_vibrato_init(layer->note); + } + if (seqChannel) { + } } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/seq_channel_layer_process_script.s") -#endif u8 get_instrument(struct SequenceChannel *seqChannel, u8 instId, struct Instrument **instOut, struct AdsrSettings *adsr) { struct Instrument *inst; @@ -758,331 +730,338 @@ void sequence_channel_set_volume(struct SequenceChannel *seqChannel, u8 volume) seqChannel->volume = FLOAT_CAST(volume) / US_FLOAT(127.0); } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -void func_800BFD90(struct SequenceChannel *seqChannel) { - u8 sp55; - s16 sp52; - s32 sp34; - f32 temp_f18; - f32 temp_f6; - f32 temp_f8; - s16 temp_v0_4; - s16 temp_v0_8; - s32 temp_a0_4; - s32 temp_a1; - s32 temp_a1_2; - s32 temp_s0; - s32 temp_s0_5; - s32 temp_t3; - s32 temp_v0_2; - s32 temp_v1_7; - s32 var_s0; - s32 var_s0_2; - s8 var_s3; - struct M64ScriptState *temp_s1; - struct NotePool *temp_s0_2; - struct SequenceChannel *var_s1; - struct SequenceChannel *var_s1_2; - struct SequenceChannelLayer *temp_a0; - struct SequenceChannelLayer *temp_a0_5; - struct SequenceChannelLayer *temp_v1_6; - struct SequencePlayer *temp_s4; - u16 temp_a3; - u16 temp_a3_2; - u16 temp_t5; - u16 temp_v1; - u16 temp_v1_3; - u16 var_v0; - u32 temp_t6; - u32 temp_v0; - u8 *temp_v0_6; - u8 *temp_v1_5; - u8 temp_a0_2; - u8 temp_a0_3; - u8 temp_s0_3; - u8 temp_s0_4; - u8 temp_t0; - u8 temp_t7; - u8 temp_v0_5; - u8 temp_v0_7; - void *temp_v0_3; - void *temp_v1_2; - void *temp_v1_4; - void *temp_v1_8; +void sequence_channel_process_script(struct SequenceChannel *seqChannel) { + struct M64ScriptState *state; + struct SequencePlayer *seqPlayer; + u8 cmd; + s8 temp; + u8 loBits; + u16 sp5A; + s32 sp38; + s8 value; + s32 i; + u8 *seqData; - temp_v0 = seqChannel->unk0; - if ((temp_v0 >> 0x1F) != 0) { - var_s0 = 0; - if (temp_v0 & 0x20000000) { - var_s1 = seqChannel; - do { - temp_a0 = var_s1->layers[0]; - if (temp_a0 != NULL) { - seq_channel_layer_process_script(temp_a0); - } - var_s0 += 4; - var_s1 += 4; - } while (var_s0 != 0x10); - return; - } - temp_s4 = seqChannel->seqPlayer; - if (!(temp_s4->unk0 & 0x20000000) || !(seqChannel->muteBehavior & 0x80)) { - temp_v1 = seqChannel->delay; - temp_s1 = &seqChannel->scriptState; - var_v0 = temp_v1; - if (temp_v1 != 0) { - temp_t5 = temp_v1 - 1; - seqChannel->delay = temp_t5; - var_v0 = temp_t5 & 0xFFFF; + if (!seqChannel->enabled) { + return; + } + if (seqChannel->stopScript) { + for (i = 0; i < LAYERS_MAX; i++) { + if (seqChannel->layers[i] != NULL) { + seq_channel_layer_process_script(seqChannel->layers[i]); } - var_s3 = sp4B; - if (var_v0 == 0) { - case 0xCD: /* switch 3 */ - case 0xCE: /* switch 3 */ - case 0xCF: /* switch 3 */ - case 0xD5: /* switch 3 */ - case 0xD6: /* switch 3 */ - case 0xED: /* switch 3 */ - case 0xEE: /* switch 3 */ - default: /* switch 2 */ -loop_12: - temp_v0_2 = m64_read_u8(temp_s1); - temp_s0 = temp_v0_2 & 0xFF; - switch (temp_v0_2) { /* switch 3; irregular */ - case 0xFF: /* switch 3 */ - temp_a0_2 = temp_s1->depth; - if (temp_a0_2 == 0) { + } + return; + } + seqPlayer = seqChannel->seqPlayer; + if (seqPlayer->muted && ((seqChannel->muteBehavior & 0x80) != 0)) { + return; + } + if (seqChannel->delay != 0) { + seqChannel->delay--; + } + state = &seqChannel->scriptState; + if (seqChannel->delay == 0) { + for (;;) { + cmd = m64_read_u8(state); + if (cmd > 0xc0) { + switch (cmd) { + case 0xFF: + if (state->depth); + if(1); + if(1); + if(1); + if (state->depth == 0) { sequence_channel_disable(seqChannel); + goto out; } else { - temp_t7 = (temp_a0_2 - 1) & 0xFF; - temp_s1->depth = temp_t7; - temp_s1->pc = temp_s1->stack[temp_t7]; - goto loop_12; + state->pc = state->stack[--state->depth]; } break; - case 0xFD: /* switch 3 */ - seqChannel->delay = m64_read_compressed_u16(temp_s1); + + case 0xFE: + goto out; + + case 0xFD: + seqChannel->delay = m64_read_compressed_u16(state); + goto out; + + case 0xEA: + seqChannel->stopScript = 1; + goto out; + + case 0xFC: + sp5A = m64_read_s16(state); + state->stack[state->depth++] = state->pc; + state->pc = seqPlayer->seqData + sp5A; break; - case 0xEA: /* switch 3 */ - seqChannel->unk0 = (s8) ((u8) seqChannel->unk0 | 0x20); + + case 0xF8: + state->remLoopIters[state->depth] = m64_read_u8(state); + state->stack[state->depth] = state->pc; + state->depth += 1; break; - case 0xFC: /* switch 3 */ - temp_t3 = m64_read_s16(temp_s1) & 0xFFFF; - temp_s1->stack[temp_s1->depth] = temp_s1->pc; - temp_s1->depth += 1; - temp_s1->pc = &temp_s4->seqData[temp_t3]; - goto loop_12; - case 0xF8: /* switch 3 */ - temp_s1->remLoopIters[temp_s1->depth] = m64_read_u8(temp_s1); - temp_s1->stack[temp_s1->depth] = temp_s1->pc; - temp_s1->depth += 1; - goto loop_12; - case 0xF7: /* switch 3 */ - temp_v0_3 = temp_s1 + temp_s1->depth; - temp_v0_3->unk13 = (u8) (temp_v0_3->unk13 - 1); - temp_a0_3 = temp_s1->depth; - if ((temp_s1 + temp_a0_3)->unk13 != 0) { - temp_s1->pc = *(temp_s1 + (temp_a0_3 * 4)); - } else { - temp_s1->depth = temp_a0_3 - 1; + + case 0xF7: + state->remLoopIters[state->depth - 1]--; + if (state->remLoopIters[state->depth - 1] != 0) { + state->pc = state->stack[state->depth - 1]; } - goto loop_12; - case 0xF6: /* switch 3 */ - temp_s1->depth -= 1; - goto loop_12; - case 0xF5: /* switch 3 */ - case 0xF9: /* switch 3 */ - case 0xFA: /* switch 3 */ - case 0xFB: /* switch 3 */ - temp_v0_4 = m64_read_s16(temp_s1); - if (((temp_s0 != 0xFA) || (var_s3 == 0)) && ((temp_s0 != 0xF9) || (var_s3 < 0)) && ((temp_s0 != 0xF5) || (var_s3 >= 0))) { - temp_s1->pc = &temp_s4->seqData[temp_v0_4 & 0xFFFF]; + else { + state->depth--; } - goto loop_12; - case 0xF2: /* switch 3 */ - case 0xF3: /* switch 3 */ - case 0xF4: /* switch 3 */ - temp_v0_5 = m64_read_u8(temp_s1); - if (((temp_s0 != 0xF3) || (var_s3 == 0)) && ((temp_s0 != 0xF2) || (var_s3 < 0))) { - temp_s1->pc = &temp_s1->pc[(s8) temp_v0_5]; + break; + + case 0xF6: + state->depth -= 1; + break; + + case 0xF5: + case 0xF9: + case 0xFA: + case 0xFB: + sp5A = m64_read_s16(state); + if ((cmd == 0xFA) && (value != 0)) { + break; } - goto loop_12; - case 0xF1: /* switch 3 */ - temp_s0_2 = &seqChannel->notePool; - note_pool_clear(temp_s0_2); - note_pool_fill(temp_s0_2, m64_read_u8(temp_s1)); - goto loop_12; - case 0xF0: /* switch 3 */ + if ((cmd == 0xF9) && (value >= 0)) { + break; + } + if ((cmd == 0xF5) && (value < 0)) { + break; + } + state->pc = seqPlayer->seqData + sp5A; + break; + + case 0xF2: + case 0xF3: + case 0xF4: + temp = m64_read_u8(state); + if ((cmd == 0xF3) && (value != 0)) { + break; + } + if ((cmd == 0xF2) && (value >= 0)) { + break; + } + state->pc += temp; + break; + + case 0xF1: note_pool_clear(&seqChannel->notePool); - goto loop_12; - case 0xC2: /* switch 3 */ - seqChannel->dynTable = (u8 (*)[][2]) &temp_s4->seqData[m64_read_s16(temp_s1) & 0xFFFF]; - goto loop_12; - case 0xC5: /* switch 3 */ - if (var_s3 != -1) { - temp_v1_2 = seqChannel->dynTable + (var_s3 * 2); - seqChannel->dynTable = (u8 (*)[][2]) &temp_s4->seqData[(temp_v1_2->unk1 + (temp_v1_2->unk0 << 8)) & 0xFFFF]; + note_pool_fill(&seqChannel->notePool, m64_read_u8(state)); + break; + + case 0xF0: + note_pool_clear(&seqChannel->notePool); + break; + + case 0xC2: + sp5A = m64_read_s16(state); + seqChannel->dynTable = (void *) (seqPlayer->seqData + sp5A); + break; + + case 0xC5: + if (value != (-1)) { + seqData = (*seqChannel->dynTable)[value]; + sp38 = (u16) ((seqData[0] << 8) + seqData[1]); + seqChannel->dynTable = (void *) (seqPlayer->seqData + sp38); } - goto loop_12; - case 0xEB: /* switch 3 */ - temp_a3 = *(gAlBankSets + (temp_s4->seqId * 2)); - temp_s0_3 = gAlBankSets[(temp_a3 + gAlBankSets[temp_a3]) - m64_read_u8(temp_s1)]; - if (get_bank_or_seq(1, 2, (s32) temp_s0_3) != NULL) { - seqChannel->bankId = temp_s0_3; + break; + + case 0xEB: + cmd = m64_read_u8(state); + sp38 = ((u16 *) gAlBankSets)[seqPlayer->seqId]; + loBits = *(sp38 + gAlBankSets); + cmd = gAlBankSets[(((s32) sp38) + loBits) - cmd]; + if (get_bank_or_seq(1, 2, cmd) != NULL) { + seqChannel->bankId = cmd; } - /* fallthrough */ - case 0xC1: /* switch 3 */ - set_instrument(seqChannel, m64_read_u8(temp_s1) & 0xFF); - goto loop_12; - case 0xC3: /* switch 3 */ - seqChannel->unk0 = (s8) ((u8) seqChannel->unk0 & 0xFFFD); - goto loop_12; - case 0xC4: /* switch 3 */ - seqChannel->unk0 = (s8) ((u8) seqChannel->unk0 | 2); - goto loop_12; - case 0xDF: /* switch 3 */ - sequence_channel_set_volume(seqChannel, m64_read_u8(temp_s1) & 0xFF); - seqChannel->changes.as_u8 |= 0x40; - goto loop_12; - case 0xE0: /* switch 3 */ - temp_f6 = (f32) m64_read_u8(temp_s1); - seqChannel->changes.as_u8 |= 0x40; - seqChannel->volumeScale = temp_f6 * 0.0078125f; - goto loop_12; - case 0xDE: /* switch 3 */ - temp_f18 = (f32) (m64_read_s16(temp_s1) & 0xFFFF); - seqChannel->changes.as_u8 |= 0x80; - seqChannel->freqScale = temp_f18 / 32768.0f; - goto loop_12; - case 0xD3: /* switch 3 */ - temp_f8 = gPitchBendFrequencyScale[(m64_read_u8(temp_s1) + 0x7F) & 0xFF]; - seqChannel->changes.as_u8 |= 0x80; - seqChannel->freqScale = temp_f8; - goto loop_12; - case 0xDD: /* switch 3 */ - seqChannel->newPan = m64_read_u8(temp_s1); - seqChannel->changes.as_u8 |= 0x20; - goto loop_12; - case 0xDC: /* switch 3 */ - seqChannel->panChannelWeight = m64_read_u8(temp_s1); - seqChannel->changes.as_u8 |= 0x20; - goto loop_12; - case 0xDB: /* switch 3 */ - temp_v0_6 = temp_s1->pc; - temp_s1->pc = temp_v0_6 + 1; - seqChannel->transposition = (s16) (s8) *temp_v0_6; - goto loop_12; - case 0xDA: /* switch 3 */ - seqChannel->adsr.envelope = (struct AdsrEnvelope *) &temp_s4->seqData[m64_read_s16(temp_s1) & 0xFFFF]; - goto loop_12; - case 0xD9: /* switch 3 */ - seqChannel->adsr.releaseRate = m64_read_u8(temp_s1); - goto loop_12; - case 0xD8: /* switch 3 */ - seqChannel->vibratoExtentTarget = m64_read_u8(temp_s1) * 8; + + case 0xC1: + set_instrument(seqChannel, m64_read_u8(state)); + break; + + case 0xC3: + seqChannel->largeNotes = 0; + break; + + case 0xC4: + seqChannel->largeNotes = 1; + break; + + case 0xDF: + sequence_channel_set_volume(seqChannel, m64_read_u8(state)); + seqChannel->changes.as_bitfields.volume = 1; + break; + + case 0xE0: + seqChannel->volumeScale = ((f32) ((s32) m64_read_u8(state))) / 128.0f; + seqChannel->changes.as_bitfields.volume = 1; + break; + + case 0xDE: + sp5A = m64_read_s16(state); + seqChannel->freqScale = ((f32) ((s32) sp5A)) / 32768.0f; + seqChannel->changes.as_bitfields.freqScale = 1; + break; + + case 0xD3: + cmd = m64_read_u8(state) + 127; + seqChannel->freqScale = gPitchBendFrequencyScale[cmd]; + seqChannel->changes.as_bitfields.freqScale = 1; + break; + + case 0xDD: + seqChannel->newPan = m64_read_u8(state); + seqChannel->changes.as_bitfields.pan = 1; + break; + + case 0xDC: + seqChannel->panChannelWeight = m64_read_u8(state); + seqChannel->changes.as_bitfields.pan = 1; + break; + + case 0xDB: + temp = *(state->pc++); + seqChannel->transposition = temp; + break; + + case 0xDA: + sp5A = m64_read_s16(state); + seqChannel->adsr.envelope = (struct AdsrEnvelope *) (seqPlayer->seqData + sp5A); + break; + + case 0xD9: + seqChannel->adsr.releaseRate = m64_read_u8(state); + break; + + case 0xD8: + seqChannel->vibratoExtentTarget = m64_read_u8(state) * 8; seqChannel->vibratoExtentStart = 0; seqChannel->vibratoExtentChangeDelay = 0; - goto loop_12; - case 0xD7: /* switch 3 */ - temp_v1_3 = m64_read_u8(temp_s1) << 5; - seqChannel->vibratoRateTarget = temp_v1_3; - seqChannel->vibratoRateStart = temp_v1_3; + break; + + case 0xD7: + seqChannel->vibratoRateStart = seqChannel->vibratoRateTarget = m64_read_u8(state) * 32; seqChannel->vibratoRateChangeDelay = 0; - goto loop_12; - case 0xE2: /* switch 3 */ - seqChannel->vibratoExtentStart = m64_read_u8(temp_s1) * 8; - seqChannel->vibratoExtentTarget = m64_read_u8(temp_s1) * 8; - seqChannel->vibratoExtentChangeDelay = m64_read_u8(temp_s1) * 0x10; - goto loop_12; - case 0xE1: /* switch 3 */ - seqChannel->vibratoRateStart = m64_read_u8(temp_s1) << 5; - seqChannel->vibratoRateTarget = m64_read_u8(temp_s1) << 5; - seqChannel->vibratoRateChangeDelay = m64_read_u8(temp_s1) * 0x10; - goto loop_12; - case 0xE3: /* switch 3 */ - seqChannel->vibratoDelay = m64_read_u8(temp_s1) * 0x10; - goto loop_12; - case 0xD4: /* switch 3 */ - seqChannel->reverbVol = m64_read_u8(temp_s1); - goto loop_12; - case 0xC6: /* switch 3 */ - temp_a3_2 = *(gAlBankSets + (temp_s4->seqId * 2)); - temp_s0_4 = gAlBankSets[(temp_a3_2 + gAlBankSets[temp_a3_2]) - m64_read_u8(temp_s1)]; - if (get_bank_or_seq(1, 2, (s32) temp_s0_4) != NULL) { - seqChannel->bankId = temp_s0_4; + break; + + case 0xE2: + seqChannel->vibratoExtentStart = m64_read_u8(state) * 8; + seqChannel->vibratoExtentTarget = m64_read_u8(state) * 8; + seqChannel->vibratoExtentChangeDelay = m64_read_u8(state) * 0x10; + break; + + case 0xE1: + seqChannel->vibratoRateStart = m64_read_u8(state) << 5; + seqChannel->vibratoRateTarget = m64_read_u8(state) << 5; + seqChannel->vibratoRateChangeDelay = m64_read_u8(state) * 0x10; + break; + + case 0xE3: + seqChannel->vibratoDelay = m64_read_u8(state) * 0x10; + break; + + case 0xD4: + seqChannel->reverbVol = m64_read_u8(state); + break; + + case 0xC6: + cmd = m64_read_u8(state); + sp5A = ((u16 *) gAlBankSets)[seqPlayer->seqId]; + loBits = *(sp5A + gAlBankSets); + cmd = gAlBankSets[(sp5A + loBits) - cmd]; + if (get_bank_or_seq(1, 2, cmd) != NULL) { + seqChannel->bankId = cmd; } - goto loop_12; - case 0xC7: /* switch 3 */ - sp34 = var_s3 & 0xFF; - temp_s0_5 = m64_read_u8(temp_s1) & 0xFF; - temp_s4->seqData[m64_read_s16(temp_s1) & 0xFFFF] = sp34 + temp_s0_5; - goto loop_12; - case 0xC8: /* switch 3 */ - case 0xC9: /* switch 3 */ - case 0xCC: /* switch 3 */ - temp_v0_7 = m64_read_u8(temp_s1); - if (temp_s0 == 0xC8) { - var_s3 -= temp_v0_7; - } else if (temp_s0 == 0xCC) { - var_s3 = (s8) temp_v0_7; + break; + + case 0xC7: + cmd = m64_read_u8(state); + sp5A = m64_read_s16(state); + seqData = seqPlayer->seqData + sp5A; + *seqData = ((u8) value) + cmd; + break; + + case 0xC8: + case 0xC9: + case 0xCC: + temp = m64_read_u8(state); + if (cmd == 0xC8) { + value -= temp; + } else if (cmd == 0xCC) { + value = temp; } else { - var_s3 &= temp_v0_7; + value &= temp; } - goto loop_12; - case 0xCA: /* switch 3 */ - seqChannel->muteBehavior = m64_read_u8(temp_s1); - goto loop_12; - case 0xCB: /* switch 3 */ - var_s3 = (s8) temp_s4->seqData[(m64_read_s16(temp_s1) & 0xFFFF) + var_s3]; - goto loop_12; - case 0xD0: /* switch 3 */ - seqChannel->unk0 = (s8) (((m64_read_u8(temp_s1) * 4) & 4) | ((u8) seqChannel->unk0 & 0xFFFB)); - goto loop_12; - case 0xD1: /* switch 3 */ - seqChannel->noteAllocPolicy = m64_read_u8(temp_s1); - goto loop_12; - case 0xD2: /* switch 3 */ - seqChannel->adsr.sustain = m64_read_u8(temp_s1); - goto loop_12; - case 0xE5: /* switch 3 */ - seqChannel->reverbIndex = m64_read_u8(temp_s1); - goto loop_12; - case 0xE4: /* switch 3 */ - if (var_s3 != -1) { - temp_s1->stack[temp_s1->depth] = temp_s1->pc; - temp_v1_4 = seqChannel->dynTable + (var_s3 * 2); - temp_s1->depth += 1; - temp_s1->pc = &temp_s4->seqData[(temp_v1_4->unk1 + (temp_v1_4->unk0 << 8)) & 0xFFFF]; + break; + + case 0xCA: + seqChannel->muteBehavior = m64_read_u8(state); + break; + + case 0xCB: + sp38 = ((u16) m64_read_s16(state)) + value; + value = seqPlayer->seqData[sp38]; + break; + + case 0xD0: + seqChannel->stereoHeadsetEffects = m64_read_u8(state); + break; + + case 0xD1: + seqChannel->noteAllocPolicy = m64_read_u8(state); + break; + + case 0xD2: + seqChannel->adsr.sustain = m64_read_u8(state); + break; + + case 0xE5: + seqChannel->reverbIndex = m64_read_u8(state); + break; + + case 0xE4: + if (value != (-1)) { + if (state->depth); + seqData = (*seqChannel->dynTable)[value]; + state->stack[state->depth++] = state->pc; + sp38 = (u16) ((seqData[0] << 8) + seqData[1]); + state->pc = seqPlayer->seqData + sp38; } - goto loop_12; - case 0xE6: /* switch 3 */ - seqChannel->bookOffset = m64_read_u8(temp_s1); - goto loop_12; - case 0xE7: /* switch 3 */ - temp_v1_5 = &temp_s4->seqData[m64_read_s16(temp_s1) & 0xFFFF]; - seqChannel->muteBehavior = *temp_v1_5; - seqChannel->noteAllocPolicy = temp_v1_5[7].unk-6; - seqChannel->notePriority = temp_v1_5[7].unk-5; - seqChannel->transposition = (s16) temp_v1_5[7].unk-4; - seqChannel->newPan = temp_v1_5[7].unk-3; - seqChannel->panChannelWeight = temp_v1_5[7].unk-2; - seqChannel->reverbVol = temp_v1_5[7].unk-1; - seqChannel->changes.as_u8 |= 0x20; - seqChannel->reverbIndex = temp_v1_5[7]; - goto loop_12; - case 0xE8: /* switch 3 */ - seqChannel->muteBehavior = m64_read_u8(temp_s1); - seqChannel->noteAllocPolicy = m64_read_u8(temp_s1); - seqChannel->notePriority = m64_read_u8(temp_s1); - seqChannel->transposition = (s16) m64_read_u8(temp_s1); - seqChannel->newPan = m64_read_u8(temp_s1); - seqChannel->panChannelWeight = m64_read_u8(temp_s1); - seqChannel->reverbVol = m64_read_u8(temp_s1); - seqChannel->reverbIndex = m64_read_u8(temp_s1); - seqChannel->changes.as_u8 |= 0x20; - goto loop_12; - case 0xEC: /* switch 3 */ + break; + + case 0xE6: + seqChannel->bookOffset = m64_read_u8(state); + break; + + case 0xE7: + sp5A = m64_read_s16(state); + seqData = seqPlayer->seqData + sp5A; + seqChannel->muteBehavior = *(seqData++); + seqChannel->noteAllocPolicy = *(seqData++); + seqChannel->notePriority = *(seqData++); + seqChannel->transposition = (s8) (*(seqData++)); + seqChannel->newPan = *(seqData++); + seqChannel->panChannelWeight = *(seqData++); + seqChannel->reverbVol = *(seqData++); + seqChannel->reverbIndex = *(seqData++); + seqChannel->changes.as_bitfields.pan = 1; + break; + + case 0xE8: + seqChannel->muteBehavior = m64_read_u8(state); + seqChannel->noteAllocPolicy = m64_read_u8(state); + seqChannel->notePriority = m64_read_u8(state); + seqChannel->transposition = (s8) m64_read_u8(state); + seqChannel->newPan = m64_read_u8(state); + seqChannel->panChannelWeight = m64_read_u8(state); + seqChannel->reverbVol = m64_read_u8(state); + seqChannel->reverbIndex = m64_read_u8(state); + seqChannel->changes.as_bitfields.pan = 1; + break; + + case 0xEC: seqChannel->vibratoExtentTarget = 0; seqChannel->vibratoExtentStart = 0; seqChannel->vibratoExtentChangeDelay = 0; @@ -1090,107 +1069,103 @@ loop_12: seqChannel->vibratoRateStart = 0; seqChannel->vibratoRateChangeDelay = 0; seqChannel->freqScale = 1.0f; - goto loop_12; - case 0xE9: /* switch 3 */ - seqChannel->notePriority = m64_read_u8(temp_s1); - goto loop_12; - case 0xEF: /* switch 3 */ - m64_read_s16(temp_s1); - m64_read_u8(temp_s1); - goto loop_12; - default: /* switch 3 */ - temp_t6 = temp_v0_2 & 0xF0; - temp_a0_4 = temp_v0_2 & 0xF; - temp_t0 = temp_a0_4 & 0xFF; - switch (temp_t6) { /* switch 2 */ - case 0x0: /* switch 2 */ - temp_v1_6 = seqChannel->layers[temp_a0_4 & 0xFF]; - if (temp_v1_6 != NULL) { - var_s3 = (s8) ((u32) (*temp_v1_6 * 2) >> 0x1F); - } else { - var_s3 = -1; - } - goto loop_12; - case 0x70: /* switch 2 */ - seqChannel->soundScriptIO[temp_a0_4 & 0xFF] = var_s3; - goto loop_12; - case 0x80: /* switch 2 */ - temp_v1_7 = temp_a0_4 & 0xFF; - var_s3 = seqChannel->soundScriptIO[temp_v1_7]; - if (temp_v1_7 < 4) { - seqChannel->soundScriptIO[temp_v1_7] = -1; - } - goto loop_12; - case 0x50: /* switch 2 */ - var_s3 -= seqChannel->soundScriptIO[temp_a0_4 & 0xFF]; - goto loop_12; - case 0x60: /* switch 2 */ - seqChannel->delay = temp_a0_4 & 0xFF; - break; - case 0x90: /* switch 2 */ - temp_v0_8 = m64_read_s16(temp_s1); - temp_a1 = temp_s0 & 0xF; - sp34 = temp_a1; - sp52 = temp_v0_8; - if (seq_channel_set_layer(seqChannel, temp_a1) == 0) { - seqChannel->layers[sp34]->scriptState.pc = &temp_s4->seqData[(u16) sp52]; - } - goto loop_12; - case 0xA0: /* switch 2 */ - seq_channel_layer_free(seqChannel, temp_s0 & 0xF); - goto loop_12; - case 0xB0: /* switch 2 */ - if (var_s3 != -1) { - temp_a1_2 = temp_s0 & 0xF; - sp34 = temp_a1_2; - if (seq_channel_set_layer(seqChannel, temp_a1_2) != -1) { - temp_v1_8 = seqChannel->dynTable + (var_s3 * 2); - seqChannel->layers[sp34]->scriptState.pc = &temp_s4->seqData[(temp_v1_8->unk1 + (temp_v1_8->unk0 << 8)) & 0xFFFF]; - } - } - goto loop_12; - case 0x10: /* switch 2 */ - sequence_channel_enable(temp_s4, temp_s0 & 0xF, &temp_s4->seqData[m64_read_s16(temp_s1) & 0xFFFF]); - goto loop_12; - case 0x20: /* switch 2 */ - sequence_channel_disable(temp_s4->channels[temp_s0 & 0xF]); - goto loop_12; - case 0x30: /* switch 2 */ - sp55 = temp_t0; - temp_s4->channels[temp_t0]->soundScriptIO[m64_read_u8(temp_s1)] = var_s3; - goto loop_12; - case 0x40: /* switch 2 */ - sp55 = temp_t0; - var_s3 = temp_s4->channels[temp_t0]->soundScriptIO[m64_read_u8(temp_s1)]; - goto loop_12; + break; + + case 0xE9: + seqChannel->notePriority = m64_read_u8(state); + break; + + case 0xEF: + m64_read_s16(state); + m64_read_u8(state); + break; + } + } else { + loBits = cmd & 0xf; + switch (cmd & 0xF0) { + case 0x0: + if (seqChannel->layers[loBits] != NULL) { + value = seqChannel->layers[loBits]->finished; + } else { + value = -1; } break; + + case 0x70: + seqChannel->soundScriptIO[loBits] = value; + break; + + case 0x80: + value = seqChannel->soundScriptIO[loBits]; + if (loBits < 4) { + seqChannel->soundScriptIO[loBits] = -1; + } + break; + + case 0x50: + value -= seqChannel->soundScriptIO[loBits]; + break; + + case 0x60: + seqChannel->delay = loBits; + goto out; + + case 0x90: + sp5A = m64_read_s16(state); + if (seq_channel_set_layer(seqChannel, loBits) == 0) { + seqChannel->layers[loBits]->scriptState.pc = seqPlayer->seqData + sp5A; + } + break; + + case 0xA0: + seq_channel_layer_free(seqChannel, loBits); + break; + + case 0xB0: + if ((value != (-1)) && (seq_channel_set_layer(seqChannel, loBits) != (-1))) { + seqData = (*seqChannel->dynTable)[value]; + sp5A = (seqData[0] << 8) + seqData[1]; + seqChannel->layers[loBits]->scriptState.pc = seqPlayer->seqData + sp5A; + } + break; + + case 0x10: + sp5A = m64_read_s16(state); + sequence_channel_enable(seqPlayer, loBits, seqPlayer->seqData + sp5A); + break; + + case 0x20: + sequence_channel_disable(seqPlayer->channels[loBits]); + break; + + case 0x30: + cmd = m64_read_u8(state); + seqPlayer->channels[loBits]->soundScriptIO[cmd] = value; + break; + + case 0x40: + cmd = m64_read_u8(state); + value = seqPlayer->channels[loBits]->soundScriptIO[cmd]; + break; } } - var_s1_2 = seqChannel; - var_s0_2 = 0; - do { - temp_a0_5 = var_s1_2->layers[0]; - if (temp_a0_5 != NULL) { - seq_channel_layer_process_script(temp_a0_5); - } - var_s0_2 += 4; - var_s1_2 += 4; - } while (var_s0_2 != 0x10); + } + } + out: + for (i = 0; i < LAYERS_MAX; i++) { + if (seqChannel->layers[i] != 0) { + seq_channel_layer_process_script(seqChannel->layers[i]); } } } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BFD90.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 ? func_800BB584(u8, u8 **, s32 *); /* extern */ -? func_800BFD90(s32); /* extern */ -extern s16 D_803B70B4; +? sequence_channel_process_script(s32); /* extern */ +extern s16 gTempoInternalToExternal; -void func_800C08CC(struct SequencePlayer *arg0) { +void sequence_player_process_sequence(struct SequencePlayer *arg0) { struct NotePool *sp38; s32 sp34; struct SequencePlayer *sp30; @@ -1280,9 +1255,9 @@ block_11: temp_t2 = arg0->tempoAcc + arg0->tempo; arg0->tempoAcc = temp_t2; temp_v0_3 = temp_t2 & 0xFFFF; - if (temp_v0_3 >= D_803B70B4) { + if (temp_v0_3 >= gTempoInternalToExternal) { temp_a0 = arg0->delay; - arg0->tempoAcc = temp_v0_3 - D_803B70B4; + arg0->tempoAcc = temp_v0_3 - gTempoInternalToExternal; if ((s32) temp_a0 >= 2) { arg0->delay = temp_a0 - 1; } else { @@ -1374,9 +1349,9 @@ block_28: arg0->tempo += (s8) temp_v0_9 * 0x30; } var_v0_2 = arg0->tempo; - if (D_803B70B4 < (s32) var_v0_2) { - arg0->tempo = (u16) D_803B70B4; - var_v0_2 = D_803B70B4 & 0xFFFF; + if (gTempoInternalToExternal < (s32) var_v0_2) { + arg0->tempo = (u16) gTempoInternalToExternal; + var_v0_2 = gTempoInternalToExternal & 0xFFFF; } if ((s16) var_v0_2 <= 0) { arg0->tempo = 1; @@ -1491,7 +1466,7 @@ block_28: if (((s32) &gSequenceChannelNone != (s32) temp_a0_5) == 1) { sp34 = var_v0_3; sp30 = var_v1; - func_800BFD90((s32) temp_a0_5); + sequence_channel_process_script((s32) temp_a0_5); } var_v0_3 += 4; var_v1 += 4; @@ -1502,29 +1477,19 @@ block_28: } } #else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800C08CC.s") +GLOBAL_ASM("asm/non_matchings/audio/seqplayer/sequence_player_process_sequence.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 -? func_800C08CC(struct SequencePlayer *); /* extern */ - -void func_800C1138(s32 arg0) { - struct SequencePlayer *var_s0; - - var_s0 = gSequencePlayers; - do { - if (((u32) *var_s0 >> 0x1F) == 1) { - func_800C08CC(var_s0); - sequence_player_process_sound(var_s0); +void process_sequences(s32 iterationsRemaining) { + s32 i; + for (i = 0; i < SEQUENCE_PLAYERS; i++) { + if (gSequencePlayers[i].enabled == TRUE) { + sequence_player_process_sequence(&gSequencePlayers[i]); + sequence_player_process_sound(&gSequencePlayers[i]); } - var_s0 += 0x148; - } while (var_s0 != gSequenceChannels); + } process_notes(); } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800C1138.s") -#endif void init_sequence_player(u32 player) { struct SequencePlayer *seqPlayer = &gSequencePlayers[player]; diff --git a/src/audio/seqplayer.h b/src/audio/seqplayer.h index 558278c7b..930140bce 100644 --- a/src/audio/seqplayer.h +++ b/src/audio/seqplayer.h @@ -32,9 +32,11 @@ s16 m64_read_s16(struct M64ScriptState *state); u16 m64_read_compressed_u16(struct M64ScriptState *state); void seq_channel_layer_process_script(struct SequenceChannelLayer *layer); u8 get_instrument(struct SequenceChannel *seqChannel, u8 instId, struct Instrument **instOut, struct AdsrSettings *adsr); +void sequence_player_process_sequence(struct SequencePlayer*); +void process_sequences(s32); void set_instrument(struct SequenceChannel *seqChannel, u8 instId); void sequence_channel_set_volume(struct SequenceChannel *seqChannel, u8 volume); -// void process_sequences(s32 iterationsRemaining); +void sequence_channel_process_script(struct SequenceChannel*); void init_sequence_player(u32 player); void init_sequence_players(void); diff --git a/src/audio/synthesis.c b/src/audio/synthesis.c index 14b907820..d80b31be4 100644 --- a/src/audio/synthesis.c +++ b/src/audio/synthesis.c @@ -1,7 +1,7 @@ #include #include #include "audio/synthesis.h" -//#include "audio/heap.h" +#include "audio/heap.h" //#include "audio/data.h" #include "audio/load.h" //#include "audio/seqplayer.h" @@ -39,12 +39,13 @@ u32 gGfxSPTaskOutputBufferSize; u32 padding3[2]; struct SynthesisReverb gSynthesisReverbs[4]; u8 sAudioSynthesisPad[0x10]; -s16 gVolume; -s8 gUseReverb; -s8 gNumSynthesisReverbs; -struct NoteSubEu *gNoteSubsEu; -f32 gLeftVolRampings; +// s16 gVolume; +// s8 gUseReverb; +// s8 gNumSynthesisReverbs; +// struct NoteSubEu *gNoteSubsEu; + +//f32 gLeftVolRampings; //f32 gRightVolRampings[3][1024]; //f32 *gCurrentLeftVolRamping; // Points to any of the three left buffers above //f32 *gCurrentRightVolRamping; // Points to any of the three right buffers above @@ -160,7 +161,7 @@ void synthesis_load_note_subs_eu(s32 updateIndex) { #ifdef MIPS_TO_C //generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023 Acmd *func_800B775C(s16 *, s32, Acmd *, s32); /* extern */ -? func_800C1138(s16); /* extern */ +? process_sequences(s16); /* extern */ void *func_800B70EC(Acmd *acmd, s32 *writtenCmds, s16 *aiBuf, s32 bufLen) { Acmd *temp_v0; @@ -184,7 +185,7 @@ void *func_800B70EC(Acmd *acmd, s32 *writtenCmds, s16 *aiBuf, s32 bufLen) { if (var_s4 > 0) { do { temp_s0 = var_s4 - 1; - func_800C1138(temp_s0); + process_sequences(temp_s0); synthesis_load_note_subs_eu(gAudioBufferParameters.updatesPerFrame - var_s4); var_s4 = temp_s0; } while (temp_s0 > 0); diff --git a/src/audio/synthesis.h b/src/audio/synthesis.h index ff3ac6c2c..e000cb279 100644 --- a/src/audio/synthesis.h +++ b/src/audio/synthesis.h @@ -97,8 +97,7 @@ extern struct AudioBufferParametersEU gAudioBufferParameters; extern s32 gMaxSimultaneousNotes; extern struct SynthesisReverb gSynthesisReverbs[4]; -extern s8 gNumSynthesisReverbs; -extern struct NoteSubEu *gNoteSubsEu; + /* SO gLeftVolRampings is almost certainly gAudioSessionPool (D_803AFBC8) in disguise, but since