From e9415164bb5786f0f5052f92d59843d6549b79e4 Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Sun, 6 Nov 2022 10:24:24 -0500 Subject: [PATCH] Lots and lots of audio code copied from SM64 (#270) * Lots of audio decomp * effects and playback are 100% matched * Took some notes from the SM64 Makefile to get the right compiler options for a couple files * Added the audio files to rename_symbol utility Signed-off-by: Taggerung --- Makefile | 13 + asm/bss_audio.s | 83 +- asm/bss_sptask_audio.s | 92 +- .../audio/effects/func_800BDE50.s | 116 - .../audio/effects/func_800BDFF8.s | 97 - .../audio/effects/func_800BE158.s | 58 - .../audio/effects/func_800BE22C.s | 18 - .../audio/effects/func_800BE270.s | 141 - .../audio/effects/func_800BE468.s | 30 - .../audio/effects/func_800BE4D4.s | 63 - .../audio/effects/func_800BE5BC.s | 10 - .../audio/effects/func_800BE5E0.s | 227 -- .../audio/external/func_800C15D0.s | 4 +- .../audio/external/func_800C2274.s | 4 +- .../audio/external/func_800C3508.s | 4 +- .../audio/external/func_800C3724.s | 8 +- .../audio/external/func_800C59C4.s | 4 +- asm/non_matchings/audio/heap/func_800B8DE0.s | 16 +- asm/non_matchings/audio/heap/func_800B8EA8.s | 62 - asm/non_matchings/audio/heap/func_800B8F8C.s | 31 - asm/non_matchings/audio/heap/func_800B907C.s | 9 - asm/non_matchings/audio/heap/func_800B909C.s | 6 - asm/non_matchings/audio/heap/func_800B90B0.s | 13 - asm/non_matchings/audio/heap/func_800B90F0.s | 8 +- asm/non_matchings/audio/heap/func_800B914C.s | 8 +- asm/non_matchings/audio/heap/func_800B91C8.s | 32 - asm/non_matchings/audio/heap/func_800B9244.s | 48 - asm/non_matchings/audio/heap/func_800B9300.s | 48 - asm/non_matchings/audio/heap/func_800B93BC.s | 74 +- asm/non_matchings/audio/heap/func_800B9A90.s | 21 - asm/non_matchings/audio/heap/func_800B9AD8.s | 80 - asm/non_matchings/audio/heap/func_800BA00C.s | 14 +- asm/non_matchings/audio/heap/func_800BA250.s | 14 +- asm/non_matchings/audio/heap/func_800BA858.s | 134 +- asm/non_matchings/audio/heap/func_800BA8B0.s | 125 + asm/non_matchings/audio/heap/soundAlloc.s | 38 - asm/non_matchings/audio/load/audio_init.s | 28 +- asm/non_matchings/audio/load/func_800BB388.s | 52 - asm/non_matchings/audio/load/func_800BB484.s | 70 - asm/non_matchings/audio/load/func_800BB584.s | 10 +- asm/non_matchings/audio/load/func_800BB624.s | 94 - asm/non_matchings/audio/load/func_800BB780.s | 12 +- asm/non_matchings/audio/load/func_800BB864.s | 14 +- asm/non_matchings/audio/load/func_800BB99C.s | 8 +- asm/non_matchings/audio/load/func_800BBA50.s | 14 +- asm/non_matchings/audio/load/func_800BBBA0.s | 82 - asm/non_matchings/audio/load/func_800BBCD0.s | 10 +- asm/non_matchings/audio/load/func_800BBDDC.s | 6 +- asm/non_matchings/audio/load/func_800BBF44.s | 12 +- .../audio/playback/func_800BC5D0.s | 171 -- .../audio/playback/func_800BC840.s | 57 - .../audio/playback/func_800BC90C.s | 20 - .../audio/playback/func_800BC948.s | 51 - .../audio/playback/func_800BC9F8.s | 55 - .../audio/playback/func_800BCAB4.s | 40 - .../audio/playback/func_800BCB48.s | 34 - .../audio/playback/func_800BCBC4.s | 244 -- .../audio/playback/func_800BCF44.s | 131 - .../audio/playback/func_800BD120.s | 9 - .../audio/playback/func_800BD140.s | 9 - .../audio/playback/func_800BD160.s | 73 - .../audio/playback/func_800BD264.s | 45 - .../audio/playback/func_800BD308.s | 5 - .../audio/playback/func_800BD318.s | 21 - .../audio/playback/func_800BD368.s | 47 - .../audio/playback/func_800BD418.s | 97 - .../audio/playback/func_800BD578.s | 92 - .../audio/playback/func_800BD6B4.s | 18 - .../audio/playback/func_800BD6F4.s | 13 - .../audio/playback/func_800BD720.s | 48 - .../audio/playback/func_800BD7C0.s | 82 - .../audio/playback/func_800BD8F4.s | 14 - .../audio/playback/func_800BD928.s | 11 - .../audio/playback/func_800BD950.s | 21 - .../audio/playback/func_800BD99C.s | 22 - .../audio/playback/func_800BD9EC.s | 24 - .../audio/playback/func_800BDA44.s | 198 -- .../audio/playback/func_800BDD34.s | 73 - .../port_eu/create_next_audio_frame_task.s | 2 +- .../audio/port_eu/func_800CB818.s | 28 +- .../audio/port_eu/func_800CBA08.s | 25 - .../audio/port_eu/func_800CBA64.s | 22 - .../audio/port_eu/func_800CBCB0.s | 8 +- .../audio/seqplayer/func_800BE8F0.s | 74 - .../audio/seqplayer/func_800BEA10.s | 70 - .../audio/seqplayer/func_800BEB18.s | 17 - .../audio/seqplayer/func_800BEB54.s | 22 - .../audio/seqplayer/func_800BEBA4.s | 6 +- .../audio/seqplayer/func_800BEC10.s | 41 - .../audio/seqplayer/func_800BEC8C.s | 80 - .../audio/seqplayer/func_800BEDB8.s | 56 - .../audio/seqplayer/func_800BEE88.s | 45 - .../audio/seqplayer/func_800BEF2C.s | 60 - .../audio/seqplayer/func_800BF004.s | 18 - .../audio/seqplayer/func_800BF044.s | 19 - .../audio/seqplayer/func_800BF084.s | 35 - .../audio/seqplayer/func_800BF108.s | 6 - .../audio/seqplayer/func_800BF11C.s | 13 - .../audio/seqplayer/func_800BF14C.s | 19 - .../audio/seqplayer/func_800BFC68.s | 31 - .../audio/seqplayer/func_800BFCD8.s | 42 - .../audio/seqplayer/func_800BFD6C.s | 10 - .../audio/seqplayer/func_800BFD90.s | 148 +- .../audio/seqplayer/func_800C08CC.s | 88 +- .../audio/seqplayer/func_800C1138.s | 12 +- .../audio/seqplayer/func_800C11B0.s | 44 - .../audio/seqplayer/func_800C125C.s | 106 - ...0.s => seq_channel_layer_process_script.s} | 60 +- .../audio/synthesis/func_800B7034.s | 51 - .../audio/synthesis/func_800B70EC.s | 2 +- .../audio/synthesis/func_800B775C.s | 20 +- .../audio/synthesis/func_800B7C30.s | 12 +- .../audio/synthesis/func_800B85B4.s | 39 - .../audio/synthesis/func_800B8644.s | 24 - .../audio/synthesis/func_800B8A2C.s | 255 -- .../synthesis/synthesis_load_note_subs_eu.s | 35 - data/data_0DD0A0_2_1_0.s | 612 ---- data/data_0DD0A0_2_1_1.s | 500 ++++ data/rodata_audio.s | 537 ---- data/rodata_audio_2.s | 497 ++++ mk64.ld | 9 +- rename_sym.sh | 2 +- src/audio/data.c | 4 +- src/audio/data.h | 24 +- src/audio/effects.c | 720 ++--- src/audio/effects.h | 12 + src/audio/external.c | 24 +- src/audio/external.h | 16 + src/audio/heap.c | 1344 ++++----- src/audio/heap.h | 101 +- src/audio/internal.h | 494 +++- src/audio/load.c | 561 ++-- src/audio/load.h | 28 +- src/audio/playback.c | 1925 +++++-------- src/audio/playback.h | 49 + src/audio/port_eu.c | 98 +- src/audio/port_eu.h | 7 + src/audio/seqplayer.c | 2504 +++++++---------- src/audio/seqplayer.h | 41 + src/audio/synthesis.c | 1275 ++++----- src/audio/synthesis.h | 26 +- 141 files changed, 5787 insertions(+), 11158 deletions(-) delete mode 100644 asm/non_matchings/audio/effects/func_800BDE50.s delete mode 100644 asm/non_matchings/audio/effects/func_800BDFF8.s delete mode 100644 asm/non_matchings/audio/effects/func_800BE158.s delete mode 100644 asm/non_matchings/audio/effects/func_800BE22C.s delete mode 100644 asm/non_matchings/audio/effects/func_800BE270.s delete mode 100644 asm/non_matchings/audio/effects/func_800BE468.s delete mode 100644 asm/non_matchings/audio/effects/func_800BE4D4.s delete mode 100644 asm/non_matchings/audio/effects/func_800BE5BC.s delete mode 100644 asm/non_matchings/audio/effects/func_800BE5E0.s delete mode 100644 asm/non_matchings/audio/heap/func_800B8EA8.s delete mode 100644 asm/non_matchings/audio/heap/func_800B8F8C.s delete mode 100644 asm/non_matchings/audio/heap/func_800B907C.s delete mode 100644 asm/non_matchings/audio/heap/func_800B909C.s delete mode 100644 asm/non_matchings/audio/heap/func_800B90B0.s delete mode 100644 asm/non_matchings/audio/heap/func_800B91C8.s delete mode 100644 asm/non_matchings/audio/heap/func_800B9244.s delete mode 100644 asm/non_matchings/audio/heap/func_800B9300.s delete mode 100644 asm/non_matchings/audio/heap/func_800B9A90.s delete mode 100644 asm/non_matchings/audio/heap/func_800B9AD8.s create mode 100644 asm/non_matchings/audio/heap/func_800BA8B0.s delete mode 100644 asm/non_matchings/audio/heap/soundAlloc.s delete mode 100644 asm/non_matchings/audio/load/func_800BB388.s delete mode 100644 asm/non_matchings/audio/load/func_800BB484.s delete mode 100644 asm/non_matchings/audio/load/func_800BB624.s delete mode 100644 asm/non_matchings/audio/load/func_800BBBA0.s delete mode 100644 asm/non_matchings/audio/playback/func_800BC5D0.s delete mode 100644 asm/non_matchings/audio/playback/func_800BC840.s delete mode 100644 asm/non_matchings/audio/playback/func_800BC90C.s delete mode 100644 asm/non_matchings/audio/playback/func_800BC948.s delete mode 100644 asm/non_matchings/audio/playback/func_800BC9F8.s delete mode 100644 asm/non_matchings/audio/playback/func_800BCAB4.s delete mode 100644 asm/non_matchings/audio/playback/func_800BCB48.s delete mode 100644 asm/non_matchings/audio/playback/func_800BCBC4.s delete mode 100644 asm/non_matchings/audio/playback/func_800BCF44.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD120.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD140.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD160.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD264.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD308.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD318.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD368.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD418.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD578.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD6B4.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD6F4.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD720.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD7C0.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD8F4.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD928.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD950.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD99C.s delete mode 100644 asm/non_matchings/audio/playback/func_800BD9EC.s delete mode 100644 asm/non_matchings/audio/playback/func_800BDA44.s delete mode 100644 asm/non_matchings/audio/playback/func_800BDD34.s delete mode 100644 asm/non_matchings/audio/port_eu/func_800CBA08.s delete mode 100644 asm/non_matchings/audio/port_eu/func_800CBA64.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BE8F0.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BEA10.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BEB18.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BEB54.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BEC10.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BEC8C.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BEDB8.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BEE88.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BEF2C.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BF004.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BF044.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BF084.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BF108.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BF11C.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BF14C.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BFC68.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BFCD8.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800BFD6C.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800C11B0.s delete mode 100644 asm/non_matchings/audio/seqplayer/func_800C125C.s rename asm/non_matchings/audio/seqplayer/{func_800BF190.s => seq_channel_layer_process_script.s} (95%) delete mode 100644 asm/non_matchings/audio/synthesis/func_800B7034.s delete mode 100644 asm/non_matchings/audio/synthesis/func_800B85B4.s delete mode 100644 asm/non_matchings/audio/synthesis/func_800B8644.s delete mode 100644 asm/non_matchings/audio/synthesis/func_800B8A2C.s delete mode 100644 asm/non_matchings/audio/synthesis/synthesis_load_note_subs_eu.s create mode 100644 data/data_0DD0A0_2_1_1.s create mode 100644 data/rodata_audio_2.s create mode 100644 src/audio/playback.h create mode 100644 src/audio/port_eu.h create mode 100644 src/audio/seqplayer.h diff --git a/Makefile b/Makefile index 56d41ebde..5489fa072 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,13 @@ ifeq ($(VERSION),us) TARGET := mk64.us endif +# COMPILER - selects the C compiler to use +# ido - uses the SGI IRIS Development Option compiler, which is used to build +# an original matching N64 ROM +# gcc - uses the GNU C Compiler +COMPILER ?= ido +$(eval $(call validate-option,COMPILER,ido gcc)) + ### Utility Functions ### # Returns the path to the command $(1) if exists. Otherwise returns an empty string. find-command = $(shell which $(1) 2>/dev/null) @@ -495,6 +502,12 @@ $(BUILD_DIR)/src/os/_Litob.o: OPT_FLAGS := -O3 $(BUILD_DIR)/src/os/_Ldtob.o: OPT_FLAGS := -O3 $(BUILD_DIR)/src/os/osSyncPrintf.o: OPT_FLAGS := -O3 +# Alternate compiler flags needed for matching +ifeq ($(COMPILER),ido) + $(BUILD_DIR)/src/audio/%.o: OPT_FLAGS := -O2 -use_readwrite_const + $(BUILD_DIR)/src/audio/port_eu.o: OPT_FLAGS := -O2 -framepointer +endif + #################### Compile course vertex to mio0 ##################### mushroom_cup := $(BUILD_DIR)/courses/mushroom_cup diff --git a/asm/bss_audio.s b/asm/bss_audio.s index 5510354aa..cd4d56b8a 100644 --- a/asm/bss_audio.s +++ b/asm/bss_audio.s @@ -1,56 +1,71 @@ - +# This is most likely (part of) the bss section for audio/heap.c .include "macros.inc" .section .bss +# This is almost certainly the tail end of gAudioSessionPool, specifically this probably a reference to +# gAudioSessionPool.size glabel D_803AFBD0 .skip 8 -glabel D_803AFBD8 +glabel gAudioInitPool .skip 16 glabel gNotesAndBuffersPool .skip 48 -glabel D_803AFC18 +glabel gSeqAndBankPool .skip 16 -glabel D_803AFC28 +glabel gPersistentCommonPool .skip 16 -glabel D_803AFC38 +glabel gTemporaryCommonPool .skip 16 -glabel D_803AFC48 -.skip 4 +glabel gSeqLoadedPool +.skip 464 -glabel D_803AFC4C +glabel gBankLoadedPool +.skip 464 + +glabel gUnusedLoadedPool +.skip 464 + +glabel gUnkPool1 .skip 400 -glabel D_803AFDDC +glabel D_803B0348 +.skip 16 + +glabel D_803B0358 +.skip 8 + +glabel D_803B0360 +.skip 16 + +glabel D_803B0370 +.skip 16 + +glabel D_803B0380 +.skip 64 + +glabel gBankLoadStatus +.skip 64 + +glabel gSeqLoadStatus +.skip 256 + +glabel D_803B0500 +.skip 1 + +glabel D_803B0501 +.skip 3 + +# Probably gAudioUnusedBuffer +glabel D_803B0504 +.skip 4100 + +# Based on SM64 this should be the beginning of load.c's BSS stuff +glabel gNotes .skip 4 - -glabel D_803AFDE0 -.skip 56 - -glabel D_803AFE18 -.skip 4 - -glabel D_803AFE1C -.skip 400 - -glabel D_803AFFAC -.skip 4 - -glabel D_803AFFB0 -.skip 56 - -glabel D_803AFFE8 -.skip 4 - -glabel D_803AFFEC - - - - - diff --git a/asm/bss_sptask_audio.s b/asm/bss_sptask_audio.s index 41e748561..31d6f7e0a 100644 --- a/asm/bss_sptask_audio.s +++ b/asm/bss_sptask_audio.s @@ -4,54 +4,7 @@ # Audio -.skip 396 - -glabel D_803B017C -.skip 4 - -glabel D_803B0180 -.skip 56 - -glabel D_803B01B8 -.skip 12 - -glabel D_803B01C4 -.skip 388 - -glabel D_803B0348 -.skip 16 - -glabel D_803B0358 -.skip 8 - -glabel D_803B0360 -.skip 16 - -glabel D_803B0370 -.skip 16 - -glabel D_803B0380 -.skip 64 - -glabel D_803B03C0 -.skip 64 - -glabel D_803B0400 -.skip 256 - -glabel D_803B0500 -.skip 1 - -glabel D_803B0501 -.skip 3 - -glabel D_803B0504 -.skip 4100 - -glabel D_803B1508 -.skip 8 - -glabel D_803B1510 +glabel gSequencePlayers .skip 148 glabel D_803B15A4 @@ -68,36 +21,25 @@ glabel D_803B17D0 glabel D_803B18E8 .skip 328 +# End of gSequencePlayers -glabel D_803B1A30 +glabel gSequenceChannels .skip 9408 -glabel D_803B3EF0 -.skip 108 +glabel gSequenceLayers +.skip 8192 -glabel D_803B3F5C -.skip 8084 - -glabel D_803B5EF0 +glabel gSequenceChannelNone .skip 108 glabel D_803B5F5C .skip 92 -glabel D_803B5FB8 +glabel gLayerFreeList .skip 16 -glabel D_803B5FC8 -.skip 16 - -glabel D_803B5FD8 -.skip 16 - -glabel D_803B5FE8 -.skip 16 - -glabel D_803B5FF8 -.skip 16 +glabel gNoteFreeLists +.skip 64 glabel gCurrAudioFrameDmaQueue .skip 24 @@ -156,23 +98,17 @@ glabel D_803B7070 glabel D_803B7074 .skip 4 -glabel D_803B7078 +glabel gAlBankSets .skip 4 glabel D_803B707C .skip 4 -glabel D_803B7080 +glabel gCtlEntries .skip 8 glabel gAudioBufferParameters -.skip 24 - -glabel D_803B70A0 -.skip 4 - -glabel D_803B70A4 -.skip 4 +.skip 32 glabel D_803B70A8 .skip 4 @@ -186,7 +122,7 @@ glabel gMaxSimultaneousNotes glabel D_803B70B4 .skip 2 -glabel D_803B70B6 +glabel gAudioLibSoundMode .skip 2 glabel D_803B70B8 @@ -231,7 +167,7 @@ glabel D_803B7192 glabel D_803B7194 .skip 4 -glabel D_803B7198 +glabel gAudioErrorFlags .skip 8 glabel D_803B71A0 diff --git a/asm/non_matchings/audio/effects/func_800BDE50.s b/asm/non_matchings/audio/effects/func_800BDE50.s deleted file mode 100644 index c17e82d47..000000000 --- a/asm/non_matchings/audio/effects/func_800BDE50.s +++ /dev/null @@ -1,116 +0,0 @@ -glabel func_800BDE50 -/* 0BEA50 800BDE50 8C820000 */ lw $v0, ($a0) -/* 0BEA54 800BDE54 00003025 */ move $a2, $zero -/* 0BEA58 800BDE58 00803825 */ move $a3, $a0 -/* 0BEA5C 800BDE5C 00027A40 */ sll $t7, $v0, 9 -/* 0BEA60 800BDE60 05E00003 */ bltz $t7, .L800BDE70 -/* 0BEA64 800BDE64 24090010 */ li $t1, 16 -/* 0BEA68 800BDE68 50A00016 */ beql $a1, $zero, .L800BDEC4 -/* 0BEA6C 800BDE6C 00027280 */ sll $t6, $v0, 0xa -.L800BDE70: -/* 0BEA70 800BDE70 C4840024 */ lwc1 $f4, 0x24($a0) -/* 0BEA74 800BDE74 C4860020 */ lwc1 $f6, 0x20($a0) -/* 0BEA78 800BDE78 8C820044 */ lw $v0, 0x44($a0) -/* 0BEA7C 800BDE7C 46062202 */ mul.s $f8, $f4, $f6 -/* 0BEA80 800BDE80 C44A002C */ lwc1 $f10, 0x2c($v0) -/* 0BEA84 800BDE84 8C580000 */ lw $t8, ($v0) -/* 0BEA88 800BDE88 00185080 */ sll $t2, $t8, 2 -/* 0BEA8C 800BDE8C 460A4002 */ mul.s $f0, $f8, $f10 -/* 0BEA90 800BDE90 05410008 */ bgez $t2, .L800BDEB4 -/* 0BEA94 800BDE94 00000000 */ nop -/* 0BEA98 800BDE98 908B0003 */ lbu $t3, 3($a0) -/* 0BEA9C 800BDE9C 316C0020 */ andi $t4, $t3, 0x20 -/* 0BEAA0 800BDEA0 11800004 */ beqz $t4, .L800BDEB4 -/* 0BEAA4 800BDEA4 00000000 */ nop -/* 0BEAA8 800BDEA8 C4500024 */ lwc1 $f16, 0x24($v0) -/* 0BEAAC 800BDEAC 46008002 */ mul.s $f0, $f16, $f0 -/* 0BEAB0 800BDEB0 00000000 */ nop -.L800BDEB4: -/* 0BEAB4 800BDEB4 46000482 */ mul.s $f18, $f0, $f0 -/* 0BEAB8 800BDEB8 8C820000 */ lw $v0, ($a0) -/* 0BEABC 800BDEBC E492002C */ swc1 $f18, 0x2c($a0) -/* 0BEAC0 800BDEC0 00027280 */ sll $t6, $v0, 0xa -.L800BDEC4: -/* 0BEAC4 800BDEC4 05C10007 */ bgez $t6, .L800BDEE4 -/* 0BEAC8 800BDEC8 24080080 */ li $t0, 128 -/* 0BEACC 800BDECC 908F0009 */ lbu $t7, 9($a0) -/* 0BEAD0 800BDED0 9098000A */ lbu $t8, 0xa($a0) -/* 0BEAD4 800BDED4 01F80019 */ multu $t7, $t8 -/* 0BEAD8 800BDED8 0000C812 */ mflo $t9 -/* 0BEADC 800BDEDC AC990028 */ sw $t9, 0x28($a0) -/* 0BEAE0 800BDEE0 00000000 */ nop -.L800BDEE4: -/* 0BEAE4 800BDEE4 8CE30048 */ lw $v1, 0x48($a3) -/* 0BEAE8 800BDEE8 24C60004 */ addiu $a2, $a2, 4 -/* 0BEAEC 800BDEEC 1060003E */ beqz $v1, .L800BDFE8 -/* 0BEAF0 800BDEF0 00000000 */ nop -/* 0BEAF4 800BDEF4 8C620000 */ lw $v0, ($v1) -/* 0BEAF8 800BDEF8 000257C2 */ srl $t2, $v0, 0x1f -/* 0BEAFC 800BDEFC 1140003A */ beqz $t2, .L800BDFE8 -/* 0BEB00 800BDF00 00000000 */ nop -/* 0BEB04 800BDF04 8C6B0040 */ lw $t3, 0x40($v1) -/* 0BEB08 800BDF08 00026940 */ sll $t5, $v0, 5 -/* 0BEB0C 800BDF0C 11600036 */ beqz $t3, .L800BDFE8 -/* 0BEB10 800BDF10 00000000 */ nop -/* 0BEB14 800BDF14 05A30017 */ bgezl $t5, .L800BDF74 -/* 0BEB18 800BDF18 80980001 */ lb $t8, 1($a0) -/* 0BEB1C 800BDF1C C4640024 */ lwc1 $f4, 0x24($v1) -/* 0BEB20 800BDF20 C4860030 */ lwc1 $f6, 0x30($a0) -/* 0BEB24 800BDF24 C46A0028 */ lwc1 $f10, 0x28($v1) -/* 0BEB28 800BDF28 906E0005 */ lbu $t6, 5($v1) -/* 0BEB2C 800BDF2C 46062202 */ mul.s $f8, $f4, $f6 -/* 0BEB30 800BDF30 906D0000 */ lbu $t5, ($v1) -/* 0BEB34 800BDF34 E4680030 */ swc1 $f8, 0x30($v1) -/* 0BEB38 800BDF38 C490002C */ lwc1 $f16, 0x2c($a0) -/* 0BEB3C 800BDF3C 46105482 */ mul.s $f18, $f10, $f16 -/* 0BEB40 800BDF40 E472002C */ swc1 $f18, 0x2c($v1) -/* 0BEB44 800BDF44 908F000A */ lbu $t7, 0xa($a0) -/* 0BEB48 800BDF48 8C8A0028 */ lw $t2, 0x28($a0) -/* 0BEB4C 800BDF4C 010FC023 */ subu $t8, $t0, $t7 -/* 0BEB50 800BDF50 01D80019 */ multu $t6, $t8 -/* 0BEB54 800BDF54 31AFFFFB */ andi $t7, $t5, 0xfffb -/* 0BEB58 800BDF58 A06F0000 */ sb $t7, ($v1) -/* 0BEB5C 800BDF5C 0000C812 */ mflo $t9 -/* 0BEB60 800BDF60 01595821 */ addu $t3, $t2, $t9 -/* 0BEB64 800BDF64 000B61C3 */ sra $t4, $t3, 7 -/* 0BEB68 800BDF68 1000001F */ b .L800BDFE8 -/* 0BEB6C 800BDF6C A06C0006 */ sb $t4, 6($v1) -/* 0BEB70 800BDF70 80980001 */ lb $t8, 1($a0) -.L800BDF74: -/* 0BEB74 800BDF74 07030006 */ bgezl $t8, .L800BDF90 -/* 0BEB78 800BDF78 8C820000 */ lw $v0, ($a0) -/* 0BEB7C 800BDF7C C4640024 */ lwc1 $f4, 0x24($v1) -/* 0BEB80 800BDF80 C4860030 */ lwc1 $f6, 0x30($a0) -/* 0BEB84 800BDF84 46062202 */ mul.s $f8, $f4, $f6 -/* 0BEB88 800BDF88 E4680030 */ swc1 $f8, 0x30($v1) -/* 0BEB8C 800BDF8C 8C820000 */ lw $v0, ($a0) -.L800BDF90: -/* 0BEB90 800BDF90 0002CA40 */ sll $t9, $v0, 9 -/* 0BEB94 800BDF94 07220004 */ bltzl $t9, .L800BDFA8 -/* 0BEB98 800BDF98 C46A0028 */ lwc1 $f10, 0x28($v1) -/* 0BEB9C 800BDF9C 50A00007 */ beql $a1, $zero, .L800BDFBC -/* 0BEBA0 800BDFA0 00026280 */ sll $t4, $v0, 0xa -/* 0BEBA4 800BDFA4 C46A0028 */ lwc1 $f10, 0x28($v1) -.L800BDFA8: -/* 0BEBA8 800BDFA8 C490002C */ lwc1 $f16, 0x2c($a0) -/* 0BEBAC 800BDFAC 46105482 */ mul.s $f18, $f10, $f16 -/* 0BEBB0 800BDFB0 E472002C */ swc1 $f18, 0x2c($v1) -/* 0BEBB4 800BDFB4 8C820000 */ lw $v0, ($a0) -/* 0BEBB8 800BDFB8 00026280 */ sll $t4, $v0, 0xa -.L800BDFBC: -/* 0BEBBC 800BDFBC 0581000A */ bgez $t4, .L800BDFE8 -/* 0BEBC0 800BDFC0 00000000 */ nop -/* 0BEBC4 800BDFC4 908F000A */ lbu $t7, 0xa($a0) -/* 0BEBC8 800BDFC8 906D0005 */ lbu $t5, 5($v1) -/* 0BEBCC 800BDFCC 8C8A0028 */ lw $t2, 0x28($a0) -/* 0BEBD0 800BDFD0 010F7023 */ subu $t6, $t0, $t7 -/* 0BEBD4 800BDFD4 01AE0019 */ multu $t5, $t6 -/* 0BEBD8 800BDFD8 0000C012 */ mflo $t8 -/* 0BEBDC 800BDFDC 0158C821 */ addu $t9, $t2, $t8 -/* 0BEBE0 800BDFE0 001959C3 */ sra $t3, $t9, 7 -/* 0BEBE4 800BDFE4 A06B0006 */ sb $t3, 6($v1) -.L800BDFE8: -/* 0BEBE8 800BDFE8 14C9FFBE */ bne $a2, $t1, .L800BDEE4 -/* 0BEBEC 800BDFEC 24E70004 */ addiu $a3, $a3, 4 -/* 0BEBF0 800BDFF0 03E00008 */ jr $ra -/* 0BEBF4 800BDFF4 A0800001 */ sb $zero, 1($a0) diff --git a/asm/non_matchings/audio/effects/func_800BDFF8.s b/asm/non_matchings/audio/effects/func_800BDFF8.s deleted file mode 100644 index 80ffc5b32..000000000 --- a/asm/non_matchings/audio/effects/func_800BDFF8.s +++ /dev/null @@ -1,97 +0,0 @@ -glabel func_800BDFF8 -/* 0BEBF8 800BDFF8 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0BEBFC 800BDFFC AFBF002C */ sw $ra, 0x2c($sp) -/* 0BEC00 800BE000 AFB50028 */ sw $s5, 0x28($sp) -/* 0BEC04 800BE004 AFB40024 */ sw $s4, 0x24($sp) -/* 0BEC08 800BE008 AFB30020 */ sw $s3, 0x20($sp) -/* 0BEC0C 800BE00C AFB2001C */ sw $s2, 0x1c($sp) -/* 0BEC10 800BE010 AFB10018 */ sw $s1, 0x18($sp) -/* 0BEC14 800BE014 AFB00014 */ sw $s0, 0x14($sp) -/* 0BEC18 800BE018 948E0010 */ lhu $t6, 0x10($a0) -/* 0BEC1C 800BE01C 3C15803B */ lui $s5, %hi(D_803B5EF0) # $s5, 0x803b -/* 0BEC20 800BE020 00809825 */ move $s3, $a0 -/* 0BEC24 800BE024 11C00025 */ beqz $t6, .L800BE0BC -/* 0BEC28 800BE028 26B55EF0 */ addiu $s5, %lo(D_803B5EF0) # addiu $s5, $s5, 0x5ef0 -/* 0BEC2C 800BE02C C4840018 */ lwc1 $f4, 0x18($a0) -/* 0BEC30 800BE030 C486001C */ lwc1 $f6, 0x1c($a0) -/* 0BEC34 800BE034 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BEC38 800BE038 44811000 */ mtc1 $at, $f2 -/* 0BEC3C 800BE03C 46062200 */ add.s $f8, $f4, $f6 -/* 0BEC40 800BE040 90980000 */ lbu $t8, ($a0) -/* 0BEC44 800BE044 E4880018 */ swc1 $f8, 0x18($a0) -/* 0BEC48 800BE048 C4800018 */ lwc1 $f0, 0x18($a0) -/* 0BEC4C 800BE04C 37190004 */ ori $t9, $t8, 4 -/* 0BEC50 800BE050 A0990000 */ sb $t9, ($a0) -/* 0BEC54 800BE054 4600103C */ c.lt.s $f2, $f0 -/* 0BEC58 800BE058 00000000 */ nop -/* 0BEC5C 800BE05C 45020004 */ bc1fl .L800BE070 -/* 0BEC60 800BE060 44801000 */ mtc1 $zero, $f2 -/* 0BEC64 800BE064 E4820018 */ swc1 $f2, 0x18($a0) -/* 0BEC68 800BE068 C4800018 */ lwc1 $f0, 0x18($a0) -/* 0BEC6C 800BE06C 44801000 */ mtc1 $zero, $f2 -.L800BE070: -/* 0BEC70 800BE070 00000000 */ nop -/* 0BEC74 800BE074 4602003C */ c.lt.s $f0, $f2 -/* 0BEC78 800BE078 00000000 */ nop -/* 0BEC7C 800BE07C 45020003 */ bc1fl .L800BE08C -/* 0BEC80 800BE080 96680010 */ lhu $t0, 0x10($s3) -/* 0BEC84 800BE084 E6620018 */ swc1 $f2, 0x18($s3) -/* 0BEC88 800BE088 96680010 */ lhu $t0, 0x10($s3) -.L800BE08C: -/* 0BEC8C 800BE08C 2509FFFF */ addiu $t1, $t0, -1 -/* 0BEC90 800BE090 312AFFFF */ andi $t2, $t1, 0xffff -/* 0BEC94 800BE094 15400009 */ bnez $t2, .L800BE0BC -/* 0BEC98 800BE098 A6690010 */ sh $t1, 0x10($s3) -/* 0BEC9C 800BE09C 926B0001 */ lbu $t3, 1($s3) -/* 0BECA0 800BE0A0 24010002 */ li $at, 2 -/* 0BECA4 800BE0A4 55610006 */ bnel $t3, $at, .L800BE0C0 -/* 0BECA8 800BE0A8 8E6C0000 */ lw $t4, ($s3) -/* 0BECAC 800BE0AC 0C02FBCB */ jal func_800BEF2C -/* 0BECB0 800BE0B0 02602025 */ move $a0, $s3 -/* 0BECB4 800BE0B4 10000020 */ b .L800BE138 -/* 0BECB8 800BE0B8 8FBF002C */ lw $ra, 0x2c($sp) -.L800BE0BC: -/* 0BECBC 800BE0BC 8E6C0000 */ lw $t4, ($s3) -.L800BE0C0: -/* 0BECC0 800BE0C0 00008025 */ move $s0, $zero -/* 0BECC4 800BE0C4 02608825 */ move $s1, $s3 -/* 0BECC8 800BE0C8 000C7140 */ sll $t6, $t4, 5 -/* 0BECCC 800BE0CC 05C10005 */ bgez $t6, .L800BE0E4 -/* 0BECD0 800BE0D0 24140040 */ li $s4, 64 -/* 0BECD4 800BE0D4 C66A0018 */ lwc1 $f10, 0x18($s3) -/* 0BECD8 800BE0D8 C6700028 */ lwc1 $f16, 0x28($s3) -/* 0BECDC 800BE0DC 46105482 */ mul.s $f18, $f10, $f16 -/* 0BECE0 800BE0E0 E672002C */ swc1 $f18, 0x2c($s3) -.L800BE0E4: -/* 0BECE4 800BE0E4 24120001 */ li $s2, 1 -.L800BE0E8: -/* 0BECE8 800BE0E8 8E240030 */ lw $a0, 0x30($s1) -/* 0BECEC 800BE0EC 02A47826 */ xor $t7, $s5, $a0 -/* 0BECF0 800BE0F0 000F782B */ sltu $t7, $zero, $t7 -/* 0BECF4 800BE0F4 564F000A */ bnel $s2, $t7, .L800BE120 -/* 0BECF8 800BE0F8 26100004 */ addiu $s0, $s0, 4 -/* 0BECFC 800BE0FC 8C980000 */ lw $t8, ($a0) -/* 0BED00 800BE100 0018CFC2 */ srl $t9, $t8, 0x1f -/* 0BED04 800BE104 56590006 */ bnel $s2, $t9, .L800BE120 -/* 0BED08 800BE108 26100004 */ addiu $s0, $s0, 4 -/* 0BED0C 800BE10C 8E650000 */ lw $a1, ($s3) -/* 0BED10 800BE110 00054140 */ sll $t0, $a1, 5 -/* 0BED14 800BE114 0C02F794 */ jal func_800BDE50 -/* 0BED18 800BE118 00082FC2 */ srl $a1, $t0, 0x1f -/* 0BED1C 800BE11C 26100004 */ addiu $s0, $s0, 4 -.L800BE120: -/* 0BED20 800BE120 1614FFF1 */ bne $s0, $s4, .L800BE0E8 -/* 0BED24 800BE124 26310004 */ addiu $s1, $s1, 4 -/* 0BED28 800BE128 926A0000 */ lbu $t2, ($s3) -/* 0BED2C 800BE12C 314BFFFB */ andi $t3, $t2, 0xfffb -/* 0BED30 800BE130 A26B0000 */ sb $t3, ($s3) -/* 0BED34 800BE134 8FBF002C */ lw $ra, 0x2c($sp) -.L800BE138: -/* 0BED38 800BE138 8FB00014 */ lw $s0, 0x14($sp) -/* 0BED3C 800BE13C 8FB10018 */ lw $s1, 0x18($sp) -/* 0BED40 800BE140 8FB2001C */ lw $s2, 0x1c($sp) -/* 0BED44 800BE144 8FB30020 */ lw $s3, 0x20($sp) -/* 0BED48 800BE148 8FB40024 */ lw $s4, 0x24($sp) -/* 0BED4C 800BE14C 8FB50028 */ lw $s5, 0x28($sp) -/* 0BED50 800BE150 03E00008 */ jr $ra -/* 0BED54 800BE154 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/audio/effects/func_800BE158.s b/asm/non_matchings/audio/effects/func_800BE158.s deleted file mode 100644 index 26904f307..000000000 --- a/asm/non_matchings/audio/effects/func_800BE158.s +++ /dev/null @@ -1,58 +0,0 @@ -glabel func_800BE158 -/* 0BED58 800BE158 C4840004 */ lwc1 $f4, 4($a0) -/* 0BED5C 800BE15C C4860008 */ lwc1 $f6, 8($a0) -/* 0BED60 800BE160 24020001 */ li $v0, 1 -/* 0BED64 800BE164 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 0BED68 800BE168 46062200 */ add.s $f8, $f4, $f6 -/* 0BED6C 800BE16C E4880004 */ swc1 $f8, 4($a0) -/* 0BED70 800BE170 444EF800 */ cfc1 $t6, $31 -/* 0BED74 800BE174 44C2F800 */ ctc1 $v0, $31 -/* 0BED78 800BE178 C48A0004 */ lwc1 $f10, 4($a0) -/* 0BED7C 800BE17C 46005424 */ cvt.w.s $f16, $f10 -/* 0BED80 800BE180 4442F800 */ cfc1 $v0, $31 -/* 0BED84 800BE184 00000000 */ nop -/* 0BED88 800BE188 30420078 */ andi $v0, $v0, 0x78 -/* 0BED8C 800BE18C 50400013 */ beql $v0, $zero, .L800BE1DC -/* 0BED90 800BE190 44028000 */ mfc1 $v0, $f16 -/* 0BED94 800BE194 44818000 */ mtc1 $at, $f16 -/* 0BED98 800BE198 24020001 */ li $v0, 1 -/* 0BED9C 800BE19C 46105401 */ sub.s $f16, $f10, $f16 -/* 0BEDA0 800BE1A0 44C2F800 */ ctc1 $v0, $31 -/* 0BEDA4 800BE1A4 00000000 */ nop -/* 0BEDA8 800BE1A8 46008424 */ cvt.w.s $f16, $f16 -/* 0BEDAC 800BE1AC 4442F800 */ cfc1 $v0, $31 -/* 0BEDB0 800BE1B0 00000000 */ nop -/* 0BEDB4 800BE1B4 30420078 */ andi $v0, $v0, 0x78 -/* 0BEDB8 800BE1B8 14400005 */ bnez $v0, .L800BE1D0 -/* 0BEDBC 800BE1BC 00000000 */ nop -/* 0BEDC0 800BE1C0 44028000 */ mfc1 $v0, $f16 -/* 0BEDC4 800BE1C4 3C018000 */ lui $at, 0x8000 -/* 0BEDC8 800BE1C8 10000007 */ b .L800BE1E8 -/* 0BEDCC 800BE1CC 00411025 */ or $v0, $v0, $at -.L800BE1D0: -/* 0BEDD0 800BE1D0 10000005 */ b .L800BE1E8 -/* 0BEDD4 800BE1D4 2402FFFF */ li $v0, -1 -/* 0BEDD8 800BE1D8 44028000 */ mfc1 $v0, $f16 -.L800BE1DC: -/* 0BEDDC 800BE1DC 00000000 */ nop -/* 0BEDE0 800BE1E0 0440FFFB */ bltz $v0, .L800BE1D0 -/* 0BEDE4 800BE1E4 00000000 */ nop -.L800BE1E8: -/* 0BEDE8 800BE1E8 44CEF800 */ ctc1 $t6, $31 -/* 0BEDEC 800BE1EC 2C410080 */ sltiu $at, $v0, 0x80 -/* 0BEDF0 800BE1F0 54200003 */ bnel $at, $zero, .L800BE200 -/* 0BEDF4 800BE1F4 3C013F80 */ lui $at, 0x3f80 -/* 0BEDF8 800BE1F8 2402007F */ li $v0, 127 -/* 0BEDFC 800BE1FC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -.L800BE200: -/* 0BEE00 800BE200 44816000 */ mtc1 $at, $f12 -/* 0BEE04 800BE204 3C01800F */ lui $at, %hi(gPitchBendFrequencyScale + 0x200) -/* 0BEE08 800BE208 00027880 */ sll $t7, $v0, 2 -/* 0BEE0C 800BE20C 002F0821 */ addu $at, $at, $t7 -/* 0BEE10 800BE210 C4325E20 */ lwc1 $f18, %lo(gPitchBendFrequencyScale + 0x200)($at) -/* 0BEE14 800BE214 C486000C */ lwc1 $f6, 0xc($a0) -/* 0BEE18 800BE218 460C9101 */ sub.s $f4, $f18, $f12 -/* 0BEE1C 800BE21C 46062202 */ mul.s $f8, $f4, $f6 -/* 0BEE20 800BE220 460C4080 */ add.s $f2, $f8, $f12 -/* 0BEE24 800BE224 03E00008 */ jr $ra -/* 0BEE28 800BE228 46001006 */ mov.s $f0, $f2 diff --git a/asm/non_matchings/audio/effects/func_800BE22C.s b/asm/non_matchings/audio/effects/func_800BE22C.s deleted file mode 100644 index 410e1c5d0..000000000 --- a/asm/non_matchings/audio/effects/func_800BE22C.s +++ /dev/null @@ -1,18 +0,0 @@ -glabel func_800BE22C -/* 0BEE2C 800BE22C C4840010 */ lwc1 $f4, 0x10($a0) -/* 0BEE30 800BE230 8C8E0004 */ lw $t6, 4($a0) -/* 0BEE34 800BE234 8C8A0008 */ lw $t2, 8($a0) -/* 0BEE38 800BE238 4600218D */ trunc.w.s $f6, $f4 -/* 0BEE3C 800BE23C 44183000 */ mfc1 $t8, $f6 -/* 0BEE40 800BE240 00000000 */ nop -/* 0BEE44 800BE244 01D8C821 */ addu $t9, $t6, $t8 -/* 0BEE48 800BE248 00194282 */ srl $t0, $t9, 0xa -/* 0BEE4C 800BE24C 3109003F */ andi $t1, $t0, 0x3f -/* 0BEE50 800BE250 00095840 */ sll $t3, $t1, 1 -/* 0BEE54 800BE254 AC990004 */ sw $t9, 4($a0) -/* 0BEE58 800BE258 014B6021 */ addu $t4, $t2, $t3 -/* 0BEE5C 800BE25C 85820000 */ lh $v0, ($t4) -/* 0BEE60 800BE260 00026A03 */ sra $t5, $v0, 8 -/* 0BEE64 800BE264 000D7C00 */ sll $t7, $t5, 0x10 -/* 0BEE68 800BE268 03E00008 */ jr $ra -/* 0BEE6C 800BE26C 000F1403 */ sra $v0, $t7, 0x10 diff --git a/asm/non_matchings/audio/effects/func_800BE270.s b/asm/non_matchings/audio/effects/func_800BE270.s deleted file mode 100644 index 381f085e5..000000000 --- a/asm/non_matchings/audio/effects/func_800BE270.s +++ /dev/null @@ -1,141 +0,0 @@ -glabel func_800BE270 -/* 0BEE70 800BE270 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BEE74 800BE274 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BEE78 800BE278 9482001A */ lhu $v0, 0x1a($a0) -/* 0BEE7C 800BE27C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BEE80 800BE280 10400004 */ beqz $v0, .L800BE294 -/* 0BEE84 800BE284 244EFFFF */ addiu $t6, $v0, -1 -/* 0BEE88 800BE288 44810000 */ mtc1 $at, $f0 -/* 0BEE8C 800BE28C 10000072 */ b .L800BE458 -/* 0BEE90 800BE290 A48E001A */ sh $t6, 0x1a($a0) -.L800BE294: -/* 0BEE94 800BE294 94820018 */ lhu $v0, 0x18($a0) -/* 0BEE98 800BE298 24010001 */ li $at, 1 -/* 0BEE9C 800BE29C 5040001C */ beql $v0, $zero, .L800BE310 -/* 0BEEA0 800BE2A0 C48A000C */ lwc1 $f10, 0xc($a0) -/* 0BEEA4 800BE2A4 14410009 */ bne $v0, $at, .L800BE2CC -/* 0BEEA8 800BE2A8 00401825 */ move $v1, $v0 -/* 0BEEAC 800BE2AC 8C8F0000 */ lw $t7, ($a0) -/* 0BEEB0 800BE2B0 94820018 */ lhu $v0, 0x18($a0) -/* 0BEEB4 800BE2B4 95F80012 */ lhu $t8, 0x12($t7) -/* 0BEEB8 800BE2B8 44982000 */ mtc1 $t8, $f4 -/* 0BEEBC 800BE2BC 00000000 */ nop -/* 0BEEC0 800BE2C0 468021A0 */ cvt.s.w $f6, $f4 -/* 0BEEC4 800BE2C4 1000000D */ b .L800BE2FC -/* 0BEEC8 800BE2C8 E486000C */ swc1 $f6, 0xc($a0) -.L800BE2CC: -/* 0BEECC 800BE2CC 8C990000 */ lw $t9, ($a0) -/* 0BEED0 800BE2D0 44839000 */ mtc1 $v1, $f18 -/* 0BEED4 800BE2D4 C480000C */ lwc1 $f0, 0xc($a0) -/* 0BEED8 800BE2D8 97280012 */ lhu $t0, 0x12($t9) -/* 0BEEDC 800BE2DC 46809120 */ cvt.s.w $f4, $f18 -/* 0BEEE0 800BE2E0 44884000 */ mtc1 $t0, $f8 -/* 0BEEE4 800BE2E4 00000000 */ nop -/* 0BEEE8 800BE2E8 468042A0 */ cvt.s.w $f10, $f8 -/* 0BEEEC 800BE2EC 46005401 */ sub.s $f16, $f10, $f0 -/* 0BEEF0 800BE2F0 46048183 */ div.s $f6, $f16, $f4 -/* 0BEEF4 800BE2F4 46060200 */ add.s $f8, $f0, $f6 -/* 0BEEF8 800BE2F8 E488000C */ swc1 $f8, 0xc($a0) -.L800BE2FC: -/* 0BEEFC 800BE2FC 2449FFFF */ addiu $t1, $v0, -1 -/* 0BEF00 800BE300 A4890018 */ sh $t1, 0x18($a0) -/* 0BEF04 800BE304 10000011 */ b .L800BE34C -/* 0BEF08 800BE308 8C830000 */ lw $v1, ($a0) -/* 0BEF0C 800BE30C C48A000C */ lwc1 $f10, 0xc($a0) -.L800BE310: -/* 0BEF10 800BE310 8C830000 */ lw $v1, ($a0) -/* 0BEF14 800BE314 4600548D */ trunc.w.s $f18, $f10 -/* 0BEF18 800BE318 946C0012 */ lhu $t4, 0x12($v1) -/* 0BEF1C 800BE31C 440B9000 */ mfc1 $t3, $f18 -/* 0BEF20 800BE320 00000000 */ nop -/* 0BEF24 800BE324 516C000A */ beql $t3, $t4, .L800BE350 -/* 0BEF28 800BE328 94820016 */ lhu $v0, 0x16($a0) -/* 0BEF2C 800BE32C 94620016 */ lhu $v0, 0x16($v1) -/* 0BEF30 800BE330 14400006 */ bnez $v0, .L800BE34C -/* 0BEF34 800BE334 A4820018 */ sh $v0, 0x18($a0) -/* 0BEF38 800BE338 946D0012 */ lhu $t5, 0x12($v1) -/* 0BEF3C 800BE33C 448D8000 */ mtc1 $t5, $f16 -/* 0BEF40 800BE340 00000000 */ nop -/* 0BEF44 800BE344 46808120 */ cvt.s.w $f4, $f16 -/* 0BEF48 800BE348 E484000C */ swc1 $f4, 0xc($a0) -.L800BE34C: -/* 0BEF4C 800BE34C 94820016 */ lhu $v0, 0x16($a0) -.L800BE350: -/* 0BEF50 800BE350 24010001 */ li $at, 1 -/* 0BEF54 800BE354 50400018 */ beql $v0, $zero, .L800BE3B8 -/* 0BEF58 800BE358 C4920010 */ lwc1 $f18, 0x10($a0) -/* 0BEF5C 800BE35C 14410008 */ bne $v0, $at, .L800BE380 -/* 0BEF60 800BE360 00402825 */ move $a1, $v0 -/* 0BEF64 800BE364 946E0010 */ lhu $t6, 0x10($v1) -/* 0BEF68 800BE368 94820016 */ lhu $v0, 0x16($a0) -/* 0BEF6C 800BE36C 448E3000 */ mtc1 $t6, $f6 -/* 0BEF70 800BE370 00000000 */ nop -/* 0BEF74 800BE374 46803220 */ cvt.s.w $f8, $f6 -/* 0BEF78 800BE378 1000000B */ b .L800BE3A8 -/* 0BEF7C 800BE37C E4880010 */ swc1 $f8, 0x10($a0) -.L800BE380: -/* 0BEF80 800BE380 946F0010 */ lhu $t7, 0x10($v1) -/* 0BEF84 800BE384 44852000 */ mtc1 $a1, $f4 -/* 0BEF88 800BE388 C4800010 */ lwc1 $f0, 0x10($a0) -/* 0BEF8C 800BE38C 448F5000 */ mtc1 $t7, $f10 -/* 0BEF90 800BE390 468021A0 */ cvt.s.w $f6, $f4 -/* 0BEF94 800BE394 468054A0 */ cvt.s.w $f18, $f10 -/* 0BEF98 800BE398 46009401 */ sub.s $f16, $f18, $f0 -/* 0BEF9C 800BE39C 46068203 */ div.s $f8, $f16, $f6 -/* 0BEFA0 800BE3A0 46080280 */ add.s $f10, $f0, $f8 -/* 0BEFA4 800BE3A4 E48A0010 */ swc1 $f10, 0x10($a0) -.L800BE3A8: -/* 0BEFA8 800BE3A8 2458FFFF */ addiu $t8, $v0, -1 -/* 0BEFAC 800BE3AC 10000010 */ b .L800BE3F0 -/* 0BEFB0 800BE3B0 A4980016 */ sh $t8, 0x16($a0) -/* 0BEFB4 800BE3B4 C4920010 */ lwc1 $f18, 0x10($a0) -.L800BE3B8: -/* 0BEFB8 800BE3B8 94690010 */ lhu $t1, 0x10($v1) -/* 0BEFBC 800BE3BC 4600910D */ trunc.w.s $f4, $f18 -/* 0BEFC0 800BE3C0 44082000 */ mfc1 $t0, $f4 -/* 0BEFC4 800BE3C4 00000000 */ nop -/* 0BEFC8 800BE3C8 5109000A */ beql $t0, $t1, .L800BE3F4 -/* 0BEFCC 800BE3CC 44804000 */ mtc1 $zero, $f8 -/* 0BEFD0 800BE3D0 94620014 */ lhu $v0, 0x14($v1) -/* 0BEFD4 800BE3D4 14400006 */ bnez $v0, .L800BE3F0 -/* 0BEFD8 800BE3D8 A4820016 */ sh $v0, 0x16($a0) -/* 0BEFDC 800BE3DC 946A0010 */ lhu $t2, 0x10($v1) -/* 0BEFE0 800BE3E0 448A8000 */ mtc1 $t2, $f16 -/* 0BEFE4 800BE3E4 00000000 */ nop -/* 0BEFE8 800BE3E8 468081A0 */ cvt.s.w $f6, $f16 -/* 0BEFEC 800BE3EC E4860010 */ swc1 $f6, 0x10($a0) -.L800BE3F0: -/* 0BEFF0 800BE3F0 44804000 */ mtc1 $zero, $f8 -.L800BE3F4: -/* 0BEFF4 800BE3F4 C48A000C */ lwc1 $f10, 0xc($a0) -/* 0BEFF8 800BE3F8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BEFFC 800BE3FC 460A4032 */ c.eq.s $f8, $f10 -/* 0BF000 800BE400 00000000 */ nop -/* 0BF004 800BE404 45000004 */ bc1f .L800BE418 -/* 0BF008 800BE408 00000000 */ nop -/* 0BF00C 800BE40C 44810000 */ mtc1 $at, $f0 -/* 0BF010 800BE410 10000012 */ b .L800BE45C -/* 0BF014 800BE414 8FBF0014 */ lw $ra, 0x14($sp) -.L800BE418: -/* 0BF018 800BE418 0C02F88B */ jal func_800BE22C -/* 0BF01C 800BE41C AFA40018 */ sw $a0, 0x18($sp) -/* 0BF020 800BE420 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BF024 800BE424 44817000 */ mtc1 $at, $f14 -/* 0BF028 800BE428 8FA40018 */ lw $a0, 0x18($sp) -/* 0BF02C 800BE42C 3C013980 */ li $at, 0x39800000 # 0.000244 -/* 0BF030 800BE430 44812000 */ mtc1 $at, $f4 -/* 0BF034 800BE434 C492000C */ lwc1 $f18, 0xc($a0) -/* 0BF038 800BE438 3C01800F */ lui $at, %hi(gPitchBendFrequencyScale + 0x200) -/* 0BF03C 800BE43C 00025880 */ sll $t3, $v0, 2 -/* 0BF040 800BE440 002B0821 */ addu $at, $at, $t3 -/* 0BF044 800BE444 46049082 */ mul.s $f2, $f18, $f4 -/* 0BF048 800BE448 C4305E20 */ lwc1 $f16, %lo(gPitchBendFrequencyScale + 0x200)($at) -/* 0BF04C 800BE44C 460E8181 */ sub.s $f6, $f16, $f14 -/* 0BF050 800BE450 46023202 */ mul.s $f8, $f6, $f2 -/* 0BF054 800BE454 460E4000 */ add.s $f0, $f8, $f14 -.L800BE458: -/* 0BF058 800BE458 8FBF0014 */ lw $ra, 0x14($sp) -.L800BE45C: -/* 0BF05C 800BE45C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BF060 800BE460 03E00008 */ jr $ra -/* 0BF064 800BE464 00000000 */ nop diff --git a/asm/non_matchings/audio/effects/func_800BE468.s b/asm/non_matchings/audio/effects/func_800BE468.s deleted file mode 100644 index 934360a65..000000000 --- a/asm/non_matchings/audio/effects/func_800BE468.s +++ /dev/null @@ -1,30 +0,0 @@ -glabel func_800BE468 -/* 0BF068 800BE468 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BF06C 800BE46C AFBF0014 */ sw $ra, 0x14($sp) -/* 0BF070 800BE470 908E007C */ lbu $t6, 0x7c($a0) -/* 0BF074 800BE474 00802825 */ move $a1, $a0 -/* 0BF078 800BE478 2484007C */ addiu $a0, $a0, 0x7c -/* 0BF07C 800BE47C 51C00006 */ beql $t6, $zero, .L800BE498 -/* 0BF080 800BE480 90AF00A0 */ lbu $t7, 0xa0($a1) -/* 0BF084 800BE484 0C02F856 */ jal func_800BE158 -/* 0BF088 800BE488 AFA50018 */ sw $a1, 0x18($sp) -/* 0BF08C 800BE48C 8FA50018 */ lw $a1, 0x18($sp) -/* 0BF090 800BE490 E4A00038 */ swc1 $f0, 0x38($a1) -/* 0BF094 800BE494 90AF00A0 */ lbu $t7, 0xa0($a1) -.L800BE498: -/* 0BF098 800BE498 51E0000B */ beql $t7, $zero, .L800BE4C8 -/* 0BF09C 800BE49C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BF0A0 800BE4A0 8CB80044 */ lw $t8, 0x44($a1) -/* 0BF0A4 800BE4A4 2401FFFF */ li $at, -1 -/* 0BF0A8 800BE4A8 24A4008C */ addiu $a0, $a1, 0x8c -/* 0BF0AC 800BE4AC 53010006 */ beql $t8, $at, .L800BE4C8 -/* 0BF0B0 800BE4B0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BF0B4 800BE4B4 0C02F89C */ jal func_800BE270 -/* 0BF0B8 800BE4B8 AFA50018 */ sw $a1, 0x18($sp) -/* 0BF0BC 800BE4BC 8FA50018 */ lw $a1, 0x18($sp) -/* 0BF0C0 800BE4C0 E4A0003C */ swc1 $f0, 0x3c($a1) -/* 0BF0C4 800BE4C4 8FBF0014 */ lw $ra, 0x14($sp) -.L800BE4C8: -/* 0BF0C8 800BE4C8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BF0CC 800BE4CC 03E00008 */ jr $ra -/* 0BF0D0 800BE4D0 00000000 */ nop diff --git a/asm/non_matchings/audio/effects/func_800BE4D4.s b/asm/non_matchings/audio/effects/func_800BE4D4.s deleted file mode 100644 index 6decd3c36..000000000 --- a/asm/non_matchings/audio/effects/func_800BE4D4.s +++ /dev/null @@ -1,63 +0,0 @@ -glabel func_800BE4D4 -/* 0BF0D4 800BE4D4 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BF0D8 800BE4D8 44810000 */ mtc1 $at, $f0 -/* 0BF0DC 800BE4DC 240E0001 */ li $t6, 1 -/* 0BF0E0 800BE4E0 A08E00A0 */ sb $t6, 0xa0($a0) -/* 0BF0E4 800BE4E4 AC800090 */ sw $zero, 0x90($a0) -/* 0BF0E8 800BE4E8 3C0F800F */ lui $t7, %hi(gWaveSamples + 8) # $t7, 0x800f -/* 0BF0EC 800BE4EC E480003C */ swc1 $f0, 0x3c($a0) -/* 0BF0F0 800BE4F0 E4800038 */ swc1 $f0, 0x38($a0) -/* 0BF0F4 800BE4F4 8DEF5C08 */ lw $t7, %lo(gWaveSamples + 8)($t7) -/* 0BF0F8 800BE4F8 8C980044 */ lw $t8, 0x44($a0) -/* 0BF0FC 800BE4FC 2483008C */ addiu $v1, $a0, 0x8c -/* 0BF100 800BE500 AC8F0094 */ sw $t7, 0x94($a0) -/* 0BF104 800BE504 8F19004C */ lw $t9, 0x4c($t8) -/* 0BF108 800BE508 AC99008C */ sw $t9, 0x8c($a0) -/* 0BF10C 800BE50C 97220016 */ lhu $v0, 0x16($t9) -/* 0BF110 800BE510 14400009 */ bnez $v0, .L800BE538 -/* 0BF114 800BE514 A48200A4 */ sh $v0, 0xa4($a0) -/* 0BF118 800BE518 2483008C */ addiu $v1, $a0, 0x8c -/* 0BF11C 800BE51C 8C650000 */ lw $a1, ($v1) -/* 0BF120 800BE520 94A90012 */ lhu $t1, 0x12($a1) -/* 0BF124 800BE524 44892000 */ mtc1 $t1, $f4 -/* 0BF128 800BE528 00000000 */ nop -/* 0BF12C 800BE52C 468021A0 */ cvt.s.w $f6, $f4 -/* 0BF130 800BE530 10000007 */ b .L800BE550 -/* 0BF134 800BE534 E466000C */ swc1 $f6, 0xc($v1) -.L800BE538: -/* 0BF138 800BE538 8C650000 */ lw $a1, ($v1) -/* 0BF13C 800BE53C 94AA000E */ lhu $t2, 0xe($a1) -/* 0BF140 800BE540 448A4000 */ mtc1 $t2, $f8 -/* 0BF144 800BE544 00000000 */ nop -/* 0BF148 800BE548 468042A0 */ cvt.s.w $f10, $f8 -/* 0BF14C 800BE54C E46A000C */ swc1 $f10, 0xc($v1) -.L800BE550: -/* 0BF150 800BE550 94A20014 */ lhu $v0, 0x14($a1) -/* 0BF154 800BE554 14400007 */ bnez $v0, .L800BE574 -/* 0BF158 800BE558 A4620016 */ sh $v0, 0x16($v1) -/* 0BF15C 800BE55C 94AB0010 */ lhu $t3, 0x10($a1) -/* 0BF160 800BE560 448B8000 */ mtc1 $t3, $f16 -/* 0BF164 800BE564 00000000 */ nop -/* 0BF168 800BE568 468084A0 */ cvt.s.w $f18, $f16 -/* 0BF16C 800BE56C 10000006 */ b .L800BE588 -/* 0BF170 800BE570 E4720010 */ swc1 $f18, 0x10($v1) -.L800BE574: -/* 0BF174 800BE574 94AC000C */ lhu $t4, 0xc($a1) -/* 0BF178 800BE578 448C2000 */ mtc1 $t4, $f4 -/* 0BF17C 800BE57C 00000000 */ nop -/* 0BF180 800BE580 468021A0 */ cvt.s.w $f6, $f4 -/* 0BF184 800BE584 E4660010 */ swc1 $f6, 0x10($v1) -.L800BE588: -/* 0BF188 800BE588 94AD0018 */ lhu $t5, 0x18($a1) -/* 0BF18C 800BE58C 24820030 */ addiu $v0, $a0, 0x30 -/* 0BF190 800BE590 A46D001A */ sh $t5, 0x1a($v1) -/* 0BF194 800BE594 8C4E0014 */ lw $t6, 0x14($v0) -/* 0BF198 800BE598 8DC10008 */ lw $at, 8($t6) -/* 0BF19C 800BE59C AC41004C */ sw $at, 0x4c($v0) -/* 0BF1A0 800BE5A0 8DD8000C */ lw $t8, 0xc($t6) -/* 0BF1A4 800BE5A4 AC580050 */ sw $t8, 0x50($v0) -/* 0BF1A8 800BE5A8 8DC10010 */ lw $at, 0x10($t6) -/* 0BF1AC 800BE5AC AC410054 */ sw $at, 0x54($v0) -/* 0BF1B0 800BE5B0 8DD80014 */ lw $t8, 0x14($t6) -/* 0BF1B4 800BE5B4 03E00008 */ jr $ra -/* 0BF1B8 800BE5B8 AC580058 */ sw $t8, 0x58($v0) diff --git a/asm/non_matchings/audio/effects/func_800BE5BC.s b/asm/non_matchings/audio/effects/func_800BE5BC.s deleted file mode 100644 index 01935297d..000000000 --- a/asm/non_matchings/audio/effects/func_800BE5BC.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel func_800BE5BC -/* 0BF1BC 800BE5BC AFA60008 */ sw $a2, 8($sp) -/* 0BF1C0 800BE5C0 44800000 */ mtc1 $zero, $f0 -/* 0BF1C4 800BE5C4 A0800000 */ sb $zero, ($a0) -/* 0BF1C8 800BE5C8 A0800001 */ sb $zero, 1($a0) -/* 0BF1CC 800BE5CC A4800004 */ sh $zero, 4($a0) -/* 0BF1D0 800BE5D0 AC850020 */ sw $a1, 0x20($a0) -/* 0BF1D4 800BE5D4 E4800008 */ swc1 $f0, 8($a0) -/* 0BF1D8 800BE5D8 03E00008 */ jr $ra -/* 0BF1DC 800BE5DC E4800014 */ swc1 $f0, 0x14($a0) diff --git a/asm/non_matchings/audio/effects/func_800BE5E0.s b/asm/non_matchings/audio/effects/func_800BE5E0.s deleted file mode 100644 index e74b05943..000000000 --- a/asm/non_matchings/audio/effects/func_800BE5E0.s +++ /dev/null @@ -1,227 +0,0 @@ -glabel func_800BE5E0 -/* 0BF1E0 800BE5E0 90830001 */ lbu $v1, 1($a0) -/* 0BF1E4 800BE5E4 90820000 */ lbu $v0, ($a0) -/* 0BF1E8 800BE5E8 2C610009 */ sltiu $at, $v1, 9 -/* 0BF1EC 800BE5EC 1020009D */ beqz $at, .L800BE864 -/* 0BF1F0 800BE5F0 00602825 */ move $a1, $v1 -/* 0BF1F4 800BE5F4 00037080 */ sll $t6, $v1, 2 -/* 0BF1F8 800BE5F8 3C01800F */ lui $at, %hi(jpt_800F2EE0) -/* 0BF1FC 800BE5FC 002E0821 */ addu $at, $at, $t6 -/* 0BF200 800BE600 8C2E2EE0 */ lw $t6, %lo(jpt_800F2EE0)($at) -/* 0BF204 800BE604 01C00008 */ jr $t6 -/* 0BF208 800BE608 00000000 */ nop -glabel L800BE60C -/* 0BF20C 800BE60C 44800000 */ mtc1 $zero, $f0 -/* 0BF210 800BE610 03E00008 */ jr $ra -/* 0BF214 800BE614 00000000 */ nop - -glabel L800BE618 -/* 0BF218 800BE618 304F0040 */ andi $t7, $v0, 0x40 -/* 0BF21C 800BE61C 11E00003 */ beqz $t7, .L800BE62C -/* 0BF220 800BE620 24180005 */ li $t8, 5 -/* 0BF224 800BE624 1000008F */ b .L800BE864 -/* 0BF228 800BE628 A0980001 */ sb $t8, 1($a0) -.L800BE62C: -glabel L800BE62C -/* 0BF22C 800BE62C 24190003 */ li $t9, 3 -/* 0BF230 800BE630 A4800002 */ sh $zero, 2($a0) -/* 0BF234 800BE634 A0990001 */ sb $t9, 1($a0) -.L800BE638: -glabel L800BE638 -/* 0BF238 800BE638 84890002 */ lh $t1, 2($a0) -/* 0BF23C 800BE63C 8C880020 */ lw $t0, 0x20($a0) -/* 0BF240 800BE640 2401FFFD */ li $at, -3 -/* 0BF244 800BE644 00095080 */ sll $t2, $t1, 2 -/* 0BF248 800BE648 010A1821 */ addu $v1, $t0, $t2 -/* 0BF24C 800BE64C 846B0000 */ lh $t3, ($v1) -/* 0BF250 800BE650 A48B0004 */ sh $t3, 4($a0) -/* 0BF254 800BE654 84860004 */ lh $a2, 4($a0) -/* 0BF258 800BE658 10C10010 */ beq $a2, $at, .L800BE69C -/* 0BF25C 800BE65C 00C02825 */ move $a1, $a2 -/* 0BF260 800BE660 2401FFFE */ li $at, -2 -/* 0BF264 800BE664 10C1000A */ beq $a2, $at, .L800BE690 -/* 0BF268 800BE668 2401FFFF */ li $at, -1 -/* 0BF26C 800BE66C 50C10006 */ beql $a2, $at, .L800BE688 -/* 0BF270 800BE670 240C0005 */ li $t4, 5 -/* 0BF274 800BE674 14C0000C */ bnez $a2, .L800BE6A8 -/* 0BF278 800BE678 28C10004 */ slti $at, $a2, 4 -/* 0BF27C 800BE67C 10000041 */ b .L800BE784 -/* 0BF280 800BE680 A0800001 */ sb $zero, 1($a0) -/* 0BF284 800BE684 240C0005 */ li $t4, 5 -.L800BE688: -/* 0BF288 800BE688 1000003E */ b .L800BE784 -/* 0BF28C 800BE68C A08C0001 */ sb $t4, 1($a0) -.L800BE690: -/* 0BF290 800BE690 846D0002 */ lh $t5, 2($v1) -/* 0BF294 800BE694 1000FFE8 */ b .L800BE638 -/* 0BF298 800BE698 A48D0002 */ sh $t5, 2($a0) -.L800BE69C: -/* 0BF29C 800BE69C 240E0001 */ li $t6, 1 -/* 0BF2A0 800BE6A0 10000038 */ b .L800BE784 -/* 0BF2A4 800BE6A4 A08E0001 */ sb $t6, 1($a0) -.L800BE6A8: -/* 0BF2A8 800BE6A8 14200019 */ bnez $at, .L800BE710 -/* 0BF2AC 800BE6AC 3C03803B */ lui $v1, %hi(gAudioBufferParameters) # $v1, 0x803b -/* 0BF2B0 800BE6B0 24637088 */ addiu $v1, %lo(gAudioBufferParameters) # addiu $v1, $v1, 0x7088 -/* 0BF2B4 800BE6B4 846F000C */ lh $t7, 0xc($v1) -/* 0BF2B8 800BE6B8 84790000 */ lh $t9, ($v1) -/* 0BF2BC 800BE6BC 00CF0019 */ multu $a2, $t7 -/* 0BF2C0 800BE6C0 0000C012 */ mflo $t8 -/* 0BF2C4 800BE6C4 00000000 */ nop -/* 0BF2C8 800BE6C8 00000000 */ nop -/* 0BF2CC 800BE6CC 0319001A */ div $zero, $t8, $t9 -/* 0BF2D0 800BE6D0 17200002 */ bnez $t9, .L800BE6DC -/* 0BF2D4 800BE6D4 00000000 */ nop -/* 0BF2D8 800BE6D8 0007000D */ break 7 -.L800BE6DC: -/* 0BF2DC 800BE6DC 2401FFFF */ li $at, -1 -/* 0BF2E0 800BE6E0 17210004 */ bne $t9, $at, .L800BE6F4 -/* 0BF2E4 800BE6E4 3C018000 */ lui $at, 0x8000 -/* 0BF2E8 800BE6E8 17010002 */ bne $t8, $at, .L800BE6F4 -/* 0BF2EC 800BE6EC 00000000 */ nop -/* 0BF2F0 800BE6F0 0006000D */ break 6 -.L800BE6F4: -/* 0BF2F4 800BE6F4 00004812 */ mflo $t1 -/* 0BF2F8 800BE6F8 05210003 */ bgez $t1, .L800BE708 -/* 0BF2FC 800BE6FC 00094083 */ sra $t0, $t1, 2 -/* 0BF300 800BE700 25210003 */ addiu $at, $t1, 3 -/* 0BF304 800BE704 00014083 */ sra $t0, $at, 2 -.L800BE708: -/* 0BF308 800BE708 A4880004 */ sh $t0, 4($a0) -/* 0BF30C 800BE70C 84860004 */ lh $a2, 4($a0) -.L800BE710: -/* 0BF310 800BE710 14C00003 */ bnez $a2, .L800BE720 -/* 0BF314 800BE714 240A0001 */ li $t2, 1 -/* 0BF318 800BE718 A48A0004 */ sh $t2, 4($a0) -/* 0BF31C 800BE71C 84860004 */ lh $a2, 4($a0) -.L800BE720: -/* 0BF320 800BE720 84830002 */ lh $v1, 2($a0) -/* 0BF324 800BE724 8C8B0020 */ lw $t3, 0x20($a0) -/* 0BF328 800BE728 3C01800F */ lui $at, %hi(D_800F2F04) # $at, 0x800f -/* 0BF32C 800BE72C 00036080 */ sll $t4, $v1, 2 -/* 0BF330 800BE730 016C6821 */ addu $t5, $t3, $t4 -/* 0BF334 800BE734 85AE0002 */ lh $t6, 2($t5) -/* 0BF338 800BE738 C4282F04 */ lwc1 $f8, %lo(D_800F2F04)($at) -/* 0BF33C 800BE73C 240F0004 */ li $t7, 4 -/* 0BF340 800BE740 448E2000 */ mtc1 $t6, $f4 -/* 0BF344 800BE744 24780001 */ addiu $t8, $v1, 1 -/* 0BF348 800BE748 A08F0001 */ sb $t7, 1($a0) -/* 0BF34C 800BE74C 468021A0 */ cvt.s.w $f6, $f4 -/* 0BF350 800BE750 C4840014 */ lwc1 $f4, 0x14($a0) -/* 0BF354 800BE754 A4980002 */ sh $t8, 2($a0) -/* 0BF358 800BE758 46083283 */ div.s $f10, $f6, $f8 -/* 0BF35C 800BE75C 44864000 */ mtc1 $a2, $f8 -/* 0BF360 800BE760 E48A0018 */ swc1 $f10, 0x18($a0) -/* 0BF364 800BE764 C4800018 */ lwc1 $f0, 0x18($a0) -/* 0BF368 800BE768 468042A0 */ cvt.s.w $f10, $f8 -/* 0BF36C 800BE76C 46000402 */ mul.s $f16, $f0, $f0 -/* 0BF370 800BE770 E4900018 */ swc1 $f16, 0x18($a0) -/* 0BF374 800BE774 C4920018 */ lwc1 $f18, 0x18($a0) -/* 0BF378 800BE778 46049181 */ sub.s $f6, $f18, $f4 -/* 0BF37C 800BE77C 460A3403 */ div.s $f16, $f6, $f10 -/* 0BF380 800BE780 E490000C */ swc1 $f16, 0xc($a0) -.L800BE784: -/* 0BF384 800BE784 90990001 */ lbu $t9, 1($a0) -/* 0BF388 800BE788 24010004 */ li $at, 4 -/* 0BF38C 800BE78C 57210036 */ bnel $t9, $at, .L800BE868 -/* 0BF390 800BE790 44806000 */ mtc1 $zero, $f12 -glabel L800BE794 -/* 0BF394 800BE794 84890004 */ lh $t1, 4($a0) -/* 0BF398 800BE798 C4920014 */ lwc1 $f18, 0x14($a0) -/* 0BF39C 800BE79C C484000C */ lwc1 $f4, 0xc($a0) -/* 0BF3A0 800BE7A0 2528FFFF */ addiu $t0, $t1, -1 -/* 0BF3A4 800BE7A4 A4880004 */ sh $t0, 4($a0) -/* 0BF3A8 800BE7A8 46049200 */ add.s $f8, $f18, $f4 -/* 0BF3AC 800BE7AC 848A0004 */ lh $t2, 4($a0) -/* 0BF3B0 800BE7B0 240B0003 */ li $t3, 3 -/* 0BF3B4 800BE7B4 1D40002B */ bgtz $t2, .L800BE864 -/* 0BF3B8 800BE7B8 E4880014 */ swc1 $f8, 0x14($a0) -/* 0BF3BC 800BE7BC 10000029 */ b .L800BE864 -/* 0BF3C0 800BE7C0 A08B0001 */ sb $t3, 1($a0) -glabel L800BE7C4 -/* 0BF3C4 800BE7C4 44806000 */ mtc1 $zero, $f12 -/* 0BF3C8 800BE7C8 C4800008 */ lwc1 $f0, 8($a0) -/* 0BF3CC 800BE7CC C4860014 */ lwc1 $f6, 0x14($a0) -/* 0BF3D0 800BE7D0 C48A0010 */ lwc1 $f10, 0x10($a0) -/* 0BF3D4 800BE7D4 46006032 */ c.eq.s $f12, $f0 -/* 0BF3D8 800BE7D8 24010006 */ li $at, 6 -/* 0BF3DC 800BE7DC 460A3401 */ sub.s $f16, $f6, $f10 -/* 0BF3E0 800BE7E0 4501000E */ bc1t .L800BE81C -/* 0BF3E4 800BE7E4 E4900014 */ swc1 $f16, 0x14($a0) -/* 0BF3E8 800BE7E8 14A1000C */ bne $a1, $at, .L800BE81C -/* 0BF3EC 800BE7EC 00000000 */ nop -/* 0BF3F0 800BE7F0 C4920014 */ lwc1 $f18, 0x14($a0) -/* 0BF3F4 800BE7F4 240C0080 */ li $t4, 128 -/* 0BF3F8 800BE7F8 240D0008 */ li $t5, 8 -/* 0BF3FC 800BE7FC 4600903C */ c.lt.s $f18, $f0 -/* 0BF400 800BE800 00000000 */ nop -/* 0BF404 800BE804 45020018 */ bc1fl .L800BE868 -/* 0BF408 800BE808 44806000 */ mtc1 $zero, $f12 -/* 0BF40C 800BE80C E4800014 */ swc1 $f0, 0x14($a0) -/* 0BF410 800BE810 A48C0004 */ sh $t4, 4($a0) -/* 0BF414 800BE814 10000013 */ b .L800BE864 -/* 0BF418 800BE818 A08D0001 */ sb $t5, 1($a0) -.L800BE81C: -/* 0BF41C 800BE81C 3C01800F */ lui $at, %hi(D_800F2F08) # $at, 0x800f -/* 0BF420 800BE820 C4282F08 */ lwc1 $f8, %lo(D_800F2F08)($at) -/* 0BF424 800BE824 C4840014 */ lwc1 $f4, 0x14($a0) -/* 0BF428 800BE828 4608203C */ c.lt.s $f4, $f8 -/* 0BF42C 800BE82C 00000000 */ nop -/* 0BF430 800BE830 4502000D */ bc1fl .L800BE868 -/* 0BF434 800BE834 44806000 */ mtc1 $zero, $f12 -/* 0BF438 800BE838 E48C0014 */ swc1 $f12, 0x14($a0) -/* 0BF43C 800BE83C 10000009 */ b .L800BE864 -/* 0BF440 800BE840 A0800001 */ sb $zero, 1($a0) -glabel L800BE844 -/* 0BF444 800BE844 848E0004 */ lh $t6, 4($a0) -/* 0BF448 800BE848 24190007 */ li $t9, 7 -/* 0BF44C 800BE84C 25CFFFFF */ addiu $t7, $t6, -1 -/* 0BF450 800BE850 A48F0004 */ sh $t7, 4($a0) -/* 0BF454 800BE854 84980004 */ lh $t8, 4($a0) -/* 0BF458 800BE858 57000003 */ bnel $t8, $zero, .L800BE868 -/* 0BF45C 800BE85C 44806000 */ mtc1 $zero, $f12 -/* 0BF460 800BE860 A0990001 */ sb $t9, 1($a0) -.L800BE864: -glabel L800BE864 -/* 0BF464 800BE864 44806000 */ mtc1 $zero, $f12 -.L800BE868: -/* 0BF468 800BE868 30490020 */ andi $t1, $v0, 0x20 -/* 0BF46C 800BE86C 11200005 */ beqz $t1, .L800BE884 -/* 0BF470 800BE870 00401825 */ move $v1, $v0 -/* 0BF474 800BE874 24080006 */ li $t0, 6 -/* 0BF478 800BE878 304AFFDF */ andi $t2, $v0, 0xffdf -/* 0BF47C 800BE87C A0880001 */ sb $t0, 1($a0) -/* 0BF480 800BE880 A08A0000 */ sb $t2, ($a0) -.L800BE884: -/* 0BF484 800BE884 306B0010 */ andi $t3, $v1, 0x10 -/* 0BF488 800BE888 11600004 */ beqz $t3, .L800BE89C -/* 0BF48C 800BE88C 240C0007 */ li $t4, 7 -/* 0BF490 800BE890 306DFFEF */ andi $t5, $v1, 0xffef -/* 0BF494 800BE894 A08C0001 */ sb $t4, 1($a0) -/* 0BF498 800BE898 A08D0000 */ sb $t5, ($a0) -.L800BE89C: -/* 0BF49C 800BE89C C4820014 */ lwc1 $f2, 0x14($a0) -/* 0BF4A0 800BE8A0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BF4A4 800BE8A4 460C103C */ c.lt.s $f2, $f12 -/* 0BF4A8 800BE8A8 00000000 */ nop -/* 0BF4AC 800BE8AC 45020004 */ bc1fl .L800BE8C0 -/* 0BF4B0 800BE8B0 44816000 */ mtc1 $at, $f12 -/* 0BF4B4 800BE8B4 03E00008 */ jr $ra -/* 0BF4B8 800BE8B8 46006006 */ mov.s $f0, $f12 - -/* 0BF4BC 800BE8BC 44816000 */ mtc1 $at, $f12 -.L800BE8C0: -/* 0BF4C0 800BE8C0 00000000 */ nop -/* 0BF4C4 800BE8C4 4602603C */ c.lt.s $f12, $f2 -/* 0BF4C8 800BE8C8 00000000 */ nop -/* 0BF4CC 800BE8CC 45020004 */ bc1fl .L800BE8E0 -/* 0BF4D0 800BE8D0 46001006 */ mov.s $f0, $f2 -/* 0BF4D4 800BE8D4 03E00008 */ jr $ra -/* 0BF4D8 800BE8D8 46006006 */ mov.s $f0, $f12 - -/* 0BF4DC 800BE8DC 46001006 */ mov.s $f0, $f2 -.L800BE8E0: -/* 0BF4E0 800BE8E0 03E00008 */ jr $ra -/* 0BF4E4 800BE8E4 00000000 */ nop - -/* 0BF4E8 800BE8E8 00000000 */ nop diff --git a/asm/non_matchings/audio/external/func_800C15D0.s b/asm/non_matchings/audio/external/func_800C15D0.s index 5abbfa851..35eaac695 100644 --- a/asm/non_matchings/audio/external/func_800C15D0.s +++ b/asm/non_matchings/audio/external/func_800C15D0.s @@ -46,8 +46,8 @@ glabel func_800C15D0 /* 0C227C 800C167C 3C04803B */ lui $a0, %hi(D_803B17D0) # 0x803b /* 0C2280 800C1680 00992021 */ addu $a0, $a0, $t9 /* 0C2284 800C1684 8C8417D0 */ lw $a0, %lo(D_803B17D0)($a0) # 0x17d0($a0) -/* 0C2288 800C1688 3C08803B */ lui $t0, %hi(D_803B5EF0) # $t0, 0x803b -/* 0C228C 800C168C 25085EF0 */ addiu $t0, %lo(D_803B5EF0) # addiu $t0, $t0, 0x5ef0 +/* 0C2288 800C1688 3C08803B */ lui $t0, %hi(gSequenceChannelNone) # $t0, 0x803b +/* 0C228C 800C168C 25085EF0 */ addiu $t0, %lo(gSequenceChannelNone) # addiu $t0, $t0, 0x5ef0 /* 0C2290 800C1690 11040002 */ beq $t0, $a0, .L800C169C /* 0C2294 800C1694 2401FFFF */ li $at, -1 /* 0C2298 800C1698 8083005E */ lb $v1, 0x5e($a0) diff --git a/asm/non_matchings/audio/external/func_800C2274.s b/asm/non_matchings/audio/external/func_800C2274.s index 3565856ac..9b7710b87 100644 --- a/asm/non_matchings/audio/external/func_800C2274.s +++ b/asm/non_matchings/audio/external/func_800C2274.s @@ -4,9 +4,9 @@ glabel func_800C2274 /* 0C2E7C 800C227C 01C77021 */ addu $t6, $t6, $a3 /* 0C2E80 800C2280 000E70C0 */ sll $t6, $t6, 3 /* 0C2E84 800C2284 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 0C2E88 800C2288 3C05803B */ lui $a1, %hi(D_803B1510) # $a1, 0x803b +/* 0C2E88 800C2288 3C05803B */ lui $a1, %hi(gSequencePlayers) # $a1, 0x803b /* 0C2E8C 800C228C 01C77021 */ addu $t6, $t6, $a3 -/* 0C2E90 800C2290 24A51510 */ addiu $a1, %lo(D_803B1510) # addiu $a1, $a1, 0x1510 +/* 0C2E90 800C2290 24A51510 */ addiu $a1, %lo(gSequencePlayers) # addiu $a1, $a1, 0x1510 /* 0C2E94 800C2294 000E70C0 */ sll $t6, $t6, 3 /* 0C2E98 800C2298 00AE7821 */ addu $t7, $a1, $t6 /* 0C2E9C 800C229C 8DF80000 */ lw $t8, ($t7) diff --git a/asm/non_matchings/audio/external/func_800C3508.s b/asm/non_matchings/audio/external/func_800C3508.s index 332164ca2..57af4a628 100644 --- a/asm/non_matchings/audio/external/func_800C3508.s +++ b/asm/non_matchings/audio/external/func_800C3508.s @@ -6,10 +6,10 @@ glabel func_800C3508 /* 0C4118 800C3518 01EE7821 */ addu $t7, $t7, $t6 /* 0C411C 800C351C 27ADFFF0 */ addiu $t5, $sp, -0x10 /* 0C4120 800C3520 000F78C0 */ sll $t7, $t7, 3 -/* 0C4124 800C3524 3C18803B */ lui $t8, %hi(D_803B1510) # 0x803b +/* 0C4124 800C3524 3C18803B */ lui $t8, %hi(gSequencePlayers) # 0x803b /* 0C4128 800C3528 ADA40010 */ sw $a0, 0x10($t5) /* 0C412C 800C352C 030FC021 */ addu $t8, $t8, $t7 -/* 0C4130 800C3530 8F181510 */ lw $t8, %lo(D_803B1510)($t8) # 0x1510($t8) +/* 0C4130 800C3530 8F181510 */ lw $t8, %lo(gSequencePlayers)($t8) # 0x1510($t8) /* 0C4134 800C3534 01C02025 */ move $a0, $t6 /* 0C4138 800C3538 000440C0 */ sll $t0, $a0, 3 /* 0C413C 800C353C 0018CFC2 */ srl $t9, $t8, 0x1f diff --git a/asm/non_matchings/audio/external/func_800C3724.s b/asm/non_matchings/audio/external/func_800C3724.s index 9e2029142..80c545910 100644 --- a/asm/non_matchings/audio/external/func_800C3724.s +++ b/asm/non_matchings/audio/external/func_800C3724.s @@ -143,8 +143,8 @@ glabel func_800C3724 /* 0C452C 800C392C 0315C021 */ addu $t8, $t8, $s5 /* 0C4530 800C3930 0018C0C0 */ sll $t8, $t8, 3 /* 0C4534 800C3934 0315C021 */ addu $t8, $t8, $s5 -/* 0C4538 800C3938 3C0B803B */ lui $t3, %hi(D_803B1510) # $t3, 0x803b -/* 0C453C 800C393C 256B1510 */ addiu $t3, %lo(D_803B1510) # addiu $t3, $t3, 0x1510 +/* 0C4538 800C3938 3C0B803B */ lui $t3, %hi(gSequencePlayers) # $t3, 0x803b +/* 0C453C 800C393C 256B1510 */ addiu $t3, %lo(gSequencePlayers) # addiu $t3, $t3, 0x1510 /* 0C4540 800C3940 0018C0C0 */ sll $t8, $t8, 3 /* 0C4544 800C3944 030B2821 */ addu $a1, $t8, $t3 /* 0C4548 800C3948 8CAC0000 */ lw $t4, ($a1) @@ -432,9 +432,9 @@ glabel func_800C3724 .L800C3D3C: /* 0C493C 800C3D3C 01F57821 */ addu $t7, $t7, $s5 /* 0C4940 800C3D40 000F78C0 */ sll $t7, $t7, 3 -/* 0C4944 800C3D44 3C0E803B */ lui $t6, %hi(D_803B1510) # 0x803b +/* 0C4944 800C3D44 3C0E803B */ lui $t6, %hi(gSequencePlayers) # 0x803b /* 0C4948 800C3D48 01CF7021 */ addu $t6, $t6, $t7 -/* 0C494C 800C3D4C 8DCE1510 */ lw $t6, %lo(D_803B1510)($t6) # 0x1510($t6) +/* 0C494C 800C3D4C 8DCE1510 */ lw $t6, %lo(gSequencePlayers)($t6) # 0x1510($t6) /* 0C4950 800C3D50 00009025 */ move $s2, $zero /* 0C4954 800C3D54 000ECFC2 */ srl $t9, $t6, 0x1f /* 0C4958 800C3D58 57200073 */ bnel $t9, $zero, .L800C3F28 diff --git a/asm/non_matchings/audio/external/func_800C59C4.s b/asm/non_matchings/audio/external/func_800C59C4.s index 8aaea504e..58c1a635f 100644 --- a/asm/non_matchings/audio/external/func_800C59C4.s +++ b/asm/non_matchings/audio/external/func_800C59C4.s @@ -2,9 +2,9 @@ glabel func_800C59C4 /* 0C65C4 800C59C4 3C0F803B */ lui $t7, %hi(D_803B17D0) # $t7, 0x803b /* 0C65C8 800C59C8 8DEF17D0 */ lw $t7, %lo(D_803B17D0)($t7) /* 0C65CC 800C59CC 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0C65D0 800C59D0 3C0E803B */ lui $t6, %hi(D_803B5EF0) # $t6, 0x803b +/* 0C65D0 800C59D0 3C0E803B */ lui $t6, %hi(gSequenceChannelNone) # $t6, 0x803b /* 0C65D4 800C59D4 AFBE0028 */ sw $fp, 0x28($sp) -/* 0C65D8 800C59D8 25CE5EF0 */ addiu $t6, %lo(D_803B5EF0) # addiu $t6, $t6, 0x5ef0 +/* 0C65D8 800C59D8 25CE5EF0 */ addiu $t6, %lo(gSequenceChannelNone) # addiu $t6, $t6, 0x5ef0 /* 0C65DC 800C59DC 03A0F025 */ move $fp, $sp /* 0C65E0 800C59E0 AFBF002C */ sw $ra, 0x2c($sp) /* 0C65E4 800C59E4 11CF000F */ beq $t6, $t7, .L800C5A24 diff --git a/asm/non_matchings/audio/heap/func_800B8DE0.s b/asm/non_matchings/audio/heap/func_800B8DE0.s index e0fa4b391..3f071a2c4 100644 --- a/asm/non_matchings/audio/heap/func_800B8DE0.s +++ b/asm/non_matchings/audio/heap/func_800B8DE0.s @@ -1,8 +1,8 @@ glabel func_800B8DE0 -/* 0B99E0 800B8DE0 3C03803B */ lui $v1, %hi(D_803B03C0) # $v1, 0x803b -/* 0B99E4 800B8DE4 3C02803B */ lui $v0, %hi(D_803B0400) # $v0, 0x803b -/* 0B99E8 800B8DE8 24420400 */ addiu $v0, %lo(D_803B0400) # addiu $v0, $v0, 0x400 -/* 0B99EC 800B8DEC 246303C0 */ addiu $v1, %lo(D_803B03C0) # addiu $v1, $v1, 0x3c0 +/* 0B99E0 800B8DE0 3C03803B */ lui $v1, %hi(gBankLoadStatus) # $v1, 0x803b +/* 0B99E4 800B8DE4 3C02803B */ lui $v0, %hi(gSeqLoadStatus) # $v0, 0x803b +/* 0B99E8 800B8DE8 24420400 */ addiu $v0, %lo(gSeqLoadStatus) # addiu $v0, $v0, 0x400 +/* 0B99EC 800B8DEC 246303C0 */ addiu $v1, %lo(gBankLoadStatus) # addiu $v1, $v1, 0x3c0 /* 0B99F0 800B8DF0 24040005 */ li $a0, 5 /* 0B99F4 800B8DF4 906E0000 */ lbu $t6, ($v1) .L800B8DF8: @@ -15,8 +15,8 @@ glabel func_800B8DE0 /* 0B9A0C 800B8E0C 5420FFFA */ bnel $at, $zero, .L800B8DF8 /* 0B9A10 800B8E10 906E0000 */ lbu $t6, ($v1) /* 0B9A14 800B8E14 3C03803B */ lui $v1, %hi(D_803B0380) # $v1, 0x803b -/* 0B9A18 800B8E18 3C02803B */ lui $v0, %hi(D_803B03C0) # $v0, 0x803b -/* 0B9A1C 800B8E1C 244203C0 */ addiu $v0, %lo(D_803B03C0) # addiu $v0, $v0, 0x3c0 +/* 0B9A18 800B8E18 3C02803B */ lui $v0, %hi(gBankLoadStatus) # $v0, 0x803b +/* 0B9A1C 800B8E1C 244203C0 */ addiu $v0, %lo(gBankLoadStatus) # addiu $v0, $v0, 0x3c0 /* 0B9A20 800B8E20 24630380 */ addiu $v1, %lo(D_803B0380) # addiu $v1, $v1, 0x380 /* 0B9A24 800B8E24 906F0000 */ lbu $t7, ($v1) .L800B8E28: @@ -28,10 +28,10 @@ glabel func_800B8DE0 /* 0B9A38 800B8E38 0062082B */ sltu $at, $v1, $v0 /* 0B9A3C 800B8E3C 5420FFFA */ bnel $at, $zero, .L800B8E28 /* 0B9A40 800B8E40 906F0000 */ lbu $t7, ($v1) -/* 0B9A44 800B8E44 3C03803B */ lui $v1, %hi(D_803B0400) # $v1, 0x803b +/* 0B9A44 800B8E44 3C03803B */ lui $v1, %hi(gSeqLoadStatus) # $v1, 0x803b /* 0B9A48 800B8E48 3C02803B */ lui $v0, %hi(D_803B0500) # $v0, 0x803b /* 0B9A4C 800B8E4C 24420500 */ addiu $v0, %lo(D_803B0500) # addiu $v0, $v0, 0x500 -/* 0B9A50 800B8E50 24630400 */ addiu $v1, %lo(D_803B0400) # addiu $v1, $v1, 0x400 +/* 0B9A50 800B8E50 24630400 */ addiu $v1, %lo(gSeqLoadStatus) # addiu $v1, $v1, 0x400 /* 0B9A54 800B8E54 90780000 */ lbu $t8, ($v1) .L800B8E58: /* 0B9A58 800B8E58 50980003 */ beql $a0, $t8, .L800B8E68 diff --git a/asm/non_matchings/audio/heap/func_800B8EA8.s b/asm/non_matchings/audio/heap/func_800B8EA8.s deleted file mode 100644 index cd7f081e8..000000000 --- a/asm/non_matchings/audio/heap/func_800B8EA8.s +++ /dev/null @@ -1,62 +0,0 @@ -glabel func_800B8EA8 -/* 0B9AA8 800B8EA8 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0B9AAC 800B8EAC 3C02803B */ lui $v0, %hi(gMaxSimultaneousNotes) # $v0, 0x803b -/* 0B9AB0 800B8EB0 8C4270B0 */ lw $v0, %lo(gMaxSimultaneousNotes)($v0) -/* 0B9AB4 800B8EB4 AFB50028 */ sw $s5, 0x28($sp) -/* 0B9AB8 800B8EB8 AFB2001C */ sw $s2, 0x1c($sp) -/* 0B9ABC 800B8EBC 0080A825 */ move $s5, $a0 -/* 0B9AC0 800B8EC0 AFBF002C */ sw $ra, 0x2c($sp) -/* 0B9AC4 800B8EC4 AFB40024 */ sw $s4, 0x24($sp) -/* 0B9AC8 800B8EC8 AFB30020 */ sw $s3, 0x20($sp) -/* 0B9ACC 800B8ECC AFB10018 */ sw $s1, 0x18($sp) -/* 0B9AD0 800B8ED0 AFB00014 */ sw $s0, 0x14($sp) -/* 0B9AD4 800B8ED4 18400024 */ blez $v0, .L800B8F68 -/* 0B9AD8 800B8ED8 00009025 */ move $s2, $zero -/* 0B9ADC 800B8EDC 3C14803B */ lui $s4, %hi(D_803B5FC8) # $s4, 0x803b -/* 0B9AE0 800B8EE0 3C13803B */ lui $s3, %hi(D_803B1508) # $s3, 0x803b -/* 0B9AE4 800B8EE4 26731508 */ addiu $s3, %lo(D_803B1508) # addiu $s3, $s3, 0x1508 -/* 0B9AE8 800B8EE8 26945FC8 */ addiu $s4, %lo(D_803B5FC8) # addiu $s4, $s4, 0x5fc8 -/* 0B9AEC 800B8EEC 00008825 */ move $s1, $zero -.L800B8EF0: -/* 0B9AF0 800B8EF0 8E6E0000 */ lw $t6, ($s3) -/* 0B9AF4 800B8EF4 022E8021 */ addu $s0, $s1, $t6 -/* 0B9AF8 800B8EF8 920F00B2 */ lbu $t7, 0xb2($s0) -/* 0B9AFC 800B8EFC 56AF0017 */ bnel $s5, $t7, .L800B8F5C -/* 0B9B00 800B8F00 26520001 */ addiu $s2, $s2, 1 -/* 0B9B04 800B8F04 92180030 */ lbu $t8, 0x30($s0) -/* 0B9B08 800B8F08 2B010002 */ slti $at, $t8, 2 -/* 0B9B0C 800B8F0C 14200009 */ bnez $at, .L800B8F34 -/* 0B9B10 800B8F10 00000000 */ nop -/* 0B9B14 800B8F14 8E020044 */ lw $v0, 0x44($s0) -/* 0B9B18 800B8F18 90590000 */ lbu $t9, ($v0) -/* 0B9B1C 800B8F1C 3328FF7F */ andi $t0, $t9, 0xff7f -/* 0B9B20 800B8F20 A0480000 */ sb $t0, ($v0) -/* 0B9B24 800B8F24 8E020044 */ lw $v0, 0x44($s0) -/* 0B9B28 800B8F28 904A0000 */ lbu $t2, ($v0) -/* 0B9B2C 800B8F2C 354B0040 */ ori $t3, $t2, 0x40 -/* 0B9B30 800B8F30 A04B0000 */ sb $t3, ($v0) -.L800B8F34: -/* 0B9B34 800B8F34 0C02F2D2 */ jal func_800BCB48 -/* 0B9B38 800B8F38 02002025 */ move $a0, $s0 -/* 0B9B3C 800B8F3C 0C02F5BD */ jal func_800BD6F4 -/* 0B9B40 800B8F40 02002025 */ move $a0, $s0 -/* 0B9B44 800B8F44 02802025 */ move $a0, $s4 -/* 0B9B48 800B8F48 0C02FC01 */ jal func_800BF004 -/* 0B9B4C 800B8F4C 02002825 */ move $a1, $s0 -/* 0B9B50 800B8F50 3C02803B */ lui $v0, %hi(gMaxSimultaneousNotes) # $v0, 0x803b -/* 0B9B54 800B8F54 8C4270B0 */ lw $v0, %lo(gMaxSimultaneousNotes)($v0) -/* 0B9B58 800B8F58 26520001 */ addiu $s2, $s2, 1 -.L800B8F5C: -/* 0B9B5C 800B8F5C 0242082A */ slt $at, $s2, $v0 -/* 0B9B60 800B8F60 1420FFE3 */ bnez $at, .L800B8EF0 -/* 0B9B64 800B8F64 263100C0 */ addiu $s1, $s1, 0xc0 -.L800B8F68: -/* 0B9B68 800B8F68 8FBF002C */ lw $ra, 0x2c($sp) -/* 0B9B6C 800B8F6C 8FB00014 */ lw $s0, 0x14($sp) -/* 0B9B70 800B8F70 8FB10018 */ lw $s1, 0x18($sp) -/* 0B9B74 800B8F74 8FB2001C */ lw $s2, 0x1c($sp) -/* 0B9B78 800B8F78 8FB30020 */ lw $s3, 0x20($sp) -/* 0B9B7C 800B8F7C 8FB40024 */ lw $s4, 0x24($sp) -/* 0B9B80 800B8F80 8FB50028 */ lw $s5, 0x28($sp) -/* 0B9B84 800B8F84 03E00008 */ jr $ra -/* 0B9B88 800B8F88 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/audio/heap/func_800B8F8C.s b/asm/non_matchings/audio/heap/func_800B8F8C.s deleted file mode 100644 index c884de565..000000000 --- a/asm/non_matchings/audio/heap/func_800B8F8C.s +++ /dev/null @@ -1,31 +0,0 @@ -glabel func_800B8F8C -/* 0B9B8C 800B8F8C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0B9B90 800B8F90 AFB1001C */ sw $s1, 0x1c($sp) -/* 0B9B94 800B8F94 AFB00018 */ sw $s0, 0x18($sp) -/* 0B9B98 800B8F98 AFB20020 */ sw $s2, 0x20($sp) -/* 0B9B9C 800B8F9C 3C10803B */ lui $s0, %hi(D_803B1510) # $s0, 0x803b -/* 0B9BA0 800B8FA0 3C11803B */ lui $s1, %hi(D_803B1A30) # $s1, 0x803b -/* 0B9BA4 800B8FA4 00809025 */ move $s2, $a0 -/* 0B9BA8 800B8FA8 AFBF0024 */ sw $ra, 0x24($sp) -/* 0B9BAC 800B8FAC 26311A30 */ addiu $s1, %lo(D_803B1A30) # addiu $s1, $s1, 0x1a30 -/* 0B9BB0 800B8FB0 26101510 */ addiu $s0, %lo(D_803B1510) # addiu $s0, $s0, 0x1510 -/* 0B9BB4 800B8FB4 8E0E0000 */ lw $t6, ($s0) -.L800B8FB8: -/* 0B9BB8 800B8FB8 000E7FC2 */ srl $t7, $t6, 0x1f -/* 0B9BBC 800B8FBC 51E00007 */ beql $t7, $zero, .L800B8FDC -/* 0B9BC0 800B8FC0 26100148 */ addiu $s0, $s0, 0x148 -/* 0B9BC4 800B8FC4 92180004 */ lbu $t8, 4($s0) -/* 0B9BC8 800B8FC8 56580004 */ bnel $s2, $t8, .L800B8FDC -/* 0B9BCC 800B8FCC 26100148 */ addiu $s0, $s0, 0x148 -/* 0B9BD0 800B8FD0 0C02FBCB */ jal func_800BEF2C -/* 0B9BD4 800B8FD4 02002025 */ move $a0, $s0 -/* 0B9BD8 800B8FD8 26100148 */ addiu $s0, $s0, 0x148 -.L800B8FDC: -/* 0B9BDC 800B8FDC 5611FFF6 */ bnel $s0, $s1, .L800B8FB8 -/* 0B9BE0 800B8FE0 8E0E0000 */ lw $t6, ($s0) -/* 0B9BE4 800B8FE4 8FBF0024 */ lw $ra, 0x24($sp) -/* 0B9BE8 800B8FE8 8FB00018 */ lw $s0, 0x18($sp) -/* 0B9BEC 800B8FEC 8FB1001C */ lw $s1, 0x1c($sp) -/* 0B9BF0 800B8FF0 8FB20020 */ lw $s2, 0x20($sp) -/* 0B9BF4 800B8FF4 03E00008 */ jr $ra -/* 0B9BF8 800B8FF8 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/audio/heap/func_800B907C.s b/asm/non_matchings/audio/heap/func_800B907C.s deleted file mode 100644 index 0136bbe35..000000000 --- a/asm/non_matchings/audio/heap/func_800B907C.s +++ /dev/null @@ -1,9 +0,0 @@ -glabel func_800B907C -/* 0B9C7C 800B907C 24A2000F */ addiu $v0, $a1, 0xf -/* 0B9C80 800B9080 2401FFF0 */ li $at, -16 -/* 0B9C84 800B9084 00417024 */ and $t6, $v0, $at -/* 0B9C88 800B9088 AC8E0000 */ sw $t6, ($a0) -/* 0B9C8C 800B908C AC8E0004 */ sw $t6, 4($a0) -/* 0B9C90 800B9090 AC860008 */ sw $a2, 8($a0) -/* 0B9C94 800B9094 03E00008 */ jr $ra -/* 0B9C98 800B9098 AC80000C */ sw $zero, 0xc($a0) diff --git a/asm/non_matchings/audio/heap/func_800B909C.s b/asm/non_matchings/audio/heap/func_800B909C.s deleted file mode 100644 index ed686492c..000000000 --- a/asm/non_matchings/audio/heap/func_800B909C.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_800B909C -/* 0B9C9C 800B909C 8C8E0004 */ lw $t6, 4($a0) -/* 0B9CA0 800B90A0 AC800010 */ sw $zero, 0x10($a0) -/* 0B9CA4 800B90A4 AC800000 */ sw $zero, ($a0) -/* 0B9CA8 800B90A8 03E00008 */ jr $ra -/* 0B9CAC 800B90AC AC8E0008 */ sw $t6, 8($a0) diff --git a/asm/non_matchings/audio/heap/func_800B90B0.s b/asm/non_matchings/audio/heap/func_800B90B0.s deleted file mode 100644 index 707847b8b..000000000 --- a/asm/non_matchings/audio/heap/func_800B90B0.s +++ /dev/null @@ -1,13 +0,0 @@ -glabel func_800B90B0 -/* 0B9CB0 800B90B0 8C820004 */ lw $v0, 4($a0) -/* 0B9CB4 800B90B4 8C8E000C */ lw $t6, 0xc($a0) -/* 0B9CB8 800B90B8 2403FFFF */ li $v1, -1 -/* 0B9CBC 800B90BC AC800010 */ sw $zero, 0x10($a0) -/* 0B9CC0 800B90C0 004E7821 */ addu $t7, $v0, $t6 -/* 0B9CC4 800B90C4 AC800000 */ sw $zero, ($a0) -/* 0B9CC8 800B90C8 AC8F0020 */ sw $t7, 0x20($a0) -/* 0B9CCC 800B90CC A483001E */ sh $v1, 0x1e($a0) -/* 0B9CD0 800B90D0 A483002A */ sh $v1, 0x2a($a0) -/* 0B9CD4 800B90D4 AC820008 */ sw $v0, 8($a0) -/* 0B9CD8 800B90D8 03E00008 */ jr $ra -/* 0B9CDC 800B90DC AC820014 */ sw $v0, 0x14($a0) diff --git a/asm/non_matchings/audio/heap/func_800B90F0.s b/asm/non_matchings/audio/heap/func_800B90F0.s index fe417aa03..963b3bcc1 100644 --- a/asm/non_matchings/audio/heap/func_800B90F0.s +++ b/asm/non_matchings/audio/heap/func_800B90F0.s @@ -2,11 +2,11 @@ glabel func_800B90F0 /* 0B9CF0 800B90F0 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0B9CF4 800B90F4 00803025 */ move $a2, $a0 /* 0B9CF8 800B90F8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0B9CFC 800B90FC 3C04803B */ lui $a0, %hi(D_803AFBD8) # $a0, 0x803b +/* 0B9CFC 800B90FC 3C04803B */ lui $a0, %hi(gAudioInitPool) # $a0, 0x803b /* 0B9D00 800B9100 3C05803B */ lui $a1, %hi(D_803B71B0) # $a1, 0x803b /* 0B9D04 800B9104 24A571B0 */ addiu $a1, %lo(D_803B71B0) # addiu $a1, $a1, 0x71b0 -/* 0B9D08 800B9108 2484FBD8 */ addiu $a0, %lo(D_803AFBD8) # addiu $a0, $a0, -0x428 -/* 0B9D0C 800B910C 0C02E41F */ jal func_800B907C +/* 0B9D08 800B9108 2484FBD8 */ addiu $a0, %lo(gAudioInitPool) # addiu $a0, $a0, -0x428 +/* 0B9D0C 800B910C 0C02E41F */ jal sound_alloc_pool_init /* 0B9D10 800B9110 AFA60018 */ sw $a2, 0x18($sp) /* 0B9D14 800B9114 8FA70018 */ lw $a3, 0x18($sp) /* 0B9D18 800B9118 3C0F800F */ lui $t7, %hi(D_800EA5D0) # $t7, 0x800f @@ -16,7 +16,7 @@ glabel func_800B90F0 /* 0B9D28 800B9128 3C04803B */ lui $a0, %hi(gLeftVolRampings) # $a0, 0x803b /* 0B9D2C 800B912C 2484FBC8 */ addiu $a0, %lo(gLeftVolRampings) # addiu $a0, $a0, -0x438 /* 0B9D30 800B9130 00EE2821 */ addu $a1, $a3, $t6 -/* 0B9D34 800B9134 0C02E41F */ jal func_800B907C +/* 0B9D34 800B9134 0C02E41F */ jal sound_alloc_pool_init /* 0B9D38 800B9138 01E73023 */ subu $a2, $t7, $a3 /* 0B9D3C 800B913C 8FBF0014 */ lw $ra, 0x14($sp) /* 0B9D40 800B9140 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/non_matchings/audio/heap/func_800B914C.s b/asm/non_matchings/audio/heap/func_800B914C.s index 25f046dd1..318b358f8 100644 --- a/asm/non_matchings/audio/heap/func_800B914C.s +++ b/asm/non_matchings/audio/heap/func_800B914C.s @@ -13,7 +13,7 @@ glabel func_800B914C /* 0B9D78 800B9178 3C04803B */ lui $a0, %hi(gNotesAndBuffersPool) # $a0, 0x803b /* 0B9D7C 800B917C 2484FBE8 */ addiu $a0, %lo(gNotesAndBuffersPool) # addiu $a0, $a0, -0x418 /* 0B9D80 800B9180 00402825 */ move $a1, $v0 -/* 0B9D84 800B9184 0C02E41F */ jal func_800B907C +/* 0B9D84 800B9184 0C02E41F */ jal sound_alloc_pool_init /* 0B9D88 800B9188 8F060000 */ lw $a2, ($t8) /* 0B9D8C 800B918C 8FB90018 */ lw $t9, 0x18($sp) /* 0B9D90 800B9190 3C04803B */ lui $a0, %hi(gLeftVolRampings) # $a0, 0x803b @@ -21,10 +21,10 @@ glabel func_800B914C /* 0B9D98 800B9198 0C02E3FF */ jal soundAlloc /* 0B9D9C 800B919C 8F25000C */ lw $a1, 0xc($t9) /* 0B9DA0 800B91A0 8FA80018 */ lw $t0, 0x18($sp) -/* 0B9DA4 800B91A4 3C04803B */ lui $a0, %hi(D_803AFC18) # $a0, 0x803b -/* 0B9DA8 800B91A8 2484FC18 */ addiu $a0, %lo(D_803AFC18) # addiu $a0, $a0, -0x3e8 +/* 0B9DA4 800B91A4 3C04803B */ lui $a0, %hi(gSeqAndBankPool) # $a0, 0x803b +/* 0B9DA8 800B91A8 2484FC18 */ addiu $a0, %lo(gSeqAndBankPool) # addiu $a0, $a0, -0x3e8 /* 0B9DAC 800B91AC 00402825 */ move $a1, $v0 -/* 0B9DB0 800B91B0 0C02E41F */ jal func_800B907C +/* 0B9DB0 800B91B0 0C02E41F */ jal sound_alloc_pool_init /* 0B9DB4 800B91B4 8D06000C */ lw $a2, 0xc($t0) /* 0B9DB8 800B91B8 8FBF0014 */ lw $ra, 0x14($sp) /* 0B9DBC 800B91BC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/non_matchings/audio/heap/func_800B91C8.s b/asm/non_matchings/audio/heap/func_800B91C8.s deleted file mode 100644 index 6596bdff6..000000000 --- a/asm/non_matchings/audio/heap/func_800B91C8.s +++ /dev/null @@ -1,32 +0,0 @@ -glabel func_800B91C8 -/* 0B9DC8 800B91C8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0B9DCC 800B91CC AFA40018 */ sw $a0, 0x18($sp) -/* 0B9DD0 800B91D0 3C04803B */ lui $a0, %hi(D_803AFC18) # $a0, 0x803b -/* 0B9DD4 800B91D4 2484FC18 */ addiu $a0, %lo(D_803AFC18) # addiu $a0, $a0, -0x3e8 -/* 0B9DD8 800B91D8 8C8E0000 */ lw $t6, ($a0) -/* 0B9DDC 800B91DC 8FAF0018 */ lw $t7, 0x18($sp) -/* 0B9DE0 800B91E0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0B9DE4 800B91E4 AC8E0004 */ sw $t6, 4($a0) -/* 0B9DE8 800B91E8 0C02E3FF */ jal soundAlloc -/* 0B9DEC 800B91EC 8DE50000 */ lw $a1, ($t7) -/* 0B9DF0 800B91F0 8FB80018 */ lw $t8, 0x18($sp) -/* 0B9DF4 800B91F4 3C04803B */ lui $a0, %hi(D_803AFC28) # $a0, 0x803b -/* 0B9DF8 800B91F8 2484FC28 */ addiu $a0, %lo(D_803AFC28) # addiu $a0, $a0, -0x3d8 -/* 0B9DFC 800B91FC 00402825 */ move $a1, $v0 -/* 0B9E00 800B9200 0C02E41F */ jal func_800B907C -/* 0B9E04 800B9204 8F060000 */ lw $a2, ($t8) -/* 0B9E08 800B9208 8FB90018 */ lw $t9, 0x18($sp) -/* 0B9E0C 800B920C 3C04803B */ lui $a0, %hi(D_803AFC18) # $a0, 0x803b -/* 0B9E10 800B9210 2484FC18 */ addiu $a0, %lo(D_803AFC18) # addiu $a0, $a0, -0x3e8 -/* 0B9E14 800B9214 0C02E3FF */ jal soundAlloc -/* 0B9E18 800B9218 8F250004 */ lw $a1, 4($t9) -/* 0B9E1C 800B921C 8FA80018 */ lw $t0, 0x18($sp) -/* 0B9E20 800B9220 3C04803B */ lui $a0, %hi(D_803AFC38) # $a0, 0x803b -/* 0B9E24 800B9224 2484FC38 */ addiu $a0, %lo(D_803AFC38) # addiu $a0, $a0, -0x3c8 -/* 0B9E28 800B9228 00402825 */ move $a1, $v0 -/* 0B9E2C 800B922C 0C02E41F */ jal func_800B907C -/* 0B9E30 800B9230 8D060004 */ lw $a2, 4($t0) -/* 0B9E34 800B9234 8FBF0014 */ lw $ra, 0x14($sp) -/* 0B9E38 800B9238 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0B9E3C 800B923C 03E00008 */ jr $ra -/* 0B9E40 800B9240 00000000 */ nop diff --git a/asm/non_matchings/audio/heap/func_800B9244.s b/asm/non_matchings/audio/heap/func_800B9244.s deleted file mode 100644 index 01f0674c6..000000000 --- a/asm/non_matchings/audio/heap/func_800B9244.s +++ /dev/null @@ -1,48 +0,0 @@ -glabel func_800B9244 -/* 0B9E44 800B9244 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0B9E48 800B9248 AFB00018 */ sw $s0, 0x18($sp) -/* 0B9E4C 800B924C 00808025 */ move $s0, $a0 -/* 0B9E50 800B9250 3C04803B */ lui $a0, %hi(D_803AFC28) # $a0, 0x803b -/* 0B9E54 800B9254 2484FC28 */ addiu $a0, %lo(D_803AFC28) # addiu $a0, $a0, -0x3d8 -/* 0B9E58 800B9258 8C8E0000 */ lw $t6, ($a0) -/* 0B9E5C 800B925C AFBF001C */ sw $ra, 0x1c($sp) -/* 0B9E60 800B9260 AC8E0004 */ sw $t6, 4($a0) -/* 0B9E64 800B9264 0C02E3FF */ jal soundAlloc -/* 0B9E68 800B9268 8E050000 */ lw $a1, ($s0) -/* 0B9E6C 800B926C 3C04803B */ lui $a0, %hi(D_803AFC4C) # $a0, 0x803b -/* 0B9E70 800B9270 2484FC4C */ addiu $a0, %lo(D_803AFC4C) # addiu $a0, $a0, -0x3b4 -/* 0B9E74 800B9274 00402825 */ move $a1, $v0 -/* 0B9E78 800B9278 0C02E41F */ jal func_800B907C -/* 0B9E7C 800B927C 8E060000 */ lw $a2, ($s0) -/* 0B9E80 800B9280 3C04803B */ lui $a0, %hi(D_803AFC28) # $a0, 0x803b -/* 0B9E84 800B9284 2484FC28 */ addiu $a0, %lo(D_803AFC28) # addiu $a0, $a0, -0x3d8 -/* 0B9E88 800B9288 0C02E3FF */ jal soundAlloc -/* 0B9E8C 800B928C 8E050004 */ lw $a1, 4($s0) -/* 0B9E90 800B9290 3C04803B */ lui $a0, %hi(D_803AFE1C) # $a0, 0x803b -/* 0B9E94 800B9294 2484FE1C */ addiu $a0, %lo(D_803AFE1C) # addiu $a0, $a0, -0x1e4 -/* 0B9E98 800B9298 00402825 */ move $a1, $v0 -/* 0B9E9C 800B929C 0C02E41F */ jal func_800B907C -/* 0B9EA0 800B92A0 8E060004 */ lw $a2, 4($s0) -/* 0B9EA4 800B92A4 3C04803B */ lui $a0, %hi(D_803AFC28) # $a0, 0x803b -/* 0B9EA8 800B92A8 2484FC28 */ addiu $a0, %lo(D_803AFC28) # addiu $a0, $a0, -0x3d8 -/* 0B9EAC 800B92AC 0C02E3FF */ jal soundAlloc -/* 0B9EB0 800B92B0 8E050008 */ lw $a1, 8($s0) -/* 0B9EB4 800B92B4 3C04803B */ lui $a0, %hi(D_803AFFEC) # $a0, 0x803b -/* 0B9EB8 800B92B8 2484FFEC */ addiu $a0, %lo(D_803AFFEC) # addiu $a0, $a0, -0x14 -/* 0B9EBC 800B92BC 00402825 */ move $a1, $v0 -/* 0B9EC0 800B92C0 0C02E41F */ jal func_800B907C -/* 0B9EC4 800B92C4 8E060008 */ lw $a2, 8($s0) -/* 0B9EC8 800B92C8 3C04803B */ lui $a0, %hi(D_803AFC48) # $a0, 0x803b -/* 0B9ECC 800B92CC 0C02E427 */ jal func_800B909C -/* 0B9ED0 800B92D0 2484FC48 */ addiu $a0, %lo(D_803AFC48) # addiu $a0, $a0, -0x3b8 -/* 0B9ED4 800B92D4 3C04803B */ lui $a0, %hi(D_803AFE18) # $a0, 0x803b -/* 0B9ED8 800B92D8 0C02E427 */ jal func_800B909C -/* 0B9EDC 800B92DC 2484FE18 */ addiu $a0, %lo(D_803AFE18) # addiu $a0, $a0, -0x1e8 -/* 0B9EE0 800B92E0 3C04803B */ lui $a0, %hi(D_803AFFE8) # $a0, 0x803b -/* 0B9EE4 800B92E4 0C02E427 */ jal func_800B909C -/* 0B9EE8 800B92E8 2484FFE8 */ addiu $a0, %lo(D_803AFFE8) # addiu $a0, $a0, -0x18 -/* 0B9EEC 800B92EC 8FBF001C */ lw $ra, 0x1c($sp) -/* 0B9EF0 800B92F0 8FB00018 */ lw $s0, 0x18($sp) -/* 0B9EF4 800B92F4 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0B9EF8 800B92F8 03E00008 */ jr $ra -/* 0B9EFC 800B92FC 00000000 */ nop diff --git a/asm/non_matchings/audio/heap/func_800B9300.s b/asm/non_matchings/audio/heap/func_800B9300.s deleted file mode 100644 index 4ef246a87..000000000 --- a/asm/non_matchings/audio/heap/func_800B9300.s +++ /dev/null @@ -1,48 +0,0 @@ -glabel func_800B9300 -/* 0B9F00 800B9300 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0B9F04 800B9304 AFB00018 */ sw $s0, 0x18($sp) -/* 0B9F08 800B9308 00808025 */ move $s0, $a0 -/* 0B9F0C 800B930C 3C04803B */ lui $a0, %hi(D_803AFC38) # $a0, 0x803b -/* 0B9F10 800B9310 2484FC38 */ addiu $a0, %lo(D_803AFC38) # addiu $a0, $a0, -0x3c8 -/* 0B9F14 800B9314 8C8E0000 */ lw $t6, ($a0) -/* 0B9F18 800B9318 AFBF001C */ sw $ra, 0x1c($sp) -/* 0B9F1C 800B931C AC8E0004 */ sw $t6, 4($a0) -/* 0B9F20 800B9320 0C02E3FF */ jal soundAlloc -/* 0B9F24 800B9324 8E050000 */ lw $a1, ($s0) -/* 0B9F28 800B9328 3C04803B */ lui $a0, %hi(D_803AFDE0) # $a0, 0x803b -/* 0B9F2C 800B932C 2484FDE0 */ addiu $a0, %lo(D_803AFDE0) # addiu $a0, $a0, -0x220 -/* 0B9F30 800B9330 00402825 */ move $a1, $v0 -/* 0B9F34 800B9334 0C02E41F */ jal func_800B907C -/* 0B9F38 800B9338 8E060000 */ lw $a2, ($s0) -/* 0B9F3C 800B933C 3C04803B */ lui $a0, %hi(D_803AFC38) # $a0, 0x803b -/* 0B9F40 800B9340 2484FC38 */ addiu $a0, %lo(D_803AFC38) # addiu $a0, $a0, -0x3c8 -/* 0B9F44 800B9344 0C02E3FF */ jal soundAlloc -/* 0B9F48 800B9348 8E050004 */ lw $a1, 4($s0) -/* 0B9F4C 800B934C 3C04803B */ lui $a0, %hi(D_803AFFB0) # $a0, 0x803b -/* 0B9F50 800B9350 2484FFB0 */ addiu $a0, %lo(D_803AFFB0) # addiu $a0, $a0, -0x50 -/* 0B9F54 800B9354 00402825 */ move $a1, $v0 -/* 0B9F58 800B9358 0C02E41F */ jal func_800B907C -/* 0B9F5C 800B935C 8E060004 */ lw $a2, 4($s0) -/* 0B9F60 800B9360 3C04803B */ lui $a0, %hi(D_803AFC38) # $a0, 0x803b -/* 0B9F64 800B9364 2484FC38 */ addiu $a0, %lo(D_803AFC38) # addiu $a0, $a0, -0x3c8 -/* 0B9F68 800B9368 0C02E3FF */ jal soundAlloc -/* 0B9F6C 800B936C 8E050008 */ lw $a1, 8($s0) -/* 0B9F70 800B9370 3C04803B */ lui $a0, %hi(D_803B0180) # $a0, 0x803b -/* 0B9F74 800B9374 24840180 */ addiu $a0, %lo(D_803B0180) # addiu $a0, $a0, 0x180 -/* 0B9F78 800B9378 00402825 */ move $a1, $v0 -/* 0B9F7C 800B937C 0C02E41F */ jal func_800B907C -/* 0B9F80 800B9380 8E060008 */ lw $a2, 8($s0) -/* 0B9F84 800B9384 3C04803B */ lui $a0, %hi(D_803AFDDC) # $a0, 0x803b -/* 0B9F88 800B9388 0C02E42C */ jal func_800B90B0 -/* 0B9F8C 800B938C 2484FDDC */ addiu $a0, %lo(D_803AFDDC) # addiu $a0, $a0, -0x224 -/* 0B9F90 800B9390 3C04803B */ lui $a0, %hi(D_803AFFAC) # $a0, 0x803b -/* 0B9F94 800B9394 0C02E42C */ jal func_800B90B0 -/* 0B9F98 800B9398 2484FFAC */ addiu $a0, %lo(D_803AFFAC) # addiu $a0, $a0, -0x54 -/* 0B9F9C 800B939C 3C04803B */ lui $a0, %hi(D_803B017C) # $a0, 0x803b -/* 0B9FA0 800B93A0 0C02E42C */ jal func_800B90B0 -/* 0B9FA4 800B93A4 2484017C */ addiu $a0, %lo(D_803B017C) # addiu $a0, $a0, 0x17c -/* 0B9FA8 800B93A8 8FBF001C */ lw $ra, 0x1c($sp) -/* 0B9FAC 800B93AC 8FB00018 */ lw $s0, 0x18($sp) -/* 0B9FB0 800B93B0 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0B9FB4 800B93B4 03E00008 */ jr $ra -/* 0B9FB8 800B93B8 00000000 */ nop diff --git a/asm/non_matchings/audio/heap/func_800B93BC.s b/asm/non_matchings/audio/heap/func_800B93BC.s index d3276735e..15d3a06a9 100644 --- a/asm/non_matchings/audio/heap/func_800B93BC.s +++ b/asm/non_matchings/audio/heap/func_800B93BC.s @@ -12,28 +12,28 @@ glabel func_800B93BC .L800B93E4: /* 0B9FE4 800B93E4 14E00176 */ bnez $a3, .L800B99C0 /* 0B9FE8 800B93E8 8FAE0054 */ lw $t6, 0x54($sp) -/* 0B9FEC 800B93EC 3C0E803B */ lui $t6, %hi(D_803AFC48) # $t6, 0x803b -/* 0B9FF0 800B93F0 25CEFC48 */ addiu $t6, %lo(D_803AFC48) # addiu $t6, $t6, -0x3b8 +/* 0B9FEC 800B93EC 3C0E803B */ lui $t6, %hi(gSeqLoadedPool) # $t6, 0x803b +/* 0B9FF0 800B93F0 25CEFC48 */ addiu $t6, %lo(gSeqLoadedPool) # addiu $t6, $t6, -0x3b8 /* 0B9FF4 800B93F4 160E0006 */ bne $s0, $t6, .L800B9410 /* 0B9FF8 800B93F8 26070194 */ addiu $a3, $s0, 0x194 -/* 0B9FFC 800B93FC 3C0F803B */ lui $t7, %hi(D_803B0400) # $t7, 0x803b -/* 0BA000 800B9400 25EF0400 */ addiu $t7, %lo(D_803B0400) # addiu $t7, $t7, 0x400 +/* 0B9FFC 800B93FC 3C0F803B */ lui $t7, %hi(gSeqLoadStatus) # $t7, 0x803b +/* 0BA000 800B9400 25EF0400 */ addiu $t7, %lo(gSeqLoadStatus) # addiu $t7, $t7, 0x400 /* 0BA004 800B9404 AFAF0034 */ sw $t7, 0x34($sp) /* 0BA008 800B9408 10000012 */ b .L800B9454 /* 0BA00C 800B940C A3A00033 */ sb $zero, 0x33($sp) .L800B9410: -/* 0BA010 800B9410 3C18803B */ lui $t8, %hi(D_803AFE18) # $t8, 0x803b -/* 0BA014 800B9414 2718FE18 */ addiu $t8, %lo(D_803AFE18) # addiu $t8, $t8, -0x1e8 +/* 0BA010 800B9410 3C18803B */ lui $t8, %hi(gBankLoadedPool) # $t8, 0x803b +/* 0BA014 800B9414 2718FE18 */ addiu $t8, %lo(gBankLoadedPool) # addiu $t8, $t8, -0x1e8 /* 0BA018 800B9418 16180007 */ bne $s0, $t8, .L800B9438 -/* 0BA01C 800B941C 3C0E803B */ lui $t6, %hi(D_803AFFE8) # $t6, 0x803b -/* 0BA020 800B9420 3C0B803B */ lui $t3, %hi(D_803B03C0) # $t3, 0x803b -/* 0BA024 800B9424 256B03C0 */ addiu $t3, %lo(D_803B03C0) # addiu $t3, $t3, 0x3c0 +/* 0BA01C 800B941C 3C0E803B */ lui $t6, %hi(gUnusedLoadedPool) # $t6, 0x803b +/* 0BA020 800B9420 3C0B803B */ lui $t3, %hi(gBankLoadStatus) # $t3, 0x803b +/* 0BA024 800B9424 256B03C0 */ addiu $t3, %lo(gBankLoadStatus) # addiu $t3, $t3, 0x3c0 /* 0BA028 800B9428 24190001 */ li $t9, 1 /* 0BA02C 800B942C A3B90033 */ sb $t9, 0x33($sp) /* 0BA030 800B9430 10000008 */ b .L800B9454 /* 0BA034 800B9434 AFAB0034 */ sw $t3, 0x34($sp) .L800B9438: -/* 0BA038 800B9438 25CEFFE8 */ addiu $t6, %lo(D_803AFFE8) # addiu $t6, $t6, -0x18 +/* 0BA038 800B9438 25CEFFE8 */ addiu $t6, %lo(gUnusedLoadedPool) # addiu $t6, $t6, -0x18 /* 0BA03C 800B943C 160E0005 */ bne $s0, $t6, .L800B9454 /* 0BA040 800B9440 3C0F803B */ lui $t7, %hi(D_803B0380) # $t7, 0x803b /* 0BA044 800B9444 25EF0380 */ addiu $t7, %lo(D_803B0380) # addiu $t7, $t7, 0x380 @@ -42,10 +42,10 @@ glabel func_800B93BC /* 0BA050 800B9450 AFAF0034 */ sw $t7, 0x34($sp) .L800B9454: /* 0BA054 800B9454 84E6001E */ lh $a2, 0x1e($a3) -/* 0BA058 800B9458 3C0B803B */ lui $t3, %hi(D_803B03C0) # $t3, 0x803b +/* 0BA058 800B9458 3C0B803B */ lui $t3, %hi(gBankLoadStatus) # $t3, 0x803b /* 0BA05C 800B945C 2401FFFF */ li $at, -1 /* 0BA060 800B9460 14C10003 */ bne $a2, $at, .L800B9470 -/* 0BA064 800B9464 256B03C0 */ addiu $t3, %lo(D_803B03C0) # addiu $t3, $t3, 0x3c0 +/* 0BA064 800B9464 256B03C0 */ addiu $t3, %lo(gBankLoadStatus) # addiu $t3, $t3, 0x3c0 /* 0BA068 800B9468 10000004 */ b .L800B947C /* 0BA06C 800B946C 00004825 */ move $t1, $zero .L800B9470: @@ -71,10 +71,10 @@ glabel func_800B93BC /* 0BA0B0 800B94B0 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b /* 0BA0B4 800B94B4 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1) /* 0BA0B8 800B94B8 00001825 */ move $v1, $zero -/* 0BA0BC 800B94BC 3C02803B */ lui $v0, %hi(D_803B1508) # $v0, 0x803b +/* 0BA0BC 800B94BC 3C02803B */ lui $v0, %hi(gNotes) # $v0, 0x803b /* 0BA0C0 800B94C0 18A0000D */ blez $a1, .L800B94F8 /* 0BA0C4 800B94C4 00000000 */ nop -/* 0BA0C8 800B94C8 8C421508 */ lw $v0, %lo(D_803B1508)($v0) +/* 0BA0C8 800B94C8 8C421508 */ lw $v0, %lo(gNotes)($v0) .L800B94CC: /* 0BA0CC 800B94CC 904E00B2 */ lbu $t6, 0xb2($v0) /* 0BA0D0 800B94D0 55C60006 */ bnel $t6, $a2, .L800B94EC @@ -102,10 +102,10 @@ glabel func_800B93BC /* 0BA11C 800B951C 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b /* 0BA120 800B9520 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1) /* 0BA124 800B9524 00001825 */ move $v1, $zero -/* 0BA128 800B9528 3C02803B */ lui $v0, %hi(D_803B1508) # $v0, 0x803b +/* 0BA128 800B9528 3C02803B */ lui $v0, %hi(gNotes) # $v0, 0x803b /* 0BA12C 800B952C 18A0000E */ blez $a1, .L800B9568 /* 0BA130 800B9530 00000000 */ nop -/* 0BA134 800B9534 8C421508 */ lw $v0, %lo(D_803B1508)($v0) +/* 0BA134 800B9534 8C421508 */ lw $v0, %lo(gNotes)($v0) /* 0BA138 800B9538 84E4002A */ lh $a0, 0x2a($a3) .L800B953C: /* 0BA13C 800B953C 904F00B2 */ lbu $t7, 0xb2($v0) @@ -168,10 +168,10 @@ glabel func_800B93BC /* 0BA200 800B9600 55E0002F */ bnel $t7, $zero, .L800B96C0 /* 0BA204 800B9604 8FAF0020 */ lw $t7, 0x20($sp) /* 0BA208 800B9608 150B0016 */ bne $t0, $t3, .L800B9664 -/* 0BA20C 800B960C 3C02803B */ lui $v0, %hi(D_803B1510) # $v0, 0x803b -/* 0BA210 800B9610 3C03803B */ lui $v1, %hi(D_803B1A30) # $v1, 0x803b -/* 0BA214 800B9614 24631A30 */ addiu $v1, %lo(D_803B1A30) # addiu $v1, $v1, 0x1a30 -/* 0BA218 800B9618 24421510 */ addiu $v0, %lo(D_803B1510) # addiu $v0, $v0, 0x1510 +/* 0BA20C 800B960C 3C02803B */ lui $v0, %hi(gSequencePlayers) # $v0, 0x803b +/* 0BA210 800B9610 3C03803B */ lui $v1, %hi(gSequenceChannels) # $v1, 0x803b +/* 0BA214 800B9614 24631A30 */ addiu $v1, %lo(gSequenceChannels) # addiu $v1, $v1, 0x1a30 +/* 0BA218 800B9618 24421510 */ addiu $v0, %lo(gSequencePlayers) # addiu $v0, $v0, 0x1510 /* 0BA21C 800B961C 8C580000 */ lw $t8, ($v0) .L800B9620: /* 0BA220 800B9620 0018CFC2 */ srl $t9, $t8, 0x1f @@ -186,8 +186,8 @@ glabel func_800B93BC /* 0BA240 800B9640 5443FFF7 */ bnel $v0, $v1, .L800B9620 /* 0BA244 800B9644 8C580000 */ lw $t8, ($v0) .L800B9648: -/* 0BA248 800B9648 3C18803B */ lui $t8, %hi(D_803B1A30) # $t8, 0x803b -/* 0BA24C 800B964C 27181A30 */ addiu $t8, %lo(D_803B1A30) # addiu $t8, $t8, 0x1a30 +/* 0BA248 800B9648 3C18803B */ lui $t8, %hi(gSequenceChannels) # $t8, 0x803b +/* 0BA24C 800B964C 27181A30 */ addiu $t8, %lo(gSequenceChannels) # addiu $t8, $t8, 0x1a30 /* 0BA250 800B9650 14580004 */ bne $v0, $t8, .L800B9664 /* 0BA254 800B9654 00000000 */ nop /* 0BA258 800B9658 ACE00000 */ sw $zero, ($a3) @@ -195,10 +195,10 @@ glabel func_800B93BC /* 0BA260 800B9660 00001025 */ move $v0, $zero .L800B9664: /* 0BA264 800B9664 15090048 */ bne $t0, $t1, .L800B9788 -/* 0BA268 800B9668 3C02803B */ lui $v0, %hi(D_803B1510) # $v0, 0x803b -/* 0BA26C 800B966C 3C03803B */ lui $v1, %hi(D_803B1A30) # $v1, 0x803b -/* 0BA270 800B9670 24631A30 */ addiu $v1, %lo(D_803B1A30) # addiu $v1, $v1, 0x1a30 -/* 0BA274 800B9674 24421510 */ addiu $v0, %lo(D_803B1510) # addiu $v0, $v0, 0x1510 +/* 0BA268 800B9668 3C02803B */ lui $v0, %hi(gSequencePlayers) # $v0, 0x803b +/* 0BA26C 800B966C 3C03803B */ lui $v1, %hi(gSequenceChannels) # $v1, 0x803b +/* 0BA270 800B9670 24631A30 */ addiu $v1, %lo(gSequenceChannels) # addiu $v1, $v1, 0x1a30 +/* 0BA274 800B9674 24421510 */ addiu $v0, %lo(gSequencePlayers) # addiu $v0, $v0, 0x1510 /* 0BA278 800B9678 8C590000 */ lw $t9, ($v0) .L800B967C: /* 0BA27C 800B967C 001977C2 */ srl $t6, $t9, 0x1f @@ -213,8 +213,8 @@ glabel func_800B93BC /* 0BA29C 800B969C 5443FFF7 */ bnel $v0, $v1, .L800B967C /* 0BA2A0 800B96A0 8C590000 */ lw $t9, ($v0) .L800B96A4: -/* 0BA2A4 800B96A4 3C19803B */ lui $t9, %hi(D_803B1A30) # $t9, 0x803b -/* 0BA2A8 800B96A8 27391A30 */ addiu $t9, %lo(D_803B1A30) # addiu $t9, $t9, 0x1a30 +/* 0BA2A4 800B96A4 3C19803B */ lui $t9, %hi(gSequenceChannels) # $t9, 0x803b +/* 0BA2A8 800B96A8 27391A30 */ addiu $t9, %lo(gSequenceChannels) # addiu $t9, $t9, 0x1a30 /* 0BA2AC 800B96AC 14590036 */ bne $v0, $t9, .L800B9788 /* 0BA2B0 800B96B0 24020001 */ li $v0, 1 /* 0BA2B4 800B96B4 10000045 */ b .L800B97CC @@ -227,10 +227,10 @@ glabel func_800B93BC /* 0BA2CC 800B96CC 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b /* 0BA2D0 800B96D0 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1) /* 0BA2D4 800B96D4 00001825 */ move $v1, $zero -/* 0BA2D8 800B96D8 3C02803B */ lui $v0, %hi(D_803B1508) # $v0, 0x803b +/* 0BA2D8 800B96D8 3C02803B */ lui $v0, %hi(gNotes) # $v0, 0x803b /* 0BA2DC 800B96DC 18A0000E */ blez $a1, .L800B9718 /* 0BA2E0 800B96E0 00000000 */ nop -/* 0BA2E4 800B96E4 8C421508 */ lw $v0, %lo(D_803B1508)($v0) +/* 0BA2E4 800B96E4 8C421508 */ lw $v0, %lo(gNotes)($v0) /* 0BA2E8 800B96E8 84E6001E */ lh $a2, 0x1e($a3) .L800B96EC: /* 0BA2EC 800B96EC 905800B2 */ lbu $t8, 0xb2($v0) @@ -255,10 +255,10 @@ glabel func_800B93BC /* 0BA32C 800B972C 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b /* 0BA330 800B9730 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1) /* 0BA334 800B9734 00001825 */ move $v1, $zero -/* 0BA338 800B9738 3C02803B */ lui $v0, %hi(D_803B1508) # $v0, 0x803b +/* 0BA338 800B9738 3C02803B */ lui $v0, %hi(gNotes) # $v0, 0x803b /* 0BA33C 800B973C 18A0000E */ blez $a1, .L800B9778 /* 0BA340 800B9740 00000000 */ nop -/* 0BA344 800B9744 8C421508 */ lw $v0, %lo(D_803B1508)($v0) +/* 0BA344 800B9744 8C421508 */ lw $v0, %lo(gNotes)($v0) /* 0BA348 800B9748 84E4002A */ lh $a0, 0x2a($a3) .L800B974C: /* 0BA34C 800B974C 904F00B2 */ lbu $t7, 0xb2($v0) @@ -319,7 +319,7 @@ glabel func_800B93BC /* 0BA40C 800B980C 00F97021 */ addu $t6, $a3, $t9 /* 0BA410 800B9810 85C4001E */ lh $a0, 0x1e($t6) /* 0BA414 800B9814 AFBF0060 */ sw $ra, 0x60($sp) -/* 0BA418 800B9818 0C02E3AA */ jal func_800B8EA8 +/* 0BA418 800B9818 0C02E3AA */ jal discard_bank /* 0BA41C 800B981C AFA70028 */ sw $a3, 0x28($sp) /* 0BA420 800B9820 8FA70028 */ lw $a3, 0x28($sp) /* 0BA424 800B9824 240C0001 */ li $t4, 1 @@ -360,7 +360,7 @@ glabel func_800B93BC .L800B98A8: /* 0BA4A8 800B98A8 84E4002A */ lh $a0, 0x2a($a3) /* 0BA4AC 800B98AC AFA70028 */ sw $a3, 0x28($sp) -/* 0BA4B0 800B98B0 0C02E3E3 */ jal func_800B8F8C +/* 0BA4B0 800B98B0 0C02E3E3 */ jal discard_sequence /* 0BA4B4 800B98B4 AFA30024 */ sw $v1, 0x24($sp) /* 0BA4B8 800B98B8 8FA30024 */ lw $v1, 0x24($sp) /* 0BA4BC 800B98BC 10000007 */ b .L800B98DC @@ -368,7 +368,7 @@ glabel func_800B93BC /* 0BA4C4 800B98C4 84E4002A */ lh $a0, 0x2a($a3) .L800B98C8: /* 0BA4C8 800B98C8 AFA70028 */ sw $a3, 0x28($sp) -/* 0BA4CC 800B98CC 0C02E3AA */ jal func_800B8EA8 +/* 0BA4CC 800B98CC 0C02E3AA */ jal discard_bank /* 0BA4D0 800B98D0 AFA30024 */ sw $v1, 0x24($sp) /* 0BA4D4 800B98D4 8FA30024 */ lw $v1, 0x24($sp) /* 0BA4D8 800B98D8 8FA70028 */ lw $a3, 0x28($sp) @@ -414,7 +414,7 @@ glabel func_800B93BC .L800B9968: /* 0BA568 800B9968 84E4001E */ lh $a0, 0x1e($a3) /* 0BA56C 800B996C AFA70028 */ sw $a3, 0x28($sp) -/* 0BA570 800B9970 0C02E3E3 */ jal func_800B8F8C +/* 0BA570 800B9970 0C02E3E3 */ jal discard_sequence /* 0BA574 800B9974 AFA30024 */ sw $v1, 0x24($sp) /* 0BA578 800B9978 8FA30024 */ lw $v1, 0x24($sp) /* 0BA57C 800B997C 10000007 */ b .L800B999C @@ -422,7 +422,7 @@ glabel func_800B93BC /* 0BA584 800B9984 84E4001E */ lh $a0, 0x1e($a3) .L800B9988: /* 0BA588 800B9988 AFA70028 */ sw $a3, 0x28($sp) -/* 0BA58C 800B998C 0C02E3AA */ jal func_800B8EA8 +/* 0BA58C 800B998C 0C02E3AA */ jal discard_bank /* 0BA590 800B9990 AFA30024 */ sw $v1, 0x24($sp) /* 0BA594 800B9994 8FA30024 */ lw $v1, 0x24($sp) /* 0BA598 800B9998 8FA70028 */ lw $a3, 0x28($sp) diff --git a/asm/non_matchings/audio/heap/func_800B9A90.s b/asm/non_matchings/audio/heap/func_800B9A90.s deleted file mode 100644 index e9256b515..000000000 --- a/asm/non_matchings/audio/heap/func_800B9A90.s +++ /dev/null @@ -1,21 +0,0 @@ -glabel func_800B9A90 -/* 0BA690 800B9A90 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BA694 800B9A94 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BA698 800B9A98 AFA5001C */ sw $a1, 0x1c($sp) -/* 0BA69C 800B9A9C AFA40018 */ sw $a0, 0x18($sp) -/* 0BA6A0 800B9AA0 AFA60020 */ sw $a2, 0x20($sp) -/* 0BA6A4 800B9AA4 0C02EA16 */ jal func_800BA858 -/* 0BA6A8 800B9AA8 00C02825 */ move $a1, $a2 -/* 0BA6AC 800B9AAC 10400003 */ beqz $v0, .L800B9ABC -/* 0BA6B0 800B9AB0 8FA40018 */ lw $a0, 0x18($sp) -/* 0BA6B4 800B9AB4 10000005 */ b .L800B9ACC -/* 0BA6B8 800B9AB8 8FBF0014 */ lw $ra, 0x14($sp) -.L800B9ABC: -/* 0BA6BC 800B9ABC 8FA5001C */ lw $a1, 0x1c($sp) -/* 0BA6C0 800B9AC0 0C02E6B6 */ jal func_800B9AD8 -/* 0BA6C4 800B9AC4 8FA60020 */ lw $a2, 0x20($sp) -/* 0BA6C8 800B9AC8 8FBF0014 */ lw $ra, 0x14($sp) -.L800B9ACC: -/* 0BA6CC 800B9ACC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BA6D0 800B9AD0 03E00008 */ jr $ra -/* 0BA6D4 800B9AD4 00000000 */ nop diff --git a/asm/non_matchings/audio/heap/func_800B9AD8.s b/asm/non_matchings/audio/heap/func_800B9AD8.s deleted file mode 100644 index e5acb3d66..000000000 --- a/asm/non_matchings/audio/heap/func_800B9AD8.s +++ /dev/null @@ -1,80 +0,0 @@ -glabel func_800B9AD8 -/* 0BA6D8 800B9AD8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0BA6DC 800B9ADC AFBF0014 */ sw $ra, 0x14($sp) -/* 0BA6E0 800B9AE0 AFA50024 */ sw $a1, 0x24($sp) -/* 0BA6E4 800B9AE4 10800009 */ beqz $a0, .L800B9B0C -/* 0BA6E8 800B9AE8 00803825 */ move $a3, $a0 -/* 0BA6EC 800B9AEC 24010001 */ li $at, 1 -/* 0BA6F0 800B9AF0 10810009 */ beq $a0, $at, .L800B9B18 -/* 0BA6F4 800B9AF4 3C05803B */ lui $a1, %hi(D_803AFE18) # 0x803b -/* 0BA6F8 800B9AF8 24010002 */ li $at, 2 -/* 0BA6FC 800B9AFC 10810008 */ beq $a0, $at, .L800B9B20 -/* 0BA700 800B9B00 3C05803B */ lui $a1, %hi(D_803AFFE8) # 0x803b -/* 0BA704 800B9B04 10000007 */ b .L800B9B24 -/* 0BA708 800B9B08 8FA50018 */ lw $a1, 0x18($sp) -.L800B9B0C: -/* 0BA70C 800B9B0C 3C05803B */ lui $a1, %hi(D_803AFC48) # $a1, 0x803b -/* 0BA710 800B9B10 10000004 */ b .L800B9B24 -/* 0BA714 800B9B14 24A5FC48 */ addiu $a1, %lo(D_803AFC48) # addiu $a1, $a1, -0x3b8 -.L800B9B18: -/* 0BA718 800B9B18 10000002 */ b .L800B9B24 -/* 0BA71C 800B9B1C 24A5FE18 */ addiu $a1, $a1, %lo(D_803AFE18) # -0x1e8 -.L800B9B20: -/* 0BA720 800B9B20 24A5FFE8 */ addiu $a1, $a1, %lo(D_803AFFE8) # -0x18 -.L800B9B24: -/* 0BA724 800B9B24 8FAE0024 */ lw $t6, 0x24($sp) -/* 0BA728 800B9B28 24A30194 */ addiu $v1, $a1, 0x194 -/* 0BA72C 800B9B2C 55C00011 */ bnel $t6, $zero, .L800B9B74 -/* 0BA730 800B9B30 8CA80000 */ lw $t0, ($a1) -/* 0BA734 800B9B34 846F001E */ lh $t7, 0x1e($v1) -/* 0BA738 800B9B38 24180001 */ li $t8, 1 -/* 0BA73C 800B9B3C 54CF0005 */ bnel $a2, $t7, .L800B9B54 -/* 0BA740 800B9B40 8479002A */ lh $t9, 0x2a($v1) -/* 0BA744 800B9B44 AC780000 */ sw $t8, ($v1) -/* 0BA748 800B9B48 10000022 */ b .L800B9BD4 -/* 0BA74C 800B9B4C 8C620014 */ lw $v0, 0x14($v1) -/* 0BA750 800B9B50 8479002A */ lh $t9, 0x2a($v1) -.L800B9B54: -/* 0BA754 800B9B54 14D90004 */ bne $a2, $t9, .L800B9B68 -/* 0BA758 800B9B58 00000000 */ nop -/* 0BA75C 800B9B5C AC600000 */ sw $zero, ($v1) -/* 0BA760 800B9B60 1000001C */ b .L800B9BD4 -/* 0BA764 800B9B64 8C620020 */ lw $v0, 0x20($v1) -.L800B9B68: -/* 0BA768 800B9B68 1000001A */ b .L800B9BD4 -/* 0BA76C 800B9B6C 00001025 */ move $v0, $zero -/* 0BA770 800B9B70 8CA80000 */ lw $t0, ($a1) -.L800B9B74: -/* 0BA774 800B9B74 00A02025 */ move $a0, $a1 -/* 0BA778 800B9B78 00001025 */ move $v0, $zero -/* 0BA77C 800B9B7C 1100000C */ beqz $t0, .L800B9BB0 -/* 0BA780 800B9B80 00A01825 */ move $v1, $a1 -/* 0BA784 800B9B84 8469001E */ lh $t1, 0x1e($v1) -.L800B9B88: -/* 0BA788 800B9B88 54C90004 */ bnel $a2, $t1, .L800B9B9C -/* 0BA78C 800B9B8C 8C8A0000 */ lw $t2, ($a0) -/* 0BA790 800B9B90 10000010 */ b .L800B9BD4 -/* 0BA794 800B9B94 8C620014 */ lw $v0, 0x14($v1) -/* 0BA798 800B9B98 8C8A0000 */ lw $t2, ($a0) -.L800B9B9C: -/* 0BA79C 800B9B9C 24420001 */ addiu $v0, $v0, 1 -/* 0BA7A0 800B9BA0 2463000C */ addiu $v1, $v1, 0xc -/* 0BA7A4 800B9BA4 004A082B */ sltu $at, $v0, $t2 -/* 0BA7A8 800B9BA8 5420FFF7 */ bnel $at, $zero, .L800B9B88 -/* 0BA7AC 800B9BAC 8469001E */ lh $t1, 0x1e($v1) -.L800B9BB0: -/* 0BA7B0 800B9BB0 8FAB0024 */ lw $t3, 0x24($sp) -/* 0BA7B4 800B9BB4 24010002 */ li $at, 2 -/* 0BA7B8 800B9BB8 00E02025 */ move $a0, $a3 -/* 0BA7BC 800B9BBC 15610005 */ bne $t3, $at, .L800B9BD4 -/* 0BA7C0 800B9BC0 00001025 */ move $v0, $zero -/* 0BA7C4 800B9BC4 0C02E6A4 */ jal func_800B9A90 -/* 0BA7C8 800B9BC8 00002825 */ move $a1, $zero -/* 0BA7CC 800B9BCC 10000002 */ b .L800B9BD8 -/* 0BA7D0 800B9BD0 8FBF0014 */ lw $ra, 0x14($sp) -.L800B9BD4: -/* 0BA7D4 800B9BD4 8FBF0014 */ lw $ra, 0x14($sp) -.L800B9BD8: -/* 0BA7D8 800B9BD8 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0BA7DC 800B9BDC 03E00008 */ jr $ra -/* 0BA7E0 800B9BE0 00000000 */ nop diff --git a/asm/non_matchings/audio/heap/func_800BA00C.s b/asm/non_matchings/audio/heap/func_800BA00C.s index de51c5eac..879d16feb 100644 --- a/asm/non_matchings/audio/heap/func_800BA00C.s +++ b/asm/non_matchings/audio/heap/func_800BA00C.s @@ -17,12 +17,12 @@ glabel func_800BA00C /* 0BAC48 800BA048 01E00008 */ jr $t7 /* 0BAC4C 800BA04C 00000000 */ nop glabel L800BA050 -/* 0BAC50 800BA050 3C10803B */ lui $s0, %hi(D_803B1510) # $s0, 0x803b -/* 0BAC54 800BA054 3C11803B */ lui $s1, %hi(D_803B1A30) # $s1, 0x803b -/* 0BAC58 800BA058 26311A30 */ addiu $s1, %lo(D_803B1A30) # addiu $s1, $s1, 0x1a30 -/* 0BAC5C 800BA05C 26101510 */ addiu $s0, %lo(D_803B1510) # addiu $s0, $s0, 0x1510 +/* 0BAC50 800BA050 3C10803B */ lui $s0, %hi(gSequencePlayers) # $s0, 0x803b +/* 0BAC54 800BA054 3C11803B */ lui $s1, %hi(gSequenceChannels) # $s1, 0x803b +/* 0BAC58 800BA058 26311A30 */ addiu $s1, %lo(gSequenceChannels) # addiu $s1, $s1, 0x1a30 +/* 0BAC5C 800BA05C 26101510 */ addiu $s0, %lo(gSequencePlayers) # addiu $s0, $s0, 0x1510 .L800BA060: -/* 0BAC60 800BA060 0C02FBCB */ jal func_800BEF2C +/* 0BAC60 800BA060 0C02FBCB */ jal sequence_player_disable /* 0BAC64 800BA064 02002025 */ move $a0, $s0 /* 0BAC68 800BA068 26100148 */ addiu $s0, $s0, 0x148 /* 0BAC6C 800BA06C 1611FFFC */ bne $s0, $s1, .L800BA060 @@ -52,8 +52,8 @@ glabel L800BA094 /* 0BACC4 800BA0C4 00001825 */ move $v1, $zero /* 0BACC8 800BA0C8 18C0001A */ blez $a2, .L800BA134 /* 0BACCC 800BA0CC 3C07803B */ lui $a3, %hi(gAudioBufferParameters) # $a3, 0x803b -/* 0BACD0 800BA0D0 3C05803B */ lui $a1, %hi(D_803B1508) # $a1, 0x803b -/* 0BACD4 800BA0D4 24A51508 */ addiu $a1, %lo(D_803B1508) # addiu $a1, $a1, 0x1508 +/* 0BACD0 800BA0D0 3C05803B */ lui $a1, %hi(gNotes) # $a1, 0x803b +/* 0BACD4 800BA0D4 24A51508 */ addiu $a1, %lo(gNotes) # addiu $a1, $a1, 0x1508 /* 0BACD8 800BA0D8 24E77088 */ addiu $a3, %lo(gAudioBufferParameters) # addiu $a3, $a3, 0x7088 .L800BA0DC: /* 0BACDC 800BA0DC 8CAA0000 */ lw $t2, ($a1) diff --git a/asm/non_matchings/audio/heap/func_800BA250.s b/asm/non_matchings/audio/heap/func_800BA250.s index 6c2c0f519..8cd1fdb90 100644 --- a/asm/non_matchings/audio/heap/func_800BA250.s +++ b/asm/non_matchings/audio/heap/func_800BA250.s @@ -205,7 +205,7 @@ glabel func_800BA250 /* 0BB160 800BA560 3C04803B */ lui $a0, %hi(D_803B0358) # $a0, 0x803b /* 0BB164 800BA564 24840358 */ addiu $a0, %lo(D_803B0358) # addiu $a0, $a0, 0x358 /* 0BB168 800BA568 AC900000 */ sw $s0, ($a0) -/* 0BB16C 800BA56C 0C02E472 */ jal func_800B91C8 +/* 0BB16C 800BA56C 0C02E472 */ jal seq_and_bank_pool_init /* 0BB170 800BA570 AC910004 */ sw $s1, 4($a0) /* 0BB174 800BA574 8ECD0010 */ lw $t5, 0x10($s6) /* 0BB178 800BA578 3C04803B */ lui $a0, %hi(D_803B0360) # $a0, 0x803b @@ -214,7 +214,7 @@ glabel func_800BA250 /* 0BB184 800BA584 8ECF0014 */ lw $t7, 0x14($s6) /* 0BB188 800BA588 AC8F0004 */ sw $t7, 4($a0) /* 0BB18C 800BA58C 8ECE0018 */ lw $t6, 0x18($s6) -/* 0BB190 800BA590 0C02E491 */ jal func_800B9244 +/* 0BB190 800BA590 0C02E491 */ jal persistent_pools_init /* 0BB194 800BA594 AC8E0008 */ sw $t6, 8($a0) /* 0BB198 800BA598 8ED8001C */ lw $t8, 0x1c($s6) /* 0BB19C 800BA59C 3C04803B */ lui $a0, %hi(D_803B0370) # $a0, 0x803b @@ -223,7 +223,7 @@ glabel func_800BA250 /* 0BB1A8 800BA5A8 8ED90020 */ lw $t9, 0x20($s6) /* 0BB1AC 800BA5AC AC990004 */ sw $t9, 4($a0) /* 0BB1B0 800BA5B0 8ECD0024 */ lw $t5, 0x24($s6) -/* 0BB1B4 800BA5B4 0C02E4C0 */ jal func_800B9300 +/* 0BB1B4 800BA5B4 0C02E4C0 */ jal temporary_pools_init /* 0BB1B8 800BA5B8 AC8D0008 */ sw $t5, 8($a0) /* 0BB1BC 800BA5BC 0C02E378 */ jal func_800B8DE0 /* 0BB1C0 800BA5C0 00000000 */ nop @@ -236,10 +236,10 @@ glabel func_800BA250 /* 0BB1DC 800BA5DC 000F2980 */ sll $a1, $t7, 6 /* 0BB1E0 800BA5E0 0C02E3FF */ jal soundAlloc /* 0BB1E4 800BA5E4 02602025 */ move $a0, $s3 -/* 0BB1E8 800BA5E8 3C01803B */ lui $at, %hi(D_803B1508) # $at, 0x803b -/* 0BB1EC 800BA5EC 0C02F74D */ jal func_800BDD34 -/* 0BB1F0 800BA5F0 AC221508 */ sw $v0, %lo(D_803B1508)($at) -/* 0BB1F4 800BA5F4 0C02F4DA */ jal func_800BD368 +/* 0BB1E8 800BA5E8 3C01803B */ lui $at, %hi(gNotes) # $at, 0x803b +/* 0BB1EC 800BA5EC 0C02F74D */ jal note_init_all +/* 0BB1F0 800BA5F0 AC221508 */ sw $v0, %lo(gNotes)($at) +/* 0BB1F4 800BA5F4 0C02F4DA */ jal init_note_free_list /* 0BB1F8 800BA5F8 00000000 */ nop /* 0BB1FC 800BA5FC 3C18803B */ lui $t8, %hi(gMaxSimultaneousNotes) # $t8, 0x803b /* 0BB200 800BA600 8F1870B0 */ lw $t8, %lo(gMaxSimultaneousNotes)($t8) diff --git a/asm/non_matchings/audio/heap/func_800BA858.s b/asm/non_matchings/audio/heap/func_800BA858.s index 0de5718e6..dd808acea 100644 --- a/asm/non_matchings/audio/heap/func_800BA858.s +++ b/asm/non_matchings/audio/heap/func_800BA858.s @@ -1,11 +1,11 @@ -glabel func_800BA858 +glabel unk_pool1_lookup /* 0BB458 800BA858 3C03803B */ lui $v1, %hi(D_803B01C4) # $v1, 0x803b /* 0BB45C 800BA85C 8C6301C4 */ lw $v1, %lo(D_803B01C4)($v1) /* 0BB460 800BA860 00A03025 */ move $a2, $a1 -/* 0BB464 800BA864 3C05803B */ lui $a1, %hi(D_803B01B8) # $a1, 0x803b +/* 0BB464 800BA864 3C05803B */ lui $a1, %hi(gUnkPool1) # $a1, 0x803b /* 0BB468 800BA868 1860000E */ blez $v1, .L800BA8A4 /* 0BB46C 800BA86C 00001025 */ move $v0, $zero -/* 0BB470 800BA870 24A501B8 */ addiu $a1, %lo(D_803B01B8) # addiu $a1, $a1, 0x1b8 +/* 0BB470 800BA870 24A501B8 */ addiu $a1, %lo(gUnkPool1) # addiu $a1, $a1, 0x1b8 .L800BA874: /* 0BB474 800BA874 84AE0018 */ lh $t6, 0x18($a1) /* 0BB478 800BA878 24420001 */ addiu $v0, $v0, 1 @@ -25,131 +25,3 @@ glabel func_800BA858 /* 0BB4A4 800BA8A4 00001025 */ move $v0, $zero /* 0BB4A8 800BA8A8 03E00008 */ jr $ra /* 0BB4AC 800BA8AC 00000000 */ nop - -/* 0BB4B0 800BA8B0 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0BB4B4 800BA8B4 AFB10018 */ sw $s1, 0x18($sp) -/* 0BB4B8 800BA8B8 AFB00014 */ sw $s0, 0x14($sp) -/* 0BB4BC 800BA8BC 00808025 */ move $s0, $a0 -/* 0BB4C0 800BA8C0 00A08825 */ move $s1, $a1 -/* 0BB4C4 800BA8C4 10800009 */ beqz $a0, .L800BA8EC -/* 0BB4C8 800BA8C8 AFBF001C */ sw $ra, 0x1c($sp) -/* 0BB4CC 800BA8CC 24010001 */ li $at, 1 -/* 0BB4D0 800BA8D0 1081000A */ beq $a0, $at, .L800BA8FC -/* 0BB4D4 800BA8D4 3C0F803B */ lui $t7, %hi(D_803B7070) # $t7, 0x803b -/* 0BB4D8 800BA8D8 24010002 */ li $at, 2 -/* 0BB4DC 800BA8DC 1081000A */ beq $a0, $at, .L800BA908 -/* 0BB4E0 800BA8E0 3C18803B */ lui $t8, %hi(D_803B7074) # $t8, 0x803b -/* 0BB4E4 800BA8E4 1000000B */ b .L800BA914 -/* 0BB4E8 800BA8E8 8FB9003C */ lw $t9, 0x3c($sp) -.L800BA8EC: -/* 0BB4EC 800BA8EC 3C0E803B */ lui $t6, %hi(D_803B706C) # $t6, 0x803b -/* 0BB4F0 800BA8F0 8DCE706C */ lw $t6, %lo(D_803B706C)($t6) -/* 0BB4F4 800BA8F4 10000006 */ b .L800BA910 -/* 0BB4F8 800BA8F8 AFAE003C */ sw $t6, 0x3c($sp) -.L800BA8FC: -/* 0BB4FC 800BA8FC 8DEF7070 */ lw $t7, %lo(D_803B7070)($t7) -/* 0BB500 800BA900 10000003 */ b .L800BA910 -/* 0BB504 800BA904 AFAF003C */ sw $t7, 0x3c($sp) -.L800BA908: -/* 0BB508 800BA908 8F187074 */ lw $t8, %lo(D_803B7074)($t8) -/* 0BB50C 800BA90C AFB8003C */ sw $t8, 0x3c($sp) -.L800BA910: -/* 0BB510 800BA910 8FB9003C */ lw $t9, 0x3c($sp) -.L800BA914: -/* 0BB514 800BA914 001140C0 */ sll $t0, $s1, 3 -/* 0BB518 800BA918 02002025 */ move $a0, $s0 -/* 0BB51C 800BA91C 03281021 */ addu $v0, $t9, $t0 -/* 0BB520 800BA920 8C490008 */ lw $t1, 8($v0) -/* 0BB524 800BA924 15200002 */ bnez $t1, .L800BA930 -/* 0BB528 800BA928 00000000 */ nop -/* 0BB52C 800BA92C 8C510004 */ lw $s1, 4($v0) -.L800BA930: -/* 0BB530 800BA930 0C02EA16 */ jal func_800BA858 -/* 0BB534 800BA934 02202825 */ move $a1, $s1 -/* 0BB538 800BA938 14400049 */ bnez $v0, .L800BAA60 -/* 0BB53C 800BA93C 3C04803B */ lui $a0, %hi(D_803B01B8) # $a0, 0x803b -/* 0BB540 800BA940 8FAA003C */ lw $t2, 0x3c($sp) -/* 0BB544 800BA944 001158C0 */ sll $t3, $s1, 3 -/* 0BB548 800BA948 248401B8 */ addiu $a0, %lo(D_803B01B8) # addiu $a0, $a0, 0x1b8 -/* 0BB54C 800BA94C 24010001 */ li $at, 1 -/* 0BB550 800BA950 014B1021 */ addu $v0, $t2, $t3 -/* 0BB554 800BA954 8C86000C */ lw $a2, 0xc($a0) -/* 0BB558 800BA958 8C450008 */ lw $a1, 8($v0) -/* 0BB55C 800BA95C 16010002 */ bne $s0, $at, .L800BA968 -/* 0BB560 800BA960 8C470004 */ lw $a3, 4($v0) -/* 0BB564 800BA964 24E70010 */ addiu $a3, $a3, 0x10 -.L800BA968: -/* 0BB568 800BA968 AFA50034 */ sw $a1, 0x34($sp) -/* 0BB56C 800BA96C AFA60038 */ sw $a2, 0x38($sp) -/* 0BB570 800BA970 0C02E3FF */ jal soundAlloc -/* 0BB574 800BA974 AFA70030 */ sw $a3, 0x30($sp) -/* 0BB578 800BA978 8FA60038 */ lw $a2, 0x38($sp) -/* 0BB57C 800BA97C 3C0D803B */ lui $t5, %hi(D_803B01B8) # $t5, 0x803b -/* 0BB580 800BA980 25AD01B8 */ addiu $t5, %lo(D_803B01B8) # addiu $t5, $t5, 0x1b8 -/* 0BB584 800BA984 00066080 */ sll $t4, $a2, 2 -/* 0BB588 800BA988 01866023 */ subu $t4, $t4, $a2 -/* 0BB58C 800BA98C 000C6080 */ sll $t4, $t4, 2 -/* 0BB590 800BA990 018D1821 */ addu $v1, $t4, $t5 -/* 0BB594 800BA994 AC620010 */ sw $v0, 0x10($v1) -/* 0BB598 800BA998 10400031 */ beqz $v0, .L800BAA60 -/* 0BB59C 800BA99C 8FA70030 */ lw $a3, 0x30($sp) -/* 0BB5A0 800BA9A0 00E02025 */ move $a0, $a3 -/* 0BB5A4 800BA9A4 00402825 */ move $a1, $v0 -/* 0BB5A8 800BA9A8 8FA60034 */ lw $a2, 0x34($sp) -/* 0BB5AC 800BA9AC 0C02EAA0 */ jal audio_dma_copy_immediate -/* 0BB5B0 800BA9B0 AFA30020 */ sw $v1, 0x20($sp) -/* 0BB5B4 800BA9B4 8FA30020 */ lw $v1, 0x20($sp) -/* 0BB5B8 800BA9B8 8FAE0034 */ lw $t6, 0x34($sp) -/* 0BB5BC 800BA9BC 3C0F803B */ lui $t7, %hi(D_803B0400) # $t7, 0x803b -/* 0BB5C0 800BA9C0 A4700018 */ sh $s0, 0x18($v1) -/* 0BB5C4 800BA9C4 A471001A */ sh $s1, 0x1a($v1) -/* 0BB5C8 800BA9C8 12000009 */ beqz $s0, .L800BA9F0 -/* 0BB5CC 800BA9CC AC6E0014 */ sw $t6, 0x14($v1) -/* 0BB5D0 800BA9D0 24010001 */ li $at, 1 -/* 0BB5D4 800BA9D4 1201000F */ beq $s0, $at, .L800BAA14 -/* 0BB5D8 800BA9D8 3C0A803B */ lui $t2, %hi(D_803B7080) # $t2, 0x803b -/* 0BB5DC 800BA9DC 24010002 */ li $at, 2 -/* 0BB5E0 800BA9E0 52010020 */ beql $s0, $at, .L800BAA64 -/* 0BB5E4 800BA9E4 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BB5E8 800BA9E8 1000001E */ b .L800BAA64 -/* 0BB5EC 800BA9EC 8FBF001C */ lw $ra, 0x1c($sp) -.L800BA9F0: -/* 0BB5F0 800BA9F0 25EF0400 */ addiu $t7, %lo(D_803B0400) # addiu $t7, $t7, 0x400 -/* 0BB5F4 800BA9F4 022F1021 */ addu $v0, $s1, $t7 -/* 0BB5F8 800BA9F8 90580000 */ lbu $t8, ($v0) -/* 0BB5FC 800BA9FC 24010005 */ li $at, 5 -/* 0BB600 800BAA00 24190005 */ li $t9, 5 -/* 0BB604 800BAA04 53010017 */ beql $t8, $at, .L800BAA64 -/* 0BB608 800BAA08 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BB60C 800BAA0C 10000014 */ b .L800BAA60 -/* 0BB610 800BAA10 A0590000 */ sb $t9, ($v0) -.L800BAA14: -/* 0BB614 800BAA14 8C680010 */ lw $t0, 0x10($v1) -/* 0BB618 800BAA18 8D4A7080 */ lw $t2, %lo(D_803B7080)($t2) -/* 0BB61C 800BAA1C 00115880 */ sll $t3, $s1, 2 -/* 0BB620 800BAA20 01715823 */ subu $t3, $t3, $s1 -/* 0BB624 800BAA24 000B5880 */ sll $t3, $t3, 2 -/* 0BB628 800BAA28 25090004 */ addiu $t1, $t0, 4 -/* 0BB62C 800BAA2C 014B6021 */ addu $t4, $t2, $t3 -/* 0BB630 800BAA30 AD890004 */ sw $t1, 4($t4) -/* 0BB634 800BAA34 0C02ED61 */ jal func_800BB584 -/* 0BB638 800BAA38 02202025 */ move $a0, $s1 -/* 0BB63C 800BAA3C 3C0D803B */ lui $t5, %hi(D_803B03C0) # $t5, 0x803b -/* 0BB640 800BAA40 25AD03C0 */ addiu $t5, %lo(D_803B03C0) # addiu $t5, $t5, 0x3c0 -/* 0BB644 800BAA44 022D1021 */ addu $v0, $s1, $t5 -/* 0BB648 800BAA48 904E0000 */ lbu $t6, ($v0) -/* 0BB64C 800BAA4C 24010005 */ li $at, 5 -/* 0BB650 800BAA50 240F0005 */ li $t7, 5 -/* 0BB654 800BAA54 51C10003 */ beql $t6, $at, .L800BAA64 -/* 0BB658 800BAA58 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BB65C 800BAA5C A04F0000 */ sb $t7, ($v0) -.L800BAA60: -/* 0BB660 800BAA60 8FBF001C */ lw $ra, 0x1c($sp) -.L800BAA64: -/* 0BB664 800BAA64 8FB00014 */ lw $s0, 0x14($sp) -/* 0BB668 800BAA68 8FB10018 */ lw $s1, 0x18($sp) -/* 0BB66C 800BAA6C 03E00008 */ jr $ra -/* 0BB670 800BAA70 27BD0040 */ addiu $sp, $sp, 0x40 - -/* 0BB674 800BAA74 00000000 */ nop -/* 0BB678 800BAA78 00000000 */ nop diff --git a/asm/non_matchings/audio/heap/func_800BA8B0.s b/asm/non_matchings/audio/heap/func_800BA8B0.s new file mode 100644 index 000000000..d606c4c3e --- /dev/null +++ b/asm/non_matchings/audio/heap/func_800BA8B0.s @@ -0,0 +1,125 @@ +glabel func_800BA8B0 +/* 0BB4B0 800BA8B0 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 0BB4B4 800BA8B4 AFB10018 */ sw $s1, 0x18($sp) +/* 0BB4B8 800BA8B8 AFB00014 */ sw $s0, 0x14($sp) +/* 0BB4BC 800BA8BC 00808025 */ move $s0, $a0 +/* 0BB4C0 800BA8C0 00A08825 */ move $s1, $a1 +/* 0BB4C4 800BA8C4 10800009 */ beqz $a0, .L800BA8EC +/* 0BB4C8 800BA8C8 AFBF001C */ sw $ra, 0x1c($sp) +/* 0BB4CC 800BA8CC 24010001 */ li $at, 1 +/* 0BB4D0 800BA8D0 1081000A */ beq $a0, $at, .L800BA8FC +/* 0BB4D4 800BA8D4 3C0F803B */ lui $t7, %hi(D_803B7070) # $t7, 0x803b +/* 0BB4D8 800BA8D8 24010002 */ li $at, 2 +/* 0BB4DC 800BA8DC 1081000A */ beq $a0, $at, .L800BA908 +/* 0BB4E0 800BA8E0 3C18803B */ lui $t8, %hi(D_803B7074) # $t8, 0x803b +/* 0BB4E4 800BA8E4 1000000B */ b .L800BA914 +/* 0BB4E8 800BA8E8 8FB9003C */ lw $t9, 0x3c($sp) +.L800BA8EC: +/* 0BB4EC 800BA8EC 3C0E803B */ lui $t6, %hi(D_803B706C) # $t6, 0x803b +/* 0BB4F0 800BA8F0 8DCE706C */ lw $t6, %lo(D_803B706C)($t6) +/* 0BB4F4 800BA8F4 10000006 */ b .L800BA910 +/* 0BB4F8 800BA8F8 AFAE003C */ sw $t6, 0x3c($sp) +.L800BA8FC: +/* 0BB4FC 800BA8FC 8DEF7070 */ lw $t7, %lo(D_803B7070)($t7) +/* 0BB500 800BA900 10000003 */ b .L800BA910 +/* 0BB504 800BA904 AFAF003C */ sw $t7, 0x3c($sp) +.L800BA908: +/* 0BB508 800BA908 8F187074 */ lw $t8, %lo(D_803B7074)($t8) +/* 0BB50C 800BA90C AFB8003C */ sw $t8, 0x3c($sp) +.L800BA910: +/* 0BB510 800BA910 8FB9003C */ lw $t9, 0x3c($sp) +.L800BA914: +/* 0BB514 800BA914 001140C0 */ sll $t0, $s1, 3 +/* 0BB518 800BA918 02002025 */ move $a0, $s0 +/* 0BB51C 800BA91C 03281021 */ addu $v0, $t9, $t0 +/* 0BB520 800BA920 8C490008 */ lw $t1, 8($v0) +/* 0BB524 800BA924 15200002 */ bnez $t1, .L800BA930 +/* 0BB528 800BA928 00000000 */ nop +/* 0BB52C 800BA92C 8C510004 */ lw $s1, 4($v0) +.L800BA930: +/* 0BB530 800BA930 0C02EA16 */ jal unk_pool1_lookup +/* 0BB534 800BA934 02202825 */ move $a1, $s1 +/* 0BB538 800BA938 14400049 */ bnez $v0, .L800BAA60 +/* 0BB53C 800BA93C 3C04803B */ lui $a0, %hi(gUnkPool1) # $a0, 0x803b +/* 0BB540 800BA940 8FAA003C */ lw $t2, 0x3c($sp) +/* 0BB544 800BA944 001158C0 */ sll $t3, $s1, 3 +/* 0BB548 800BA948 248401B8 */ addiu $a0, %lo(gUnkPool1) # addiu $a0, $a0, 0x1b8 +/* 0BB54C 800BA94C 24010001 */ li $at, 1 +/* 0BB550 800BA950 014B1021 */ addu $v0, $t2, $t3 +/* 0BB554 800BA954 8C86000C */ lw $a2, 0xc($a0) +/* 0BB558 800BA958 8C450008 */ lw $a1, 8($v0) +/* 0BB55C 800BA95C 16010002 */ bne $s0, $at, .L800BA968 +/* 0BB560 800BA960 8C470004 */ lw $a3, 4($v0) +/* 0BB564 800BA964 24E70010 */ addiu $a3, $a3, 0x10 +.L800BA968: +/* 0BB568 800BA968 AFA50034 */ sw $a1, 0x34($sp) +/* 0BB56C 800BA96C AFA60038 */ sw $a2, 0x38($sp) +/* 0BB570 800BA970 0C02E3FF */ jal soundAlloc +/* 0BB574 800BA974 AFA70030 */ sw $a3, 0x30($sp) +/* 0BB578 800BA978 8FA60038 */ lw $a2, 0x38($sp) +/* 0BB57C 800BA97C 3C0D803B */ lui $t5, %hi(gUnkPool1) # $t5, 0x803b +/* 0BB580 800BA980 25AD01B8 */ addiu $t5, %lo(gUnkPool1) # addiu $t5, $t5, 0x1b8 +/* 0BB584 800BA984 00066080 */ sll $t4, $a2, 2 +/* 0BB588 800BA988 01866023 */ subu $t4, $t4, $a2 +/* 0BB58C 800BA98C 000C6080 */ sll $t4, $t4, 2 +/* 0BB590 800BA990 018D1821 */ addu $v1, $t4, $t5 +/* 0BB594 800BA994 AC620010 */ sw $v0, 0x10($v1) +/* 0BB598 800BA998 10400031 */ beqz $v0, .L800BAA60 +/* 0BB59C 800BA99C 8FA70030 */ lw $a3, 0x30($sp) +/* 0BB5A0 800BA9A0 00E02025 */ move $a0, $a3 +/* 0BB5A4 800BA9A4 00402825 */ move $a1, $v0 +/* 0BB5A8 800BA9A8 8FA60034 */ lw $a2, 0x34($sp) +/* 0BB5AC 800BA9AC 0C02EAA0 */ jal audio_dma_copy_immediate +/* 0BB5B0 800BA9B0 AFA30020 */ sw $v1, 0x20($sp) +/* 0BB5B4 800BA9B4 8FA30020 */ lw $v1, 0x20($sp) +/* 0BB5B8 800BA9B8 8FAE0034 */ lw $t6, 0x34($sp) +/* 0BB5BC 800BA9BC 3C0F803B */ lui $t7, %hi(gSeqLoadStatus) # $t7, 0x803b +/* 0BB5C0 800BA9C0 A4700018 */ sh $s0, 0x18($v1) +/* 0BB5C4 800BA9C4 A471001A */ sh $s1, 0x1a($v1) +/* 0BB5C8 800BA9C8 12000009 */ beqz $s0, .L800BA9F0 +/* 0BB5CC 800BA9CC AC6E0014 */ sw $t6, 0x14($v1) +/* 0BB5D0 800BA9D0 24010001 */ li $at, 1 +/* 0BB5D4 800BA9D4 1201000F */ beq $s0, $at, .L800BAA14 +/* 0BB5D8 800BA9D8 3C0A803B */ lui $t2, %hi(gCtlEntries) # $t2, 0x803b +/* 0BB5DC 800BA9DC 24010002 */ li $at, 2 +/* 0BB5E0 800BA9E0 52010020 */ beql $s0, $at, .L800BAA64 +/* 0BB5E4 800BA9E4 8FBF001C */ lw $ra, 0x1c($sp) +/* 0BB5E8 800BA9E8 1000001E */ b .L800BAA64 +/* 0BB5EC 800BA9EC 8FBF001C */ lw $ra, 0x1c($sp) +.L800BA9F0: +/* 0BB5F0 800BA9F0 25EF0400 */ addiu $t7, %lo(gSeqLoadStatus) # addiu $t7, $t7, 0x400 +/* 0BB5F4 800BA9F4 022F1021 */ addu $v0, $s1, $t7 +/* 0BB5F8 800BA9F8 90580000 */ lbu $t8, ($v0) +/* 0BB5FC 800BA9FC 24010005 */ li $at, 5 +/* 0BB600 800BAA00 24190005 */ li $t9, 5 +/* 0BB604 800BAA04 53010017 */ beql $t8, $at, .L800BAA64 +/* 0BB608 800BAA08 8FBF001C */ lw $ra, 0x1c($sp) +/* 0BB60C 800BAA0C 10000014 */ b .L800BAA60 +/* 0BB610 800BAA10 A0590000 */ sb $t9, ($v0) +.L800BAA14: +/* 0BB614 800BAA14 8C680010 */ lw $t0, 0x10($v1) +/* 0BB618 800BAA18 8D4A7080 */ lw $t2, %lo(gCtlEntries)($t2) +/* 0BB61C 800BAA1C 00115880 */ sll $t3, $s1, 2 +/* 0BB620 800BAA20 01715823 */ subu $t3, $t3, $s1 +/* 0BB624 800BAA24 000B5880 */ sll $t3, $t3, 2 +/* 0BB628 800BAA28 25090004 */ addiu $t1, $t0, 4 +/* 0BB62C 800BAA2C 014B6021 */ addu $t4, $t2, $t3 +/* 0BB630 800BAA30 AD890004 */ sw $t1, 4($t4) +/* 0BB634 800BAA34 0C02ED61 */ jal func_800BB584 +/* 0BB638 800BAA38 02202025 */ move $a0, $s1 +/* 0BB63C 800BAA3C 3C0D803B */ lui $t5, %hi(gBankLoadStatus) # $t5, 0x803b +/* 0BB640 800BAA40 25AD03C0 */ addiu $t5, %lo(gBankLoadStatus) # addiu $t5, $t5, 0x3c0 +/* 0BB644 800BAA44 022D1021 */ addu $v0, $s1, $t5 +/* 0BB648 800BAA48 904E0000 */ lbu $t6, ($v0) +/* 0BB64C 800BAA4C 24010005 */ li $at, 5 +/* 0BB650 800BAA50 240F0005 */ li $t7, 5 +/* 0BB654 800BAA54 51C10003 */ beql $t6, $at, .L800BAA64 +/* 0BB658 800BAA58 8FBF001C */ lw $ra, 0x1c($sp) +/* 0BB65C 800BAA5C A04F0000 */ sb $t7, ($v0) +.L800BAA60: +/* 0BB660 800BAA60 8FBF001C */ lw $ra, 0x1c($sp) +.L800BAA64: +/* 0BB664 800BAA64 8FB00014 */ lw $s0, 0x14($sp) +/* 0BB668 800BAA68 8FB10018 */ lw $s1, 0x18($sp) +/* 0BB66C 800BAA6C 03E00008 */ jr $ra +/* 0BB670 800BAA70 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/audio/heap/soundAlloc.s b/asm/non_matchings/audio/heap/soundAlloc.s deleted file mode 100644 index d284678ea..000000000 --- a/asm/non_matchings/audio/heap/soundAlloc.s +++ /dev/null @@ -1,38 +0,0 @@ -glabel soundAlloc -/* 0B9BFC 800B8FFC 8C860004 */ lw $a2, 4($a0) -/* 0B9C00 800B9000 8C8F0000 */ lw $t7, ($a0) -/* 0B9C04 800B9004 8C980008 */ lw $t8, 8($a0) -/* 0B9C08 800B9008 24A2000F */ addiu $v0, $a1, 0xf -/* 0B9C0C 800B900C 2401FFF0 */ li $at, -16 -/* 0B9C10 800B9010 00417024 */ and $t6, $v0, $at -/* 0B9C14 800B9014 00CE4021 */ addu $t0, $a2, $t6 -/* 0B9C18 800B9018 01F8C821 */ addu $t9, $t7, $t8 -/* 0B9C1C 800B901C 0328082B */ sltu $at, $t9, $t0 -/* 0B9C20 800B9020 1420000E */ bnez $at, .L800B905C -/* 0B9C24 800B9024 00C01825 */ move $v1, $a2 -/* 0B9C28 800B9028 00CE4821 */ addu $t1, $a2, $t6 -/* 0B9C2C 800B902C 00C9082B */ sltu $at, $a2, $t1 -/* 0B9C30 800B9030 AC890004 */ sw $t1, 4($a0) -/* 0B9C34 800B9034 1020000B */ beqz $at, .L800B9064 -/* 0B9C38 800B9038 00C02825 */ move $a1, $a2 -/* 0B9C3C 800B903C A0A00000 */ sb $zero, ($a1) -.L800B9040: -/* 0B9C40 800B9040 8C8B0004 */ lw $t3, 4($a0) -/* 0B9C44 800B9044 24A50001 */ addiu $a1, $a1, 1 -/* 0B9C48 800B9048 00AB082B */ sltu $at, $a1, $t3 -/* 0B9C4C 800B904C 5420FFFC */ bnel $at, $zero, .L800B9040 -/* 0B9C50 800B9050 A0A00000 */ sb $zero, ($a1) -/* 0B9C54 800B9054 10000004 */ b .L800B9068 -/* 0B9C58 800B9058 8C8C000C */ lw $t4, 0xc($a0) -.L800B905C: -/* 0B9C5C 800B905C 03E00008 */ jr $ra -/* 0B9C60 800B9060 00001025 */ move $v0, $zero - -.L800B9064: -/* 0B9C64 800B9064 8C8C000C */ lw $t4, 0xc($a0) -.L800B9068: -/* 0B9C68 800B9068 00601025 */ move $v0, $v1 -/* 0B9C6C 800B906C 258D0001 */ addiu $t5, $t4, 1 -/* 0B9C70 800B9070 AC8D000C */ sw $t5, 0xc($a0) -/* 0B9C74 800B9074 03E00008 */ jr $ra -/* 0B9C78 800B9078 00000000 */ nop diff --git a/asm/non_matchings/audio/load/audio_init.s b/asm/non_matchings/audio/load/audio_init.s index d1111d01e..99c1a246c 100644 --- a/asm/non_matchings/audio/load/audio_init.s +++ b/asm/non_matchings/audio/load/audio_init.s @@ -104,8 +104,8 @@ glabel audio_init /* 0BCE4C 800BC24C AC2070C0 */ sw $zero, %lo(D_803B70C0)($at) /* 0BCE50 800BC250 3C01803B */ lui $at, %hi(D_803B70C4) # $at, 0x803b /* 0BCE54 800BC254 AC2070C4 */ sw $zero, %lo(D_803B70C4)($at) -/* 0BCE58 800BC258 3C01803B */ lui $at, %hi(D_803B70B6) # $at, 0x803b -/* 0BCE5C 800BC25C A02070B6 */ sb $zero, %lo(D_803B70B6)($at) +/* 0BCE58 800BC258 3C01803B */ lui $at, %hi(gAudioLibSoundMode) # $at, 0x803b +/* 0BCE5C 800BC25C A02070B6 */ sb $zero, %lo(gAudioLibSoundMode)($at) /* 0BCE60 800BC260 3C02803B */ lui $v0, %hi(D_803B70D8) # $v0, 0x803b /* 0BCE64 800BC264 3C01803B */ lui $at, %hi(D_803B70D4) # $at, 0x803b /* 0BCE68 800BC268 244270D8 */ addiu $v0, %lo(D_803B70D8) # addiu $v0, $v0, 0x70d8 @@ -132,10 +132,10 @@ glabel audio_init /* 0BCEBC 800BC2BC 0C02E43C */ jal func_800B90F0 /* 0BCEC0 800BC2C0 8C84A5D4 */ lw $a0, %lo(D_800EA5D4)($a0) /* 0BCEC4 800BC2C4 3C06803B */ lui $a2, %hi(D_803B7180) # $a2, 0x803b -/* 0BCEC8 800BC2C8 3C14803B */ lui $s4, %hi(D_803AFBD8) # $s4, 0x803b +/* 0BCEC8 800BC2C8 3C14803B */ lui $s4, %hi(gAudioInitPool) # $s4, 0x803b /* 0BCECC 800BC2CC 3C11803B */ lui $s1, %hi(D_803B718C) # $s1, 0x803b /* 0BCED0 800BC2D0 2631718C */ addiu $s1, %lo(D_803B718C) # addiu $s1, $s1, 0x718c -/* 0BCED4 800BC2D4 2694FBD8 */ addiu $s4, %lo(D_803AFBD8) # addiu $s4, $s4, -0x428 +/* 0BCED4 800BC2D4 2694FBD8 */ addiu $s4, %lo(gAudioInitPool) # addiu $s4, $s4, -0x428 /* 0BCED8 800BC2D8 24C67180 */ addiu $a2, %lo(D_803B7180) # addiu $a2, $a2, 0x7180 /* 0BCEDC 800BC2DC 24100A00 */ li $s0, 2560 /* 0BCEE0 800BC2E0 02802025 */ move $a0, $s4 @@ -235,8 +235,8 @@ glabel audio_init /* 0BD050 800BC450 00052880 */ sll $a1, $a1, 2 /* 0BD054 800BC454 0C02E3FF */ jal soundAlloc /* 0BD058 800BC458 02802025 */ move $a0, $s4 -/* 0BD05C 800BC45C 3C07803B */ lui $a3, %hi(D_803B7080) # $a3, 0x803b -/* 0BD060 800BC460 24E77080 */ addiu $a3, %lo(D_803B7080) # addiu $a3, $a3, 0x7080 +/* 0BD05C 800BC45C 3C07803B */ lui $a3, %hi(gCtlEntries) # $a3, 0x803b +/* 0BD060 800BC460 24E77080 */ addiu $a3, %lo(gCtlEntries) # addiu $a3, $a3, 0x7080 /* 0BD064 800BC464 ACE20000 */ sw $v0, ($a3) /* 0BD068 800BC468 1A600019 */ blez $s3, .L800BC4D0 /* 0BD06C 800BC46C 00001825 */ move $v1, $zero @@ -250,8 +250,8 @@ glabel audio_init /* 0BD088 800BC488 8DE40004 */ lw $a0, 4($t7) /* 0BD08C 800BC48C 0C02EAA0 */ jal audio_dma_copy_immediate /* 0BD090 800BC490 AFA3008C */ sw $v1, 0x8c($sp) -/* 0BD094 800BC494 3C07803B */ lui $a3, %hi(D_803B7080) # $a3, 0x803b -/* 0BD098 800BC498 24E77080 */ addiu $a3, %lo(D_803B7080) # addiu $a3, $a3, 0x7080 +/* 0BD094 800BC494 3C07803B */ lui $a3, %hi(gCtlEntries) # $a3, 0x803b +/* 0BD098 800BC498 24E77080 */ addiu $a3, %lo(gCtlEntries) # addiu $a3, $a3, 0x7080 /* 0BD09C 800BC49C 8CF80000 */ lw $t8, ($a3) /* 0BD0A0 800BC4A0 8FB90060 */ lw $t9, 0x60($sp) /* 0BD0A4 800BC4A4 8FA3008C */ lw $v1, 0x8c($sp) @@ -296,8 +296,8 @@ glabel audio_init /* 0BD13C 800BC53C 02802025 */ move $a0, $s4 /* 0BD140 800BC540 0C02E3FF */ jal soundAlloc /* 0BD144 800BC544 24050100 */ li $a1, 256 -/* 0BD148 800BC548 3C03803B */ lui $v1, %hi(D_803B7078) # $v1, 0x803b -/* 0BD14C 800BC54C 24637078 */ addiu $v1, %lo(D_803B7078) # addiu $v1, $v1, 0x7078 +/* 0BD148 800BC548 3C03803B */ lui $v1, %hi(gAlBankSets) # $v1, 0x803b +/* 0BD14C 800BC54C 24637078 */ addiu $v1, %lo(gAlBankSets) # addiu $v1, $v1, 0x7078 /* 0BD150 800BC550 3C0400BF */ lui $a0, %hi(_instrument_setsSegmentRomStart) # $a0, 0xbf /* 0BD154 800BC554 AC620000 */ sw $v0, ($v1) /* 0BD158 800BC558 248490E0 */ addiu $a0, %lo(_instrument_setsSegmentRomStart) # addiu $a0, $a0, -0x6f20 @@ -309,12 +309,12 @@ glabel audio_init /* 0BD170 800BC570 8E050000 */ lw $a1, ($s0) /* 0BD174 800BC574 0C02E3FF */ jal soundAlloc /* 0BD178 800BC578 02802025 */ move $a0, $s4 -/* 0BD17C 800BC57C 3C04803B */ lui $a0, %hi(D_803B01B8) # $a0, 0x803b -/* 0BD180 800BC580 248401B8 */ addiu $a0, %lo(D_803B01B8) # addiu $a0, $a0, 0x1b8 +/* 0BD17C 800BC57C 3C04803B */ lui $a0, %hi(gUnkPool1) # $a0, 0x803b +/* 0BD180 800BC580 248401B8 */ addiu $a0, %lo(gUnkPool1) # addiu $a0, $a0, 0x1b8 /* 0BD184 800BC584 00402825 */ move $a1, $v0 -/* 0BD188 800BC588 0C02E41F */ jal func_800B907C +/* 0BD188 800BC588 0C02E41F */ jal sound_alloc_pool_init /* 0BD18C 800BC58C 8E060000 */ lw $a2, ($s0) -/* 0BD190 800BC590 0C030497 */ jal func_800C125C +/* 0BD190 800BC590 0C030497 */ jal init_sequence_players /* 0BD194 800BC594 00000000 */ nop /* 0BD198 800BC598 3C0F7655 */ lui $t7, (0x76557364 >> 16) # lui $t7, 0x7655 /* 0BD19C 800BC59C 3C18800F */ lui $t8, %hi(D_800EA5DC) # $t8, 0x800f diff --git a/asm/non_matchings/audio/load/func_800BB388.s b/asm/non_matchings/audio/load/func_800BB388.s deleted file mode 100644 index 88275e081..000000000 --- a/asm/non_matchings/audio/load/func_800BB388.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel func_800BB388 -/* 0BBF88 800BB388 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0BBF8C 800BB38C 28A1007F */ slti $at, $a1, 0x7f -/* 0BBF90 800BB390 1020001A */ beqz $at, .L800BB3FC -/* 0BBF94 800BB394 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BBF98 800BB398 0C02F252 */ jal func_800BC948 -/* 0BBF9C 800BB39C 00000000 */ nop -/* 0BBFA0 800BB3A0 14400003 */ bnez $v0, .L800BB3B0 -/* 0BBFA4 800BB3A4 00401825 */ move $v1, $v0 -/* 0BBFA8 800BB3A8 10000020 */ b .L800BB42C -/* 0BBFAC 800BB3AC 2402FFFF */ li $v0, -1 -.L800BB3B0: -/* 0BBFB0 800BB3B0 904E0001 */ lbu $t6, 1($v0) -/* 0BBFB4 800BB3B4 51C00006 */ beql $t6, $zero, .L800BB3D0 -/* 0BBFB8 800BB3B8 8C640010 */ lw $a0, 0x10($v1) -/* 0BBFBC 800BB3BC 8C640008 */ lw $a0, 8($v1) -/* 0BBFC0 800BB3C0 0C02ECC1 */ jal func_800BB304 -/* 0BBFC4 800BB3C4 AFA3001C */ sw $v1, 0x1c($sp) -/* 0BBFC8 800BB3C8 8FA3001C */ lw $v1, 0x1c($sp) -/* 0BBFCC 800BB3CC 8C640010 */ lw $a0, 0x10($v1) -.L800BB3D0: -/* 0BBFD0 800BB3D0 0C02ECC1 */ jal func_800BB304 -/* 0BBFD4 800BB3D4 AFA3001C */ sw $v1, 0x1c($sp) -/* 0BBFD8 800BB3D8 8FA3001C */ lw $v1, 0x1c($sp) -/* 0BBFDC 800BB3DC 2401007F */ li $at, 127 -/* 0BBFE0 800BB3E0 906F0002 */ lbu $t7, 2($v1) -/* 0BBFE4 800BB3E4 51E10012 */ beql $t7, $at, .L800BB430 -/* 0BBFE8 800BB3E8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BBFEC 800BB3EC 0C02ECC1 */ jal func_800BB304 -/* 0BBFF0 800BB3F0 8C640018 */ lw $a0, 0x18($v1) -/* 0BBFF4 800BB3F4 1000000E */ b .L800BB430 -/* 0BBFF8 800BB3F8 8FBF0014 */ lw $ra, 0x14($sp) -.L800BB3FC: -/* 0BBFFC 800BB3FC 2401007F */ li $at, 127 -/* 0BC000 800BB400 54A1000B */ bnel $a1, $at, .L800BB430 -/* 0BC004 800BB404 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BC008 800BB408 0C02F27E */ jal func_800BC9F8 -/* 0BC00C 800BB40C 00C02825 */ move $a1, $a2 -/* 0BC010 800BB410 14400003 */ bnez $v0, .L800BB420 -/* 0BC014 800BB414 00401825 */ move $v1, $v0 -/* 0BC018 800BB418 10000004 */ b .L800BB42C -/* 0BC01C 800BB41C 2402FFFF */ li $v0, -1 -.L800BB420: -/* 0BC020 800BB420 0C02ECC1 */ jal func_800BB304 -/* 0BC024 800BB424 8C640004 */ lw $a0, 4($v1) -/* 0BC028 800BB428 00001025 */ move $v0, $zero -.L800BB42C: -/* 0BC02C 800BB42C 8FBF0014 */ lw $ra, 0x14($sp) -.L800BB430: -/* 0BC030 800BB430 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0BC034 800BB434 03E00008 */ jr $ra -/* 0BC038 800BB438 00000000 */ nop diff --git a/asm/non_matchings/audio/load/func_800BB484.s b/asm/non_matchings/audio/load/func_800BB484.s deleted file mode 100644 index 02aeed28c..000000000 --- a/asm/non_matchings/audio/load/func_800BB484.s +++ /dev/null @@ -1,70 +0,0 @@ -glabel func_800BB484 -/* 0BC084 800BB484 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0BC088 800BB488 AFBF001C */ sw $ra, 0x1c($sp) -/* 0BC08C 800BB48C AFB00018 */ sw $s0, 0x18($sp) -/* 0BC090 800BB490 AFA40030 */ sw $a0, 0x30($sp) -/* 0BC094 800BB494 8C820000 */ lw $v0, ($a0) -/* 0BC098 800BB498 00A08025 */ move $s0, $a1 -/* 0BC09C 800BB49C 10400034 */ beqz $v0, .L800BB570 -/* 0BC0A0 800BB4A0 00453821 */ addu $a3, $v0, $a1 -/* 0BC0A4 800BB4A4 AC870000 */ sw $a3, ($a0) -/* 0BC0A8 800BB4A8 90E40001 */ lbu $a0, 1($a3) -/* 0BC0AC 800BB4AC 00E01825 */ move $v1, $a3 -/* 0BC0B0 800BB4B0 24080001 */ li $t0, 1 -/* 0BC0B4 800BB4B4 1480000C */ bnez $a0, .L800BB4E8 -/* 0BC0B8 800BB4B8 24010080 */ li $at, 128 -/* 0BC0BC 800BB4BC 8CEF0004 */ lw $t7, 4($a3) -/* 0BC0C0 800BB4C0 8C780008 */ lw $t8, 8($v1) -/* 0BC0C4 800BB4C4 8C79000C */ lw $t9, 0xc($v1) -/* 0BC0C8 800BB4C8 01E63821 */ addu $a3, $t7, $a2 -/* 0BC0CC 800BB4CC AC670004 */ sw $a3, 4($v1) -/* 0BC0D0 800BB4D0 03053821 */ addu $a3, $t8, $a1 -/* 0BC0D4 800BB4D4 AC670008 */ sw $a3, 8($v1) -/* 0BC0D8 800BB4D8 03253821 */ addu $a3, $t9, $a1 -/* 0BC0DC 800BB4DC AC67000C */ sw $a3, 0xc($v1) -/* 0BC0E0 800BB4E0 10000023 */ b .L800BB570 -/* 0BC0E4 800BB4E4 A0680001 */ sb $t0, 1($v1) -.L800BB4E8: -/* 0BC0E8 800BB4E8 54810022 */ bnel $a0, $at, .L800BB574 -/* 0BC0EC 800BB4EC 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BC0F0 800BB4F0 8C690004 */ lw $t1, 4($v1) -/* 0BC0F4 800BB4F4 3C04803B */ lui $a0, %hi(gNotesAndBuffersPool) # $a0, 0x803b -/* 0BC0F8 800BB4F8 8C650010 */ lw $a1, 0x10($v1) -/* 0BC0FC 800BB4FC 01263821 */ addu $a3, $t1, $a2 -/* 0BC100 800BB500 AFA70028 */ sw $a3, 0x28($sp) -/* 0BC104 800BB504 AFA3002C */ sw $v1, 0x2c($sp) -/* 0BC108 800BB508 0C02E3FF */ jal soundAlloc -/* 0BC10C 800BB50C 2484FBE8 */ addiu $a0, %lo(gNotesAndBuffersPool) # addiu $a0, $a0, -0x418 -/* 0BC110 800BB510 8FA3002C */ lw $v1, 0x2c($sp) -/* 0BC114 800BB514 8FA70028 */ lw $a3, 0x28($sp) -/* 0BC118 800BB518 14400005 */ bnez $v0, .L800BB530 -/* 0BC11C 800BB51C 00402825 */ move $a1, $v0 -/* 0BC120 800BB520 240A0001 */ li $t2, 1 -/* 0BC124 800BB524 AC670004 */ sw $a3, 4($v1) -/* 0BC128 800BB528 1000000B */ b .L800BB558 -/* 0BC12C 800BB52C A06A0001 */ sb $t2, 1($v1) -.L800BB530: -/* 0BC130 800BB530 8C660010 */ lw $a2, 0x10($v1) -/* 0BC134 800BB534 AFA50024 */ sw $a1, 0x24($sp) -/* 0BC138 800BB538 AFA3002C */ sw $v1, 0x2c($sp) -/* 0BC13C 800BB53C 0C02EAA0 */ jal audio_dma_copy_immediate -/* 0BC140 800BB540 00E02025 */ move $a0, $a3 -/* 0BC144 800BB544 8FA3002C */ lw $v1, 0x2c($sp) -/* 0BC148 800BB548 8FA50024 */ lw $a1, 0x24($sp) -/* 0BC14C 800BB54C 240B0081 */ li $t3, 129 -/* 0BC150 800BB550 A06B0001 */ sb $t3, 1($v1) -/* 0BC154 800BB554 AC650004 */ sw $a1, 4($v1) -.L800BB558: -/* 0BC158 800BB558 8C6C0008 */ lw $t4, 8($v1) -/* 0BC15C 800BB55C 8C6D000C */ lw $t5, 0xc($v1) -/* 0BC160 800BB560 01903821 */ addu $a3, $t4, $s0 -/* 0BC164 800BB564 AC670008 */ sw $a3, 8($v1) -/* 0BC168 800BB568 01B03821 */ addu $a3, $t5, $s0 -/* 0BC16C 800BB56C AC67000C */ sw $a3, 0xc($v1) -.L800BB570: -/* 0BC170 800BB570 8FBF001C */ lw $ra, 0x1c($sp) -.L800BB574: -/* 0BC174 800BB574 8FB00018 */ lw $s0, 0x18($sp) -/* 0BC178 800BB578 27BD0030 */ addiu $sp, $sp, 0x30 -/* 0BC17C 800BB57C 03E00008 */ jr $ra -/* 0BC180 800BB580 00000000 */ nop diff --git a/asm/non_matchings/audio/load/func_800BB584.s b/asm/non_matchings/audio/load/func_800BB584.s index 986f8c9ea..07b5c9b36 100644 --- a/asm/non_matchings/audio/load/func_800BB584.s +++ b/asm/non_matchings/audio/load/func_800BB584.s @@ -17,8 +17,8 @@ glabel func_800BB584 /* 0BC1C0 800BB5C0 8C450004 */ lw $a1, 4($v0) .L800BB5C4: /* 0BC1C4 800BB5C4 8FA30020 */ lw $v1, 0x20($sp) -/* 0BC1C8 800BB5C8 3C0B803B */ lui $t3, %hi(D_803B7080) # $t3, 0x803b -/* 0BC1CC 800BB5CC 8D6B7080 */ lw $t3, %lo(D_803B7080)($t3) +/* 0BC1C8 800BB5C8 3C0B803B */ lui $t3, %hi(gCtlEntries) # $t3, 0x803b +/* 0BC1CC 800BB5CC 8D6B7080 */ lw $t3, %lo(gCtlEntries)($t3) /* 0BC1D0 800BB5D0 00035080 */ sll $t2, $v1, 2 /* 0BC1D4 800BB5D4 01435023 */ subu $t2, $t2, $v1 /* 0BC1D8 800BB5D8 000A1880 */ sll $v1, $t2, 2 @@ -27,11 +27,11 @@ glabel func_800BB584 /* 0BC1E4 800BB5E4 90460001 */ lbu $a2, 1($v0) /* 0BC1E8 800BB5E8 90470002 */ lbu $a3, 2($v0) /* 0BC1EC 800BB5EC AFA30018 */ sw $v1, 0x18($sp) -/* 0BC1F0 800BB5F0 0C02ED89 */ jal func_800BB624 +/* 0BC1F0 800BB5F0 0C02ED89 */ jal patch_audio_bank /* 0BC1F4 800BB5F4 2484FFFC */ addiu $a0, $a0, -4 -/* 0BC1F8 800BB5F8 3C0C803B */ lui $t4, %hi(D_803B7080) # $t4, 0x803b +/* 0BC1F8 800BB5F8 3C0C803B */ lui $t4, %hi(gCtlEntries) # $t4, 0x803b /* 0BC1FC 800BB5FC 8FA30018 */ lw $v1, 0x18($sp) -/* 0BC200 800BB600 8D8C7080 */ lw $t4, %lo(D_803B7080)($t4) +/* 0BC200 800BB600 8D8C7080 */ lw $t4, %lo(gCtlEntries)($t4) /* 0BC204 800BB604 01831021 */ addu $v0, $t4, $v1 /* 0BC208 800BB608 8C4D0004 */ lw $t5, 4($v0) /* 0BC20C 800BB60C 8DAEFFFC */ lw $t6, -4($t5) diff --git a/asm/non_matchings/audio/load/func_800BB624.s b/asm/non_matchings/audio/load/func_800BB624.s deleted file mode 100644 index 4c235ff52..000000000 --- a/asm/non_matchings/audio/load/func_800BB624.s +++ /dev/null @@ -1,94 +0,0 @@ -glabel func_800BB624 -/* 0BC224 800BB624 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 0BC228 800BB628 AFBF0034 */ sw $ra, 0x34($sp) -/* 0BC22C 800BB62C AFB70030 */ sw $s7, 0x30($sp) -/* 0BC230 800BB630 AFB6002C */ sw $s6, 0x2c($sp) -/* 0BC234 800BB634 AFB50028 */ sw $s5, 0x28($sp) -/* 0BC238 800BB638 AFB40024 */ sw $s4, 0x24($sp) -/* 0BC23C 800BB63C AFB30020 */ sw $s3, 0x20($sp) -/* 0BC240 800BB640 AFB2001C */ sw $s2, 0x1c($sp) -/* 0BC244 800BB644 AFB10018 */ sw $s1, 0x18($sp) -/* 0BC248 800BB648 AFB00014 */ sw $s0, 0x14($sp) -/* 0BC24C 800BB64C AFA60040 */ sw $a2, 0x40($sp) -/* 0BC250 800BB650 8C820000 */ lw $v0, ($a0) -/* 0BC254 800BB654 00809825 */ move $s3, $a0 -/* 0BC258 800BB658 00A0A825 */ move $s5, $a1 -/* 0BC25C 800BB65C 1040001C */ beqz $v0, .L800BB6D0 -/* 0BC260 800BB660 00E0B825 */ move $s7, $a3 -/* 0BC264 800BB664 10E0001A */ beqz $a3, .L800BB6D0 -/* 0BC268 800BB668 00447021 */ addu $t6, $v0, $a0 -/* 0BC26C 800BB66C AC8E0000 */ sw $t6, ($a0) -/* 0BC270 800BB670 10E00017 */ beqz $a3, .L800BB6D0 -/* 0BC274 800BB674 00009025 */ move $s2, $zero -/* 0BC278 800BB678 0000A025 */ move $s4, $zero -/* 0BC27C 800BB67C 24160001 */ li $s6, 1 -.L800BB680: -/* 0BC280 800BB680 8E6F0000 */ lw $t7, ($s3) -/* 0BC284 800BB684 01F41021 */ addu $v0, $t7, $s4 -/* 0BC288 800BB688 8C500000 */ lw $s0, ($v0) -/* 0BC28C 800BB68C 1200000D */ beqz $s0, .L800BB6C4 -/* 0BC290 800BB690 02138021 */ addu $s0, $s0, $s3 -/* 0BC294 800BB694 AC500000 */ sw $s0, ($v0) -/* 0BC298 800BB698 92180002 */ lbu $t8, 2($s0) -/* 0BC29C 800BB69C 02008825 */ move $s1, $s0 -/* 0BC2A0 800BB6A0 26040004 */ addiu $a0, $s0, 4 -/* 0BC2A4 800BB6A4 17000007 */ bnez $t8, .L800BB6C4 -/* 0BC2A8 800BB6A8 02602825 */ move $a1, $s3 -/* 0BC2AC 800BB6AC 0C02ED21 */ jal func_800BB484 -/* 0BC2B0 800BB6B0 02A03025 */ move $a2, $s5 -/* 0BC2B4 800BB6B4 8E30000C */ lw $s0, 0xc($s1) -/* 0BC2B8 800BB6B8 A2360002 */ sb $s6, 2($s1) -/* 0BC2BC 800BB6BC 0213C821 */ addu $t9, $s0, $s3 -/* 0BC2C0 800BB6C0 AE39000C */ sw $t9, 0xc($s1) -.L800BB6C4: -/* 0BC2C4 800BB6C4 26520001 */ addiu $s2, $s2, 1 -/* 0BC2C8 800BB6C8 1657FFED */ bne $s2, $s7, .L800BB680 -/* 0BC2CC 800BB6CC 26940004 */ addiu $s4, $s4, 4 -.L800BB6D0: -/* 0BC2D0 800BB6D0 8FA80040 */ lw $t0, 0x40($sp) -/* 0BC2D4 800BB6D4 24160001 */ li $s6, 1 -/* 0BC2D8 800BB6D8 26720004 */ addiu $s2, $s3, 4 -/* 0BC2DC 800BB6DC 1100001D */ beqz $t0, .L800BB754 -/* 0BC2E0 800BB6E0 00084880 */ sll $t1, $t0, 2 -/* 0BC2E4 800BB6E4 0133A021 */ addu $s4, $t1, $s3 -/* 0BC2E8 800BB6E8 26940004 */ addiu $s4, $s4, 4 -/* 0BC2EC 800BB6EC 8E420000 */ lw $v0, ($s2) -.L800BB6F0: -/* 0BC2F0 800BB6F0 10400015 */ beqz $v0, .L800BB748 -/* 0BC2F4 800BB6F4 00535021 */ addu $t2, $v0, $s3 -/* 0BC2F8 800BB6F8 AE4A0000 */ sw $t2, ($s2) -/* 0BC2FC 800BB6FC 914B0000 */ lbu $t3, ($t2) -/* 0BC300 800BB700 01408825 */ move $s1, $t2 -/* 0BC304 800BB704 25440008 */ addiu $a0, $t2, 8 -/* 0BC308 800BB708 1560000F */ bnez $t3, .L800BB748 -/* 0BC30C 800BB70C 02602825 */ move $a1, $s3 -/* 0BC310 800BB710 0C02ED21 */ jal func_800BB484 -/* 0BC314 800BB714 02A03025 */ move $a2, $s5 -/* 0BC318 800BB718 26240010 */ addiu $a0, $s1, 0x10 -/* 0BC31C 800BB71C 02602825 */ move $a1, $s3 -/* 0BC320 800BB720 0C02ED21 */ jal func_800BB484 -/* 0BC324 800BB724 02A03025 */ move $a2, $s5 -/* 0BC328 800BB728 26240018 */ addiu $a0, $s1, 0x18 -/* 0BC32C 800BB72C 02602825 */ move $a1, $s3 -/* 0BC330 800BB730 0C02ED21 */ jal func_800BB484 -/* 0BC334 800BB734 02A03025 */ move $a2, $s5 -/* 0BC338 800BB738 8E300004 */ lw $s0, 4($s1) -/* 0BC33C 800BB73C A2360000 */ sb $s6, ($s1) -/* 0BC340 800BB740 02136021 */ addu $t4, $s0, $s3 -/* 0BC344 800BB744 AE2C0004 */ sw $t4, 4($s1) -.L800BB748: -/* 0BC348 800BB748 26520004 */ addiu $s2, $s2, 4 -/* 0BC34C 800BB74C 5692FFE8 */ bnel $s4, $s2, .L800BB6F0 -/* 0BC350 800BB750 8E420000 */ lw $v0, ($s2) -.L800BB754: -/* 0BC354 800BB754 8FBF0034 */ lw $ra, 0x34($sp) -/* 0BC358 800BB758 8FB00014 */ lw $s0, 0x14($sp) -/* 0BC35C 800BB75C 8FB10018 */ lw $s1, 0x18($sp) -/* 0BC360 800BB760 8FB2001C */ lw $s2, 0x1c($sp) -/* 0BC364 800BB764 8FB30020 */ lw $s3, 0x20($sp) -/* 0BC368 800BB768 8FB40024 */ lw $s4, 0x24($sp) -/* 0BC36C 800BB76C 8FB50028 */ lw $s5, 0x28($sp) -/* 0BC370 800BB770 8FB6002C */ lw $s6, 0x2c($sp) -/* 0BC374 800BB774 8FB70030 */ lw $s7, 0x30($sp) -/* 0BC378 800BB778 03E00008 */ jr $ra -/* 0BC37C 800BB77C 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/asm/non_matchings/audio/load/func_800BB780.s b/asm/non_matchings/audio/load/func_800BB780.s index d69198b96..ce3bd68e2 100644 --- a/asm/non_matchings/audio/load/func_800BB780.s +++ b/asm/non_matchings/audio/load/func_800BB780.s @@ -14,8 +14,8 @@ glabel func_800BB780 /* 0BC3B0 800BB7B0 00C1C024 */ and $t8, $a2, $at /* 0BC3B4 800BB7B4 00A03825 */ move $a3, $a1 /* 0BC3B8 800BB7B8 2706FFF0 */ addiu $a2, $t8, -0x10 -/* 0BC3BC 800BB7BC 3C04803B */ lui $a0, %hi(D_803AFE18) # $a0, 0x803b -/* 0BC3C0 800BB7C0 2484FE18 */ addiu $a0, %lo(D_803AFE18) # addiu $a0, $a0, -0x1e8 +/* 0BC3BC 800BB7BC 3C04803B */ lui $a0, %hi(gBankLoadedPool) # $a0, 0x803b +/* 0BC3C0 800BB7C0 2484FE18 */ addiu $a0, %lo(gBankLoadedPool) # addiu $a0, $a0, -0x1e8 /* 0BC3C4 800BB7C4 AFA60054 */ sw $a2, 0x54($sp) /* 0BC3C8 800BB7C8 24050001 */ li $a1, 1 /* 0BC3CC 800BB7CC AFB00010 */ sw $s0, 0x10($sp) @@ -31,8 +31,8 @@ glabel func_800BB780 /* 0BC3F0 800BB7F0 AFA5002C */ sw $a1, 0x2c($sp) /* 0BC3F4 800BB7F4 0C02EAA0 */ jal audio_dma_copy_immediate /* 0BC3F8 800BB7F8 24840010 */ addiu $a0, $a0, 0x10 -/* 0BC3FC 800BB7FC 3C0A803B */ lui $t2, %hi(D_803B7080) # $t2, 0x803b -/* 0BC400 800BB800 8D4A7080 */ lw $t2, %lo(D_803B7080)($t2) +/* 0BC3FC 800BB7FC 3C0A803B */ lui $t2, %hi(gCtlEntries) # $t2, 0x803b +/* 0BC400 800BB800 8D4A7080 */ lw $t2, %lo(gCtlEntries)($t2) /* 0BC404 800BB804 8FA8002C */ lw $t0, 0x2c($sp) /* 0BC408 800BB808 00105880 */ sll $t3, $s0, 2 /* 0BC40C 800BB80C 01705823 */ subu $t3, $t3, $s0 @@ -42,8 +42,8 @@ glabel func_800BB780 /* 0BC41C 800BB81C AD890004 */ sw $t1, 4($t4) /* 0BC420 800BB820 0C02ED61 */ jal func_800BB584 /* 0BC424 800BB824 02002025 */ move $a0, $s0 -/* 0BC428 800BB828 3C0D803B */ lui $t5, %hi(D_803B03C0) # $t5, 0x803b -/* 0BC42C 800BB82C 25AD03C0 */ addiu $t5, %lo(D_803B03C0) # addiu $t5, $t5, 0x3c0 +/* 0BC428 800BB828 3C0D803B */ lui $t5, %hi(gBankLoadStatus) # $t5, 0x803b +/* 0BC42C 800BB82C 25AD03C0 */ addiu $t5, %lo(gBankLoadStatus) # addiu $t5, $t5, 0x3c0 /* 0BC430 800BB830 020D1021 */ addu $v0, $s0, $t5 /* 0BC434 800BB834 904E0000 */ lbu $t6, ($v0) /* 0BC438 800BB838 24010005 */ li $at, 5 diff --git a/asm/non_matchings/audio/load/func_800BB864.s b/asm/non_matchings/audio/load/func_800BB864.s index 5403c8fb6..7d2f8a1ad 100644 --- a/asm/non_matchings/audio/load/func_800BB864.s +++ b/asm/non_matchings/audio/load/func_800BB864.s @@ -16,8 +16,8 @@ glabel func_800BB864 /* 0BC49C 800BB89C 00C1C024 */ and $t8, $a2, $at /* 0BC4A0 800BB8A0 00A03825 */ move $a3, $a1 /* 0BC4A4 800BB8A4 2706FFF0 */ addiu $a2, $t8, -0x10 -/* 0BC4A8 800BB8A8 3C04803B */ lui $a0, %hi(D_803AFE18) # $a0, 0x803b -/* 0BC4AC 800BB8AC 2484FE18 */ addiu $a0, %lo(D_803AFE18) # addiu $a0, $a0, -0x1e8 +/* 0BC4A8 800BB8A8 3C04803B */ lui $a0, %hi(gBankLoadedPool) # $a0, 0x803b +/* 0BC4AC 800BB8AC 2484FE18 */ addiu $a0, %lo(gBankLoadedPool) # addiu $a0, $a0, -0x1e8 /* 0BC4B0 800BB8B0 AFA60064 */ sw $a2, 0x64($sp) /* 0BC4B4 800BB8B4 24050001 */ li $a1, 1 /* 0BC4B8 800BB8B8 AFB10010 */ sw $s1, 0x10($sp) @@ -29,8 +29,8 @@ glabel func_800BB864 /* 0BC4D0 800BB8D0 1000002D */ b .L800BB988 /* 0BC4D4 800BB8D4 00001025 */ move $v0, $zero .L800BB8D8: -/* 0BC4D8 800BB8D8 3C04803B */ lui $a0, %hi(D_803B7080) # $a0, 0x803b -/* 0BC4DC 800BB8DC 24847080 */ addiu $a0, %lo(D_803B7080) # addiu $a0, $a0, 0x7080 +/* 0BC4D8 800BB8D8 3C04803B */ lui $a0, %hi(gCtlEntries) # $a0, 0x803b +/* 0BC4DC 800BB8DC 24847080 */ addiu $a0, %lo(gCtlEntries) # addiu $a0, $a0, 0x7080 /* 0BC4E0 800BB8E0 A2110006 */ sb $s1, 6($s0) /* 0BC4E4 800BB8E4 8C890000 */ lw $t1, ($a0) /* 0BC4E8 800BB8E8 00111880 */ sll $v1, $s1, 2 @@ -61,10 +61,10 @@ glabel func_800BB864 /* 0BC54C 800BB94C AFA90010 */ sw $t1, 0x10($sp) /* 0BC550 800BB950 26040140 */ addiu $a0, $s0, 0x140 /* 0BC554 800BB954 2605013C */ addiu $a1, $s0, 0x13c -/* 0BC558 800BB958 0C02EAD6 */ jal func_800BAB58 +/* 0BC558 800BB958 0C02EAD6 */ jal audio_dma_partial_copy_async /* 0BC55C 800BB95C 26060144 */ addiu $a2, $s0, 0x144 -/* 0BC560 800BB960 3C08803B */ lui $t0, %hi(D_803B03C0) # $t0, 0x803b -/* 0BC564 800BB964 250803C0 */ addiu $t0, %lo(D_803B03C0) # addiu $t0, $t0, 0x3c0 +/* 0BC560 800BB960 3C08803B */ lui $t0, %hi(gBankLoadStatus) # $t0, 0x803b +/* 0BC564 800BB964 250803C0 */ addiu $t0, %lo(gBankLoadStatus) # addiu $t0, $t0, 0x3c0 /* 0BC568 800BB968 02281021 */ addu $v0, $s1, $t0 /* 0BC56C 800BB96C 904A0000 */ lbu $t2, ($v0) /* 0BC570 800BB970 24010005 */ li $at, 5 diff --git a/asm/non_matchings/audio/load/func_800BB99C.s b/asm/non_matchings/audio/load/func_800BB99C.s index 9a05a32d0..b0f6c4101 100644 --- a/asm/non_matchings/audio/load/func_800BB99C.s +++ b/asm/non_matchings/audio/load/func_800BB99C.s @@ -13,9 +13,9 @@ glabel func_800BB99C /* 0BC5C8 800BB9C8 24C6000F */ addiu $a2, $a2, 0xf /* 0BC5CC 800BB9CC 00A03825 */ move $a3, $a1 /* 0BC5D0 800BB9D0 00C1C824 */ and $t9, $a2, $at -/* 0BC5D4 800BB9D4 3C04803B */ lui $a0, %hi(D_803AFC48) # $a0, 0x803b +/* 0BC5D4 800BB9D4 3C04803B */ lui $a0, %hi(gSeqLoadedPool) # $a0, 0x803b /* 0BC5D8 800BB9D8 03203025 */ move $a2, $t9 -/* 0BC5DC 800BB9DC 2484FC48 */ addiu $a0, %lo(D_803AFC48) # addiu $a0, $a0, -0x3b8 +/* 0BC5DC 800BB9DC 2484FC48 */ addiu $a0, %lo(gSeqLoadedPool) # addiu $a0, $a0, -0x3b8 /* 0BC5E0 800BB9E0 AFB9002C */ sw $t9, 0x2c($sp) /* 0BC5E4 800BB9E4 24050001 */ li $a1, 1 /* 0BC5E8 800BB9E8 AFAF0010 */ sw $t7, 0x10($sp) @@ -31,8 +31,8 @@ glabel func_800BB99C /* 0BC60C 800BBA0C 0C02EAA0 */ jal audio_dma_copy_immediate /* 0BC610 800BBA10 AFA50028 */ sw $a1, 0x28($sp) /* 0BC614 800BBA14 8FA90030 */ lw $t1, 0x30($sp) -/* 0BC618 800BBA18 3C0A803B */ lui $t2, %hi(D_803B0400) # $t2, 0x803b -/* 0BC61C 800BBA1C 254A0400 */ addiu $t2, %lo(D_803B0400) # addiu $t2, $t2, 0x400 +/* 0BC618 800BBA18 3C0A803B */ lui $t2, %hi(gSeqLoadStatus) # $t2, 0x803b +/* 0BC61C 800BBA1C 254A0400 */ addiu $t2, %lo(gSeqLoadStatus) # addiu $t2, $t2, 0x400 /* 0BC620 800BBA20 012A1021 */ addu $v0, $t1, $t2 /* 0BC624 800BBA24 904B0000 */ lbu $t3, ($v0) /* 0BC628 800BBA28 24010005 */ li $at, 5 diff --git a/asm/non_matchings/audio/load/func_800BBA50.s b/asm/non_matchings/audio/load/func_800BBA50.s index 7e2425f53..17d003904 100644 --- a/asm/non_matchings/audio/load/func_800BBA50.s +++ b/asm/non_matchings/audio/load/func_800BBA50.s @@ -17,9 +17,9 @@ glabel func_800BBA50 /* 0BC68C 800BBA8C 2610000F */ addiu $s0, $s0, 0xf /* 0BC690 800BBA90 00A03825 */ move $a3, $a1 /* 0BC694 800BBA94 02013024 */ and $a2, $s0, $at -/* 0BC698 800BBA98 3C04803B */ lui $a0, %hi(D_803AFC48) # $a0, 0x803b +/* 0BC698 800BBA98 3C04803B */ lui $a0, %hi(gSeqLoadedPool) # $a0, 0x803b /* 0BC69C 800BBA9C 00C08025 */ move $s0, $a2 -/* 0BC6A0 800BBAA0 2484FC48 */ addiu $a0, %lo(D_803AFC48) # addiu $a0, $a0, -0x3b8 +/* 0BC6A0 800BBAA0 2484FC48 */ addiu $a0, %lo(gSeqLoadedPool) # addiu $a0, $a0, -0x3b8 /* 0BC6A4 800BBAA4 24050001 */ li $a1, 1 /* 0BC6A8 800BBAA8 AFAF0010 */ sw $t7, 0x10($sp) /* 0BC6AC 800BBAAC 0C02E4EF */ jal func_800B93BC @@ -37,8 +37,8 @@ glabel func_800BBA50 /* 0BC6D8 800BBAD8 0C02EAA0 */ jal audio_dma_copy_immediate /* 0BC6DC 800BBADC 02003025 */ move $a2, $s0 /* 0BC6E0 800BBAE0 8FA90048 */ lw $t1, 0x48($sp) -/* 0BC6E4 800BBAE4 3C0A803B */ lui $t2, %hi(D_803B0400) # $t2, 0x803b -/* 0BC6E8 800BBAE8 254A0400 */ addiu $t2, %lo(D_803B0400) # addiu $t2, $t2, 0x400 +/* 0BC6E4 800BBAE4 3C0A803B */ lui $t2, %hi(gSeqLoadStatus) # $t2, 0x803b +/* 0BC6E8 800BBAE8 254A0400 */ addiu $t2, %lo(gSeqLoadStatus) # addiu $t2, $t2, 0x400 /* 0BC6EC 800BBAEC 012A1021 */ addu $v0, $t1, $t2 /* 0BC6F0 800BBAF0 904B0000 */ lbu $t3, ($v0) /* 0BC6F4 800BBAF4 24010005 */ li $at, 5 @@ -66,11 +66,11 @@ glabel func_800BBA50 /* 0BC748 800BBB48 AFB90010 */ sw $t9, 0x10($sp) /* 0BC74C 800BBB4C 26450040 */ addiu $a1, $s2, 0x40 /* 0BC750 800BBB50 2606FFC0 */ addiu $a2, $s0, -0x40 -/* 0BC754 800BBB54 0C02EABE */ jal func_800BAAF8 +/* 0BC754 800BBB54 0C02EABE */ jal audio_dma_copy_async /* 0BC758 800BBB58 24840040 */ addiu $a0, $a0, 0x40 /* 0BC75C 800BBB5C 8FA80048 */ lw $t0, 0x48($sp) -/* 0BC760 800BBB60 3C0F803B */ lui $t7, %hi(D_803B0400) # $t7, 0x803b -/* 0BC764 800BBB64 25EF0400 */ addiu $t7, %lo(D_803B0400) # addiu $t7, $t7, 0x400 +/* 0BC760 800BBB60 3C0F803B */ lui $t7, %hi(gSeqLoadStatus) # $t7, 0x803b +/* 0BC764 800BBB64 25EF0400 */ addiu $t7, %lo(gSeqLoadStatus) # addiu $t7, $t7, 0x400 /* 0BC768 800BBB68 010F1021 */ addu $v0, $t0, $t7 /* 0BC76C 800BBB6C 90490000 */ lbu $t1, ($v0) /* 0BC770 800BBB70 24010005 */ li $at, 5 diff --git a/asm/non_matchings/audio/load/func_800BBBA0.s b/asm/non_matchings/audio/load/func_800BBBA0.s deleted file mode 100644 index 78e653759..000000000 --- a/asm/non_matchings/audio/load/func_800BBBA0.s +++ /dev/null @@ -1,82 +0,0 @@ -glabel func_800BBBA0 -/* 0BC7A0 800BBBA0 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0BC7A4 800BBBA4 AFBE0038 */ sw $fp, 0x38($sp) -/* 0BC7A8 800BBBA8 AFBF003C */ sw $ra, 0x3c($sp) -/* 0BC7AC 800BBBAC AFB70034 */ sw $s7, 0x34($sp) -/* 0BC7B0 800BBBB0 AFB60030 */ sw $s6, 0x30($sp) -/* 0BC7B4 800BBBB4 AFB5002C */ sw $s5, 0x2c($sp) -/* 0BC7B8 800BBBB8 AFB40028 */ sw $s4, 0x28($sp) -/* 0BC7BC 800BBBBC AFB30024 */ sw $s3, 0x24($sp) -/* 0BC7C0 800BBBC0 AFB20020 */ sw $s2, 0x20($sp) -/* 0BC7C4 800BBBC4 AFB1001C */ sw $s1, 0x1c($sp) -/* 0BC7C8 800BBBC8 AFB00018 */ sw $s0, 0x18($sp) -/* 0BC7CC 800BBBCC 3C1E803B */ lui $fp, %hi(D_803B7078) # $fp, 0x803b -/* 0BC7D0 800BBBD0 ACC00000 */ sw $zero, ($a2) -/* 0BC7D4 800BBBD4 27DE7078 */ addiu $fp, %lo(D_803B7078) # addiu $fp, $fp, 0x7078 -/* 0BC7D8 800BBBD8 ACA00000 */ sw $zero, ($a1) -/* 0BC7DC 800BBBDC 8FC20000 */ lw $v0, ($fp) -/* 0BC7E0 800BBBE0 00047040 */ sll $t6, $a0, 1 -/* 0BC7E4 800BBBE4 00C09825 */ move $s3, $a2 -/* 0BC7E8 800BBBE8 004E7821 */ addu $t7, $v0, $t6 -/* 0BC7EC 800BBBEC 95F10000 */ lhu $s1, ($t7) -/* 0BC7F0 800BBBF0 00A0A025 */ move $s4, $a1 -/* 0BC7F4 800BBBF4 0000B825 */ move $s7, $zero -/* 0BC7F8 800BBBF8 0222C021 */ addu $t8, $s1, $v0 -/* 0BC7FC 800BBBFC 93120000 */ lbu $s2, ($t8) -/* 0BC800 800BBC00 26310001 */ addiu $s1, $s1, 1 -/* 0BC804 800BBC04 3239FFFF */ andi $t9, $s1, 0xffff -/* 0BC808 800BBC08 12400024 */ beqz $s2, .L800BBC9C -/* 0BC80C 800BBC0C 03208825 */ move $s1, $t9 -/* 0BC810 800BBC10 3C16803B */ lui $s6, %hi(D_803B03C0) # $s6, 0x803b -/* 0BC814 800BBC14 26D603C0 */ addiu $s6, %lo(D_803B03C0) # addiu $s6, $s6, 0x3c0 -/* 0BC818 800BBC18 24150001 */ li $s5, 1 -.L800BBC1C: -/* 0BC81C 800BBC1C 8FC80000 */ lw $t0, ($fp) -/* 0BC820 800BBC20 02A02025 */ move $a0, $s5 -/* 0BC824 800BBC24 24050002 */ li $a1, 2 -/* 0BC828 800BBC28 02284821 */ addu $t1, $s1, $t0 -/* 0BC82C 800BBC2C 91300000 */ lbu $s0, ($t1) -/* 0BC830 800BBC30 26310001 */ addiu $s1, $s1, 1 -/* 0BC834 800BBC34 322AFFFF */ andi $t2, $s1, 0xffff -/* 0BC838 800BBC38 02D05821 */ addu $t3, $s6, $s0 -/* 0BC83C 800BBC3C 916C0000 */ lbu $t4, ($t3) -/* 0BC840 800BBC40 01408825 */ move $s1, $t2 -/* 0BC844 800BBC44 00001825 */ move $v1, $zero -/* 0BC848 800BBC48 298D0002 */ slti $t5, $t4, 2 -/* 0BC84C 800BBC4C 39AD0001 */ xori $t5, $t5, 1 -/* 0BC850 800BBC50 16AD0005 */ bne $s5, $t5, .L800BBC68 -/* 0BC854 800BBC54 00000000 */ nop -/* 0BC858 800BBC58 0C02E6A4 */ jal func_800B9A90 -/* 0BC85C 800BBC5C 02003025 */ move $a2, $s0 -/* 0BC860 800BBC60 10000001 */ b .L800BBC68 -/* 0BC864 800BBC64 00401825 */ move $v1, $v0 -.L800BBC68: -/* 0BC868 800BBC68 14600006 */ bnez $v1, .L800BBC84 -/* 0BC86C 800BBC6C 2652FFFF */ addiu $s2, $s2, -1 -/* 0BC870 800BBC70 8E6E0000 */ lw $t6, ($s3) -/* 0BC874 800BBC74 321700FF */ andi $s7, $s0, 0xff -/* 0BC878 800BBC78 25CF0001 */ addiu $t7, $t6, 1 -/* 0BC87C 800BBC7C 10000004 */ b .L800BBC90 -/* 0BC880 800BBC80 AE6F0000 */ sw $t7, ($s3) -.L800BBC84: -/* 0BC884 800BBC84 8E980000 */ lw $t8, ($s4) -/* 0BC888 800BBC88 27190001 */ addiu $t9, $t8, 1 -/* 0BC88C 800BBC8C AE990000 */ sw $t9, ($s4) -.L800BBC90: -/* 0BC890 800BBC90 324800FF */ andi $t0, $s2, 0xff -/* 0BC894 800BBC94 1500FFE1 */ bnez $t0, .L800BBC1C -/* 0BC898 800BBC98 01009025 */ move $s2, $t0 -.L800BBC9C: -/* 0BC89C 800BBC9C 8FBF003C */ lw $ra, 0x3c($sp) -/* 0BC8A0 800BBCA0 02E01025 */ move $v0, $s7 -/* 0BC8A4 800BBCA4 8FB70034 */ lw $s7, 0x34($sp) -/* 0BC8A8 800BBCA8 8FB00018 */ lw $s0, 0x18($sp) -/* 0BC8AC 800BBCAC 8FB1001C */ lw $s1, 0x1c($sp) -/* 0BC8B0 800BBCB0 8FB20020 */ lw $s2, 0x20($sp) -/* 0BC8B4 800BBCB4 8FB30024 */ lw $s3, 0x24($sp) -/* 0BC8B8 800BBCB8 8FB40028 */ lw $s4, 0x28($sp) -/* 0BC8BC 800BBCBC 8FB5002C */ lw $s5, 0x2c($sp) -/* 0BC8C0 800BBCC0 8FB60030 */ lw $s6, 0x30($sp) -/* 0BC8C4 800BBCC4 8FBE0038 */ lw $fp, 0x38($sp) -/* 0BC8C8 800BBCC8 03E00008 */ jr $ra -/* 0BC8CC 800BBCCC 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/audio/load/func_800BBCD0.s b/asm/non_matchings/audio/load/func_800BBCD0.s index 28ea32931..564e4294a 100644 --- a/asm/non_matchings/audio/load/func_800BBCD0.s +++ b/asm/non_matchings/audio/load/func_800BBCD0.s @@ -1,8 +1,8 @@ glabel func_800BBCD0 /* 0BC8D0 800BBCD0 27BDFFC8 */ addiu $sp, $sp, -0x38 /* 0BC8D4 800BBCD4 AFB50028 */ sw $s5, 0x28($sp) -/* 0BC8D8 800BBCD8 3C15803B */ lui $s5, %hi(D_803B7078) # $s5, 0x803b -/* 0BC8DC 800BBCDC 26B57078 */ addiu $s5, %lo(D_803B7078) # addiu $s5, $s5, 0x7078 +/* 0BC8D8 800BBCD8 3C15803B */ lui $s5, %hi(gAlBankSets) # $s5, 0x803b +/* 0BC8DC 800BBCDC 26B57078 */ addiu $s5, %lo(gAlBankSets) # addiu $s5, $s5, 0x7078 /* 0BC8E0 800BBCE0 8EA20000 */ lw $v0, ($s5) /* 0BC8E4 800BBCE4 00047040 */ sll $t6, $a0, 1 /* 0BC8E8 800BBCE8 AFBF002C */ sw $ra, 0x2c($sp) @@ -14,8 +14,8 @@ glabel func_800BBCD0 /* 0BC900 800BBD00 AFA5003C */ sw $a1, 0x3c($sp) /* 0BC904 800BBD04 004E7821 */ addu $t7, $v0, $t6 /* 0BC908 800BBD08 95F10000 */ lhu $s1, ($t7) -/* 0BC90C 800BBD0C 3C14803B */ lui $s4, %hi(D_803B03C0) # $s4, 0x803b -/* 0BC910 800BBD10 269403C0 */ addiu $s4, %lo(D_803B03C0) # addiu $s4, $s4, 0x3c0 +/* 0BC90C 800BBD0C 3C14803B */ lui $s4, %hi(gBankLoadStatus) # $s4, 0x803b +/* 0BC910 800BBD10 269403C0 */ addiu $s4, %lo(gBankLoadStatus) # addiu $s4, $s4, 0x3c0 /* 0BC914 800BBD14 0222C021 */ addu $t8, $s1, $v0 /* 0BC918 800BBD18 93120000 */ lbu $s2, ($t8) /* 0BC91C 800BBD1C 26310001 */ addiu $s1, $s1, 1 @@ -39,7 +39,7 @@ glabel func_800BBCD0 /* 0BC960 800BBD60 39AD0001 */ xori $t5, $t5, 1 /* 0BC964 800BBD64 166D0005 */ bne $s3, $t5, .L800BBD7C /* 0BC968 800BBD68 00000000 */ nop -/* 0BC96C 800BBD6C 0C02E6A4 */ jal func_800B9A90 +/* 0BC96C 800BBD6C 0C02E6A4 */ jal get_bank_or_seq /* 0BC970 800BBD70 02003025 */ move $a2, $s0 /* 0BC974 800BBD74 10000001 */ b .L800BBD7C /* 0BC978 800BBD78 00401825 */ move $v1, $v0 diff --git a/asm/non_matchings/audio/load/func_800BBDDC.s b/asm/non_matchings/audio/load/func_800BBDDC.s index 6e7a24a11..32493ad1a 100644 --- a/asm/non_matchings/audio/load/func_800BBDDC.s +++ b/asm/non_matchings/audio/load/func_800BBDDC.s @@ -35,9 +35,9 @@ glabel func_800BBDDC .L800BBE5C: /* 0BCA5C 800BBE5C 306C0001 */ andi $t4, $v1, 1 /* 0BCA60 800BBE60 1180001A */ beqz $t4, .L800BBECC -/* 0BCA64 800BBE64 3C0D803B */ lui $t5, %hi(D_803B03C0) # 0x803b +/* 0BCA64 800BBE64 3C0D803B */ lui $t5, %hi(gBankLoadStatus) # 0x803b /* 0BCA68 800BBE68 01A66821 */ addu $t5, $t5, $a2 -/* 0BCA6C 800BBE6C 91AD03C0 */ lbu $t5, %lo(D_803B03C0)($t5) # 0x3c0($t5) +/* 0BCA6C 800BBE6C 91AD03C0 */ lbu $t5, %lo(gBankLoadStatus)($t5) # 0x3c0($t5) /* 0BCA70 800BBE70 24010001 */ li $at, 1 /* 0BCA74 800BBE74 00002025 */ move $a0, $zero /* 0BCA78 800BBE78 29AE0002 */ slti $t6, $t5, 2 @@ -45,7 +45,7 @@ glabel func_800BBDDC /* 0BCA80 800BBE80 15C10007 */ bne $t6, $at, .L800BBEA0 /* 0BCA84 800BBE84 00001825 */ move $v1, $zero /* 0BCA88 800BBE88 24050002 */ li $a1, 2 -/* 0BCA8C 800BBE8C 0C02E6A4 */ jal func_800B9A90 +/* 0BCA8C 800BBE8C 0C02E6A4 */ jal get_bank_or_seq /* 0BCA90 800BBE90 AFA60028 */ sw $a2, 0x28($sp) /* 0BCA94 800BBE94 8FA60028 */ lw $a2, 0x28($sp) /* 0BCA98 800BBE98 10000001 */ b .L800BBEA0 diff --git a/asm/non_matchings/audio/load/func_800BBF44.s b/asm/non_matchings/audio/load/func_800BBF44.s index ab278751d..cf6976308 100644 --- a/asm/non_matchings/audio/load/func_800BBF44.s +++ b/asm/non_matchings/audio/load/func_800BBF44.s @@ -23,11 +23,11 @@ glabel func_800BBF44 /* 0BCB98 800BBF98 8C510004 */ lw $s1, 4($v0) .L800BBF9C: /* 0BCB9C 800BBF9C 01284821 */ addu $t1, $t1, $t0 -/* 0BCBA0 800BBFA0 3C0A803B */ lui $t2, %hi(D_803B1510) # $t2, 0x803b -/* 0BCBA4 800BBFA4 254A1510 */ addiu $t2, %lo(D_803B1510) # addiu $t2, $t2, 0x1510 +/* 0BCBA0 800BBFA0 3C0A803B */ lui $t2, %hi(gSequencePlayers) # $t2, 0x803b +/* 0BCBA4 800BBFA4 254A1510 */ addiu $t2, %lo(gSequencePlayers) # addiu $t2, $t2, 0x1510 /* 0BCBA8 800BBFA8 000948C0 */ sll $t1, $t1, 3 /* 0BCBAC 800BBFAC 012A8021 */ addu $s0, $t1, $t2 -/* 0BCBB0 800BBFB0 0C02FBCB */ jal func_800BEF2C +/* 0BCBB0 800BBFB0 0C02FBCB */ jal sequence_player_disable /* 0BCBB4 800BBFB4 02002025 */ move $a0, $s0 /* 0BCBB8 800BBFB8 8FAB0048 */ lw $t3, 0x48($sp) /* 0BCBBC 800BBFBC 27A50028 */ addiu $a1, $sp, 0x28 @@ -36,7 +36,7 @@ glabel func_800BBF44 /* 0BCBC8 800BBFC8 02202025 */ move $a0, $s1 /* 0BCBCC 800BBFCC AFA0002C */ sw $zero, 0x2c($sp) /* 0BCBD0 800BBFD0 AFA00028 */ sw $zero, 0x28($sp) -/* 0BCBD4 800BBFD4 0C02EEE8 */ jal func_800BBBA0 +/* 0BCBD4 800BBFD4 0C02EEE8 */ jal get_missing_bank /* 0BCBD8 800BBFD8 02202025 */ move $a0, $s1 /* 0BCBDC 800BBFDC 8FAC002C */ lw $t4, 0x2c($sp) /* 0BCBE0 800BBFE0 24010001 */ li $at, 1 @@ -68,7 +68,7 @@ glabel func_800BBF44 .L800BC03C: /* 0BCC3C 800BC03C 00002025 */ move $a0, $zero /* 0BCC40 800BC040 24050002 */ li $a1, 2 -/* 0BCC44 800BC044 0C02E6A4 */ jal func_800B9A90 +/* 0BCC44 800BC044 0C02E6A4 */ jal get_bank_or_seq /* 0BCC48 800BC048 02203025 */ move $a2, $s1 /* 0BCC4C 800BC04C 14400013 */ bnez $v0, .L800BC09C /* 0BCC50 800BC050 00401825 */ move $v1, $v0 @@ -94,7 +94,7 @@ glabel func_800BBF44 /* 0BCC98 800BC098 8FBF001C */ lw $ra, 0x1c($sp) .L800BC09C: /* 0BCC9C 800BC09C 8FA40040 */ lw $a0, 0x40($sp) -/* 0BCCA0 800BC0A0 0C03046C */ jal func_800C11B0 +/* 0BCCA0 800BC0A0 0C03046C */ jal init_sequence_player /* 0BCCA4 800BC0A4 AFA3003C */ sw $v1, 0x3c($sp) /* 0BCCA8 800BC0A8 8FA3003C */ lw $v1, 0x3c($sp) /* 0BCCAC 800BC0AC 92080000 */ lbu $t0, ($s0) diff --git a/asm/non_matchings/audio/playback/func_800BC5D0.s b/asm/non_matchings/audio/playback/func_800BC5D0.s deleted file mode 100644 index fd7ca23a0..000000000 --- a/asm/non_matchings/audio/playback/func_800BC5D0.s +++ /dev/null @@ -1,171 +0,0 @@ -glabel func_800BC5D0 -/* 0BD1D0 800BC5D0 AFA60008 */ sw $a2, 8($sp) -/* 0BD1D4 800BC5D4 AFA7000C */ sw $a3, 0xc($sp) -/* 0BD1D8 800BC5D8 8C9900B0 */ lw $t9, 0xb0($a0) -/* 0BD1DC 800BC5DC 00C07825 */ move $t7, $a2 -/* 0BD1E0 800BC5E0 44856000 */ mtc1 $a1, $f12 -/* 0BD1E4 800BC5E4 31F8007F */ andi $t8, $t7, 0x7f -/* 0BD1E8 800BC5E8 00194980 */ sll $t1, $t9, 6 -/* 0BD1EC 800BC5EC 05210026 */ bgez $t1, .L800BC688 -/* 0BD1F0 800BC5F0 03003025 */ move $a2, $t8 -/* 0BD1F4 800BC5F4 3C0A803B */ lui $t2, %hi(D_803B70B6) # $t2, 0x803b -/* 0BD1F8 800BC5F8 814A70B6 */ lb $t2, %lo(D_803B70B6)($t2) -/* 0BD1FC 800BC5FC 24010001 */ li $at, 1 -/* 0BD200 800BC600 001828C3 */ sra $a1, $t8, 3 -/* 0BD204 800BC604 15410020 */ bne $t2, $at, .L800BC688 -/* 0BD208 800BC608 248200B0 */ addiu $v0, $a0, 0xb0 -/* 0BD20C 800BC60C 28A10010 */ slti $at, $a1, 0x10 -/* 0BD210 800BC610 14200002 */ bnez $at, .L800BC61C -/* 0BD214 800BC614 03001825 */ move $v1, $t8 -/* 0BD218 800BC618 2405000F */ li $a1, 15 -.L800BC61C: -/* 0BD21C 800BC61C 00053840 */ sll $a3, $a1, 1 -/* 0BD220 800BC620 3C0B800F */ lui $t3, %hi(gHeadsetPanQuantization) -/* 0BD224 800BC624 01675821 */ addu $t3, $t3, $a3 -/* 0BD228 800BC628 956B6270 */ lhu $t3, %lo(gHeadsetPanQuantization)($t3) -/* 0BD22C 800BC62C 904E0000 */ lbu $t6, ($v0) -/* 0BD230 800BC630 00076023 */ negu $t4, $a3 -/* 0BD234 800BC634 3C0D800F */ lui $t5, %hi(gHeadsetPanQuantization + 0x1e) -/* 0BD238 800BC638 01AC6821 */ addu $t5, $t5, $t4 -/* 0BD23C 800BC63C A04B0004 */ sb $t3, 4($v0) -/* 0BD240 800BC640 95AD628E */ lhu $t5, %lo(gHeadsetPanQuantization + 0x1e)($t5) -/* 0BD244 800BC644 31D8FFF7 */ andi $t8, $t6, 0xfff7 -/* 0BD248 800BC648 330900FB */ andi $t1, $t8, 0xfb -/* 0BD24C 800BC64C A0580000 */ sb $t8, ($v0) -/* 0BD250 800BC650 A0490000 */ sb $t1, ($v0) -/* 0BD254 800BC654 352A0001 */ ori $t2, $t1, 1 -/* 0BD258 800BC658 00065880 */ sll $t3, $a2, 2 -/* 0BD25C 800BC65C 3C01800F */ lui $at, %hi(gHeadsetPanVolume) -/* 0BD260 800BC660 A04A0000 */ sb $t2, ($v0) -/* 0BD264 800BC664 002B0821 */ addu $at, $at, $t3 -/* 0BD268 800BC668 A04D0003 */ sb $t5, 3($v0) -/* 0BD26C 800BC66C C4206310 */ lwc1 $f0, %lo(gHeadsetPanVolume)($at) -/* 0BD270 800BC670 00036080 */ sll $t4, $v1, 2 -/* 0BD274 800BC674 000C6823 */ negu $t5, $t4 -/* 0BD278 800BC678 3C01800F */ lui $at, %hi(gHeadsetPanVolume + 0x1fc) -/* 0BD27C 800BC67C 002D0821 */ addu $at, $at, $t5 -/* 0BD280 800BC680 1000003C */ b .L800BC774 -/* 0BD284 800BC684 C422650C */ lwc1 $f2, %lo(gHeadsetPanVolume + 0x1fc)($at) -.L800BC688: -/* 0BD288 800BC688 248200B0 */ addiu $v0, $a0, 0xb0 -/* 0BD28C 800BC68C 8C4E0000 */ lw $t6, ($v0) -/* 0BD290 800BC690 3C03803B */ lui $v1, %hi(D_803B70B6) # $v1, 0x803b -/* 0BD294 800BC694 806370B6 */ lb $v1, %lo(D_803B70B6)($v1) -/* 0BD298 800BC698 000EC180 */ sll $t8, $t6, 6 -/* 0BD29C 800BC69C 07010027 */ bgez $t8, .L800BC73C -/* 0BD2A0 800BC6A0 24010003 */ li $at, 3 -/* 0BD2A4 800BC6A4 14600025 */ bnez $v1, .L800BC73C -/* 0BD2A8 800BC6A8 00002025 */ move $a0, $zero -/* 0BD2AC 800BC6AC 90590000 */ lbu $t9, ($v0) -/* 0BD2B0 800BC6B0 00064880 */ sll $t1, $a2, 2 -/* 0BD2B4 800BC6B4 3C01800F */ lui $at, %hi(gStereoPanVolume) -/* 0BD2B8 800BC6B8 3328FFFE */ andi $t0, $t9, 0xfffe -/* 0BD2BC 800BC6BC A0400003 */ sb $zero, 3($v0) -/* 0BD2C0 800BC6C0 A0400004 */ sb $zero, 4($v0) -/* 0BD2C4 800BC6C4 A0480000 */ sb $t0, ($v0) -/* 0BD2C8 800BC6C8 00290821 */ addu $at, $at, $t1 -/* 0BD2CC 800BC6CC C4206510 */ lwc1 $f0, %lo(gStereoPanVolume)($at) -/* 0BD2D0 800BC6D0 00065080 */ sll $t2, $a2, 2 -/* 0BD2D4 800BC6D4 000A5823 */ negu $t3, $t2 -/* 0BD2D8 800BC6D8 3C01800F */ lui $at, %hi(gStereoPanVolume + 0x1fc) -/* 0BD2DC 800BC6DC 002B0821 */ addu $at, $at, $t3 -/* 0BD2E0 800BC6E0 C422670C */ lwc1 $f2, %lo(gStereoPanVolume + 0x1fc)($at) -/* 0BD2E4 800BC6E4 28C10020 */ slti $at, $a2, 0x20 -/* 0BD2E8 800BC6E8 00002825 */ move $a1, $zero -/* 0BD2EC 800BC6EC 10200003 */ beqz $at, .L800BC6FC -/* 0BD2F0 800BC6F0 00C01825 */ move $v1, $a2 -/* 0BD2F4 800BC6F4 10000005 */ b .L800BC70C -/* 0BD2F8 800BC6F8 24050001 */ li $a1, 1 -.L800BC6FC: -/* 0BD2FC 800BC6FC 28610061 */ slti $at, $v1, 0x61 -/* 0BD300 800BC700 54200003 */ bnel $at, $zero, .L800BC710 -/* 0BD304 800BC704 904F0000 */ lbu $t7, ($v0) -/* 0BD308 800BC708 24040001 */ li $a0, 1 -.L800BC70C: -/* 0BD30C 800BC70C 904F0000 */ lbu $t7, ($v0) -.L800BC710: -/* 0BD310 800BC710 000468C0 */ sll $t5, $a0, 3 -/* 0BD314 800BC714 31AE0008 */ andi $t6, $t5, 8 -/* 0BD318 800BC718 31F8FFF7 */ andi $t8, $t7, 0xfff7 -/* 0BD31C 800BC71C 01D85825 */ or $t3, $t6, $t8 -/* 0BD320 800BC720 00054880 */ sll $t1, $a1, 2 -/* 0BD324 800BC724 312A0004 */ andi $t2, $t1, 4 -/* 0BD328 800BC728 316C00FB */ andi $t4, $t3, 0xfb -/* 0BD32C 800BC72C A04B0000 */ sb $t3, ($v0) -/* 0BD330 800BC730 014C6825 */ or $t5, $t2, $t4 -/* 0BD334 800BC734 1000000F */ b .L800BC774 -/* 0BD338 800BC738 A04D0000 */ sb $t5, ($v0) -.L800BC73C: -/* 0BD33C 800BC73C 14610005 */ bne $v1, $at, .L800BC754 -/* 0BD340 800BC740 00067880 */ sll $t7, $a2, 2 -/* 0BD344 800BC744 3C01800F */ lui $at, %hi(D_800F2EB0) # $at, 0x800f -/* 0BD348 800BC748 C4222EB0 */ lwc1 $f2, %lo(D_800F2EB0)($at) -/* 0BD34C 800BC74C 10000009 */ b .L800BC774 -/* 0BD350 800BC750 46001006 */ mov.s $f0, $f2 -.L800BC754: -/* 0BD354 800BC754 3C01800F */ lui $at, %hi(gDefaultPanVolume) -/* 0BD358 800BC758 002F0821 */ addu $at, $at, $t7 -/* 0BD35C 800BC75C C4206710 */ lwc1 $f0, %lo(gDefaultPanVolume)($at) -/* 0BD360 800BC760 00067080 */ sll $t6, $a2, 2 -/* 0BD364 800BC764 000EC023 */ negu $t8, $t6 -/* 0BD368 800BC768 3C01800F */ lui $at, %hi(gDefaultPanVolume + 0x1fc) -/* 0BD36C 800BC76C 00380821 */ addu $at, $at, $t8 -/* 0BD370 800BC770 C422690C */ lwc1 $f2, %lo(gDefaultPanVolume + 0x1fc)($at) -.L800BC774: -/* 0BD374 800BC774 44807000 */ mtc1 $zero, $f14 -/* 0BD378 800BC778 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BD37C 800BC77C 460E603C */ c.lt.s $f12, $f14 -/* 0BD380 800BC780 00000000 */ nop -/* 0BD384 800BC784 45020003 */ bc1fl .L800BC794 -/* 0BD388 800BC788 44817000 */ mtc1 $at, $f14 -/* 0BD38C 800BC78C 46007306 */ mov.s $f12, $f14 -/* 0BD390 800BC790 44817000 */ mtc1 $at, $f14 -.L800BC794: -/* 0BD394 800BC794 00000000 */ nop -/* 0BD398 800BC798 460C703C */ c.lt.s $f14, $f12 -/* 0BD39C 800BC79C 00000000 */ nop -/* 0BD3A0 800BC7A0 45000002 */ bc1f .L800BC7AC -/* 0BD3A4 800BC7A4 00000000 */ nop -/* 0BD3A8 800BC7A8 46007306 */ mov.s $f12, $f14 -.L800BC7AC: -/* 0BD3AC 800BC7AC 46006102 */ mul.s $f4, $f12, $f0 -/* 0BD3B0 800BC7B0 3C01800F */ lui $at, %hi(D_800F2EB4) # $at, 0x800f -/* 0BD3B4 800BC7B4 C42E2EB4 */ lwc1 $f14, %lo(D_800F2EB4)($at) -/* 0BD3B8 800BC7B8 904C0005 */ lbu $t4, 5($v0) -/* 0BD3BC 800BC7BC 460E2182 */ mul.s $f6, $f4, $f14 -/* 0BD3C0 800BC7C0 00000000 */ nop -/* 0BD3C4 800BC7C4 46026282 */ mul.s $f10, $f12, $f2 -/* 0BD3C8 800BC7C8 4600320D */ trunc.w.s $f8, $f6 -/* 0BD3CC 800BC7CC 460E5402 */ mul.s $f16, $f10, $f14 -/* 0BD3D0 800BC7D0 44084000 */ mfc1 $t0, $f8 -/* 0BD3D4 800BC7D4 00000000 */ nop -/* 0BD3D8 800BC7D8 A4480006 */ sh $t0, 6($v0) -/* 0BD3DC 800BC7DC 4600848D */ trunc.w.s $f18, $f16 -/* 0BD3E0 800BC7E0 440B9000 */ mfc1 $t3, $f18 -/* 0BD3E4 800BC7E4 00000000 */ nop -/* 0BD3E8 800BC7E8 A44B0008 */ sh $t3, 8($v0) -/* 0BD3EC 800BC7EC 93AA000F */ lbu $t2, 0xf($sp) -/* 0BD3F0 800BC7F0 114C0006 */ beq $t2, $t4, .L800BC80C -/* 0BD3F4 800BC7F4 00000000 */ nop -/* 0BD3F8 800BC7F8 904F0000 */ lbu $t7, ($v0) -/* 0BD3FC 800BC7FC A04A0005 */ sb $t2, 5($v0) -/* 0BD400 800BC800 35EE0010 */ ori $t6, $t7, 0x10 -/* 0BD404 800BC804 03E00008 */ jr $ra -/* 0BD408 800BC808 A04E0000 */ sb $t6, ($v0) - -.L800BC80C: -/* 0BD40C 800BC80C 8C580000 */ lw $t8, ($v0) -/* 0BD410 800BC810 00184040 */ sll $t0, $t8, 1 -/* 0BD414 800BC814 05030006 */ bgezl $t0, .L800BC830 -/* 0BD418 800BC818 904A0000 */ lbu $t2, ($v0) -/* 0BD41C 800BC81C 904B0000 */ lbu $t3, ($v0) -/* 0BD420 800BC820 356C0010 */ ori $t4, $t3, 0x10 -/* 0BD424 800BC824 03E00008 */ jr $ra -/* 0BD428 800BC828 A04C0000 */ sb $t4, ($v0) - -/* 0BD42C 800BC82C 904A0000 */ lbu $t2, ($v0) -.L800BC830: -/* 0BD430 800BC830 314DFFEF */ andi $t5, $t2, 0xffef -/* 0BD434 800BC834 A04D0000 */ sb $t5, ($v0) -/* 0BD438 800BC838 03E00008 */ jr $ra -/* 0BD43C 800BC83C 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BC840.s b/asm/non_matchings/audio/playback/func_800BC840.s deleted file mode 100644 index 00de2c270..000000000 --- a/asm/non_matchings/audio/playback/func_800BC840.s +++ /dev/null @@ -1,57 +0,0 @@ -glabel func_800BC840 -/* 0BD440 800BC840 44856000 */ mtc1 $a1, $f12 -/* 0BD444 800BC844 44800000 */ mtc1 $zero, $f0 -/* 0BD448 800BC848 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 0BD44C 800BC84C 44812000 */ mtc1 $at, $f4 -/* 0BD450 800BC850 4600603C */ c.lt.s $f12, $f0 -/* 0BD454 800BC854 3C01800F */ lui $at, %hi(D_800F2EB8) # $at, 0x800f -/* 0BD458 800BC858 248200B0 */ addiu $v0, $a0, 0xb0 -/* 0BD45C 800BC85C 45020003 */ bc1fl .L800BC86C -/* 0BD460 800BC860 4604603C */ c.lt.s $f12, $f4 -/* 0BD464 800BC864 46000306 */ mov.s $f12, $f0 -/* 0BD468 800BC868 4604603C */ c.lt.s $f12, $f4 -.L800BC86C: -/* 0BD46C 800BC86C 00000000 */ nop -/* 0BD470 800BC870 4502000E */ bc1fl .L800BC8AC -/* 0BD474 800BC874 90590001 */ lbu $t9, 1($v0) -/* 0BD478 800BC878 C4222EB8 */ lwc1 $f2, %lo(D_800F2EB8)($at) -/* 0BD47C 800BC87C 248200B0 */ addiu $v0, $a0, 0xb0 -/* 0BD480 800BC880 904E0001 */ lbu $t6, 1($v0) -/* 0BD484 800BC884 460C103C */ c.lt.s $f2, $f12 -/* 0BD488 800BC888 31CFFFFE */ andi $t7, $t6, 0xfffe -/* 0BD48C 800BC88C A04F0001 */ sb $t7, 1($v0) -/* 0BD490 800BC890 45000003 */ bc1f .L800BC8A0 -/* 0BD494 800BC894 00000000 */ nop -/* 0BD498 800BC898 10000014 */ b .L800BC8EC -/* 0BD49C 800BC89C 46001006 */ mov.s $f0, $f2 -.L800BC8A0: -/* 0BD4A0 800BC8A0 10000012 */ b .L800BC8EC -/* 0BD4A4 800BC8A4 46006006 */ mov.s $f0, $f12 -/* 0BD4A8 800BC8A8 90590001 */ lbu $t9, 1($v0) -.L800BC8AC: -/* 0BD4AC 800BC8AC 3C01800F */ lui $at, %hi(D_800F2EBC) # $at, 0x800f -/* 0BD4B0 800BC8B0 37280001 */ ori $t0, $t9, 1 -/* 0BD4B4 800BC8B4 A0480001 */ sb $t0, 1($v0) -/* 0BD4B8 800BC8B8 C4262EBC */ lwc1 $f6, %lo(D_800F2EBC)($at) -/* 0BD4BC 800BC8BC 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 0BD4C0 800BC8C0 460C303C */ c.lt.s $f6, $f12 -/* 0BD4C4 800BC8C4 00000000 */ nop -/* 0BD4C8 800BC8C8 45020005 */ bc1fl .L800BC8E0 -/* 0BD4CC 800BC8CC 44814000 */ mtc1 $at, $f8 -/* 0BD4D0 800BC8D0 3C01800F */ lui $at, %hi(D_800F2EC0) -/* 0BD4D4 800BC8D4 10000005 */ b .L800BC8EC -/* 0BD4D8 800BC8D8 C4202EC0 */ lwc1 $f0, %lo(D_800F2EC0)($at) -/* 0BD4DC 800BC8DC 44814000 */ mtc1 $at, $f8 -.L800BC8E0: -/* 0BD4E0 800BC8E0 00000000 */ nop -/* 0BD4E4 800BC8E4 46086002 */ mul.s $f0, $f12, $f8 -/* 0BD4E8 800BC8E8 00000000 */ nop -.L800BC8EC: -/* 0BD4EC 800BC8EC 3C014700 */ li $at, 0x47000000 # 32768.000000 -/* 0BD4F0 800BC8F0 44815000 */ mtc1 $at, $f10 -/* 0BD4F4 800BC8F4 00000000 */ nop -/* 0BD4F8 800BC8F8 460A0402 */ mul.s $f16, $f0, $f10 -/* 0BD4FC 800BC8FC 4600848D */ trunc.w.s $f18, $f16 -/* 0BD500 800BC900 440A9000 */ mfc1 $t2, $f18 -/* 0BD504 800BC904 03E00008 */ jr $ra -/* 0BD508 800BC908 A48A00BA */ sh $t2, 0xba($a0) diff --git a/asm/non_matchings/audio/playback/func_800BC90C.s b/asm/non_matchings/audio/playback/func_800BC90C.s deleted file mode 100644 index f419ab9d0..000000000 --- a/asm/non_matchings/audio/playback/func_800BC90C.s +++ /dev/null @@ -1,20 +0,0 @@ -glabel func_800BC90C -/* 0BD50C 800BC90C 908E0001 */ lbu $t6, 1($a0) -/* 0BD510 800BC910 00AE082A */ slt $at, $a1, $t6 -/* 0BD514 800BC914 50200004 */ beql $at, $zero, .L800BC928 -/* 0BD518 800BC918 908F0002 */ lbu $t7, 2($a0) -/* 0BD51C 800BC91C 03E00008 */ jr $ra -/* 0BD520 800BC920 24820008 */ addiu $v0, $a0, 8 - -/* 0BD524 800BC924 908F0002 */ lbu $t7, 2($a0) -.L800BC928: -/* 0BD528 800BC928 24830018 */ addiu $v1, $a0, 0x18 -/* 0BD52C 800BC92C 01E5082A */ slt $at, $t7, $a1 -/* 0BD530 800BC930 14200003 */ bnez $at, .L800BC940 -/* 0BD534 800BC934 00000000 */ nop -/* 0BD538 800BC938 03E00008 */ jr $ra -/* 0BD53C 800BC93C 24820010 */ addiu $v0, $a0, 0x10 - -.L800BC940: -/* 0BD540 800BC940 03E00008 */ jr $ra -/* 0BD544 800BC944 00601025 */ move $v0, $v1 diff --git a/asm/non_matchings/audio/playback/func_800BC948.s b/asm/non_matchings/audio/playback/func_800BC948.s deleted file mode 100644 index 68f978541..000000000 --- a/asm/non_matchings/audio/playback/func_800BC948.s +++ /dev/null @@ -1,51 +0,0 @@ -glabel func_800BC948 -/* 0BD548 800BC948 3C0E803B */ lui $t6, %hi(D_803B03C0) # 0x803b -/* 0BD54C 800BC94C 01C47021 */ addu $t6, $t6, $a0 -/* 0BD550 800BC950 91CE03C0 */ lbu $t6, %lo(D_803B03C0)($t6) # 0x3c0($t6) -/* 0BD554 800BC954 3C011000 */ lui $at, 0x1000 -/* 0BD558 800BC958 3C19803B */ lui $t9, %hi(D_803B7080) # 0x803b -/* 0BD55C 800BC95C 29CF0002 */ slti $t7, $t6, 2 -/* 0BD560 800BC960 11E00006 */ beqz $t7, .L800BC97C -/* 0BD564 800BC964 00044080 */ sll $t0, $a0, 2 -/* 0BD568 800BC968 0081C021 */ addu $t8, $a0, $at -/* 0BD56C 800BC96C 3C01803B */ lui $at, %hi(D_803B7198) # $at, 0x803b -/* 0BD570 800BC970 AC387198 */ sw $t8, %lo(D_803B7198)($at) -/* 0BD574 800BC974 03E00008 */ jr $ra -/* 0BD578 800BC978 00001025 */ move $v0, $zero - -.L800BC97C: -/* 0BD57C 800BC97C 8F397080 */ lw $t9, %lo(D_803B7080)($t9) # 0x7080($t9) -/* 0BD580 800BC980 01044023 */ subu $t0, $t0, $a0 -/* 0BD584 800BC984 00084080 */ sll $t0, $t0, 2 -/* 0BD588 800BC988 03281021 */ addu $v0, $t9, $t0 -/* 0BD58C 800BC98C 90490001 */ lbu $t1, 1($v0) -/* 0BD590 800BC990 00045200 */ sll $t2, $a0, 8 -/* 0BD594 800BC994 01455821 */ addu $t3, $t2, $a1 -/* 0BD598 800BC998 00A9082A */ slt $at, $a1, $t1 -/* 0BD59C 800BC99C 14200006 */ bnez $at, .L800BC9B8 -/* 0BD5A0 800BC9A0 3C010300 */ lui $at, 0x300 -/* 0BD5A4 800BC9A4 01616021 */ addu $t4, $t3, $at -/* 0BD5A8 800BC9A8 3C01803B */ lui $at, %hi(D_803B7198) # $at, 0x803b -/* 0BD5AC 800BC9AC AC2C7198 */ sw $t4, %lo(D_803B7198)($at) -/* 0BD5B0 800BC9B0 03E00008 */ jr $ra -/* 0BD5B4 800BC9B4 00001025 */ move $v0, $zero - -.L800BC9B8: -/* 0BD5B8 800BC9B8 8C4D0004 */ lw $t5, 4($v0) -/* 0BD5BC 800BC9BC 00057080 */ sll $t6, $a1, 2 -/* 0BD5C0 800BC9C0 0004C200 */ sll $t8, $a0, 8 -/* 0BD5C4 800BC9C4 01AE7821 */ addu $t7, $t5, $t6 -/* 0BD5C8 800BC9C8 8DE30000 */ lw $v1, ($t7) -/* 0BD5CC 800BC9CC 0305C821 */ addu $t9, $t8, $a1 -/* 0BD5D0 800BC9D0 3C010100 */ lui $at, 0x100 -/* 0BD5D4 800BC9D4 14600006 */ bnez $v1, .L800BC9F0 -/* 0BD5D8 800BC9D8 00601025 */ move $v0, $v1 -/* 0BD5DC 800BC9DC 03214021 */ addu $t0, $t9, $at -/* 0BD5E0 800BC9E0 3C01803B */ lui $at, %hi(D_803B7198) # $at, 0x803b -/* 0BD5E4 800BC9E4 AC287198 */ sw $t0, %lo(D_803B7198)($at) -/* 0BD5E8 800BC9E8 03E00008 */ jr $ra -/* 0BD5EC 800BC9EC 00601025 */ move $v0, $v1 - -.L800BC9F0: -/* 0BD5F0 800BC9F0 03E00008 */ jr $ra -/* 0BD5F4 800BC9F4 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BC9F8.s b/asm/non_matchings/audio/playback/func_800BC9F8.s deleted file mode 100644 index 0bbf68860..000000000 --- a/asm/non_matchings/audio/playback/func_800BC9F8.s +++ /dev/null @@ -1,55 +0,0 @@ -glabel func_800BC9F8 -/* 0BD5F8 800BC9F8 3C0E803B */ lui $t6, %hi(D_803B03C0) # 0x803b -/* 0BD5FC 800BC9FC 01C47021 */ addu $t6, $t6, $a0 -/* 0BD600 800BCA00 91CE03C0 */ lbu $t6, %lo(D_803B03C0)($t6) # 0x3c0($t6) -/* 0BD604 800BCA04 3C011000 */ lui $at, 0x1000 -/* 0BD608 800BCA08 3C19803B */ lui $t9, %hi(D_803B7080) # 0x803b -/* 0BD60C 800BCA0C 29CF0002 */ slti $t7, $t6, 2 -/* 0BD610 800BCA10 11E00006 */ beqz $t7, .L800BCA2C -/* 0BD614 800BCA14 00044080 */ sll $t0, $a0, 2 -/* 0BD618 800BCA18 0081C021 */ addu $t8, $a0, $at -/* 0BD61C 800BCA1C 3C01803B */ lui $at, %hi(D_803B7198) # $at, 0x803b -/* 0BD620 800BCA20 AC387198 */ sw $t8, %lo(D_803B7198)($at) -/* 0BD624 800BCA24 03E00008 */ jr $ra -/* 0BD628 800BCA28 00001025 */ move $v0, $zero - -.L800BCA2C: -/* 0BD62C 800BCA2C 8F397080 */ lw $t9, %lo(D_803B7080)($t9) # 0x7080($t9) -/* 0BD630 800BCA30 01044023 */ subu $t0, $t0, $a0 -/* 0BD634 800BCA34 00084080 */ sll $t0, $t0, 2 -/* 0BD638 800BCA38 03281021 */ addu $v0, $t9, $t0 -/* 0BD63C 800BCA3C 90490002 */ lbu $t1, 2($v0) -/* 0BD640 800BCA40 00045200 */ sll $t2, $a0, 8 -/* 0BD644 800BCA44 01455821 */ addu $t3, $t2, $a1 -/* 0BD648 800BCA48 00A9082A */ slt $at, $a1, $t1 -/* 0BD64C 800BCA4C 14200006 */ bnez $at, .L800BCA68 -/* 0BD650 800BCA50 3C010400 */ lui $at, 0x400 -/* 0BD654 800BCA54 01616021 */ addu $t4, $t3, $at -/* 0BD658 800BCA58 3C01803B */ lui $at, %hi(D_803B7198) # $at, 0x803b -/* 0BD65C 800BCA5C AC2C7198 */ sw $t4, %lo(D_803B7198)($at) -/* 0BD660 800BCA60 03E00008 */ jr $ra -/* 0BD664 800BCA64 00001025 */ move $v0, $zero - -.L800BCA68: -/* 0BD668 800BCA68 8C430008 */ lw $v1, 8($v0) -/* 0BD66C 800BCA6C 3C018000 */ lui $at, 0x8000 -/* 0BD670 800BCA70 00056880 */ sll $t5, $a1, 2 -/* 0BD674 800BCA74 0061082B */ sltu $at, $v1, $at -/* 0BD678 800BCA78 10200003 */ beqz $at, .L800BCA88 -/* 0BD67C 800BCA7C 006D7021 */ addu $t6, $v1, $t5 -/* 0BD680 800BCA80 03E00008 */ jr $ra -/* 0BD684 800BCA84 00001025 */ move $v0, $zero - -.L800BCA88: -/* 0BD688 800BCA88 8DC60000 */ lw $a2, ($t6) -/* 0BD68C 800BCA8C 00047A00 */ sll $t7, $a0, 8 -/* 0BD690 800BCA90 01E5C021 */ addu $t8, $t7, $a1 -/* 0BD694 800BCA94 14C00005 */ bnez $a2, .L800BCAAC -/* 0BD698 800BCA98 00C01025 */ move $v0, $a2 -/* 0BD69C 800BCA9C 3C010500 */ lui $at, 0x500 -/* 0BD6A0 800BCAA0 0301C821 */ addu $t9, $t8, $at -/* 0BD6A4 800BCAA4 3C01803B */ lui $at, %hi(D_803B7198) # $at, 0x803b -/* 0BD6A8 800BCAA8 AC397198 */ sw $t9, %lo(D_803B7198)($at) -.L800BCAAC: -/* 0BD6AC 800BCAAC 03E00008 */ jr $ra -/* 0BD6B0 800BCAB0 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BCAB4.s b/asm/non_matchings/audio/playback/func_800BCAB4.s deleted file mode 100644 index 697fd27ca..000000000 --- a/asm/non_matchings/audio/playback/func_800BCAB4.s +++ /dev/null @@ -1,40 +0,0 @@ -glabel func_800BCAB4 -/* 0BD6B4 800BCAB4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BD6B8 800BCAB8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BD6BC 800BCABC 8C820044 */ lw $v0, 0x44($a0) -/* 0BD6C0 800BCAC0 00803825 */ move $a3, $a0 -/* 0BD6C4 800BCAC4 24E60034 */ addiu $a2, $a3, 0x34 -/* 0BD6C8 800BCAC8 904E0018 */ lbu $t6, 0x18($v0) -/* 0BD6CC 800BCACC 55C0000A */ bnel $t6, $zero, .L800BCAF8 -/* 0BD6D0 800BCAD0 8C45001C */ lw $a1, 0x1c($v0) -/* 0BD6D4 800BCAD4 8C4F004C */ lw $t7, 0x4c($v0) -/* 0BD6D8 800BCAD8 24840058 */ addiu $a0, $a0, 0x58 -/* 0BD6DC 800BCADC 24E60034 */ addiu $a2, $a3, 0x34 -/* 0BD6E0 800BCAE0 8DE50080 */ lw $a1, 0x80($t7) -/* 0BD6E4 800BCAE4 0C02F96F */ jal func_800BE5BC -/* 0BD6E8 800BCAE8 AFA70018 */ sw $a3, 0x18($sp) -/* 0BD6EC 800BCAEC 10000006 */ b .L800BCB08 -/* 0BD6F0 800BCAF0 8FA70018 */ lw $a3, 0x18($sp) -/* 0BD6F4 800BCAF4 8C45001C */ lw $a1, 0x1c($v0) -.L800BCAF8: -/* 0BD6F8 800BCAF8 AFA70018 */ sw $a3, 0x18($sp) -/* 0BD6FC 800BCAFC 0C02F96F */ jal func_800BE5BC -/* 0BD700 800BCB00 24E40058 */ addiu $a0, $a3, 0x58 -/* 0BD704 800BCB04 8FA70018 */ lw $a3, 0x18($sp) -.L800BCB08: -/* 0BD708 800BCB08 24180001 */ li $t8, 1 -/* 0BD70C 800BCB0C 3C19800F */ lui $t9, %hi(gDefaultNoteSub) # $t9, 0x800f -/* 0BD710 800BCB10 A0F80059 */ sb $t8, 0x59($a3) -/* 0BD714 800BCB14 27396260 */ addiu $t9, %lo(gDefaultNoteSub) # addiu $t9, $t9, 0x6260 -/* 0BD718 800BCB18 8F210000 */ lw $at, ($t9) -/* 0BD71C 800BCB1C ACE100B0 */ sw $at, 0xb0($a3) -/* 0BD720 800BCB20 8F290004 */ lw $t1, 4($t9) -/* 0BD724 800BCB24 ACE900B4 */ sw $t1, 0xb4($a3) -/* 0BD728 800BCB28 8F210008 */ lw $at, 8($t9) -/* 0BD72C 800BCB2C ACE100B8 */ sw $at, 0xb8($a3) -/* 0BD730 800BCB30 8F29000C */ lw $t1, 0xc($t9) -/* 0BD734 800BCB34 ACE900BC */ sw $t1, 0xbc($a3) -/* 0BD738 800BCB38 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BD73C 800BCB3C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BD740 800BCB40 03E00008 */ jr $ra -/* 0BD744 800BCB44 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BCB48.s b/asm/non_matchings/audio/playback/func_800BCB48.s deleted file mode 100644 index b4dcfffe0..000000000 --- a/asm/non_matchings/audio/playback/func_800BCB48.s +++ /dev/null @@ -1,34 +0,0 @@ -glabel func_800BCB48 -/* 0BD748 800BCB48 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BD74C 800BCB4C AFBF0014 */ sw $ra, 0x14($sp) -/* 0BD750 800BCB50 8C8E00B0 */ lw $t6, 0xb0($a0) -/* 0BD754 800BCB54 24010001 */ li $at, 1 -/* 0BD758 800BCB58 24050000 */ li $a1, 0 -/* 0BD75C 800BCB5C 000E7840 */ sll $t7, $t6, 1 -/* 0BD760 800BCB60 000FC7C2 */ srl $t8, $t7, 0x1f -/* 0BD764 800BCB64 17010005 */ bne $t8, $at, .L800BCB7C -/* 0BD768 800BCB68 24060040 */ li $a2, 64 -/* 0BD76C 800BCB6C 909900B0 */ lbu $t9, 0xb0($a0) -/* 0BD770 800BCB70 3328FFBF */ andi $t0, $t9, 0xffbf -/* 0BD774 800BCB74 10000005 */ b .L800BCB8C -/* 0BD778 800BCB78 A08800B0 */ sb $t0, 0xb0($a0) -.L800BCB7C: -/* 0BD77C 800BCB7C 00003825 */ move $a3, $zero -/* 0BD780 800BCB80 0C02F174 */ jal func_800BC5D0 -/* 0BD784 800BCB84 AFA40018 */ sw $a0, 0x18($sp) -/* 0BD788 800BCB88 8FA40018 */ lw $a0, 0x18($sp) -.L800BCB8C: -/* 0BD78C 800BCB8C 908900B0 */ lbu $t1, 0xb0($a0) -/* 0BD790 800BCB90 2402FFFF */ li $v0, -1 -/* 0BD794 800BCB94 A0800030 */ sb $zero, 0x30($a0) -/* 0BD798 800BCB98 312AFF7F */ andi $t2, $t1, 0xff7f -/* 0BD79C 800BCB9C A08A00B0 */ sb $t2, 0xb0($a0) -/* 0BD7A0 800BCBA0 908B00B0 */ lbu $t3, 0xb0($a0) -/* 0BD7A4 800BCBA4 AC820044 */ sw $v0, 0x44($a0) -/* 0BD7A8 800BCBA8 AC820040 */ sw $v0, 0x40($a0) -/* 0BD7AC 800BCBAC 316CFFDF */ andi $t4, $t3, 0xffdf -/* 0BD7B0 800BCBB0 A08C00B0 */ sb $t4, 0xb0($a0) -/* 0BD7B4 800BCBB4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BD7B8 800BCBB8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BD7BC 800BCBBC 03E00008 */ jr $ra -/* 0BD7C0 800BCBC0 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BCBC4.s b/asm/non_matchings/audio/playback/func_800BCBC4.s deleted file mode 100644 index 9cf3fa31b..000000000 --- a/asm/non_matchings/audio/playback/func_800BCBC4.s +++ /dev/null @@ -1,244 +0,0 @@ -glabel func_800BCBC4 -/* 0BD7C4 800BCBC4 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 0BD7C8 800BCBC8 3C03803B */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x803b -/* 0BD7CC 800BCBCC 8C6370B0 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1) -/* 0BD7D0 800BCBD0 AFBF0044 */ sw $ra, 0x44($sp) -/* 0BD7D4 800BCBD4 AFB70040 */ sw $s7, 0x40($sp) -/* 0BD7D8 800BCBD8 AFB6003C */ sw $s6, 0x3c($sp) -/* 0BD7DC 800BCBDC AFB50038 */ sw $s5, 0x38($sp) -/* 0BD7E0 800BCBE0 AFB40034 */ sw $s4, 0x34($sp) -/* 0BD7E4 800BCBE4 AFB30030 */ sw $s3, 0x30($sp) -/* 0BD7E8 800BCBE8 AFB2002C */ sw $s2, 0x2c($sp) -/* 0BD7EC 800BCBEC AFB10028 */ sw $s1, 0x28($sp) -/* 0BD7F0 800BCBF0 AFB00024 */ sw $s0, 0x24($sp) -/* 0BD7F4 800BCBF4 F7B60018 */ sdc1 $f22, 0x18($sp) -/* 0BD7F8 800BCBF8 186000C5 */ blez $v1, .L800BCF10 -/* 0BD7FC 800BCBFC F7B40010 */ sdc1 $f20, 0x10($sp) -/* 0BD800 800BCC00 0000A825 */ move $s5, $zero -/* 0BD804 800BCC04 24170001 */ li $s7, 1 -/* 0BD808 800BCC08 24160001 */ li $s6, 1 -/* 0BD80C 800BCC0C 2414FFFF */ li $s4, -1 -.L800BCC10: -/* 0BD810 800BCC10 3C0E803B */ lui $t6, %hi(D_803B1508) # $t6, 0x803b -/* 0BD814 800BCC14 8DCE1508 */ lw $t6, %lo(D_803B1508)($t6) -/* 0BD818 800BCC18 02AE8021 */ addu $s0, $s5, $t6 -/* 0BD81C 800BCC1C 8E0F0044 */ lw $t7, 0x44($s0) -/* 0BD820 800BCC20 26110030 */ addiu $s1, $s0, 0x30 -/* 0BD824 800BCC24 528F0036 */ beql $s4, $t7, .L800BCD00 -/* 0BD828 800BCC28 92220000 */ lbu $v0, ($s1) -/* 0BD82C 800BCC2C 26110030 */ addiu $s1, $s0, 0x30 -/* 0BD830 800BCC30 8E250014 */ lw $a1, 0x14($s1) -/* 0BD834 800BCC34 3C017FFF */ lui $at, (0x7FFFFFFF >> 16) # lui $at, 0x7fff -/* 0BD838 800BCC38 3421FFFF */ ori $at, (0x7FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 0BD83C 800BCC3C 00A1082B */ sltu $at, $a1, $at -/* 0BD840 800BCC40 10200004 */ beqz $at, .L800BCC54 -/* 0BD844 800BCC44 00031080 */ sll $v0, $v1, 2 -/* 0BD848 800BCC48 00431023 */ subu $v0, $v0, $v1 -/* 0BD84C 800BCC4C 100000AC */ b .L800BCF00 -/* 0BD850 800BCC50 00021180 */ sll $v0, $v0, 6 -.L800BCC54: -/* 0BD854 800BCC54 8CB80000 */ lw $t8, ($a1) -/* 0BD858 800BCC58 0018CFC2 */ srl $t9, $t8, 0x1f -/* 0BD85C 800BCC5C 57200006 */ bnel $t9, $zero, .L800BCC78 -/* 0BD860 800BCC60 8CA4004C */ lw $a0, 0x4c($a1) -/* 0BD864 800BCC64 92280000 */ lbu $t0, ($s1) -/* 0BD868 800BCC68 29010002 */ slti $at, $t0, 2 -/* 0BD86C 800BCC6C 10200018 */ beqz $at, .L800BCCD0 -/* 0BD870 800BCC70 00000000 */ nop -/* 0BD874 800BCC74 8CA4004C */ lw $a0, 0x4c($a1) -.L800BCC78: -/* 0BD878 800BCC78 8C820044 */ lw $v0, 0x44($a0) -/* 0BD87C 800BCC7C 5440000B */ bnel $v0, $zero, .L800BCCAC -/* 0BD880 800BCC80 8C490000 */ lw $t1, ($v0) -/* 0BD884 800BCC84 0C02FAE9 */ jal func_800BEBA4 -/* 0BD888 800BCC88 00000000 */ nop -/* 0BD88C 800BCC8C A2360000 */ sb $s6, ($s1) -/* 0BD890 800BCC90 3C03803B */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x803b -/* 0BD894 800BCC94 8C6370B0 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1) -/* 0BD898 800BCC98 00031080 */ sll $v0, $v1, 2 -/* 0BD89C 800BCC9C 00431023 */ subu $v0, $v0, $v1 -/* 0BD8A0 800BCCA0 10000097 */ b .L800BCF00 -/* 0BD8A4 800BCCA4 00021180 */ sll $v0, $v0, 6 -/* 0BD8A8 800BCCA8 8C490000 */ lw $t1, ($v0) -.L800BCCAC: -/* 0BD8AC 800BCCAC 00095880 */ sll $t3, $t1, 2 -/* 0BD8B0 800BCCB0 05610005 */ bgez $t3, .L800BCCC8 -/* 0BD8B4 800BCCB4 00000000 */ nop -/* 0BD8B8 800BCCB8 908C0003 */ lbu $t4, 3($a0) -/* 0BD8BC 800BCCBC 318D00C0 */ andi $t5, $t4, 0xc0 -/* 0BD8C0 800BCCC0 15A00003 */ bnez $t5, .L800BCCD0 -/* 0BD8C4 800BCCC4 00000000 */ nop -.L800BCCC8: -/* 0BD8C8 800BCCC8 10000014 */ b .L800BCD1C -/* 0BD8CC 800BCCCC 92220000 */ lbu $v0, ($s1) -.L800BCCD0: -/* 0BD8D0 800BCCD0 0C02F450 */ jal func_800BD140 -/* 0BD8D4 800BCCD4 00A02025 */ move $a0, $a1 -/* 0BD8D8 800BCCD8 0C02F5BD */ jal func_800BD6F4 -/* 0BD8DC 800BCCDC 02002025 */ move $a0, $s0 -/* 0BD8E0 800BCCE0 8E04000C */ lw $a0, 0xc($s0) -/* 0BD8E4 800BCCE4 02002825 */ move $a1, $s0 -/* 0BD8E8 800BCCE8 0C02F5AD */ jal func_800BD6B4 -/* 0BD8EC 800BCCEC 24840010 */ addiu $a0, $a0, 0x10 -/* 0BD8F0 800BCCF0 A2360000 */ sb $s6, ($s1) -/* 0BD8F4 800BCCF4 10000009 */ b .L800BCD1C -/* 0BD8F8 800BCCF8 32C200FF */ andi $v0, $s6, 0xff -/* 0BD8FC 800BCCFC 92220000 */ lbu $v0, ($s1) -.L800BCD00: -/* 0BD900 800BCD00 28410002 */ slti $at, $v0, 2 -/* 0BD904 800BCD04 14200005 */ bnez $at, .L800BCD1C -/* 0BD908 800BCD08 00000000 */ nop -/* 0BD90C 800BCD0C 00031080 */ sll $v0, $v1, 2 -/* 0BD910 800BCD10 00431023 */ subu $v0, $v0, $v1 -/* 0BD914 800BCD14 1000007A */ b .L800BCF00 -/* 0BD918 800BCD18 00021180 */ sll $v0, $v0, 6 -.L800BCD1C: -/* 0BD91C 800BCD1C 10400073 */ beqz $v0, .L800BCEEC -/* 0BD920 800BCD20 00000000 */ nop -/* 0BD924 800BCD24 12E20005 */ beq $s7, $v0, .L800BCD3C -/* 0BD928 800BCD28 261300B0 */ addiu $s3, $s0, 0xb0 -/* 0BD92C 800BCD2C 8E6E0000 */ lw $t6, ($s3) -/* 0BD930 800BCD30 000EC080 */ sll $t8, $t6, 2 -/* 0BD934 800BCD34 07030032 */ bgezl $t8, .L800BCE00 -/* 0BD938 800BCD38 922D0029 */ lbu $t5, 0x29($s1) -.L800BCD3C: -/* 0BD93C 800BCD3C 92390029 */ lbu $t9, 0x29($s1) -/* 0BD940 800BCD40 261300B0 */ addiu $s3, $s0, 0xb0 -/* 0BD944 800BCD44 53200006 */ beql $t9, $zero, .L800BCD60 -/* 0BD948 800BCD48 8E2B0018 */ lw $t3, 0x18($s1) -/* 0BD94C 800BCD4C 8E680000 */ lw $t0, ($s3) -/* 0BD950 800BCD50 00085080 */ sll $t2, $t0, 2 -/* 0BD954 800BCD54 05410035 */ bgez $t2, .L800BCE2C -/* 0BD958 800BCD58 00000000 */ nop -/* 0BD95C 800BCD5C 8E2B0018 */ lw $t3, 0x18($s1) -.L800BCD60: -/* 0BD960 800BCD60 128B001D */ beq $s4, $t3, .L800BCDD8 -/* 0BD964 800BCD64 00000000 */ nop -/* 0BD968 800BCD68 0C02F2D2 */ jal func_800BCB48 -/* 0BD96C 800BCD6C 02002025 */ move $a0, $s0 -/* 0BD970 800BCD70 8E250018 */ lw $a1, 0x18($s1) -/* 0BD974 800BCD74 02002025 */ move $a0, $s0 -/* 0BD978 800BCD78 8CAC004C */ lw $t4, 0x4c($a1) -/* 0BD97C 800BCD7C 1180000D */ beqz $t4, .L800BCDB4 -/* 0BD980 800BCD80 00000000 */ nop -/* 0BD984 800BCD84 0C02F5F0 */ jal func_800BD7C0 -/* 0BD988 800BCD88 261300B0 */ addiu $s3, $s0, 0xb0 -/* 0BD98C 800BCD8C 0C02F935 */ jal func_800BE4D4 -/* 0BD990 800BCD90 02002025 */ move $a0, $s0 -/* 0BD994 800BCD94 0C02F5BD */ jal func_800BD6F4 -/* 0BD998 800BCD98 02002025 */ move $a0, $s0 -/* 0BD99C 800BCD9C 8E04000C */ lw $a0, 0xc($s0) -/* 0BD9A0 800BCDA0 02002825 */ move $a1, $s0 -/* 0BD9A4 800BCDA4 0C02FC01 */ jal func_800BF004 -/* 0BD9A8 800BCDA8 24840030 */ addiu $a0, $a0, 0x30 -/* 0BD9AC 800BCDAC 1000001F */ b .L800BCE2C -/* 0BD9B0 800BCDB0 AE340018 */ sw $s4, 0x18($s1) -.L800BCDB4: -/* 0BD9B4 800BCDB4 0C02F2D2 */ jal func_800BCB48 -/* 0BD9B8 800BCDB8 02002025 */ move $a0, $s0 -/* 0BD9BC 800BCDBC 0C02F5BD */ jal func_800BD6F4 -/* 0BD9C0 800BCDC0 02002025 */ move $a0, $s0 -/* 0BD9C4 800BCDC4 8E04000C */ lw $a0, 0xc($s0) -/* 0BD9C8 800BCDC8 0C02FC01 */ jal func_800BF004 -/* 0BD9CC 800BCDCC 02002825 */ move $a1, $s0 -/* 0BD9D0 800BCDD0 10000046 */ b .L800BCEEC -/* 0BD9D4 800BCDD4 AE340018 */ sw $s4, 0x18($s1) -.L800BCDD8: -/* 0BD9D8 800BCDD8 0C02F2D2 */ jal func_800BCB48 -/* 0BD9DC 800BCDDC 02002025 */ move $a0, $s0 -/* 0BD9E0 800BCDE0 0C02F5BD */ jal func_800BD6F4 -/* 0BD9E4 800BCDE4 02002025 */ move $a0, $s0 -/* 0BD9E8 800BCDE8 8E04000C */ lw $a0, 0xc($s0) -/* 0BD9EC 800BCDEC 0C02FC01 */ jal func_800BF004 -/* 0BD9F0 800BCDF0 02002825 */ move $a1, $s0 -/* 0BD9F4 800BCDF4 1000003D */ b .L800BCEEC -/* 0BD9F8 800BCDF8 00000000 */ nop -/* 0BD9FC 800BCDFC 922D0029 */ lbu $t5, 0x29($s1) -.L800BCE00: -/* 0BDA00 800BCE00 15A0000A */ bnez $t5, .L800BCE2C -/* 0BDA04 800BCE04 00000000 */ nop -/* 0BDA08 800BCE08 0C02F2D2 */ jal func_800BCB48 -/* 0BDA0C 800BCE0C 02002025 */ move $a0, $s0 -/* 0BDA10 800BCE10 0C02F5BD */ jal func_800BD6F4 -/* 0BDA14 800BCE14 02002025 */ move $a0, $s0 -/* 0BDA18 800BCE18 8E04000C */ lw $a0, 0xc($s0) -/* 0BDA1C 800BCE1C 0C02FC01 */ jal func_800BF004 -/* 0BDA20 800BCE20 02002825 */ move $a1, $s0 -/* 0BDA24 800BCE24 10000031 */ b .L800BCEEC -/* 0BDA28 800BCE28 00000000 */ nop -.L800BCE2C: -/* 0BDA2C 800BCE2C 0C02F978 */ jal func_800BE5E0 -/* 0BDA30 800BCE30 26240028 */ addiu $a0, $s1, 0x28 -/* 0BDA34 800BCE34 46000586 */ mov.s $f22, $f0 -/* 0BDA38 800BCE38 0C02F91A */ jal func_800BE468 -/* 0BDA3C 800BCE3C 02002025 */ move $a0, $s0 -/* 0BDA40 800BCE40 922E0000 */ lbu $t6, ($s1) -/* 0BDA44 800BCE44 2622001C */ addiu $v0, $s1, 0x1c -/* 0BDA48 800BCE48 56EE000B */ bnel $s7, $t6, .L800BCE78 -/* 0BDA4C 800BCE4C 8E250014 */ lw $a1, 0x14($s1) -/* 0BDA50 800BCE50 8E720000 */ lw $s2, ($s3) -/* 0BDA54 800BCE54 C4400004 */ lwc1 $f0, 4($v0) -/* 0BDA58 800BCE58 C4540008 */ lwc1 $f20, 8($v0) -/* 0BDA5C 800BCE5C 00127AC0 */ sll $t7, $s2, 0xb -/* 0BDA60 800BCE60 000FC742 */ srl $t8, $t7, 0x1d -/* 0BDA64 800BCE64 90460001 */ lbu $a2, 1($v0) -/* 0BDA68 800BCE68 90470000 */ lbu $a3, ($v0) -/* 0BDA6C 800BCE6C 10000009 */ b .L800BCE94 -/* 0BDA70 800BCE70 331200FF */ andi $s2, $t8, 0xff -/* 0BDA74 800BCE74 8E250014 */ lw $a1, 0x14($s1) -.L800BCE78: -/* 0BDA78 800BCE78 8CA4004C */ lw $a0, 0x4c($a1) -/* 0BDA7C 800BCE7C C4A00030 */ lwc1 $f0, 0x30($a1) -/* 0BDA80 800BCE80 C4B4002C */ lwc1 $f20, 0x2c($a1) -/* 0BDA84 800BCE84 90880008 */ lbu $t0, 8($a0) -/* 0BDA88 800BCE88 90A60006 */ lbu $a2, 6($a1) -/* 0BDA8C 800BCE8C 90870004 */ lbu $a3, 4($a0) -/* 0BDA90 800BCE90 31120007 */ andi $s2, $t0, 7 -.L800BCE94: -/* 0BDA94 800BCE94 C624000C */ lwc1 $f4, 0xc($s1) -/* 0BDA98 800BCE98 C6260008 */ lwc1 $f6, 8($s1) -/* 0BDA9C 800BCE9C A3A7004B */ sb $a3, 0x4b($sp) -/* 0BDAA0 800BCEA0 A3A60049 */ sb $a2, 0x49($sp) -/* 0BDAA4 800BCEA4 46062202 */ mul.s $f8, $f4, $f6 -/* 0BDAA8 800BCEA8 02002025 */ move $a0, $s0 -/* 0BDAAC 800BCEAC 46080002 */ mul.s $f0, $f0, $f8 -/* 0BDAB0 800BCEB0 44050000 */ mfc1 $a1, $f0 -/* 0BDAB4 800BCEB4 4616A502 */ mul.s $f20, $f20, $f22 -/* 0BDAB8 800BCEB8 0C02F210 */ jal func_800BC840 -/* 0BDABC 800BCEBC 00000000 */ nop -/* 0BDAC0 800BCEC0 4405A000 */ mfc1 $a1, $f20 -/* 0BDAC4 800BCEC4 93A60049 */ lbu $a2, 0x49($sp) -/* 0BDAC8 800BCEC8 93A7004B */ lbu $a3, 0x4b($sp) -/* 0BDACC 800BCECC 0C02F174 */ jal func_800BC5D0 -/* 0BDAD0 800BCED0 02002025 */ move $a0, $s0 -/* 0BDAD4 800BCED4 926D0001 */ lbu $t5, 1($s3) -/* 0BDAD8 800BCED8 00125880 */ sll $t3, $s2, 2 -/* 0BDADC 800BCEDC 316C001C */ andi $t4, $t3, 0x1c -/* 0BDAE0 800BCEE0 31AEFFE3 */ andi $t6, $t5, 0xffe3 -/* 0BDAE4 800BCEE4 018E7825 */ or $t7, $t4, $t6 -/* 0BDAE8 800BCEE8 A26F0001 */ sb $t7, 1($s3) -.L800BCEEC: -/* 0BDAEC 800BCEEC 3C03803B */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x803b -/* 0BDAF0 800BCEF0 8C6370B0 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1) -/* 0BDAF4 800BCEF4 00031080 */ sll $v0, $v1, 2 -/* 0BDAF8 800BCEF8 00431023 */ subu $v0, $v0, $v1 -/* 0BDAFC 800BCEFC 00021180 */ sll $v0, $v0, 6 -.L800BCF00: -/* 0BDB00 800BCF00 26B500C0 */ addiu $s5, $s5, 0xc0 -/* 0BDB04 800BCF04 02A2082A */ slt $at, $s5, $v0 -/* 0BDB08 800BCF08 1420FF41 */ bnez $at, .L800BCC10 -/* 0BDB0C 800BCF0C 00000000 */ nop -.L800BCF10: -/* 0BDB10 800BCF10 8FBF0044 */ lw $ra, 0x44($sp) -/* 0BDB14 800BCF14 D7B40010 */ ldc1 $f20, 0x10($sp) -/* 0BDB18 800BCF18 D7B60018 */ ldc1 $f22, 0x18($sp) -/* 0BDB1C 800BCF1C 8FB00024 */ lw $s0, 0x24($sp) -/* 0BDB20 800BCF20 8FB10028 */ lw $s1, 0x28($sp) -/* 0BDB24 800BCF24 8FB2002C */ lw $s2, 0x2c($sp) -/* 0BDB28 800BCF28 8FB30030 */ lw $s3, 0x30($sp) -/* 0BDB2C 800BCF2C 8FB40034 */ lw $s4, 0x34($sp) -/* 0BDB30 800BCF30 8FB50038 */ lw $s5, 0x38($sp) -/* 0BDB34 800BCF34 8FB6003C */ lw $s6, 0x3c($sp) -/* 0BDB38 800BCF38 8FB70040 */ lw $s7, 0x40($sp) -/* 0BDB3C 800BCF3C 03E00008 */ jr $ra -/* 0BDB40 800BCF40 27BD0070 */ addiu $sp, $sp, 0x70 diff --git a/asm/non_matchings/audio/playback/func_800BCF44.s b/asm/non_matchings/audio/playback/func_800BCF44.s deleted file mode 100644 index 238d39e85..000000000 --- a/asm/non_matchings/audio/playback/func_800BCF44.s +++ /dev/null @@ -1,131 +0,0 @@ -glabel func_800BCF44 -/* 0BDB44 800BCF44 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0BDB48 800BCF48 2406FFFF */ li $a2, -1 -/* 0BDB4C 800BCF4C AFBF0014 */ sw $ra, 0x14($sp) -/* 0BDB50 800BCF50 1086006F */ beq $a0, $a2, .L800BD110 -/* 0BDB54 800BCF54 00A03825 */ move $a3, $a1 -/* 0BDB58 800BCF58 8C820040 */ lw $v0, 0x40($a0) -/* 0BDB5C 800BCF5C 5040006D */ beql $v0, $zero, .L800BD114 -/* 0BDB60 800BCF60 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BDB64 800BCF64 8C4E0048 */ lw $t6, 0x48($v0) -/* 0BDB68 800BCF68 00402825 */ move $a1, $v0 -/* 0BDB6C 800BCF6C 548E0003 */ bnel $a0, $t6, .L800BCF7C -/* 0BDB70 800BCF70 8CA20044 */ lw $v0, 0x44($a1) -/* 0BDB74 800BCF74 AC460048 */ sw $a2, 0x48($v0) -/* 0BDB78 800BCF78 8CA20044 */ lw $v0, 0x44($a1) -.L800BCF7C: -/* 0BDB7C 800BCF7C 50820014 */ beql $a0, $v0, .L800BCFD0 -/* 0BDB80 800BCF80 A0800002 */ sb $zero, 2($a0) -/* 0BDB84 800BCF84 54C20063 */ bnel $a2, $v0, .L800BD114 -/* 0BDB88 800BCF88 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BDB8C 800BCF8C 8CAF0048 */ lw $t7, 0x48($a1) -/* 0BDB90 800BCF90 54CF0060 */ bnel $a2, $t7, .L800BD114 -/* 0BDB94 800BCF94 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BDB98 800BCF98 8CB80040 */ lw $t8, 0x40($a1) -/* 0BDB9C 800BCF9C 24080006 */ li $t0, 6 -/* 0BDBA0 800BCFA0 5498005C */ bnel $a0, $t8, .L800BD114 -/* 0BDBA4 800BCFA4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BDBA8 800BCFA8 50E8005A */ beql $a3, $t0, .L800BD114 -/* 0BDBAC 800BCFAC 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BDBB0 800BCFB0 90B90058 */ lbu $t9, 0x58($a1) -/* 0BDBB4 800BCFB4 3C01803B */ lui $at, %hi(D_803B70A0) # $at, 0x803b -/* 0BDBB8 800BCFB8 C42470A0 */ lwc1 $f4, %lo(D_803B70A0)($at) -/* 0BDBBC 800BCFBC 37290010 */ ori $t1, $t9, 0x10 -/* 0BDBC0 800BCFC0 A0A90058 */ sb $t1, 0x58($a1) -/* 0BDBC4 800BCFC4 10000052 */ b .L800BD110 -/* 0BDBC8 800BCFC8 E4A40068 */ swc1 $f4, 0x68($a1) -/* 0BDBCC 800BCFCC A0800002 */ sb $zero, 2($a0) -.L800BCFD0: -/* 0BDBD0 800BCFD0 90AA0059 */ lbu $t2, 0x59($a1) -/* 0BDBD4 800BCFD4 24080006 */ li $t0, 6 -/* 0BDBD8 800BCFD8 240D0001 */ li $t5, 1 -/* 0BDBDC 800BCFDC 110A0044 */ beq $t0, $t2, .L800BD0F0 -/* 0BDBE0 800BCFE0 24010007 */ li $at, 7 -/* 0BDBE4 800BCFE4 C4860030 */ lwc1 $f6, 0x30($a0) -/* 0BDBE8 800BCFE8 24A2004C */ addiu $v0, $a1, 0x4c -/* 0BDBEC 800BCFEC E4460004 */ swc1 $f6, 4($v0) -/* 0BDBF0 800BCFF0 C488002C */ lwc1 $f8, 0x2c($a0) -/* 0BDBF4 800BCFF4 E4480008 */ swc1 $f8, 8($v0) -/* 0BDBF8 800BCFF8 908B0006 */ lbu $t3, 6($a0) -/* 0BDBFC 800BCFFC A04B0001 */ sb $t3, 1($v0) -/* 0BDC00 800BD000 8C83004C */ lw $v1, 0x4c($a0) -/* 0BDC04 800BD004 50600004 */ beql $v1, $zero, .L800BD018 -/* 0BDC08 800BD008 8CAE0044 */ lw $t6, 0x44($a1) -/* 0BDC0C 800BD00C 906C0004 */ lbu $t4, 4($v1) -/* 0BDC10 800BD010 A04C0000 */ sb $t4, ($v0) -/* 0BDC14 800BD014 8CAE0044 */ lw $t6, 0x44($a1) -.L800BD018: -/* 0BDC18 800BD018 A0AD0030 */ sb $t5, 0x30($a1) -/* 0BDC1C 800BD01C ACA60044 */ sw $a2, 0x44($a1) -/* 0BDC20 800BD020 14E10008 */ bne $a3, $at, .L800BD044 -/* 0BDC24 800BD024 ACAE0040 */ sw $t6, 0x40($a1) -/* 0BDC28 800BD028 90AF0058 */ lbu $t7, 0x58($a1) -/* 0BDC2C 800BD02C 3C01803B */ lui $at, %hi(D_803B70A0) # $at, 0x803b -/* 0BDC30 800BD030 C42A70A0 */ lwc1 $f10, %lo(D_803B70A0)($at) -/* 0BDC34 800BD034 35F80010 */ ori $t8, $t7, 0x10 -/* 0BDC38 800BD038 A0B80058 */ sb $t8, 0x58($a1) -/* 0BDC3C 800BD03C 1000002C */ b .L800BD0F0 -/* 0BDC40 800BD040 E4AA0068 */ swc1 $f10, 0x68($a1) -.L800BD044: -/* 0BDC44 800BD044 90B90058 */ lbu $t9, 0x58($a1) -/* 0BDC48 800BD048 37290020 */ ori $t1, $t9, 0x20 -/* 0BDC4C 800BD04C A0A90058 */ sb $t1, 0x58($a1) -/* 0BDC50 800BD050 90820018 */ lbu $v0, 0x18($a0) -/* 0BDC54 800BD054 54400010 */ bnel $v0, $zero, .L800BD098 -/* 0BDC58 800BD058 44825000 */ mtc1 $v0, $f10 -/* 0BDC5C 800BD05C 8C8A004C */ lw $t2, 0x4c($a0) -/* 0BDC60 800BD060 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0BDC64 800BD064 914B007C */ lbu $t3, 0x7c($t2) -/* 0BDC68 800BD068 448B8000 */ mtc1 $t3, $f16 -/* 0BDC6C 800BD06C 05610004 */ bgez $t3, .L800BD080 -/* 0BDC70 800BD070 468084A0 */ cvt.s.w $f18, $f16 -/* 0BDC74 800BD074 44812000 */ mtc1 $at, $f4 -/* 0BDC78 800BD078 00000000 */ nop -/* 0BDC7C 800BD07C 46049480 */ add.s $f18, $f18, $f4 -.L800BD080: -/* 0BDC80 800BD080 3C01803B */ lui $at, %hi(D_803B70A4) # $at, 0x803b -/* 0BDC84 800BD084 C42670A4 */ lwc1 $f6, %lo(D_803B70A4)($at) -/* 0BDC88 800BD088 46069202 */ mul.s $f8, $f18, $f6 -/* 0BDC8C 800BD08C 1000000C */ b .L800BD0C0 -/* 0BDC90 800BD090 E4A80068 */ swc1 $f8, 0x68($a1) -/* 0BDC94 800BD094 44825000 */ mtc1 $v0, $f10 -.L800BD098: -/* 0BDC98 800BD098 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0BDC9C 800BD09C 04410004 */ bgez $v0, .L800BD0B0 -/* 0BDCA0 800BD0A0 46805420 */ cvt.s.w $f16, $f10 -/* 0BDCA4 800BD0A4 44812000 */ mtc1 $at, $f4 -/* 0BDCA8 800BD0A8 00000000 */ nop -/* 0BDCAC 800BD0AC 46048400 */ add.s $f16, $f16, $f4 -.L800BD0B0: -/* 0BDCB0 800BD0B0 3C01803B */ lui $at, %hi(D_803B70A4) # $at, 0x803b -/* 0BDCB4 800BD0B4 C43270A4 */ lwc1 $f18, %lo(D_803B70A4)($at) -/* 0BDCB8 800BD0B8 46128182 */ mul.s $f6, $f16, $f18 -/* 0BDCBC 800BD0BC E4A60068 */ swc1 $f6, 0x68($a1) -.L800BD0C0: -/* 0BDCC0 800BD0C0 8C8C004C */ lw $t4, 0x4c($a0) -/* 0BDCC4 800BD0C4 C4A4006C */ lwc1 $f4, 0x6c($a1) -/* 0BDCC8 800BD0C8 3C013B80 */ li $at, 0x3B800000 # 0.003906 -/* 0BDCCC 800BD0CC 918D007D */ lbu $t5, 0x7d($t4) -/* 0BDCD0 800BD0D0 44819000 */ mtc1 $at, $f18 -/* 0BDCD4 800BD0D4 448D4000 */ mtc1 $t5, $f8 -/* 0BDCD8 800BD0D8 00000000 */ nop -/* 0BDCDC 800BD0DC 468042A0 */ cvt.s.w $f10, $f8 -/* 0BDCE0 800BD0E0 46045402 */ mul.s $f16, $f10, $f4 -/* 0BDCE4 800BD0E4 00000000 */ nop -/* 0BDCE8 800BD0E8 46128182 */ mul.s $f6, $f16, $f18 -/* 0BDCEC 800BD0EC E4A60060 */ swc1 $f6, 0x60($a1) -.L800BD0F0: -/* 0BDCF0 800BD0F0 14E80007 */ bne $a3, $t0, .L800BD110 -/* 0BDCF4 800BD0F4 00A02025 */ move $a0, $a1 -/* 0BDCF8 800BD0F8 0C02F5BD */ jal func_800BD6F4 -/* 0BDCFC 800BD0FC AFA5001C */ sw $a1, 0x1c($sp) -/* 0BDD00 800BD100 8FA5001C */ lw $a1, 0x1c($sp) -/* 0BDD04 800BD104 8CA4000C */ lw $a0, 0xc($a1) -/* 0BDD08 800BD108 0C02F5AD */ jal func_800BD6B4 -/* 0BDD0C 800BD10C 24840010 */ addiu $a0, $a0, 0x10 -.L800BD110: -/* 0BDD10 800BD110 8FBF0014 */ lw $ra, 0x14($sp) -.L800BD114: -/* 0BDD14 800BD114 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0BDD18 800BD118 03E00008 */ jr $ra -/* 0BDD1C 800BD11C 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD120.s b/asm/non_matchings/audio/playback/func_800BD120.s deleted file mode 100644 index 22e3d4093..000000000 --- a/asm/non_matchings/audio/playback/func_800BD120.s +++ /dev/null @@ -1,9 +0,0 @@ -glabel func_800BD120 -/* 0BDD20 800BD120 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BDD24 800BD124 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BDD28 800BD128 0C02F3D1 */ jal func_800BCF44 -/* 0BDD2C 800BD12C 24050006 */ li $a1, 6 -/* 0BDD30 800BD130 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BDD34 800BD134 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BDD38 800BD138 03E00008 */ jr $ra -/* 0BDD3C 800BD13C 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD140.s b/asm/non_matchings/audio/playback/func_800BD140.s deleted file mode 100644 index 83a191c09..000000000 --- a/asm/non_matchings/audio/playback/func_800BD140.s +++ /dev/null @@ -1,9 +0,0 @@ -glabel func_800BD140 -/* 0BDD40 800BD140 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BDD44 800BD144 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BDD48 800BD148 0C02F3D1 */ jal func_800BCF44 -/* 0BDD4C 800BD14C 24050007 */ li $a1, 7 -/* 0BDD50 800BD150 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BDD54 800BD154 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BDD58 800BD158 03E00008 */ jr $ra -/* 0BDD5C 800BD15C 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD160.s b/asm/non_matchings/audio/playback/func_800BD160.s deleted file mode 100644 index d57614090..000000000 --- a/asm/non_matchings/audio/playback/func_800BD160.s +++ /dev/null @@ -1,73 +0,0 @@ -glabel func_800BD160 -/* 0BDD60 800BD160 28C10080 */ slti $at, $a2, 0x80 -/* 0BDD64 800BD164 10200002 */ beqz $at, .L800BD170 -/* 0BDD68 800BD168 00001825 */ move $v1, $zero -/* 0BDD6C 800BD16C 24060080 */ li $a2, 128 -.L800BD170: -/* 0BDD70 800BD170 90AE0008 */ lbu $t6, 8($a1) -/* 0BDD74 800BD174 C4A20024 */ lwc1 $f2, 0x24($a1) -/* 0BDD78 800BD178 11C0000D */ beqz $t6, .L800BD1B0 -/* 0BDD7C 800BD17C 46001006 */ mov.s $f0, $f2 -/* 0BDD80 800BD180 C4AC0014 */ lwc1 $f12, 0x14($a1) -/* 0BDD84 800BD184 44802000 */ mtc1 $zero, $f4 -/* 0BDD88 800BD188 3C013F80 */ lui $at, 0x3f80 -/* 0BDD8C 800BD18C 460C203C */ c.lt.s $f4, $f12 -/* 0BDD90 800BD190 00000000 */ nop -/* 0BDD94 800BD194 45020007 */ bc1fl .L800BD1B4 -/* 0BDD98 800BD198 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BDD9C 800BD19C 44813000 */ mtc1 $at, $f6 -/* 0BDDA0 800BD1A0 00000000 */ nop -/* 0BDDA4 800BD1A4 46066200 */ add.s $f8, $f12, $f6 -/* 0BDDA8 800BD1A8 46080002 */ mul.s $f0, $f0, $f8 -/* 0BDDAC 800BD1AC 00000000 */ nop -.L800BD1B0: -/* 0BDDB0 800BD1B0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -.L800BD1B4: -/* 0BDDB4 800BD1B4 44815000 */ mtc1 $at, $f10 -/* 0BDDB8 800BD1B8 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 0BDDBC 800BD1BC 460A003C */ c.lt.s $f0, $f10 -/* 0BDDC0 800BD1C0 00000000 */ nop -/* 0BDDC4 800BD1C4 45020005 */ bc1fl .L800BD1DC -/* 0BDDC8 800BD1C8 44818000 */ mtc1 $at, $f16 -/* 0BDDCC 800BD1CC 3C01800F */ lui $at, %hi(D_800F2EC4) -/* 0BDDD0 800BD1D0 10000017 */ b .L800BD230 -/* 0BDDD4 800BD1D4 C4202EC4 */ lwc1 $f0, %lo(D_800F2EC4)($at) -/* 0BDDD8 800BD1D8 44818000 */ mtc1 $at, $f16 -.L800BD1DC: -/* 0BDDDC 800BD1DC 24030001 */ li $v1, 1 -/* 0BDDE0 800BD1E0 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 0BDDE4 800BD1E4 4610003C */ c.lt.s $f0, $f16 -/* 0BDDE8 800BD1E8 00000000 */ nop -/* 0BDDEC 800BD1EC 45020005 */ bc1fl .L800BD204 -/* 0BDDF0 800BD1F0 44819000 */ mtc1 $at, $f18 -/* 0BDDF4 800BD1F4 3C01800F */ lui $at, %hi(D_800F2EC8) -/* 0BDDF8 800BD1F8 1000000D */ b .L800BD230 -/* 0BDDFC 800BD1FC C4202EC8 */ lwc1 $f0, %lo(D_800F2EC8)($at) -/* 0BDE00 800BD200 44819000 */ mtc1 $at, $f18 -.L800BD204: -/* 0BDE04 800BD204 24030003 */ li $v1, 3 -/* 0BDE08 800BD208 3C01800F */ lui $at, %hi(D_800F2ED0) -/* 0BDE0C 800BD20C 4612003C */ c.lt.s $f0, $f18 -/* 0BDE10 800BD210 00000000 */ nop -/* 0BDE14 800BD214 45000005 */ bc1f .L800BD22C -/* 0BDE18 800BD218 00000000 */ nop -/* 0BDE1C 800BD21C 3C01800F */ lui $at, %hi(D_800F2ECC) # $at, 0x800f -/* 0BDE20 800BD220 24030002 */ li $v1, 2 -/* 0BDE24 800BD224 10000002 */ b .L800BD230 -/* 0BDE28 800BD228 C4202ECC */ lwc1 $f0, %lo(D_800F2ECC)($at) -.L800BD22C: -/* 0BDE2C 800BD22C C4202ED0 */ lwc1 $f0, %lo(D_800F2ED0)($at) -.L800BD230: -/* 0BDE30 800BD230 46001102 */ mul.s $f4, $f2, $f0 -/* 0BDE34 800BD234 00067880 */ sll $t7, $a2, 2 -/* 0BDE38 800BD238 3C18800F */ lui $t8, %hi(gUnknownWave7) -/* 0BDE3C 800BD23C 030FC021 */ addu $t8, $t8, $t7 -/* 0BDE40 800BD240 000341C0 */ sll $t0, $v1, 7 -/* 0BDE44 800BD244 00601025 */ move $v0, $v1 -/* 0BDE48 800BD248 E4A40024 */ swc1 $f4, 0x24($a1) -/* 0BDE4C 800BD24C A0860031 */ sb $a2, 0x31($a0) -/* 0BDE50 800BD250 A0830032 */ sb $v1, 0x32($a0) -/* 0BDE54 800BD254 8F185A00 */ lw $t8, %lo(gUnknownWave7)($t8) -/* 0BDE58 800BD258 03084821 */ addu $t1, $t8, $t0 -/* 0BDE5C 800BD25C 03E00008 */ jr $ra -/* 0BDE60 800BD260 AC8900BC */ sw $t1, 0xbc($a0) diff --git a/asm/non_matchings/audio/playback/func_800BD264.s b/asm/non_matchings/audio/playback/func_800BD264.s deleted file mode 100644 index e121f386a..000000000 --- a/asm/non_matchings/audio/playback/func_800BD264.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel func_800BD264 -/* 0BDE64 800BD264 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0BDE68 800BD268 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BDE6C 800BD26C 90A60001 */ lbu $a2, 1($a1) -/* 0BDE70 800BD270 240100FF */ li $at, 255 -/* 0BDE74 800BD274 54C10004 */ bnel $a2, $at, .L800BD288 -/* 0BDE78 800BD278 908F0032 */ lbu $t7, 0x32($a0) -/* 0BDE7C 800BD27C 8CAE004C */ lw $t6, 0x4c($a1) -/* 0BDE80 800BD280 85C6001C */ lh $a2, 0x1c($t6) -/* 0BDE84 800BD284 908F0032 */ lbu $t7, 0x32($a0) -.L800BD288: -/* 0BDE88 800BD288 AFA40020 */ sw $a0, 0x20($sp) -/* 0BDE8C 800BD28C 0C02F458 */ jal func_800BD160 -/* 0BDE90 800BD290 AFAF001C */ sw $t7, 0x1c($sp) -/* 0BDE94 800BD294 8FA40020 */ lw $a0, 0x20($sp) -/* 0BDE98 800BD298 3C03800F */ lui $v1, %hi(D_800E98F4) # $v1, 0x800f -/* 0BDE9C 800BD29C 246398F4 */ addiu $v1, %lo(D_800E98F4) # addiu $v1, $v1, -0x670c -/* 0BDEA0 800BD2A0 0062C821 */ addu $t9, $v1, $v0 -/* 0BDEA4 800BD2A4 93280000 */ lbu $t0, ($t9) -/* 0BDEA8 800BD2A8 8C980018 */ lw $t8, 0x18($a0) -/* 0BDEAC 800BD2AC 8FAA001C */ lw $t2, 0x1c($sp) -/* 0BDEB0 800BD2B0 03080019 */ multu $t8, $t0 -/* 0BDEB4 800BD2B4 006A5821 */ addu $t3, $v1, $t2 -/* 0BDEB8 800BD2B8 916C0000 */ lbu $t4, ($t3) -/* 0BDEBC 800BD2BC 00004812 */ mflo $t1 -/* 0BDEC0 800BD2C0 00000000 */ nop -/* 0BDEC4 800BD2C4 00000000 */ nop -/* 0BDEC8 800BD2C8 012C001A */ div $zero, $t1, $t4 -/* 0BDECC 800BD2CC 00006812 */ mflo $t5 -/* 0BDED0 800BD2D0 AC8D0018 */ sw $t5, 0x18($a0) -/* 0BDED4 800BD2D4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BDED8 800BD2D8 15800002 */ bnez $t4, .L800BD2E4 -/* 0BDEDC 800BD2DC 00000000 */ nop -/* 0BDEE0 800BD2E0 0007000D */ break 7 -.L800BD2E4: -/* 0BDEE4 800BD2E4 2401FFFF */ li $at, -1 -/* 0BDEE8 800BD2E8 15810004 */ bne $t4, $at, .L800BD2FC -/* 0BDEEC 800BD2EC 3C018000 */ lui $at, 0x8000 -/* 0BDEF0 800BD2F0 15210002 */ bne $t1, $at, .L800BD2FC -/* 0BDEF4 800BD2F4 00000000 */ nop -/* 0BDEF8 800BD2F8 0006000D */ break 6 -.L800BD2FC: -/* 0BDEFC 800BD2FC 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0BDF00 800BD300 03E00008 */ jr $ra -/* 0BDF04 800BD304 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD308.s b/asm/non_matchings/audio/playback/func_800BD308.s deleted file mode 100644 index 51da0a59d..000000000 --- a/asm/non_matchings/audio/playback/func_800BD308.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_800BD308 -/* 0BDF08 800BD308 AC840000 */ sw $a0, ($a0) -/* 0BDF0C 800BD30C AC840004 */ sw $a0, 4($a0) -/* 0BDF10 800BD310 03E00008 */ jr $ra -/* 0BDF14 800BD314 AC800008 */ sw $zero, 8($a0) diff --git a/asm/non_matchings/audio/playback/func_800BD318.s b/asm/non_matchings/audio/playback/func_800BD318.s deleted file mode 100644 index e60dbae55..000000000 --- a/asm/non_matchings/audio/playback/func_800BD318.s +++ /dev/null @@ -1,21 +0,0 @@ -glabel func_800BD318 -/* 0BDF18 800BD318 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0BDF1C 800BD31C AFBF001C */ sw $ra, 0x1c($sp) -/* 0BDF20 800BD320 AFB00018 */ sw $s0, 0x18($sp) -/* 0BDF24 800BD324 0C02F4C2 */ jal func_800BD308 -/* 0BDF28 800BD328 00808025 */ move $s0, $a0 -/* 0BDF2C 800BD32C 0C02F4C2 */ jal func_800BD308 -/* 0BDF30 800BD330 26040010 */ addiu $a0, $s0, 0x10 -/* 0BDF34 800BD334 0C02F4C2 */ jal func_800BD308 -/* 0BDF38 800BD338 26040020 */ addiu $a0, $s0, 0x20 -/* 0BDF3C 800BD33C 0C02F4C2 */ jal func_800BD308 -/* 0BDF40 800BD340 26040030 */ addiu $a0, $s0, 0x30 -/* 0BDF44 800BD344 AE10000C */ sw $s0, 0xc($s0) -/* 0BDF48 800BD348 AE10001C */ sw $s0, 0x1c($s0) -/* 0BDF4C 800BD34C AE10002C */ sw $s0, 0x2c($s0) -/* 0BDF50 800BD350 AE10003C */ sw $s0, 0x3c($s0) -/* 0BDF54 800BD354 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BDF58 800BD358 8FB00018 */ lw $s0, 0x18($sp) -/* 0BDF5C 800BD35C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0BDF60 800BD360 03E00008 */ jr $ra -/* 0BDF64 800BD364 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD368.s b/asm/non_matchings/audio/playback/func_800BD368.s deleted file mode 100644 index 26b4b0baf..000000000 --- a/asm/non_matchings/audio/playback/func_800BD368.s +++ /dev/null @@ -1,47 +0,0 @@ -glabel func_800BD368 -/* 0BDF68 800BD368 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0BDF6C 800BD36C AFB30024 */ sw $s3, 0x24($sp) -/* 0BDF70 800BD370 3C13803B */ lui $s3, %hi(D_803B5FC8) # $s3, 0x803b -/* 0BDF74 800BD374 26735FC8 */ addiu $s3, %lo(D_803B5FC8) # addiu $s3, $s3, 0x5fc8 -/* 0BDF78 800BD378 AFBF002C */ sw $ra, 0x2c($sp) -/* 0BDF7C 800BD37C AFB40028 */ sw $s4, 0x28($sp) -/* 0BDF80 800BD380 AFB20020 */ sw $s2, 0x20($sp) -/* 0BDF84 800BD384 AFB1001C */ sw $s1, 0x1c($sp) -/* 0BDF88 800BD388 AFB00018 */ sw $s0, 0x18($sp) -/* 0BDF8C 800BD38C 0C02F4C6 */ jal func_800BD318 -/* 0BDF90 800BD390 02602025 */ move $a0, $s3 -/* 0BDF94 800BD394 3C14803B */ lui $s4, %hi(gMaxSimultaneousNotes) # $s4, 0x803b -/* 0BDF98 800BD398 269470B0 */ addiu $s4, %lo(gMaxSimultaneousNotes) # addiu $s4, $s4, 0x70b0 -/* 0BDF9C 800BD39C 8E8E0000 */ lw $t6, ($s4) -/* 0BDFA0 800BD3A0 00008825 */ move $s1, $zero -/* 0BDFA4 800BD3A4 00008025 */ move $s0, $zero -/* 0BDFA8 800BD3A8 19C00013 */ blez $t6, .L800BD3F8 -/* 0BDFAC 800BD3AC 3C12803B */ lui $s2, %hi(D_803B1508) # $s2, 0x803b -/* 0BDFB0 800BD3B0 26521508 */ addiu $s2, %lo(D_803B1508) # addiu $s2, $s2, 0x1508 -/* 0BDFB4 800BD3B4 8E420000 */ lw $v0, ($s2) -.L800BD3B8: -/* 0BDFB8 800BD3B8 02602025 */ move $a0, $s3 -/* 0BDFBC 800BD3BC 02027821 */ addu $t7, $s0, $v0 -/* 0BDFC0 800BD3C0 0050C021 */ addu $t8, $v0, $s0 -/* 0BDFC4 800BD3C4 AF0F0008 */ sw $t7, 8($t8) -/* 0BDFC8 800BD3C8 8E590000 */ lw $t9, ($s2) -/* 0BDFCC 800BD3CC 03304021 */ addu $t0, $t9, $s0 -/* 0BDFD0 800BD3D0 AD000000 */ sw $zero, ($t0) -/* 0BDFD4 800BD3D4 8E490000 */ lw $t1, ($s2) -/* 0BDFD8 800BD3D8 0C02FC01 */ jal func_800BF004 -/* 0BDFDC 800BD3DC 02092821 */ addu $a1, $s0, $t1 -/* 0BDFE0 800BD3E0 8E8A0000 */ lw $t2, ($s4) -/* 0BDFE4 800BD3E4 26310001 */ addiu $s1, $s1, 1 -/* 0BDFE8 800BD3E8 261000C0 */ addiu $s0, $s0, 0xc0 -/* 0BDFEC 800BD3EC 022A082A */ slt $at, $s1, $t2 -/* 0BDFF0 800BD3F0 5420FFF1 */ bnel $at, $zero, .L800BD3B8 -/* 0BDFF4 800BD3F4 8E420000 */ lw $v0, ($s2) -.L800BD3F8: -/* 0BDFF8 800BD3F8 8FBF002C */ lw $ra, 0x2c($sp) -/* 0BDFFC 800BD3FC 8FB00018 */ lw $s0, 0x18($sp) -/* 0BE000 800BD400 8FB1001C */ lw $s1, 0x1c($sp) -/* 0BE004 800BD404 8FB20020 */ lw $s2, 0x20($sp) -/* 0BE008 800BD408 8FB30024 */ lw $s3, 0x24($sp) -/* 0BE00C 800BD40C 8FB40028 */ lw $s4, 0x28($sp) -/* 0BE010 800BD410 03E00008 */ jr $ra -/* 0BE014 800BD414 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/audio/playback/func_800BD418.s b/asm/non_matchings/audio/playback/func_800BD418.s deleted file mode 100644 index 08f86c52b..000000000 --- a/asm/non_matchings/audio/playback/func_800BD418.s +++ /dev/null @@ -1,97 +0,0 @@ -glabel func_800BD418 -/* 0BE018 800BD418 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 0BE01C 800BD41C AFBE0038 */ sw $fp, 0x38($sp) -/* 0BE020 800BD420 AFB70034 */ sw $s7, 0x34($sp) -/* 0BE024 800BD424 AFB60030 */ sw $s6, 0x30($sp) -/* 0BE028 800BD428 AFB5002C */ sw $s5, 0x2c($sp) -/* 0BE02C 800BD42C AFB40028 */ sw $s4, 0x28($sp) -/* 0BE030 800BD430 AFB30024 */ sw $s3, 0x24($sp) -/* 0BE034 800BD434 AFB20020 */ sw $s2, 0x20($sp) -/* 0BE038 800BD438 AFB1001C */ sw $s1, 0x1c($sp) -/* 0BE03C 800BD43C 3C06803B */ lui $a2, %hi(D_803B5FC8) # $a2, 0x803b -/* 0BE040 800BD440 3C05803B */ lui $a1, %hi(D_803B5FD8) # $a1, 0x803b -/* 0BE044 800BD444 3C03803B */ lui $v1, %hi(D_803B5FE8) # $v1, 0x803b -/* 0BE048 800BD448 3C02803B */ lui $v0, %hi(D_803B5FF8) # $v0, 0x803b -/* 0BE04C 800BD44C 0080A025 */ move $s4, $a0 -/* 0BE050 800BD450 AFBF003C */ sw $ra, 0x3c($sp) -/* 0BE054 800BD454 AFB00018 */ sw $s0, 0x18($sp) -/* 0BE058 800BD458 24425FF8 */ addiu $v0, %lo(D_803B5FF8) # addiu $v0, $v0, 0x5ff8 -/* 0BE05C 800BD45C 24635FE8 */ addiu $v1, %lo(D_803B5FE8) # addiu $v1, $v1, 0x5fe8 -/* 0BE060 800BD460 24A55FD8 */ addiu $a1, %lo(D_803B5FD8) # addiu $a1, $a1, 0x5fd8 -/* 0BE064 800BD464 24C65FC8 */ addiu $a2, %lo(D_803B5FC8) # addiu $a2, $a2, 0x5fc8 -/* 0BE068 800BD468 8FB10048 */ lw $s1, 0x48($sp) -/* 0BE06C 800BD46C 8FB20040 */ lw $s2, 0x40($sp) -/* 0BE070 800BD470 00009825 */ move $s3, $zero -/* 0BE074 800BD474 24150001 */ li $s5, 1 -/* 0BE078 800BD478 24160002 */ li $s6, 2 -/* 0BE07C 800BD47C 24170003 */ li $s7, 3 -/* 0BE080 800BD480 241E0004 */ li $fp, 4 -.L800BD484: -/* 0BE084 800BD484 5260000A */ beql $s3, $zero, .L800BD4B0 -/* 0BE088 800BD488 02808825 */ move $s1, $s4 -/* 0BE08C 800BD48C 5275000C */ beql $s3, $s5, .L800BD4C0 -/* 0BE090 800BD490 26910010 */ addiu $s1, $s4, 0x10 -/* 0BE094 800BD494 5276000E */ beql $s3, $s6, .L800BD4D0 -/* 0BE098 800BD498 26910020 */ addiu $s1, $s4, 0x20 -/* 0BE09C 800BD49C 52770010 */ beql $s3, $s7, .L800BD4E0 -/* 0BE0A0 800BD4A0 26910030 */ addiu $s1, $s4, 0x30 -/* 0BE0A4 800BD4A4 10000010 */ b .L800BD4E8 -/* 0BE0A8 800BD4A8 8E300004 */ lw $s0, 4($s1) -/* 0BE0AC 800BD4AC 02808825 */ move $s1, $s4 -.L800BD4B0: -/* 0BE0B0 800BD4B0 00C09025 */ move $s2, $a2 -/* 0BE0B4 800BD4B4 1000000C */ b .L800BD4E8 -/* 0BE0B8 800BD4B8 8E900004 */ lw $s0, 4($s4) -/* 0BE0BC 800BD4BC 26910010 */ addiu $s1, $s4, 0x10 -.L800BD4C0: -/* 0BE0C0 800BD4C0 00A09025 */ move $s2, $a1 -/* 0BE0C4 800BD4C4 10000008 */ b .L800BD4E8 -/* 0BE0C8 800BD4C8 8E300004 */ lw $s0, 4($s1) -/* 0BE0CC 800BD4CC 26910020 */ addiu $s1, $s4, 0x20 -.L800BD4D0: -/* 0BE0D0 800BD4D0 00609025 */ move $s2, $v1 -/* 0BE0D4 800BD4D4 10000004 */ b .L800BD4E8 -/* 0BE0D8 800BD4D8 8E300004 */ lw $s0, 4($s1) -/* 0BE0DC 800BD4DC 26910030 */ addiu $s1, $s4, 0x30 -.L800BD4E0: -/* 0BE0E0 800BD4E0 00409025 */ move $s2, $v0 -/* 0BE0E4 800BD4E4 8E300004 */ lw $s0, 4($s1) -.L800BD4E8: -/* 0BE0E8 800BD4E8 52110013 */ beql $s0, $s1, .L800BD538 -/* 0BE0EC 800BD4EC 26730001 */ addiu $s3, $s3, 1 -.L800BD4F0: -/* 0BE0F0 800BD4F0 52000011 */ beql $s0, $zero, .L800BD538 -/* 0BE0F4 800BD4F4 26730001 */ addiu $s3, $s3, 1 -/* 0BE0F8 800BD4F8 0C02F5BD */ jal func_800BD6F4 -/* 0BE0FC 800BD4FC 02002025 */ move $a0, $s0 -/* 0BE100 800BD500 02402025 */ move $a0, $s2 -/* 0BE104 800BD504 0C02FC01 */ jal func_800BF004 -/* 0BE108 800BD508 02002825 */ move $a1, $s0 -/* 0BE10C 800BD50C 8E300004 */ lw $s0, 4($s1) -/* 0BE110 800BD510 3C06803B */ lui $a2, %hi(D_803B5FC8) # $a2, 0x803b -/* 0BE114 800BD514 3C05803B */ lui $a1, %hi(D_803B5FD8) # $a1, 0x803b -/* 0BE118 800BD518 3C03803B */ lui $v1, %hi(D_803B5FE8) # $v1, 0x803b -/* 0BE11C 800BD51C 3C02803B */ lui $v0, %hi(D_803B5FF8) # $v0, 0x803b -/* 0BE120 800BD520 24425FF8 */ addiu $v0, %lo(D_803B5FF8) # addiu $v0, $v0, 0x5ff8 -/* 0BE124 800BD524 24635FE8 */ addiu $v1, %lo(D_803B5FE8) # addiu $v1, $v1, 0x5fe8 -/* 0BE128 800BD528 24A55FD8 */ addiu $a1, %lo(D_803B5FD8) # addiu $a1, $a1, 0x5fd8 -/* 0BE12C 800BD52C 1611FFF0 */ bne $s0, $s1, .L800BD4F0 -/* 0BE130 800BD530 24C65FC8 */ addiu $a2, %lo(D_803B5FC8) # addiu $a2, $a2, 0x5fc8 -/* 0BE134 800BD534 26730001 */ addiu $s3, $s3, 1 -.L800BD538: -/* 0BE138 800BD538 167EFFD2 */ bne $s3, $fp, .L800BD484 -/* 0BE13C 800BD53C 00000000 */ nop -/* 0BE140 800BD540 8FBF003C */ lw $ra, 0x3c($sp) -/* 0BE144 800BD544 AFB20040 */ sw $s2, 0x40($sp) -/* 0BE148 800BD548 AFB10048 */ sw $s1, 0x48($sp) -/* 0BE14C 800BD54C 8FB1001C */ lw $s1, 0x1c($sp) -/* 0BE150 800BD550 8FB20020 */ lw $s2, 0x20($sp) -/* 0BE154 800BD554 8FB00018 */ lw $s0, 0x18($sp) -/* 0BE158 800BD558 8FB30024 */ lw $s3, 0x24($sp) -/* 0BE15C 800BD55C 8FB40028 */ lw $s4, 0x28($sp) -/* 0BE160 800BD560 8FB5002C */ lw $s5, 0x2c($sp) -/* 0BE164 800BD564 8FB60030 */ lw $s6, 0x30($sp) -/* 0BE168 800BD568 8FB70034 */ lw $s7, 0x34($sp) -/* 0BE16C 800BD56C 8FBE0038 */ lw $fp, 0x38($sp) -/* 0BE170 800BD570 03E00008 */ jr $ra -/* 0BE174 800BD574 27BD0050 */ addiu $sp, $sp, 0x50 diff --git a/asm/non_matchings/audio/playback/func_800BD578.s b/asm/non_matchings/audio/playback/func_800BD578.s deleted file mode 100644 index fe672f07b..000000000 --- a/asm/non_matchings/audio/playback/func_800BD578.s +++ /dev/null @@ -1,92 +0,0 @@ -glabel func_800BD578 -/* 0BE178 800BD578 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 0BE17C 800BD57C AFBF003C */ sw $ra, 0x3c($sp) -/* 0BE180 800BD580 AFB5002C */ sw $s5, 0x2c($sp) -/* 0BE184 800BD584 AFB30024 */ sw $s3, 0x24($sp) -/* 0BE188 800BD588 00A09825 */ move $s3, $a1 -/* 0BE18C 800BD58C 0080A825 */ move $s5, $a0 -/* 0BE190 800BD590 AFBE0038 */ sw $fp, 0x38($sp) -/* 0BE194 800BD594 AFB70034 */ sw $s7, 0x34($sp) -/* 0BE198 800BD598 AFB60030 */ sw $s6, 0x30($sp) -/* 0BE19C 800BD59C AFB40028 */ sw $s4, 0x28($sp) -/* 0BE1A0 800BD5A0 AFB20020 */ sw $s2, 0x20($sp) -/* 0BE1A4 800BD5A4 AFB1001C */ sw $s1, 0x1c($sp) -/* 0BE1A8 800BD5A8 0C02F506 */ jal func_800BD418 -/* 0BE1AC 800BD5AC AFB00018 */ sw $s0, 0x18($sp) -/* 0BE1B0 800BD5B0 0000A025 */ move $s4, $zero -/* 0BE1B4 800BD5B4 1A600033 */ blez $s3, .L800BD684 -/* 0BE1B8 800BD5B8 00008025 */ move $s0, $zero -/* 0BE1BC 800BD5BC 241E0002 */ li $fp, 2 -/* 0BE1C0 800BD5C0 24170001 */ li $s7, 1 -/* 0BE1C4 800BD5C4 24160004 */ li $s6, 4 -/* 0BE1C8 800BD5C8 8FB20044 */ lw $s2, 0x44($sp) -/* 0BE1CC 800BD5CC 8FB10048 */ lw $s1, 0x48($sp) -.L800BD5D0: -/* 0BE1D0 800BD5D0 5296002D */ beql $s4, $s6, .L800BD688 -/* 0BE1D4 800BD5D4 8FBF003C */ lw $ra, 0x3c($sp) -/* 0BE1D8 800BD5D8 12800009 */ beqz $s4, .L800BD600 -/* 0BE1DC 800BD5DC 00000000 */ nop -/* 0BE1E0 800BD5E0 1297000B */ beq $s4, $s7, .L800BD610 -/* 0BE1E4 800BD5E4 00000000 */ nop -/* 0BE1E8 800BD5E8 129E000D */ beq $s4, $fp, .L800BD620 -/* 0BE1EC 800BD5EC 24010003 */ li $at, 3 -/* 0BE1F0 800BD5F0 1281000F */ beq $s4, $at, .L800BD630 -/* 0BE1F4 800BD5F4 00000000 */ nop -/* 0BE1F8 800BD5F8 10000011 */ b .L800BD640 -/* 0BE1FC 800BD5FC 0213082A */ slt $at, $s0, $s3 -.L800BD600: -/* 0BE200 800BD600 3C11803B */ lui $s1, %hi(D_803B5FC8) # $s1, 0x803b -/* 0BE204 800BD604 26315FC8 */ addiu $s1, %lo(D_803B5FC8) # addiu $s1, $s1, 0x5fc8 -/* 0BE208 800BD608 1000000C */ b .L800BD63C -/* 0BE20C 800BD60C 02A09025 */ move $s2, $s5 -.L800BD610: -/* 0BE210 800BD610 3C11803B */ lui $s1, %hi(D_803B5FD8) # $s1, 0x803b -/* 0BE214 800BD614 26315FD8 */ addiu $s1, %lo(D_803B5FD8) # addiu $s1, $s1, 0x5fd8 -/* 0BE218 800BD618 10000008 */ b .L800BD63C -/* 0BE21C 800BD61C 26B20010 */ addiu $s2, $s5, 0x10 -.L800BD620: -/* 0BE220 800BD620 3C11803B */ lui $s1, %hi(D_803B5FE8) # $s1, 0x803b -/* 0BE224 800BD624 26315FE8 */ addiu $s1, %lo(D_803B5FE8) # addiu $s1, $s1, 0x5fe8 -/* 0BE228 800BD628 10000004 */ b .L800BD63C -/* 0BE22C 800BD62C 26B20020 */ addiu $s2, $s5, 0x20 -.L800BD630: -/* 0BE230 800BD630 3C11803B */ lui $s1, %hi(D_803B5FF8) # $s1, 0x803b -/* 0BE234 800BD634 26315FF8 */ addiu $s1, %lo(D_803B5FF8) # addiu $s1, $s1, 0x5ff8 -/* 0BE238 800BD638 26B20030 */ addiu $s2, $s5, 0x30 -.L800BD63C: -/* 0BE23C 800BD63C 0213082A */ slt $at, $s0, $s3 -.L800BD640: -/* 0BE240 800BD640 5020000C */ beql $at, $zero, .L800BD674 -/* 0BE244 800BD644 0213082A */ slt $at, $s0, $s3 -.L800BD648: -/* 0BE248 800BD648 0C02FC11 */ jal func_800BF044 -/* 0BE24C 800BD64C 02202025 */ move $a0, $s1 -/* 0BE250 800BD650 10400007 */ beqz $v0, .L800BD670 -/* 0BE254 800BD654 00402825 */ move $a1, $v0 -/* 0BE258 800BD658 0C02FC01 */ jal func_800BF004 -/* 0BE25C 800BD65C 02402025 */ move $a0, $s2 -/* 0BE260 800BD660 26100001 */ addiu $s0, $s0, 1 -/* 0BE264 800BD664 0213082A */ slt $at, $s0, $s3 -/* 0BE268 800BD668 1420FFF7 */ bnez $at, .L800BD648 -/* 0BE26C 800BD66C 00000000 */ nop -.L800BD670: -/* 0BE270 800BD670 0213082A */ slt $at, $s0, $s3 -.L800BD674: -/* 0BE274 800BD674 1420FFD6 */ bnez $at, .L800BD5D0 -/* 0BE278 800BD678 26940001 */ addiu $s4, $s4, 1 -/* 0BE27C 800BD67C AFB20044 */ sw $s2, 0x44($sp) -/* 0BE280 800BD680 AFB10048 */ sw $s1, 0x48($sp) -.L800BD684: -/* 0BE284 800BD684 8FBF003C */ lw $ra, 0x3c($sp) -.L800BD688: -/* 0BE288 800BD688 8FB00018 */ lw $s0, 0x18($sp) -/* 0BE28C 800BD68C 8FB1001C */ lw $s1, 0x1c($sp) -/* 0BE290 800BD690 8FB20020 */ lw $s2, 0x20($sp) -/* 0BE294 800BD694 8FB30024 */ lw $s3, 0x24($sp) -/* 0BE298 800BD698 8FB40028 */ lw $s4, 0x28($sp) -/* 0BE29C 800BD69C 8FB5002C */ lw $s5, 0x2c($sp) -/* 0BE2A0 800BD6A0 8FB60030 */ lw $s6, 0x30($sp) -/* 0BE2A4 800BD6A4 8FB70034 */ lw $s7, 0x34($sp) -/* 0BE2A8 800BD6A8 8FBE0038 */ lw $fp, 0x38($sp) -/* 0BE2AC 800BD6AC 03E00008 */ jr $ra -/* 0BE2B0 800BD6B0 27BD0058 */ addiu $sp, $sp, 0x58 diff --git a/asm/non_matchings/audio/playback/func_800BD6B4.s b/asm/non_matchings/audio/playback/func_800BD6B4.s deleted file mode 100644 index e64a96e56..000000000 --- a/asm/non_matchings/audio/playback/func_800BD6B4.s +++ /dev/null @@ -1,18 +0,0 @@ -glabel func_800BD6B4 -/* 0BE2B4 800BD6B4 8CAE0000 */ lw $t6, ($a1) -/* 0BE2B8 800BD6B8 15C0000C */ bnez $t6, .L800BD6EC -/* 0BE2BC 800BD6BC 00000000 */ nop -/* 0BE2C0 800BD6C0 ACA40000 */ sw $a0, ($a1) -/* 0BE2C4 800BD6C4 8C8F0004 */ lw $t7, 4($a0) -/* 0BE2C8 800BD6C8 ACAF0004 */ sw $t7, 4($a1) -/* 0BE2CC 800BD6CC 8C980004 */ lw $t8, 4($a0) -/* 0BE2D0 800BD6D0 AF050000 */ sw $a1, ($t8) -/* 0BE2D4 800BD6D4 8C990008 */ lw $t9, 8($a0) -/* 0BE2D8 800BD6D8 8C89000C */ lw $t1, 0xc($a0) -/* 0BE2DC 800BD6DC AC850004 */ sw $a1, 4($a0) -/* 0BE2E0 800BD6E0 27280001 */ addiu $t0, $t9, 1 -/* 0BE2E4 800BD6E4 AC880008 */ sw $t0, 8($a0) -/* 0BE2E8 800BD6E8 ACA9000C */ sw $t1, 0xc($a1) -.L800BD6EC: -/* 0BE2EC 800BD6EC 03E00008 */ jr $ra -/* 0BE2F0 800BD6F0 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD6F4.s b/asm/non_matchings/audio/playback/func_800BD6F4.s deleted file mode 100644 index 94e289ca0..000000000 --- a/asm/non_matchings/audio/playback/func_800BD6F4.s +++ /dev/null @@ -1,13 +0,0 @@ -glabel func_800BD6F4 -/* 0BE2F4 800BD6F4 8C820000 */ lw $v0, ($a0) -/* 0BE2F8 800BD6F8 10400007 */ beqz $v0, .L800BD718 -/* 0BE2FC 800BD6FC 00000000 */ nop -/* 0BE300 800BD700 8C8E0004 */ lw $t6, 4($a0) -/* 0BE304 800BD704 AC4E0004 */ sw $t6, 4($v0) -/* 0BE308 800BD708 8C8F0000 */ lw $t7, ($a0) -/* 0BE30C 800BD70C 8C980004 */ lw $t8, 4($a0) -/* 0BE310 800BD710 AF0F0000 */ sw $t7, ($t8) -/* 0BE314 800BD714 AC800000 */ sw $zero, ($a0) -.L800BD718: -/* 0BE318 800BD718 03E00008 */ jr $ra -/* 0BE31C 800BD71C 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD720.s b/asm/non_matchings/audio/playback/func_800BD720.s deleted file mode 100644 index 9dcef6f6f..000000000 --- a/asm/non_matchings/audio/playback/func_800BD720.s +++ /dev/null @@ -1,48 +0,0 @@ -glabel func_800BD720 -/* 0BE320 800BD720 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0BE324 800BD724 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BE328 800BD728 8C820004 */ lw $v0, 4($a0) -/* 0BE32C 800BD72C 00803025 */ move $a2, $a0 -/* 0BE330 800BD730 14440003 */ bne $v0, $a0, .L800BD740 -/* 0BE334 800BD734 00000000 */ nop -/* 0BE338 800BD738 1000001D */ b .L800BD7B0 -/* 0BE33C 800BD73C 00001025 */ move $v0, $zero -.L800BD740: -/* 0BE340 800BD740 1046000C */ beq $v0, $a2, .L800BD774 -/* 0BE344 800BD744 00402025 */ move $a0, $v0 -/* 0BE348 800BD748 8C8E0008 */ lw $t6, 8($a0) -.L800BD74C: -/* 0BE34C 800BD74C 8C580008 */ lw $t8, 8($v0) -/* 0BE350 800BD750 91CF0030 */ lbu $t7, 0x30($t6) -/* 0BE354 800BD754 93190030 */ lbu $t9, 0x30($t8) -/* 0BE358 800BD758 01F9082A */ slt $at, $t7, $t9 -/* 0BE35C 800BD75C 54200003 */ bnel $at, $zero, .L800BD76C -/* 0BE360 800BD760 8C420004 */ lw $v0, 4($v0) -/* 0BE364 800BD764 00402025 */ move $a0, $v0 -/* 0BE368 800BD768 8C420004 */ lw $v0, 4($v0) -.L800BD76C: -/* 0BE36C 800BD76C 5446FFF7 */ bnel $v0, $a2, .L800BD74C -/* 0BE370 800BD770 8C8E0008 */ lw $t6, 8($a0) -.L800BD774: -/* 0BE374 800BD774 54800004 */ bnel $a0, $zero, .L800BD788 -/* 0BE378 800BD778 8C880008 */ lw $t0, 8($a0) -/* 0BE37C 800BD77C 1000000C */ b .L800BD7B0 -/* 0BE380 800BD780 00001025 */ move $v0, $zero -/* 0BE384 800BD784 8C880008 */ lw $t0, 8($a0) -.L800BD788: -/* 0BE388 800BD788 91090030 */ lbu $t1, 0x30($t0) -/* 0BE38C 800BD78C 0125082A */ slt $at, $t1, $a1 -/* 0BE390 800BD790 14200003 */ bnez $at, .L800BD7A0 -/* 0BE394 800BD794 00000000 */ nop -/* 0BE398 800BD798 10000005 */ b .L800BD7B0 -/* 0BE39C 800BD79C 00001025 */ move $v0, $zero -.L800BD7A0: -/* 0BE3A0 800BD7A0 0C02F5BD */ jal func_800BD6F4 -/* 0BE3A4 800BD7A4 AFA40018 */ sw $a0, 0x18($sp) -/* 0BE3A8 800BD7A8 8FA40018 */ lw $a0, 0x18($sp) -/* 0BE3AC 800BD7AC 8C820008 */ lw $v0, 8($a0) -.L800BD7B0: -/* 0BE3B0 800BD7B0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BE3B4 800BD7B4 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0BE3B8 800BD7B8 03E00008 */ jr $ra -/* 0BE3BC 800BD7BC 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD7C0.s b/asm/non_matchings/audio/playback/func_800BD7C0.s deleted file mode 100644 index 9683b4dcd..000000000 --- a/asm/non_matchings/audio/playback/func_800BD7C0.s +++ /dev/null @@ -1,82 +0,0 @@ -glabel func_800BD7C0 -/* 0BE3C0 800BD7C0 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 0BE3C4 800BD7C4 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BE3C8 800BD7C8 240EFFFF */ li $t6, -1 -/* 0BE3CC 800BD7CC AC8E0040 */ sw $t6, 0x40($a0) -/* 0BE3D0 800BD7D0 AC850044 */ sw $a1, 0x44($a0) -/* 0BE3D4 800BD7D4 8CAF004C */ lw $t7, 0x4c($a1) -/* 0BE3D8 800BD7D8 240A0003 */ li $t2, 3 -/* 0BE3DC 800BD7DC 44802000 */ mtc1 $zero, $f4 -/* 0BE3E0 800BD7E0 91F80005 */ lbu $t8, 5($t7) -/* 0BE3E4 800BD7E4 A0980030 */ sb $t8, 0x30($a0) -/* 0BE3E8 800BD7E8 90A80000 */ lbu $t0, ($a1) -/* 0BE3EC 800BD7EC 8CAB004C */ lw $t3, 0x4c($a1) -/* 0BE3F0 800BD7F0 A0AA0002 */ sb $t2, 2($a1) -/* 0BE3F4 800BD7F4 35090004 */ ori $t1, $t0, 4 -/* 0BE3F8 800BD7F8 A0A90000 */ sb $t1, ($a1) -/* 0BE3FC 800BD7FC ACA40040 */ sw $a0, 0x40($a1) -/* 0BE400 800BD800 AD640038 */ sw $a0, 0x38($t3) -/* 0BE404 800BD804 8CAC004C */ lw $t4, 0x4c($a1) -/* 0BE408 800BD808 AD85003C */ sw $a1, 0x3c($t4) -/* 0BE40C 800BD80C E4A4002C */ swc1 $f4, 0x2c($a1) -/* 0BE410 800BD810 AFA5003C */ sw $a1, 0x3c($sp) -/* 0BE414 800BD814 0C02F2AD */ jal func_800BCAB4 -/* 0BE418 800BD818 AFA40038 */ sw $a0, 0x38($sp) -/* 0BE41C 800BD81C 8FA5003C */ lw $a1, 0x3c($sp) -/* 0BE420 800BD820 8FA40038 */ lw $a0, 0x38($sp) -/* 0BE424 800BD824 240100FF */ li $at, 255 -/* 0BE428 800BD828 90A60001 */ lbu $a2, 1($a1) -/* 0BE42C 800BD82C 248200B0 */ addiu $v0, $a0, 0xb0 -/* 0BE430 800BD830 54C10004 */ bnel $a2, $at, .L800BD844 -/* 0BE434 800BD834 8CAE0048 */ lw $t6, 0x48($a1) -/* 0BE438 800BD838 8CAD004C */ lw $t5, 0x4c($a1) -/* 0BE43C 800BD83C 85A6001C */ lh $a2, 0x1c($t5) -/* 0BE440 800BD840 8CAE0048 */ lw $t6, 0x48($a1) -.L800BD844: -/* 0BE444 800BD844 28C10080 */ slti $at, $a2, 0x80 -/* 0BE448 800BD848 14200005 */ bnez $at, .L800BD860 -/* 0BE44C 800BD84C AC4E000C */ sw $t6, 0xc($v0) -/* 0BE450 800BD850 90580001 */ lbu $t8, 1($v0) -/* 0BE454 800BD854 37190002 */ ori $t9, $t8, 2 -/* 0BE458 800BD858 10000004 */ b .L800BD86C -/* 0BE45C 800BD85C A0590001 */ sb $t9, 1($v0) -.L800BD860: -/* 0BE460 800BD860 90480001 */ lbu $t0, 1($v0) -/* 0BE464 800BD864 3109FFFD */ andi $t1, $t0, 0xfffd -/* 0BE468 800BD868 A0490001 */ sb $t1, 1($v0) -.L800BD86C: -/* 0BE46C 800BD86C 8C4A0000 */ lw $t2, ($v0) -/* 0BE470 800BD870 000A6380 */ sll $t4, $t2, 0xe -/* 0BE474 800BD874 05830007 */ bgezl $t4, .L800BD894 -/* 0BE478 800BD878 8CAD004C */ lw $t5, 0x4c($a1) -/* 0BE47C 800BD87C AFA2001C */ sw $v0, 0x1c($sp) -/* 0BE480 800BD880 0C02F458 */ jal func_800BD160 -/* 0BE484 800BD884 AFA5003C */ sw $a1, 0x3c($sp) -/* 0BE488 800BD888 8FA2001C */ lw $v0, 0x1c($sp) -/* 0BE48C 800BD88C 8FA5003C */ lw $a1, 0x3c($sp) -/* 0BE490 800BD890 8CAD004C */ lw $t5, 0x4c($a1) -.L800BD894: -/* 0BE494 800BD894 904B0000 */ lbu $t3, ($v0) -/* 0BE498 800BD898 91AE0006 */ lbu $t6, 6($t5) -/* 0BE49C 800BD89C 316CFFFD */ andi $t4, $t3, 0xfffd -/* 0BE4A0 800BD8A0 904B0001 */ lbu $t3, 1($v0) -/* 0BE4A4 800BD8A4 A04E0002 */ sb $t6, 2($v0) -/* 0BE4A8 800BD8A8 8CAF004C */ lw $t7, 0x4c($a1) -/* 0BE4AC 800BD8AC 8DF80000 */ lw $t8, ($t7) -/* 0BE4B0 800BD8B0 0018C940 */ sll $t9, $t8, 5 -/* 0BE4B4 800BD8B4 001947C2 */ srl $t0, $t9, 0x1f -/* 0BE4B8 800BD8B8 00084840 */ sll $t1, $t0, 1 -/* 0BE4BC 800BD8BC 312A0002 */ andi $t2, $t1, 2 -/* 0BE4C0 800BD8C0 014C6825 */ or $t5, $t2, $t4 -/* 0BE4C4 800BD8C4 A04D0000 */ sb $t5, ($v0) -/* 0BE4C8 800BD8C8 8CAE004C */ lw $t6, 0x4c($a1) -/* 0BE4CC 800BD8CC 316AFF1F */ andi $t2, $t3, 0xff1f -/* 0BE4D0 800BD8D0 91CF0007 */ lbu $t7, 7($t6) -/* 0BE4D4 800BD8D4 31F90003 */ andi $t9, $t7, 3 -/* 0BE4D8 800BD8D8 00194940 */ sll $t1, $t9, 5 -/* 0BE4DC 800BD8DC 012A6025 */ or $t4, $t1, $t2 -/* 0BE4E0 800BD8E0 A04C0001 */ sb $t4, 1($v0) -/* 0BE4E4 800BD8E4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BE4E8 800BD8E8 27BD0038 */ addiu $sp, $sp, 0x38 -/* 0BE4EC 800BD8EC 03E00008 */ jr $ra -/* 0BE4F0 800BD8F0 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD8F4.s b/asm/non_matchings/audio/playback/func_800BD8F4.s deleted file mode 100644 index 1c8bfb8c2..000000000 --- a/asm/non_matchings/audio/playback/func_800BD8F4.s +++ /dev/null @@ -1,14 +0,0 @@ -glabel func_800BD8F4 -/* 0BE4F4 800BD8F4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BE4F8 800BD8F8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BE4FC 800BD8FC AFA40018 */ sw $a0, 0x18($sp) -/* 0BE500 800BD900 AFA5001C */ sw $a1, 0x1c($sp) -/* 0BE504 800BD904 0C02F450 */ jal func_800BD140 -/* 0BE508 800BD908 8C840044 */ lw $a0, 0x44($a0) -/* 0BE50C 800BD90C 8FAF001C */ lw $t7, 0x1c($sp) -/* 0BE510 800BD910 8FB80018 */ lw $t8, 0x18($sp) -/* 0BE514 800BD914 AF0F0048 */ sw $t7, 0x48($t8) -/* 0BE518 800BD918 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BE51C 800BD91C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BE520 800BD920 03E00008 */ jr $ra -/* 0BE524 800BD924 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD928.s b/asm/non_matchings/audio/playback/func_800BD928.s deleted file mode 100644 index cb1462f67..000000000 --- a/asm/non_matchings/audio/playback/func_800BD928.s +++ /dev/null @@ -1,11 +0,0 @@ -glabel func_800BD928 -/* 0BE528 800BD928 908F0058 */ lbu $t7, 0x58($a0) -/* 0BE52C 800BD92C 240E0001 */ li $t6, 1 -/* 0BE530 800BD930 AC850048 */ sw $a1, 0x48($a0) -/* 0BE534 800BD934 A08E0030 */ sb $t6, 0x30($a0) -/* 0BE538 800BD938 3C01803B */ lui $at, %hi(D_803B70A0) # $at, 0x803b -/* 0BE53C 800BD93C C42470A0 */ lwc1 $f4, %lo(D_803B70A0)($at) -/* 0BE540 800BD940 35F80010 */ ori $t8, $t7, 0x10 -/* 0BE544 800BD944 A0980058 */ sb $t8, 0x58($a0) -/* 0BE548 800BD948 03E00008 */ jr $ra -/* 0BE54C 800BD94C E4840068 */ swc1 $f4, 0x68($a0) diff --git a/asm/non_matchings/audio/playback/func_800BD950.s b/asm/non_matchings/audio/playback/func_800BD950.s deleted file mode 100644 index a40ced84a..000000000 --- a/asm/non_matchings/audio/playback/func_800BD950.s +++ /dev/null @@ -1,21 +0,0 @@ -glabel func_800BD950 -/* 0BE550 800BD950 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0BE554 800BD954 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BE558 800BD958 AFA40020 */ sw $a0, 0x20($sp) -/* 0BE55C 800BD95C 0C02FC11 */ jal func_800BF044 -/* 0BE560 800BD960 AFA50024 */ sw $a1, 0x24($sp) -/* 0BE564 800BD964 10400008 */ beqz $v0, .L800BD988 -/* 0BE568 800BD968 AFA2001C */ sw $v0, 0x1c($sp) -/* 0BE56C 800BD96C 00402025 */ move $a0, $v0 -/* 0BE570 800BD970 0C02F5F0 */ jal func_800BD7C0 -/* 0BE574 800BD974 8FA50024 */ lw $a1, 0x24($sp) -/* 0BE578 800BD978 8FA40020 */ lw $a0, 0x20($sp) -/* 0BE57C 800BD97C 8FA5001C */ lw $a1, 0x1c($sp) -/* 0BE580 800BD980 0C02F5AD */ jal func_800BD6B4 -/* 0BE584 800BD984 24840030 */ addiu $a0, $a0, 0x30 -.L800BD988: -/* 0BE588 800BD988 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BE58C 800BD98C 8FA2001C */ lw $v0, 0x1c($sp) -/* 0BE590 800BD990 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0BE594 800BD994 03E00008 */ jr $ra -/* 0BE598 800BD998 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD99C.s b/asm/non_matchings/audio/playback/func_800BD99C.s deleted file mode 100644 index 7612e878c..000000000 --- a/asm/non_matchings/audio/playback/func_800BD99C.s +++ /dev/null @@ -1,22 +0,0 @@ -glabel func_800BD99C -/* 0BE59C 800BD99C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0BE5A0 800BD9A0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BE5A4 800BD9A4 AFA40020 */ sw $a0, 0x20($sp) -/* 0BE5A8 800BD9A8 AFA50024 */ sw $a1, 0x24($sp) -/* 0BE5AC 800BD9AC 0C02FC11 */ jal func_800BF044 -/* 0BE5B0 800BD9B0 24840010 */ addiu $a0, $a0, 0x10 -/* 0BE5B4 800BD9B4 10400008 */ beqz $v0, .L800BD9D8 -/* 0BE5B8 800BD9B8 AFA2001C */ sw $v0, 0x1c($sp) -/* 0BE5BC 800BD9BC 00402025 */ move $a0, $v0 -/* 0BE5C0 800BD9C0 0C02F64A */ jal func_800BD928 -/* 0BE5C4 800BD9C4 8FA50024 */ lw $a1, 0x24($sp) -/* 0BE5C8 800BD9C8 8FA40020 */ lw $a0, 0x20($sp) -/* 0BE5CC 800BD9CC 8FA5001C */ lw $a1, 0x1c($sp) -/* 0BE5D0 800BD9D0 0C02FC01 */ jal func_800BF004 -/* 0BE5D4 800BD9D4 24840020 */ addiu $a0, $a0, 0x20 -.L800BD9D8: -/* 0BE5D8 800BD9D8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BE5DC 800BD9DC 8FA2001C */ lw $v0, 0x1c($sp) -/* 0BE5E0 800BD9E0 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0BE5E4 800BD9E4 03E00008 */ jr $ra -/* 0BE5E8 800BD9E8 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BD9EC.s b/asm/non_matchings/audio/playback/func_800BD9EC.s deleted file mode 100644 index d0a9396b2..000000000 --- a/asm/non_matchings/audio/playback/func_800BD9EC.s +++ /dev/null @@ -1,24 +0,0 @@ -glabel func_800BD9EC -/* 0BE5EC 800BD9EC 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0BE5F0 800BD9F0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BE5F4 800BD9F4 AFA40020 */ sw $a0, 0x20($sp) -/* 0BE5F8 800BD9F8 AFA50024 */ sw $a1, 0x24($sp) -/* 0BE5FC 800BD9FC 8CAF004C */ lw $t7, 0x4c($a1) -/* 0BE600 800BDA00 24840030 */ addiu $a0, $a0, 0x30 -/* 0BE604 800BDA04 0C02F5C8 */ jal func_800BD720 -/* 0BE608 800BDA08 91E50005 */ lbu $a1, 5($t7) -/* 0BE60C 800BDA0C 10400008 */ beqz $v0, .L800BDA30 -/* 0BE610 800BDA10 AFA2001C */ sw $v0, 0x1c($sp) -/* 0BE614 800BDA14 00402025 */ move $a0, $v0 -/* 0BE618 800BDA18 0C02F63D */ jal func_800BD8F4 -/* 0BE61C 800BDA1C 8FA50024 */ lw $a1, 0x24($sp) -/* 0BE620 800BDA20 8FA40020 */ lw $a0, 0x20($sp) -/* 0BE624 800BDA24 8FA5001C */ lw $a1, 0x1c($sp) -/* 0BE628 800BDA28 0C02FC01 */ jal func_800BF004 -/* 0BE62C 800BDA2C 24840020 */ addiu $a0, $a0, 0x20 -.L800BDA30: -/* 0BE630 800BDA30 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BE634 800BDA34 8FA2001C */ lw $v0, 0x1c($sp) -/* 0BE638 800BDA38 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0BE63C 800BDA3C 03E00008 */ jr $ra -/* 0BE640 800BDA40 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BDA44.s b/asm/non_matchings/audio/playback/func_800BDA44.s deleted file mode 100644 index e3f10d176..000000000 --- a/asm/non_matchings/audio/playback/func_800BDA44.s +++ /dev/null @@ -1,198 +0,0 @@ -glabel func_800BDA44 -/* 0BE644 800BDA44 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0BE648 800BDA48 AFBF001C */ sw $ra, 0x1c($sp) -/* 0BE64C 800BDA4C AFB00018 */ sw $s0, 0x18($sp) -/* 0BE650 800BDA50 8C83004C */ lw $v1, 0x4c($a0) -/* 0BE654 800BDA54 00808025 */ move $s0, $a0 -/* 0BE658 800BDA58 90620002 */ lbu $v0, 2($v1) -/* 0BE65C 800BDA5C 304E0001 */ andi $t6, $v0, 1 -/* 0BE660 800BDA60 11C00016 */ beqz $t6, .L800BDABC -/* 0BE664 800BDA64 30590002 */ andi $t9, $v0, 2 -/* 0BE668 800BDA68 8C860040 */ lw $a2, 0x40($a0) -/* 0BE66C 800BDA6C 10C00013 */ beqz $a2, .L800BDABC -/* 0BE670 800BDA70 00000000 */ nop -/* 0BE674 800BDA74 8CCF0040 */ lw $t7, 0x40($a2) -/* 0BE678 800BDA78 148F0010 */ bne $a0, $t7, .L800BDABC -/* 0BE67C 800BDA7C 00000000 */ nop -/* 0BE680 800BDA80 8CD80048 */ lw $t8, 0x48($a2) -/* 0BE684 800BDA84 2401FFFF */ li $at, -1 -/* 0BE688 800BDA88 00C02025 */ move $a0, $a2 -/* 0BE68C 800BDA8C 1701000B */ bne $t8, $at, .L800BDABC -/* 0BE690 800BDA90 02002825 */ move $a1, $s0 -/* 0BE694 800BDA94 0C02F64A */ jal func_800BD928 -/* 0BE698 800BDA98 AFA60024 */ sw $a2, 0x24($sp) -/* 0BE69C 800BDA9C 0C02F5BD */ jal func_800BD6F4 -/* 0BE6A0 800BDAA0 8FA40024 */ lw $a0, 0x24($sp) -/* 0BE6A4 800BDAA4 8FA50024 */ lw $a1, 0x24($sp) -/* 0BE6A8 800BDAA8 8CA4000C */ lw $a0, 0xc($a1) -/* 0BE6AC 800BDAAC 0C02FC01 */ jal func_800BF004 -/* 0BE6B0 800BDAB0 24840020 */ addiu $a0, $a0, 0x20 -/* 0BE6B4 800BDAB4 1000009A */ b .L800BDD20 -/* 0BE6B8 800BDAB8 8FA20024 */ lw $v0, 0x24($sp) -.L800BDABC: -/* 0BE6BC 800BDABC 13200017 */ beqz $t9, .L800BDB1C -/* 0BE6C0 800BDAC0 30480004 */ andi $t0, $v0, 4 -/* 0BE6C4 800BDAC4 24640084 */ addiu $a0, $v1, 0x84 -/* 0BE6C8 800BDAC8 0C02F654 */ jal func_800BD950 -/* 0BE6CC 800BDACC 02002825 */ move $a1, $s0 -/* 0BE6D0 800BDAD0 14400010 */ bnez $v0, .L800BDB14 -/* 0BE6D4 800BDAD4 00403025 */ move $a2, $v0 -/* 0BE6D8 800BDAD8 8E04004C */ lw $a0, 0x4c($s0) -/* 0BE6DC 800BDADC 02002825 */ move $a1, $s0 -/* 0BE6E0 800BDAE0 0C02F667 */ jal func_800BD99C -/* 0BE6E4 800BDAE4 24840084 */ addiu $a0, $a0, 0x84 -/* 0BE6E8 800BDAE8 1440000A */ bnez $v0, .L800BDB14 -/* 0BE6EC 800BDAEC 00403025 */ move $a2, $v0 -/* 0BE6F0 800BDAF0 8E04004C */ lw $a0, 0x4c($s0) -/* 0BE6F4 800BDAF4 02002825 */ move $a1, $s0 -/* 0BE6F8 800BDAF8 0C02F67B */ jal func_800BD9EC -/* 0BE6FC 800BDAFC 24840084 */ addiu $a0, $a0, 0x84 -/* 0BE700 800BDB00 14400004 */ bnez $v0, .L800BDB14 -/* 0BE704 800BDB04 00403025 */ move $a2, $v0 -/* 0BE708 800BDB08 A2000002 */ sb $zero, 2($s0) -/* 0BE70C 800BDB0C 10000084 */ b .L800BDD20 -/* 0BE710 800BDB10 00001025 */ move $v0, $zero -.L800BDB14: -/* 0BE714 800BDB14 10000082 */ b .L800BDD20 -/* 0BE718 800BDB18 00C01025 */ move $v0, $a2 -.L800BDB1C: -/* 0BE71C 800BDB1C 1100002C */ beqz $t0, .L800BDBD0 -/* 0BE720 800BDB20 304C0008 */ andi $t4, $v0, 8 -/* 0BE724 800BDB24 24640084 */ addiu $a0, $v1, 0x84 -/* 0BE728 800BDB28 0C02F654 */ jal func_800BD950 -/* 0BE72C 800BDB2C 02002825 */ move $a1, $s0 -/* 0BE730 800BDB30 14400025 */ bnez $v0, .L800BDBC8 -/* 0BE734 800BDB34 00403025 */ move $a2, $v0 -/* 0BE738 800BDB38 8E09004C */ lw $t1, 0x4c($s0) -/* 0BE73C 800BDB3C 02002825 */ move $a1, $s0 -/* 0BE740 800BDB40 8D240044 */ lw $a0, 0x44($t1) -/* 0BE744 800BDB44 0C02F654 */ jal func_800BD950 -/* 0BE748 800BDB48 24840094 */ addiu $a0, $a0, 0x94 -/* 0BE74C 800BDB4C 1440001E */ bnez $v0, .L800BDBC8 -/* 0BE750 800BDB50 00403025 */ move $a2, $v0 -/* 0BE754 800BDB54 8E04004C */ lw $a0, 0x4c($s0) -/* 0BE758 800BDB58 02002825 */ move $a1, $s0 -/* 0BE75C 800BDB5C 0C02F667 */ jal func_800BD99C -/* 0BE760 800BDB60 24840084 */ addiu $a0, $a0, 0x84 -/* 0BE764 800BDB64 14400018 */ bnez $v0, .L800BDBC8 -/* 0BE768 800BDB68 00403025 */ move $a2, $v0 -/* 0BE76C 800BDB6C 8E0A004C */ lw $t2, 0x4c($s0) -/* 0BE770 800BDB70 02002825 */ move $a1, $s0 -/* 0BE774 800BDB74 8D440044 */ lw $a0, 0x44($t2) -/* 0BE778 800BDB78 0C02F667 */ jal func_800BD99C -/* 0BE77C 800BDB7C 24840094 */ addiu $a0, $a0, 0x94 -/* 0BE780 800BDB80 14400011 */ bnez $v0, .L800BDBC8 -/* 0BE784 800BDB84 00403025 */ move $a2, $v0 -/* 0BE788 800BDB88 8E04004C */ lw $a0, 0x4c($s0) -/* 0BE78C 800BDB8C 02002825 */ move $a1, $s0 -/* 0BE790 800BDB90 0C02F67B */ jal func_800BD9EC -/* 0BE794 800BDB94 24840084 */ addiu $a0, $a0, 0x84 -/* 0BE798 800BDB98 1440000B */ bnez $v0, .L800BDBC8 -/* 0BE79C 800BDB9C 00403025 */ move $a2, $v0 -/* 0BE7A0 800BDBA0 8E0B004C */ lw $t3, 0x4c($s0) -/* 0BE7A4 800BDBA4 02002825 */ move $a1, $s0 -/* 0BE7A8 800BDBA8 8D640044 */ lw $a0, 0x44($t3) -/* 0BE7AC 800BDBAC 0C02F67B */ jal func_800BD9EC -/* 0BE7B0 800BDBB0 24840094 */ addiu $a0, $a0, 0x94 -/* 0BE7B4 800BDBB4 14400004 */ bnez $v0, .L800BDBC8 -/* 0BE7B8 800BDBB8 00403025 */ move $a2, $v0 -/* 0BE7BC 800BDBBC A2000002 */ sb $zero, 2($s0) -/* 0BE7C0 800BDBC0 10000057 */ b .L800BDD20 -/* 0BE7C4 800BDBC4 00001025 */ move $v0, $zero -.L800BDBC8: -/* 0BE7C8 800BDBC8 10000055 */ b .L800BDD20 -/* 0BE7CC 800BDBCC 00C01025 */ move $v0, $a2 -.L800BDBD0: -/* 0BE7D0 800BDBD0 11800018 */ beqz $t4, .L800BDC34 -/* 0BE7D4 800BDBD4 24640084 */ addiu $a0, $v1, 0x84 -/* 0BE7D8 800BDBD8 3C04803B */ lui $a0, %hi(D_803B5FC8) # $a0, 0x803b -/* 0BE7DC 800BDBDC 24845FC8 */ addiu $a0, %lo(D_803B5FC8) # addiu $a0, $a0, 0x5fc8 -/* 0BE7E0 800BDBE0 0C02F654 */ jal func_800BD950 -/* 0BE7E4 800BDBE4 02002825 */ move $a1, $s0 -/* 0BE7E8 800BDBE8 14400010 */ bnez $v0, .L800BDC2C -/* 0BE7EC 800BDBEC 00403025 */ move $a2, $v0 -/* 0BE7F0 800BDBF0 3C04803B */ lui $a0, %hi(D_803B5FC8) # $a0, 0x803b -/* 0BE7F4 800BDBF4 24845FC8 */ addiu $a0, %lo(D_803B5FC8) # addiu $a0, $a0, 0x5fc8 -/* 0BE7F8 800BDBF8 0C02F667 */ jal func_800BD99C -/* 0BE7FC 800BDBFC 02002825 */ move $a1, $s0 -/* 0BE800 800BDC00 1440000A */ bnez $v0, .L800BDC2C -/* 0BE804 800BDC04 00403025 */ move $a2, $v0 -/* 0BE808 800BDC08 3C04803B */ lui $a0, %hi(D_803B5FC8) # $a0, 0x803b -/* 0BE80C 800BDC0C 24845FC8 */ addiu $a0, %lo(D_803B5FC8) # addiu $a0, $a0, 0x5fc8 -/* 0BE810 800BDC10 0C02F67B */ jal func_800BD9EC -/* 0BE814 800BDC14 02002825 */ move $a1, $s0 -/* 0BE818 800BDC18 14400004 */ bnez $v0, .L800BDC2C -/* 0BE81C 800BDC1C 00403025 */ move $a2, $v0 -/* 0BE820 800BDC20 A2000002 */ sb $zero, 2($s0) -/* 0BE824 800BDC24 1000003E */ b .L800BDD20 -/* 0BE828 800BDC28 00001025 */ move $v0, $zero -.L800BDC2C: -/* 0BE82C 800BDC2C 1000003C */ b .L800BDD20 -/* 0BE830 800BDC30 00C01025 */ move $v0, $a2 -.L800BDC34: -/* 0BE834 800BDC34 0C02F654 */ jal func_800BD950 -/* 0BE838 800BDC38 02002825 */ move $a1, $s0 -/* 0BE83C 800BDC3C 14400037 */ bnez $v0, .L800BDD1C -/* 0BE840 800BDC40 00403025 */ move $a2, $v0 -/* 0BE844 800BDC44 8E0D004C */ lw $t5, 0x4c($s0) -/* 0BE848 800BDC48 02002825 */ move $a1, $s0 -/* 0BE84C 800BDC4C 8DA40044 */ lw $a0, 0x44($t5) -/* 0BE850 800BDC50 0C02F654 */ jal func_800BD950 -/* 0BE854 800BDC54 24840094 */ addiu $a0, $a0, 0x94 -/* 0BE858 800BDC58 14400030 */ bnez $v0, .L800BDD1C -/* 0BE85C 800BDC5C 00403025 */ move $a2, $v0 -/* 0BE860 800BDC60 3C04803B */ lui $a0, %hi(D_803B5FC8) # $a0, 0x803b -/* 0BE864 800BDC64 24845FC8 */ addiu $a0, %lo(D_803B5FC8) # addiu $a0, $a0, 0x5fc8 -/* 0BE868 800BDC68 0C02F654 */ jal func_800BD950 -/* 0BE86C 800BDC6C 02002825 */ move $a1, $s0 -/* 0BE870 800BDC70 1440002A */ bnez $v0, .L800BDD1C -/* 0BE874 800BDC74 00403025 */ move $a2, $v0 -/* 0BE878 800BDC78 8E04004C */ lw $a0, 0x4c($s0) -/* 0BE87C 800BDC7C 02002825 */ move $a1, $s0 -/* 0BE880 800BDC80 0C02F667 */ jal func_800BD99C -/* 0BE884 800BDC84 24840084 */ addiu $a0, $a0, 0x84 -/* 0BE888 800BDC88 14400024 */ bnez $v0, .L800BDD1C -/* 0BE88C 800BDC8C 00403025 */ move $a2, $v0 -/* 0BE890 800BDC90 8E0E004C */ lw $t6, 0x4c($s0) -/* 0BE894 800BDC94 02002825 */ move $a1, $s0 -/* 0BE898 800BDC98 8DC40044 */ lw $a0, 0x44($t6) -/* 0BE89C 800BDC9C 0C02F667 */ jal func_800BD99C -/* 0BE8A0 800BDCA0 24840094 */ addiu $a0, $a0, 0x94 -/* 0BE8A4 800BDCA4 1440001D */ bnez $v0, .L800BDD1C -/* 0BE8A8 800BDCA8 00403025 */ move $a2, $v0 -/* 0BE8AC 800BDCAC 3C04803B */ lui $a0, %hi(D_803B5FC8) # $a0, 0x803b -/* 0BE8B0 800BDCB0 24845FC8 */ addiu $a0, %lo(D_803B5FC8) # addiu $a0, $a0, 0x5fc8 -/* 0BE8B4 800BDCB4 0C02F667 */ jal func_800BD99C -/* 0BE8B8 800BDCB8 02002825 */ move $a1, $s0 -/* 0BE8BC 800BDCBC 14400017 */ bnez $v0, .L800BDD1C -/* 0BE8C0 800BDCC0 00403025 */ move $a2, $v0 -/* 0BE8C4 800BDCC4 8E04004C */ lw $a0, 0x4c($s0) -/* 0BE8C8 800BDCC8 02002825 */ move $a1, $s0 -/* 0BE8CC 800BDCCC 0C02F67B */ jal func_800BD9EC -/* 0BE8D0 800BDCD0 24840084 */ addiu $a0, $a0, 0x84 -/* 0BE8D4 800BDCD4 14400011 */ bnez $v0, .L800BDD1C -/* 0BE8D8 800BDCD8 00403025 */ move $a2, $v0 -/* 0BE8DC 800BDCDC 8E0F004C */ lw $t7, 0x4c($s0) -/* 0BE8E0 800BDCE0 02002825 */ move $a1, $s0 -/* 0BE8E4 800BDCE4 8DE40044 */ lw $a0, 0x44($t7) -/* 0BE8E8 800BDCE8 0C02F67B */ jal func_800BD9EC -/* 0BE8EC 800BDCEC 24840094 */ addiu $a0, $a0, 0x94 -/* 0BE8F0 800BDCF0 1440000A */ bnez $v0, .L800BDD1C -/* 0BE8F4 800BDCF4 00403025 */ move $a2, $v0 -/* 0BE8F8 800BDCF8 3C04803B */ lui $a0, %hi(D_803B5FC8) # $a0, 0x803b -/* 0BE8FC 800BDCFC 24845FC8 */ addiu $a0, %lo(D_803B5FC8) # addiu $a0, $a0, 0x5fc8 -/* 0BE900 800BDD00 0C02F67B */ jal func_800BD9EC -/* 0BE904 800BDD04 02002825 */ move $a1, $s0 -/* 0BE908 800BDD08 14400004 */ bnez $v0, .L800BDD1C -/* 0BE90C 800BDD0C 00403025 */ move $a2, $v0 -/* 0BE910 800BDD10 A2000002 */ sb $zero, 2($s0) -/* 0BE914 800BDD14 10000002 */ b .L800BDD20 -/* 0BE918 800BDD18 00001025 */ move $v0, $zero -.L800BDD1C: -/* 0BE91C 800BDD1C 00C01025 */ move $v0, $a2 -.L800BDD20: -/* 0BE920 800BDD20 8FBF001C */ lw $ra, 0x1c($sp) -/* 0BE924 800BDD24 8FB00018 */ lw $s0, 0x18($sp) -/* 0BE928 800BDD28 27BD0028 */ addiu $sp, $sp, 0x28 -/* 0BE92C 800BDD2C 03E00008 */ jr $ra -/* 0BE930 800BDD30 00000000 */ nop diff --git a/asm/non_matchings/audio/playback/func_800BDD34.s b/asm/non_matchings/audio/playback/func_800BDD34.s deleted file mode 100644 index 29afe4a26..000000000 --- a/asm/non_matchings/audio/playback/func_800BDD34.s +++ /dev/null @@ -1,73 +0,0 @@ -glabel func_800BDD34 -/* 0BE934 800BDD34 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0BE938 800BDD38 AFB4002C */ sw $s4, 0x2c($sp) -/* 0BE93C 800BDD3C 3C14803B */ lui $s4, %hi(gMaxSimultaneousNotes) # $s4, 0x803b -/* 0BE940 800BDD40 269470B0 */ addiu $s4, %lo(gMaxSimultaneousNotes) # addiu $s4, $s4, 0x70b0 -/* 0BE944 800BDD44 8E8E0000 */ lw $t6, ($s4) -/* 0BE948 800BDD48 AFB10020 */ sw $s1, 0x20($sp) -/* 0BE94C 800BDD4C AFBF003C */ sw $ra, 0x3c($sp) -/* 0BE950 800BDD50 AFB70038 */ sw $s7, 0x38($sp) -/* 0BE954 800BDD54 AFB60034 */ sw $s6, 0x34($sp) -/* 0BE958 800BDD58 AFB50030 */ sw $s5, 0x30($sp) -/* 0BE95C 800BDD5C AFB30028 */ sw $s3, 0x28($sp) -/* 0BE960 800BDD60 AFB20024 */ sw $s2, 0x24($sp) -/* 0BE964 800BDD64 AFB0001C */ sw $s0, 0x1c($sp) -/* 0BE968 800BDD68 F7B40010 */ sdc1 $f20, 0x10($sp) -/* 0BE96C 800BDD6C 19C0002A */ blez $t6, .L800BDE18 -/* 0BE970 800BDD70 00008825 */ move $s1, $zero -/* 0BE974 800BDD74 3C17803B */ lui $s7, %hi(gNotesAndBuffersPool) # $s7, 0x803b -/* 0BE978 800BDD78 3C16800F */ lui $s6, %hi(gZeroNoteSub) # $s6, 0x800f -/* 0BE97C 800BDD7C 3C15803B */ lui $s5, %hi(D_803B1508) # $s5, 0x803b -/* 0BE980 800BDD80 4480A000 */ mtc1 $zero, $f20 -/* 0BE984 800BDD84 26B51508 */ addiu $s5, %lo(D_803B1508) # addiu $s5, $s5, 0x1508 -/* 0BE988 800BDD88 26D66250 */ addiu $s6, %lo(gZeroNoteSub) # addiu $s6, $s6, 0x6250 -/* 0BE98C 800BDD8C 26F7FBE8 */ addiu $s7, %lo(gNotesAndBuffersPool) # addiu $s7, $s7, -0x418 -/* 0BE990 800BDD90 00009025 */ move $s2, $zero -/* 0BE994 800BDD94 2413FFFF */ li $s3, -1 -/* 0BE998 800BDD98 8EAF0000 */ lw $t7, ($s5) -.L800BDD9C: -/* 0BE99C 800BDD9C 8EC10000 */ lw $at, ($s6) -/* 0BE9A0 800BDDA0 02E02025 */ move $a0, $s7 -/* 0BE9A4 800BDDA4 024F8021 */ addu $s0, $s2, $t7 -/* 0BE9A8 800BDDA8 AE0100B0 */ sw $at, 0xb0($s0) -/* 0BE9AC 800BDDAC 8ED90004 */ lw $t9, 4($s6) -/* 0BE9B0 800BDDB0 240500A0 */ li $a1, 160 -/* 0BE9B4 800BDDB4 AE1900B4 */ sw $t9, 0xb4($s0) -/* 0BE9B8 800BDDB8 8EC10008 */ lw $at, 8($s6) -/* 0BE9BC 800BDDBC AE0100B8 */ sw $at, 0xb8($s0) -/* 0BE9C0 800BDDC0 8ED9000C */ lw $t9, 0xc($s6) -/* 0BE9C4 800BDDC4 A2000030 */ sb $zero, 0x30($s0) -/* 0BE9C8 800BDDC8 AE130044 */ sw $s3, 0x44($s0) -/* 0BE9CC 800BDDCC AE130048 */ sw $s3, 0x48($s0) -/* 0BE9D0 800BDDD0 AE130040 */ sw $s3, 0x40($s0) -/* 0BE9D4 800BDDD4 A2000031 */ sb $zero, 0x31($s0) -/* 0BE9D8 800BDDD8 E6140054 */ swc1 $f20, 0x54($s0) -/* 0BE9DC 800BDDDC A6000034 */ sh $zero, 0x34($s0) -/* 0BE9E0 800BDDE0 A2000059 */ sb $zero, 0x59($s0) -/* 0BE9E4 800BDDE4 A2000058 */ sb $zero, 0x58($s0) -/* 0BE9E8 800BDDE8 A20000A0 */ sb $zero, 0xa0($s0) -/* 0BE9EC 800BDDEC E6140080 */ swc1 $f20, 0x80($s0) -/* 0BE9F0 800BDDF0 E6140084 */ swc1 $f20, 0x84($s0) -/* 0BE9F4 800BDDF4 0C02E3FF */ jal soundAlloc -/* 0BE9F8 800BDDF8 AE1900BC */ sw $t9, 0xbc($s0) -/* 0BE9FC 800BDDFC AE02001C */ sw $v0, 0x1c($s0) -/* 0BEA00 800BDE00 8E880000 */ lw $t0, ($s4) -/* 0BEA04 800BDE04 26310001 */ addiu $s1, $s1, 1 -/* 0BEA08 800BDE08 265200C0 */ addiu $s2, $s2, 0xc0 -/* 0BEA0C 800BDE0C 0228082A */ slt $at, $s1, $t0 -/* 0BEA10 800BDE10 5420FFE2 */ bnel $at, $zero, .L800BDD9C -/* 0BEA14 800BDE14 8EAF0000 */ lw $t7, ($s5) -.L800BDE18: -/* 0BEA18 800BDE18 8FBF003C */ lw $ra, 0x3c($sp) -/* 0BEA1C 800BDE1C D7B40010 */ ldc1 $f20, 0x10($sp) -/* 0BEA20 800BDE20 8FB0001C */ lw $s0, 0x1c($sp) -/* 0BEA24 800BDE24 8FB10020 */ lw $s1, 0x20($sp) -/* 0BEA28 800BDE28 8FB20024 */ lw $s2, 0x24($sp) -/* 0BEA2C 800BDE2C 8FB30028 */ lw $s3, 0x28($sp) -/* 0BEA30 800BDE30 8FB4002C */ lw $s4, 0x2c($sp) -/* 0BEA34 800BDE34 8FB50030 */ lw $s5, 0x30($sp) -/* 0BEA38 800BDE38 8FB60034 */ lw $s6, 0x34($sp) -/* 0BEA3C 800BDE3C 8FB70038 */ lw $s7, 0x38($sp) -/* 0BEA40 800BDE40 03E00008 */ jr $ra -/* 0BEA44 800BDE44 27BD0040 */ addiu $sp, $sp, 0x40 -/* 0BEA48 800BDE48 00000000 */ nop diff --git a/asm/non_matchings/audio/port_eu/create_next_audio_frame_task.s b/asm/non_matchings/audio/port_eu/create_next_audio_frame_task.s index dcbab6ba0..d3ad9945c 100644 --- a/asm/non_matchings/audio/port_eu/create_next_audio_frame_task.s +++ b/asm/non_matchings/audio/port_eu/create_next_audio_frame_task.s @@ -143,7 +143,7 @@ glabel create_next_audio_frame_task /* 0CC12C 800CB52C 02402025 */ move $a0, $s2 .L800CB530: /* 0CC130 800CB530 3C01803B */ lui $at, %hi(gCurrAudioFrameDmaCount) # $at, 0x803b -/* 0CC134 800CB534 0C02EB01 */ jal func_800BAC04 +/* 0CC134 800CB534 0C02EB01 */ jal decrease_sample_dma_ttls /* 0CC138 800CB538 AC2070BC */ sw $zero, %lo(gCurrAudioFrameDmaCount)($at) /* 0CC13C 800CB53C 3C04800F */ lui $a0, %hi(D_800EA3B0) # $a0, 0x800f /* 0CC140 800CB540 8C84A3B0 */ lw $a0, %lo(D_800EA3B0)($a0) diff --git a/asm/non_matchings/audio/port_eu/func_800CB818.s b/asm/non_matchings/audio/port_eu/func_800CB818.s index 3bcae3d6d..2cae275ed 100644 --- a/asm/non_matchings/audio/port_eu/func_800CB818.s +++ b/asm/non_matchings/audio/port_eu/func_800CB818.s @@ -46,8 +46,8 @@ glabel func_800CB818 /* 0CC4C0 800CB8C0 8FDF002C */ lw $ra, 0x2c($fp) .L800CB8C4: /* 0CC4C4 800CB8C4 90E20001 */ lbu $v0, 1($a3) -/* 0CC4C8 800CB8C8 3C0F803B */ lui $t7, %hi(D_803B1510) # $t7, 0x803b -/* 0CC4CC 800CB8CC 25EF1510 */ addiu $t7, %lo(D_803B1510) # addiu $t7, $t7, 0x1510 +/* 0CC4C8 800CB8C8 3C0F803B */ lui $t7, %hi(gSequencePlayers) # $t7, 0x803b +/* 0CC4CC 800CB8CC 25EF1510 */ addiu $t7, %lo(gSequencePlayers) # addiu $t7, $t7, 0x1510 /* 0CC4D0 800CB8D0 00027080 */ sll $t6, $v0, 2 /* 0CC4D4 800CB8D4 01C27021 */ addu $t6, $t6, $v0 /* 0CC4D8 800CB8D8 000E70C0 */ sll $t6, $t6, 3 @@ -61,31 +61,31 @@ glabel func_800CB818 /* 0CC4F8 800CB8F8 8CE50004 */ lw $a1, 4($a3) /* 0CC4FC 800CB8FC 14A00005 */ bnez $a1, .L800CB914 /* 0CC500 800CB900 00000000 */ nop -/* 0CC504 800CB904 0C02FBCB */ jal func_800BEF2C +/* 0CC504 800CB904 0C02FBCB */ jal sequence_player_disable /* 0CC508 800CB908 00000000 */ nop /* 0CC50C 800CB90C 1000003A */ b .L800CB9F8 /* 0CC510 800CB910 8FDF002C */ lw $ra, 0x2c($fp) .L800CB914: -/* 0CC514 800CB914 0C032E82 */ jal func_800CBA08 +/* 0CC514 800CB914 0C032E82 */ jal seq_player_fade_to_zero_volume /* 0CC518 800CB918 00402025 */ move $a0, $v0 /* 0CC51C 800CB91C 10000036 */ b .L800CB9F8 /* 0CC520 800CB920 8FDF002C */ lw $ra, 0x2c($fp) .L800CB924: /* 0CC524 800CB924 8CE80004 */ lw $t0, 4($a3) -/* 0CC528 800CB928 3C01803B */ lui $at, %hi(D_803B70B6) # $at, 0x803b +/* 0CC528 800CB928 3C01803B */ lui $at, %hi(gAudioLibSoundMode) # $at, 0x803b /* 0CC52C 800CB92C 10000031 */ b .L800CB9F4 -/* 0CC530 800CB930 A02870B6 */ sb $t0, %lo(D_803B70B6)($at) +/* 0CC530 800CB930 A02870B6 */ sb $t0, %lo(gAudioLibSoundMode)($at) .L800CB934: -/* 0CC534 800CB934 3C02803B */ lui $v0, %hi(D_803B1510) # $v0, 0x803b -/* 0CC538 800CB938 904B1510 */ lbu $t3, %lo(D_803B1510)($v0) +/* 0CC534 800CB934 3C02803B */ lui $v0, %hi(gSequencePlayers) # $v0, 0x803b +/* 0CC538 800CB938 904B1510 */ lbu $t3, %lo(gSequencePlayers)($v0) /* 0CC53C 800CB93C 90681658 */ lbu $t0, %lo(D_803B1658)($v1) /* 0CC540 800CB940 3C04803B */ lui $a0, %hi(D_803B17A0) # $a0, 0x803b /* 0CC544 800CB944 3C05803B */ lui $a1, %hi(D_803B18E8) # $a1, 0x803b /* 0CC548 800CB948 90AA18E8 */ lbu $t2, %lo(D_803B18E8)($a1) /* 0CC54C 800CB94C 908E17A0 */ lbu $t6, %lo(D_803B17A0)($a0) -/* 0CC550 800CB950 3C01803B */ lui $at, %hi(D_803B1510) # $at, 0x803b +/* 0CC550 800CB950 3C01803B */ lui $at, %hi(gSequencePlayers) # $at, 0x803b /* 0CC554 800CB954 35620024 */ ori $v0, $t3, 0x24 -/* 0CC558 800CB958 A0221510 */ sb $v0, %lo(D_803B1510)($at) +/* 0CC558 800CB958 A0221510 */ sb $v0, %lo(gSequencePlayers)($at) /* 0CC55C 800CB95C 3C01803B */ lui $at, %hi(D_803B1658) # $at, 0x803b /* 0CC560 800CB960 35030024 */ ori $v1, $t0, 0x24 /* 0CC564 800CB964 A0231658 */ sb $v1, %lo(D_803B1658)($at) @@ -97,17 +97,17 @@ glabel func_800CB818 /* 0CC57C 800CB97C 1000001D */ b .L800CB9F4 /* 0CC580 800CB980 A02C18E8 */ sb $t4, %lo(D_803B18E8)($at) .L800CB984: -/* 0CC584 800CB984 3C02803B */ lui $v0, %hi(D_803B1510) # $v0, 0x803b -/* 0CC588 800CB988 90421510 */ lbu $v0, %lo(D_803B1510)($v0) +/* 0CC584 800CB984 3C02803B */ lui $v0, %hi(gSequencePlayers) # $v0, 0x803b +/* 0CC588 800CB988 90421510 */ lbu $v0, %lo(gSequencePlayers)($v0) /* 0CC58C 800CB98C 90631658 */ lbu $v1, %lo(D_803B1658)($v1) /* 0CC590 800CB990 3C04803B */ lui $a0, %hi(D_803B17A0) # $a0, 0x803b /* 0CC594 800CB994 908417A0 */ lbu $a0, %lo(D_803B17A0)($a0) /* 0CC598 800CB998 3C05803B */ lui $a1, %hi(D_803B18E8) # $a1, 0x803b /* 0CC59C 800CB99C 304FFFDF */ andi $t7, $v0, 0xffdf /* 0CC5A0 800CB9A0 90A518E8 */ lbu $a1, %lo(D_803B18E8)($a1) -/* 0CC5A4 800CB9A4 3C01803B */ lui $at, %hi(D_803B1510) # $at, 0x803b +/* 0CC5A4 800CB9A4 3C01803B */ lui $at, %hi(gSequencePlayers) # $at, 0x803b /* 0CC5A8 800CB9A8 35E20004 */ ori $v0, $t7, 4 -/* 0CC5AC 800CB9AC A0221510 */ sb $v0, %lo(D_803B1510)($at) +/* 0CC5AC 800CB9AC A0221510 */ sb $v0, %lo(gSequencePlayers)($at) /* 0CC5B0 800CB9B0 306AFFDF */ andi $t2, $v1, 0xffdf /* 0CC5B4 800CB9B4 35430004 */ ori $v1, $t2, 4 /* 0CC5B8 800CB9B8 3C01803B */ lui $at, %hi(D_803B1658) # $at, 0x803b diff --git a/asm/non_matchings/audio/port_eu/func_800CBA08.s b/asm/non_matchings/audio/port_eu/func_800CBA08.s deleted file mode 100644 index 97d43fba8..000000000 --- a/asm/non_matchings/audio/port_eu/func_800CBA08.s +++ /dev/null @@ -1,25 +0,0 @@ -glabel func_800CBA08 -/* 0CC608 800CBA08 14A00002 */ bnez $a1, .L800CBA14 -/* 0CC60C 800CBA0C 27ADFFF0 */ addiu $t5, $sp, -0x10 -/* 0CC610 800CBA10 24050001 */ li $a1, 1 -.L800CBA14: -/* 0CC614 800CBA14 44853000 */ mtc1 $a1, $f6 -/* 0CC618 800CBA18 00047080 */ sll $t6, $a0, 2 -/* 0CC61C 800CBA1C 01C47021 */ addu $t6, $t6, $a0 -/* 0CC620 800CBA20 000E70C0 */ sll $t6, $t6, 3 -/* 0CC624 800CBA24 46803220 */ cvt.s.w $f8, $f6 -/* 0CC628 800CBA28 01C47021 */ addu $t6, $t6, $a0 -/* 0CC62C 800CBA2C 3C0F803B */ lui $t7, %hi(D_803B1510) # $t7, 0x803b -/* 0CC630 800CBA30 25EF1510 */ addiu $t7, %lo(D_803B1510) # addiu $t7, $t7, 0x1510 -/* 0CC634 800CBA34 000E70C0 */ sll $t6, $t6, 3 -/* 0CC638 800CBA38 01CF1021 */ addu $v0, $t6, $t7 -/* 0CC63C 800CBA3C C4440018 */ lwc1 $f4, 0x18($v0) -/* 0CC640 800CBA40 24180002 */ li $t8, 2 -/* 0CC644 800CBA44 01A0E825 */ move $sp, $t5 -/* 0CC648 800CBA48 46082283 */ div.s $f10, $f4, $f8 -/* 0CC64C 800CBA4C A0580001 */ sb $t8, 1($v0) -/* 0CC650 800CBA50 A4450010 */ sh $a1, 0x10($v0) -/* 0CC654 800CBA54 25BD0010 */ addiu $sp, $t5, 0x10 -/* 0CC658 800CBA58 46005407 */ neg.s $f16, $f10 -/* 0CC65C 800CBA5C 03E00008 */ jr $ra -/* 0CC660 800CBA60 E450001C */ swc1 $f16, 0x1c($v0) diff --git a/asm/non_matchings/audio/port_eu/func_800CBA64.s b/asm/non_matchings/audio/port_eu/func_800CBA64.s deleted file mode 100644 index 9cc97619e..000000000 --- a/asm/non_matchings/audio/port_eu/func_800CBA64.s +++ /dev/null @@ -1,22 +0,0 @@ -glabel func_800CBA64 -/* 0CC664 800CBA64 10A00010 */ beqz $a1, .L800CBAA8 -/* 0CC668 800CBA68 27ADFFF0 */ addiu $t5, $sp, -0x10 -/* 0CC66C 800CBA6C 00047080 */ sll $t6, $a0, 2 -/* 0CC670 800CBA70 01C47021 */ addu $t6, $t6, $a0 -/* 0CC674 800CBA74 000E70C0 */ sll $t6, $t6, 3 -/* 0CC678 800CBA78 01C47021 */ addu $t6, $t6, $a0 -/* 0CC67C 800CBA7C 3C0F803B */ lui $t7, %hi(D_803B1510) # $t7, 0x803b -/* 0CC680 800CBA80 25EF1510 */ addiu $t7, %lo(D_803B1510) # addiu $t7, $t7, 0x1510 -/* 0CC684 800CBA84 000E70C0 */ sll $t6, $t6, 3 -/* 0CC688 800CBA88 01CF1021 */ addu $v0, $t6, $t7 -/* 0CC68C 800CBA8C 44800000 */ mtc1 $zero, $f0 -/* 0CC690 800CBA90 24180001 */ li $t8, 1 -/* 0CC694 800CBA94 A0580001 */ sb $t8, 1($v0) -/* 0CC698 800CBA98 A4450012 */ sh $a1, 0x12($v0) -/* 0CC69C 800CBA9C A4450010 */ sh $a1, 0x10($v0) -/* 0CC6A0 800CBAA0 E4400018 */ swc1 $f0, 0x18($v0) -/* 0CC6A4 800CBAA4 E440001C */ swc1 $f0, 0x1c($v0) -.L800CBAA8: -/* 0CC6A8 800CBAA8 01A0E825 */ move $sp, $t5 -/* 0CC6AC 800CBAAC 03E00008 */ jr $ra -/* 0CC6B0 800CBAB0 25BD0010 */ addiu $sp, $t5, 0x10 diff --git a/asm/non_matchings/audio/port_eu/func_800CBCB0.s b/asm/non_matchings/audio/port_eu/func_800CBCB0.s index f9450087b..0c203a876 100644 --- a/asm/non_matchings/audio/port_eu/func_800CBCB0.s +++ b/asm/non_matchings/audio/port_eu/func_800CBCB0.s @@ -12,12 +12,12 @@ glabel func_800CBCB0 /* 0CC8D8 800CBCD8 00047202 */ srl $t6, $a0, 8 /* 0CC8DC 800CBCDC 325800FF */ andi $t8, $s2, 0xff /* 0CC8E0 800CBCE0 3C138019 */ lui $s3, %hi(D_80193820) # $s3, 0x8019 -/* 0CC8E4 800CBCE4 3C15803B */ lui $s5, %hi(D_803B1510) # $s5, 0x803b +/* 0CC8E4 800CBCE4 3C15803B */ lui $s5, %hi(gSequencePlayers) # $s5, 0x803b /* 0CC8E8 800CBCE8 03A0F025 */ move $fp, $sp /* 0CC8EC 800CBCEC AFBF004C */ sw $ra, 0x4c($sp) /* 0CC8F0 800CBCF0 AFB00028 */ sw $s0, 0x28($sp) /* 0CC8F4 800CBCF4 31D100FF */ andi $s1, $t6, 0xff -/* 0CC8F8 800CBCF8 26B51510 */ addiu $s5, %lo(D_803B1510) # addiu $s5, $s5, 0x1510 +/* 0CC8F8 800CBCF8 26B51510 */ addiu $s5, %lo(gSequencePlayers) # addiu $s5, $s5, 0x1510 /* 0CC8FC 800CBCFC 26733820 */ addiu $s3, %lo(D_80193820) # addiu $s3, $s3, 0x3820 /* 0CC900 800CBD00 03009025 */ move $s2, $t8 /* 0CC904 800CBD04 241400F0 */ li $s4, 240 @@ -103,8 +103,8 @@ glabel func_800CBCB0 /* 0CCA24 800CBE24 00057880 */ sll $t7, $a1, 2 /* 0CCA28 800CBE28 006FC021 */ addu $t8, $v1, $t7 /* 0CCA2C 800CBE2C 8F020030 */ lw $v0, 0x30($t8) -/* 0CCA30 800CBE30 3C19803B */ lui $t9, %hi(D_803B5EF0) # $t9, 0x803b -/* 0CCA34 800CBE34 27395EF0 */ addiu $t9, %lo(D_803B5EF0) # addiu $t9, $t9, 0x5ef0 +/* 0CCA30 800CBE30 3C19803B */ lui $t9, %hi(gSequenceChannelNone) # $t9, 0x803b +/* 0CCA34 800CBE34 27395EF0 */ addiu $t9, %lo(gSequenceChannelNone) # addiu $t9, $t9, 0x5ef0 /* 0CCA38 800CBE38 10590033 */ beq $v0, $t9, .L800CBF08 /* 0CCA3C 800CBE3C 2488FFFF */ addiu $t0, $a0, -1 /* 0CCA40 800CBE40 2D010008 */ sltiu $at, $t0, 8 diff --git a/asm/non_matchings/audio/seqplayer/func_800BE8F0.s b/asm/non_matchings/audio/seqplayer/func_800BE8F0.s deleted file mode 100644 index 184898054..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BE8F0.s +++ /dev/null @@ -1,74 +0,0 @@ -glabel func_800BE8F0 -/* 0BF4F0 800BE8F0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BF4F4 800BE8F4 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BF4F8 800BE8F8 908E0000 */ lbu $t6, ($a0) -/* 0BF4FC 800BE8FC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BF500 800BE900 44810000 */ mtc1 $at, $f0 -/* 0BF504 800BE904 31D8FF7F */ andi $t8, $t6, 0xff7f -/* 0BF508 800BE908 330800BF */ andi $t0, $t8, 0xbf -/* 0BF50C 800BE90C A0980000 */ sb $t8, ($a0) -/* 0BF510 800BE910 310A00DF */ andi $t2, $t0, 0xdf -/* 0BF514 800BE914 A0880000 */ sb $t0, ($a0) -/* 0BF518 800BE918 314C00EF */ andi $t4, $t2, 0xef -/* 0BF51C 800BE91C A08A0000 */ sb $t2, ($a0) -/* 0BF520 800BE920 318E00F7 */ andi $t6, $t4, 0xf7 -/* 0BF524 800BE924 A08C0000 */ sb $t4, ($a0) -/* 0BF528 800BE928 31D800FB */ andi $t8, $t6, 0xfb -/* 0BF52C 800BE92C 24020800 */ li $v0, 2048 -/* 0BF530 800BE930 A08E0000 */ sb $t6, ($a0) -/* 0BF534 800BE934 3C0C800F */ lui $t4, %hi(gDefaultEnvelope) # $t4, 0x800f -/* 0BF538 800BE938 00802825 */ move $a1, $a0 -/* 0BF53C 800BE93C A0980000 */ sb $t8, ($a0) -/* 0BF540 800BE940 331900FD */ andi $t9, $t8, 0xfd -/* 0BF544 800BE944 240800FF */ li $t0, 255 -/* 0BF548 800BE948 24090040 */ li $t1, 64 -/* 0BF54C 800BE94C 240A0080 */ li $t2, 128 -/* 0BF550 800BE950 240B0003 */ li $t3, 3 -/* 0BF554 800BE954 258C6240 */ addiu $t4, %lo(gDefaultEnvelope) # addiu $t4, $t4, 0x6240 -/* 0BF558 800BE958 240D0020 */ li $t5, 32 -/* 0BF55C 800BE95C A4820010 */ sh $v0, 0x10($a0) -/* 0BF560 800BE960 A482000C */ sh $v0, 0xc($a0) -/* 0BF564 800BE964 A480001E */ sh $zero, 0x1e($a0) -/* 0BF568 800BE968 A0990000 */ sb $t9, ($a0) -/* 0BF56C 800BE96C A0800008 */ sb $zero, 8($a0) -/* 0BF570 800BE970 A0880001 */ sb $t0, 1($a0) -/* 0BF574 800BE974 A0800078 */ sb $zero, 0x78($a0) -/* 0BF578 800BE978 A0890009 */ sb $t1, 9($a0) -/* 0BF57C 800BE97C A08A000A */ sb $t2, 0xa($a0) -/* 0BF580 800BE980 AC800038 */ sw $zero, 0x38($a0) -/* 0BF584 800BE984 A0800007 */ sb $zero, 7($a0) -/* 0BF588 800BE988 A0800004 */ sb $zero, 4($a0) -/* 0BF58C 800BE98C A08B0005 */ sb $t3, 5($a0) -/* 0BF590 800BE990 A480001A */ sh $zero, 0x1a($a0) -/* 0BF594 800BE994 AC8C0080 */ sw $t4, 0x80($a0) -/* 0BF598 800BE998 A08D007C */ sb $t5, 0x7c($a0) -/* 0BF59C 800BE99C A080007D */ sb $zero, 0x7d($a0) -/* 0BF5A0 800BE9A0 A4800012 */ sh $zero, 0x12($a0) -/* 0BF5A4 800BE9A4 A480000E */ sh $zero, 0xe($a0) -/* 0BF5A8 800BE9A8 A4800014 */ sh $zero, 0x14($a0) -/* 0BF5AC 800BE9AC A4800016 */ sh $zero, 0x16($a0) -/* 0BF5B0 800BE9B0 A4800018 */ sh $zero, 0x18($a0) -/* 0BF5B4 800BE9B4 E4800024 */ swc1 $f0, 0x24($a0) -/* 0BF5B8 800BE9B8 E4800020 */ swc1 $f0, 0x20($a0) -/* 0BF5BC 800BE9BC E4800030 */ swc1 $f0, 0x30($a0) -/* 0BF5C0 800BE9C0 00002025 */ move $a0, $zero -/* 0BF5C4 800BE9C4 2402FFFF */ li $v0, -1 -/* 0BF5C8 800BE9C8 00A01825 */ move $v1, $a1 -/* 0BF5CC 800BE9CC 24060008 */ li $a2, 8 -.L800BE9D0: -/* 0BF5D0 800BE9D0 24840004 */ addiu $a0, $a0, 4 -/* 0BF5D4 800BE9D4 A0620059 */ sb $v0, 0x59($v1) -/* 0BF5D8 800BE9D8 A062005A */ sb $v0, 0x5a($v1) -/* 0BF5DC 800BE9DC A062005B */ sb $v0, 0x5b($v1) -/* 0BF5E0 800BE9E0 24630004 */ addiu $v1, $v1, 4 -/* 0BF5E4 800BE9E4 1486FFFA */ bne $a0, $a2, .L800BE9D0 -/* 0BF5E8 800BE9E8 A0620054 */ sb $v0, 0x54($v1) -/* 0BF5EC 800BE9EC 90AE0000 */ lbu $t6, ($a1) -/* 0BF5F0 800BE9F0 24A40084 */ addiu $a0, $a1, 0x84 -/* 0BF5F4 800BE9F4 31CFFFFE */ andi $t7, $t6, 0xfffe -/* 0BF5F8 800BE9F8 0C02F4C6 */ jal func_800BD318 -/* 0BF5FC 800BE9FC A0AF0000 */ sb $t7, ($a1) -/* 0BF600 800BEA00 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BF604 800BEA04 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BF608 800BEA08 03E00008 */ jr $ra -/* 0BF60C 800BEA0C 00000000 */ nop diff --git a/asm/non_matchings/audio/seqplayer/func_800BEA10.s b/asm/non_matchings/audio/seqplayer/func_800BEA10.s deleted file mode 100644 index 72cee7908..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BEA10.s +++ /dev/null @@ -1,70 +0,0 @@ -glabel func_800BEA10 -/* 0BF610 800BEA10 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0BF614 800BEA14 00057880 */ sll $t7, $a1, 2 -/* 0BF618 800BEA18 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BF61C 800BEA1C AFA40028 */ sw $a0, 0x28($sp) -/* 0BF620 800BEA20 008F3021 */ addu $a2, $a0, $t7 -/* 0BF624 800BEA24 8CC70048 */ lw $a3, 0x48($a2) -/* 0BF628 800BEA28 14E0000B */ bnez $a3, .L800BEA58 -/* 0BF62C 800BEA2C 00E02025 */ move $a0, $a3 -/* 0BF630 800BEA30 3C04803B */ lui $a0, %hi(D_803B5FB8) # $a0, 0x803b -/* 0BF634 800BEA34 24845FB8 */ addiu $a0, %lo(D_803B5FB8) # addiu $a0, $a0, 0x5fb8 -/* 0BF638 800BEA38 0C02FC11 */ jal func_800BF044 -/* 0BF63C 800BEA3C AFA6001C */ sw $a2, 0x1c($sp) -/* 0BF640 800BEA40 8FA6001C */ lw $a2, 0x1c($sp) -/* 0BF644 800BEA44 14400007 */ bnez $v0, .L800BEA64 -/* 0BF648 800BEA48 ACC20048 */ sw $v0, 0x48($a2) -/* 0BF64C 800BEA4C ACC00048 */ sw $zero, 0x48($a2) -/* 0BF650 800BEA50 1000002D */ b .L800BEB08 -/* 0BF654 800BEA54 2402FFFF */ li $v0, -1 -.L800BEA58: -/* 0BF658 800BEA58 0C02F448 */ jal func_800BD120 -/* 0BF65C 800BEA5C AFA6001C */ sw $a2, 0x1c($sp) -/* 0BF660 800BEA60 8FA6001C */ lw $a2, 0x1c($sp) -.L800BEA64: -/* 0BF664 800BEA64 8CC30048 */ lw $v1, 0x48($a2) -/* 0BF668 800BEA68 8FB80028 */ lw $t8, 0x28($sp) -/* 0BF66C 800BEA6C 44803000 */ mtc1 $zero, $f6 -/* 0BF670 800BEA70 906B0000 */ lbu $t3, ($v1) -/* 0BF674 800BEA74 AC78004C */ sw $t8, 0x4c($v1) -/* 0BF678 800BEA78 8FB90028 */ lw $t9, 0x28($sp) -/* 0BF67C 800BEA7C 356D0080 */ ori $t5, $t3, 0x80 -/* 0BF680 800BEA80 31AF00DF */ andi $t7, $t5, 0xdf -/* 0BF684 800BEA84 8F21007C */ lw $at, 0x7c($t9) -/* 0BF688 800BEA88 31E800EF */ andi $t0, $t7, 0xef -/* 0BF68C 800BEA8C 240B0080 */ li $t3, 128 -/* 0BF690 800BEA90 AC610018 */ sw $at, 0x18($v1) -/* 0BF694 800BEA94 8F290080 */ lw $t1, 0x80($t9) -/* 0BF698 800BEA98 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0BF69C 800BEA9C A06D0000 */ sb $t5, ($v1) -/* 0BF6A0 800BEAA0 AC69001C */ sw $t1, 0x1c($v1) -/* 0BF6A4 800BEAA4 44812000 */ mtc1 $at, $f4 -/* 0BF6A8 800BEAA8 310900BF */ andi $t1, $t0, 0xbf -/* 0BF6AC 800BEAAC A06F0000 */ sb $t7, ($v1) -/* 0BF6B0 800BEAB0 A0680000 */ sb $t0, ($v1) -/* 0BF6B4 800BEAB4 312A00FD */ andi $t2, $t1, 0xfd -/* 0BF6B8 800BEAB8 240C0040 */ li $t4, 64 -/* 0BF6BC 800BEABC 240D00FF */ li $t5, 255 -/* 0BF6C0 800BEAC0 A0690000 */ sb $t1, ($v1) -/* 0BF6C4 800BEAC4 00001025 */ move $v0, $zero -/* 0BF6C8 800BEAC8 A0600018 */ sb $zero, 0x18($v1) -/* 0BF6CC 800BEACC A06A0000 */ sb $t2, ($v1) -/* 0BF6D0 800BEAD0 A0600008 */ sb $zero, 8($v1) -/* 0BF6D4 800BEAD4 A0600068 */ sb $zero, 0x68($v1) -/* 0BF6D8 800BEAD8 A0600002 */ sb $zero, 2($v1) -/* 0BF6DC 800BEADC A06B0003 */ sb $t3, 3($v1) -/* 0BF6E0 800BEAE0 A06C0005 */ sb $t4, 5($v1) -/* 0BF6E4 800BEAE4 A4600022 */ sh $zero, 0x22($v1) -/* 0BF6E8 800BEAE8 A4600038 */ sh $zero, 0x38($v1) -/* 0BF6EC 800BEAEC A460003A */ sh $zero, 0x3a($v1) -/* 0BF6F0 800BEAF0 A460003C */ sh $zero, 0x3c($v1) -/* 0BF6F4 800BEAF4 AC600040 */ sw $zero, 0x40($v1) -/* 0BF6F8 800BEAF8 AC600044 */ sw $zero, 0x44($v1) -/* 0BF6FC 800BEAFC A06D0001 */ sb $t5, 1($v1) -/* 0BF700 800BEB00 E4660028 */ swc1 $f6, 0x28($v1) -/* 0BF704 800BEB04 E4640024 */ swc1 $f4, 0x24($v1) -.L800BEB08: -/* 0BF708 800BEB08 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BF70C 800BEB0C 27BD0028 */ addiu $sp, $sp, 0x28 -/* 0BF710 800BEB10 03E00008 */ jr $ra -/* 0BF714 800BEB14 00000000 */ nop diff --git a/asm/non_matchings/audio/seqplayer/func_800BEB18.s b/asm/non_matchings/audio/seqplayer/func_800BEB18.s deleted file mode 100644 index 96f1acd20..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BEB18.s +++ /dev/null @@ -1,17 +0,0 @@ -glabel func_800BEB18 -/* 0BF718 800BEB18 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BF71C 800BEB1C 10800009 */ beqz $a0, .L800BEB44 -/* 0BF720 800BEB20 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BF724 800BEB24 0C02F448 */ jal func_800BD120 -/* 0BF728 800BEB28 AFA40018 */ sw $a0, 0x18($sp) -/* 0BF72C 800BEB2C 8FA40018 */ lw $a0, 0x18($sp) -/* 0BF730 800BEB30 908E0000 */ lbu $t6, ($a0) -/* 0BF734 800BEB34 31D9FF7F */ andi $t9, $t6, 0xff7f -/* 0BF738 800BEB38 37280040 */ ori $t0, $t9, 0x40 -/* 0BF73C 800BEB3C A0990000 */ sb $t9, ($a0) -/* 0BF740 800BEB40 A0880000 */ sb $t0, ($a0) -.L800BEB44: -/* 0BF744 800BEB44 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BF748 800BEB48 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BF74C 800BEB4C 03E00008 */ jr $ra -/* 0BF750 800BEB50 00000000 */ nop diff --git a/asm/non_matchings/audio/seqplayer/func_800BEB54.s b/asm/non_matchings/audio/seqplayer/func_800BEB54.s deleted file mode 100644 index ea9c2d20e..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BEB54.s +++ /dev/null @@ -1,22 +0,0 @@ -glabel func_800BEB54 -/* 0BF754 800BEB54 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0BF758 800BEB58 00057080 */ sll $t6, $a1, 2 -/* 0BF75C 800BEB5C AFBF0014 */ sw $ra, 0x14($sp) -/* 0BF760 800BEB60 008E1021 */ addu $v0, $a0, $t6 -/* 0BF764 800BEB64 8C460048 */ lw $a2, 0x48($v0) -/* 0BF768 800BEB68 3C04803B */ lui $a0, %hi(D_803B5FB8) # $a0, 0x803b -/* 0BF76C 800BEB6C 24845FB8 */ addiu $a0, %lo(D_803B5FB8) # addiu $a0, $a0, 0x5fb8 -/* 0BF770 800BEB70 10C00008 */ beqz $a2, .L800BEB94 -/* 0BF774 800BEB74 24C5006C */ addiu $a1, $a2, 0x6c -/* 0BF778 800BEB78 AFA20018 */ sw $v0, 0x18($sp) -/* 0BF77C 800BEB7C 0C02FC01 */ jal func_800BF004 -/* 0BF780 800BEB80 AFA6001C */ sw $a2, 0x1c($sp) -/* 0BF784 800BEB84 0C02FAC6 */ jal func_800BEB18 -/* 0BF788 800BEB88 8FA4001C */ lw $a0, 0x1c($sp) -/* 0BF78C 800BEB8C 8FA20018 */ lw $v0, 0x18($sp) -/* 0BF790 800BEB90 AC400048 */ sw $zero, 0x48($v0) -.L800BEB94: -/* 0BF794 800BEB94 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BF798 800BEB98 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0BF79C 800BEB9C 03E00008 */ jr $ra -/* 0BF7A0 800BEBA0 00000000 */ nop diff --git a/asm/non_matchings/audio/seqplayer/func_800BEBA4.s b/asm/non_matchings/audio/seqplayer/func_800BEBA4.s index d7c361fc1..8b1765b32 100644 --- a/asm/non_matchings/audio/seqplayer/func_800BEBA4.s +++ b/asm/non_matchings/audio/seqplayer/func_800BEBA4.s @@ -1,4 +1,4 @@ -glabel func_800BEBA4 +glabel sequence_channel_disable /* 0BF7A4 800BEBA4 27BDFFD8 */ addiu $sp, $sp, -0x28 /* 0BF7A8 800BEBA8 AFB20020 */ sw $s2, 0x20($sp) /* 0BF7AC 800BEBAC AFB1001C */ sw $s1, 0x1c($sp) @@ -9,12 +9,12 @@ glabel func_800BEBA4 /* 0BF7C0 800BEBC0 24120004 */ li $s2, 4 /* 0BF7C4 800BEBC4 02202025 */ move $a0, $s1 .L800BEBC8: -/* 0BF7C8 800BEBC8 0C02FAD5 */ jal func_800BEB54 +/* 0BF7C8 800BEBC8 0C02FAD5 */ jal seq_channel_layer_free /* 0BF7CC 800BEBCC 02002825 */ move $a1, $s0 /* 0BF7D0 800BEBD0 26100001 */ addiu $s0, $s0, 1 /* 0BF7D4 800BEBD4 5612FFFC */ bnel $s0, $s2, .L800BEBC8 /* 0BF7D8 800BEBD8 02202025 */ move $a0, $s1 -/* 0BF7DC 800BEBDC 0C02F506 */ jal func_800BD418 +/* 0BF7DC 800BEBDC 0C02F506 */ jal note_pool_clear /* 0BF7E0 800BEBE0 26240084 */ addiu $a0, $s1, 0x84 /* 0BF7E4 800BEBE4 922E0000 */ lbu $t6, ($s1) /* 0BF7E8 800BEBE8 31D9FF7F */ andi $t9, $t6, 0xff7f diff --git a/asm/non_matchings/audio/seqplayer/func_800BEC10.s b/asm/non_matchings/audio/seqplayer/func_800BEC10.s deleted file mode 100644 index 33cb80cfd..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BEC10.s +++ /dev/null @@ -1,41 +0,0 @@ -glabel func_800BEC10 -/* 0BF810 800BEC10 3C03803B */ lui $v1, %hi(D_803B1A30) # $v1, 0x803b -/* 0BF814 800BEC14 3C02803B */ lui $v0, %hi(D_803B3EF0) # $v0, 0x803b -/* 0BF818 800BEC18 24423EF0 */ addiu $v0, %lo(D_803B3EF0) # addiu $v0, $v0, 0x3ef0 -/* 0BF81C 800BEC1C 24631A30 */ addiu $v1, %lo(D_803B1A30) # addiu $v1, $v1, 0x1a30 -/* 0BF820 800BEC20 8C6E0044 */ lw $t6, 0x44($v1) -.L800BEC24: -/* 0BF824 800BEC24 55C00004 */ bnel $t6, $zero, .L800BEC38 -/* 0BF828 800BEC28 8C6F0108 */ lw $t7, 0x108($v1) -/* 0BF82C 800BEC2C 03E00008 */ jr $ra -/* 0BF830 800BEC30 00601025 */ move $v0, $v1 - -/* 0BF834 800BEC34 8C6F0108 */ lw $t7, 0x108($v1) -.L800BEC38: -/* 0BF838 800BEC38 55E00004 */ bnel $t7, $zero, .L800BEC4C -/* 0BF83C 800BEC3C 8C7801CC */ lw $t8, 0x1cc($v1) -/* 0BF840 800BEC40 03E00008 */ jr $ra -/* 0BF844 800BEC44 246200C4 */ addiu $v0, $v1, 0xc4 - -/* 0BF848 800BEC48 8C7801CC */ lw $t8, 0x1cc($v1) -.L800BEC4C: -/* 0BF84C 800BEC4C 57000004 */ bnel $t8, $zero, .L800BEC60 -/* 0BF850 800BEC50 8C790290 */ lw $t9, 0x290($v1) -/* 0BF854 800BEC54 03E00008 */ jr $ra -/* 0BF858 800BEC58 24620188 */ addiu $v0, $v1, 0x188 - -/* 0BF85C 800BEC5C 8C790290 */ lw $t9, 0x290($v1) -.L800BEC60: -/* 0BF860 800BEC60 57200004 */ bnel $t9, $zero, .L800BEC74 -/* 0BF864 800BEC64 24630310 */ addiu $v1, $v1, 0x310 -/* 0BF868 800BEC68 03E00008 */ jr $ra -/* 0BF86C 800BEC6C 2462024C */ addiu $v0, $v1, 0x24c - -/* 0BF870 800BEC70 24630310 */ addiu $v1, $v1, 0x310 -.L800BEC74: -/* 0BF874 800BEC74 5462FFEB */ bnel $v1, $v0, .L800BEC24 -/* 0BF878 800BEC78 8C6E0044 */ lw $t6, 0x44($v1) -/* 0BF87C 800BEC7C 3C02803B */ lui $v0, %hi(D_803B5EF0) # $v0, 0x803b -/* 0BF880 800BEC80 24425EF0 */ addiu $v0, %lo(D_803B5EF0) # addiu $v0, $v0, 0x5ef0 -/* 0BF884 800BEC84 03E00008 */ jr $ra -/* 0BF888 800BEC88 00000000 */ nop diff --git a/asm/non_matchings/audio/seqplayer/func_800BEC8C.s b/asm/non_matchings/audio/seqplayer/func_800BEC8C.s deleted file mode 100644 index 77644b05a..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BEC8C.s +++ /dev/null @@ -1,80 +0,0 @@ -glabel func_800BEC8C -/* 0BF88C 800BEC8C 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0BF890 800BEC90 AFBE0038 */ sw $fp, 0x38($sp) -/* 0BF894 800BEC94 AFB70034 */ sw $s7, 0x34($sp) -/* 0BF898 800BEC98 AFB60030 */ sw $s6, 0x30($sp) -/* 0BF89C 800BEC9C AFB30024 */ sw $s3, 0x24($sp) -/* 0BF8A0 800BECA0 AFB1001C */ sw $s1, 0x1c($sp) -/* 0BF8A4 800BECA4 AFA50044 */ sw $a1, 0x44($sp) -/* 0BF8A8 800BECA8 30AEFFFF */ andi $t6, $a1, 0xffff -/* 0BF8AC 800BECAC 3C17803B */ lui $s7, %hi(D_803B5EF0) # $s7, 0x803b -/* 0BF8B0 800BECB0 3C1E803B */ lui $fp, %hi(D_803B7198) # $fp, 0x803b -/* 0BF8B4 800BECB4 01C02825 */ move $a1, $t6 -/* 0BF8B8 800BECB8 00808825 */ move $s1, $a0 -/* 0BF8BC 800BECBC AFBF003C */ sw $ra, 0x3c($sp) -/* 0BF8C0 800BECC0 AFB5002C */ sw $s5, 0x2c($sp) -/* 0BF8C4 800BECC4 AFB40028 */ sw $s4, 0x28($sp) -/* 0BF8C8 800BECC8 AFB20020 */ sw $s2, 0x20($sp) -/* 0BF8CC 800BECCC AFB00018 */ sw $s0, 0x18($sp) -/* 0BF8D0 800BECD0 27DE7198 */ addiu $fp, %lo(D_803B7198) # addiu $fp, $fp, 0x7198 -/* 0BF8D4 800BECD4 26F75EF0 */ addiu $s7, %lo(D_803B5EF0) # addiu $s7, $s7, 0x5ef0 -/* 0BF8D8 800BECD8 00009825 */ move $s3, $zero -/* 0BF8DC 800BECDC 24160001 */ li $s6, 1 -.L800BECE0: -/* 0BF8E0 800BECE0 30AF0001 */ andi $t7, $a1, 1 -/* 0BF8E4 800BECE4 11E00022 */ beqz $t7, .L800BED70 -/* 0BF8E8 800BECE8 00A0A825 */ move $s5, $a1 -/* 0BF8EC 800BECEC 0013C080 */ sll $t8, $s3, 2 -/* 0BF8F0 800BECF0 02389021 */ addu $s2, $s1, $t8 -/* 0BF8F4 800BECF4 8E500030 */ lw $s0, 0x30($s2) -/* 0BF8F8 800BECF8 02E0A025 */ move $s4, $s7 -/* 0BF8FC 800BECFC 0217C826 */ xor $t9, $s0, $s7 -/* 0BF900 800BED00 0019C82B */ sltu $t9, $zero, $t9 -/* 0BF904 800BED04 16D90007 */ bne $s6, $t9, .L800BED24 -/* 0BF908 800BED08 00000000 */ nop -/* 0BF90C 800BED0C 8E080044 */ lw $t0, 0x44($s0) -/* 0BF910 800BED10 16280004 */ bne $s1, $t0, .L800BED24 -/* 0BF914 800BED14 00000000 */ nop -/* 0BF918 800BED18 0C02FAE9 */ jal func_800BEBA4 -/* 0BF91C 800BED1C 02002025 */ move $a0, $s0 -/* 0BF920 800BED20 AE000044 */ sw $zero, 0x44($s0) -.L800BED24: -/* 0BF924 800BED24 0C02FB04 */ jal func_800BEC10 -/* 0BF928 800BED28 00000000 */ nop -/* 0BF92C 800BED2C 14540006 */ bne $v0, $s4, .L800BED48 -/* 0BF930 800BED30 00408025 */ move $s0, $v0 -/* 0BF934 800BED34 3C010001 */ lui $at, 1 -/* 0BF938 800BED38 02615021 */ addu $t2, $s3, $at -/* 0BF93C 800BED3C AFCA0000 */ sw $t2, ($fp) -/* 0BF940 800BED40 1000000B */ b .L800BED70 -/* 0BF944 800BED44 AE420030 */ sw $v0, 0x30($s2) -.L800BED48: -/* 0BF948 800BED48 0C02FA3C */ jal func_800BE8F0 -/* 0BF94C 800BED4C 02002025 */ move $a0, $s0 -/* 0BF950 800BED50 AE500030 */ sw $s0, 0x30($s2) -/* 0BF954 800BED54 AE110044 */ sw $s1, 0x44($s0) -/* 0BF958 800BED58 922B0005 */ lbu $t3, 5($s1) -/* 0BF95C 800BED5C A20B0006 */ sb $t3, 6($s0) -/* 0BF960 800BED60 922C0003 */ lbu $t4, 3($s1) -/* 0BF964 800BED64 A20C0003 */ sb $t4, 3($s0) -/* 0BF968 800BED68 922D0002 */ lbu $t5, 2($s1) -/* 0BF96C 800BED6C A20D0002 */ sb $t5, 2($s0) -.L800BED70: -/* 0BF970 800BED70 00152843 */ sra $a1, $s5, 1 -/* 0BF974 800BED74 26730001 */ addiu $s3, $s3, 1 -/* 0BF978 800BED78 24010010 */ li $at, 16 -/* 0BF97C 800BED7C 30AEFFFF */ andi $t6, $a1, 0xffff -/* 0BF980 800BED80 1661FFD7 */ bne $s3, $at, .L800BECE0 -/* 0BF984 800BED84 01C02825 */ move $a1, $t6 -/* 0BF988 800BED88 8FBF003C */ lw $ra, 0x3c($sp) -/* 0BF98C 800BED8C 8FB00018 */ lw $s0, 0x18($sp) -/* 0BF990 800BED90 8FB1001C */ lw $s1, 0x1c($sp) -/* 0BF994 800BED94 8FB20020 */ lw $s2, 0x20($sp) -/* 0BF998 800BED98 8FB30024 */ lw $s3, 0x24($sp) -/* 0BF99C 800BED9C 8FB40028 */ lw $s4, 0x28($sp) -/* 0BF9A0 800BEDA0 8FB5002C */ lw $s5, 0x2c($sp) -/* 0BF9A4 800BEDA4 8FB60030 */ lw $s6, 0x30($sp) -/* 0BF9A8 800BEDA8 8FB70034 */ lw $s7, 0x34($sp) -/* 0BF9AC 800BEDAC 8FBE0038 */ lw $fp, 0x38($sp) -/* 0BF9B0 800BEDB0 03E00008 */ jr $ra -/* 0BF9B4 800BEDB4 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/audio/seqplayer/func_800BEDB8.s b/asm/non_matchings/audio/seqplayer/func_800BEDB8.s deleted file mode 100644 index ab3d61bb5..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BEDB8.s +++ /dev/null @@ -1,56 +0,0 @@ -glabel func_800BEDB8 -/* 0BF9B8 800BEDB8 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 0BF9BC 800BEDBC AFB50028 */ sw $s5, 0x28($sp) -/* 0BF9C0 800BEDC0 AFB70030 */ sw $s7, 0x30($sp) -/* 0BF9C4 800BEDC4 AFB6002C */ sw $s6, 0x2c($sp) -/* 0BF9C8 800BEDC8 AFB40024 */ sw $s4, 0x24($sp) -/* 0BF9CC 800BEDCC AFB10018 */ sw $s1, 0x18($sp) -/* 0BF9D0 800BEDD0 AFA5003C */ sw $a1, 0x3c($sp) -/* 0BF9D4 800BEDD4 30AEFFFF */ andi $t6, $a1, 0xffff -/* 0BF9D8 800BEDD8 3C15803B */ lui $s5, %hi(D_803B5EF0) # $s5, 0x803b -/* 0BF9DC 800BEDDC 01C02825 */ move $a1, $t6 -/* 0BF9E0 800BEDE0 0080A025 */ move $s4, $a0 -/* 0BF9E4 800BEDE4 AFBF0034 */ sw $ra, 0x34($sp) -/* 0BF9E8 800BEDE8 AFB30020 */ sw $s3, 0x20($sp) -/* 0BF9EC 800BEDEC AFB2001C */ sw $s2, 0x1c($sp) -/* 0BF9F0 800BEDF0 AFB00014 */ sw $s0, 0x14($sp) -/* 0BF9F4 800BEDF4 26B55EF0 */ addiu $s5, %lo(D_803B5EF0) # addiu $s5, $s5, 0x5ef0 -/* 0BF9F8 800BEDF8 00008825 */ move $s1, $zero -/* 0BF9FC 800BEDFC 24160001 */ li $s6, 1 -/* 0BFA00 800BEE00 24170010 */ li $s7, 16 -.L800BEE04: -/* 0BFA04 800BEE04 30AF0001 */ andi $t7, $a1, 1 -/* 0BFA08 800BEE08 11E0000F */ beqz $t7, .L800BEE48 -/* 0BFA0C 800BEE0C 00A09025 */ move $s2, $a1 -/* 0BFA10 800BEE10 0011C080 */ sll $t8, $s1, 2 -/* 0BFA14 800BEE14 02989821 */ addu $s3, $s4, $t8 -/* 0BFA18 800BEE18 8E700030 */ lw $s0, 0x30($s3) -/* 0BFA1C 800BEE1C 0215C826 */ xor $t9, $s0, $s5 -/* 0BFA20 800BEE20 0019C82B */ sltu $t9, $zero, $t9 -/* 0BFA24 800BEE24 56D90009 */ bnel $s6, $t9, .L800BEE4C -/* 0BFA28 800BEE28 00122843 */ sra $a1, $s2, 1 -/* 0BFA2C 800BEE2C 8E080044 */ lw $t0, 0x44($s0) -/* 0BFA30 800BEE30 56880005 */ bnel $s4, $t0, .L800BEE48 -/* 0BFA34 800BEE34 AE750030 */ sw $s5, 0x30($s3) -/* 0BFA38 800BEE38 0C02FAE9 */ jal func_800BEBA4 -/* 0BFA3C 800BEE3C 02002025 */ move $a0, $s0 -/* 0BFA40 800BEE40 AE000044 */ sw $zero, 0x44($s0) -/* 0BFA44 800BEE44 AE750030 */ sw $s5, 0x30($s3) -.L800BEE48: -/* 0BFA48 800BEE48 00122843 */ sra $a1, $s2, 1 -.L800BEE4C: -/* 0BFA4C 800BEE4C 26310001 */ addiu $s1, $s1, 1 -/* 0BFA50 800BEE50 30A9FFFF */ andi $t1, $a1, 0xffff -/* 0BFA54 800BEE54 1637FFEB */ bne $s1, $s7, .L800BEE04 -/* 0BFA58 800BEE58 01202825 */ move $a1, $t1 -/* 0BFA5C 800BEE5C 8FBF0034 */ lw $ra, 0x34($sp) -/* 0BFA60 800BEE60 8FB00014 */ lw $s0, 0x14($sp) -/* 0BFA64 800BEE64 8FB10018 */ lw $s1, 0x18($sp) -/* 0BFA68 800BEE68 8FB2001C */ lw $s2, 0x1c($sp) -/* 0BFA6C 800BEE6C 8FB30020 */ lw $s3, 0x20($sp) -/* 0BFA70 800BEE70 8FB40024 */ lw $s4, 0x24($sp) -/* 0BFA74 800BEE74 8FB50028 */ lw $s5, 0x28($sp) -/* 0BFA78 800BEE78 8FB6002C */ lw $s6, 0x2c($sp) -/* 0BFA7C 800BEE7C 8FB70030 */ lw $s7, 0x30($sp) -/* 0BFA80 800BEE80 03E00008 */ jr $ra -/* 0BFA84 800BEE84 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/asm/non_matchings/audio/seqplayer/func_800BEE88.s b/asm/non_matchings/audio/seqplayer/func_800BEE88.s deleted file mode 100644 index 70501247c..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BEE88.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel func_800BEE88 -/* 0BFA88 800BEE88 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0BFA8C 800BEE8C 30AE00FF */ andi $t6, $a1, 0xff -/* 0BFA90 800BEE90 000E7880 */ sll $t7, $t6, 2 -/* 0BFA94 800BEE94 AFBF0024 */ sw $ra, 0x24($sp) -/* 0BFA98 800BEE98 AFB30020 */ sw $s3, 0x20($sp) -/* 0BFA9C 800BEE9C AFB2001C */ sw $s2, 0x1c($sp) -/* 0BFAA0 800BEEA0 AFB10018 */ sw $s1, 0x18($sp) -/* 0BFAA4 800BEEA4 AFB00014 */ sw $s0, 0x14($sp) -/* 0BFAA8 800BEEA8 AFA5002C */ sw $a1, 0x2c($sp) -/* 0BFAAC 800BEEAC 008FC021 */ addu $t8, $a0, $t7 -/* 0BFAB0 800BEEB0 8F120030 */ lw $s2, 0x30($t8) -/* 0BFAB4 800BEEB4 3C19803B */ lui $t9, %hi(D_803B5EF0) # $t9, 0x803b -/* 0BFAB8 800BEEB8 27395EF0 */ addiu $t9, %lo(D_803B5EF0) # addiu $t9, $t9, 0x5ef0 -/* 0BFABC 800BEEBC 12590014 */ beq $s2, $t9, .L800BEF10 -/* 0BFAC0 800BEEC0 00008025 */ move $s0, $zero -/* 0BFAC4 800BEEC4 924A0000 */ lbu $t2, ($s2) -/* 0BFAC8 800BEEC8 A2400078 */ sb $zero, 0x78($s2) -/* 0BFACC 800BEECC AE460060 */ sw $a2, 0x60($s2) -/* 0BFAD0 800BEED0 354C0080 */ ori $t4, $t2, 0x80 -/* 0BFAD4 800BEED4 A24C0000 */ sb $t4, ($s2) -/* 0BFAD8 800BEED8 318D00BF */ andi $t5, $t4, 0xbf -/* 0BFADC 800BEEDC A24D0000 */ sb $t5, ($s2) -/* 0BFAE0 800BEEE0 A640001A */ sh $zero, 0x1a($s2) -/* 0BFAE4 800BEEE4 02408825 */ move $s1, $s2 -/* 0BFAE8 800BEEE8 24130004 */ li $s3, 4 -.L800BEEEC: -/* 0BFAEC 800BEEEC 8E2E0048 */ lw $t6, 0x48($s1) -/* 0BFAF0 800BEEF0 02402025 */ move $a0, $s2 -/* 0BFAF4 800BEEF4 51C00004 */ beql $t6, $zero, .L800BEF08 -/* 0BFAF8 800BEEF8 26100001 */ addiu $s0, $s0, 1 -/* 0BFAFC 800BEEFC 0C02FAD5 */ jal func_800BEB54 -/* 0BFB00 800BEF00 02002825 */ move $a1, $s0 -/* 0BFB04 800BEF04 26100001 */ addiu $s0, $s0, 1 -.L800BEF08: -/* 0BFB08 800BEF08 1613FFF8 */ bne $s0, $s3, .L800BEEEC -/* 0BFB0C 800BEF0C 26310004 */ addiu $s1, $s1, 4 -.L800BEF10: -/* 0BFB10 800BEF10 8FBF0024 */ lw $ra, 0x24($sp) -/* 0BFB14 800BEF14 8FB00014 */ lw $s0, 0x14($sp) -/* 0BFB18 800BEF18 8FB10018 */ lw $s1, 0x18($sp) -/* 0BFB1C 800BEF1C 8FB2001C */ lw $s2, 0x1c($sp) -/* 0BFB20 800BEF20 8FB30020 */ lw $s3, 0x20($sp) -/* 0BFB24 800BEF24 03E00008 */ jr $ra -/* 0BFB28 800BEF28 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/audio/seqplayer/func_800BEF2C.s b/asm/non_matchings/audio/seqplayer/func_800BEF2C.s deleted file mode 100644 index 2ffb6ee6b..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BEF2C.s +++ /dev/null @@ -1,60 +0,0 @@ -glabel func_800BEF2C -/* 0BFB2C 800BEF2C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0BFB30 800BEF30 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BFB34 800BEF34 AFA40018 */ sw $a0, 0x18($sp) -/* 0BFB38 800BEF38 0C02FB6E */ jal func_800BEDB8 -/* 0BFB3C 800BEF3C 3405FFFF */ li $a1, 65535 -/* 0BFB40 800BEF40 8FA60018 */ lw $a2, 0x18($sp) -/* 0BFB44 800BEF44 0C02F506 */ jal func_800BD418 -/* 0BFB48 800BEF48 24C40094 */ addiu $a0, $a2, 0x94 -/* 0BFB4C 800BEF4C 8FA60018 */ lw $a2, 0x18($sp) -/* 0BFB50 800BEF50 3C0A803B */ lui $t2, %hi(D_803B0400) # $t2, 0x803b -/* 0BFB54 800BEF54 254A0400 */ addiu $t2, %lo(D_803B0400) # addiu $t2, $t2, 0x400 -/* 0BFB58 800BEF58 90CF0000 */ lbu $t7, ($a2) -/* 0BFB5C 800BEF5C 90C90004 */ lbu $t1, 4($a2) -/* 0BFB60 800BEF60 35F90040 */ ori $t9, $t7, 0x40 -/* 0BFB64 800BEF64 3328007F */ andi $t0, $t9, 0x7f -/* 0BFB68 800BEF68 A0D90000 */ sb $t9, ($a2) -/* 0BFB6C 800BEF6C A0C80000 */ sb $t0, ($a2) -/* 0BFB70 800BEF70 012A1021 */ addu $v0, $t1, $t2 -/* 0BFB74 800BEF74 90430000 */ lbu $v1, ($v0) -/* 0BFB78 800BEF78 240F0001 */ li $t7, 1 -/* 0BFB7C 800BEF7C 28610002 */ slti $at, $v1, 2 -/* 0BFB80 800BEF80 14200004 */ bnez $at, .L800BEF94 -/* 0BFB84 800BEF84 24010005 */ li $at, 5 -/* 0BFB88 800BEF88 10610002 */ beq $v1, $at, .L800BEF94 -/* 0BFB8C 800BEF8C 240B0003 */ li $t3, 3 -/* 0BFB90 800BEF90 A04B0000 */ sb $t3, ($v0) -.L800BEF94: -/* 0BFB94 800BEF94 90C20005 */ lbu $v0, 5($a2) -/* 0BFB98 800BEF98 3C0C803B */ lui $t4, %hi(D_803B03C0) # $t4, 0x803b -/* 0BFB9C 800BEF9C 258C03C0 */ addiu $t4, %lo(D_803B03C0) # addiu $t4, $t4, 0x3c0 -/* 0BFBA0 800BEFA0 004C1821 */ addu $v1, $v0, $t4 -/* 0BFBA4 800BEFA4 90640000 */ lbu $a0, ($v1) -/* 0BFBA8 800BEFA8 28810002 */ slti $at, $a0, 2 -/* 0BFBAC 800BEFAC 14200005 */ bnez $at, .L800BEFC4 -/* 0BFBB0 800BEFB0 24010005 */ li $at, 5 -/* 0BFBB4 800BEFB4 10810003 */ beq $a0, $at, .L800BEFC4 -/* 0BFBB8 800BEFB8 240D0004 */ li $t5, 4 -/* 0BFBBC 800BEFBC A06D0000 */ sb $t5, ($v1) -/* 0BFBC0 800BEFC0 90C20005 */ lbu $v0, 5($a2) -.L800BEFC4: -/* 0BFBC4 800BEFC4 3C04803B */ lui $a0, %hi(D_803AFE18) # $a0, 0x803b -/* 0BFBC8 800BEFC8 2484FE18 */ addiu $a0, %lo(D_803AFE18) # addiu $a0, $a0, -0x1e8 -/* 0BFBCC 800BEFCC 848E01B2 */ lh $t6, 0x1b2($a0) -/* 0BFBD0 800BEFD0 00401825 */ move $v1, $v0 -/* 0BFBD4 800BEFD4 544E0004 */ bnel $v0, $t6, .L800BEFE8 -/* 0BFBD8 800BEFD8 849801BE */ lh $t8, 0x1be($a0) -/* 0BFBDC 800BEFDC 10000005 */ b .L800BEFF4 -/* 0BFBE0 800BEFE0 AC8F0194 */ sw $t7, 0x194($a0) -/* 0BFBE4 800BEFE4 849801BE */ lh $t8, 0x1be($a0) -.L800BEFE8: -/* 0BFBE8 800BEFE8 54780003 */ bnel $v1, $t8, .L800BEFF8 -/* 0BFBEC 800BEFEC 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BFBF0 800BEFF0 AC800194 */ sw $zero, 0x194($a0) -.L800BEFF4: -/* 0BFBF4 800BEFF4 8FBF0014 */ lw $ra, 0x14($sp) -.L800BEFF8: -/* 0BFBF8 800BEFF8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0BFBFC 800BEFFC 03E00008 */ jr $ra -/* 0BFC00 800BF000 00000000 */ nop diff --git a/asm/non_matchings/audio/seqplayer/func_800BF004.s b/asm/non_matchings/audio/seqplayer/func_800BF004.s deleted file mode 100644 index 161bd0282..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BF004.s +++ /dev/null @@ -1,18 +0,0 @@ -glabel func_800BF004 -/* 0BFC04 800BF004 8CAE0000 */ lw $t6, ($a1) -/* 0BFC08 800BF008 15C0000C */ bnez $t6, .L800BF03C -/* 0BFC0C 800BF00C 00000000 */ nop -/* 0BFC10 800BF010 8C8F0000 */ lw $t7, ($a0) -/* 0BFC14 800BF014 ADE50004 */ sw $a1, 4($t7) -/* 0BFC18 800BF018 8C980000 */ lw $t8, ($a0) -/* 0BFC1C 800BF01C ACA40004 */ sw $a0, 4($a1) -/* 0BFC20 800BF020 ACB80000 */ sw $t8, ($a1) -/* 0BFC24 800BF024 8C990008 */ lw $t9, 8($a0) -/* 0BFC28 800BF028 8C89000C */ lw $t1, 0xc($a0) -/* 0BFC2C 800BF02C AC850000 */ sw $a1, ($a0) -/* 0BFC30 800BF030 27280001 */ addiu $t0, $t9, 1 -/* 0BFC34 800BF034 AC880008 */ sw $t0, 8($a0) -/* 0BFC38 800BF038 ACA9000C */ sw $t1, 0xc($a1) -.L800BF03C: -/* 0BFC3C 800BF03C 03E00008 */ jr $ra -/* 0BFC40 800BF040 00000000 */ nop diff --git a/asm/non_matchings/audio/seqplayer/func_800BF044.s b/asm/non_matchings/audio/seqplayer/func_800BF044.s deleted file mode 100644 index 5bda2d92d..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BF044.s +++ /dev/null @@ -1,19 +0,0 @@ -glabel func_800BF044 -/* 0BFC44 800BF044 8C830000 */ lw $v1, ($a0) -/* 0BFC48 800BF048 54640004 */ bnel $v1, $a0, .L800BF05C -/* 0BFC4C 800BF04C 8C6E0000 */ lw $t6, ($v1) -/* 0BFC50 800BF050 03E00008 */ jr $ra -/* 0BFC54 800BF054 00001025 */ move $v0, $zero - -/* 0BFC58 800BF058 8C6E0000 */ lw $t6, ($v1) -.L800BF05C: -/* 0BFC5C 800BF05C ADC40004 */ sw $a0, 4($t6) -/* 0BFC60 800BF060 8C6F0000 */ lw $t7, ($v1) -/* 0BFC64 800BF064 AC8F0000 */ sw $t7, ($a0) -/* 0BFC68 800BF068 AC600000 */ sw $zero, ($v1) -/* 0BFC6C 800BF06C 8C980008 */ lw $t8, 8($a0) -/* 0BFC70 800BF070 2719FFFF */ addiu $t9, $t8, -1 -/* 0BFC74 800BF074 AC990008 */ sw $t9, 8($a0) -/* 0BFC78 800BF078 8C620008 */ lw $v0, 8($v1) -/* 0BFC7C 800BF07C 03E00008 */ jr $ra -/* 0BFC80 800BF080 00000000 */ nop diff --git a/asm/non_matchings/audio/seqplayer/func_800BF084.s b/asm/non_matchings/audio/seqplayer/func_800BF084.s deleted file mode 100644 index 046f5e302..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BF084.s +++ /dev/null @@ -1,35 +0,0 @@ -glabel func_800BF084 -/* 0BFC84 800BF084 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0BFC88 800BF088 AFB2001C */ sw $s2, 0x1c($sp) -/* 0BFC8C 800BF08C 3C12803B */ lui $s2, %hi(D_803B5FB8) # $s2, 0x803b -/* 0BFC90 800BF090 26525FB8 */ addiu $s2, %lo(D_803B5FB8) # addiu $s2, $s2, 0x5fb8 -/* 0BFC94 800BF094 AFB30020 */ sw $s3, 0x20($sp) -/* 0BFC98 800BF098 AFB10018 */ sw $s1, 0x18($sp) -/* 0BFC9C 800BF09C AFB00014 */ sw $s0, 0x14($sp) -/* 0BFCA0 800BF0A0 3C10803B */ lui $s0, %hi(D_803B3EF0) # $s0, 0x803b -/* 0BFCA4 800BF0A4 3C11803B */ lui $s1, %hi(D_803B3F5C) # $s1, 0x803b -/* 0BFCA8 800BF0A8 3C13803B */ lui $s3, %hi(D_803B5F5C) # $s3, 0x803b -/* 0BFCAC 800BF0AC AFBF0024 */ sw $ra, 0x24($sp) -/* 0BFCB0 800BF0B0 AE520000 */ sw $s2, ($s2) -/* 0BFCB4 800BF0B4 AE520004 */ sw $s2, 4($s2) -/* 0BFCB8 800BF0B8 AE400008 */ sw $zero, 8($s2) -/* 0BFCBC 800BF0BC AE40000C */ sw $zero, 0xc($s2) -/* 0BFCC0 800BF0C0 26735F5C */ addiu $s3, %lo(D_803B5F5C) # addiu $s3, $s3, 0x5f5c -/* 0BFCC4 800BF0C4 26313F5C */ addiu $s1, %lo(D_803B3F5C) # addiu $s1, $s1, 0x3f5c -/* 0BFCC8 800BF0C8 26103EF0 */ addiu $s0, %lo(D_803B3EF0) # addiu $s0, $s0, 0x3ef0 -.L800BF0CC: -/* 0BFCCC 800BF0CC AE100074 */ sw $s0, 0x74($s0) -/* 0BFCD0 800BF0D0 AE00006C */ sw $zero, 0x6c($s0) -/* 0BFCD4 800BF0D4 02402025 */ move $a0, $s2 -/* 0BFCD8 800BF0D8 0C02FC01 */ jal func_800BF004 -/* 0BFCDC 800BF0DC 02202825 */ move $a1, $s1 -/* 0BFCE0 800BF0E0 26310080 */ addiu $s1, $s1, 0x80 -/* 0BFCE4 800BF0E4 1633FFF9 */ bne $s1, $s3, .L800BF0CC -/* 0BFCE8 800BF0E8 26100080 */ addiu $s0, $s0, 0x80 -/* 0BFCEC 800BF0EC 8FBF0024 */ lw $ra, 0x24($sp) -/* 0BFCF0 800BF0F0 8FB00014 */ lw $s0, 0x14($sp) -/* 0BFCF4 800BF0F4 8FB10018 */ lw $s1, 0x18($sp) -/* 0BFCF8 800BF0F8 8FB2001C */ lw $s2, 0x1c($sp) -/* 0BFCFC 800BF0FC 8FB30020 */ lw $s3, 0x20($sp) -/* 0BFD00 800BF100 03E00008 */ jr $ra -/* 0BFD04 800BF104 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/audio/seqplayer/func_800BF108.s b/asm/non_matchings/audio/seqplayer/func_800BF108.s deleted file mode 100644 index ce750e072..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BF108.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_800BF108 -/* 0BFD08 800BF108 8C850000 */ lw $a1, ($a0) -/* 0BFD0C 800BF10C 90A20000 */ lbu $v0, ($a1) -/* 0BFD10 800BF110 24AE0001 */ addiu $t6, $a1, 1 -/* 0BFD14 800BF114 03E00008 */ jr $ra -/* 0BFD18 800BF118 AC8E0000 */ sw $t6, ($a0) diff --git a/asm/non_matchings/audio/seqplayer/func_800BF11C.s b/asm/non_matchings/audio/seqplayer/func_800BF11C.s deleted file mode 100644 index 5df6c1304..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BF11C.s +++ /dev/null @@ -1,13 +0,0 @@ -glabel func_800BF11C -/* 0BFD1C 800BF11C 8C850000 */ lw $a1, ($a0) -/* 0BFD20 800BF120 90A30000 */ lbu $v1, ($a1) -/* 0BFD24 800BF124 24B90001 */ addiu $t9, $a1, 1 -/* 0BFD28 800BF128 AC990000 */ sw $t9, ($a0) -/* 0BFD2C 800BF12C 93280000 */ lbu $t0, ($t9) -/* 0BFD30 800BF130 0003C200 */ sll $t8, $v1, 8 -/* 0BFD34 800BF134 272B0001 */ addiu $t3, $t9, 1 -/* 0BFD38 800BF138 01181825 */ or $v1, $t0, $t8 -/* 0BFD3C 800BF13C 00034C00 */ sll $t1, $v1, 0x10 -/* 0BFD40 800BF140 00091403 */ sra $v0, $t1, 0x10 -/* 0BFD44 800BF144 03E00008 */ jr $ra -/* 0BFD48 800BF148 AC8B0000 */ sw $t3, ($a0) diff --git a/asm/non_matchings/audio/seqplayer/func_800BF14C.s b/asm/non_matchings/audio/seqplayer/func_800BF14C.s deleted file mode 100644 index 8becaea01..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BF14C.s +++ /dev/null @@ -1,19 +0,0 @@ -glabel func_800BF14C -/* 0BFD4C 800BF14C 8C820000 */ lw $v0, ($a0) -/* 0BFD50 800BF150 90430000 */ lbu $v1, ($v0) -/* 0BFD54 800BF154 244E0001 */ addiu $t6, $v0, 1 -/* 0BFD58 800BF158 AC8E0000 */ sw $t6, ($a0) -/* 0BFD5C 800BF15C 306F0080 */ andi $t7, $v1, 0x80 -/* 0BFD60 800BF160 11E00009 */ beqz $t7, .L800BF188 -/* 0BFD64 800BF164 00602825 */ move $a1, $v1 -/* 0BFD68 800BF168 91C80000 */ lbu $t0, ($t6) -/* 0BFD6C 800BF16C 00051A00 */ sll $v1, $a1, 8 -/* 0BFD70 800BF170 30797F00 */ andi $t9, $v1, 0x7f00 -/* 0BFD74 800BF174 01191825 */ or $v1, $t0, $t9 -/* 0BFD78 800BF178 3069FFFF */ andi $t1, $v1, 0xffff -/* 0BFD7C 800BF17C 25CA0001 */ addiu $t2, $t6, 1 -/* 0BFD80 800BF180 AC8A0000 */ sw $t2, ($a0) -/* 0BFD84 800BF184 01201825 */ move $v1, $t1 -.L800BF188: -/* 0BFD88 800BF188 03E00008 */ jr $ra -/* 0BFD8C 800BF18C 00601025 */ move $v0, $v1 diff --git a/asm/non_matchings/audio/seqplayer/func_800BFC68.s b/asm/non_matchings/audio/seqplayer/func_800BFC68.s deleted file mode 100644 index b0824d18c..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BFC68.s +++ /dev/null @@ -1,31 +0,0 @@ -glabel func_800BFC68 -/* 0C0868 800BFC68 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0C086C 800BFC6C AFBF0014 */ sw $ra, 0x14($sp) -/* 0C0870 800BFC70 AFA40018 */ sw $a0, 0x18($sp) -/* 0C0874 800BFC74 AFA5001C */ sw $a1, 0x1c($sp) -/* 0C0878 800BFC78 AFA60020 */ sw $a2, 0x20($sp) -/* 0C087C 800BFC7C AFA70024 */ sw $a3, 0x24($sp) -/* 0C0880 800BFC80 90840006 */ lbu $a0, 6($a0) -/* 0C0884 800BFC84 0C02F252 */ jal func_800BC948 -/* 0C0888 800BFC88 93A5001F */ lbu $a1, 0x1f($sp) -/* 0C088C 800BFC8C 93A4001F */ lbu $a0, 0x1f($sp) -/* 0C0890 800BFC90 8FA50020 */ lw $a1, 0x20($sp) -/* 0C0894 800BFC94 8FA60024 */ lw $a2, 0x24($sp) -/* 0C0898 800BFC98 14400004 */ bnez $v0, .L800BFCAC -/* 0C089C 800BFC9C 00401825 */ move $v1, $v0 -/* 0C08A0 800BFCA0 ACA00000 */ sw $zero, ($a1) -/* 0C08A4 800BFCA4 10000008 */ b .L800BFCC8 -/* 0C08A8 800BFCA8 00001025 */ move $v0, $zero -.L800BFCAC: -/* 0C08AC 800BFCAC 8C6F0004 */ lw $t7, 4($v1) -/* 0C08B0 800BFCB0 24840001 */ addiu $a0, $a0, 1 -/* 0C08B4 800BFCB4 308200FF */ andi $v0, $a0, 0xff -/* 0C08B8 800BFCB8 ACCF0004 */ sw $t7, 4($a2) -/* 0C08BC 800BFCBC 90780003 */ lbu $t8, 3($v1) -/* 0C08C0 800BFCC0 A0D80000 */ sb $t8, ($a2) -/* 0C08C4 800BFCC4 ACA30000 */ sw $v1, ($a1) -.L800BFCC8: -/* 0C08C8 800BFCC8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0C08CC 800BFCCC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0C08D0 800BFCD0 03E00008 */ jr $ra -/* 0C08D4 800BFCD4 00000000 */ nop diff --git a/asm/non_matchings/audio/seqplayer/func_800BFCD8.s b/asm/non_matchings/audio/seqplayer/func_800BFCD8.s deleted file mode 100644 index cc403a435..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BFCD8.s +++ /dev/null @@ -1,42 +0,0 @@ -glabel func_800BFCD8 -/* 0C08D8 800BFCD8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0C08DC 800BFCDC 30AE00FF */ andi $t6, $a1, 0xff -/* 0C08E0 800BFCE0 AFA5001C */ sw $a1, 0x1c($sp) -/* 0C08E4 800BFCE4 29C10080 */ slti $at, $t6, 0x80 -/* 0C08E8 800BFCE8 01C02825 */ move $a1, $t6 -/* 0C08EC 800BFCEC AFBF0014 */ sw $ra, 0x14($sp) -/* 0C08F0 800BFCF0 14200004 */ bnez $at, .L800BFD04 -/* 0C08F4 800BFCF4 01C01025 */ move $v0, $t6 -/* 0C08F8 800BFCF8 A48E001C */ sh $t6, 0x1c($a0) -/* 0C08FC 800BFCFC 10000014 */ b .L800BFD50 -/* 0C0900 800BFD00 AC800040 */ sw $zero, 0x40($a0) -.L800BFD04: -/* 0C0904 800BFD04 2401007F */ li $at, 127 -/* 0C0908 800BFD08 14410005 */ bne $v0, $at, .L800BFD20 -/* 0C090C 800BFD0C 24860040 */ addiu $a2, $a0, 0x40 -/* 0C0910 800BFD10 240F0001 */ li $t7, 1 -/* 0C0914 800BFD14 A480001C */ sh $zero, 0x1c($a0) -/* 0C0918 800BFD18 1000000D */ b .L800BFD50 -/* 0C091C 800BFD1C AC8F0040 */ sw $t7, 0x40($a0) -.L800BFD20: -/* 0C0920 800BFD20 2487007C */ addiu $a3, $a0, 0x7c -/* 0C0924 800BFD24 0C02FF1A */ jal func_800BFC68 -/* 0C0928 800BFD28 AFA40018 */ sw $a0, 0x18($sp) -/* 0C092C 800BFD2C 8FA40018 */ lw $a0, 0x18($sp) -/* 0C0930 800BFD30 0002C400 */ sll $t8, $v0, 0x10 -/* 0C0934 800BFD34 0018CC03 */ sra $t9, $t8, 0x10 -/* 0C0938 800BFD38 17200005 */ bnez $t9, .L800BFD50 -/* 0C093C 800BFD3C A482001C */ sh $v0, 0x1c($a0) -/* 0C0940 800BFD40 90880000 */ lbu $t0, ($a0) -/* 0C0944 800BFD44 3109FFF7 */ andi $t1, $t0, 0xfff7 -/* 0C0948 800BFD48 10000004 */ b .L800BFD5C -/* 0C094C 800BFD4C A0890000 */ sb $t1, ($a0) -.L800BFD50: -/* 0C0950 800BFD50 908B0000 */ lbu $t3, ($a0) -/* 0C0954 800BFD54 356C0008 */ ori $t4, $t3, 8 -/* 0C0958 800BFD58 A08C0000 */ sb $t4, ($a0) -.L800BFD5C: -/* 0C095C 800BFD5C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0C0960 800BFD60 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0C0964 800BFD64 03E00008 */ jr $ra -/* 0C0968 800BFD68 00000000 */ nop diff --git a/asm/non_matchings/audio/seqplayer/func_800BFD6C.s b/asm/non_matchings/audio/seqplayer/func_800BFD6C.s deleted file mode 100644 index 4eed92f79..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800BFD6C.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel func_800BFD6C -/* 0C096C 800BFD6C 30AE00FF */ andi $t6, $a1, 0xff -/* 0C0970 800BFD70 448E2000 */ mtc1 $t6, $f4 -/* 0C0974 800BFD74 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 0C0978 800BFD78 44814000 */ mtc1 $at, $f8 -/* 0C097C 800BFD7C 468021A0 */ cvt.s.w $f6, $f4 -/* 0C0980 800BFD80 AFA50004 */ sw $a1, 4($sp) -/* 0C0984 800BFD84 46083283 */ div.s $f10, $f6, $f8 -/* 0C0988 800BFD88 03E00008 */ jr $ra -/* 0C098C 800BFD8C E48A0024 */ swc1 $f10, 0x24($a0) diff --git a/asm/non_matchings/audio/seqplayer/func_800BFD90.s b/asm/non_matchings/audio/seqplayer/func_800BFD90.s index 79632084e..e10db8380 100644 --- a/asm/non_matchings/audio/seqplayer/func_800BFD90.s +++ b/asm/non_matchings/audio/seqplayer/func_800BFD90.s @@ -19,7 +19,7 @@ glabel func_800BFD90 /* 0C09D0 800BFDD0 8E240048 */ lw $a0, 0x48($s1) /* 0C09D4 800BFDD4 50800004 */ beql $a0, $zero, .L800BFDE8 /* 0C09D8 800BFDD8 26100004 */ addiu $s0, $s0, 4 -/* 0C09DC 800BFDDC 0C02FC64 */ jal func_800BF190 +/* 0C09DC 800BFDDC 0C02FC64 */ jal seq_channel_layer_process_script /* 0C09E0 800BFDE0 00000000 */ nop /* 0C09E4 800BFDE4 26100004 */ addiu $s0, $s0, 4 .L800BFDE8: @@ -50,7 +50,7 @@ glabel func_800BFD90 /* 0C0A3C 800BFE3C 83B3004B */ lb $s3, 0x4b($sp) .L800BFE40: glabel L800BFE40 -/* 0C0A40 800BFE40 0C02FC42 */ jal func_800BF108 +/* 0C0A40 800BFE40 0C02FC42 */ jal m64_read_u8 /* 0C0A44 800BFE44 02202025 */ move $a0, $s1 /* 0C0A48 800BFE48 284100C1 */ slti $at, $v0, 0xc1 /* 0C0A4C 800BFE4C 305000FF */ andi $s0, $v0, 0xff @@ -69,7 +69,7 @@ glabel L800BFE7C /* 0C0A7C 800BFE7C 92240018 */ lbu $a0, 0x18($s1) /* 0C0A80 800BFE80 14800005 */ bnez $a0, .L800BFE98 /* 0C0A84 800BFE84 2482FFFF */ addiu $v0, $a0, -1 -/* 0C0A88 800BFE88 0C02FAE9 */ jal func_800BEBA4 +/* 0C0A88 800BFE88 0C02FAE9 */ jal sequence_channel_disable /* 0C0A8C 800BFE8C 02402025 */ move $a0, $s2 /* 0C0A90 800BFE90 1000027C */ b .L800C0884 /* 0C0A94 800BFE94 02408825 */ move $s1, $s2 @@ -82,7 +82,7 @@ glabel L800BFE7C /* 0C0AAC 800BFEAC 1000FFE4 */ b .L800BFE40 /* 0C0AB0 800BFEB0 AE290000 */ sw $t1, ($s1) glabel L800BFEB4 -/* 0C0AB4 800BFEB4 0C02FC53 */ jal func_800BF14C +/* 0C0AB4 800BFEB4 0C02FC53 */ jal m64_read_compressed_u16 /* 0C0AB8 800BFEB8 02202025 */ move $a0, $s1 /* 0C0ABC 800BFEBC 10000270 */ b .L800C0880 /* 0C0AC0 800BFEC0 A642001A */ sh $v0, 0x1a($s2) @@ -92,7 +92,7 @@ glabel L800BFEC4 /* 0C0ACC 800BFECC 1000026C */ b .L800C0880 /* 0C0AD0 800BFED0 A24C0000 */ sb $t4, ($s2) glabel L800BFED4 -/* 0C0AD4 800BFED4 0C02FC47 */ jal func_800BF11C +/* 0C0AD4 800BFED4 0C02FC47 */ jal m64_read_s16 /* 0C0AD8 800BFED8 02202025 */ move $a0, $s1 /* 0C0ADC 800BFEDC 922E0018 */ lbu $t6, 0x18($s1) /* 0C0AE0 800BFEE0 8E2D0000 */ lw $t5, ($s1) @@ -108,7 +108,7 @@ glabel L800BFED4 /* 0C0B08 800BFF08 1000FFCD */ b .L800BFE40 /* 0C0B0C 800BFF0C AE2C0000 */ sw $t4, ($s1) glabel L800BFF10 -/* 0C0B10 800BFF10 0C02FC42 */ jal func_800BF108 +/* 0C0B10 800BFF10 0C02FC42 */ jal m64_read_u8 /* 0C0B14 800BFF14 02202025 */ move $a0, $s1 /* 0C0B18 800BFF18 922E0018 */ lbu $t6, 0x18($s1) /* 0C0B1C 800BFF1C 022E7821 */ addu $t7, $s1, $t6 @@ -148,7 +148,7 @@ glabel L800BFF90 /* 0C0B98 800BFF98 1000FFA9 */ b .L800BFE40 /* 0C0B9C 800BFF9C A22E0018 */ sb $t6, 0x18($s1) glabel L800BFFA0 -/* 0C0BA0 800BFFA0 0C02FC47 */ jal func_800BF11C +/* 0C0BA0 800BFFA0 0C02FC47 */ jal m64_read_s16 /* 0C0BA4 800BFFA4 02202025 */ move $a0, $s1 /* 0C0BA8 800BFFA8 240100FA */ li $at, 250 /* 0C0BAC 800BFFAC 16010003 */ bne $s0, $at, .L800BFFBC @@ -174,7 +174,7 @@ glabel L800BFFA0 /* 0C0BF0 800BFFF0 1000FF93 */ b .L800BFE40 /* 0C0BF4 800BFFF4 AE390000 */ sw $t9, ($s1) glabel L800BFFF8 -/* 0C0BF8 800BFFF8 0C02FC42 */ jal func_800BF108 +/* 0C0BF8 800BFFF8 0C02FC42 */ jal m64_read_u8 /* 0C0BFC 800BFFFC 02202025 */ move $a0, $s1 /* 0C0C00 800C0000 240100F3 */ li $at, 243 /* 0C0C04 800C0004 16010003 */ bne $s0, $at, .L800C0014 @@ -196,22 +196,22 @@ glabel L800BFFF8 /* 0C0C3C 800C003C AE2B0000 */ sw $t3, ($s1) glabel L800C0040 /* 0C0C40 800C0040 26500084 */ addiu $s0, $s2, 0x84 -/* 0C0C44 800C0044 0C02F506 */ jal func_800BD418 +/* 0C0C44 800C0044 0C02F506 */ jal note_pool_clear /* 0C0C48 800C0048 02002025 */ move $a0, $s0 -/* 0C0C4C 800C004C 0C02FC42 */ jal func_800BF108 +/* 0C0C4C 800C004C 0C02FC42 */ jal m64_read_u8 /* 0C0C50 800C0050 02202025 */ move $a0, $s1 /* 0C0C54 800C0054 02002025 */ move $a0, $s0 -/* 0C0C58 800C0058 0C02F55E */ jal func_800BD578 +/* 0C0C58 800C0058 0C02F55E */ jal note_pool_fill /* 0C0C5C 800C005C 00402825 */ move $a1, $v0 /* 0C0C60 800C0060 1000FF77 */ b .L800BFE40 /* 0C0C64 800C0064 00000000 */ nop glabel L800C0068 -/* 0C0C68 800C0068 0C02F506 */ jal func_800BD418 +/* 0C0C68 800C0068 0C02F506 */ jal note_pool_clear /* 0C0C6C 800C006C 26440084 */ addiu $a0, $s2, 0x84 /* 0C0C70 800C0070 1000FF73 */ b .L800BFE40 /* 0C0C74 800C0074 00000000 */ nop glabel L800C0078 -/* 0C0C78 800C0078 0C02FC47 */ jal func_800BF11C +/* 0C0C78 800C0078 0C02FC47 */ jal m64_read_s16 /* 0C0C7C 800C007C 02202025 */ move $a0, $s1 /* 0C0C80 800C0080 8E8C0014 */ lw $t4, 0x14($s4) /* 0C0C84 800C0084 304EFFFF */ andi $t6, $v0, 0xffff @@ -235,11 +235,11 @@ glabel L800C0094 /* 0C0CC8 800C00C8 1000FF5D */ b .L800BFE40 /* 0C0CCC 800C00CC AE4E0034 */ sw $t6, 0x34($s2) glabel L800C00D0 -/* 0C0CD0 800C00D0 0C02FC42 */ jal func_800BF108 +/* 0C0CD0 800C00D0 0C02FC42 */ jal m64_read_u8 /* 0C0CD4 800C00D4 02202025 */ move $a0, $s1 /* 0C0CD8 800C00D8 928F0004 */ lbu $t7, 4($s4) -/* 0C0CDC 800C00DC 3C03803B */ lui $v1, %hi(D_803B7078) # $v1, 0x803b -/* 0C0CE0 800C00E0 8C637078 */ lw $v1, %lo(D_803B7078)($v1) +/* 0C0CDC 800C00DC 3C03803B */ lui $v1, %hi(gAlBankSets) # $v1, 0x803b +/* 0C0CE0 800C00E0 8C637078 */ lw $v1, %lo(gAlBankSets)($v1) /* 0C0CE4 800C00E4 000FC040 */ sll $t8, $t7, 1 /* 0C0CE8 800C00E8 24040001 */ li $a0, 1 /* 0C0CEC 800C00EC 0078C821 */ addu $t9, $v1, $t8 @@ -251,17 +251,17 @@ glabel L800C00D0 /* 0C0D04 800C0104 01225023 */ subu $t2, $t1, $v0 /* 0C0D08 800C0108 01435821 */ addu $t3, $t2, $v1 /* 0C0D0C 800C010C 91700000 */ lbu $s0, ($t3) -/* 0C0D10 800C0110 0C02E6A4 */ jal func_800B9A90 +/* 0C0D10 800C0110 0C02E6A4 */ jal get_bank_or_seq /* 0C0D14 800C0114 02003025 */ move $a2, $s0 /* 0C0D18 800C0118 10400002 */ beqz $v0, .L800C0124 /* 0C0D1C 800C011C 00000000 */ nop /* 0C0D20 800C0120 A2500006 */ sb $s0, 6($s2) .L800C0124: glabel L800C0124 -/* 0C0D24 800C0124 0C02FC42 */ jal func_800BF108 +/* 0C0D24 800C0124 0C02FC42 */ jal m64_read_u8 /* 0C0D28 800C0128 02202025 */ move $a0, $s1 /* 0C0D2C 800C012C 02402025 */ move $a0, $s2 -/* 0C0D30 800C0130 0C02FF36 */ jal func_800BFCD8 +/* 0C0D30 800C0130 0C02FF36 */ jal set_instrument /* 0C0D34 800C0134 304500FF */ andi $a1, $v0, 0xff /* 0C0D38 800C0138 1000FF41 */ b .L800BFE40 /* 0C0D3C 800C013C 00000000 */ nop @@ -276,17 +276,17 @@ glabel L800C0150 /* 0C0D58 800C0158 1000FF39 */ b .L800BFE40 /* 0C0D5C 800C015C A2590000 */ sb $t9, ($s2) glabel L800C0160 -/* 0C0D60 800C0160 0C02FC42 */ jal func_800BF108 +/* 0C0D60 800C0160 0C02FC42 */ jal m64_read_u8 /* 0C0D64 800C0164 02202025 */ move $a0, $s1 /* 0C0D68 800C0168 02402025 */ move $a0, $s2 -/* 0C0D6C 800C016C 0C02FF5B */ jal func_800BFD6C +/* 0C0D6C 800C016C 0C02FF5B */ jal sequence_channel_set_volume /* 0C0D70 800C0170 304500FF */ andi $a1, $v0, 0xff /* 0C0D74 800C0174 92490001 */ lbu $t1, 1($s2) /* 0C0D78 800C0178 352A0040 */ ori $t2, $t1, 0x40 /* 0C0D7C 800C017C 1000FF30 */ b .L800BFE40 /* 0C0D80 800C0180 A24A0001 */ sb $t2, 1($s2) glabel L800C0184 -/* 0C0D84 800C0184 0C02FC42 */ jal func_800BF108 +/* 0C0D84 800C0184 0C02FC42 */ jal m64_read_u8 /* 0C0D88 800C0188 02202025 */ move $a0, $s1 /* 0C0D8C 800C018C 44822000 */ mtc1 $v0, $f4 /* 0C0D90 800C0190 3C013C00 */ li $at, 0x3C000000 # 0.007813 @@ -299,7 +299,7 @@ glabel L800C0184 /* 0C0DAC 800C01AC 1000FF24 */ b .L800BFE40 /* 0C0DB0 800C01B0 E64A0020 */ swc1 $f10, 0x20($s2) glabel L800C01B4 -/* 0C0DB4 800C01B4 0C02FC47 */ jal func_800BF11C +/* 0C0DB4 800C01B4 0C02FC47 */ jal m64_read_s16 /* 0C0DB8 800C01B8 02202025 */ move $a0, $s1 /* 0C0DBC 800C01BC 304FFFFF */ andi $t7, $v0, 0xffff /* 0C0DC0 800C01C0 448F8000 */ mtc1 $t7, $f16 @@ -313,7 +313,7 @@ glabel L800C01B4 /* 0C0DE0 800C01E0 1000FF17 */ b .L800BFE40 /* 0C0DE4 800C01E4 E6460030 */ swc1 $f6, 0x30($s2) glabel L800C01E8 -/* 0C0DE8 800C01E8 0C02FC42 */ jal func_800BF108 +/* 0C0DE8 800C01E8 0C02FC42 */ jal m64_read_u8 /* 0C0DEC 800C01EC 02202025 */ move $a0, $s1 /* 0C0DF0 800C01F0 2449007F */ addiu $t1, $v0, 0x7f /* 0C0DF4 800C01F4 312A00FF */ andi $t2, $t1, 0xff @@ -327,7 +327,7 @@ glabel L800C01E8 /* 0C0E14 800C0214 1000FF0A */ b .L800BFE40 /* 0C0E18 800C0218 E6480030 */ swc1 $f8, 0x30($s2) glabel L800C021C -/* 0C0E1C 800C021C 0C02FC42 */ jal func_800BF108 +/* 0C0E1C 800C021C 0C02FC42 */ jal m64_read_u8 /* 0C0E20 800C0220 02202025 */ move $a0, $s1 /* 0C0E24 800C0224 92590001 */ lbu $t9, 1($s2) /* 0C0E28 800C0228 A2420009 */ sb $v0, 9($s2) @@ -335,7 +335,7 @@ glabel L800C021C /* 0C0E30 800C0230 1000FF03 */ b .L800BFE40 /* 0C0E34 800C0234 A24D0001 */ sb $t5, 1($s2) glabel L800C0238 -/* 0C0E38 800C0238 0C02FC42 */ jal func_800BF108 +/* 0C0E38 800C0238 0C02FC42 */ jal m64_read_u8 /* 0C0E3C 800C023C 02202025 */ move $a0, $s1 /* 0C0E40 800C0240 924A0001 */ lbu $t2, 1($s2) /* 0C0E44 800C0244 A242000A */ sb $v0, 0xa($s2) @@ -350,7 +350,7 @@ glabel L800C0254 /* 0C0E64 800C0264 1000FEF6 */ b .L800BFE40 /* 0C0E68 800C0268 A643001E */ sh $v1, 0x1e($s2) glabel L800C026C -/* 0C0E6C 800C026C 0C02FC47 */ jal func_800BF11C +/* 0C0E6C 800C026C 0C02FC47 */ jal m64_read_s16 /* 0C0E70 800C0270 02202025 */ move $a0, $s1 /* 0C0E74 800C0274 8E8E0014 */ lw $t6, 0x14($s4) /* 0C0E78 800C0278 304FFFFF */ andi $t7, $v0, 0xffff @@ -358,12 +358,12 @@ glabel L800C026C /* 0C0E80 800C0280 1000FEEF */ b .L800BFE40 /* 0C0E84 800C0284 AE580080 */ sw $t8, 0x80($s2) glabel L800C0288 -/* 0C0E88 800C0288 0C02FC42 */ jal func_800BF108 +/* 0C0E88 800C0288 0C02FC42 */ jal m64_read_u8 /* 0C0E8C 800C028C 02202025 */ move $a0, $s1 /* 0C0E90 800C0290 1000FEEB */ b .L800BFE40 /* 0C0E94 800C0294 A242007C */ sb $v0, 0x7c($s2) glabel L800C0298 -/* 0C0E98 800C0298 0C02FC42 */ jal func_800BF108 +/* 0C0E98 800C0298 0C02FC42 */ jal m64_read_u8 /* 0C0E9C 800C029C 02202025 */ move $a0, $s1 /* 0C0EA0 800C02A0 0002C8C0 */ sll $t9, $v0, 3 /* 0C0EA4 800C02A4 A6590012 */ sh $t9, 0x12($s2) @@ -371,7 +371,7 @@ glabel L800C0298 /* 0C0EAC 800C02AC 1000FEE4 */ b .L800BFE40 /* 0C0EB0 800C02B0 A6400016 */ sh $zero, 0x16($s2) glabel L800C02B4 -/* 0C0EB4 800C02B4 0C02FC42 */ jal func_800BF108 +/* 0C0EB4 800C02B4 0C02FC42 */ jal m64_read_u8 /* 0C0EB8 800C02B8 02202025 */ move $a0, $s1 /* 0C0EBC 800C02BC 00021940 */ sll $v1, $v0, 5 /* 0C0EC0 800C02C0 A6430010 */ sh $v1, 0x10($s2) @@ -379,50 +379,50 @@ glabel L800C02B4 /* 0C0EC8 800C02C8 1000FEDD */ b .L800BFE40 /* 0C0ECC 800C02CC A6400014 */ sh $zero, 0x14($s2) glabel L800C02D0 -/* 0C0ED0 800C02D0 0C02FC42 */ jal func_800BF108 +/* 0C0ED0 800C02D0 0C02FC42 */ jal m64_read_u8 /* 0C0ED4 800C02D4 02202025 */ move $a0, $s1 /* 0C0ED8 800C02D8 000268C0 */ sll $t5, $v0, 3 /* 0C0EDC 800C02DC A64D000E */ sh $t5, 0xe($s2) -/* 0C0EE0 800C02E0 0C02FC42 */ jal func_800BF108 +/* 0C0EE0 800C02E0 0C02FC42 */ jal m64_read_u8 /* 0C0EE4 800C02E4 02202025 */ move $a0, $s1 /* 0C0EE8 800C02E8 000248C0 */ sll $t1, $v0, 3 /* 0C0EEC 800C02EC A6490012 */ sh $t1, 0x12($s2) -/* 0C0EF0 800C02F0 0C02FC42 */ jal func_800BF108 +/* 0C0EF0 800C02F0 0C02FC42 */ jal m64_read_u8 /* 0C0EF4 800C02F4 02202025 */ move $a0, $s1 /* 0C0EF8 800C02F8 00025100 */ sll $t2, $v0, 4 /* 0C0EFC 800C02FC 1000FED0 */ b .L800BFE40 /* 0C0F00 800C0300 A64A0016 */ sh $t2, 0x16($s2) glabel L800C0304 -/* 0C0F04 800C0304 0C02FC42 */ jal func_800BF108 +/* 0C0F04 800C0304 0C02FC42 */ jal m64_read_u8 /* 0C0F08 800C0308 02202025 */ move $a0, $s1 /* 0C0F0C 800C030C 00025940 */ sll $t3, $v0, 5 /* 0C0F10 800C0310 A64B000C */ sh $t3, 0xc($s2) -/* 0C0F14 800C0314 0C02FC42 */ jal func_800BF108 +/* 0C0F14 800C0314 0C02FC42 */ jal m64_read_u8 /* 0C0F18 800C0318 02202025 */ move $a0, $s1 /* 0C0F1C 800C031C 00026140 */ sll $t4, $v0, 5 /* 0C0F20 800C0320 A64C0010 */ sh $t4, 0x10($s2) -/* 0C0F24 800C0324 0C02FC42 */ jal func_800BF108 +/* 0C0F24 800C0324 0C02FC42 */ jal m64_read_u8 /* 0C0F28 800C0328 02202025 */ move $a0, $s1 /* 0C0F2C 800C032C 00027100 */ sll $t6, $v0, 4 /* 0C0F30 800C0330 1000FEC3 */ b .L800BFE40 /* 0C0F34 800C0334 A64E0014 */ sh $t6, 0x14($s2) glabel L800C0338 -/* 0C0F38 800C0338 0C02FC42 */ jal func_800BF108 +/* 0C0F38 800C0338 0C02FC42 */ jal m64_read_u8 /* 0C0F3C 800C033C 02202025 */ move $a0, $s1 /* 0C0F40 800C0340 00027900 */ sll $t7, $v0, 4 /* 0C0F44 800C0344 1000FEBE */ b .L800BFE40 /* 0C0F48 800C0348 A64F0018 */ sh $t7, 0x18($s2) glabel L800C034C -/* 0C0F4C 800C034C 0C02FC42 */ jal func_800BF108 +/* 0C0F4C 800C034C 0C02FC42 */ jal m64_read_u8 /* 0C0F50 800C0350 02202025 */ move $a0, $s1 /* 0C0F54 800C0354 1000FEBA */ b .L800BFE40 /* 0C0F58 800C0358 A2420004 */ sb $v0, 4($s2) glabel L800C035C -/* 0C0F5C 800C035C 0C02FC42 */ jal func_800BF108 +/* 0C0F5C 800C035C 0C02FC42 */ jal m64_read_u8 /* 0C0F60 800C0360 02202025 */ move $a0, $s1 /* 0C0F64 800C0364 92980004 */ lbu $t8, 4($s4) -/* 0C0F68 800C0368 3C03803B */ lui $v1, %hi(D_803B7078) # $v1, 0x803b -/* 0C0F6C 800C036C 8C637078 */ lw $v1, %lo(D_803B7078)($v1) +/* 0C0F68 800C0368 3C03803B */ lui $v1, %hi(gAlBankSets) # $v1, 0x803b +/* 0C0F6C 800C036C 8C637078 */ lw $v1, %lo(gAlBankSets)($v1) /* 0C0F70 800C0370 0018C840 */ sll $t9, $t8, 1 /* 0C0F74 800C0374 24040001 */ li $a0, 1 /* 0C0F78 800C0378 00796821 */ addu $t5, $v1, $t9 @@ -434,7 +434,7 @@ glabel L800C035C /* 0C0F90 800C0390 01425823 */ subu $t3, $t2, $v0 /* 0C0F94 800C0394 01636021 */ addu $t4, $t3, $v1 /* 0C0F98 800C0398 91900000 */ lbu $s0, ($t4) -/* 0C0F9C 800C039C 0C02E6A4 */ jal func_800B9A90 +/* 0C0F9C 800C039C 0C02E6A4 */ jal get_bank_or_seq /* 0C0FA0 800C03A0 02003025 */ move $a2, $s0 /* 0C0FA4 800C03A4 1040FEA6 */ beqz $v0, .L800BFE40 /* 0C0FA8 800C03A8 00000000 */ nop @@ -443,10 +443,10 @@ glabel L800C035C glabel L800C03B4 /* 0C0FB4 800C03B4 326E00FF */ andi $t6, $s3, 0xff /* 0C0FB8 800C03B8 AFAE0034 */ sw $t6, 0x34($sp) -/* 0C0FBC 800C03BC 0C02FC42 */ jal func_800BF108 +/* 0C0FBC 800C03BC 0C02FC42 */ jal m64_read_u8 /* 0C0FC0 800C03C0 02202025 */ move $a0, $s1 /* 0C0FC4 800C03C4 305000FF */ andi $s0, $v0, 0xff -/* 0C0FC8 800C03C8 0C02FC47 */ jal func_800BF11C +/* 0C0FC8 800C03C8 0C02FC47 */ jal m64_read_s16 /* 0C0FCC 800C03CC 02202025 */ move $a0, $s1 /* 0C0FD0 800C03D0 8E8F0014 */ lw $t7, 0x14($s4) /* 0C0FD4 800C03D4 8FB90034 */ lw $t9, 0x34($sp) @@ -456,7 +456,7 @@ glabel L800C03B4 /* 0C0FE4 800C03E4 1000FE96 */ b .L800BFE40 /* 0C0FE8 800C03E8 A06D0000 */ sb $t5, ($v1) glabel L800C03EC -/* 0C0FEC 800C03EC 0C02FC42 */ jal func_800BF108 +/* 0C0FEC 800C03EC 0C02FC42 */ jal m64_read_u8 /* 0C0FF0 800C03F0 02202025 */ move $a0, $s1 /* 0C0FF4 800C03F4 240100C8 */ li $at, 200 /* 0C0FF8 800C03F8 16010005 */ bne $s0, $at, .L800C0410 @@ -478,12 +478,12 @@ glabel L800C03EC /* 0C1030 800C0430 1000FE83 */ b .L800BFE40 /* 0C1034 800C0434 00199E03 */ sra $s3, $t9, 0x18 glabel L800C0438 -/* 0C1038 800C0438 0C02FC42 */ jal func_800BF108 +/* 0C1038 800C0438 0C02FC42 */ jal m64_read_u8 /* 0C103C 800C043C 02202025 */ move $a0, $s1 /* 0C1040 800C0440 1000FE7F */ b .L800BFE40 /* 0C1044 800C0444 A2420003 */ sb $v0, 3($s2) glabel L800C0448 -/* 0C1048 800C0448 0C02FC47 */ jal func_800BF11C +/* 0C1048 800C0448 0C02FC47 */ jal m64_read_s16 /* 0C104C 800C044C 02202025 */ move $a0, $s1 /* 0C1050 800C0450 8E890014 */ lw $t1, 0x14($s4) /* 0C1054 800C0454 304AFFFF */ andi $t2, $v0, 0xffff @@ -492,7 +492,7 @@ glabel L800C0448 /* 0C1060 800C0460 1000FE77 */ b .L800BFE40 /* 0C1064 800C0464 81930000 */ lb $s3, ($t4) glabel L800C0468 -/* 0C1068 800C0468 0C02FC42 */ jal func_800BF108 +/* 0C1068 800C0468 0C02FC42 */ jal m64_read_u8 /* 0C106C 800C046C 02202025 */ move $a0, $s1 /* 0C1070 800C0470 92590000 */ lbu $t9, ($s2) /* 0C1074 800C0474 00027880 */ sll $t7, $v0, 2 @@ -502,17 +502,17 @@ glabel L800C0468 /* 0C1084 800C0484 1000FE6E */ b .L800BFE40 /* 0C1088 800C0488 A24A0000 */ sb $t2, ($s2) glabel L800C048C -/* 0C108C 800C048C 0C02FC42 */ jal func_800BF108 +/* 0C108C 800C048C 0C02FC42 */ jal m64_read_u8 /* 0C1090 800C0490 02202025 */ move $a0, $s1 /* 0C1094 800C0494 1000FE6A */ b .L800BFE40 /* 0C1098 800C0498 A2420002 */ sb $v0, 2($s2) glabel L800C049C -/* 0C109C 800C049C 0C02FC42 */ jal func_800BF108 +/* 0C109C 800C049C 0C02FC42 */ jal m64_read_u8 /* 0C10A0 800C04A0 02202025 */ move $a0, $s1 /* 0C10A4 800C04A4 1000FE66 */ b .L800BFE40 /* 0C10A8 800C04A8 A242007D */ sb $v0, 0x7d($s2) glabel L800C04AC -/* 0C10AC 800C04AC 0C02FC42 */ jal func_800BF108 +/* 0C10AC 800C04AC 0C02FC42 */ jal m64_read_u8 /* 0C10B0 800C04B0 02202025 */ move $a0, $s1 /* 0C10B4 800C04B4 1000FE62 */ b .L800BFE40 /* 0C10B8 800C04B8 A2420007 */ sb $v0, 7($s2) @@ -541,12 +541,12 @@ glabel L800C04BC /* 0C1110 800C0510 1000FE4B */ b .L800BFE40 /* 0C1114 800C0514 AE2B0000 */ sw $t3, ($s1) glabel L800C0518 -/* 0C1118 800C0518 0C02FC42 */ jal func_800BF108 +/* 0C1118 800C0518 0C02FC42 */ jal m64_read_u8 /* 0C111C 800C051C 02202025 */ move $a0, $s1 /* 0C1120 800C0520 1000FE47 */ b .L800BFE40 /* 0C1124 800C0524 A2420008 */ sb $v0, 8($s2) glabel L800C0528 -/* 0C1128 800C0528 0C02FC47 */ jal func_800BF11C +/* 0C1128 800C0528 0C02FC47 */ jal m64_read_s16 /* 0C112C 800C052C 02202025 */ move $a0, $s1 /* 0C1130 800C0530 8E8E0014 */ lw $t6, 0x14($s4) /* 0C1134 800C0534 304FFFFF */ andi $t7, $v0, 0xffff @@ -573,30 +573,30 @@ glabel L800C0528 /* 0C1188 800C0588 1000FE2D */ b .L800BFE40 /* 0C118C 800C058C A24E0007 */ sb $t6, 7($s2) glabel L800C0590 -/* 0C1190 800C0590 0C02FC42 */ jal func_800BF108 +/* 0C1190 800C0590 0C02FC42 */ jal m64_read_u8 /* 0C1194 800C0594 02202025 */ move $a0, $s1 /* 0C1198 800C0598 A2420003 */ sb $v0, 3($s2) -/* 0C119C 800C059C 0C02FC42 */ jal func_800BF108 +/* 0C119C 800C059C 0C02FC42 */ jal m64_read_u8 /* 0C11A0 800C05A0 02202025 */ move $a0, $s1 /* 0C11A4 800C05A4 A2420002 */ sb $v0, 2($s2) -/* 0C11A8 800C05A8 0C02FC42 */ jal func_800BF108 +/* 0C11A8 800C05A8 0C02FC42 */ jal m64_read_u8 /* 0C11AC 800C05AC 02202025 */ move $a0, $s1 /* 0C11B0 800C05B0 A2420005 */ sb $v0, 5($s2) -/* 0C11B4 800C05B4 0C02FC42 */ jal func_800BF108 +/* 0C11B4 800C05B4 0C02FC42 */ jal m64_read_u8 /* 0C11B8 800C05B8 02202025 */ move $a0, $s1 /* 0C11BC 800C05BC 0002C600 */ sll $t8, $v0, 0x18 /* 0C11C0 800C05C0 00185603 */ sra $t2, $t8, 0x18 /* 0C11C4 800C05C4 A64A001E */ sh $t2, 0x1e($s2) -/* 0C11C8 800C05C8 0C02FC42 */ jal func_800BF108 +/* 0C11C8 800C05C8 0C02FC42 */ jal m64_read_u8 /* 0C11CC 800C05CC 02202025 */ move $a0, $s1 /* 0C11D0 800C05D0 A2420009 */ sb $v0, 9($s2) -/* 0C11D4 800C05D4 0C02FC42 */ jal func_800BF108 +/* 0C11D4 800C05D4 0C02FC42 */ jal m64_read_u8 /* 0C11D8 800C05D8 02202025 */ move $a0, $s1 /* 0C11DC 800C05DC A242000A */ sb $v0, 0xa($s2) -/* 0C11E0 800C05E0 0C02FC42 */ jal func_800BF108 +/* 0C11E0 800C05E0 0C02FC42 */ jal m64_read_u8 /* 0C11E4 800C05E4 02202025 */ move $a0, $s1 /* 0C11E8 800C05E8 A2420004 */ sb $v0, 4($s2) -/* 0C11EC 800C05EC 0C02FC42 */ jal func_800BF108 +/* 0C11EC 800C05EC 0C02FC42 */ jal m64_read_u8 /* 0C11F0 800C05F0 02202025 */ move $a0, $s1 /* 0C11F4 800C05F4 924C0001 */ lbu $t4, 1($s2) /* 0C11F8 800C05F8 A2420007 */ sb $v0, 7($s2) @@ -615,14 +615,14 @@ glabel L800C0608 /* 0C1228 800C0628 1000FE05 */ b .L800BFE40 /* 0C122C 800C062C E64A0030 */ swc1 $f10, 0x30($s2) glabel L800C0630 -/* 0C1230 800C0630 0C02FC42 */ jal func_800BF108 +/* 0C1230 800C0630 0C02FC42 */ jal m64_read_u8 /* 0C1234 800C0634 02202025 */ move $a0, $s1 /* 0C1238 800C0638 1000FE01 */ b .L800BFE40 /* 0C123C 800C063C A2420005 */ sb $v0, 5($s2) glabel L800C0640 -/* 0C1240 800C0640 0C02FC47 */ jal func_800BF11C +/* 0C1240 800C0640 0C02FC47 */ jal m64_read_s16 /* 0C1244 800C0644 02202025 */ move $a0, $s1 -/* 0C1248 800C0648 0C02FC42 */ jal func_800BF108 +/* 0C1248 800C0648 0C02FC42 */ jal m64_read_u8 /* 0C124C 800C064C 02202025 */ move $a0, $s1 /* 0C1250 800C0650 1000FDFB */ b .L800BFE40 /* 0C1254 800C0654 00000000 */ nop @@ -681,14 +681,14 @@ glabel L800C0708 /* 0C130C 800C070C 1000005C */ b .L800C0880 /* 0C1310 800C0710 A64C001A */ sh $t4, 0x1a($s2) glabel L800C0714 -/* 0C1314 800C0714 0C02FC47 */ jal func_800BF11C +/* 0C1314 800C0714 0C02FC47 */ jal m64_read_s16 /* 0C1318 800C0718 02202025 */ move $a0, $s1 /* 0C131C 800C071C 02003025 */ move $a2, $s0 /* 0C1320 800C0720 30C5000F */ andi $a1, $a2, 0xf /* 0C1324 800C0724 00A03025 */ move $a2, $a1 /* 0C1328 800C0728 AFA50034 */ sw $a1, 0x34($sp) /* 0C132C 800C072C 02402025 */ move $a0, $s2 -/* 0C1330 800C0730 0C02FA84 */ jal func_800BEA10 +/* 0C1330 800C0730 0C02FA84 */ jal seq_channel_set_layer /* 0C1334 800C0734 A7A20052 */ sh $v0, 0x52($sp) /* 0C1338 800C0738 8FA60034 */ lw $a2, 0x34($sp) /* 0C133C 800C073C 1440FDC0 */ bnez $v0, .L800BFE40 @@ -704,7 +704,7 @@ glabel L800C0760 /* 0C1360 800C0760 02002825 */ move $a1, $s0 /* 0C1364 800C0764 30AA000F */ andi $t2, $a1, 0xf /* 0C1368 800C0768 01402825 */ move $a1, $t2 -/* 0C136C 800C076C 0C02FAD5 */ jal func_800BEB54 +/* 0C136C 800C076C 0C02FAD5 */ jal seq_channel_layer_free /* 0C1370 800C0770 02402025 */ move $a0, $s2 /* 0C1374 800C0774 1000FDB2 */ b .L800BFE40 /* 0C1378 800C0778 00000000 */ nop @@ -715,7 +715,7 @@ glabel L800C077C /* 0C1388 800C0788 02003025 */ move $a2, $s0 /* 0C138C 800C078C 30C5000F */ andi $a1, $a2, 0xf /* 0C1390 800C0790 00A03025 */ move $a2, $a1 -/* 0C1394 800C0794 0C02FA84 */ jal func_800BEA10 +/* 0C1394 800C0794 0C02FA84 */ jal seq_channel_set_layer /* 0C1398 800C0798 AFA50034 */ sw $a1, 0x34($sp) /* 0C139C 800C079C 2401FFFF */ li $at, -1 /* 0C13A0 800C07A0 1041FDA7 */ beq $v0, $at, .L800BFE40 @@ -736,7 +736,7 @@ glabel L800C077C /* 0C13DC 800C07DC 1000FD98 */ b .L800BFE40 /* 0C13E0 800C07E0 AD6A0050 */ sw $t2, 0x50($t3) glabel L800C07E4 -/* 0C13E4 800C07E4 0C02FC47 */ jal func_800BF11C +/* 0C13E4 800C07E4 0C02FC47 */ jal m64_read_s16 /* 0C13E8 800C07E8 02202025 */ move $a0, $s1 /* 0C13EC 800C07EC 8E8E0014 */ lw $t6, 0x14($s4) /* 0C13F0 800C07F0 02002825 */ move $a1, $s0 @@ -744,7 +744,7 @@ glabel L800C07E4 /* 0C13F8 800C07F8 304DFFFF */ andi $t5, $v0, 0xffff /* 0C13FC 800C07FC 03202825 */ move $a1, $t9 /* 0C1400 800C0800 02802025 */ move $a0, $s4 -/* 0C1404 800C0804 0C02FBA2 */ jal func_800BEE88 +/* 0C1404 800C0804 0C02FBA2 */ jal sequence_channel_enable /* 0C1408 800C0808 01CD3021 */ addu $a2, $t6, $t5 /* 0C140C 800C080C 1000FD8C */ b .L800BFE40 /* 0C1410 800C0810 00000000 */ nop @@ -752,13 +752,13 @@ glabel L800C0814 /* 0C1414 800C0814 3218000F */ andi $t8, $s0, 0xf /* 0C1418 800C0818 00184880 */ sll $t1, $t8, 2 /* 0C141C 800C081C 02896021 */ addu $t4, $s4, $t1 -/* 0C1420 800C0820 0C02FAE9 */ jal func_800BEBA4 +/* 0C1420 800C0820 0C02FAE9 */ jal sequence_channel_disable /* 0C1424 800C0824 8D840030 */ lw $a0, 0x30($t4) /* 0C1428 800C0828 1000FD85 */ b .L800BFE40 /* 0C142C 800C082C 00000000 */ nop glabel L800C0830 /* 0C1430 800C0830 02202025 */ move $a0, $s1 -/* 0C1434 800C0834 0C02FC42 */ jal func_800BF108 +/* 0C1434 800C0834 0C02FC42 */ jal m64_read_u8 /* 0C1438 800C0838 A3A80055 */ sb $t0, 0x55($sp) /* 0C143C 800C083C 93A80055 */ lbu $t0, 0x55($sp) /* 0C1440 800C0840 00085080 */ sll $t2, $t0, 2 @@ -769,7 +769,7 @@ glabel L800C0830 /* 0C1454 800C0854 A1D30058 */ sb $s3, 0x58($t6) glabel L800C0858 /* 0C1458 800C0858 02202025 */ move $a0, $s1 -/* 0C145C 800C085C 0C02FC42 */ jal func_800BF108 +/* 0C145C 800C085C 0C02FC42 */ jal m64_read_u8 /* 0C1460 800C0860 A3A80055 */ sb $t0, 0x55($sp) /* 0C1464 800C0864 93A80055 */ lbu $t0, 0x55($sp) /* 0C1468 800C0868 00086880 */ sll $t5, $t0, 2 @@ -788,7 +788,7 @@ glabel L800C0880 /* 0C148C 800C088C 8E240048 */ lw $a0, 0x48($s1) /* 0C1490 800C0890 50800004 */ beql $a0, $zero, .L800C08A4 /* 0C1494 800C0894 26100004 */ addiu $s0, $s0, 4 -/* 0C1498 800C0898 0C02FC64 */ jal func_800BF190 +/* 0C1498 800C0898 0C02FC64 */ jal seq_channel_layer_process_script /* 0C149C 800C089C 00000000 */ nop /* 0C14A0 800C08A0 26100004 */ addiu $s0, $s0, 4 .L800C08A4: diff --git a/asm/non_matchings/audio/seqplayer/func_800C08CC.s b/asm/non_matchings/audio/seqplayer/func_800C08CC.s index d10db391c..4bffd60e0 100644 --- a/asm/non_matchings/audio/seqplayer/func_800C08CC.s +++ b/asm/non_matchings/audio/seqplayer/func_800C08CC.s @@ -33,8 +33,8 @@ glabel func_800C08CC /* 0C1548 800C0948 0C02ED61 */ jal func_800BB584 /* 0C154C 800C094C A2290000 */ sb $t1, ($s1) /* 0C1550 800C0950 922A0006 */ lbu $t2, 6($s1) -/* 0C1554 800C0954 3C0B803B */ lui $t3, %hi(D_803B03C0) # $t3, 0x803b -/* 0C1558 800C0958 256B03C0 */ addiu $t3, %lo(D_803B03C0) # addiu $t3, $t3, 0x3c0 +/* 0C1554 800C0954 3C0B803B */ lui $t3, %hi(gBankLoadStatus) # $t3, 0x803b +/* 0C1558 800C0958 256B03C0 */ addiu $t3, %lo(gBankLoadStatus) # addiu $t3, $t3, 0x3c0 /* 0C155C 800C095C 014B1021 */ addu $v0, $t2, $t3 /* 0C1560 800C0960 904C0000 */ lbu $t4, ($v0) /* 0C1564 800C0964 24060005 */ li $a2, 5 @@ -46,7 +46,7 @@ glabel func_800C08CC .L800C097C: /* 0C157C 800C097C 262E0124 */ addiu $t6, $s1, 0x124 /* 0C1580 800C0980 AFAE0010 */ sw $t6, 0x10($sp) -/* 0C1584 800C0984 0C02EAD6 */ jal func_800BAB58 +/* 0C1584 800C0984 0C02EAD6 */ jal audio_dma_partial_copy_async /* 0C1588 800C0988 02003825 */ move $a3, $s0 /* 0C158C 800C098C 100001E4 */ b .L800C1120 /* 0C1590 800C0990 8FBF002C */ lw $ra, 0x2c($sp) @@ -60,10 +60,10 @@ glabel func_800C08CC /* 0C15AC 800C09AC 00003025 */ move $a2, $zero /* 0C15B0 800C09B0 2401FFFF */ li $at, -1 /* 0C15B4 800C09B4 104101D9 */ beq $v0, $at, .L800C111C -/* 0C15B8 800C09B8 3C0A803B */ lui $t2, %hi(D_803B0400) # $t2, 0x803b +/* 0C15B8 800C09B8 3C0A803B */ lui $t2, %hi(gSeqLoadStatus) # $t2, 0x803b /* 0C15BC 800C09BC 92390000 */ lbu $t9, ($s1) /* 0C15C0 800C09C0 92290004 */ lbu $t1, 4($s1) -/* 0C15C4 800C09C4 254A0400 */ addiu $t2, %lo(D_803B0400) # addiu $t2, $t2, 0x400 +/* 0C15C4 800C09C4 254A0400 */ addiu $t2, %lo(gSeqLoadStatus) # addiu $t2, $t2, 0x400 /* 0C15C8 800C09C8 3328FFEF */ andi $t0, $t9, 0xffef /* 0C15CC 800C09CC A2280000 */ sb $t0, ($s1) /* 0C15D0 800C09D0 012A1821 */ addu $v1, $t1, $t2 @@ -76,8 +76,8 @@ glabel func_800C08CC .L800C09EC: /* 0C15EC 800C09EC 922D0004 */ lbu $t5, 4($s1) .L800C09F0: -/* 0C15F0 800C09F0 3C0E803B */ lui $t6, %hi(D_803B0400) # $t6, 0x803b -/* 0C15F4 800C09F4 25CE0400 */ addiu $t6, %lo(D_803B0400) # addiu $t6, $t6, 0x400 +/* 0C15F0 800C09F0 3C0E803B */ lui $t6, %hi(gSeqLoadStatus) # $t6, 0x803b +/* 0C15F4 800C09F4 25CE0400 */ addiu $t6, %lo(gSeqLoadStatus) # addiu $t6, $t6, 0x400 /* 0C15F8 800C09F8 01AE1821 */ addu $v1, $t5, $t6 /* 0C15FC 800C09FC 90650000 */ lbu $a1, ($v1) /* 0C1600 800C0A00 24060005 */ li $a2, 5 @@ -85,15 +85,15 @@ glabel func_800C08CC /* 0C1608 800C0A08 15E00009 */ bnez $t7, .L800C0A30 /* 0C160C 800C0A0C 00000000 */ nop /* 0C1610 800C0A10 92380005 */ lbu $t8, 5($s1) -/* 0C1614 800C0A14 3C19803B */ lui $t9, %hi(D_803B03C0) # $t9, 0x803b -/* 0C1618 800C0A18 273903C0 */ addiu $t9, %lo(D_803B03C0) # addiu $t9, $t9, 0x3c0 +/* 0C1614 800C0A14 3C19803B */ lui $t9, %hi(gBankLoadStatus) # $t9, 0x803b +/* 0C1618 800C0A18 273903C0 */ addiu $t9, %lo(gBankLoadStatus) # addiu $t9, $t9, 0x3c0 /* 0C161C 800C0A1C 03191021 */ addu $v0, $t8, $t9 /* 0C1620 800C0A20 90440000 */ lbu $a0, ($v0) /* 0C1624 800C0A24 28880002 */ slti $t0, $a0, 2 /* 0C1628 800C0A28 11000005 */ beqz $t0, .L800C0A40 /* 0C162C 800C0A2C 00000000 */ nop .L800C0A30: -/* 0C1630 800C0A30 0C02FBCB */ jal func_800BEF2C +/* 0C1630 800C0A30 0C02FBCB */ jal sequence_player_disable /* 0C1634 800C0A34 02202025 */ move $a0, $s1 /* 0C1638 800C0A38 100001B9 */ b .L800C1120 /* 0C163C 800C0A3C 8FBF002C */ lw $ra, 0x2c($sp) @@ -102,8 +102,8 @@ glabel func_800C08CC /* 0C1644 800C0A44 24090002 */ li $t1, 2 /* 0C1648 800C0A48 A0690000 */ sb $t1, ($v1) /* 0C164C 800C0A4C 922A0005 */ lbu $t2, 5($s1) -/* 0C1650 800C0A50 3C0B803B */ lui $t3, %hi(D_803B03C0) # $t3, 0x803b -/* 0C1654 800C0A54 256B03C0 */ addiu $t3, %lo(D_803B03C0) # addiu $t3, $t3, 0x3c0 +/* 0C1650 800C0A50 3C0B803B */ lui $t3, %hi(gBankLoadStatus) # $t3, 0x803b +/* 0C1654 800C0A54 256B03C0 */ addiu $t3, %lo(gBankLoadStatus) # addiu $t3, $t3, 0x3c0 /* 0C1658 800C0A58 014B1021 */ addu $v0, $t2, $t3 /* 0C165C 800C0A5C 90440000 */ lbu $a0, ($v0) .L800C0A60: @@ -146,7 +146,7 @@ glabel func_800C08CC /* 0C16E4 800C0AE4 8FB30058 */ lw $s3, 0x58($sp) .L800C0AE8: glabel L800C0AE8 -/* 0C16E8 800C0AE8 0C02FC42 */ jal func_800BF108 +/* 0C16E8 800C0AE8 0C02FC42 */ jal m64_read_u8 /* 0C16EC 800C0AEC 02002025 */ move $a0, $s0 /* 0C16F0 800C0AF0 240100FF */ li $at, 255 /* 0C16F4 800C0AF4 1441000E */ bne $v0, $at, .L800C0B30 @@ -154,7 +154,7 @@ glabel L800C0AE8 /* 0C16FC 800C0AFC 92040018 */ lbu $a0, 0x18($s0) /* 0C1700 800C0B00 14800005 */ bnez $a0, .L800C0B18 /* 0C1704 800C0B04 2483FFFF */ addiu $v1, $a0, -1 -/* 0C1708 800C0B08 0C02FBCB */ jal func_800BEF2C +/* 0C1708 800C0B08 0C02FBCB */ jal sequence_player_disable /* 0C170C 800C0B0C 02202025 */ move $a0, $s1 /* 0C1710 800C0B10 1000016F */ b .L800C10D0 /* 0C1714 800C0B14 00000000 */ nop @@ -170,7 +170,7 @@ glabel L800C0AE8 /* 0C1734 800C0B34 240100FD */ li $at, 253 /* 0C1738 800C0B38 14610005 */ bne $v1, $at, .L800C0B50 /* 0C173C 800C0B3C 306200F0 */ andi $v0, $v1, 0xf0 -/* 0C1740 800C0B40 0C02FC53 */ jal func_800BF14C +/* 0C1740 800C0B40 0C02FC53 */ jal m64_read_compressed_u16 /* 0C1744 800C0B44 02002025 */ move $a0, $s0 /* 0C1748 800C0B48 10000161 */ b .L800C10D0 /* 0C174C 800C0B4C A622000E */ sh $v0, 0xe($s1) @@ -193,7 +193,7 @@ glabel L800C0AE8 /* 0C1788 800C0B88 01800008 */ jr $t4 /* 0C178C 800C0B8C 00000000 */ nop glabel L800C0B90 -/* 0C1790 800C0B90 0C02FC47 */ jal func_800BF11C +/* 0C1790 800C0B90 0C02FC47 */ jal m64_read_s16 /* 0C1794 800C0B94 02002025 */ move $a0, $s0 /* 0C1798 800C0B98 920E0018 */ lbu $t6, 0x18($s0) /* 0C179C 800C0B9C 8E0D0000 */ lw $t5, ($s0) @@ -211,7 +211,7 @@ glabel L800C0B90 /* 0C17CC 800C0BCC 1000FFC6 */ b .L800C0AE8 /* 0C17D0 800C0BD0 00000000 */ nop glabel L800C0BD4 -/* 0C17D4 800C0BD4 0C02FC42 */ jal func_800BF108 +/* 0C17D4 800C0BD4 0C02FC42 */ jal m64_read_u8 /* 0C17D8 800C0BD8 02002025 */ move $a0, $s0 /* 0C17DC 800C0BDC 920C0018 */ lbu $t4, 0x18($s0) /* 0C17E0 800C0BE0 020C7021 */ addu $t6, $s0, $t4 @@ -246,7 +246,7 @@ glabel L800C0C0C /* 0C184C 800C0C4C 1000FFA6 */ b .L800C0AE8 /* 0C1850 800C0C50 A2080018 */ sb $t0, 0x18($s0) glabel L800C0C54 -/* 0C1854 800C0C54 0C02FC47 */ jal func_800BF11C +/* 0C1854 800C0C54 0C02FC47 */ jal m64_read_s16 /* 0C1858 800C0C58 02002025 */ move $a0, $s0 /* 0C185C 800C0C5C 240100FA */ li $at, 250 /* 0C1860 800C0C60 16410003 */ bne $s2, $at, .L800C0C70 @@ -272,7 +272,7 @@ glabel L800C0C54 /* 0C18A4 800C0CA4 1000FF90 */ b .L800C0AE8 /* 0C18A8 800C0CA8 AE0B0000 */ sw $t3, ($s0) glabel L800C0CAC -/* 0C18AC 800C0CAC 0C02FC42 */ jal func_800BF108 +/* 0C18AC 800C0CAC 0C02FC42 */ jal m64_read_u8 /* 0C18B0 800C0CB0 02002025 */ move $a0, $s0 /* 0C18B4 800C0CB4 240100F3 */ li $at, 243 /* 0C18B8 800C0CB8 16410003 */ bne $s2, $at, .L800C0CC8 @@ -294,24 +294,24 @@ glabel L800C0CAC /* 0C18F0 800C0CF0 AE180000 */ sw $t8, ($s0) glabel L800C0CF4 /* 0C18F4 800C0CF4 26240094 */ addiu $a0, $s1, 0x94 -/* 0C18F8 800C0CF8 0C02F506 */ jal func_800BD418 +/* 0C18F8 800C0CF8 0C02F506 */ jal note_pool_clear /* 0C18FC 800C0CFC AFA40038 */ sw $a0, 0x38($sp) -/* 0C1900 800C0D00 0C02FC42 */ jal func_800BF108 +/* 0C1900 800C0D00 0C02FC42 */ jal m64_read_u8 /* 0C1904 800C0D04 02002025 */ move $a0, $s0 /* 0C1908 800C0D08 8FA40038 */ lw $a0, 0x38($sp) -/* 0C190C 800C0D0C 0C02F55E */ jal func_800BD578 +/* 0C190C 800C0D0C 0C02F55E */ jal note_pool_fill /* 0C1910 800C0D10 00402825 */ move $a1, $v0 /* 0C1914 800C0D14 1000FF74 */ b .L800C0AE8 /* 0C1918 800C0D18 00000000 */ nop glabel L800C0D1C -/* 0C191C 800C0D1C 0C02F506 */ jal func_800BD418 +/* 0C191C 800C0D1C 0C02F506 */ jal note_pool_clear /* 0C1920 800C0D20 26240094 */ addiu $a0, $s1, 0x94 /* 0C1924 800C0D24 1000FF70 */ b .L800C0AE8 /* 0C1928 800C0D28 00000000 */ nop glabel L800C0D2C /* 0C192C 800C0D2C A620000C */ sh $zero, 0xc($s1) glabel L800C0D30 -/* 0C1930 800C0D30 0C02FC42 */ jal func_800BF108 +/* 0C1930 800C0D30 0C02FC42 */ jal m64_read_u8 /* 0C1934 800C0D34 02002025 */ move $a0, $s0 /* 0C1938 800C0D38 862F000C */ lh $t7, 0xc($s1) /* 0C193C 800C0D3C 0002CE00 */ sll $t9, $v0, 0x18 @@ -320,7 +320,7 @@ glabel L800C0D30 /* 0C1948 800C0D48 1000FF67 */ b .L800C0AE8 /* 0C194C 800C0D4C A629000C */ sh $t1, 0xc($s1) glabel L800C0D50 -/* 0C1950 800C0D50 0C02FC42 */ jal func_800BF108 +/* 0C1950 800C0D50 0C02FC42 */ jal m64_read_u8 /* 0C1954 800C0D54 02002025 */ move $a0, $s0 /* 0C1958 800C0D58 240100DD */ li $at, 221 /* 0C195C 800C0D5C 16410007 */ bne $s2, $at, .L800C0D7C @@ -357,10 +357,10 @@ glabel L800C0D50 /* 0C19CC 800C0DCC 1000FF46 */ b .L800C0AE8 /* 0C19D0 800C0DD0 A6290008 */ sh $t1, 8($s1) glabel L800C0DD4 -/* 0C19D4 800C0DD4 0C02FC42 */ jal func_800BF108 +/* 0C19D4 800C0DD4 0C02FC42 */ jal m64_read_u8 /* 0C19D8 800C0DD8 02002025 */ move $a0, $s0 /* 0C19DC 800C0DDC 305200FF */ andi $s2, $v0, 0xff -/* 0C19E0 800C0DE0 0C02FC47 */ jal func_800BF11C +/* 0C19E0 800C0DE0 0C02FC47 */ jal m64_read_s16 /* 0C19E4 800C0DE4 02002025 */ move $a0, $s0 /* 0C19E8 800C0DE8 12400008 */ beqz $s2, .L800C0E0C /* 0C19EC 800C0DEC 02401825 */ move $v1, $s2 @@ -391,7 +391,7 @@ glabel L800C0DD4 /* 0C1A48 800C0E48 1000FF27 */ b .L800C0AE8 /* 0C1A4C 800C0E4C E632001C */ swc1 $f18, 0x1c($s1) glabel L800C0E50 -/* 0C1A50 800C0E50 0C02FC42 */ jal func_800BF108 +/* 0C1A50 800C0E50 0C02FC42 */ jal m64_read_u8 /* 0C1A54 800C0E54 02002025 */ move $a0, $s0 /* 0C1A58 800C0E58 92230001 */ lbu $v1, 1($s1) /* 0C1A5C 800C0E5C 24010001 */ li $at, 1 @@ -433,7 +433,7 @@ glabel L800C0E50 /* 0C1AE0 800C0EE0 1000FF01 */ b .L800C0AE8 /* 0C1AE4 800C0EE4 E6240018 */ swc1 $f4, 0x18($s1) glabel L800C0EE8 -/* 0C1AE8 800C0EE8 0C02FC42 */ jal func_800BF108 +/* 0C1AE8 800C0EE8 0C02FC42 */ jal m64_read_u8 /* 0C1AEC 800C0EEC 02002025 */ move $a0, $s0 /* 0C1AF0 800C0EF0 00026E00 */ sll $t5, $v0, 0x18 /* 0C1AF4 800C0EF4 000D7603 */ sra $t6, $t5, 0x18 @@ -445,23 +445,23 @@ glabel L800C0EE8 /* 0C1B0C 800C0F0C 1000FEF6 */ b .L800C0AE8 /* 0C1B10 800C0F10 E6320028 */ swc1 $f18, 0x28($s1) glabel L800C0F14 -/* 0C1B14 800C0F14 0C02FC47 */ jal func_800BF11C +/* 0C1B14 800C0F14 0C02FC47 */ jal m64_read_s16 /* 0C1B18 800C0F18 02002025 */ move $a0, $s0 /* 0C1B1C 800C0F1C 02202025 */ move $a0, $s1 -/* 0C1B20 800C0F20 0C02FB23 */ jal func_800BEC8C +/* 0C1B20 800C0F20 0C02FB23 */ jal sequence_player_init_channels /* 0C1B24 800C0F24 3045FFFF */ andi $a1, $v0, 0xffff /* 0C1B28 800C0F28 1000FEEF */ b .L800C0AE8 /* 0C1B2C 800C0F2C 00000000 */ nop glabel L800C0F30 -/* 0C1B30 800C0F30 0C02FC47 */ jal func_800BF11C +/* 0C1B30 800C0F30 0C02FC47 */ jal m64_read_s16 /* 0C1B34 800C0F34 02002025 */ move $a0, $s0 /* 0C1B38 800C0F38 02202025 */ move $a0, $s1 -/* 0C1B3C 800C0F3C 0C02FB6E */ jal func_800BEDB8 +/* 0C1B3C 800C0F3C 0C02FB6E */ jal sequence_player_disable_channels /* 0C1B40 800C0F40 3045FFFF */ andi $a1, $v0, 0xffff /* 0C1B44 800C0F44 1000FEE8 */ b .L800C0AE8 /* 0C1B48 800C0F48 00000000 */ nop glabel L800C0F4C -/* 0C1B4C 800C0F4C 0C02FC42 */ jal func_800BF108 +/* 0C1B4C 800C0F4C 0C02FC42 */ jal m64_read_u8 /* 0C1B50 800C0F50 02002025 */ move $a0, $s0 /* 0C1B54 800C0F54 0002C600 */ sll $t8, $v0, 0x18 /* 0C1B58 800C0F58 0018CE03 */ sra $t9, $t8, 0x18 @@ -478,12 +478,12 @@ glabel L800C0F78 /* 0C1B80 800C0F80 1000FED9 */ b .L800C0AE8 /* 0C1B84 800C0F84 A2290000 */ sb $t1, ($s1) glabel L800C0F88 -/* 0C1B88 800C0F88 0C02FC42 */ jal func_800BF108 +/* 0C1B88 800C0F88 0C02FC42 */ jal m64_read_u8 /* 0C1B8C 800C0F8C 02002025 */ move $a0, $s0 /* 0C1B90 800C0F90 1000FED5 */ b .L800C0AE8 /* 0C1B94 800C0F94 A2220003 */ sb $v0, 3($s1) glabel L800C0F98 -/* 0C1B98 800C0F98 0C02FC47 */ jal func_800BF11C +/* 0C1B98 800C0F98 0C02FC47 */ jal m64_read_s16 /* 0C1B9C 800C0F9C 02002025 */ move $a0, $s0 /* 0C1BA0 800C0FA0 8E2A0014 */ lw $t2, 0x14($s1) /* 0C1BA4 800C0FA4 304BFFFF */ andi $t3, $v0, 0xffff @@ -496,22 +496,22 @@ glabel L800C0F98 /* 0C1BBC 800C0FBC 1000FECA */ b .L800C0AE8 /* 0C1BC0 800C0FC0 AE230090 */ sw $v1, 0x90($s1) glabel L800C0FC4 -/* 0C1BC4 800C0FC4 0C02FC42 */ jal func_800BF108 +/* 0C1BC4 800C0FC4 0C02FC42 */ jal m64_read_u8 /* 0C1BC8 800C0FC8 02002025 */ move $a0, $s0 /* 0C1BCC 800C0FCC 1000FEC6 */ b .L800C0AE8 /* 0C1BD0 800C0FD0 A2220002 */ sb $v0, 2($s1) glabel L800C0FD4 -/* 0C1BD4 800C0FD4 0C02FC42 */ jal func_800BF108 +/* 0C1BD4 800C0FD4 0C02FC42 */ jal m64_read_u8 /* 0C1BD8 800C0FD8 02002025 */ move $a0, $s0 /* 0C1BDC 800C0FDC 1000FEC2 */ b .L800C0AE8 /* 0C1BE0 800C0FE0 00409825 */ move $s3, $v0 glabel L800C0FE4 -/* 0C1BE4 800C0FE4 0C02FC42 */ jal func_800BF108 +/* 0C1BE4 800C0FE4 0C02FC42 */ jal m64_read_u8 /* 0C1BE8 800C0FE8 02002025 */ move $a0, $s0 /* 0C1BEC 800C0FEC 1000FEBE */ b .L800C0AE8 /* 0C1BF0 800C0FF0 02629824 */ and $s3, $s3, $v0 glabel L800C0FF4 -/* 0C1BF4 800C0FF4 0C02FC42 */ jal func_800BF108 +/* 0C1BF4 800C0FF4 0C02FC42 */ jal m64_read_u8 /* 0C1BF8 800C0FF8 02002025 */ move $a0, $s0 /* 0C1BFC 800C0FFC 1000FEBA */ b .L800C0AE8 /* 0C1C00 800C1000 02629823 */ subu $s3, $s3, $v0 @@ -562,7 +562,7 @@ glabel L800C1098 /* 0C1C98 800C1098 1000FE93 */ b .L800C0AE8 /* 0C1C9C 800C109C 82330007 */ lb $s3, 7($s1) glabel L800C10A0 -/* 0C1CA0 800C10A0 0C02FC47 */ jal func_800BF11C +/* 0C1CA0 800C10A0 0C02FC47 */ jal m64_read_s16 /* 0C1CA4 800C10A4 02002025 */ move $a0, $s0 /* 0C1CA8 800C10A8 8E2C0014 */ lw $t4, 0x14($s1) /* 0C1CAC 800C10AC 02402825 */ move $a1, $s2 @@ -570,15 +570,15 @@ glabel L800C10A0 /* 0C1CB4 800C10B4 304DFFFF */ andi $t5, $v0, 0xffff /* 0C1CB8 800C10B8 01602825 */ move $a1, $t3 /* 0C1CBC 800C10BC 02202025 */ move $a0, $s1 -/* 0C1CC0 800C10C0 0C02FBA2 */ jal func_800BEE88 +/* 0C1CC0 800C10C0 0C02FBA2 */ jal sequence_channel_enable /* 0C1CC4 800C10C4 018D3021 */ addu $a2, $t4, $t5 /* 0C1CC8 800C10C8 1000FE87 */ b .L800C0AE8 /* 0C1CCC 800C10CC 00000000 */ nop .L800C10D0: -/* 0C1CD0 800C10D0 3C10803B */ lui $s0, %hi(D_803B5EF0) # $s0, 0x803b +/* 0C1CD0 800C10D0 3C10803B */ lui $s0, %hi(gSequenceChannelNone) # $s0, 0x803b /* 0C1CD4 800C10D4 02201825 */ move $v1, $s1 /* 0C1CD8 800C10D8 24110040 */ li $s1, 64 -/* 0C1CDC 800C10DC 26105EF0 */ addiu $s0, %lo(D_803B5EF0) # addiu $s0, $s0, 0x5ef0 +/* 0C1CDC 800C10DC 26105EF0 */ addiu $s0, %lo(gSequenceChannelNone) # addiu $s0, $s0, 0x5ef0 /* 0C1CE0 800C10E0 00001025 */ move $v0, $zero .L800C10E4: /* 0C1CE4 800C10E4 8C640030 */ lw $a0, 0x30($v1) diff --git a/asm/non_matchings/audio/seqplayer/func_800C1138.s b/asm/non_matchings/audio/seqplayer/func_800C1138.s index 13aadd3cd..b0168ea6f 100644 --- a/asm/non_matchings/audio/seqplayer/func_800C1138.s +++ b/asm/non_matchings/audio/seqplayer/func_800C1138.s @@ -3,12 +3,12 @@ glabel func_800C1138 /* 0C1D3C 800C113C AFB20020 */ sw $s2, 0x20($sp) /* 0C1D40 800C1140 AFB00018 */ sw $s0, 0x18($sp) /* 0C1D44 800C1144 AFB1001C */ sw $s1, 0x1c($sp) -/* 0C1D48 800C1148 3C10803B */ lui $s0, %hi(D_803B1510) # $s0, 0x803b -/* 0C1D4C 800C114C 3C12803B */ lui $s2, %hi(D_803B1A30) # $s2, 0x803b +/* 0C1D48 800C1148 3C10803B */ lui $s0, %hi(gSequencePlayers) # $s0, 0x803b +/* 0C1D4C 800C114C 3C12803B */ lui $s2, %hi(gSequenceChannels) # $s2, 0x803b /* 0C1D50 800C1150 AFBF0024 */ sw $ra, 0x24($sp) /* 0C1D54 800C1154 AFA40028 */ sw $a0, 0x28($sp) -/* 0C1D58 800C1158 26521A30 */ addiu $s2, %lo(D_803B1A30) # addiu $s2, $s2, 0x1a30 -/* 0C1D5C 800C115C 26101510 */ addiu $s0, %lo(D_803B1510) # addiu $s0, $s0, 0x1510 +/* 0C1D58 800C1158 26521A30 */ addiu $s2, %lo(gSequenceChannels) # addiu $s2, $s2, 0x1a30 +/* 0C1D5C 800C115C 26101510 */ addiu $s0, %lo(gSequencePlayers) # addiu $s0, $s0, 0x1510 /* 0C1D60 800C1160 24110001 */ li $s1, 1 /* 0C1D64 800C1164 8E0E0000 */ lw $t6, ($s0) .L800C1168: @@ -17,13 +17,13 @@ glabel func_800C1138 /* 0C1D70 800C1170 26100148 */ addiu $s0, $s0, 0x148 /* 0C1D74 800C1174 0C030233 */ jal func_800C08CC /* 0C1D78 800C1178 02002025 */ move $a0, $s0 -/* 0C1D7C 800C117C 0C02F7FE */ jal func_800BDFF8 +/* 0C1D7C 800C117C 0C02F7FE */ jal sequence_player_process_sound /* 0C1D80 800C1180 02002025 */ move $a0, $s0 /* 0C1D84 800C1184 26100148 */ addiu $s0, $s0, 0x148 .L800C1188: /* 0C1D88 800C1188 5612FFF7 */ bnel $s0, $s2, .L800C1168 /* 0C1D8C 800C118C 8E0E0000 */ lw $t6, ($s0) -/* 0C1D90 800C1190 0C02F2F1 */ jal func_800BCBC4 +/* 0C1D90 800C1190 0C02F2F1 */ jal process_notes /* 0C1D94 800C1194 00000000 */ nop /* 0C1D98 800C1198 8FBF0024 */ lw $ra, 0x24($sp) /* 0C1D9C 800C119C 8FB00018 */ lw $s0, 0x18($sp) diff --git a/asm/non_matchings/audio/seqplayer/func_800C11B0.s b/asm/non_matchings/audio/seqplayer/func_800C11B0.s deleted file mode 100644 index 6a7a86276..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800C11B0.s +++ /dev/null @@ -1,44 +0,0 @@ -glabel func_800C11B0 -/* 0C1DB0 800C11B0 00047080 */ sll $t6, $a0, 2 -/* 0C1DB4 800C11B4 01C47021 */ addu $t6, $t6, $a0 -/* 0C1DB8 800C11B8 000E70C0 */ sll $t6, $t6, 3 -/* 0C1DBC 800C11BC 01C47021 */ addu $t6, $t6, $a0 -/* 0C1DC0 800C11C0 3C0F803B */ lui $t7, %hi(D_803B1510) # $t7, 0x803b -/* 0C1DC4 800C11C4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0C1DC8 800C11C8 25EF1510 */ addiu $t7, %lo(D_803B1510) # addiu $t7, $t7, 0x1510 -/* 0C1DCC 800C11CC 000E70C0 */ sll $t6, $t6, 3 -/* 0C1DD0 800C11D0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0C1DD4 800C11D4 01CF2021 */ addu $a0, $t6, $t7 -/* 0C1DD8 800C11D8 0C02FBCB */ jal func_800BEF2C -/* 0C1DDC 800C11DC AFA40018 */ sw $a0, 0x18($sp) -/* 0C1DE0 800C11E0 8FA40018 */ lw $a0, 0x18($sp) -/* 0C1DE4 800C11E4 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0C1DE8 800C11E8 44810000 */ mtc1 $at, $f0 -/* 0C1DEC 800C11EC 44801000 */ mtc1 $zero, $f2 -/* 0C1DF0 800C11F0 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 0C1DF4 800C11F4 44812000 */ mtc1 $at, $f4 -/* 0C1DF8 800C11F8 3C08800F */ lui $t0, %hi(gDefaultShortNoteVelocityTable) # $t0, 0x800f -/* 0C1DFC 800C11FC 3C09800F */ lui $t1, %hi(gDefaultShortNoteDurationTable) # $t1, 0x800f -/* 0C1E00 800C1200 24180001 */ li $t8, 1 -/* 0C1E04 800C1204 24191680 */ li $t9, 5760 -/* 0C1E08 800C1208 25086220 */ addiu $t0, %lo(gDefaultShortNoteVelocityTable) # addiu $t0, $t0, 0x6220 -/* 0C1E0C 800C120C 25296230 */ addiu $t1, %lo(gDefaultShortNoteDurationTable) # addiu $t1, $t1, 0x6230 -/* 0C1E10 800C1210 A480000E */ sh $zero, 0xe($a0) -/* 0C1E14 800C1214 A0980001 */ sb $t8, 1($a0) -/* 0C1E18 800C1218 A4800010 */ sh $zero, 0x10($a0) -/* 0C1E1C 800C121C A4800012 */ sh $zero, 0x12($a0) -/* 0C1E20 800C1220 A480000A */ sh $zero, 0xa($a0) -/* 0C1E24 800C1224 A4990008 */ sh $t9, 8($a0) -/* 0C1E28 800C1228 A480000C */ sh $zero, 0xc($a0) -/* 0C1E2C 800C122C A0800002 */ sb $zero, 2($a0) -/* 0C1E30 800C1230 AC88008C */ sw $t0, 0x8c($a0) -/* 0C1E34 800C1234 AC890090 */ sw $t1, 0x90($a0) -/* 0C1E38 800C1238 E4800018 */ swc1 $f0, 0x18($a0) -/* 0C1E3C 800C123C E4800028 */ swc1 $f0, 0x28($a0) -/* 0C1E40 800C1240 E482001C */ swc1 $f2, 0x1c($a0) -/* 0C1E44 800C1244 E4820020 */ swc1 $f2, 0x20($a0) -/* 0C1E48 800C1248 E4840024 */ swc1 $f4, 0x24($a0) -/* 0C1E4C 800C124C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0C1E50 800C1250 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0C1E54 800C1254 03E00008 */ jr $ra -/* 0C1E58 800C1258 00000000 */ nop diff --git a/asm/non_matchings/audio/seqplayer/func_800C125C.s b/asm/non_matchings/audio/seqplayer/func_800C125C.s deleted file mode 100644 index fa709856f..000000000 --- a/asm/non_matchings/audio/seqplayer/func_800C125C.s +++ /dev/null @@ -1,106 +0,0 @@ -glabel func_800C125C -/* 0C1E5C 800C125C 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0C1E60 800C1260 3C0E803B */ lui $t6, %hi(D_803B1A30) # 0x803b -/* 0C1E64 800C1264 25C61A30 */ addiu $a2, $t6, %lo(D_803B1A30) # 0x1a30 -/* 0C1E68 800C1268 3C07803B */ lui $a3, %hi(D_803B3EF0) # $a3, 0x803b -/* 0C1E6C 800C126C AFBF003C */ sw $ra, 0x3c($sp) -/* 0C1E70 800C1270 AFBE0038 */ sw $fp, 0x38($sp) -/* 0C1E74 800C1274 AFB70034 */ sw $s7, 0x34($sp) -/* 0C1E78 800C1278 AFB60030 */ sw $s6, 0x30($sp) -/* 0C1E7C 800C127C AFB5002C */ sw $s5, 0x2c($sp) -/* 0C1E80 800C1280 AFB40028 */ sw $s4, 0x28($sp) -/* 0C1E84 800C1284 AFB30024 */ sw $s3, 0x24($sp) -/* 0C1E88 800C1288 AFB20020 */ sw $s2, 0x20($sp) -/* 0C1E8C 800C128C AFB1001C */ sw $s1, 0x1c($sp) -/* 0C1E90 800C1290 AFB00018 */ sw $s0, 0x18($sp) -/* 0C1E94 800C1294 24E73EF0 */ addiu $a3, %lo(D_803B3EF0) # addiu $a3, $a3, 0x3ef0 -/* 0C1E98 800C1298 00C02825 */ move $a1, $a2 -/* 0C1E9C 800C129C 24040040 */ li $a0, 64 -.L800C12A0: -/* 0C1EA0 800C12A0 90AF0000 */ lbu $t7, ($a1) -/* 0C1EA4 800C12A4 ACA00044 */ sw $zero, 0x44($a1) -/* 0C1EA8 800C12A8 00001025 */ move $v0, $zero -/* 0C1EAC 800C12AC 31F8FF7F */ andi $t8, $t7, 0xff7f -/* 0C1EB0 800C12B0 A0B80000 */ sb $t8, ($a1) -/* 0C1EB4 800C12B4 00C01825 */ move $v1, $a2 -.L800C12B8: -/* 0C1EB8 800C12B8 24420004 */ addiu $v0, $v0, 4 -/* 0C1EBC 800C12BC AC60004C */ sw $zero, 0x4c($v1) -/* 0C1EC0 800C12C0 AC600050 */ sw $zero, 0x50($v1) -/* 0C1EC4 800C12C4 AC600054 */ sw $zero, 0x54($v1) -/* 0C1EC8 800C12C8 24630010 */ addiu $v1, $v1, 0x10 -/* 0C1ECC 800C12CC 1444FFFA */ bne $v0, $a0, .L800C12B8 -/* 0C1ED0 800C12D0 AC600038 */ sw $zero, 0x38($v1) -/* 0C1ED4 800C12D4 24C600C4 */ addiu $a2, $a2, 0xc4 -/* 0C1ED8 800C12D8 00C7082B */ sltu $at, $a2, $a3 -/* 0C1EDC 800C12DC 1420FFF0 */ bnez $at, .L800C12A0 -/* 0C1EE0 800C12E0 24A500C4 */ addiu $a1, $a1, 0xc4 -/* 0C1EE4 800C12E4 0C02FC21 */ jal func_800BF084 -/* 0C1EE8 800C12E8 00000000 */ nop -/* 0C1EEC 800C12EC 3C02803B */ lui $v0, %hi(D_803B3EF0) # $v0, 0x803b -/* 0C1EF0 800C12F0 3C03803B */ lui $v1, %hi(D_803B5EF0) # $v1, 0x803b -/* 0C1EF4 800C12F4 24635EF0 */ addiu $v1, %lo(D_803B5EF0) # addiu $v1, $v1, 0x5ef0 -/* 0C1EF8 800C12F8 24423EF0 */ addiu $v0, %lo(D_803B3EF0) # addiu $v0, $v0, 0x3ef0 -.L800C12FC: -/* 0C1EFC 800C12FC 90590000 */ lbu $t9, ($v0) -/* 0C1F00 800C1300 24420080 */ addiu $v0, $v0, 0x80 -/* 0C1F04 800C1304 0043082B */ sltu $at, $v0, $v1 -/* 0C1F08 800C1308 3328FF7F */ andi $t0, $t9, 0xff7f -/* 0C1F0C 800C130C AC40FFCC */ sw $zero, -0x34($v0) -/* 0C1F10 800C1310 1420FFFA */ bnez $at, .L800C12FC -/* 0C1F14 800C1314 A048FF80 */ sb $t0, -0x80($v0) -/* 0C1F18 800C1318 3C09803B */ lui $t1, %hi(D_803B1510) # 0x803b -/* 0C1F1C 800C131C 25311510 */ addiu $s1, $t1, %lo(D_803B1510) # 0x1510 -/* 0C1F20 800C1320 3C15803B */ lui $s5, %hi(D_803B15A4) # $s5, 0x803b -/* 0C1F24 800C1324 3C10803B */ lui $s0, %hi(D_803B5EF0) # $s0, 0x803b -/* 0C1F28 800C1328 26105EF0 */ addiu $s0, %lo(D_803B5EF0) # addiu $s0, $s0, 0x5ef0 -/* 0C1F2C 800C132C 26B515A4 */ addiu $s5, %lo(D_803B15A4) # addiu $s5, $s5, 0x15a4 -/* 0C1F30 800C1330 0220A025 */ move $s4, $s1 -/* 0C1F34 800C1334 00009825 */ move $s3, $zero -/* 0C1F38 800C1338 241E0004 */ li $fp, 4 -/* 0C1F3C 800C133C 241700E0 */ li $s7, 224 -/* 0C1F40 800C1340 2416FFFF */ li $s6, -1 -/* 0C1F44 800C1344 24120010 */ li $s2, 16 -.L800C1348: -/* 0C1F48 800C1348 00001025 */ move $v0, $zero -/* 0C1F4C 800C134C 02801825 */ move $v1, $s4 -.L800C1350: -/* 0C1F50 800C1350 24420004 */ addiu $v0, $v0, 4 -/* 0C1F54 800C1354 AC700034 */ sw $s0, 0x34($v1) -/* 0C1F58 800C1358 AC700038 */ sw $s0, 0x38($v1) -/* 0C1F5C 800C135C AC70003C */ sw $s0, 0x3c($v1) -/* 0C1F60 800C1360 24630010 */ addiu $v1, $v1, 0x10 -/* 0C1F64 800C1364 1452FFFA */ bne $v0, $s2, .L800C1350 -/* 0C1F68 800C1368 AC700020 */ sw $s0, 0x20($v1) -/* 0C1F6C 800C136C 922A0000 */ lbu $t2, ($s1) -/* 0C1F70 800C1370 A2360007 */ sb $s6, 7($s1) -/* 0C1F74 800C1374 A2370003 */ sb $s7, 3($s1) -/* 0C1F78 800C1378 314CFF7F */ andi $t4, $t2, 0xff7f -/* 0C1F7C 800C137C 318E00DF */ andi $t6, $t4, 0xdf -/* 0C1F80 800C1380 A22C0000 */ sb $t4, ($s1) -/* 0C1F84 800C1384 31D800F7 */ andi $t8, $t6, 0xf7 -/* 0C1F88 800C1388 A22E0000 */ sb $t6, ($s1) -/* 0C1F8C 800C138C A2380000 */ sb $t8, ($s1) -/* 0C1F90 800C1390 331900EF */ andi $t9, $t8, 0xef -/* 0C1F94 800C1394 A2390000 */ sb $t9, ($s1) -/* 0C1F98 800C1398 0C02F4C6 */ jal func_800BD318 -/* 0C1F9C 800C139C 02A02025 */ move $a0, $s5 -/* 0C1FA0 800C13A0 0C03046C */ jal func_800C11B0 -/* 0C1FA4 800C13A4 02602025 */ move $a0, $s3 -/* 0C1FA8 800C13A8 26730001 */ addiu $s3, $s3, 1 -/* 0C1FAC 800C13AC 26940148 */ addiu $s4, $s4, 0x148 -/* 0C1FB0 800C13B0 26310148 */ addiu $s1, $s1, 0x148 -/* 0C1FB4 800C13B4 167EFFE4 */ bne $s3, $fp, .L800C1348 -/* 0C1FB8 800C13B8 26B50148 */ addiu $s5, $s5, 0x148 -/* 0C1FBC 800C13BC 8FBF003C */ lw $ra, 0x3c($sp) -/* 0C1FC0 800C13C0 8FB00018 */ lw $s0, 0x18($sp) -/* 0C1FC4 800C13C4 8FB1001C */ lw $s1, 0x1c($sp) -/* 0C1FC8 800C13C8 8FB20020 */ lw $s2, 0x20($sp) -/* 0C1FCC 800C13CC 8FB30024 */ lw $s3, 0x24($sp) -/* 0C1FD0 800C13D0 8FB40028 */ lw $s4, 0x28($sp) -/* 0C1FD4 800C13D4 8FB5002C */ lw $s5, 0x2c($sp) -/* 0C1FD8 800C13D8 8FB60030 */ lw $s6, 0x30($sp) -/* 0C1FDC 800C13DC 8FB70034 */ lw $s7, 0x34($sp) -/* 0C1FE0 800C13E0 8FBE0038 */ lw $fp, 0x38($sp) -/* 0C1FE4 800C13E4 03E00008 */ jr $ra -/* 0C1FE8 800C13E8 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/audio/seqplayer/func_800BF190.s b/asm/non_matchings/audio/seqplayer/seq_channel_layer_process_script.s similarity index 95% rename from asm/non_matchings/audio/seqplayer/func_800BF190.s rename to asm/non_matchings/audio/seqplayer/seq_channel_layer_process_script.s index f633efac5..1de771ca3 100644 --- a/asm/non_matchings/audio/seqplayer/func_800BF190.s +++ b/asm/non_matchings/audio/seqplayer/seq_channel_layer_process_script.s @@ -1,4 +1,4 @@ -glabel func_800BF190 +glabel seq_channel_layer_process_script /* 0BFD90 800BF190 27BDFF90 */ addiu $sp, $sp, -0x70 /* 0BFD94 800BF194 240E0001 */ li $t6, 1 /* 0BFD98 800BF198 AFBF002C */ sw $ra, 0x2c($sp) @@ -26,7 +26,7 @@ glabel func_800BF190 /* 0BFDF0 800BF1F0 012A082A */ slt $at, $t1, $t2 /* 0BFDF4 800BF1F4 54200295 */ bnel $at, $zero, .L800BFC4C /* 0BFDF8 800BF1F8 8FBF002C */ lw $ra, 0x2c($sp) -/* 0BFDFC 800BF1FC 0C02F448 */ jal func_800BD120 +/* 0BFDFC 800BF1FC 0C02F448 */ jal seq_channel_layer_note_decay /* 0BFE00 800BF200 00000000 */ nop /* 0BFE04 800BF204 922C0000 */ lbu $t4, ($s1) /* 0BFE08 800BF208 358D0020 */ ori $t5, $t4, 0x20 @@ -35,7 +35,7 @@ glabel func_800BF190 .L800BF214: /* 0BFE14 800BF214 05E20004 */ bltzl $t7, .L800BF228 /* 0BFE18 800BF218 92220008 */ lbu $v0, 8($s1) -/* 0BFE1C 800BF21C 0C02F448 */ jal func_800BD120 +/* 0BFE1C 800BF21C 0C02F448 */ jal seq_channel_layer_note_decay /* 0BFE20 800BF220 02202025 */ move $a0, $s1 /* 0BFE24 800BF224 92220008 */ lbu $v0, 8($s1) .L800BF228: @@ -58,7 +58,7 @@ glabel func_800BF190 /* 0BFE60 800BF260 97B3004A */ lhu $s3, 0x4a($sp) /* 0BFE64 800BF264 AFA20068 */ sw $v0, 0x68($sp) .L800BF268: -/* 0BFE68 800BF268 0C02FC42 */ jal func_800BF108 +/* 0BFE68 800BF268 0C02FC42 */ jal m64_read_u8 /* 0BFE6C 800BF26C 02002025 */ move $a0, $s0 /* 0BFE70 800BF270 284100C1 */ slti $at, $v0, 0xc1 /* 0BFE74 800BF274 305200FF */ andi $s2, $v0, 0xff @@ -89,7 +89,7 @@ glabel L800BF2D0 /* 0BFED0 800BF2D0 92030018 */ lbu $v1, 0x18($s0) /* 0BFED4 800BF2D4 14600005 */ bnez $v1, .L800BF2EC /* 0BFED8 800BF2D8 2462FFFF */ addiu $v0, $v1, -1 -/* 0BFEDC 800BF2DC 0C02FAC6 */ jal func_800BEB18 +/* 0BFEDC 800BF2DC 0C02FAC6 */ jal seq_channel_layer_disable /* 0BFEE0 800BF2E0 02202025 */ move $a0, $s1 /* 0BFEE4 800BF2E4 10000259 */ b .L800BFC4C /* 0BFEE8 800BF2E8 8FBF002C */ lw $ra, 0x2c($sp) @@ -102,7 +102,7 @@ glabel L800BF2D0 /* 0BFF00 800BF300 1000FFD9 */ b .L800BF268 /* 0BFF04 800BF304 AE0F0000 */ sw $t7, ($s0) glabel L800BF308 -/* 0BFF08 800BF308 0C02FC47 */ jal func_800BF11C +/* 0BFF08 800BF308 0C02FC47 */ jal m64_read_s16 /* 0BFF0C 800BF30C 02002025 */ move $a0, $s0 /* 0BFF10 800BF310 92190018 */ lbu $t9, 0x18($s0) /* 0BFF14 800BF314 8E180000 */ lw $t8, ($s0) @@ -119,7 +119,7 @@ glabel L800BF308 /* 0BFF40 800BF340 1000FFC9 */ b .L800BF268 /* 0BFF44 800BF344 AE0E0000 */ sw $t6, ($s0) glabel L800BF348 -/* 0BFF48 800BF348 0C02FC42 */ jal func_800BF108 +/* 0BFF48 800BF348 0C02FC42 */ jal m64_read_u8 /* 0BFF4C 800BF34C 02002025 */ move $a0, $s0 /* 0BFF50 800BF350 920F0018 */ lbu $t7, 0x18($s0) /* 0BFF54 800BF354 020FC821 */ addu $t9, $s0, $t7 @@ -154,7 +154,7 @@ glabel L800BF380 /* 0BFFC0 800BF3C0 1000FFA9 */ b .L800BF268 /* 0BFFC4 800BF3C4 A20B0018 */ sb $t3, 0x18($s0) glabel L800BF3C8 -/* 0BFFC8 800BF3C8 0C02FC47 */ jal func_800BF11C +/* 0BFFC8 800BF3C8 0C02FC47 */ jal m64_read_s16 /* 0BFFCC 800BF3CC 02002025 */ move $a0, $s0 /* 0BFFD0 800BF3D0 8E8C0014 */ lw $t4, 0x14($s4) /* 0BFFD4 800BF3D4 304DFFFF */ andi $t5, $v0, 0xffff @@ -163,7 +163,7 @@ glabel L800BF3C8 /* 0BFFE0 800BF3E0 1000FFA1 */ b .L800BF268 /* 0BFFE4 800BF3E4 AE0E0000 */ sw $t6, ($s0) glabel L800BF3E8 -/* 0BFFE8 800BF3E8 0C02FC42 */ jal func_800BF108 +/* 0BFFE8 800BF3E8 0C02FC42 */ jal m64_read_u8 /* 0BFFEC 800BF3EC 02002025 */ move $a0, $s0 /* 0BFFF0 800BF3F0 8E0F0000 */ lw $t7, ($s0) /* 0BFFF4 800BF3F4 0002CE00 */ sll $t9, $v0, 0x18 @@ -216,18 +216,18 @@ glabel L800BF478 /* 0C0098 800BF498 332FFFEF */ andi $t7, $t9, 0xffef /* 0C009C 800BF49C A22F0000 */ sb $t7, ($s1) .L800BF4A0: -/* 0C00A0 800BF4A0 0C02F448 */ jal func_800BD120 +/* 0C00A0 800BF4A0 0C02F448 */ jal seq_channel_layer_note_decay /* 0C00A4 800BF4A4 02202025 */ move $a0, $s1 /* 0C00A8 800BF4A8 1000FF6F */ b .L800BF268 /* 0C00AC 800BF4AC 00000000 */ nop glabel L800BF4B0 -/* 0C00B0 800BF4B0 0C02FC53 */ jal func_800BF14C +/* 0C00B0 800BF4B0 0C02FC53 */ jal m64_read_compressed_u16 /* 0C00B4 800BF4B4 02002025 */ move $a0, $s0 /* 0C00B8 800BF4B8 3053FFFF */ andi $s3, $v0, 0xffff /* 0C00BC 800BF4BC 1000FF6A */ b .L800BF268 /* 0C00C0 800BF4C0 A6220034 */ sh $v0, 0x34($s1) glabel L800BF4C4 -/* 0C00C4 800BF4C4 0C02FC42 */ jal func_800BF108 +/* 0C00C4 800BF4C4 0C02FC42 */ jal m64_read_u8 /* 0C00C8 800BF4C8 02002025 */ move $a0, $s0 /* 0C00CC 800BF4CC 2841007F */ slti $at, $v0, 0x7f /* 0C00D0 800BF4D0 305200FF */ andi $s2, $v0, 0xff @@ -251,7 +251,7 @@ glabel L800BF4C4 /* 0C010C 800BF50C 8FA40068 */ lw $a0, 0x68($sp) /* 0C0110 800BF510 324500FF */ andi $a1, $s2, 0xff /* 0C0114 800BF514 26260044 */ addiu $a2, $s1, 0x44 -/* 0C0118 800BF518 0C02FF1A */ jal func_800BFC68 +/* 0C0118 800BF518 0C02FF1A */ jal get_instrument /* 0C011C 800BF51C 26270018 */ addiu $a3, $s1, 0x18 /* 0C0120 800BF520 1440FF51 */ bnez $v0, .L800BF268 /* 0C0124 800BF524 A2220001 */ sb $v0, 1($s1) @@ -259,10 +259,10 @@ glabel L800BF4C4 /* 0C012C 800BF52C 1000FF4E */ b .L800BF268 /* 0C0130 800BF530 A2380001 */ sb $t8, 1($s1) glabel L800BF534 -/* 0C0134 800BF534 0C02FC42 */ jal func_800BF108 +/* 0C0134 800BF534 0C02FC42 */ jal m64_read_u8 /* 0C0138 800BF538 02002025 */ move $a0, $s0 /* 0C013C 800BF53C A2220008 */ sb $v0, 8($s1) -/* 0C0140 800BF540 0C02FC42 */ jal func_800BF108 +/* 0C0140 800BF540 0C02FC42 */ jal m64_read_u8 /* 0C0144 800BF544 02002025 */ move $a0, $s0 /* 0C0148 800BF548 8FA90068 */ lw $t1, 0x68($sp) /* 0C014C 800BF54C 862B0022 */ lh $t3, 0x22($s1) @@ -290,7 +290,7 @@ glabel L800BF534 /* 0C01A0 800BF5A0 1000FF31 */ b .L800BF268 /* 0C01A4 800BF5A4 AE0A0000 */ sw $t2, ($s0) .L800BF5A8: -/* 0C01A8 800BF5A8 0C02FC53 */ jal func_800BF14C +/* 0C01A8 800BF5A8 0C02FC53 */ jal m64_read_compressed_u16 /* 0C01AC 800BF5AC 02002025 */ move $a0, $s0 /* 0C01B0 800BF5B0 3053FFFF */ andi $s3, $v0, 0xffff /* 0C01B4 800BF5B4 1000FF2C */ b .L800BF268 @@ -299,14 +299,14 @@ glabel L800BF5BC /* 0C01BC 800BF5BC 1000FF2A */ b .L800BF268 /* 0C01C0 800BF5C0 A2200008 */ sb $zero, 8($s1) glabel L800BF5C4 -/* 0C01C4 800BF5C4 0C02FC47 */ jal func_800BF11C +/* 0C01C4 800BF5C4 0C02FC47 */ jal m64_read_s16 /* 0C01C8 800BF5C8 02002025 */ move $a0, $s0 /* 0C01CC 800BF5CC 8E8B0014 */ lw $t3, 0x14($s4) /* 0C01D0 800BF5D0 304CFFFF */ andi $t4, $v0, 0xffff /* 0C01D4 800BF5D4 3053FFFF */ andi $s3, $v0, 0xffff /* 0C01D8 800BF5D8 016C6821 */ addu $t5, $t3, $t4 /* 0C01DC 800BF5DC AE2D001C */ sw $t5, 0x1c($s1) -/* 0C01E0 800BF5E0 0C02FC42 */ jal func_800BF108 +/* 0C01E0 800BF5E0 0C02FC42 */ jal m64_read_u8 /* 0C01E4 800BF5E4 02002025 */ move $a0, $s0 /* 0C01E8 800BF5E8 1000FF1F */ b .L800BF268 /* 0C01EC 800BF5EC A2220018 */ sb $v0, 0x18($s1) @@ -351,7 +351,7 @@ glabel L800BF600 /* 0C0270 800BF670 240100C0 */ li $at, 192 /* 0C0274 800BF674 14A10008 */ bne $a1, $at, .L800BF698 /* 0C0278 800BF678 30A300C0 */ andi $v1, $a1, 0xc0 -/* 0C027C 800BF67C 0C02FC53 */ jal func_800BF14C +/* 0C027C 800BF67C 0C02FC53 */ jal m64_read_compressed_u16 /* 0C0280 800BF680 02002025 */ move $a0, $s0 /* 0C0284 800BF684 922F0000 */ lbu $t7, ($s1) /* 0C0288 800BF688 A6220038 */ sh $v0, 0x38($s1) @@ -379,7 +379,7 @@ glabel L800BF600 /* 0C02DC 800BF6DC 10000026 */ b .L800BF778 /* 0C02E0 800BF6E0 8FA60034 */ lw $a2, 0x34($sp) .L800BF6E4: -/* 0C02E4 800BF6E4 0C02FC53 */ jal func_800BF14C +/* 0C02E4 800BF6E4 0C02FC53 */ jal m64_read_compressed_u16 /* 0C02E8 800BF6E8 02002025 */ move $a0, $s0 /* 0C02EC 800BF6EC 8E030000 */ lw $v1, ($s0) /* 0C02F0 800BF6F0 3053FFFF */ andi $s3, $v0, 0xffff @@ -395,7 +395,7 @@ glabel L800BF600 /* 0C0318 800BF718 10000017 */ b .L800BF778 /* 0C031C 800BF71C A6220036 */ sh $v0, 0x36($s1) .L800BF720: -/* 0C0320 800BF720 0C02FC53 */ jal func_800BF14C +/* 0C0320 800BF720 0C02FC53 */ jal m64_read_compressed_u16 /* 0C0324 800BF724 02002025 */ move $a0, $s0 /* 0C0328 800BF728 8E030000 */ lw $v1, ($s0) /* 0C032C 800BF72C 3053FFFF */ andi $s3, $v0, 0xffff @@ -449,7 +449,7 @@ glabel L800BF600 /* 0C03D8 800BF7D8 1000000C */ b .L800BF80C /* 0C03DC 800BF7DC 02602025 */ move $a0, $s3 .L800BF7E0: -/* 0C03E0 800BF7E0 0C02FC53 */ jal func_800BF14C +/* 0C03E0 800BF7E0 0C02FC53 */ jal m64_read_compressed_u16 /* 0C03E4 800BF7E4 02002025 */ move $a0, $s0 /* 0C03E8 800BF7E8 3053FFFF */ andi $s3, $v0, 0xffff /* 0C03EC 800BF7EC A6220036 */ sh $v0, 0x36($s1) @@ -513,7 +513,7 @@ glabel L800BF600 /* 0C04B4 800BF8B4 93040006 */ lbu $a0, 6($t8) /* 0C04B8 800BF8B8 02494021 */ addu $t0, $s2, $t1 /* 0C04BC 800BF8BC 010A9021 */ addu $s2, $t0, $t2 -/* 0C04C0 800BF8C0 0C02F27E */ jal func_800BC9F8 +/* 0C04C0 800BF8C0 0C02F27E */ jal get_drum /* 0C04C4 800BF8C4 324500FF */ andi $a1, $s2, 0xff /* 0C04C8 800BF8C8 14400007 */ bnez $v0, .L800BF8E8 /* 0C04CC 800BF8CC 24430004 */ addiu $v1, $v0, 4 @@ -574,7 +574,7 @@ glabel L800BF600 .L800BF990: /* 0C0590 800BF990 1080000A */ beqz $a0, .L800BF9BC /* 0C0594 800BF994 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0C0598 800BF998 0C02F243 */ jal func_800BC90C +/* 0C0598 800BF998 0C02F243 */ jal instrument_get_audio_bank_sound /* 0C059C 800BF99C 00C02825 */ move $a1, $a2 /* 0C05A0 800BF9A0 8E2D0048 */ lw $t5, 0x48($s1) /* 0C05A4 800BF9A4 004DC826 */ xor $t9, $v0, $t5 @@ -673,7 +673,7 @@ glabel L800BFA28 .L800BFAF8: /* 0C06F8 800BFAF8 10800011 */ beqz $a0, .L800BFB40 /* 0C06FC 800BFAFC 3C03800F */ lui $v1, %hi(gNoteFrequencies) -/* 0C0700 800BFB00 0C02F243 */ jal func_800BC90C +/* 0C0700 800BFB00 0C02F243 */ jal instrument_get_audio_bank_sound /* 0C0704 800BFB04 00000000 */ nop /* 0C0708 800BFB08 8E2E0048 */ lw $t6, 0x48($s1) /* 0C070C 800BFB0C 3C03800F */ lui $v1, %hi(gNoteFrequencies) # $v1, 0x800f @@ -714,7 +714,7 @@ glabel L800BFA28 /* 0C0788 800BFB88 05A30030 */ bgezl $t5, .L800BFC4C /* 0C078C 800BFB8C 8FBF002C */ lw $ra, 0x2c($sp) .L800BFB90: -/* 0C0790 800BFB90 0C02F448 */ jal func_800BD120 +/* 0C0790 800BFB90 0C02F448 */ jal seq_channel_layer_note_decay /* 0C0794 800BFB94 02202025 */ move $a0, $s1 /* 0C0798 800BFB98 1000002C */ b .L800BFC4C /* 0C079C 800BFB9C 8FBF002C */ lw $ra, 0x2c($sp) @@ -737,7 +737,7 @@ glabel L800BFA28 .L800BFBD4: /* 0C07D4 800BFBD4 55000006 */ bnel $t0, $zero, .L800BFBF0 /* 0C07D8 800BFBD8 8C8A0044 */ lw $t2, 0x44($a0) -/* 0C07DC 800BFBDC 0C02F448 */ jal func_800BD120 +/* 0C07DC 800BFBDC 0C02F448 */ jal seq_channel_layer_note_decay /* 0C07E0 800BFBE0 02202025 */ move $a0, $s1 /* 0C07E4 800BFBE4 1000000B */ b .L800BFC14 /* 0C07E8 800BFBE8 24120001 */ li $s2, 1 @@ -751,12 +751,12 @@ glabel L800BFA28 .L800BFC04: /* 0C0804 800BFC04 15600003 */ bnez $t3, .L800BFC14 /* 0C0808 800BFC08 00000000 */ nop -/* 0C080C 800BFC0C 0C02F499 */ jal func_800BD264 +/* 0C080C 800BFC0C 0C02F499 */ jal init_synthetic_wave /* 0C0810 800BFC10 02202825 */ move $a1, $s1 .L800BFC14: /* 0C0814 800BFC14 52400005 */ beql $s2, $zero, .L800BFC2C /* 0C0818 800BFC18 8E240040 */ lw $a0, 0x40($s1) -/* 0C081C 800BFC1C 0C02F691 */ jal func_800BDA44 +/* 0C081C 800BFC1C 0C02F691 */ jal alloc_note /* 0C0820 800BFC20 02202025 */ move $a0, $s1 /* 0C0824 800BFC24 AE220040 */ sw $v0, 0x40($s1) /* 0C0828 800BFC28 8E240040 */ lw $a0, 0x40($s1) @@ -766,7 +766,7 @@ glabel L800BFA28 /* 0C0834 800BFC34 8C980044 */ lw $t8, 0x44($a0) /* 0C0838 800BFC38 56380004 */ bnel $s1, $t8, .L800BFC4C /* 0C083C 800BFC3C 8FBF002C */ lw $ra, 0x2c($sp) -/* 0C0840 800BFC40 0C02F935 */ jal func_800BE4D4 +/* 0C0840 800BFC40 0C02F935 */ jal note_vibrato_init /* 0C0844 800BFC44 00000000 */ nop .L800BFC48: /* 0C0848 800BFC48 8FBF002C */ lw $ra, 0x2c($sp) diff --git a/asm/non_matchings/audio/synthesis/func_800B7034.s b/asm/non_matchings/audio/synthesis/func_800B7034.s deleted file mode 100644 index a316860f9..000000000 --- a/asm/non_matchings/audio/synthesis/func_800B7034.s +++ /dev/null @@ -1,51 +0,0 @@ -glabel func_800B7034 -/* 0B7C34 800B7034 3C08803B */ lui $t0, %hi(gMaxSimultaneousNotes) # $t0, 0x803b -/* 0B7C38 800B7038 250870B0 */ addiu $t0, %lo(gMaxSimultaneousNotes) # addiu $t0, $t0, 0x70b0 -/* 0B7C3C 800B703C 8D030000 */ lw $v1, ($t0) -/* 0B7C40 800B7040 00803825 */ move $a3, $a0 -/* 0B7C44 800B7044 00001025 */ move $v0, $zero -/* 0B7C48 800B7048 18600026 */ blez $v1, .L800B70E4 -/* 0B7C4C 800B704C 00002825 */ move $a1, $zero -/* 0B7C50 800B7050 3C0A803B */ lui $t2, %hi(gNoteSubsEu) # $t2, 0x803b -/* 0B7C54 800B7054 3C09803B */ lui $t1, %hi(D_803B1508) # $t1, 0x803b -/* 0B7C58 800B7058 25291508 */ addiu $t1, %lo(D_803B1508) # addiu $t1, $t1, 0x1508 -/* 0B7C5C 800B705C 254AFBC4 */ addiu $t2, %lo(gNoteSubsEu) # addiu $t2, $t2, -0x43c -.L800B7060: -/* 0B7C60 800B7060 00670019 */ multu $v1, $a3 -/* 0B7C64 800B7064 8D2E0000 */ lw $t6, ($t1) -/* 0B7C68 800B7068 8D4B0000 */ lw $t3, ($t2) -/* 0B7C6C 800B706C 00AE2021 */ addu $a0, $a1, $t6 -/* 0B7C70 800B7070 8C8C00B0 */ lw $t4, 0xb0($a0) -/* 0B7C74 800B7074 248400B0 */ addiu $a0, $a0, 0xb0 -/* 0B7C78 800B7078 000C6FC2 */ srl $t5, $t4, 0x1f -/* 0B7C7C 800B707C 00007812 */ mflo $t7 -/* 0B7C80 800B7080 01E2C021 */ addu $t8, $t7, $v0 -/* 0B7C84 800B7084 0018C900 */ sll $t9, $t8, 4 -/* 0B7C88 800B7088 11A0000D */ beqz $t5, .L800B70C0 -/* 0B7C8C 800B708C 032B3021 */ addu $a2, $t9, $t3 -/* 0B7C90 800B7090 8C810000 */ lw $at, ($a0) -/* 0B7C94 800B7094 ACC10000 */ sw $at, ($a2) -/* 0B7C98 800B7098 8C8F0004 */ lw $t7, 4($a0) -/* 0B7C9C 800B709C ACCF0004 */ sw $t7, 4($a2) -/* 0B7CA0 800B70A0 8C810008 */ lw $at, 8($a0) -/* 0B7CA4 800B70A4 ACC10008 */ sw $at, 8($a2) -/* 0B7CA8 800B70A8 8C8F000C */ lw $t7, 0xc($a0) -/* 0B7CAC 800B70AC ACCF000C */ sw $t7, 0xc($a2) -/* 0B7CB0 800B70B0 90980000 */ lbu $t8, ($a0) -/* 0B7CB4 800B70B4 3319FFBF */ andi $t9, $t8, 0xffbf -/* 0B7CB8 800B70B8 10000004 */ b .L800B70CC -/* 0B7CBC 800B70BC A0990000 */ sb $t9, ($a0) -.L800B70C0: -/* 0B7CC0 800B70C0 90CB0000 */ lbu $t3, ($a2) -/* 0B7CC4 800B70C4 316CFF7F */ andi $t4, $t3, 0xff7f -/* 0B7CC8 800B70C8 A0CC0000 */ sb $t4, ($a2) -.L800B70CC: -/* 0B7CCC 800B70CC 8D030000 */ lw $v1, ($t0) -/* 0B7CD0 800B70D0 24420001 */ addiu $v0, $v0, 1 -/* 0B7CD4 800B70D4 24A500C0 */ addiu $a1, $a1, 0xc0 -/* 0B7CD8 800B70D8 0043082A */ slt $at, $v0, $v1 -/* 0B7CDC 800B70DC 1420FFE0 */ bnez $at, .L800B7060 -/* 0B7CE0 800B70E0 00000000 */ nop -.L800B70E4: -/* 0B7CE4 800B70E4 03E00008 */ jr $ra -/* 0B7CE8 800B70E8 00000000 */ nop diff --git a/asm/non_matchings/audio/synthesis/func_800B70EC.s b/asm/non_matchings/audio/synthesis/func_800B70EC.s index 11aa11eac..2bdbac4d2 100644 --- a/asm/non_matchings/audio/synthesis/func_800B70EC.s +++ b/asm/non_matchings/audio/synthesis/func_800B70EC.s @@ -23,7 +23,7 @@ glabel func_800B70EC /* 0B7D3C 800B713C 0C03044E */ jal func_800C1138 /* 0B7D40 800B7140 02002025 */ move $a0, $s0 /* 0B7D44 800B7144 86AE000C */ lh $t6, 0xc($s5) -/* 0B7D48 800B7148 0C02DC0D */ jal func_800B7034 +/* 0B7D48 800B7148 0C02DC0D */ jal synthesis_load_note_subs_eu /* 0B7D4C 800B714C 01D42023 */ subu $a0, $t6, $s4 /* 0B7D50 800B7150 1E00FFF9 */ bgtz $s0, .L800B7138 /* 0B7D54 800B7154 0200A025 */ move $s4, $s0 diff --git a/asm/non_matchings/audio/synthesis/func_800B775C.s b/asm/non_matchings/audio/synthesis/func_800B775C.s index 89c6cbaaf..8e7af7ef2 100644 --- a/asm/non_matchings/audio/synthesis/func_800B775C.s +++ b/asm/non_matchings/audio/synthesis/func_800B775C.s @@ -139,10 +139,10 @@ glabel func_800B775C /* 0B854C 800B794C AC4D0004 */ sw $t5, 4($v0) /* 0B8550 800B7950 AC4C0000 */ sw $t4, ($v0) /* 0B8554 800B7954 814F0000 */ lb $t7, ($t2) -/* 0B8558 800B7958 3C1E803B */ lui $fp, %hi(D_803B1508) # $fp, 0x803b +/* 0B8558 800B7958 3C1E803B */ lui $fp, %hi(gNotes) # $fp, 0x803b /* 0B855C 800B795C 26940008 */ addiu $s4, $s4, 8 /* 0B8560 800B7960 19E00055 */ blez $t7, .L800B7AB8 -/* 0B8564 800B7964 27DE1508 */ addiu $fp, %lo(D_803B1508) # addiu $fp, $fp, 0x1508 +/* 0B8564 800B7964 27DE1508 */ addiu $fp, %lo(gNotes) # addiu $fp, $fp, 0x1508 /* 0B8568 800B7968 3C16803B */ lui $s6, %hi(gNoteSubsEu) # $s6, 0x803b /* 0B856C 800B796C 26D6FBC4 */ addiu $s6, %lo(gNoteSubsEu) # addiu $s6, $s6, -0x43c /* 0B8570 800B7970 241700C0 */ li $s7, 192 @@ -167,7 +167,7 @@ glabel func_800B775C /* 0B85B8 800B79B8 00067C03 */ sra $t7, $a2, 0x10 /* 0B85BC 800B79BC 01E03025 */ move $a2, $t7 /* 0B85C0 800B79C0 01C03825 */ move $a3, $t6 -/* 0B85C4 800B79C4 0C02DCC1 */ jal func_800B7304 +/* 0B85C4 800B79C4 0C02DCC1 */ jal synthesis_resample_and_mix_reverb /* 0B85C8 800B79C8 8FA500C4 */ lw $a1, 0xc4($sp) /* 0B85CC 800B79CC 0040A025 */ move $s4, $v0 .L800B79D0: @@ -221,7 +221,7 @@ glabel func_800B775C /* 0B8680 800B7A80 13000005 */ beqz $t8, .L800B7A98 /* 0B8684 800B7A84 00153400 */ sll $a2, $s5, 0x10 /* 0B8688 800B7A88 00065C03 */ sra $t3, $a2, 0x10 -/* 0B868C 800B7A8C 0C02DD8C */ jal func_800B7630 +/* 0B868C 800B7A8C 0C02DD8C */ jal synthesis_load_reverb_samples /* 0B8690 800B7A90 01603025 */ move $a2, $t3 /* 0B8694 800B7A94 0040A025 */ move $s4, $v0 .L800B7A98: @@ -235,9 +235,9 @@ glabel func_800B775C /* 0B86B4 800B7AB4 00137140 */ sll $t6, $s3, 5 .L800B7AB8: /* 0B86B8 800B7AB8 3C16803B */ lui $s6, %hi(gNoteSubsEu) # $s6, 0x803b -/* 0B86BC 800B7ABC 3C1E803B */ lui $fp, %hi(D_803B1508) # $fp, 0x803b +/* 0B86BC 800B7ABC 3C1E803B */ lui $fp, %hi(gNotes) # $fp, 0x803b /* 0B86C0 800B7AC0 0232082A */ slt $at, $s1, $s2 -/* 0B86C4 800B7AC4 27DE1508 */ addiu $fp, %lo(D_803B1508) # addiu $fp, $fp, 0x1508 +/* 0B86C4 800B7AC4 27DE1508 */ addiu $fp, %lo(gNotes) # addiu $fp, $fp, 0x1508 /* 0B86C8 800B7AC8 26D6FBC4 */ addiu $s6, %lo(gNoteSubsEu) # addiu $s6, $s6, -0x43c /* 0B86CC 800B7ACC 10200030 */ beqz $at, .L800B7B90 /* 0B86D0 800B7AD0 241700C0 */ li $s7, 192 @@ -252,7 +252,7 @@ glabel func_800B775C /* 0B86F0 800B7AF0 02B80019 */ multu $s5, $t8 /* 0B86F4 800B7AF4 0003C900 */ sll $t9, $v1, 4 /* 0B86F8 800B7AF8 01195821 */ addu $t3, $t0, $t9 -/* 0B86FC 800B7AFC 3C0F803B */ lui $t7, %hi(D_803B03C0) # 0x803b +/* 0B86FC 800B7AFC 3C0F803B */ lui $t7, %hi(gBankLoadStatus) # 0x803b /* 0B8700 800B7B00 3C011000 */ lui $at, 0x1000 /* 0B8704 800B7B04 00602025 */ move $a0, $v1 /* 0B8708 800B7B08 00001012 */ mflo $v0 @@ -260,7 +260,7 @@ glabel func_800B775C /* 0B8710 800B7B10 016C6821 */ addu $t5, $t3, $t4 /* 0B8714 800B7B14 91A50002 */ lbu $a1, 2($t5) /* 0B8718 800B7B18 01E57821 */ addu $t7, $t7, $a1 -/* 0B871C 800B7B1C 91EF03C0 */ lbu $t7, %lo(D_803B03C0)($t7) # 0x3c0($t7) +/* 0B871C 800B7B1C 91EF03C0 */ lbu $t7, %lo(gBankLoadStatus)($t7) # 0x3c0($t7) /* 0B8720 800B7B20 29EE0002 */ slti $t6, $t7, 2 /* 0B8724 800B7B24 39CE0001 */ xori $t6, $t6, 1 /* 0B8728 800B7B28 166E0011 */ bne $s3, $t6, .L800B7B70 @@ -284,8 +284,8 @@ glabel func_800B775C .L800B7B70: /* 0B8770 800B7B70 00AF7021 */ addu $t6, $a1, $t7 /* 0B8774 800B7B74 01C1C021 */ addu $t8, $t6, $at -/* 0B8778 800B7B78 3C01803B */ lui $at, %hi(D_803B7198) # $at, 0x803b -/* 0B877C 800B7B7C AC387198 */ sw $t8, %lo(D_803B7198)($at) +/* 0B8778 800B7B78 3C01803B */ lui $at, %hi(gAudioErrorFlags) # $at, 0x803b +/* 0B877C 800B7B7C AC387198 */ sw $t8, %lo(gAudioErrorFlags)($at) .L800B7B80: /* 0B8780 800B7B80 26310001 */ addiu $s1, $s1, 1 /* 0B8784 800B7B84 0232082A */ slt $at, $s1, $s2 diff --git a/asm/non_matchings/audio/synthesis/func_800B7C30.s b/asm/non_matchings/audio/synthesis/func_800B7C30.s index 3a029533b..6fee3e298 100644 --- a/asm/non_matchings/audio/synthesis/func_800B7C30.s +++ b/asm/non_matchings/audio/synthesis/func_800B7C30.s @@ -1,7 +1,7 @@ glabel func_800B7C30 /* 0B8830 800B7C30 27BDFEC0 */ addiu $sp, $sp, -0x140 -/* 0B8834 800B7C34 3C18803B */ lui $t8, %hi(D_803B1508) # $t8, 0x803b -/* 0B8838 800B7C38 8F181508 */ lw $t8, %lo(D_803B1508)($t8) +/* 0B8834 800B7C34 3C18803B */ lui $t8, %hi(gNotes) # $t8, 0x803b +/* 0B8838 800B7C38 8F181508 */ lw $t8, %lo(gNotes)($t8) /* 0B883C 800B7C3C 00047880 */ sll $t7, $a0, 2 /* 0B8840 800B7C40 01E47823 */ subu $t7, $t7, $a0 /* 0B8844 800B7C44 000F7980 */ sll $t7, $t7, 6 @@ -61,7 +61,7 @@ glabel func_800B7C30 /* 0B8918 800B7D18 00047B80 */ sll $t7, $a0, 0xe /* 0B891C 800B7D1C 05E3000E */ bgezl $t7, .L800B7D58 /* 0B8920 800B7D20 8F0E000C */ lw $t6, 0xc($t8) -/* 0B8924 800B7D24 0C02E16D */ jal func_800B85B4 +/* 0B8924 800B7D24 0C02E16D */ jal load_wave_samples /* 0B8928 800B7D28 8FA40154 */ lw $a0, 0x154($sp) /* 0B892C 800B7D2C 8EE60008 */ lw $a2, 8($s7) /* 0B8930 800B7D30 0006C040 */ sll $t8, $a2, 1 @@ -442,7 +442,7 @@ glabel func_800B7C30 /* 0B8EA0 800B82A0 A23800B0 */ sb $t8, 0xb0($s1) /* 0B8EA4 800B82A4 AFAD00E4 */ sw $t5, 0xe4($sp) /* 0B8EA8 800B82A8 8FA50140 */ lw $a1, 0x140($sp) -/* 0B8EAC 800B82AC 0C02DBED */ jal synthesis_load_note_subs_eu +/* 0B8EAC 800B82AC 0C02DBED */ jal func_800B6FB4 /* 0B8EB0 800B82B0 8FA40158 */ lw $a0, 0x158($sp) /* 0B8EB4 800B82B4 1000000D */ b .L800B82EC /* 0B8EB8 800B82B8 8FAD00E4 */ lw $t5, 0xe4($sp) @@ -597,7 +597,7 @@ glabel func_800B7C30 /* 0B90D0 800B84D0 97A70112 */ lhu $a3, 0x112($sp) /* 0B90D4 800B84D4 AFA30014 */ sw $v1, 0x14($sp) /* 0B90D8 800B84D8 AFA30114 */ sw $v1, 0x114($sp) -/* 0B90DC 800B84DC 0C02E191 */ jal func_800B8644 +/* 0B90DC 800B84DC 0C02E191 */ jal final_resample /* 0B90E0 800B84E0 AFB90010 */ sw $t9, 0x10($sp) /* 0B90E4 800B84E4 8FB10144 */ lw $s1, 0x144($sp) /* 0B90E8 800B84E8 00409025 */ move $s2, $v0 @@ -639,7 +639,7 @@ glabel func_800B7C30 /* 0B9168 800B8568 02E03025 */ move $a2, $s7 /* 0B916C 800B856C 02603825 */ move $a3, $s3 /* 0B9170 800B8570 AFB40010 */ sw $s4, 0x10($sp) -/* 0B9174 800B8574 0C02E28B */ jal func_800B8A2C +/* 0B9174 800B8574 0C02E28B */ jal note_apply_headset_pan_effects /* 0B9178 800B8578 AFB00014 */ sw $s0, 0x14($sp) /* 0B917C 800B857C 00409025 */ move $s2, $v0 .L800B8580: diff --git a/asm/non_matchings/audio/synthesis/func_800B85B4.s b/asm/non_matchings/audio/synthesis/func_800B85B4.s deleted file mode 100644 index 13c237643..000000000 --- a/asm/non_matchings/audio/synthesis/func_800B85B4.s +++ /dev/null @@ -1,39 +0,0 @@ -glabel func_800B85B4 -/* 0B91B4 800B85B4 3C0E1408 */ lui $t6, (0x140801A0 >> 16) # lui $t6, 0x1408 -/* 0B91B8 800B85B8 35CE01A0 */ ori $t6, (0x140801A0 & 0xFFFF) # ori $t6, $t6, 0x1a0 -/* 0B91BC 800B85BC 00801025 */ move $v0, $a0 -/* 0B91C0 800B85C0 AC4E0000 */ sw $t6, ($v0) -/* 0B91C4 800B85C4 8CAF000C */ lw $t7, 0xc($a1) -/* 0B91C8 800B85C8 3C018000 */ lui $at, 0x8000 -/* 0B91CC 800B85CC 240A0040 */ li $t2, 64 -/* 0B91D0 800B85D0 01E1C021 */ addu $t8, $t7, $at -/* 0B91D4 800B85D4 AC580004 */ sw $t8, 4($v0) -/* 0B91D8 800B85D8 8CD90008 */ lw $t9, 8($a2) -/* 0B91DC 800B85DC 24840008 */ addiu $a0, $a0, 8 -/* 0B91E0 800B85E0 3328003F */ andi $t0, $t9, 0x3f -/* 0B91E4 800B85E4 01481823 */ subu $v1, $t2, $t0 -/* 0B91E8 800B85E8 0067082A */ slt $at, $v1, $a3 -/* 0B91EC 800B85EC 10200013 */ beqz $at, .L800B863C -/* 0B91F0 800B85F0 ACC80008 */ sw $t0, 8($a2) -/* 0B91F4 800B85F4 00E31023 */ subu $v0, $a3, $v1 -/* 0B91F8 800B85F8 2442003F */ addiu $v0, $v0, 0x3f -/* 0B91FC 800B85FC 04410003 */ bgez $v0, .L800B860C -/* 0B9200 800B8600 00025983 */ sra $t3, $v0, 6 -/* 0B9204 800B8604 2441003F */ addiu $at, $v0, 0x3f -/* 0B9208 800B8608 00015983 */ sra $t3, $at, 6 -.L800B860C: -/* 0B920C 800B860C 1160000B */ beqz $t3, .L800B863C -/* 0B9210 800B8610 00801825 */ move $v1, $a0 -/* 0B9214 800B8614 316C00FF */ andi $t4, $t3, 0xff -/* 0B9218 800B8618 000C6C00 */ sll $t5, $t4, 0x10 -/* 0B921C 800B861C 3C011000 */ lui $at, 0x1000 -/* 0B9220 800B8620 01A17025 */ or $t6, $t5, $at -/* 0B9224 800B8624 3C180220 */ lui $t8, (0x02200080 >> 16) # lui $t8, 0x220 -/* 0B9228 800B8628 37180080 */ ori $t8, (0x02200080 & 0xFFFF) # ori $t8, $t8, 0x80 -/* 0B922C 800B862C 35CF01A0 */ ori $t7, $t6, 0x1a0 -/* 0B9230 800B8630 AC6F0000 */ sw $t7, ($v1) -/* 0B9234 800B8634 AC780004 */ sw $t8, 4($v1) -/* 0B9238 800B8638 24840008 */ addiu $a0, $a0, 8 -.L800B863C: -/* 0B923C 800B863C 03E00008 */ jr $ra -/* 0B9240 800B8640 00801025 */ move $v0, $a0 diff --git a/asm/non_matchings/audio/synthesis/func_800B8644.s b/asm/non_matchings/audio/synthesis/func_800B8644.s deleted file mode 100644 index c695c3500..000000000 --- a/asm/non_matchings/audio/synthesis/func_800B8644.s +++ /dev/null @@ -1,24 +0,0 @@ -glabel func_800B8644 -/* 0B9244 800B8644 97B80012 */ lhu $t8, 0x12($sp) -/* 0B9248 800B8648 AFA7000C */ sw $a3, 0xc($sp) -/* 0B924C 800B864C 3C010800 */ lui $at, 0x800 -/* 0B9250 800B8650 30C9FFFF */ andi $t1, $a2, 0xffff -/* 0B9254 800B8654 0301C825 */ or $t9, $t8, $at -/* 0B9258 800B8658 AC990000 */ sw $t9, ($a0) -/* 0B925C 800B865C AC890004 */ sw $t1, 4($a0) -/* 0B9260 800B8660 8FAA0014 */ lw $t2, 0x14($sp) -/* 0B9264 800B8664 3C010500 */ lui $at, 0x500 -/* 0B9268 800B8668 30EEFFFF */ andi $t6, $a3, 0xffff -/* 0B926C 800B866C 314B00FF */ andi $t3, $t2, 0xff -/* 0B9270 800B8670 000B6400 */ sll $t4, $t3, 0x10 -/* 0B9274 800B8674 01816825 */ or $t5, $t4, $at -/* 0B9278 800B8678 24880008 */ addiu $t0, $a0, 8 -/* 0B927C 800B867C 01AE7825 */ or $t7, $t5, $t6 -/* 0B9280 800B8680 AD0F0000 */ sw $t7, ($t0) -/* 0B9284 800B8684 8CB8000C */ lw $t8, 0xc($a1) -/* 0B9288 800B8688 3C018000 */ lui $at, (0x80000020 >> 16) # lui $at, 0x8000 -/* 0B928C 800B868C 34210020 */ ori $at, (0x80000020 & 0xFFFF) # ori $at, $at, 0x20 -/* 0B9290 800B8690 0301C821 */ addu $t9, $t8, $at -/* 0B9294 800B8694 AD190004 */ sw $t9, 4($t0) -/* 0B9298 800B8698 03E00008 */ jr $ra -/* 0B929C 800B869C 25020008 */ addiu $v0, $t0, 8 diff --git a/asm/non_matchings/audio/synthesis/func_800B8A2C.s b/asm/non_matchings/audio/synthesis/func_800B8A2C.s deleted file mode 100644 index 553c32dce..000000000 --- a/asm/non_matchings/audio/synthesis/func_800B8A2C.s +++ /dev/null @@ -1,255 +0,0 @@ -glabel func_800B8A2C -/* 0B962C 800B8A2C 27BDFFF8 */ addiu $sp, $sp, -8 -/* 0B9630 800B8A30 8FAE001C */ lw $t6, 0x1c($sp) -/* 0B9634 800B8A34 AFB00004 */ sw $s0, 4($sp) -/* 0B9638 800B8A38 24030001 */ li $v1, 1 -/* 0B963C 800B8A3C 11C30006 */ beq $t6, $v1, .L800B8A58 -/* 0B9640 800B8A40 00E08025 */ move $s0, $a3 -/* 0B9644 800B8A44 24010002 */ li $at, 2 -/* 0B9648 800B8A48 11C10009 */ beq $t6, $at, .L800B8A70 -/* 0B964C 800B8A4C 240906C0 */ li $t1, 1728 -/* 0B9650 800B8A50 100000DD */ b .L800B8DC8 -/* 0B9654 800B8A54 00801025 */ move $v0, $a0 -.L800B8A58: -/* 0B9658 800B8A58 90A70003 */ lbu $a3, 3($a1) -/* 0B965C 800B8A5C 90C20002 */ lbu $v0, 2($a2) -/* 0B9660 800B8A60 24090540 */ li $t1, 1344 -/* 0B9664 800B8A64 A0C00003 */ sb $zero, 3($a2) -/* 0B9668 800B8A68 10000008 */ b .L800B8A8C -/* 0B966C 800B8A6C A0C70002 */ sb $a3, 2($a2) -.L800B8A70: -/* 0B9670 800B8A70 90A70004 */ lbu $a3, 4($a1) -/* 0B9674 800B8A74 90C20003 */ lbu $v0, 3($a2) -/* 0B9678 800B8A78 A0C00002 */ sb $zero, 2($a2) -/* 0B967C 800B8A7C 10000003 */ b .L800B8A8C -/* 0B9680 800B8A80 A0C70003 */ sb $a3, 3($a2) -/* 0B9684 800B8A84 100000D0 */ b .L800B8DC8 -/* 0B9688 800B8A88 00801025 */ move $v0, $a0 -.L800B8A8C: -/* 0B968C 800B8A8C 8FAF0018 */ lw $t7, 0x18($sp) -/* 0B9690 800B8A90 24EE0200 */ addiu $t6, $a3, 0x200 -/* 0B9694 800B8A94 000EC400 */ sll $t8, $t6, 0x10 -/* 0B9698 800B8A98 11E30099 */ beq $t7, $v1, .L800B8D00 -/* 0B969C 800B8A9C 00E02825 */ move $a1, $a3 -/* 0B96A0 800B8AA0 14400040 */ bnez $v0, .L800B8BA4 -/* 0B96A4 800B8AA4 00401825 */ move $v1, $v0 -/* 0B96A8 800B8AA8 00802825 */ move $a1, $a0 -/* 0B96AC 800B8AAC 3C020A00 */ lui $v0, (0x0A000200 >> 16) # lui $v0, 0xa00 -/* 0B96B0 800B8AB0 24840008 */ addiu $a0, $a0, 8 -/* 0B96B4 800B8AB4 34420200 */ ori $v0, (0x0A000200 & 0xFFFF) # ori $v0, $v0, 0x200 -/* 0B96B8 800B8AB8 240D0008 */ li $t5, 8 -/* 0B96BC 800B8ABC 00805025 */ move $t2, $a0 -/* 0B96C0 800B8AC0 ACAD0004 */ sw $t5, 4($a1) -/* 0B96C4 800B8AC4 ACA20000 */ sw $v0, ($a1) -/* 0B96C8 800B8AC8 24840008 */ addiu $a0, $a0, 8 -/* 0B96CC 800B8ACC 3C180200 */ lui $t8, (0x02000008 >> 16) # lui $t8, 0x200 -/* 0B96D0 800B8AD0 37180008 */ ori $t8, (0x02000008 & 0xFFFF) # ori $t8, $t8, 8 -/* 0B96D4 800B8AD4 00805825 */ move $t3, $a0 -/* 0B96D8 800B8AD8 AD580000 */ sw $t8, ($t2) -/* 0B96DC 800B8ADC AD4D0004 */ sw $t5, 4($t2) -/* 0B96E0 800B8AE0 3C190010 */ lui $t9, (0x00100010 >> 16) # lui $t9, 0x10 -/* 0B96E4 800B8AE4 37390010 */ ori $t9, (0x00100010 & 0xFFFF) # ori $t9, $t9, 0x10 -/* 0B96E8 800B8AE8 24840008 */ addiu $a0, $a0, 8 -/* 0B96EC 800B8AEC AD790004 */ sw $t9, 4($t3) -/* 0B96F0 800B8AF0 AD620000 */ sw $v0, ($t3) -/* 0B96F4 800B8AF4 00806025 */ move $t4, $a0 -/* 0B96F8 800B8AF8 3C0E1502 */ lui $t6, 0x1502 -/* 0B96FC 800B8AFC AD8E0000 */ sw $t6, ($t4) -/* 0B9700 800B8B00 8CCF000C */ lw $t7, 0xc($a2) -/* 0B9704 800B8B04 3C088000 */ lui $t0, (0x80000040 >> 16) # lui $t0, 0x8000 -/* 0B9708 800B8B08 35080040 */ ori $t0, (0x80000040 & 0xFFFF) # ori $t0, $t0, 0x40 -/* 0B970C 800B8B0C 0207C821 */ addu $t9, $s0, $a3 -/* 0B9710 800B8B10 03235823 */ subu $t3, $t9, $v1 -/* 0B9714 800B8B14 001073C0 */ sll $t6, $s0, 0xf -/* 0B9718 800B8B18 01E8C021 */ addu $t8, $t7, $t0 -/* 0B971C 800B8B1C 256F0008 */ addiu $t7, $t3, 8 -/* 0B9720 800B8B20 01CF001A */ div $zero, $t6, $t7 -/* 0B9724 800B8B24 AD980004 */ sw $t8, 4($t4) -/* 0B9728 800B8B28 24840008 */ addiu $a0, $a0, 8 -/* 0B972C 800B8B2C 00006812 */ mflo $t5 -/* 0B9730 800B8B30 00805025 */ move $t2, $a0 -/* 0B9734 800B8B34 31B8FFFF */ andi $t8, $t5, 0xffff -/* 0B9738 800B8B38 3C190800 */ lui $t9, (0x08000208 >> 16) # lui $t9, 0x800 -/* 0B973C 800B8B3C 37390208 */ ori $t9, (0x08000208 & 0xFFFF) # ori $t9, $t9, 0x208 -/* 0B9740 800B8B40 24840008 */ addiu $a0, $a0, 8 -/* 0B9744 800B8B44 3162FFFF */ andi $v0, $t3, 0xffff -/* 0B9748 800B8B48 AD420004 */ sw $v0, 4($t2) -/* 0B974C 800B8B4C AD590000 */ sw $t9, ($t2) -/* 0B9750 800B8B50 00806025 */ move $t4, $a0 -/* 0B9754 800B8B54 03006825 */ move $t5, $t8 -/* 0B9758 800B8B58 00E02825 */ move $a1, $a3 -/* 0B975C 800B8B5C 15E00002 */ bnez $t7, .L800B8B68 -/* 0B9760 800B8B60 00000000 */ nop -/* 0B9764 800B8B64 0007000D */ break 7 -.L800B8B68: -/* 0B9768 800B8B68 2401FFFF */ li $at, -1 -/* 0B976C 800B8B6C 15E10004 */ bne $t7, $at, .L800B8B80 -/* 0B9770 800B8B70 3C018000 */ lui $at, 0x8000 -/* 0B9774 800B8B74 15C10002 */ bne $t6, $at, .L800B8B80 -/* 0B9778 800B8B78 00000000 */ nop -/* 0B977C 800B8B7C 0006000D */ break 6 -.L800B8B80: -/* 0B9780 800B8B80 3C010500 */ lui $at, 0x500 -/* 0B9784 800B8B84 330EFFFF */ andi $t6, $t8, 0xffff -/* 0B9788 800B8B88 01C17825 */ or $t7, $t6, $at -/* 0B978C 800B8B8C AD8F0000 */ sw $t7, ($t4) -/* 0B9790 800B8B90 8CD8000C */ lw $t8, 0xc($a2) -/* 0B9794 800B8B94 24840008 */ addiu $a0, $a0, 8 -/* 0B9798 800B8B98 0308C821 */ addu $t9, $t8, $t0 -/* 0B979C 800B8B9C 10000038 */ b .L800B8C80 -/* 0B97A0 800B8BA0 AD990004 */ sw $t9, 4($t4) -.L800B8BA4: -/* 0B97A4 800B8BA4 14E00014 */ bnez $a3, .L800B8BF8 -/* 0B97A8 800B8BA8 00E02825 */ move $a1, $a3 -/* 0B97AC 800B8BAC 02037823 */ subu $t7, $s0, $v1 -/* 0B97B0 800B8BB0 25F8FFFC */ addiu $t8, $t7, -4 -/* 0B97B4 800B8BB4 001073C0 */ sll $t6, $s0, 0xf -/* 0B97B8 800B8BB8 01D8001A */ div $zero, $t6, $t8 -/* 0B97BC 800B8BBC 00005012 */ mflo $t2 -/* 0B97C0 800B8BC0 3159FFFF */ andi $t9, $t2, 0xffff -/* 0B97C4 800B8BC4 17000002 */ bnez $t8, .L800B8BD0 -/* 0B97C8 800B8BC8 00000000 */ nop -/* 0B97CC 800B8BCC 0007000D */ break 7 -.L800B8BD0: -/* 0B97D0 800B8BD0 2401FFFF */ li $at, -1 -/* 0B97D4 800B8BD4 17010004 */ bne $t8, $at, .L800B8BE8 -/* 0B97D8 800B8BD8 3C018000 */ lui $at, 0x8000 -/* 0B97DC 800B8BDC 15C10002 */ bne $t6, $at, .L800B8BE8 -/* 0B97E0 800B8BE0 00000000 */ nop -/* 0B97E4 800B8BE4 0006000D */ break 6 -.L800B8BE8: -/* 0B97E8 800B8BE8 02057821 */ addu $t7, $s0, $a1 -/* 0B97EC 800B8BEC 01E35823 */ subu $t3, $t7, $v1 -/* 0B97F0 800B8BF0 10000011 */ b .L800B8C38 -/* 0B97F4 800B8BF4 03205025 */ move $t2, $t9 -.L800B8BF8: -/* 0B97F8 800B8BF8 02057021 */ addu $t6, $s0, $a1 -/* 0B97FC 800B8BFC 01C35823 */ subu $t3, $t6, $v1 -/* 0B9800 800B8C00 0010C3C0 */ sll $t8, $s0, 0xf -/* 0B9804 800B8C04 030B001A */ div $zero, $t8, $t3 -/* 0B9808 800B8C08 00005012 */ mflo $t2 -/* 0B980C 800B8C0C 3159FFFF */ andi $t9, $t2, 0xffff -/* 0B9810 800B8C10 03205025 */ move $t2, $t9 -/* 0B9814 800B8C14 15600002 */ bnez $t3, .L800B8C20 -/* 0B9818 800B8C18 00000000 */ nop -/* 0B981C 800B8C1C 0007000D */ break 7 -.L800B8C20: -/* 0B9820 800B8C20 2401FFFF */ li $at, -1 -/* 0B9824 800B8C24 15610004 */ bne $t3, $at, .L800B8C38 -/* 0B9828 800B8C28 3C018000 */ lui $at, 0x8000 -/* 0B982C 800B8C2C 17010002 */ bne $t8, $at, .L800B8C38 -/* 0B9830 800B8C30 00000000 */ nop -/* 0B9834 800B8C34 0006000D */ break 6 -.L800B8C38: -/* 0B9838 800B8C38 00806025 */ move $t4, $a0 -/* 0B983C 800B8C3C 3C0F0800 */ lui $t7, (0x08000200 >> 16) # lui $t7, 0x800 -/* 0B9840 800B8C40 35EF0200 */ ori $t7, (0x08000200 & 0xFFFF) # ori $t7, $t7, 0x200 -/* 0B9844 800B8C44 24840008 */ addiu $a0, $a0, 8 -/* 0B9848 800B8C48 3162FFFF */ andi $v0, $t3, 0xffff -/* 0B984C 800B8C4C 314EFFFF */ andi $t6, $t2, 0xffff -/* 0B9850 800B8C50 3C010500 */ lui $at, 0x500 -/* 0B9854 800B8C54 AD820004 */ sw $v0, 4($t4) -/* 0B9858 800B8C58 AD8F0000 */ sw $t7, ($t4) -/* 0B985C 800B8C5C 01C1C025 */ or $t8, $t6, $at -/* 0B9860 800B8C60 00806825 */ move $t5, $a0 -/* 0B9864 800B8C64 ADB80000 */ sw $t8, ($t5) -/* 0B9868 800B8C68 8CD9000C */ lw $t9, 0xc($a2) -/* 0B986C 800B8C6C 3C088000 */ lui $t0, (0x80000040 >> 16) # $t0, 0x8000 -/* 0B9870 800B8C70 35080040 */ ori $t0, (0x80000040 & 0xFFFF) # ori $t0, $t0, 0x40 -/* 0B9874 800B8C74 03287821 */ addu $t7, $t9, $t0 -/* 0B9878 800B8C78 ADAF0004 */ sw $t7, 4($t5) -/* 0B987C 800B8C7C 24840008 */ addiu $a0, $a0, 8 -.L800B8C80: -/* 0B9880 800B8C80 10600018 */ beqz $v1, .L800B8CE4 -/* 0B9884 800B8C84 3C0E0A00 */ lui $t6, 0xa00 -/* 0B9888 800B8C88 00037103 */ sra $t6, $v1, 4 -/* 0B988C 800B8C8C 31D800FF */ andi $t8, $t6, 0xff -/* 0B9890 800B8C90 0018CC00 */ sll $t9, $t8, 0x10 -/* 0B9894 800B8C94 3C011400 */ lui $at, 0x1400 -/* 0B9898 800B8C98 03217825 */ or $t7, $t9, $at -/* 0B989C 800B8C9C 35EE0200 */ ori $t6, $t7, 0x200 -/* 0B98A0 800B8CA0 00804025 */ move $t0, $a0 -/* 0B98A4 800B8CA4 AD0E0000 */ sw $t6, ($t0) -/* 0B98A8 800B8CA8 8CD8000C */ lw $t8, 0xc($a2) -/* 0B98AC 800B8CAC 3C018000 */ lui $at, (0x80000060 >> 16) # lui $at, 0x8000 -/* 0B98B0 800B8CB0 34210060 */ ori $at, (0x80000060 & 0xFFFF) # ori $at, $at, 0x60 -/* 0B98B4 800B8CB4 0301C821 */ addu $t9, $t8, $at -/* 0B98B8 800B8CB8 AD190004 */ sw $t9, 4($t0) -/* 0B98BC 800B8CBC 24840008 */ addiu $a0, $a0, 8 -/* 0B98C0 800B8CC0 00805025 */ move $t2, $a0 -/* 0B98C4 800B8CC4 24780200 */ addiu $t8, $v1, 0x200 -/* 0B98C8 800B8CC8 3C0F0A00 */ lui $t7, 0xa00 -/* 0B98CC 800B8CCC AD4F0000 */ sw $t7, ($t2) -/* 0B98D0 800B8CD0 0018CC00 */ sll $t9, $t8, 0x10 -/* 0B98D4 800B8CD4 03227825 */ or $t7, $t9, $v0 -/* 0B98D8 800B8CD8 AD4F0004 */ sw $t7, 4($t2) -/* 0B98DC 800B8CDC 1000001B */ b .L800B8D4C -/* 0B98E0 800B8CE0 24840008 */ addiu $a0, $a0, 8 -.L800B8CE4: -/* 0B98E4 800B8CE4 00801825 */ move $v1, $a0 -/* 0B98E8 800B8CE8 3C010200 */ lui $at, 0x200 -/* 0B98EC 800B8CEC 0041C025 */ or $t8, $v0, $at -/* 0B98F0 800B8CF0 AC780004 */ sw $t8, 4($v1) -/* 0B98F4 800B8CF4 AC6E0000 */ sw $t6, ($v1) -/* 0B98F8 800B8CF8 10000014 */ b .L800B8D4C -/* 0B98FC 800B8CFC 24840008 */ addiu $a0, $a0, 8 -.L800B8D00: -/* 0B9900 800B8D00 00801825 */ move $v1, $a0 -/* 0B9904 800B8D04 3C020A00 */ lui $v0, (0x0A000200 >> 16) -/* 0B9908 800B8D08 24840008 */ addiu $a0, $a0, 8 -/* 0B990C 800B8D0C 34420200 */ ori $v0, (0x0A000200 & 0xFFFF) # ori $v0, $v0, 0x200 -/* 0B9910 800B8D10 3208FFFF */ andi $t0, $s0, 0xffff -/* 0B9914 800B8D14 00805025 */ move $t2, $a0 -/* 0B9918 800B8D18 AC680004 */ sw $t0, 4($v1) -/* 0B991C 800B8D1C AC620000 */ sw $v0, ($v1) -/* 0B9920 800B8D20 3C190A00 */ lui $t9, 0xa00 -/* 0B9924 800B8D24 AD590000 */ sw $t9, ($t2) -/* 0B9928 800B8D28 24840008 */ addiu $a0, $a0, 8 -/* 0B992C 800B8D2C 0308C825 */ or $t9, $t8, $t0 -/* 0B9930 800B8D30 00805825 */ move $t3, $a0 -/* 0B9934 800B8D34 AD590004 */ sw $t9, 4($t2) -/* 0B9938 800B8D38 3C0F0200 */ lui $t7, (0x02000200 >> 16) # lui $t7, 0x200 -/* 0B993C 800B8D3C 35EF0200 */ ori $t7, (0x02000200 & 0xFFFF) # ori $t7, $t7, 0x200 -/* 0B9940 800B8D40 AD6F0000 */ sw $t7, ($t3) -/* 0B9944 800B8D44 AD670004 */ sw $a3, 4($t3) -/* 0B9948 800B8D48 24840008 */ addiu $a0, $a0, 8 -.L800B8D4C: -/* 0B994C 800B8D4C 10E00010 */ beqz $a3, .L800B8D90 -/* 0B9950 800B8D50 00801025 */ move $v0, $a0 -/* 0B9954 800B8D54 00057103 */ sra $t6, $a1, 4 -/* 0B9958 800B8D58 31D800FF */ andi $t8, $t6, 0xff -/* 0B995C 800B8D5C 0018CC00 */ sll $t9, $t8, 0x10 -/* 0B9960 800B8D60 260E0200 */ addiu $t6, $s0, 0x200 -/* 0B9964 800B8D64 3C011500 */ lui $at, 0x1500 -/* 0B9968 800B8D68 03217825 */ or $t7, $t9, $at -/* 0B996C 800B8D6C 31D8FFFF */ andi $t8, $t6, 0xffff -/* 0B9970 800B8D70 01F8C825 */ or $t9, $t7, $t8 -/* 0B9974 800B8D74 AC590000 */ sw $t9, ($v0) -/* 0B9978 800B8D78 8CCE000C */ lw $t6, 0xc($a2) -/* 0B997C 800B8D7C 3C018000 */ lui $at, (0x80000060 >> 16) # lui $at, 0x8000 -/* 0B9980 800B8D80 34210060 */ ori $at, (0x80000060 & 0xFFFF) # ori $at, $at, 0x60 -/* 0B9984 800B8D84 01C17821 */ addu $t7, $t6, $at -/* 0B9988 800B8D88 AC4F0004 */ sw $t7, 4($v0) -/* 0B998C 800B8D8C 24840008 */ addiu $a0, $a0, 8 -.L800B8D90: -/* 0B9990 800B8D90 2618001F */ addiu $t8, $s0, 0x1f -/* 0B9994 800B8D94 3319FFE0 */ andi $t9, $t8, 0xffe0 -/* 0B9998 800B8D98 00197103 */ sra $t6, $t9, 4 -/* 0B999C 800B8D9C 31CF00FF */ andi $t7, $t6, 0xff -/* 0B99A0 800B8DA0 000FC400 */ sll $t8, $t7, 0x10 -/* 0B99A4 800B8DA4 3C010C00 */ lui $at, 0xc00 -/* 0B99A8 800B8DA8 0301C825 */ or $t9, $t8, $at -/* 0B99AC 800B8DAC 3C010200 */ lui $at, 0x200 -/* 0B99B0 800B8DB0 312FFFFF */ andi $t7, $t1, 0xffff -/* 0B99B4 800B8DB4 01E1C025 */ or $t8, $t7, $at -/* 0B99B8 800B8DB8 372E7FFF */ ori $t6, $t9, 0x7fff -/* 0B99BC 800B8DBC AC8E0000 */ sw $t6, ($a0) -/* 0B99C0 800B8DC0 AC980004 */ sw $t8, 4($a0) -/* 0B99C4 800B8DC4 24820008 */ addiu $v0, $a0, 8 -.L800B8DC8: -/* 0B99C8 800B8DC8 8FB00004 */ lw $s0, 4($sp) -/* 0B99CC 800B8DCC 03E00008 */ jr $ra -/* 0B99D0 800B8DD0 27BD0008 */ addiu $sp, $sp, 8 - -/* 0B99D4 800B8DD4 00000000 */ nop -/* 0B99D8 800B8DD8 00000000 */ nop diff --git a/asm/non_matchings/audio/synthesis/synthesis_load_note_subs_eu.s b/asm/non_matchings/audio/synthesis/synthesis_load_note_subs_eu.s deleted file mode 100644 index 71b54cc17..000000000 --- a/asm/non_matchings/audio/synthesis/synthesis_load_note_subs_eu.s +++ /dev/null @@ -1,35 +0,0 @@ -glabel synthesis_load_note_subs_eu -/* 0B7BB4 800B6FB4 3C06803B */ lui $a2, %hi(gAudioBufferParameters) # $a2, 0x803b -/* 0B7BB8 800B6FB8 24C67088 */ addiu $a2, %lo(gAudioBufferParameters) # addiu $a2, $a2, 0x7088 -/* 0B7BBC 800B6FBC 84CE000C */ lh $t6, 0xc($a2) -/* 0B7BC0 800B6FC0 24820001 */ addiu $v0, $a0, 1 -/* 0B7BC4 800B6FC4 00051900 */ sll $v1, $a1, 4 -/* 0B7BC8 800B6FC8 004E082A */ slt $at, $v0, $t6 -/* 0B7BCC 800B6FCC 10200017 */ beqz $at, .L800B702C -/* 0B7BD0 800B6FD0 3C07803B */ lui $a3, %hi(gMaxSimultaneousNotes) # $a3, 0x803b -/* 0B7BD4 800B6FD4 3C05803B */ lui $a1, %hi(gNoteSubsEu) # $a1, 0x803b -/* 0B7BD8 800B6FD8 24A5FBC4 */ addiu $a1, %lo(gNoteSubsEu) # addiu $a1, $a1, -0x43c -/* 0B7BDC 800B6FDC 24E770B0 */ addiu $a3, %lo(gMaxSimultaneousNotes) # addiu $a3, $a3, 0x70b0 -/* 0B7BE0 800B6FE0 8CF80000 */ lw $t8, ($a3) -.L800B6FE4: -/* 0B7BE4 800B6FE4 8CAF0000 */ lw $t7, ($a1) -/* 0B7BE8 800B6FE8 03020019 */ multu $t8, $v0 -/* 0B7BEC 800B6FEC 0000C812 */ mflo $t9 -/* 0B7BF0 800B6FF0 00194100 */ sll $t0, $t9, 4 -/* 0B7BF4 800B6FF4 01E84821 */ addu $t1, $t7, $t0 -/* 0B7BF8 800B6FF8 01232021 */ addu $a0, $t1, $v1 -/* 0B7BFC 800B6FFC 8C8A0000 */ lw $t2, ($a0) -/* 0B7C00 800B7000 000A6040 */ sll $t4, $t2, 1 -/* 0B7C04 800B7004 05800009 */ bltz $t4, .L800B702C -/* 0B7C08 800B7008 00000000 */ nop -/* 0B7C0C 800B700C 908D0000 */ lbu $t5, ($a0) -/* 0B7C10 800B7010 24420001 */ addiu $v0, $v0, 1 -/* 0B7C14 800B7014 31AEFF7F */ andi $t6, $t5, 0xff7f -/* 0B7C18 800B7018 A08E0000 */ sb $t6, ($a0) -/* 0B7C1C 800B701C 84D8000C */ lh $t8, 0xc($a2) -/* 0B7C20 800B7020 0058082A */ slt $at, $v0, $t8 -/* 0B7C24 800B7024 5420FFEF */ bnel $at, $zero, .L800B6FE4 -/* 0B7C28 800B7028 8CF80000 */ lw $t8, ($a3) -.L800B702C: -/* 0B7C2C 800B702C 03E00008 */ jr $ra -/* 0B7C30 800B7030 00000000 */ nop diff --git a/data/data_0DD0A0_2_1_0.s b/data/data_0DD0A0_2_1_0.s index d2dc6611b..b1819a606 100644 --- a/data/data_0DD0A0_2_1_0.s +++ b/data/data_0DD0A0_2_1_0.s @@ -85,615 +85,3 @@ glabel D_800E96A0 glabel D_800E96B4 .asciiz "---------------------------------------\n" .balign 4 - -glabel D_800E96E0 -.asciiz "Audio: setvol: volume minus %f\n" -.balign 4 - -glabel D_800E9700 -.asciiz "Audio: setvol: volume overflow %f\n" -.balign 4 - -glabel D_800E9724 -.asciiz "Audio: setpitch: pitch minus %f\n" -.balign 4 - -glabel D_800E9748 -.asciiz "Audio: voiceman: No bank error %d\n" -.balign 4 - -glabel D_800E976C -.asciiz "Audio: voiceman: progNo. overflow %d,%d\n" -.balign 4 - -glabel D_800E9798 -.asciiz "Audio: voiceman: progNo. undefined %d,%d\n" -.balign 4 - -glabel D_800E97C4 -.asciiz "Audio: voiceman: No bank error %d\n" -.balign 4 - -glabel D_800E97E8 -.asciiz "Audio: voiceman: Percussion Overflow %d,%d\n" -.balign 4 - -glabel D_800E9814 -.asciiz "Audio: voiceman: Percussion table pointer (bank %d) is irregular.\n" -.balign 4 - -glabel D_800E9858 -.asciiz "Audio: voiceman: Percpointer NULL %d,%d\n" -.balign 4 - -glabel D_800E9884 -.asciiz "--4 %x\n" -.balign 4 - -glabel D_800E988C -.asciiz "Stoped Voice\n" -.balign 4 - -glabel D_800E989C -.asciiz "CAUTION:SUB IS SEPARATED FROM GROUP" -.balign 4 - -glabel D_800E98C0 -.asciiz "Error:Wait Track disappear\n" -.balign 4 - -glabel D_800E98DC -.asciiz "Slow Release Batting\n" -.balign 4 - -glabel D_800E98F4 -.byte 0x40, 0x20, 0x10, 0x08 - -glabel D_800E98F8 -.asciiz "Audio:Wavemem: Bad voiceno (%d)\n" -.balign 4 - -glabel D_800E991C -.asciiz "Audio: C-Alloc : Dealloc voice is NULL\n" -.balign 4 - -glabel D_800E9944 -.asciiz "Alloc Error:Dim voice-Alloc %d" -.balign 4 - -glabel D_800E9964 -.asciiz "Error:Same List Add\n" -.balign 4 - -glabel D_800E997C -.asciiz "Already Cut\n" -.balign 4 - -glabel D_800E998C -.asciiz "Audio: C-Alloc : lowerPrio is NULL\n" -.balign 4 - -glabel D_800E99B0 -.asciiz "Sub Limited Warning: Drop Voice" -.balign 4 - -glabel D_800E99D0 -.asciiz "Warning: Drop Voice" -.balign 4 - -glabel D_800E99E4 -.asciiz "Warning: Drop Voice" -.balign 4 - -glabel D_800E99F8 -.asciiz "Warning: Drop Voice" -.balign 4 - -.balign 0x10 - -glabel D_800E9A10 -.asciiz "Env-Clear 0\n" -.balign 4 - -glabel D_800E9A20 -.asciiz "Audio:Envp: overflow %f\n" -.balign 4 - -.balign 0x10 - -glabel D_800E9A40 -.asciiz "Audio:Track:Warning: No Free Notetrack\n" -.balign 4 - -glabel D_800E9A68 -.asciiz "SUBTRACK DIM\n" -.balign 4 - -glabel D_800E9A78 -.asciiz "Audio:Track: Warning :SUBTRACK had been stolen by other Group.\n" -.balign 4 - -glabel D_800E9AB8 -.asciiz "SEQID %d,BANKID %d\n" -.balign 4 - -glabel D_800E9ACC -.asciiz "ERR:SUBTRACK %d NOT ALLOCATED\n" -.balign 4 - -glabel D_800E9AEC -.asciiz "Error:Same List Add\n" -.balign 4 - -glabel D_800E9B04 -.asciiz "Macro Level Over Error!\n" -.balign 4 - -glabel D_800E9B20 -.asciiz "Macro Level Over Error!\n" -.balign 4 - -glabel D_800E9B3C -.asciiz "WARNING: NPRG: cannot change %d\n" -.balign 4 - -glabel D_800E9B60 -.asciiz "Audio:Track:NOTE:UNDEFINED NOTE COM. %x\n" -.balign 4 - -glabel D_800E9B8C -.asciiz "Audio: Note:Velocity Error %d\n" -.balign 4 - -glabel D_800E9BAC -.asciiz "Error: Subtrack no prg.\n" -.balign 4 - -glabel D_800E9BC8 -.asciiz "ERR %x\n" -.balign 4 - -glabel D_800E9BD0 -.asciiz "Error: Your assignchannel is stolen.\n" -.balign 4 - -glabel D_800E9BF8 -.asciiz "Audio:Track :Call Macro Level Over Error!\n" -.balign 4 - -glabel D_800E9C24 -.asciiz "Audio:Track :Loops Macro Level Over Error!\n" -.balign 4 - -glabel D_800E9C50 -.asciiz "SUB:ERR:BANK %d NOT CACHED.\n" -.balign 4 - -glabel D_800E9C70 -.asciiz "SUB:ERR:BANK %d NOT CACHED.\n" -.balign 4 - -glabel D_800E9C90 -.asciiz "Audio:Track: CTBLCALL Macro Level Over Error!\n" -.balign 4 - -glabel D_800E9CC0 -.asciiz "[%2x] \n" -.balign 4 - -glabel D_800E9CC8 -.asciiz "Err :Sub %x ,address %x:Undefined SubTrack Function %x" -.balign 4 - -glabel D_800E9D00 -.asciiz "Disappear Sequence or Bank %d\n" -.balign 4 - -glabel D_800E9D20 -.asciiz "Macro Level Over Error!\n" -.balign 4 - -glabel D_800E9D3C -.asciiz "Macro Level Over Error!\n" -.balign 4 - -glabel D_800E9D58 -.asciiz "Group:Undefine upper C0h command (%x)\n" -.balign 4 - -glabel D_800E9D80 -.asciiz "Group:Undefined Command\n" -.balign 4 - -.balign 0x10 - -glabel D_800E9DA0 -.byte 0x00 - -.balign 4 - -# TODO: unused? -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800E9DB4 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800E9DC4 -.float 1.0, 1.0, 1.0, 1.0 - -glabel D_800E9DD4 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800E9DE4 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800E9DF4 -.float 0.0, 0.0, 0.0, 0.0 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800E9E14 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800E9E24 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800E9E34 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800E9E54 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800E9E64 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800E9E74 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800E9E84 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800E9E94 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800E9EA4 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800E9EB4 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800E9EC4 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800E9ED4 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800E9EE4 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800E9EF4 -.float 1.0, 1.0, 1.0, 1.0 - -glabel D_800E9F04 -.float 1.0, 1.0, 1.0, 1.0 - -glabel D_800E9F14 -.float 1.0, 1.0, 1.0, 1.0 - -glabel D_800E9F24 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -glabel D_800E9F2C -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -glabel D_800E9F34 -.float 0.0, 0.0, 0.0, 0.0 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800E9F54 -.float 0.0, 0.0, 0.0, 0.0 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800E9F74 -.byte 0x00, 0x00, 0x00, 0x00 - -glabel D_800E9F78 -.byte 0x00, 0x00, 0x00, 0x00 - -glabel D_800E9F7C -.float 0.0, 0.0, 0.0, 1.0 - -glabel D_800E9F8C -.float 1.0 - -glabel D_800E9F90 -.byte 0x00, 0x00, 0x00, 0x00 - -glabel D_800E9F94 -.float 3800.0, 3.4 -.float 0.4, -1.0, 0.4, 1100.0 -.float 630.0, 3600.0, 1.0, 0.0 -.float 0.0, 0.0, 1.0, 1.0 -.float 0.0, 3800.0, 3.4, 0.4 -.float -1.0, 0.4, 1100.0, 630.0 -.float 3600.0, 1.0, 0.0, 0.0 -.float 0.0, 1.0, 1.0, 0.0 -.float 3800.0, 3.4, 0.4, -1.0 -.float 0.4, 1100.0, 630.0, 3600.0 -.float 1.0, 0.0, 0.0, 0.0 -.float 1.0, 1.0, 0.0, 3800.0 -.float 3.4, 0.4, -1.0, 0.4 -.float 1100.0, 630.0, 3600.0, 1.0 - -.macro Entry800EA06C f0, f1, f2, b0 -.float \f0, \f1, \f2 -.byte \b0, 0x00, 0x00, 0x00 -.endm - -glabel D_800EA06C -Entry800EA06C 0.0, 1.0, 1.0, 0x0 -Entry800EA06C 0.0, 1.0, 1.0, 0x0 -Entry800EA06C 0.0, 1.0, 1.0, 0x0 -Entry800EA06C 0.0, 1.0, 1.0, 0x0 -Entry800EA06C 0.0, 1.0, 1.0, 0x0 -Entry800EA06C 0.0, 1.0, 1.0, 0x0 -Entry800EA06C 0.0, 1.0, 1.0, 0x0 -Entry800EA06C 0.0, 1.0, 1.0, 0x0 - -glabel D_800EA0EC -.byte 0x00 -glabel D_800EA0ED -.byte 0x00 -glabel D_800EA0EE -.byte 0x00 -glabel D_800EA0EF -.byte 0x00 - -glabel D_800EA0F0 -.byte 0x00, 0x00, 0x00, 0x00 - -glabel D_800EA0F4 -.byte 0x00, 0x00, 0x00, 0x00 - -.word 0x00000000, 0x00000000, 0x3f800000 - -glabel D_800EA104 -.word 0x00000000 - -glabel D_800EA108 -.word 0x00000000 - -glabel D_800EA10C -.word 0x00000000 - -glabel D_800EA110 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800EA120 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800EA130 -.float 0.0, 0.0, 0.0, 0.0 -.float 0.0, 0.0, 0.0, 0.0 - -glabel D_800EA150 -.float 1.4 - -glabel D_800EA154 -.byte 0x02, 0x02, 0x58, 0x5a, 0x03, 0x30, 0x58, 0x30 - -glabel D_800EA15C -.word 0x00000000 - -glabel D_800EA160 -.word 0x00000000 - -glabel D_800EA164 -.word 0x00000000 - -glabel D_800EA168 -.word 0x00000000 - -glabel D_800EA16C -.word 0x00000000 - -glabel D_800EA170 -.word 0x00000000 - -glabel D_800EA174 -.word 0x00000000 - -glabel D_800EA178 -.word 0x3f800000 - -glabel D_800EA17C -.word 0x3f59999a - -glabel D_800EA180 -.word 0x00000000 - -glabel D_800EA184 -.word 0x00000000 - -glabel D_800EA188 -.byte 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x06, 0x02, 0x02, 0x02, 0x02, 0x01, 0x08, 0x02, 0x02, 0x00 -.byte 0x01, 0x01, 0x08, 0x02, 0x02, 0x00, 0x01, 0x01 - -glabel D_800EA1A0 -.byte 0x04, 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x01 -.byte 0x01, 0x02, 0x02, 0x01, 0x03, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x01, 0x01, 0x00, 0x01, 0x01 - -glabel D_800EA1B8 -.word 0x00000000 - -glabel D_800EA1BC -.word 0x00000000 - -glabel D_800EA1C0 -.word 0x00000000 - -glabel D_800EA1C4 -.word 0x00000000 - -glabel D_800EA1C8 -.word 0x00000000, 0x00000000, 0x00000000 - -glabel D_800EA1D4 -.word 0x3f800000, 0x00000000 - -glabel D_800EA1DC -.word 0x00000000, 0x00000000 - -glabel D_800EA1E4 -.word 0x00000000 - -glabel D_800EA1E8 -.word 0x00000000 - -glabel D_800EA1EC -.word 0x00000000 - -glabel D_800EA1F0 -.byte 0x00, 0x01, 0x02, 0x03 - -glabel D_800EA1F4 -.byte 0x00, 0x00, 0x00, 0x00 - -.asciiz "Error : Queue is not empty ( %x ) \n" -.balign 4 - -.asciiz "specchg error\n" -.balign 4 - -.asciiz "***** CAM MAX %d *****\n" -.balign 4 - -glabel D_800EA244 -.byte 0x00, 0x00, 0x00, 0x00 - -.asciiz "entryout !!! %d\n" -.balign 4 - -.asciiz "AFTER GOAL VOICE FLAME %d\n" -.balign 4 - -.asciiz "*** Pause On ***\n" -.balign 4 - -.asciiz "*** Pause Off ***\n" -.balign 4 - -.asciiz "CALLED!! Na_ChangeSoundMode player %d\n" -.balign 4 - -.asciiz "CALLED!! Na_ChangeSoundMode spec %d\n" -.balign 4 - -.asciiz "Interfaced Spec Change player %d\n" -.balign 4 - -.asciiz "Interfaced Spec Change spec %d\n" -.balign 4 - -.word 0xff000000, 0xff000000, 0x00000000 - -.asciiz "FX MIX %d\n" -.balign 4 - -.asciiz "************** Seq Fadeout ***************\n" -.balign 4 - -.asciiz "SEQ FADE OUT TIME %d\n" -.balign 4 - -.word 0x00000000, 0x00000000, 0x00000000 - -glabel D_800EA3A0 -.byte 0x00, 0x00, 0x00, 0x00 - -glabel D_800EA3A4 -.byte 0x00, 0x00, 0x00, 0x00 - -glabel D_800EA3A8 -.word D_801937C0 - -glabel D_800EA3AC -.word D_801937D8 - -glabel D_800EA3B0 -.word D_801937F0 - -glabel D_800EA3B4 -.word D_80193808 - -.asciiz "DAC:Lost 1 Frame.\n" -.balign 4 - -.asciiz "DMA: Request queue over.( %d )\n" -.balign 4 - -.asciiz "DMA [ %d lines] TIMEOUT\n" -.balign 4 - -.asciiz "Warning: WaveDmaQ contains %d msgs.\n" -.balign 4 - -.asciiz "Audio:now-max tasklen is %d / %d\n" -.balign 4 - -.asciiz "Audio:Warning:ABI Tasklist length over (%d)\n" -.balign 4 - -glabel D_800EA484 -.word 0x00000080 - -.asciiz "AudioSend: %d -> %d (%d)\n" -.balign 4 - -glabel D_800EA4A4 -.word 0x00000000 - -.asciiz "Undefined Port Command %d\n" -.balign 4 - -.word 0x00000000, 0x00000000, 0x00000000 - -.balign 4 -glabel D_800EA4D0 -.word 0x01284fff - -glabel D_800EA4D4 -.word 0x01145fff - -glabel D_800EA4D8 -.word 0x000068b0, 0x01180100, D_800EA4D0, 0x7fff0000 -.word 0x00002a00, 0x00004600, 0x00000000, 0x00005800 -.word 0x00002800, 0x00000000, 0x000068b0, 0x01140100 -.word D_800EA4D0, 0x7fff0000, 0x00002a00, 0x00004600 -.word 0x00000000, 0x00005800, 0x00002800, 0x00000000 -.word 0x000068b0, 0x011c0100, D_800EA4D0, 0x7fff0000 -.word 0x00002a00, 0x00004600, 0x00000000, 0x00005800 -.word 0x00002800, 0x00000000, 0x000068b0, 0x011c0100 -.word D_800EA4D0, 0x7fff0000, 0x00002a00, 0x00004600 -.word 0x00000000, 0x00005800, 0x00002800, 0x00000000 -.word 0x000068b0, 0x01100100, D_800EA4D0, 0x7fff0000 -.word 0x00002a00, 0x00004600, 0x00000000, 0x00004800 -.word 0x00002000, 0x00000000, 0x000068b0, 0x01100100 -.word D_800EA4D4, 0x7fff0000, 0x00002a00, 0x00004600 -.word 0x00000000, 0x00004800, 0x00002000, 0x00000000 -.word 0x1c000000 - -glabel D_800EA5CC -.hword 0x0030, 0x0000 - -glabel D_800EA5D0 -.word 0x00048c00 - -glabel D_800EA5D4 -.word 0x00002600 - -glabel D_800EA5D8 -.word 0x00000000 - -glabel D_800EA5DC -.word 0x00000000 diff --git a/data/data_0DD0A0_2_1_1.s b/data/data_0DD0A0_2_1_1.s new file mode 100644 index 000000000..694cc10ff --- /dev/null +++ b/data/data_0DD0A0_2_1_1.s @@ -0,0 +1,500 @@ +.include "macros.inc" + +.section .rodata + +glabel D_800E9A40 +.asciiz "Audio:Track:Warning: No Free Notetrack\n" +.balign 4 + +glabel D_800E9A68 +.asciiz "SUBTRACK DIM\n" +.balign 4 + +glabel D_800E9A78 +.asciiz "Audio:Track: Warning :SUBTRACK had been stolen by other Group.\n" +.balign 4 + +glabel D_800E9AB8 +.asciiz "SEQID %d,BANKID %d\n" +.balign 4 + +glabel D_800E9ACC +.asciiz "ERR:SUBTRACK %d NOT ALLOCATED\n" +.balign 4 + +glabel D_800E9AEC +.asciiz "Error:Same List Add\n" +.balign 4 + +glabel D_800E9B04 +.asciiz "Macro Level Over Error!\n" +.balign 4 + +glabel D_800E9B20 +.asciiz "Macro Level Over Error!\n" +.balign 4 + +glabel D_800E9B3C +.asciiz "WARNING: NPRG: cannot change %d\n" +.balign 4 + +glabel D_800E9B60 +.asciiz "Audio:Track:NOTE:UNDEFINED NOTE COM. %x\n" +.balign 4 + +glabel D_800E9B8C +.asciiz "Audio: Note:Velocity Error %d\n" +.balign 4 + +glabel D_800E9BAC +.asciiz "Error: Subtrack no prg.\n" +.balign 4 + +glabel D_800E9BC8 +.asciiz "ERR %x\n" +.balign 4 + +glabel D_800E9BD0 +.asciiz "Error: Your assignchannel is stolen.\n" +.balign 4 + +glabel D_800E9BF8 +.asciiz "Audio:Track :Call Macro Level Over Error!\n" +.balign 4 + +glabel D_800E9C24 +.asciiz "Audio:Track :Loops Macro Level Over Error!\n" +.balign 4 + +glabel D_800E9C50 +.asciiz "SUB:ERR:BANK %d NOT CACHED.\n" +.balign 4 + +glabel D_800E9C70 +.asciiz "SUB:ERR:BANK %d NOT CACHED.\n" +.balign 4 + +glabel D_800E9C90 +.asciiz "Audio:Track: CTBLCALL Macro Level Over Error!\n" +.balign 4 + +glabel D_800E9CC0 +.asciiz "[%2x] \n" +.balign 4 + +glabel D_800E9CC8 +.asciiz "Err :Sub %x ,address %x:Undefined SubTrack Function %x" +.balign 4 + +glabel D_800E9D00 +.asciiz "Disappear Sequence or Bank %d\n" +.balign 4 + +glabel D_800E9D20 +.asciiz "Macro Level Over Error!\n" +.balign 4 + +glabel D_800E9D3C +.asciiz "Macro Level Over Error!\n" +.balign 4 + +glabel D_800E9D58 +.asciiz "Group:Undefine upper C0h command (%x)\n" +.balign 4 + +glabel D_800E9D80 +.asciiz "Group:Undefined Command\n" +.balign 4 + +.balign 0x10 + +glabel D_800E9DA0 +.byte 0x00 + +.balign 4 + +# TODO: unused? +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800E9DB4 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800E9DC4 +.float 1.0, 1.0, 1.0, 1.0 + +glabel D_800E9DD4 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800E9DE4 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800E9DF4 +.float 0.0, 0.0, 0.0, 0.0 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800E9E14 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800E9E24 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800E9E34 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800E9E54 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800E9E64 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800E9E74 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800E9E84 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800E9E94 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800E9EA4 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800E9EB4 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800E9EC4 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800E9ED4 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800E9EE4 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800E9EF4 +.float 1.0, 1.0, 1.0, 1.0 + +glabel D_800E9F04 +.float 1.0, 1.0, 1.0, 1.0 + +glabel D_800E9F14 +.float 1.0, 1.0, 1.0, 1.0 + +glabel D_800E9F24 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +glabel D_800E9F2C +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +glabel D_800E9F34 +.float 0.0, 0.0, 0.0, 0.0 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800E9F54 +.float 0.0, 0.0, 0.0, 0.0 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800E9F74 +.byte 0x00, 0x00, 0x00, 0x00 + +glabel D_800E9F78 +.byte 0x00, 0x00, 0x00, 0x00 + +glabel D_800E9F7C +.float 0.0, 0.0, 0.0, 1.0 + +glabel D_800E9F8C +.float 1.0 + +glabel D_800E9F90 +.byte 0x00, 0x00, 0x00, 0x00 + +glabel D_800E9F94 +.float 3800.0, 3.4 +.float 0.4, -1.0, 0.4, 1100.0 +.float 630.0, 3600.0, 1.0, 0.0 +.float 0.0, 0.0, 1.0, 1.0 +.float 0.0, 3800.0, 3.4, 0.4 +.float -1.0, 0.4, 1100.0, 630.0 +.float 3600.0, 1.0, 0.0, 0.0 +.float 0.0, 1.0, 1.0, 0.0 +.float 3800.0, 3.4, 0.4, -1.0 +.float 0.4, 1100.0, 630.0, 3600.0 +.float 1.0, 0.0, 0.0, 0.0 +.float 1.0, 1.0, 0.0, 3800.0 +.float 3.4, 0.4, -1.0, 0.4 +.float 1100.0, 630.0, 3600.0, 1.0 + +.macro Entry800EA06C f0, f1, f2, b0 +.float \f0, \f1, \f2 +.byte \b0, 0x00, 0x00, 0x00 +.endm + +glabel D_800EA06C +Entry800EA06C 0.0, 1.0, 1.0, 0x0 +Entry800EA06C 0.0, 1.0, 1.0, 0x0 +Entry800EA06C 0.0, 1.0, 1.0, 0x0 +Entry800EA06C 0.0, 1.0, 1.0, 0x0 +Entry800EA06C 0.0, 1.0, 1.0, 0x0 +Entry800EA06C 0.0, 1.0, 1.0, 0x0 +Entry800EA06C 0.0, 1.0, 1.0, 0x0 +Entry800EA06C 0.0, 1.0, 1.0, 0x0 + +glabel D_800EA0EC +.byte 0x00 +glabel D_800EA0ED +.byte 0x00 +glabel D_800EA0EE +.byte 0x00 +glabel D_800EA0EF +.byte 0x00 + +glabel D_800EA0F0 +.byte 0x00, 0x00, 0x00, 0x00 + +glabel D_800EA0F4 +.byte 0x00, 0x00, 0x00, 0x00 + +.word 0x00000000, 0x00000000, 0x3f800000 + +glabel D_800EA104 +.word 0x00000000 + +glabel D_800EA108 +.word 0x00000000 + +glabel D_800EA10C +.word 0x00000000 + +glabel D_800EA110 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800EA120 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800EA130 +.float 0.0, 0.0, 0.0, 0.0 +.float 0.0, 0.0, 0.0, 0.0 + +glabel D_800EA150 +.float 1.4 + +glabel D_800EA154 +.byte 0x02, 0x02, 0x58, 0x5a, 0x03, 0x30, 0x58, 0x30 + +glabel D_800EA15C +.word 0x00000000 + +glabel D_800EA160 +.word 0x00000000 + +glabel D_800EA164 +.word 0x00000000 + +glabel D_800EA168 +.word 0x00000000 + +glabel D_800EA16C +.word 0x00000000 + +glabel D_800EA170 +.word 0x00000000 + +glabel D_800EA174 +.word 0x00000000 + +glabel D_800EA178 +.word 0x3f800000 + +glabel D_800EA17C +.word 0x3f59999a + +glabel D_800EA180 +.word 0x00000000 + +glabel D_800EA184 +.word 0x00000000 + +glabel D_800EA188 +.byte 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x06, 0x02, 0x02, 0x02, 0x02, 0x01, 0x08, 0x02, 0x02, 0x00 +.byte 0x01, 0x01, 0x08, 0x02, 0x02, 0x00, 0x01, 0x01 + +glabel D_800EA1A0 +.byte 0x04, 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x01 +.byte 0x01, 0x02, 0x02, 0x01, 0x03, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x01, 0x01, 0x00, 0x01, 0x01 + +glabel D_800EA1B8 +.word 0x00000000 + +glabel D_800EA1BC +.word 0x00000000 + +glabel D_800EA1C0 +.word 0x00000000 + +glabel D_800EA1C4 +.word 0x00000000 + +glabel D_800EA1C8 +.word 0x00000000, 0x00000000, 0x00000000 + +glabel D_800EA1D4 +.word 0x3f800000, 0x00000000 + +glabel D_800EA1DC +.word 0x00000000, 0x00000000 + +glabel D_800EA1E4 +.word 0x00000000 + +glabel D_800EA1E8 +.word 0x00000000 + +glabel D_800EA1EC +.word 0x00000000 + +glabel D_800EA1F0 +.byte 0x00, 0x01, 0x02, 0x03 + +glabel D_800EA1F4 +.byte 0x00, 0x00, 0x00, 0x00 + +.asciiz "Error : Queue is not empty ( %x ) \n" +.balign 4 + +.asciiz "specchg error\n" +.balign 4 + +.asciiz "***** CAM MAX %d *****\n" +.balign 4 + +glabel D_800EA244 +.byte 0x00, 0x00, 0x00, 0x00 + +.asciiz "entryout !!! %d\n" +.balign 4 + +.asciiz "AFTER GOAL VOICE FLAME %d\n" +.balign 4 + +.asciiz "*** Pause On ***\n" +.balign 4 + +.asciiz "*** Pause Off ***\n" +.balign 4 + +.asciiz "CALLED!! Na_ChangeSoundMode player %d\n" +.balign 4 + +.asciiz "CALLED!! Na_ChangeSoundMode spec %d\n" +.balign 4 + +.asciiz "Interfaced Spec Change player %d\n" +.balign 4 + +.asciiz "Interfaced Spec Change spec %d\n" +.balign 4 + +.word 0xff000000, 0xff000000, 0x00000000 + +.asciiz "FX MIX %d\n" +.balign 4 + +.asciiz "************** Seq Fadeout ***************\n" +.balign 4 + +.asciiz "SEQ FADE OUT TIME %d\n" +.balign 4 + +.word 0x00000000, 0x00000000, 0x00000000 + +glabel D_800EA3A0 +.byte 0x00, 0x00, 0x00, 0x00 + +glabel D_800EA3A4 +.byte 0x00, 0x00, 0x00, 0x00 + +glabel D_800EA3A8 +.word D_801937C0 + +glabel D_800EA3AC +.word D_801937D8 + +glabel D_800EA3B0 +.word D_801937F0 + +glabel D_800EA3B4 +.word D_80193808 + +.asciiz "DAC:Lost 1 Frame.\n" +.balign 4 + +.asciiz "DMA: Request queue over.( %d )\n" +.balign 4 + +.asciiz "DMA [ %d lines] TIMEOUT\n" +.balign 4 + +.asciiz "Warning: WaveDmaQ contains %d msgs.\n" +.balign 4 + +.asciiz "Audio:now-max tasklen is %d / %d\n" +.balign 4 + +.asciiz "Audio:Warning:ABI Tasklist length over (%d)\n" +.balign 4 + +glabel D_800EA484 +.word 0x00000080 + +.asciiz "AudioSend: %d -> %d (%d)\n" +.balign 4 + +glabel D_800EA4A4 +.word 0x00000000 + +.asciiz "Undefined Port Command %d\n" +.balign 4 + +.word 0x00000000, 0x00000000, 0x00000000 + +.balign 4 +glabel D_800EA4D0 +.word 0x01284fff + +glabel D_800EA4D4 +.word 0x01145fff + +glabel D_800EA4D8 +.word 0x000068b0, 0x01180100, D_800EA4D0, 0x7fff0000 +.word 0x00002a00, 0x00004600, 0x00000000, 0x00005800 +.word 0x00002800, 0x00000000, 0x000068b0, 0x01140100 +.word D_800EA4D0, 0x7fff0000, 0x00002a00, 0x00004600 +.word 0x00000000, 0x00005800, 0x00002800, 0x00000000 +.word 0x000068b0, 0x011c0100, D_800EA4D0, 0x7fff0000 +.word 0x00002a00, 0x00004600, 0x00000000, 0x00005800 +.word 0x00002800, 0x00000000, 0x000068b0, 0x011c0100 +.word D_800EA4D0, 0x7fff0000, 0x00002a00, 0x00004600 +.word 0x00000000, 0x00005800, 0x00002800, 0x00000000 +.word 0x000068b0, 0x01100100, D_800EA4D0, 0x7fff0000 +.word 0x00002a00, 0x00004600, 0x00000000, 0x00004800 +.word 0x00002000, 0x00000000, 0x000068b0, 0x01100100 +.word D_800EA4D4, 0x7fff0000, 0x00002a00, 0x00004600 +.word 0x00000000, 0x00004800, 0x00002000, 0x00000000 +.word 0x1c000000 + +glabel D_800EA5CC +.hword 0x0030, 0x0000 + +glabel D_800EA5D0 +.word 0x00048c00 + +glabel D_800EA5D4 +.word 0x00002600 + +glabel D_800EA5D8 +.word 0x00000000 + +glabel D_800EA5DC +.word 0x00000000 diff --git a/data/rodata_audio.s b/data/rodata_audio.s index 87aa05f73..f1753b146 100644 --- a/data/rodata_audio.s +++ b/data/rodata_audio.s @@ -25,540 +25,3 @@ glabel D_800F2EA4 glabel D_800F2EA8 .float 16.713 -.word 0x00000000 - -glabel D_800F2EB0 -.float 0.707 - -glabel D_800F2EB4 -.float 4095.999 - -glabel D_800F2EB8 -.float 1.9999599 - -glabel D_800F2EBC -.float 3.9999199 - -glabel D_800F2EC0 -.float 1.9999599 - -glabel D_800F2EC4 -.float 1.0465 - -glabel D_800F2EC8 -.float 0.52325 - -glabel D_800F2ECC -.float 0.26263 - -glabel D_800F2ED0 -.float 0.13081 - -.word 0x00000000, 0x00000000, 0x00000000 - -# new file audio/effects.c -glabel jpt_800F2EE0 -.word L800BE60C, L800BE618, L800BE62C, L800BE638 -.word L800BE794, L800BE864, L800BE7C4, L800BE7C4 -.word L800BE844 - -glabel D_800F2F04 -.float 32767.0 - -glabel D_800F2F08 -.float 0.00001 -.word 0x00000000 - -glabel jpt_800F2F10 -.word L800BF3E8, L800BF600, L800BF600, L800BF380 -.word L800BF348, L800BF600, L800BF600, L800BF3C8 -.word L800BF308, L800BF600, L800BF600, L800BF2D0 - -glabel jpt_800F2F40 -.word L800BF408, L800BF450, L800BF4B0, L800BF478 -.word L800BF478, L800BF4C4, L800BF534, L800BF5BC -.word L800BF450, L800BF408, L800BF5C4, L800BF5F0 - -glabel D_800F2F70 -.float 16129.0 - -glabel D_800F2F74 -.float 16129.0 - -glabel D_800F2F78 -.float 16129.0 - -glabel jpt_800F2F7C -.word L800BFA20, L800BFA28, L800BFA20, L800BFA28 -.word L800BFA20 - - - - - - - - - - - - - - - - - - - - - -glabel jpt_800F2F90 -.word L800C0124, L800C0078, L800C0140, L800C0150 -.word L800C0094, L800C035C, L800C03B4, L800C03EC -.word L800C03EC, L800C0438, L800C0448, L800C03EC -.word L800BFE40, L800BFE40, L800BFE40, L800C0468 -.word L800C048C, L800C049C, L800C01E8, L800C034C -.word L800BFE40, L800BFE40, L800C02B4, L800C0298 -.word L800C0288, L800C026C, L800C0254, L800C0238 -.word L800C021C, L800C01B4, L800C0160, L800C0184 -.word L800C0304, L800C02D0, L800C0338, L800C04BC -.word L800C04AC, L800C0518, L800C0528, L800C0590 -.word L800C0630, L800BFEC4, L800C00D0, L800C0608 -.word L800BFE40, L800BFE40, L800C0640, L800C0068 -.word L800C0040, L800BFFF8, L800BFFF8, L800BFFF8 -.word L800BFFA0, L800BFF90, L800BFF48, L800BFF10 -.word L800BFFA0, L800BFFA0, L800BFFA0, L800BFED4 -.word L800BFEB4, L800C0880, L800BFE7C - -glabel jpt_800F308C -.word L800C0684, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C07E4, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0814, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0830, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0858, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C06EC, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0708, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C06BC, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C06CC, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0714, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C0760, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 -.word L800C077C - -glabel jpt_800F3350 -.word L800C0FF4, L800C0FE4, L800C0AE8, L800C0AE8 -.word L800C0FD4, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0FC4, L800C0F98, L800C0F98, L800C0F88 -.word L800C0F78, L800C0F4C, L800C0F30, L800C0F14 -.word L800C0AE8, L800C0EE8, L800C0DD4, L800C0E50 -.word L800C0D50, L800C0D50, L800C0D30, L800C0D2C -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0D1C, L800C0CF4, L800C0CAC, L800C0CAC -.word L800C0CAC, L800C0C54, L800C0AE8, L800C0C0C -.word L800C0BD4, L800C0C54, L800C0C54, L800C0C54 -.word L800C0B90, L800C0AE8, L800C0AE8, L800C0AE8 - -glabel jpt_800F3430 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C1084, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C1090, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C1098, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C10A0, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 -.word L800C0AE8 - -.word 0x00000000, 0x00000000, 0x00000000 - -glabel D_800F35C0 -.float 3.333333333 - -glabel jpt_800F35C4 -.word L800C1A34, L800C1A34, L800C1A34, L800C1A34 -.word L800C1AEC, L800C1A34 - -glabel D_800F35DC -.float 0.1 - -glabel D_800F35E0 -.float 100000.0 - -glabel D_800F35E4 -.float 100000.0 - -glabel D_800F35E8 -.float 0.85 - -glabel jpt_800F35EC -.word L800C2A80, L800C2AB8, L800C2AD8, L800C2CDC -.word L800C2E40, L800C2F04, L800C3008, L800C3118 -.word L800C3154, L800C31E4, L800C3218, L800C32B8 -.word L800C32EC, L800C3430, L800C3390, L800C33E0 - -glabel jpt_800F362C -.word L800C3DEC, L800C3E10, L800C3E30, L800C3E70 -.word L800C3E98, L800C3EBC, L800C3F04 - -glabel D_800F3648 -.float 100000.0 - -glabel jpt_800F364C -.word L800C423C, L800C4268, L800C42A4, L800C42C8 -.word L800C42FC, L800C4330 - -glabel D_800F3664 -.float 100000.0 - -glabel D_800F3668 -.float 100000.0 - -glabel D_800F366C -.float 4000000.0 - -glabel D_800F3670 -.float 10000000000.0 - -glabel D_800F3674 -.float 0.6 - -glabel D_800F3678 -.float 0.4 - -glabel D_800F367C -.float 0.005000 - -glabel D_800F3680 -.float 0.01 - -glabel D_800F3684 -.float 12000.0 - -glabel D_800F3688 -.float 0.03 - -glabel D_800F368C -.float 0.03 - -glabel D_800F3690 -.float 0.4 - -glabel jpt_800F3694 -.word L800C6544, L800C6618, L800C64E4, L800C65B8 -.word L800C65B8, L800C65B8, L800C65B8, L800C65B8 -.word L800C65B8, L800C65B8, L800C65B8, L800C65B8 -.word L800C6544, L800C6544, L800C6618, L800C6618 -.word L800C6544, L800C6618, L800C6618, L800C6618 -.word L800C6618, L800C65B8, L800C65B8, L800C65B8 -.word L800C6618, L800C6618, L800C6618, L800C6618 -.word L800C65B8, L800C65B8, L800C65B8 - -glabel D_800F3710 -.float 0.2 - -glabel D_800F3714 -.float 3500.0 - -glabel D_800F3718 -.float 3000.0 - -glabel D_800F371C -.float 0.4 - -glabel D_800F3720 -.float 0.2 - -glabel D_800F3724 -.float 0.06 - -glabel D_800F3728 -.float 0.56 - -glabel D_800F372C -.float 0.9 - -glabel D_800F3730 -.float 0.6 - -glabel D_800F3734 -.float 13000.0 - -glabel D_800F3738 -.float 0.95 - -glabel jpt_800F373C -.word L800C69C8, L800C6A0C, L800C6910, L800C6C74 -.word L800C6CB8, L800C6CFC, L800C6D40, L800C6D84 -.word L800C6DC8, L800C6E0C, L800C6E50, L800C6E94 -.word L800C6FA4, L800C6E0C, L800C6A98, L800C6ADC -.word L800C6A50, L800C6958, L800C6990, L800C6B20 -.word L800C7070, L800C6FA4, L800C6FE8, L800C702C -.word L800C6B64, L800C6BA8, L800C6BEC, L800C6C30 -.word L800C6ED8, L800C6F1C, L800C6F60 - -glabel D_800F37B8 -.float 3500.0 - -glabel jpt_800F37BC -.word L800C718C, L800C7198, L800C71B0, L800C71BC -.word L800C71A4, L800C71F4, L800C71F4, L800C71C8 -.word L800C71F4, L800C71F4, L800C71F4, L800C71F4 -.word L800C71EC, L800C71F4, L800C71D4, L800C71E0 - -glabel jpt_800F37FC -.word L800C7238, L800C7244, L800C725C, L800C7268 -.word L800C7250, L800C7294, L800C7294, L800C7274 -.word L800C7294, L800C7294, L800C7294, L800C7294 -.word L800C7290, L800C7294, L800C7280, L800C7288 - -glabel jpt_800F383C -.word L800C72F8, L800C72B8, L800C742C, L800C73B8 -.word L800C7378, L800C742C, L800C7338, L800C7428 -.word L800C742C, L800C7418, L800C7420 - -glabel jpt_800F3868 -.word L800C7494, L800C7454, L800C75C8, L800C7554 -.word L800C7514, L800C75C8, L800C74D4, L800C75C4 -.word L800C75C8, L800C75B4, L800C75BC - -glabel D_800F3894 -.float 0.7 - -glabel D_800F3898 -.float 0.1 - -glabel D_800F389C -.float 0.03 - -glabel D_800F38A0 -.float 0.16 - -glabel D_800F38A4 -.float 0.15 - -glabel D_800F38A8 -.float 0.03 - -glabel D_800F38AC -.float 0.012000 - -glabel D_800F38B0 -.float 0.85 - -glabel D_800F38B4 -.float 0.85 - -glabel jpt_800F38B8 -.word L800C9560, L800C9560, L800C95BC, L800C9618 -.word L800C9674, L800C96D0, L800C95BC, L800C96D0 - -glabel D_800F38D8 -.float 0.35 - -glabel D_800F38DC -.float 2.800000 - -glabel D_800F38E0 -.float 3844.0 - -glabel D_800F38E4 -.float -0.8 - -glabel D_800F38E8 -.float 1568.979614 - -glabel D_800F38EC -.float 1067.777832 - -glabel D_800F38F0 -.float 2766.064941 - -glabel D_800F38F4 -.float 0.6 - -glabel D_800F38F8 -.float 3.200000 - -glabel D_800F38FC -.float 3844.0 - -glabel D_800F3900 -.float -1.700000 - -glabel D_800F3904 -.float 1478.461548 - -glabel D_800F3908 -.float 784.489807 - -glabel D_800F390C -.float 12813.334961 - -glabel D_800F3910 -.float 0.6 - -glabel D_800F3914 -.float 2.800000 - -glabel D_800F3918 -.float 3844.0 - -glabel D_800F391C -.float -0.6 - -glabel D_800F3920 -.float 1747.272827 - -glabel D_800F3924 -.float 1130.588257 - -glabel D_800F3928 -.float 3844.000977 - -glabel D_800F392C -.float 0.2 - -glabel D_800F3930 -.float 3844.0 - -glabel D_800F3934 -.float -0.4 - -glabel D_800F3938 -.float 2135.555664 - -glabel D_800F393C -.float 1601.666626 - -glabel D_800F3940 -.float 3203.333008 - -glabel D_800F3944 -.float 0.4 - -glabel D_800F3948 -.float 2.400000 - -glabel D_800F394C -.float 3844.0 - -glabel D_800F3950 -.float -0.8 - -glabel D_800F3954 -.float 1922.0 - -glabel D_800F3958 -.float 1201.250000 - -glabel D_800F395C -.float 4805.0 - -glabel jpt_800F3960 -.word L800C9B3C, L800C9B3C, L800C9B68, L800C9B94 -.word L800C9BC0, L800C9BEC, L800C9B68, L800C9BEC - -glabel D_800F3980 -.float 0.35 - -glabel D_800F3984 -.float 1568.979614 - -glabel D_800F3988 -.float 0.6 - -glabel D_800F398C -.float 1478.461548 - -glabel D_800F3990 -.float 0.6 - -glabel D_800F3994 -.float 1747.272827 - -glabel D_800F3998 -.float 0.2 - -glabel D_800F399C -.float 2135.555664 - -glabel D_800F39A0 -.float 0.4 - -glabel D_800F39A4 -.float 1922.0 - -glabel D_800F39A8 -.float 0.55 - -glabel D_800F39AC -.float 0.45 - -glabel D_800F39B0 -.float 0.7 - -glabel D_800F39B4 -.float 0.1 - -.balign 16 - -glabel jpt_800F39C0 -.word L800CBE60, L800CBE78, L800CBE90, L800CBEA8 -.word L800CBEC0, L800CBECC, L800CBF08, L800CBEEC - - -# guRotateF rodata -#glabel D_800F39E0 -#.float 0.017453292 -#.balign 16 diff --git a/data/rodata_audio_2.s b/data/rodata_audio_2.s new file mode 100644 index 000000000..bcbf7b4a6 --- /dev/null +++ b/data/rodata_audio_2.s @@ -0,0 +1,497 @@ +.include "macros.inc" + +.section .rodata + +glabel jpt_800F2F10 +.word L800BF3E8, L800BF600, L800BF600, L800BF380 +.word L800BF348, L800BF600, L800BF600, L800BF3C8 +.word L800BF308, L800BF600, L800BF600, L800BF2D0 + +glabel jpt_800F2F40 +.word L800BF408, L800BF450, L800BF4B0, L800BF478 +.word L800BF478, L800BF4C4, L800BF534, L800BF5BC +.word L800BF450, L800BF408, L800BF5C4, L800BF5F0 + +glabel D_800F2F70 +.float 16129.0 + +glabel D_800F2F74 +.float 16129.0 + +glabel D_800F2F78 +.float 16129.0 + +glabel jpt_800F2F7C +.word L800BFA20, L800BFA28, L800BFA20, L800BFA28 +.word L800BFA20 + + + + + + + + + + + + + + + + + + + + + +glabel jpt_800F2F90 +.word L800C0124, L800C0078, L800C0140, L800C0150 +.word L800C0094, L800C035C, L800C03B4, L800C03EC +.word L800C03EC, L800C0438, L800C0448, L800C03EC +.word L800BFE40, L800BFE40, L800BFE40, L800C0468 +.word L800C048C, L800C049C, L800C01E8, L800C034C +.word L800BFE40, L800BFE40, L800C02B4, L800C0298 +.word L800C0288, L800C026C, L800C0254, L800C0238 +.word L800C021C, L800C01B4, L800C0160, L800C0184 +.word L800C0304, L800C02D0, L800C0338, L800C04BC +.word L800C04AC, L800C0518, L800C0528, L800C0590 +.word L800C0630, L800BFEC4, L800C00D0, L800C0608 +.word L800BFE40, L800BFE40, L800C0640, L800C0068 +.word L800C0040, L800BFFF8, L800BFFF8, L800BFFF8 +.word L800BFFA0, L800BFF90, L800BFF48, L800BFF10 +.word L800BFFA0, L800BFFA0, L800BFFA0, L800BFED4 +.word L800BFEB4, L800C0880, L800BFE7C + +glabel jpt_800F308C +.word L800C0684, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800C07E4, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800C0814, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800C0830, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800C0858, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800C06EC, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800C0708, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800C06BC, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800C06CC, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800C0714, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800C0760, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800BFE40, L800BFE40, L800BFE40, L800BFE40 +.word L800C077C + +glabel jpt_800F3350 +.word L800C0FF4, L800C0FE4, L800C0AE8, L800C0AE8 +.word L800C0FD4, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0FC4, L800C0F98, L800C0F98, L800C0F88 +.word L800C0F78, L800C0F4C, L800C0F30, L800C0F14 +.word L800C0AE8, L800C0EE8, L800C0DD4, L800C0E50 +.word L800C0D50, L800C0D50, L800C0D30, L800C0D2C +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0D1C, L800C0CF4, L800C0CAC, L800C0CAC +.word L800C0CAC, L800C0C54, L800C0AE8, L800C0C0C +.word L800C0BD4, L800C0C54, L800C0C54, L800C0C54 +.word L800C0B90, L800C0AE8, L800C0AE8, L800C0AE8 + +glabel jpt_800F3430 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C1084, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C1090, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C1098, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C10A0, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8, L800C0AE8, L800C0AE8, L800C0AE8 +.word L800C0AE8 + +.word 0x00000000, 0x00000000, 0x00000000 + +glabel D_800F35C0 +.float 3.333333333 + +glabel jpt_800F35C4 +.word L800C1A34, L800C1A34, L800C1A34, L800C1A34 +.word L800C1AEC, L800C1A34 + +glabel D_800F35DC +.float 0.1 + +glabel D_800F35E0 +.float 100000.0 + +glabel D_800F35E4 +.float 100000.0 + +glabel D_800F35E8 +.float 0.85 + +glabel jpt_800F35EC +.word L800C2A80, L800C2AB8, L800C2AD8, L800C2CDC +.word L800C2E40, L800C2F04, L800C3008, L800C3118 +.word L800C3154, L800C31E4, L800C3218, L800C32B8 +.word L800C32EC, L800C3430, L800C3390, L800C33E0 + +glabel jpt_800F362C +.word L800C3DEC, L800C3E10, L800C3E30, L800C3E70 +.word L800C3E98, L800C3EBC, L800C3F04 + +glabel D_800F3648 +.float 100000.0 + +glabel jpt_800F364C +.word L800C423C, L800C4268, L800C42A4, L800C42C8 +.word L800C42FC, L800C4330 + +glabel D_800F3664 +.float 100000.0 + +glabel D_800F3668 +.float 100000.0 + +glabel D_800F366C +.float 4000000.0 + +glabel D_800F3670 +.float 10000000000.0 + +glabel D_800F3674 +.float 0.6 + +glabel D_800F3678 +.float 0.4 + +glabel D_800F367C +.float 0.005000 + +glabel D_800F3680 +.float 0.01 + +glabel D_800F3684 +.float 12000.0 + +glabel D_800F3688 +.float 0.03 + +glabel D_800F368C +.float 0.03 + +glabel D_800F3690 +.float 0.4 + +glabel jpt_800F3694 +.word L800C6544, L800C6618, L800C64E4, L800C65B8 +.word L800C65B8, L800C65B8, L800C65B8, L800C65B8 +.word L800C65B8, L800C65B8, L800C65B8, L800C65B8 +.word L800C6544, L800C6544, L800C6618, L800C6618 +.word L800C6544, L800C6618, L800C6618, L800C6618 +.word L800C6618, L800C65B8, L800C65B8, L800C65B8 +.word L800C6618, L800C6618, L800C6618, L800C6618 +.word L800C65B8, L800C65B8, L800C65B8 + +glabel D_800F3710 +.float 0.2 + +glabel D_800F3714 +.float 3500.0 + +glabel D_800F3718 +.float 3000.0 + +glabel D_800F371C +.float 0.4 + +glabel D_800F3720 +.float 0.2 + +glabel D_800F3724 +.float 0.06 + +glabel D_800F3728 +.float 0.56 + +glabel D_800F372C +.float 0.9 + +glabel D_800F3730 +.float 0.6 + +glabel D_800F3734 +.float 13000.0 + +glabel D_800F3738 +.float 0.95 + +glabel jpt_800F373C +.word L800C69C8, L800C6A0C, L800C6910, L800C6C74 +.word L800C6CB8, L800C6CFC, L800C6D40, L800C6D84 +.word L800C6DC8, L800C6E0C, L800C6E50, L800C6E94 +.word L800C6FA4, L800C6E0C, L800C6A98, L800C6ADC +.word L800C6A50, L800C6958, L800C6990, L800C6B20 +.word L800C7070, L800C6FA4, L800C6FE8, L800C702C +.word L800C6B64, L800C6BA8, L800C6BEC, L800C6C30 +.word L800C6ED8, L800C6F1C, L800C6F60 + +glabel D_800F37B8 +.float 3500.0 + +glabel jpt_800F37BC +.word L800C718C, L800C7198, L800C71B0, L800C71BC +.word L800C71A4, L800C71F4, L800C71F4, L800C71C8 +.word L800C71F4, L800C71F4, L800C71F4, L800C71F4 +.word L800C71EC, L800C71F4, L800C71D4, L800C71E0 + +glabel jpt_800F37FC +.word L800C7238, L800C7244, L800C725C, L800C7268 +.word L800C7250, L800C7294, L800C7294, L800C7274 +.word L800C7294, L800C7294, L800C7294, L800C7294 +.word L800C7290, L800C7294, L800C7280, L800C7288 + +glabel jpt_800F383C +.word L800C72F8, L800C72B8, L800C742C, L800C73B8 +.word L800C7378, L800C742C, L800C7338, L800C7428 +.word L800C742C, L800C7418, L800C7420 + +glabel jpt_800F3868 +.word L800C7494, L800C7454, L800C75C8, L800C7554 +.word L800C7514, L800C75C8, L800C74D4, L800C75C4 +.word L800C75C8, L800C75B4, L800C75BC + +glabel D_800F3894 +.float 0.7 + +glabel D_800F3898 +.float 0.1 + +glabel D_800F389C +.float 0.03 + +glabel D_800F38A0 +.float 0.16 + +glabel D_800F38A4 +.float 0.15 + +glabel D_800F38A8 +.float 0.03 + +glabel D_800F38AC +.float 0.012000 + +glabel D_800F38B0 +.float 0.85 + +glabel D_800F38B4 +.float 0.85 + +glabel jpt_800F38B8 +.word L800C9560, L800C9560, L800C95BC, L800C9618 +.word L800C9674, L800C96D0, L800C95BC, L800C96D0 + +glabel D_800F38D8 +.float 0.35 + +glabel D_800F38DC +.float 2.800000 + +glabel D_800F38E0 +.float 3844.0 + +glabel D_800F38E4 +.float -0.8 + +glabel D_800F38E8 +.float 1568.979614 + +glabel D_800F38EC +.float 1067.777832 + +glabel D_800F38F0 +.float 2766.064941 + +glabel D_800F38F4 +.float 0.6 + +glabel D_800F38F8 +.float 3.200000 + +glabel D_800F38FC +.float 3844.0 + +glabel D_800F3900 +.float -1.700000 + +glabel D_800F3904 +.float 1478.461548 + +glabel D_800F3908 +.float 784.489807 + +glabel D_800F390C +.float 12813.334961 + +glabel D_800F3910 +.float 0.6 + +glabel D_800F3914 +.float 2.800000 + +glabel D_800F3918 +.float 3844.0 + +glabel D_800F391C +.float -0.6 + +glabel D_800F3920 +.float 1747.272827 + +glabel D_800F3924 +.float 1130.588257 + +glabel D_800F3928 +.float 3844.000977 + +glabel D_800F392C +.float 0.2 + +glabel D_800F3930 +.float 3844.0 + +glabel D_800F3934 +.float -0.4 + +glabel D_800F3938 +.float 2135.555664 + +glabel D_800F393C +.float 1601.666626 + +glabel D_800F3940 +.float 3203.333008 + +glabel D_800F3944 +.float 0.4 + +glabel D_800F3948 +.float 2.400000 + +glabel D_800F394C +.float 3844.0 + +glabel D_800F3950 +.float -0.8 + +glabel D_800F3954 +.float 1922.0 + +glabel D_800F3958 +.float 1201.250000 + +glabel D_800F395C +.float 4805.0 + +glabel jpt_800F3960 +.word L800C9B3C, L800C9B3C, L800C9B68, L800C9B94 +.word L800C9BC0, L800C9BEC, L800C9B68, L800C9BEC + +glabel D_800F3980 +.float 0.35 + +glabel D_800F3984 +.float 1568.979614 + +glabel D_800F3988 +.float 0.6 + +glabel D_800F398C +.float 1478.461548 + +glabel D_800F3990 +.float 0.6 + +glabel D_800F3994 +.float 1747.272827 + +glabel D_800F3998 +.float 0.2 + +glabel D_800F399C +.float 2135.555664 + +glabel D_800F39A0 +.float 0.4 + +glabel D_800F39A4 +.float 1922.0 + +glabel D_800F39A8 +.float 0.55 + +glabel D_800F39AC +.float 0.45 + +glabel D_800F39B0 +.float 0.7 + +glabel D_800F39B4 +.float 0.1 + +.balign 16 + +glabel jpt_800F39C0 +.word L800CBE60, L800CBE78, L800CBE90, L800CBEA8 +.word L800CBEC0, L800CBECC, L800CBF08, L800CBEEC + + +# guRotateF rodata +#glabel D_800F39E0 +#.float 0.017453292 +#.balign 16 diff --git a/mk64.ld b/mk64.ld index 1024f3bdf..7354592a8 100644 --- a/mk64.ld +++ b/mk64.ld @@ -237,8 +237,11 @@ SECTIONS BUILD_DIR/src/code_800B45E0.o(.data); BUILD_DIR/data/data_800E8700.o(.data); BUILD_DIR/data/data_audio.o(.data); - BUILD_DIR/src/audio/load.o(.rodata*); + BUILD_DIR/src/audio/load.o(.data); BUILD_DIR/data/data_0DD0A0_2_1_0.o(.rodata); + BUILD_DIR/src/audio/playback.o(.data); + BUILD_DIR/src/audio/effects.o(.data); + BUILD_DIR/data/data_0DD0A0_2_1_1.o(.rodata); BUILD_DIR/src/os/osInitialize.o(.data*); BUILD_DIR/src/os/osCreateViManager.o(.data); BUILD_DIR/src/os/osViTable.o(.data); @@ -266,6 +269,9 @@ SECTIONS BUILD_DIR/src/menus.o(.rodata); BUILD_DIR/src/code_800B45E0.o(.rodata); BUILD_DIR/data/rodata_audio.o(.rodata); + BUILD_DIR/src/audio/playback.o(.rodata); + BUILD_DIR/src/audio/effects.o(.rodata); + BUILD_DIR/data/rodata_audio_2.o(.rodata); BUILD_DIR/src/os/guRotateF.o(.rodata); BUILD_DIR/src/os/guPerspectiveF.o(.rodata); BUILD_DIR/data/data_0DD0A0_3_1.o(.rodata); @@ -351,7 +357,6 @@ SECTIONS BUILD_DIR/src/framebuffers.o(.bss*); BUILD_DIR/src/audio/synthesis.o(.bss*); BUILD_DIR/asm/bss_audio.o(.bss*); - . = ALIGN(0x8); BUILD_DIR/asm/bss_sptask_audio.o(.bss); } END_NOLOAD(code_8028DF00) diff --git a/rename_sym.sh b/rename_sym.sh index 14bc9e53e..f39cb4562 100755 --- a/rename_sym.sh +++ b/rename_sym.sh @@ -10,4 +10,4 @@ fi #echo "Replace $1 with $2?" #read -grep -rl "$1" asm/**/*.s data/*.s src/*.c src/*.h src/os/*.{c,h} undefined_syms.txt | xargs sed -i "s/\b$1\b/$2/g" +grep -rl "$1" asm/**/*.s data/*.s src/*.c src/audio/*.c src/*.h src/os/*.{c,h} undefined_syms.txt | xargs sed -i "s/\b$1\b/$2/g" diff --git a/src/audio/data.c b/src/audio/data.c index c0e12c35f..25f05a007 100644 --- a/src/audio/data.c +++ b/src/audio/data.c @@ -346,8 +346,8 @@ struct AdsrEnvelope gDefaultEnvelope[] = { // TODO 0x00000000800f624c fill2 u32 fill2 = 0x00000000; -struct NoteSub gZeroNoteSub = { 0 }; -struct NoteSub gDefaultNoteSub = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL } }; +struct NoteSubEu gZeroNoteSub = { 0 }; +struct NoteSubEu gDefaultNoteSub = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL } }; u16 gHeadsetPanQuantization[0x10] = { 0x40, 0x40, 0x30, 0x30, 0x20, 0x20, 0x10, 0, 0, 0, diff --git a/src/audio/data.h b/src/audio/data.h index 9dddc3e81..dd87947a4 100644 --- a/src/audio/data.h +++ b/src/audio/data.h @@ -7,9 +7,29 @@ #define AUDIO_LOCK_NOT_LOADING 0x76557364 #define AUDIO_LOCK_LOADING 0x19710515 -extern struct AdsrEnvelope gDefaultEnvelope[3]; - // number of DMAs performed during this frame extern s32 gCurrAudioFrameDmaCount; +extern s16 sSawtoothWaves[256]; +extern s16 sTriangleWaves[256]; +extern s16 sSineWaves[256]; +extern s16 sSquareWaves[256]; +extern s16 sUnknownWave6[256]; +extern s16 gUnknownWave7[256]; +extern s16 *gWaveSamples[6]; +extern u32 fill[2]; +extern f32 gPitchBendFrequencyScale[256]; +extern f32 gNoteFrequencies[128]; +extern u8 gDefaultShortNoteVelocityTable[16]; +extern u8 gDefaultShortNoteDurationTable[16]; +extern struct AdsrEnvelope gDefaultEnvelope[]; +extern u32 fill2; +extern struct NoteSubEu gZeroNoteSub; +extern struct NoteSubEu gDefaultNoteSub; +extern u16 gHeadsetPanQuantization[0x10]; +extern s32 gUnknownData_800F6290[32]; +extern f32 gHeadsetPanVolume[128]; +extern f32 gStereoPanVolume[128]; +extern f32 gDefaultPanVolume[128]; + #endif diff --git a/src/audio/effects.c b/src/audio/effects.c index f12a4c0e4..d8003ef1a 100644 --- a/src/audio/effects.c +++ b/src/audio/effects.c @@ -1,433 +1,325 @@ #include #include -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BDE50(void *arg0, s32 arg1) { - f32 temp_f0; - s32 temp_a2; - u32 temp_v0_2; - void *temp_v0; - void *temp_v1; - f32 phi_f0; - void *phi_a3; - s32 phi_a2; +#include "audio/seqplayer.h" +#include "audio/effects.h" +#include "audio/internal.h" +#include "audio/load.h" +#include "audio/data.h" - phi_a3 = arg0; - phi_a2 = 0; - if (((arg0->unk0 << 9) < 0) || (arg1 != 0)) { - temp_v0 = arg0->unk44; - temp_f0 = arg0->unk24 * arg0->unk20 * temp_v0->unk2C; - phi_f0 = temp_f0; - if (((temp_v0->unk0 * 4) < 0) && ((arg0->unk3 & 0x20) != 0)) { - phi_f0 = temp_v0->unk24 * temp_f0; +void sequence_channel_process_sound(struct SequenceChannel *seqChannel, s32 recalculateVolume) { + f32 channelVolume; + s32 i; + + if (seqChannel->changes.as_bitfields.volume || recalculateVolume) { + channelVolume = seqChannel->volume * seqChannel->volumeScale * seqChannel->seqPlayer->appliedFadeVolume; + if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_SOFTEN) != 0) { + channelVolume = seqChannel->seqPlayer->muteVolumeScale * channelVolume; } - arg0->unk2C = phi_f0 * phi_f0; + seqChannel->appliedVolume = channelVolume * channelVolume; } - if (arg0->unk0 & 0x200000) { - arg0->unk28 = arg0->unk9 * arg0->unkA; + + if (seqChannel->changes.as_bitfields.pan) { + seqChannel->pan = seqChannel->newPan * seqChannel->panChannelWeight; } - do { - temp_v1 = phi_a3->unk48; - temp_a2 = phi_a2 + 4; - phi_a2 = temp_a2; - if (temp_v1 != 0) { - temp_v0_2 = temp_v1->unk0; - if (((temp_v0_2 >> 0x1F) != 0) && (temp_v1->unk40 != 0)) { - if (temp_v0_2 & 0x4000000) { - temp_v1->unk30 = temp_v1->unk24 * arg0->unk30; - temp_v1->unk2C = temp_v1->unk28 * arg0->unk2C; - temp_v1->unk0 = temp_v1->unk0 & 0xFFFB; - temp_v1->unk6 = (arg0->unk28 + (temp_v1->unk5 * (0x80 - arg0->unkA))) >> 7; - } else { - if (arg0->unk1 < 0) { - temp_v1->unk30 = temp_v1->unk24 * arg0->unk30; - } - if (((arg0->unk0 << 9) < 0) || (arg1 != 0)) { - temp_v1->unk2C = temp_v1->unk28 * arg0->unk2C; - } - if (arg0->unk0 & 0x200000) { - temp_v1->unk6 = (arg0->unk28 + (temp_v1->unk5 * (0x80 - arg0->unkA))) >> 7; - } - } - } - } - phi_a3 += 4; - } while (temp_a2 != 0x10); - arg0->unk1 = 0; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BDE50.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BDE50(s32, u32); // extern -void func_800BEF2C(void *); // extern -extern ? D_803B5EF0; - -void func_800BDFF8(void *arg0) { - s32 temp_a0; - s32 temp_s0; - u16 temp_t1; - void *phi_s1; - s32 phi_s0; - - if (arg0->unk10 != 0) { - arg0->unk18 = arg0->unk18 + arg0->unk1C; - arg0->unk0 = arg0->unk0 | 4; - if (arg0->unk18 > 1.0f) { - arg0->unk18 = 1.0f; - } - if (arg0->unk18 < 0.0f) { - arg0->unk18 = 0.0f; - } - temp_t1 = arg0->unk10 - 1; - arg0->unk10 = temp_t1; - if (((temp_t1 & 0xFFFF) == 0) && (arg0->unk1 == 2)) { - func_800BEF2C(arg0); - return; - } - goto block_8; - } -block_8: - phi_s1 = arg0; - phi_s0 = 0; - if (arg0->unk0 & 0x4000000) { - arg0->unk2C = arg0->unk18 * arg0->unk28; - } - do { - temp_a0 = phi_s1->unk30; - if (((&D_803B5EF0 != temp_a0) == 1) && ((*temp_a0 >> 0x1F) == 1)) { - func_800BDE50(temp_a0, (arg0->unk0 << 5) >> 0x1F); - } - temp_s0 = phi_s0 + 4; - phi_s1 += 4; - phi_s0 = temp_s0; - } while (temp_s0 != 0x40); - arg0->unk0 = arg0->unk0 & 0xFFFB; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BDFF8.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern f32 gPitchBendFrequencyScale; - -f32 func_800BE158(void *arg0) { - u32 temp_v0; - u32 phi_v0; - - arg0->unk4 = arg0->unk4 + arg0->unk8; - temp_v0 = arg0->unk4; - phi_v0 = temp_v0; - if (temp_v0 >= 0x80) { - phi_v0 = 0x7F; - } - return ((*(&gPitchBendFrequencyScale + 0x200 + (phi_v0 * 4)) - 1.0f) * arg0->unkC) + 1.0f; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE158.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s16 func_800BE22C(void *arg0) { - s32 temp_t3; - u32 temp_t9; - - temp_t9 = arg0->unk4 + arg0->unk10; - temp_t3 = ((temp_t9 >> 0xA) & 0x3F) * 2; - arg0->unk4 = temp_t9; - return *(arg0->unk8 + temp_t3) >> 8; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE22C.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800BE22C(u16); // extern -extern f32 gPitchBendFrequencyScale; - -f32 func_800BE270(void *arg0, u16 arg1) { - f32 temp_f0; - f32 temp_f0_2; - u16 temp_v0; - u16 temp_v0_2; - u16 temp_v0_3; - u16 temp_v0_4; - u16 temp_v0_5; - void *temp_v1; - u16 phi_a1; - - temp_v0 = arg0->unk1A; - phi_a1 = arg1; - if (temp_v0 != 0) { - arg0->unk1A = temp_v0 - 1; - return 1.0f; - } - temp_v0_2 = arg0->unk18; - if (temp_v0_2 != 0) { - if (temp_v0_2 == 1) { - arg0->unkC = arg0->unk0->unk12; - } else { - temp_f0 = arg0->unkC; - arg0->unkC = temp_f0 + ((arg0->unk0->unk12 - temp_f0) / temp_v0_2); - } - arg0->unk18 = arg0->unk18 - 1; - } else { - temp_v1 = arg0->unk0; - if (arg0->unkC != temp_v1->unk12) { - temp_v0_3 = temp_v1->unk16; - arg0->unk18 = temp_v0_3; - if (temp_v0_3 == 0) { - arg0->unkC = temp_v1->unk12; - } - } - } - temp_v0_4 = arg0->unk16; - if (temp_v0_4 != 0) { - phi_a1 = temp_v0_4; - if (temp_v0_4 == 1) { - arg0->unk10 = arg0->unk0->unk10; - } else { - temp_f0_2 = arg0->unk10; - arg0->unk10 = temp_f0_2 + ((arg0->unk0->unk10 - temp_f0_2) / temp_v0_4); - } - arg0->unk16 = arg0->unk16 - 1; - } else if (arg0->unk10 != arg0->unk0->unk10) { - temp_v0_5 = arg0->unk0->unk14; - arg0->unk16 = temp_v0_5; - if (temp_v0_5 == 0) { - arg0->unk10 = arg0->unk0->unk10; - } - } - if (arg0->unkC == 0.0f) { - return 1.0f; - } - return ((*(&gPitchBendFrequencyScale + 0x200 + (func_800BE22C(phi_a1) * 4)) - 1.0f) * (arg0->unkC * 0.00024414062f)) + 1.0f; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE270.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -f32 func_800BE158(void *, void *); // extern -f32 func_800BE270(void *, void *); // extern - -void func_800BE468(void *arg0) { - void *temp_a0; - void *temp_a1; - void *phi_a1; - - temp_a1 = arg0; - temp_a0 = arg0 + 0x7C; - phi_a1 = temp_a1; - if (arg0->unk7C != 0) { - arg0 = temp_a1; - arg0->unk38 = func_800BE158(temp_a0, temp_a1); - phi_a1 = arg0; - } - if ((phi_a1->unkA0 != 0) && (phi_a1->unk44 != -1)) { - arg0 = phi_a1; - arg0->unk3C = func_800BE270(phi_a1 + 0x8C, phi_a1); - } -} -#else -GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE468.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern ? gWaveSamples; - -void func_800BE4D4(void *arg0) { - u16 temp_v0; - u16 temp_v0_2; - void *temp_a1; - void *temp_a1_2; - void *temp_t6; - void *temp_t9; - void *temp_v0_3; - void *temp_v1; - void *temp_v1_2; - void *phi_a1; - void *phi_v1; - - arg0->unkA0 = 1; - arg0->unk90 = 0; - arg0->unk3C = 1.0f; - arg0->unk38 = 1.0f; - temp_v1 = arg0 + 0x8C; - arg0->unk94 = *(&gWaveSamples + 8); - temp_t9 = arg0->unk44->unk4C; - arg0->unk8C = temp_t9; - temp_v0 = temp_t9->unk16; - arg0->unkA4 = temp_v0; - phi_v1 = temp_v1; - if (temp_v0 == 0) { - temp_v1_2 = arg0 + 0x8C; - temp_a1 = temp_v1_2->unk0; - temp_v1_2->unkC = temp_a1->unk12; - phi_a1 = temp_a1; - phi_v1 = temp_v1_2; - } else { - temp_a1_2 = temp_v1->unk0; - temp_v1->unkC = temp_a1_2->unkE; - phi_a1 = temp_a1_2; - } - temp_v0_2 = phi_a1->unk14; - phi_v1->unk16 = temp_v0_2; - if (temp_v0_2 == 0) { - phi_v1->unk10 = phi_a1->unk10; - } else { - phi_v1->unk10 = phi_a1->unkC; - } - temp_v0_3 = arg0 + 0x30; - phi_v1->unk1A = phi_a1->unk18; - temp_t6 = temp_v0_3->unk14; - temp_v0_3->unk4C = temp_t6->unk8; - temp_v0_3->unk50 = temp_t6->unkC; - temp_v0_3->unk54 = temp_t6->unk10; - temp_v0_3->unk58 = temp_t6->unk14; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE4D4.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BE5BC(void *arg0, s32 arg1, ? arg2) { - arg0->unk0 = 0; - arg0->unk1 = 0; - arg0->unk4 = 0; - arg0->unk20 = arg1; - arg0->unk8 = 0.0f; - arg0->unk14 = 0.0f; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE5BC.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -extern ? gAudioBufferParameters; - -f32 func_800BE5E0(void *arg0) { - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f2; - f32 temp_f6; - s16 temp_a2; - s16 temp_v1_3; - u8 temp_v0; - u8 temp_v1; - void *temp_v1_2; - s16 phi_a2; - - temp_v1 = arg0->unk1; - temp_v0 = arg0->unk0; - switch (temp_v1) { - case 0: - return 0.0f; - case 1: - if ((temp_v0 & 0x40) != 0) { - arg0->unk1 = 5; - } else { - case 2: - arg0->unk2 = 0; - arg0->unk1 = 3; - case 3: -loop_6: - temp_v1_2 = arg0->unk20 + (arg0->unk2 * 4); - arg0->unk4 = temp_v1_2->unk0; - temp_a2 = arg0->unk4; - if (temp_a2 != -3) { - if (temp_a2 != -2) { - if (temp_a2 != -1) { - if (temp_a2 == 0) { - arg0->unk1 = 0; - } else { - if (temp_a2 >= 4) { - arg0->unk4 = ((temp_a2 * gAudioBufferParameters.unkC) / gAudioBufferParameters.unk0) / 4; - } - phi_a2 = arg0->unk4; - if (arg0->unk4 == 0) { - arg0->unk4 = 1; - phi_a2 = arg0->unk4; - } - temp_v1_3 = arg0->unk2; - arg0->unk1 = 4; - temp_f6 = (arg0->unk20 + (temp_v1_3 * 4))->unk2; - arg0->unk2 = temp_v1_3 + 1; - arg0->unk18 = temp_f6 / 32767.0f; - temp_f0 = arg0->unk18; - arg0->unk18 = temp_f0 * temp_f0; - arg0->unkC = (arg0->unk18 - arg0->unk14) / phi_a2; - } - } else { - arg0->unk1 = 5; - } - } else { - arg0->unk2 = temp_v1_2->unk2; - goto loop_6; - } + for (i = 0; i < 4; ++i) { + struct SequenceChannelLayer *layer = seqChannel->layers[i]; + if (layer != NULL && layer->enabled && layer->note != NULL) { + if (layer->notePropertiesNeedInit) { + layer->noteFreqScale = layer->freqScale * seqChannel->freqScale; + layer->noteVelocity = layer->velocitySquare * seqChannel->appliedVolume; + layer->notePan = (seqChannel->pan + layer->pan * (0x80 - seqChannel->panChannelWeight)) >> 7; + layer->notePropertiesNeedInit = FALSE; } else { - arg0->unk1 = 1; - } - if (arg0->unk1 == 4) { - case 4: - arg0->unk4 = arg0->unk4 - 1; - arg0->unk14 = arg0->unk14 + arg0->unkC; - if (arg0->unk4 <= 0) { - arg0->unk1 = 3; + if (seqChannel->changes.as_bitfields.freqScale) { + layer->noteFreqScale = layer->freqScale * seqChannel->freqScale; + } + if (seqChannel->changes.as_bitfields.volume || recalculateVolume) { + layer->noteVelocity = layer->velocitySquare * seqChannel->appliedVolume; + } + if (seqChannel->changes.as_bitfields.pan) { + layer->notePan = (seqChannel->pan + layer->pan * (0x80 - seqChannel->panChannelWeight)) >> 7; } } } - default: -block_30: - if ((temp_v0 & 0x20) != 0) { - arg0->unk1 = 6; - arg0->unk0 = temp_v0 & 0xFFDF; + } + seqChannel->changes.as_u8 = 0; +} + +void sequence_player_process_sound(struct SequencePlayer *seqPlayer) { + s32 i; + + if (seqPlayer->fadeRemainingFrames != 0) { + seqPlayer->fadeVolume += seqPlayer->fadeVelocity; + seqPlayer->recalculateVolume = TRUE; + + if (seqPlayer->fadeVolume > US_FLOAT2(1)) { + seqPlayer->fadeVolume = US_FLOAT2(1); } - if ((temp_v0 & 0x10) != 0) { - arg0->unk1 = 7; - arg0->unk0 = temp_v0 & 0xFFEF; + if (seqPlayer->fadeVolume < 0) { + seqPlayer->fadeVolume = 0; } - temp_f2 = arg0->unk14; - if (temp_f2 < 0.0f) { - return 0.0f; - } - if (temp_f2 > 1.0f) { - return 1.0f; - } - return temp_f2; - case 6: - case 7: - temp_f0_2 = arg0->unk8; - arg0->unk14 = arg0->unk14 - arg0->unk10; - if ((temp_f0_2 != 0.0f) && (temp_v1 == 6)) { - if (arg0->unk14 < temp_f0_2) { - arg0->unk14 = temp_f0_2; - arg0->unk4 = 0x80; - arg0->unk1 = 8; + + if (--seqPlayer->fadeRemainingFrames == 0) { + if (seqPlayer->state == 2) { + sequence_player_disable(seqPlayer); + return; } - } else if (arg0->unk14 < 0.00001f) { - arg0->unk14 = 0.0f; - arg0->unk1 = 0; } - goto block_30; - case 8: - arg0->unk4 = arg0->unk4 - 1; - if (arg0->unk4 == 0) { - arg0->unk1 = 7; + } + + if (seqPlayer->recalculateVolume) { + seqPlayer->appliedFadeVolume = seqPlayer->fadeVolume * seqPlayer->fadeVolumeScale; + } + + // Process channels + for (i = 0; i < CHANNELS_MAX; i++) { + if (IS_SEQUENCE_CHANNEL_VALID(seqPlayer->channels[i]) == TRUE + && seqPlayer->channels[i]->enabled == TRUE) { + sequence_channel_process_sound(seqPlayer->channels[i], seqPlayer->recalculateVolume); } - goto block_30; + } + + seqPlayer->recalculateVolume = FALSE; +} + +f32 get_portamento_freq_scale(struct Portamento *p) { + u32 v0; + f32 result; + + p->cur += p->speed; + v0 = (u32) p->cur; + + if (v0 > 127) + { + v0 = 127; + } + + result = US_FLOAT(1.0) + p->extent * (gPitchBendFrequencyScale[v0 + 128] - US_FLOAT(1.0)); + return result; +} + +s16 get_vibrato_pitch_change(struct VibratoState *vib) { + s32 index; + vib->time += (s32) vib->rate; + index = (vib->time >> 10) & 0x3F; + return vib->curve[index] >> 8; +} + +f32 get_vibrato_freq_scale(struct VibratoState *vib) { + s32 pitchChange; + f32 extent; + f32 result; + + if (vib->delay != 0) { + vib->delay--; + return 1; + } + + if (vib->extentChangeTimer) { + if (vib->extentChangeTimer == 1) { + vib->extent = (s32) vib->seqChannel->vibratoExtentTarget; + } else { + vib->extent += + ((s32) vib->seqChannel->vibratoExtentTarget - vib->extent) / (s32) vib->extentChangeTimer; + } + + vib->extentChangeTimer--; + } else if (vib->seqChannel->vibratoExtentTarget != (s32) vib->extent) { + if ((vib->extentChangeTimer = vib->seqChannel->vibratoExtentChangeDelay) == 0) { + vib->extent = (s32) vib->seqChannel->vibratoExtentTarget; + } + } + + if (vib->rateChangeTimer) { + if (vib->rateChangeTimer == 1) { + vib->rate = (s32) vib->seqChannel->vibratoRateTarget; + } else { + vib->rate += ((s32) vib->seqChannel->vibratoRateTarget - vib->rate) / (s32) vib->rateChangeTimer; + } + + vib->rateChangeTimer--; + } else if (vib->seqChannel->vibratoRateTarget != (s32) vib->rate) { + if ((vib->rateChangeTimer = vib->seqChannel->vibratoRateChangeDelay) == 0) { + vib->rate = (s32) vib->seqChannel->vibratoRateTarget; + } + } + + if (vib->extent == 0) { + return 1.0f; + } + + pitchChange = get_vibrato_pitch_change(vib); + extent = (f32) vib->extent / US_FLOAT(4096.0); + + result = US_FLOAT(1.0) + extent * (gPitchBendFrequencyScale[pitchChange + 128] - US_FLOAT(1.0)); + return result; +} + +void note_vibrato_update(struct Note *note) { + if (note->portamento.mode != 0) { + note->portamentoFreqScale = get_portamento_freq_scale(¬e->portamento); + } + if (note->vibratoState.active && note->parentLayer != NO_LAYER) { + note->vibratoFreqScale = get_vibrato_freq_scale(¬e->vibratoState); } } -#else -GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE5E0.s") -#endif + +void note_vibrato_init(struct Note *note) { + struct VibratoState *vib; + UNUSED struct SequenceChannel *seqChannel; + struct NotePlaybackState *seqPlayerState = (struct NotePlaybackState *) ¬e->priority; + + note->vibratoFreqScale = 1.0f; + note->portamentoFreqScale = 1.0f; + + vib = ¬e->vibratoState; + + vib->active = TRUE; + vib->time = 0; + + vib->curve = gWaveSamples[2]; + vib->seqChannel = note->parentLayer->seqChannel; + if ((vib->extentChangeTimer = vib->seqChannel->vibratoExtentChangeDelay) == 0) { + vib->extent = FLOAT_CAST(vib->seqChannel->vibratoExtentTarget); + } else { + vib->extent = FLOAT_CAST(vib->seqChannel->vibratoExtentStart); + } + + if ((vib->rateChangeTimer = vib->seqChannel->vibratoRateChangeDelay) == 0) { + vib->rate = FLOAT_CAST(vib->seqChannel->vibratoRateTarget); + } else { + vib->rate = FLOAT_CAST(vib->seqChannel->vibratoRateStart); + } + vib->delay = vib->seqChannel->vibratoDelay; + + seqPlayerState->portamento = seqPlayerState->parentLayer->portamento; +} + +void adsr_init(struct AdsrState *adsr, struct AdsrEnvelope *envelope, UNUSED s16 *volOut) { + adsr->action = 0; + adsr->state = ADSR_STATE_DISABLED; + adsr->delay = 0; + adsr->envelope = envelope; + adsr->sustain = 0.0f; + adsr->current = 0.0f; +} + +f32 adsr_update(struct AdsrState *adsr) { + u8 action = adsr->action; + u8 state = adsr->state; + switch (state) { + case ADSR_STATE_DISABLED: + return 0; + + case ADSR_STATE_INITIAL: { + if (action & ADSR_ACTION_HANG) { + adsr->state = ADSR_STATE_HANG; + break; + } + // fallthrough + } + + case ADSR_STATE_START_LOOP: + adsr->envIndex = 0; + adsr->state = ADSR_STATE_LOOP; + // fallthrough + +restart: + case ADSR_STATE_LOOP: + adsr->delay = BSWAP16(adsr->envelope[adsr->envIndex].delay); + switch (adsr->delay) { + case ADSR_DISABLE: + adsr->state = ADSR_STATE_DISABLED; + break; + case ADSR_HANG: + adsr->state = ADSR_STATE_HANG; + break; + case ADSR_GOTO: + adsr->envIndex = BSWAP16(adsr->envelope[adsr->envIndex].arg); + goto restart; + case ADSR_RESTART: + adsr->state = ADSR_STATE_INITIAL; + break; + + default: + if (adsr->delay >= 4) { + adsr->delay = adsr->delay * gAudioBufferParameters.updatesPerFrame + / gAudioBufferParameters.presetUnk4 + / 4; + } + if (adsr->delay == 0) { + adsr->delay = 1; + } + adsr->target = (f32) BSWAP16(adsr->envelope[adsr->envIndex].arg) / 32767.0f; + adsr->target = adsr->target * adsr->target; + adsr->velocity = (adsr->target - adsr->current) / adsr->delay; + adsr->state = ADSR_STATE_FADE; + adsr->envIndex++; + break; + } + if (adsr->state != ADSR_STATE_FADE) { + break; + } + // fallthrough + + case ADSR_STATE_FADE: + adsr->current += adsr->velocity; + if (--adsr->delay <= 0) { + adsr->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->state = ADSR_STATE_SUSTAIN; + } + break; + } + + if (adsr->current < 0.00001f) { + adsr->current = 0.0f; + adsr->state = ADSR_STATE_DISABLED; + } + break; + } + + case ADSR_STATE_SUSTAIN: + adsr->delay -= 1; + if (adsr->delay == 0) { + adsr->state = ADSR_STATE_RELEASE; + } + break; + } + + if ((action & ADSR_ACTION_DECAY)) { + adsr->state = ADSR_STATE_DECAY; + adsr->action = action & ~ADSR_ACTION_DECAY; + } + + if ((action & ADSR_ACTION_RELEASE)) { + adsr->state = ADSR_STATE_RELEASE; + adsr->action = action & ~ADSR_ACTION_RELEASE; + } + + if (adsr->current < 0.0f) { + // Don't actually know where this goes, but we need that string + // somewhere in the .data section for this file + eu_stubbed_printf_0("Env-Clear 0\n"); + return 0.0f; + } + if (adsr->current > 1.0f) { + eu_stubbed_printf_1("Audio:Envp: overflow %f\n", adsr->current); + return 1.0f; + } + return adsr->current; +} diff --git a/src/audio/effects.h b/src/audio/effects.h index 796b078b8..f7cc4957d 100644 --- a/src/audio/effects.h +++ b/src/audio/effects.h @@ -1,6 +1,8 @@ #ifndef AUDIO_EFFECTS_H #define AUDIO_EFFECTS_H +#include "audio/internal.h" + #ifdef TARGET_N64 #define IS_BIG_ENDIAN 1 #endif @@ -32,4 +34,14 @@ #define BSWAP16(x) (((x) & 0xff) << 8 | (((x) >> 8) & 0xff)) #endif +void sequence_channel_process_sound(struct SequenceChannel *seqChannel, s32 recalculateVolume); +void sequence_player_process_sound(struct SequencePlayer *seqPlayer); +f32 get_portamento_freq_scale(struct Portamento *p); +s16 get_vibrato_pitch_change(struct VibratoState *vib); +f32 get_vibrato_freq_scale(struct VibratoState *vib); +void note_vibrato_update(struct Note *note); +void note_vibrato_init(struct Note *note); +void adsr_init(struct AdsrState *adsr, struct AdsrEnvelope *envelope, s16 *volOut); +f32 adsr_update(struct AdsrState *adsr); + #endif /* AUDIO_EFFECTS_H */ diff --git a/src/audio/external.c b/src/audio/external.c index 52dad1c23..5bfc5e105 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -84,7 +84,7 @@ GLOBAL_ASM("asm/non_matchings/audio/external/func_800C1480.s") extern s8 D_8018EF10; extern ? D_80191420; extern s32 D_803B17D0; -extern ? D_803B5EF0; +extern ? gSequenceChannelNone; s8 func_800C15D0(s32 arg0, s32 arg1, s32 arg2) { ? sp-10; @@ -112,7 +112,7 @@ s8 func_800C15D0(s32 arg0, s32 arg1, s32 arg2) { } } temp_a0 = *(&D_803B17D0 + ((arg2 & 0xFF) * 4)); - if (&D_803B5EF0 != temp_a0) { + if (&gSequenceChannelNone != temp_a0) { phi_v1 = temp_a0->unk5E; } phi_v1_2 = phi_v1; @@ -555,7 +555,7 @@ GLOBAL_ASM("asm/non_matchings/audio/external/func_800C21E8.s") void func_8001AAAC(s16, s16, s16); // extern void func_800CBBE8(s32, ?, s32, s32); // extern extern ? D_8018FC10; -extern u32 D_803B1510; +extern u32 gSequencePlayers; void func_800C2274(s32 arg0) { s16 sp46; @@ -577,7 +577,7 @@ void func_800C2274(s32 arg0) { temp_a3 = arg0 & 0xFF; phi_a2 = 0xF; - if ((*(&D_803B1510 + (temp_a3 * 0x148)) >> 0x1F) != 0) { + if ((*(&gSequencePlayers + (temp_a3 * 0x148)) >> 0x1F) != 0) { temp_v0 = D_800DC530; if (temp_v0 != 0) { if (temp_v0 != 1) { @@ -593,7 +593,7 @@ void func_800C2274(s32 arg0) { phi_a2 = 0xE; } } - temp_v0_2 = (&D_803B1510 + (temp_a3 * 0x148) + (phi_a2 * 4))->unk30; + temp_v0_2 = (&gSequencePlayers + (temp_a3 * 0x148) + (phi_a2 * 4))->unk30; temp_s0 = temp_v0_2->unk58; if (temp_s0 != 0xFF) { sp46 = temp_v0_2->unk59 & 3; @@ -1295,7 +1295,7 @@ GLOBAL_ASM("asm/non_matchings/audio/external/func_800C3478.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 extern ? D_80193318; -extern u32 D_803B1510; +extern u32 gSequencePlayers; u16 func_800C3508(s32 arg0) { ? sp-10; @@ -1303,7 +1303,7 @@ u16 func_800C3508(s32 arg0) { temp_t6 = arg0 & 0xFF; sp-10.unk10 = arg0; - if ((*(&D_803B1510 + (temp_t6 * 0x148)) >> 0x1F) == 0) { + if ((*(&gSequencePlayers + (temp_t6 * 0x148)) >> 0x1F) == 0) { return 0xFFFF; } return *(&D_80193318 + (temp_t6 * 0x24C)); @@ -1422,7 +1422,7 @@ void func_800C36C4(s32, ?, ?, ?); /* extern */ void func_800CBB88(s32, f32, s32); /* extern */ void func_800CBBB8(s32, s32); /* extern */ extern ? D_801930D0; -extern u32 D_803B1510; +extern u32 gSequencePlayers; void func_800C3724(void) { f32 temp_f0; @@ -1534,7 +1534,7 @@ void func_800C3724(void) { if (temp_a3 == 0) { phi_t0 = (temp_a3 + 1) & 0xFF; } - temp_a1_2 = (phi_s5 * 0x148) + &D_803B1510; + temp_a1_2 = (phi_s5 * 0x148) + &gSequencePlayers; if ((temp_a1_2->unk0 >> 0x1F) != 0) { temp_t9_2 = ((temp_a1 & 0xF000) >> 0xC) & 0xFF; temp_lo = temp_a1_2->unk8 / 48; @@ -1655,7 +1655,7 @@ void func_800C3724(void) { temp_s3->unk40 = temp_v1_6 - 1; } else { phi_s2_2 = 0; - if ((*(&D_803B1510 + (phi_s5 * 0x148)) >> 0x1F) == 0) { + if ((*(&gSequencePlayers + (phi_s5 * 0x148)) >> 0x1F) == 0) { phi_v1 = temp_v0_6; if (temp_v0_6 > 0) { do { @@ -2995,13 +2995,13 @@ void func_800C4FE4(s32); // extern void func_800C5968(s32); // extern extern s8 D_80192C38; extern s32 D_803B17D0; -extern ? D_803B5EF0; +extern ? gSequenceChannelNone; void func_800C59C4(void) { s32 temp_t8; s32 phi_s0; - if (&D_803B5EF0 != D_803B17D0) { + if (&gSequenceChannelNone != D_803B17D0) { D_80192C38 = 0; phi_s0 = 0; do { diff --git a/src/audio/external.h b/src/audio/external.h index 0cabd6841..34569e33b 100644 --- a/src/audio/external.h +++ b/src/audio/external.h @@ -3,6 +3,19 @@ #include "common_structs.h" +// Sequence arguments, passed to seq_player_play_sequence. seqId may be bit-OR'ed with +// SEQ_VARIATION; this will load the same sequence, but set a variation +// bit which may be read by the sequence script. +#define SEQUENCE_ARGS(priority, seqId) ((priority << 8) | seqId) + +#define SOUND_MODE_STEREO 0 +#define SOUND_MODE_MONO 3 +#define SOUND_MODE_HEADSET 1 + +#define SEQ_PLAYER_LEVEL 0 // Level background music +#define SEQ_PLAYER_ENV 1 // Misc music like the puzzle jingle +#define SEQ_PLAYER_SFX 2 // Sound effects + void play_sound2(s32); void func_800C8EAC(u16); void func_800C8EF8(); @@ -26,4 +39,7 @@ extern s8 D_800EA0F4; extern s8 D_800EA108; extern s16 D_800EA174; +// Based on SM64, this should be part of data.c's BSS section. Somehow. +extern s32 gAudioErrorFlags; + #endif diff --git a/src/audio/heap.c b/src/audio/heap.c index e64902a89..dcf11b483 100644 --- a/src/audio/heap.c +++ b/src/audio/heap.c @@ -1,14 +1,17 @@ #include #include -#include "heap.h" +#include "audio/heap.h" +#include "audio/load.h" +#include "audio/playback.h" +#include "audio/seqplayer.h" extern struct SoundAllocPool gNotesAndBuffersPool; #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 extern u8 D_803B0380; -extern u8 D_803B03C0; -extern ? D_803B0400; +extern u8 gBankLoadStatus; +extern ? gSeqLoadStatus; extern u8 D_803B0500; void func_800B8DE0(void) { @@ -19,14 +22,14 @@ void func_800B8DE0(void) { u8 *phi_v1_2; ? *phi_v1_3; - phi_v1 = &D_803B03C0; + phi_v1 = &gBankLoadStatus; do { if (*phi_v1 != 5) { *phi_v1 = 0; } temp_v1 = phi_v1 + 1; phi_v1 = temp_v1; - } while (temp_v1 < &D_803B0400); + } while (temp_v1 < &gSeqLoadStatus); phi_v1_2 = &D_803B0380; do { if (*phi_v1_2 != 5) { @@ -34,8 +37,8 @@ void func_800B8DE0(void) { } temp_v1_2 = phi_v1_2 + 1; phi_v1_2 = temp_v1_2; - } while (temp_v1_2 < &D_803B03C0); - phi_v1_3 = &D_803B0400; + } while (temp_v1_2 < &gBankLoadStatus); + phi_v1_3 = &gSeqLoadStatus; do { if (phi_v1_3->unk0 != 5) { phi_v1_3->unk0 = 0; @@ -57,169 +60,91 @@ void func_800B8DE0(void) { GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B8DE0.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BCB48(void *); // extern -void func_800BD6F4(void *); // extern -void func_800BF004(? *, void *); // extern -extern s32 D_803B1508; -extern ? D_803B5FC8; -extern s32 gMaxSimultaneousNotes; +void discard_bank(s32 bankId) { + s32 i; -void func_800B8EA8(s32 arg0) { - s32 temp_s2; - s32 temp_v0; - u8 *temp_v0_2; - u8 *temp_v0_3; - void *temp_s0; - s32 phi_s1; - s32 phi_s2; - s32 phi_v0; + for (i = 0; i < gMaxSimultaneousNotes; i++) { + struct Note *note = &gNotes[i]; - temp_v0 = gMaxSimultaneousNotes; - phi_s2 = 0; - phi_v0 = temp_v0; - if (temp_v0 > 0) { - phi_s1 = 0; - do { - temp_s0 = phi_s1 + D_803B1508; - if (arg0 == temp_s0->unkB2) { - if (temp_s0->unk30 >= 2) { - temp_v0_2 = temp_s0->unk44; - *temp_v0_2 = *temp_v0_2 & 0xFF7F; - temp_v0_3 = temp_s0->unk44; - *temp_v0_3 = *temp_v0_3 | 0x40; - } - func_800BCB48(temp_s0); - func_800BD6F4(temp_s0); - func_800BF004(&D_803B5FC8, temp_s0); - phi_v0 = gMaxSimultaneousNotes; + if (note->noteSubEu.bankId == bankId) { + // (These prints are unclear. Arguments are picked semi-randomly.) + eu_stubbed_printf_1("Warning:Kill Note %x \n", i); + if (note->priority >= NOTE_PRIORITY_MIN) { + eu_stubbed_printf_3("Kill Voice %d (ID %d) %d\n", note->waveId, + bankId, note->priority); + eu_stubbed_printf_0("Warning: Running Sequence's data disappear!\n"); + note->parentLayer->enabled = FALSE; // is 0x48, should be 0x44 + note->parentLayer->finished = TRUE; } - temp_s2 = phi_s2 + 1; - phi_s1 += 0xC0; - phi_s2 = temp_s2; - } while (temp_s2 < phi_v0); + note_disable(note); + audio_list_remove(¬e->listItem); + audio_list_push_back(&gNoteFreeLists.disabled, ¬e->listItem); + } } } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B8EA8.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BEF2C(? *); // extern -extern u32 D_803B1510; -extern ? D_803B1A30; +void discard_sequence(s32 seqId) { + s32 i; -void func_800B8F8C(s32 arg0) { - ? *temp_s0; - ? *phi_s0; - - phi_s0 = &D_803B1510; - do { - if (((phi_s0->unk0 >> 0x1F) != 0) && (arg0 == phi_s0->unk4)) { - func_800BEF2C(phi_s0); + for (i = 0; i < SEQUENCE_PLAYERS; i++) { + if (gSequencePlayers[i].enabled && gSequencePlayers[i].seqId == seqId) { + sequence_player_disable(&gSequencePlayers[i]); } - temp_s0 = phi_s0 + 0x148; - phi_s0 = temp_s0; - } while (temp_s0 != &D_803B1A30); -} -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B8F8C.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -u32 soundAlloc(void *arg0, s32 arg1) { - s32 temp_t6; - s8 *temp_a1; - u32 temp_a2; - u32 temp_t1; - s8 *phi_a1; - - temp_a2 = arg0->unk4; - temp_t6 = (arg1 + 0xF) & ~0xF; - if ((arg0->unk0 + arg0->unk8) >= (temp_a2 + temp_t6)) { - temp_t1 = temp_a2 + temp_t6; - arg0->unk4 = temp_t1; - phi_a1 = temp_a2; - if (temp_a2 < temp_t1) { - do { - *phi_a1 = 0; - temp_a1 = phi_a1 + 1; - phi_a1 = temp_a1; - } while (temp_a1 < arg0->unk4); - } - arg0->unkC = arg0->unkC + 1; - return temp_a2; } - return 0; } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/soundAlloc.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800B907C(void *arg0, s32 arg1, s32 arg2) { - s32 temp_t6; +void *soundAlloc(struct SoundAllocPool *pool, u32 size) { + u8 *start; + u8 *pos; + u32 alignedSize = ALIGN16(size); - temp_t6 = (arg1 + 0xF) & ~0xF; - arg0->unk0 = temp_t6; - arg0->unk4 = temp_t6; - arg0->unk8 = arg2; - arg0->unkC = 0; + start = pool->cur; + if (start + alignedSize <= pool->start + pool->size) { + pool->cur += alignedSize; + for (pos = start; pos < pool->cur; pos++) { + *pos = 0; + } + } else { + eu_stubbed_printf_1("Heap OverFlow : Not Allocate %d!\n", size); + return NULL; + } + pool->numAllocatedEntries++; + return start; } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B907C.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800B909C(void *arg0) { - arg0->unk10 = 0; - arg0->unk0 = 0; - arg0->unk8 = arg0->unk4; +void sound_alloc_pool_init(struct SoundAllocPool *pool, void *memAddr, u32 size) { + pool->cur = pool->start = (u8 *) ALIGN16((uintptr_t) memAddr); + pool->size = size; + pool->numAllocatedEntries = 0; } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B909C.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800B90B0(void *arg0) { - s32 temp_v0; - - temp_v0 = arg0->unk4; - arg0->unk10 = 0; - arg0->unk0 = 0; - arg0->unk20 = temp_v0 + arg0->unkC; - arg0->unk1E = -1; - arg0->unk2A = -1; - arg0->unk8 = temp_v0; - arg0->unk14 = temp_v0; +void persistent_pool_clear(struct PersistentPool *persistent) { + persistent->pool.numAllocatedEntries = 0; + persistent->pool.cur = persistent->pool.start; + persistent->numEntries = 0; } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B90B0.s") -#endif -struct struct_800B90E0 { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; -}; -UNUSED void func_800B90E0(struct struct_800B90E0 *arg0) { - arg0->unkC = 0; - arg0->unk4 = arg0->unk0; +void temporary_pool_clear(struct TemporaryPool *temporary) { + temporary->pool.numAllocatedEntries = 0; + temporary->pool.cur = temporary->pool.start; + temporary->nextSide = 0; + temporary->entries[0].ptr = temporary->pool.start; + temporary->entries[1].ptr = temporary->pool.start + temporary->pool.size; + temporary->entries[0].id = -1; // should be at 1e not 1c + temporary->entries[1].id = -1; +} + +void func_800B90E0(struct SoundAllocPool *pool) { + pool->numAllocatedEntries = 0; + pool->cur = pool->start; } #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800B907C(? *, ? *, s32, s32); // extern +void sound_alloc_pool_init(? *, ? *, s32, s32); // extern extern s32 D_800EA5D0; -extern ? D_803AFBC8; -extern ? D_803AFBD8; +extern ? gAudioSessionPool; +extern ? gAudioInitPool; extern ? D_803B71B0; void func_800B90F0(s32 arg0) { @@ -227,8 +152,8 @@ void func_800B90F0(s32 arg0) { temp_a2 = arg0; arg0 = temp_a2; - func_800B907C(&D_803AFBD8, &D_803B71B0, temp_a2); - func_800B907C(&D_803AFBC8, arg0 + &D_803B71B0, D_800EA5D0 - arg0, arg0); + sound_alloc_pool_init(&gAudioInitPool, &D_803B71B0, temp_a2); + sound_alloc_pool_init(&gAudioSessionPool, arg0 + &D_803B71B0, D_800EA5D0 - arg0, arg0); } #else GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B90F0.s") @@ -237,379 +162,269 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B90F0.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 soundAlloc(? *, s32); // extern -void func_800B907C(? *, s32, s32); // extern -extern ? D_803AFBC8; +void sound_alloc_pool_init(? *, s32, s32); // extern +extern ? gAudioSessionPool; extern ? gNotesAndBuffersPool; -extern ? D_803AFC18; +extern ? gSeqAndBankPool; void func_800B914C(void *arg0) { - D_803AFBC8.unk4 = D_803AFBC8.unk0; - func_800B907C(&gNotesAndBuffersPool, soundAlloc(&D_803AFBC8, arg0->unk0), arg0->unk0); - func_800B907C(&D_803AFC18, soundAlloc(&D_803AFBC8, arg0->unkC), arg0->unkC); + gAudioSessionPool.unk4 = gAudioSessionPool.unk0; + sound_alloc_pool_init(&gNotesAndBuffersPool, soundAlloc(&gAudioSessionPool, arg0->unk0), arg0->unk0); + sound_alloc_pool_init(&gSeqAndBankPool, soundAlloc(&gAudioSessionPool, arg0->unkC), arg0->unkC); } #else GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B914C.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 soundAlloc(? *, s32); // extern -void func_800B907C(? *, s32, s32); // extern -extern ? D_803AFC18; -extern ? D_803AFC28; -extern ? D_803AFC38; - -void func_800B91C8(void *arg0) { - D_803AFC18.unk4 = D_803AFC18.unk0; - func_800B907C(&D_803AFC28, soundAlloc(&D_803AFC18, arg0->unk0), arg0->unk0); - func_800B907C(&D_803AFC38, soundAlloc(&D_803AFC18, arg0->unk4), arg0->unk4); +void seq_and_bank_pool_init(struct PoolSplit2 *a) { + gSeqAndBankPool.cur = gSeqAndBankPool.start; + sound_alloc_pool_init(&gPersistentCommonPool, soundAlloc(&gSeqAndBankPool, a->wantPersistent), a->wantPersistent); + sound_alloc_pool_init(&gTemporaryCommonPool, soundAlloc(&gSeqAndBankPool, a->wantTemporary), a->wantTemporary); } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B91C8.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 soundAlloc(? *, s32); // extern -void func_800B907C(? *, s32, s32); // extern -void func_800B909C(? *); // extern -extern ? D_803AFC28; -extern u32 D_803AFC48; -extern ? D_803AFC4C; -extern u32 D_803AFE18; -extern ? D_803AFE1C; -extern u32 D_803AFFE8; -extern ? D_803AFFEC; - -void func_800B9244(void *arg0) { - D_803AFC28.unk4 = D_803AFC28.unk0; - func_800B907C(&D_803AFC4C, soundAlloc(&D_803AFC28, arg0->unk0), arg0->unk0); - func_800B907C(&D_803AFE1C, soundAlloc(&D_803AFC28, arg0->unk4), arg0->unk4); - func_800B907C(&D_803AFFEC, soundAlloc(&D_803AFC28, arg0->unk8), arg0->unk8); - func_800B909C(&D_803AFC48); - func_800B909C(&D_803AFE18); - func_800B909C(&D_803AFFE8); +void persistent_pools_init(struct PoolSplit *a) { + gPersistentCommonPool.cur = gPersistentCommonPool.start; + sound_alloc_pool_init(&gSeqLoadedPool.persistent.pool, soundAlloc(&gPersistentCommonPool, a->wantSeq), a->wantSeq); + sound_alloc_pool_init(&gBankLoadedPool.persistent.pool, soundAlloc(&gPersistentCommonPool, a->wantBank), a->wantBank); + sound_alloc_pool_init(&gUnusedLoadedPool.persistent.pool, soundAlloc(&gPersistentCommonPool, a->wantUnused), a->wantUnused); + persistent_pool_clear(&gSeqLoadedPool.persistent); + persistent_pool_clear(&gBankLoadedPool.persistent); + persistent_pool_clear(&gUnusedLoadedPool.persistent); } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9244.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 soundAlloc(? *, s32); // extern -void func_800B907C(? *, s32, s32); // extern -void func_800B90B0(? *); // extern -extern ? D_803AFC38; -extern ? D_803AFDDC; -extern ? D_803AFDE0; -extern ? D_803AFFAC; -extern ? D_803AFFB0; -extern ? D_803B017C; -extern ? D_803B0180; - -void func_800B9300(void *arg0) { - D_803AFC38.unk4 = D_803AFC38.unk0; - func_800B907C(&D_803AFDE0, soundAlloc(&D_803AFC38, arg0->unk0), arg0->unk0); - func_800B907C(&D_803AFFB0, soundAlloc(&D_803AFC38, arg0->unk4), arg0->unk4); - func_800B907C(&D_803B0180, soundAlloc(&D_803AFC38, arg0->unk8), arg0->unk8); - func_800B90B0(&D_803AFDDC); - func_800B90B0(&D_803AFFAC); - func_800B90B0(&D_803B017C); +void temporary_pools_init(struct PoolSplit *a) { + gTemporaryCommonPool.cur = gTemporaryCommonPool.start; + sound_alloc_pool_init(&gSeqLoadedPool.temporary.pool, soundAlloc(&gTemporaryCommonPool, a->wantSeq), a->wantSeq); + sound_alloc_pool_init(&gBankLoadedPool.temporary.pool, soundAlloc(&gTemporaryCommonPool, a->wantBank), a->wantBank); + sound_alloc_pool_init(&gUnusedLoadedPool.temporary.pool, soundAlloc(&gTemporaryCommonPool, a->wantUnused), a->wantUnused); + temporary_pool_clear(&gSeqLoadedPool.temporary); + temporary_pool_clear(&gBankLoadedPool.temporary); + temporary_pool_clear(&gUnusedLoadedPool.temporary); } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9300.s") -#endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800B8EA8(s16, s32, s16, s32 *); // extern -void func_800B8F8C(s16, s32); // extern -s32 soundAlloc(s32, s32); // extern -extern u32 D_803AFC48; -extern u32 D_803AFE18; -extern u32 D_803AFFE8; -extern u8 D_803B0380; -extern u8 D_803B03C0; -extern ? D_803B0400; -extern void *D_803B1508; -extern u32 D_803B1510; -extern ? D_803B1A30; -extern s32 gMaxSimultaneousNotes; +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c +? discard_bank(s16, s32, s16, struct TemporaryPool *); /* extern */ +? discard_sequence(s16, s32); /* extern */ +extern ? D_803B0380; +extern ? gBankLoadStatus; +extern ? gSeqLoadStatus; +extern void *gNotes; +extern ? gSequencePlayers; +extern ? gSequenceChannels; -u32 func_800B93BC(s32 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { +void *func_800B93BC(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg3, s32 id) { ? *sp34; u8 sp33; - s32 *sp28; - void *sp24; + struct TemporaryPool *sp28; + struct SoundAllocPool *sp24; s32 sp20; - ? *temp_v0_4; - ? *temp_v0_5; + ? *var_v0_4; + ? *var_v0_5; s16 temp_a0; s16 temp_a2; - s16 temp_v1_5; - s32 *temp_a3; - s32 temp_a0_2; + s16 temp_v1_2; s32 temp_a1; s32 temp_a1_2; s32 temp_a1_3; s32 temp_a1_4; - s32 temp_v0_6; - s32 temp_v0_9; - s32 temp_v1; - s32 temp_v1_2; - s32 temp_v1_3; - s32 temp_v1_4; - s32 temp_v1_8; - u32 temp_v0; - u32 temp_v0_7; - u32 temp_v0_8; + s32 var_a3; + s32 var_v1_2; + s32 var_v1_3; + s32 var_v1_4; + s32 var_v1_5; + struct SoundAllocPool *temp_v1_3; + struct SoundAllocPool *temp_v1_4; + struct TemporaryPool *var_a3_2; + u32 temp_a0_2; + u32 temp_v1; + u32 var_v0_3; + u8 *temp_v0; u8 *temp_v0_2; u8 *temp_v0_3; - void *temp_v1_6; - void *temp_v1_7; - s32 phi_a3; - u8 phi_t1; - void *phi_v0; - s32 phi_v1; - s32 phi_v1_2; - u8 phi_t2; - void *phi_v0_2; - s32 phi_v1_3; - s32 phi_v1_4; - u8 phi_t1_2; - u8 phi_t2_2; - ? *phi_v0_3; - ? *phi_v0_4; - ? *phi_v0_5; - ? *phi_v0_6; - void *phi_v0_7; - s32 phi_v1_5; - s32 phi_v1_6; - void *phi_v0_8; - s32 phi_v1_7; - s32 phi_v1_8; - s32 phi_v0_9; - s16 phi_a2; - s16 phi_ra; - s32 phi_t4; - s32 *phi_a3_2; - void *phi_v1_9; - s32 *phi_a3_3; - void *phi_v1_10; - s32 *phi_a3_4; - u32 phi_v1_11; - s16 phi_a2_2; - s32 *phi_a3_5; - u32 phi_v0_10; + u8 *temp_v0_4; + u8 *var_v0_8; + u8 *var_v1; + u8 var_t1; + u8 var_t2; + void *var_v0; + void *var_v0_2; + void *var_v0_6; + void *var_v0_7; - phi_a3 = arg3; - phi_t4 = 1; + var_a3 = arg3; loop_1: - phi_ra = arg4; - phi_t4 = 1; - if (phi_a3 == 0) { - temp_a3 = arg0 + 0x194; - if (arg0 == &D_803AFC48) { - sp34 = &D_803B0400; + if (var_a3 == 0) { + var_a3_2 = &arg0->temporary; + if (arg0 == &gSeqLoadedPool) { + sp34 = &gSeqLoadStatus; sp33 = 0; - } else if (arg0 == &D_803AFE18) { + } else if (arg0 == &gBankLoadedPool) { sp33 = 1; - sp34 = &D_803B03C0; - } else if (arg0 == &D_803AFFE8) { + sp34 = &gBankLoadStatus; + } else if (arg0 == &gUnusedLoadedPool) { sp33 = 2; sp34 = &D_803B0380; } - temp_a2 = temp_a3->unk1E; - phi_a2 = temp_a2; - phi_a2_2 = temp_a2; - phi_a2 = temp_a2; + temp_a2 = var_a3_2->entries[0].id; if (temp_a2 == -1) { - phi_t1 = 0; + var_t1 = 0; } else { - phi_t1 = *(temp_a2 + sp34); + var_t1 = *(temp_a2 + sp34); } - temp_a0 = temp_a3->unk2A; - phi_t1_2 = phi_t1; - phi_t1_2 = phi_t1; + temp_a0 = var_a3_2->entries[1].id; if (temp_a0 == -1) { - phi_t2 = 0; + var_t2 = 0; } else { - phi_t2 = *(temp_a0 + sp34); + var_t2 = *(temp_a0 + sp34); } - sp20 = sp33; - phi_t2_2 = phi_t2; + sp20 = (s32) sp33; if (sp33 == 1) { - if (phi_t1 == 4) { + if (var_t1 == 4) { temp_a1 = gMaxSimultaneousNotes; - phi_v1 = 0; - phi_v1_2 = 0; + var_v1_2 = 0; if (temp_a1 > 0) { - phi_v0 = D_803B1508; + var_v0 = gNotes; loop_18: - phi_v1_2 = phi_v1; - if ((phi_v0->unkB2 != temp_a2) || ((phi_v0->unkB0 >> 0x1F) == 0)) { - temp_v1 = phi_v1 + 1; - phi_v0 += 0xC0; - phi_v1 = temp_v1; - phi_v1_2 = temp_v1; - if (temp_v1 < temp_a1) { + if ((var_v0->unkB2 != temp_a2) || (((u32) var_v0->unkB0 >> 0x1F) == 0)) { + var_v1_2 += 1; + var_v0 += 0xC0; + if (var_v1_2 < temp_a1) { goto loop_18; } } } - temp_v0_2 = &D_803B03C0 + temp_a2; - if (phi_v1_2 == temp_a1) { - phi_t1_2 = 3; + temp_v0 = &gBankLoadStatus + temp_a2; + if (var_v1_2 == temp_a1) { + var_t1 = 3; + if (*temp_v0 != 5) { + *temp_v0 = 3; + } + } + } + if (var_t2 == 4) { + temp_a1_2 = gMaxSimultaneousNotes; + var_v1_3 = 0; + if (temp_a1_2 > 0) { + var_v0_2 = gNotes; +loop_27: + if ((var_v0_2->unkB2 != var_a3_2->entries[1].id) || (((u32) var_v0_2->unkB0 >> 0x1F) == 0)) { + var_v1_3 += 1; + var_v0_2 += 0xC0; + if (var_v1_3 < temp_a1_2) { + goto loop_27; + } + } + } + if (var_v1_3 == temp_a1_2) { + temp_v0_2 = &gBankLoadStatus + var_a3_2->entries[1].id; + var_t2 = 3; if (*temp_v0_2 != 5) { *temp_v0_2 = 3; } } } - if (phi_t2 == 4) { - temp_a1_2 = gMaxSimultaneousNotes; - phi_v1_3 = 0; - phi_v1_4 = 0; - if (temp_a1_2 > 0) { - phi_v0_2 = D_803B1508; -loop_27: - phi_v1_4 = phi_v1_3; - if ((phi_v0_2->unkB2 != temp_a3->unk2A) || ((phi_v0_2->unkB0 >> 0x1F) == 0)) { - temp_v1_2 = phi_v1_3 + 1; - phi_v0_2 += 0xC0; - phi_v1_3 = temp_v1_2; - phi_v1_4 = temp_v1_2; - if (temp_v1_2 < temp_a1_2) { - goto loop_27; - } - } - } - if (phi_v1_4 == temp_a1_2) { - temp_v0_3 = &D_803B03C0 + temp_a3->unk2A; - phi_t2_2 = 3; - if (*temp_v0_3 != 5) { - *temp_v0_3 = 3; - } - } - } } - if (phi_t1_2 == 0) { - temp_a3->unk0 = 0; - phi_v0_9 = 0; + if (var_t1 == 0) { + var_a3_2->nextSide = 0; + var_v0_3 = 0; goto block_84; } - if (phi_t2_2 == 0) { - temp_a3->unk0 = 1; - phi_v0_9 = 1; + if (var_t2 == 0) { + var_v0_3 = 1; + var_a3_2->nextSide = 1; goto block_84; } - if ((phi_t1_2 == 3) && (phi_t2_2 == 3)) { - phi_v0_9 = temp_a3->unk0; + if ((var_t1 == 3) && (var_t2 == 3)) { + var_v0_3 = var_a3_2->nextSide; goto block_84; } - if (phi_t1_2 == 3) { - temp_a3->unk0 = 0; - phi_v0_9 = 0; + if (var_t1 == 3) { + var_a3_2->nextSide = 0; + var_v0_3 = 0; goto block_84; } - if (phi_t2_2 == 3) { - temp_a3->unk0 = 1; - phi_v0_9 = 1; + if (var_t2 == 3) { + var_v0_3 = 1; + var_a3_2->nextSide = 1; goto block_84; } if (sp20 == 0) { - if (phi_t1_2 == 2) { - phi_v0_3 = &D_803B1510; + if (var_t1 == 2) { + var_v0_4 = &gSequencePlayers; loop_47: - phi_v0_4 = phi_v0_3; - if (((phi_v0_3->unk0 >> 0x1F) == 0) || (phi_v0_3->unk4 != temp_a3->unk1E)) { - temp_v0_4 = phi_v0_3 + 0x148; - phi_v0_3 = temp_v0_4; - phi_v0_4 = temp_v0_4; - if (temp_v0_4 != &D_803B1A30) { + if ((((u32) var_v0_4->unk0 >> 0x1F) == 0) || (var_v0_4->unk4 != var_a3_2->entries[0].id)) { + var_v0_4 += 0x148; + if (var_v0_4 != &gSequenceChannels) { goto loop_47; } } - if (phi_v0_4 == &D_803B1A30) { - temp_a3->unk0 = 0; - phi_v0_9 = 0; + if (var_v0_4 == &gSequenceChannels) { + var_a3_2->nextSide = 0; + var_v0_3 = 0; goto block_84; } goto block_52; } block_52: - if (phi_t2_2 == 2) { - phi_v0_5 = &D_803B1510; + if (var_t2 == 2) { + var_v0_5 = &gSequencePlayers; loop_54: - phi_v0_6 = phi_v0_5; - if (((phi_v0_5->unk0 >> 0x1F) == 0) || (phi_v0_5->unk4 != temp_a3->unk2A)) { - temp_v0_5 = phi_v0_5 + 0x148; - phi_v0_5 = temp_v0_5; - phi_v0_6 = temp_v0_5; - if (temp_v0_5 != &D_803B1A30) { + if ((((u32) var_v0_5->unk0 >> 0x1F) == 0) || (var_v0_5->unk4 != var_a3_2->entries[1].id)) { + var_v0_5 += 0x148; + if (var_v0_5 != &gSequenceChannels) { goto loop_54; } } - if (phi_v0_6 == &D_803B1A30) { - temp_a3->unk0 = 1; - phi_v0_9 = 1; + var_v0_3 = 1; + if (var_v0_5 == &gSequenceChannels) { + var_a3_2->nextSide = 1; goto block_84; } goto block_76; } goto block_76; } - if (sp20 == 1) { - if (phi_t1_2 == 2) { + if (sp20 == (s32) 1U) { + if (var_t1 == 2) { temp_a1_3 = gMaxSimultaneousNotes; - phi_v1_5 = 0; - phi_v1_6 = 0; + var_v1_4 = 0; if (temp_a1_3 > 0) { - phi_v0_7 = D_803B1508; + var_v0_6 = gNotes; loop_63: - phi_v1_6 = phi_v1_5; - if ((phi_v0_7->unkB2 != temp_a3->unk1E) || ((phi_v0_7->unkB0 >> 0x1F) == 0)) { - temp_v1_3 = phi_v1_5 + 1; - phi_v0_7 += 0xC0; - phi_v1_5 = temp_v1_3; - phi_v1_6 = temp_v1_3; - if (temp_v1_3 < temp_a1_3) { + if ((var_v0_6->unkB2 != var_a3_2->entries[0].id) || (((u32) var_v0_6->unkB0 >> 0x1F) == 0)) { + var_v1_4 += 1; + var_v0_6 += 0xC0; + if (var_v1_4 < temp_a1_3) { goto loop_63; } } } - phi_a2 = temp_a3->unk1E; - phi_a2_2 = temp_a3->unk1E; - if (phi_v1_6 == temp_a1_3) { - temp_a3->unk0 = 0; - phi_v0_9 = 0; + var_v0_3 = 0; + if (var_v1_4 == temp_a1_3) { + var_a3_2->nextSide = 0; goto block_84; } goto block_68; } block_68: - phi_a2 = phi_a2_2; - phi_a2 = phi_a2_2; - if (phi_t2_2 == 2) { + if (var_t2 == 2) { temp_a1_4 = gMaxSimultaneousNotes; - phi_v1_7 = 0; - phi_v1_8 = 0; + var_v1_5 = 0; if (temp_a1_4 > 0) { - phi_v0_8 = D_803B1508; + var_v0_7 = gNotes; loop_71: - phi_v1_8 = phi_v1_7; - if ((phi_v0_8->unkB2 != temp_a3->unk2A) || ((phi_v0_8->unkB0 >> 0x1F) == 0)) { - temp_v1_4 = phi_v1_7 + 1; - phi_v0_8 += 0xC0; - phi_v1_7 = temp_v1_4; - phi_v1_8 = temp_v1_4; - if (temp_v1_4 < temp_a1_4) { + if ((var_v0_7->unkB2 != var_a3_2->entries[1].id) || (((u32) var_v0_7->unkB0 >> 0x1F) == 0)) { + var_v1_5 += 1; + var_v0_7 += 0xC0; + if (var_v1_5 < temp_a1_4) { goto loop_71; } } } - if (phi_v1_8 == temp_a1_4) { - temp_a3->unk0 = 1; - phi_v0_9 = 1; + var_v0_3 = 1; + if (var_v1_5 == temp_a1_4) { + var_a3_2->nextSide = 1; goto block_84; } goto block_76; @@ -617,227 +432,180 @@ loop_71: goto block_76; } block_76: - temp_v0_6 = temp_a3->unk0; - phi_v0_9 = temp_v0_6; - if (temp_v0_6 == 0) { - if (phi_t1_2 == 1) { - if (phi_t2_2 != 1) { - temp_a3->unk0 = 1; - phi_v0_9 = 1; + var_v0_3 = var_a3_2->nextSide; + if (var_v0_3 == 0) { + if (var_t1 == 1) { + var_v0_3 = 1; + if (var_t2 != 1) { + var_a3_2->nextSide = 1; goto block_84; } goto block_83; } goto block_84; } - if (phi_t2_2 == 1) { - if (phi_t1_2 != 1) { - temp_a3->unk0 = 0; - phi_v0_9 = 0; + if (var_t2 == 1) { + var_v0_3 = 0; + if (var_t1 != 1) { + var_a3_2->nextSide = 0; goto block_84; } block_83: - return 0; + return NULL; } block_84: - temp_v1_5 = (temp_a3 + (phi_v0_9 * 0xC))->unk1E; - if (temp_v1_5 != -1) { - *(sp34 + temp_v1_5) = 0; - if (sp20 == 1) { - arg4 = arg4; - sp28 = temp_a3; - func_800B8EA8((temp_a3 + (temp_a3->unk0 * 0xC))->unk1E, sp20, phi_a2, temp_a3); - phi_ra = arg4; + temp_v1_2 = var_a3_2->entries[var_v0_3].id; + if (temp_v1_2 != -1) { + *(sp34 + temp_v1_2) = 0; + if (sp20 == (s32) 1U) { + sp28 = var_a3_2; + discard_bank(var_a3_2->entries[var_a3_2->nextSide].id, sp20, var_a3_2->entries[0].id, var_a3_2); } } - temp_a0_2 = (arg0 + 0x194)->unk0; - temp_v1_6 = arg0 + 0x198; - phi_a3_2 = arg0 + 0x194; - phi_a3_3 = arg0 + 0x194; - phi_v1_10 = temp_v1_6; - phi_a3_5 = arg0 + 0x194; - phi_a3_4 = arg0 + 0x194; + temp_a0_2 = var_a3_2->nextSide; + temp_v1_3 = &arg0->temporary.pool; if (temp_a0_2 != 0) { - temp_v1_7 = arg0 + 0x198; - phi_v1_9 = temp_v1_7; + temp_v1_4 = &arg0->temporary.pool; if (temp_a0_2 != 1) { - return 0; + return NULL; } - (arg0 + 0x194)->unk2A = phi_ra; - temp_v0_7 = ((temp_v1_7->unk0 + temp_v1_7->unk8) - arg2) - 0x10; - (arg0 + 0x194)->unk20 = temp_v0_7; - (arg0 + 0x194)->unk24 = arg2; - phi_v0_10 = temp_v0_7; - if (temp_v0_7 < temp_v1_7->unk4) { - *(sp34 + (arg0 + 0x194)->unk1E) = 0; - if (sp20 != 0) { - if (sp20 != phi_t4) { - - } else { - sp28 = arg0 + 0x194; - sp24 = temp_v1_7; - func_800B8EA8((arg0 + 0x194)->unk1E, sp20); - goto block_106; - } - } else { - sp28 = arg0 + 0x194; - sp24 = temp_v1_7; - func_800B8F8C((arg0 + 0x194)->unk1E, sp20); + var_a3_2->entries[1].id = (s16) id; + var_v0_8 = (&temp_v1_4->start[temp_v1_4->size] - size) - 0x10; + var_a3_2->entries[1].ptr = var_v0_8; + var_a3_2->entries[1].size = (u32) size; + if ((u32) var_v0_8 < (u32) temp_v1_4->cur) { + *(sp34 + var_a3_2->entries[0].id) = 0; + switch (sp20) { /* switch 1; irregular */ + case 0: /* switch 1 */ + sp28 = var_a3_2; + sp24 = temp_v1_4; + discard_sequence(var_a3_2->entries[0].id, sp20); block_106: - phi_a3_2 = sp28; - phi_v1_9 = arg0 + 0x198; + var_a3_2 = sp28; + break; + case 1: /* switch 1 */ + sp28 = var_a3_2; + sp24 = temp_v1_4; + discard_bank(var_a3_2->entries[0].id, sp20); + goto block_106; } - phi_a3_2->unk1E = -1; - phi_v1_9->unk4 = phi_v1_9->unk0; - phi_a3_4 = phi_a3_2; - phi_v0_10 = phi_a3_2->unk20; + var_a3_2->entries[0].id = -1; + temp_v1_4->cur = temp_v1_4->start; + var_v0_8 = var_a3_2->entries[1].ptr; } - phi_v1_11 = phi_v0_10; + var_v1 = var_v0_8; goto block_99; } - (arg0 + 0x194)->unk1E = phi_ra; - (arg0 + 0x194)->unk14 = temp_v1_6->unk0; - (arg0 + 0x194)->unk18 = arg2; - temp_v0_8 = temp_v1_6->unk0 + arg2; - temp_v1_6->unk4 = temp_v0_8; - if ((arg0 + 0x194)->unk20 < temp_v0_8) { - *(sp34 + (arg0 + 0x194)->unk2A) = 0; - if (sp20 != 0) { - if (sp20 != phi_t4) { - - } else { - sp28 = arg0 + 0x194; - sp24 = temp_v1_6; - func_800B8EA8((arg0 + 0x194)->unk2A, sp20); - goto block_96; - } - } else { - sp28 = arg0 + 0x194; - sp24 = temp_v1_6; - func_800B8F8C((arg0 + 0x194)->unk2A, sp20); + var_a3_2->entries[0].id = (s16) id; + var_a3_2->entries[0].ptr = temp_v1_3->start; + var_a3_2->entries[0].size = (u32) size; + temp_v0_3 = &temp_v1_3->start[size]; + temp_v1_3->cur = temp_v0_3; + if ((u32) var_a3_2->entries[1].ptr < (u32) temp_v0_3) { + *(sp34 + var_a3_2->entries[1].id) = 0; + switch (sp20) { /* irregular */ + case 0: + sp28 = var_a3_2; + sp24 = temp_v1_3; + discard_sequence(var_a3_2->entries[1].id, sp20); block_96: - phi_a3_3 = sp28; - phi_v1_10 = arg0 + 0x198; + var_a3_2 = sp28; + break; + case 1: + sp28 = var_a3_2; + sp24 = temp_v1_3; + discard_bank(var_a3_2->entries[1].id, sp20); + goto block_96; } - phi_a3_3->unk2A = -1; - phi_a3_3->unk20 = phi_v1_10->unk0 + phi_v1_10->unk8; - phi_a3_5 = phi_a3_3; + var_a3_2->entries[1].id = -1; + var_a3_2->entries[1].ptr = &temp_v1_3->start[temp_v1_3->size]; } - phi_a3_4 = phi_a3_5; - phi_v1_11 = phi_a3_5->unk14; + var_v1 = var_a3_2->entries[0].ptr; block_99: - *phi_a3_4 = *phi_a3_4 ^ 1; - return phi_v1_11; + var_a3_2->nextSide ^= 1; + return var_v1; } - arg4 = arg4; - arg3 = phi_a3; - temp_v0_9 = soundAlloc(arg0 + 4, arg1 * arg2); - (arg0 + (*arg0 * 0xC))->unk14 = temp_v0_9; - if (temp_v0_9 == 0) { + arg3 = var_a3; + temp_v0_4 = soundAlloc(&arg0->persistent.pool, arg1 * size); + arg0->persistent.entries[arg0->persistent.numEntries].ptr = temp_v0_4; + if (temp_v0_4 == NULL) { if ((arg3 != 0) && (arg3 != 1)) { if (arg3 == 2) { - phi_a3 = 0; + var_a3 = 0; goto loop_1; } goto block_116; } - return 0; + return NULL; } block_116: - (arg0 + (*arg0 * 0xC))->unk1E = arg4; - (arg0 + (*arg0 * 0xC))->unk18 = arg2; - temp_v1_8 = *arg0; - temp_v0 = (arg0 + (temp_v1_8 * 0xC))->unk14; - *arg0 = temp_v1_8 + 1; - return temp_v0; + arg0->persistent.entries[arg0->persistent.numEntries].id = (s16) id; + arg0->persistent.entries[arg0->persistent.numEntries].size = (u32) size; + temp_v1 = arg0->persistent.numEntries; + arg0->persistent.numEntries = temp_v1 + 1; + return arg0->persistent.entries[temp_v1].ptr; } #else GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B93BC.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -u32 func_800B9AD8(s32, s32, s32); // extern -s32 func_800BA858(s32); // extern +void *get_bank_or_seq(s32 poolIdx, s32 arg1, s32 id) { + void *ret; -void func_800B9A90(s32 arg0, s32 arg1, s32 arg2) { - if (func_800BA858(arg2) != 0) { - return; + ret = unk_pool1_lookup(poolIdx, id); + if (ret != NULL) { + return ret; } - func_800B9AD8(arg0, arg1, arg2); + return get_bank_or_seq_inner(poolIdx, arg1, id); } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9A90.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -u32 func_800B9A90(s32, ?, s32); // extern -extern u32 D_803AFC48; -extern u32 D_803AFE18; -extern u32 D_803AFFE8; +void *get_bank_or_seq_inner(s32 poolIdx, s32 arg1, s32 bankId) { + u32 i; + struct SoundMultiPool* loadedPool; + struct TemporaryPool* temporary; + struct PersistentPool* persistent; -u32 func_800B9AD8(s32 arg0, s32 arg1, s32 arg2) { - u32 temp_v0; - void *temp_v1; - u32 *phi_a1; - u32 *phi_v1; - u32 phi_v0; - u32 phi_v0_2; - - if (arg0 != 0) { - if (arg0 != 1) { - if (arg0 != 2) { - phi_a1 = sp18; - } else { - phi_a1 = &D_803AFFE8; - } - } else { - phi_a1 = &D_803AFE18; - } - } else { - phi_a1 = &D_803AFC48; + switch (poolIdx) { + case 0: + loadedPool = &gSeqLoadedPool; + break; + case 1: + loadedPool = &gBankLoadedPool; + break; + case 2: + loadedPool = &gUnusedLoadedPool; + break; } - temp_v1 = phi_a1 + 0x194; + + temporary = &loadedPool->temporary; if (arg1 == 0) { - if (arg2 == temp_v1->unk1E) { - temp_v1->unk0 = 1; - return temp_v1->unk14; + if (temporary->entries[0].id == bankId) { + temporary->nextSide = 1; + return temporary->entries[0].ptr; + } else if (temporary->entries[1].id == bankId) { + temporary->nextSide = 0; + return temporary->entries[1].ptr; + } else { + return NULL; } - if (arg2 == temp_v1->unk2A) { - temp_v1->unk0 = 0; - return temp_v1->unk20; - } - return 0; } - phi_v1 = phi_a1; - phi_v0 = 0; - phi_v0_2 = 0; - if (*phi_a1 != 0) { -loop_14: - if (arg2 == phi_v1->unk1E) { - return phi_v1->unk14; + + persistent = &loadedPool->persistent; + for (i = 0; i < persistent->numEntries; i++) { + if (persistent->entries[i].id == bankId) { + return persistent->entries[i].ptr; } - temp_v0 = phi_v0 + 1; - phi_v1 += 0xC; - phi_v0 = temp_v0; - if (temp_v0 >= *phi_a1) { - goto block_17; - } - goto loop_14; } -block_17: + if (arg1 == 2) { - phi_v0_2 = func_800B9A90(arg0, 0, arg0); + return get_bank_or_seq(poolIdx, 0, bankId); } - return phi_v0_2; + return NULL; } -#else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9AD8.s") -#endif #ifdef MIPS_TO_C -UNUSED void func_800B9BE4(f32 arg0, f32 arg1, void *arg2) { +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c +void func_800B9BE4(f32 arg0, f32 arg1, u16 *arg2) { ? sp4C; f32 sp30; f32 sp2C; @@ -846,22 +614,20 @@ UNUSED void func_800B9BE4(f32 arg0, f32 arg1, void *arg2) { f32 spC; ? *var_a0; f32 *var_a0_2; - f32 temp_f0; f32 temp_f10; f32 temp_f6; f32 temp_f8; - s16 *var_v1; - void *var_v1_2; + u16 *var_v1; + u16 *var_v1_2; - temp_f0 = D_800F2E80; var_a0 = &sp14; var_v1 = arg2 + 4; - spC = arg1 * temp_f0; - sp2C = arg0 * temp_f0; - sp10 = arg1 * arg0 * temp_f0; - sp30 = ((arg0 * arg0) + arg1) * temp_f0; + spC = arg1 * 262159.0f; + sp2C = arg0 * 262159.0f; + sp10 = arg1 * arg0 * 262159.0f; + sp30 = ((arg0 * arg0) + arg1) * 262159.0f; do { - *var_v1 = (s16) (u32) ((var_a0->unk-4 * arg0) + (arg1 * var_a0->unk-8)); + *var_v1 = (u16) (u32) ((var_a0->unk-4 * arg0) + (arg1 * var_a0->unk-8)); temp_f8 = var_a0->unk18; temp_f10 = var_a0->unk1C * arg0; var_a0 += 4; @@ -871,7 +637,7 @@ UNUSED void func_800B9BE4(f32 arg0, f32 arg1, void *arg2) { var_v1_2 = arg2; var_a0_2 = &spC; do { - var_v1_2->unk0 = (s16) (u32) var_a0_2->unk0; + var_v1_2->unk0 = (u16) (u32) var_a0_2->unk0; var_v1_2->unk2 = (s16) (u32) var_a0_2->unk4; var_v1_2->unk4 = (s16) (u32) var_a0_2->unk8; temp_f6 = var_a0_2->unkC; @@ -914,9 +680,9 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9FB8.s") //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 void func_800B9FB8(); /* extern */ void func_800BA250(); /* extern */ -void func_800BEF2C(? *); /* extern */ -extern u32 D_803B1510; -extern ? D_803B1A30; +void sequence_player_disable(? *); /* extern */ +extern u32 gSequencePlayers; +extern ? gSequenceChannels; extern ? gAudioBufferParameters; s32 func_800BA00C(void) { @@ -941,12 +707,12 @@ s32 func_800BA00C(void) { temp_t6 = D_803B0500; switch (temp_t6) { case 5: - phi_s0 = &D_803B1510; + phi_s0 = &gSequencePlayers; do { - func_800BEF2C(phi_s0); + sequence_player_disable(phi_s0); temp_s0 = phi_s0 + 0x148; phi_s0 = temp_s0; - } while (temp_s0 != &D_803B1A30); + } while (temp_s0 != &gSequenceChannels); D_803B0504 = 4; D_803B0500 += -1; break; @@ -963,11 +729,11 @@ s32 func_800BA00C(void) { if (temp_a2 > 0) { do { temp_a0 = phi_a0 + 1; - temp_v0_2 = D_803B1508 + phi_v1; + temp_v0_2 = gNotes + phi_v1; phi_a0 = temp_a0; if (((temp_v0_2->unkB0 >> 0x1F) != 0) && (temp_v0_2->unk59 != 0)) { temp_v0_2->unk68 = gAudioBufferParameters.unk18; - temp_v0_3 = D_803B1508 + phi_v1; + temp_v0_3 = gNotes + phi_v1; temp_v0_3->unk58 = temp_v0_3->unk58 | 0x10; phi_a2 = gMaxSimultaneousNotes; } @@ -1027,187 +793,160 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA00C.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800B8DE0(); // extern -s32 soundAlloc(? *, s32); // extern -void func_800B914C(? *, s16, s16, u16); // extern -void func_800B91C8(? *); // extern -void func_800B9244(? *); // extern -void func_800B9300(? *); // extern -void func_800BB030(s32); // extern -void func_800BD368(); // extern -void func_800BDD34(); // extern -extern ? D_800EA4D8; -extern s16 D_800EA5CC; -extern f32 D_800F2E98; -extern f32 D_800F2E9C; -extern ? D_803AF790; -extern ? D_803AFBB0; -extern u16 D_803AFBC0; -extern u8 D_803AFBC3; -extern s32 D_803AFBC4; +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c +? func_800B8DE0(); /* extern */ +? func_800B914C(? *, s16, s16, u16); /* extern */ +? init_note_free_list(); /* extern */ +? note_init_all(); /* extern */ extern s32 D_803AFBD0; -extern ? gNotesAndBuffersPool; extern ? D_803B0348; -extern ? D_803B0358; -extern ? D_803B0360; -extern ? D_803B0370; +extern struct PoolSplit2 D_803B0358; +extern struct PoolSplit D_803B0360; +extern struct PoolSplit D_803B0370; extern u8 D_803B0501; -extern s32 D_803B1508; -extern s32 gSampleDmaNumListItems; -extern ? gAudioBufferParameters; +extern void *gNotes; extern s32 D_803B70AC; -extern s32 gMaxSimultaneousNotes; extern s16 D_803B70B4; extern ? D_803B70C8; -extern s32 D_803B70D0; +extern ? D_803B70D0; extern f32 D_803B7178; extern s32 D_803B717C; +extern ? sAudioSynthesisPad; +static ? D_800EA4D8; /* unable to generate initializer; const */ +static s16 D_800EA5CC; /* unable to generate initializer; const */ void func_800BA250(void) { - ? *temp_s0_2; + ? *var_s0; f32 temp_f0; + s16 *temp_v0_2; + s16 *temp_v0_3; s16 temp_a1; s16 temp_a2; s16 temp_t0; s16 temp_t1; s16 temp_v1; - s32 *temp_s6; - s32 temp_s0; - s32 temp_s1; - s32 temp_s1_2; - s32 temp_s5; s32 temp_t2; - s32 temp_t6; - s32 temp_t8; s32 temp_t9; - s32 temp_v0_2; - s32 temp_v0_3; + s32 var_s1; + s32 var_s5; + struct SynthesisReverb *var_s0_2; + struct SynthesisReverb *var_s2; + struct SynthesisReverb *var_s2_2; u16 temp_a3; u16 temp_t7; - u32 temp_s2; + u32 temp_s0; + u32 temp_s1; u8 temp_v1_2; + void *temp_s6; void *temp_v0; - ? *phi_s0; - ? *phi_s2; - s32 phi_s5; - ? *phi_s2_2; - ? *phi_s0_2; - s32 phi_s1; temp_s6 = (D_803B0501 * 0x28) + &D_800EA4D8; gSampleDmaNumListItems = 0; temp_t9 = temp_s6->unk0; - gAudioBufferParameters.unk2 = temp_t9; - gAudioBufferParameters.unk4 = osAiSetFrequency(temp_t9 & 0xFFFF); - temp_a3 = gAudioBufferParameters.unk2; - gAudioBufferParameters.unk6 = ((temp_a3 / D_803B717C) + 0xF) & 0xFFF0; - temp_v1 = gAudioBufferParameters.unk6; + gAudioBufferParameters.frequency = (u16) temp_t9; + gAudioBufferParameters.aiFrequency = osAiSetFrequency(temp_t9 & 0xFFFF); + temp_a3 = gAudioBufferParameters.frequency; + gAudioBufferParameters.samplesPerFrameTarget = (((s32) temp_a3 / (s32) D_803B717C) + 0xF) & 0xFFF0; + temp_v1 = gAudioBufferParameters.samplesPerFrameTarget; temp_t0 = temp_v1 + 0x10; - gAudioBufferParameters.unkA = temp_v1 - 0x10; - gAudioBufferParameters.unk8 = temp_t0; - gAudioBufferParameters.unkC = (temp_t0 / 0xC0) + 1; - temp_a2 = gAudioBufferParameters.unkC; - gAudioBufferParameters.unkE = (temp_v1 / temp_a2) & 0xFFF8; - temp_t1 = gAudioBufferParameters.unkE; - temp_f0 = temp_a2; - gAudioBufferParameters.unk10 = temp_t1 + 8; - gAudioBufferParameters.unk12 = temp_t1 - 8; - gAudioBufferParameters.unk14 = 32000.0f / temp_a3; - gAudioBufferParameters.unk1C = D_800F2E98 / temp_f0; - gAudioBufferParameters.unk18 = 1.0f / temp_f0; - gMaxSimultaneousNotes = temp_s6->unk5; - D_803AFBC0 = temp_s6->unkC; - D_803B70B4 = ((temp_f0 * D_800F2E9C) / D_800EA5CC) / D_803B7178; - gAudioBufferParameters.unk0 = temp_s6->unk4; - temp_a1 = gAudioBufferParameters.unk0; - gAudioBufferParameters.unk6 = temp_v1 * temp_a1; - gAudioBufferParameters.unk8 = gAudioBufferParameters.unk8 * temp_a1; - gAudioBufferParameters.unkA = gAudioBufferParameters.unkA * temp_a1; - gAudioBufferParameters.unkC = temp_a2 * temp_a1; - D_803B70AC = (gMaxSimultaneousNotes * 0x14 * gAudioBufferParameters.unkC) + (temp_s6->unk6 << 5) + 0x1E0; + gAudioBufferParameters.minAiBufferLength = temp_v1 - 0x10; + gAudioBufferParameters.maxAiBufferLength = temp_t0; + gAudioBufferParameters.updatesPerFrame = (temp_t0 / 192) + 1; + temp_a2 = gAudioBufferParameters.updatesPerFrame; + gAudioBufferParameters.samplesPerUpdate = (temp_v1 / temp_a2) & 0xFFF8; + temp_t1 = gAudioBufferParameters.samplesPerUpdate; + temp_f0 = (f32) temp_a2; + gAudioBufferParameters.samplesPerUpdateMax = temp_t1 + 8; + gAudioBufferParameters.samplesPerUpdateMin = temp_t1 - 8; + gAudioBufferParameters.resampleRate = 32000.0f / (f32) temp_a3; + gAudioBufferParameters.unkUpdatesPerFrameScaled = 0.001171875f / temp_f0; + gAudioBufferParameters.updatesPerFrameInv = 1.0f / temp_f0; + gMaxSimultaneousNotes = (s32) temp_s6->unk5; + gVolume = (s16) temp_s6->unkC; + D_803B70B4 = (s16) (u32) (((temp_f0 * 2880000.0f) / (f32) D_800EA5CC) / D_803B7178); + gAudioBufferParameters.presetUnk4 = (s16) temp_s6->unk4; + temp_a1 = gAudioBufferParameters.presetUnk4; + gAudioBufferParameters.samplesPerFrameTarget = temp_v1 * temp_a1; + gAudioBufferParameters.maxAiBufferLength *= temp_a1; + gAudioBufferParameters.minAiBufferLength *= temp_a1; + gAudioBufferParameters.updatesPerFrame = temp_a2 * temp_a1; + D_803B70AC = (gMaxSimultaneousNotes * 0x14 * gAudioBufferParameters.updatesPerFrame) + (temp_s6->unk6 << 5) + 0x1E0; temp_s0 = temp_s6->unk10 + temp_s6->unk14 + temp_s6->unk18; temp_s1 = temp_s6->unk1C + temp_s6->unk20 + temp_s6->unk24; temp_t2 = temp_s0 + temp_s1; - D_803B0348.unk0 = (D_803AFBD0 - temp_t2) - 0x100; + D_803B0348.unk0 = (s32) ((D_803AFBD0 - temp_t2) - 0x100); D_803B0348.unkC = temp_t2; func_800B914C(&D_803B0348, temp_a1, temp_a2, temp_a3); - D_803B0358.unk0 = temp_s0; - D_803B0358.unk4 = temp_s1; - func_800B91C8(&D_803B0358); - D_803B0360.unk0 = temp_s6->unk10; - D_803B0360.unk4 = temp_s6->unk14; - D_803B0360.unk8 = temp_s6->unk18; - func_800B9244(&D_803B0360); - D_803B0370.unk0 = temp_s6->unk1C; - D_803B0370.unk4 = temp_s6->unk20; - D_803B0370.unk8 = temp_s6->unk24; - func_800B9300(&D_803B0370); + D_803B0358.wantPersistent = temp_s0; + D_803B0358.wantTemporary = temp_s1; + seq_and_bank_pool_init(&D_803B0358); + D_803B0360.wantSeq = temp_s6->unk10; + D_803B0360.wantBank = temp_s6->unk14; + D_803B0360.wantUnused = temp_s6->unk18; + persistent_pools_init(&D_803B0360); + D_803B0370.wantSeq = temp_s6->unk1C; + D_803B0370.wantBank = temp_s6->unk20; + D_803B0370.wantUnused = temp_s6->unk24; + temporary_pools_init(&D_803B0370); func_800B8DE0(); - D_803B1508 = soundAlloc(&gNotesAndBuffersPool, gMaxSimultaneousNotes * 0xC0); - func_800BDD34(); - func_800BD368(); - D_803AFBC4 = soundAlloc(&gNotesAndBuffersPool, gAudioBufferParameters.unkC * gMaxSimultaneousNotes * 0x10); - phi_s0 = &D_803B70C8; + gNotes = soundAlloc(&gNotesAndBuffersPool, gMaxSimultaneousNotes * 0xC0); + note_init_all(); + init_note_free_list(); + gNoteSubsEu = soundAlloc(&gNotesAndBuffersPool, gAudioBufferParameters.updatesPerFrame * gMaxSimultaneousNotes * 0x10); + var_s0 = &D_803B70C8; do { - temp_s0_2 = phi_s0 + 4; - temp_s0_2->unk-4 = soundAlloc(&gNotesAndBuffersPool, D_803B70AC * 8); - phi_s0 = temp_s0_2; - } while (temp_s0_2 != &D_803B70D0); - phi_s2 = &D_803AF790; + var_s0 += 4; + var_s0->unk-4 = soundAlloc(&gNotesAndBuffersPool, D_803B70AC * 8); + } while (var_s0 != &D_803B70D0); + var_s2 = gSynthesisReverbs; do { - temp_s2 = phi_s2 + 0x108; - temp_s2->unk-107 = 0; - phi_s2 = temp_s2; - } while (temp_s2 < &D_803AFBB0); - D_803AFBC3 = temp_s6->unk6; - phi_s5 = 0; - phi_s2_2 = &D_803AF790; - if (D_803AFBC3 > 0) { + var_s2 += 0x108; + var_s2->unk-107 = 0; + } while ((u32) var_s2 < (u32) &sAudioSynthesisPad); + gNumSynthesisReverbs = (s8) temp_s6->unk6; + var_s2_2 = gSynthesisReverbs; + var_s5 = 0; + if (gNumSynthesisReverbs > 0) { do { - temp_v0 = temp_s6->unk8 + (phi_s5 * 4); + temp_v0 = temp_s6->unk8 + (var_s5 * 4); temp_t7 = temp_v0->unk1 << 6; - phi_s2_2->unk6 = temp_t7; - phi_s2_2->unk4 = temp_v0->unk0; - phi_s2_2->unk1 = 8; - phi_s2_2->unk8 = temp_v0->unk2; - phi_s2_2->unk18 = soundAlloc(&gNotesAndBuffersPool, (temp_t7 & 0xFFFF) * 2); - temp_v1_2 = phi_s2_2->unk4; - phi_s2_2->unk1C = soundAlloc(&gNotesAndBuffersPool, phi_s2_2->unk6 * 2); - phi_s2_2->unkC = 0; - phi_s2_2->unk10 = 0; - phi_s2_2->unk3 = 0; - phi_s2_2->unk2 = 2; - phi_s2_2->unk14 = phi_s2_2->unk6; + var_s2_2->windowSize = temp_t7; + var_s2_2->downsampleRate = temp_v0->unk0; + var_s2_2->useReverb = 8; + var_s2_2->reverbGain = temp_v0->unk2; + var_s2_2->ringBuffer.left = soundAlloc(&gNotesAndBuffersPool, (temp_t7 & 0xFFFF) * 2); + temp_v1_2 = var_s2_2->downsampleRate; + var_s2_2->ringBuffer.right = soundAlloc(&gNotesAndBuffersPool, var_s2_2->windowSize * 2); + var_s2_2->nextRingBufferPos = 0; + var_s2_2->unkC = 0; + var_s2_2->curFrame = 0; + var_s2_2->framesLeftToIgnore = 2; + var_s2_2->bufSizePerChannel = (s32) var_s2_2->windowSize; if (temp_v1_2 != 1) { - phi_s2_2->unk0 = 1; - phi_s2_2->unkA = 0x8000 / temp_v1_2; - phi_s2_2->unk20 = soundAlloc(&gNotesAndBuffersPool, 0x20); - phi_s2_2->unk24 = soundAlloc(&gNotesAndBuffersPool, 0x20); - phi_s2_2->unk28 = soundAlloc(&gNotesAndBuffersPool, 0x20); - phi_s2_2->unk2C = soundAlloc(&gNotesAndBuffersPool, 0x20); - phi_s1 = 0; - if (gAudioBufferParameters.unkC > 0) { - phi_s0_2 = phi_s2_2; + var_s2_2->resampleFlags = 1; + var_s2_2->resampleRate = (u16) (0x8000 / (s32) temp_v1_2); + var_s1 = 0; + var_s2_2->resampleStateLeft = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); + var_s2_2->resampleStateRight = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); + var_s2_2->unk24 = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); + var_s2_2->unk28 = soundAlloc(&gNotesAndBuffersPool, 0x00000020U); + if (gAudioBufferParameters.updatesPerFrame > 0) { + var_s0_2 = var_s2_2; do { - temp_v0_2 = soundAlloc(&gNotesAndBuffersPool, 0x300); - temp_t6 = temp_v0_2 + 0x180; - phi_s0_2->unk34 = temp_v0_2; - phi_s0_2->unk38 = temp_t6; - temp_v0_3 = soundAlloc(&gNotesAndBuffersPool, 0x300); - temp_t8 = temp_v0_3 + 0x180; - phi_s0_2->unk98 = temp_v0_3; - phi_s0_2->unk9C = temp_t8; - temp_s1_2 = phi_s1 + 1; - phi_s0_2 += 0x14; - phi_s1 = temp_s1_2; - } while (temp_s1_2 < gAudioBufferParameters.unkC); + temp_v0_2 = soundAlloc(&gNotesAndBuffersPool, 0x00000300U); + var_s0_2->items[0][0].toDownsampleLeft = temp_v0_2; + var_s0_2->items[0][0].toDownsampleRight = temp_v0_2 + 0x180; + temp_v0_3 = soundAlloc(&gNotesAndBuffersPool, 0x00000300U); + var_s0_2->items[1][0].toDownsampleLeft = temp_v0_3; + var_s0_2->items[1][0].toDownsampleRight = temp_v0_3 + 0x180; + var_s1 += 1; + var_s0_2 += 0x14; + } while (var_s1 < gAudioBufferParameters.updatesPerFrame); } } - temp_s5 = phi_s5 + 1; - phi_s5 = temp_s5; - phi_s2_2 += 0x108; - } while (temp_s5 < D_803AFBC3); + var_s5 += 1; + var_s2_2 += 0x108; + } while (var_s5 < gNumSynthesisReverbs); } func_800BB030(gMaxSimultaneousNotes); osWritebackDCacheAll(); @@ -1216,36 +955,101 @@ void func_800BA250(void) { GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA250.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern ? D_803B01B8; -extern s32 D_803B01C4; +void *unk_pool1_lookup(s32 poolIdx, s32 id) { + s32 i; -s32 func_800BA858(s32 arg0, s32 arg1) { - s32 temp_v0; - s32 temp_v1; - ? *phi_a1; - s32 phi_v0; - - temp_v1 = D_803B01C4; - phi_v0 = 0; - if (temp_v1 > 0) { - phi_a1 = &D_803B01B8; -loop_2: - temp_v0 = phi_v0 + 1; - phi_v0 = temp_v0; - if ((arg0 == phi_a1->unk18) && (arg1 == phi_a1->unk1A)) { - return phi_a1->unk10; + for (i = 0; i < gUnkPool1.pool.numAllocatedEntries; i++) { + if (gUnkPool1.entries[i].poolIndex == poolIdx && gUnkPool1.entries[i].id == id) { + return gUnkPool1.entries[i].ptr; } - phi_a1 += 0xC; - if (temp_v0 >= temp_v1) { - // Duplicate return node #6. Try simplifying control flow for better match - return 0; - } - goto loop_2; } - return 0; + return NULL; +} + +#ifdef MIPS_TO_C +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c +? audio_dma_copy_immediate(s32, u8 *, u32, s32); /* extern */ +? func_800BB584(s32); /* extern */ +extern ? gBankLoadStatus; +extern ? gSeqLoadStatus; +extern s32 D_803B706C; +extern s32 D_803B7070; +extern s32 D_803B7074; +extern s32 gCtlEntries; + +void func_800BA8B0(s16 arg0, s32 arg1) { + s32 sp3C; + s32 sp38; + u32 sp34; + s32 sp30; + void *sp20; + s32 temp_a2; + s32 var_a3; + s32 var_s1; + u32 temp_a1; + u8 *temp_v0_3; + u8 *temp_v0_4; + u8 *temp_v0_5; + void *temp_v0; + void *temp_v0_2; + + var_s1 = arg1; + switch (arg0) { /* irregular */ + case 0: + sp3C = D_803B706C; + break; + case 1: + sp3C = D_803B7070; + break; + case 2: + sp3C = D_803B7074; + break; + } + temp_v0 = sp3C + (var_s1 * 8); + if (temp_v0->unk8 == 0) { + var_s1 = temp_v0->unk4; + } + if (unk_pool1_lookup((s32) arg0, var_s1) == NULL) { + temp_v0_2 = sp3C + (var_s1 * 8); + temp_a2 = gUnkPool1.pool.numAllocatedEntries; + temp_a1 = temp_v0_2->unk8; + var_a3 = temp_v0_2->unk4; + if (arg0 == 1) { + var_a3 += 0x10; + } + sp34 = temp_a1; + sp38 = temp_a2; + sp30 = var_a3; + temp_v0_3 = soundAlloc(&gUnkPool1.pool, temp_a1); + gUnkPool1.entries[temp_a2].ptr = temp_v0_3; + if (temp_v0_3 != NULL) { + sp20 = (temp_a2 * 0xC) + &gUnkPool1; + audio_dma_copy_immediate(var_a3, temp_v0_3, sp34, var_a3); + gUnkPool1.entries[temp_a2].poolIndex = arg0; + gUnkPool1.entries[temp_a2].id = (s16) var_s1; + gUnkPool1.entries[temp_a2].size = sp34; + switch (arg0) { /* switch 1; irregular */ + case 0: /* switch 1 */ + temp_v0_4 = var_s1 + &gSeqLoadStatus; + if (*temp_v0_4 != 5) { + *temp_v0_4 = 5; + return; + } + break; + case 1: /* switch 1 */ + (gCtlEntries + (var_s1 * 0xC))->unk4 = (u8 *) (gUnkPool1.entries[temp_a2].ptr + 4); + func_800BB584(var_s1); + temp_v0_5 = var_s1 + &gBankLoadStatus; + if (*temp_v0_5 != 5) { + *temp_v0_5 = 5; + } + break; + } + } + } else { + case 2: /* switch 1 */ + } } #else -GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA858.s") +GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA8B0.s") #endif diff --git a/src/audio/heap.h b/src/audio/heap.h index 7ca2f2b3d..f3e32c08a 100644 --- a/src/audio/heap.h +++ b/src/audio/heap.h @@ -22,6 +22,103 @@ struct SoundAllocPool { s32 numAllocatedEntries; }; // size = 0x10 -extern struct SoundAllocPool gNotesAndBuffersPool; +struct SeqOrBankEntry { + u8 *ptr; + u32 size; + s16 poolIndex; + s16 id; +}; // size = 0xC -#endif // AUDIO_HEAP_H \ No newline at end of file +struct PersistentPool { + /*0x00*/ u32 numEntries; + /*0x04*/ struct SoundAllocPool pool; + /*0x14*/ struct SeqOrBankEntry entries[32]; +}; // size = 0x194 + +struct TemporaryPool { + /*EU, SH*/ + /*0x00, 0x00*/ u32 nextSide; + /*0x04, */ struct SoundAllocPool pool; + /*0x04, pool.start */ + /*0x08, pool.cur */ + /*0x0C, 0x0C pool.size */ + /*0x10, 0x10 pool.numAllocatedEntries */ + /*0x14, */ struct SeqOrBankEntry entries[2]; + /*0x14, 0x14 entries[0].ptr */ + /*0x18, entries[0].size*/ + /*0x1C, 0x1E entries[0].id */ + /*0x20, 0x20 entries[1].ptr */ + /*0x24, entries[1].size*/ + /*0x28, 0x2A entries[1].id */ +}; // size = 0x2C + +struct SoundMultiPool { + /*0x000*/ struct PersistentPool persistent; + /*0x194*/ struct TemporaryPool temporary; + /* */ u32 pad2[4]; +}; // size = 0x1D0 + +struct Unk1Pool { + struct SoundAllocPool pool; + struct SeqOrBankEntry entries[32]; +}; + +struct UnkEntry { + s8 used; + s8 medium; + s8 bankId; + u32 pad; + u8 *srcAddr; + u8 *dstAddr; + u32 size; +}; + +struct UnkPool { + /*0x00*/ struct SoundAllocPool pool; + /*0x10*/ struct UnkEntry entries[64]; + /*0x510*/ s32 numEntries; + /*0x514*/ u32 unk514; +}; + +struct PoolSplit { + u32 wantSeq; + u32 wantBank; + u32 wantUnused; + u32 wantCustom; +}; // size = 0x10 + +struct PoolSplit2 { + u32 wantPersistent; + u32 wantTemporary; +}; // size = 0x8 + +void discard_bank(s32 bankId); +void discard_sequence(s32 seqId); +void *soundAlloc(struct SoundAllocPool *pool, u32 size); +void sound_alloc_pool_init(struct SoundAllocPool *pool, void *memAddr, u32 size); +void persistent_pool_clear(struct PersistentPool *persistent); +void temporary_pool_clear(struct TemporaryPool *temporary); +void *get_bank_or_seq(s32 poolIdx, s32 arg1, s32 id); +void *get_bank_or_seq_inner(s32 poolIdx, s32 arg1, s32 bankId); +void func_800B90E0(struct SoundAllocPool *pool); +void seq_and_bank_pool_init(struct PoolSplit2 *a); +void persistent_pools_init(struct PoolSplit *a); +void temporary_pools_init(struct PoolSplit *a); +void *unk_pool1_lookup(s32 poolIdx, s32 id); + +// Note: In some .asm files D_803AFBC8 has been replaced with gLeftVolRampings +// That is almost certainly incorrect, but I don't know how to fix it at this point +extern struct SoundAllocPool gAudioSessionPool; // D_803AFBC8 +extern struct SoundAllocPool gAudioInitPool; // D_803AFBD8 +extern struct SoundAllocPool gNotesAndBuffersPool; +extern struct SoundAllocPool gPersistentCommonPool; // D_803AFC28 +extern struct SoundAllocPool gTemporaryCommonPool; // D_803AFC38 +extern struct SoundMultiPool gSeqLoadedPool; // D_803AFC48 +extern struct SoundMultiPool gBankLoadedPool; // D_803AFE18 +extern struct Unk1Pool gUnkPool1; // D_803B01B8 +extern u8 gBankLoadStatus[64]; // D_803B03C0 +extern u8 gSeqLoadStatus[256]; // D_803B0400 +extern struct SoundMultiPool gUnusedLoadedPool; // D_803AFFE8 +extern struct SoundAllocPool gSeqAndBankPool; // D_803AFC18 + +#endif // AUDIO_HEAP_H diff --git a/src/audio/internal.h b/src/audio/internal.h index f9bbc5593..a9aaa4628 100644 --- a/src/audio/internal.h +++ b/src/audio/internal.h @@ -1,8 +1,51 @@ #ifndef AUDIO_INTERNAL_H #define AUDIO_INTERNAL_H -#include +#include +#include "types.h" + +#define SEQUENCE_PLAYERS 4 +#define SEQUENCE_CHANNELS 48 +#define SEQUENCE_LAYERS 64 + +#define LAYERS_MAX 4 +#define CHANNELS_MAX 16 + +#define NO_LAYER ((struct SequenceChannelLayer *)(-1)) + +#define MUTE_BEHAVIOR_STOP_SCRIPT 0x80 // stop processing sequence/channel scripts +#define MUTE_BEHAVIOR_STOP_NOTES 0x40 // prevent further notes from playing +#define MUTE_BEHAVIOR_SOFTEN 0x20 // lower volume, by default to half + +#define SEQUENCE_PLAYER_STATE_0 0 +#define SEQUENCE_PLAYER_STATE_FADE_OUT 1 +#define SEQUENCE_PLAYER_STATE_2 2 +#define SEQUENCE_PLAYER_STATE_3 3 +#define SEQUENCE_PLAYER_STATE_4 4 + +#define NOTE_PRIORITY_DISABLED 0 +#define NOTE_PRIORITY_STOPPING 1 +#define NOTE_PRIORITY_MIN 2 +#define NOTE_PRIORITY_DEFAULT 3 + +#define TATUMS_PER_BEAT 48 + +// abi.h contains more details about the ADPCM and S8 codecs, "skip" skips codec processing +#define CODEC_ADPCM 0 +#define CODEC_S8 1 +#define CODEC_SKIP 2 + +#define TEMPO_SCALE TATUMS_PER_BEAT + +// TODO: US_FLOAT should probably be renamed to JP_DOUBLE since eu seems to use floats too +#define US_FLOAT(x) x ## f +#define US_FLOAT2(x) x + +// Convert u8 or u16 to f32. On JP, this uses a u32->f32 conversion, +// resulting in more bloated codegen, while on US it goes through s32. +// Since u8 and u16 fit losslessly in both, behavior is the same. +#define FLOAT_CAST(x) (f32) (s32) (x) // No-op printf macro which leaves string literals in rodata in IDO. IDO // doesn't support variadic macros, so instead we let the parameter list @@ -15,11 +58,59 @@ #define stubbed_printf(...) #endif -#define stubbed_printf_0(msg) stubbed_printf(msg) -#define stubbed_printf_1(msg, a) stubbed_printf(msg, a) -#define stubbed_printf_2(msg, a, b) stubbed_printf(msg, a, b) -#define stubbed_printf_3(msg, a, b, c) stubbed_printf(msg, a, b, c) +#define eu_stubbed_printf_0(msg) stubbed_printf(msg) +#define eu_stubbed_printf_1(msg, a) stubbed_printf(msg, a) +#define eu_stubbed_printf_2(msg, a, b) stubbed_printf(msg, a, b) +#define eu_stubbed_printf_3(msg, a, b, c) stubbed_printf(msg, a, b, c) +struct NotePool; + +struct AudioListItem { + // A node in a circularly linked list. Each node is either a head or an item: + // - Items can be either detached (prev = NULL), or attached to a list. + // 'value' points to something of interest. + // - List heads are always attached; if a list is empty, its head points + // 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. + struct AudioListItem *prev; + struct AudioListItem *next; + union { + void *value; // either Note* or SequenceChannelLayer* + s32 count; + } u; + struct NotePool *pool; +}; // size = 0x10 + +struct NotePool { + struct AudioListItem disabled; + struct AudioListItem decaying; + struct AudioListItem releasing; + struct AudioListItem active; +}; + +struct VibratoState { + /*0x00, 0x00*/ struct SequenceChannel *seqChannel; + /*0x04, 0x04*/ u32 time; + /* , 0x08*/ s16 *curve; + /* , 0x0C*/ f32 extent; + /* , 0x10*/ f32 rate; + /* , 0x14*/ u8 active; + /*0x12, 0x16*/ u16 rateChangeTimer; + /*0x14, 0x18*/ u16 extentChangeTimer; + /*0x16, 0x1A*/ u16 delay; +}; // size = 0x18, 0x1C on EU + +// Pitch sliding by up to one octave in the positive direction. Negative +// direction is "supported" by setting extent to be negative. The code +// extrapolates exponentially in the wrong direction in that case, but that +// doesn't prevent seqplayer from doing it, AFAICT. +struct Portamento { + u8 mode; // bit 0x80 denotes something; the rest are an index 0-5 + f32 cur; + f32 speed; + f32 extent; +}; // size = 0x10 struct AdsrEnvelope { s16 delay; @@ -54,8 +145,269 @@ struct AudioBankSound { f32 tuning; // frequency scale factor }; // size = 0x8 -struct NoteSub -{ +struct Instrument { + /*0x00*/ u8 loaded; + /*0x01*/ u8 normalRangeLo; + /*0x02*/ u8 normalRangeHi; + /*0x03*/ u8 releaseRate; + /*0x04*/ struct AdsrEnvelope *envelope; + /*0x08*/ struct AudioBankSound lowNotesSound; + /*0x10*/ struct AudioBankSound normalNotesSound; + /*0x18*/ struct AudioBankSound highNotesSound; +}; // size = 0x20 + +struct Drum { + u8 releaseRate; + u8 pan; + u8 loaded; + struct AudioBankSound sound; + struct AdsrEnvelope *envelope; +}; + +struct AudioBank { + struct Drum **drums; + struct Instrument *instruments[1]; +}; // dynamic size + +struct CtlEntry { + u8 unused; + u8 numInstruments; + u8 numDrums; + struct Instrument **instruments; + struct Drum **drums; +}; // size = 0xC + +struct M64ScriptState { + u8 *pc; + u8 *stack[4]; + u8 remLoopIters[4]; + u8 depth; +}; // size = 0x1C + +// Also known as a Group, according to debug strings. +struct SequencePlayer { + /*US/JP, EU, SH */ + /*0x000, 0x000, 0x000*/ u8 enabled : 1; + /*0x000, 0x000*/ u8 finished : 1; // never read + /*0x000, 0x000*/ u8 muted : 1; + /*0x000, 0x000*/ u8 seqDmaInProgress : 1; + /*0x000, 0x000*/ u8 bankDmaInProgress : 1; + /* 0x000*/ u8 recalculateVolume : 1; + /*0x002, 0x001, 0x001*/ u8 state; + /*0x003, 0x002*/ u8 noteAllocPolicy; + /*0x004, 0x003*/ u8 muteBehavior; + /*0x005, 0x004*/ u8 seqId; + /*0x006, 0x005*/ u8 defaultBank[1]; // must be an array to get a comparison + // to match; other u8's might also be part of that array + /*0x007, 0x006*/ u8 loadingBankId; + /* , 0x007, 0x007*/ s8 seqVariationEu[1]; + /*0x00A, 0x008*/ u16 tempo; // beats per minute in JP, tatums per minute in US/EU + /*0x00C, 0x00A*/ u16 tempoAcc; + /*0x010, 0x00C, 0x00E*/ s16 transposition; + /*0x012, 0x00E, 0x010*/ u16 delay; + /*0x00E, 0x010, 0x012*/ u16 fadeRemainingFrames; + /* , 0x012, 0x014*/ u16 fadeTimerUnkEu; + /*0x014, 0x014*/ u8 *seqData; // buffer of some sort + /*0x018, 0x018, 0x1C*/ f32 fadeVolume; // set to 1.0f + /*0x01C, 0x01C*/ f32 fadeVelocity; // set to 0.0f + /*0x020, 0x020, 0x024*/ f32 volume; // set to 0.0f + /*0x024, 0x024*/ f32 muteVolumeScale; // set to 0.5f + /* , 0x028, 0x02C*/ f32 fadeVolumeScale; + /* , 0x02C*/ f32 appliedFadeVolume; + /*0x02C, 0x030, 0x034*/ struct SequenceChannel *channels[CHANNELS_MAX]; + /*0x06C, 0x070*/ struct M64ScriptState scriptState; + /*0x088, 0x08C*/ u8 *shortNoteVelocityTable; + /*0x08C, 0x090*/ u8 *shortNoteDurationTable; + /*0x090, 0x094*/ struct NotePool notePool; + /*0x0D0, 0x0D4*/ OSMesgQueue seqDmaMesgQueue; + /*0x0E8, 0x0EC*/ OSMesg seqDmaMesg; + /*0x0EC, 0x0F0*/ OSIoMesg seqDmaIoMesg; + /*0x100, 0x108*/ OSMesgQueue bankDmaMesgQueue; + /*0x118, 0x120*/ OSMesg bankDmaMesg; + /*0x11C, 0x124*/ OSIoMesg bankDmaIoMesg; + /*0x130, 0x13C*/ u8 *bankDmaCurrMemAddr; + /*0x138, 0x140*/ uintptr_t bankDmaCurrDevAddr; + /*0x13C, 0x144*/ ssize_t bankDmaRemaining; +}; // size = 0x140, 0x148 on EU, 0x14C on SH + +struct AdsrSettings { + u8 releaseRate; + u8 sustain; + struct AdsrEnvelope *envelope; +}; // size = 0x8 + +struct AdsrState { + /*0x00, 0x00*/ u8 action; + /*0x01, 0x01*/ u8 state; + /*0x08, 0x02*/ s16 envIndex; + /*0x0A, 0x04*/ s16 delay; + /* , 0x08*/ f32 sustain; + /* , 0x0C*/ f32 velocity; + /* , 0x10*/ f32 fadeOutVel; + /* , 0x14*/ f32 current; + /* , 0x18*/ f32 target; + s32 pad1C; + /*0x1C, 0x20*/ struct AdsrEnvelope *envelope; +}; // size = 0x20, 0x24 in EU + +struct ReverbBitsData { + /* 0x00 */ u8 bit0 : 1; + /* 0x00 */ u8 bit1 : 1; + /* 0x00 */ u8 bit2 : 1; + /* 0x00 */ u8 usesHeadsetPanEffects : 1; + /* 0x00 */ u8 stereoHeadsetEffects : 2; + /* 0x00 */ u8 strongRight : 1; + /* 0x00 */ u8 strongLeft : 1; +}; + +union ReverbBits { + /* 0x00 */ struct ReverbBitsData s; + /* 0x00 */ u8 asByte; +}; +struct ReverbInfo { + u8 reverbVol; + u8 synthesisVolume; // UQ4.4, although 0 <= x < 1 is rounded up to 1 + u8 pan; + union ReverbBits reverbBits; + f32 freqScale; + f32 velocity; + s32 unused; + s16 *filter; +}; + +struct NoteAttributes { + u8 reverbVol; + u8 pan; + f32 freqScale; + f32 velocity; +}; // size = 0x10 + +// Also known as a SubTrack, according to debug strings. +// Confusingly, a SubTrack is a container of Tracks. +struct SequenceChannel { + /* U/J, EU, SH */ + /*0x00, 0x00*/ u8 enabled : 1; + /*0x00, 0x00*/ u8 finished : 1; + /*0x00, 0x00*/ u8 stopScript : 1; + /*0x00, 0x00*/ u8 stopSomething2 : 1; // sets SequenceChannelLayer.stopSomething + /*0x00, 0x00*/ u8 hasInstrument : 1; + /*0x00, 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; + } as_bitfields; + u8 as_u8; + } changes; + /*0x01, 0x02*/ u8 noteAllocPolicy; + /*0x02, 0x03, 0x03*/ u8 muteBehavior; + /*0x03, 0x04, 0x04*/ u8 reverbVol; // until EU: Q1.7, after EU: UQ0.8 + /*0x04, ????*/ u8 notePriority; // 0-3 + /*0x05, 0x06*/ u8 bankId; + /* , 0x07*/ u8 reverbIndex; + /* , 0x08, 0x09*/ u8 bookOffset; + /* , 0x09*/ u8 newPan; + /* , 0x0A*/ u8 panChannelWeight; // proportion of pan that comes from the channel (0..128) + /*0x08, 0x0C, 0x0E*/ u16 vibratoRateStart; // initially 0x800 + /*0x0A, 0x0E, 0x10*/ u16 vibratoExtentStart; + /*0x0C, 0x10, 0x12*/ u16 vibratoRateTarget; // initially 0x800 + /*0x0E, 0x12, 0x14*/ u16 vibratoExtentTarget; + /*0x10, 0x14, 0x16*/ u16 vibratoRateChangeDelay; + /*0x12, 0x16, 0x18*/ u16 vibratoExtentChangeDelay; + /*0x14, 0x18, 0x1A*/ u16 vibratoDelay; + /*0x16, 0x1A, 0x1C*/ u16 delay; + /*0x18, 0x1C, 0x1E*/ s16 instOrWave; // either 0 (none), instrument index + 1, or + // 0x80..0x83 for sawtooth/triangle/sine/square waves. + /*0x1A, 0x1E, 0x20*/ s16 transposition; + /*0x1C, 0x20, 0x24*/ f32 volumeScale; + /*0x20, 0x24, 0x28*/ f32 volume; + /* , 0x28*/ s32 pan; + /* , 0x2C*/ f32 appliedVolume; + /*0x2C, 0x30*/ f32 freqScale; + /*0x30, 0x34*/ u8 (*dynTable)[][2]; + /*0x34, ????*/ struct Note *noteUnused; // never read + /*0x38, ????*/ struct SequenceChannelLayer *layerUnused; // never read + /*0x3C, 0x40*/ struct Instrument *instrument; + /*0x40, 0x44*/ struct SequencePlayer *seqPlayer; + /*0x44, 0x48*/ struct SequenceChannelLayer *layers[LAYERS_MAX]; + /*0x54, 0x58 */ s8 soundScriptIO[8]; // bridge between sound script and audio lib. For player 2, + // [0] contains enabled, [4] contains sound ID, [5] contains reverb adjustment + /*0x5C, 0x60*/ struct M64ScriptState scriptState; + /*0x78, 0x7C*/ struct AdsrSettings adsr; + /*0x80, 0x84*/ struct NotePool notePool; +}; // size = 0xC0, 0xC4 in EU, 0xD0 in SH + +// Also known as a Track, according to debug strings. +struct SequenceChannelLayer { + /* U/J, EU, SH */ + /*0x00, 0x00*/ u8 enabled : 1; + /*0x00, 0x00*/ u8 finished : 1; + /*0x00, 0x00*/ u8 stopSomething : 1; // ? + /*0x00, 0x00*/ u8 continuousNotes : 1; // keep the same note for consecutive notes with the same sound + /* , 0x00*/ u8 unusedEu0b8 : 1; + /* , 0x00*/ u8 notePropertiesNeedInit : 1; + /* , 0x00*/ u8 ignoreDrumPan : 1; + /* , 0x01, 0x02*/ u8 instOrWave; + /*0x01, 0x02, 0x03*/ u8 status; // 0x03 in SH + /*0x02, 0x03*/ u8 noteDuration; // set to 0x80 + /*0x03, 0x04*/ u8 portamentoTargetNote; + /* , 0x05*/ u8 pan; // 0..128 + /* , 0x06, 0x07*/ u8 notePan; + /*0x04, 0x08*/ struct Portamento portamento; + /*0x14, 0x18*/ struct AdsrSettings adsr; + /*0x1C, 0x20*/ u16 portamentoTime; + /*0x1E, 0x22*/ 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) + /*0x20, 0x24, 0x24*/ f32 freqScale; + /*0x24, 0x28, 0x2C*/ f32 velocitySquare; + /*0x2C, 0x2C, 0x30*/ f32 noteVelocity; + /*0x34, 0x30, 0x34*/ f32 noteFreqScale; + /*0x38, 0x34*/ s16 shortNoteDefaultPlayPercentage; + /*0x3A, 0x36*/ s16 playPercentage; // it's not really a percentage... + /*0x3C, 0x38*/ s16 delay; + /*0x3E, 0x3A*/ s16 duration; + /*0x40, 0x3C*/ s16 delayUnused; // set to 'delay', never read + /*0x44, 0x40, 0x44*/ struct Note *note; + /*0x48, 0x44*/ struct Instrument *instrument; + /*0x4C, 0x48*/ struct AudioBankSound *sound; + /*0x50, 0x4C, 0x50*/ struct SequenceChannel *seqChannel; + /*0x54, 0x50*/ struct M64ScriptState scriptState; + /*0x70, 0x6C*/ struct AudioListItem listItem; + u8 pad2[4]; +}; // size = 0x80 + +struct NoteSynthesisState { + /*0x00*/ u8 restart; + /*0x01*/ u8 sampleDmaIndex; + /*0x02*/ u8 prevHeadsetPanRight; + /*0x03*/ u8 prevHeadsetPanLeft; + /*0x04, 0x06*/ u16 samplePosFrac; + /*0x08*/ s32 samplePosInt; + /*0x0C*/ struct NoteSynthesisBuffers *synthesisBuffers; + /*0x10*/ s16 curVolLeft; // UQ0.16 (EU Q1.15) + /*0x12*/ s16 curVolRight; // UQ0.16 (EU Q1.15) +}; +struct NotePlaybackState { + /* U/J, EU, SH */ + /*0x04, 0x00, 0x00*/ u8 priority; + /* 0x01, 0x01*/ u8 waveId; + /* 0x02, 0x02*/ u8 sampleCountIndex; + /*0x08, 0x04, 0x06*/ s16 adsrVolScale; + /*0x18, 0x08, 0x08*/ f32 portamentoFreqScale; + /*0x1C, 0x0C, 0x0C*/ f32 vibratoFreqScale; + /*0x28, 0x10, */ struct SequenceChannelLayer *prevParentLayer; + /*0x2C, 0x14, 0x14*/ struct SequenceChannelLayer *parentLayer; + /*0x30, 0x18, 0x18*/ struct SequenceChannelLayer *wantedParentLayer; + /* , 0x1C, 0x1C*/ struct NoteAttributes attributes; + /*0x54, 0x28, 0x2C*/ struct AdsrState adsr; + /*0x74, 0x4C, */ struct Portamento portamento; + /*0x84, 0x5C, */ struct VibratoState vibratoState; +}; +struct NoteSubEu { /*0x00*/ volatile u8 enabled : 1; /*0x00*/ u8 needsInit : 1; /*0x00*/ u8 finished : 1; @@ -71,15 +423,98 @@ struct NoteSub /*0x02*/ u8 bankId; /*0x03*/ u8 headsetPanRight; /*0x04*/ u8 headsetPanLeft; - /*0x05*/ u8 reverbVol; - /*0x06*/ u16 targetVolLeft; - /*0x08*/ u16 targetVolRight; + /*0x05*/ u8 reverbVol; // UQ0.7 (EU Q1.7) + /*0x06*/ u16 targetVolLeft; // UQ0.12 (EU UQ0.10) + /*0x08*/ u16 targetVolRight; // UQ0.12 (EU UQ0.10) /*0x0A*/ u16 resamplingRateFixedPoint; // stored as signed but loaded as u16 /*0x0C*/ union { s16 *samples; struct AudioBankSound *audioBankSound; } sound; }; +struct Note { + /* U/J, EU, SH */ + /*0xA4, 0x00, 0x00*/ struct AudioListItem listItem; + /* 0x10, 0x10*/ struct NoteSynthesisState synthesisState; + // The next members are actually part of a struct (NotePlaybackState), but + // that results in messy US/EU ifdefs. Instead we cast to a struct pointer + // when needed... This breaks alignment on non-N64 platforms, which we hack + // around by skipping the padding in that case. + // TODO: use macros or something instead. +#ifdef TARGET_N64 + u8 pad0[12]; +#endif + + /*0x04, 0x30, 0x30*/ u8 priority; + /* 0x31, 0x31*/ u8 waveId; + /* 0x32, 0x32*/ u8 sampleCountIndex; + /*0x08, 0x34, 0x36*/ s16 adsrVolScale; + /*0x18, 0x38, */ f32 portamentoFreqScale; + /*0x1C, 0x3C, */ f32 vibratoFreqScale; + /*0x28, 0x40, */ struct SequenceChannelLayer *prevParentLayer; + /*0x2C, 0x44, 0x44*/ struct SequenceChannelLayer *parentLayer; + /*0x30, 0x48, 0x48*/ struct SequenceChannelLayer *wantedParentLayer; + /* , 0x4C, 0x4C*/ struct NoteAttributes attributes; + /*0x54, 0x58, 0x5C*/ struct AdsrState adsr; + /*0x74, 0x7C*/ struct Portamento portamento; + /*0x84, 0x8C*/ struct VibratoState vibratoState; + u8 pad3[8]; + /* , 0xB0, 0xB4*/ struct NoteSubEu noteSubEu; +}; // size = 0xC0, known to be 0xC8 on SH + +// While this struct needs to be size 0xA0, its not clear +// what innards are necessary. All the possible options from +// SM64 are sized incorrectly so we're probably looking at some +// MK64 weirdness +struct NoteSynthesisBuffers { + s16 adpcmdecState[0x10]; + s16 finalResampleState[0x10]; + s16 panResampleState[0x10]; + s16 panSamplesBuffer[0x20]; +}; // size = 0xA0 + +/* +SM64 NoteSynthesisBuffers, kept here because I'm not sure our current +version is correct +struct NoteSynthesisBuffers { + s16 adpcmdecState[0x10]; + s16 finalResampleState[0x10]; +#ifdef VERSION_SH + s16 unk[0x10]; + s16 filterBuffer[0x20]; + s16 panSamplesBuffer[0x20]; +#else + s16 mixEnvelopeState[0x28]; + s16 panResampleState[0x10]; + s16 panSamplesBuffer[0x20]; + s16 dummyResampleState[0x10]; +#if defined(VERSION_JP) || defined(VERSION_US) + s16 samples[0x40]; +#endif +#endif +}; +*/ + +struct ReverbSettingsEU { + u8 downsampleRate; + u8 windowSize; // To be multiplied by 64 + u16 gain; +}; + +struct AudioSessionSettingsEU { + /* 0x00 */ u32 frequency; + /* 0x04 */ u8 unk1; // always 1 + /* 0x05 */ u8 maxSimultaneousNotes; + /* 0x06 */ u8 numReverbs; // always 1 + /* 0x07 */ u8 unk2; // always 0 + /* 0x08 */ struct ReverbSettingsEU *reverbSettings; + /* 0x0C */ u16 volume; + /* 0x0E */ u16 unk3; // always 0 + /* 0x10 */ u32 persistentSeqMem; + /* 0x14 */ u32 persistentBankMem; + /* 0x18, 0x1C */ u32 temporarySeqMem; + /* 0x1C, 0x20 */ u32 temporaryBankMem; +}; // 0x30 on shindou struct AudioSessionSettings { /*0x00*/ u32 frequency; @@ -110,4 +545,43 @@ struct AudioBufferParametersEU { /*0x1C*/ f32 unkUpdatesPerFrameScaled; // 3.0f / (1280.0f * updatesPerFrame) }; +struct EuAudioCmd { + union { +#if IS_BIG_ENDIAN + struct { + u8 op; + u8 arg1; + u8 arg2; + u8 arg3; + } s; +#else + struct { + u8 arg3; + u8 arg2; + u8 arg1; + u8 op; + } s; #endif + s32 first; + } u; + union { + s32 as_s32; + u32 as_u32; + f32 as_f32; +#if IS_BIG_ENDIAN + u8 as_u8; + s8 as_s8; +#else + struct { + u8 pad0[3]; + u8 as_u8; + }; + struct { + u8 pad1[3]; + s8 as_s8; + }; +#endif + } u2; +}; + +#endif // AUDIO_INTERNAL_H diff --git a/src/audio/load.c b/src/audio/load.c index 9a6acddbe..88ecadf7a 100644 --- a/src/audio/load.c +++ b/src/audio/load.c @@ -1,9 +1,10 @@ #include #include -#include "load.h" -#include "data.h" -#include "heap.h" -#include "internal.h" +#include "audio/load.h" +#include "audio/data.h" +#include "audio/heap.h" +#include "audio/internal.h" +#include "audio/playback.h" #define ALIGN16(val) (((val) + 0xF) & ~0xF) struct SharedDma { @@ -35,20 +36,15 @@ extern u8 sSampleDmaReuseQueueTail2; // sSampleDmaReuseQueueTail2 extern u8 sSampleDmaReuseQueueHead1; // sSampleDmaReuseQueueHead1 extern u8 sSampleDmaReuseQueueHead2; // sSampleDmaReuseQueueHead2 - - -extern void *soundAlloc(struct SoundAllocPool *pool, u32 size); - /** * Performs an immediate DMA copy */ -// audio_dma_copy_immediate void audio_dma_copy_immediate(uintptr_t devAddr, void *vAddr, size_t nbytes) { - stubbed_printf_3("Romcopy %x -> %x ,size %x\n", devAddr, vAddr, nbytes); + eu_stubbed_printf_3("Romcopy %x -> %x ,size %x\n", devAddr, vAddr, nbytes); osInvalDCache(vAddr, nbytes); osPiStartDma(&D_803B6740, OS_MESG_PRI_HIGH, OS_READ, devAddr, vAddr, nbytes, &D_803B6720); osRecvMesg(&D_803B6720, NULL, OS_MESG_BLOCK); - stubbed_printf_0("Romcopyend\n"); + eu_stubbed_printf_0("Romcopyend\n"); } const char audioString34[] = "CAUTION:WAVE CACHE FULL %d"; @@ -83,26 +79,16 @@ const char af[] = "Sorry,too many %d bank is none.fast load Start \n"; /** * Performs an asynchronus (normal priority) DMA copy */ -//audio_dma_copy_async -void func_800BAAF8(uintptr_t devAddr, void *vAddr, size_t nbytes, OSMesgQueue *queue, OSIoMesg *mesg) { +void audio_dma_copy_async(uintptr_t devAddr, void *vAddr, size_t nbytes, OSMesgQueue *queue, OSIoMesg *mesg) { osInvalDCache(vAddr, nbytes); osPiStartDma(mesg, OS_MESG_PRI_NORMAL, OS_READ, devAddr, vAddr, nbytes, queue); } -//#else -//GLOBAL_ASM("asm/non_matchings/audio/load/func_800BAAF8.s") -//#endif - -//#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -//s32 osPiStartDma(s32, ?, ?, s32, void *, u32, s32); // extern - /** * Performs a partial asynchronous (normal priority) DMA copy. This is limited * to 0x1000 bytes transfer at once. */ -// audio_dma_partial_copy_async -void func_800BAB58(uintptr_t *devAddr, u8 **vAddr, ssize_t *remaining, OSMesgQueue *queue, OSIoMesg *mesg) { +void audio_dma_partial_copy_async(uintptr_t *devAddr, u8 **vAddr, ssize_t *remaining, OSMesgQueue *queue, OSIoMesg *mesg) { ssize_t transfer = (*remaining >= 0x1000 ? 0x1000 : *remaining); *remaining -= transfer; osInvalDCache(*vAddr, transfer); @@ -110,13 +96,8 @@ void func_800BAB58(uintptr_t *devAddr, u8 **vAddr, ssize_t *remaining, OSMesgQue *devAddr += transfer; *vAddr += transfer; } -//#else -//GLOBAL_ASM("asm/non_matchings/audio/load/func_800BAB58.s") -//#endif -// decrease_sample_dma_ttls - -void func_800BAC04() { +void decrease_sample_dma_ttls() { u32 i; for (i = 0; i < sSampleDmaListSize1; i++) { @@ -449,41 +430,35 @@ s32 func_800BB304(struct AudioBankSample *sample) { } } -#ifdef MIPS_TO_C -//generated by m2c commit b7eac665cffd02361f73cec283ef16d0a35a0e5b -void *func_800BC948(); /* extern */ -void *func_800BC9F8(s32); /* extern */ +s32 func_800BB388(s32 bankId, s32 instId, s32 arg2) { + struct Instrument *instr; + struct Drum *drum; -void func_800BB388(s32 arg0, s32 arg1, s32 arg2) { - void *sp1C; - void *temp_v0; - void *temp_v0_2; - - if (arg1 < 0x7F) { - temp_v0 = func_800BC948(); - if (temp_v0 == NULL) { - return; + if (instId < 0x7F) { + instr = get_instrument_inner(bankId, instId); + if (instr == NULL) { + return -1; } - if (temp_v0->unk1 != 0) { - sp1C = temp_v0; - func_800BB304(temp_v0->unk8); + if (instr->normalRangeLo != 0) { + func_800BB304(instr->lowNotesSound.sample); } - sp1C = temp_v0; - func_800BB304(temp_v0->unk10); - if (temp_v0->unk2 != 0x7F) { - func_800BB304(temp_v0->unk18); + func_800BB304(instr->normalNotesSound.sample); + if (instr->normalRangeHi != 0x7F) { + func_800BB304(instr->highNotesSound.sample); } - } else if (arg1 == 0x0000007F) { - temp_v0_2 = func_800BC9F8(arg2); - if (temp_v0_2 == NULL) { - return; + //! @bug missing return + } else if (instId == 0x7F) { + drum = get_drum(bankId, arg2); + if (drum == NULL) { + return -1; } - func_800BB304(temp_v0_2->unk4); + func_800BB304(drum->sound.sample); + return 0; } -} -#else -GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB388.s") +#ifdef AVOID_UB + return 0; #endif +} #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -514,64 +489,45 @@ void func_800BB43C(void *arg0, s32 arg1) { GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB43C.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 soundAlloc(? *, s32, s32); // extern -void audio_dma_copy_immediate(s32, s32, s32, s32); // extern -extern ? gNotesAndBuffersPool; +void patch_sound(struct AudioBankSound *sound, u8 *memBase, u8 *offsetBase) { + struct AudioBankSample *sample; + void *patched; + u8 *mem; -void func_800BB484(void **arg0, s32 arg1, s32 arg2) { - void *sp2C; - s32 sp28; - s32 sp24; - s32 temp_a3_2; - s32 temp_v0_2; - u8 temp_a0; - void *temp_a3; - void *temp_v0; +#define PATCH(x, base) (patched = (void *)((uintptr_t) (x) + (uintptr_t) base)) - temp_v0 = *arg0; - temp_a3 = temp_v0 + arg1; - if (temp_v0 != 0) { - *arg0 = temp_a3; - temp_a0 = temp_a3->unk1; - if (temp_a0 == 0) { - temp_a3->unk4 = temp_a3->unk4 + arg2; - temp_a3->unk8 = temp_a3->unk8 + arg1; - temp_a3->unkC = temp_a3->unkC + arg1; - temp_a3->unk1 = 1; - return; + if (sound->sample != NULL) { + sample = sound->sample = PATCH(sound->sample, memBase); + if (sample->loaded == 0) { + sample->sampleAddr = PATCH(sample->sampleAddr, offsetBase); + sample->loop = PATCH(sample->loop, memBase); + sample->book = PATCH(sample->book, memBase); + sample->loaded = 1; } - if (temp_a0 == 0x80) { - temp_a3_2 = temp_a3->unk4 + arg2; - sp28 = temp_a3_2; - sp2C = temp_a3; - temp_v0_2 = soundAlloc(&gNotesAndBuffersPool, temp_a3->unk10, temp_a3_2); - if (temp_v0_2 == 0) { - temp_a3->unk4 = temp_a3_2; - temp_a3->unk1 = 1; + else if (sample->loaded == 0x80) { + PATCH(sample->sampleAddr, offsetBase); + mem = soundAlloc(&gNotesAndBuffersPool, sample->sampleSize); + if (mem == NULL) { + sample->sampleAddr = patched; + sample->loaded = 1; } else { - sp24 = temp_v0_2; - sp2C = temp_a3; - audio_dma_copy_immediate(temp_a3_2, temp_v0_2, temp_a3->unk10, temp_a3_2); - temp_a3->unk1 = 0x81; - temp_a3->unk4 = temp_v0_2; + audio_dma_copy_immediate((uintptr_t) patched, mem, sample->sampleSize); + sample->loaded = 0x81; + sample->sampleAddr = mem; } - (temp_v0 + arg1)->unk8 = (temp_v0 + arg1)->unk8 + arg1; - (temp_v0 + arg1)->unkC = (temp_v0 + arg1)->unkC + arg1; + sample->loop = PATCH(sample->loop, memBase); + sample->book = PATCH(sample->book, memBase); } - // Duplicate return node #8. Try simplifying control flow for better match } + +#undef PATCH } -#else -GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB484.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BB624(s32, s32, u8, u8); // extern +void patch_audio_bank(s32, s32, u8, u8); // extern extern s32 D_803B7074; -extern s32 D_803B7080; +extern s32 gCtlEntries; void func_800BB584(s32 arg0) { s32 sp18; @@ -590,80 +546,84 @@ void func_800BB584(s32 arg0) { phi_a1 = temp_v0->unk4; } temp_v1_2 = arg0 * 0xC; - temp_v0_2 = D_803B7080 + temp_v1_2; + temp_v0_2 = gCtlEntries + temp_v1_2; sp18 = temp_v1_2; - func_800BB624(temp_v0_2->unk4 - 4, phi_a1, temp_v0_2->unk1, temp_v0_2->unk2); - temp_v0_3 = D_803B7080 + temp_v1_2; + patch_audio_bank(temp_v0_2->unk4 - 4, phi_a1, temp_v0_2->unk1, temp_v0_2->unk2); + temp_v0_3 = gCtlEntries + temp_v1_2; temp_v0_3->unk8 = temp_v0_3->unk4->unk-4; } #else GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB584.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BB484(void *, void **, ?); // extern +void patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums) { + struct Instrument *instrument; + struct Instrument **itInstrs; + struct Instrument **end; + struct AudioBank *temp; + u32 i; + void *patched; + struct Drum *drum; + struct Drum **drums; + u32 numDrums2; -void func_800BB624(void **arg0, ? arg1, s32 arg2, s32 arg3) { - s32 temp_s2; - void **temp_s2_2; - void **temp_v0_2; - void *temp_s0; - void *temp_s0_2; - void *temp_t2; - void *temp_v0; - void *temp_v0_3; - s32 phi_s4; - s32 phi_s2; - void **phi_s2_2; +#define BASE_OFFSET_REAL(x, base) (void *)((uintptr_t) (x) + (uintptr_t) base) +#define PATCH(x, base) (patched = BASE_OFFSET_REAL(x, base)) +#define PATCH_MEM(x) x = PATCH(x, mem) - temp_v0 = *arg0; - if ((temp_v0 != 0) && (arg3 != 0)) { - *arg0 = temp_v0 + arg0; - phi_s2 = 0; - if (arg3 != 0) { - phi_s4 = 0; - do { - temp_v0_2 = *arg0 + phi_s4; - temp_s0 = *temp_v0_2; - temp_s0_2 = temp_s0 + arg0; - if (temp_s0 != 0) { - *temp_v0_2 = temp_s0_2; - if (temp_s0_2->unk2 == 0) { - func_800BB484(temp_s0_2 + 4, arg0, arg1); - temp_s0_2->unk2 = 1; - temp_s0_2->unkC = temp_s0_2->unkC + arg0; - } +#define BASE_OFFSET(x, base) BASE_OFFSET_REAL(base, x) + + drums = mem->drums; + numDrums2 = numDrums; + if (drums != NULL && numDrums2 > 0) { + mem->drums = PATCH(drums, mem); + for (i = 0; i < numDrums2; i++) { + patched = mem->drums[i]; + if (patched != NULL) { + drum = PATCH(patched, mem); + mem->drums[i] = drum; + if (drum->loaded == 0) { + patch_sound(&drum->sound, (u8 *) mem, offset); + patched = drum->envelope; + drum->envelope = BASE_OFFSET(mem, patched); + drum->loaded = 1; } - temp_s2 = phi_s2 + 1; - phi_s4 += 4; - phi_s2 = temp_s2; - } while (temp_s2 != arg3); + + } } } - phi_s2_2 = arg0 + 4; - if (arg2 != 0) { + + //! Doesn't affect EU, but required for US/JP + temp = &*mem; + if (numInstruments > 0) { + //! Doesn't affect EU, but required for US/JP + struct Instrument **tempInst; + itInstrs = temp->instruments; + tempInst = temp->instruments; + end = numInstruments + tempInst; + do { - temp_v0_3 = *phi_s2_2; - temp_t2 = temp_v0_3 + arg0; - if (temp_v0_3 != 0) { - *phi_s2_2 = temp_t2; - if (temp_t2->unk0 == 0) { - func_800BB484(temp_t2 + 8, arg0, arg1); - func_800BB484(temp_t2 + 0x10, arg0, arg1); - func_800BB484(temp_t2 + 0x18, arg0, arg1); - temp_t2->unk0 = 1; - temp_t2->unk4 = temp_t2->unk4 + arg0; + if (*itInstrs != NULL) { + *itInstrs = BASE_OFFSET(*itInstrs, mem); + instrument = *itInstrs; + + if (instrument->loaded == 0) { + patch_sound(&instrument->lowNotesSound, (u8 *) mem, offset); + patch_sound(&instrument->normalNotesSound, (u8 *) mem, offset); + patch_sound(&instrument->highNotesSound, (u8 *) mem, offset); + patched = instrument->envelope; + instrument->envelope = BASE_OFFSET(mem, patched); + instrument->loaded = 1; } } - temp_s2_2 = phi_s2_2 + 4; - phi_s2_2 = temp_s2_2; - } while (((arg2 * 4) + arg0 + 4) != temp_s2_2); + itInstrs++; + } while (end != itInstrs); } +#undef PATCH_MEM +#undef PATCH +#undef BASE_OFFSET_REAL +#undef BASE_OFFSET } -#else -GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB624.s") -#endif @@ -672,10 +632,10 @@ GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB624.s") s32 func_800B93BC(? *, ?, s32, ?, s32); // extern void audio_dma_copy_immediate(s32, s32, s32); // extern void func_800BB584(s32); // extern -extern u32 D_803AFE18; -extern u8 D_803B03C0; +extern u32 gBankLoadedPool; +extern u8 gBankLoadStatus; extern s32 D_803B7070; -extern s32 D_803B7080; +extern s32 gCtlEntries; s32 func_800BB780(s32 arg0, ? arg1) { s32 sp54; @@ -690,15 +650,15 @@ s32 func_800BB780(s32 arg0, ? arg1) { temp_a2 = ((temp_v0->unk8 + 0x1E) & ~0xF) - 0x10; sp54 = temp_a2; sp28 = temp_v0->unk4; - temp_v0_2 = func_800B93BC(&D_803AFE18, 1, temp_a2, arg1, arg0); + temp_v0_2 = func_800B93BC(&gBankLoadedPool, 1, temp_a2, arg1, arg0); if (temp_v0_2 == 0) { return 0; } sp2C = temp_v0_2; audio_dma_copy_immediate(sp28 + 0x10, temp_v0_2, temp_a2); - (D_803B7080 + (arg0 * 0xC))->unk4 = sp2C + 4; + (gCtlEntries + (arg0 * 0xC))->unk4 = sp2C + 4; func_800BB584(arg0); - temp_v0_3 = arg0 + &D_803B03C0; + temp_v0_3 = arg0 + &gBankLoadStatus; if (*temp_v0_3 != 5) { *temp_v0_3 = 2; } @@ -711,11 +671,11 @@ GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB780.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 func_800B93BC(? *, ?, s32, ?, s32); // extern -void func_800BAB58(void *, void *, void *, OSMesgQueue *, void *); // extern -extern u32 D_803AFE18; -extern u8 D_803B03C0; +void audio_dma_partial_copy_async(void *, void *, void *, OSMesgQueue *, void *); // extern +extern u32 gBankLoadedPool; +extern u8 gBankLoadStatus; extern s32 D_803B7070; -extern s32 D_803B7080; +extern s32 gCtlEntries; s32 func_800BB864(s32 arg0, ? arg1, void *arg2) { s32 sp64; @@ -733,24 +693,24 @@ s32 func_800BB864(s32 arg0, ? arg1, void *arg2) { temp_a2 = ((temp_v0->unk8 + 0x1E) & ~0xF) - 0x10; sp64 = temp_a2; sp38 = temp_v0->unk4; - temp_v0_2 = func_800B93BC(&D_803AFE18, 1, temp_a2, arg1, arg0); + temp_v0_2 = func_800B93BC(&gBankLoadedPool, 1, temp_a2, arg1, arg0); sp3C = temp_v0_2; if (temp_v0_2 == 0) { return 0; } arg2->unk6 = arg0; temp_v1 = arg0 * 0xC; - (D_803B7080 + temp_v1)->unk4 = temp_v0_2 + 4; + (gCtlEntries + temp_v1)->unk4 = temp_v0_2 + 4; temp_a3 = arg2 + 0x108; - (D_803B7080 + temp_v1)->unk8 = 0; + (gCtlEntries + temp_v1)->unk8 = 0; arg2->unk13C = temp_v0_2; arg2->unk144 = temp_a2; arg2->unk140 = sp38 + 0x10; sp2C = temp_a3; osCreateMesgQueue(temp_a3, arg2 + 0x120, 1); arg2->unk0 = arg2->unk0 | 8; - func_800BAB58(arg2 + 0x140, arg2 + 0x13C, arg2 + 0x144, temp_a3, arg2 + 0x124); - temp_v0_3 = arg0 + &D_803B03C0; + audio_dma_partial_copy_async(arg2 + 0x140, arg2 + 0x13C, arg2 + 0x144, temp_a3, arg2 + 0x124); + temp_v0_3 = arg0 + &gBankLoadStatus; if (*temp_v0_3 != 5) { *temp_v0_3 = 1; } @@ -764,8 +724,8 @@ GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB864.s") //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 func_800B93BC(? *, ?, s32, ?, s32); // extern void audio_dma_copy_immediate(s32, s32, s32); // extern -extern u32 D_803AFC48; -extern ? D_803B0400; +extern u32 gSeqLoadedPool; +extern ? gSeqLoadStatus; extern s32 D_803B706C; s32 func_800BB99C(s32 arg0, ? arg1) { @@ -781,13 +741,13 @@ s32 func_800BB99C(s32 arg0, ? arg1) { temp_t9 = (temp_v0_2->unk8 + 0xF) & ~0xF; sp2C = temp_t9; sp24 = temp_v0_2->unk4; - temp_v0 = func_800B93BC(&D_803AFC48, 1, temp_t9, arg1, arg0); + temp_v0 = func_800B93BC(&gSeqLoadedPool, 1, temp_t9, arg1, arg0); if (temp_v0 == 0) { return 0; } sp28 = temp_v0; audio_dma_copy_immediate(sp24, temp_v0, sp2C); - temp_v0_3 = arg0 + &D_803B0400; + temp_v0_3 = arg0 + &gSeqLoadStatus; if (*temp_v0_3 != 5) { *temp_v0_3 = 2; } @@ -801,9 +761,9 @@ GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB99C.s") //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 func_800B93BC(? *, ?, s32, ?, s32); // extern void audio_dma_copy_immediate(s32, s32, s32); // extern -void func_800BAAF8(s32, s32, s32, OSMesgQueue *, void *); // extern -extern u32 D_803AFC48; -extern ? D_803B0400; +void audio_dma_copy_async(s32, s32, s32, OSMesgQueue *, void *); // extern +extern u32 gSeqLoadedPool; +extern ? gSeqLoadStatus; extern s32 D_803B706C; s32 func_800BBA50(s32 arg0, ? arg1, u8 *arg2) { @@ -821,13 +781,13 @@ s32 func_800BBA50(s32 arg0, ? arg1, u8 *arg2) { temp_a2 = (temp_v0_2->unk8 + 0xF) & ~0xF; temp_s0 = temp_a2; sp3C = temp_v0_2->unk4; - temp_v0 = func_800B93BC(&D_803AFC48, 1, temp_a2, arg1, arg0); + temp_v0 = func_800B93BC(&gSeqLoadedPool, 1, temp_a2, arg1, arg0); if (temp_v0 == 0) { return 0; } if (temp_s0 < 0x41) { audio_dma_copy_immediate(sp3C, temp_v0, temp_s0); - temp_v0_3 = arg0 + &D_803B0400; + temp_v0_3 = arg0 + &gSeqLoadStatus; if (*temp_v0_3 != 5) { *temp_v0_3 = 2; } @@ -837,8 +797,8 @@ s32 func_800BBA50(s32 arg0, ? arg1, u8 *arg2) { sp34 = temp_a3; osCreateMesgQueue(temp_a3, arg2 + 0xEC, 1); *arg2 = *arg2 | 0x10; - func_800BAAF8(sp3C + 0x40, temp_v0 + 0x40, temp_s0 - 0x40, temp_a3, arg2 + 0xF0); - temp_v0_4 = arg0 + &D_803B0400; + audio_dma_copy_async(sp3C + 0x40, temp_v0 + 0x40, temp_s0 - 0x40, temp_a3, arg2 + 0xF0); + temp_v0_4 = arg0 + &gSeqLoadStatus; if (*temp_v0_4 != 5) { *temp_v0_4 = 1; } @@ -849,64 +809,42 @@ s32 func_800BBA50(s32 arg0, ? arg1, u8 *arg2) { GLOBAL_ASM("asm/non_matchings/audio/load/func_800BBA50.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B9A90(s32, ?, u8); // extern -extern u8 D_803B03C0; -extern s32 D_803B7078; +u8 get_missing_bank(u32 seqId, s32 *nonNullCount, s32 *nullCount) { + void *temp; + u32 bankId; + u16 offset; + u8 i; + u8 ret; -s32 func_800BBBA0(s32 arg0, s32 *arg1, s32 *arg2) { - s32 temp_v0; - u16 temp_s1; - u8 temp_s0; - u8 temp_s2; - u8 temp_t0; - s32 phi_s1; - s32 phi_v1; - u8 phi_s2; - s32 phi_s7; - s32 phi_s7_2; + *nullCount = 0; + *nonNullCount = 0; + offset = ((u16 *) gAlBankSets)[seqId]; + for (i = gAlBankSets[offset++], ret = 0; i != 0; i--) { + bankId = gAlBankSets[offset++]; - *arg2 = 0; - *arg1 = 0; - temp_v0 = D_803B7078; - temp_s1 = *(temp_v0 + (arg0 * 2)); - temp_s2 = *(temp_s1 + temp_v0); - phi_s1 = (temp_s1 + 1) & 0xFFFF; - phi_s2 = temp_s2; - phi_s7 = 0; - phi_s7_2 = 0; - if (temp_s2 != 0) { - do { - temp_s0 = *(phi_s1 + D_803B7078); - phi_s1 = (phi_s1 + 1) & 0xFFFF; - phi_v1 = 0; - if (((*(&D_803B03C0 + temp_s0) < 2) ^ 1) == 1) { - phi_v1 = func_800B9A90(1, 2, temp_s0); - } - if (phi_v1 == 0) { - *arg2 = *arg2 + 1; - phi_s7_2 = temp_s0 & 0xFF; - } else { - *arg1 = *arg1 + 1; - } - temp_t0 = (phi_s2 - 1) & 0xFF; - phi_s2 = temp_t0; - phi_s7 = phi_s7_2; - } while (temp_t0 != 0); + if (IS_BANK_LOAD_COMPLETE(bankId) == TRUE) { + temp = get_bank_or_seq(1, 2, bankId); + } else { + temp = NULL; + } + + if (temp == NULL) { + (*nullCount)++; + ret = bankId; + } else { + (*nonNullCount)++; + } } - return phi_s7; + + return ret; } -#else -GLOBAL_ASM("asm/non_matchings/audio/load/func_800BBBA0.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B9A90(s32, ?, u8); // extern +s32 get_bank_or_seq(s32, ?, u8); // extern s32 func_800BB780(u8, ?); // extern -extern u8 D_803B03C0; -extern s32 D_803B7078; +extern u8 gBankLoadStatus; +extern s32 gAlBankSets; s32 func_800BBCD0(s32 arg0, s8 *arg1) { s32 sp34; @@ -921,18 +859,18 @@ s32 func_800BBCD0(s32 arg0, s8 *arg1) { u8 phi_s2; s32 phi_v1_2; - temp_v0 = D_803B7078; + temp_v0 = gAlBankSets; temp_s1 = *(temp_v0 + (arg0 * 2)); temp_s2 = *(temp_s1 + temp_v0); phi_s1 = (temp_s1 + 1) & 0xFFFF; phi_s2 = temp_s2; if (temp_s2 != 0) { do { - temp_s0 = *(phi_s1 + D_803B7078); + temp_s0 = *(phi_s1 + gAlBankSets); phi_s1 = (phi_s1 + 1) & 0xFFFF; phi_v1 = 0; - if (((*(&D_803B03C0 + temp_s0) < 2) ^ 1) == 1) { - phi_v1 = func_800B9A90(1, 2, temp_s0); + if (((*(&gBankLoadStatus + temp_s0) < 2) ^ 1) == 1) { + phi_v1 = get_bank_or_seq(1, 2, temp_s0); } phi_v1_2 = phi_v1; if (phi_v1 == 0) { @@ -953,11 +891,11 @@ GLOBAL_ASM("asm/non_matchings/audio/load/func_800BBCD0.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B9A90(?, ?, u32); // extern +s32 get_bank_or_seq(?, ?, u32); // extern s32 func_800BB99C(u32, ?, u32); // extern s32 func_800BBCD0(u32, ? *, u32); // extern extern s32 D_800EA5DC; -extern u8 D_803B03C0; +extern u8 gBankLoadStatus; extern s32 D_803B706C; extern u16 D_803B707C; @@ -989,9 +927,9 @@ void func_800BBDDC(u32 arg0, s32 arg1) { phi_a2_3 = phi_a2_2; if ((arg1 & 0xFF & 1) != 0) { phi_v1 = 0; - if (((*(&D_803B03C0 + phi_a2_2) < 2) ^ 1) == 1) { + if (((*(&gBankLoadStatus + phi_a2_2) < 2) ^ 1) == 1) { arg0 = phi_a2_2; - phi_v1 = func_800B9A90(0, 2, phi_a2_2); + phi_v1 = get_bank_or_seq(0, 2, phi_a2_2); phi_a2_3 = arg0; } if ((phi_v1 == 0) && (func_800BB99C(phi_a2_3, 2, phi_a2_3) == 0)) { @@ -1025,15 +963,15 @@ void func_800BBEF0(u32 player, u32 seqId, s32 loadAsync) { #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B9A90(?, ?, s8); // extern +s32 get_bank_or_seq(?, ?, s8); // extern s32 func_800BB864(s32, ?, void *); // extern s32 func_800BB99C(s8, ?); // extern s32 func_800BBA50(s8, ?, void *); // extern -s32 func_800BBBA0(s8, s32 *, s32 *); // extern +s32 get_missing_bank(s8, s32 *, s32 *); // extern s32 func_800BBCD0(s8, void *, s32 *); // extern -void func_800BEF2C(void *); // extern -void func_800C11B0(s32); // extern -extern u32 D_803B1510; +void sequence_player_disable(void *); // extern +void init_sequence_player(s32); // extern +extern u32 gSequencePlayers; extern s32 D_803B706C; extern u16 D_803B707C; @@ -1059,14 +997,14 @@ void func_800BBF44(s32 arg0, u32 arg1, s32 arg2) { if (temp_v0->unk8 == 0) { phi_s1 = temp_v0->unk4; } - temp_s0 = (arg0 * 0x148) + &D_803B1510; - func_800BEF2C(temp_s0); + temp_s0 = (arg0 * 0x148) + &gSequencePlayers; + sequence_player_disable(temp_s0); temp_a1 = &sp28; temp_a2 = &sp2C; if (arg2 != 0) { sp2C = 0; sp28 = 0; - temp_v0_2 = func_800BBBA0(phi_s1, temp_a1, temp_a2); + temp_v0_2 = get_missing_bank(phi_s1, temp_a1, temp_a2); temp_a0 = temp_v0_2; if (sp2C == 1) { sp24 = temp_v0_2; @@ -1085,7 +1023,7 @@ void func_800BBF44(s32 arg0, u32 arg1, s32 arg2) { if (func_800BBCD0(phi_s1, temp_s0 + 5, temp_a2) != 0) { block_10: temp_s0->unk4 = phi_s1; - temp_v0_3 = func_800B9A90(0, 2, phi_s1); + temp_v0_3 = get_bank_or_seq(0, 2, phi_s1); phi_v1 = temp_v0_3; if (temp_v0_3 == 0) { if ((temp_s0->unk0 * 8) >= 0) { @@ -1102,7 +1040,7 @@ block_10: } else { block_16: sp3C = phi_v1; - func_800C11B0(arg0); + init_sequence_player(arg0); temp_s0->unk88 = 0; temp_s0->unkE = 0; temp_s0->unk0 = temp_s0->unk0 | 0x80; @@ -1117,35 +1055,70 @@ block_16: GLOBAL_ASM("asm/non_matchings/audio/load/func_800BBF44.s") #endif -// L800BC170 is in a delay slot -// m2c may be inaccurate. #ifdef MIPS_TO_C +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c +? audio_dma_copy_immediate(? *, s32 *, u32, void **); /* extern */ +? func_800B90F0(s32); /* extern */ +? func_800BA00C(); /* extern */ +? func_800BB43C(s32 *, ? *); /* extern */ +? init_sequence_players(); /* extern */ +? func_800CBF48(u32 *); /* extern */ +extern s8 D_803B0500; +extern s8 D_803B0501; +extern void *D_803B6738; +extern s32 *D_803B706C; +extern s32 *D_803B7070; +extern s32 *D_803B7074; +extern s32 *gAlBankSets; +extern s16 D_803B707C; +extern void *gCtlEntries; +extern s8 gAudioLibSoundMode; +extern s32 D_803B70B8; +extern s32 D_803B70C0; +extern s32 D_803B70C4; +extern s32 D_803B70D4; +extern ? D_803B70D8; +extern f32 D_803B7178; +extern s32 D_803B717C; +extern void *D_803B7180; +extern ? D_803B718C; +extern ? D_803B7192; +extern ? D_803B71A0; +extern ? D_803B71B0; +extern ? _audio_banksSegmentRomStart; +extern ? _audio_tablesSegmentRomStart; +extern ? _instrument_setsSegmentRomStart; +extern ? _sequencesSegmentRomStart; +extern s32 osTvType; +static s32 D_800EA5D0 = 0x00048C00; /* const */ +static s32 D_800EA5D4 = 0x00002600; /* const */ +static u32 D_800EA5D8 = 0; /* const */ +static s32 D_800EA5DC = 0; /* const */ + void audio_init(void) { s32 sp8C; s32 sp60; - s32 **sp3C; + void **sp3C; ? *var_v0; - ? *var_v0_2; ? *var_v0_3; s16 temp_s3; s16 temp_t1; - s32 **var_a2; s32 *temp_v0_2; s32 *temp_v0_3; s32 *temp_v0_4; s32 *temp_v0_5; - s32 temp_a1; - s32 temp_a1_2; - s32 temp_a1_3; - s32 temp_s0; - s32 temp_s0_2; s32 temp_t7; s32 temp_v0; s32 var_s0_2; s32 var_s1; s32 var_v1; s32 var_v1_2; + u32 *var_v0_2; + u32 temp_a1; + u32 temp_a1_2; + u32 temp_a1_3; u32 var_s0; + void **var_a2; void *temp_t3; void *temp_t7_2; @@ -1172,34 +1145,34 @@ void audio_init(void) { temp_v0 = osTvType; switch (temp_v0) { /* irregular */ case 0: - D_803B7178 = D_800F2EA0; - D_803B717C = 0x32; + D_803B7178 = 20.03042f; + D_803B717C = 0x00000032; break; case 2: - D_803B7178 = D_800F2EA4; - D_803B717C = 0x3C; + D_803B7178 = 16.546f; + D_803B717C = 0x0000003C; break; default: case 1: - D_803B7178 = D_800F2EA8; - D_803B717C = 0x3C; + D_803B7178 = 16.713f; + D_803B717C = 0x0000003C; break; } func_800CBF48(&gGfxSPTaskOutputBufferSize); var_v0_3 = &D_803B718C; do { var_v0_3 += 2; - var_v0_3->unk-2 = 0xA0; + var_v0_3->unk-2 = 0x00A0; } while ((u32) var_v0_3 < (u32) &D_803B7192); D_803B70B8 = 0; D_803B70C0 = 0; D_803B70C4 = 0; - D_803B70B6 = 0; + gAudioLibSoundMode = 0; D_803B70D4 = 0; D_803B70D8.unk34 = 0; D_803B70D8.unk84 = 0; osCreateMesgQueue(&D_803B6720, &D_803B6738, 1); - osCreateMesgQueue(&gCurrAudioFrameDmaQueue, &gCurrAudioFrameDmaMesgBufs, 0x40); + osCreateMesgQueue(&gCurrAudioFrameDmaQueue, gCurrAudioFrameDmaMesgBufs, 0x00000040); gCurrAudioFrameDmaCount = 0; gSampleDmaNumListItems = 0; func_800B90F0(D_800EA5D4); @@ -1207,8 +1180,8 @@ void audio_init(void) { do { sp3C = var_a2; var_v1 = 0; - *var_a2 = soundAlloc(&D_803AFBD8, 0xA00, var_a2); -loop_16: + *var_a2 = soundAlloc(&gAudioInitPool, 0x00000A00U); +loop_18: *(*var_a2 + var_v1) = 0; (*var_a2 + var_v1)->unk2 = 0; (*var_a2 + var_v1)->unk4 = 0; @@ -1216,7 +1189,7 @@ loop_16: var_v1 += 8; temp_t7_2->unk6 = 0; if (var_v1 != 0xA00) { - goto loop_16; + goto loop_18; } var_a2 += 4; } while ((u32) var_a2 < (u32) &D_803B718C); @@ -1224,52 +1197,50 @@ loop_16: D_803B0500 = 1; func_800BA00C(); D_803B706C = &sp60; - audio_dma_copy_immediate(&_sequencesSegmentRomStart, &sp60, 0x10); + audio_dma_copy_immediate(&_sequencesSegmentRomStart, &sp60, 0x00000010U); temp_t1 = D_803B706C->unk2; temp_a1 = (((temp_t1 & 0xFFFF) * 8) + 0x13) & ~0xF; D_803B707C = temp_t1; - temp_v0_2 = soundAlloc(&D_803AFBD8, temp_a1); + temp_v0_2 = soundAlloc(&gAudioInitPool, temp_a1); D_803B706C = temp_v0_2; audio_dma_copy_immediate(&_sequencesSegmentRomStart, temp_v0_2, temp_a1); func_800BB43C(D_803B706C, &_sequencesSegmentRomStart); D_803B7070 = &sp60; - audio_dma_copy_immediate(&_audio_banksSegmentRomStart, &sp60, 0x10); + audio_dma_copy_immediate(&_audio_banksSegmentRomStart, &sp60, 0x00000010U); temp_s3 = D_803B7070->unk2; temp_a1_2 = ((temp_s3 * 8) + 0x13) & ~0xF; - temp_s0 = temp_a1_2; - temp_v0_3 = soundAlloc(&D_803AFBD8, temp_a1_2); + temp_v0_3 = soundAlloc(&gAudioInitPool, temp_a1_2); D_803B7070 = temp_v0_3; - audio_dma_copy_immediate(&_audio_banksSegmentRomStart, temp_v0_3, temp_s0); + audio_dma_copy_immediate(&_audio_banksSegmentRomStart, temp_v0_3, temp_a1_2); func_800BB43C(D_803B7070, &_audio_banksSegmentRomStart); - D_803B7080 = soundAlloc(&D_803AFBD8, temp_s3 * 0xC); + gCtlEntries = soundAlloc(&gAudioInitPool, temp_s3 * 0xC); var_v1_2 = 0; if (temp_s3 > 0) { var_s1 = 0; var_s0_2 = 0; do { sp8C = var_v1_2; - audio_dma_copy_immediate((D_803B7070 + var_s1)->unk4, &sp60, 0x10, &D_803B7080); - (D_803B7080 + var_s0_2)->unk1 = (s8) sp60; + audio_dma_copy_immediate((D_803B7070 + var_s1)->unk4, &sp60, 0x00000010U, &gCtlEntries); + (gCtlEntries + var_s0_2)->unk1 = (s8) sp60; var_v1_2 = sp8C + 1; - temp_t3 = D_803B7080 + var_s0_2; + temp_t3 = gCtlEntries + var_s0_2; var_s0_2 += 0xC; var_s1 += 8; temp_t3->unk2 = (s8) sp64; } while (var_v1_2 != temp_s3); } D_803B7074 = &sp60; - audio_dma_copy_immediate(&_audio_tablesSegmentRomStart, &sp60, 0x10, &D_803B7080); + audio_dma_copy_immediate(&_audio_tablesSegmentRomStart, &sp60, 0x00000010U, &gCtlEntries); temp_a1_3 = ((D_803B7074->unk2 * 8) + 0x13) & ~0xF; - temp_s0_2 = temp_a1_3; - temp_v0_4 = soundAlloc(&D_803AFBD8, temp_a1_3); + temp_v0_4 = soundAlloc(&gAudioInitPool, temp_a1_3); D_803B7074 = temp_v0_4; - audio_dma_copy_immediate(&_audio_tablesSegmentRomStart, temp_v0_4, temp_s0_2); + audio_dma_copy_immediate(&_audio_tablesSegmentRomStart, temp_v0_4, temp_a1_3); func_800BB43C(D_803B7074, &_audio_tablesSegmentRomStart); - temp_v0_5 = soundAlloc(&D_803AFBD8, 0x100); - D_803B7078 = temp_v0_5; - audio_dma_copy_immediate(&_instrument_setsSegmentRomStart, temp_v0_5, 0x100); - func_800B907C(&D_803B01B8, soundAlloc(&D_803AFBD8, D_800EA5D8), D_800EA5D8); - func_800C125C(); + temp_v0_5 = soundAlloc(&gAudioInitPool, 0x00000100U); + gAlBankSets = temp_v0_5; + audio_dma_copy_immediate(&_instrument_setsSegmentRomStart, temp_v0_5, 0x00000100U); + sound_alloc_pool_init(&gUnkPool1.pool, soundAlloc(&gAudioInitPool, D_800EA5D8), D_800EA5D8); + init_sequence_players(); D_800EA5DC = 0x76557364; } #else diff --git a/src/audio/load.h b/src/audio/load.h index 58b84fb7a..ee5e1adeb 100644 --- a/src/audio/load.h +++ b/src/audio/load.h @@ -2,17 +2,37 @@ #define AUDIO_LOAD_H #include -#include "internal.h" +#include "audio/internal.h" #define AUDIO_FRAME_DMA_QUEUE_SIZE 0x40 #define PRELOAD_BANKS 2 #define PRELOAD_SEQUENCE 1 -void func_800BAAF8(uintptr_t, void*, size_t, OSMesgQueue*, OSIoMesg*); -void func_800BAB58(uintptr_t*, u8**, ssize_t*, OSMesgQueue*, OSIoMesg*); -void func_800BAC04(); +#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((uintptr_t)(ptr) != (uintptr_t)&gSequenceChannelNone) + +void audio_dma_copy_immediate(uintptr_t devAddr, void *vAddr, size_t nbytes); +void audio_dma_copy_async(uintptr_t, void*, size_t, OSMesgQueue*, OSIoMesg*); +void audio_dma_partial_copy_async(uintptr_t*, u8**, ssize_t*, OSMesgQueue*, OSIoMesg*); +void decrease_sample_dma_ttls(); void func_800BB030(s32); s32 func_800BB304(struct AudioBankSample*); +s32 func_800BB388(s32 bankId, s32 instId, s32 arg2); +void patch_sound(struct AudioBankSound *sound, u8 *memBase, u8 *offsetBase); +void patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums); + +extern struct Note *gNotes; +extern struct SequencePlayer gSequencePlayers[SEQUENCE_PLAYERS]; +extern struct SequenceChannel gSequenceChannels[SEQUENCE_CHANNELS]; +extern struct SequenceChannelLayer gSequenceLayers[SEQUENCE_LAYERS]; +extern struct SequenceChannel gSequenceChannelNone; +extern struct AudioListItem gLayerFreeList; +extern struct NotePool gNoteFreeLists; +extern u8 *gAlBankSets; +extern struct CtlEntry *gCtlEntries; +extern struct AudioBufferParametersEU gAudioBufferParameters; +extern s32 gMaxSimultaneousNotes; +extern s8 gAudioUpdatesPerFrame; // = 4 +extern s8 gAudioLibSoundMode; #endif // AUDIO_LOAD_H diff --git a/src/audio/playback.c b/src/audio/playback.c index b40c73600..44d9833fc 100644 --- a/src/audio/playback.c +++ b/src/audio/playback.c @@ -1,1231 +1,778 @@ #include #include -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern f32 D_800F2EB0; -extern f32 D_800F2EB4; -extern s8 D_803B70B6; -extern f32 gDefaultPanVolume; -extern u16 gHeadsetPanQuantization; -extern f32 gHeadsetPanVolume; -extern f32 gStereoPanVolume; +#include "audio/internal.h" +#include "audio/playback.h" +#include "audio/load.h" +#include "audio/heap.h" +#include "audio/external.h" +#include "audio/effects.h" +#include "audio/data.h" +#include "audio/seqplayer.h" -void func_800BC5D0(void *arg0, f32 arg1, s32 arg2, u8 arg3) { - f32 temp_f14; - f32 temp_f2; - s32 temp_a1; - s32 temp_a3; - s32 temp_t4; - s32 temp_t8; - s8 temp_t3; - s8 temp_v1; - u8 temp_t1; - u8 temp_t8_2; - void *temp_v0; - void *temp_v0_2; - s32 phi_a1; - s32 phi_a0; - s32 phi_a1_2; - f32 phi_f12; - f32 phi_f12_2; - f32 phi_f0; - void *phi_v0; - f32 phi_f2; +void note_set_vel_pan_reverb(struct Note *note, f32 velocity, u8 pan, u8 reverbVol) { + struct NoteSubEu *sub = ¬e->noteSubEu; + f32 volRight, volLeft; + u8 strongRight; + u8 strongLeft; + s32 smallPanIndex; + u16 unkMask = ~0x80; - temp_t8 = arg2 & 0x7F; - phi_f12 = arg1; - if ((arg0->unkB0 & 0x2000000) && (temp_a1 = temp_t8 >> 3, temp_v0 = arg0 + 0xB0, phi_a1 = temp_a1, phi_v0 = temp_v0, (D_803B70B6 == 1))) { - if (temp_a1 >= 0x10) { - phi_a1 = 0xF; + pan &= unkMask; + + if (note->noteSubEu.stereoHeadsetEffects && gAudioLibSoundMode == SOUND_MODE_HEADSET) { + smallPanIndex = pan >> 3; + if (smallPanIndex >= ARRAY_COUNT(gHeadsetPanQuantization)) { + smallPanIndex = ARRAY_COUNT(gHeadsetPanQuantization) - 1; } - temp_a3 = phi_a1 * 2; - temp_v0->unk4 = *(&gHeadsetPanQuantization + temp_a3); - temp_t8_2 = temp_v0->unk0 & 0xFFF7; - temp_t1 = temp_t8_2 & 0xFB; - temp_v0->unk0 = temp_t8_2; - temp_v0->unk0 = temp_t1; - temp_v0->unk0 = temp_t1 | 1; - temp_v0->unk3 = *(&gHeadsetPanQuantization + 0x1E + -temp_a3); - phi_f0 = *(&gHeadsetPanVolume + (temp_t8 * 4)); - phi_f2 = *(&gHeadsetPanVolume + 0x1FC + -(temp_t8 * 4)); + + sub->headsetPanLeft = gHeadsetPanQuantization[smallPanIndex]; + sub->headsetPanRight = gHeadsetPanQuantization[ARRAY_COUNT(gHeadsetPanQuantization) - 1 - smallPanIndex]; + sub->stereoStrongRight = FALSE; + sub->stereoStrongLeft = FALSE; + sub->usesHeadsetPanEffects = TRUE; + + volLeft = gHeadsetPanVolume[pan]; + volRight = gHeadsetPanVolume[127 - pan]; + } else if (sub->stereoHeadsetEffects && gAudioLibSoundMode == SOUND_MODE_STEREO) { + strongRight = FALSE; + strongLeft = FALSE; + sub->headsetPanRight = 0; + sub->headsetPanLeft = 0; + + sub->usesHeadsetPanEffects = FALSE; + + volLeft = gStereoPanVolume[pan]; + volRight = gStereoPanVolume[127 - pan]; + if (pan < 0x20) { + strongLeft = TRUE; + } else if (pan > 0x60) { + strongRight = TRUE; + } + + sub->stereoStrongRight = strongRight; + sub->stereoStrongLeft = strongLeft; + + } else if (gAudioLibSoundMode == SOUND_MODE_MONO) { + volLeft = 0.707f; + volRight = 0.707f; } else { - temp_v0_2 = arg0 + 0xB0; - temp_v1 = D_803B70B6; - phi_v0 = temp_v0_2; - if ((temp_v0_2->unk0 & 0x2000000) && (phi_a0 = 0, (temp_v1 == 0))) { - temp_v0_2->unk3 = 0; - temp_v0_2->unk4 = 0; - temp_v0_2->unk0 = temp_v0_2->unk0 & 0xFFFE; - phi_a1_2 = 0; - phi_f0 = *(&gStereoPanVolume + (temp_t8 * 4)); - phi_f2 = *(&gStereoPanVolume + 0x1FC + -(temp_t8 * 4)); - if (temp_t8 < 0x20) { - phi_a1_2 = 1; - } else if (temp_t8 >= 0x61) { - phi_a0 = 1; + volLeft = gDefaultPanVolume[pan]; + volRight = gDefaultPanVolume[127 - pan]; + } + + if (velocity < 0.0f) { + stubbed_printf("Audio: setvol: volume minus %f\n", velocity); + velocity = 0.0f; + } + if (velocity > 1.0f) { + stubbed_printf("Audio: setvol: volume overflow %f\n", velocity); + velocity = 1.0f; + } + + sub->targetVolLeft = ((s32) (velocity * volLeft * 4095.999f)); + sub->targetVolRight = ((s32) (velocity * volRight * 4095.999f)); + + //! @bug for the change to UQ0.7, the if statement should also have been changed accordingly + if (sub->reverbVol != reverbVol) { + sub->reverbVol = reverbVol; + sub->envMixerNeedsInit = TRUE; + return; + } + + if (sub->needsInit) { + sub->envMixerNeedsInit = TRUE; + } else { + sub->envMixerNeedsInit = FALSE; + } +} + +void note_set_resampling_rate(struct Note *note, f32 resamplingRateInput) { + f32 resamplingRate = 0.0f; + struct NoteSubEu *tempSub = ¬e->noteSubEu; + + if (resamplingRateInput < 0.0f) { + stubbed_printf("Audio: setpitch: pitch minus %f\n", resamplingRateInput); + resamplingRateInput = 0.0f; + } + if (resamplingRateInput < 2.0f) { + tempSub->hasTwoAdpcmParts = 0; + + if (1.9999599f < resamplingRateInput) { + resamplingRate = 1.9999599f; + } else { + resamplingRate = resamplingRateInput; + } + + } else { + tempSub->hasTwoAdpcmParts = 1; + if (2 * 1.9999599f < resamplingRateInput) { + resamplingRate = 1.9999599f; + } else { + resamplingRate = resamplingRateInput * 0.5f; + } + } + note->noteSubEu.resamplingRateFixedPoint = (s32) (resamplingRate * 32768.0f); +} + +struct AudioBankSound *instrument_get_audio_bank_sound(struct Instrument *instrument, s32 semitone) { + struct AudioBankSound *sound; + if (semitone < instrument->normalRangeLo) { + sound = &instrument->lowNotesSound; + } else if (semitone <= instrument->normalRangeHi) { + sound = &instrument->normalNotesSound; + } else { + sound = &instrument->highNotesSound; + } + return sound; +} + +struct Instrument *get_instrument_inner(s32 bankId, s32 instId) { + struct Instrument *inst; + + if (IS_BANK_LOAD_COMPLETE(bankId) == FALSE) { + stubbed_printf("Audio: voiceman: No bank error %d\n", bankId); + gAudioErrorFlags = bankId + 0x10000000; + return NULL; + } + + if (instId >= gCtlEntries[bankId].numInstruments) { + stubbed_printf("Audio: voiceman: progNo. overflow %d,%d\n", + instId, gCtlEntries[bankId].numInstruments); + gAudioErrorFlags = ((bankId << 8) + instId) + 0x3000000; + return NULL; + } + + inst = gCtlEntries[bankId].instruments[instId]; + if (inst == NULL) { + stubbed_printf("Audio: voiceman: progNo. undefined %d,%d\n", bankId, instId); + gAudioErrorFlags = ((bankId << 8) + instId) + 0x1000000; + return inst; + } + return inst; +} + +struct Drum *get_drum(s32 bankId, s32 drumId) { + struct Drum *drum; + + if (IS_BANK_LOAD_COMPLETE(bankId) == FALSE) { + stubbed_printf("Audio: voiceman: No bank error %d\n", bankId); + gAudioErrorFlags = bankId + 0x10000000; + return NULL; + } + + if (drumId >= gCtlEntries[bankId].numDrums) { + stubbed_printf("Audio: voiceman: Percussion Overflow %d,%d\n", + drumId, gCtlEntries[bankId].numDrums); + gAudioErrorFlags = ((bankId << 8) + drumId) + 0x4000000; + return NULL; + } + + if ((uintptr_t) gCtlEntries[bankId].drums < 0x80000000U) { + stubbed_printf("Audio: voiceman: Percussion table pointer (bank %d) is irregular.\n"); + return NULL; + } + + drum = gCtlEntries[bankId].drums[drumId]; + if (drum == NULL) { + stubbed_printf("Audio: voiceman: Percpointer NULL %d,%d\n", bankId, drumId); + gAudioErrorFlags = ((bankId << 8) + drumId) + 0x5000000; + } + // Don't know where these actually belong, putting them here because why not + // Really, we just need these so the format strings could put into the .data section + stubbed_printf("--4 %x\n", gAudioErrorFlags); + stubbed_printf("Stoped Voice\n"); + return drum; +} + +void note_init(struct Note *note) { + if (note->parentLayer->adsr.releaseRate == 0) { + adsr_init(¬e->adsr, note->parentLayer->seqChannel->adsr.envelope, ¬e->adsrVolScale); + } else { + adsr_init(¬e->adsr, note->parentLayer->adsr.envelope, ¬e->adsrVolScale); + } + note->adsr.state = ADSR_STATE_INITIAL; + note->noteSubEu = gDefaultNoteSub; +} + +void note_disable(struct Note *note) { + if (note->noteSubEu.needsInit == TRUE) { + note->noteSubEu.needsInit = FALSE; + } else { + note_set_vel_pan_reverb(note, 0, 0x40, 0); + } + note->priority = NOTE_PRIORITY_DISABLED; + note->parentLayer = NO_LAYER; + note->prevParentLayer = NO_LAYER; + note->noteSubEu.enabled = FALSE; + note->noteSubEu.finished = FALSE; +} + +void process_notes(void) { + f32 scale; + f32 frequency; + f32 velocity; + struct Note *note; + struct NotePlaybackState *playbackState; + struct NoteSubEu *noteSubEu; + UNUSED u8 pad[12]; + u8 reverbVol; + UNUSED u8 pad3; + u8 pan; + u8 bookOffset; + struct NoteAttributes *attributes; + s32 i; + + for (i = 0; i < gMaxSimultaneousNotes; i++) { + note = &gNotes[i]; + playbackState = (struct NotePlaybackState *) ¬e->priority; + if (note->parentLayer != NO_LAYER) { +#ifndef NO_SEGMENTED_MEMORY + if ((uintptr_t) playbackState->parentLayer < 0x7fffffffU) { + continue; } - temp_t3 = ((phi_a0 * 8) & 8) | (temp_v0_2->unk0 & 0xFFF7); - temp_t4 = temp_t3 & 0xFB; - temp_v0_2->unk0 = temp_t3; - temp_v0_2->unk0 = ((phi_a1_2 * 4) & 4) | temp_t4; - } else if (temp_v1 == 3) { - temp_f2 = D_800F2EB0; - phi_f0 = temp_f2; - phi_f2 = temp_f2; - } else { - phi_f0 = *(&gDefaultPanVolume + (temp_t8 * 4)); - phi_f2 = *(&gDefaultPanVolume + 0x1FC + -(temp_t8 * 4)); +#endif + if (!playbackState->parentLayer->enabled && playbackState->priority >= NOTE_PRIORITY_MIN) { + goto c; + } else if (playbackState->parentLayer->seqChannel->seqPlayer == NULL) { + eu_stubbed_printf_0("CAUTION:SUB IS SEPARATED FROM GROUP"); + sequence_channel_disable(playbackState->parentLayer->seqChannel); + playbackState->priority = NOTE_PRIORITY_STOPPING; + continue; + } else if (playbackState->parentLayer->seqChannel->seqPlayer->muted) { + if ((playbackState->parentLayer->seqChannel->muteBehavior + & (MUTE_BEHAVIOR_STOP_SCRIPT | MUTE_BEHAVIOR_STOP_NOTES))) { + goto c; + } + } + goto d; + c: + seq_channel_layer_note_release(playbackState->parentLayer); + audio_list_remove(¬e->listItem); + audio_list_push_front(¬e->listItem.pool->decaying, ¬e->listItem); + playbackState->priority = NOTE_PRIORITY_STOPPING; + } else if (playbackState->priority >= NOTE_PRIORITY_MIN) { + continue; } - } - if (arg1 < 0.0f) { - phi_f12 = 0.0f; - } - phi_f12_2 = phi_f12; - if (phi_f12 > 1.0f) { - phi_f12_2 = 1.0f; - } - temp_f14 = D_800F2EB4; - phi_v0->unk6 = phi_f12_2 * phi_f0 * temp_f14; - phi_v0->unk8 = phi_f12_2 * phi_f2 * temp_f14; - if (arg3 != phi_v0->unk5) { - phi_v0->unk5 = arg3; - phi_v0->unk0 = phi_v0->unk0 | 0x10; - return; - } - if ((phi_v0->unk0 * 2) < 0) { - phi_v0->unk0 = phi_v0->unk0 | 0x10; - return; - } - phi_v0->unk0 = phi_v0->unk0 & 0xFFEF; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BC5D0.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern f32 D_800F2EB8; -extern f32 D_800F2EBC; -extern f32 D_800F2EC0; - -void func_800BC840(void *arg0, f32 arg1) { - f32 temp_f2; - void *temp_v0; - void *temp_v0_2; - f32 phi_f12; - f32 phi_f0; - - temp_v0 = arg0 + 0xB0; - phi_f12 = arg1; - if (arg1 < 0.0f) { - phi_f12 = 0.0f; - } - if (phi_f12 < 2.0f) { - temp_f2 = D_800F2EB8; - temp_v0_2 = arg0 + 0xB0; - temp_v0_2->unk1 = temp_v0_2->unk1 & 0xFFFE; - if (temp_f2 < phi_f12) { - phi_f0 = temp_f2; - } else { - phi_f0 = phi_f12; - } - } else { - temp_v0->unk1 = temp_v0->unk1 | 1; - if (D_800F2EBC < phi_f12) { - phi_f0 = D_800F2EC0; - } else { - phi_f0 = phi_f12 * 0.5f; - } - } - arg0->unkBA = phi_f0 * 32768.0f; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BC840.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void *func_800BC90C(void *arg0, s32 arg1) { - if (arg1 < arg0->unk1) { - return arg0 + 8; - } - if (arg0->unk2 >= arg1) { - return arg0 + 0x10; - } - return arg0 + 0x18; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BC90C.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern u8 D_803B03C0; -extern s32 D_803B7080; -extern s32 D_803B7198; - -s32 func_800BC948(s32 arg0, s32 arg1) { - s32 temp_v1; - void *temp_v0; - - if (*(&D_803B03C0 + arg0) < 2) { - D_803B7198 = arg0 + 0x10000000; - return 0; - } - temp_v0 = D_803B7080 + (arg0 * 0xC); - if (arg1 >= temp_v0->unk1) { - D_803B7198 = (arg0 << 8) + arg1 + 0x3000000; - return 0; - } - temp_v1 = *(temp_v0->unk4 + (arg1 * 4)); - if (temp_v1 == 0) { - D_803B7198 = (arg0 << 8) + arg1 + 0x1000000; - return temp_v1; - } - return temp_v1; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BC948.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern u8 D_803B03C0; -extern s32 D_803B7080; -extern s32 D_803B7198; - -s32 func_800BC9F8(s32 arg0, s32 arg1) { - s32 temp_a2; - u32 temp_v1; - void *temp_v0; - - if (*(&D_803B03C0 + arg0) < 2) { - D_803B7198 = arg0 + 0x10000000; - return 0; - } - temp_v0 = D_803B7080 + (arg0 * 0xC); - if (arg1 >= temp_v0->unk2) { - D_803B7198 = (arg0 << 8) + arg1 + 0x4000000; - return 0; - } - temp_v1 = temp_v0->unk8; - if (temp_v1 < 0x80000000) { - return 0; - } - temp_a2 = *(temp_v1 + (arg1 * 4)); - if (temp_a2 == 0) { - D_803B7198 = (arg0 << 8) + arg1 + 0x5000000; - } - return temp_a2; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BC9F8.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BE5BC(void *, s32, void *, void *); // extern -extern NoteSub gDefaultNoteSub; - -void func_800BCAB4(void *arg0) { - s32 temp_a1; - void *temp_a0; - void *temp_a2; - void *temp_a3; - void *temp_v0; - - temp_v0 = arg0->unk44; - temp_a3 = arg0; - if (temp_v0->unk18 == 0) { - temp_a0 = arg0 + 0x58; - temp_a2 = temp_a3 + 0x34; - temp_a1 = temp_v0->unk4C->unk80; - arg0 = temp_a3; - func_800BE5BC(temp_a0, temp_a1, temp_a2, temp_a3); - } else { - arg0 = temp_a3; - func_800BE5BC(temp_a3 + 0x58, temp_v0->unk1C, temp_a3 + 0x34, temp_a3); - } - arg0->unk59 = 1; - arg0->unkB0 = gDefaultNoteSub.unk0; - arg0->unkB4 = gDefaultNoteSub.unk4; - arg0->unkB8 = gDefaultNoteSub.unk8; - arg0->unkBC = gDefaultNoteSub.unkC; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BCAB4.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BC5D0(?, ?, ?); // extern - -void func_800BCB48(void *arg0) { - if (((arg0->unkB0 * 2) >> 0x1F) == 1) { - arg0->unkB0 = arg0->unkB0 & 0xFFBF; - } else { - func_800BC5D0(0, 0x40, 0); - } - arg0->unk30 = 0; - arg0->unkB0 = arg0->unkB0 & 0xFF7F; - arg0->unk44 = -1; - arg0->unk40 = -1; - arg0->unkB0 = arg0->unkB0 & 0xFFDF; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BCB48.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BC5D0(void *, f32, u8, u8); // extern -void func_800BC840(void *, f32, u8, u8); // extern -void func_800BCB48(void *, void *); // extern -void func_800BD140(u32, u32); // extern -void func_800BD6B4(s32, void *); // extern -void func_800BD6F4(void *); // extern -void func_800BD7C0(void *, void *); // extern -void func_800BE468(void *); // extern -void func_800BE4D4(void *); // extern -f32 func_800BE5E0(void *); // extern -void func_800BEBA4(void *, u32); // extern -void func_800BF004(s32, void *); // extern -extern s32 D_803B1508; -extern s32 gMaxSimultaneousNotes; - -void func_800BCBC4(void) { - u8 sp4B; - u8 sp49; - f32 temp_f22; - s32 *temp_s3; - s32 *temp_s3_2; - s32 *temp_v0; - s32 temp_s5; - s32 temp_v1; - s32 temp_v1_2; - s32 temp_v1_3; - u32 temp_a1; - u8 *temp_s1; - u8 *temp_s1_2; - u8 temp_v0_2; - void *temp_a0; - void *temp_a0_2; - void *temp_a1_2; - void *temp_a1_3; - void *temp_s0; - void *temp_v0_3; - s32 phi_s5; - u8 phi_v0; - u8 *phi_s1; - u8 phi_a3; - u8 phi_a2; - f32 phi_f0; - f32 phi_f20; - s32 phi_s2; - s32 *phi_s3; - s32 phi_v0_2; - s32 phi_v1; - - temp_v1 = gMaxSimultaneousNotes; - phi_v1 = temp_v1; - if (temp_v1 > 0) { - phi_s5 = 0; - do { - temp_s0 = phi_s5 + D_803B1508; - temp_s1 = temp_s0 + 0x30; - phi_s1 = temp_s1; - if (temp_s0->unk44 != -1) { - temp_s1_2 = temp_s0 + 0x30; - temp_a1 = temp_s1_2->unk14; - phi_s1 = temp_s1_2; - if (temp_a1 < 0x7FFFFFFF) { - phi_v0_2 = phi_v1 * 3; - } else if (((temp_a1->unk0 >> 0x1F) != 0) || (temp_s1_2->unk0 < 2)) { - temp_a0 = temp_a1->unk4C; - temp_v0 = temp_a0->unk44; - if (temp_v0 == 0) { - func_800BEBA4(temp_a0, temp_a1); - temp_s1_2->unk0 = 1; - temp_v1_2 = gMaxSimultaneousNotes; - phi_v0_2 = temp_v1_2 * 3; - phi_v1 = temp_v1_2; + d: + if (playbackState->priority != NOTE_PRIORITY_DISABLED) { + noteSubEu = ¬e->noteSubEu; + if (playbackState->priority == NOTE_PRIORITY_STOPPING || noteSubEu->finished) { + if (playbackState->adsr.state == ADSR_STATE_DISABLED || noteSubEu->finished) { + if(playbackState && playbackState){} + if (playbackState->wantedParentLayer != NO_LAYER) { + note_disable(note); + if (playbackState->wantedParentLayer->seqChannel != NULL) { + note_init_for_layer(note, playbackState->wantedParentLayer); + note_vibrato_init(note); + audio_list_remove(¬e->listItem); + audio_list_push_back(¬e->listItem.pool->active, ¬e->listItem); + playbackState->wantedParentLayer = NO_LAYER; + // don't skip + } else { + eu_stubbed_printf_0("Error:Wait Track disappear\n"); + note_disable(note); + audio_list_remove(¬e->listItem); + audio_list_push_back(¬e->listItem.pool->disabled, ¬e->listItem); + playbackState->wantedParentLayer = NO_LAYER; + goto skip; + } } else { - if (((*temp_v0 * 4) >= 0) || ((temp_a0->unk3 & 0xC0) == 0)) { - phi_v0 = temp_s1_2->unk0; - } else { - goto block_12; - } - goto block_15; + note_disable(note); + audio_list_remove(¬e->listItem); + audio_list_push_back(¬e->listItem.pool->disabled, ¬e->listItem); + goto skip; } - } else { -block_12: - func_800BD140(temp_a1, temp_a1); - func_800BD6F4(temp_s0); - func_800BD6B4(temp_s0->unkC + 0x10, temp_s0); - temp_s1_2->unk0 = 1; - phi_v0 = 1 & 0xFF; - goto block_15; - } - } else { - temp_v0_2 = *temp_s1; - phi_v0 = temp_v0_2; - if (temp_v0_2 >= 2) { - phi_v0_2 = phi_v1 * 3; - } else { -block_15: - if (phi_v0 != 0) { - temp_s3 = temp_s0 + 0xB0; - phi_s3 = temp_s3; - if ((phi_v0 == 1) || ((*temp_s3 * 4) < 0)) { - temp_s3_2 = temp_s0 + 0xB0; - phi_s3 = temp_s3_2; - if ((phi_s1->unk29 == 0) || ((*temp_s3_2 * 4) < 0)) { - if (phi_s1->unk18 != -1) { - func_800BCB48(temp_s0); - temp_a1_2 = phi_s1->unk18; - if (temp_a1_2->unk4C != 0) { - func_800BD7C0(temp_s0, temp_a1_2); - func_800BE4D4(temp_s0); - func_800BD6F4(temp_s0); - func_800BF004(temp_s0->unkC + 0x30, temp_s0); - phi_s1->unk18 = -1; - phi_s3 = temp_s0 + 0xB0; - goto block_27; - } - func_800BCB48(temp_s0, temp_a1_2); - func_800BD6F4(temp_s0); - func_800BF004(temp_s0->unkC, temp_s0); - phi_s1->unk18 = -1; - } else { - func_800BCB48(temp_s0); - func_800BD6F4(temp_s0); - func_800BF004(temp_s0->unkC, temp_s0); - } - } else { - goto block_27; - } - } else if (phi_s1->unk29 == 0) { - func_800BCB48(temp_s0); - func_800BD6F4(temp_s0); - func_800BF004(temp_s0->unkC, temp_s0); - } else { -block_27: - temp_f22 = func_800BE5E0(phi_s1 + 0x28); - func_800BE468(temp_s0); - temp_v0_3 = phi_s1 + 0x1C; - if (phi_s1->unk0 == 1) { - phi_a3 = temp_v0_3->unk0; - phi_a2 = temp_v0_3->unk1; - phi_f0 = temp_v0_3->unk4; - phi_f20 = temp_v0_3->unk8; - phi_s2 = ((phi_s3->unk0 << 0xB) >> 0x1D) & 0xFF; - } else { - temp_a1_3 = phi_s1->unk14; - temp_a0_2 = temp_a1_3->unk4C; - phi_a3 = temp_a0_2->unk4; - phi_a2 = temp_a1_3->unk6; - phi_f0 = temp_a1_3->unk30; - phi_f20 = temp_a1_3->unk2C; - phi_s2 = temp_a0_2->unk8 & 7; - } - sp4B = phi_a3; - sp49 = phi_a2; - func_800BC840(temp_s0, phi_f0 * (phi_s1->unkC * phi_s1->unk8), phi_a2, phi_a3); - func_800BC5D0(temp_s0, phi_f20 * temp_f22, phi_a2, phi_a3); - phi_s3->unk1 = ((phi_s2 * 4) & 0x1C) | (phi_s3->unk1 & 0xFFE3); - } - } - temp_v1_3 = gMaxSimultaneousNotes; - phi_v0_2 = temp_v1_3 * 3; - phi_v1 = temp_v1_3; } + } else if (playbackState->adsr.state == ADSR_STATE_DISABLED) { + note_disable(note); + audio_list_remove(¬e->listItem); + audio_list_push_back(¬e->listItem.pool->disabled, ¬e->listItem); + goto skip; } - temp_s5 = phi_s5 + 0xC0; - phi_s5 = temp_s5; - } while (temp_s5 < (phi_v0_2 << 6)); + + scale = adsr_update(&playbackState->adsr); + note_vibrato_update(note); + attributes = &playbackState->attributes; + if (playbackState->priority == NOTE_PRIORITY_STOPPING) { + frequency = attributes->freqScale; + velocity = attributes->velocity; + pan = attributes->pan; + reverbVol = attributes->reverbVol; + if (1) {} + bookOffset = noteSubEu->bookOffset; + } else { + frequency = playbackState->parentLayer->noteFreqScale; + velocity = playbackState->parentLayer->noteVelocity; + pan = playbackState->parentLayer->notePan; + reverbVol = playbackState->parentLayer->seqChannel->reverbVol; + bookOffset = playbackState->parentLayer->seqChannel->bookOffset & 0x7; + } + + frequency *= playbackState->vibratoFreqScale * playbackState->portamentoFreqScale; + velocity = velocity * scale; + note_set_resampling_rate(note, frequency); + note_set_vel_pan_reverb(note, velocity, pan, reverbVol); + noteSubEu->bookOffset = bookOffset; + skip:; + } } } -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BCBC4.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD6B4(s32, void *); // extern -void func_800BD6F4(void *, void *, s32, s32); // extern -extern f32 D_803B70A0; -extern f32 D_803B70A4; +void seq_channel_layer_decay_release_internal(struct SequenceChannelLayer *seqLayer, s32 target) { + struct Note *note; + struct NoteAttributes *attributes; -void func_800BCF44(void *arg0, s32 arg1) { - void *sp1C; - f32 temp_f16; - f32 temp_f18; - s32 temp_t6; - s32 temp_v0_2; - u8 temp_t3; - u8 temp_v0_4; - void *temp_v0; - void *temp_v0_3; - void *temp_v1; - f32 phi_f18; - f32 phi_f16; + if ((seqLayer == NO_LAYER) || (seqLayer->note == NULL)) { + return; + } - if ((arg0 != -1) && (temp_v0 = arg0->unk40, (temp_v0 != 0))) { - if (arg0 == temp_v0->unk48) { - temp_v0->unk48 = -1; + note = seqLayer->note; + attributes = ¬e->attributes; + + if (note->wantedParentLayer == seqLayer) { + note->wantedParentLayer = NO_LAYER; + } + + if (note->parentLayer != seqLayer) { + if (note->parentLayer == NO_LAYER && note->wantedParentLayer == NO_LAYER && + note->prevParentLayer == seqLayer && target != ADSR_STATE_DECAY) { + // Just guessing that this printf goes here... it's hard to parse. + eu_stubbed_printf_0("Slow Release Batting\n"); + note->adsr.fadeOutVel = gAudioBufferParameters.updatesPerFrameInv; + note->adsr.action |= ADSR_ACTION_RELEASE; } - temp_v0_2 = temp_v0->unk44; - if (arg0 != temp_v0_2) { - if ((temp_v0_2 == -1) && (temp_v0->unk48 == -1) && (arg0 == temp_v0->unk40) && (arg1 != 6)) { - temp_v0->unk58 = temp_v0->unk58 | 0x10; - temp_v0->unk68 = D_803B70A0; - return; + } else { + seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED; + if (note->adsr.state != ADSR_STATE_DECAY) { + attributes->freqScale = seqLayer->noteFreqScale; + attributes->velocity = seqLayer->noteVelocity; + attributes->pan = seqLayer->notePan; + if (seqLayer->seqChannel != NULL) { + attributes->reverbVol = seqLayer->seqChannel->reverbVol; } - // Duplicate return node #25. Try simplifying control flow for better match + note->priority = NOTE_PRIORITY_STOPPING; + note->prevParentLayer = note->parentLayer; + note->parentLayer = NO_LAYER; + if (target == ADSR_STATE_RELEASE) { + note->adsr.fadeOutVel = gAudioBufferParameters.updatesPerFrameInv; + note->adsr.action |= ADSR_ACTION_RELEASE; + } else { + note->adsr.action |= ADSR_ACTION_DECAY; + if (seqLayer->adsr.releaseRate == 0) { + note->adsr.fadeOutVel = seqLayer->seqChannel->adsr.releaseRate * gAudioBufferParameters.unkUpdatesPerFrameScaled; + } else { + note->adsr.fadeOutVel = seqLayer->adsr.releaseRate * gAudioBufferParameters.unkUpdatesPerFrameScaled; + } + note->adsr.sustain = (FLOAT_CAST(seqLayer->seqChannel->adsr.sustain) * note->adsr.current) / 256.0f; + } + } + + if (target == ADSR_STATE_DECAY) { + audio_list_remove(¬e->listItem); + audio_list_push_front(¬e->listItem.pool->decaying, ¬e->listItem); + } + } +} + +void seq_channel_layer_note_decay(struct SequenceChannelLayer *seqLayer) { + seq_channel_layer_decay_release_internal(seqLayer, ADSR_STATE_DECAY); +} + +void seq_channel_layer_note_release(struct SequenceChannelLayer *seqLayer) { + seq_channel_layer_decay_release_internal(seqLayer, ADSR_STATE_RELEASE); +} + +const u8 D_800E98F4[4] = { 0x40, 0x20, 0x10, 0x08 }; + +s32 build_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer, s32 waveId) { + f32 freqScale; + f32 ratio; + u8 sampleCountIndex; + + if (waveId < 128) { + stubbed_printf("Audio:Wavemem: Bad voiceno (%d)\n", waveId); + waveId = 128; + } + + freqScale = seqLayer->freqScale; + if (seqLayer->portamento.mode != 0 && 0.0f < seqLayer->portamento.extent) { + freqScale *= (seqLayer->portamento.extent + 1.0f); + } + if (freqScale < 1.0f) { + sampleCountIndex = 0; + ratio = 1.0465f; + } else if (freqScale < 2.0f) { + sampleCountIndex = 1; + ratio = 0.52325f; + } else if (freqScale < 4.0f) { + sampleCountIndex = 2; + ratio = 0.26263f; + } else { + sampleCountIndex = 3; + ratio = 0.13081f; + } + seqLayer->freqScale *= ratio; + note->waveId = waveId; + note->sampleCountIndex = sampleCountIndex; + + note->noteSubEu.sound.samples = &gWaveSamples[waveId - 128][sampleCountIndex * 64]; + + return sampleCountIndex; +} + +void init_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer) { + s32 sampleCountIndex; + s32 waveSampleCountIndex; + s32 waveId = seqLayer->instOrWave; + if (waveId == 0xff) { + waveId = seqLayer->seqChannel->instOrWave; + } + sampleCountIndex = note->sampleCountIndex; + waveSampleCountIndex = build_synthetic_wave(note, seqLayer, waveId); + note->synthesisState.samplePosInt = note->synthesisState.samplePosInt * D_800E98F4[waveSampleCountIndex] / D_800E98F4[sampleCountIndex]; +} + +void init_note_list(struct AudioListItem *list) { + list->prev = list; + list->next = list; + list->u.count = 0; +} + +void init_note_lists(struct NotePool *pool) { + init_note_list(&pool->disabled); + init_note_list(&pool->decaying); + init_note_list(&pool->releasing); + init_note_list(&pool->active); + pool->disabled.pool = pool; + pool->decaying.pool = pool; + pool->releasing.pool = pool; + pool->active.pool = pool; +} + +void init_note_free_list(void) { + s32 i; + + init_note_lists(&gNoteFreeLists); + for (i = 0; i < gMaxSimultaneousNotes; i++) { + gNotes[i].listItem.u.value = &gNotes[i]; + gNotes[i].listItem.prev = NULL; + audio_list_push_back(&gNoteFreeLists.disabled, &gNotes[i].listItem); + } +} + +void note_pool_clear(struct NotePool *pool) { + s32 i; + struct AudioListItem *source; + struct AudioListItem *cur; + struct AudioListItem *dest; + UNUSED s32 j; // unused in EU + + for (i = 0; i < 4; i++) { + switch (i) { + case 0: + source = &pool->disabled; + dest = &gNoteFreeLists.disabled; + break; + + case 1: + source = &pool->decaying; + dest = &gNoteFreeLists.decaying; + break; + + case 2: + source = &pool->releasing; + dest = &gNoteFreeLists.releasing; + break; + + case 3: + source = &pool->active; + dest = &gNoteFreeLists.active; + break; + } + + for (;;) { + cur = source->next; + if (cur == source) { + break; + } + if (cur == NULL) { + eu_stubbed_printf_0("Audio: C-Alloc : Dealloc voice is NULL\n"); + break; + } + audio_list_remove(cur); + audio_list_push_back(dest, cur); + } + } +} + +void note_pool_fill(struct NotePool *pool, s32 count) { + s32 i; + s32 j; + struct Note *note; + struct AudioListItem *source; + struct AudioListItem *dest; + + note_pool_clear(pool); + + for (i = 0, j = 0; j < count; i++) { + if (i == 4) { + eu_stubbed_printf_1("Alloc Error:Dim voice-Alloc %d", count); return; } - arg0->unk2 = 0; - if (temp_v0->unk59 != 6) { - temp_v0_3 = temp_v0 + 0x4C; - temp_v0_3->unk4 = arg0->unk30; - temp_v0_3->unk8 = arg0->unk2C; - temp_v0_3->unk1 = arg0->unk6; - temp_v1 = arg0->unk4C; - if (temp_v1 != 0) { - temp_v0_3->unk0 = temp_v1->unk4; + + switch (i) { + case 0: + source = &gNoteFreeLists.disabled; + dest = &pool->disabled; + break; + + case 1: + source = &gNoteFreeLists.decaying; + dest = &pool->decaying; + break; + + case 2: + source = &gNoteFreeLists.releasing; + dest = &pool->releasing; + break; + + case 3: + source = &gNoteFreeLists.active; + dest = &pool->active; + break; + } + + while (j < count) { + note = audio_list_pop_back(source); + if (note == NULL) { + break; } - temp_t6 = temp_v0->unk44; - temp_v0->unk30 = 1; - temp_v0->unk44 = -1; - temp_v0->unk40 = temp_t6; - if (arg1 == 7) { - temp_v0->unk58 = temp_v0->unk58 | 0x10; - temp_v0->unk68 = D_803B70A0; - } else { - temp_v0->unk58 = temp_v0->unk58 | 0x20; - temp_v0_4 = arg0->unk18; - if (temp_v0_4 == 0) { - temp_t3 = arg0->unk4C->unk7C; - temp_f18 = temp_t3; - phi_f18 = temp_f18; - if (temp_t3 < 0) { - phi_f18 = temp_f18 + 4294967296.0f; - } - temp_v0->unk68 = phi_f18 * D_803B70A4; - } else { - temp_f16 = temp_v0_4; - phi_f16 = temp_f16; - if (temp_v0_4 < 0) { - phi_f16 = temp_f16 + 4294967296.0f; - } - temp_v0->unk68 = phi_f16 * D_803B70A4; - } - temp_v0->unk60 = arg0->unk4C->unk7D * temp_v0->unk6C * 0.00390625f; - } - } - if (arg1 == 6) { - sp1C = temp_v0; - func_800BD6F4(temp_v0, temp_v0, -1, arg1); - func_800BD6B4(temp_v0->unkC + 0x10, temp_v0); - } - // Duplicate return node #25. Try simplifying control flow for better match - } -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BCF44.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BCF44(?); // extern - -void func_800BD120(void) { - func_800BCF44(6); -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD120.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BCF44(?); // extern - -void func_800BD140(void) { - func_800BCF44(7); -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD140.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern f32 D_800F2EC4; -extern f32 D_800F2EC8; -extern f32 D_800F2ECC; -extern f32 D_800F2ED0; -extern s16 gUnknownWave7; - -s8 func_800BD160(void *arg0, void *arg1, s32 arg2) { - f32 temp_f12; - f32 temp_f2; - f32 phi_f0; - f32 phi_f0_2; - s8 phi_a2; - s8 phi_v1; - - phi_a2 = arg2; - phi_v1 = 0; - if (arg2 < 0x80) { - phi_a2 = 0x80; - } - temp_f2 = arg1->unk24; - phi_f0 = temp_f2; - if (arg1->unk8 != 0) { - temp_f12 = arg1->unk14; - if (temp_f12 > 0.0f) { - phi_f0 = temp_f2 * (temp_f12 + 1.0f); + audio_list_push_back(dest, ¬e->listItem); + j++; } } - if (phi_f0 < 1.0f) { - phi_f0_2 = D_800F2EC4; +} + +void audio_list_push_front(struct AudioListItem *list, struct AudioListItem *item) { + // add 'item' to the front of the list given by 'list', if it's not in any list + if (item->prev != NULL) { + eu_stubbed_printf_0("Error:Same List Add\n"); } else { - phi_v1 = 1; - if (phi_f0 < 2.0f) { - phi_f0_2 = D_800F2EC8; - } else { - phi_v1 = 3; - if (phi_f0 < 4.0f) { - phi_f0_2 = D_800F2ECC; - phi_v1 = 2; - } else { - phi_f0_2 = D_800F2ED0; - } - } - } - arg1->unk24 = temp_f2 * phi_f0_2; - arg0->unk31 = phi_a2; - arg0->unk32 = phi_v1; - arg0->unkBC = *(&gUnknownWave7 + (phi_a2 * 4)) + (phi_v1 << 7); - return phi_v1; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD160.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800BD160(u8); // extern -extern ? D_800E98F4; - -void func_800BD264(void *arg0, void *arg1) { - s32 sp1C; - u8 temp_a2; - u8 phi_a2; - - temp_a2 = arg1->unk1; - phi_a2 = temp_a2; - if (temp_a2 == 0xFF) { - phi_a2 = arg1->unk4C->unk1C; - } - sp1C = arg0->unk32; - arg0->unk18 = (arg0->unk18 * *(&D_800E98F4 + func_800BD160(phi_a2))) / *(&D_800E98F4 + sp1C); -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD264.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD308(void *arg0) { - arg0->unk0 = arg0; - arg0->unk4 = arg0; - arg0->unk8 = 0; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD308.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD308(s32); // extern - -void func_800BD318(void *arg0) { - func_800BD308(); - func_800BD308(arg0 + 0x10); - func_800BD308(arg0 + 0x20); - func_800BD308(arg0 + 0x30); - arg0->unkC = arg0; - arg0->unk1C = arg0; - arg0->unk2C = arg0; - arg0->unk3C = arg0; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD318.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD318(? *); // extern -void func_800BF004(? *, s32); // extern -extern s32 D_803B1508; -extern ? D_803B5FC8; -extern s32 gMaxSimultaneousNotes; - -void func_800BD368(void) { - s32 temp_s1; - s32 temp_v0; - s32 phi_s0; - s32 phi_s1; - - func_800BD318(&D_803B5FC8); - phi_s0 = 0; - phi_s1 = 0; - if (gMaxSimultaneousNotes > 0) { - do { - temp_v0 = D_803B1508; - (temp_v0 + phi_s0)->unk8 = phi_s0 + temp_v0; - *(D_803B1508 + phi_s0) = 0; - func_800BF004(&D_803B5FC8, phi_s0 + D_803B1508); - temp_s1 = phi_s1 + 1; - phi_s0 += 0xC0; - phi_s1 = temp_s1; - } while (temp_s1 < gMaxSimultaneousNotes); + item->prev = list; + item->next = list->next; + list->next->prev = item; + list->next = item; + list->u.count++; + item->pool = list->pool; } } -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD368.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD6F4(s32, ? *, ? *); // extern -void func_800BF004(? *, s32); // extern -extern ? D_803B5FC8; -extern ? D_803B5FD8; -extern ? D_803B5FE8; -extern ? D_803B5FF8; - -void func_800BD418(void *arg0) { - void *sp48; - ? *sp40; - s32 temp_s0; - s32 temp_s3; - s32 phi_s3; - s32 phi_s0; - void *phi_s1; - s32 phi_s0_2; - ? *phi_a1; - ? *phi_a2; - ? *phi_s2; - void *phi_s1_2; - ? *phi_a1_2; - ? *phi_a2_2; - ? *phi_v1; - ? *phi_v0; - - phi_s3 = 0; - phi_a1_2 = &D_803B5FD8; - phi_a2_2 = &D_803B5FC8; - phi_s1_2 = sp48; - phi_s2 = sp40; - phi_v1 = &D_803B5FE8; - phi_v0 = &D_803B5FF8; - do { - phi_a1 = phi_a1_2; - phi_a2 = phi_a2_2; - if (phi_s3 != 0) { - if (phi_s3 != 1) { - if (phi_s3 != 2) { - if (phi_s3 != 3) { - - } else { - phi_s1_2 = arg0 + 0x30; - phi_s2 = phi_v0; - } - } else { - phi_s1_2 = arg0 + 0x20; - phi_s2 = phi_v1; - } - } else { - phi_s1_2 = arg0 + 0x10; - phi_s2 = phi_a1_2; - } - phi_s0 = phi_s1_2->unk4; - phi_s1 = phi_s1_2; - } else { - phi_s0 = arg0->unk4; - phi_s1 = arg0; - phi_s2 = phi_a2_2; - } - phi_s0_2 = phi_s0; - phi_s1_2 = phi_s1; - if (phi_s0 != phi_s1) { -loop_12: - phi_a1_2 = phi_a1; - phi_a2_2 = phi_a2; - if (phi_s0_2 != 0) { - func_800BD6F4(phi_s0_2, phi_a1, phi_a2); - func_800BF004(phi_s2, phi_s0_2); - temp_s0 = phi_s1->unk4; - phi_s0_2 = temp_s0; - phi_a1 = &D_803B5FD8; - phi_a2 = &D_803B5FC8; - phi_a1_2 = &D_803B5FD8; - phi_a2_2 = &D_803B5FC8; - phi_v1 = &D_803B5FE8; - phi_v0 = &D_803B5FF8; - phi_v1 = &D_803B5FE8; - phi_v0 = &D_803B5FF8; - if (temp_s0 != phi_s1) { - goto loop_12; - } - } - } - temp_s3 = phi_s3 + 1; - phi_s3 = temp_s3; - } while (temp_s3 != 4); - sp40 = phi_s2; - sp48 = phi_s1; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD418.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD418(); // extern -void func_800BF004(s32, s32); // extern -s32 func_800BF044(? *); // extern -extern ? D_803B5FC8; -extern ? D_803B5FD8; -extern ? D_803B5FE8; -extern ? D_803B5FF8; - -void func_800BD578(s32 arg0, s32 arg1) { - ? *sp48; - s32 sp44; - s32 temp_s0; - s32 temp_v0; - s32 phi_s4; - s32 phi_s0; - ? *phi_s1; - s32 phi_s2; - s32 phi_s0_2; - s32 phi_s0_3; - - func_800BD418(); - phi_s4 = 0; - phi_s0 = 0; - if (arg1 > 0) { - phi_s1 = sp48; - phi_s2 = sp44; -loop_2: - phi_s0_2 = phi_s0; - phi_s0_3 = phi_s0; - if (phi_s4 != 4) { - if (phi_s4 != 0) { - if (phi_s4 != 1) { - if (phi_s4 != 2) { - if (phi_s4 != 3) { - - } else { - phi_s1 = &D_803B5FF8; - phi_s2 = arg0 + 0x30; - } - } else { - phi_s1 = &D_803B5FE8; - phi_s2 = arg0 + 0x20; - } - } else { - phi_s1 = &D_803B5FD8; - phi_s2 = arg0 + 0x10; - } - } else { - phi_s1 = &D_803B5FC8; - phi_s2 = arg0; - } - if (phi_s0 < arg1) { -loop_13: - temp_v0 = func_800BF044(phi_s1); - phi_s0_3 = phi_s0_2; - if (temp_v0 != 0) { - func_800BF004(phi_s2, temp_v0); - temp_s0 = phi_s0_2 + 1; - phi_s0_2 = temp_s0; - phi_s0_3 = temp_s0; - if (temp_s0 < arg1) { - goto loop_13; - } - } - } - phi_s4 += 1; - phi_s0 = phi_s0_3; - if (phi_s0_3 >= arg1) { - sp44 = phi_s2; - sp48 = phi_s1; - } else { - goto loop_2; - } - } - } -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD578.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD6B4(void *arg0, ? *arg1) { - if (arg1->unk0 == 0) { - arg1->unk0 = arg0; - arg1->unk4 = arg0->unk4; - *arg0->unk4 = arg1; - arg0->unk4 = arg1; - arg0->unk8 = arg0->unk8 + 1; - arg1->unkC = arg0->unkC; - } -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD6B4.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD6F4(void *arg0) { - void *temp_v0; - - temp_v0 = arg0->unk0; - if (temp_v0 != 0) { - temp_v0->unk4 = arg0->unk4; - *arg0->unk4 = arg0->unk0; - arg0->unk0 = NULL; - } -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD6F4.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD6F4(void *, void *); // extern - -void *func_800BD720(void *arg0, s32 arg1) { - void *sp18; - void *temp_v0; - void *temp_v0_2; - void *phi_a0; - void *phi_v0; - void *phi_a0_2; - void *phi_a0_3; - - temp_v0 = arg0->unk4; - phi_v0 = temp_v0; - if (temp_v0 == arg0) { - return NULL; - } - phi_a0 = temp_v0; - phi_a0_2 = temp_v0; - if (temp_v0 != arg0) { - do { - phi_a0_3 = phi_a0; - if (phi_a0->unk8->unk30 >= phi_v0->unk8->unk30) { - phi_a0_3 = phi_v0; - } - temp_v0_2 = phi_v0->unk4; - phi_a0 = phi_a0_3; - phi_v0 = temp_v0_2; - phi_a0_2 = phi_a0_3; - } while (temp_v0_2 != arg0); - } - if (phi_a0_2 == 0) { - return NULL; - } - if (phi_a0_2->unk8->unk30 >= arg1) { - return NULL; - } - sp18 = phi_a0_2; - func_800BD6F4(phi_a0_2, arg0); - return phi_a0_2->unk8; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD720.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BCAB4(); // extern -s32 func_800BD160(void *, void *, s32); // extern - -void func_800BD7C0(void *arg0, void *arg1) { - void *sp1C; - u8 temp_a2; - void *temp_a1; - void *temp_v0; - s32 phi_a2; - void *phi_a1; - - arg0->unk40 = -1; - arg0->unk44 = arg1; - arg0->unk30 = arg1->unk4C->unk5; - arg1->unk2 = 3; - arg1->unk0 = arg1->unk0 | 4; - arg1->unk40 = arg0; - arg1->unk4C->unk38 = arg0; - arg1->unk4C->unk3C = arg1; - arg1->unk2C = 0.0f; - func_800BCAB4(); - temp_a1 = arg1; - temp_a2 = temp_a1->unk1; - temp_v0 = arg0 + 0xB0; - phi_a2 = temp_a2; - phi_a1 = temp_a1; - if (temp_a2 == 0xFF) { - phi_a2 = temp_a1->unk4C->unk1C; - } - temp_v0->unkC = temp_a1->unk48; - if (phi_a2 >= 0x80) { - temp_v0->unk1 = temp_v0->unk1 | 2; +void audio_list_remove(struct AudioListItem *item) { + // remove 'item' from the list it's in, if any + if (item->prev == NULL) { + eu_stubbed_printf_0("Already Cut\n"); } else { - temp_v0->unk1 = temp_v0->unk1 & 0xFFFD; + item->prev->next = item->next; + item->next->prev = item->prev; + item->prev = NULL; } - if (temp_v0->unk0 & 0x20000) { - sp1C = temp_v0; - arg1 = temp_a1; - func_800BD160(arg0, temp_a1, phi_a2); - phi_a1 = arg1; - } - (arg0 + 0xB0)->unk2 = phi_a1->unk4C->unk6; - (arg0 + 0xB0)->unk0 = ((((phi_a1->unk4C->unk0 << 5) >> 0x1F) * 2) & 2) | ((arg0 + 0xB0)->unk0 & 0xFFFD); - (arg0 + 0xB0)->unk1 = ((phi_a1->unk4C->unk7 & 3) << 5) | ((arg0 + 0xB0)->unk1 & 0xFF1F); } -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD7C0.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD140(s32); // extern +struct Note *pop_node_with_lower_prio(struct AudioListItem *list, s32 limit) { + struct AudioListItem *cur = list->next; + struct AudioListItem *best; -void func_800BD8F4(void *arg0, s32 arg1) { - func_800BD140(arg0->unk44); - arg0->unk48 = arg1; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD8F4.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern f32 D_803B70A0; - -void func_800BD928(void *arg0, s32 arg1) { - arg0->unk48 = arg1; - arg0->unk30 = 1; - arg0->unk58 = arg0->unk58 | 0x10; - arg0->unk68 = D_803B70A0; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD928.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD6B4(s32, s32); // extern -void func_800BD7C0(s32, s32); // extern -s32 func_800BF044(); // extern - -s32 func_800BD950(s32 arg0, s32 arg1) { - s32 sp1C; - s32 temp_v0; - - temp_v0 = func_800BF044(); - sp1C = temp_v0; - if (temp_v0 != 0) { - func_800BD7C0(temp_v0, arg1); - func_800BD6B4(arg0 + 0x30, sp1C); - } - return sp1C; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD950.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD928(s32, s32); // extern -void func_800BF004(s32, s32); // extern -s32 func_800BF044(s32); // extern - -s32 func_800BD99C(s32 arg0, s32 arg1) { - s32 sp1C; - s32 temp_v0; - - temp_v0 = func_800BF044(arg0 + 0x10); - sp1C = temp_v0; - if (temp_v0 != 0) { - func_800BD928(temp_v0, arg1); - func_800BF004(arg0 + 0x20, sp1C); - } - return sp1C; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD99C.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800BD720(s32, u8); // extern -void func_800BD8F4(s32, void *); // extern -void func_800BF004(s32, s32); // extern - -s32 func_800BD9EC(s32 arg0, void *arg1) { - s32 sp1C; - s32 temp_v0; - - temp_v0 = func_800BD720(arg0 + 0x30, arg1->unk4C->unk5); - sp1C = temp_v0; - if (temp_v0 != 0) { - func_800BD8F4(temp_v0, arg1); - func_800BF004(arg0 + 0x20, sp1C); - } - return sp1C; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD9EC.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD6F4(void *); // extern -void func_800BD928(void *, void *, void *); // extern -void *func_800BD950(? *, void *, void *); // extern -void *func_800BD99C(? *, void *, void *); // extern -void *func_800BD9EC(? *, void *, void *); // extern -void func_800BF004(s32, void *); // extern -extern ? D_803B5FC8; - -void *func_800BDA44(void *arg0, void *arg2) { - void *sp24; - u8 temp_v0; - void *temp_a2; - void *temp_v0_10; - void *temp_v0_11; - void *temp_v0_12; - void *temp_v0_13; - void *temp_v0_14; - void *temp_v0_15; - void *temp_v0_16; - void *temp_v0_17; - void *temp_v0_18; - void *temp_v0_19; - void *temp_v0_20; - void *temp_v0_21; - void *temp_v0_22; - void *temp_v0_2; - void *temp_v0_3; - void *temp_v0_4; - void *temp_v0_5; - void *temp_v0_6; - void *temp_v0_7; - void *temp_v0_8; - void *temp_v0_9; - void *temp_v1; - void *phi_a2; - void *phi_a2_2; - - temp_v1 = arg0->unk4C; - temp_v0 = temp_v1->unk2; - phi_a2 = arg2; - if (((temp_v0 & 1) != 0) && (temp_a2 = arg0->unk40, phi_a2 = temp_a2, (temp_a2 != 0)) && (arg0 == temp_a2->unk40) && (temp_a2->unk48 == -1)) { - sp24 = temp_a2; - func_800BD928(temp_a2, arg0, temp_a2); - func_800BD6F4(sp24); - func_800BF004(sp24->unkC + 0x20, sp24); - return sp24; - } - if ((temp_v0 & 2) != 0) { - temp_v0_2 = func_800BD950(temp_v1 + 0x84, arg0, phi_a2); - phi_a2_2 = temp_v0_2; - if ((temp_v0_2 == 0) && (temp_v0_3 = func_800BD99C(arg0->unk4C + 0x84, arg0, temp_v0_2), phi_a2_2 = temp_v0_3, (temp_v0_3 == 0)) && (temp_v0_4 = func_800BD9EC(arg0->unk4C + 0x84, arg0, temp_v0_3), phi_a2_2 = temp_v0_4, (temp_v0_4 == 0))) { - arg0->unk2 = 0; - return NULL; - } - goto block_36; - } - if ((temp_v0 & 4) != 0) { - temp_v0_5 = func_800BD950(temp_v1 + 0x84, arg0, phi_a2); - phi_a2_2 = temp_v0_5; - if ((temp_v0_5 == 0) && (temp_v0_6 = func_800BD950(arg0->unk4C->unk44 + 0x94, arg0, temp_v0_5), phi_a2_2 = temp_v0_6, (temp_v0_6 == 0)) && (temp_v0_7 = func_800BD99C(arg0->unk4C + 0x84, arg0, temp_v0_6), phi_a2_2 = temp_v0_7, (temp_v0_7 == 0)) && (temp_v0_8 = func_800BD99C(arg0->unk4C->unk44 + 0x94, arg0, temp_v0_7), phi_a2_2 = temp_v0_8, (temp_v0_8 == 0)) && (temp_v0_9 = func_800BD9EC(arg0->unk4C + 0x84, arg0, temp_v0_8), phi_a2_2 = temp_v0_9, (temp_v0_9 == 0)) && (temp_v0_10 = func_800BD9EC(arg0->unk4C->unk44 + 0x94, arg0, temp_v0_9), phi_a2_2 = temp_v0_10, (temp_v0_10 == 0))) { - arg0->unk2 = 0; - return NULL; - } - goto block_36; - } - if ((temp_v0 & 8) != 0) { - temp_v0_11 = func_800BD950(&D_803B5FC8, arg0, phi_a2); - phi_a2_2 = temp_v0_11; - if ((temp_v0_11 == 0) && (temp_v0_12 = func_800BD99C(&D_803B5FC8, arg0, temp_v0_11), phi_a2_2 = temp_v0_12, (temp_v0_12 == 0)) && (temp_v0_13 = func_800BD9EC(&D_803B5FC8, arg0, temp_v0_12), phi_a2_2 = temp_v0_13, (temp_v0_13 == 0))) { - arg0->unk2 = 0; - return NULL; - } - goto block_36; - } - temp_v0_14 = func_800BD950(temp_v1 + 0x84, arg0, phi_a2); - phi_a2_2 = temp_v0_14; - if ((temp_v0_14 == 0) && (temp_v0_15 = func_800BD950(arg0->unk4C->unk44 + 0x94, arg0, temp_v0_14), phi_a2_2 = temp_v0_15, (temp_v0_15 == 0)) && (temp_v0_16 = func_800BD950(&D_803B5FC8, arg0, temp_v0_15), phi_a2_2 = temp_v0_16, (temp_v0_16 == 0)) && (temp_v0_17 = func_800BD99C(arg0->unk4C + 0x84, arg0, temp_v0_16), phi_a2_2 = temp_v0_17, (temp_v0_17 == 0)) && (temp_v0_18 = func_800BD99C(arg0->unk4C->unk44 + 0x94, arg0, temp_v0_17), phi_a2_2 = temp_v0_18, (temp_v0_18 == 0)) && (temp_v0_19 = func_800BD99C(&D_803B5FC8, arg0, temp_v0_18), phi_a2_2 = temp_v0_19, (temp_v0_19 == 0)) && (temp_v0_20 = func_800BD9EC(arg0->unk4C + 0x84, arg0, temp_v0_19), phi_a2_2 = temp_v0_20, (temp_v0_20 == 0)) && (temp_v0_21 = func_800BD9EC(arg0->unk4C->unk44 + 0x94, arg0, temp_v0_20), phi_a2_2 = temp_v0_21, (temp_v0_21 == 0)) && (temp_v0_22 = func_800BD9EC(&D_803B5FC8, arg0, temp_v0_21), phi_a2_2 = temp_v0_22, (temp_v0_22 == 0))) { - arg0->unk2 = 0; + if (cur == list) { return NULL; } -block_36: - return phi_a2_2; + + for (best = cur; cur != list; cur = cur->next) { + if (((struct Note *) best->u.value)->priority >= ((struct Note *) cur->u.value)->priority) { + best = cur; + } + } + + if (best == NULL) { + return NULL; + } + + if (limit <= ((struct Note *) best->u.value)->priority) { + return NULL; + } + + audio_list_remove(best); + return best->u.value; } -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BDA44.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 soundAlloc(? *, ?); // extern -extern ? gNotesAndBuffersPool; -extern s32 D_803B1508; -extern s32 gMaxSimultaneousNotes; -extern NoteSub gZeroNoteSub; +void note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLayer) { + UNUSED s32 pad[4]; + s16 instId; + struct NoteSubEu *sub = ¬e->noteSubEu; -void func_800BDD34(void) { - s32 temp_s1; - void *temp_s0; - s32 phi_s2; - s32 phi_s1; + note->prevParentLayer = NO_LAYER; + note->parentLayer = seqLayer; + note->priority = seqLayer->seqChannel->notePriority; + seqLayer->notePropertiesNeedInit = TRUE; + seqLayer->status = SOUND_LOAD_STATUS_DISCARDABLE; // "loaded" + seqLayer->note = note; + seqLayer->seqChannel->noteUnused = note; + seqLayer->seqChannel->layerUnused = seqLayer; + seqLayer->noteVelocity = 0.0f; + note_init(note); + instId = seqLayer->instOrWave; + if (instId == 0xff) { + instId = seqLayer->seqChannel->instOrWave; + } + sub->sound.audioBankSound = seqLayer->sound; - phi_s1 = 0; - if (gMaxSimultaneousNotes > 0) { - phi_s2 = 0; - do { - temp_s0 = phi_s2 + D_803B1508; - temp_s0->unkB0 = gZeroNoteSub.unk0; - temp_s0->unkB4 = gZeroNoteSub.unk4; - temp_s0->unkB8 = gZeroNoteSub.unk8; - temp_s0->unk30 = 0; - temp_s0->unk44 = -1; - temp_s0->unk48 = -1; - temp_s0->unk40 = -1; - temp_s0->unk31 = 0; - temp_s0->unk54 = 0.0f; - temp_s0->unk34 = 0; - temp_s0->unk59 = 0; - temp_s0->unk58 = 0; - temp_s0->unkA0 = 0; - temp_s0->unk80 = 0.0f; - temp_s0->unk84 = 0.0f; - temp_s0->unkBC = gZeroNoteSub.unkC; - temp_s0->unk1C = soundAlloc(&gNotesAndBuffersPool, 0xA0); - temp_s1 = phi_s1 + 1; - phi_s2 += 0xC0; - phi_s1 = temp_s1; - } while (temp_s1 < gMaxSimultaneousNotes); + if (instId >= 0x80) { + sub->isSyntheticWave = TRUE; + } else { + sub->isSyntheticWave = FALSE; + } + + if (sub->isSyntheticWave) { + build_synthetic_wave(note, seqLayer, instId); + } + sub->bankId = seqLayer->seqChannel->bankId; + sub->stereoHeadsetEffects = seqLayer->seqChannel->stereoHeadsetEffects; + sub->reverbIndex = seqLayer->seqChannel->reverbIndex & 3; +} + +void func_800BD8F4(struct Note *note, struct SequenceChannelLayer *seqLayer) { + seq_channel_layer_note_release(note->parentLayer); + note->wantedParentLayer = seqLayer; +} + +void note_release_and_take_ownership(struct Note *note, struct SequenceChannelLayer *seqLayer) { + note->wantedParentLayer = seqLayer; + note->priority = NOTE_PRIORITY_STOPPING; + note->adsr.fadeOutVel = gAudioBufferParameters.updatesPerFrameInv; + note->adsr.action |= ADSR_ACTION_RELEASE; +} + +struct Note *alloc_note_from_disabled(struct NotePool *pool, struct SequenceChannelLayer *seqLayer) { + struct Note *note = audio_list_pop_back(&pool->disabled); + if (note != NULL) { + note_init_for_layer(note, seqLayer); + audio_list_push_front(&pool->active, ¬e->listItem); + } + return note; +} + +struct Note *alloc_note_from_decaying(struct NotePool *pool, struct SequenceChannelLayer *seqLayer) { + struct Note *note = audio_list_pop_back(&pool->decaying); + if (note != NULL) { + note_release_and_take_ownership(note, seqLayer); + audio_list_push_back(&pool->releasing, ¬e->listItem); + } + return note; +} + +s32 alloc_note_from_active(struct NotePool *pool, struct SequenceChannelLayer *seqLayer) { + struct Note *aNote; + + aNote = pop_node_with_lower_prio(&pool->active, seqLayer->seqChannel->notePriority); + + if (aNote == NULL) { + eu_stubbed_printf_0("Audio: C-Alloc : lowerPrio is NULL\n"); + } else { + func_800BD8F4(aNote, seqLayer); + audio_list_push_back(&pool->releasing, &aNote->listItem); + } + + return aNote; +} + +struct Note *alloc_note(struct SequenceChannelLayer *seqLayer) { + struct Note *ret; + u32 policy = seqLayer->seqChannel->noteAllocPolicy; + + if (policy & NOTE_ALLOC_LAYER) { + ret = seqLayer->note; + if (ret != NULL && ret->prevParentLayer == seqLayer + && ret->wantedParentLayer == NO_LAYER + ) { + note_release_and_take_ownership(ret, seqLayer); + audio_list_remove(&ret->listItem); + audio_list_push_back(&ret->listItem.pool->releasing, &ret->listItem); + return ret; + } + } + + if (policy & NOTE_ALLOC_CHANNEL) { + if (!(ret = alloc_note_from_disabled(&seqLayer->seqChannel->notePool, seqLayer)) + && !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->notePool, seqLayer)) + && !(ret = alloc_note_from_active(&seqLayer->seqChannel->notePool, seqLayer))) { + eu_stubbed_printf_0("Sub Limited Warning: Drop Voice"); + seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED; + return NULL; + } + return ret; + } + + if (policy & NOTE_ALLOC_SEQ) { + if (!(ret = alloc_note_from_disabled(&seqLayer->seqChannel->notePool, seqLayer)) + && !(ret = alloc_note_from_disabled(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer)) + && !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->notePool, seqLayer)) + && !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer)) + && !(ret = alloc_note_from_active(&seqLayer->seqChannel->notePool, seqLayer)) + && !(ret = alloc_note_from_active(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer))) { + eu_stubbed_printf_0("Warning: Drop Voice"); + seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED; + return NULL; + } + return ret; + } + + if (policy & NOTE_ALLOC_GLOBAL_FREELIST) { + if (!(ret = alloc_note_from_disabled(&gNoteFreeLists, seqLayer)) + && !(ret = alloc_note_from_decaying(&gNoteFreeLists, seqLayer)) + && !(ret = alloc_note_from_active(&gNoteFreeLists, seqLayer))) { + eu_stubbed_printf_0("Warning: Drop Voice"); + seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED; + return NULL; + } + return ret; + } + + if (!(ret = alloc_note_from_disabled(&seqLayer->seqChannel->notePool, seqLayer)) + && !(ret = alloc_note_from_disabled(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer)) + && !(ret = alloc_note_from_disabled(&gNoteFreeLists, seqLayer)) + && !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->notePool, seqLayer)) + && !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer)) + && !(ret = alloc_note_from_decaying(&gNoteFreeLists, seqLayer)) + && !(ret = alloc_note_from_active(&seqLayer->seqChannel->notePool, seqLayer)) + && !(ret = alloc_note_from_active(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer)) + && !(ret = alloc_note_from_active(&gNoteFreeLists, seqLayer))) { + eu_stubbed_printf_0("Warning: Drop Voice"); + seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED; + return NULL; + } + return ret; +} + +void note_init_all(void) { + struct Note *note; + s32 i; + + for (i = 0; i < gMaxSimultaneousNotes; i++) { + note = &gNotes[i]; + note->noteSubEu = gZeroNoteSub; + note->priority = NOTE_PRIORITY_DISABLED; + note->parentLayer = NO_LAYER; + note->wantedParentLayer = NO_LAYER; + note->prevParentLayer = NO_LAYER; + note->waveId = 0; + note->attributes.velocity = 0.0f; + note->adsrVolScale = 0; + note->adsr.state = ADSR_STATE_DISABLED; + note->adsr.action = 0; + note->vibratoState.active = FALSE; + note->portamento.cur = 0.0f; + note->portamento.speed = 0.0f; + // This only works if NoteSynthesisBuffers are size 0xA0. See internal.h + note->synthesisState.synthesisBuffers = soundAlloc(&gNotesAndBuffersPool, sizeof(struct NoteSynthesisBuffers)); } } -#else -GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BDD34.s") -#endif diff --git a/src/audio/playback.h b/src/audio/playback.h new file mode 100644 index 000000000..e2cd88bb8 --- /dev/null +++ b/src/audio/playback.h @@ -0,0 +1,49 @@ +#ifndef AUDIO_PLAYBACK_H +#define AUDIO_PLAYBACK_H + +#include + +#include "internal.h" + +// Mask bits denoting where to allocate notes from, according to a channel's +// noteAllocPolicy. Despite being checked as bitmask bits, the bits are not +// orthogonal; rather, the smallest bit wins, except for NOTE_ALLOC_LAYER, +// which *is* orthogonal to the other. SEQ implicitly includes CHANNEL. +// If none of the CHANNEL/SEQ/GLOBAL_FREELIST bits are set, all three locations +// are tried. +#define NOTE_ALLOC_LAYER 1 +#define NOTE_ALLOC_CHANNEL 2 +#define NOTE_ALLOC_SEQ 4 +#define NOTE_ALLOC_GLOBAL_FREELIST 8 + +void note_set_vel_pan_reverb(struct Note *note, f32 velocity, u8 pan, u8 reverbVol); +void note_set_resampling_rate(struct Note *note, f32 resamplingRateInput); +s32 build_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer, s32 waveId); +void init_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer); +void init_note_list(struct AudioListItem *list); +void init_note_lists(struct NotePool *pool); +void init_note_free_list(void); +void note_pool_clear(struct NotePool *pool); +void note_pool_fill(struct NotePool *pool, s32 count); +void audio_list_push_front(struct AudioListItem *list, struct AudioListItem *item); +void audio_list_remove(struct AudioListItem *item); +struct Note *pop_node_with_lower_prio(struct AudioListItem *list, s32 limit); +void note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLayer); +void note_disable(struct Note *note); +void process_notes(void); +struct AudioBankSound *instrument_get_audio_bank_sound(struct Instrument *instrument, s32 semitone); +struct Instrument *get_instrument_inner(s32 bankId, s32 instId); +struct Drum *get_drum(s32 bankId, s32 drumId); +void note_init(struct Note *note); +void seq_channel_layer_decay_release_internal(struct SequenceChannelLayer *seqLayer, s32 target); +void seq_channel_layer_note_decay(struct SequenceChannelLayer *seqLayer); +void seq_channel_layer_note_release(struct SequenceChannelLayer *seqLayer); +void func_800BD8F4(struct Note *note, struct SequenceChannelLayer *seqLayer); +void note_release_and_take_ownership(struct Note *note, struct SequenceChannelLayer *seqLayer); +struct Note *alloc_note_from_disabled(struct NotePool *pool, struct SequenceChannelLayer *seqLayer); +struct Note *alloc_note_from_decaying(struct NotePool *pool, struct SequenceChannelLayer *seqLayer); +s32 alloc_note_from_active(struct NotePool *pool, struct SequenceChannelLayer *seqLayer); +struct Note *alloc_note(struct SequenceChannelLayer *seqLayer); +void note_init_all(void); + +#endif // AUDIO_PLAYBACK_H diff --git a/src/audio/port_eu.c b/src/audio/port_eu.c index 8d156e570..35bdf86fa 100644 --- a/src/audio/port_eu.c +++ b/src/audio/port_eu.c @@ -1,11 +1,14 @@ #include #include +#include "audio/internal.h" +#include "audio/load.h" + #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 func_800B70EC(s32, s32 *, s32, s16); // extern s32 func_800BA00C(); // extern -void func_800BAC04(); // extern +void decrease_sample_dma_ttls(); // extern void func_800CBCB0(void *); // extern extern OSMesgQueue *D_800EA3A8; extern OSMesgQueue *D_800EA3AC; @@ -113,7 +116,7 @@ void *create_next_audio_frame_task(void) { } while (temp_s0_3 != temp_s1_2); } gCurrAudioFrameDmaCount = 0; - func_800BAC04(); + decrease_sample_dma_ttls(); if (osRecvMesg(D_800EA3B0, &sp58, 0) != -1) { D_803B0501 = sp58; D_803B0500 = 5; @@ -180,14 +183,14 @@ GLOBAL_ASM("asm/non_matchings/audio/port_eu/create_next_audio_frame_task.s") void func_800BB388(u8, u8, u8, void *); // extern void func_800BBDDC(u8, ?, void *); // extern void func_800BBEF0(u8, u8, u8, void *); // extern -void func_800BEF2C(u32 *, s32, void *); // extern -void func_800CBA08(u8, s32, void *); // extern +void sequence_player_disable(u32 *, s32, void *); // extern +void seq_player_fade_to_zero_volume(u8, s32, void *); // extern void func_800CBA64(u8, s32); // extern -extern u8 D_803B1510; +extern u8 gSequencePlayers; extern u8 D_803B1658; extern u8 D_803B17A0; extern u8 D_803B18E8; -extern s8 D_803B70B6; +extern s8 gAudioLibSoundMode; void func_800CB818(void *arg0) { s32 temp_a1; @@ -215,32 +218,32 @@ void func_800CB818(void *arg0) { // Duplicate return node #19. Try simplifying control flow for better match return; } - D_803B1510 = (D_803B1510 & 0xFFDF) | 4; + gSequencePlayers = (gSequencePlayers & 0xFFDF) | 4; D_803B1658 = (D_803B1658 & 0xFFDF) | 4; D_803B17A0 = (D_803B17A0 & 0xFFDF) | 4; D_803B18E8 = (D_803B18E8 & 0xFFDF) | 4; return; } - D_803B1510 = D_803B1510 | 0x24; + gSequencePlayers = gSequencePlayers | 0x24; D_803B1658 = D_803B1658 | 0x24; D_803B17A0 = D_803B17A0 | 0x24; D_803B18E8 = D_803B18E8 | 0x24; return; } - D_803B70B6 = temp_a3->unk4; + gAudioLibSoundMode = temp_a3->unk4; return; } goto block_10; } temp_v0_2 = temp_a3->unk1; - temp_a0 = (temp_v0_2 * 0x148) + &D_803B1510; + temp_a0 = (temp_v0_2 * 0x148) + &gSequencePlayers; if ((*temp_a0 >> 0x1F) != 0) { temp_a1 = temp_a3->unk4; if (temp_a1 == 0) { - func_800BEF2C(temp_a0, temp_a1, temp_a3); + sequence_player_disable(temp_a0, temp_a1, temp_a3); return; } - func_800CBA08(temp_v0_2, temp_a1, temp_a3); + seq_player_fade_to_zero_volume(temp_v0_2, temp_a1, temp_a3); return; } return; @@ -260,48 +263,30 @@ block_10: GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CB818.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern u32 D_803B1510; +void seq_player_fade_to_zero_volume(s32 arg0, s32 fadeOutTime) { + struct SequencePlayer *player; -void func_800CBA08(s32 arg0, s16 arg1) { - ? sp-10; - void *temp_v0; - s16 phi_a1; - - phi_a1 = arg1; - if (arg1 == 0) { - phi_a1 = 1; + if (fadeOutTime == 0) { + fadeOutTime = 1; } - temp_v0 = (arg0 * 0x148) + &D_803B1510; - temp_v0->unk1 = 2; - temp_v0->unk10 = phi_a1; - temp_v0->unk1C = -(temp_v0->unk18 / phi_a1); + player = &gSequencePlayers[arg0]; + player->state = 2; + player->fadeRemainingFrames = fadeOutTime; + player->fadeVelocity = -(player->fadeVolume / fadeOutTime); } -#else -GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBA08.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern u32 D_803B1510; +void func_800CBA64(s32 playerIndex, s32 fadeInTime) { + struct SequencePlayer *player; -void func_800CBA64(s32 arg0, s16 arg1) { - ? sp-10; - void *temp_v0; - - if (arg1 != 0) { - temp_v0 = (arg0 * 0x148) + &D_803B1510; - temp_v0->unk1 = 1; - temp_v0->unk12 = arg1; - temp_v0->unk10 = arg1; - temp_v0->unk18 = 0.0f; - temp_v0->unk1C = 0.0f; + if (fadeInTime != 0) { + player = &gSequencePlayers[playerIndex]; + player->state = 1; + player->fadeTimerUnkEu = fadeInTime; + player->fadeRemainingFrames = fadeInTime; + player->fadeVolume = 0.0f; + player->fadeVelocity = 0.0f; } } -#else -GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBA64.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -410,8 +395,8 @@ GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBC24.s") //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 void func_800CB818(void *); /* extern */ extern ? D_80193820; -extern u32 D_803B1510; -extern ? D_803B5EF0; +extern u32 gSequencePlayers; +extern ? gSequenceChannelNone; void func_800CBCB0(u32 arg0) { s32 temp_s1; @@ -442,7 +427,7 @@ void func_800CBCB0(u32 arg0) { } else { temp_v0 = temp_s0->unk1; if (temp_v0 < 4) { - temp_v1 = &D_803B1510 + (temp_v0 * 0x148); + temp_v1 = &gSequencePlayers + (temp_v0 * 0x148); if ((temp_a0 & 0x80) != 0) { func_800CB818(temp_s0); } else if ((temp_a0 & 0x40) != 0) { @@ -468,7 +453,7 @@ void func_800CBCB0(u32 arg0) { temp_a1 = temp_s0->unk2; if (temp_a1 < 0x10) { temp_v0_2 = (temp_v1 + (temp_a1 * 4))->unk30; - if (temp_v0_2 != &D_803B5EF0) { + if (temp_v0_2 != &gSequenceChannelNone) { switch (temp_a0) { case 1: temp_v0_2->unk1 = temp_v0_2->unk1 | 0x40; @@ -514,13 +499,12 @@ GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBCB0.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -/* -Failed to decompile function func_800CBF48: +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c +? func_800CBAB4(); /* extern */ -Last instruction is missing a delay slot: -jr $ra -*/ +void func_800CBF48(void) { + func_800CBAB4(); +} #else GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBF48.s") #endif diff --git a/src/audio/port_eu.h b/src/audio/port_eu.h new file mode 100644 index 000000000..b651b85b8 --- /dev/null +++ b/src/audio/port_eu.h @@ -0,0 +1,7 @@ +#ifndef AUDIO_PORT_EU_H +#define AUDIO_PORT_EU_H + +void seq_player_fade_to_zero_volume(s32 arg0, s32 fadeOutTime); +void func_800CBA64(s32 playerIndex, s32 fadeInTime); + +#endif \ No newline at end of file diff --git a/src/audio/seqplayer.c b/src/audio/seqplayer.c index 7424e86f6..111a84a15 100644 --- a/src/audio/seqplayer.c +++ b/src/audio/seqplayer.c @@ -1,561 +1,307 @@ #include #include -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD318(void *, void *, s32); // extern +#include "audio/data.h" +#include "audio/internal.h" +#include "audio/seqplayer.h" +#include "audio/load.h" +#include "audio/heap.h" +#include "audio/playback.h" +#include "audio/external.h" -void func_800BE8F0(void *arg0) { - s32 temp_a0; - u8 temp_t0; - u8 temp_t2; - u8 temp_t4; - u8 temp_t6; - u8 temp_t8; - u8 temp_t8_2; - void *temp_v1; - void *phi_v1; - s32 phi_a0; +// sequence_channel_init +void sequence_channel_init(struct SequenceChannel *seqChannel) { + s32 i; - temp_t8 = arg0->unk0 & 0xFF7F; - temp_t0 = temp_t8 & 0xBF; - arg0->unk0 = temp_t8; - temp_t2 = temp_t0 & 0xDF; - arg0->unk0 = temp_t0; - temp_t4 = temp_t2 & 0xEF; - arg0->unk0 = temp_t2; - temp_t6 = temp_t4 & 0xF7; - arg0->unk0 = temp_t4; - temp_t8_2 = temp_t6 & 0xFB; - arg0->unk0 = temp_t6; - arg0->unk0 = temp_t8_2; - arg0->unk10 = 0x800; - arg0->unkC = 0x800; - arg0->unk1E = 0; - arg0->unk0 = temp_t8_2 & 0xFD; - arg0->unk8 = 0; - arg0->unk1 = 0xFF; - arg0->unk78 = 0; - arg0->unk9 = 0x40; - arg0->unkA = 0x80; - arg0->unk38 = 0; - arg0->unk7 = 0; - arg0->unk4 = 0; - arg0->unk5 = 3; - arg0->unk1A = 0; - arg0->unk80 = gDefaultEnvelope; - arg0->unk7C = 0x20; - arg0->unk7D = 0; - arg0->unk12 = 0; - arg0->unkE = 0; - arg0->unk14 = 0; - arg0->unk16 = 0; - arg0->unk18 = 0; - arg0->unk24 = 1.0f; - arg0->unk20 = 1.0f; - arg0->unk30 = 1.0f; - phi_v1 = arg0; - phi_a0 = 0; - do { - temp_a0 = phi_a0 + 4; - phi_v1->unk59 = -1; - phi_v1->unk5A = -1; - phi_v1->unk5B = -1; - temp_v1 = phi_v1 + 4; - temp_v1->unk54 = -1; - phi_v1 = temp_v1; - phi_a0 = temp_a0; - } while (temp_a0 != 8); - arg0->unk0 = arg0->unk0 & 0xFFFE; - func_800BD318(arg0 + 0x84, arg0, 8); + seqChannel->enabled = FALSE; + seqChannel->finished = FALSE; + seqChannel->stopScript = FALSE; + seqChannel->stopSomething2 = FALSE; + seqChannel->hasInstrument = FALSE; + seqChannel->stereoHeadsetEffects = FALSE; + seqChannel->transposition = 0; + seqChannel->largeNotes = FALSE; + seqChannel->bookOffset = 0; + seqChannel->changes.as_u8 = 0xff; + seqChannel->scriptState.depth = 0; + seqChannel->newPan = 0x40; + seqChannel->panChannelWeight = 0x80; + seqChannel->noteUnused = NULL; + seqChannel->reverbIndex = 0; + seqChannel->reverbVol = 0; + seqChannel->notePriority = NOTE_PRIORITY_DEFAULT; + seqChannel->delay = 0; + seqChannel->adsr.envelope = gDefaultEnvelope; + seqChannel->adsr.releaseRate = 0x20; + seqChannel->adsr.sustain = 0; + seqChannel->vibratoRateTarget = 0x800; + seqChannel->vibratoRateStart = 0x800; + seqChannel->vibratoExtentTarget = 0; + seqChannel->vibratoExtentStart = 0; + seqChannel->vibratoRateChangeDelay = 0; + seqChannel->vibratoExtentChangeDelay = 0; + seqChannel->vibratoDelay = 0; + seqChannel->volume = 1.0f; + seqChannel->volumeScale = 1.0f; + seqChannel->freqScale = 1.0f; + for (i = 0; i < 8; i++) { + seqChannel->soundScriptIO[i] = -1; + } + seqChannel->unused = FALSE; + init_note_lists(&seqChannel->notePool); } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BE8F0.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD120(s32, void *, s32); // extern -s32 func_800BF044(? *, void *, s32); // extern -extern ? D_803B5FB8; +s32 seq_channel_set_layer(struct SequenceChannel *seqChannel, s32 layerIndex) { + struct SequenceChannelLayer *layer; -? func_800BEA10(void *arg0, s32 arg1) { - void *sp1C; - s32 temp_a3; - s32 temp_t7; - s32 temp_v0; - u8 temp_t0; - u8 temp_t1; - u8 temp_t5; - u8 temp_t7_2; - void *temp_a2; - void *temp_v1; - - temp_t7 = arg1 * 4; - temp_a2 = arg0 + temp_t7; - temp_a3 = temp_a2->unk48; - if (temp_a3 == 0) { - sp1C = temp_a2; - temp_v0 = func_800BF044(&D_803B5FB8, temp_a2, temp_a3); - temp_a2->unk48 = temp_v0; - if (temp_v0 == 0) { - temp_a2->unk48 = 0; + if (seqChannel->layers[layerIndex] == NULL) { + struct SequenceChannelLayer *layer; + layer = audio_list_pop_back(&gLayerFreeList); + seqChannel->layers[layerIndex] = layer; + if (layer == NULL) { + seqChannel->layers[layerIndex] = NULL; return -1; } - goto block_4; + } else { + seq_channel_layer_note_decay(seqChannel->layers[layerIndex]); } - sp1C = temp_a2; - func_800BD120(temp_a3, temp_a2, temp_a3); -block_4: - temp_v1 = (arg0 + temp_t7)->unk48; - temp_v1->unk4C = arg0; - temp_t5 = temp_v1->unk0 | 0x80; - temp_t7_2 = temp_t5 & 0xDF; - temp_t0 = temp_t7_2 & 0xEF; - temp_v1->unk18 = arg0->unk7C; - temp_v1->unk0 = temp_t5; - temp_v1->unk1C = arg0->unk80; - temp_t1 = temp_t0 & 0xBF; - temp_v1->unk0 = temp_t7_2; - temp_v1->unk0 = temp_t0; - temp_v1->unk0 = temp_t1; - temp_v1->unk18 = 0; - temp_v1->unk0 = temp_t1 & 0xFD; - temp_v1->unk8 = 0; - temp_v1->unk68 = 0; - temp_v1->unk2 = 0; - temp_v1->unk3 = 0x80; - temp_v1->unk5 = 0x40; - temp_v1->unk22 = 0; - temp_v1->unk38 = 0; - temp_v1->unk3A = 0; - temp_v1->unk3C = 0; - temp_v1->unk40 = 0; - temp_v1->unk44 = 0; - temp_v1->unk1 = 0xFF; - temp_v1->unk28 = 0.0f; - temp_v1->unk24 = 1.0f; + + layer = seqChannel->layers[layerIndex]; + layer->seqChannel = seqChannel; + layer->adsr = seqChannel->adsr; + layer->adsr.releaseRate = 0; + layer->enabled = TRUE; + layer->stopSomething = FALSE; + layer->continuousNotes = FALSE; + layer->finished = FALSE; + layer->ignoreDrumPan = FALSE; + layer->portamento.mode = 0; + layer->scriptState.depth = 0; + layer->status = SOUND_LOAD_STATUS_NOT_LOADED; + layer->noteDuration = 0x80; + layer->pan = 0x40; + layer->transposition = 0; + layer->delay = 0; + layer->duration = 0; + layer->delayUnused = 0; + layer->note = NULL; + layer->instrument = NULL; + layer->freqScale = 1.0f; + layer->velocitySquare = 0.0f; + layer->instOrWave = 0xff; return 0; } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEA10.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD120(); // extern - -void func_800BEB18(u8 *arg0) { - u8 temp_t0; - u8 temp_t9; - - if (arg0 != 0) { - func_800BD120(); - temp_t9 = *arg0 & 0xFF7F; - temp_t0 = temp_t9 | 0x40; - *arg0 = temp_t9; - *arg0 = temp_t0; +void seq_channel_layer_disable(struct SequenceChannelLayer *layer) { + if (layer != NULL) { + seq_channel_layer_note_decay(layer); + layer->enabled = FALSE; + layer->finished = TRUE; } } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEB18.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BEB18(s32); // extern -void func_800BF004(? *, s32, s32); // extern -extern ? D_803B5FB8; +void seq_channel_layer_free(struct SequenceChannel *seqChannel, s32 layerIndex) { + struct SequenceChannelLayer *layer = seqChannel->layers[layerIndex]; -void func_800BEB54(s32 arg0, s32 arg1) { - s32 sp1C; - void *sp18; - s32 temp_a2; - void *temp_v0; - - temp_v0 = arg0 + (arg1 * 4); - temp_a2 = temp_v0->unk48; - if (temp_a2 != 0) { - sp18 = temp_v0; - sp1C = temp_a2; - func_800BF004(&D_803B5FB8, temp_a2 + 0x6C, temp_a2); - func_800BEB18(sp1C); - temp_v0->unk48 = 0; + if (layer != NULL) { + audio_list_push_back(&gLayerFreeList, &layer->listItem); + seq_channel_layer_disable(layer); + seqChannel->layers[layerIndex] = NULL; } } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEB54.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD418(s32); // extern -void func_800BEB54(u8 *, s32); // extern +void sequence_channel_disable(struct SequenceChannel *seqChannel) { + s32 i; + for (i = 0; i < LAYERS_MAX; i++) { + seq_channel_layer_free(seqChannel, i); + } -void func_800BEBA4(u8 *arg0) { - s32 temp_s0; - u8 temp_t9; - s32 phi_s0; - - phi_s0 = 0; - do { - func_800BEB54(arg0, phi_s0); - temp_s0 = phi_s0 + 1; - phi_s0 = temp_s0; - } while (temp_s0 != 4); - func_800BD418(arg0 + 0x84); - temp_t9 = *arg0 & 0xFF7F; - *arg0 = temp_t9; - *arg0 = temp_t9 | 0x40; + note_pool_clear(&seqChannel->notePool); + seqChannel->enabled = FALSE; + seqChannel->finished = TRUE; } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEBA4.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern ? D_803B1A30; -extern u8 D_803B3EF0; -extern ? D_803B5EF0; - -? *func_800BEC10(void) { - ? *temp_v1; - ? *phi_v1; - - phi_v1 = &D_803B1A30; -loop_1: - if (phi_v1->unk44 == 0) { - return phi_v1; +struct SequenceChannel *allocate_sequence_channel(void) { + s32 i; + for (i = 0; i < SEQUENCE_CHANNELS; i++) { + if (gSequenceChannels[i].seqPlayer == NULL) { + return &gSequenceChannels[i]; + } } - if (phi_v1->unk108 == 0) { - return phi_v1 + 0xC4; - } - if (phi_v1->unk1CC == 0) { - return phi_v1 + 0x188; - } - if (phi_v1->unk290 == 0) { - return phi_v1 + 0x24C; - } - temp_v1 = phi_v1 + 0x310; - phi_v1 = temp_v1; - if (temp_v1 == &D_803B3EF0) { - return &D_803B5EF0; - } - goto loop_1; + return &gSequenceChannelNone; } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEC10.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BE8F0(s32); // extern -void func_800BEBA4(s32, s32); // extern -s32 func_800BEC10(); // extern -extern ? D_803B5EF0; -extern s32 D_803B7198; +void sequence_player_init_channels(struct SequencePlayer *seqPlayer, u16 channelBits) { + struct SequenceChannel *seqChannel; + s32 i; -void func_800BEC8C(void *arg0, s32 arg1) { - s32 temp_s0; - s32 temp_s3; - s32 temp_v0; - void *temp_s2; - s32 phi_a1; - s32 phi_s3; - - phi_a1 = arg1 & 0xFFFF; - phi_s3 = 0; - do { - if ((phi_a1 & 1) != 0) { - temp_s2 = arg0 + (phi_s3 * 4); - temp_s0 = temp_s2->unk30; - if (((temp_s0 != &D_803B5EF0) == 1) && (arg0 == temp_s0->unk44)) { - func_800BEBA4(temp_s0, phi_a1); - temp_s0->unk44 = 0; + for (i = 0; i < CHANNELS_MAX; i++) { + if (channelBits & 1) { + seqChannel = seqPlayer->channels[i]; + if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE && seqChannel->seqPlayer == seqPlayer) { + sequence_channel_disable(seqChannel); + seqChannel->seqPlayer = NULL; } - temp_v0 = func_800BEC10(); - if (temp_v0 == &D_803B5EF0) { - D_803B7198 = phi_s3 + 0x10000; - temp_s2->unk30 = temp_v0; + seqChannel = allocate_sequence_channel(); + if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == FALSE) { + eu_stubbed_printf_0("Audio:Track:Warning: No Free Notetrack\n"); + gAudioErrorFlags = i + 0x10000; + seqPlayer->channels[i] = seqChannel; } else { - func_800BE8F0(temp_v0); - temp_s2->unk30 = temp_v0; - temp_v0->unk44 = arg0; - temp_v0->unk6 = arg0->unk5; - temp_v0->unk3 = arg0->unk3; - temp_v0->unk2 = arg0->unk2; + sequence_channel_init(seqChannel); + seqPlayer->channels[i] = seqChannel; + seqChannel->seqPlayer = seqPlayer; + seqChannel->bankId = seqPlayer->defaultBank[0]; + seqChannel->muteBehavior = seqPlayer->muteBehavior; + seqChannel->noteAllocPolicy = seqPlayer->noteAllocPolicy; } } - temp_s3 = phi_s3 + 1; - phi_a1 = (phi_a1 >> 1) & 0xFFFF; - phi_s3 = temp_s3; - } while (temp_s3 != 0x10); + channelBits = channelBits >> 1; + } } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEC8C.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BEBA4(s32, s32); // extern -extern ? D_803B5EF0; +void sequence_player_disable_channels(struct SequencePlayer *seqPlayer, u16 channelBits) { + struct SequenceChannel *seqChannel; + s32 i; -void func_800BEDB8(s32 arg0, s32 arg1) { - s32 temp_s0; - s32 temp_s1; - void *temp_s3; - s32 phi_a1; - s32 phi_s1; - - phi_a1 = arg1 & 0xFFFF; - phi_s1 = 0; - do { - if ((phi_a1 & 1) != 0) { - temp_s3 = arg0 + (phi_s1 * 4); - temp_s0 = temp_s3->unk30; - if ((temp_s0 != &D_803B5EF0) == 1) { - if (arg0 == temp_s0->unk44) { - func_800BEBA4(temp_s0, phi_a1); - temp_s0->unk44 = 0; + eu_stubbed_printf_0("SUBTRACK DIM\n"); + for (i = 0; i < CHANNELS_MAX; i++) { + if (channelBits & 1) { + seqChannel = seqPlayer->channels[i]; + if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE) { + if (seqChannel->seqPlayer == seqPlayer) { + sequence_channel_disable(seqChannel); + seqChannel->seqPlayer = NULL; } - temp_s3->unk30 = &D_803B5EF0; + else { + stubbed_printf("Audio:Track: Warning SUBTRACK PARENT CHANGED\n"); + } + seqPlayer->channels[i] = &gSequenceChannelNone; } } - temp_s1 = phi_s1 + 1; - phi_a1 = (phi_a1 >> 1) & 0xFFFF; - phi_s1 = temp_s1; - } while (temp_s1 != 0x10); + channelBits = channelBits >> 1; + } } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEDB8.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BEB54(void *, s32); // extern -extern ? D_803B5EF0; - -void func_800BEE88(s32 arg0, s32 arg1, s32 arg2) { - s32 temp_s0; - u8 temp_t4; - void *temp_s2; - void *phi_s1; - s32 phi_s0; - - temp_s2 = (arg0 + ((arg1 & 0xFF) * 4))->unk30; - phi_s0 = 0; - if (temp_s2 != &D_803B5EF0) { - temp_s2->unk78 = 0; - temp_s2->unk60 = arg2; - temp_t4 = temp_s2->unk0 | 0x80; - temp_s2->unk0 = temp_t4; - temp_s2->unk0 = temp_t4 & 0xBF; - temp_s2->unk1A = 0; - phi_s1 = temp_s2; - do { - if (phi_s1->unk48 != 0) { - func_800BEB54(temp_s2, phi_s0); +void sequence_channel_enable(struct SequencePlayer *seqPlayer, u8 channelIndex, void *script) { + struct SequenceChannel *seqChannel = seqPlayer->channels[channelIndex]; + s32 i; + if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == FALSE) { + stubbed_printf("SEQID %d,BANKID %d\n", seqPlayer->seqId, seqPlayer->defaultBank[0]); + stubbed_printf("ERR:SUBTRACK %d NOT ALLOCATED\n", channelIndex); + } else { + seqChannel->enabled = TRUE; + seqChannel->finished = FALSE; + seqChannel->scriptState.depth = 0; + seqChannel->scriptState.pc = script; + seqChannel->delay = 0; + for (i = 0; i < LAYERS_MAX; i++) { + if (seqChannel->layers[i] != NULL) { + seq_channel_layer_free(seqChannel, i); } - temp_s0 = phi_s0 + 1; - phi_s1 += 4; - phi_s0 = temp_s0; - } while (temp_s0 != 4); + } } } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEE88.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD418(s32); // extern -void func_800BEDB8(?); // extern -extern u32 D_803AFE18; -extern u8 D_803B03C0; -extern ? D_803B0400; +void sequence_player_disable(struct SequencePlayer *seqPlayer) { + sequence_player_disable_channels(seqPlayer, 0xffff); + note_pool_clear(&seqPlayer->notePool); + seqPlayer->finished = TRUE; + seqPlayer->enabled = FALSE; -void func_800BEF2C(void *arg0) { - u8 *temp_v0; - u8 *temp_v1_2; - u8 temp_a0; - u8 temp_t0; - u8 temp_t9; - u8 temp_v1; + if (IS_SEQ_LOAD_COMPLETE(seqPlayer->seqId) && gSeqLoadStatus[seqPlayer->seqId] != 5) { + gSeqLoadStatus[seqPlayer->seqId] = SOUND_LOAD_STATUS_DISCARDABLE; + } - func_800BEDB8(0xFFFF); - func_800BD418(arg0 + 0x94); - temp_t9 = arg0->unk0 | 0x40; - temp_t0 = temp_t9 & 0x7F; - arg0->unk0 = temp_t9; - arg0->unk0 = temp_t0; - temp_v0 = arg0->unk4 + &D_803B0400; - temp_v1 = *temp_v0; - if ((temp_v1 >= 2) && (temp_v1 != 5)) { - *temp_v0 = 3; + if (IS_BANK_LOAD_COMPLETE(seqPlayer->defaultBank[0]) && gBankLoadStatus[seqPlayer->defaultBank[0]] != 5) { + gBankLoadStatus[seqPlayer->defaultBank[0]] = 4; } - temp_v1_2 = arg0->unk5 + &D_803B03C0; - temp_a0 = *temp_v1_2; - if ((temp_a0 >= 2) && (temp_a0 != 5)) { - *temp_v1_2 = 4; - } - if (arg0->unk5 == D_803AFE18.unk1B2) { - D_803AFE18.unk194 = 1; - return; - } - if (arg0->unk5 == D_803AFE18.unk1BE) { - D_803AFE18.unk194 = 0; + + // (Note that if this is called from alloc_bank_or_seq, the side will get swapped + // later in that function. Thus, we signal that we want to load into the slot + // of the bank that we no longer need.) + if (seqPlayer->defaultBank[0] == gBankLoadedPool.temporary.entries[0].id) { + gBankLoadedPool.temporary.nextSide = 1; + } else if (seqPlayer->defaultBank[0] == gBankLoadedPool.temporary.entries[1].id) { + gBankLoadedPool.temporary.nextSide = 0; } } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BEF2C.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BF004(void *arg0, void *arg1) { - if (arg1->unk0 == 0) { - arg0->unk0->unk4 = arg1; - arg1->unk4 = arg0; - arg1->unk0 = arg0->unk0; - arg0->unk0 = arg1; - arg0->unk8 = arg0->unk8 + 1; - arg1->unkC = arg0->unkC; +void audio_list_push_back(struct AudioListItem *list, struct AudioListItem *item) { + if (item->prev != NULL) { + eu_stubbed_printf_0("Error:Same List Add\n"); + } else { + list->prev->next = item; + item->prev = list->prev; + item->next = list; + list->prev = item; + list->u.count++; + item->pool = list->pool; } } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF004.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800BF044(void *arg0) { - void *temp_v1; - - temp_v1 = arg0->unk0; - if (temp_v1 == arg0) { - return 0; +void *audio_list_pop_back(struct AudioListItem *list) { + struct AudioListItem *item = list->prev; + if (item == list) { + return NULL; } - temp_v1->unk0->unk4 = arg0; - arg0->unk0 = temp_v1->unk0; - temp_v1->unk0 = NULL; - arg0->unk8 = arg0->unk8 - 1; - return temp_v1->unk8; + item->prev->next = list; + list->prev = item->prev; + item->prev = NULL; + list->u.count--; + return item->u.value; } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF044.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BF004(? *, ? *); // extern -extern u8 D_803B3EF0; -extern ? D_803B3F5C; -extern ? D_803B5F5C; -extern ? D_803B5FB8; +void init_layer_freelist(void) { + s32 i; -void func_800BF084(void) { - ? *temp_s1; - ? *phi_s0; - ? *phi_s1; + gLayerFreeList.prev = &gLayerFreeList; + gLayerFreeList.next = &gLayerFreeList; + gLayerFreeList.u.count = 0; + gLayerFreeList.pool = NULL; - D_803B5FB8.unk0 = &D_803B5FB8; - D_803B5FB8.unk4 = &D_803B5FB8; - D_803B5FB8.unk8 = 0; - D_803B5FB8.unkC = 0; - phi_s0 = &D_803B3EF0; - phi_s1 = &D_803B3F5C; - do { - phi_s0->unk74 = phi_s0; - phi_s0->unk6C = 0; - func_800BF004(&D_803B5FB8, phi_s1); - temp_s1 = phi_s1 + 0x80; - phi_s0 += 0x80; - phi_s1 = temp_s1; - } while (temp_s1 != &D_803B5F5C); -} -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF084.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -u8 func_800BF108(u8 **arg0) { - u8 *temp_a1; - u8 temp_v0; - - temp_a1 = *arg0; - temp_v0 = *temp_a1; - *arg0 = temp_a1 + 1; - return temp_v0; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF108.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s16 func_800BF11C(u8 **arg0) { - u8 *temp_a1; - u8 *temp_t9; - u8 temp_v1; - - temp_a1 = *arg0; - temp_v1 = *temp_a1; - temp_t9 = temp_a1 + 1; - *arg0 = temp_t9; - *arg0 = temp_t9 + 1; - return *temp_t9 | (temp_v1 << 8); -} -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF11C.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -u8 func_800BF14C(u8 **arg0) { - u8 *temp_t6; - u8 *temp_v0; - u8 temp_v1; - u8 phi_v1; - - temp_v0 = *arg0; - temp_v1 = *temp_v0; - temp_t6 = temp_v0 + 1; - *arg0 = temp_t6; - phi_v1 = temp_v1; - if ((temp_v1 & 0x80) != 0) { - *arg0 = temp_t6 + 1; - phi_v1 = (*temp_t6 | ((temp_v1 << 8) & 0x7F00)) & 0xFFFF; + for (i = 0; i < ARRAY_COUNT(gSequenceLayers); i++) { + gSequenceLayers[i].listItem.u.value = &gSequenceLayers[i]; + gSequenceLayers[i].listItem.prev = NULL; + audio_list_push_back(&gLayerFreeList, &gSequenceLayers[i].listItem); } - return phi_v1; } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF14C.s") -#endif + +u8 m64_read_u8(struct M64ScriptState *state) { + return *(state->pc++); +} + +s16 m64_read_s16(struct M64ScriptState *state) { + s16 ret = *(state->pc++) << 8; + ret = *(state->pc++) | ret; + return ret; +} + +u16 m64_read_compressed_u16(struct M64ScriptState *state) { + u16 ret = *(state->pc++); + if (ret & 0x80) { + ret = (ret << 8) & 0x7f00; + ret = *(state->pc++) | ret; + } + return ret; +} #ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -void func_800BD120(void *, s32); /* extern */ -void func_800BD264(void *, void *); /* extern */ -void func_800BE4D4(void *); /* extern */ -void func_800BEB18(void *, s32); /* extern */ +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c +struct Note *alloc_note(struct SequenceChannelLayer *); /* extern */ +extern s16 D_803B70B4; -void func_800BF190(void *arg0) { - void *sp68; +void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { + struct SequenceChannel *sp68; s32 sp44; f32 temp_f0; f32 temp_f2; - s16 temp_a0_3; - s16 temp_a0_4; - s16 temp_s3; - s16 temp_s3_2; - s16 temp_s3_3; - s16 temp_s3_4; - s16 temp_s3_6; - s16 temp_v0_10; - s16 temp_v0_12; - s16 temp_v0_13; - s16 temp_v0_7; + f32 var_f0; + f32 var_f0_2; + f32 var_f4; + s16 temp_v0_11; + s16 temp_v0_4; + s16 temp_v0_6; s16 temp_v1; s32 temp_a1; s32 temp_s2; @@ -563,22 +309,36 @@ void func_800BF190(void *arg0) { s32 temp_t5; s32 temp_t6; s32 temp_t8; - s32 temp_v0_11; s32 temp_v0_17; s32 temp_v0_19; s32 temp_v0_3; - s32 temp_v0_4; - s32 temp_v0_6; s32 temp_v0_8; s32 temp_v1_12; s32 temp_v1_6; s32 temp_v1_7; s32 temp_v1_8; + s32 var_a2; + s32 var_s2; + s32 var_s2_2; + s32 var_s2_3; + struct AudioBankSound *temp_v1_13; + struct Drum *temp_v0_15; + struct Instrument *var_a0_2; + struct M64ScriptState *temp_s0; + struct Note *temp_a0_4; + struct Note *temp_a0_5; + struct Portamento *temp_v0_18; + struct SequenceChannel *temp_v0_2; + struct SequencePlayer *temp_s4; + u16 temp_v0_10; + u16 temp_v0_12; + u16 temp_v0_13; u16 temp_v0_14; + u16 temp_v0_7; + u16 var_a0; + u16 var_s3; u32 temp_v0; u32 temp_v0_20; - u8 *temp_t2; - u8 *temp_t6_2; u8 *temp_v1_10; u8 *temp_v1_11; u8 *temp_v1_4; @@ -586,937 +346,846 @@ void func_800BF190(void *arg0) { u8 *temp_v1_9; u8 temp_a0; u8 temp_a0_2; - u8 temp_a0_5; - u8 temp_a2; - u8 temp_a2_2; - u8 temp_a2_3; - u8 temp_s3_5; + u8 temp_a0_3; u8 temp_t4; u8 temp_v0_16; u8 temp_v0_9; u8 temp_v1_2; u8 temp_v1_3; - void *temp_a0_6; - void *temp_a0_7; - void *temp_s0; - void *temp_s4; - void *temp_v0_15; - void *temp_v0_18; - void *temp_v0_2; + u8 var_a2_2; + u8 var_v0; void *temp_v0_5; - void *temp_v1_13; - u8 phi_s2; - s32 phi_a2; - s32 phi_a2_2; - s16 phi_a0; - u8 phi_v0; - s32 phi_s2_2; - s32 phi_a0_2; - s32 phi_a2_3; - f32 phi_f0; - f32 phi_f0_2; - f32 phi_f4; - s32 phi_s2_3; - s16 phi_s3; - s16 phi_s3_2; sp44 = 1; - temp_v0 = arg0->unk0; + temp_v0 = layer->unk0; if ((temp_v0 >> 0x1F) != 0) { - temp_v1 = arg0->unk38; + temp_v1 = layer->delay; if (temp_v1 >= 2) { - arg0->unk38 = temp_v1 - 1; - if (((temp_v0 * 4) >= 0) && (arg0->unk3A >= arg0->unk38)) { - func_800BD120(); - arg0->unk0 = arg0->unk0 | 0x20; - return; + layer->delay = temp_v1 - 1; + if (!(temp_v0 & 0x20000000) && (layer->duration >= layer->delay)) { + seq_channel_layer_note_decay(layer); + layer->unk0 = (s8) ((u8) layer->unk0 | 0x20); } - /* Duplicate return node #139. Try simplifying control flow for better match */ - return; - } - if ((temp_v0 * 8) >= 0) { - func_800BD120(arg0); - } - temp_t8 = arg0->unk8 & ~0x80; - if ((temp_t8 == 1) || (temp_t8 == 2)) { - arg0->unk8 = 0; - } - temp_v0_2 = arg0->unk4C; - temp_s0 = arg0 + 0x50; - temp_s4 = temp_v0_2->unk44; - arg0->unk0 = arg0->unk0 | 4; - sp68 = temp_v0_2; - phi_s3_2 = sp4A; + } else { + if (!(temp_v0 & 0x10000000)) { + seq_channel_layer_note_decay(layer); + } + temp_t8 = layer->portamento.mode & ~0x80; + if ((temp_t8 == 1) || (temp_t8 == 2)) { + layer->portamento.mode = 0; + } + temp_v0_2 = layer->seqChannel; + temp_s0 = &layer->scriptState; + temp_s4 = temp_v0_2->seqPlayer; + layer->unk0 = (s8) ((u8) layer->unk0 | 4); + var_s3 = sp4A; + sp68 = temp_v0_2; loop_11: - temp_v0_3 = func_800BF108(temp_s0, MIPS2C_ERROR(Read from unset register $a1)); - temp_s2 = temp_v0_3 & 0xFF; - phi_s3 = phi_s3_2; - if (temp_v0_3 >= 0xC1) { - if (temp_v0_3 >= 0xCD) { - switch (temp_v0_3) { /* switch 1 */ - case 0xFF: /* switch 1 */ - temp_v1_2 = temp_s0->unk18; + temp_v0_3 = m64_read_u8(temp_s0); + temp_s2 = temp_v0_3 & 0xFF; + if (temp_v0_3 >= 0xC1) { + switch (temp_v0_3) { /* switch 5; irregular */ + case 0xFF: /* switch 5 */ + temp_v1_2 = temp_s0->depth; if (temp_v1_2 == 0) { - func_800BEB18(arg0, temp_v0_3); + seq_channel_layer_disable(layer); return; } temp_t4 = (temp_v1_2 - 1) & 0xFF; - temp_s0->unk18 = temp_t4; - temp_s0->unk0 = (temp_s0 + (temp_t4 * 4))->unk4; + temp_s0->depth = temp_t4; + temp_s0->pc = temp_s0->stack[temp_t4]; goto loop_11; - case 0xFC: /* switch 1 */ - temp_v0_4 = func_800BF11C(temp_s0, temp_v0_3); + case 0xFC: /* switch 5 */ + temp_v0_4 = m64_read_s16(temp_s0); temp_t5 = temp_v0_4 & 0xFFFF; - (temp_s0 + (temp_s0->unk18 * 4))->unk4 = temp_s0->unk0; - temp_s0->unk18 = temp_s0->unk18 + 1; - temp_s0->unk0 = temp_s4->unk14 + temp_t5; - phi_s3_2 = temp_v0_4 & 0xFFFF; + temp_s0->stack[temp_s0->depth] = temp_s0->pc; + var_s3 = temp_v0_4 & 0xFFFF; + temp_s0->depth += 1; + temp_s0->pc = &temp_s4->seqData[temp_t5]; goto loop_11; - case 0xF8: /* switch 1 */ - (temp_s0 + temp_s0->unk18)->unk14 = func_800BF108(temp_s0, temp_v0_3); - (temp_s0 + (temp_s0->unk18 * 4))->unk4 = temp_s0->unk0; - temp_s0->unk18 = temp_s0->unk18 + 1; + case 0xF8: /* switch 5 */ + temp_s0->remLoopIters[temp_s0->depth] = m64_read_u8(temp_s0); + temp_s0->stack[temp_s0->depth] = temp_s0->pc; + temp_s0->depth += 1; goto loop_11; - case 0xF7: /* switch 1 */ - temp_v0_5 = temp_s0 + temp_s0->unk18; - temp_v0_5->unk13 = temp_v0_5->unk13 - 1; - temp_v1_3 = temp_s0->unk18; + case 0xF7: /* switch 5 */ + temp_v0_5 = temp_s0 + temp_s0->depth; + temp_v0_5->unk13 = (u8) (temp_v0_5->unk13 - 1); + temp_v1_3 = temp_s0->depth; if ((temp_s0 + temp_v1_3)->unk13 != 0) { - temp_s0->unk0 = *(temp_s0 + (temp_v1_3 * 4)); + temp_s0->pc = *(temp_s0 + (temp_v1_3 * 4)); } else { - temp_s0->unk18 = temp_v1_3 - 1; + temp_s0->depth = temp_v1_3 - 1; } goto loop_11; - case 0xFB: /* switch 1 */ - temp_v0_6 = func_800BF11C(temp_s0, temp_v0_3); - temp_s3 = temp_v0_6 & 0xFFFF; - temp_s0->unk0 = temp_s4->unk14 + (temp_v0_6 & 0xFFFF); - phi_s3_2 = temp_s3; + case 0xFB: /* switch 5 */ + temp_v0_6 = m64_read_s16(temp_s0); + var_s3 = temp_v0_6 & 0xFFFF; + temp_s0->pc = &temp_s4->seqData[temp_v0_6 & 0xFFFF]; goto loop_11; - case 0xF4: /* switch 1 */ - temp_s0->unk0 = temp_s0->unk0 + func_800BF108(temp_s0, temp_v0_3); + case 0xF4: /* switch 5 */ + temp_s0->pc = &temp_s0->pc[m64_read_u8(temp_s0)]; goto loop_11; - } - } else { - switch (temp_v0_3) { /* switch 2 */ - case 0xC1: /* switch 2 */ - case 0xCA: /* switch 2 */ - temp_v1_4 = temp_s0->unk0; + case 0xC1: /* switch 5 */ + case 0xCA: /* switch 5 */ + temp_v1_4 = temp_s0->pc; temp_a0 = *temp_v1_4; - temp_s0->unk0 = temp_v1_4 + 1; + temp_s0->pc = temp_v1_4 + 1; if (temp_v0_3 == 0xC1) { - arg0->unk28 = (temp_a0 * temp_a0) / 16129.0f; + layer->velocitySquare = (f32) (temp_a0 * temp_a0) / 16129.0f; } else { - arg0->unk5 = temp_a0; + layer->pan = temp_a0; } - break; - case 0xC2: /* switch 2 */ - case 0xC9: /* switch 2 */ - temp_v1_5 = temp_s0->unk0; + goto loop_11; + case 0xC2: /* switch 5 */ + case 0xC9: /* switch 5 */ + temp_v1_5 = temp_s0->pc; temp_a0_2 = *temp_v1_5; - temp_s0->unk0 = temp_v1_5 + 1; + temp_s0->pc = temp_v1_5 + 1; if (temp_v0_3 == 0xC9) { - arg0->unk3 = temp_a0_2; + layer->noteDuration = temp_a0_2; } else { - arg0->unk22 = temp_a0_2; + layer->transposition = (s16) temp_a0_2; } - break; - case 0xC4: /* switch 2 */ - case 0xC5: /* switch 2 */ + goto loop_11; + case 0xC4: /* switch 5 */ + case 0xC5: /* switch 5 */ if (temp_v0_3 == 0xC4) { - arg0->unk0 = arg0->unk0 | 0x10; + layer->unk0 = (s8) ((u8) layer->unk0 | 0x10); } else { - arg0->unk0 = arg0->unk0 & 0xFFEF; + layer->unk0 = (s8) ((u8) layer->unk0 & 0xFFEF); } - func_800BD120(arg0, temp_v0_3); - break; - case 0xC3: /* switch 2 */ - temp_v0_7 = func_800BF14C(temp_s0, temp_v0_3); - temp_s3_2 = temp_v0_7 & 0xFFFF; - arg0->unk34 = temp_v0_7; - phi_s3_2 = temp_s3_2; - break; - case 0xC6: /* switch 2 */ - temp_v0_8 = func_800BF108(temp_s0, temp_v0_3); + seq_channel_layer_note_decay(layer); + goto loop_11; + case 0xC3: /* switch 5 */ + temp_v0_7 = m64_read_compressed_u16(temp_s0); + var_s3 = temp_v0_7 & 0xFFFF; + layer->shortNoteDefaultPlayPercentage = (s16) temp_v0_7; + goto loop_11; + case 0xC6: /* switch 5 */ + temp_v0_8 = m64_read_u8(temp_s0); if (temp_v0_8 >= 0x7F) { if (temp_v0_8 == 0x7F) { - arg0->unk1 = 0; + layer->instOrWave = 0; } else { - arg0->unk1 = temp_v0_8; - arg0->unk44 = 0; + layer->instOrWave = (u8) temp_v0_8; + layer->instrument = NULL; } if (temp_v0_8 == 0xFF) { - arg0->unk18 = 0; + layer->adsr.releaseRate = 0; } } else { - temp_v0_9 = func_800BFC68(sp68, temp_v0_8 & 0xFF & 0xFF, arg0 + 0x44, arg0 + 0x18); - arg0->unk1 = temp_v0_9; + temp_v0_9 = get_instrument(sp68, temp_v0_8 & 0xFF & 0xFF, &layer->instrument, &layer->adsr); + layer->instOrWave = temp_v0_9; if (temp_v0_9 == 0) { - arg0->unk1 = 0xFF; + layer->instOrWave = 0xFF; } } - break; - case 0xC7: /* switch 2 */ - arg0->unk8 = func_800BF108(temp_s0, temp_v0_3); - temp_t6 = (func_800BF108(temp_s0, MIPS2C_ERROR(Read from unset register $a1)) + sp68->unk1E + arg0->unk22 + temp_s4->unkC) & 0xFF; - phi_s2 = temp_t6; + goto loop_11; + case 0xC7: /* switch 5 */ + layer->portamento.mode = m64_read_u8(temp_s0); + temp_t6 = (m64_read_u8(temp_s0) + sp68->transposition + layer->transposition + temp_s4->transposition) & 0xFF; + var_s2 = temp_t6; if (temp_t6 >= 0x80) { - phi_s2 = 0; + var_s2 = 0; } - arg0->unk4 = phi_s2; - if ((arg0->unk8 & 0x80) != 0) { - arg0->unk20 = *temp_s0->unk0; - temp_s0->unk0 = temp_s0->unk0 + 1; + layer->portamentoTargetNote = (u8) var_s2; + if (layer->portamento.mode & 0x80) { + layer->portamentoTime = (u16) *temp_s0->pc; + temp_s0->pc += 1; } else { - temp_v0_10 = func_800BF14C(temp_s0, MIPS2C_ERROR(Read from unset register $a1)); - temp_s3_3 = temp_v0_10 & 0xFFFF; - arg0->unk20 = temp_v0_10; - phi_s3_2 = temp_s3_3; + temp_v0_10 = m64_read_compressed_u16(temp_s0); + var_s3 = temp_v0_10 & 0xFFFF; + layer->portamentoTime = temp_v0_10; } - break; - case 0xC8: /* switch 2 */ - arg0->unk8 = 0; - break; - case 0xCB: /* switch 2 */ - temp_v0_11 = func_800BF11C(temp_s0, temp_v0_3); - temp_s3_4 = temp_v0_11 & 0xFFFF; - arg0->unk1C = temp_s4->unk14 + (temp_v0_11 & 0xFFFF); - arg0->unk18 = func_800BF108(temp_s0, MIPS2C_ERROR(Read from unset register $a1)); - phi_s3_2 = temp_s3_4; - break; - case 0xCC: /* switch 2 */ - arg0->unk0 = arg0->unk0 | 2; - break; - default: /* switch 2 */ - default: /* switch 1 */ + goto loop_11; + case 0xC8: /* switch 5 */ + layer->portamento.mode = 0; + goto loop_11; + case 0xCB: /* switch 5 */ + temp_v0_11 = m64_read_s16(temp_s0); + var_s3 = temp_v0_11 & 0xFFFF; + layer->adsr.envelope = (struct AdsrEnvelope *) &temp_s4->seqData[temp_v0_11 & 0xFFFF]; + layer->adsr.releaseRate = m64_read_u8(temp_s0); + goto loop_11; + case 0xCC: /* switch 5 */ + layer->unk0 = (s8) ((u8) layer->unk0 | 2); + goto loop_11; + default: /* switch 5 */ temp_v1_6 = temp_v0_3 & 0xF0; - if (temp_v1_6 != 0xD0) { - if (temp_v1_6 != 0xE0) { - - } else { - arg0->unk3 = *(temp_s4->unk90 + (temp_v0_3 & 0xF)); - } - } else { - temp_s3_5 = *(temp_s4->unk8C + (temp_v0_3 & 0xF)); - arg0->unk28 = (temp_s3_5 * temp_s3_5) / 16129.0f; - phi_s3_2 = temp_s3_5; + switch (temp_v1_6) { /* switch 6; irregular */ + case 0xD0: /* switch 6 */ + var_s3 = (u16) temp_s4->shortNoteVelocityTable[temp_v0_3 & 0xF]; + layer->velocitySquare = (f32) (var_s3 * var_s3) / 16129.0f; + break; + case 0xE0: /* switch 6 */ + layer->noteDuration = temp_s4->shortNoteDurationTable[temp_v0_3 & 0xF]; + break; } - break; + goto loop_11; } - goto loop_11; - } - } else { - temp_v1_7 = temp_v0_3 & 0xC0; - if (temp_v0_3 == 0xC0) { - arg0->unk38 = func_800BF14C(temp_s0, temp_v0_3); - arg0->unk0 = arg0->unk0 | 0x20; - goto block_119; - } - arg0->unk0 = arg0->unk0 & 0xFFDF; - if (((sp68->unk0 << 6) >> 0x1F) == 1) { - temp_v1_8 = temp_v0_3 & 0xC0; - if (temp_v1_8 != 0) { - if (temp_v1_8 != 0x40) { - phi_a0 = phi_s3_2; - if (temp_v1_8 != 0x80) { - phi_a2 = sp34; - } else { - temp_v1_9 = temp_s0->unk0; - temp_a2 = *temp_v1_9; - temp_t2 = temp_v1_9 + 1; - temp_s0->unk0 = temp_t2; - arg0->unk3 = *temp_t2; - temp_s0->unk0 = temp_s0->unk0 + 1; - phi_a2 = temp_a2; - phi_a0 = arg0->unk36; - } - } else { - temp_v0_12 = func_800BF14C(temp_s0, temp_v0_3); - temp_v1_10 = temp_s0->unk0; - temp_a0_3 = temp_v0_12 & 0xFFFF; - temp_a2_2 = *temp_v1_10; - temp_s0->unk0 = temp_v1_10 + 1; - arg0->unk3 = 0; - arg0->unk36 = temp_v0_12; - phi_a2 = temp_a2_2; - phi_a0 = temp_a0_3; - } - } else { - temp_v0_13 = func_800BF14C(temp_s0, temp_v0_3); - temp_v1_11 = temp_s0->unk0; - temp_a0_4 = temp_v0_13 & 0xFFFF; - temp_a2_3 = *temp_v1_11; - temp_t6_2 = temp_v1_11 + 1; - temp_s0->unk0 = temp_t6_2; - arg0->unk3 = *temp_t6_2; - temp_s0->unk0 = temp_s0->unk0 + 1; - arg0->unk36 = temp_v0_13; - phi_a2 = temp_a2_3; - phi_a0 = temp_a0_4; - } - phi_a2_2 = phi_a2; - if ((phi_a2 >= 0x80) || (phi_a2 < 0)) { - phi_a2_2 = 0x7F; - } - temp_f0 = phi_a2_2; - arg0->unk28 = (temp_f0 * temp_f0) / 16129.0f; - phi_s2_2 = (temp_s2 - (temp_s2 & 0xC0)) & 0xFF; } else { - if (temp_v1_7 != 0) { - if (temp_v1_7 != 0x40) { - if (temp_v1_7 != 0x80) { - + temp_v1_7 = temp_v0_3 & 0xC0; + if (temp_v0_3 == 0xC0) { + layer->delay = m64_read_compressed_u16(temp_s0); + layer->unk0 = (s8) ((u8) layer->unk0 | 0x20); + goto block_119; + } + layer->unk0 = (s8) ((u8) layer->unk0 & 0xFFDF); + if (((u32) (sp68->unk0 << 6) >> 0x1F) == 1) { + temp_v1_8 = temp_v0_3 & 0xC0; + if (temp_v1_8 != 0) { + if (temp_v1_8 != 0x40) { + var_a0 = var_s3; + if (temp_v1_8 != 0x80) { + var_a2 = sp34; + } else { + temp_v1_9 = temp_s0->pc; + var_a2 = (s32) *temp_v1_9; + temp_s0->pc = temp_v1_9 + 1; + var_a0 = (u16) layer->playPercentage; + layer->noteDuration = temp_v1_9[1]; + temp_s0->pc += 1; + } } else { - phi_s3 = arg0->unk36; + temp_v0_12 = m64_read_compressed_u16(temp_s0); + temp_v1_10 = temp_s0->pc; + var_a0 = temp_v0_12 & 0xFFFF; + var_a2 = (s32) *temp_v1_10; + temp_s0->pc = temp_v1_10 + 1; + layer->noteDuration = 0; + layer->playPercentage = (s16) temp_v0_12; } } else { - phi_s3 = arg0->unk34; + temp_v0_13 = m64_read_compressed_u16(temp_s0); + temp_v1_11 = temp_s0->pc; + var_a0 = temp_v0_13 & 0xFFFF; + var_a2 = (s32) *temp_v1_11; + temp_s0->pc = temp_v1_11 + 1; + layer->noteDuration = temp_v1_11[1]; + temp_s0->pc += 1; + layer->playPercentage = (s16) temp_v0_13; + } + if ((var_a2 >= 0x80) || (var_a2 < 0)) { + var_a2 = 0x0000007F; + } + temp_f0 = (f32) var_a2; + var_s2_2 = (temp_s2 - (temp_s2 & 0xC0)) & 0xFF; + layer->velocitySquare = (temp_f0 * temp_f0) / 16129.0f; + } else { + switch (temp_v1_7) { /* switch 4; irregular */ + case 0x0: /* switch 4 */ + temp_v0_14 = m64_read_compressed_u16(temp_s0); + var_s3 = temp_v0_14 & 0xFFFF; + layer->playPercentage = (s16) temp_v0_14; + break; + case 0x40: /* switch 4 */ + var_s3 = (u16) layer->shortNoteDefaultPlayPercentage; + break; + case 0x80: /* switch 4 */ + var_s3 = (u16) layer->playPercentage; + break; + } + var_a0 = var_s3; + var_s2_2 = (temp_s2 - (temp_s2 & 0xC0)) & 0xFF; + } + layer->delay = (s16) var_a0; + layer->duration = (s16) ((s32) (layer->noteDuration * var_a0) >> 8); + if (((temp_s4->unk0 & 0x20000000) && (sp68->muteBehavior & 0x40)) || (temp_v1_12 = sp68->unk0, (temp_v1_12 & 0x10000000))) { + layer->unk0 = (s8) ((u8) layer->unk0 | 0x20); + goto block_119; + } + temp_a0_3 = layer->instOrWave; + var_v0 = temp_a0_3; + if (temp_a0_3 == 0xFF) { + if (temp_v1_12 & 0x08000000) { + var_v0 = (u8) sp68->instOrWave; + goto block_88; } } else { - temp_v0_14 = func_800BF14C(temp_s0, temp_v0_3); - temp_s3_6 = temp_v0_14 & 0xFFFF; - arg0->unk36 = temp_v0_14; - phi_s3 = temp_s3_6; - } - phi_a0 = phi_s3; - phi_s2_2 = (temp_s2 - (temp_s2 & 0xC0)) & 0xFF; - } - arg0->unk38 = phi_a0; - arg0->unk3A = (arg0->unk3 * phi_a0) >> 8; - if ((((temp_s4->unk0 * 4) < 0) && ((sp68->unk3 & 0x40) != 0)) || (temp_v1_12 = sp68->unk0, ((temp_v1_12 * 8) < 0))) { - arg0->unk0 = arg0->unk0 | 0x20; - goto block_119; - } - temp_a0_5 = arg0->unk1; - phi_v0 = temp_a0_5; - if (temp_a0_5 == 0xFF) { - if ((temp_v1_12 * 0x10) < 0) { - phi_v0 = sp68->unk1C; - goto block_88; - } - /* Duplicate return node #139. Try simplifying control flow for better match */ - return; - } block_88: - if (phi_v0 == 0) { - temp_v0_15 = func_800BC9F8(sp68->unk6, (phi_s2_2 + sp68->unk1E + arg0->unk22) & 0xFF); - temp_v1_13 = temp_v0_15 + 4; - if (temp_v0_15 == 0) { - arg0->unk0 = arg0->unk0 | 0x20; - arg0->unk3C = arg0->unk38; - return; - } - arg0->unk1C = temp_v0_15->unkC; - arg0->unk18 = temp_v0_15->unk0; - if ((arg0->unk0 << 6) >= 0) { - arg0->unk5 = temp_v0_15->unk1; - } - arg0->unk48 = temp_v1_13; - phi_f4 = temp_v1_13->unk4; - goto block_117; - } - temp_a1 = (phi_s2_2 + temp_s4->unkC + sp68->unk1E + arg0->unk22) & 0xFF; - if (temp_a1 >= 0x80) { - arg0->unk0 = arg0->unk0 | 0x20; - } else { - if (temp_a0_5 == 0xFF) { - phi_a0_2 = sp68->unk40; - } else { - phi_a0_2 = arg0->unk44; - } - if (arg0->unk8 != 0) { - temp_v0_16 = arg0->unk4; - phi_a2_3 = temp_v0_16; - if (temp_v0_16 < temp_a1) { - phi_a2_3 = temp_a1; + if (var_v0 == 0) { + temp_v0_15 = get_drum((s32) sp68->bankId, (var_s2_2 + sp68->transposition + layer->transposition) & 0xFF); + temp_v1_13 = temp_v0_15 + 4; + if (temp_v0_15 == NULL) { + layer->unk0 = (s8) ((u8) layer->unk0 | 0x20); + layer->delayUnused = layer->delay; + return; + } + layer->adsr.envelope = temp_v0_15->envelope; + layer->adsr.releaseRate = temp_v0_15->releaseRate; + if (!(layer->unk0 & 0x02000000)) { + layer->pan = temp_v0_15->pan; + } + layer->sound = temp_v1_13; + var_f4 = temp_v1_13->tuning; + goto block_117; } - if (phi_a0_2 != 0) { - temp_v0_17 = func_800BC90C(phi_a0_2, phi_a2_3, phi_a2_3); - sp44 = temp_v0_17 == arg0->unk48; - arg0->unk48 = temp_v0_17; - phi_f0 = temp_v0_17->unk4; + temp_a1 = (var_s2_2 + temp_s4->transposition + sp68->transposition + layer->transposition) & 0xFF; + if (temp_a1 >= 0x80) { + layer->unk0 = (s8) ((u8) layer->unk0 | 0x20); } else { - arg0->unk48 = NULL; - phi_f0 = 1.0f; - } - temp_f2 = gNoteFrequencies[temp_a1] * phi_f0; - temp_t4_2 = arg0->unk8 & ~0x80; - switch (temp_t4_2) { /* switch 3 */ - case 1: /* switch 3 */ - case 3: /* switch 3 */ - case 5: /* switch 3 */ - phi_f0_2 = gNoteFrequencies[arg0->unk4] * phi_f0; - break; - default: /* switch 3 */ - phi_f0_2 = temp_f2; - break; - } - temp_v0_18 = arg0 + 8; - temp_v0_18->unkC = (temp_f2 / phi_f0_2) - 1.0f; - if ((arg0->unk8 & 0x80) != 0) { - temp_v0_18->unk8 = (temp_s4->unk8 * 32512.0f) / (arg0->unk38 * D_803B70B4 * arg0->unk20); - } else { - temp_v0_18->unk8 = 127.0f / arg0->unk20; - } - temp_v0_18->unk4 = 0.0f; - arg0->unk24 = phi_f0_2; - if ((arg0->unk8 & ~0x80) == 5) { - arg0->unk4 = temp_a1; - } - } else if (phi_a0_2 != 0) { - temp_v0_19 = func_800BC90C(phi_a0_2, temp_a1, MIPS2C_ERROR(Read from unset register $a2)); - sp44 = temp_v0_19 == arg0->unk48; - arg0->unk48 = temp_v0_19; - arg0->unk24 = gNoteFrequencies[temp_a1] * temp_v0_19->unk4; - } else { - arg0->unk48 = NULL; - phi_f4 = gNoteFrequencies[temp_a1]; + if (temp_a0_3 == 0xFF) { + var_a0_2 = sp68->instrument; + } else { + var_a0_2 = layer->instrument; + } + if (layer->portamento.mode != 0) { + temp_v0_16 = layer->portamentoTargetNote; + var_a2_2 = temp_v0_16; + if ((s32) temp_v0_16 < temp_a1) { + var_a2_2 = (u8) temp_a1; + } + if (var_a0_2 != NULL) { + temp_v0_17 = instrument_get_audio_bank_sound(var_a0_2, (s32) var_a2_2); + sp44 = temp_v0_17 == (s32) layer->sound; + layer->sound = (struct AudioBankSound *) temp_v0_17; + var_f0 = temp_v0_17->unk4; + } else { + var_f0 = 1.0f; + layer->sound = NULL; + } + temp_f2 = gNoteFrequencies[temp_a1] * var_f0; + temp_t4_2 = layer->portamento.mode & ~0x80; + switch (temp_t4_2) { /* switch 3 */ + case 1: /* switch 3 */ + case 3: /* switch 3 */ + case 5: /* switch 3 */ + var_f0_2 = gNoteFrequencies[layer->portamentoTargetNote] * var_f0; + break; + default: /* switch 3 */ + case 2: /* switch 3 */ + case 4: /* switch 3 */ + var_f0_2 = temp_f2; + break; + } + temp_v0_18 = &layer->portamento; + temp_v0_18->extent = (temp_f2 / var_f0_2) - 1.0f; + if (layer->portamento.mode & 0x80) { + temp_v0_18->speed = ((f32) temp_s4->tempo * 32512.0f) / ((f32) layer->delay * (f32) D_803B70B4 * (f32) layer->portamentoTime); + } else { + temp_v0_18->speed = 127.0f / (f32) layer->portamentoTime; + } + temp_v0_18->cur = 0.0f; + layer->freqScale = var_f0_2; + if ((layer->portamento.mode & ~0x80) == 5) { + layer->portamentoTargetNote = (u8) temp_a1; + } + } else if (var_a0_2 != NULL) { + temp_v0_19 = instrument_get_audio_bank_sound(var_a0_2, temp_a1); + sp44 = temp_v0_19 == (s32) layer->sound; + layer->sound = (struct AudioBankSound *) temp_v0_19; + layer->freqScale = gNoteFrequencies[temp_a1] * temp_v0_19->unk4; + } else { + layer->sound = NULL; + var_f4 = gNoteFrequencies[temp_a1]; block_117: - arg0->unk24 = phi_f4; - } - } - arg0->unk3C = arg0->unk38; + layer->freqScale = var_f4; + } + } + layer->delayUnused = layer->delay; block_119: - temp_v0_20 = arg0->unk0; - if (((temp_v0_20 * 4) >> 0x1F) == 1) { - if ((arg0->unk40 != 0) || ((temp_v0_20 * 8) < 0)) { - func_800BD120(arg0); - return; - } - /* Duplicate return node #139. Try simplifying control flow for better match */ - return; - } - phi_s2_3 = 0; - if ((temp_v0_20 * 8) >= 0) { - phi_s2_3 = 1; - } else { - temp_a0_6 = arg0->unk40; - if ((temp_a0_6 == 0) || (arg0->unk2 == 0)) { - phi_s2_3 = 1; - } else if (sp44 == 0) { - func_800BD120(arg0); - phi_s2_3 = 1; - } else if (arg0 != temp_a0_6->unk44) { - phi_s2_3 = 1; - } else if (arg0->unk48 == 0) { - func_800BD264(temp_a0_6, arg0); + temp_v0_20 = layer->unk0; + if (((u32) (temp_v0_20 * 4) >> 0x1F) == 1) { + if ((layer->note != NULL) || (temp_v0_20 & 0x10000000)) { + seq_channel_layer_note_decay(layer); + } + } else { + var_s2_3 = 0; + if (!(temp_v0_20 & 0x10000000)) { + var_s2_3 = 1; + } else { + temp_a0_4 = layer->note; + if ((temp_a0_4 == NULL) || (layer->status == 0)) { + var_s2_3 = 1; + } else if (sp44 == 0) { + seq_channel_layer_note_decay(layer); + var_s2_3 = 1; + } else if (layer != temp_a0_4->parentLayer) { + var_s2_3 = 1; + } else if (layer->sound == NULL) { + init_synthetic_wave(temp_a0_4, layer); + } + } + if (var_s2_3 != 0) { + layer->note = alloc_note(layer); + } + temp_a0_5 = layer->note; + if ((temp_a0_5 != NULL) && (layer == temp_a0_5->parentLayer)) { + note_vibrato_init(temp_a0_5); + } + } } } - if (phi_s2_3 != 0) { - arg0->unk40 = func_800BDA44(arg0); - } - temp_a0_7 = arg0->unk40; - if ((temp_a0_7 != 0) && (arg0 == temp_a0_7->unk44)) { - func_800BE4D4(temp_a0_7); - } - /* Duplicate return node #139. Try simplifying control flow for better match */ } } } #else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BF190.s") +GLOBAL_ASM("asm/non_matchings/audio/seqplayer/seq_channel_layer_process_script.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void *func_800BC948(u8, u8); // extern - -s32 func_800BFC68(void *arg0, u8 arg1, void **arg2, void *arg3) { - void *temp_v0; - - temp_v0 = func_800BC948(arg0->unk6, arg1); - if (temp_v0 == 0) { - *arg2 = NULL; +u8 get_instrument(struct SequenceChannel *seqChannel, u8 instId, struct Instrument **instOut, struct AdsrSettings *adsr) { + struct Instrument *inst; + inst = get_instrument_inner(seqChannel->bankId, instId); + if (inst == NULL) { + *instOut = NULL; return 0; } - arg3->unk4 = temp_v0->unk4; - arg3->unk0 = temp_v0->unk3; - *arg2 = temp_v0; - return (arg1 + 1) & 0xFF; + adsr->envelope = inst->envelope; + adsr->releaseRate = inst->releaseRate; + *instOut = inst; + instId++; + return instId; +} + +void set_instrument(struct SequenceChannel *seqChannel, u8 instId) { + if (instId >= 0x80) { + seqChannel->instOrWave = instId; + seqChannel->instrument = NULL; + } else if (instId == 0x7f) { + seqChannel->instOrWave = 0; + seqChannel->instrument = (struct Instrument *) 1; + } else { + if ((seqChannel->instOrWave = get_instrument(seqChannel, instId, &seqChannel->instrument, &seqChannel->adsr)) == 0) + { + seqChannel->hasInstrument = FALSE; + return; + } + } + seqChannel->hasInstrument = TRUE; +} + +void sequence_channel_set_volume(struct SequenceChannel *seqChannel, u8 volume) { + seqChannel->volume = FLOAT_CAST(volume) / US_FLOAT(127.0); } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BFC68.s") -#endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s16 func_800BFC68(s32, void *, void *); // extern +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c +? seq_channel_layer_process_script(struct SequenceChannelLayer *); /* extern */ +extern s32 gAlBankSets; -void func_800BFCD8(u8 *arg0, s32 arg1) { - s16 temp_v0; - s32 temp_t6; - - temp_t6 = arg1 & 0xFF; - if (temp_t6 >= 0x80) { - arg0->unk1C = temp_t6; - arg0->unk40 = 0; - goto block_6; - } - if (temp_t6 == 0x7F) { - arg0->unk1C = 0; - arg0->unk40 = 1; - goto block_6; - } - temp_v0 = func_800BFC68(temp_t6, arg0 + 0x40, arg0 + 0x7C); - arg0->unk1C = temp_v0; - if (temp_v0 == 0) { - arg0->unk0 = arg0->unk0 & 0xFFF7; - return; - } -block_6: - arg0->unk0 = arg0->unk0 | 8; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BFCD8.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BFD6C(void *arg0, s32 arg1) { - arg0->unk24 = (arg1 & 0xFF) / 127.0f; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BFD6C.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -s32 func_800B9A90(?, ?, u8, u16); /* extern */ -void func_800BD418(void *); /* extern */ -void func_800BD578(void *, s32); /* extern */ -void func_800BEB54(void *, s32); /* extern */ -void func_800BEBA4(void *); /* extern */ -void func_800BEE88(s32 *, s32, s32); /* extern */ -void func_800BF190(s32); /* extern */ -void func_800BFCD8(void *, s32); /* extern */ -void func_800BFD6C(void *, s32); /* extern */ - -void func_800BFD90(void *arg0) { +void func_800BFD90(struct SequenceChannel *seqChannel) { u8 sp55; - u16 sp52; + s16 sp52; s32 sp34; f32 temp_f18; f32 temp_f6; f32 temp_f8; - s16 temp_v1_5; - s32 *temp_s4; - s32 *temp_v1_10; - s32 temp_a0; + s16 temp_v0_4; + s16 temp_v0_8; s32 temp_a0_4; - s32 temp_a0_5; + s32 temp_a1; s32 temp_a1_2; - s32 temp_a1_3; s32 temp_s0; - s32 temp_s0_2; - s32 temp_s0_6; - s32 temp_s0_7; + s32 temp_s0_5; s32 temp_t3; s32 temp_v0_2; - s32 temp_v1_11; s32 temp_v1_3; - s32 temp_v1_6; - s8 *temp_v0_4; - s8 temp_s3; - s8 temp_v0_5; - s8 temp_v1_4; + s32 temp_v1_5; + s32 temp_v1_9; + s32 var_s0; + s32 var_s0_2; + s8 var_s3; + struct M64ScriptState *temp_s1; + struct NotePool *temp_s0_2; + struct SequenceChannel *var_s1; + struct SequenceChannel *var_s1_2; + struct SequenceChannelLayer *temp_a0; + struct SequenceChannelLayer *temp_a0_5; + struct SequenceChannelLayer *temp_v1_8; + struct SequencePlayer *temp_s4; u16 temp_a3; u16 temp_a3_2; u16 temp_t5; - u16 temp_v0_6; u16 temp_v1; + u16 temp_v1_4; + u16 var_v0; u32 temp_t6; u32 temp_v0; - u8 *temp_v1_8; + u8 *temp_v0_6; + u8 *temp_v1_7; u8 temp_a0_2; u8 temp_a0_3; + u8 temp_s0_3; u8 temp_s0_4; - u8 temp_s0_5; u8 temp_t0; u8 temp_t7; - void *temp_a1; - void *temp_s0_3; - void *temp_s1; + u8 temp_v0_5; + u8 temp_v0_7; void *temp_v0_3; - void *temp_v1_12; + void *temp_v1_10; void *temp_v1_2; - void *temp_v1_7; - void *temp_v1_9; - void *phi_s1; - s32 phi_s0; - u16 phi_v0; - s32 phi_s3; - void *phi_s1_2; - s32 phi_s0_2; + void *temp_v1_6; - temp_v0 = arg0->unk0; + temp_v0 = seqChannel->unk0; if ((temp_v0 >> 0x1F) != 0) { - phi_s0 = 0; - phi_s0_2 = 0; - if ((temp_v0 * 4) < 0) { - phi_s1 = arg0; + var_s0 = 0; + if (temp_v0 & 0x20000000) { + var_s1 = seqChannel; do { - temp_a0 = phi_s1->unk48; - if (temp_a0 != 0) { - func_800BF190(temp_a0); + temp_a0 = var_s1->layers[0]; + if (temp_a0 != NULL) { + seq_channel_layer_process_script(temp_a0); } - temp_s0 = phi_s0 + 4; - phi_s1 += 4; - phi_s0 = temp_s0; - } while (temp_s0 != 0x10); + var_s0 += 4; + var_s1 += 4; + } while (var_s0 != 0x10); return; } - temp_s4 = arg0->unk44; - if (((temp_s4->unk0 * 4) >= 0) || ((arg0->unk3 & 0x80) == 0)) { - temp_v1 = arg0->unk1A; - temp_s1 = arg0 + 0x60; - phi_v0 = temp_v1; + temp_s4 = seqChannel->seqPlayer; + if (!(temp_s4->unk0 & 0x20000000) || !(seqChannel->muteBehavior & 0x80)) { + temp_v1 = seqChannel->delay; + temp_s1 = &seqChannel->scriptState; + var_v0 = temp_v1; if (temp_v1 != 0) { temp_t5 = temp_v1 - 1; - arg0->unk1A = temp_t5; - phi_v0 = temp_t5 & 0xFFFF; + seqChannel->delay = temp_t5; + var_v0 = temp_t5 & 0xFFFF; } - phi_s3 = sp4B; - if (phi_v0 == 0) { + var_s3 = sp4B; + if (var_v0 == 0) { + case 0xCD: /* switch 3 */ + case 0xCE: /* switch 3 */ + case 0xCF: /* switch 3 */ + case 0xD5: /* switch 3 */ + case 0xD6: /* switch 3 */ + case 0xED: /* switch 3 */ + case 0xEE: /* switch 3 */ default: /* switch 2 */ - default: /* switch 1 */ loop_12: - temp_v0_2 = func_800BF108(temp_s1); - temp_s0_2 = temp_v0_2 & 0xFF; - if (temp_v0_2 >= 0xC1) { - switch (temp_v0_2) { /* switch 1 */ - case 0xFF: /* switch 1 */ - temp_a0_2 = temp_s1->unk18; - if (temp_a0_2 == 0) { - func_800BEBA4(arg0); - } else { - temp_t7 = (temp_a0_2 - 1) & 0xFF; - temp_s1->unk18 = temp_t7; - temp_s1->unk0 = (temp_s1 + (temp_t7 * 4))->unk4; - goto loop_12; - } - break; - case 0xFD: /* switch 1 */ - arg0->unk1A = func_800BF14C(temp_s1); - break; - case 0xEA: /* switch 1 */ - arg0->unk0 = arg0->unk0 | 0x20; - break; - case 0xFC: /* switch 1 */ - temp_t3 = func_800BF11C(temp_s1) & 0xFFFF; - (temp_s1 + (temp_s1->unk18 * 4))->unk4 = temp_s1->unk0; - temp_s1->unk18 = temp_s1->unk18 + 1; - temp_s1->unk0 = temp_s4->unk14 + temp_t3; - goto loop_12; - case 0xF8: /* switch 1 */ - (temp_s1 + temp_s1->unk18)->unk14 = func_800BF108(temp_s1); - (temp_s1 + (temp_s1->unk18 * 4))->unk4 = temp_s1->unk0; - temp_s1->unk18 = temp_s1->unk18 + 1; - goto loop_12; - case 0xF7: /* switch 1 */ - temp_v0_3 = temp_s1 + temp_s1->unk18; - temp_v0_3->unk13 = temp_v0_3->unk13 - 1; - temp_a0_3 = temp_s1->unk18; - if ((temp_s1 + temp_a0_3)->unk13 != 0) { - temp_s1->unk0 = *(temp_s1 + (temp_a0_3 * 4)); - } else { - temp_s1->unk18 = temp_a0_3 - 1; - } - goto loop_12; - case 0xF6: /* switch 1 */ - temp_s1->unk18 = temp_s1->unk18 - 1; - goto loop_12; - case 0xF5: /* switch 1 */ - case 0xF9: /* switch 1 */ - case 0xFA: /* switch 1 */ - case 0xFB: /* switch 1 */ - if (((temp_s0_2 != 0xFA) || (phi_s3 == 0)) && ((temp_s0_2 != 0xF9) || (phi_s3 < 0)) && ((temp_s0_2 != 0xF5) || (phi_s3 >= 0))) { - temp_s1->unk0 = temp_s4->unk14 + (func_800BF11C(temp_s1) & 0xFFFF); - } - goto loop_12; - case 0xF2: /* switch 1 */ - case 0xF3: /* switch 1 */ - case 0xF4: /* switch 1 */ - if (((temp_s0_2 != 0xF3) || (phi_s3 == 0)) && ((temp_s0_2 != 0xF2) || (phi_s3 < 0))) { - temp_s1->unk0 = temp_s1->unk0 + func_800BF108(temp_s1); - } - goto loop_12; - case 0xF1: /* switch 1 */ - temp_s0_3 = arg0 + 0x84; - func_800BD418(temp_s0_3); - func_800BD578(temp_s0_3, func_800BF108(temp_s1)); - goto loop_12; - case 0xF0: /* switch 1 */ - func_800BD418(arg0 + 0x84); - goto loop_12; - case 0xC2: /* switch 1 */ - arg0->unk34 = temp_s4->unk14 + (func_800BF11C(temp_s1) & 0xFFFF); - goto loop_12; - case 0xC5: /* switch 1 */ - if (phi_s3 != -1) { - temp_v1_2 = arg0->unk34 + (phi_s3 * 2); - arg0->unk34 = temp_s4->unk14 + ((temp_v1_2->unk1 + (temp_v1_2->unk0 << 8)) & 0xFFFF); - } - goto loop_12; - case 0xEB: /* switch 1 */ - temp_v1_3 = D_803B7078; - temp_a3 = *(temp_v1_3 + (temp_s4->unk4 * 2)); - temp_s0_4 = *(((temp_a3 + *(temp_a3 + temp_v1_3)) - func_800BF108(temp_s1)) + temp_v1_3); - if (func_800B9A90(1, 2, temp_s0_4, temp_a3) != 0) { - arg0->unk6 = temp_s0_4; - } - /* fallthrough */ - case 0xC1: /* switch 1 */ - func_800BFCD8(arg0, func_800BF108(temp_s1) & 0xFF); - goto loop_12; - case 0xC3: /* switch 1 */ - arg0->unk0 = arg0->unk0 & 0xFFFD; - goto loop_12; - case 0xC4: /* switch 1 */ - arg0->unk0 = arg0->unk0 | 2; - goto loop_12; - case 0xDF: /* switch 1 */ - func_800BFD6C(arg0, func_800BF108(temp_s1) & 0xFF); - arg0->unk1 = arg0->unk1 | 0x40; - goto loop_12; - case 0xE0: /* switch 1 */ - temp_f6 = func_800BF108(temp_s1); - arg0->unk1 = arg0->unk1 | 0x40; - arg0->unk20 = temp_f6 * 0.0078125f; - goto loop_12; - case 0xDE: /* switch 1 */ - temp_f18 = func_800BF11C(temp_s1) & 0xFFFF; - arg0->unk1 = arg0->unk1 | 0x80; - arg0->unk30 = temp_f18 / 32768.0f; - goto loop_12; - case 0xD3: /* switch 1 */ - temp_f8 = gPitchBendFrequencyScale[(func_800BF108(temp_s1) + 0x7F) & 0xFF]; - arg0->unk1 = arg0->unk1 | 0x80; - arg0->unk30 = temp_f8; - goto loop_12; - case 0xDD: /* switch 1 */ - arg0->unk9 = func_800BF108(temp_s1); - arg0->unk1 = arg0->unk1 | 0x20; - goto loop_12; - case 0xDC: /* switch 1 */ - arg0->unkA = func_800BF108(temp_s1); - arg0->unk1 = arg0->unk1 | 0x20; - goto loop_12; - case 0xDB: /* switch 1 */ - temp_v0_4 = temp_s1->unk0; - temp_v1_4 = *temp_v0_4; - temp_s1->unk0 = temp_v0_4 + 1; - arg0->unk1E = temp_v1_4; - goto loop_12; - case 0xDA: /* switch 1 */ - arg0->unk80 = temp_s4->unk14 + (func_800BF11C(temp_s1) & 0xFFFF); - goto loop_12; - case 0xD9: /* switch 1 */ - arg0->unk7C = func_800BF108(temp_s1); - goto loop_12; - case 0xD8: /* switch 1 */ - arg0->unk12 = func_800BF108(temp_s1) * 8; - arg0->unkE = 0; - arg0->unk16 = 0; - goto loop_12; - case 0xD7: /* switch 1 */ - temp_v1_5 = func_800BF108(temp_s1) << 5; - arg0->unk10 = temp_v1_5; - arg0->unkC = temp_v1_5; - arg0->unk14 = 0; - goto loop_12; - case 0xE2: /* switch 1 */ - arg0->unkE = func_800BF108(temp_s1) * 8; - arg0->unk12 = func_800BF108(temp_s1) * 8; - arg0->unk16 = func_800BF108(temp_s1) * 0x10; - goto loop_12; - case 0xE1: /* switch 1 */ - arg0->unkC = func_800BF108(temp_s1) << 5; - arg0->unk10 = func_800BF108(temp_s1) << 5; - arg0->unk14 = func_800BF108(temp_s1) * 0x10; - goto loop_12; - case 0xE3: /* switch 1 */ - arg0->unk18 = func_800BF108(temp_s1) * 0x10; - goto loop_12; - case 0xD4: /* switch 1 */ - arg0->unk4 = func_800BF108(temp_s1); - goto loop_12; - case 0xC6: /* switch 1 */ - temp_v1_6 = D_803B7078; - temp_a3_2 = *(temp_v1_6 + (temp_s4->unk4 * 2)); - temp_s0_5 = *(((temp_a3_2 + *(temp_a3_2 + temp_v1_6)) - func_800BF108(temp_s1)) + temp_v1_6); - if (func_800B9A90(1, 2, temp_s0_5, temp_a3_2) != 0) { - arg0->unk6 = temp_s0_5; - } - goto loop_12; - case 0xC7: /* switch 1 */ - sp34 = phi_s3 & 0xFF; - temp_s0_6 = func_800BF108(temp_s1) & 0xFF; - *(temp_s4->unk14 + (func_800BF11C(temp_s1) & 0xFFFF)) = sp34 + temp_s0_6; - goto loop_12; - case 0xC8: /* switch 1 */ - case 0xC9: /* switch 1 */ - case 0xCC: /* switch 1 */ - temp_v0_5 = func_800BF108(temp_s1); - if (temp_s0_2 == 0xC8) { - phi_s3 = phi_s3 - temp_v0_5; - } else if (temp_s0_2 == 0xCC) { - phi_s3 = temp_v0_5; - } else { - phi_s3 = phi_s3 & temp_v0_5; - } - goto loop_12; - case 0xCA: /* switch 1 */ - arg0->unk3 = func_800BF108(temp_s1); - goto loop_12; - case 0xCB: /* switch 1 */ - phi_s3 = *(temp_s4->unk14 + ((func_800BF11C(temp_s1) & 0xFFFF) + phi_s3)); - goto loop_12; - case 0xD0: /* switch 1 */ - arg0->unk0 = ((func_800BF108(temp_s1) * 4) & 4) | (arg0->unk0 & 0xFFFB); - goto loop_12; - case 0xD1: /* switch 1 */ - arg0->unk2 = func_800BF108(temp_s1); - goto loop_12; - case 0xD2: /* switch 1 */ - arg0->unk7D = func_800BF108(temp_s1); - goto loop_12; - case 0xE5: /* switch 1 */ - arg0->unk7 = func_800BF108(temp_s1); - goto loop_12; - case 0xE4: /* switch 1 */ - if (phi_s3 != -1) { - (temp_s1 + (temp_s1->unk18 * 4))->unk4 = temp_s1->unk0; - temp_v1_7 = arg0->unk34 + (phi_s3 * 2); - temp_s1->unk18 = temp_s1->unk18 + 1; - temp_s1->unk0 = temp_s4->unk14 + ((temp_v1_7->unk1 + (temp_v1_7->unk0 << 8)) & 0xFFFF); - } - goto loop_12; - case 0xE6: /* switch 1 */ - arg0->unk8 = func_800BF108(temp_s1); - goto loop_12; - case 0xE7: /* switch 1 */ - temp_v1_8 = temp_s4->unk14 + (func_800BF11C(temp_s1) & 0xFFFF); - temp_v1_9 = temp_v1_8 + 7; - arg0->unk3 = *temp_v1_8; - arg0->unk2 = temp_v1_9->unk-6; - arg0->unk5 = temp_v1_9->unk-5; - arg0->unk1E = temp_v1_9->unk-4; - arg0->unk9 = temp_v1_9->unk-3; - arg0->unkA = temp_v1_9->unk-2; - arg0->unk4 = temp_v1_9->unk-1; - arg0->unk1 = arg0->unk1 | 0x20; - arg0->unk7 = temp_v1_9->unk0; - goto loop_12; - case 0xE8: /* switch 1 */ - arg0->unk3 = func_800BF108(temp_s1); - arg0->unk2 = func_800BF108(temp_s1); - arg0->unk5 = func_800BF108(temp_s1); - arg0->unk1E = func_800BF108(temp_s1); - arg0->unk9 = func_800BF108(temp_s1); - arg0->unkA = func_800BF108(temp_s1); - arg0->unk4 = func_800BF108(temp_s1); - arg0->unk7 = func_800BF108(temp_s1); - arg0->unk1 = arg0->unk1 | 0x20; - goto loop_12; - case 0xEC: /* switch 1 */ - arg0->unk12 = 0; - arg0->unkE = 0; - arg0->unk16 = 0; - arg0->unk10 = 0; - arg0->unkC = 0; - arg0->unk14 = 0; - arg0->unk30 = 1.0f; - goto loop_12; - case 0xE9: /* switch 1 */ - arg0->unk5 = func_800BF108(temp_s1); - goto loop_12; - case 0xEF: /* switch 1 */ - func_800BF11C(temp_s1); - func_800BF108(temp_s1); + temp_v0_2 = m64_read_u8(temp_s1); + temp_s0 = temp_v0_2 & 0xFF; + switch (temp_v0_2) { /* switch 3; irregular */ + case 0xFF: /* switch 3 */ + temp_a0_2 = temp_s1->depth; + if (temp_a0_2 == 0) { + sequence_channel_disable(seqChannel); + } else { + temp_t7 = (temp_a0_2 - 1) & 0xFF; + temp_s1->depth = temp_t7; + temp_s1->pc = temp_s1->stack[temp_t7]; goto loop_12; } - } else { + break; + case 0xFD: /* switch 3 */ + seqChannel->delay = m64_read_compressed_u16(temp_s1); + break; + case 0xEA: /* switch 3 */ + seqChannel->unk0 = (s8) ((u8) seqChannel->unk0 | 0x20); + break; + case 0xFC: /* switch 3 */ + temp_t3 = m64_read_s16(temp_s1) & 0xFFFF; + temp_s1->stack[temp_s1->depth] = temp_s1->pc; + temp_s1->depth += 1; + temp_s1->pc = &temp_s4->seqData[temp_t3]; + goto loop_12; + case 0xF8: /* switch 3 */ + temp_s1->remLoopIters[temp_s1->depth] = m64_read_u8(temp_s1); + temp_s1->stack[temp_s1->depth] = temp_s1->pc; + temp_s1->depth += 1; + goto loop_12; + case 0xF7: /* switch 3 */ + temp_v0_3 = temp_s1 + temp_s1->depth; + temp_v0_3->unk13 = (u8) (temp_v0_3->unk13 - 1); + temp_a0_3 = temp_s1->depth; + if ((temp_s1 + temp_a0_3)->unk13 != 0) { + temp_s1->pc = *(temp_s1 + (temp_a0_3 * 4)); + } else { + temp_s1->depth = temp_a0_3 - 1; + } + goto loop_12; + case 0xF6: /* switch 3 */ + temp_s1->depth -= 1; + goto loop_12; + case 0xF5: /* switch 3 */ + case 0xF9: /* switch 3 */ + case 0xFA: /* switch 3 */ + case 0xFB: /* switch 3 */ + temp_v0_4 = m64_read_s16(temp_s1); + if (((temp_s0 != 0xFA) || (var_s3 == 0)) && ((temp_s0 != 0xF9) || (var_s3 < 0)) && ((temp_s0 != 0xF5) || (var_s3 >= 0))) { + temp_s1->pc = &temp_s4->seqData[temp_v0_4 & 0xFFFF]; + } + goto loop_12; + case 0xF2: /* switch 3 */ + case 0xF3: /* switch 3 */ + case 0xF4: /* switch 3 */ + temp_v0_5 = m64_read_u8(temp_s1); + if (((temp_s0 != 0xF3) || (var_s3 == 0)) && ((temp_s0 != 0xF2) || (var_s3 < 0))) { + temp_s1->pc = &temp_s1->pc[(s8) temp_v0_5]; + } + goto loop_12; + case 0xF1: /* switch 3 */ + temp_s0_2 = &seqChannel->notePool; + note_pool_clear(temp_s0_2); + note_pool_fill(temp_s0_2, m64_read_u8(temp_s1)); + goto loop_12; + case 0xF0: /* switch 3 */ + note_pool_clear(&seqChannel->notePool); + goto loop_12; + case 0xC2: /* switch 3 */ + seqChannel->dynTable = (u8 (*)[][2]) &temp_s4->seqData[m64_read_s16(temp_s1) & 0xFFFF]; + goto loop_12; + case 0xC5: /* switch 3 */ + if (var_s3 != -1) { + temp_v1_2 = seqChannel->dynTable + (var_s3 * 2); + seqChannel->dynTable = (u8 (*)[][2]) &temp_s4->seqData[(temp_v1_2->unk1 + (temp_v1_2->unk0 << 8)) & 0xFFFF]; + } + goto loop_12; + case 0xEB: /* switch 3 */ + temp_v1_3 = gAlBankSets; + temp_a3 = *(temp_v1_3 + (temp_s4->seqId * 2)); + temp_s0_3 = *(((temp_a3 + *(temp_a3 + temp_v1_3)) - m64_read_u8(temp_s1)) + temp_v1_3); + if (get_bank_or_seq(1, 2, (s32) temp_s0_3) != NULL) { + seqChannel->bankId = temp_s0_3; + } + /* fallthrough */ + case 0xC1: /* switch 3 */ + set_instrument(seqChannel, m64_read_u8(temp_s1) & 0xFF); + goto loop_12; + case 0xC3: /* switch 3 */ + seqChannel->unk0 = (s8) ((u8) seqChannel->unk0 & 0xFFFD); + goto loop_12; + case 0xC4: /* switch 3 */ + seqChannel->unk0 = (s8) ((u8) seqChannel->unk0 | 2); + goto loop_12; + case 0xDF: /* switch 3 */ + sequence_channel_set_volume(seqChannel, m64_read_u8(temp_s1) & 0xFF); + seqChannel->changes.as_u8 |= 0x40; + goto loop_12; + case 0xE0: /* switch 3 */ + temp_f6 = (f32) m64_read_u8(temp_s1); + seqChannel->changes.as_u8 |= 0x40; + seqChannel->volumeScale = temp_f6 * 0.0078125f; + goto loop_12; + case 0xDE: /* switch 3 */ + temp_f18 = (f32) (m64_read_s16(temp_s1) & 0xFFFF); + seqChannel->changes.as_u8 |= 0x80; + seqChannel->freqScale = temp_f18 / 32768.0f; + goto loop_12; + case 0xD3: /* switch 3 */ + temp_f8 = gPitchBendFrequencyScale[(m64_read_u8(temp_s1) + 0x7F) & 0xFF]; + seqChannel->changes.as_u8 |= 0x80; + seqChannel->freqScale = temp_f8; + goto loop_12; + case 0xDD: /* switch 3 */ + seqChannel->newPan = m64_read_u8(temp_s1); + seqChannel->changes.as_u8 |= 0x20; + goto loop_12; + case 0xDC: /* switch 3 */ + seqChannel->panChannelWeight = m64_read_u8(temp_s1); + seqChannel->changes.as_u8 |= 0x20; + goto loop_12; + case 0xDB: /* switch 3 */ + temp_v0_6 = temp_s1->pc; + temp_s1->pc = temp_v0_6 + 1; + seqChannel->transposition = (s16) (s8) *temp_v0_6; + goto loop_12; + case 0xDA: /* switch 3 */ + seqChannel->adsr.envelope = (struct AdsrEnvelope *) &temp_s4->seqData[m64_read_s16(temp_s1) & 0xFFFF]; + goto loop_12; + case 0xD9: /* switch 3 */ + seqChannel->adsr.releaseRate = m64_read_u8(temp_s1); + goto loop_12; + case 0xD8: /* switch 3 */ + seqChannel->vibratoExtentTarget = m64_read_u8(temp_s1) * 8; + seqChannel->vibratoExtentStart = 0; + seqChannel->vibratoExtentChangeDelay = 0; + goto loop_12; + case 0xD7: /* switch 3 */ + temp_v1_4 = m64_read_u8(temp_s1) << 5; + seqChannel->vibratoRateTarget = temp_v1_4; + seqChannel->vibratoRateStart = temp_v1_4; + seqChannel->vibratoRateChangeDelay = 0; + goto loop_12; + case 0xE2: /* switch 3 */ + seqChannel->vibratoExtentStart = m64_read_u8(temp_s1) * 8; + seqChannel->vibratoExtentTarget = m64_read_u8(temp_s1) * 8; + seqChannel->vibratoExtentChangeDelay = m64_read_u8(temp_s1) * 0x10; + goto loop_12; + case 0xE1: /* switch 3 */ + seqChannel->vibratoRateStart = m64_read_u8(temp_s1) << 5; + seqChannel->vibratoRateTarget = m64_read_u8(temp_s1) << 5; + seqChannel->vibratoRateChangeDelay = m64_read_u8(temp_s1) * 0x10; + goto loop_12; + case 0xE3: /* switch 3 */ + seqChannel->vibratoDelay = m64_read_u8(temp_s1) * 0x10; + goto loop_12; + case 0xD4: /* switch 3 */ + seqChannel->reverbVol = m64_read_u8(temp_s1); + goto loop_12; + case 0xC6: /* switch 3 */ + temp_v1_5 = gAlBankSets; + temp_a3_2 = *(temp_v1_5 + (temp_s4->seqId * 2)); + temp_s0_4 = *(((temp_a3_2 + *(temp_a3_2 + temp_v1_5)) - m64_read_u8(temp_s1)) + temp_v1_5); + if (get_bank_or_seq(1, 2, (s32) temp_s0_4) != NULL) { + seqChannel->bankId = temp_s0_4; + } + goto loop_12; + case 0xC7: /* switch 3 */ + sp34 = var_s3 & 0xFF; + temp_s0_5 = m64_read_u8(temp_s1) & 0xFF; + temp_s4->seqData[m64_read_s16(temp_s1) & 0xFFFF] = sp34 + temp_s0_5; + goto loop_12; + case 0xC8: /* switch 3 */ + case 0xC9: /* switch 3 */ + case 0xCC: /* switch 3 */ + temp_v0_7 = m64_read_u8(temp_s1); + if (temp_s0 == 0xC8) { + var_s3 -= temp_v0_7; + } else if (temp_s0 == 0xCC) { + var_s3 = (s8) temp_v0_7; + } else { + var_s3 &= temp_v0_7; + } + goto loop_12; + case 0xCA: /* switch 3 */ + seqChannel->muteBehavior = m64_read_u8(temp_s1); + goto loop_12; + case 0xCB: /* switch 3 */ + var_s3 = (s8) temp_s4->seqData[(m64_read_s16(temp_s1) & 0xFFFF) + var_s3]; + goto loop_12; + case 0xD0: /* switch 3 */ + seqChannel->unk0 = (s8) (((m64_read_u8(temp_s1) * 4) & 4) | ((u8) seqChannel->unk0 & 0xFFFB)); + goto loop_12; + case 0xD1: /* switch 3 */ + seqChannel->noteAllocPolicy = m64_read_u8(temp_s1); + goto loop_12; + case 0xD2: /* switch 3 */ + seqChannel->adsr.sustain = m64_read_u8(temp_s1); + goto loop_12; + case 0xE5: /* switch 3 */ + seqChannel->reverbIndex = m64_read_u8(temp_s1); + goto loop_12; + case 0xE4: /* switch 3 */ + if (var_s3 != -1) { + temp_s1->stack[temp_s1->depth] = temp_s1->pc; + temp_v1_6 = seqChannel->dynTable + (var_s3 * 2); + temp_s1->depth += 1; + temp_s1->pc = &temp_s4->seqData[(temp_v1_6->unk1 + (temp_v1_6->unk0 << 8)) & 0xFFFF]; + } + goto loop_12; + case 0xE6: /* switch 3 */ + seqChannel->bookOffset = m64_read_u8(temp_s1); + goto loop_12; + case 0xE7: /* switch 3 */ + temp_v1_7 = &temp_s4->seqData[m64_read_s16(temp_s1) & 0xFFFF]; + seqChannel->muteBehavior = *temp_v1_7; + seqChannel->noteAllocPolicy = temp_v1_7[7].unk-6; + seqChannel->notePriority = temp_v1_7[7].unk-5; + seqChannel->transposition = (s16) temp_v1_7[7].unk-4; + seqChannel->newPan = temp_v1_7[7].unk-3; + seqChannel->panChannelWeight = temp_v1_7[7].unk-2; + seqChannel->reverbVol = temp_v1_7[7].unk-1; + seqChannel->changes.as_u8 |= 0x20; + seqChannel->reverbIndex = temp_v1_7[7]; + goto loop_12; + case 0xE8: /* switch 3 */ + seqChannel->muteBehavior = m64_read_u8(temp_s1); + seqChannel->noteAllocPolicy = m64_read_u8(temp_s1); + seqChannel->notePriority = m64_read_u8(temp_s1); + seqChannel->transposition = (s16) m64_read_u8(temp_s1); + seqChannel->newPan = m64_read_u8(temp_s1); + seqChannel->panChannelWeight = m64_read_u8(temp_s1); + seqChannel->reverbVol = m64_read_u8(temp_s1); + seqChannel->reverbIndex = m64_read_u8(temp_s1); + seqChannel->changes.as_u8 |= 0x20; + goto loop_12; + case 0xEC: /* switch 3 */ + seqChannel->vibratoExtentTarget = 0; + seqChannel->vibratoExtentStart = 0; + seqChannel->vibratoExtentChangeDelay = 0; + seqChannel->vibratoRateTarget = 0; + seqChannel->vibratoRateStart = 0; + seqChannel->vibratoRateChangeDelay = 0; + seqChannel->freqScale = 1.0f; + goto loop_12; + case 0xE9: /* switch 3 */ + seqChannel->notePriority = m64_read_u8(temp_s1); + goto loop_12; + case 0xEF: /* switch 3 */ + m64_read_s16(temp_s1); + m64_read_u8(temp_s1); + goto loop_12; + default: /* switch 3 */ temp_t6 = temp_v0_2 & 0xF0; temp_a0_4 = temp_v0_2 & 0xF; temp_t0 = temp_a0_4 & 0xFF; switch (temp_t6) { /* switch 2 */ case 0x0: /* switch 2 */ - temp_v1_10 = (arg0 + ((temp_a0_4 & 0xFF) * 4))->unk48; - if (temp_v1_10 != 0) { - phi_s3 = (*temp_v1_10 * 2) >> 0x1F; + temp_v1_8 = seqChannel->layers[temp_a0_4 & 0xFF]; + if (temp_v1_8 != NULL) { + var_s3 = (s8) ((u32) (*temp_v1_8 * 2) >> 0x1F); } else { - phi_s3 = -1; + var_s3 = -1; } goto loop_12; case 0x70: /* switch 2 */ - (arg0 + (temp_a0_4 & 0xFF))->unk58 = phi_s3; + seqChannel->soundScriptIO[temp_a0_4 & 0xFF] = var_s3; goto loop_12; case 0x80: /* switch 2 */ - temp_v1_11 = temp_a0_4 & 0xFF; - temp_a1 = arg0 + temp_v1_11; - temp_s3 = temp_a1->unk58; - phi_s3 = temp_s3; - if (temp_v1_11 < 4) { - temp_a1->unk58 = -1; + temp_v1_9 = temp_a0_4 & 0xFF; + var_s3 = seqChannel->soundScriptIO[temp_v1_9]; + if (temp_v1_9 < 4) { + seqChannel->soundScriptIO[temp_v1_9] = -1; } goto loop_12; case 0x50: /* switch 2 */ - phi_s3 = phi_s3 - (arg0 + (temp_a0_4 & 0xFF))->unk58; + var_s3 -= seqChannel->soundScriptIO[temp_a0_4 & 0xFF]; goto loop_12; case 0x60: /* switch 2 */ - arg0->unk1A = temp_a0_4 & 0xFF; + seqChannel->delay = temp_a0_4 & 0xFF; break; case 0x90: /* switch 2 */ - temp_v0_6 = func_800BF11C(temp_s1); - temp_a1_2 = temp_s0_2 & 0xF; - sp34 = temp_a1_2; - sp52 = temp_v0_6; - if (func_800BEA10(arg0, temp_a1_2, temp_a1_2) == 0) { - (arg0 + (sp34 * 4))->unk48->unk50 = temp_s4->unk14 + sp52; + temp_v0_8 = m64_read_s16(temp_s1); + temp_a1 = temp_s0 & 0xF; + sp34 = temp_a1; + sp52 = temp_v0_8; + if (seq_channel_set_layer(seqChannel, temp_a1) == 0) { + seqChannel->layers[sp34]->scriptState.pc = &temp_s4->seqData[(u16) sp52]; } goto loop_12; case 0xA0: /* switch 2 */ - func_800BEB54(arg0, temp_s0_2 & 0xF); + seq_channel_layer_free(seqChannel, temp_s0 & 0xF); goto loop_12; case 0xB0: /* switch 2 */ - if (phi_s3 != -1) { - temp_a1_3 = temp_s0_2 & 0xF; - sp34 = temp_a1_3; - if (func_800BEA10(arg0, temp_a1_3, temp_a1_3) != -1) { - temp_v1_12 = arg0->unk34 + (phi_s3 * 2); - (arg0 + (sp34 * 4))->unk48->unk50 = temp_s4->unk14 + ((temp_v1_12->unk1 + (temp_v1_12->unk0 << 8)) & 0xFFFF); + if (var_s3 != -1) { + temp_a1_2 = temp_s0 & 0xF; + sp34 = temp_a1_2; + if (seq_channel_set_layer(seqChannel, temp_a1_2) != -1) { + temp_v1_10 = seqChannel->dynTable + (var_s3 * 2); + seqChannel->layers[sp34]->scriptState.pc = &temp_s4->seqData[(temp_v1_10->unk1 + (temp_v1_10->unk0 << 8)) & 0xFFFF]; } } goto loop_12; case 0x10: /* switch 2 */ - func_800BEE88(temp_s4, temp_s0_2 & 0xF, temp_s4->unk14 + (func_800BF11C(temp_s1) & 0xFFFF)); + sequence_channel_enable(temp_s4, temp_s0 & 0xF, &temp_s4->seqData[m64_read_s16(temp_s1) & 0xFFFF]); goto loop_12; case 0x20: /* switch 2 */ - func_800BEBA4(temp_s4[temp_s0_2 & 0xF].unk30); + sequence_channel_disable(temp_s4->channels[temp_s0 & 0xF]); goto loop_12; case 0x30: /* switch 2 */ sp55 = temp_t0; - (temp_s4[temp_t0].unk30 + func_800BF108(temp_s1))->unk58 = phi_s3; + temp_s4->channels[temp_t0]->soundScriptIO[m64_read_u8(temp_s1)] = var_s3; goto loop_12; case 0x40: /* switch 2 */ sp55 = temp_t0; - phi_s3 = (temp_s4[temp_t0].unk30 + func_800BF108(temp_s1))->unk58; + var_s3 = temp_s4->channels[temp_t0]->soundScriptIO[m64_read_u8(temp_s1)]; goto loop_12; } + break; } } - phi_s1_2 = arg0; + var_s1_2 = seqChannel; + var_s0_2 = 0; do { - temp_a0_5 = phi_s1_2->unk48; - if (temp_a0_5 != 0) { - func_800BF190(temp_a0_5); + temp_a0_5 = var_s1_2->layers[0]; + if (temp_a0_5 != NULL) { + seq_channel_layer_process_script(temp_a0_5); } - temp_s0_7 = phi_s0_2 + 4; - phi_s1_2 += 4; - phi_s0_2 = temp_s0_7; - } while (temp_s0_7 != 0x10); + var_s0_2 += 4; + var_s1_2 += 4; + } while (var_s0_2 != 0x10); } - /* Duplicate return node #109. Try simplifying control flow for better match */ } } #else @@ -1525,19 +1194,19 @@ GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800BFD90.s") #ifdef MIPS_TO_C //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -void func_800BAB58(void *, void *, void *, void *, void *); /* extern */ +void audio_dma_partial_copy_async(void *, void *, void *, void *, void *); /* extern */ void func_800BB584(u8, void *, void *); /* extern */ -void func_800BD418(void *); /* extern */ -void func_800BD578(void *, s8); /* extern */ -void func_800BEC8C(void *, s32); /* extern */ -void func_800BEDB8(void *, s32); /* extern */ -void func_800BEE88(void *, s32, s32); /* extern */ -void func_800BEF2C(void *, u8, s32); /* extern */ +void note_pool_clear(void *); /* extern */ +void note_pool_fill(void *, s8); /* extern */ +void sequence_player_init_channels(void *, s32); /* extern */ +void sequence_player_disable_channels(void *, s32); /* extern */ +void sequence_channel_enable(void *, s32, s32); /* extern */ +void sequence_player_disable(void *, u8, s32); /* extern */ void func_800BFD90(s32); /* extern */ s32 osRecvMesg(void *, ?, ?); /* extern */ -extern u8 D_803B03C0; -extern ? D_803B0400; -extern ? D_803B5EF0; +extern u8 gBankLoadStatus; +extern ? gSeqLoadStatus; +extern ? gSequenceChannelNone; void func_800C08CC(void *arg0) { void *sp38; @@ -1598,7 +1267,7 @@ void func_800C08CC(void *arg0) { if (arg0->unk144 == 0) { arg0->unk0 = arg0->unk0 & 0xFFF7; func_800BB584(arg0->unk6, temp_a1, temp_a2); - temp_v0_2 = arg0->unk6 + &D_803B03C0; + temp_v0_2 = arg0->unk6 + &gBankLoadStatus; if (*temp_v0_2 != 5) { *temp_v0_2 = 2; return; @@ -1606,7 +1275,7 @@ void func_800C08CC(void *arg0) { /* Duplicate return node #110. Try simplifying control flow for better match */ return; } - func_800BAB58(arg0 + 0x140, temp_a1, temp_a2, temp_s0, arg0 + 0x124); + audio_dma_partial_copy_async(arg0 + 0x140, temp_a1, temp_a2, temp_s0, arg0 + 0x124); return; } /* Duplicate return node #110. Try simplifying control flow for better match */ @@ -1615,7 +1284,7 @@ void func_800C08CC(void *arg0) { if (((temp_v0 * 8) >> 0x1F) == 1) { if (osRecvMesg(arg0 + 0xD4, 0, 0) != -1) { arg0->unk0 = arg0->unk0 & 0xFFEF; - temp_v1 = arg0->unk4 + &D_803B0400; + temp_v1 = arg0->unk4 + &gSeqLoadStatus; if (*temp_v1 != 5) { *temp_v1 = 2; } @@ -1625,15 +1294,15 @@ void func_800C08CC(void *arg0) { return; } block_11: - temp_v1_2 = arg0->unk4 + &D_803B0400; + temp_v1_2 = arg0->unk4 + &gSeqLoadStatus; temp_a1_2 = *temp_v1_2; - if ((temp_a1_2 < 2) || (temp_v0_3 = arg0->unk5 + &D_803B03C0, temp_a0 = *temp_v0_3, phi_a0 = temp_a0, phi_v0 = temp_v0_3, ((temp_a0 < 2) != 0))) { - func_800BEF2C(arg0, temp_a1_2, 5); + if ((temp_a1_2 < 2) || (temp_v0_3 = arg0->unk5 + &gBankLoadStatus, temp_a0 = *temp_v0_3, phi_a0 = temp_a0, phi_v0 = temp_v0_3, ((temp_a0 < 2) != 0))) { + sequence_player_disable(arg0, temp_a1_2, 5); return; } if (temp_a1_2 != 5) { *temp_v1_2 = 2; - temp_v0_4 = arg0->unk5 + &D_803B03C0; + temp_v0_4 = arg0->unk5 + &gBankLoadStatus; phi_a0 = *temp_v0_4; phi_v0 = temp_v0_4; } @@ -1655,12 +1324,12 @@ block_11: arg0->unk0 = arg0->unk0 | 4; phi_s3 = sp58; loop_24: - temp_v0_6 = func_800BF108(temp_s0_2); + temp_v0_6 = m64_read_u8(temp_s0_2); temp_s2 = temp_v0_6 & 0xFF; if (temp_v0_6 == 0xFF) { temp_a0_3 = temp_s0_2->unk18; if (temp_a0_3 == 0) { - func_800BEF2C(arg0); + sequence_player_disable(arg0); } else { temp_t9 = (temp_a0_3 - 1) & 0xFF; temp_s0_2->unk18 = temp_t9; @@ -1672,20 +1341,20 @@ block_28: temp_v1_4 = temp_v0_6 & 0xFF; temp_v0_7 = temp_v1_4 & 0xF0; if (temp_v1_4 == 0xFD) { - arg0->unkE = func_800BF14C(temp_s0_2); + arg0->unkE = m64_read_compressed_u16(temp_s0_2); } else if (temp_v1_4 == 0xFE) { arg0->unkE = 1; } else { if (temp_v1_4 >= 0xC0) { switch (temp_v1_4) { /* switch 1 */ case 0xFC: /* switch 1 */ - temp_t2_2 = func_800BF11C(temp_s0_2) & 0xFFFF; + temp_t2_2 = m64_read_s16(temp_s0_2) & 0xFFFF; (temp_s0_2 + (temp_s0_2->unk18 * 4))->unk4 = temp_s0_2->unk0; temp_s0_2->unk18 = temp_s0_2->unk18 + 1; temp_s0_2->unk0 = arg0->unk14 + temp_t2_2; break; case 0xF8: /* switch 1 */ - (temp_s0_2 + temp_s0_2->unk18)->unk14 = func_800BF108(temp_s0_2); + (temp_s0_2 + temp_s0_2->unk18)->unk14 = m64_read_u8(temp_s0_2); (temp_s0_2 + (temp_s0_2->unk18 * 4))->unk4 = temp_s0_2->unk0; temp_s0_2->unk18 = temp_s0_2->unk18 + 1; break; @@ -1704,34 +1373,34 @@ block_28: case 0xFA: /* switch 1 */ case 0xFB: /* switch 1 */ if (((temp_s2 != 0xFA) || (phi_s3 == 0)) && ((temp_s2 != 0xF9) || (phi_s3 < 0)) && ((temp_s2 != 0xF5) || (phi_s3 >= 0))) { - temp_s0_2->unk0 = arg0->unk14 + (func_800BF11C(temp_s0_2) & 0xFFFF); + temp_s0_2->unk0 = arg0->unk14 + (m64_read_s16(temp_s0_2) & 0xFFFF); } break; case 0xF2: /* switch 1 */ case 0xF3: /* switch 1 */ case 0xF4: /* switch 1 */ if (((temp_s2 != 0xF3) || (phi_s3 == 0)) && ((temp_s2 != 0xF2) || (phi_s3 < 0))) { - temp_s0_2->unk0 = temp_s0_2->unk0 + func_800BF108(temp_s0_2); + temp_s0_2->unk0 = temp_s0_2->unk0 + m64_read_u8(temp_s0_2); } break; case 0xF1: /* switch 1 */ temp_a0_5 = arg0 + 0x94; sp38 = temp_a0_5; - func_800BD418(temp_a0_5); - func_800BD578(temp_a0_5, func_800BF108(temp_s0_2)); + note_pool_clear(temp_a0_5); + note_pool_fill(temp_a0_5, m64_read_u8(temp_s0_2)); break; case 0xF0: /* switch 1 */ - func_800BD418(arg0 + 0x94); + note_pool_clear(arg0 + 0x94); break; case 0xDF: /* switch 1 */ arg0->unkC = 0; /* fallthrough */ case 0xDE: /* switch 1 */ - arg0->unkC = arg0->unkC + func_800BF108(temp_s0_2); + arg0->unkC = arg0->unkC + m64_read_u8(temp_s0_2); break; case 0xDC: /* switch 1 */ case 0xDD: /* switch 1 */ - temp_v0_9 = func_800BF108(temp_s0_2); + temp_v0_9 = m64_read_u8(temp_s0_2); if (temp_s2 == 0xDD) { arg0->unk8 = (temp_v0_9 & 0xFF) * 0x30; } else { @@ -1749,8 +1418,8 @@ block_28: } break; case 0xDA: /* switch 1 */ - temp_s2_2 = func_800BF108(temp_s0_2) & 0xFF; - temp_v0_11 = func_800BF11C(temp_s0_2); + temp_s2_2 = m64_read_u8(temp_s0_2) & 0xFF; + temp_v0_11 = m64_read_s16(temp_s0_2); if ((temp_s2_2 != 0) && (temp_s2_2 != 1)) { if (temp_s2_2 != 2) { @@ -1766,7 +1435,7 @@ block_28: } break; case 0xDB: /* switch 1 */ - temp_v0_12 = func_800BF108(temp_s0_2); + temp_v0_12 = m64_read_u8(temp_s0_2); temp_v1_6 = arg0->unk1; if (temp_v1_6 != 0) { if (temp_v1_6 != 1) { @@ -1790,26 +1459,26 @@ block_76: } break; case 0xD9: /* switch 1 */ - arg0->unk28 = func_800BF108(temp_s0_2) / 127.0f; + arg0->unk28 = m64_read_u8(temp_s0_2) / 127.0f; break; case 0xD7: /* switch 1 */ - func_800BEC8C(arg0, func_800BF11C(temp_s0_2) & 0xFFFF); + sequence_player_init_channels(arg0, m64_read_s16(temp_s0_2) & 0xFFFF); break; case 0xD6: /* switch 1 */ - func_800BEDB8(arg0, func_800BF11C(temp_s0_2) & 0xFFFF); + sequence_player_disable_channels(arg0, m64_read_s16(temp_s0_2) & 0xFFFF); break; case 0xD5: /* switch 1 */ - arg0->unk24 = func_800BF108(temp_s0_2) / 127.0f; + arg0->unk24 = m64_read_u8(temp_s0_2) / 127.0f; break; case 0xD4: /* switch 1 */ arg0->unk0 = arg0->unk0 | 0x20; break; case 0xD3: /* switch 1 */ - arg0->unk3 = func_800BF108(temp_s0_2); + arg0->unk3 = m64_read_u8(temp_s0_2); break; case 0xD1: /* switch 1 */ case 0xD2: /* switch 1 */ - temp_v1_8 = arg0->unk14 + (func_800BF11C(temp_s0_2) & 0xFFFF); + temp_v1_8 = arg0->unk14 + (m64_read_s16(temp_s0_2) & 0xFFFF); if (temp_s2 == 0xD2) { arg0->unk8C = temp_v1_8; } else { @@ -1817,16 +1486,16 @@ block_76: } break; case 0xD0: /* switch 1 */ - arg0->unk2 = func_800BF108(temp_s0_2); + arg0->unk2 = m64_read_u8(temp_s0_2); break; case 0xCC: /* switch 1 */ - phi_s3 = func_800BF108(temp_s0_2); + phi_s3 = m64_read_u8(temp_s0_2); break; case 0xC9: /* switch 1 */ - phi_s3 &= func_800BF108(temp_s0_2); + phi_s3 &= m64_read_u8(temp_s0_2); break; case 0xC8: /* switch 1 */ - phi_s3 -= func_800BF108(temp_s0_2); + phi_s3 -= m64_read_u8(temp_s0_2); break; } } else if (temp_v0_7 >= 0x11) { @@ -1842,7 +1511,7 @@ block_76: phi_s3 = arg0->unk7; break; case 0x90: /* switch 2 */ - func_800BEE88(arg0, temp_s2 & 0xF, arg0->unk14 + (func_800BF11C(temp_s0_2) & 0xFFFF)); + sequence_channel_enable(arg0, temp_s2 & 0xF, arg0->unk14 + (m64_read_s16(temp_s0_2) & 0xFFFF)); break; } } else if (temp_v0_7 != 0x20) { @@ -1863,7 +1532,7 @@ block_76: phi_v0_3 = 0; do { temp_a0_6 = phi_v1->unk30; - if ((&D_803B5EF0 != temp_a0_6) == 1) { + if ((&gSequenceChannelNone != temp_a0_6) == 1) { sp34 = phi_v0_3; sp30 = phi_v1; func_800BFD90(temp_a0_6); @@ -1883,169 +1552,90 @@ GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800C08CC.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BCBC4(); // extern -void func_800BDFF8(u32 *); // extern +void process_notes(); // extern +void sequence_player_process_sound(u32 *); // extern void func_800C08CC(u32 *); // extern -extern u32 D_803B1510; -extern ? D_803B1A30; +extern u32 gSequencePlayers; +extern ? gSequenceChannels; void func_800C1138(s32 arg0) { u32 *temp_s0; u32 *phi_s0; - phi_s0 = &D_803B1510; + phi_s0 = &gSequencePlayers; do { if ((*phi_s0 >> 0x1F) == 1) { func_800C08CC(phi_s0); - func_800BDFF8(phi_s0); + sequence_player_process_sound(phi_s0); } temp_s0 = phi_s0 + 0x148; phi_s0 = temp_s0; - } while (temp_s0 != &D_803B1A30); - func_800BCBC4(); + } while (temp_s0 != &gSequenceChannels); + process_notes(); } #else GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800C1138.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BEF2C(void *); // extern -extern u32 D_803B1510; -extern u8 gDefaultShortNoteDurationTable; -extern u8 gDefaultShortNoteVelocityTable; - -void func_800C11B0(s32 arg0) { - void *sp18; - void *temp_a0; - - temp_a0 = (arg0 * 0x148) + &D_803B1510; - sp18 = temp_a0; - func_800BEF2C(temp_a0); - temp_a0->unkE = 0; - temp_a0->unk1 = 1; - temp_a0->unk10 = 0; - temp_a0->unk12 = 0; - temp_a0->unkA = 0; - temp_a0->unk8 = 0x1680; - temp_a0->unkC = 0; - temp_a0->unk2 = 0; - temp_a0->unk8C = &gDefaultShortNoteVelocityTable; - temp_a0->unk90 = &gDefaultShortNoteDurationTable; - temp_a0->unk18 = 1.0f; - temp_a0->unk28 = 1.0f; - temp_a0->unk1C = 0.0f; - temp_a0->unk20 = 0.0f; - temp_a0->unk24 = 0.5f; +void init_sequence_player(u32 player) { + struct SequencePlayer *seqPlayer = &gSequencePlayers[player]; + sequence_player_disable(seqPlayer); + seqPlayer->delay = 0; + seqPlayer->state = 1; + seqPlayer->fadeRemainingFrames = 0; + seqPlayer->fadeTimerUnkEu = 0; + seqPlayer->tempoAcc = 0; + seqPlayer->tempo = 120 * TEMPO_SCALE; // 120 BPM + seqPlayer->transposition = 0; + seqPlayer->noteAllocPolicy = 0; + seqPlayer->shortNoteVelocityTable = gDefaultShortNoteVelocityTable; + seqPlayer->shortNoteDurationTable = gDefaultShortNoteDurationTable; + seqPlayer->fadeVolume = 1.0f; + seqPlayer->fadeVolumeScale = 1.0f; + seqPlayer->fadeVelocity = 0.0f; + seqPlayer->volume = 0.0f; + seqPlayer->muteVolumeScale = 0.5f; } + +void init_sequence_players(void) { + // Initialization function, called from audio_init + s32 i, j; + + for (i = 0; i < ARRAY_COUNT(gSequenceChannels); i++) { + gSequenceChannels[i].seqPlayer = NULL; + gSequenceChannels[i].enabled = FALSE; + // @bug Size of wrong array. Zeroes out second half of gSequenceChannels[0], + // all of gSequenceChannels[1..31], and part of gSequenceLayers[0]. + // However, this is only called at startup, so it's harmless. +#ifdef AVOID_UB +#define LAYERS_SIZE LAYERS_MAX #else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800C11B0.s") +#define LAYERS_SIZE ARRAY_COUNT(gSequenceLayers) #endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800BD318(? *); // extern -void func_800BF084(s32, ? *, u32, u8 *); // extern -void func_800C11B0(s32); // extern -extern u32 D_803B1510; -extern ? D_803B15A4; -extern ? D_803B1A30; -extern u8 D_803B3EF0; -extern ? D_803B5EF0; - -void func_800C125C(void) { - ? *temp_a1; - ? *temp_v1; - ? *temp_v1_2; - s32 temp_s3; - s32 temp_v0; - s32 temp_v0_3; - u32 temp_a2; - u8 *temp_v0_2; - u8 temp_t4; - u8 temp_t6; - u8 temp_t8; - ? *phi_a1; - ? *phi_v1; - s32 phi_v0; - ? *phi_a2; - u8 *phi_v0_2; - ? *phi_v1_2; - s32 phi_v0_3; - ? *phi_s1; - ? *phi_s5; - s32 phi_s3; - ? *phi_s4; - - phi_a1 = &D_803B1A30; - phi_a2 = &D_803B1A30; - do { - phi_a1->unk44 = 0; - phi_a1->unk0 = phi_a1->unk0 & 0xFF7F; - phi_v1 = phi_a2; - phi_v0 = 0; - phi_v0_3 = 0; -loop_2: - temp_v0 = phi_v0 + 4; - phi_v1->unk4C = 0; - phi_v1->unk50 = 0; - phi_v1->unk54 = 0; - temp_v1 = phi_v1 + 0x10; - temp_v1->unk38 = 0; - phi_v1 = temp_v1; - phi_v0 = temp_v0; - if (temp_v0 != 0x40) { - goto loop_2; + for (j = 0; j < LAYERS_SIZE; j++) { + gSequenceChannels[i].layers[j] = NULL; } - temp_a2 = phi_a2 + 0xC4; - temp_a1 = phi_a1 + 0xC4; - phi_a1 = temp_a1; - phi_a2 = temp_a2; - } while (temp_a2 < &D_803B3EF0); - func_800BF084(0x40, temp_a1, temp_a2, &D_803B3EF0); - phi_v0_2 = &D_803B3EF0; - do { - temp_v0_2 = phi_v0_2 + 0x80; - temp_v0_2->unk-34 = 0; - temp_v0_2->unk-80 = *phi_v0_2 & 0xFF7F; - phi_v0_2 = temp_v0_2; - } while (temp_v0_2 < &D_803B5EF0); - phi_s1 = &D_803B1510; - phi_s5 = &D_803B15A4; - phi_s3 = 0; - phi_s4 = &D_803B1510; - do { - phi_v1_2 = phi_s4; -loop_8: - temp_v0_3 = phi_v0_3 + 4; - phi_v1_2->unk34 = &D_803B5EF0; - phi_v1_2->unk38 = &D_803B5EF0; - phi_v1_2->unk3C = &D_803B5EF0; - temp_v1_2 = phi_v1_2 + 0x10; - temp_v1_2->unk20 = &D_803B5EF0; - phi_v1_2 = temp_v1_2; - phi_v0_3 = temp_v0_3; - if (temp_v0_3 != 0x10) { - goto loop_8; + } + + init_layer_freelist(); + + for (i = 0; i < ARRAY_COUNT(gSequenceLayers); i++) { + gSequenceLayers[i].seqChannel = NULL; + gSequenceLayers[i].enabled = FALSE; + } + + for (i = 0; i < SEQUENCE_PLAYERS; i++) { + for (j = 0; j < CHANNELS_MAX; j++) { + gSequencePlayers[i].channels[j] = &gSequenceChannelNone; } - phi_s1->unk7 = -1; - phi_s1->unk3 = 0xE0; - temp_t4 = phi_s1->unk0 & 0xFF7F; - temp_t6 = temp_t4 & 0xDF; - phi_s1->unk0 = temp_t4; - temp_t8 = temp_t6 & 0xF7; - phi_s1->unk0 = temp_t6; - phi_s1->unk0 = temp_t8; - phi_s1->unk0 = temp_t8 & 0xEF; - func_800BD318(phi_s5); - func_800C11B0(phi_s3); - temp_s3 = phi_s3 + 1; - phi_s1 += 0x148; - phi_s5 += 0x148; - phi_s3 = temp_s3; - phi_s4 += 0x148; - } while (temp_s3 != 4); + + gSequencePlayers[i].seqVariationEu[0] = -1; + gSequencePlayers[i].muteBehavior = MUTE_BEHAVIOR_STOP_SCRIPT | MUTE_BEHAVIOR_STOP_NOTES | MUTE_BEHAVIOR_SOFTEN; + gSequencePlayers[i].enabled = FALSE; + gSequencePlayers[i].muted = FALSE; + gSequencePlayers[i].bankDmaInProgress = FALSE; + gSequencePlayers[i].seqDmaInProgress = FALSE; + init_note_lists(&gSequencePlayers[i].notePool); + init_sequence_player(i); + } } -#else -GLOBAL_ASM("asm/non_matchings/audio/seqplayer/func_800C125C.s") -#endif diff --git a/src/audio/seqplayer.h b/src/audio/seqplayer.h new file mode 100644 index 000000000..558278c7b --- /dev/null +++ b/src/audio/seqplayer.h @@ -0,0 +1,41 @@ +#ifndef AUDIO_SEQPLAYER_H +#define AUDIO_SEQPLAYER_H + +#include + +#include "audio/internal.h" + +#define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80) +#define PORTAMENTO_MODE(x) ((x).mode & ~0x80) +#define PORTAMENTO_MODE_1 1 +#define PORTAMENTO_MODE_2 2 +#define PORTAMENTO_MODE_3 3 +#define PORTAMENTO_MODE_4 4 +#define PORTAMENTO_MODE_5 5 + +void sequence_channel_init(struct SequenceChannel *seqChannel); +s32 seq_channel_set_layer(struct SequenceChannel *seqChannel, s32 layerIndex); +void seq_channel_layer_disable(struct SequenceChannelLayer *seqPlayer); +void seq_channel_layer_free(struct SequenceChannel *seqChannel, s32 layerIndex); +void sequence_channel_disable(struct SequenceChannel *seqPlayer); +struct SequenceChannel *allocate_sequence_channel(void); +void sequence_player_init_channels(struct SequencePlayer *seqPlayer, u16 channelBits); +void sequence_player_disable_channels(struct SequencePlayer *seqPlayer, u16 channelBits); +void sequence_channel_enable(struct SequencePlayer *seqPlayer, u8 channelIndex, void *script); +void sequence_player_disable(struct SequencePlayer* seqPlayer); +void func_800BEF2C(struct SequencePlayer* seqPlayer); +void audio_list_push_back(struct AudioListItem *list, struct AudioListItem *item); +void *audio_list_pop_back(struct AudioListItem *list); +void init_layer_freelist(void); +u8 m64_read_u8(struct M64ScriptState *state); +s16 m64_read_s16(struct M64ScriptState *state); +u16 m64_read_compressed_u16(struct M64ScriptState *state); +void seq_channel_layer_process_script(struct SequenceChannelLayer *layer); +u8 get_instrument(struct SequenceChannel *seqChannel, u8 instId, struct Instrument **instOut, struct AdsrSettings *adsr); +void set_instrument(struct SequenceChannel *seqChannel, u8 instId); +void sequence_channel_set_volume(struct SequenceChannel *seqChannel, u8 volume); +// void process_sequences(s32 iterationsRemaining); +void init_sequence_player(u32 player); +void init_sequence_players(void); + +#endif // AUDIO_SEQPLAYER_H diff --git a/src/audio/synthesis.c b/src/audio/synthesis.c index 1fd448b9f..5a8f7da4e 100644 --- a/src/audio/synthesis.c +++ b/src/audio/synthesis.c @@ -1,12 +1,12 @@ #include #include -#include "synthesis.h" -//#include "heap.h" -//#include "data.h" -//#include "load.h" -//#include "seqplayer.h" -#include "internal.h" -//#include "external.h" +#include "audio/synthesis.h" +//#include "audio/heap.h" +//#include "audio/data.h" +#include "audio/load.h" +//#include "audio/seqplayer.h" +#include "audio/internal.h" +//#include "audio/external.h" #include "PR/abi.h" #define aSetLoadBufferPair(pkt, c, off) \ @@ -30,10 +30,7 @@ struct VolumeChange { u64 *synthesis_do_one_audio_update(s16 *aiBuf, s32 bufLen, u64 *cmd, s32 updateIndex); u64 *synthesis_process_note(struct Note *note, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s16 *aiBuf, s32 bufLen, u64 *cmd); -u64 *load_wave_samples(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamplesToLoad); -u64 *final_resample(u64 *cmd, struct NoteSynthesisState *synthesisState, s32 count, u16 pitch, u16 dmemIn, u32 flags); u64 *process_envelope(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamples, u16 inBuf, s32 headsetPanSettings, u32 flags); -u64 *note_apply_headset_pan_effects(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *note, s32 bufLen, s32 flags, s32 leftRight); u64 gGfxSPTaskOutputBuffer[0x3F00]; @@ -122,96 +119,54 @@ Acmd *synthesis_save_reverb_ring_buffer(Acmd *acmd, u16 addr, u16 destOffset, s3 return acmd; } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -Tried to use struct NoteSubEu before it is defined. -extern ? gAudioBufferParameters; -extern s32 gMaxSimultaneousNotes; -extern ? gNoteSubsEu; +void func_800B6FB4(s32 updateIndexStart, s32 noteIndex) { + s32 i; -void synthesis_load_note_subs_eu(s32 arg0, s32 arg1) { - s32 *temp_a0; - s32 temp_v0; - s32 temp_v0_2; - s32 phi_v0; - - temp_v0 = arg0 + 1; - phi_v0 = temp_v0; - if (temp_v0 < gAudioBufferParameters.unkC) { - // Error: Tried to use struct NoteSubEu before it is defined. - // At instruction: lui $a1, %hi(gNoteSubsEu) -loop_2: - temp_a0 = *arg1 + (gMaxSimultaneousNotes * phi_v0 * 0x10) + (arg1 * 0x10); - if ((*temp_a0 * 2) >= 0) { - temp_v0_2 = phi_v0 + 1; - *temp_a0 = *temp_a0 & 0xFF7F; - phi_v0 = temp_v0_2; - if (temp_v0_2 < gAudioBufferParameters.unkC) { - goto loop_2; - } + for (i = updateIndexStart + 1; i < gAudioBufferParameters.updatesPerFrame; i++) { + if (!gNoteSubsEu[gMaxSimultaneousNotes * i + noteIndex].needsInit) { + gNoteSubsEu[gMaxSimultaneousNotes * i + noteIndex].enabled = FALSE; + } else { + break; } } } -#else -GLOBAL_ASM("asm/non_matchings/audio/synthesis/synthesis_load_note_subs_eu.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c -extern s32 D_803B1508; +void synthesis_load_note_subs_eu(s32 updateIndex) { + struct NoteSubEu *src; + struct NoteSubEu *dest; + s32 i; -void func_800B7034(s32 arg0) { - s32 var_a1; - s32 var_v0; - struct NoteSub *temp_a2; - void *temp_a0; - void *temp_a0_2; - - var_v0 = 0; - var_a1 = 0; - if (gMaxSimultaneousNotes > 0) { - do { - temp_a0 = var_a1 + D_803B1508; - temp_a0_2 = temp_a0 + 0xB0; - temp_a2 = &gNoteSubsEu[(gMaxSimultaneousNotes * arg0) + var_v0]; - if (((u32) temp_a0->unkB0 >> 0x1F) != 0) { - temp_a2->unk0 = (s32) temp_a0_2->unk0; - temp_a2->unk4 = (s32) temp_a0_2->unk4; - temp_a2->unk8 = (s32) temp_a0_2->unk8; - temp_a2->sound.samples = temp_a0_2->unkC; - temp_a0_2->unk0 = (s8) ((u8) temp_a0_2->unk0 & 0xFFBF); - } else { - temp_a2->unk0 = (s8) ((u8) temp_a2->unk0 & 0xFF7F); - } - var_v0 += 1; - var_a1 += 0xC0; - } while (var_v0 < gMaxSimultaneousNotes); + for (i = 0; i < gMaxSimultaneousNotes; i++) { + src = &gNotes[i].noteSubEu; + dest = &gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + i]; + if (src->enabled) { + *dest = *src; + src->needsInit = FALSE; + } else { + dest->enabled = FALSE; + } } } -#else -GLOBAL_ASM("asm/non_matchings/audio/synthesis/func_800B7034.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c -? func_800B7034(s32); /* extern */ -Acmd *func_800B775C(s32, s16, Acmd *, s32); /* extern */ +Acmd *func_800B775C(s16 *, s16, Acmd *, s32); /* extern */ ? func_800C1138(s16); /* extern */ ? prepare_reverb_ring_buffer(s16, s32, s32); /* extern */ -Acmd *func_800B70EC(Acmd *acmd, s32 *arg1, s32 arg2, s16 arg3) { +Acmd *func_800B70EC(Acmd *acmd, s32 *writtenCmds, s16 *aiBuf, s32 bufLen) { Acmd *temp_v0; Acmd *var_fp; + s16 *var_s7; s16 temp_s0; s16 temp_v1; s16 temp_v1_2; - s16 var_s3; s16 var_s4; s16 var_s4_2; - s16 var_s6; s32 temp_lo; s32 var_s1; - s32 var_s7; + s32 var_s3; + s32 var_s6; s8 temp_v0_2; struct SynthesisReverb *var_s0; struct SynthesisReverb *var_s0_2; @@ -219,16 +174,16 @@ Acmd *func_800B70EC(Acmd *acmd, s32 *arg1, s32 arg2, s16 arg3) { u8 temp_v0_3; var_s4 = gAudioBufferParameters.updatesPerFrame; - var_s6 = arg3; + var_s6 = bufLen; if (var_s4 > 0) { do { temp_s0 = var_s4 - 1; func_800C1138(temp_s0); - func_800B7034(gAudioBufferParameters.updatesPerFrame - var_s4); + synthesis_load_note_subs_eu(gAudioBufferParameters.updatesPerFrame - var_s4); var_s4 = temp_s0; } while (temp_s0 > 0); } - var_s7 = arg2; + var_s7 = aiBuf; acmd->words.w0 = 0x07000000; acmd->words.w1 = 0; var_s4_2 = gAudioBufferParameters.updatesPerFrame; @@ -242,13 +197,13 @@ Acmd *func_800B70EC(Acmd *acmd, s32 *arg1, s32 arg2, s16 arg3) { temp_lo = var_s6 / var_s4_2; temp_v1 = gAudioBufferParameters.samplesPerUpdateMax; if (temp_lo >= temp_v1) { - var_s3 = temp_v1; + var_s3 = (s32) temp_v1; } else { temp_v1_2 = gAudioBufferParameters.samplesPerUpdateMin; if (temp_v1_2 >= temp_lo) { - var_s3 = temp_v1_2; + var_s3 = (s32) temp_v1_2; } else { - var_s3 = gAudioBufferParameters.samplesPerUpdate; + var_s3 = (s32) gAudioBufferParameters.samplesPerUpdate; } } } @@ -256,13 +211,13 @@ Acmd *func_800B70EC(Acmd *acmd, s32 *arg1, s32 arg2, s16 arg3) { var_s0 = gSynthesisReverbs; do { if (var_s0->useReverb != 0) { - prepare_reverb_ring_buffer(var_s3, gAudioBufferParameters.updatesPerFrame - var_s4_2, var_s1); + prepare_reverb_ring_buffer((s16) var_s3, gAudioBufferParameters.updatesPerFrame - var_s4_2, var_s1); } var_s1 += 1; var_s0 += 0x108; } while (var_s1 < gNumSynthesisReverbs); } - temp_v0 = func_800B775C(var_s7, var_s3, var_fp, gAudioBufferParameters.updatesPerFrame - var_s4_2); + temp_v0 = func_800B775C(var_s7, (s16) var_s3, var_fp, gAudioBufferParameters.updatesPerFrame - var_s4_2); var_s4_2 -= 1; var_fp = temp_v0; var_s6 -= var_s3; @@ -282,14 +237,14 @@ Acmd *func_800B70EC(Acmd *acmd, s32 *arg1, s32 arg2, s16 arg3) { var_s0_2->unk-105 = (s8) (temp_t4 ^ 1); } while ((u32) var_s0_2 < (u32) &gSynthesisReverbs[temp_v0_2]); } - *arg1 = (s32) (var_fp - acmd) >> 3; + *writtenCmds = (s32) (var_fp - acmd) >> 3; return var_fp; } #else GLOBAL_ASM("asm/non_matchings/audio/synthesis/func_800B70EC.s") #endif -Acmd *func_800B7304(Acmd *acmd, s32 bufLen, s16 reverbIndex, s16 updateIndex) { +Acmd *synthesis_resample_and_mix_reverb(Acmd *acmd, s32 bufLen, s16 reverbIndex, s16 updateIndex) { struct ReverbRingBufferItem *item; s16 startPad; s16 paddedLengthA; @@ -324,7 +279,7 @@ Acmd *func_800B7304(Acmd *acmd, s32 bufLen, s16 reverbIndex, s16 updateIndex) { return acmd; } -Acmd *func_800B7630(Acmd *acmd, s16 reverbIndex, s16 updateIndex) { +Acmd *synthesis_load_reverb_samples(Acmd *acmd, s16 reverbIndex, s16 updateIndex) { struct ReverbRingBufferItem *item; item = &gSynthesisReverbs[reverbIndex].items[gSynthesisReverbs[reverbIndex].curFrame][updateIndex]; @@ -346,253 +301,165 @@ Acmd *func_800B7630(Acmd *acmd, s16 reverbIndex, s16 updateIndex) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -Tried to use struct NoteSubEu before it is defined. -Tried to use struct NoteSubEu before it is defined. -Tried to use struct NoteSubEu before it is defined. -Tried to use struct NoteSubEu before it is defined. -Tried to use struct NoteSubEu before it is defined. -void *func_800B7304(void *, s32, s16, s16); // extern -void *func_800B7630(void *, s16, s16); // extern -void *func_800B7C30(u8, s32, s32, s32, s32, void *, s32); // extern -extern u8 D_803B03C0; -extern s32 D_803B1508; -extern s32 gMaxSimultaneousNotes; -extern s32 D_803B7198; -extern ? gNoteSubsEu; -extern u8 gUseReverb; +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c +Acmd *func_800B7C30(u8, struct NoteSub *, struct NoteSynthesisState *, s16 *, s32, Acmd *, s32); /* extern */ -void *func_800B775C(s32 arg0, s32 arg1, void *arg2, s16 arg3) { +Acmd *func_800B775C(s16 *aiBuf, s32 bufLen, Acmd *acmd, s32 updateIndex) { ? sp84; struct SynthesisReverb *sp64; - s16 temp_s3; - s16 temp_s3_2; + Acmd *temp_s4; + Acmd *temp_s4_2; + Acmd *var_s4; + s16 var_s2; + s16 var_s3; s32 temp_a0; s32 temp_a0_2; s32 temp_a0_3; s32 temp_lo; s32 temp_lo_2; - s32 temp_s1; - s32 temp_s1_2; - s32 temp_s1_3; - s32 temp_s1_4; - s32 temp_s1_5; - s32 temp_t0; - s32 temp_t0_2; s32 temp_t3_2; + s32 var_v1; + s32 var_v1_2; + s8 *temp_t4; + s8 *temp_t5; + s8 *temp_t8; s8 temp_t1; + s8 var_s1; + s8 var_s1_2; + struct NoteSub *temp_t0; + struct NoteSub *temp_t0_2; + struct NoteSub *temp_v0; + struct NoteSub *temp_v0_2; + struct NoteSub *var_v0; struct SynthesisReverb *temp_t9; + u8 *var_s0; + u8 *var_s0_2; u8 temp_a1; u8 temp_t3; u8 temp_v1; u8 temp_v1_2; - void *temp_s4; - void *temp_s4_2; - void *temp_s4_3; - void *temp_v0; - void *temp_v0_2; - void *temp_v0_3; - s8 phi_s1; - s16 phi_s2; - s16 phi_s3; - s8 phi_s1_2; - s16 phi_s2_2; - s8 phi_s1_3; - s32 phi_s2_3; - s16 phi_s3_2; - void *phi_s4; - s32 phi_s1_4; - s32 phi_s2_4; - u8 *phi_s0; - void *phi_s4_2; - s32 phi_s1_5; - void *phi_s4_3; - u8 *phi_s0_2; - void *phi_s4_4; - s32 phi_s1_6; - void *phi_s4_5; - s16 phi_s2_5; - s16 phi_s2_6; - s16 phi_s2_7; - s32 phi_s2_8; - s32 phi_s2_9; - void *phi_s4_6; - s32 phi_s1_7; - s32 phi_s1_8; - void *phi_s4_7; - s32 phi_s1_9; - void *phi_s4_8; - void *phi_s4_9; - s16 phi_s2_10; temp_t1 = gNumSynthesisReverbs; - phi_s2 = 0; - phi_s2_6 = 0; - phi_s2_8 = 0; - phi_s2_4 = 0; + var_s2 = 0; if (temp_t1 == 0) { temp_a0 = gMaxSimultaneousNotes; - phi_s1 = 0; + var_s1 = 0; if (temp_a0 > 0) { - // Error: Tried to use struct NoteSubEu before it is defined. - // At instruction: lui $t6, %hi(gNoteSubsEu) + var_v0 = &gNoteSubsEu[temp_a0 * updateIndex]; do { - phi_s2_5 = phi_s2; - if ((*MIPS2C_ERROR(Read from unset register $v0) >> 0x1F) != 0) { - *(arg1 + phi_s2) = phi_s1; - phi_s2_5 = phi_s2 + 1; + temp_t4 = &sp84 + var_s2; + if (((u32) *var_v0 >> 0x1F) != 0) { + var_s2 += 1; + *temp_t4 = var_s1; } - temp_s1 = phi_s1 + 1; - phi_s1 = temp_s1; - phi_s2 = phi_s2_5; - phi_s2_4 = phi_s2_5; - } while (temp_s1 < temp_a0); + var_s1 += 1; + var_v0 += 0x10; + } while (var_s1 < temp_a0); + var_s1 = 0; } - phi_s3_2 = 0; - phi_s1_7 = 0; + var_s3 = 0; } else { - phi_s3 = 0; + var_s3 = 0; if (temp_t1 > 0) { temp_a0_2 = gMaxSimultaneousNotes; do { - phi_s1_2 = 0; - phi_s2_2 = phi_s2_6; - phi_s2_10 = phi_s2_6; + var_s1_2 = 0; if (temp_a0_2 > 0) { - // Error: Tried to use struct NoteSubEu before it is defined. - // At instruction: lui $t0, %hi(gNoteSubsEu) + var_v1 = temp_a0_2 * updateIndex; do { - temp_v0 = (MIPS2C_ERROR(Read from unset register $v1) * 0x10) + MIPS2C_ERROR(Read from unset register $t0); - phi_s2_7 = phi_s2_2; - if (((temp_v0->unk0 >> 0x1F) != 0) && (phi_s3 == (temp_v0->unk1 >> 5))) { - *(&sp84 + phi_s2_2) = phi_s1_2; - phi_s2_7 = phi_s2_2 + 1; + temp_v0 = &gNoteSubsEu[var_v1]; + if (((u32) temp_v0->unk0 >> 0x1F) != 0) { + temp_t5 = &sp84 + var_s2; + if (var_s3 == ((u8) temp_v0->unk1 >> 5)) { + var_s2 += 1; + *temp_t5 = var_s1_2; + } } - temp_s1_2 = phi_s1_2 + 1; - phi_s1_2 = temp_s1_2; - phi_s2_2 = phi_s2_7; - phi_s2_10 = phi_s2_7; - } while (temp_s1_2 < temp_a0_2); + var_s1_2 += 1; + var_v1 += 1; + } while (var_s1_2 < temp_a0_2); } - temp_s3 = phi_s3 + 1; - phi_s3 = temp_s3; - phi_s2_6 = phi_s2_10; - phi_s2_8 = phi_s2_10; - } while (temp_s3 < temp_t1); + var_s3 += 1; + } while (var_s3 < temp_t1); + var_s3 = 0; } temp_a0_3 = gMaxSimultaneousNotes; - phi_s1_3 = 0; - phi_s2_3 = phi_s2_8; - phi_s2_4 = phi_s2_8; - phi_s3_2 = 0; - phi_s1_7 = 0; + var_s1 = 0; if (temp_a0_3 > 0) { - // Error: Tried to use struct NoteSubEu before it is defined. - // At instruction: lui $t0, %hi(gNoteSubsEu) + var_v1_2 = temp_a0_3 * updateIndex; do { - temp_v0_2 = (MIPS2C_ERROR(Read from unset register $v1) * 0x10) + MIPS2C_ERROR(Read from unset register $t0); - phi_s2_9 = phi_s2_3; - if (((temp_v0_2->unk0 >> 0x1F) != 0) && ((temp_v0_2->unk1 >> 5) >= temp_t1)) { - *(&sp84 + phi_s2_3) = phi_s1_3; - phi_s2_9 = phi_s2_3 + 1; + temp_v0_2 = &gNoteSubsEu[var_v1_2]; + if (((u32) temp_v0_2->unk0 >> 0x1F) != 0) { + temp_t8 = &sp84 + var_s2; + if ((s32) ((u8) temp_v0_2->unk1 >> 5) >= temp_t1) { + var_s2 += 1; + *temp_t8 = var_s1; + } } - temp_s1_3 = phi_s1_3 + 1; - phi_s1_3 = temp_s1_3; - phi_s2_3 = phi_s2_9; - phi_s2_4 = phi_s2_9; - } while (temp_s1_3 < temp_a0_3); + var_s1 += 1; + var_v1_2 += 1; + } while (var_s1 < temp_a0_3); + var_s1 = 0; } } - arg2->unk4 = 0x300; - arg2->unk0 = 0x2000540; - temp_s4_2 = arg2 + 8; - phi_s4 = temp_s4_2; - phi_s1_4 = phi_s1_7; - phi_s1_9 = phi_s1_7; - phi_s4_8 = temp_s4_2; + acmd->words.w1 = 0x00000300; + acmd->words.w0 = 0x02000540; + var_s4 = acmd + 8; if (gNumSynthesisReverbs > 0) { - // Error: Tried to use struct NoteSubEu before it is defined. - // At instruction: lui $s6, %hi(gNoteSubsEu) do { - temp_t9 = &gSynthesisReverbs[phi_s3_2]; + temp_t9 = &gSynthesisReverbs[var_s3]; sp64 = temp_t9; temp_t3 = temp_t9->useReverb; - gUseReverb = temp_t3; - phi_s1_5 = phi_s1_4; - phi_s1_8 = phi_s1_4; - phi_s4_7 = phi_s4; - if (temp_t3 != 0) { - phi_s4_7 = func_800B7304(phi_s4, arg1, phi_s3_2, arg3); + gUseReverb = (s8) temp_t3; + if ((s8) temp_t3 != 0) { + var_s4 = synthesis_resample_and_mix_reverb(var_s4, bufLen, var_s3, (s16) updateIndex); } - phi_s4_2 = phi_s4_7; - phi_s4_3 = phi_s4_7; - if (phi_s1_4 < phi_s2_4) { - phi_s0 = phi_s1_4 + &sp84; + if (var_s1 < var_s2) { + var_s0 = var_s1 + &sp84; loop_31: - temp_v1 = *phi_s0; - temp_t0 = *saved_reg_s6; - temp_lo = arg3 * gMaxSimultaneousNotes; - phi_s4_3 = phi_s4_2; - phi_s1_8 = phi_s1_5; - if (phi_s3_2 == ((temp_t0 + (temp_v1 * 0x10) + (temp_lo * 0x10))->unk1 >> 5)) { - temp_v0_3 = func_800B7C30(temp_v1, ((temp_v1 + temp_lo) * 0x10) + temp_t0, (temp_v1 * saved_reg_s7) + D_803B1508 + 0x10, arg0, arg1, phi_s4_2, arg3); - temp_s1_4 = phi_s1_5 + 1; - phi_s0 += 1; - phi_s4_2 = temp_v0_3; - phi_s1_5 = temp_s1_4; - phi_s4_3 = temp_v0_3; - phi_s1_8 = temp_s1_4; - if (temp_s1_4 < phi_s2_4) { + temp_v1 = *var_s0; + temp_t0 = gNoteSubsEu; + temp_lo = updateIndex * gMaxSimultaneousNotes; + if (var_s3 == ((u8) (&temp_t0[temp_v1])[temp_lo].unk1 >> 5)) { + var_s1 += 1; + var_s4 = func_800B7C30(temp_v1, &temp_t0[temp_v1 + temp_lo], &gNotes[temp_v1].synthesisState, aiBuf, bufLen, var_s4, updateIndex); + var_s0 += 1; + if (var_s1 < var_s2) { goto loop_31; } } } - phi_s1_4 = phi_s1_8; - phi_s4_6 = phi_s4_3; - phi_s1_9 = phi_s1_8; if (sp64->useReverb != 0) { - phi_s4_6 = func_800B7630(phi_s4_3, phi_s3_2, arg3); + var_s4 = synthesis_load_reverb_samples(var_s4, var_s3, (s16) updateIndex); } - temp_s3_2 = phi_s3_2 + 1; - phi_s3_2 = temp_s3_2; - phi_s4 = phi_s4_6; - phi_s4_8 = phi_s4_6; - } while (temp_s3_2 < gNumSynthesisReverbs); + var_s3 += 1; + } while (var_s3 < gNumSynthesisReverbs); } - // Error: Tried to use struct NoteSubEu before it is defined. - // At instruction: lui $s6, %hi(gNoteSubsEu) - phi_s4_4 = phi_s4_8; - phi_s1_6 = phi_s1_9; - phi_s4_5 = phi_s4_8; - if (MIPS2C_ERROR()) { - phi_s0_2 = phi_s1_9 + &sp84; + if (var_s1 < var_s2) { + var_s0_2 = var_s1 + &sp84; do { - temp_v1_2 = *phi_s0_2; - temp_t0_2 = *saved_reg_s6; - temp_lo_2 = arg3 * gMaxSimultaneousNotes; - temp_a1 = (temp_t0_2 + (temp_v1_2 * 0x10) + (temp_lo_2 * 0x10))->unk2; - phi_s4_9 = phi_s4_4; - if (((*(&D_803B03C0 + temp_a1) < 2) ^ 1) == 1) { - phi_s4_9 = func_800B7C30(temp_v1_2, ((temp_v1_2 + temp_lo_2) * 0x10) + temp_t0_2, (temp_v1_2 * saved_reg_s7) + D_803B1508 + 0x10, arg0, arg1, phi_s4_4, arg3); + temp_v1_2 = *var_s0_2; + temp_t0_2 = gNoteSubsEu; + temp_lo_2 = updateIndex * gMaxSimultaneousNotes; + temp_a1 = (&temp_t0_2[temp_v1_2])[temp_lo_2].bankId; + if ((((s32) gBankLoadStatus[temp_a1] < 2) ^ 1) == 1) { + var_s4 = func_800B7C30(temp_v1_2, &temp_t0_2[temp_v1_2 + temp_lo_2], &gNotes[temp_v1_2].synthesisState, aiBuf, bufLen, var_s4, updateIndex); } else { - D_803B7198 = temp_a1 + (phi_s1_6 << 8) + 0x10000000; + gAudioErrorFlags = temp_a1 + (var_s1 << 8) + 0x10000000; } - temp_s1_5 = phi_s1_6 + 1; - phi_s0_2 += 1; - phi_s4_4 = phi_s4_9; - phi_s1_6 = temp_s1_5; - phi_s4_5 = phi_s4_9; - } while (temp_s1_5 < phi_s2_4); + var_s1 += 1; + var_s0_2 += 1; + } while (var_s1 < var_s2); } - phi_s4_5->unk0 = 0x8000000; - temp_s4_3 = phi_s4_5 + 8; - temp_t3_2 = arg1 * 2; - phi_s4_5->unk4 = temp_t3_2 & 0xFFFF; - temp_s4 = temp_s4_3 + 8; - temp_s4_3->unk0 = 0xD000000; - temp_s4_3->unk4 = 0x54006C0; - temp_s4->unk0 = ((((temp_t3_2 * 2) >> 4) & 0xFF) << 0x10) | 0x15000000; - temp_s4->unk4 = arg0 + 0x80000000; + var_s4->words.w0 = 0x08000000; + temp_s4_2 = var_s4 + 8; + temp_t3_2 = bufLen * 2; + var_s4->words.w1 = temp_t3_2 & 0xFFFF; + temp_s4 = temp_s4_2 + 8; + temp_s4_2->words.w0 = 0x0D000000; + temp_s4_2->words.w1 = 0x054006C0; + temp_s4->words.w0 = ((((s32) (temp_t3_2 * 2) >> 4) & 0xFF) << 0x10) | 0x15000000; + temp_s4->words.w1 = (u32) (aiBuf + 0x80000000); return temp_s4 + 8; } #else @@ -600,17 +467,15 @@ GLOBAL_ASM("asm/non_matchings/audio/synthesis/func_800B775C.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void *func_800B85B4(void *, void *, void *, u32); // extern -s32 func_800B8644(void *, void *, s32, u16, s32, s32); // extern -s32 func_800B86A0(s32, void *, void *, s32, s32, s32, s32); // extern -s32 func_800B8A2C(s32, void *, void *, s32, s32, s32); // extern -s32 func_800BAD0C(s32, s32, s32, void *); // extern -void synthesis_load_note_subs_eu(s32, s32, s32, s32); // extern -extern s32 D_803B1508; -extern s32 gUnknownData_800F6290; +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c +Acmd *load_wave_samples(Acmd *, struct NoteSubEu *, struct NoteSynthesisState *, u32); /* extern */ +s32 final_resample(Acmd *, struct NoteSynthesisState *, s32, u16, s32, s32); /* extern */ +Acmd *func_800B86A0(s32, struct NoteSubEu *, struct NoteSynthesisState *, s32, s32, s32, s32); /* extern */ +Acmd *note_apply_headset_pan_effects(Acmd *, struct NoteSubEu *, struct NoteSynthesisState *, s32, s32, s32); /* extern */ +s32 func_800BAD0C(s32, s32, s32, u8 *); /* extern */ +extern ? gUnknownData_800F6290; -s32 func_800B7C30(s32 arg0, void *arg1, void *arg2, ? arg3, s32 arg4, void *arg5, s32 arg6) { +Acmd *func_800B7C30(s32 noteIndex, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s16 *aiBuf, s32 bufLen, Acmd *acmd, s32 updateIndex) { void *sp130; void *sp12C; ? *sp128; @@ -625,125 +490,93 @@ s32 func_800B7C30(s32 arg0, void *arg1, void *arg2, ? arg3, s32 arg4, void *arg5 s32 spD8; s32 spB0; s32 spAC; - s32 spA0; + s32 spA0; /* compiler-managed */ u16 sp9E; - void *sp8C; + struct Note *sp8C; u32 sp50; ? *temp_a2_2; - s16 temp_t1; + Acmd *temp_s2; + Acmd *temp_s2_2; + Acmd *temp_s2_3; + Acmd *temp_v0_2; + Acmd *temp_v0_3; + Acmd *temp_v0_4; + Acmd *temp_v0_5; + Acmd *temp_v0_6; + Acmd *temp_v0_8; + Acmd *var_s2; + Acmd *var_s2_2; + s16 var_t1; s32 temp_a0; s32 temp_a0_2; - s32 temp_a0_3; - s32 temp_a0_4; - s32 temp_a0_5; - s32 temp_a0_6; - s32 temp_a0_7; - s32 temp_a0_8; s32 temp_a1_2; s32 temp_a1_3; s32 temp_a2; s32 temp_a2_3; s32 temp_a2_4; - s32 temp_a2_5; - s32 temp_a2_6; - s32 temp_a3; - s32 temp_fp; - s32 temp_s1; - s32 temp_s1_2; - s32 temp_s3; - s32 temp_t2; s32 temp_t6; s32 temp_t8; s32 temp_t9_2; - s32 temp_v0_3; - s32 temp_v0_4; + s32 temp_v0_7; s32 temp_v1; + s32 var_a0; + s32 var_a0_2; + s32 var_a2; + s32 var_a3; + s32 var_fp; + s32 var_s0; + s32 var_s0_2; + s32 var_s1; + s32 var_s3; + s32 var_s4; + s32 var_s5; + s32 var_s6; + s32 var_t0; + s32 var_t2; + s32 var_t3; + s32 var_t4; + s32 var_v1; + s32 var_v1_3; u16 temp_t7; u16 temp_v0; u32 temp_s0; u32 temp_t7_3; + u32 var_t5; + u32 var_t6; + u32 var_v1_2; void *temp_a1; - void *temp_s2; - void *temp_s2_2; - void *temp_s2_3; - void *temp_s2_4; void *temp_t7_2; void *temp_t9; - void *temp_v0_2; - s32 phi_v1; - void *phi_s2; - s32 phi_a0; - u32 phi_t5; - u32 phi_t5_2; - s32 phi_fp; - s32 phi_s3; - s32 phi_t0; - s32 phi_t3; - s32 phi_t4; - s32 phi_a0_2; - void *phi_s2_2; - s32 phi_s0; - void *phi_s2_3; - s32 phi_s1; - void *phi_s2_4; - s16 phi_t1; - s32 phi_t2; - s32 phi_s4; - s32 phi_s5; - s32 phi_s6; - s32 phi_t3_2; - s32 phi_s4_2; - void *phi_s2_5; - u32 phi_t5_3; - s32 phi_a3; - s32 phi_a2; - s32 phi_t4_2; - s32 phi_ra; - s32 phi_t5_4; - void *phi_s2_6; - u32 phi_v1_2; - void *phi_s2_7; - s32 phi_a0_3; - s32 phi_v1_3; - s32 phi_s0_2; - s32 phi_s2_8; - s32 phi_s1_2; - void *phi_s2_9; - u32 phi_t6; - s32 phi_a0_4; sp128 = NULL; - sp8C = (arg0 * 0xC0) + D_803B1508; - phi_v1 = 0; - phi_v1_3 = 0; - if (((arg1->unk0 * 2) >> 0x1F) == 1) { - arg2->unk0 = 0; - arg2->unk8 = 0; - arg2->unk4 = 0; - arg2->unk10 = 0; - arg2->unk12 = 0; - arg2->unk2 = 0; - arg2->unk3 = 0; - phi_v1 = 1; + sp8C = &gNotes[noteIndex]; + var_v1 = 0; + if (((u32) (noteSubEu->unk0 * 2) >> 0x1F) == 1) { + var_v1 = 1; + synthesisState->restart = 0; + synthesisState->samplePosInt = 0; + synthesisState->samplePosFrac = 0; + synthesisState->curVolLeft = 0; + synthesisState->curVolRight = 0; + synthesisState->prevHeadsetPanRight = 0; + synthesisState->prevHeadsetPanLeft = 0; } - temp_t7 = arg1->unkA; + temp_t7 = noteSubEu->resamplingRateFixedPoint; sp112 = temp_t7; - spB0 = (arg1->unk0 & 1) + 1; - temp_v0 = (temp_t7 * arg4 * 2) + arg2->unk4; - arg2->unk4 = temp_v0; + spB0 = ((u16) noteSubEu->unk0 & 1) + 1; + temp_v0 = (temp_t7 * bufLen * 2) + synthesisState->samplePosFrac; + synthesisState->samplePosFrac = temp_v0; temp_s0 = temp_v0 >> 0x10; - temp_a0 = arg1->unk0; - phi_a0_3 = temp_a0; - phi_a0 = temp_a0; - if (temp_a0 & 0x20000) { - temp_v0_2 = func_800B85B4(arg5, arg1, arg2, temp_s0); - temp_a2 = arg2->unk8; + var_a0 = noteSubEu->unk0; + if (var_a0 & 0x20000) { + temp_v0_2 = load_wave_samples(acmd, noteSubEu, synthesisState, temp_s0); + temp_a2 = synthesisState->samplePosInt; sp9E = (temp_a2 * 2) + 0x1A0; - arg2->unk8 = temp_a2 + temp_s0; - arg5 = temp_v0_2; - phi_a0_3 = arg1->unk0; + synthesisState->samplePosInt = temp_a2 + temp_s0; + var_a0 = noteSubEu->unk0; + acmd = temp_v0_2; } else { - temp_t7_2 = *arg1->unkC; + temp_t7_2 = *noteSubEu->sound.samples; sp130 = temp_t7_2; temp_t9 = temp_t7_2->unk8; sp12C = temp_t9; @@ -753,328 +586,270 @@ s32 func_800B7C30(s32 arg0, void *arg1, void *arg2, ? arg3, s32 arg4, void *arg5 spEC = temp_t7_2->unk4; if (spB0 > 0) { sp50 = temp_v0 >> 0x10; - sp114 = phi_v1; - phi_s2 = arg5; + sp114 = var_v1; + var_s2_2 = acmd; loop_6: temp_a1 = sp130->unkC; + var_fp = 0; + var_s4 = 0; temp_a2_2 = temp_a1 + 8; - phi_fp = 0; - phi_s4 = 0; - phi_s2_9 = phi_s2; if (spB0 == 1) { - phi_t5 = sp50; + var_t5 = sp50; } else { - phi_t5 = sp50; - if ((sp50 & 1) != 0) { - phi_t5 = (sp50 & ~1) + (spAC * 2); + var_t5 = sp50; + if (sp50 & 1) { + var_t5 = (sp50 & ~1) + (spAC * 2); } } - phi_t5_2 = phi_t5; - phi_t5_4 = phi_t5; if (sp128 != temp_a2_2) { - phi_s2->unk0 = ((temp_a1->unk0 * 0x10 * temp_a1->unk4) & 0xFFFFFF) | 0xB000000; - phi_s2->unk4 = (((arg1->unk0 << 0xB) >> 0x1D) * 2) + temp_a2_2 + 0x80000000; + temp_v0_3 = var_s2_2; + var_s2_2 += 8; + temp_v0_3->words.w0 = ((temp_a1->unk0 * 0x10 * temp_a1->unk4) & 0xFFFFFF) | 0x0B000000; + temp_v0_3->words.w1 = (((u32) (noteSubEu->unk0 << 0xB) >> 0x1D) * 2) + temp_a2_2 + 0x80000000; + var_a0 = noteSubEu->unk0; sp128 = temp_a2_2; - phi_a0 = arg1->unk0; - phi_s2_9 = phi_s2 + 8; } - phi_s2_2 = phi_s2_9; - phi_s2_6 = phi_s2_9; - if (((phi_a0 << 0xB) >> 0x1D) != 0) { + if (((u32) (var_a0 << 0xB) >> 0x1D) != 0) { sp128 = &gUnknownData_800F6290; } - if (phi_t5 != 0) { + if (var_t5 != 0) { loop_15: - temp_a2_3 = arg2->unk8; - temp_a0_2 = phi_t5_2 - phi_fp; - temp_s3 = temp_a2_3 & 0xF; + temp_a2_3 = synthesisState->samplePosInt; + temp_a0 = var_t5 - var_fp; + var_s3 = temp_a2_3 & 0xF; + var_t3 = 0; + var_t4 = 0; temp_v1 = spDC - temp_a2_3; - phi_s3 = temp_s3; - phi_t3 = 0; - phi_t4 = 0; - phi_s2_3 = phi_s2_2; - phi_t5_3 = phi_t5_2; - phi_ra = temp_a0_2; - if ((temp_s3 == 0) && (arg2->unk0 == 0)) { - phi_s3 = 0x10; + if ((var_s3 == 0) && (synthesisState->restart == 0)) { + var_s3 = 0x10; } - temp_a1_2 = 0x10 - phi_s3; - phi_s5 = temp_a1_2; - phi_s5 = temp_a1_2; - if (temp_a0_2 < temp_v1) { - temp_t9_2 = ((temp_a0_2 - temp_a1_2) + 0xF) / 0x10; - temp_s1 = temp_t9_2 * 0x10; - phi_t0 = temp_t9_2; - phi_s6 = (temp_a1_2 + temp_s1) - temp_a0_2; - phi_s1 = temp_s1; + temp_a1_2 = 0x10 - var_s3; + var_s5 = temp_a1_2; + if (temp_a0 < temp_v1) { + temp_t9_2 = (s32) ((temp_a0 - temp_a1_2) + 0xF) / 16; + var_s1 = temp_t9_2 * 0x10; + var_t0 = temp_t9_2; + var_s6 = (temp_a1_2 + var_s1) - temp_a0; } else { - temp_s1_2 = temp_v1 - temp_a1_2; - phi_s6 = 0; - phi_s1_2 = temp_s1_2; - if (temp_s1_2 <= 0) { - phi_s1_2 = 0; - phi_s5 = temp_v1; + var_s1 = temp_v1 - temp_a1_2; + var_s6 = 0; + if (var_s1 <= 0) { + var_s1 = 0; + var_s5 = temp_v1; } - phi_t0 = (phi_s1_2 + 0xF) / 0x10; - phi_s1 = phi_s1_2; + var_t0 = (s32) (var_s1 + 0xF) / 16; if (sp12C->unk8 != 0) { - phi_t4 = 1; + var_t4 = 1; } else { - phi_t3 = 1; + var_t3 = 1; } } - phi_t2 = 0; - phi_t3_2 = phi_t3; - phi_t4_2 = phi_t4; - if (phi_t0 != 0) { - temp_t6 = ((temp_a2_3 - phi_s3) + 0x10) / 0x10; + var_t2 = 0; + if (var_t0 != 0) { + temp_t6 = (s32) ((temp_a2_3 - var_s3) + 0x10) / 16; if (sp130->unk1 == 0x81) { - phi_a0_2 = (temp_t6 * 9) + spEC; - phi_s0 = ((phi_t0 * 9) + 0x1F) & ~0xF; + var_s0 = ((var_t0 * 9) + 0x1F) & ~0xF; + var_a0_2 = (temp_t6 * 9) + spEC; } else { - spD8 = temp_a0_2; - sp11C = phi_t3; - sp118 = phi_t4; - spE4 = phi_t5_2; - temp_a1_3 = ((phi_t0 * 9) + 0x1F) & ~0xF; - phi_a0_2 = func_800BAD0C((temp_t6 * 9) + spEC, temp_a1_3, sp114, arg2 + 1); - phi_s0 = temp_a1_3; + spD8 = temp_a0; + sp11C = var_t3; + sp118 = var_t4; + spE4 = var_t5; + temp_a1_3 = ((var_t0 * 9) + 0x1F) & ~0xF; + var_s0 = temp_a1_3; + var_a0_2 = func_800BAD0C((temp_t6 * 9) + spEC, temp_a1_3, sp114, &synthesisState->sampleDmaIndex); } - temp_t1 = 0x540 - phi_s0; - temp_t2 = phi_a0_2 & 0xF; - phi_s2_2->unk4 = (phi_a0_2 - temp_t2) + 0x80000000; - phi_s2_2->unk0 = (((phi_s0 >> 4) & 0xFF) << 0x10) | 0x14000000 | (temp_t1 & 0xFFFF); - phi_s2_3 = phi_s2_2 + 8; - phi_t1 = temp_t1; - phi_t2 = temp_t2; - phi_t3_2 = phi_t3; - phi_t5_3 = phi_t5_2; - phi_t4_2 = phi_t4; - phi_ra = phi_t5_2 - phi_fp; + var_t1 = 0x540 - var_s0; + var_t2 = var_a0_2 & 0xF; + var_s2_2->words.w1 = (var_a0_2 - var_t2) + 0x80000000; + var_s2_2->words.w0 = (((var_s0 >> 4) & 0xFF) << 0x10) | 0x14000000 | (var_t1 & 0xFFFF); + var_s2_2 += 8; } else { - phi_s1 = 0; - phi_t1 = 0x540 - (((phi_t0 * 9) + 0x1F) & 0xFFF0); + var_s1 = 0; + var_t1 = 0x540 - (((var_t0 * 9) + 0x1F) & 0xFFF0); } - phi_t5_2 = phi_t5_3; - phi_s2_4 = phi_s2_3; - phi_t5_4 = phi_t5_3; - if (arg2->unk0 != 0) { - phi_s2_3->unk0 = 0xF000000; - phi_s2_3->unk4 = sp130->unk8 + 0x80000010; + temp_v0_4 = var_s2_2; + if (synthesisState->restart != 0) { + temp_v0_4->words.w0 = 0x0F000000; + var_s2_2 += 8; + temp_v0_4->words.w1 = sp130->unk8 + 0x80000010; sp114 = 2; - arg2->unk0 = 0; - phi_s2_4 = phi_s2_3 + 8; + synthesisState->restart = 0; } - if (phi_fp == 0) { - temp_a2_4 = phi_s1 * 2; - phi_s2_4->unk4 = (temp_a2_4 & 0xFFFF) | 0x1A00000; - phi_s2_4->unk0 = ((phi_t1 + phi_t2) & 0xFFFF) | 0x8000000; - temp_s2 = phi_s2_4 + 8; - temp_s2->unk0 = ((sp114 & 0xFF) << 0x10) | 0x1000000; - temp_s2->unk4 = arg2->unkC + 0x80000000; - spFC = phi_s3 * 2; - phi_s2_5 = temp_s2 + 8; - phi_a3 = (phi_s1 + phi_s5) - phi_s6; - phi_a2 = temp_a2_4; + if (var_fp == 0) { + var_a2 = var_s1 * 2; + var_s2_2->words.w1 = (var_a2 & 0xFFFF) | 0x01A00000; + var_s2_2->words.w0 = ((var_t1 + var_t2) & 0xFFFF) | 0x08000000; + temp_s2 = var_s2_2 + 8; + temp_s2->words.w0 = ((sp114 & 0xFF) << 0x10) | 0x01000000; + temp_s2->words.w1 = (u32) (synthesisState->synthesisBuffers + 0x80000000); + var_s2_2 = temp_s2 + 8; + spFC = var_s3 * 2; + var_a3 = (var_s1 + var_s5) - var_s6; } else { - temp_t8 = (phi_s4 + 0x1F) & ~0xF; - phi_s2_4->unk0 = ((phi_t1 + phi_t2) & 0xFFFF) | 0x8000000; - temp_a2_5 = phi_s1 * 2; - phi_s2_4->unk4 = ((temp_t8 + 0x1A0) << 0x10) | (temp_a2_5 & 0xFFFF); - temp_s2_2 = phi_s2_4 + 8; - temp_s2_2->unk0 = ((sp114 & 0xFF) << 0x10) | 0x1000000; - temp_s2_2->unk4 = arg2->unkC + 0x80000000; + temp_t8 = (var_s4 + 0x1F) & ~0xF; + var_s2_2->words.w0 = ((var_t1 + var_t2) & 0xFFFF) | 0x08000000; + var_a2 = var_s1 * 2; + var_s2_2->words.w1 = ((temp_t8 + 0x1A0) << 0x10) | (var_a2 & 0xFFFF); + temp_s2_2 = var_s2_2 + 8; + temp_s2_2->words.w0 = ((sp114 & 0xFF) << 0x10) | 0x01000000; + temp_s2_2->words.w1 = (u32) (synthesisState->synthesisBuffers + 0x80000000); temp_s2_3 = temp_s2_2 + 8; - temp_a3 = (phi_s1 + phi_s5) - phi_s6; - temp_s2_3->unk0 = ((temp_t8 + (phi_s3 * 2) + 0x1A0) & 0xFFFFFF) | 0xA000000; - temp_s2_3->unk4 = ((phi_s4 + 0x1A0) << 0x10) | ((temp_a3 * 2) & 0xFFFF); - phi_s2_5 = temp_s2_3 + 8; - phi_a3 = temp_a3; - phi_a2 = temp_a2_5; + var_a3 = (var_s1 + var_s5) - var_s6; + temp_s2_3->words.w0 = ((temp_t8 + (var_s3 * 2) + 0x1A0) & 0xFFFFFF) | 0x0A000000; + temp_s2_3->words.w1 = ((var_s4 + 0x1A0) << 0x10) | ((var_a3 * 2) & 0xFFFF); + var_s2_2 = temp_s2_3 + 8; } - temp_fp = phi_fp + phi_a3; - phi_fp = temp_fp; - phi_s2_2 = phi_s2_5; - phi_s2_6 = phi_s2_5; + var_fp += var_a3; if (sp114 != 1) { sp114 = 0; if ((sp114 ^ 2) != 0) { - if (phi_s4 != 0) { - phi_s4_2 = (phi_a3 * 2) + phi_s4; + if (var_s4 != 0) { + var_s4 += var_a3 * 2; } else { - phi_s4_2 = (phi_s3 + phi_a3) * 2; + var_s4 = (var_s3 + var_a3) * 2; } } else { - phi_s4_2 = (phi_a3 * 2) + phi_s4; + var_s4 += var_a3 * 2; } } else { - spFC = 0x20; + spFC = 0x00000020; + var_s4 = var_a2 + 0x20; sp114 = 0; - phi_s4_2 = phi_a2 + 0x20; } - phi_s4 = phi_s4_2; - if (phi_t3_2 != 0) { - phi_s2_5->unk0 = ((phi_s4_2 + 0x1A0) & 0xFFFFFF) | 0x2000000; - phi_s2_5->unk4 = (phi_t5_3 - temp_fp) * 2; - arg1->unk0 = arg1->unk0 | 0x20; - sp8C->unkB0 = sp8C->unkB0 | 0x20; - sp8C->unkB0 = sp8C->unkB0 & 0xFF7F; - spE4 = phi_t5_3; - synthesis_load_note_subs_eu(arg6, arg0, phi_a2, phi_a3); - phi_t5_4 = phi_t5_3; - phi_s2_6 = phi_s2_5 + 8; + if (var_t3 != 0) { + var_s2_2->words.w0 = ((var_s4 + 0x1A0) & 0xFFFFFF) | 0x02000000; + var_s2_2->words.w1 = (var_t5 - var_fp) * 2; + var_s2_2 += 8; + noteSubEu->unk0 = (s8) ((u8) noteSubEu->unk0 | 0x20); + sp8C->unkB0 = (u8) (sp8C->unkB0 | 0x20); + sp8C->unkB0 = (u8) (sp8C->unkB0 & 0xFF7F); + spE4 = var_t5; + func_800B6FB4(updateIndex, noteIndex); } else { - if (phi_t4_2 != 0) { - arg2->unk0 = 1; - arg2->unk8 = sp12C->unk0; + if (var_t4 != 0) { + synthesisState->restart = 1; + synthesisState->samplePosInt = sp12C->unk0; } else { - arg2->unk8 = arg2->unk8 + phi_ra; + synthesisState->samplePosInt += temp_a0; } - if (temp_fp != phi_t5_3) { + if (var_fp != var_t5) { goto loop_15; } } } - phi_s2_7 = phi_s2_6; - phi_s2_7 = phi_s2_6; if (spB0 != 1) { if (spB0 != 2) { - temp_a0_3 = arg1->unk0; - phi_t6 = (temp_a0_3 * 4) >> 0x1F; - phi_a0_4 = temp_a0_3; + var_a0 = noteSubEu->unk0; + var_t6 = (u32) (var_a0 * 4) >> 0x1F; goto block_60; } if (spAC != 0) { + temp_v0_5 = var_s2_2; if (spAC != 1) { - temp_a0_4 = arg1->unk0; - phi_v1_2 = (temp_a0_4 * 4) >> 0x1F; - phi_a0_4 = temp_a0_4; + var_a0 = noteSubEu->unk0; + var_v1_2 = (u32) (var_a0 * 4) >> 0x1F; } else { - phi_s2_6->unk0 = (((phi_t5_4 / 2) + 7) & 0xFFF8) | 0x11000000; - phi_s2_6->unk4 = ((spFC + 0x1A0) << 0x10) | ((spA0 + 0x20) & 0xFFFF); - temp_a0_5 = arg1->unk0; - phi_t6 = (temp_a0_5 * 4) >> 0x1F; - phi_s2_7 = phi_s2_6 + 8; - phi_a0_4 = temp_a0_5; + var_s2_2 += 8; + temp_v0_5->words.w0 = ((((s32) var_t5 / 2) + 7) & 0xFFF8) | 0x11000000; + temp_v0_5->words.w1 = ((spFC + 0x1A0) << 0x10) | ((spA0 + 0x20) & 0xFFFF); + var_a0 = noteSubEu->unk0; + var_t6 = (u32) (var_a0 * 4) >> 0x1F; goto block_60; } } else { - temp_s2_4 = phi_s2_6 + 8; - phi_s2_6->unk0 = (((phi_t5_4 / 2) + 7) & 0xFFF8) | 0x11000000; - phi_s2_6->unk4 = ((spFC + 0x1A0) << 0x10) | 0x20; - spA0 = phi_t5_4; - sp9E = 0x20; - temp_a0_6 = arg1->unk0; - temp_t7_3 = (temp_a0_6 * 4) >> 0x1F; - phi_v1_2 = temp_t7_3; - phi_s2_7 = temp_s2_4; - phi_a0_4 = temp_a0_6; + temp_v0_6 = var_s2_2; + var_s2_2 += 8; + temp_v0_6->words.w0 = ((((s32) var_t5 / 2) + 7) & 0xFFF8) | 0x11000000; + temp_v0_6->words.w1 = ((spFC + 0x1A0) << 0x10) | 0x20; + spA0 = var_t5; + sp9E = 0x0020; + var_a0 = noteSubEu->unk0; + temp_t7_3 = (u32) (var_a0 * 4) >> 0x1F; + var_v1_2 = temp_t7_3; if (temp_t7_3 != 0) { - temp_s2_4->unk4 = phi_t5_4 + 0x10; - temp_s2_4->unk0 = ((phi_t5_4 + 0x20) & 0xFFFFFF) | 0x2000000; - temp_a0_7 = arg1->unk0; - phi_v1_2 = (temp_a0_7 * 4) >> 0x1F; - phi_s2_7 = temp_s2_4 + 8; - phi_a0_4 = temp_a0_7; + var_s2_2->words.w1 = var_t5 + 0x10; + var_s2_2->words.w0 = ((var_t5 + 0x20) & 0xFFFFFF) | 0x02000000; + var_a0 = noteSubEu->unk0; + var_s2_2 += 8; + var_v1_2 = (u32) (var_a0 * 4) >> 0x1F; } } } else { sp9E = spFC + 0x1A0; - temp_a0_8 = arg1->unk0; - phi_t6 = (temp_a0_8 * 4) >> 0x1F; - phi_a0_4 = temp_a0_8; + var_a0 = noteSubEu->unk0; + var_t6 = (u32) (var_a0 * 4) >> 0x1F; block_60: - phi_v1_2 = phi_t6; + var_v1_2 = var_t6; } - phi_s2 = phi_s2_7; - phi_a0_3 = phi_a0_4; - phi_a0 = phi_a0_4; - if (phi_v1_2 != 0) { + if (var_v1_2 != 0) { } else { - temp_v0_3 = spAC + 1; - spAC = temp_v0_3; - if (temp_v0_3 != spB0) { + temp_v0_7 = spAC + 1; + spAC = temp_v0_7; + if (temp_v0_7 != spB0) { goto loop_6; } } - arg5 = phi_s2_7; + acmd = var_s2_2; } } - if (((phi_a0_3 * 2) >> 0x1F) == 1) { - arg1->unk0 = arg1->unk0 & 0xFFBF; - phi_v1_3 = 1; + var_v1_3 = 0; + if (((u32) (var_a0 * 2) >> 0x1F) == 1) { + var_v1_3 = 1; + noteSubEu->unk0 = (s8) ((u8) noteSubEu->unk0 & 0xFFBF); } - temp_a2_6 = arg4 * 2; - sp114 = phi_v1_3; - if ((arg1->unk3 != 0) || (arg2->unk2 != 0)) { - phi_s0_2 = 1; - } else if ((arg1->unk4 != 0) || (phi_s0_2 = 0, (arg2->unk3 != 0))) { - phi_s0_2 = 2; + temp_a2_4 = bufLen * 2; + sp114 = var_v1_3; + temp_a0_2 = final_resample(acmd, synthesisState, temp_a2_4, sp112, (s32) sp9E, var_v1_3); + if ((noteSubEu->headsetPanRight != 0) || (synthesisState->prevHeadsetPanRight != 0)) { + var_s0_2 = 1; + } else if ((noteSubEu->headsetPanLeft != 0) || (var_s0_2 = 0, (synthesisState->prevHeadsetPanLeft != 0))) { + var_s0_2 = 2; } - temp_v0_4 = func_800B86A0(func_800B8644(arg5, arg2, temp_a2_6, sp112, sp9E, phi_v1_3), arg1, arg2, arg4, 0, phi_s0_2, sp114); - phi_s2_8 = temp_v0_4; - if ((arg1->unk0 & 1) != 0) { - phi_s2_8 = func_800B8A2C(temp_v0_4, arg1, arg2, temp_a2_6, sp114, phi_s0_2); + temp_v0_8 = func_800B86A0(temp_a0_2, noteSubEu, synthesisState, bufLen, 0, var_s0_2, sp114); + var_s2 = temp_v0_8; + if ((u8) noteSubEu->unk0 & 1) { + var_s2 = note_apply_headset_pan_effects(temp_v0_8, noteSubEu, synthesisState, temp_a2_4, sp114, var_s0_2); } - return phi_s2_8; + return var_s2; } #else GLOBAL_ASM("asm/non_matchings/audio/synthesis/func_800B7C30.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void *func_800B85B4(void *arg0, void *arg1, void *arg2, s32 arg3) { - s32 temp_t0; - s32 temp_t3; - s32 temp_v1; - void *temp_a0; - void *phi_a0; +Acmd *load_wave_samples(Acmd *acmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamplesToLoad) { + s32 a3; + s32 repeats; + aLoadBuffer(acmd++, VIRTUAL_TO_PHYSICAL2(noteSubEu->sound.samples), 0x1A0, 128); - arg0->unk0 = 0x140801A0; - arg0->unk4 = arg1->unkC + 0x80000000; - temp_a0 = arg0 + 8; - temp_t0 = arg2->unk8 & 0x3F; - temp_v1 = 0x40 - temp_t0; - arg2->unk8 = temp_t0; - phi_a0 = temp_a0; - if (temp_v1 < arg3) { - temp_t3 = ((arg3 - temp_v1) + 0x3F) / 0x40; - if (temp_t3 != 0) { - temp_a0->unk0 = ((temp_t3 & 0xFF) << 0x10) | 0x10000000 | 0x1A0; - temp_a0->unk4 = 0x2200080; - phi_a0 = temp_a0 + 8; + synthesisState->samplePosInt &= 0x3f; + a3 = 64 - synthesisState->samplePosInt; + if (a3 < nSamplesToLoad) { + repeats = (nSamplesToLoad - a3 + 63) / 64; + if (repeats != 0) { + aDMEMMove2(acmd++, repeats, 0x1A0, 0x1A0 + 128, 128); } } - return phi_a0; + return acmd; +} + +Acmd *final_resample(Acmd *acmd, struct NoteSynthesisState *synthesisState, s32 count, u16 pitch, u16 dmemIn, u32 flags) { + aSetBuffer(acmd++, /*flags*/ 0, dmemIn, /*dmemout*/ 0, count); + aResample(acmd++, flags, pitch, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->finalResampleState)); + return acmd; } -#else -GLOBAL_ASM("asm/non_matchings/audio/synthesis/func_800B85B4.s") -#endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void *func_800B8644(void *arg0, void *arg1, s32 arg2, s32 arg3, u16 arg4, s32 arg5) { - void *temp_t0; - - arg0->unk0 = arg4 | 0x8000000; - arg0->unk4 = arg2 & 0xFFFF; - temp_t0 = arg0 + 8; - temp_t0->unk0 = ((arg5 & 0xFF) << 0x10) | 0x5000000 | (arg3 & 0xFFFF); - temp_t0->unk4 = arg1->unkC + 0x80000020; - return temp_t0 + 8; -} -#else -GLOBAL_ASM("asm/non_matchings/audio/synthesis/func_800B8644.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B86A0(void *arg0, void *arg1, void *arg2, s32 arg3, u16 arg4, s32 arg5) { +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c +Acmd *func_800B86A0(Acmd *acmd, struct NoteSubEu *note, struct NoteSynthesisState *synthesisState, s32 nSamples, u16 inBuf, s32 headsetPanSettings, u32 flags) { s32 sp8; s32 sp4; s32 sp0; + Acmd *temp_a0; + Acmd *temp_a0_2; + Acmd *temp_a0_3; + Acmd *var_a0; s32 temp_a2; s32 temp_a2_2; s32 temp_a2_3; @@ -1082,197 +857,131 @@ s32 func_800B86A0(void *arg0, void *arg1, void *arg2, s32 arg3, u16 arg4, s32 ar s32 temp_t5; u16 temp_v0; u16 temp_v1; - void *temp_a0; - void *temp_a0_2; - void *temp_a0_3; - void *temp_a0_4; - void *temp_a0_5; - void *phi_a0; - temp_v0 = arg2->unk10; - temp_t5 = arg3 >> 3; - temp_v1 = arg2->unk12; - sp8 = (((arg1->unk6 * 0x10) & 0xFFFF) - temp_v0) / temp_t5; - sp0 = (((arg1->unk8 * 0x10) & 0xFFFF) - temp_v1) / temp_t5; - sp4 = temp_v1; - arg2->unk10 = (temp_v0 + (spA * temp_t5)) & 0xFFFF; - arg2->unk12 = (temp_v1 + (sp2 * temp_t5)) & 0xFFFF; - if ((arg1->unk0 & 1) != 0) { - arg0->unk4 = 0x180; - arg0->unk0 = 0x2000200; - temp_a0 = arg0 + 8; - temp_a0->unk0 = (arg1->unk5 << 0x10) | 0x12000000 | ((temp_v0 & 0xFF) << 8) | (temp_v1 & 0xFF); - temp_a0->unk4 = (spA << 0x10) | (sp2 & 0xFFFF); + temp_v0 = (u16) synthesisState->curVolLeft; + temp_t5 = nSamples >> 3; + temp_v1 = (u16) synthesisState->curVolRight; + sp8 = (s32) (((note->targetVolLeft * 0x10) & 0xFFFF) - temp_v0) / temp_t5; + sp0 = (s32) (((note->targetVolRight * 0x10) & 0xFFFF) - temp_v1) / temp_t5; + sp4 = (s32) temp_v1; + synthesisState->curVolLeft = (temp_v0 + (unkspA * temp_t5)) & 0xFFFF; + synthesisState->curVolRight = (temp_v1 + (unksp2 * temp_t5)) & 0xFFFF; + if (note->unk0 & 1) { + acmd->words.w1 = 0x00000180; + acmd->words.w0 = 0x02000200; + temp_a0 = acmd + 8; + temp_a0->words.w0 = (note->reverbVol << 0x10) | 0x12000000 | ((temp_v0 & 0xFF) << 8) | (temp_v1 & 0xFF); + temp_a0->words.w1 = (unkspA << 0x10) | (unksp2 & 0xFFFF); temp_a0_2 = temp_a0 + 8; - temp_a0_2->unk0 = 0x16000000; - temp_a0_2->unk4 = (temp_v0 << 0x10) | (temp_v1 & 0xFFFF); - temp_a0_3 = temp_a0_2 + 8; - phi_a0 = temp_a0_3; - if (arg5 != 1) { - if (arg5 != 2) { - temp_a2 = arg1->unk0; - temp_a0_3->unk0 = (((arg4 >> 4) & 0xFF) << 0x10) | 0x13000000 | ((arg3 & 0xFF) << 8) | ((((temp_a2 * 0x10) >> 0x1F) & 1) * 2) | (((temp_a2 << 5) >> 0x1F) & 1); - temp_a0_3->unk4 = 0x546C849C; + temp_a0_2->words.w0 = 0x16000000; + temp_a0_2->words.w1 = (temp_v0 << 0x10) | (temp_v1 & 0xFFFF); + var_a0 = temp_a0_2 + 8; + if (headsetPanSettings != 1) { + if (headsetPanSettings != 2) { + temp_a2 = (s32) note->unk0; + var_a0->words.w0 = ((((s32) inBuf >> 4) & 0xFF) << 0x10) | 0x13000000 | ((nSamples & 0xFF) << 8) | ((((u32) (temp_a2 * 0x10) >> 0x1F) & 1) * 2) | (((u32) (temp_a2 << 5) >> 0x1F) & 1); + var_a0->words.w1 = 0x546C849C; } else { - temp_a2_2 = arg1->unk0; - temp_a0_3->unk0 = (((arg4 >> 4) & 0xFF) << 0x10) | 0x13000000 | ((arg3 & 0xFF) << 8) | ((((temp_a2_2 * 0x10) >> 0x1F) & 1) * 2) | (((temp_a2_2 << 5) >> 0x1F) & 1); - temp_a0_3->unk4 = 0x5420849C; + temp_a2_2 = (s32) note->unk0; + var_a0->words.w0 = ((((s32) inBuf >> 4) & 0xFF) << 0x10) | 0x13000000 | ((nSamples & 0xFF) << 8) | ((((u32) (temp_a2_2 * 0x10) >> 0x1F) & 1) * 2) | (((u32) (temp_a2_2 << 5) >> 0x1F) & 1); + var_a0->words.w1 = 0x5420849C; } } else { - temp_a2_3 = arg1->unk0; - temp_a0_3->unk0 = (((arg4 >> 4) & 0xFF) << 0x10) | 0x13000000 | ((arg3 & 0xFF) << 8) | ((((temp_a2_3 * 0x10) >> 0x1F) & 1) * 2) | (((temp_a2_3 << 5) >> 0x1F) & 1); - temp_a0_3->unk4 = 0x206C849C; + temp_a2_3 = (s32) note->unk0; + var_a0->words.w0 = ((((s32) inBuf >> 4) & 0xFF) << 0x10) | 0x13000000 | ((nSamples & 0xFF) << 8) | ((((u32) (temp_a2_3 * 0x10) >> 0x1F) & 1) * 2) | (((u32) (temp_a2_3 << 5) >> 0x1F) & 1); + var_a0->words.w1 = 0x206C849C; } } else { - temp_a0_4 = arg0 + 8; - arg0->unk0 = (arg1->unk5 << 0x10) | 0x12000000 | ((temp_v0 & 0xFF) << 8) | (temp_v1 & 0xFF); - arg0->unk4 = (spA << 0x10) | (sp2 & 0xFFFF); - temp_a0_4->unk0 = 0x16000000; - temp_a0_4->unk4 = (temp_v0 << 0x10) | (temp_v1 & 0xFFFF); - temp_a2_4 = arg1->unk0; - temp_a0_5 = temp_a0_4 + 8; - temp_a0_5->unk0 = (((arg4 >> 4) & 0xFF) << 0x10) | 0x13000000 | ((arg3 & 0xFF) << 8) | ((((temp_a2_4 * 0x10) >> 0x1F) & 1) * 2) | (((temp_a2_4 << 5) >> 0x1F) & 1); - temp_a0_5->unk4 = 0x546C849C; - phi_a0 = temp_a0_5; + temp_a0_3 = acmd + 8; + acmd->words.w0 = (note->reverbVol << 0x10) | 0x12000000 | ((temp_v0 & 0xFF) << 8) | (temp_v1 & 0xFF); + acmd->words.w1 = (unkspA << 0x10) | (unksp2 & 0xFFFF); + temp_a0_3->words.w0 = 0x16000000; + temp_a0_3->words.w1 = (temp_v0 << 0x10) | (temp_v1 & 0xFFFF); + temp_a2_4 = (s32) note->unk0; + var_a0 = temp_a0_3 + 8; + var_a0->words.w0 = ((((s32) inBuf >> 4) & 0xFF) << 0x10) | 0x13000000 | ((nSamples & 0xFF) << 8) | ((((u32) (temp_a2_4 * 0x10) >> 0x1F) & 1) * 2) | (((u32) (temp_a2_4 << 5) >> 0x1F) & 1); + var_a0->words.w1 = 0x546C849C; } - return phi_a0 + 8; + return var_a0 + 8; } #else GLOBAL_ASM("asm/non_matchings/audio/synthesis/func_800B86A0.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void *func_800B8A2C(void *arg0, void *arg1, void *arg2, s32 arg3, s32 arg4, s32 arg5) { - s32 temp_t0; - s32 temp_t3; - s32 temp_t3_2; - s32 temp_v0_3; - s32 temp_v0_4; - u8 temp_a3; - u8 temp_a3_2; - u8 temp_v0; - u8 temp_v0_2; - void *temp_a0; - void *temp_a0_10; - void *temp_a0_2; - void *temp_a0_3; - void *temp_a0_4; - void *temp_a0_5; - void *temp_a0_6; - void *temp_a0_7; - void *temp_a0_8; - void *temp_a0_9; - s32 phi_v0; - s32 phi_a3; - s32 phi_t3; - s32 phi_t2; - void *phi_a0; - s32 phi_v0_2; - s32 phi_a1; - void *phi_a0_2; - void *phi_a0_3; - s32 phi_t1; +Acmd *note_apply_headset_pan_effects(Acmd *acmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *note, s32 bufLen, s32 flags, s32 leftRight) { + u16 dest; + u16 pitch; + u8 prevPanShift; + u8 panShift; + UNUSED u8 unkDebug; - if (arg5 != 1) { - phi_t1 = 0x6C0; - if (arg5 != 2) { - return arg0; - } - temp_a3 = arg1->unk4; - temp_v0 = arg2->unk3; - arg2->unk2 = 0; - arg2->unk3 = temp_a3; - phi_v0 = temp_v0; - phi_a3 = temp_a3; - goto block_6; + switch (leftRight) { + case 1: + dest = 0x540; + panShift = noteSubEu->headsetPanRight; + note->prevHeadsetPanLeft = 0; + prevPanShift = note->prevHeadsetPanRight; + note->prevHeadsetPanRight = panShift; + break; + case 2: + dest = 0x6C0; + panShift = noteSubEu->headsetPanLeft; + note->prevHeadsetPanRight = 0; + + prevPanShift = note->prevHeadsetPanLeft; + note->prevHeadsetPanLeft = panShift; + break; + default: + return acmd; } - temp_a3_2 = arg1->unk3; - temp_v0_2 = arg2->unk2; - arg2->unk3 = 0; - arg2->unk2 = temp_a3_2; - phi_v0 = temp_v0_2; - phi_a3 = temp_a3_2; - phi_t1 = 0x540; -block_6: - phi_a1 = phi_a3; - if (arg4 != 1) { - if (phi_v0 == 0) { - temp_a0 = arg0 + 8; - arg0->unk4 = 8; - arg0->unk0 = 0xA000200; - temp_a0_2 = temp_a0 + 8; - temp_a0->unk0 = 0x2000008; - temp_a0->unk4 = 8; - temp_a0_3 = temp_a0_2 + 8; - temp_a0_2->unk4 = 0x100010; - temp_a0_2->unk0 = 0xA000200; - temp_a0_3->unk0 = 0x15020000; - temp_t3 = (arg3 + phi_a3) - phi_v0; - temp_a0_3->unk4 = arg2->unkC + 0x80000040; - temp_a0_4 = temp_a0_3 + 8; - temp_a0_5 = temp_a0_4 + 8; - temp_v0_3 = temp_t3 & 0xFFFF; - temp_a0_4->unk4 = temp_v0_3; - temp_a0_4->unk0 = 0x8000208; - temp_a0_5->unk0 = (((arg3 << 0xF) / (temp_t3 + 8)) & 0xFFFF & 0xFFFF) | 0x5000000; - temp_a0_5->unk4 = arg2->unkC + 0x80000040; - phi_a0 = temp_a0_5 + 8; - phi_v0_2 = temp_v0_3; + + if (flags != 1) { // A_INIT? + // Slightly adjust the sample rate in order to fit a change in pan shift + if (prevPanShift == 0) { + // Kind of a hack that moves the first samples into the resample state + aDMEMMove(acmd++, 0x0200, 0x0000, 8); + aClearBuffer(acmd++, 8, 8); // Set pitch accumulator to 0 in the resample state + aDMEMMove(acmd++, 0x0200, 0x0000 + 0x10, + 0x10); // No idea, result seems to be overwritten later + + aSaveBuffer(acmd++, 0x0000, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panResampleState), sizeof(note->synthesisBuffers->panResampleState)); + + pitch = (bufLen << 0xf) / (bufLen + panShift - prevPanShift + 8); + if (pitch) {} + aSetBuffer(acmd++, 0, 0x0200 + 8, 0x0000, panShift + bufLen - prevPanShift); + aResample(acmd++, 0, pitch, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panResampleState)); } else { - if (phi_a3 == 0) { - phi_t3 = (arg3 + phi_a3) - phi_v0; - phi_t2 = ((arg3 << 0xF) / ((arg3 - phi_v0) - 4)) & 0xFFFF; + if (panShift == 0) { + pitch = (bufLen << 0xf) / (bufLen - prevPanShift - 4); } else { - temp_t3_2 = (arg3 + phi_a3) - phi_v0; - phi_t3 = temp_t3_2; - phi_t2 = ((arg3 << 0xF) / temp_t3_2) & 0xFFFF; + pitch = (bufLen << 0xf) / (bufLen + panShift - prevPanShift); } - temp_a0_6 = arg0 + 8; - temp_v0_4 = phi_t3 & 0xFFFF; - arg0->unk4 = temp_v0_4; - arg0->unk0 = 0x8000200; - temp_a0_6->unk0 = (phi_t2 & 0xFFFF) | 0x5000000; - temp_a0_6->unk4 = arg2->unkC + 0x80000040; - phi_a0 = temp_a0_6 + 8; - phi_v0_2 = temp_v0_4; + + if (1) {} + + aSetBuffer(acmd++, 0, 0x0200, 0x0000, bufLen + panShift - prevPanShift); + aResample(acmd++, 0, pitch, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panResampleState)); } - phi_a1 = phi_a3; - phi_a0_2 = phi_a0; - if (phi_v0 != 0) { - phi_a0->unk0 = (((phi_v0 >> 4) & 0xFF) << 0x10) | 0x14000000 | 0x200; - phi_a0->unk4 = arg2->unkC + 0x80000060; - temp_a0_7 = phi_a0 + 8; - temp_a0_7->unk0 = 0xA000000; - temp_a0_7->unk4 = ((phi_v0 + 0x200) << 0x10) | phi_v0_2; - phi_a0_2 = temp_a0_7; + + if (prevPanShift != 0) { + aLoadBuffer(acmd++, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panSamplesBuffer), 0x0200, prevPanShift); + aDMEMMove(acmd++, 0x0000, 0x0200 + prevPanShift, panShift + bufLen - prevPanShift); } else { - phi_a0->unk4 = phi_v0_2 | 0x2000000; - phi_a0->unk0 = 0xA000000; + aDMEMMove(acmd++, 0x0000, 0x0200, panShift + bufLen - prevPanShift); } } else { - temp_a0_8 = arg0 + 8; - temp_t0 = arg3 & 0xFFFF; - arg0->unk4 = temp_t0; - arg0->unk0 = 0xA000200; - temp_a0_8->unk0 = 0xA000000; - temp_a0_9 = temp_a0_8 + 8; - temp_a0_8->unk4 = ((phi_a3 + 0x200) << 0x10) | temp_t0; - temp_a0_9->unk0 = 0x2000200; - temp_a0_9->unk4 = phi_a3; - phi_a0_2 = temp_a0_9; + // Just shift right + aDMEMMove(acmd++, 0x0200, 0x0000, bufLen); + aDMEMMove(acmd++, 0x0000, 0x0200 + panShift, bufLen); + aClearBuffer(acmd++, 0x0200, panShift); } - temp_a0_10 = phi_a0_2 + 8; - phi_a0_3 = temp_a0_10; - if (phi_a3 != 0) { - temp_a0_10->unk0 = (((phi_a1 >> 4) & 0xFF) << 0x10) | 0x15000000 | ((arg3 + 0x200) & 0xFFFF); - temp_a0_10->unk4 = arg2->unkC + 0x80000060; - phi_a0_3 = temp_a0_10 + 8; + + if (panShift) { + // Save excessive samples for next iteration + aSaveBuffer(acmd++, 0x0200 + bufLen, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panSamplesBuffer), panShift); } - phi_a0_3->unk0 = (((((arg3 + 0x1F) & 0xFFE0) >> 4) & 0xFF) << 0x10) | 0xC000000 | 0x7FFF; - phi_a0_3->unk4 = (phi_t1 & 0xFFFF) | 0x2000000; - return phi_a0_3 + 8; + + aMix(acmd++, /*gain*/ 0x7FFF, /*in*/ 0x0200, /*out*/ dest, ALIGN(bufLen, 5)); + + return acmd; } -#else -GLOBAL_ASM("asm/non_matchings/audio/synthesis/func_800B8A2C.s") -#endif diff --git a/src/audio/synthesis.h b/src/audio/synthesis.h index db931ae9b..ff3ac6c2c 100644 --- a/src/audio/synthesis.h +++ b/src/audio/synthesis.h @@ -1,7 +1,7 @@ #ifndef AUDIO_SYNTHESIS_H #define AUDIO_SYNTHESIS_H -//#include "internal.h" +#include "audio/internal.h" #include "PR/abi.h" #define DEFAULT_LEN_1CH 0x180 @@ -81,11 +81,17 @@ struct SynthesisReverb { #define ALIGN(val, amnt) (((val) + (1 << amnt) - 1) & ~((1 << amnt) - 1)) +void prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex, s32 reverbIndex); u64 *synthesis_execute(u64 *cmdBuf, s32 *writtenCmds, s16 *aiBuf, s32 bufLen); Acmd *synthesis_load_reverb_ring_buffer(Acmd*, u16, u16, s32, s32); Acmd *synthesis_save_reverb_ring_buffer(Acmd*, u16, u16, s32, s32); -Acmd *func_800B7304(Acmd*, s32, s16, s16); -Acmd *func_800B7630(Acmd*, s16, s16); +void func_800B6FB4(s32 updateIndexStart, s32 noteIndex); +void synthesis_load_note_subs_eu(s32 updateIndex); +Acmd *synthesis_resample_and_mix_reverb(Acmd*, s32, s16, s16); +Acmd *synthesis_load_reverb_samples(Acmd*, s16, s16); +Acmd *load_wave_samples(Acmd *acmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamplesToLoad); +Acmd *final_resample(Acmd *acmd, struct NoteSynthesisState *synthesisState, s32 count, u16 pitch, u16 dmemIn, u32 flags); +Acmd *note_apply_headset_pan_effects(Acmd *acmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *note, s32 bufLen, s32 flags, s32 leftRight); extern struct AudioBufferParametersEU gAudioBufferParameters; extern s32 gMaxSimultaneousNotes; @@ -93,9 +99,15 @@ extern s32 gMaxSimultaneousNotes; extern struct SynthesisReverb gSynthesisReverbs[4]; extern s8 gNumSynthesisReverbs; extern struct NoteSubEu *gNoteSubsEu; -extern f32 gLeftVolRampings; -//extern f32 gRightVolRampings[3][1024]; -//extern f32 *gCurrentLeftVolRamping; // Points to any of the three left buffers above -//extern f32 *gCurrentRightVolRamping; // Points to any of the three right buffers above +/* +SO +gLeftVolRampings is almost certainly gAudioSessionPool (D_803AFBC8) in disguise, but since +synthesis' ro/data has already been broken out it'll be very hard to fix that. + +extern f32 gLeftVolRampings[3][1024]; +extern f32 gRightVolRampings[3][1024]; +extern f32 *gCurrentLeftVolRamping; // Points to any of the three left buffers above +extern f32 *gCurrentRightVolRamping; // Points to any of the three right buffers above +*/ #endif // AUDIO_SYNTHESIS_H