Sound event callback tables

This commit is contained in:
robojumper
2025-06-28 22:00:52 +02:00
parent 415e388fee
commit 474d83b08b
12 changed files with 608 additions and 106 deletions
+156
View File
@@ -0,0 +1,156 @@
#ifndef D_SND_EVENT_H
#define D_SND_EVENT_H
#include "common.h"
typedef void (*SndEventCallback)(void);
struct SndEventDef {
/* 0x00 */ const char *eventName;
/* 0x04 */ s32 eventId;
/* 0x08 */ SndEventCallback initializeCb;
/* 0x0C */ SndEventCallback executeCb;
/* 0x10 */ SndEventCallback finalizeCb;
/* 0x14 */ u8 _0x14[0x1C - 0x14]; // always zero
};
enum SndEvent_e {
/* 0x00 */ SND_EVENT_DefaultStart = 0x00,
/* 0x01 */ SND_EVENT_SkyDiveStart = 0x01,
/* 0x02 */ SND_EVENT_ShortDiveStart = 0x02,
/* 0x03 */ SND_EVENT_ParachuteStart = 0x03,
/* 0x04 */ SND_EVENT_SirenBackStart = 0x04,
/* 0x05 */ SND_EVENT_TimeDoorIn = 0x05,
/* 0x06 */ SND_EVENT_TimeDoorOut = 0x06,
/* 0x07 */ SND_EVENT_ReturnSkyloft = 0x07,
/* 0x08 */ SND_EVENT_Shutter = 0x08,
/* 0x09 */ SND_EVENT_DayTime = 0x09,
/* 0x0A */ SND_EVENT_BedStart = 0x0A,
/* 0x0B */ SND_EVENT_TboxShow = 0x0B,
/* 0x0C */ SND_EVENT_TreasureBoxOpen = 0x0C,
/* 0x0D */ SND_EVENT_TreasureBoxOpenBoss = 0x0D,
/* 0x0E */ SND_EVENT_FaysSirenSong = 0x0E,
/* 0x0F */ SND_EVENT_fays_song_fin_siren = 0x0F,
/* 0x10 */ SND_EVENT_SDGateInOpen = 0x10,
/* 0x11 */ SND_EVENT_SealedDoorOpen = 0x11,
/* 0x12 */ SND_EVENT_SealedDoorClose = 0x12,
/* 0x13 */ SND_EVENT_HeartContainer = 0x13,
/* 0x14 */ SND_EVENT_ordinary_sword_sprit = 0x14,
/* 0x15 */ SND_EVENT_fays_navigate = 0x15,
/* 0x16 */ SND_EVENT_fays_allert = 0x16,
/* 0x17 */ SND_EVENT_DefaultGetItem = 0x17,
/* 0x18 */ SND_EVENT_ItemGetGorgeous = 0x18,
/* 0x19 */ SND_EVENT_Save = 0x19,
/* 0x1A */ SND_EVENT_SwordDraw = 0x1A,
/* 0x1B */ SND_EVENT_SwordDrawDoorNew = 0x1B,
/* 0x1C */ SND_EVENT_DoorBossGame = 0x1C,
/* 0x1D */ SND_EVENT_FallRestart = 0x1D,
/* 0x1E */ SND_EVENT_DeadMagma = 0x1E,
/* 0x1F */ SND_EVENT_DeadSink = 0x1F,
/* 0x20 */ SND_EVENT_Dead = 0x20,
/* 0x21 */ SND_EVENT_DeadDive = 0x21,
/* 0x22 */ SND_EVENT_SirenChaser2 = 0x22,
/* 0x23 */ SND_EVENT_JMAP = 0x23,
/* 0x24 */ SND_EVENT_JMAPAllMove = 0x24,
/* 0x25 */ SND_EVENT_OracleInSiren = 0x25,
/* 0x26 */ SND_EVENT_CeremonyByRescueTeam = 0x26,
/* 0x27 */ SND_EVENT_BirdRaceStart = 0x27,
/* 0x28 */ SND_EVENT_GoddessGateOpen = 0x28,
/* 0x29 */ SND_EVENT_FaysPharosSong = 0x29,
/* 0x2A */ SND_EVENT_fays_song_pharos = 0x2A,
/* 0x2B */ SND_EVENT_fays_song_fin_pharos = 0x2B,
/* 0x2D */ SND_EVENT_HarpPerformanceResult = 0x2D,
/* 0x2E */ SND_EVENT_ItemGetBird = 0x2E,
/* 0x2F */ SND_EVENT_DivingMGStart = 0x2F,
/* 0x30 */ SND_EVENT_DiveGameResult = 0x30,
/* 0x31 */ SND_EVENT_StartCarryPumpkin = 0x31,
/* 0x32 */ SND_EVENT_CarryPumpkinResultsFailed = 0x32,
/* 0x33 */ SND_EVENT_CarryPumpkinResultsSuccessful = 0x33,
/* 0x34 */ SND_EVENT_NusiAppearDemo = 0x34,
/* 0x35 */ SND_EVENT_NusiTHideAppearDemo = 0x35,
/* 0x36 */ SND_EVENT_TenAppearDemo = 0x36,
/* 0x37 */ SND_EVENT_NusiTDeathDemo = 0x37,
/* 0x38 */ SND_EVENT_NusiDeathDemo = 0x38,
/* 0x39 */ SND_EVENT_F100IntroByFay = 0x39,
/* 0x3A */ SND_EVENT_BC_wakidasi = 0x3A,
/* 0x3B */ SND_EVENT_Kyui3Fall = 0x3B,
/* 0x3C */ SND_EVENT_F102Intro2 = 0x3C,
/* 0x3D */ SND_EVENT_Uo = 0x3D,
/* 0x3E */ SND_EVENT_WaterfallStop = 0x3E,
/* 0x3F */ SND_EVENT_F103Intro2 = 0x3F,
/* 0x40 */ SND_EVENT_Onp = 0x40,
/* 0x41 */ SND_EVENT_F103_UoMS = 0x41,
/* 0x42 */ SND_EVENT_F200IntroByFay = 0x42,
/* 0x43 */ SND_EVENT_F202_R02Intro = 0x43,
/* 0x44 */ SND_EVENT_SearchLightDemo = 0x44,
/* 0x45 */ SND_EVENT_F300_1IntroByFay = 0x45,
/* 0x46 */ SND_EVENT_FirstTimeSlip = 0x46,
/* 0x47 */ SND_EVENT_F301IntroByFay = 0x47,
/* 0x49 */ SND_EVENT_F302RevivalRairyu = 0x49,
/* 0x4A */ SND_EVENT_F401IntroByFay = 0x4A,
/* 0x4B */ SND_EVENT_BBossAppear = 0x4B,
/* 0x4C */ SND_EVENT_BBFLYDEMO = 0x4C,
/* 0x4D */ SND_EVENT_BBossEvac = 0x4D,
/* 0x4E */ SND_EVENT_BBoss2Evac = 0x4E,
/* 0x4F */ SND_EVENT_BBoss3Evac = 0x4F,
/* 0x50 */ SND_EVENT_BBFuuin = 0x50,
/* 0x51 */ SND_EVENT_BBHDTH = 0x51,
/* 0x52 */ SND_EVENT_BBHDRC = 0x52,
/* 0x53 */ SND_EVENT_BBFCL = 0x53,
/* 0x54 */ SND_EVENT_BBTUTO = 0x54,
/* 0x55 */ SND_EVENT_F402L3QuakeStart = 0x55,
/* 0x56 */ SND_EVENT_Girahimu3SecondAppearDemo = 0x56,
/* 0x57 */ SND_EVENT_SF_start = 0x57,
/* 0x58 */ SND_EVENT_GirahimuSwordDemo = 0x58,
/* 0x59 */ SND_EVENT_SF4_Op = 0x59,
/* 0x5A */ SND_EVENT_SF4_End = 0x5A,
/* 0x5C */ SND_EVENT_AsuraStart = 0x5C,
/* 0x5D */ SND_EVENT_AsuraStartB = 0x5D,
/* 0x5E */ SND_EVENT_ELizarufos_c_opening = 0x5E,
/* 0x5F */ SND_EVENT_D200R04Rock = 0x5F,
/* 0x60 */ SND_EVENT_RollRockLspJump = 0x60,
/* 0x62 */ SND_EVENT_RollRockLspAppear = 0x62,
/* 0x63 */ SND_EVENT_RollRockChangeVera = 0x63,
/* 0x64 */ SND_EVENT_MoleInitFear = 0x64,
/* 0x65 */ SND_EVENT_MolePushSwitch = 0x65,
/* 0x66 */ SND_EVENT_MoleInitTalk = 0x66,
/* 0x67 */ SND_EVENT_CatchMole = 0x67,
/* 0x68 */ SND_EVENT_D201IronFence = 0x68,
/* 0x69 */ SND_EVENT_MogMolShut = 0x69,
/* 0x6A */ SND_EVENT_MogMolOpen = 0x6A,
/* 0x6B */ SND_EVENT_LavaPlate = 0x6B,
/* 0x6C */ SND_EVENT_ResqueMole = 0x6C,
/* 0x6D */ SND_EVENT_MG_start = 0x6D,
/* 0x6E */ SND_EVENT_ECaptain_c_Opening = 0x6E,
/* 0x6F */ SND_EVENT_BKR_start = 0x6F,
/* 0x70 */ SND_EVENT_BKR_end = 0x70,
/* 0x71 */ SND_EVENT_BKR_armCaught = 0x71,
/* 0x72 */ SND_EVENT_BLS_demo2 = 0x72,
/* 0x73 */ SND_EVENT_BLS_end = 0x73,
/* 0x74 */ SND_EVENT_D003Intro = 0x74,
/* 0x75 */ SND_EVENT_ECaptain_c_OpeningType2 = 0x75,
/* 0x76 */ SND_EVENT_NeedleUnderground = 0x76,
/* 0x77 */ SND_EVENT_TriforceWarp = 0x77,
/* 0x78 */ SND_EVENT_0x78 = 0x78,
/* 0x79 */ SND_EVENT_Demo03_03 = 0x79,
/* 0x7A */ SND_EVENT_Demo15_04 = 0x7A,
/* 0x7B */ SND_EVENT_Demo08_01 = 0x7B,
/* 0x7C */ SND_EVENT_Demo36_01 = 0x7C,
/* 0x7D */ SND_EVENT_Demo41_01 = 0x7D,
/* 0x7E */ SND_EVENT_Demo59_01 = 0x7E,
/* 0x7F */ SND_EVENT_Demo62_01 = 0x7F,
/* 0x80 */ SND_EVENT_Demo64_06 = 0x80,
/* 0x81 */ SND_EVENT_Demo70_01 = 0x81,
/* 0x82 */ SND_EVENT_Demo70_02 = 0x82,
/* 0x83 */ SND_EVENT_Demo72_01 = 0x83,
/* 0x84 */ SND_EVENT_Demo77_01 = 0x84,
/* 0x85 */ SND_EVENT_Demo79_01 = 0x85,
/* 0x87 */ SND_EVENT_0x87 = 0x87,
/* 0x89 */ SND_EVENT_0x98 = 0x89,
};
#endif
+1 -1
View File
@@ -56,7 +56,7 @@ enum SoundSourceType_e {
SND_SOURCE_NPC_HEAD = 48,
SND_SOURCE_INSECT = 49,
SND_SOURCE_NPC_50 = 50,
SND_SOURCE_NPC_NRM = 51,
SND_SOURCE_NPC_51 = 51,
SND_SOURCE_NPC_DRAGON = 52,
// 53: TagSound (5)
+22 -3
View File
@@ -2,6 +2,7 @@
#define D_SND_STATE_MGR_H
#include "common.h"
#include "d/snd/d_snd_event.h"
#include "d/snd/d_snd_util.h"
#include "nw4r/snd/snd_FxReverbStdDpl2.h"
#include "sized_string.h"
@@ -12,7 +13,7 @@ SND_DISPOSER_FORWARD_DECL(dSndStateMgr_c);
class dSndStateMgr_c {
public:
SND_DISPOSER_MEMBERS(dSndStateMgr_c);
public:
enum StageFlags_e {
STAGE_FIELD = 0x1,
@@ -29,6 +30,17 @@ public:
STAGE_SILENT_GROUNDS = 0x200,
};
enum EventFlags_e {
EVENT_MUTE_BGM_PARTIAL = 0x8,
EVENT_MUTE_BGM_FULL = 0x10,
EVENT_MUTE_STAGE_EFFECTS_PARTIAL = 0x20,
EVENT_MUTE_STAGE_EFFECTS_FULL = 0x40,
EVENT_MUTE_ENEMY_PARTIAL = 0x80,
EVENT_MUTE_ENEMY_FULL = 0x100,
EVENT_MUTE_OBJ_PARTIAL = 0x200,
EVENT_MUTE_OBJ_FULL = 0x400,
};
dSndStateMgr_c();
void setup(EGG::Heap *pHeap);
@@ -93,18 +105,25 @@ public:
bool isInEvent(const char *eventName);
private:
bool handleGlobalEvent(const char *name);
bool handleStageEvent(const char *name);
void handleDemoEvent(const char *name);
u32 getStageTypeFlags(const char *stageName) const;
// ET, FS, or corresponding Sky Keep rooms
static bool isVolcanicDungeon(u32 stageId);
// Checks if the given stage + layer is the stage you're transported
// to when viewing hint movies.
static bool isSeekerStoneStage(const char *stageName, s32 layer);
void setCallbacksForStage();
u32 getStageId(const char *name, s32 layer);
static u32 getStageUnk2(u32 stageId);
static SndEventCallback sEventExecuteCallback;
/* 0x010 */ u32 field_0x010;
/* 0x014 */ UNKWORD field_0x014;
/* 0x018 */ UNKWORD field_0x018;
@@ -147,7 +166,7 @@ private:
/* 0x1EC */ SizedString<64> field_0x1EC;
/* 0x22C */ UNKWORD field_0x22C;
/* 0x230 */ UNKWORD field_0x230;
/* 0x234 */ UNKWORD field_0x234;
/* 0x234 */ const SndEventDef *field_0x234;
/* 0x238 */ UNKWORD field_0x238;
/* 0x23C */ u8 field_0x23C;
/* 0x23D */ u8 field_0x23D;