From 86c86c8bcde1ec47f74e45afafc8b9eb8ed4acec Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Thu, 14 Sep 2023 00:36:27 -0400 Subject: [PATCH] Lots of matches in the audio code (#417) * Lots of audio matches Fully matched heap.c, lots of load.c and some stuff in seqplayer.c Matched heap.c's BSS segement and moved some BSS stuff out of load.c into data.c, since that where it appears to belong according to SM64. Signed-off-by: Taggerung --- asm/bss_audio.s | 71 - asm/non_matchings/audio/heap/func_800B93BC.s | 497 ----- asm/non_matchings/audio/heap/func_800B9BE4.s | 273 --- asm/non_matchings/audio/heap/func_800BA00C.s | 170 -- asm/non_matchings/audio/heap/func_800BA250.s | 413 ----- asm/non_matchings/audio/heap/func_800BA858.s | 27 - asm/non_matchings/audio/heap/func_800BA8B0.s | 125 -- asm/non_matchings/audio/load/audio_init.s | 58 +- asm/non_matchings/audio/load/func_800BB584.s | 4 +- asm/non_matchings/audio/load/func_800BB780.s | 60 - asm/non_matchings/audio/load/func_800BB864.s | 81 - asm/non_matchings/audio/load/func_800BB99C.s | 49 - asm/non_matchings/audio/load/func_800BBA50.s | 89 - asm/non_matchings/audio/load/func_800BBCD0.s | 72 - asm/non_matchings/audio/load/func_800BBDDC.s | 75 - asm/non_matchings/audio/load/func_800BBF44.s | 113 -- .../port_eu/create_next_audio_frame_task.s | 50 +- .../audio/port_eu/func_800CB818.s | 135 -- .../audio/port_eu/func_800CBCB0.s | 8 +- .../audio/seqplayer/func_800BEBA4.s | 29 - .../audio/seqplayer/func_800BFD90.s | 875 --------- .../audio/seqplayer/func_800C1138.s | 33 - .../seq_channel_layer_process_script.s | 807 -------- ...C.s => sequence_player_process_sequence.s} | 12 +- .../audio/synthesis/func_800B70EC.s | 2 +- data/data_0DD0A0_2_1_2.s | 33 +- mk64.ld | 3 +- src/audio/data.c | 17 + src/audio/data.h | 23 + src/audio/external.h | 19 + src/audio/heap.c | 940 ++++------ src/audio/heap.h | 38 +- src/audio/internal.h | 37 +- src/audio/load.c | 777 ++++---- src/audio/load.h | 17 +- src/audio/port_eu.c | 197 +- src/audio/port_eu.h | 5 +- src/audio/seqplayer.c | 1647 ++++++++--------- src/audio/seqplayer.h | 4 +- src/audio/synthesis.c | 17 +- src/audio/synthesis.h | 3 +- 41 files changed, 1828 insertions(+), 6077 deletions(-) delete mode 100644 asm/bss_audio.s delete mode 100644 asm/non_matchings/audio/heap/func_800B93BC.s delete mode 100644 asm/non_matchings/audio/heap/func_800B9BE4.s delete mode 100644 asm/non_matchings/audio/heap/func_800BA00C.s delete mode 100644 asm/non_matchings/audio/heap/func_800BA250.s delete mode 100644 asm/non_matchings/audio/heap/func_800BA858.s delete mode 100644 asm/non_matchings/audio/heap/func_800BA8B0.s delete mode 100644 asm/non_matchings/audio/load/func_800BB780.s delete mode 100644 asm/non_matchings/audio/load/func_800BB864.s delete mode 100644 asm/non_matchings/audio/load/func_800BB99C.s delete mode 100644 asm/non_matchings/audio/load/func_800BBA50.s delete mode 100644 asm/non_matchings/audio/load/func_800BBCD0.s delete mode 100644 asm/non_matchings/audio/load/func_800BBDDC.s delete mode 100644 asm/non_matchings/audio/load/func_800BBF44.s delete mode 100644 asm/non_matchings/audio/port_eu/func_800CB818.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BEBA4.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BFD90.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800C1138.s delete mode 100644 asm/non_matchings/audio/seqplayer/seq_channel_layer_process_script.s rename asm/non_matchings/audio/seqplayer/{func_800C08CC.s => sequence_player_process_sequence.s} (98%) 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