diff --git a/asm/non_matchings/code/code_800DDE20/Audio_SoundAlloc.s b/asm/non_matchings/code/audio_heap/Audio_SoundAlloc.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/Audio_SoundAlloc.s rename to asm/non_matchings/code/audio_heap/Audio_SoundAlloc.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DDE20.s b/asm/non_matchings/code/audio_heap/func_800DDE20.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DDE20.s rename to asm/non_matchings/code/audio_heap/func_800DDE20.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DDE3C.s b/asm/non_matchings/code/audio_heap/func_800DDE3C.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DDE3C.s rename to asm/non_matchings/code/audio_heap/func_800DDE3C.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DDF80.s b/asm/non_matchings/code/audio_heap/func_800DDF80.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DDF80.s rename to asm/non_matchings/code/audio_heap/func_800DDF80.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE048.s b/asm/non_matchings/code/audio_heap/func_800DE048.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE048.s rename to asm/non_matchings/code/audio_heap/func_800DE048.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE12C.s b/asm/non_matchings/code/audio_heap/func_800DE12C.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE12C.s rename to asm/non_matchings/code/audio_heap/func_800DE12C.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE1B4.s b/asm/non_matchings/code/audio_heap/func_800DE1B4.s similarity index 96% rename from asm/non_matchings/code/code_800DDE20/func_800DE1B4.s rename to asm/non_matchings/code/audio_heap/func_800DE1B4.s index fbc18181e8..9727bc14b3 100644 --- a/asm/non_matchings/code/code_800DDE20/func_800DE1B4.s +++ b/asm/non_matchings/code/audio_heap/func_800DE1B4.s @@ -19,7 +19,7 @@ glabel func_800DE1B4 /* B55394 800DE1F4 92183534 */ lbu $t8, 0x3534($s0) /* B55398 800DE1F8 56580006 */ bnel $s2, $t8, .L800DE214 /* B5539C 800DE1FC 26310001 */ addiu $s1, $s1, 1 -/* B553A0 800DE200 0C03A6DB */ jal func_800E9B6C +/* B553A0 800DE200 0C03A6DB */ jal Audio_SequencePlayerDisable /* B553A4 800DE204 26043530 */ addiu $a0, $s0, 0x3530 /* B553A8 800DE208 3C028017 */ lui $v0, %hi(D_801719DC) # $v0, 0x8017 /* B553AC 800DE20C 844219DC */ lh $v0, %lo(D_801719DC)($v0) diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE238.s b/asm/non_matchings/code/audio_heap/func_800DE238.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE238.s rename to asm/non_matchings/code/audio_heap/func_800DE238.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE258.s b/asm/non_matchings/code/audio_heap/func_800DE258.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE258.s rename to asm/non_matchings/code/audio_heap/func_800DE258.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE2B0.s b/asm/non_matchings/code/audio_heap/func_800DE2B0.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE2B0.s rename to asm/non_matchings/code/audio_heap/func_800DE2B0.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE344.s b/asm/non_matchings/code/audio_heap/func_800DE344.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE344.s rename to asm/non_matchings/code/audio_heap/func_800DE344.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE380.s b/asm/non_matchings/code/audio_heap/func_800DE380.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE380.s rename to asm/non_matchings/code/audio_heap/func_800DE380.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE3DC.s b/asm/non_matchings/code/audio_heap/func_800DE3DC.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE3DC.s rename to asm/non_matchings/code/audio_heap/func_800DE3DC.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE434.s b/asm/non_matchings/code/audio_heap/func_800DE434.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE434.s rename to asm/non_matchings/code/audio_heap/func_800DE434.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE45C.s b/asm/non_matchings/code/audio_heap/func_800DE45C.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE45C.s rename to asm/non_matchings/code/audio_heap/func_800DE45C.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE470.s b/asm/non_matchings/code/audio_heap/func_800DE470.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE470.s rename to asm/non_matchings/code/audio_heap/func_800DE470.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE4A0.s b/asm/non_matchings/code/audio_heap/func_800DE4A0.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE4A0.s rename to asm/non_matchings/code/audio_heap/func_800DE4A0.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE4B0.s b/asm/non_matchings/code/audio_heap/func_800DE4B0.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE4B0.s rename to asm/non_matchings/code/audio_heap/func_800DE4B0.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE5F0.s b/asm/non_matchings/code/audio_heap/func_800DE5F0.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE5F0.s rename to asm/non_matchings/code/audio_heap/func_800DE5F0.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE650.s b/asm/non_matchings/code/audio_heap/func_800DE650.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE650.s rename to asm/non_matchings/code/audio_heap/func_800DE650.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE6D4.s b/asm/non_matchings/code/audio_heap/func_800DE6D4.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE6D4.s rename to asm/non_matchings/code/audio_heap/func_800DE6D4.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE758.s b/asm/non_matchings/code/audio_heap/func_800DE758.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE758.s rename to asm/non_matchings/code/audio_heap/func_800DE758.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE81C.s b/asm/non_matchings/code/audio_heap/func_800DE81C.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE81C.s rename to asm/non_matchings/code/audio_heap/func_800DE81C.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DE8E0.s b/asm/non_matchings/code/audio_heap/func_800DE8E0.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DE8E0.s rename to asm/non_matchings/code/audio_heap/func_800DE8E0.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DF074.s b/asm/non_matchings/code/audio_heap/func_800DF074.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DF074.s rename to asm/non_matchings/code/audio_heap/func_800DF074.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DF0CC.s b/asm/non_matchings/code/audio_heap/func_800DF0CC.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DF0CC.s rename to asm/non_matchings/code/audio_heap/func_800DF0CC.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DF1D8.s b/asm/non_matchings/code/audio_heap/func_800DF1D8.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DF1D8.s rename to asm/non_matchings/code/audio_heap/func_800DF1D8.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DF5AC.s b/asm/non_matchings/code/audio_heap/func_800DF5AC.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DF5AC.s rename to asm/non_matchings/code/audio_heap/func_800DF5AC.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DF5DC.s b/asm/non_matchings/code/audio_heap/func_800DF5DC.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DF5DC.s rename to asm/non_matchings/code/audio_heap/func_800DF5DC.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DF630.s b/asm/non_matchings/code/audio_heap/func_800DF630.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DF630.s rename to asm/non_matchings/code/audio_heap/func_800DF630.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DF688.s b/asm/non_matchings/code/audio_heap/func_800DF688.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DF688.s rename to asm/non_matchings/code/audio_heap/func_800DF688.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DF7BC.s b/asm/non_matchings/code/audio_heap/func_800DF7BC.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DF7BC.s rename to asm/non_matchings/code/audio_heap/func_800DF7BC.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DF7C4.s b/asm/non_matchings/code/audio_heap/func_800DF7C4.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DF7C4.s rename to asm/non_matchings/code/audio_heap/func_800DF7C4.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DF888.s b/asm/non_matchings/code/audio_heap/func_800DF888.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DF888.s rename to asm/non_matchings/code/audio_heap/func_800DF888.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DF8F4.s b/asm/non_matchings/code/audio_heap/func_800DF8F4.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DF8F4.s rename to asm/non_matchings/code/audio_heap/func_800DF8F4.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800DFBF8.s b/asm/non_matchings/code/audio_heap/func_800DFBF8.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800DFBF8.s rename to asm/non_matchings/code/audio_heap/func_800DFBF8.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E04E8.s b/asm/non_matchings/code/audio_heap/func_800E04E8.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E04E8.s rename to asm/non_matchings/code/audio_heap/func_800E04E8.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0540.s b/asm/non_matchings/code/audio_heap/func_800E0540.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0540.s rename to asm/non_matchings/code/audio_heap/func_800E0540.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E05C4.s b/asm/non_matchings/code/audio_heap/func_800E05C4.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E05C4.s rename to asm/non_matchings/code/audio_heap/func_800E05C4.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0634.s b/asm/non_matchings/code/audio_heap/func_800E0634.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0634.s rename to asm/non_matchings/code/audio_heap/func_800E0634.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E06CC.s b/asm/non_matchings/code/audio_heap/func_800E06CC.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E06CC.s rename to asm/non_matchings/code/audio_heap/func_800E06CC.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0964.s b/asm/non_matchings/code/audio_heap/func_800E0964.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0964.s rename to asm/non_matchings/code/audio_heap/func_800E0964.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0AD8.s b/asm/non_matchings/code/audio_heap/func_800E0AD8.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0AD8.s rename to asm/non_matchings/code/audio_heap/func_800E0AD8.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0BB4.s b/asm/non_matchings/code/audio_heap/func_800E0BB4.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0BB4.s rename to asm/non_matchings/code/audio_heap/func_800E0BB4.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0BF8.s b/asm/non_matchings/code/audio_heap/func_800E0BF8.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0BF8.s rename to asm/non_matchings/code/audio_heap/func_800E0BF8.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0C80.s b/asm/non_matchings/code/audio_heap/func_800E0C80.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0C80.s rename to asm/non_matchings/code/audio_heap/func_800E0C80.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0CBC.s b/asm/non_matchings/code/audio_heap/func_800E0CBC.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0CBC.s rename to asm/non_matchings/code/audio_heap/func_800E0CBC.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0E0C.s b/asm/non_matchings/code/audio_heap/func_800E0E0C.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0E0C.s rename to asm/non_matchings/code/audio_heap/func_800E0E0C.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0E6C.s b/asm/non_matchings/code/audio_heap/func_800E0E6C.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0E6C.s rename to asm/non_matchings/code/audio_heap/func_800E0E6C.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0E90.s b/asm/non_matchings/code/audio_heap/func_800E0E90.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0E90.s rename to asm/non_matchings/code/audio_heap/func_800E0E90.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E0EB4.s b/asm/non_matchings/code/audio_heap/func_800E0EB4.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E0EB4.s rename to asm/non_matchings/code/audio_heap/func_800E0EB4.s diff --git a/asm/non_matchings/code/code_800DDE20/func_800E1148.s b/asm/non_matchings/code/audio_heap/func_800E1148.s similarity index 100% rename from asm/non_matchings/code/code_800DDE20/func_800E1148.s rename to asm/non_matchings/code/audio_heap/func_800E1148.s diff --git a/asm/non_matchings/code/audio_playback/Audio_ProcessNotes.s b/asm/non_matchings/code/audio_playback/Audio_ProcessNotes.s deleted file mode 100644 index 54f6ebc243..0000000000 --- a/asm/non_matchings/code/audio_playback/Audio_ProcessNotes.s +++ /dev/null @@ -1,336 +0,0 @@ -glabel Audio_ProcessNotes -/* B5E12C 800E6F8C 27BDFF60 */ addiu $sp, $sp, -0xa0 -/* B5E130 800E6F90 AFB40028 */ sw $s4, 0x28($sp) -/* B5E134 800E6F94 3C148017 */ lui $s4, %hi(gAudioContext) -/* B5E138 800E6F98 2694F180 */ addiu $s4, %lo(gAudioContext) -/* B5E13C 800E6F9C 8E822894 */ lw $v0, 0x2894($s4) -/* B5E140 800E6FA0 AFB5002C */ sw $s5, 0x2c($sp) -/* B5E144 800E6FA4 AFBF003C */ sw $ra, 0x3c($sp) -/* B5E148 800E6FA8 AFBE0038 */ sw $fp, 0x38($sp) -/* B5E14C 800E6FAC AFB70034 */ sw $s7, 0x34($sp) -/* B5E150 800E6FB0 AFB60030 */ sw $s6, 0x30($sp) -/* B5E154 800E6FB4 AFB30024 */ sw $s3, 0x24($sp) -/* B5E158 800E6FB8 AFB20020 */ sw $s2, 0x20($sp) -/* B5E15C 800E6FBC AFB1001C */ sw $s1, 0x1c($sp) -/* B5E160 800E6FC0 AFB00018 */ sw $s0, 0x18($sp) -/* B5E164 800E6FC4 18400119 */ blez $v0, .L800E742C -/* B5E168 800E6FC8 0000A825 */ move $s5, $zero -/* B5E16C 800E6FCC 0000B825 */ move $s7, $zero -/* B5E170 800E6FD0 27BE006F */ addiu $fp, $sp, 0x6f -/* B5E174 800E6FD4 24160001 */ li $s6, 1 -/* B5E178 800E6FD8 2413FFFF */ li $s3, -1 -.L800E6FDC: -/* B5E17C 800E6FDC 8E8F5B84 */ lw $t7, 0x5b84($s4) -/* B5E180 800E6FE0 8E880014 */ lw $t0, 0x14($s4) -/* B5E184 800E6FE4 8E8E352C */ lw $t6, 0x352c($s4) -/* B5E188 800E6FE8 01F5C021 */ addu $t8, $t7, $s5 -/* B5E18C 800E6FEC 0018C940 */ sll $t9, $t8, 5 -/* B5E190 800E6FF0 03284821 */ addu $t1, $t9, $t0 -/* B5E194 800E6FF4 AFA90090 */ sw $t1, 0x90($sp) -/* B5E198 800E6FF8 02EE8821 */ addu $s1, $s7, $t6 -/* B5E19C 800E6FFC 8E2A0044 */ lw $t2, 0x44($s1) -/* B5E1A0 800E7000 26300030 */ addiu $s0, $s1, 0x30 -/* B5E1A4 800E7004 526A0043 */ beql $s3, $t2, .L800E7114 -/* B5E1A8 800E7008 92190004 */ lbu $t9, 4($s0) -/* B5E1AC 800E700C 26300030 */ addiu $s0, $s1, 0x30 -/* B5E1B0 800E7010 8E040014 */ lw $a0, 0x14($s0) -/* B5E1B4 800E7014 3C017FFF */ li $at, 0x7FFF0000 # 0.000000 -/* B5E1B8 800E7018 3421FFFF */ ori $at, (0x7FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5E1BC 800E701C 0081082B */ sltu $at, $a0, $at -/* B5E1C0 800E7020 542000FF */ bnezl $at, .L800E7420 -/* B5E1C4 800E7024 26B50001 */ addiu $s5, $s5, 1 -/* B5E1C8 800E7028 8C8B002C */ lw $t3, 0x2c($a0) -/* B5E1CC 800E702C 522B000F */ beql $s1, $t3, .L800E706C -/* B5E1D0 800E7030 8C990000 */ lw $t9, ($a0) -/* B5E1D4 800E7034 920C0004 */ lbu $t4, 4($s0) -/* B5E1D8 800E7038 5580000C */ bnezl $t4, .L800E706C -/* B5E1DC 800E703C 8C990000 */ lw $t9, ($a0) -/* B5E1E0 800E7040 920E0040 */ lbu $t6, 0x40($s0) -/* B5E1E4 800E7044 24180002 */ li $t8, 2 -/* B5E1E8 800E7048 32C200FF */ andi $v0, $s6, 0xff -/* B5E1EC 800E704C 35CF0010 */ ori $t7, $t6, 0x10 -/* B5E1F0 800E7050 A20F0040 */ sb $t7, 0x40($s0) -/* B5E1F4 800E7054 C6842864 */ lwc1 $f4, 0x2864($s4) -/* B5E1F8 800E7058 A2160000 */ sb $s6, ($s0) -/* B5E1FC 800E705C A2180004 */ sb $t8, 4($s0) -/* B5E200 800E7060 10000032 */ b .L800E712C -/* B5E204 800E7064 E604004C */ swc1 $f4, 0x4c($s0) -/* B5E208 800E7068 8C990000 */ lw $t9, ($a0) -.L800E706C: -/* B5E20C 800E706C 001947C2 */ srl $t0, $t9, 0x1f -/* B5E210 800E7070 55000008 */ bnezl $t0, .L800E7094 -/* B5E214 800E7074 8C850050 */ lw $a1, 0x50($a0) -/* B5E218 800E7078 92090004 */ lbu $t1, 4($s0) -/* B5E21C 800E707C 55200005 */ bnezl $t1, .L800E7094 -/* B5E220 800E7080 8C850050 */ lw $a1, 0x50($a0) -/* B5E224 800E7084 920A0000 */ lbu $t2, ($s0) -/* B5E228 800E7088 1D400015 */ bgtz $t2, .L800E70E0 -/* B5E22C 800E708C 00000000 */ nop -/* B5E230 800E7090 8C850050 */ lw $a1, 0x50($a0) -.L800E7094: -/* B5E234 800E7094 8CA2004C */ lw $v0, 0x4c($a1) -/* B5E238 800E7098 54400008 */ bnezl $v0, .L800E70BC -/* B5E23C 800E709C 8C4B0000 */ lw $t3, ($v0) -/* B5E240 800E70A0 0C03A632 */ jal func_800E98C8 -/* B5E244 800E70A4 00A02025 */ move $a0, $a1 -/* B5E248 800E70A8 A2160000 */ sb $s6, ($s0) -/* B5E24C 800E70AC A2160004 */ sb $s6, 4($s0) -/* B5E250 800E70B0 100000DA */ b .L800E741C -/* B5E254 800E70B4 8E822894 */ lw $v0, 0x2894($s4) -/* B5E258 800E70B8 8C4B0000 */ lw $t3, ($v0) -.L800E70BC: -/* B5E25C 800E70BC 000B6880 */ sll $t5, $t3, 2 -/* B5E260 800E70C0 05A10005 */ bgez $t5, .L800E70D8 -/* B5E264 800E70C4 00000000 */ nop -/* B5E268 800E70C8 90AE0003 */ lbu $t6, 3($a1) -/* B5E26C 800E70CC 31CF0040 */ andi $t7, $t6, 0x40 -/* B5E270 800E70D0 15E00003 */ bnez $t7, .L800E70E0 -/* B5E274 800E70D4 00000000 */ nop -.L800E70D8: -/* B5E278 800E70D8 10000014 */ b .L800E712C -/* B5E27C 800E70DC 92020000 */ lbu $v0, ($s0) -.L800E70E0: -/* B5E280 800E70E0 0C039EE0 */ jal Audio_SeqChanLayerNoteRelease -/* B5E284 800E70E4 00000000 */ nop -/* B5E288 800E70E8 0C03A037 */ jal Audio_AudioListRemove -/* B5E28C 800E70EC 02202025 */ move $a0, $s1 -/* B5E290 800E70F0 8E24000C */ lw $a0, 0xc($s1) -/* B5E294 800E70F4 02202825 */ move $a1, $s1 -/* B5E298 800E70F8 0C03A027 */ jal Audio_AudioListPushFront -/* B5E29C 800E70FC 24840010 */ addiu $a0, $a0, 0x10 -/* B5E2A0 800E7100 24180002 */ li $t8, 2 -/* B5E2A4 800E7104 A2160000 */ sb $s6, ($s0) -/* B5E2A8 800E7108 10000007 */ b .L800E7128 -/* B5E2AC 800E710C A2180004 */ sb $t8, 4($s0) -/* B5E2B0 800E7110 92190004 */ lbu $t9, 4($s0) -.L800E7114: -/* B5E2B4 800E7114 57200005 */ bnezl $t9, .L800E712C -/* B5E2B8 800E7118 92020000 */ lbu $v0, ($s0) -/* B5E2BC 800E711C 92080000 */ lbu $t0, ($s0) -/* B5E2C0 800E7120 5D0000BF */ bgtzl $t0, .L800E7420 -/* B5E2C4 800E7124 26B50001 */ addiu $s5, $s5, 1 -.L800E7128: -/* B5E2C8 800E7128 92020000 */ lbu $v0, ($s0) -.L800E712C: -/* B5E2CC 800E712C 504000BB */ beql $v0, $zero, .L800E741C -/* B5E2D0 800E7130 8E822894 */ lw $v0, 0x2894($s4) -/* B5E2D4 800E7134 92020004 */ lbu $v0, 4($s0) -/* B5E2D8 800E7138 263200C0 */ addiu $s2, $s1, 0xc0 -/* B5E2DC 800E713C 5C400006 */ bgtzl $v0, .L800E7158 -/* B5E2E0 800E7140 920C0040 */ lbu $t4, 0x40($s0) -/* B5E2E4 800E7144 8E490000 */ lw $t1, ($s2) -/* B5E2E8 800E7148 00095880 */ sll $t3, $t1, 2 -/* B5E2EC 800E714C 0563003B */ bgezl $t3, .L800E723C -/* B5E2F0 800E7150 920C0040 */ lbu $t4, 0x40($s0) -/* B5E2F4 800E7154 920C0040 */ lbu $t4, 0x40($s0) -.L800E7158: -/* B5E2F8 800E7158 263200C0 */ addiu $s2, $s1, 0xc0 -/* B5E2FC 800E715C 318D000F */ andi $t5, $t4, 0xf -/* B5E300 800E7160 51A00006 */ beql $t5, $zero, .L800E717C -/* B5E304 800E7164 8E190018 */ lw $t9, 0x18($s0) -/* B5E308 800E7168 8E4E0000 */ lw $t6, ($s2) -/* B5E30C 800E716C 000EC080 */ sll $t8, $t6, 2 -/* B5E310 800E7170 07010044 */ bgez $t8, .L800E7284 -/* B5E314 800E7174 00000000 */ nop -/* B5E318 800E7178 8E190018 */ lw $t9, 0x18($s0) -.L800E717C: -/* B5E31C 800E717C 52790020 */ beql $s3, $t9, .L800E7200 -/* B5E320 800E7180 8E040014 */ lw $a0, 0x14($s0) -/* B5E324 800E7184 0C039BCA */ jal Audio_NoteDisable -/* B5E328 800E7188 02202025 */ move $a0, $s1 -/* B5E32C 800E718C 8E050018 */ lw $a1, 0x18($s0) -/* B5E330 800E7190 02202025 */ move $a0, $s1 -/* B5E334 800E7194 8CA80050 */ lw $t0, 0x50($a1) -/* B5E338 800E7198 1100000F */ beqz $t0, .L800E71D8 -/* B5E33C 800E719C 00000000 */ nop -/* B5E340 800E71A0 0C03A062 */ jal Audio_NoteInitForLayer -/* B5E344 800E71A4 263200C0 */ addiu $s2, $s1, 0xc0 -/* B5E348 800E71A8 0C03A3C0 */ jal func_800E8F00 -/* B5E34C 800E71AC 02202025 */ move $a0, $s1 -/* B5E350 800E71B0 0C03A3EE */ jal func_800E8FB8 -/* B5E354 800E71B4 02202025 */ move $a0, $s1 -/* B5E358 800E71B8 0C03A037 */ jal Audio_AudioListRemove -/* B5E35C 800E71BC 02202025 */ move $a0, $s1 -/* B5E360 800E71C0 8E24000C */ lw $a0, 0xc($s1) -/* B5E364 800E71C4 02202825 */ move $a1, $s1 -/* B5E368 800E71C8 0C03A70A */ jal Audio_AudioListPushBack -/* B5E36C 800E71CC 24840030 */ addiu $a0, $a0, 0x30 -/* B5E370 800E71D0 1000002C */ b .L800E7284 -/* B5E374 800E71D4 AE130018 */ sw $s3, 0x18($s0) -.L800E71D8: -/* B5E378 800E71D8 0C039BCA */ jal Audio_NoteDisable -/* B5E37C 800E71DC 02202025 */ move $a0, $s1 -/* B5E380 800E71E0 0C03A037 */ jal Audio_AudioListRemove -/* B5E384 800E71E4 02202025 */ move $a0, $s1 -/* B5E388 800E71E8 8E24000C */ lw $a0, 0xc($s1) -/* B5E38C 800E71EC 0C03A70A */ jal Audio_AudioListPushBack -/* B5E390 800E71F0 02202825 */ move $a1, $s1 -/* B5E394 800E71F4 10000088 */ b .L800E7418 -/* B5E398 800E71F8 AE130018 */ sw $s3, 0x18($s0) -/* B5E39C 800E71FC 8E040014 */ lw $a0, 0x14($s0) -.L800E7200: -/* B5E3A0 800E7200 12640004 */ beq $s3, $a0, .L800E7214 -/* B5E3A4 800E7204 00000000 */ nop -/* B5E3A8 800E7208 908A0000 */ lbu $t2, ($a0) -/* B5E3AC 800E720C 354B0002 */ ori $t3, $t2, 2 -/* B5E3B0 800E7210 A08B0000 */ sb $t3, ($a0) -.L800E7214: -/* B5E3B4 800E7214 0C039BCA */ jal Audio_NoteDisable -/* B5E3B8 800E7218 02202025 */ move $a0, $s1 -/* B5E3BC 800E721C 0C03A037 */ jal Audio_AudioListRemove -/* B5E3C0 800E7220 02202025 */ move $a0, $s1 -/* B5E3C4 800E7224 8E24000C */ lw $a0, 0xc($s1) -/* B5E3C8 800E7228 0C03A70A */ jal Audio_AudioListPushBack -/* B5E3CC 800E722C 02202825 */ move $a1, $s1 -/* B5E3D0 800E7230 1000007A */ b .L800E741C -/* B5E3D4 800E7234 8E822894 */ lw $v0, 0x2894($s4) -/* B5E3D8 800E7238 920C0040 */ lbu $t4, 0x40($s0) -.L800E723C: -/* B5E3DC 800E723C 318D000F */ andi $t5, $t4, 0xf -/* B5E3E0 800E7240 15A00010 */ bnez $t5, .L800E7284 -/* B5E3E4 800E7244 00000000 */ nop -/* B5E3E8 800E7248 8E040014 */ lw $a0, 0x14($s0) -/* B5E3EC 800E724C 12640004 */ beq $s3, $a0, .L800E7260 -/* B5E3F0 800E7250 00000000 */ nop -/* B5E3F4 800E7254 908F0000 */ lbu $t7, ($a0) -/* B5E3F8 800E7258 35F80002 */ ori $t8, $t7, 2 -/* B5E3FC 800E725C A0980000 */ sb $t8, ($a0) -.L800E7260: -/* B5E400 800E7260 0C039BCA */ jal Audio_NoteDisable -/* B5E404 800E7264 02202025 */ move $a0, $s1 -/* B5E408 800E7268 0C03A037 */ jal Audio_AudioListRemove -/* B5E40C 800E726C 02202025 */ move $a0, $s1 -/* B5E410 800E7270 8E24000C */ lw $a0, 0xc($s1) -/* B5E414 800E7274 0C03A70A */ jal Audio_AudioListPushBack -/* B5E418 800E7278 02202825 */ move $a1, $s1 -/* B5E41C 800E727C 10000067 */ b .L800E741C -/* B5E420 800E7280 8E822894 */ lw $v0, 0x2894($s4) -.L800E7284: -/* B5E424 800E7284 0C03A401 */ jal func_800E9004 -/* B5E428 800E7288 26040040 */ addiu $a0, $s0, 0x40 -/* B5E42C 800E728C E7A00064 */ swc1 $f0, 0x64($sp) -/* B5E430 800E7290 0C03A3A9 */ jal func_800E8EA4 -/* B5E434 800E7294 02202025 */ move $a0, $s1 -/* B5E438 800E7298 92020004 */ lbu $v0, 4($s0) -/* B5E43C 800E729C 24010001 */ li $at, 1 -/* B5E440 800E72A0 10410002 */ beq $v0, $at, .L800E72AC -/* B5E444 800E72A4 24010002 */ li $at, 2 -/* B5E448 800E72A8 14410018 */ bne $v0, $at, .L800E730C -.L800E72AC: -/* B5E44C 800E72AC 2602001C */ addiu $v0, $s0, 0x1c -/* B5E450 800E72B0 C4460008 */ lwc1 $f6, 8($v0) -/* B5E454 800E72B4 E7A60070 */ swc1 $f6, 0x70($sp) -/* B5E458 800E72B8 C448000C */ lwc1 $f8, 0xc($v0) -/* B5E45C 800E72BC E7A80074 */ swc1 $f8, 0x74($sp) -/* B5E460 800E72C0 90590002 */ lbu $t9, 2($v0) -/* B5E464 800E72C4 A3B9006E */ sb $t9, 0x6e($sp) -/* B5E468 800E72C8 90480000 */ lbu $t0, ($v0) -/* B5E46C 800E72CC A3A8006C */ sb $t0, 0x6c($sp) -/* B5E470 800E72D0 904A0003 */ lbu $t2, 3($v0) -/* B5E474 800E72D4 A3CA0000 */ sb $t2, ($fp) -/* B5E478 800E72D8 904B0001 */ lbu $t3, 1($v0) -/* B5E47C 800E72DC A3AB006D */ sb $t3, 0x6d($sp) -/* B5E480 800E72E0 8C4C0010 */ lw $t4, 0x10($v0) -/* B5E484 800E72E4 AFAC007C */ sw $t4, 0x7c($sp) -/* B5E488 800E72E8 904D0004 */ lbu $t5, 4($v0) -/* B5E48C 800E72EC A3AD0080 */ sb $t5, 0x80($sp) -/* B5E490 800E72F0 944E0006 */ lhu $t6, 6($v0) -/* B5E494 800E72F4 A7AE0082 */ sh $t6, 0x82($sp) -/* B5E498 800E72F8 8E430000 */ lw $v1, ($s2) -/* B5E49C 800E72FC 00031AC0 */ sll $v1, $v1, 0xb -/* B5E4A0 800E7300 00031F82 */ srl $v1, $v1, 0x1e -/* B5E4A4 800E7304 1000002B */ b .L800E73B4 -/* B5E4A8 800E7308 306300FF */ andi $v1, $v1, 0xff -.L800E730C: -/* B5E4AC 800E730C 8E030014 */ lw $v1, 0x14($s0) -/* B5E4B0 800E7310 C46A0044 */ lwc1 $f10, 0x44($v1) -/* B5E4B4 800E7314 8C620050 */ lw $v0, 0x50($v1) -/* B5E4B8 800E7318 E7AA0070 */ swc1 $f10, 0x70($sp) -/* B5E4BC 800E731C C4700040 */ lwc1 $f16, 0x40($v1) -/* B5E4C0 800E7320 E7B00074 */ swc1 $f16, 0x74($sp) -/* B5E4C4 800E7324 906F0007 */ lbu $t7, 7($v1) -/* B5E4C8 800E7328 A3AF006E */ sb $t7, 0x6e($sp) -/* B5E4CC 800E732C 90780001 */ lbu $t8, 1($v1) -/* B5E4D0 800E7330 57000005 */ bnezl $t8, .L800E7348 -/* B5E4D4 800E7334 906A0001 */ lbu $t2, 1($v1) -/* B5E4D8 800E7338 904800D0 */ lbu $t0, 0xd0($v0) -/* B5E4DC 800E733C 10000003 */ b .L800E734C -/* B5E4E0 800E7340 A3C80000 */ sb $t0, ($fp) -/* B5E4E4 800E7344 906A0001 */ lbu $t2, 1($v1) -.L800E7348: -/* B5E4E8 800E7348 A3CA0000 */ sb $t2, ($fp) -.L800E734C: -/* B5E4EC 800E734C 904B0004 */ lbu $t3, 4($v0) -/* B5E4F0 800E7350 A3AB006C */ sb $t3, 0x6c($sp) -/* B5E4F4 800E7354 904C000C */ lbu $t4, 0xc($v0) -/* B5E4F8 800E7358 A3AC006D */ sb $t4, 0x6d($sp) -/* B5E4FC 800E735C 8C4D00CC */ lw $t5, 0xcc($v0) -/* B5E500 800E7360 AFAD007C */ sw $t5, 0x7c($sp) -/* B5E504 800E7364 904E000F */ lbu $t6, 0xf($v0) -/* B5E508 800E7368 A3AE0080 */ sb $t6, 0x80($sp) -/* B5E50C 800E736C 944F0020 */ lhu $t7, 0x20($v0) -/* B5E510 800E7370 A7AF0082 */ sh $t7, 0x82($sp) -/* B5E514 800E7374 8C58004C */ lw $t8, 0x4c($v0) -/* B5E518 800E7378 90430009 */ lbu $v1, 9($v0) -/* B5E51C 800E737C 8F190000 */ lw $t9, ($t8) -/* B5E520 800E7380 30630007 */ andi $v1, $v1, 7 -/* B5E524 800E7384 306300FF */ andi $v1, $v1, 0xff -/* B5E528 800E7388 00194880 */ sll $t1, $t9, 2 -/* B5E52C 800E738C 0523000A */ bgezl $t1, .L800E73B8 -/* B5E530 800E7390 C606000C */ lwc1 $f6, 0xc($s0) -/* B5E534 800E7394 904A0003 */ lbu $t2, 3($v0) -/* B5E538 800E7398 314B0008 */ andi $t3, $t2, 8 -/* B5E53C 800E739C 51600006 */ beql $t3, $zero, .L800E73B8 -/* B5E540 800E73A0 C606000C */ lwc1 $f6, 0xc($s0) -/* B5E544 800E73A4 44809000 */ mtc1 $zero, $f18 -/* B5E548 800E73A8 44802000 */ mtc1 $zero, $f4 -/* B5E54C 800E73AC E7B20070 */ swc1 $f18, 0x70($sp) -/* B5E550 800E73B0 E7A40074 */ swc1 $f4, 0x74($sp) -.L800E73B4: -/* B5E554 800E73B4 C606000C */ lwc1 $f6, 0xc($s0) -.L800E73B8: -/* B5E558 800E73B8 C6080008 */ lwc1 $f8, 8($s0) -/* B5E55C 800E73BC C7B00070 */ lwc1 $f16, 0x70($sp) -/* B5E560 800E73C0 C6842860 */ lwc1 $f4, 0x2860($s4) -/* B5E564 800E73C4 46083282 */ mul.s $f10, $f6, $f8 -/* B5E568 800E73C8 C7A80074 */ lwc1 $f8, 0x74($sp) -/* B5E56C 800E73CC A3A3006B */ sb $v1, 0x6b($sp) -/* B5E570 800E73D0 02202025 */ move $a0, $s1 -/* B5E574 800E73D4 8FA50090 */ lw $a1, 0x90($sp) -/* B5E578 800E73D8 27A6006C */ addiu $a2, $sp, 0x6c -/* B5E57C 800E73DC 460A8482 */ mul.s $f18, $f16, $f10 -/* B5E580 800E73E0 C7B00064 */ lwc1 $f16, 0x64($sp) -/* B5E584 800E73E4 46049182 */ mul.s $f6, $f18, $f4 -/* B5E588 800E73E8 E7B20070 */ swc1 $f18, 0x70($sp) -/* B5E58C 800E73EC 46104282 */ mul.s $f10, $f8, $f16 -/* B5E590 800E73F0 E7A60070 */ swc1 $f6, 0x70($sp) -/* B5E594 800E73F4 0C039A50 */ jal Audio_NoteSetVelPanReverb -/* B5E598 800E73F8 E7AA0074 */ swc1 $f10, 0x74($sp) -/* B5E59C 800E73FC 93AC006B */ lbu $t4, 0x6b($sp) -/* B5E5A0 800E7400 924F0001 */ lbu $t7, 1($s2) -/* B5E5A4 800E7404 000C68C0 */ sll $t5, $t4, 3 -/* B5E5A8 800E7408 31AE0018 */ andi $t6, $t5, 0x18 -/* B5E5AC 800E740C 31F8FFE7 */ andi $t8, $t7, 0xffe7 -/* B5E5B0 800E7410 01D8C825 */ or $t9, $t6, $t8 -/* B5E5B4 800E7414 A2590001 */ sb $t9, 1($s2) -.L800E7418: -/* B5E5B8 800E7418 8E822894 */ lw $v0, 0x2894($s4) -.L800E741C: -/* B5E5BC 800E741C 26B50001 */ addiu $s5, $s5, 1 -.L800E7420: -/* B5E5C0 800E7420 02A2082A */ slt $at, $s5, $v0 -/* B5E5C4 800E7424 1420FEED */ bnez $at, .L800E6FDC -/* B5E5C8 800E7428 26F700E0 */ addiu $s7, $s7, 0xe0 -.L800E742C: -/* B5E5CC 800E742C 8FBF003C */ lw $ra, 0x3c($sp) -/* B5E5D0 800E7430 8FB00018 */ lw $s0, 0x18($sp) -/* B5E5D4 800E7434 8FB1001C */ lw $s1, 0x1c($sp) -/* B5E5D8 800E7438 8FB20020 */ lw $s2, 0x20($sp) -/* B5E5DC 800E743C 8FB30024 */ lw $s3, 0x24($sp) -/* B5E5E0 800E7440 8FB40028 */ lw $s4, 0x28($sp) -/* B5E5E4 800E7444 8FB5002C */ lw $s5, 0x2c($sp) -/* B5E5E8 800E7448 8FB60030 */ lw $s6, 0x30($sp) -/* B5E5EC 800E744C 8FB70034 */ lw $s7, 0x34($sp) -/* B5E5F0 800E7450 8FBE0038 */ lw $fp, 0x38($sp) -/* B5E5F4 800E7454 03E00008 */ jr $ra -/* B5E5F8 800E7458 27BD00A0 */ addiu $sp, $sp, 0xa0 diff --git a/asm/non_matchings/code/audio_playback/Audio_SeqChanLayerDecayRelease.s b/asm/non_matchings/code/audio_playback/Audio_SeqChanLayerDecayRelease.s deleted file mode 100644 index 1cbae5ff67..0000000000 --- a/asm/non_matchings/code/audio_playback/Audio_SeqChanLayerDecayRelease.s +++ /dev/null @@ -1,199 +0,0 @@ -glabel Audio_SeqChanLayerDecayRelease -/* B5EA28 800E7888 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* B5EA2C 800E788C AFB00018 */ sw $s0, 0x18($sp) -/* B5EA30 800E7890 2408FFFF */ li $t0, -1 -/* B5EA34 800E7894 00808025 */ move $s0, $a0 -/* B5EA38 800E7898 AFBF001C */ sw $ra, 0x1c($sp) -/* B5EA3C 800E789C 108800AB */ beq $a0, $t0, .L800E7B4C -/* B5EA40 800E78A0 AFA5002C */ sw $a1, 0x2c($sp) -/* B5EA44 800E78A4 908E0000 */ lbu $t6, ($a0) -/* B5EA48 800E78A8 8C82002C */ lw $v0, 0x2c($a0) -/* B5EA4C 800E78AC 31CFFFF7 */ andi $t7, $t6, 0xfff7 -/* B5EA50 800E78B0 104000A6 */ beqz $v0, .L800E7B4C -/* B5EA54 800E78B4 A08F0000 */ sb $t7, ($a0) -/* B5EA58 800E78B8 8C580048 */ lw $t8, 0x48($v0) -/* B5EA5C 800E78BC 00403025 */ move $a2, $v0 -/* B5EA60 800E78C0 54980003 */ bnel $a0, $t8, .L800E78D0 -/* B5EA64 800E78C4 8CC20044 */ lw $v0, 0x44($a2) -/* B5EA68 800E78C8 AC480048 */ sw $t0, 0x48($v0) -/* B5EA6C 800E78CC 8CC20044 */ lw $v0, 0x44($a2) -.L800E78D0: -/* B5EA70 800E78D0 52020014 */ beql $s0, $v0, .L800E7924 -/* B5EA74 800E78D4 90CF0070 */ lbu $t7, 0x70($a2) -/* B5EA78 800E78D8 5502009D */ bnel $t0, $v0, .L800E7B50 -/* B5EA7C 800E78DC 8FBF001C */ lw $ra, 0x1c($sp) -/* B5EA80 800E78E0 8CD90048 */ lw $t9, 0x48($a2) -/* B5EA84 800E78E4 5519009A */ bnel $t0, $t9, .L800E7B50 -/* B5EA88 800E78E8 8FBF001C */ lw $ra, 0x1c($sp) -/* B5EA8C 800E78EC 8CCA0040 */ lw $t2, 0x40($a2) -/* B5EA90 800E78F0 8FAB002C */ lw $t3, 0x2c($sp) -/* B5EA94 800E78F4 160A0095 */ bne $s0, $t2, .L800E7B4C -/* B5EA98 800E78F8 24090006 */ li $t1, 6 -/* B5EA9C 800E78FC 51690094 */ beql $t3, $t1, .L800E7B50 -/* B5EAA0 800E7900 8FBF001C */ lw $ra, 0x1c($sp) -/* B5EAA4 800E7904 90CD0070 */ lbu $t5, 0x70($a2) -/* B5EAA8 800E7908 3C018017 */ lui $at, %hi(D_801719E4) -/* B5EAAC 800E790C C42419E4 */ lwc1 $f4, %lo(D_801719E4)($at) -/* B5EAB0 800E7910 35AE0010 */ ori $t6, $t5, 0x10 -/* B5EAB4 800E7914 A0CE0070 */ sb $t6, 0x70($a2) -/* B5EAB8 800E7918 1000008C */ b .L800E7B4C -/* B5EABC 800E791C E4C4007C */ swc1 $f4, 0x7c($a2) -/* B5EAC0 800E7920 90CF0070 */ lbu $t7, 0x70($a2) -.L800E7924: -/* B5EAC4 800E7924 24090006 */ li $t1, 6 -/* B5EAC8 800E7928 31F8000F */ andi $t8, $t7, 0xf -/* B5EACC 800E792C 5138007E */ beql $t1, $t8, .L800E7B28 -/* B5EAD0 800E7930 8FB9002C */ lw $t9, 0x2c($sp) -/* B5EAD4 800E7934 C6060044 */ lwc1 $f6, 0x44($s0) -/* B5EAD8 800E7938 24C4004C */ addiu $a0, $a2, 0x4c -/* B5EADC 800E793C E4860008 */ swc1 $f6, 8($a0) -/* B5EAE0 800E7940 C6080040 */ lwc1 $f8, 0x40($s0) -/* B5EAE4 800E7944 E488000C */ swc1 $f8, 0xc($a0) -/* B5EAE8 800E7948 92190007 */ lbu $t9, 7($s0) -/* B5EAEC 800E794C A0990002 */ sb $t9, 2($a0) -/* B5EAF0 800E7950 8E020050 */ lw $v0, 0x50($s0) -/* B5EAF4 800E7954 5040003D */ beql $v0, $zero, .L800E7A4C -/* B5EAF8 800E7958 920D0001 */ lbu $t5, 1($s0) -/* B5EAFC 800E795C 904A0004 */ lbu $t2, 4($v0) -/* B5EB00 800E7960 00403825 */ move $a3, $v0 -/* B5EB04 800E7964 00801825 */ move $v1, $a0 -/* B5EB08 800E7968 A08A0000 */ sb $t2, ($a0) -/* B5EB0C 800E796C 904B000C */ lbu $t3, 0xc($v0) -/* B5EB10 800E7970 24050010 */ li $a1, 16 -/* B5EB14 800E7974 A08B0001 */ sb $t3, 1($a0) -/* B5EB18 800E7978 8C4C00CC */ lw $t4, 0xcc($v0) -/* B5EB1C 800E797C 00001025 */ move $v0, $zero -/* B5EB20 800E7980 11800016 */ beqz $t4, .L800E79DC -/* B5EB24 800E7984 AC8C0010 */ sw $t4, 0x10($a0) -.L800E7988: -/* B5EB28 800E7988 8C8E0010 */ lw $t6, 0x10($a0) -/* B5EB2C 800E798C 24630008 */ addiu $v1, $v1, 8 -/* B5EB30 800E7990 01C27821 */ addu $t7, $t6, $v0 -/* B5EB34 800E7994 85F80000 */ lh $t8, ($t7) -/* B5EB38 800E7998 A478000C */ sh $t8, 0xc($v1) -/* B5EB3C 800E799C 8C990010 */ lw $t9, 0x10($a0) -/* B5EB40 800E79A0 03225021 */ addu $t2, $t9, $v0 -/* B5EB44 800E79A4 854B0002 */ lh $t3, 2($t2) -/* B5EB48 800E79A8 A46B000E */ sh $t3, 0xe($v1) -/* B5EB4C 800E79AC 8C8C0010 */ lw $t4, 0x10($a0) -/* B5EB50 800E79B0 01826821 */ addu $t5, $t4, $v0 -/* B5EB54 800E79B4 85AE0004 */ lh $t6, 4($t5) -/* B5EB58 800E79B8 A46E0010 */ sh $t6, 0x10($v1) -/* B5EB5C 800E79BC 8C8F0010 */ lw $t7, 0x10($a0) -/* B5EB60 800E79C0 01E2C021 */ addu $t8, $t7, $v0 -/* B5EB64 800E79C4 87190006 */ lh $t9, 6($t8) -/* B5EB68 800E79C8 24420008 */ addiu $v0, $v0, 8 -/* B5EB6C 800E79CC 1445FFEE */ bne $v0, $a1, .L800E7988 -/* B5EB70 800E79D0 A4790012 */ sh $t9, 0x12($v1) -/* B5EB74 800E79D4 248A0014 */ addiu $t2, $a0, 0x14 -/* B5EB78 800E79D8 AC8A0010 */ sw $t2, 0x10($a0) -.L800E79DC: -/* B5EB7C 800E79DC 94EB0020 */ lhu $t3, 0x20($a3) -/* B5EB80 800E79E0 A48B0006 */ sh $t3, 6($a0) -/* B5EB84 800E79E4 90EC000F */ lbu $t4, 0xf($a3) -/* B5EB88 800E79E8 A08C0004 */ sb $t4, 4($a0) -/* B5EB8C 800E79EC 8CED004C */ lw $t5, 0x4c($a3) -/* B5EB90 800E79F0 8DAE0000 */ lw $t6, ($t5) -/* B5EB94 800E79F4 000EC080 */ sll $t8, $t6, 2 -/* B5EB98 800E79F8 07030009 */ bgezl $t8, .L800E7A20 -/* B5EB9C 800E79FC 920E0001 */ lbu $t6, 1($s0) -/* B5EBA0 800E7A00 90F90003 */ lbu $t9, 3($a3) -/* B5EBA4 800E7A04 332A0008 */ andi $t2, $t9, 8 -/* B5EBA8 800E7A08 51400005 */ beql $t2, $zero, .L800E7A20 -/* B5EBAC 800E7A0C 920E0001 */ lbu $t6, 1($s0) -/* B5EBB0 800E7A10 90CC00C0 */ lbu $t4, 0xc0($a2) -/* B5EBB4 800E7A14 358D0020 */ ori $t5, $t4, 0x20 -/* B5EBB8 800E7A18 A0CD00C0 */ sb $t5, 0xc0($a2) -/* B5EBBC 800E7A1C 920E0001 */ lbu $t6, 1($s0) -.L800E7A20: -/* B5EBC0 800E7A20 55C00005 */ bnezl $t6, .L800E7A38 -/* B5EBC4 800E7A24 920A0001 */ lbu $t2, 1($s0) -/* B5EBC8 800E7A28 90F800D0 */ lbu $t8, 0xd0($a3) -/* B5EBCC 800E7A2C 10000003 */ b .L800E7A3C -/* B5EBD0 800E7A30 A0980003 */ sb $t8, 3($a0) -/* B5EBD4 800E7A34 920A0001 */ lbu $t2, 1($s0) -.L800E7A38: -/* B5EBD8 800E7A38 A08A0003 */ sb $t2, 3($a0) -.L800E7A3C: -/* B5EBDC 800E7A3C 90EB0006 */ lbu $t3, 6($a3) -/* B5EBE0 800E7A40 10000005 */ b .L800E7A58 -/* B5EBE4 800E7A44 A0CB0030 */ sb $t3, 0x30($a2) -/* B5EBE8 800E7A48 920D0001 */ lbu $t5, 1($s0) -.L800E7A4C: -/* B5EBEC 800E7A4C 240E0001 */ li $t6, 1 -/* B5EBF0 800E7A50 A08D0003 */ sb $t5, 3($a0) -/* B5EBF4 800E7A54 A0CE0030 */ sb $t6, 0x30($a2) -.L800E7A58: -/* B5EBF8 800E7A58 8CCF0044 */ lw $t7, 0x44($a2) -/* B5EBFC 800E7A5C ACC80044 */ sw $t0, 0x44($a2) -/* B5EC00 800E7A60 24010007 */ li $at, 7 -/* B5EC04 800E7A64 ACCF0040 */ sw $t7, 0x40($a2) -/* B5EC08 800E7A68 8FB8002C */ lw $t8, 0x2c($sp) -/* B5EC0C 800E7A6C 240C0002 */ li $t4, 2 -/* B5EC10 800E7A70 5701000A */ bnel $t8, $at, .L800E7A9C -/* B5EC14 800E7A74 90CF0070 */ lbu $t7, 0x70($a2) -/* B5EC18 800E7A78 90CA0070 */ lbu $t2, 0x70($a2) -/* B5EC1C 800E7A7C 3C018017 */ lui $at, %hi(D_801719E4) -/* B5EC20 800E7A80 C42A19E4 */ lwc1 $f10, %lo(D_801719E4)($at) -/* B5EC24 800E7A84 354B0010 */ ori $t3, $t2, 0x10 -/* B5EC28 800E7A88 A0CB0070 */ sb $t3, 0x70($a2) -/* B5EC2C 800E7A8C A0CC0034 */ sb $t4, 0x34($a2) -/* B5EC30 800E7A90 10000024 */ b .L800E7B24 -/* B5EC34 800E7A94 E4CA007C */ swc1 $f10, 0x7c($a2) -/* B5EC38 800E7A98 90CF0070 */ lbu $t7, 0x70($a2) -.L800E7A9C: -/* B5EC3C 800E7A9C 240D0001 */ li $t5, 1 -/* B5EC40 800E7AA0 A0CD0034 */ sb $t5, 0x34($a2) -/* B5EC44 800E7AA4 35F80020 */ ori $t8, $t7, 0x20 -/* B5EC48 800E7AA8 A0D80070 */ sb $t8, 0x70($a2) -/* B5EC4C 800E7AAC 92020018 */ lbu $v0, 0x18($s0) -/* B5EC50 800E7AB0 3C0E8017 */ lui $t6, %hi(D_801726A0) # $t6, 0x8017 -/* B5EC54 800E7AB4 1440000A */ bnez $v0, .L800E7AE0 -/* B5EC58 800E7AB8 00000000 */ nop -/* B5EC5C 800E7ABC 8E0A0050 */ lw $t2, 0x50($s0) -/* B5EC60 800E7AC0 3C198017 */ lui $t9, %hi(D_801726A0) # $t9, 0x8017 -/* B5EC64 800E7AC4 8F3926A0 */ lw $t9, %lo(D_801726A0)($t9) -/* B5EC68 800E7AC8 914B007C */ lbu $t3, 0x7c($t2) -/* B5EC6C 800E7ACC 000B6080 */ sll $t4, $t3, 2 -/* B5EC70 800E7AD0 032C6821 */ addu $t5, $t9, $t4 -/* B5EC74 800E7AD4 C5B00000 */ lwc1 $f16, ($t5) -/* B5EC78 800E7AD8 10000006 */ b .L800E7AF4 -/* B5EC7C 800E7ADC E4D0007C */ swc1 $f16, 0x7c($a2) -.L800E7AE0: -/* B5EC80 800E7AE0 8DCE26A0 */ lw $t6, %lo(D_801726A0)($t6) -/* B5EC84 800E7AE4 00027880 */ sll $t7, $v0, 2 -/* B5EC88 800E7AE8 01CFC021 */ addu $t8, $t6, $t7 -/* B5EC8C 800E7AEC C7120000 */ lwc1 $f18, ($t8) -/* B5EC90 800E7AF0 E4D2007C */ swc1 $f18, 0x7c($a2) -.L800E7AF4: -/* B5EC94 800E7AF4 8E0A0050 */ lw $t2, 0x50($s0) -/* B5EC98 800E7AF8 C4C80080 */ lwc1 $f8, 0x80($a2) -/* B5EC9C 800E7AFC 3C013B80 */ li $at, 0x3B800000 # 0.000000 -/* B5ECA0 800E7B00 914B007D */ lbu $t3, 0x7d($t2) -/* B5ECA4 800E7B04 44818000 */ mtc1 $at, $f16 -/* B5ECA8 800E7B08 448B2000 */ mtc1 $t3, $f4 -/* B5ECAC 800E7B0C 00000000 */ nop -/* B5ECB0 800E7B10 468021A0 */ cvt.s.w $f6, $f4 -/* B5ECB4 800E7B14 46083282 */ mul.s $f10, $f6, $f8 -/* B5ECB8 800E7B18 00000000 */ nop -/* B5ECBC 800E7B1C 46105482 */ mul.s $f18, $f10, $f16 -/* B5ECC0 800E7B20 E4D20074 */ swc1 $f18, 0x74($a2) -.L800E7B24: -/* B5ECC4 800E7B24 8FB9002C */ lw $t9, 0x2c($sp) -.L800E7B28: -/* B5ECC8 800E7B28 00C02025 */ move $a0, $a2 -/* B5ECCC 800E7B2C 57290008 */ bnel $t9, $t1, .L800E7B50 -/* B5ECD0 800E7B30 8FBF001C */ lw $ra, 0x1c($sp) -/* B5ECD4 800E7B34 0C03A037 */ jal Audio_AudioListRemove -/* B5ECD8 800E7B38 AFA60024 */ sw $a2, 0x24($sp) -/* B5ECDC 800E7B3C 8FA50024 */ lw $a1, 0x24($sp) -/* B5ECE0 800E7B40 8CA4000C */ lw $a0, 0xc($a1) -/* B5ECE4 800E7B44 0C03A027 */ jal Audio_AudioListPushFront -/* B5ECE8 800E7B48 24840010 */ addiu $a0, $a0, 0x10 -.L800E7B4C: -/* B5ECEC 800E7B4C 8FBF001C */ lw $ra, 0x1c($sp) -.L800E7B50: -/* B5ECF0 800E7B50 8FB00018 */ lw $s0, 0x18($sp) -/* B5ECF4 800E7B54 27BD0028 */ addiu $sp, $sp, 0x28 -/* B5ECF8 800E7B58 03E00008 */ jr $ra -/* B5ECFC 800E7B5C 00000000 */ nop diff --git a/asm/non_matchings/code/code_800E9340/Audio_AudioListPopBack.s b/asm/non_matchings/code/audio_seqplayer/Audio_AudioListPopBack.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/Audio_AudioListPopBack.s rename to asm/non_matchings/code/audio_seqplayer/Audio_AudioListPopBack.s diff --git a/asm/non_matchings/code/code_800E9340/Audio_AudioListPushBack.s b/asm/non_matchings/code/audio_seqplayer/Audio_AudioListPushBack.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/Audio_AudioListPushBack.s rename to asm/non_matchings/code/audio_seqplayer/Audio_AudioListPushBack.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E98C8.s b/asm/non_matchings/code/audio_seqplayer/Audio_SequenceChannelDisable.s similarity index 97% rename from asm/non_matchings/code/code_800E9340/func_800E98C8.s rename to asm/non_matchings/code/audio_seqplayer/Audio_SequenceChannelDisable.s index c44b7ecf8a..dacd9beaba 100644 --- a/asm/non_matchings/code/code_800E9340/func_800E98C8.s +++ b/asm/non_matchings/code/audio_seqplayer/Audio_SequenceChannelDisable.s @@ -1,4 +1,4 @@ -glabel func_800E98C8 +glabel Audio_SequenceChannelDisable /* B60A68 800E98C8 27BDFFD8 */ addiu $sp, $sp, -0x28 /* B60A6C 800E98CC AFB20020 */ sw $s2, 0x20($sp) /* B60A70 800E98D0 AFB1001C */ sw $s1, 0x1c($sp) diff --git a/asm/non_matchings/code/code_800E9340/func_800E9B6C.s b/asm/non_matchings/code/audio_seqplayer/Audio_SequencePlayerDisable.s similarity index 98% rename from asm/non_matchings/code/code_800E9340/func_800E9B6C.s rename to asm/non_matchings/code/audio_seqplayer/Audio_SequencePlayerDisable.s index 6739c13edb..5255581c16 100644 --- a/asm/non_matchings/code/code_800E9340/func_800E9B6C.s +++ b/asm/non_matchings/code/audio_seqplayer/Audio_SequencePlayerDisable.s @@ -1,4 +1,4 @@ -glabel func_800E9B6C +glabel Audio_SequencePlayerDisable /* B60D0C 800E9B6C 27BDFFE0 */ addiu $sp, $sp, -0x20 /* B60D10 800E9B70 AFBF001C */ sw $ra, 0x1c($sp) /* B60D14 800E9B74 AFB00018 */ sw $s0, 0x18($sp) diff --git a/asm/non_matchings/code/code_800E9340/func_800E9340.s b/asm/non_matchings/code/audio_seqplayer/func_800E9340.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E9340.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9340.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E93A8.s b/asm/non_matchings/code/audio_seqplayer/func_800E93A8.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E93A8.s rename to asm/non_matchings/code/audio_seqplayer/func_800E93A8.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E9584.s b/asm/non_matchings/code/audio_seqplayer/func_800E9584.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E9584.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9584.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E96D8.s b/asm/non_matchings/code/audio_seqplayer/func_800E96D8.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E96D8.s rename to asm/non_matchings/code/audio_seqplayer/func_800E96D8.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E97FC.s b/asm/non_matchings/code/audio_seqplayer/func_800E97FC.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E97FC.s rename to asm/non_matchings/code/audio_seqplayer/func_800E97FC.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E9878.s b/asm/non_matchings/code/audio_seqplayer/func_800E9878.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E9878.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9878.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E9934.s b/asm/non_matchings/code/audio_seqplayer/func_800E9934.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E9934.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9934.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E9A2C.s b/asm/non_matchings/code/audio_seqplayer/func_800E9A2C.s similarity index 96% rename from asm/non_matchings/code/code_800E9340/func_800E9A2C.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9A2C.s index bb29f7f8b7..d7a2be5658 100644 --- a/asm/non_matchings/code/code_800E9340/func_800E9A2C.s +++ b/asm/non_matchings/code/audio_seqplayer/func_800E9A2C.s @@ -19,7 +19,7 @@ glabel func_800E9A2C /* B60C0C 800E9A6C 000E702B */ sltu $t6, $zero, $t6 /* B60C10 800E9A70 566E0004 */ bnel $s3, $t6, .L800E9A84 /* B60C14 800E9A74 26100004 */ addiu $s0, $s0, 4 -/* B60C18 800E9A78 0C03A632 */ jal func_800E98C8 +/* B60C18 800E9A78 0C03A632 */ jal Audio_SequenceChannelDisable /* B60C1C 800E9A7C 00000000 */ nop /* B60C20 800E9A80 26100004 */ addiu $s0, $s0, 4 .L800E9A84: diff --git a/asm/non_matchings/code/code_800E9340/func_800E9AAC.s b/asm/non_matchings/code/audio_seqplayer/func_800E9AAC.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E9AAC.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9AAC.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E9B44.s b/asm/non_matchings/code/audio_seqplayer/func_800E9B44.s similarity index 87% rename from asm/non_matchings/code/code_800E9340/func_800E9B44.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9B44.s index 8b4713412d..8f6e40b4e4 100644 --- a/asm/non_matchings/code/code_800E9340/func_800E9B44.s +++ b/asm/non_matchings/code/audio_seqplayer/func_800E9B44.s @@ -3,7 +3,7 @@ glabel func_800E9B44 /* B60CE8 800E9B48 AFBF0014 */ sw $ra, 0x14($sp) /* B60CEC 800E9B4C 908F0000 */ lbu $t7, ($a0) /* B60CF0 800E9B50 35F80040 */ ori $t8, $t7, 0x40 -/* B60CF4 800E9B54 0C03A6DB */ jal func_800E9B6C +/* B60CF4 800E9B54 0C03A6DB */ jal Audio_SequencePlayerDisable /* B60CF8 800E9B58 A0980000 */ sb $t8, ($a0) /* B60CFC 800E9B5C 8FBF0014 */ lw $ra, 0x14($sp) /* B60D00 800E9B60 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/non_matchings/code/code_800E9340/func_800E9CA8.s b/asm/non_matchings/code/audio_seqplayer/func_800E9CA8.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E9CA8.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9CA8.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E9D48.s b/asm/non_matchings/code/audio_seqplayer/func_800E9D48.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E9D48.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9D48.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E9D5C.s b/asm/non_matchings/code/audio_seqplayer/func_800E9D5C.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E9D5C.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9D5C.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E9D94.s b/asm/non_matchings/code/audio_seqplayer/func_800E9D94.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E9D94.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9D94.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E9DD4.s b/asm/non_matchings/code/audio_seqplayer/func_800E9DD4.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E9DD4.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9DD4.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E9ED8.s b/asm/non_matchings/code/audio_seqplayer/func_800E9ED8.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800E9ED8.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9ED8.s diff --git a/asm/non_matchings/code/code_800E9340/func_800E9F64.s b/asm/non_matchings/code/audio_seqplayer/func_800E9F64.s similarity index 97% rename from asm/non_matchings/code/code_800E9340/func_800E9F64.s rename to asm/non_matchings/code/audio_seqplayer/func_800E9F64.s index 8f9f2a1dc7..e9572bbec7 100644 --- a/asm/non_matchings/code/code_800E9340/func_800E9F64.s +++ b/asm/non_matchings/code/audio_seqplayer/func_800E9F64.s @@ -75,7 +75,7 @@ glabel func_800E9F64 /* B61214 800EA074 00402025 */ move $a0, $v0 /* B61218 800EA078 54E90005 */ bnel $a3, $t1, .L800EA090 /* B6121C 800EA07C 8CE6002C */ lw $a2, 0x2c($a3) -/* B61220 800EA080 0C03A3C0 */ jal func_800E8F00 +/* B61220 800EA080 0C03A3C0 */ jal Audio_NoteVibratoInit /* B61224 800EA084 AFA70018 */ sw $a3, 0x18($sp) /* B61228 800EA088 8FA70018 */ lw $a3, 0x18($sp) .L800EA08C: @@ -86,7 +86,7 @@ glabel func_800E9F64 /* B61238 800EA098 8CCA0044 */ lw $t2, 0x44($a2) /* B6123C 800EA09C 54EA0004 */ bnel $a3, $t2, .L800EA0B0 /* B61240 800EA0A0 00001025 */ move $v0, $zero -/* B61244 800EA0A4 0C03A3EE */ jal func_800E8FB8 +/* B61244 800EA0A4 0C03A3EE */ jal Audio_NotePortamentoInit /* B61248 800EA0A8 00C02025 */ move $a0, $a2 /* B6124C 800EA0AC 00001025 */ move $v0, $zero .L800EA0B0: diff --git a/asm/non_matchings/code/code_800E9340/func_800EA0C0.s b/asm/non_matchings/code/audio_seqplayer/func_800EA0C0.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800EA0C0.s rename to asm/non_matchings/code/audio_seqplayer/func_800EA0C0.s diff --git a/asm/non_matchings/code/code_800E9340/func_800EA440.s b/asm/non_matchings/code/audio_seqplayer/func_800EA440.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800EA440.s rename to asm/non_matchings/code/audio_seqplayer/func_800EA440.s diff --git a/asm/non_matchings/code/code_800E9340/func_800EAAE0.s b/asm/non_matchings/code/audio_seqplayer/func_800EAAE0.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800EAAE0.s rename to asm/non_matchings/code/audio_seqplayer/func_800EAAE0.s diff --git a/asm/non_matchings/code/code_800E9340/func_800EAEF4.s b/asm/non_matchings/code/audio_seqplayer/func_800EAEF4.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800EAEF4.s rename to asm/non_matchings/code/audio_seqplayer/func_800EAEF4.s diff --git a/asm/non_matchings/code/code_800E9340/func_800EAF24.s b/asm/non_matchings/code/audio_seqplayer/func_800EAF24.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800EAF24.s rename to asm/non_matchings/code/audio_seqplayer/func_800EAF24.s diff --git a/asm/non_matchings/code/code_800E9340/func_800EAF98.s b/asm/non_matchings/code/audio_seqplayer/func_800EAF98.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800EAF98.s rename to asm/non_matchings/code/audio_seqplayer/func_800EAF98.s diff --git a/asm/non_matchings/code/code_800E9340/func_800EB044.s b/asm/non_matchings/code/audio_seqplayer/func_800EB044.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800EB044.s rename to asm/non_matchings/code/audio_seqplayer/func_800EB044.s diff --git a/asm/non_matchings/code/code_800E9340/func_800EB068.s b/asm/non_matchings/code/audio_seqplayer/func_800EB068.s similarity index 99% rename from asm/non_matchings/code/code_800E9340/func_800EB068.s rename to asm/non_matchings/code/audio_seqplayer/func_800EB068.s index a9efeab32c..29ac91b8f8 100644 --- a/asm/non_matchings/code/code_800E9340/func_800EB068.s +++ b/asm/non_matchings/code/audio_seqplayer/func_800EB068.s @@ -299,7 +299,7 @@ glabel L800EB0F4 /* B62338 800EB198 00000000 */ nop /* B6233C 800EB19C 145E0005 */ bne $v0, $fp, .L800EB1B4 /* B62340 800EB1A0 00000000 */ nop -/* B62344 800EB1A4 0C03A632 */ jal func_800E98C8 +/* B62344 800EB1A4 0C03A632 */ jal Audio_SequenceChannelDisable /* B62348 800EB1A8 02802025 */ move $a0, $s4 /* B6234C 800EB1AC 100002D4 */ b .L800EBD00 /* B62350 800EB1B0 00008025 */ move $s0, $zero @@ -437,12 +437,12 @@ glabel L800EB354 glabel L800EB380 /* B62520 800EB380 93B20063 */ lbu $s2, 0x63($sp) /* B62524 800EB384 928A0001 */ lbu $t2, 1($s4) -/* B62528 800EB388 3C018013 */ lui $at, %hi(D_8012F0B4) +/* B62528 800EB388 3C018013 */ lui $at, %hi(gPitchBendFrequencyScale) /* B6252C 800EB38C 26520080 */ addiu $s2, $s2, 0x80 /* B62530 800EB390 325200FF */ andi $s2, $s2, 0xff /* B62534 800EB394 0012C080 */ sll $t8, $s2, 2 /* B62538 800EB398 00380821 */ addu $at, $at, $t8 -/* B6253C 800EB39C C428F0B4 */ lwc1 $f8, %lo(D_8012F0B4)($at) +/* B6253C 800EB39C C428F0B4 */ lwc1 $f8, %lo(gPitchBendFrequencyScale)($at) /* B62540 800EB3A0 35590080 */ ori $t9, $t2, 0x80 /* B62544 800EB3A4 A2990001 */ sb $t9, 1($s4) /* B62548 800EB3A8 1000FF52 */ b .L800EB0F4 @@ -592,7 +592,7 @@ glabel L800EB59C /* B6273C 800EB59C 93B20063 */ lbu $s2, 0x63($sp) /* B62740 800EB5A0 00124080 */ sll $t0, $s2, 2 /* B62744 800EB5A4 02E87021 */ addu $t6, $s7, $t0 -/* B62748 800EB5A8 0C03A632 */ jal func_800E98C8 +/* B62748 800EB5A8 0C03A632 */ jal Audio_SequenceChannelDisable /* B6274C 800EB5AC 8DC40038 */ lw $a0, 0x38($t6) /* B62750 800EB5B0 1000FED0 */ b .L800EB0F4 /* B62754 800EB5B4 00000000 */ nop diff --git a/asm/non_matchings/code/code_800E9340/func_800EBD58.s b/asm/non_matchings/code/audio_seqplayer/func_800EBD58.s similarity index 99% rename from asm/non_matchings/code/code_800E9340/func_800EBD58.s rename to asm/non_matchings/code/audio_seqplayer/func_800EBD58.s index 61bb1fd150..baa46e7264 100644 --- a/asm/non_matchings/code/code_800E9340/func_800EBD58.s +++ b/asm/non_matchings/code/audio_seqplayer/func_800EBD58.s @@ -183,7 +183,7 @@ glabel func_800EBD58 /* B62F38 800EBD98 14400005 */ bnez $v0, .L800EBDB0 /* B62F3C 800EBD9C 24050002 */ li $a1, 2 .L800EBDA0: -/* B62F40 800EBDA0 0C03A6DB */ jal func_800E9B6C +/* B62F40 800EBDA0 0C03A6DB */ jal Audio_SequencePlayerDisable /* B62F44 800EBDA4 02402025 */ move $a0, $s2 /* B62F48 800EBDA8 100001E9 */ b .L800EC550 /* B62F4C 800EBDAC 8FBF0024 */ lw $ra, 0x24($sp) @@ -256,7 +256,7 @@ glabel L800EBE68 /* B63044 800EBEA4 2401FFFF */ li $at, -1 /* B63048 800EBEA8 14410005 */ bne $v0, $at, .L800EBEC0 /* B6304C 800EBEAC 00000000 */ nop -/* B63050 800EBEB0 0C03A6DB */ jal func_800E9B6C +/* B63050 800EBEB0 0C03A6DB */ jal Audio_SequencePlayerDisable /* B63054 800EBEB4 02402025 */ move $a0, $s2 /* B63058 800EBEB8 10000198 */ b .L800EC51C /* B6305C 800EBEBC 02408825 */ move $s1, $s2 @@ -658,7 +658,7 @@ glabel L800EC438 /* B635D8 800EC438 3218000F */ andi $t8, $s0, 0xf /* B635DC 800EC43C 00186880 */ sll $t5, $t8, 2 /* B635E0 800EC440 024DC821 */ addu $t9, $s2, $t5 -/* B635E4 800EC444 0C03A632 */ jal func_800E98C8 +/* B635E4 800EC444 0C03A632 */ jal Audio_SequenceChannelDisable /* B635E8 800EC448 8F240038 */ lw $a0, 0x38($t9) /* B635EC 800EC44C 1000FE86 */ b .L800EBE68 /* B635F0 800EC450 00000000 */ nop diff --git a/asm/non_matchings/code/code_800E9340/func_800EC564.s b/asm/non_matchings/code/audio_seqplayer/func_800EC564.s similarity index 97% rename from asm/non_matchings/code/code_800E9340/func_800EC564.s rename to asm/non_matchings/code/audio_seqplayer/func_800EC564.s index 5f659854d0..9da92b0834 100644 --- a/asm/non_matchings/code/code_800E9340/func_800EC564.s +++ b/asm/non_matchings/code/audio_seqplayer/func_800EC564.s @@ -28,7 +28,7 @@ glabel func_800EC564 /* B63768 800EC5C8 26520001 */ addiu $s2, $s2, 1 /* B6376C 800EC5CC 0C03AF56 */ jal func_800EBD58 /* B63770 800EC5D0 02002025 */ move $a0, $s0 -/* B63774 800EC5D4 0C03A2A2 */ jal func_800E8A88 +/* B63774 800EC5D4 0C03A2A2 */ jal Audio_SequencePlayerProcessSound /* B63778 800EC5D8 02002025 */ move $a0, $s0 /* B6377C 800EC5DC 3C028017 */ lui $v0, %hi(D_801719DC) # $v0, 0x8017 /* B63780 800EC5E0 844219DC */ lh $v0, %lo(D_801719DC)($v0) diff --git a/asm/non_matchings/code/code_800E9340/func_800EC618.s b/asm/non_matchings/code/audio_seqplayer/func_800EC618.s similarity index 93% rename from asm/non_matchings/code/code_800E9340/func_800EC618.s rename to asm/non_matchings/code/audio_seqplayer/func_800EC618.s index 02e06c057d..f285d7530c 100644 --- a/asm/non_matchings/code/code_800E9340/func_800EC618.s +++ b/asm/non_matchings/code/audio_seqplayer/func_800EC618.s @@ -9,7 +9,7 @@ glabel func_800EC618 .L800EC634: /* B637D4 800EC634 0C03AF56 */ jal func_800EBD58 /* B637D8 800EC638 02002025 */ move $a0, $s0 -/* B637DC 800EC63C 0C03A2A2 */ jal func_800E8A88 +/* B637DC 800EC63C 0C03A2A2 */ jal Audio_SequencePlayerProcessSound /* B637E0 800EC640 02002025 */ move $a0, $s0 /* B637E4 800EC644 8E0F00DC */ lw $t7, 0xdc($s0) /* B637E8 800EC648 25F8FFFF */ addiu $t8, $t7, -1 diff --git a/asm/non_matchings/code/code_800E9340/func_800EC668.s b/asm/non_matchings/code/audio_seqplayer/func_800EC668.s similarity index 97% rename from asm/non_matchings/code/code_800E9340/func_800EC668.s rename to asm/non_matchings/code/audio_seqplayer/func_800EC668.s index 8719e27ff6..92b889a65b 100644 --- a/asm/non_matchings/code/code_800E9340/func_800EC668.s +++ b/asm/non_matchings/code/audio_seqplayer/func_800EC668.s @@ -4,7 +4,7 @@ glabel func_800EC668 /* B63810 800EC670 AFB20020 */ sw $s2, 0x20($sp) /* B63814 800EC674 AFB1001C */ sw $s1, 0x1c($sp) /* B63818 800EC678 AFB00018 */ sw $s0, 0x18($sp) -/* B6381C 800EC67C 0C03A6DB */ jal func_800E9B6C +/* B6381C 800EC67C 0C03A6DB */ jal Audio_SequencePlayerDisable /* B63820 800EC680 AFA40028 */ sw $a0, 0x28($sp) /* B63824 800EC684 8FB10028 */ lw $s1, 0x28($sp) /* B63828 800EC688 3C013F80 */ li $at, 0x3F800000 # 0.000000 diff --git a/asm/non_matchings/code/code_800E9340/func_800EC734.s b/asm/non_matchings/code/audio_seqplayer/func_800EC734.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800EC734.s rename to asm/non_matchings/code/audio_seqplayer/func_800EC734.s diff --git a/asm/non_matchings/code/code_800E9340/func_800EC80C.s b/asm/non_matchings/code/audio_seqplayer/func_800EC80C.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800EC80C.s rename to asm/non_matchings/code/audio_seqplayer/func_800EC80C.s diff --git a/asm/non_matchings/code/code_800E9340/func_800EC8DC.s b/asm/non_matchings/code/audio_seqplayer/func_800EC8DC.s similarity index 100% rename from asm/non_matchings/code/code_800E9340/func_800EC8DC.s rename to asm/non_matchings/code/audio_seqplayer/func_800EC8DC.s diff --git a/asm/non_matchings/code/code_800E11F0/func_800E217C.s b/asm/non_matchings/code/code_800E11F0/func_800E217C.s index 4a54fcfbb9..a4785bf954 100644 --- a/asm/non_matchings/code/code_800E11F0/func_800E217C.s +++ b/asm/non_matchings/code/code_800E11F0/func_800E217C.s @@ -25,7 +25,7 @@ glabel func_800E217C /* B59374 800E21D4 0019C940 */ sll $t9, $t9, 5 /* B59378 800E21D8 0279A021 */ addu $s4, $s3, $t9 /* B5937C 800E21DC 26943530 */ addiu $s4, $s4, 0x3530 -/* B59380 800E21E0 0C03A6DB */ jal func_800E9B6C +/* B59380 800E21E0 0C03A6DB */ jal Audio_SequencePlayerDisable /* B59384 800E21E4 02802025 */ move $a0, $s4 /* B59388 800E21E8 8FA80034 */ lw $t0, 0x34($sp) /* B5938C 800E21EC 8E62283C */ lw $v0, 0x283c($s3) diff --git a/asm/non_matchings/code/code_800E88C0/Audio_AdsrInit.s b/asm/non_matchings/code/code_800E88C0/Audio_AdsrInit.s deleted file mode 100644 index 348d139d8e..0000000000 --- a/asm/non_matchings/code/code_800E88C0/Audio_AdsrInit.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel Audio_AdsrInit -/* B60184 800E8FE4 AFA60008 */ sw $a2, 8($sp) -/* B60188 800E8FE8 44800000 */ mtc1 $zero, $f0 -/* B6018C 800E8FEC A0800000 */ sb $zero, ($a0) -/* B60190 800E8FF0 A4800002 */ sh $zero, 2($a0) -/* B60194 800E8FF4 AC85001C */ sw $a1, 0x1c($a0) -/* B60198 800E8FF8 E4800004 */ swc1 $f0, 4($a0) -/* B6019C 800E8FFC 03E00008 */ jr $ra -/* B601A0 800E9000 E4800010 */ swc1 $f0, 0x10($a0) - diff --git a/asm/non_matchings/code/code_800E88C0/func_800E88C0.s b/asm/non_matchings/code/code_800E88C0/func_800E88C0.s deleted file mode 100644 index 421173c183..0000000000 --- a/asm/non_matchings/code/code_800E88C0/func_800E88C0.s +++ /dev/null @@ -1,127 +0,0 @@ -glabel func_800E88C0 -/* B5FA60 800E88C0 8C820000 */ lw $v0, ($a0) -/* B5FA64 800E88C4 00803825 */ move $a3, $a0 -/* B5FA68 800E88C8 24090010 */ li $t1, 16 -/* B5FA6C 800E88CC 00027A40 */ sll $t7, $v0, 9 -/* B5FA70 800E88D0 05E00003 */ bltz $t7, .L800E88E0 -/* B5FA74 800E88D4 24080080 */ li $t0, 128 -/* B5FA78 800E88D8 50A00016 */ beql $a1, $zero, .L800E8934 -/* B5FA7C 800E88DC 00027280 */ sll $t6, $v0, 0xa -.L800E88E0: -/* B5FA80 800E88E0 C484002C */ lwc1 $f4, 0x2c($a0) -/* B5FA84 800E88E4 C4860028 */ lwc1 $f6, 0x28($a0) -/* B5FA88 800E88E8 8C82004C */ lw $v0, 0x4c($a0) -/* B5FA8C 800E88EC 46062202 */ mul.s $f8, $f4, $f6 -/* B5FA90 800E88F0 C44A0030 */ lwc1 $f10, 0x30($v0) -/* B5FA94 800E88F4 8C580000 */ lw $t8, ($v0) -/* B5FA98 800E88F8 00185080 */ sll $t2, $t8, 2 -/* B5FA9C 800E88FC 460A4002 */ mul.s $f0, $f8, $f10 -/* B5FAA0 800E8900 05410008 */ bgez $t2, .L800E8924 -/* B5FAA4 800E8904 00000000 */ nop -/* B5FAA8 800E8908 908B0003 */ lbu $t3, 3($a0) -/* B5FAAC 800E890C 316C0020 */ andi $t4, $t3, 0x20 -/* B5FAB0 800E8910 11800004 */ beqz $t4, .L800E8924 -/* B5FAB4 800E8914 00000000 */ nop -/* B5FAB8 800E8918 C4500028 */ lwc1 $f16, 0x28($v0) -/* B5FABC 800E891C 46008002 */ mul.s $f0, $f16, $f0 -/* B5FAC0 800E8920 00000000 */ nop -.L800E8924: -/* B5FAC4 800E8924 46000482 */ mul.s $f18, $f0, $f0 -/* B5FAC8 800E8928 8C820000 */ lw $v0, ($a0) -/* B5FACC 800E892C E4920034 */ swc1 $f18, 0x34($a0) -/* B5FAD0 800E8930 00027280 */ sll $t6, $v0, 0xa -.L800E8934: -/* B5FAD4 800E8934 05C10007 */ bgez $t6, .L800E8954 -/* B5FAD8 800E8938 00000000 */ nop -/* B5FADC 800E893C 908F000A */ lbu $t7, 0xa($a0) -/* B5FAE0 800E8940 9098000B */ lbu $t8, 0xb($a0) -/* B5FAE4 800E8944 01F80019 */ multu $t7, $t8 -/* B5FAE8 800E8948 0000C812 */ mflo $t9 -/* B5FAEC 800E894C AC990030 */ sw $t9, 0x30($a0) -/* B5FAF0 800E8950 00000000 */ nop -.L800E8954: -/* B5FAF4 800E8954 10C00008 */ beqz $a2, .L800E8978 -/* B5FAF8 800E8958 C4800038 */ lwc1 $f0, 0x38($a0) -/* B5FAFC 800E895C 8C8A004C */ lw $t2, 0x4c($a0) -/* B5FB00 800E8960 908C0001 */ lbu $t4, 1($a0) -/* B5FB04 800E8964 C5440034 */ lwc1 $f4, 0x34($t2) -/* B5FB08 800E8968 358D0080 */ ori $t5, $t4, 0x80 -/* B5FB0C 800E896C A08D0001 */ sb $t5, 1($a0) -/* B5FB10 800E8970 46040002 */ mul.s $f0, $f0, $f4 -/* B5FB14 800E8974 00000000 */ nop -.L800E8978: -/* B5FB18 800E8978 00003025 */ move $a2, $zero -.L800E897C: -/* B5FB1C 800E897C 8CE30050 */ lw $v1, 0x50($a3) -/* B5FB20 800E8980 24C60004 */ addiu $a2, $a2, 4 -/* B5FB24 800E8984 1060003C */ beqz $v1, .L800E8A78 -/* B5FB28 800E8988 00000000 */ nop -/* B5FB2C 800E898C 8C6E0000 */ lw $t6, ($v1) -/* B5FB30 800E8990 000E7FC2 */ srl $t7, $t6, 0x1f -/* B5FB34 800E8994 11E00038 */ beqz $t7, .L800E8A78 -/* B5FB38 800E8998 00000000 */ nop -/* B5FB3C 800E899C 8C78002C */ lw $t8, 0x2c($v1) -/* B5FB40 800E89A0 13000035 */ beqz $t8, .L800E8A78 -/* B5FB44 800E89A4 00000000 */ nop -/* B5FB48 800E89A8 90620000 */ lbu $v0, ($v1) -/* B5FB4C 800E89AC 30590001 */ andi $t9, $v0, 1 -/* B5FB50 800E89B0 53200015 */ beql $t9, $zero, .L800E8A08 -/* B5FB54 800E89B4 808A0001 */ lb $t2, 1($a0) -/* B5FB58 800E89B8 C4660030 */ lwc1 $f6, 0x30($v1) -/* B5FB5C 800E89BC C46A0038 */ lwc1 $f10, 0x38($v1) -/* B5FB60 800E89C0 906A0006 */ lbu $t2, 6($v1) -/* B5FB64 800E89C4 46003202 */ mul.s $f8, $f6, $f0 -/* B5FB68 800E89C8 3059FFFE */ andi $t9, $v0, 0xfffe -/* B5FB6C 800E89CC E4680044 */ swc1 $f8, 0x44($v1) -/* B5FB70 800E89D0 C4900034 */ lwc1 $f16, 0x34($a0) -/* B5FB74 800E89D4 46105482 */ mul.s $f18, $f10, $f16 -/* B5FB78 800E89D8 E4720040 */ swc1 $f18, 0x40($v1) -/* B5FB7C 800E89DC 908B000B */ lbu $t3, 0xb($a0) -/* B5FB80 800E89E0 8C8E0030 */ lw $t6, 0x30($a0) -/* B5FB84 800E89E4 A0790000 */ sb $t9, ($v1) -/* B5FB88 800E89E8 010B6023 */ subu $t4, $t0, $t3 -/* B5FB8C 800E89EC 014C0019 */ multu $t2, $t4 -/* B5FB90 800E89F0 00006812 */ mflo $t5 -/* B5FB94 800E89F4 01CD7821 */ addu $t7, $t6, $t5 -/* B5FB98 800E89F8 000FC1C3 */ sra $t8, $t7, 7 -/* B5FB9C 800E89FC 1000001E */ b .L800E8A78 -/* B5FBA0 800E8A00 A0780007 */ sb $t8, 7($v1) -/* B5FBA4 800E8A04 808A0001 */ lb $t2, 1($a0) -.L800E8A08: -/* B5FBA8 800E8A08 05430005 */ bgezl $t2, .L800E8A20 -/* B5FBAC 800E8A0C 8C820000 */ lw $v0, ($a0) -/* B5FBB0 800E8A10 C4640030 */ lwc1 $f4, 0x30($v1) -/* B5FBB4 800E8A14 46002182 */ mul.s $f6, $f4, $f0 -/* B5FBB8 800E8A18 E4660044 */ swc1 $f6, 0x44($v1) -/* B5FBBC 800E8A1C 8C820000 */ lw $v0, ($a0) -.L800E8A20: -/* B5FBC0 800E8A20 00027240 */ sll $t6, $v0, 9 -/* B5FBC4 800E8A24 05C20004 */ bltzl $t6, .L800E8A38 -/* B5FBC8 800E8A28 C4680038 */ lwc1 $f8, 0x38($v1) -/* B5FBCC 800E8A2C 50A00007 */ beql $a1, $zero, .L800E8A4C -/* B5FBD0 800E8A30 00027A80 */ sll $t7, $v0, 0xa -/* B5FBD4 800E8A34 C4680038 */ lwc1 $f8, 0x38($v1) -.L800E8A38: -/* B5FBD8 800E8A38 C48A0034 */ lwc1 $f10, 0x34($a0) -/* B5FBDC 800E8A3C 460A4402 */ mul.s $f16, $f8, $f10 -/* B5FBE0 800E8A40 E4700040 */ swc1 $f16, 0x40($v1) -/* B5FBE4 800E8A44 8C820000 */ lw $v0, ($a0) -/* B5FBE8 800E8A48 00027A80 */ sll $t7, $v0, 0xa -.L800E8A4C: -/* B5FBEC 800E8A4C 05E1000A */ bgez $t7, .L800E8A78 -/* B5FBF0 800E8A50 00000000 */ nop -/* B5FBF4 800E8A54 9099000B */ lbu $t9, 0xb($a0) -/* B5FBF8 800E8A58 90780006 */ lbu $t8, 6($v1) -/* B5FBFC 800E8A5C 8C8C0030 */ lw $t4, 0x30($a0) -/* B5FC00 800E8A60 01195823 */ subu $t3, $t0, $t9 -/* B5FC04 800E8A64 030B0019 */ multu $t8, $t3 -/* B5FC08 800E8A68 00005012 */ mflo $t2 -/* B5FC0C 800E8A6C 018A7021 */ addu $t6, $t4, $t2 -/* B5FC10 800E8A70 000E69C3 */ sra $t5, $t6, 7 -/* B5FC14 800E8A74 A06D0007 */ sb $t5, 7($v1) -.L800E8A78: -/* B5FC18 800E8A78 14C9FFC0 */ bne $a2, $t1, .L800E897C -/* B5FC1C 800E8A7C 24E70004 */ addiu $a3, $a3, 4 -/* B5FC20 800E8A80 03E00008 */ jr $ra -/* B5FC24 800E8A84 A0800001 */ sb $zero, 1($a0) - diff --git a/asm/non_matchings/code/code_800E88C0/func_800E8A88.s b/asm/non_matchings/code/code_800E88C0/func_800E8A88.s deleted file mode 100644 index eb7cd25763..0000000000 --- a/asm/non_matchings/code/code_800E88C0/func_800E8A88.s +++ /dev/null @@ -1,92 +0,0 @@ -glabel func_800E8A88 -/* B5FC28 800E8A88 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* B5FC2C 800E8A8C AFBF002C */ sw $ra, 0x2c($sp) -/* B5FC30 800E8A90 AFB40028 */ sw $s4, 0x28($sp) -/* B5FC34 800E8A94 AFB30024 */ sw $s3, 0x24($sp) -/* B5FC38 800E8A98 AFB20020 */ sw $s2, 0x20($sp) -/* B5FC3C 800E8A9C AFB1001C */ sw $s1, 0x1c($sp) -/* B5FC40 800E8AA0 AFB00018 */ sw $s0, 0x18($sp) -/* B5FC44 800E8AA4 948E0012 */ lhu $t6, 0x12($a0) -/* B5FC48 800E8AA8 00809025 */ move $s2, $a0 -/* B5FC4C 800E8AAC 02408825 */ move $s1, $s2 -/* B5FC50 800E8AB0 11C00025 */ beqz $t6, .L800E8B48 -/* B5FC54 800E8AB4 00008025 */ move $s0, $zero -/* B5FC58 800E8AB8 C484001C */ lwc1 $f4, 0x1c($a0) -/* B5FC5C 800E8ABC C4860020 */ lwc1 $f6, 0x20($a0) -/* B5FC60 800E8AC0 3C013F80 */ li $at, 0x3F800000 # 0.000000 -/* B5FC64 800E8AC4 44811000 */ mtc1 $at, $f2 -/* B5FC68 800E8AC8 46062200 */ add.s $f8, $f4, $f6 -/* B5FC6C 800E8ACC 90980000 */ lbu $t8, ($a0) -/* B5FC70 800E8AD0 E488001C */ swc1 $f8, 0x1c($a0) -/* B5FC74 800E8AD4 C480001C */ lwc1 $f0, 0x1c($a0) -/* B5FC78 800E8AD8 37190004 */ ori $t9, $t8, 4 -/* B5FC7C 800E8ADC A0990000 */ sb $t9, ($a0) -/* B5FC80 800E8AE0 4600103C */ c.lt.s $f2, $f0 -/* B5FC84 800E8AE4 00000000 */ nop -/* B5FC88 800E8AE8 45020004 */ bc1fl .L800E8AFC -/* B5FC8C 800E8AEC 44801000 */ mtc1 $zero, $f2 -/* B5FC90 800E8AF0 E482001C */ swc1 $f2, 0x1c($a0) -/* B5FC94 800E8AF4 C480001C */ lwc1 $f0, 0x1c($a0) -/* B5FC98 800E8AF8 44801000 */ mtc1 $zero, $f2 -.L800E8AFC: -/* B5FC9C 800E8AFC 00000000 */ nop -/* B5FCA0 800E8B00 4602003C */ c.lt.s $f0, $f2 -/* B5FCA4 800E8B04 00000000 */ nop -/* B5FCA8 800E8B08 45020003 */ bc1fl .L800E8B18 -/* B5FCAC 800E8B0C 96480012 */ lhu $t0, 0x12($s2) -/* B5FCB0 800E8B10 E642001C */ swc1 $f2, 0x1c($s2) -/* B5FCB4 800E8B14 96480012 */ lhu $t0, 0x12($s2) -.L800E8B18: -/* B5FCB8 800E8B18 2509FFFF */ addiu $t1, $t0, -1 -/* B5FCBC 800E8B1C 312AFFFF */ andi $t2, $t1, 0xffff -/* B5FCC0 800E8B20 15400009 */ bnez $t2, .L800E8B48 -/* B5FCC4 800E8B24 A6490012 */ sh $t1, 0x12($s2) -/* B5FCC8 800E8B28 924B0001 */ lbu $t3, 1($s2) -/* B5FCCC 800E8B2C 24010002 */ li $at, 2 -/* B5FCD0 800E8B30 55610006 */ bnel $t3, $at, .L800E8B4C -/* B5FCD4 800E8B34 8E4C0000 */ lw $t4, ($s2) -/* B5FCD8 800E8B38 0C03A6DB */ jal func_800E9B6C -/* B5FCDC 800E8B3C 02402025 */ move $a0, $s2 -/* B5FCE0 800E8B40 1000001D */ b .L800E8BB8 -/* B5FCE4 800E8B44 8FBF002C */ lw $ra, 0x2c($sp) -.L800E8B48: -/* B5FCE8 800E8B48 8E4C0000 */ lw $t4, ($s2) -.L800E8B4C: -/* B5FCEC 800E8B4C 24140040 */ li $s4, 64 -/* B5FCF0 800E8B50 24130001 */ li $s3, 1 -/* B5FCF4 800E8B54 000C7140 */ sll $t6, $t4, 5 -/* B5FCF8 800E8B58 05C10005 */ bgez $t6, .L800E8B70 -/* B5FCFC 800E8B5C 00000000 */ nop -/* B5FD00 800E8B60 C64A001C */ lwc1 $f10, 0x1c($s2) -/* B5FD04 800E8B64 C650002C */ lwc1 $f16, 0x2c($s2) -/* B5FD08 800E8B68 46105482 */ mul.s $f18, $f10, $f16 -/* B5FD0C 800E8B6C E6520030 */ swc1 $f18, 0x30($s2) -.L800E8B70: -/* B5FD10 800E8B70 8E240038 */ lw $a0, 0x38($s1) -/* B5FD14 800E8B74 8C8F0000 */ lw $t7, ($a0) -/* B5FD18 800E8B78 000FC7C2 */ srl $t8, $t7, 0x1f -/* B5FD1C 800E8B7C 56780008 */ bnel $s3, $t8, .L800E8BA0 -/* B5FD20 800E8B80 26100004 */ addiu $s0, $s0, 4 -/* B5FD24 800E8B84 8E450000 */ lw $a1, ($s2) -/* B5FD28 800E8B88 92460000 */ lbu $a2, ($s2) -/* B5FD2C 800E8B8C 00052940 */ sll $a1, $a1, 5 -/* B5FD30 800E8B90 00052FC2 */ srl $a1, $a1, 0x1f -/* B5FD34 800E8B94 0C03A230 */ jal func_800E88C0 -/* B5FD38 800E8B98 30C60001 */ andi $a2, $a2, 1 -/* B5FD3C 800E8B9C 26100004 */ addiu $s0, $s0, 4 -.L800E8BA0: -/* B5FD40 800E8BA0 1614FFF3 */ bne $s0, $s4, .L800E8B70 -/* B5FD44 800E8BA4 26310004 */ addiu $s1, $s1, 4 -/* B5FD48 800E8BA8 92590000 */ lbu $t9, ($s2) -/* B5FD4C 800E8BAC 3328FFFB */ andi $t0, $t9, 0xfffb -/* B5FD50 800E8BB0 A2480000 */ sb $t0, ($s2) -/* B5FD54 800E8BB4 8FBF002C */ lw $ra, 0x2c($sp) -.L800E8BB8: -/* B5FD58 800E8BB8 8FB00018 */ lw $s0, 0x18($sp) -/* B5FD5C 800E8BBC 8FB1001C */ lw $s1, 0x1c($sp) -/* B5FD60 800E8BC0 8FB20020 */ lw $s2, 0x20($sp) -/* B5FD64 800E8BC4 8FB30024 */ lw $s3, 0x24($sp) -/* B5FD68 800E8BC8 8FB40028 */ lw $s4, 0x28($sp) -/* B5FD6C 800E8BCC 03E00008 */ jr $ra -/* B5FD70 800E8BD0 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/code/code_800E88C0/func_800E8BD4.s b/asm/non_matchings/code/code_800E88C0/func_800E8BD4.s deleted file mode 100644 index 111fd76de4..0000000000 --- a/asm/non_matchings/code/code_800E88C0/func_800E8BD4.s +++ /dev/null @@ -1,26 +0,0 @@ -glabel func_800E8BD4 -/* B5FD74 800E8BD4 948E0002 */ lhu $t6, 2($a0) -/* B5FD78 800E8BD8 948F0004 */ lhu $t7, 4($a0) -/* B5FD7C 800E8BDC 01CF1021 */ addu $v0, $t6, $t7 -/* B5FD80 800E8BE0 A4820002 */ sh $v0, 2($a0) -/* B5FD84 800E8BE4 00021203 */ sra $v0, $v0, 8 -/* B5FD88 800E8BE8 304200FF */ andi $v0, $v0, 0xff -/* B5FD8C 800E8BEC 2C41007F */ sltiu $at, $v0, 0x7f -/* B5FD90 800E8BF0 54200004 */ bnezl $at, .L800E8C04 -/* B5FD94 800E8BF4 3C013F80 */ lui $at, 0x3f80 -/* B5FD98 800E8BF8 2402007F */ li $v0, 127 -/* B5FD9C 800E8BFC A0800000 */ sb $zero, ($a0) -/* B5FDA0 800E8C00 3C013F80 */ li $at, 0x3F800000 # 0.000000 -.L800E8C04: -/* B5FDA4 800E8C04 44816000 */ mtc1 $at, $f12 -/* B5FDA8 800E8C08 3C018013 */ lui $at, %hi(D_8012F2B4) -/* B5FDAC 800E8C0C 0002C880 */ sll $t9, $v0, 2 -/* B5FDB0 800E8C10 00390821 */ addu $at, $at, $t9 -/* B5FDB4 800E8C14 C424F2B4 */ lwc1 $f4, %lo(D_8012F2B4)($at) -/* B5FDB8 800E8C18 C4880008 */ lwc1 $f8, 8($a0) -/* B5FDBC 800E8C1C 460C2181 */ sub.s $f6, $f4, $f12 -/* B5FDC0 800E8C20 46083282 */ mul.s $f10, $f6, $f8 -/* B5FDC4 800E8C24 460C5080 */ add.s $f2, $f10, $f12 -/* B5FDC8 800E8C28 03E00008 */ jr $ra -/* B5FDCC 800E8C2C 46001006 */ mov.s $f0, $f2 - diff --git a/asm/non_matchings/code/code_800E88C0/func_800E8C30.s b/asm/non_matchings/code/code_800E88C0/func_800E8C30.s deleted file mode 100644 index a158f5ecc4..0000000000 --- a/asm/non_matchings/code/code_800E88C0/func_800E8C30.s +++ /dev/null @@ -1,16 +0,0 @@ -glabel func_800E8C30 -/* B5FDD0 800E8C30 C4840010 */ lwc1 $f4, 0x10($a0) -/* B5FDD4 800E8C34 8C8E0004 */ lw $t6, 4($a0) -/* B5FDD8 800E8C38 8C880008 */ lw $t0, 8($a0) -/* B5FDDC 800E8C3C 4600218D */ trunc.w.s $f6, $f4 -/* B5FDE0 800E8C40 44183000 */ mfc1 $t8, $f6 -/* B5FDE4 800E8C44 00000000 */ nop -/* B5FDE8 800E8C48 01D8C821 */ addu $t9, $t6, $t8 -/* B5FDEC 800E8C4C 00191A82 */ srl $v1, $t9, 0xa -/* B5FDF0 800E8C50 3063003F */ andi $v1, $v1, 0x3f -/* B5FDF4 800E8C54 00034840 */ sll $t1, $v1, 1 -/* B5FDF8 800E8C58 AC990004 */ sw $t9, 4($a0) -/* B5FDFC 800E8C5C 01095021 */ addu $t2, $t0, $t1 -/* B5FE00 800E8C60 03E00008 */ jr $ra -/* B5FE04 800E8C64 85420000 */ lh $v0, ($t2) - diff --git a/asm/non_matchings/code/code_800E88C0/func_800E8C68.s b/asm/non_matchings/code/code_800E88C0/func_800E8C68.s deleted file mode 100644 index 419735e3fe..0000000000 --- a/asm/non_matchings/code/code_800E88C0/func_800E8C68.s +++ /dev/null @@ -1,159 +0,0 @@ -glabel func_800E8C68 -/* B5FE08 800E8C68 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B5FE0C 800E8C6C AFBF0014 */ sw $ra, 0x14($sp) -/* B5FE10 800E8C70 9482001A */ lhu $v0, 0x1a($a0) -/* B5FE14 800E8C74 8C830000 */ lw $v1, ($a0) -/* B5FE18 800E8C78 2401FFFF */ li $at, -1 -/* B5FE1C 800E8C7C 10400005 */ beqz $v0, .L800E8C94 -/* B5FE20 800E8C80 244EFFFF */ addiu $t6, $v0, -1 -/* B5FE24 800E8C84 3C013F80 */ li $at, 0x3F800000 # 0.000000 -/* B5FE28 800E8C88 44810000 */ mtc1 $at, $f0 -/* B5FE2C 800E8C8C 10000081 */ b .L800E8E94 -/* B5FE30 800E8C90 A48E001A */ sh $t6, 0x1a($a0) -.L800E8C94: -/* B5FE34 800E8C94 50610056 */ beql $v1, $at, .L800E8DF0 -/* B5FE38 800E8C98 44802000 */ mtc1 $zero, $f4 -/* B5FE3C 800E8C9C 94820018 */ lhu $v0, 0x18($a0) -/* B5FE40 800E8CA0 24010001 */ li $at, 1 -/* B5FE44 800E8CA4 50400019 */ beql $v0, $zero, .L800E8D0C -/* B5FE48 800E8CA8 C484000C */ lwc1 $f4, 0xc($a0) -/* B5FE4C 800E8CAC 14410008 */ bne $v0, $at, .L800E8CD0 -/* B5FE50 800E8CB0 00402825 */ move $a1, $v0 -/* B5FE54 800E8CB4 946F0016 */ lhu $t7, 0x16($v1) -/* B5FE58 800E8CB8 94820018 */ lhu $v0, 0x18($a0) -/* B5FE5C 800E8CBC 448F2000 */ mtc1 $t7, $f4 -/* B5FE60 800E8CC0 00000000 */ nop -/* B5FE64 800E8CC4 468021A0 */ cvt.s.w $f6, $f4 -/* B5FE68 800E8CC8 1000000C */ b .L800E8CFC -/* B5FE6C 800E8CCC E486000C */ swc1 $f6, 0xc($a0) -.L800E8CD0: -/* B5FE70 800E8CD0 94780016 */ lhu $t8, 0x16($v1) -/* B5FE74 800E8CD4 44853000 */ mtc1 $a1, $f6 -/* B5FE78 800E8CD8 C480000C */ lwc1 $f0, 0xc($a0) -/* B5FE7C 800E8CDC 44984000 */ mtc1 $t8, $f8 -/* B5FE80 800E8CE0 00000000 */ nop -/* B5FE84 800E8CE4 468042A0 */ cvt.s.w $f10, $f8 -/* B5FE88 800E8CE8 46803220 */ cvt.s.w $f8, $f6 -/* B5FE8C 800E8CEC 46005101 */ sub.s $f4, $f10, $f0 -/* B5FE90 800E8CF0 46082283 */ div.s $f10, $f4, $f8 -/* B5FE94 800E8CF4 460A0180 */ add.s $f6, $f0, $f10 -/* B5FE98 800E8CF8 E486000C */ swc1 $f6, 0xc($a0) -.L800E8CFC: -/* B5FE9C 800E8CFC 2459FFFF */ addiu $t9, $v0, -1 -/* B5FEA0 800E8D00 10000010 */ b .L800E8D44 -/* B5FEA4 800E8D04 A4990018 */ sh $t9, 0x18($a0) -/* B5FEA8 800E8D08 C484000C */ lwc1 $f4, 0xc($a0) -.L800E8D0C: -/* B5FEAC 800E8D0C 946A0016 */ lhu $t2, 0x16($v1) -/* B5FEB0 800E8D10 4600220D */ trunc.w.s $f8, $f4 -/* B5FEB4 800E8D14 44094000 */ mfc1 $t1, $f8 -/* B5FEB8 800E8D18 00000000 */ nop -/* B5FEBC 800E8D1C 512A000A */ beql $t1, $t2, .L800E8D48 -/* B5FEC0 800E8D20 94820016 */ lhu $v0, 0x16($a0) -/* B5FEC4 800E8D24 9462001A */ lhu $v0, 0x1a($v1) -/* B5FEC8 800E8D28 14400006 */ bnez $v0, .L800E8D44 -/* B5FECC 800E8D2C A4820018 */ sh $v0, 0x18($a0) -/* B5FED0 800E8D30 946B0016 */ lhu $t3, 0x16($v1) -/* B5FED4 800E8D34 448B5000 */ mtc1 $t3, $f10 -/* B5FED8 800E8D38 00000000 */ nop -/* B5FEDC 800E8D3C 468051A0 */ cvt.s.w $f6, $f10 -/* B5FEE0 800E8D40 E486000C */ swc1 $f6, 0xc($a0) -.L800E8D44: -/* B5FEE4 800E8D44 94820016 */ lhu $v0, 0x16($a0) -.L800E8D48: -/* B5FEE8 800E8D48 24010001 */ li $at, 1 -/* B5FEEC 800E8D4C 50400019 */ beql $v0, $zero, .L800E8DB4 -/* B5FEF0 800E8D50 C4840010 */ lwc1 $f4, 0x10($a0) -/* B5FEF4 800E8D54 14410008 */ bne $v0, $at, .L800E8D78 -/* B5FEF8 800E8D58 00402825 */ move $a1, $v0 -/* B5FEFC 800E8D5C 946C0014 */ lhu $t4, 0x14($v1) -/* B5FF00 800E8D60 94820016 */ lhu $v0, 0x16($a0) -/* B5FF04 800E8D64 448C2000 */ mtc1 $t4, $f4 -/* B5FF08 800E8D68 00000000 */ nop -/* B5FF0C 800E8D6C 46802220 */ cvt.s.w $f8, $f4 -/* B5FF10 800E8D70 1000000C */ b .L800E8DA4 -/* B5FF14 800E8D74 E4880010 */ swc1 $f8, 0x10($a0) -.L800E8D78: -/* B5FF18 800E8D78 946D0014 */ lhu $t5, 0x14($v1) -/* B5FF1C 800E8D7C 44854000 */ mtc1 $a1, $f8 -/* B5FF20 800E8D80 C4800010 */ lwc1 $f0, 0x10($a0) -/* B5FF24 800E8D84 448D5000 */ mtc1 $t5, $f10 -/* B5FF28 800E8D88 00000000 */ nop -/* B5FF2C 800E8D8C 468051A0 */ cvt.s.w $f6, $f10 -/* B5FF30 800E8D90 468042A0 */ cvt.s.w $f10, $f8 -/* B5FF34 800E8D94 46003101 */ sub.s $f4, $f6, $f0 -/* B5FF38 800E8D98 460A2183 */ div.s $f6, $f4, $f10 -/* B5FF3C 800E8D9C 46060200 */ add.s $f8, $f0, $f6 -/* B5FF40 800E8DA0 E4880010 */ swc1 $f8, 0x10($a0) -.L800E8DA4: -/* B5FF44 800E8DA4 244EFFFF */ addiu $t6, $v0, -1 -/* B5FF48 800E8DA8 10000010 */ b .L800E8DEC -/* B5FF4C 800E8DAC A48E0016 */ sh $t6, 0x16($a0) -/* B5FF50 800E8DB0 C4840010 */ lwc1 $f4, 0x10($a0) -.L800E8DB4: -/* B5FF54 800E8DB4 94790014 */ lhu $t9, 0x14($v1) -/* B5FF58 800E8DB8 4600228D */ trunc.w.s $f10, $f4 -/* B5FF5C 800E8DBC 44185000 */ mfc1 $t8, $f10 -/* B5FF60 800E8DC0 00000000 */ nop -/* B5FF64 800E8DC4 5319000A */ beql $t8, $t9, .L800E8DF0 -/* B5FF68 800E8DC8 44802000 */ mtc1 $zero, $f4 -/* B5FF6C 800E8DCC 94620018 */ lhu $v0, 0x18($v1) -/* B5FF70 800E8DD0 14400006 */ bnez $v0, .L800E8DEC -/* B5FF74 800E8DD4 A4820016 */ sh $v0, 0x16($a0) -/* B5FF78 800E8DD8 94680014 */ lhu $t0, 0x14($v1) -/* B5FF7C 800E8DDC 44883000 */ mtc1 $t0, $f6 -/* B5FF80 800E8DE0 00000000 */ nop -/* B5FF84 800E8DE4 46803220 */ cvt.s.w $f8, $f6 -/* B5FF88 800E8DE8 E4880010 */ swc1 $f8, 0x10($a0) -.L800E8DEC: -/* B5FF8C 800E8DEC 44802000 */ mtc1 $zero, $f4 -.L800E8DF0: -/* B5FF90 800E8DF0 C48A000C */ lwc1 $f10, 0xc($a0) -/* B5FF94 800E8DF4 3C013F80 */ li $at, 0x3F800000 # 0.000000 -/* B5FF98 800E8DF8 460A2032 */ c.eq.s $f4, $f10 -/* B5FF9C 800E8DFC 00000000 */ nop -/* B5FFA0 800E8E00 45000004 */ bc1f .L800E8E14 -/* B5FFA4 800E8E04 00000000 */ nop -/* B5FFA8 800E8E08 44810000 */ mtc1 $at, $f0 -/* B5FFAC 800E8E0C 10000022 */ b .L800E8E98 -/* B5FFB0 800E8E10 8FBF0014 */ lw $ra, 0x14($sp) -.L800E8E14: -/* B5FFB4 800E8E14 0C03A30C */ jal func_800E8C30 -/* B5FFB8 800E8E18 AFA40018 */ sw $a0, 0x18($sp) -/* B5FFBC 800E8E1C 8FA40018 */ lw $a0, 0x18($sp) -/* B5FFC0 800E8E20 3C013F80 */ li $at, 0x3F800000 # 0.000000 -/* B5FFC4 800E8E24 44819000 */ mtc1 $at, $f18 -/* B5FFC8 800E8E28 3C013980 */ li $at, 0x39800000 # 0.000000 -/* B5FFCC 800E8E2C 44814000 */ mtc1 $at, $f8 -/* B5FFD0 800E8E30 C486000C */ lwc1 $f6, 0xc($a0) -/* B5FFD4 800E8E34 44822000 */ mtc1 $v0, $f4 -/* B5FFD8 800E8E38 3C014700 */ li $at, 0x47000000 # 0.000000 -/* B5FFDC 800E8E3C 46083402 */ mul.s $f16, $f6, $f8 -/* B5FFE0 800E8E40 44813000 */ mtc1 $at, $f6 -/* B5FFE4 800E8E44 3C014780 */ lui $at, 0x4780 -/* B5FFE8 800E8E48 3C098013 */ lui $t1, %hi(D_80130514) -/* B5FFEC 800E8E4C 8D290514 */ lw $t1, %lo(D_80130514)($t1) -/* B5FFF0 800E8E50 468022A0 */ cvt.s.w $f10, $f4 -/* B5FFF4 800E8E54 252A0001 */ addiu $t2, $t1, 1 -/* B5FFF8 800E8E58 46128080 */ add.s $f2, $f16, $f18 -/* B5FFFC 800E8E5C 46065200 */ add.s $f8, $f10, $f6 -/* B60000 800E8E60 44813000 */ mtc1 $at, $f6 -/* B60004 800E8E64 3C018013 */ lui $at, %hi(D_80130510) -/* B60008 800E8E68 46029303 */ div.s $f12, $f18, $f2 -/* B6000C 800E8E6C 460C1101 */ sub.s $f4, $f2, $f12 -/* B60010 800E8E70 46082282 */ mul.s $f10, $f4, $f8 -/* B60014 800E8E74 46065103 */ div.s $f4, $f10, $f6 -/* B60018 800E8E78 C42A0510 */ lwc1 $f10, %lo(D_80130510)($at) -/* B6001C 800E8E7C 460C2200 */ add.s $f8, $f4, $f12 -/* B60020 800E8E80 46089003 */ div.s $f0, $f18, $f8 -/* B60024 800E8E84 46005180 */ add.s $f6, $f10, $f0 -/* B60028 800E8E88 E4260510 */ swc1 $f6, %lo(D_80130510)($at) -/* B6002C 800E8E8C 3C018013 */ lui $at, %hi(D_80130514) # $at, 0x8013 -/* B60030 800E8E90 AC2A0514 */ sw $t2, %lo(D_80130514)($at) -.L800E8E94: -/* B60034 800E8E94 8FBF0014 */ lw $ra, 0x14($sp) -.L800E8E98: -/* B60038 800E8E98 27BD0018 */ addiu $sp, $sp, 0x18 -/* B6003C 800E8E9C 03E00008 */ jr $ra -/* B60040 800E8EA0 00000000 */ nop - diff --git a/asm/non_matchings/code/code_800E88C0/func_800E8EA4.s b/asm/non_matchings/code/code_800E88C0/func_800E8EA4.s deleted file mode 100644 index 96467e5e24..0000000000 --- a/asm/non_matchings/code/code_800E88C0/func_800E8EA4.s +++ /dev/null @@ -1,27 +0,0 @@ -glabel func_800E8EA4 -/* B60044 800E8EA4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B60048 800E8EA8 AFBF0014 */ sw $ra, 0x14($sp) -/* B6004C 800E8EAC 908E0090 */ lbu $t6, 0x90($a0) -/* B60050 800E8EB0 00802825 */ move $a1, $a0 -/* B60054 800E8EB4 24840090 */ addiu $a0, $a0, 0x90 -/* B60058 800E8EB8 51C00006 */ beql $t6, $zero, .L800E8ED4 -/* B6005C 800E8EBC 90AF00B0 */ lbu $t7, 0xb0($a1) -/* B60060 800E8EC0 0C03A2F5 */ jal func_800E8BD4 -/* B60064 800E8EC4 AFA50018 */ sw $a1, 0x18($sp) -/* B60068 800E8EC8 8FA50018 */ lw $a1, 0x18($sp) -/* B6006C 800E8ECC E4A00038 */ swc1 $f0, 0x38($a1) -/* B60070 800E8ED0 90AF00B0 */ lbu $t7, 0xb0($a1) -.L800E8ED4: -/* B60074 800E8ED4 24A4009C */ addiu $a0, $a1, 0x9c -/* B60078 800E8ED8 51E00006 */ beql $t7, $zero, .L800E8EF4 -/* B6007C 800E8EDC 8FBF0014 */ lw $ra, 0x14($sp) -/* B60080 800E8EE0 0C03A31A */ jal func_800E8C68 -/* B60084 800E8EE4 AFA50018 */ sw $a1, 0x18($sp) -/* B60088 800E8EE8 8FA50018 */ lw $a1, 0x18($sp) -/* B6008C 800E8EEC E4A0003C */ swc1 $f0, 0x3c($a1) -/* B60090 800E8EF0 8FBF0014 */ lw $ra, 0x14($sp) -.L800E8EF4: -/* B60094 800E8EF4 27BD0018 */ addiu $sp, $sp, 0x18 -/* B60098 800E8EF8 03E00008 */ jr $ra -/* B6009C 800E8EFC 00000000 */ nop - diff --git a/asm/non_matchings/code/code_800E88C0/func_800E8F00.s b/asm/non_matchings/code/code_800E88C0/func_800E8F00.s deleted file mode 100644 index 3ba82ca538..0000000000 --- a/asm/non_matchings/code/code_800E88C0/func_800E8F00.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel func_800E8F00 -/* B600A0 800E8F00 3C013F80 */ li $at, 0x3F800000 # 0.000000 -/* B600A4 800E8F04 44812000 */ mtc1 $at, $f4 -/* B600A8 800E8F08 240E0001 */ li $t6, 1 -/* B600AC 800E8F0C A08E00B0 */ sb $t6, 0xb0($a0) -/* B600B0 800E8F10 AC8000A0 */ sw $zero, 0xa0($a0) -/* B600B4 800E8F14 3C0F8013 */ lui $t7, %hi(gWaveSamples) # $t7, 0x8013 -/* B600B8 800E8F18 E484003C */ swc1 $f4, 0x3c($a0) -/* B600BC 800E8F1C 8DEFF098 */ lw $t7, %lo(gWaveSamples+0x8)($t7) -/* B600C0 800E8F20 8C980044 */ lw $t8, 0x44($a0) -/* B600C4 800E8F24 AC8F00A4 */ sw $t7, 0xa4($a0) -/* B600C8 800E8F28 8F190050 */ lw $t9, 0x50($t8) -/* B600CC 800E8F2C AC99009C */ sw $t9, 0x9c($a0) -/* B600D0 800E8F30 9725001A */ lhu $a1, 0x1a($t9) -/* B600D4 800E8F34 03201825 */ move $v1, $t9 -/* B600D8 800E8F38 14A00008 */ bnez $a1, .L800E8F5C -/* B600DC 800E8F3C A48500B4 */ sh $a1, 0xb4($a0) -/* B600E0 800E8F40 97280016 */ lhu $t0, 0x16($t9) -/* B600E4 800E8F44 2482009C */ addiu $v0, $a0, 0x9c -/* B600E8 800E8F48 44883000 */ mtc1 $t0, $f6 -/* B600EC 800E8F4C 00000000 */ nop -/* B600F0 800E8F50 46803220 */ cvt.s.w $f8, $f6 -/* B600F4 800E8F54 10000007 */ b .L800E8F74 -/* B600F8 800E8F58 E448000C */ swc1 $f8, 0xc($v0) -.L800E8F5C: -/* B600FC 800E8F5C 94690012 */ lhu $t1, 0x12($v1) -/* B60100 800E8F60 2482009C */ addiu $v0, $a0, 0x9c -/* B60104 800E8F64 44895000 */ mtc1 $t1, $f10 -/* B60108 800E8F68 00000000 */ nop -/* B6010C 800E8F6C 46805420 */ cvt.s.w $f16, $f10 -/* B60110 800E8F70 E450000C */ swc1 $f16, 0xc($v0) -.L800E8F74: -/* B60114 800E8F74 94650018 */ lhu $a1, 0x18($v1) -/* B60118 800E8F78 14A00007 */ bnez $a1, .L800E8F98 -/* B6011C 800E8F7C A4450016 */ sh $a1, 0x16($v0) -/* B60120 800E8F80 946A0014 */ lhu $t2, 0x14($v1) -/* B60124 800E8F84 448A9000 */ mtc1 $t2, $f18 -/* B60128 800E8F88 00000000 */ nop -/* B6012C 800E8F8C 46809120 */ cvt.s.w $f4, $f18 -/* B60130 800E8F90 10000006 */ b .L800E8FAC -/* B60134 800E8F94 E4440010 */ swc1 $f4, 0x10($v0) -.L800E8F98: -/* B60138 800E8F98 946B0010 */ lhu $t3, 0x10($v1) -/* B6013C 800E8F9C 448B3000 */ mtc1 $t3, $f6 -/* B60140 800E8FA0 00000000 */ nop -/* B60144 800E8FA4 46803220 */ cvt.s.w $f8, $f6 -/* B60148 800E8FA8 E4480010 */ swc1 $f8, 0x10($v0) -.L800E8FAC: -/* B6014C 800E8FAC 946C001C */ lhu $t4, 0x1c($v1) -/* B60150 800E8FB0 03E00008 */ jr $ra -/* B60154 800E8FB4 A44C001A */ sh $t4, 0x1a($v0) - diff --git a/asm/non_matchings/code/code_800E88C0/func_800E8FB8.s b/asm/non_matchings/code/code_800E88C0/func_800E8FB8.s deleted file mode 100644 index 4427ae07d0..0000000000 --- a/asm/non_matchings/code/code_800E88C0/func_800E8FB8.s +++ /dev/null @@ -1,13 +0,0 @@ -glabel func_800E8FB8 -/* B60158 800E8FB8 3C013F80 */ li $at, 0x3F800000 # 0.000000 -/* B6015C 800E8FBC 44812000 */ mtc1 $at, $f4 -/* B60160 800E8FC0 8C8E0044 */ lw $t6, 0x44($a0) -/* B60164 800E8FC4 E4840038 */ swc1 $f4, 0x38($a0) -/* B60168 800E8FC8 8DD80020 */ lw $t8, 0x20($t6) -/* B6016C 800E8FCC AC980090 */ sw $t8, 0x90($a0) -/* B60170 800E8FD0 8DCF0024 */ lw $t7, 0x24($t6) -/* B60174 800E8FD4 AC8F0094 */ sw $t7, 0x94($a0) -/* B60178 800E8FD8 8DD80028 */ lw $t8, 0x28($t6) -/* B6017C 800E8FDC 03E00008 */ jr $ra -/* B60180 800E8FE0 AC980098 */ sw $t8, 0x98($a0) - diff --git a/asm/non_matchings/code/code_800E88C0/func_800E9004.s b/asm/non_matchings/code/code_800E88C0/func_800E9004.s deleted file mode 100644 index d87df4cfd4..0000000000 --- a/asm/non_matchings/code/code_800E88C0/func_800E9004.s +++ /dev/null @@ -1,250 +0,0 @@ -.late_rodata -glabel jtbl_801495F0 - .word L800E9034 - .word L800E9040 - .word L800E9060 - .word L800E9070 - .word L800E91B0 - .word L800E92A0 - .word L800E91E8 - .word L800E91E8 - .word L800E9278 - -glabel D_80149614 - .float 32767 - -glabel D_80149618 - .float 1.0E-5 - -.text -glabel func_800E9004 -/* B601A4 800E9004 90830000 */ lbu $v1, ($a0) -/* B601A8 800E9008 00601025 */ move $v0, $v1 -/* B601AC 800E900C 3042000F */ andi $v0, $v0, 0xf -/* B601B0 800E9010 2C410009 */ sltiu $at, $v0, 9 -/* B601B4 800E9014 102000A2 */ beqz $at, .L800E92A0 -/* B601B8 800E9018 00402825 */ move $a1, $v0 -/* B601BC 800E901C 00027080 */ sll $t6, $v0, 2 -/* B601C0 800E9020 3C018015 */ lui $at, %hi(jtbl_801495F0) -/* B601C4 800E9024 002E0821 */ addu $at, $at, $t6 -/* B601C8 800E9028 8C2E95F0 */ lw $t6, %lo(jtbl_801495F0)($at) -/* B601CC 800E902C 01C00008 */ jr $t6 -/* B601D0 800E9030 00000000 */ nop -glabel L800E9034 -/* B601D4 800E9034 44800000 */ mtc1 $zero, $f0 -/* B601D8 800E9038 03E00008 */ jr $ra -/* B601DC 800E903C 00000000 */ nop -glabel L800E9040 -/* B601E0 800E9040 8C8F0000 */ lw $t7, ($a0) -/* B601E4 800E9044 3068FFF0 */ andi $t0, $v1, 0xfff0 -/* B601E8 800E9048 35090005 */ ori $t1, $t0, 5 -/* B601EC 800E904C 000FC840 */ sll $t9, $t7, 1 -/* B601F0 800E9050 07230004 */ bgezl $t9, .L800E9064 -/* B601F4 800E9054 306AFFF0 */ andi $t2, $v1, 0xfff0 -/* B601F8 800E9058 10000091 */ b .L800E92A0 -/* B601FC 800E905C A0890000 */ sb $t1, ($a0) -glabel L800E9060 -/* B60200 800E9060 306AFFF0 */ andi $t2, $v1, 0xfff0 -.L800E9064: -/* B60204 800E9064 354B0003 */ ori $t3, $t2, 3 -/* B60208 800E9068 A0800001 */ sb $zero, 1($a0) -/* B6020C 800E906C A08B0000 */ sb $t3, ($a0) -.L800E9070: -glabel L800E9070 -/* B60210 800E9070 908D0001 */ lbu $t5, 1($a0) -/* B60214 800E9074 8C8C001C */ lw $t4, 0x1c($a0) -/* B60218 800E9078 2401FFFD */ li $at, -3 -/* B6021C 800E907C 000D7080 */ sll $t6, $t5, 2 -/* B60220 800E9080 018E1021 */ addu $v0, $t4, $t6 -/* B60224 800E9084 844F0000 */ lh $t7, ($v0) -/* B60228 800E9088 A48F0002 */ sh $t7, 2($a0) -/* B6022C 800E908C 84850002 */ lh $a1, 2($a0) -/* B60230 800E9090 10A10013 */ beq $a1, $at, .L800E90E0 -/* B60234 800E9094 2401FFFE */ li $at, -2 -/* B60238 800E9098 10A1000E */ beq $a1, $at, .L800E90D4 -/* B6023C 800E909C 2401FFFF */ li $at, -1 -/* B60240 800E90A0 50A10008 */ beql $a1, $at, .L800E90C4 -/* B60244 800E90A4 90880000 */ lbu $t0, ($a0) -/* B60248 800E90A8 54A00013 */ bnezl $a1, .L800E90F8 -/* B6024C 800E90AC 44852000 */ mtc1 $a1, $f4 -/* B60250 800E90B0 90980000 */ lbu $t8, ($a0) -/* B60254 800E90B4 3319FFF0 */ andi $t9, $t8, 0xfff0 -/* B60258 800E90B8 10000038 */ b .L800E919C -/* B6025C 800E90BC A0990000 */ sb $t9, ($a0) -/* B60260 800E90C0 90880000 */ lbu $t0, ($a0) -.L800E90C4: -/* B60264 800E90C4 3109FFF0 */ andi $t1, $t0, 0xfff0 -/* B60268 800E90C8 352A0005 */ ori $t2, $t1, 5 -/* B6026C 800E90CC 10000033 */ b .L800E919C -/* B60270 800E90D0 A08A0000 */ sb $t2, ($a0) -.L800E90D4: -/* B60274 800E90D4 844B0002 */ lh $t3, 2($v0) -/* B60278 800E90D8 1000FFE5 */ b .L800E9070 -/* B6027C 800E90DC A08B0001 */ sb $t3, 1($a0) -.L800E90E0: -/* B60280 800E90E0 908D0000 */ lbu $t5, ($a0) -/* B60284 800E90E4 31ACFFF0 */ andi $t4, $t5, 0xfff0 -/* B60288 800E90E8 358E0001 */ ori $t6, $t4, 1 -/* B6028C 800E90EC 1000002B */ b .L800E919C -/* B60290 800E90F0 A08E0000 */ sb $t6, ($a0) -/* B60294 800E90F4 44852000 */ mtc1 $a1, $f4 -.L800E90F8: -/* B60298 800E90F8 3C018017 */ lui $at, %hi(D_801719EC) -/* B6029C 800E90FC C42819EC */ lwc1 $f8, %lo(D_801719EC)($at) -/* B602A0 800E9100 468021A0 */ cvt.s.w $f6, $f4 -/* B602A4 800E9104 24190001 */ li $t9, 1 -/* B602A8 800E9108 46083282 */ mul.s $f10, $f6, $f8 -/* B602AC 800E910C 4600540D */ trunc.w.s $f16, $f10 -/* B602B0 800E9110 44188000 */ mfc1 $t8, $f16 -/* B602B4 800E9114 00000000 */ nop -/* B602B8 800E9118 A4980002 */ sh $t8, 2($a0) -/* B602BC 800E911C 84850002 */ lh $a1, 2($a0) -/* B602C0 800E9120 54A00004 */ bnezl $a1, .L800E9134 -/* B602C4 800E9124 90820001 */ lbu $v0, 1($a0) -/* B602C8 800E9128 A4990002 */ sh $t9, 2($a0) -/* B602CC 800E912C 84850002 */ lh $a1, 2($a0) -/* B602D0 800E9130 90820001 */ lbu $v0, 1($a0) -.L800E9134: -/* B602D4 800E9134 8C88001C */ lw $t0, 0x1c($a0) -/* B602D8 800E9138 3C018015 */ lui $at, %hi(D_80149614) -/* B602DC 800E913C 00024880 */ sll $t1, $v0, 2 -/* B602E0 800E9140 01095021 */ addu $t2, $t0, $t1 -/* B602E4 800E9144 854B0002 */ lh $t3, 2($t2) -/* B602E8 800E9148 C4269614 */ lwc1 $f6, %lo(D_80149614)($at) -/* B602EC 800E914C 908D0000 */ lbu $t5, ($a0) -/* B602F0 800E9150 448B9000 */ mtc1 $t3, $f18 -/* B602F4 800E9154 244F0001 */ addiu $t7, $v0, 1 -/* B602F8 800E9158 31ACFFF0 */ andi $t4, $t5, 0xfff0 -/* B602FC 800E915C 46809120 */ cvt.s.w $f4, $f18 -/* B60300 800E9160 C4920010 */ lwc1 $f18, 0x10($a0) -/* B60304 800E9164 358E0004 */ ori $t6, $t4, 4 -/* B60308 800E9168 A08E0000 */ sb $t6, ($a0) -/* B6030C 800E916C A08F0001 */ sb $t7, 1($a0) -/* B60310 800E9170 46062203 */ div.s $f8, $f4, $f6 -/* B60314 800E9174 44853000 */ mtc1 $a1, $f6 -/* B60318 800E9178 E4880014 */ swc1 $f8, 0x14($a0) -/* B6031C 800E917C C4800014 */ lwc1 $f0, 0x14($a0) -/* B60320 800E9180 46803220 */ cvt.s.w $f8, $f6 -/* B60324 800E9184 46000282 */ mul.s $f10, $f0, $f0 -/* B60328 800E9188 E48A0014 */ swc1 $f10, 0x14($a0) -/* B6032C 800E918C C4900014 */ lwc1 $f16, 0x14($a0) -/* B60330 800E9190 46128101 */ sub.s $f4, $f16, $f18 -/* B60334 800E9194 46082283 */ div.s $f10, $f4, $f8 -/* B60338 800E9198 E48A0008 */ swc1 $f10, 8($a0) -.L800E919C: -/* B6033C 800E919C 90980000 */ lbu $t8, ($a0) -/* B60340 800E91A0 24010004 */ li $at, 4 -/* B60344 800E91A4 3319000F */ andi $t9, $t8, 0xf -/* B60348 800E91A8 5721003E */ bnel $t9, $at, .L800E92A4 -/* B6034C 800E91AC 8C820000 */ lw $v0, ($a0) -glabel L800E91B0 -/* B60350 800E91B0 84880002 */ lh $t0, 2($a0) -/* B60354 800E91B4 C4900010 */ lwc1 $f16, 0x10($a0) -/* B60358 800E91B8 C4920008 */ lwc1 $f18, 8($a0) -/* B6035C 800E91BC 2509FFFF */ addiu $t1, $t0, -1 -/* B60360 800E91C0 A4890002 */ sh $t1, 2($a0) -/* B60364 800E91C4 46128180 */ add.s $f6, $f16, $f18 -/* B60368 800E91C8 848A0002 */ lh $t2, 2($a0) -/* B6036C 800E91CC 1D400034 */ bgtz $t2, .L800E92A0 -/* B60370 800E91D0 E4860010 */ swc1 $f6, 0x10($a0) -/* B60374 800E91D4 908B0000 */ lbu $t3, ($a0) -/* B60378 800E91D8 316DFFF0 */ andi $t5, $t3, 0xfff0 -/* B6037C 800E91DC 35AC0003 */ ori $t4, $t5, 3 -/* B60380 800E91E0 1000002F */ b .L800E92A0 -/* B60384 800E91E4 A08C0000 */ sb $t4, ($a0) -glabel L800E91E8 -/* B60388 800E91E8 44806000 */ mtc1 $zero, $f12 -/* B6038C 800E91EC C4800004 */ lwc1 $f0, 4($a0) -/* B60390 800E91F0 C4840010 */ lwc1 $f4, 0x10($a0) -/* B60394 800E91F4 C488000C */ lwc1 $f8, 0xc($a0) -/* B60398 800E91F8 46006032 */ c.eq.s $f12, $f0 -/* B6039C 800E91FC 24010006 */ li $at, 6 -/* B603A0 800E9200 46082281 */ sub.s $f10, $f4, $f8 -/* B603A4 800E9204 45010010 */ bc1t .L800E9248 -/* B603A8 800E9208 E48A0010 */ swc1 $f10, 0x10($a0) -/* B603AC 800E920C 14A1000E */ bne $a1, $at, .L800E9248 -/* B603B0 800E9210 00000000 */ nop -/* B603B4 800E9214 C4900010 */ lwc1 $f16, 0x10($a0) -/* B603B8 800E9218 240E0080 */ li $t6, 128 -/* B603BC 800E921C 4600803C */ c.lt.s $f16, $f0 -/* B603C0 800E9220 00000000 */ nop -/* B603C4 800E9224 4502001F */ bc1fl .L800E92A4 -/* B603C8 800E9228 8C820000 */ lw $v0, ($a0) -/* B603CC 800E922C 908F0000 */ lbu $t7, ($a0) -/* B603D0 800E9230 E4800010 */ swc1 $f0, 0x10($a0) -/* B603D4 800E9234 A48E0002 */ sh $t6, 2($a0) -/* B603D8 800E9238 31F8FFF0 */ andi $t8, $t7, 0xfff0 -/* B603DC 800E923C 37190008 */ ori $t9, $t8, 8 -/* B603E0 800E9240 10000017 */ b .L800E92A0 -/* B603E4 800E9244 A0990000 */ sb $t9, ($a0) -.L800E9248: -/* B603E8 800E9248 3C018015 */ lui $at, %hi(D_80149618) -/* B603EC 800E924C C4269618 */ lwc1 $f6, %lo(D_80149618)($at) -/* B603F0 800E9250 C4920010 */ lwc1 $f18, 0x10($a0) -/* B603F4 800E9254 4606903C */ c.lt.s $f18, $f6 -/* B603F8 800E9258 00000000 */ nop -/* B603FC 800E925C 45020011 */ bc1fl .L800E92A4 -/* B60400 800E9260 8C820000 */ lw $v0, ($a0) -/* B60404 800E9264 90880000 */ lbu $t0, ($a0) -/* B60408 800E9268 E48C0010 */ swc1 $f12, 0x10($a0) -/* B6040C 800E926C 3109FFF0 */ andi $t1, $t0, 0xfff0 -/* B60410 800E9270 1000000B */ b .L800E92A0 -/* B60414 800E9274 A0890000 */ sb $t1, ($a0) -glabel L800E9278 -/* B60418 800E9278 848A0002 */ lh $t2, 2($a0) -/* B6041C 800E927C 254BFFFF */ addiu $t3, $t2, -1 -/* B60420 800E9280 A48B0002 */ sh $t3, 2($a0) -/* B60424 800E9284 848D0002 */ lh $t5, 2($a0) -/* B60428 800E9288 55A00006 */ bnezl $t5, .L800E92A4 -/* B6042C 800E928C 8C820000 */ lw $v0, ($a0) -/* B60430 800E9290 908C0000 */ lbu $t4, ($a0) -/* B60434 800E9294 318EFFF0 */ andi $t6, $t4, 0xfff0 -/* B60438 800E9298 35CF0007 */ ori $t7, $t6, 7 -/* B6043C 800E929C A08F0000 */ sb $t7, ($a0) -.L800E92A0: -glabel L800E92A0 -/* B60440 800E92A0 8C820000 */ lw $v0, ($a0) -.L800E92A4: -/* B60444 800E92A4 44806000 */ mtc1 $zero, $f12 -/* B60448 800E92A8 3C013F80 */ li $at, 0x3F800000 # 0.000000 -/* B6044C 800E92AC 0002C880 */ sll $t9, $v0, 2 -/* B60450 800E92B0 07230009 */ bgezl $t9, .L800E92D8 -/* B60454 800E92B4 000270C0 */ sll $t6, $v0, 3 -/* B60458 800E92B8 90880000 */ lbu $t0, ($a0) -/* B6045C 800E92BC 3109FFF0 */ andi $t1, $t0, 0xfff0 -/* B60460 800E92C0 352B0006 */ ori $t3, $t1, 6 -/* B60464 800E92C4 A08B0000 */ sb $t3, ($a0) -/* B60468 800E92C8 316D00DF */ andi $t5, $t3, 0xdf -/* B6046C 800E92CC A08D0000 */ sb $t5, ($a0) -/* B60470 800E92D0 8C820000 */ lw $v0, ($a0) -/* B60474 800E92D4 000270C0 */ sll $t6, $v0, 3 -.L800E92D8: -/* B60478 800E92D8 05C30008 */ bgezl $t6, .L800E92FC -/* B6047C 800E92DC C4820010 */ lwc1 $f2, 0x10($a0) -/* B60480 800E92E0 908F0000 */ lbu $t7, ($a0) -/* B60484 800E92E4 31F8FFF0 */ andi $t8, $t7, 0xfff0 -/* B60488 800E92E8 37080007 */ ori $t0, $t8, 7 -/* B6048C 800E92EC A0880000 */ sb $t0, ($a0) -/* B60490 800E92F0 310900EF */ andi $t1, $t0, 0xef -/* B60494 800E92F4 A0890000 */ sb $t1, ($a0) -/* B60498 800E92F8 C4820010 */ lwc1 $f2, 0x10($a0) -.L800E92FC: -/* B6049C 800E92FC 460C103C */ c.lt.s $f2, $f12 -/* B604A0 800E9300 00000000 */ nop -/* B604A4 800E9304 45020004 */ bc1fl .L800E9318 -/* B604A8 800E9308 44816000 */ mtc1 $at, $f12 -/* B604AC 800E930C 03E00008 */ jr $ra -/* B604B0 800E9310 46006006 */ mov.s $f0, $f12 -/* B604B4 800E9314 44816000 */ mtc1 $at, $f12 -.L800E9318: -/* B604B8 800E9318 00000000 */ nop -/* B604BC 800E931C 4602603C */ c.lt.s $f12, $f2 -/* B604C0 800E9320 00000000 */ nop -/* B604C4 800E9324 45020004 */ bc1fl .L800E9338 -/* B604C8 800E9328 46001006 */ mov.s $f0, $f2 -/* B604CC 800E932C 03E00008 */ jr $ra -/* B604D0 800E9330 46006006 */ mov.s $f0, $f12 -/* B604D4 800E9334 46001006 */ mov.s $f0, $f2 -.L800E9338: -/* B604D8 800E9338 03E00008 */ jr $ra -/* B604DC 800E933C 00000000 */ nop \ No newline at end of file diff --git a/data/code_800E88C0.data.s b/data/audio_effects.data.s similarity index 100% rename from data/code_800E88C0.data.s rename to data/audio_effects.data.s diff --git a/data/code_800DACC0.data.s b/data/code_800DACC0.data.s index 32072b6b0e..09b265a8ba 100644 --- a/data/code_800DACC0.data.s +++ b/data/code_800DACC0.data.s @@ -44,11 +44,8 @@ glabel gWaveSamples .word D_8012EE90 .word D_8012EE90 -glabel D_8012F0B4 - .incbin "baserom.z64", 0xBA6254, 0x200 - -glabel D_8012F2B4 - .incbin "baserom.z64", 0xBA6454, 0x200 +glabel gPitchBendFrequencyScale + .incbin "baserom.z64", 0xBA6254, 0x400 glabel D_8012F4B4 .incbin "baserom.z64", 0xBA6654, 0x200 diff --git a/include/functions.h b/include/functions.h index 2dec69e489..bbc317f246 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2090,28 +2090,28 @@ Note* Audio_AllocNoteFromDecaying(NotePool* pool, SequenceChannelLayer* seqLayer Note* Audio_AllocNoteFromActive(NotePool* pool, SequenceChannelLayer* seqLayer); Note* Audio_AllocNote(SequenceChannelLayer* seqLayer); void Audio_NoteInitAll(void); -// ? func_800E88C0(?); -// ? func_800E8A88(?); -// ? func_800E8BD4(?); -// ? func_800E8C30(?); -// ? func_800E8C68(?); -// ? func_800E8EA4(?); -// ? func_800E8F00(?); -// ? func_800E8FB8(?); +void Audio_SequenceChannelProcessSound(SequenceChannel* seqChannel, s32 recalculateVolume, s32 b); +void Audio_SequencePlayerProcessSound(SequencePlayer* seqPlayer); +f32 Audio_GetPortamentoFreqScale(Portamento* p); +s16 Audio_GetVibratoPitchChange(VibratoState* vib); +f32 Audio_GetVibratoFreqScale(VibratoState* vib); +void Audio_NoteVibratoUpdate(Note* note); +void Audio_NoteVibratoInit(Note* note); +void Audio_NotePortamentoInit(Note* note); void Audio_AdsrInit(AdsrState* adsr, AdsrEnvelope* envelope, s16* volOut); -// ? func_800E9004(?); +f32 Audio_AdsrUpdate(AdsrState* adsr); // ? func_800E9340(?); // ? func_800E93A8(?); // ? func_800E9584(?); // ? func_800E96D8(?); // ? func_800E97FC(?); // ? func_800E9878(?); -// ? func_800E98C8(?); +void Audio_SequenceChannelDisable(SequenceChannel* seqChannel); // ? func_800E9934(?); // ? func_800E9A2C(?); // ? func_800E9AAC(?); // ? func_800E9B44(?); -// ? func_800E9B6C(?); +void Audio_SequencePlayerDisable(SequencePlayer* seqPlayer); void Audio_AudioListPushBack(AudioListItem* list, AudioListItem* item); void* Audio_AudioListPopBack(AudioListItem* list); // ? func_800E9CA8(?); diff --git a/include/variables.h b/include/variables.h index b215081bbc..2a0cd513b9 100644 --- a/include/variables.h +++ b/include/variables.h @@ -618,6 +618,7 @@ extern s32 gDebugArenaLogSeverity; //extern ? sUCodeDisasModeHMacros; //extern ? sUCodeDisasModeLMacros; extern s16* gWaveSamples[6]; +extern f32 gPitchBendFrequencyScale[256]; //extern ? D_8012F098; //extern ? D_8012F0B0; //extern ? D_8012F8B4; @@ -650,7 +651,8 @@ extern f32 gDefaultPanVolume[128]; //extern ? D_801304EC; //extern ? D_801304F0; //extern ? D_80130500; -//extern ? D_80130514; +extern f32 D_80130510; +extern s32 D_80130514; //extern ? D_80130570; //extern ? D_80130578; //extern ? D_801305B0; @@ -3629,6 +3631,7 @@ extern AudioContext gAudioContext; //extern ? D_801719C8; //extern ? D_801719D4; //extern ? D_801719DC; +extern f32 D_801719EC; //extern ? D_80171A14; //extern ? D_80171A18; extern s8 gSoundMode; @@ -3694,7 +3697,7 @@ extern s8 gSoundMode; //extern ? D_801725E8; //extern ? D_80172618; //extern ? D_80172699; -//extern ? D_801726A0; +extern f32* D_801726A0; //extern ? D_801726A4; //extern ? D_801726AC; //extern ? D_801726B0; diff --git a/include/z64audio.h b/include/z64audio.h index 4e2c4c8803..610f9f828a 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -5,6 +5,7 @@ * Structs in this repository have primarily been imported from the SM64 Decompilation. * Many things likely still need shifted around and structs need adjusted. * Take sizes and locations of structs as very volatile. + * The symbol '!' next to an offset means the member is confirmed. */ struct Note; @@ -20,21 +21,20 @@ typedef struct AudioListItem { // to itself. 'count' contains the size of the list. // If the list holds notes, 'pool' points back to the pool where it lives. // Otherwise, that member is NULL. - /* 0x00 */ struct AudioListItem* prev; - /* 0x04 */ struct AudioListItem* next; - /* 0x08 */ union { + /*!0x00 */ struct AudioListItem* prev; + /*!0x04 */ struct AudioListItem* next; + /*!0x08 */ union { void* value; // either Note* or SequenceChannelLayer* s32 count; } u; - /* 0x0C */struct NotePool* pool; + /*!0x0C */ struct NotePool* pool; } AudioListItem; // size = 0x10 -// UNCHANGED typedef struct NotePool { - AudioListItem disabled; - AudioListItem decaying; - AudioListItem releasing; - AudioListItem active; + /*!0x00 */ AudioListItem disabled; + /*!0x10 */ AudioListItem decaying; + /*!0x20 */ AudioListItem releasing; + /*!0x30 */ AudioListItem active; } NotePool; // Pitch sliding by up to one octave in the positive direction. Negative @@ -42,12 +42,11 @@ typedef struct NotePool { // exterpolates exponentially in the wrong direction in that case, but that // doesn't prevent seqplayer from doing it, AFAICT. typedef struct { - u8 mode; // bit 0x80 denotes something; the rest are an index 0-5 - f32 cur; - f32 speed; - // f32 extent; - // struct Note *note; // Changed from extent to note? Shortened Struct maybe? -} Portamento; // size = 0x0C + /*!0x00 */ u8 mode; // bit 0x80 denotes something; the rest are an index 0-5 + /*!0x02 */ u16 cur; + /*!0x04 */ u16 speed; + /*!0x08 */ f32 extent; +} Portamento; // size = 0xC typedef struct { s16 delay; @@ -82,6 +81,7 @@ typedef struct { f32 tuning; // frequency scale factor } AudioBankSound; // size = 0x8 +// UNCHANGED typedef struct { /* 0x00 */ u8 loaded; /* 0x01 */ u8 normalRangeLo; @@ -91,17 +91,15 @@ typedef struct { /* 0x08 */ AudioBankSound lowNotesSound; /* 0x10 */ AudioBankSound normalNotesSound; /* 0x18 */ AudioBankSound highNotesSound; -} Instrument; // size = 0x20 +} Instrument; // size >= 0x20 typedef struct { - u32 drum0; - u32 drum4; - // u8 releaseRate; - // u8 pan; - // u8 loaded; - // AudioBankSound sound; - // AdsrEnvelope *envelope; -} Drum; // OOT size = 0x8, TODO figure out what is still used. + u8 releaseRate; + u8 pan; + u8 loaded; + AudioBankSound sound; + AdsrEnvelope *envelope; +} Drum; // TODO figure out what is still used. typedef struct { u32 unk_0; @@ -128,10 +126,12 @@ typedef struct { typedef struct { /* 0x000 */ u8 enabled : 1; /* 0x000 */ u8 finished : 1; // never read - /* 0x000 */ u8 muted : 1; + /*!0x000 */ u8 muted : 1; /* 0x000 */ u8 seqDmaInProgress : 1; /* 0x000 */ u8 bankDmaInProgress : 1; /* 0x000 */ u8 recalculateVolume : 1; + /* 0x000 */ u8 pad_0b2 : 1; + /* 0x000 */ u8 unk_0b1 : 1; /* 0x001 */ u8 state; /* 0x002 */ u8 noteAllocPolicy; /* 0x003 */ u8 muteBehavior; @@ -144,21 +144,23 @@ typedef struct { /* 0x00A */ u16 tempoAcc; /* 0x00C */ s16 transposition; /* 0x00E */ u16 delay; - /* 0x010 */ u16 fadeTimer; - /* 0x012 */ u16 fadeTimerUnkEu; - /* 0x014 */ u8* seqData; // buffer of some sort - /* 0x018 */ f32 fadeVolume; // set to 1.0f - /* 0x01C */ f32 fadeVelocity; // set to 0.0f - /* 0x020 */ f32 volume; // set to 0.0f - /* 0x024 */ f32 muteVolumeScale; // set to 0.5f - /* 0x028 */ f32 fadeVolumeScale; - /* 0x02C */ f32 appliedFadeVolume; - /* 0x030 */ struct SequenceChannel* channels[16]; - /* 0x070 */ M64ScriptState scriptState; - /* 0x08C */ u8* shortNoteVelocityTable; - /* 0x090 */ u8* shortNoteDurationTable; - /* 0x094 */ char unk_094[0x8]; // NotePool shifted down 0x8 - /* 0x09C */ NotePool notePool; + /* 0x010 */ char pad_010[0x2]; + /* 0x012 */ u16 fadeTimer; + /* 0x014 */ u16 fadeTimerUnkEu; + /* 0x016 */ char pad_016[0x2]; + /* 0x018 */ u8* seqData; + /*!0x01C */ f32 fadeVolume; + /*!0x020 */ f32 fadeVelocity; + /* 0x024 */ f32 volume; + /*!0x028 */ f32 muteVolumeScale; + /*!0x02C */ f32 fadeVolumeScale; + /*!0x030 */ f32 appliedFadeVolume; + /* 0x034 */ f32 unk_34; + /*!0x038 */ struct SequenceChannel* channels[16]; + /* 0x078 */ M64ScriptState scriptState; + /* 0x094 */ u8* shortNoteVelocityTable; + /* 0x098 */ u8* shortNoteDurationTable; + /*!0x09C */ NotePool notePool; /* 0x0DC */ OSMesgQueue seqDmaMesgQueue; /* 0x0F4 */ OSMesg seqDmaMesg; /* 0x0F8 */ OSIoMesg seqDmaIoMesg; @@ -177,35 +179,54 @@ typedef struct { } AdsrSettings; // size = 0x8 typedef struct { - union { - struct { - /* 0x00 */ u8 bits7 : 1; // pad - /* 0x00 */ u8 bits6 : 1; // pad - /* 0x00 */ u8 bits5 : 1; // pad - /* 0x00 */ u8 bits4 : 1; - /* 0x00 */ u8 bits0 : 4; - } adsrBits; - /* 0x00 */ u8 action; // Must be unionized to zero all bitfields at once. - } adsrAction; - u8 state; // Could be in the upper union in a struct with action. - s16 envIndex; // Could be in the upper union in a struct with action. - s16 delay; - f32 sustain; - f32 velocity; - f32 fadeOutVel; - f32 current; - f32 target; - AdsrEnvelope *envelope; + /*!0x00 */ union { + struct A { + /* 0x00 */ u8 unk_0b80 : 1; + /*!0x00 */ u8 hang : 1; + /*!0x00 */ u8 decay : 1; + /*!0x00 */ u8 release : 1; + /*!0x00 */ u8 state : 4; + } s; + /*!0x00 */ u8 asByte; + } action; + /*!0x01 */ u8 envIndex; + /*!0x02 */ s16 delay; + /*!0x04 */ f32 sustain; + /*!0x08 */ f32 velocity; + /*!0x0C */ f32 fadeOutVel; + /*!0x10 */ f32 current; + /*!0x14 */ f32 target; + /* */ char pad18[4]; + /*!0x1C */ AdsrEnvelope *envelope; } AdsrState; typedef struct { - /* 0x00 */ s8 reverb; - /* 0x01 */ u8 pan; - /* 0x02 */ char unk_02[0x6]; - /* 0x08 */ f32 freqScale; - /* 0x0C */ f32 velocity; - /* 0x10 */ char unk_10[0x8]; -} NoteAttributes; // size = 0x1C + u8 bit0 : 1; + u8 bit1 : 1; + u8 bit2 : 2; + u8 strongRight : 1; + u8 strongLeft : 1; + u8 stereoHeadsetEffects : 1; + u8 usesHeadsetPanEffects : 1; +} ReverbBitsData; + +typedef union { + /* 0x00 */ ReverbBitsData s; + /* 0x00 */ u8 asByte; +} ReverbBits; + +typedef struct { + /*!0x00 */ u8 reverb; + /*!0x01 */ u8 unk_1; + /*!0x02 */ u8 pan; + /*!0x03 */ ReverbBits reverbBits; + /*!0x04 */ u8 unk_4; + /*!0x06 */ u16 unk_6; + /*!0x08 */ f32 freqScale; + /*!0x0C */ f32 velocity; + /*!0x10 */ s16* unk_10; + /*!0x14 */ s16 unk_14[8]; +} NoteAttributes; // size = 0x24 typedef struct SequenceChannel { /* 0x00 */ u8 enabled : 1; @@ -213,58 +234,61 @@ typedef struct SequenceChannel { /* 0x00 */ u8 stopScript : 1; /* 0x00 */ u8 stopSomething2 : 1; // sets SequenceChannelLayer.stopSomething /* 0x00 */ u8 hasInstrument : 1; - /* 0x00 */ u8 stereoHeadsetEffects : 1; + /*!0x00 */ u8 stereoHeadsetEffects : 1; /* 0x00 */ u8 largeNotes : 1; // notes specify duration and velocity /* 0x00 */ u8 unused : 1; // never read, set to 0 - /* 0x01 */ union { - struct { - u8 freqScale : 1; - u8 volume : 1; - u8 pan : 1; - } asBitfields; - u8 asByte; - } changes; - /* 0x02 */ u8 noteAllocPolicy; - /* 0x03 */ u8 muteBehavior; - /* 0x04 */ u8 reverb; // or dry/wet mix - /* 0x05 */ u8 notePriority; // 0-3 - /* 0x06 */ char unk_06[0x1]; - /* 0x07 */ u8 bankId; - /* 0x08 */ u8 reverbIndex; - /* 0x09 */ u8 bookOffset; - /* 0x0A */ u8 newPan; - /* 0x0B */ u8 panChannelWeight; // proportion of pan that comes from the channel (0..128) - /* 0x0C */ u16 vibratoRateStart; // initially 0x800 - /* 0x0E */ u16 vibratoExtentStart; - /* 0x10 */ u16 vibratoRateTarget; // initially 0x800 - /* 0x12 */ u16 vibratoExtentTarget; - /* 0x14 */ u16 vibratoRateChangeDelay; - /* 0x16 */ u16 vibratoExtentChangeDelay; - /* 0x18 */ u16 vibratoDelay; - /* 0x1A */ u16 delay; - /* 0x1C */ f32 volumeScale; - /* 0x20 */ f32 volume; - /* 0x24 */ s16 instOrWave; // either 0 (none), instrument index + 1, or + union { + struct { + /*!0x01 */ u8 freqScale : 1; + /*!0x01 */ u8 volume : 1; + /*!0x01 */ u8 pan : 1; + } s; + /*!0x01 */ u8 asByte; + } changes; + /*!0x02 */ u8 noteAllocPolicy; + /*!0x03 */ u8 muteBehavior; + /*!0x04 */ u8 reverb; // or dry/wet mix + /*!0x05 */ u8 notePriority; // 0-3 + /* 0x06 */ u8 someOtherPriority; + /*!0x07 */ u8 bankId; + /*!0x08 */ u8 reverbIndex; + /*!0x09 */ u8 bookOffset; + /*!0x0A */ u8 newPan; + /*!0x0B */ u8 panChannelWeight; // proportion of pan that comes from the channel (0..128) + /* 0x0C */ u8 unk_0C; + /* 0x0D */ u8 padD[2]; + /* 0x0F */ u8 unk_0F; + /*!0x10 */ u16 vibratoRateStart; + /*!0x12 */ u16 vibratoExtentStart; + /*!0x14 */ u16 vibratoRateTarget; + /*!0x16 */ u16 vibratoExtentTarget; + /*!0x18 */ u16 vibratoRateChangeDelay; + /*!0x1A */ u16 vibratoExtentChangeDelay; + /*!0x1C */ u16 vibratoDelay; + /* 0x1E */ u16 delay; + /* 0x20 */ u16 unk_20; + /* 0x22 */ u16 pad22; + /*!0x24 */ s16 instOrWave; // either 0 (none), instrument index + 1, or // 0x80..0x83 for sawtooth/triangle/sine/square waves. /* 0x26 */ s16 transposition; - /* 0x28 */ s32 pan; - /* 0x2C */ f32 appliedVolume; - /* 0x30 */ f32 freqScale; - /* 0x34 */ u8 (*dynTable)[][2]; - /* 0x3C */ char unk_3C[0x8]; - /* 0x44 */ struct Note* noteUnused; // never read - /* 0x48 */ struct SequenceChannelLayer* layerUnused; // never read - /* 0x4C */ Instrument* instrument; - /* 0x50 */ SequencePlayer* seqPlayer; - //! Changed this to shift the struct, likely incorrect. (Notice the above pad[2]) - /* 0x54 */ struct SequenceChannelLayer* layers[2]; - /* 0x5C */ s8 soundScriptIO[8]; // bridge between sound script and audio lib. For player 2, - // [0] contains enabled, [4] contains sound ID, [5] contains reverb adjustment + /*!0x28 */ f32 volumeScale; + /*!0x2C */ f32 volume; + /*!0x30 */ s32 pan; + /*!0x34 */ f32 appliedVolume; + /* 0x38 */ f32 freqScale; + /* 0x3C */ u8 (*dynTable)[][2]; + /* 0x40 */ struct Note* noteUnused; // never read + /* 0x44 */ struct SequenceChannelLayer* layerUnused; // never read + /* 0x48 */ Instrument* instrument; + /*!0x4C */ SequencePlayer* seqPlayer; + /*!0x54 */ struct SequenceChannelLayer* layers[4]; /* 0x64 */ M64ScriptState scriptState; /* */ AdsrSettings adsr; - /* */ NotePool notePool; - /* 0xCC */ struct Note* test; - /* 0xD0 */ char unk_D0[0x4]; + /*!0x84 */ NotePool notePool; + /* 0xC4 */ s8 soundScriptIO[8]; // bridge between sound script and audio lib + /* 0xCC */ s16* unk_CC; + /* 0xD0 */ ReverbBits reverbBits; + /* 0xD1 */ char unk_D1[0x3]; } SequenceChannel; // Maybe SequenceTrack? @@ -274,37 +298,37 @@ typedef struct SequenceChannelLayer { /* 0x00 */ u8 stopSomething : 1; // ? /* 0x00 */ u8 continuousNotes : 1; // keep the same note for consecutive notes with the same sound /* 0x00 */ u8 unusedEu0b8 : 1; + /* 0x00 */ u8 bit2 : 1; + /* 0x00 */ u8 ignoreDrumPan : 1; // (wrong) /* 0x00 */ u8 notePropertiesNeedInit : 1; - /* 0x00 */ u8 ignoreDrumPan : 1; - /* 0x00 */ u8 bit0 : 1; - /* 0x01 */ char unk_01[0x1]; + /*!0x01 */ ReverbBits reverbBits; /* 0x02 */ u8 instOrWave; /* 0x03 */ u8 status; /* 0x04 */ u8 noteDuration; // set to 0x80 /* 0x05 */ u8 portamentoTargetNote; - /* 0x06 */ u8 pan; // 0..128 - /* 0x07 */ u8 notePan; + /*!0x06 */ u8 pan; // 0..128 + /*!0x07 */ u8 notePan; /* 0x08 */ u16 portamentoTime; /* 0x0A */ s16 transposition; // #semitones added to play commands // (m64 instruction encoding only allows referring to the limited range // 0..0x3f; this makes 0x40..0x7f accessible as well) - /* 0x0C */ f32 freqScale; - /* 0x10 */ f32 velocitySquare; - /* 0x14 */ f32 noteVelocity; + /* 0x0C */ f32 unk0C; + /* 0x10 */ s16 delay; // (wrong) + /* 0x12 */ s16 duration; // (wrong) + /* 0x14 */ f32 unk14; /* 0x18 */ AdsrSettings adsr; - /* 0x20 */ Portamento portamento; - /* 0x2C */ struct Note* note; - /* 0x30 */ f32 noteFreqScale; + /*!0x20 */ Portamento portamento; + /*!0x2C */ struct Note* note; + /*!0x30 */ f32 freqScale; /* 0x34 */ s16 shortNoteDefaultPlayPercentage; /* 0x36 */ s16 playPercentage; // it's not really a percentage... - /* 0x38 */ s16 delay; - /* 0x3A */ s16 duration; + /*!0x38 */ f32 velocitySquare; /* 0x3C */ s16 delayUnused; // set to 'delay', never read - /* 0x40 */ f32 unk_40; - /* 0x44 */ char unk_44[0x4]; + /*!0x40 */ f32 noteVelocity; + /*!0x44 */ f32 noteFreqScale; /* 0x48 */ Instrument* instrument; - /* 0x4C */ AudioBankSound* sound; - /* 0x50 */ SequenceChannel* seqChannel; + /*!0x4C */ AudioBankSound* sound; + /*!0x50 */ SequenceChannel* seqChannel; /* 0x54 */ M64ScriptState scriptState; /* 0x70 */ AudioListItem listItem; /* 0x80 */ char unk_80[0x10]; @@ -332,97 +356,89 @@ typedef struct { } NoteSynthesisState; typedef struct { - /* 0x00 */ struct SequenceChannel* seqChannel; - /* 0x04 */ u32 time; - /* 0x08 */ s16* curve; - /* 0x0C */ f32 extent; - /* 0x10 */ f32 rate; - /* 0x14 */ u8 active; - /* 0x16 */ u16 rateChangeTimer; - /* 0x18 */ u16 extentChangeTimer; - /* 0x1A */ u16 delay; + /*!0x00 */ struct SequenceChannel* seqChannel; // unless this changed to a layer...? + /*!0x04 */ u32 time; + /*!0x08 */ s16* curve; + /*!0x0C */ f32 extent; + /*!0x10 */ f32 rate; + /*!0x14 */ u8 active; + /*!0x16 */ u16 rateChangeTimer; + /*!0x18 */ u16 extentChangeTimer; + /*!0x1A */ u16 delay; } VibratoState; // size = 0x1C typedef struct { - /* 0x00 */ u8 priority; - /* 0x01 */ u8 waveId; - /* 0x02 */ u8 sampleCountIndex; + /*!0x00 */ u8 priority; + /*!0x01 */ u8 waveId; + /*!0x02 */ u8 sampleCountIndex; /* 0x03 */ u8 bankId; /* 0x04 */ u8 unk_04; /* 0x05 */ u8 stereoHeadsetEffects; /* 0x06 */ s16 adsrVolScale; - /* 0x08 */ f32 portamentoFreqScale; - /* 0x0C */ f32 vibratoFreqScale; + /*!0x08 */ f32 portamentoFreqScale; + /*!0x0C */ f32 vibratoFreqScale; /* 0x10 */ SequenceChannelLayer* prevParentLayer; - /* 0x14 */ SequenceChannelLayer* parentLayer; - /* 0x18 */ SequenceChannelLayer* wantedParentLayer; - /* 0x1C */ NoteAttributes attributes; - /* 0x38 */ char unk_38[0xC]; - /* 0x44 */ AdsrState adsr; - // /* 0x4C */ Portamento portamento; - // /* 0x5C */ VibratoState vibratoState; + /*!0x14 */ SequenceChannelLayer* parentLayer; + /*!0x18 */ SequenceChannelLayer* wantedParentLayer; + /*!0x1C */ NoteAttributes attributes; + /*!0x40 */ AdsrState adsr; + // may contain portamento, vibratoState, if those are not part of Note itself } NotePlaybackState; typedef struct { + // (This might be a ReverbBits, and asByte might not exist) union { struct { /* 0x00 */ volatile u8 enabled : 1; /* 0x00 */ u8 needsInit : 1; /* 0x00 */ u8 finished : 1; /* 0x00 */ u8 envMixerNeedsInit : 1; - /* 0x00 */ u8 stereoStrongRight : 1; - /* 0x00 */ u8 stereoStrongLeft : 1; + /*!0x00 */ u8 stereoStrongRight : 1; + /*!0x00 */ u8 stereoStrongLeft : 1; /* 0x00 */ u8 stereoHeadsetEffects : 1; /* 0x00 */ u8 usesHeadsetPanEffects : 1; - } asBitfields; - u8 asByte; + } s; + /* 0x00 */ u8 asByte; } bitField0; union { struct { /* 0x01 */ u8 reverbIndex : 3; - /* 0x01 */ u8 bookOffset : 2; + /*!0x01 */ u8 bookOffset : 2; /* 0x01 */ u8 bit2 : 1; /* 0x01 */ u8 isSyntheticWave : 1; /* 0x01 */ u8 hasTwoAdpcmParts : 1; - } asBitfields; - u8 asByte; + } s; + /* 0x01 */ u8 asByte; } bitField1; - /* 0x02 */ u8 bankId; + /* 0x02 */ u8 unk_2; /* 0x03 */ u8 headsetPanRight; /* 0x04 */ u8 headsetPanLeft; /* 0x05 */ u8 reverbVol; /* 0x06 */ u8 unk_06; // sound shifted by 4. /* 0x07 */ u8 unk_07; // sound shifted by 4. - /* 0x08 */ u16 targetVolLeft; - /* 0x0A */ u16 targetVolRight; + /*!0x08 */ u16 targetVolLeft; + /*!0x0A */ u16 targetVolRight; /* 0x0C */ u16 resamplingRateFixedPoint; // stored as signed but loaded as u16 /* 0x0E */ s16 unk_10; - /* 0x10 */ union { + /*!0x10 */ union { s16* samples; AudioBankSound* audioBankSound; } sound; - /* 0x14 */ u32 unk_14; - /* 0x18 */ char unk_18[0x8]; -} NoteSubEu; + /* 0x14 */ s16* unk_14; + /* 0x18 */ char pad_18[0x8]; +} NoteSubEu; // size = 0x20 typedef struct Note { - /* 0x00 */ AudioListItem listItem; + /*!0x00 */ AudioListItem listItem; /* 0x10 */ NoteSynthesisState synthesisState; - /* 0x24 */ char unk_24[0xC]; - /* 0x30 */ NotePlaybackState playbackState; - /* 0x90 */ char unk_90[0x2]; - /* 0x92 */ u16 unk_92; - /* 0x94 */ u16 unk_94; - /* 0x96 */ char unk_96[0x1A]; - /* 0xB0 */ u8 unk_B0; - /* 0xB4 */ char unk_B4[0xB]; + /* 0x24 */ char pad_24[0xC]; + /*!0x30 */ NotePlaybackState playbackState; + /*!0x90 */ Portamento portamento; + /*!0x9C */ VibratoState vibratoState; // size 0x1C + /* 0xB8 */ char pad_B8[0x4]; /* 0xBC */ u32 unk_BC; - /* 0xC0 */ NoteSubEu noteSubEu; - - // Possibly removed? Changed? Likely needs fit within this all here. - // /* 0x74, 0x7C */ Portamento portamento; - // /* 0x84, 0x8C */ VibratoState vibratoState; -} Note; + /*!0xC0 */ NoteSubEu noteSubEu; +} Note; // size = 0xE0 typedef struct { /* 0x00 */ s16 presetUnk4; // audio frames per vsync? @@ -448,7 +464,9 @@ typedef struct { } SoundAllocPool; typedef struct { - /* 0x0000 */ char unk_0000[0x2844]; + /* 0x0000 */ char unk_0000[0x14]; + /* 0x0014 */ NoteSubEu* gNoteSubsEu; + /* 0x0018 */ char unk_0014[0x282C]; /* 0x2844 */ CtlEntry* gCtlEntries; /* 0x2848 */ char unk_2848[0x4]; /* 0x284C */ AudioBufferParametersEU gAudioBufferParameters; @@ -460,33 +478,39 @@ typedef struct { /* 0x29C0 */ SoundAllocPool gNotesAndBuffersPool; /* 0x29D0 */ char unk_29D0[0x0B5C]; /* 0x352C */ Note* gNotes; + /* 0x3530 */ char unk_3530[0x2654]; + /* 0x5B84 */ s32 gNoteSubEuOffset; } AudioContext; - -// These two are similar to NoteSubEu. ReverbBits may be shared in both. typedef struct { - u8 bit0 : 1; - u8 bit1 : 1; - u8 bit2 : 2; - u8 strongRight : 1; - u8 strongLeft : 1; - u8 stereoHeadsetEffects : 1; - u8 usesHeadsetPanEffects : 1; -} ReverbBits; - -typedef struct { - /* 0x00 */ u8 reverb; - /* 0x01 */ u8 bankId; - /* 0x02 */ u8 pan; - /* 0x03 */ ReverbBits reverbBits; - /* 0x04 */ f32 velocity; - /* 0x08 */ f32 unk_8; + /*!0x00 */ u8 reverb; // volume + /* 0x01 */ u8 unk_1; + /*!0x02 */ u8 pan; + /*!0x03 */ ReverbBits reverbBits; + /*!0x04 */ f32 frequency; + /*!0x08 */ f32 velocity; /* 0x0C */ char unk_0C[0x4]; - /* 0x10 */ u32 unk_10; + /* 0x10 */ s16* unk_10; /* 0x14 */ u8 unk_14; /* 0x16 */ u16 unk_16; } Reverb; // size = 0x1C (May be longer) #define NO_LAYER ((SequenceChannelLayer*)(-1)) +#define NO_CHANNEL ((SequenceChannel*)(-1)) + +#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_DISABLE 0 +#define ADSR_HANG -1 +#define ADSR_GOTO -2 +#define ADSR_RESTART -3 #endif diff --git a/spec b/spec index b19bfd3578..e61fb4f129 100644 --- a/spec +++ b/spec @@ -413,16 +413,16 @@ beginseg include "build/src/code/code_800DACC0.o" include "build/data/code_800DACC0.data.o" include "build/data/code_800DACC0.bss.o" - include "build/src/code/code_800DDE20.o" + include "build/src/code/audio_heap.o" include "build/src/code/code_800E11F0.o" include "build/data/code_800E11F0.data.o" include "build/data/code_800E11F0.rodata.o" include "build/src/libultra_code/code_800E6840.o" include "build/src/libultra_code/osAiSetNextBuffer.o" include "build/src/code/audio_playback.o" - include "build/src/code/code_800E88C0.o" - include "build/data/code_800E88C0.data.o" - include "build/src/code/code_800E9340.o" + include "build/src/code/audio_effects.o" + include "build/data/audio_effects.data.o" + include "build/src/code/audio_seqplayer.o" include "build/src/code/code_800EC960.o" include "build/data/code_800EC960.data.o" include "build/src/code/code_800F7260.o" diff --git a/src/code/audio_effects.c b/src/code/audio_effects.c new file mode 100644 index 0000000000..dac0aa48a7 --- /dev/null +++ b/src/code/audio_effects.c @@ -0,0 +1,331 @@ +#include +#include + +void Audio_SequenceChannelProcessSound(SequenceChannel* seqChannel, s32 recalculateVolume, s32 b) { + f32 channelVolume; + f32 chanFreqScale; + s32 i; + + if (seqChannel->changes.s.volume || recalculateVolume) { + channelVolume = seqChannel->volume * seqChannel->volumeScale * seqChannel->seqPlayer->appliedFadeVolume; + if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & 0x20)) { + channelVolume = seqChannel->seqPlayer->muteVolumeScale * channelVolume; + } + seqChannel->appliedVolume = channelVolume * channelVolume; + } + + if (seqChannel->changes.s.pan) { + seqChannel->pan = seqChannel->newPan * seqChannel->panChannelWeight; + } + + chanFreqScale = seqChannel->freqScale; + if (b != 0) { + chanFreqScale *= seqChannel->seqPlayer->unk_34; + seqChannel->changes.s.freqScale = 1; + } + + for (i = 0; i < 4; i++) { + SequenceChannelLayer* layer = seqChannel->layers[i]; + if (layer != NULL && layer->enabled && layer->note != NULL) { + if (layer->notePropertiesNeedInit) { + layer->noteFreqScale = layer->freqScale * chanFreqScale; + layer->noteVelocity = layer->velocitySquare * seqChannel->appliedVolume; + layer->notePan = (seqChannel->pan + layer->pan * (0x80 - seqChannel->panChannelWeight)) >> 7; + layer->notePropertiesNeedInit = 0; + } else { + if (seqChannel->changes.s.freqScale) { + layer->noteFreqScale = layer->freqScale * chanFreqScale; + } + if (seqChannel->changes.s.volume || recalculateVolume) { + layer->noteVelocity = layer->velocitySquare * seqChannel->appliedVolume; + } + if (seqChannel->changes.s.pan) { + layer->notePan = (seqChannel->pan + layer->pan * (0x80 - seqChannel->panChannelWeight)) >> 7; + } + } + } + } + seqChannel->changes.asByte = 0; +} + +void Audio_SequencePlayerProcessSound(SequencePlayer* seqPlayer) { + s32 i; + + if (seqPlayer->fadeTimer != 0) { + seqPlayer->fadeVolume += seqPlayer->fadeVelocity; + seqPlayer->recalculateVolume = 1; + + if (seqPlayer->fadeVolume > 1.0f) { + seqPlayer->fadeVolume = 1.0f; + } + if (seqPlayer->fadeVolume < 0) { + seqPlayer->fadeVolume = 0; + } + + if (--seqPlayer->fadeTimer == 0 && seqPlayer->state == 2) { + Audio_SequencePlayerDisable(seqPlayer); + return; + } + } + + if (seqPlayer->recalculateVolume) { + seqPlayer->appliedFadeVolume = seqPlayer->fadeVolume * seqPlayer->fadeVolumeScale; + } + + for (i = 0; i < 16; i++) { + if (seqPlayer->channels[i]->enabled == 1) { + Audio_SequenceChannelProcessSound(seqPlayer->channels[i], seqPlayer->recalculateVolume, seqPlayer->unk_0b1); + } + } + + seqPlayer->recalculateVolume = 0; +} + +f32 Audio_GetPortamentoFreqScale(Portamento* p) { + u32 loResCur; + f32 result; + + p->cur += p->speed; + loResCur = (p->cur >> 8) & 0xff; + + if (loResCur >= 127) { + loResCur = 127; + p->mode = 0; + } + + result = 1.0f + p->extent * (gPitchBendFrequencyScale[loResCur + 128] - 1.0f); + return result; +} + +s16 Audio_GetVibratoPitchChange(VibratoState* vib) { + s32 index; + vib->time += (s32)vib->rate; + index = (vib->time >> 10) & 0x3F; + return vib->curve[index]; +} + +f32 Audio_GetVibratoFreqScale(VibratoState* vib) { + f32 pitchChange; + f32 extent; + f32 invExtent; + f32 result; + f32 temp; + f32 twoToThe16th = 65536.0f; + s32 one = 1; + SequenceChannel* channel = vib->seqChannel; + + if (vib->delay != 0) { + vib->delay--; + return 1; + } + + if (channel != NO_CHANNEL) { + if (vib->extentChangeTimer) { + if (vib->extentChangeTimer == 1) { + vib->extent = (s32)channel->vibratoExtentTarget; + } else { + vib->extent += ((s32)channel->vibratoExtentTarget - vib->extent) / (s32)vib->extentChangeTimer; + } + + vib->extentChangeTimer--; + } else if (channel->vibratoExtentTarget != (s32)vib->extent) { + if ((vib->extentChangeTimer = channel->vibratoExtentChangeDelay) == 0) { + vib->extent = (s32)channel->vibratoExtentTarget; + } + } + + if (vib->rateChangeTimer) { + if (vib->rateChangeTimer == 1) { + vib->rate = (s32)channel->vibratoRateTarget; + } else { + vib->rate += ((s32)channel->vibratoRateTarget - vib->rate) / (s32)vib->rateChangeTimer; + } + + vib->rateChangeTimer--; + } else if (channel->vibratoRateTarget != (s32)vib->rate) { + if ((vib->rateChangeTimer = channel->vibratoRateChangeDelay) == 0) { + vib->rate = (s32)channel->vibratoRateTarget; + } + } + } + + if (vib->extent == 0) { + return 1.0f; + } + + pitchChange = Audio_GetVibratoPitchChange(vib) + 32768.0f; + temp = vib->extent / 4096.0f; + extent = temp + 1.0f; + invExtent = 1.0f / extent; + + // fakematch: 2^16 and 1 need to be set at the very top of this function, + // or else the addresses of D_80130510 and D_80130514 get computed once + // instead of twice. 'temp' is also a fakematch sign; removing it causes + // regalloc differences and reorderings at the top of the function. + result = 1.0f / ((extent - invExtent) * pitchChange / twoToThe16th + invExtent); + D_80130510 += result; + D_80130514 += one; + return result; +} + +void Audio_NoteVibratoUpdate(Note* note) { + if (note->portamento.mode != 0) { + note->playbackState.portamentoFreqScale = Audio_GetPortamentoFreqScale(¬e->portamento); + } + if (note->vibratoState.active) { + note->playbackState.vibratoFreqScale = Audio_GetVibratoFreqScale(¬e->vibratoState); + } +} + +void Audio_NoteVibratoInit(Note* note) { + VibratoState* vib; + SequenceChannel* seqChannel; + + note->playbackState.vibratoFreqScale = 1.0f; + + vib = ¬e->vibratoState; + + vib->active = 1; + vib->time = 0; + + vib->curve = gWaveSamples[2]; + vib->seqChannel = note->playbackState.parentLayer->seqChannel; + seqChannel = vib->seqChannel; + if ((vib->extentChangeTimer = seqChannel->vibratoExtentChangeDelay) == 0) { + vib->extent = (s32)seqChannel->vibratoExtentTarget; + } else { + vib->extent = (s32)seqChannel->vibratoExtentStart; + } + + if ((vib->rateChangeTimer = seqChannel->vibratoRateChangeDelay) == 0) { + vib->rate = (s32)seqChannel->vibratoRateTarget; + } else { + vib->rate = (s32)seqChannel->vibratoRateStart; + } + vib->delay = seqChannel->vibratoDelay; +} + +void Audio_NotePortamentoInit(Note* note) { + note->playbackState.portamentoFreqScale = 1.0f; + note->portamento = note->playbackState.parentLayer->portamento; +} + +void Audio_AdsrInit(AdsrState* adsr, AdsrEnvelope* envelope, s16* volOut) { + adsr->action.asByte = 0; + adsr->delay = 0; + adsr->envelope = envelope; + adsr->sustain = 0.0f; + adsr->current = 0.0f; + // (An older versions of the audio engine used in Super Mario 64 did + // adsr->volOut = volOut. That line and associated struct member were + // removed, but the function parameter was forgotten and remains.) +} + +f32 Audio_AdsrUpdate(AdsrState* adsr) { + u8 state = adsr->action.s.state; + switch (state) { + case ADSR_STATE_DISABLED: + return 0.0f; + + case ADSR_STATE_INITIAL: { + if (adsr->action.s.hang) { + adsr->action.s.state = ADSR_STATE_HANG; + break; + } + // fallthrough + } + + case ADSR_STATE_START_LOOP: + adsr->envIndex = 0; + adsr->action.s.state = ADSR_STATE_LOOP; + // fallthrough + + retry: + case ADSR_STATE_LOOP: + adsr->delay = adsr->envelope[adsr->envIndex].delay; + switch (adsr->delay) { + case ADSR_DISABLE: + adsr->action.s.state = ADSR_STATE_DISABLED; + break; + case ADSR_HANG: + adsr->action.s.state = ADSR_STATE_HANG; + break; + case ADSR_GOTO: + adsr->envIndex = adsr->envelope[adsr->envIndex].arg; + goto retry; + case ADSR_RESTART: + adsr->action.s.state = ADSR_STATE_INITIAL; + break; + + default: + adsr->delay *= D_801719EC; + if (adsr->delay == 0) { + adsr->delay = 1; + } + adsr->target = adsr->envelope[adsr->envIndex].arg / 32767.0f; + adsr->target = adsr->target * adsr->target; + adsr->velocity = (adsr->target - adsr->current) / adsr->delay; + adsr->action.s.state = ADSR_STATE_FADE; + adsr->envIndex++; + break; + } + if (adsr->action.s.state != ADSR_STATE_FADE) { + break; + } + // fallthrough + + case ADSR_STATE_FADE: + adsr->current += adsr->velocity; + if (--adsr->delay <= 0) { + adsr->action.s.state = ADSR_STATE_LOOP; + } + // fallthrough + + case ADSR_STATE_HANG: + break; + + case ADSR_STATE_DECAY: + case ADSR_STATE_RELEASE: { + adsr->current -= adsr->fadeOutVel; + if (adsr->sustain != 0.0f && state == ADSR_STATE_DECAY) { + if (adsr->current < adsr->sustain) { + adsr->current = adsr->sustain; + adsr->delay = 128; + adsr->action.s.state = ADSR_STATE_SUSTAIN; + } + break; + } + + if (adsr->current < 0.00001f) { + adsr->current = 0.0f; + adsr->action.s.state = ADSR_STATE_DISABLED; + } + break; + } + + case ADSR_STATE_SUSTAIN: + adsr->delay -= 1; + if (adsr->delay == 0) { + adsr->action.s.state = ADSR_STATE_RELEASE; + } + break; + } + + if (adsr->action.s.decay) { + adsr->action.s.state = ADSR_STATE_DECAY; + adsr->action.s.decay = 0; + } + + if (adsr->action.s.release) { + adsr->action.s.state = ADSR_STATE_RELEASE; + adsr->action.s.release = 0; + } + + if (adsr->current < 0.0f) { + return 0.0f; + } + if (adsr->current > 1.0f) { + return 1.0f; + } + return adsr->current; +} diff --git a/src/code/audio_heap.c b/src/code/audio_heap.c new file mode 100644 index 0000000000..2d04112445 --- /dev/null +++ b/src/code/audio_heap.c @@ -0,0 +1,106 @@ +#include +#include + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DDE20.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DDE3C.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DDF80.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE048.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE12C.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE1B4.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE238.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE258.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE2B0.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/Audio_SoundAlloc.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE344.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE380.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE3DC.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE434.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE45C.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE470.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE4A0.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE4B0.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE5F0.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE650.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE6D4.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE758.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE81C.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DE8E0.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DF074.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DF0CC.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DF1D8.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DF5AC.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DF5DC.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DF630.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DF688.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DF7BC.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DF7C4.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DF888.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DF8F4.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800DFBF8.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E04E8.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0540.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E05C4.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0634.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E06CC.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0964.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0AD8.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0BB4.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0BF8.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0C80.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0CBC.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0E0C.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0E6C.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0E90.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E0EB4.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_heap/func_800E1148.s") diff --git a/src/code/audio_playback.c b/src/code/audio_playback.c index 61041a52ab..790a5ecd09 100644 --- a/src/code/audio_playback.c +++ b/src/code/audio_playback.c @@ -10,27 +10,27 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) { f32 vel; u8 pan; u8 reverbVol; - ReverbBits sp24; + ReverbBitsData sp24; s32 stereoHeadsetEffects = note->playbackState.stereoHeadsetEffects; - vel = reverb->unk_8; + vel = reverb->velocity; pan = reverb->pan; reverbVol = reverb->reverb; - sp24 = reverb->reverbBits; + sp24 = reverb->reverbBits.s; - sub->bitField0.asByte = note->noteSubEu.bitField0.asByte & 0xFF; - sub->bitField1.asByte = note->noteSubEu.bitField1.asByte & 0xFF; + sub->bitField0.s = note->noteSubEu.bitField0.s; + sub->bitField1.s = note->noteSubEu.bitField1.s; sub->sound.samples = note->noteSubEu.sound.samples; sub->unk_06 = note->noteSubEu.unk_06; - Audio_NoteSetResamplingRate(sub, reverb->velocity); + Audio_NoteSetResamplingRate(sub, reverb->frequency); pan &= 0x7F; - sub->bitField0.asBitfields.stereoStrongRight = 0; - sub->bitField0.asBitfields.stereoStrongLeft = 0; - sub->bitField0.asBitfields.stereoHeadsetEffects = sp24.stereoHeadsetEffects; - sub->bitField0.asBitfields.usesHeadsetPanEffects = sp24.usesHeadsetPanEffects; + sub->bitField0.s.stereoStrongRight = 0; + sub->bitField0.s.stereoStrongLeft = 0; + sub->bitField0.s.stereoHeadsetEffects = sp24.stereoHeadsetEffects; + sub->bitField0.s.usesHeadsetPanEffects = sp24.usesHeadsetPanEffects; if (stereoHeadsetEffects && gSoundMode == 1) { smallPanIndex = pan >> 1; if (smallPanIndex > 0x3f) { @@ -39,7 +39,7 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) { sub->headsetPanLeft = gHeadsetPanQuantization[smallPanIndex]; sub->headsetPanRight = gHeadsetPanQuantization[0x3f - smallPanIndex]; - sub->bitField1.asBitfields.hasTwoAdpcmParts = 1; + sub->bitField1.s.hasTwoAdpcmParts = 1; volLeft = gHeadsetPanVolume[pan]; volRight = gHeadsetPanVolume[0x7f - pan]; @@ -47,7 +47,7 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) { strongLeft = strongRight = 0; sub->headsetPanRight = 0; sub->headsetPanLeft = 0; - sub->bitField1.asBitfields.hasTwoAdpcmParts = 0; + sub->bitField1.s.hasTwoAdpcmParts = 0; volLeft = gStereoPanVolume[pan]; volRight = gStereoPanVolume[0x7f - pan]; @@ -57,34 +57,34 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) { strongRight = 1; } - sub->bitField0.asBitfields.stereoStrongRight = strongRight; - sub->bitField0.asBitfields.stereoStrongLeft = strongLeft; + sub->bitField0.s.stereoStrongRight = strongRight; + sub->bitField0.s.stereoStrongLeft = strongLeft; switch (sp24.bit2) { case 0: break; case 1: - sub->bitField0.asBitfields.stereoStrongRight = sp24.strongRight; - sub->bitField0.asBitfields.stereoStrongLeft = sp24.strongLeft; + sub->bitField0.s.stereoStrongRight = sp24.strongRight; + sub->bitField0.s.stereoStrongLeft = sp24.strongLeft; break; case 2: - sub->bitField0.asBitfields.stereoStrongRight = sp24.strongRight | strongRight; - sub->bitField0.asBitfields.stereoStrongLeft = sp24.strongLeft | strongLeft; + sub->bitField0.s.stereoStrongRight = sp24.strongRight | strongRight; + sub->bitField0.s.stereoStrongLeft = sp24.strongLeft | strongLeft; break; case 3: - sub->bitField0.asBitfields.stereoStrongRight = sp24.strongRight ^ strongRight; - sub->bitField0.asBitfields.stereoStrongLeft = sp24.strongLeft ^ strongLeft; + sub->bitField0.s.stereoStrongRight = sp24.strongRight ^ strongRight; + sub->bitField0.s.stereoStrongLeft = sp24.strongLeft ^ strongLeft; break; } } else if (gSoundMode == 3) { - sub->bitField0.asBitfields.stereoHeadsetEffects = 0; - sub->bitField0.asBitfields.usesHeadsetPanEffects = 0; + sub->bitField0.s.stereoHeadsetEffects = 0; + sub->bitField0.s.usesHeadsetPanEffects = 0; volLeft = 0.707f; volRight = 0.707f; } else { - sub->bitField0.asBitfields.stereoStrongRight = sp24.strongRight; - sub->bitField0.asBitfields.stereoStrongLeft = sp24.strongLeft; + sub->bitField0.s.stereoStrongRight = sp24.strongRight; + sub->bitField0.s.stereoStrongLeft = sp24.strongLeft; volLeft = gDefaultPanVolume[pan]; volRight = gDefaultPanVolume[0x7f - pan]; } @@ -95,7 +95,7 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) { sub->targetVolLeft = (s32)((vel * volLeft) * 4095.999f); sub->targetVolRight = (s32)((vel * volRight) * 4095.999f); - sub->bankId = reverb->bankId; + sub->unk_2 = reverb->unk_1; sub->unk_14 = reverb->unk_10; sub->unk_07 = reverb->unk_14; sub->unk_10 = reverb->unk_16; @@ -106,7 +106,7 @@ void Audio_NoteSetResamplingRate(NoteSubEu* noteSubEu, f32 resamplingRateInput) f32 resamplingRate = 0.0f; if (resamplingRateInput < 2.0f) { - noteSubEu->bitField1.asBitfields.isSyntheticWave = 0; + noteSubEu->bitField1.s.isSyntheticWave = 0; if (1.99998f < resamplingRateInput) { resamplingRate = 1.99998f; @@ -115,7 +115,7 @@ void Audio_NoteSetResamplingRate(NoteSubEu* noteSubEu, f32 resamplingRateInput) } } else { - noteSubEu->bitField1.asBitfields.isSyntheticWave = 1; + noteSubEu->bitField1.s.isSyntheticWave = 1; if (3.99996f < resamplingRateInput) { resamplingRate = 1.99998f; } else { @@ -135,25 +135,166 @@ void Audio_NoteInit(Note* note) { } note->playbackState.unk_04 = 0; - note->playbackState.adsr.adsrAction.adsrBits.bits0 = 1; + note->playbackState.adsr.action.s.state = ADSR_STATE_INITIAL; note->noteSubEu = gDefaultNoteSub; } void Audio_NoteDisable(Note* note) { - if (note->noteSubEu.bitField0.asBitfields.needsInit == 1) { - note->noteSubEu.bitField0.asBitfields.needsInit = 0; + if (note->noteSubEu.bitField0.s.needsInit == 1) { + note->noteSubEu.bitField0.s.needsInit = 0; } note->playbackState.priority = 0; - note->noteSubEu.bitField0.asBitfields.enabled = 0; + note->noteSubEu.bitField0.s.enabled = 0; note->playbackState.unk_04 = 0; - note->noteSubEu.bitField0.asBitfields.finished = 0; + note->noteSubEu.bitField0.s.finished = 0; note->playbackState.parentLayer = NO_LAYER; note->playbackState.prevParentLayer = NO_LAYER; - note->playbackState.adsr.adsrAction.adsrBits.bits0 = 0; - note->playbackState.adsr.fadeOutVel = 0; + note->playbackState.adsr.action.s.state = ADSR_STATE_DISABLED; + note->playbackState.adsr.current = 0; } -#pragma GLOBAL_ASM("asm/non_matchings/code/audio_playback/Audio_ProcessNotes.s") +void Audio_ProcessNotes(void) { + s32 pad[2]; + NoteAttributes* attributes; + NoteSubEu* noteSubEu2; + NoteSubEu* noteSubEu; + Note* note; + NotePlaybackState* playbackState; + Reverb reverb; + u8 bookOffset; + f32 scale; + s32 i; + + for (i = 0; i < gAudioContext.gMaxSimultaneousNotes; i++) { + note = &gAudioContext.gNotes[i]; + noteSubEu2 = &gAudioContext.gNoteSubsEu[gAudioContext.gNoteSubEuOffset + i]; + playbackState = ¬e->playbackState; + if (playbackState->parentLayer != NO_LAYER) { + if ((u32)playbackState->parentLayer < 0x7FFFFFFFU) { + continue; + } + + if (note != playbackState->parentLayer->note && playbackState->unk_04 == 0) { + playbackState->adsr.action.s.release = 1; + playbackState->adsr.fadeOutVel = gAudioContext.gAudioBufferParameters.updatesPerFrameInv; + playbackState->priority = 1; + playbackState->unk_04 = 2; + goto out; + } else if (!playbackState->parentLayer->enabled && playbackState->unk_04 == 0 && + playbackState->priority >= 1) { + // do nothing + } else if (playbackState->parentLayer->seqChannel->seqPlayer == NULL) { + Audio_SequenceChannelDisable(playbackState->parentLayer->seqChannel); + playbackState->priority = 1; + playbackState->unk_04 = 1; + continue; + } else if (playbackState->parentLayer->seqChannel->seqPlayer->muted && + (playbackState->parentLayer->seqChannel->muteBehavior & 0x40)) { + // do nothing + } else { + goto out; + } + + Audio_SeqChanLayerNoteRelease(playbackState->parentLayer); + Audio_AudioListRemove(¬e->listItem); + Audio_AudioListPushFront(¬e->listItem.pool->decaying, ¬e->listItem); + playbackState->priority = 1; + playbackState->unk_04 = 2; + } else if (playbackState->unk_04 == 0 && playbackState->priority >= 1) { + continue; + } + + out: + if (playbackState->priority != 0) { + if (1) {} + noteSubEu = ¬e->noteSubEu; + if (playbackState->unk_04 >= 1 || noteSubEu->bitField0.s.finished) { + if (playbackState->adsr.action.s.state == ADSR_STATE_DISABLED || noteSubEu->bitField0.s.finished) { + if (playbackState->wantedParentLayer != NO_LAYER) { + Audio_NoteDisable(note); + if (playbackState->wantedParentLayer->seqChannel != NULL) { + Audio_NoteInitForLayer(note, playbackState->wantedParentLayer); + Audio_NoteVibratoInit(note); + Audio_NotePortamentoInit(note); + Audio_AudioListRemove(¬e->listItem); + Audio_AudioListPushBack(¬e->listItem.pool->active, ¬e->listItem); + playbackState->wantedParentLayer = NO_LAYER; + // don't skip + } else { + Audio_NoteDisable(note); + Audio_AudioListRemove(¬e->listItem); + Audio_AudioListPushBack(¬e->listItem.pool->disabled, ¬e->listItem); + playbackState->wantedParentLayer = NO_LAYER; + goto skip; + } + } else { + if (playbackState->parentLayer != NO_LAYER) { + playbackState->parentLayer->ignoreDrumPan = 1; // wrong field name + } + Audio_NoteDisable(note); + Audio_AudioListRemove(¬e->listItem); + Audio_AudioListPushBack(¬e->listItem.pool->disabled, ¬e->listItem); + continue; + } + } + } else if (playbackState->adsr.action.s.state == ADSR_STATE_DISABLED) { + if (playbackState->parentLayer != NO_LAYER) { + playbackState->parentLayer->ignoreDrumPan = 1; // wrong field name + } + Audio_NoteDisable(note); + Audio_AudioListRemove(¬e->listItem); + Audio_AudioListPushBack(¬e->listItem.pool->disabled, ¬e->listItem); + continue; + } + + scale = Audio_AdsrUpdate(&playbackState->adsr); + Audio_NoteVibratoUpdate(note); + attributes = &playbackState->attributes; + if (playbackState->unk_04 == 1 || playbackState->unk_04 == 2) { + reverb.frequency = attributes->freqScale; + reverb.velocity = attributes->velocity; + reverb.pan = attributes->pan; + reverb.reverb = attributes->reverb; + reverb.reverbBits = attributes->reverbBits; + reverb.unk_1 = attributes->unk_1; + reverb.unk_10 = attributes->unk_10; + reverb.unk_14 = attributes->unk_4; + reverb.unk_16 = attributes->unk_6; + bookOffset = noteSubEu->bitField1.s.bookOffset; + } else { + SequenceChannelLayer* layer = playbackState->parentLayer; + SequenceChannel* channel = layer->seqChannel; + + reverb.frequency = layer->noteFreqScale; + reverb.velocity = layer->noteVelocity; + reverb.pan = layer->notePan; + if (layer->reverbBits.asByte == 0) { + reverb.reverbBits = channel->reverbBits; + } else { + reverb.reverbBits = layer->reverbBits; + } + reverb.reverb = channel->reverb; + reverb.unk_1 = channel->unk_0C; + reverb.unk_10 = channel->unk_CC; + reverb.unk_14 = channel->unk_0F; + reverb.unk_16 = channel->unk_20; + bookOffset = channel->bookOffset & 0x7; + + if (channel->seqPlayer->muted && (channel->muteBehavior & 8)) { + reverb.frequency = 0.0f; + reverb.velocity = 0.0f; + } + } + + reverb.frequency *= playbackState->vibratoFreqScale * playbackState->portamentoFreqScale; + reverb.frequency *= gAudioContext.gAudioBufferParameters.resampleRate; + reverb.velocity *= scale; + Audio_NoteSetVelPanReverb(note, noteSubEu2, &reverb); + noteSubEu->bitField1.s.bookOffset = bookOffset; + skip:; + } + } +} AudioBankSound* Audio_InstrumentGetAudioBankSound(Instrument* instrument, s32 semitone) { AudioBankSound* sound; @@ -256,8 +397,6 @@ UnkInstrument* Audio_GetUnkInstrument(s32 bankId, s32 unkInstrumentId) { } s32 func_800E7744(s32 instrument, s32 bankId, s32 instId, UnkInstrument* arg3) { - UnkInstrument* temp_t7; - if (bankId == 0xFF) { return -1; } @@ -271,7 +410,7 @@ s32 func_800E7744(s32 instrument, s32 bankId, s32 instId, UnkInstrument* arg3) { if (instId >= (gAudioContext.gCtlEntries[bankId].numDrums)) { return -3; } - gAudioContext.gCtlEntries[bankId].drums[instId] = arg3; + gAudioContext.gCtlEntries[bankId].drums[instId] = (void*)arg3; break; case 1: @@ -285,19 +424,18 @@ s32 func_800E7744(s32 instrument, s32 bankId, s32 instId, UnkInstrument* arg3) { if (instId >= (gAudioContext.gCtlEntries[bankId].numInstruments)) { return -3; } - gAudioContext.gCtlEntries[bankId].instruments[instId] = arg3; + gAudioContext.gCtlEntries[bankId].instruments[instId] = (void*)arg3; break; } return 0; } -#ifdef NON_EQUIVALENT -// This code is SM64 PAL's version with changes made to build here (and a couple legitimate changes made in the -// function). This function needs massive work, hence why it is not set for NON_MATCHING void Audio_SeqChanLayerDecayRelease(SequenceChannelLayer* seqLayer, s32 target) { Note* note; NoteAttributes* attributes; + SequenceChannel* chan; + s32 i; if (seqLayer == NO_LAYER) { return; @@ -318,56 +456,79 @@ void Audio_SeqChanLayerDecayRelease(SequenceChannelLayer* seqLayer, s32 target) if (note->playbackState.parentLayer != seqLayer) { if (note->playbackState.parentLayer == NO_LAYER && note->playbackState.wantedParentLayer == NO_LAYER && - note->playbackState.prevParentLayer == seqLayer && target != 6) { + note->playbackState.prevParentLayer == seqLayer && target != ADSR_STATE_DECAY) { note->playbackState.adsr.fadeOutVel = gAudioContext.gAudioBufferParameters.updatesPerFrameInv; - note->playbackState.adsr.adsrAction.action |= 0x10; + note->playbackState.adsr.action.s.release = 1; } return; } - seqLayer->status = 0; - if (note->playbackState.adsr.state != 6) { + if (note->playbackState.adsr.action.s.state != ADSR_STATE_DECAY) { attributes->freqScale = seqLayer->noteFreqScale; attributes->velocity = seqLayer->noteVelocity; attributes->pan = seqLayer->notePan; + if (seqLayer->seqChannel != NULL) { - attributes->reverb = seqLayer->seqChannel->reverb; + chan = seqLayer->seqChannel; + attributes->reverb = chan->reverb; + attributes->unk_1 = chan->unk_0C; + attributes->unk_10 = chan->unk_CC; + + if (attributes->unk_10 != NULL) { + for (i = 0; i < 8; i++) { + attributes->unk_14[i] = attributes->unk_10[i]; + } + attributes->unk_10 = attributes->unk_14; + } + + attributes->unk_6 = chan->unk_20; + attributes->unk_4 = chan->unk_0F; + if (chan->seqPlayer->muted && (chan->muteBehavior & 8)) { + note->noteSubEu.bitField0.s.finished = 1; + } + + if (seqLayer->reverbBits.asByte == 0) { + attributes->reverbBits = chan->reverbBits; + } else { + attributes->reverbBits = seqLayer->reverbBits; + } + note->playbackState.priority = chan->someOtherPriority; + } else { + attributes->reverbBits = seqLayer->reverbBits; + note->playbackState.priority = 1; } - note->playbackState.priority = 1; + note->playbackState.prevParentLayer = note->playbackState.parentLayer; note->playbackState.parentLayer = NO_LAYER; - if (target == 7) { + if (target == ADSR_STATE_RELEASE) { note->playbackState.adsr.fadeOutVel = gAudioContext.gAudioBufferParameters.updatesPerFrameInv; - note->playbackState.adsr.adsrAction.action |= 0x10; + note->playbackState.adsr.action.s.release = 1; + note->playbackState.unk_04 = 2; } else { - note->playbackState.adsr.adsrAction.action |= 0x20; + note->playbackState.unk_04 = 1; + note->playbackState.adsr.action.s.decay = 1; if (seqLayer->adsr.releaseRate == 0) { - note->playbackState.adsr.fadeOutVel = seqLayer->seqChannel->adsr.releaseRate * - gAudioContext.gAudioBufferParameters.unkUpdatesPerFrameScaled; + note->playbackState.adsr.fadeOutVel = D_801726A0[seqLayer->seqChannel->adsr.releaseRate]; } else { - note->playbackState.adsr.fadeOutVel = - seqLayer->adsr.releaseRate * gAudioContext.gAudioBufferParameters.unkUpdatesPerFrameScaled; + note->playbackState.adsr.fadeOutVel = D_801726A0[seqLayer->adsr.releaseRate]; } note->playbackState.adsr.sustain = ((f32)(s32)(seqLayer->seqChannel->adsr.sustain) * note->playbackState.adsr.current) / 256.0f; } } - if (target == 6) { + if (target == ADSR_STATE_DECAY) { Audio_AudioListRemove(¬e->listItem); Audio_AudioListPushFront(¬e->listItem.pool->decaying, ¬e->listItem); } } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/audio_playback/Audio_SeqChanLayerDecayRelease.s") -#endif void Audio_SeqChanLayerNoteDecay(SequenceChannelLayer* seqLayer) { - Audio_SeqChanLayerDecayRelease(seqLayer, 6); + Audio_SeqChanLayerDecayRelease(seqLayer, ADSR_STATE_DECAY); } void Audio_SeqChanLayerNoteRelease(SequenceChannelLayer* seqLayer) { - Audio_SeqChanLayerDecayRelease(seqLayer, 7); + Audio_SeqChanLayerDecayRelease(seqLayer, ADSR_STATE_RELEASE); } s32 Audio_BuildSyntheticWave(Note* note, SequenceChannelLayer* seqLayer, s32 waveId) { @@ -379,9 +540,9 @@ s32 Audio_BuildSyntheticWave(Note* note, SequenceChannelLayer* seqLayer, s32 wav waveId = 128; } - freqScale = seqLayer->noteFreqScale; - if (seqLayer->portamento.mode != 0 && 0.0f < seqLayer->portamento.speed) { - freqScale *= (seqLayer->portamento.speed + 1.0f); + freqScale = seqLayer->freqScale; + if (seqLayer->portamento.mode != 0 && 0.0f < seqLayer->portamento.extent) { + freqScale *= (seqLayer->portamento.extent + 1.0f); } if (freqScale < 0.99999f) { sampleCountIndex = 0; @@ -396,7 +557,7 @@ s32 Audio_BuildSyntheticWave(Note* note, SequenceChannelLayer* seqLayer, s32 wav sampleCountIndex = 3; ratio = 0.13081f; } - seqLayer->noteFreqScale *= ratio; + seqLayer->freqScale *= ratio; note->playbackState.waveId = waveId; note->playbackState.sampleCountIndex = sampleCountIndex; @@ -592,12 +753,12 @@ void Audio_NoteInitForLayer(Note* note, SequenceChannelLayer* seqLayer) { note->playbackState.prevParentLayer = NO_LAYER; note->playbackState.parentLayer = seqLayer; playback->priority = seqLayer->seqChannel->notePriority; - seqLayer->bit0 = 1; + seqLayer->notePropertiesNeedInit = 1; seqLayer->unusedEu0b8 = 1; seqLayer->note = note; seqLayer->seqChannel->noteUnused = note; seqLayer->seqChannel->layerUnused = seqLayer; - seqLayer->unk_40 = 0.0f; + seqLayer->noteVelocity = 0.0f; Audio_NoteInit(note); instId = seqLayer->instOrWave; @@ -607,18 +768,18 @@ void Audio_NoteInitForLayer(Note* note, SequenceChannelLayer* seqLayer) { sub->sound.audioBankSound = seqLayer->sound; if (instId >= 0x80 && instId < 0xC0) { - sub->bitField1.asBitfields.bit2 = 1; + sub->bitField1.s.bit2 = 1; } else { - sub->bitField1.asBitfields.bit2 = 0; + sub->bitField1.s.bit2 = 0; } - if (sub->bitField1.asBitfields.bit2) { + if (sub->bitField1.s.bit2) { Audio_BuildSyntheticWave(note, seqLayer, instId); } playback->bankId = seqLayer->seqChannel->bankId; playback->stereoHeadsetEffects = seqLayer->seqChannel->stereoHeadsetEffects; - sub->bitField1.asBitfields.reverbIndex = seqLayer->seqChannel->reverbIndex & 3; + sub->bitField1.s.reverbIndex = seqLayer->seqChannel->reverbIndex & 3; } void func_800E82C0(Note* note, SequenceChannelLayer* seqLayer) { @@ -630,8 +791,8 @@ void Audio_NoteReleaseAndTakeOwnership(Note* note, SequenceChannelLayer* seqLaye note->playbackState.wantedParentLayer = seqLayer; note->playbackState.priority = seqLayer->seqChannel->notePriority; - note->playbackState.adsr.velocity = gAudioContext.gAudioBufferParameters.updatesPerFrameInv; - note->playbackState.adsr.adsrAction.adsrBits.bits4 = 1; + note->playbackState.adsr.fadeOutVel = gAudioContext.gAudioBufferParameters.updatesPerFrameInv; + note->playbackState.adsr.action.s.release = 1; } Note* Audio_AllocNoteFromDisabled(NotePool* pool, SequenceChannelLayer* seqLayer) { @@ -764,10 +925,10 @@ void Audio_NoteInitAll(void) { note->playbackState.waveId = 0; note->playbackState.attributes.velocity = 0.0f; note->playbackState.adsrVolScale = 0; - note->playbackState.adsr.adsrAction.action = 0; - note->unk_B0 = 0; - note->unk_92 = 0; - note->unk_94 = 0; + note->playbackState.adsr.action.asByte = 0; + note->vibratoState.active = 0; + note->portamento.cur = 0; + note->portamento.speed = 0; note->playbackState.stereoHeadsetEffects = 0; note->unk_BC = 0; note->synthesisState.synthesisBuffers = Audio_SoundAlloc(&gAudioContext.gNotesAndBuffersPool, 0x1E0); diff --git a/src/code/audio_seqplayer.c b/src/code/audio_seqplayer.c new file mode 100644 index 0000000000..2cc3d6e9c6 --- /dev/null +++ b/src/code/audio_seqplayer.c @@ -0,0 +1,74 @@ +#include +#include + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9340.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E93A8.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9584.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E96D8.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E97FC.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9878.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/Audio_SequenceChannelDisable.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9934.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9A2C.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9AAC.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9B44.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/Audio_SequencePlayerDisable.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/Audio_AudioListPushBack.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/Audio_AudioListPopBack.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9CA8.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9D48.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9D5C.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9D94.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9DD4.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9ED8.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800E9F64.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EA0C0.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EA440.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EAAE0.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EAEF4.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EAF24.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EAF98.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EB044.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EB068.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EBD58.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EC564.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EC618.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EC668.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EC734.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EC80C.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/audio_seqplayer/func_800EC8DC.s") diff --git a/src/code/code_800DDE20.c b/src/code/code_800DDE20.c deleted file mode 100644 index b7db748fd6..0000000000 --- a/src/code/code_800DDE20.c +++ /dev/null @@ -1,106 +0,0 @@ -#include -#include - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DDE20.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DDE3C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DDF80.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE048.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE12C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE1B4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE238.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE258.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE2B0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/Audio_SoundAlloc.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE344.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE380.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE3DC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE434.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE45C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE470.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE4A0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE4B0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE5F0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE650.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE6D4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE758.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE81C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DE8E0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DF074.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DF0CC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DF1D8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DF5AC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DF5DC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DF630.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DF688.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DF7BC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DF7C4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DF888.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DF8F4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800DFBF8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E04E8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0540.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E05C4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0634.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E06CC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0964.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0AD8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0BB4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0BF8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0C80.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0CBC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0E0C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0E6C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0E90.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E0EB4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800DDE20/func_800E1148.s") diff --git a/src/code/code_800E11F0.c b/src/code/code_800E11F0.c index 834bc86b0b..d89413ed5b 100644 --- a/src/code/code_800E11F0.c +++ b/src/code/code_800E11F0.c @@ -1,6 +1,8 @@ #include #include +// like audio_load in sm64, but completely rewritten + #pragma GLOBAL_ASM("asm/non_matchings/code/code_800E11F0/func_800E11F0.s") #pragma GLOBAL_ASM("asm/non_matchings/code/code_800E11F0/func_800E12DC.s") diff --git a/src/code/code_800E88C0.c b/src/code/code_800E88C0.c deleted file mode 100644 index 123f18f1ac..0000000000 --- a/src/code/code_800E88C0.c +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E88C0/func_800E88C0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E88C0/func_800E8A88.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E88C0/func_800E8BD4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E88C0/func_800E8C30.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E88C0/func_800E8C68.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E88C0/func_800E8EA4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E88C0/func_800E8F00.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E88C0/func_800E8FB8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E88C0/Audio_AdsrInit.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E88C0/func_800E9004.s") diff --git a/src/code/code_800E9340.c b/src/code/code_800E9340.c deleted file mode 100644 index 2885011ac5..0000000000 --- a/src/code/code_800E9340.c +++ /dev/null @@ -1,74 +0,0 @@ -#include -#include - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9340.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E93A8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9584.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E96D8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E97FC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9878.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E98C8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9934.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9A2C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9AAC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9B44.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9B6C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/Audio_AudioListPushBack.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/Audio_AudioListPopBack.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9CA8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9D48.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9D5C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9D94.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9DD4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9ED8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800E9F64.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EA0C0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EA440.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EAAE0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EAEF4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EAF24.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EAF98.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EB044.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EB068.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EBD58.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EC564.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EC618.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EC668.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EC734.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EC80C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800E9340/func_800EC8DC.s")