From 6119f222dec04a9117ea26f6be988acef111c722 Mon Sep 17 00:00:00 2001 From: Fazana <52551480+FazanaJ@users.noreply.github.com> Date: Sat, 21 May 2022 20:44:35 +0100 Subject: [PATCH] identify sequence ID's, too --- .../unknown_032760/obj_loop_door.s | 2 +- .../unknown_032760/obj_loop_silvercoin.s | 2 +- .../unknown_032760/obj_loop_trophycab.s | 2 +- .../unknown_032760/obj_loop_ttdoor.s | 2 +- include/sequence_ids.h | 75 +++++++++++++++++++ include/sound_ids.h | 1 - include/structs.h | 1 - src/audio.c | 22 +++--- src/audio.h | 6 +- src/object_functions.c | 7 +- src/object_functions.h | 1 - 11 files changed, 98 insertions(+), 23 deletions(-) create mode 100644 include/sequence_ids.h diff --git a/asm/non_matchings/unknown_032760/obj_loop_door.s b/asm/non_matchings/unknown_032760/obj_loop_door.s index 4a99eee0..bf218492 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_door.s +++ b/asm/non_matchings/unknown_032760/obj_loop_door.s @@ -109,7 +109,7 @@ glabel obj_loop_door /* 03C710 8003BB10 AD0F0008 */ sw $t7, 8($t0) /* 03C714 8003BB14 0C002050 */ jal func_80008140 /* 03C718 8003BB18 00000000 */ nop -/* 03C71C 8003BB1C 0C0006F0 */ jal play_sound +/* 03C71C 8003BB1C 0C0006F0 */ jal play_sequence /* 03C720 8003BB20 24040011 */ li $a0, 17 /* 03C724 8003BB24 8FA80044 */ lw $t0, 0x44($sp) /* 03C728 8003BB28 00000000 */ nop diff --git a/asm/non_matchings/unknown_032760/obj_loop_silvercoin.s b/asm/non_matchings/unknown_032760/obj_loop_silvercoin.s index 7024ae22..ae0c3d0e 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_silvercoin.s +++ b/asm/non_matchings/unknown_032760/obj_loop_silvercoin.s @@ -64,7 +64,7 @@ glabel obj_loop_silvercoin /* 03EA04 8003DE04 2484002B */ addiu $a0, $a0, 0x2b /* 03EA08 8003DE08 309900FF */ andi $t9, $a0, 0xff /* 03EA0C 8003DE0C 03202025 */ move $a0, $t9 -/* 03EA10 8003DE10 0C0006F0 */ jal play_sound +/* 03EA10 8003DE10 0C0006F0 */ jal play_sequence /* 03EA14 8003DE14 AFA20018 */ sw $v0, 0x18($sp) /* 03EA18 8003DE18 8FA20018 */ lw $v0, 0x18($sp) /* 03EA1C 8003DE1C 8FA60020 */ lw $a2, 0x20($sp) diff --git a/asm/non_matchings/unknown_032760/obj_loop_trophycab.s b/asm/non_matchings/unknown_032760/obj_loop_trophycab.s index f0fe83d5..935f4b36 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_trophycab.s +++ b/asm/non_matchings/unknown_032760/obj_loop_trophycab.s @@ -145,7 +145,7 @@ glabel obj_loop_trophycab /* 035CB0 800350B0 ADAE0000 */ sw $t6, ($t5) /* 035CB4 800350B4 0C000326 */ jal set_music_fade_timer /* 035CB8 800350B8 2404FFF8 */ li $a0, -8 -/* 035CBC 800350BC 0C0006F0 */ jal play_sound +/* 035CBC 800350BC 0C0006F0 */ jal play_sequence /* 035CC0 800350C0 24040011 */ li $a0, 17 .L800350C4: /* 035CC4 800350C4 8FA30050 */ lw $v1, 0x50($sp) diff --git a/asm/non_matchings/unknown_032760/obj_loop_ttdoor.s b/asm/non_matchings/unknown_032760/obj_loop_ttdoor.s index a093e418..c9cd12e1 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_ttdoor.s +++ b/asm/non_matchings/unknown_032760/obj_loop_ttdoor.s @@ -86,7 +86,7 @@ glabel obj_loop_ttdoor /* 03D028 8003C428 AE0B0008 */ sw $t3, 8($s0) /* 03D02C 8003C42C 0C00030E */ jal set_sndfx_player_voice_limit /* 03D030 8003C430 24040010 */ li $a0, 16 -/* 03D034 8003C434 0C0006F0 */ jal play_sound +/* 03D034 8003C434 0C0006F0 */ jal play_sequence /* 03D038 8003C438 24040011 */ li $a0, 17 /* 03D03C 8003C43C 82040013 */ lb $a0, 0x13($s0) /* 03D040 8003C440 00000000 */ nop diff --git a/include/sequence_ids.h b/include/sequence_ids.h new file mode 100644 index 00000000..b5159d89 --- /dev/null +++ b/include/sequence_ids.h @@ -0,0 +1,75 @@ +#ifndef SEQUENCE_IDS_H +#define SEQUENCE_IDS_H + +enum SequenceID { + SEQUENCE_NONE, + SEQUENCE_NONE2, + SEQUENCE_TROPHY, + SEQUENCE_BALLOON_AWARD, + SEQUENCE_KEY_CUTSCENE, + SEQUENCE_AMBIENT, + SEQUENCE_INTRO_CUTSCENE, + SEQUENCE_TITLE_THEME, + SEQUENCE_DARKMOON_CAVERNS, + SEQUENCE_JUNGLE_FALLS, + SEQUENCE_ANCIENT_LAKE, + SEQUENCE_FROSTY_VILLAGE, + SEQUENCE_UNUSED12, + SEQUENCE_FOSSIL_CANYON, + SEQUENCE_HOT_TOP_VOLCANO, + SEQUENCE_WHALE_BAY, + SEQUENCE_WALRUS_COVE, + SEQUENCE_LOCKED, + SEQUENCE_WIZPIGSTONE, + SEQUENCE_TAJTIP, + SEQUENCE_TIMBERSISLAND, + SEQUENCE_CREDITS, + SEQUENCE_EVERFROST_PEAK, + SEQUENCE_UNUSED23, + SEQUENCE_LOBBY, + SEQUENCE_RACE_WIN, + SEQUENCE_CHARACTER_SELECT, + SEQUENCE_UNK27, + SEQUENCE_BOSS_INTRO, + SEQUENCE_TAJ_RACE, + SEQUENCE_RACE_START, + SEQUENCE_WINDMILL_PLAINS, + SEQUENCE_TAJ, + SEQUENCE_AMBIENT2, + SEQUENCE_CHALLENGE, + SEQUENCE_AMBIENT3, + SEQUENCE_TT, + SEQUENCE_CRESCENT_ISLAND, + SEQUENCE_UNUSED37, + SEQUENCE_SPACEDUST_ALLEY, + SEQUENCE_BOULDER_CANYON, + SEQUENCE_AMBIENT4, + SEQUENCE_SPACEPORT_ALPHA, + SEQUENCE_SILVER_COIN_1, + SEQUENCE_SILVER_COIN_2, + SEQUENCE_SILVER_COIN_3, + SEQUENCE_SILVER_COIN_4, + SEQUENCE_SILVER_COIN_5, + SEQUENCE_SILVER_COIN_6, + SEQUENCE_SILVER_COIN_7, + SEQUENCE_SILVER_COIN_8, + SEQUENCE_WIZPIG_THEME, + SEQUENCE_BOSS_UNLOCKED, + SEQUENCE_WIZPIG_INTRO, + SEQUENCE_KEY_COLLECT, + SEQUENCE_WIZPIG_RACE, + SEQUENCE_WIZPIG_WIN, + SEQUENCE_BOSS_RACE, + SEQUENCE_UNK57, + SEQUENCE_UNK58, + SEQUENCE_UNK59, + SEQUENCE_BOSS_WIN, + SEQUENCE_BOSS_LOSE, + SEQUENCE_HAUNTED_WOODS, + SEQUENCE_AMBIENT5, + SEQUENCE_PIRATE_LAGOON, + + NUM_SEQUENCE_IDS +}; + +#endif diff --git a/include/sound_ids.h b/include/sound_ids.h index d5addb88..6866fc58 100644 --- a/include/sound_ids.h +++ b/include/sound_ids.h @@ -553,5 +553,4 @@ enum SoundID { NUM_SOUND_IDS }; - #endif diff --git a/include/structs.h b/include/structs.h index 8a5da742..f84daf87 100644 --- a/include/structs.h +++ b/include/structs.h @@ -5,7 +5,6 @@ #include "types.h" #include "enums.h" -#include "sound_ids.h" /* Size: 0x20 bytes */ typedef struct MenuElement { diff --git a/src/audio.c b/src/audio.c index 13aa6bf7..ab245a87 100644 --- a/src/audio.c +++ b/src/audio.c @@ -643,9 +643,13 @@ void sfxSetPan(ALPan pan) { return; } -void play_sound(u8 arg0) { +/** + * Plays a sequence just once, allowing it to coexist with the music if necessary. + * Examples include getting silver coins, challenge keys, or getting the locked message. + */ +void play_sequence(u8 seqID) { D_800DC644 = 1; - func_800022BC(D_80115D05 = arg0, gSndFxPlayer); + func_800022BC(D_80115D05 = seqID, gSndFxPlayer); } u32 func_80001C08(void) { @@ -685,16 +689,16 @@ void play_sound_spatial(u16 soundID, f32 x, f32 y, f32 z, s32 **arg4) { } } -void func_80001F14(u16 sndIndx, u32 *arg1) { - if (sndIndx <= 0 || ALBankFile_80115D14_GetSoundCount() < sndIndx) { +void func_80001F14(u16 soundID, u32 *arg1) { + if (soundID <= 0 || ALBankFile_80115D14_GetSoundCount() < soundID) { if (arg1) { *arg1 = 0; } } else { if (arg1) { - func_80004638(ALBankFile_80115D14->bankArray[0], (s16)sndIndx, arg1); + func_80004638(ALBankFile_80115D14->bankArray[0], (s16)soundID, arg1); } else { - func_80004638(ALBankFile_80115D14->bankArray[0], (s16)sndIndx, &D_80115F88); + func_80004638(ALBankFile_80115D14->bankArray[0], (s16)soundID, &D_80115F88); } } } @@ -740,11 +744,11 @@ void func_8000216C(unk80115D1C **arg0, s32 *arg1, s32 *arg2) { } } -u8 ALBankFile_80115D14_GetSoundDecayTime(u16 sndIndx) { - if (sndIndx <= 0 || ALBankFile_80115D14->bankArray[0]->instArray[0]->soundCount < sndIndx) { +u8 ALBankFile_80115D14_GetSoundDecayTime(u16 soundID) { + if (soundID <= 0 || ALBankFile_80115D14->bankArray[0]->instArray[0]->soundCount < soundID) { return 0; } - return ((u32)(1 + ALBankFile_80115D14->bankArray[0]->instArray[0]->soundArray[sndIndx - 1]->envelope->decayTime) == 0); + return ((u32)(1 + ALBankFile_80115D14->bankArray[0]->instArray[0]->soundArray[soundID - 1]->envelope->decayTime) == 0); } ALSeqPlayer *func_80002224(s32 _max_voices, s32 _max_events) { diff --git a/src/audio.h b/src/audio.h index 82304126..5d95df85 100644 --- a/src/audio.h +++ b/src/audio.h @@ -112,17 +112,17 @@ u8 musicGetRelativeVolume(void); s32 musicGetVolSliderPercentage(void); void sfxSetRelativeVolume(u8 arg0); void sfxSetPan(ALPan pan); -void play_sound(u8 arg0); +void play_sequence(u8 seqID); u32 func_80001C08(void); void func_80001C5C(u16 arg0); u16 func_80001CB8(u16 arg0); void play_sound_spatial(u16 soundID, f32 x, f32 y, f32 z, s32 **arg4); -void func_80001F14(u16 sndIndx, u32 *arg1); +void func_80001F14(u16 soundID, u32 *arg1); u16 ALBankFile_80115D14_GetSoundCount(void); u8 ALSeqFile_80115CF8_GetSeqCount(void); void func_80002128(unk80115D18 **arg0, s32 *arg1, s32 *arg2); void func_8000216C(unk80115D1C **arg0, s32 *arg1, s32 *arg2); -u8 ALBankFile_80115D14_GetSoundDecayTime(u16 sndIndx); +u8 ALBankFile_80115D14_GetSoundDecayTime(u16 soundID); ALSeqPlayer *func_80002224(s32 _max_voices, s32 _max_events); void func_800022BC(u8 arg0, ALSeqPlayer *arg1); void func_80002570(ALSeqPlayer *seqp); diff --git a/src/object_functions.c b/src/object_functions.c index 10c19643..03406a73 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -543,7 +543,6 @@ void func_800C31EC(s32); s32 func_800C3400(void); LevelHeader *get_current_level_header(void); Settings *get_settings(void); -void play_sound(u8 arg0); void set_music_fade_timer(s32 time); void set_sndfx_player_voice_limit(u8 voiceLimit); @@ -632,7 +631,7 @@ void obj_loop_trophycab(Object *obj, s32 speed) { obj64->unk0 = 140; set_sndfx_player_voice_limit(16); set_music_fade_timer(-8); - play_sound(17); + play_sequence(SEQUENCE_LOCKED); } } if ((obj64->unk0 != 0) && (func_80001C08() == 0)) { @@ -1587,7 +1586,7 @@ void obj_loop_dino_whale(Object *obj, s32 speed) { if (obj->unk4C->unk13 < 0xFF) { if (obj->unk78 == 0) { obj->unk78 = 0x3C; - func_80009558(0x23B, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + func_80009558(571, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } } } @@ -2170,7 +2169,7 @@ void obj_loop_worldkey(Object *worldKeyObj, s32 speed) { Object_WorldKey *obj64 = &playerObj->unk64->world_key; if (obj64->unk0 != -1) { // Player has grabbed the key! - play_sound(SOUND_WORLD_KEY_GRAB); + play_sequence(SEQUENCE_KEY_COLLECT); settings = get_settings(); settings->keys |= 1 << worldKeyObj->unk78; // Set key flag gParticlePtrList_addObject(worldKeyObj); // Makes the key unload. diff --git a/src/object_functions.h b/src/object_functions.h index 95b27beb..943b75f9 100644 --- a/src/object_functions.h +++ b/src/object_functions.h @@ -7,7 +7,6 @@ #include "libc/math.h" #define WORLD_KEY_GRAB_CHECK_RADIUS 50 -#define SOUND_WORLD_KEY_GRAB 54 #define TIME_JIFFIES_PER_SECOND 60 #define TIME_SECONDS(sec) sec * TIME_JIFFIES_PER_SECOND