diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index dbe46c8b..6648c9d3 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -2638,11 +2638,19 @@ d/snd/d_snd_stage_callbacks.cpp: .text start:0x803665F0 end:0x8036740C align:16 d/snd/d_snd_event_callbacks.cpp: - .text start:0x80367410 end:0x8036A3A4 align:16 + .text start:0x80367410 end:0x803698F8 align:16 + .rodata start:0x804F2308 end:0x804F3678 + .sdata2 start:0x8057D808 end:0x8057D8A4 + +d/snd/d_snd_event_demo_callbacks.cpp: + .text start:0x80369900 end:0x8036A3A4 align:16 + .rodata start:0x804F3678 end:0x804F37E8 + .data start:0x80548A58 end:0x80548B08 + .sdata2 start:0x8057D8A4 end:0x8057D8B0 d/snd/d_snd_area_sound_effect_mgr.cpp: .text start:0x8036A3B0 end:0x8036B8D0 align:16 - .data start:0x80548B38 end:0x80548B48 + .data start:0x80548B08 end:0x80548B48 .sbss start:0x80575D78 end:0x80575D80 .sdata2 start:0x8057D8B0 end:0x8057D8E8 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 685f5753..4e5814d2 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -20308,8 +20308,8 @@ fn_803695B0 = .text:0x803695B0; // type:function size:0x14 playExitTriforceRoomSound = .text:0x803695D0; // type:function size:0x3C fn_80369610 = .text:0x80369610; // type:function size:0x38 fn_80369650 = .text:0x80369650; // type:function size:0x14 -fn_80369670 = .text:0x80369670; // type:function size:0x1C4 -fn_80369840 = .text:0x80369840; // type:function size:0xB8 +handleStageEvent__14dSndStateMgr_cFPCc = .text:0x80369670; // type:function size:0x1C4 +handleGlobalEvent__14dSndStateMgr_cFPCc = .text:0x80369840; // type:function size:0xB8 fn_80369900 = .text:0x80369900; // type:function size:0x10 fn_80369910 = .text:0x80369910; // type:function size:0x60 fn_80369970 = .text:0x80369970; // type:function size:0x34 @@ -20333,7 +20333,7 @@ fn_8036A0D0 = .text:0x8036A0D0; // type:function size:0x3C fn_8036A110 = .text:0x8036A110; // type:function size:0x108 fn_8036A220 = .text:0x8036A220; // type:function size:0x3C fn_8036A260 = .text:0x8036A260; // type:function size:0x6C -fn_8036A2D0 = .text:0x8036A2D0; // type:function size:0xB8 +handleDemoEvent__14dSndStateMgr_cFPCc = .text:0x8036A2D0; // type:function size:0xB8 fn_8036A390 = .text:0x8036A390; // type:function size:0x14 __dt__42SndMgrDisposer<24dSndAreaSoundEffectMgr_c>Fv = .text:0x8036A3B0; // type:function size:0x78 create__42SndMgrDisposer<24dSndAreaSoundEffectMgr_c>Fv = .text:0x8036A430; // type:function size:0x48 @@ -28974,35 +28974,43 @@ lbl_804F2684 = .rodata:0x804F2684; // type:object size:0xC lbl_804F2690 = .rodata:0x804F2690; // type:object size:0x18 data:string lbl_804F26A8 = .rodata:0x804F26A8; // type:object size:0x10 lbl_804F26B8 = .rodata:0x804F26B8; // type:object size:0x770 -lbl_804F2E28 = .rodata:0x804F2E28; // type:object size:0x18 +lbl_804F2E28 = .rodata:0x804F2E28; // type:object size:0x15 data:string lbl_804F2E40 = .rodata:0x804F2E40; // type:object size:0x10 lbl_804F2E50 = .rodata:0x804F2E50; // type:object size:0x10 data:string lbl_804F2E60 = .rodata:0x804F2E60; // type:object size:0x10 lbl_804F2E70 = .rodata:0x804F2E70; // type:object size:0x14 -lbl_804F2E84 = .rodata:0x804F2E84; // type:object size:0xE0 +lbl_804F2E84 = .rodata:0x804F2E84; // type:object size:0x1C +lbl_804F2EA0 = .rodata:0x804F2EA0; // type:object size:0xA8 +lbl_804F2F48 = .rodata:0x804F2F48; // type:object size:0x1C lbl_804F2F64 = .rodata:0x804F2F64; // type:object size:0xC data:string lbl_804F2F70 = .rodata:0x804F2F70; // type:object size:0x10 lbl_804F2F80 = .rodata:0x804F2F80; // type:object size:0x10 lbl_804F2F90 = .rodata:0x804F2F90; // type:object size:0x14 lbl_804F2FA4 = .rodata:0x804F2FA4; // type:object size:0x1C -lbl_804F2FC0 = .rodata:0x804F2FC0; // type:object size:0xC8 +lbl_804F2FC0 = .rodata:0x804F2FC0; // type:object size:0x20 +lbl_804F2FE0 = .rodata:0x804F2FE0; // type:object size:0xA8 lbl_804F3088 = .rodata:0x804F3088; // type:object size:0x10 lbl_804F3098 = .rodata:0x804F3098; // type:object size:0x14 data:string lbl_804F30AC = .rodata:0x804F30AC; // type:object size:0x10 lbl_804F30BC = .rodata:0x804F30BC; // type:object size:0x10 -lbl_804F30CC = .rodata:0x804F30CC; // type:object size:0x9C +lbl_804F30CC = .rodata:0x804F30CC; // type:object size:0x10 +lbl_804F30DC = .rodata:0x804F30DC; // type:object size:0x8C lbl_804F3168 = .rodata:0x804F3168; // type:object size:0x10 lbl_804F3178 = .rodata:0x804F3178; // type:object size:0xC data:string -lbl_804F3184 = .rodata:0x804F3184; // type:object size:0x60 +lbl_804F3184 = .rodata:0x804F3184; // type:object size:0xC +lbl_804F3190 = .rodata:0x804F3190; // type:object size:0x54 lbl_804F31E4 = .rodata:0x804F31E4; // type:object size:0x10 lbl_804F31F4 = .rodata:0x804F31F4; // type:object size:0xC data:string lbl_804F3200 = .rodata:0x804F3200; // type:object size:0xC lbl_804F320C = .rodata:0x804F320C; // type:object size:0xC lbl_804F3218 = .rodata:0x804F3218; // type:object size:0xC -lbl_804F3224 = .rodata:0x804F3224; // type:object size:0x194 +lbl_804F3224 = .rodata:0x804F3224; // type:object size:0xC +lbl_804F3230 = .rodata:0x804F3230; // type:object size:0x134 +lbl_804F3364 = .rodata:0x804F3364; // type:object size:0x54 lbl_804F33B8 = .rodata:0x804F33B8; // type:object size:0x18 lbl_804F33D0 = .rodata:0x804F33D0; // type:object size:0x10 -lbl_804F33E0 = .rodata:0x804F33E0; // type:object size:0x80 +lbl_804F33E0 = .rodata:0x804F33E0; // type:object size:0x10 data:string +lbl_804F33F0 = .rodata:0x804F33F0; // type:object size:0x70 lbl_804F3460 = .rodata:0x804F3460; // type:object size:0x10 lbl_804F3470 = .rodata:0x804F3470; // type:object size:0x10 lbl_804F3480 = .rodata:0x804F3480; // type:object size:0x10 @@ -29011,11 +29019,14 @@ lbl_804F349C = .rodata:0x804F349C; // type:object size:0x10 lbl_804F34AC = .rodata:0x804F34AC; // type:object size:0xC lbl_804F34B8 = .rodata:0x804F34B8; // type:object size:0xC lbl_804F34C4 = .rodata:0x804F34C4; // type:object size:0xC -lbl_804F34D0 = .rodata:0x804F34D0; // type:object size:0x108 +lbl_804F34D0 = .rodata:0x804F34D0; // type:object size:0xC +lbl_804F34DC = .rodata:0x804F34DC; // type:object size:0xFC lbl_804F35D8 = .rodata:0x804F35D8; // type:object size:0xC -lbl_804F35E4 = .rodata:0x804F35E4; // type:object size:0x64 -lbl_804F3648 = .rodata:0x804F3648; // type:object size:0x30 -lbl_804F3678 = .rodata:0x804F3678; // type:object size:0x170 +lbl_804F35E4 = .rodata:0x804F35E4; // type:object size:0x10 +lbl_804F35F4 = .rodata:0x804F35F4; // type:object size:0x54 +lbl_804F3648 = .rodata:0x804F3648; // type:object size:0x14 +lbl_804F365C = .rodata:0x804F365C; // type:object size:0x1C +lbl_804F3678 = .rodata:0x804F3678; // type:object size:0x16C lbl_804F37E8 = .rodata:0x804F37E8; // type:object size:0x30 data:2byte lbl_804F3818 = .rodata:0x804F3818; // type:object size:0x40 lbl_804F3858 = .rodata:0x804F3858; // type:object size:0x30 data:4byte @@ -42278,7 +42289,7 @@ sInstance__15dSnd3DManager_c = .sbss:0x80575D58; // type:object size:0x4 data:4b sDisposer__15dSnd3DManager_c = .sbss:0x80575D5C; // type:object size:0x4 data:4byte lbl_80575D60 = .sbss:0x80575D60; // type:object size:0x4 data:4byte lbl_80575D64 = .sbss:0x80575D64; // type:object size:0x4 data:4byte -lbl_80575D68 = .sbss:0x80575D68; // type:object size:0x4 data:4byte +sEventExecuteCallback__14dSndStateMgr_c = .sbss:0x80575D68; // type:object size:0x4 data:4byte sInstance__14dSndStateMgr_c = .sbss:0x80575D6C; // type:object size:0x4 data:4byte sDisposer__14dSndStateMgr_c = .sbss:0x80575D70; // type:object size:0x8 data:4byte sInstance__24dSndAreaSoundEffectMgr_c = .sbss:0x80575D78; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 0771c21c..a7d5642c 100644 --- a/configure.py +++ b/configure.py @@ -748,6 +748,7 @@ config.libs = [ Object(NonMatching, "d/snd/d_snd_stage_reverb.cpp"), Object(NonMatching, "d/snd/d_snd_stage_callbacks.cpp"), Object(NonMatching, "d/snd/d_snd_event_callbacks.cpp"), + Object(NonMatching, "d/snd/d_snd_event_demo_callbacks.cpp"), Object(NonMatching, "d/snd/d_snd_area_sound_effect_mgr.cpp"), Object(NonMatching, "d/snd/d_snd_area_sound.cpp"), Object(Matching, "d/snd/d_snd_control_sound.cpp"), diff --git a/include/d/snd/d_snd_event.h b/include/d/snd/d_snd_event.h new file mode 100644 index 00000000..3094e47a --- /dev/null +++ b/include/d/snd/d_snd_event.h @@ -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 diff --git a/include/d/snd/d_snd_source_enums.h b/include/d/snd/d_snd_source_enums.h index e49c1774..31c4ae52 100644 --- a/include/d/snd/d_snd_source_enums.h +++ b/include/d/snd/d_snd_source_enums.h @@ -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) diff --git a/include/d/snd/d_snd_state_mgr.h b/include/d/snd/d_snd_state_mgr.h index 229bfbe3..e61e961a 100644 --- a/include/d/snd/d_snd_state_mgr.h +++ b/include/d/snd/d_snd_state_mgr.h @@ -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; diff --git a/src/d/snd/d_snd_event_callbacks.cpp b/src/d/snd/d_snd_event_callbacks.cpp new file mode 100644 index 00000000..9c0d7f3a --- /dev/null +++ b/src/d/snd/d_snd_event_callbacks.cpp @@ -0,0 +1,259 @@ +#include "common.h" +#include "d/snd/d_snd_event.h" +#include "d/snd/d_snd_stage_data.h" +#include "d/snd/d_snd_state_mgr.h" + +void todoInititalizeSndEvent(); +void todoExecuteSndEvent(); +void todoFinalizeSndEvent(); + +#pragma push +#pragma readonly_strings on +// clang-format off + +static const SndEventDef sSndEventDefs_GLOBAL[] = { + { "DefaultStart", SND_EVENT_DefaultStart, todoInititalizeSndEvent, nullptr, nullptr}, + { "SkyDiveStart", SND_EVENT_SkyDiveStart, todoInititalizeSndEvent, nullptr, nullptr}, + { "ShortDiveStart", SND_EVENT_ShortDiveStart, todoInititalizeSndEvent, nullptr, nullptr}, + { "ParachuteStart", SND_EVENT_ParachuteStart, todoInititalizeSndEvent, nullptr, nullptr}, + { "SirenBackStart", SND_EVENT_SirenBackStart, todoInititalizeSndEvent, nullptr, nullptr}, + { "TimeDoorIn", SND_EVENT_TimeDoorIn, nullptr, todoExecuteSndEvent, nullptr}, + { "TimeDoorOut", SND_EVENT_TimeDoorOut, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "ReturnSkyloft", SND_EVENT_ReturnSkyloft, todoInititalizeSndEvent, nullptr, nullptr}, + { "Shutter", SND_EVENT_Shutter, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "DayTime", SND_EVENT_DayTime, todoInititalizeSndEvent, nullptr, nullptr}, + { "BedStart", SND_EVENT_BedStart, todoInititalizeSndEvent, nullptr, nullptr}, + { "TboxShow", SND_EVENT_TboxShow, todoInititalizeSndEvent, nullptr, nullptr}, + { "TreasureBoxOpen", SND_EVENT_TreasureBoxOpen, todoInititalizeSndEvent, nullptr, nullptr}, + { "TreasureBoxOpenBoss", SND_EVENT_TreasureBoxOpenBoss, todoInititalizeSndEvent, nullptr, nullptr}, + { "FaysSirenSong", SND_EVENT_FaysSirenSong, todoInititalizeSndEvent, nullptr, nullptr}, + { "fays_song_fin_siren", SND_EVENT_fays_song_fin_siren, todoInititalizeSndEvent, nullptr, nullptr}, + { "SDGateInOpen", SND_EVENT_SDGateInOpen, todoInititalizeSndEvent, nullptr, nullptr}, + { "SealedDoorOpen", SND_EVENT_SealedDoorOpen, todoInititalizeSndEvent, nullptr, nullptr}, + { "SealedDoorClose", SND_EVENT_SealedDoorClose, todoInititalizeSndEvent, nullptr, nullptr}, + { "HeartContainer", SND_EVENT_HeartContainer, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "ordinary_sword_sprit", SND_EVENT_ordinary_sword_sprit, todoInititalizeSndEvent, nullptr, nullptr}, + { "fays_navigate", SND_EVENT_fays_navigate, todoInititalizeSndEvent, nullptr, nullptr}, + { "fays_allert", SND_EVENT_fays_allert, todoInititalizeSndEvent, nullptr, nullptr}, + { "DefaultGetItem", SND_EVENT_DefaultGetItem, todoInititalizeSndEvent, nullptr, nullptr}, + { "ItemGetGorgeous", SND_EVENT_ItemGetGorgeous, todoInititalizeSndEvent, nullptr, nullptr}, + { "Save", SND_EVENT_Save, todoInititalizeSndEvent, nullptr, nullptr}, + { "SwordDraw", SND_EVENT_SwordDraw, todoInititalizeSndEvent, nullptr, nullptr}, + { "SwordDrawDoorNew", SND_EVENT_SwordDrawDoorNew, todoInititalizeSndEvent, nullptr, nullptr}, + { "DoorBossGame", SND_EVENT_DoorBossGame, todoInititalizeSndEvent, nullptr, nullptr}, + { "FallRestart", SND_EVENT_FallRestart, todoInititalizeSndEvent, nullptr, nullptr}, + { "DeadMagma", SND_EVENT_DeadMagma, todoInititalizeSndEvent, nullptr, nullptr}, + { "DeadSink", SND_EVENT_DeadSink, todoInititalizeSndEvent, nullptr, nullptr}, + { "Dead", SND_EVENT_Dead, todoInititalizeSndEvent, nullptr, nullptr}, + { "DeadDive", SND_EVENT_DeadDive, nullptr, todoExecuteSndEvent, nullptr}, + { "SirenChaser2", SND_EVENT_SirenChaser2, nullptr, nullptr, todoFinalizeSndEvent}, + { "JMAP", SND_EVENT_JMAP, todoInititalizeSndEvent, nullptr, nullptr}, + { "JMAPAllMove", SND_EVENT_JMAPAllMove, todoInititalizeSndEvent, nullptr, nullptr}, + { "OracleInSiren", SND_EVENT_OracleInSiren, todoInititalizeSndEvent, nullptr, nullptr}, + { "HarpPerformanceResult", SND_EVENT_HarpPerformanceResult, nullptr, todoExecuteSndEvent, nullptr}, + { "F102Intro2", SND_EVENT_F102Intro2, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "Uo", SND_EVENT_Uo, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "WaterfallStop", SND_EVENT_WaterfallStop, nullptr, nullptr, todoFinalizeSndEvent}, + { "F103Intro2", SND_EVENT_F103Intro2, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "Onp", SND_EVENT_Onp, todoInititalizeSndEvent, todoExecuteSndEvent, todoFinalizeSndEvent}, + { "F103_UoMS", SND_EVENT_F103_UoMS, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "F200IntroByFay", SND_EVENT_F200IntroByFay, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "F202_R02Intro", SND_EVENT_F202_R02Intro, todoInititalizeSndEvent, nullptr, nullptr}, + { "SearchLightDemo", SND_EVENT_SearchLightDemo, nullptr, nullptr, nullptr}, + { "F300_1IntroByFay", SND_EVENT_F300_1IntroByFay, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "FirstTimeSlip", SND_EVENT_FirstTimeSlip, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "F301IntroByFay", SND_EVENT_F301IntroByFay, todoInititalizeSndEvent, todoExecuteSndEvent, todoFinalizeSndEvent}, + { "F302RevivalRairyu", SND_EVENT_F302RevivalRairyu, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "F402L3QuakeStart", SND_EVENT_F402L3QuakeStart, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + {"Girahimu3SecondAppearDemo", SND_EVENT_Girahimu3SecondAppearDemo, nullptr, todoExecuteSndEvent, todoFinalizeSndEvent}, + { "SF_start", SND_EVENT_SF_start, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "GirahimuSwordDemo", SND_EVENT_GirahimuSwordDemo, nullptr, todoExecuteSndEvent, nullptr}, + { "AsuraStart", SND_EVENT_AsuraStart, todoInititalizeSndEvent, todoExecuteSndEvent, todoFinalizeSndEvent}, + { "AsuraStartB", SND_EVENT_AsuraStartB, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "RollRockLspAppear", SND_EVENT_RollRockLspAppear, todoInititalizeSndEvent, nullptr, nullptr}, + { "RollRockChangeVera", SND_EVENT_RollRockChangeVera, todoInititalizeSndEvent, nullptr, nullptr}, + { "MG_start", SND_EVENT_MG_start, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "BLS_demo2", SND_EVENT_BLS_demo2, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "BLS_end", SND_EVENT_BLS_end, todoInititalizeSndEvent, nullptr, nullptr}, + { "ECaptain_c_Opening", SND_EVENT_ECaptain_c_Opening, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "D003Intro", SND_EVENT_D003Intro, todoInititalizeSndEvent, nullptr, nullptr}, + { "ECaptain_c_OpeningType2", SND_EVENT_ECaptain_c_OpeningType2, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "SF4_End", SND_EVENT_SF4_End, nullptr, nullptr, nullptr}, + { "TriforceWarp", SND_EVENT_TriforceWarp, nullptr, todoExecuteSndEvent, nullptr}, +}; + +static const SndEventDef sSndEventDefs_F000[] = { + {"CeremonyByRescueTeam", SND_EVENT_CeremonyByRescueTeam, todoInititalizeSndEvent, nullptr, nullptr}, + { "BirdRaceStart", SND_EVENT_BirdRaceStart, nullptr, nullptr, todoFinalizeSndEvent}, + { "GoddessGateOpen", SND_EVENT_GoddessGateOpen, nullptr, todoExecuteSndEvent, nullptr}, + { "FaysPharosSong", SND_EVENT_FaysPharosSong, todoInititalizeSndEvent, nullptr, nullptr}, + { "fays_song_pharos", SND_EVENT_fays_song_pharos, todoInititalizeSndEvent, nullptr, nullptr}, + {"fays_song_fin_pharos", SND_EVENT_fays_song_fin_pharos, nullptr, nullptr, todoFinalizeSndEvent}, +}; + +static const SndEventDef sSndEventDefs_F001r[] = { + {"OracleInSiren", SND_EVENT_OracleInSiren, todoInititalizeSndEvent, nullptr, nullptr}, +}; + +static const SndEventDef sSndEventDefs_F020[] = { + { "ItemGetBird", SND_EVENT_ItemGetBird, todoInititalizeSndEvent, nullptr, nullptr}, + { "DivingMGStart", SND_EVENT_DivingMGStart, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "DiveGameResult", SND_EVENT_DiveGameResult, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "StartCarryPumpkin", SND_EVENT_StartCarryPumpkin, todoInititalizeSndEvent, nullptr, nullptr}, + { "CarryPumpkinResultsFailed", SND_EVENT_CarryPumpkinResultsFailed, todoInititalizeSndEvent, nullptr, nullptr}, + {"CarryPumpkinResultsSuccessful", SND_EVENT_CarryPumpkinResultsSuccessful, todoInititalizeSndEvent, nullptr, nullptr}, +}; + +static const SndEventDef sSndEventDefs_F023[] = { + { "NusiAppearDemo", SND_EVENT_NusiAppearDemo, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + {"NusiTHideAppearDemo", SND_EVENT_NusiTHideAppearDemo, todoInititalizeSndEvent, nullptr, nullptr}, + { "TenAppearDemo", SND_EVENT_TenAppearDemo, todoInititalizeSndEvent, todoExecuteSndEvent, todoFinalizeSndEvent}, + { "NusiTDeathDemo", SND_EVENT_NusiTDeathDemo, todoInititalizeSndEvent, nullptr, nullptr}, + { "NusiDeathDemo", SND_EVENT_NusiDeathDemo, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, +}; + +static const SndEventDef sSndEventDefs_F100[] = { + {"F100IntroByFay", SND_EVENT_F100IntroByFay, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "BC_wakidasi", SND_EVENT_BC_wakidasi, todoInititalizeSndEvent, nullptr, nullptr}, + { "Kyui3Fall", SND_EVENT_Kyui3Fall, nullptr, nullptr, todoFinalizeSndEvent}, +}; + +static const SndEventDef sSndEventDefs_F401[] = { + {"F401IntroByFay", SND_EVENT_F401IntroByFay, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "BBossAppear", SND_EVENT_BBossAppear, todoInititalizeSndEvent, todoExecuteSndEvent, todoFinalizeSndEvent}, + { "BBFLYDEMO", SND_EVENT_BBFLYDEMO, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "BBossEvac", SND_EVENT_BBossEvac, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "BBoss2Evac", SND_EVENT_BBoss2Evac, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "BBoss3Evac", SND_EVENT_BBoss3Evac, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "BBFuuin", SND_EVENT_BBFuuin, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + { "BBHDTH", SND_EVENT_BBHDTH, nullptr, nullptr, nullptr}, + { "BBHDRC", SND_EVENT_BBHDRC, nullptr, nullptr, nullptr}, + { "BBFCL", SND_EVENT_BBFCL, nullptr, nullptr, nullptr}, + { "BBTUTO", SND_EVENT_BBTUTO, todoInititalizeSndEvent, nullptr, nullptr}, +}; + +static const SndEventDef sSndEventDefs_D101[] = { + { "SF4_Op", SND_EVENT_SF4_Op, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "SF4_End", SND_EVENT_SF4_End, todoInititalizeSndEvent, nullptr, nullptr}, + {"JMAPAllMove", SND_EVENT_JMAPAllMove, todoInititalizeSndEvent, nullptr, nullptr}, +}; + +static const SndEventDef sSndEventDefs_D200[] = { + {"ELizarufos_c_opening", SND_EVENT_ELizarufos_c_opening, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "D200R04Rock", SND_EVENT_D200R04Rock, todoInititalizeSndEvent, nullptr, nullptr}, + { "RollRockLspJump", SND_EVENT_RollRockLspJump, todoInititalizeSndEvent, nullptr, nullptr}, + { "JMAP", SND_EVENT_JMAP, todoInititalizeSndEvent, nullptr, nullptr}, +}; + +static const SndEventDef sSndEventDefs_D201[] = { + { "MoleInitFear", SND_EVENT_MoleInitFear, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + {"MolePushSwitch", SND_EVENT_MolePushSwitch, todoInititalizeSndEvent, nullptr, nullptr}, + { "MoleInitTalk", SND_EVENT_MoleInitTalk, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "CatchMole", SND_EVENT_CatchMole, todoInititalizeSndEvent, nullptr, nullptr}, + { "D201IronFence", SND_EVENT_D201IronFence, todoInititalizeSndEvent, nullptr, nullptr}, + { "MogMolShut", SND_EVENT_MogMolShut, nullptr, nullptr, todoFinalizeSndEvent}, + { "MogMolOpen", SND_EVENT_MogMolOpen, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, + { "LavaPlate", SND_EVENT_LavaPlate, todoInititalizeSndEvent, nullptr, nullptr}, + { "ResqueMole", SND_EVENT_ResqueMole, todoInititalizeSndEvent, nullptr, nullptr}, +}; + +static const SndEventDef sSndEventDefs_B301[] = { + { "BKR_start", SND_EVENT_BKR_start, todoInititalizeSndEvent, todoExecuteSndEvent, todoFinalizeSndEvent}, + { "BKR_end", SND_EVENT_BKR_end, todoInititalizeSndEvent, todoExecuteSndEvent, todoFinalizeSndEvent}, + {"BKR_armCaught", SND_EVENT_BKR_armCaught, nullptr, nullptr, nullptr}, +}; + +static const SndEventDef sSndEventDefs_D003_1[] = { + {"NeedleUnderground", SND_EVENT_NeedleUnderground, todoInititalizeSndEvent, nullptr, todoFinalizeSndEvent}, +}; + +// clang-format on + +#pragma pop + +bool dSndStateMgr_c::handleStageEvent(const char *name) { + if (field_0x08C != SND_EVENT_0x87) { + const SndEventDef *def = nullptr; + s32 defCount = 0; + + switch (field_0x044) { + case SND_STAGE_F000: + def = sSndEventDefs_F000; + defCount = ARRAY_LENGTH(sSndEventDefs_F000); + break; + case SND_STAGE_F001r: + def = sSndEventDefs_F001r; + defCount = ARRAY_LENGTH(sSndEventDefs_F001r); + break; + case SND_STAGE_F020: + def = sSndEventDefs_F020; + defCount = ARRAY_LENGTH(sSndEventDefs_F020); + break; + case SND_STAGE_F023: + def = sSndEventDefs_F023; + defCount = ARRAY_LENGTH(sSndEventDefs_F023); + break; + case SND_STAGE_F100: + def = sSndEventDefs_F100; + defCount = ARRAY_LENGTH(sSndEventDefs_F100); + break; + case SND_STAGE_F401: + def = sSndEventDefs_F401; + defCount = ARRAY_LENGTH(sSndEventDefs_F401); + break; + case SND_STAGE_D101: + def = sSndEventDefs_D101; + defCount = ARRAY_LENGTH(sSndEventDefs_D101); + break; + case SND_STAGE_D200: + def = sSndEventDefs_D200; + defCount = ARRAY_LENGTH(sSndEventDefs_D200); + break; + case SND_STAGE_D201: + def = sSndEventDefs_D201; + defCount = ARRAY_LENGTH(sSndEventDefs_D201); + break; + case SND_STAGE_B301: + def = sSndEventDefs_B301; + defCount = ARRAY_LENGTH(sSndEventDefs_B301); + break; + case SND_STAGE_D003_1: + def = sSndEventDefs_D003_1; + defCount = ARRAY_LENGTH(sSndEventDefs_D003_1); + break; + } + + if (def != nullptr && defCount > 0) { + for (s32 i = 0; i < defCount; def++, i++) { + if (streq(name, def->eventName)) { + field_0x08C = def->eventId; + field_0x234 = def; + sEventExecuteCallback = def->executeCb; + if (def->initializeCb != nullptr) { + (def->initializeCb)(); + } + return true; + } + } + } + } + return false; +} + +bool dSndStateMgr_c::handleGlobalEvent(const char *name) { + if (field_0x08C != SND_EVENT_0x87) { + for (const SndEventDef *def = sSndEventDefs_GLOBAL; + def < sSndEventDefs_GLOBAL + ARRAY_LENGTH(sSndEventDefs_GLOBAL); def++) { + if (streq(name, def->eventName)) { + field_0x08C = def->eventId; + field_0x234 = def; + sEventExecuteCallback = def->executeCb; + if (def->initializeCb != nullptr) { + (def->initializeCb)(); + } + return true; + } + } + } + return false; +} diff --git a/src/d/snd/d_snd_event_demo_callbacks.cpp b/src/d/snd/d_snd_event_demo_callbacks.cpp new file mode 100644 index 00000000..c6f6df6d --- /dev/null +++ b/src/d/snd/d_snd_event_demo_callbacks.cpp @@ -0,0 +1,48 @@ +#include "common.h" +#include "d/snd/d_snd_event.h" +#include "d/snd/d_snd_state_mgr.h" + +void todoInititalizeSndEvent(); +void todoExecuteSndEvent(); +void todoFinalizeSndEvent(); + +// clang-format off + +static const SndEventDef sSndEventDefs_DEMO[] = { + {"Demo03_03", SND_EVENT_Demo03_03, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + {"Demo08_01", SND_EVENT_Demo08_01, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + {"Demo15_04", SND_EVENT_Demo15_04, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + {"Demo36_01", SND_EVENT_Demo36_01, nullptr, todoExecuteSndEvent, nullptr}, + {"Demo41_01", SND_EVENT_Demo41_01, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + {"Demo59_01", SND_EVENT_Demo59_01, nullptr, todoExecuteSndEvent, nullptr}, + {"Demo62_01", SND_EVENT_Demo62_01, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + {"Demo64_06", SND_EVENT_Demo64_06, todoInititalizeSndEvent, nullptr, nullptr}, + {"Demo70_01", SND_EVENT_Demo70_01, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + {"Demo70_02", SND_EVENT_Demo70_02, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + {"Demo72_01", SND_EVENT_Demo72_01, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + {"Demo77_01", SND_EVENT_Demo77_01, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, + {"Demo79_01", SND_EVENT_Demo79_01, todoInititalizeSndEvent, todoExecuteSndEvent, nullptr}, +}; + +// clang-format on + +void dSndStateMgr_c::handleDemoEvent(const char *name) { + for (const SndEventDef *def = sSndEventDefs_DEMO; def < sSndEventDefs_DEMO + ARRAY_LENGTH(sSndEventDefs_DEMO); + def++) { + if (streq(name, def->eventName)) { + field_0x08C = def->eventId; + field_0x234 = def; + sEventExecuteCallback = def->executeCb; + if (def->initializeCb != nullptr) { + (def->initializeCb)(); + } + break; + } + } + + if (field_0x08C == SND_EVENT_0x98) { + field_0x08C = SND_EVENT_0x78; + } + + return; +} diff --git a/src/d/snd/d_snd_source_group.cpp b/src/d/snd/d_snd_source_group.cpp index a05f6406..6beda14f 100644 --- a/src/d/snd/d_snd_source_group.cpp +++ b/src/d/snd/d_snd_source_group.cpp @@ -39,7 +39,7 @@ void dSndSourceGroup_c::set(s32 sourceType, const char *name) { if (!assignedParam) { switch (sourceType) { - case SND_SOURCE_NPC_NRM: { + case SND_SOURCE_NPC_51: { mParam.field_0x00 = 300.0f; mParam.field_0x04 = 800.0; mParam.field_0x10 = 2200.0; diff --git a/src/d/snd/d_snd_source_mgr.cpp b/src/d/snd/d_snd_source_mgr.cpp index 5b7625b6..486c27a0 100644 --- a/src/d/snd/d_snd_source_mgr.cpp +++ b/src/d/snd/d_snd_source_mgr.cpp @@ -198,7 +198,7 @@ dSoundSourceIf_c *dSndSourceMgr_c::createSource(s32 sourceType, dAcBase_c *actor isModified = true; } - if (sourceType == SND_SOURCE_NPC_NRM) { + if (sourceType == SND_SOURCE_NPC_51) { const ActorBaseNamePair *pair = Actor_BaseActorName_Pairs; for (int i = 0; i < lbl_8057E394; i++) { if (streq(nameStr, Actor_BaseActorName_Pairs[i].variant)) { @@ -387,15 +387,15 @@ dSndSourceMgr_c::dSndSourceMgr_c() } void dSndSourceMgr_c::calcEnemyObjVolume() { - if (dSndStateMgr_c::GetInstance()->checkFlag0x94(0x100)) { + if (dSndStateMgr_c::GetInstance()->checkFlag0x94(dSndStateMgr_c::EVENT_MUTE_ENEMY_FULL)) { dSndControlPlayerMgr_c::GetInstance()->setEnemyMuteVolume(0.0f); - } else if (dSndStateMgr_c::GetInstance()->checkFlag0x94(0x80)) { + } else if (dSndStateMgr_c::GetInstance()->checkFlag0x94(dSndStateMgr_c::EVENT_MUTE_ENEMY_PARTIAL)) { dSndControlPlayerMgr_c::GetInstance()->setEnemyMuteVolume(0.3f); } - if (dSndStateMgr_c::GetInstance()->checkFlag0x94(0x400)) { + if (dSndStateMgr_c::GetInstance()->checkFlag0x94(dSndStateMgr_c::EVENT_MUTE_OBJ_FULL)) { dSndControlPlayerMgr_c::GetInstance()->setObjectMuteVolume(0.0f); - } else if (dSndStateMgr_c::GetInstance()->checkFlag0x94(0x200)) { + } else if (dSndStateMgr_c::GetInstance()->checkFlag0x94(dSndStateMgr_c::EVENT_MUTE_OBJ_PARTIAL)) { dSndControlPlayerMgr_c::GetInstance()->setObjectMuteVolume(0.3f); } } diff --git a/src/d/snd/d_snd_state_mgr.cpp b/src/d/snd/d_snd_state_mgr.cpp index 298ad65e..0331c350 100644 --- a/src/d/snd/d_snd_state_mgr.cpp +++ b/src/d/snd/d_snd_state_mgr.cpp @@ -45,7 +45,7 @@ dSndStateMgr_c::dSndStateMgr_c() field_0x128(-1), field_0x22C(0), field_0x230(0), - field_0x234(0), + field_0x234(nullptr), field_0x238(-1), field_0x23C(0), field_0x23D(0), diff --git a/src/toBeSorted/actor_info.cpp b/src/toBeSorted/actor_info.cpp index 49930124..ec4a11ad 100644 --- a/src/toBeSorted/actor_info.cpp +++ b/src/toBeSorted/actor_info.cpp @@ -425,106 +425,106 @@ static const ActorInfo sInfos[] = { { "MvElc", fProfile::OBJ_MOVE_ELEC, fProfile::OBJ_MOVE_ELEC, 0xFFFF, SND_SOURCE_OBJECT, 0}, {"MvLiftV", fProfile::OBJ_MOVE_LIFT_VOL, fProfile::OBJ_MOVE_LIFT_VOL, 0xFFFF, SND_SOURCE_OBJECT, 0}, { "NpcAdr", fProfile::NPC_ADR, fProfile::NPC_ADR, 310, SND_SOURCE_NPC_DRAGON, 0}, - {"NpcAkuH", fProfile::NPC_AKU_HUMAN, fProfile::NPC_AKU_HUMAN, 346, SND_SOURCE_NPC_NRM, 0}, - {"NpcAkum", fProfile::NPC_AKUMAKUN, fProfile::NPC_AKUMAKUN, 279, SND_SOURCE_NPC_NRM, 0}, - {"NpcAzFa", fProfile::NPC_AZUKARIYA_FATHER, fProfile::NPC_AZUKARIYA_FATHER, 298, SND_SOURCE_NPC_NRM, 0}, - {"NpcAzNi", fProfile::NPC_AZUKARIYA_NIGHT, fProfile::NPC_AZUKARIYA_NIGHT, 464, SND_SOURCE_NPC_NRM, 0}, - {"NpcBRvl", fProfile::NPC_BBRVL, fProfile::NPC_BBRVL, 261, 50, 0}, - {"NpcBdsw", fProfile::NPC_BDSW, fProfile::NPC_BDSW, 0xFFFF, 50, 0}, + {"NpcAkuH", fProfile::NPC_AKU_HUMAN, fProfile::NPC_AKU_HUMAN, 346, SND_SOURCE_NPC_51, 0}, + {"NpcAkum", fProfile::NPC_AKUMAKUN, fProfile::NPC_AKUMAKUN, 279, SND_SOURCE_NPC_51, 0}, + {"NpcAzFa", fProfile::NPC_AZUKARIYA_FATHER, fProfile::NPC_AZUKARIYA_FATHER, 298, SND_SOURCE_NPC_51, 0}, + {"NpcAzNi", fProfile::NPC_AZUKARIYA_NIGHT, fProfile::NPC_AZUKARIYA_NIGHT, 464, SND_SOURCE_NPC_51, 0}, + {"NpcBRvl", fProfile::NPC_BBRVL, fProfile::NPC_BBRVL, 261, SND_SOURCE_NPC_50, 0}, + {"NpcBdsw", fProfile::NPC_BDSW, fProfile::NPC_BDSW, 0xFFFF, SND_SOURCE_NPC_50, 0}, { "NpcBdz", fProfile::NPC_BDZ, fProfile::NPC_BDZ, 0xFFFF, 43, 0}, - { "NpcBgr", fProfile::NPC_BGR, fProfile::NPC_BGR, 298, SND_SOURCE_NPC_NRM, 0}, + { "NpcBgr", fProfile::NPC_BGR, fProfile::NPC_BGR, 298, SND_SOURCE_NPC_51, 0}, {"NpcBird", fProfile::NPC_BIRD, fProfile::NPC_BIRD, 0xFFFF, 43, 0}, - {"NpcCbFd", fProfile::NPC_CE_FRIEND, fProfile::NPC_CE_FRIEND, 278, SND_SOURCE_NPC_NRM, 0}, - {"NpcCbLd", fProfile::NPC_CE_LADY, fProfile::NPC_CE_LADY, 285, SND_SOURCE_NPC_NRM, 0}, - {"NpcChef", fProfile::NPC_CHEF, fProfile::NPC_CHEF, 299, SND_SOURCE_NPC_NRM, 0}, - {"NpcDgJg", fProfile::NPC_DIVE_GAME_JUDGE, fProfile::NPC_DIVE_GAME_JUDGE, 272, SND_SOURCE_NPC_NRM, 0}, - {"NpcDoML", fProfile::NPC_DOUGUYA_MOTHER_LOD, fProfile::NPC_DOUGUYA_MOTHER_LOD, 294, SND_SOURCE_NPC_NRM, 0}, - {"NpcDoMo", fProfile::NPC_DOUGUYA_MOTHER, fProfile::NPC_DOUGUYA_MOTHER, 294, SND_SOURCE_NPC_NRM, 0}, - {"NpcDoNi", fProfile::NPC_DOUGUYA_NIGHT, fProfile::NPC_DOUGUYA_NIGHT, 462, SND_SOURCE_NPC_NRM, 0}, + {"NpcCbFd", fProfile::NPC_CE_FRIEND, fProfile::NPC_CE_FRIEND, 278, SND_SOURCE_NPC_51, 0}, + {"NpcCbLd", fProfile::NPC_CE_LADY, fProfile::NPC_CE_LADY, 285, SND_SOURCE_NPC_51, 0}, + {"NpcChef", fProfile::NPC_CHEF, fProfile::NPC_CHEF, 299, SND_SOURCE_NPC_51, 0}, + {"NpcDgJg", fProfile::NPC_DIVE_GAME_JUDGE, fProfile::NPC_DIVE_GAME_JUDGE, 272, SND_SOURCE_NPC_51, 0}, + {"NpcDoML", fProfile::NPC_DOUGUYA_MOTHER_LOD, fProfile::NPC_DOUGUYA_MOTHER_LOD, 294, SND_SOURCE_NPC_51, 0}, + {"NpcDoMo", fProfile::NPC_DOUGUYA_MOTHER, fProfile::NPC_DOUGUYA_MOTHER, 294, SND_SOURCE_NPC_51, 0}, + {"NpcDoNi", fProfile::NPC_DOUGUYA_NIGHT, fProfile::NPC_DOUGUYA_NIGHT, 462, SND_SOURCE_NPC_51, 0}, { "NpcDrb", fProfile::NPC_DRB, fProfile::NPC_DRB, 319, 43, 0}, {"NpcDrbC", fProfile::NPC_DRBC, fProfile::NPC_DRBC, 320, 43, 0}, - { "NpcDsk", fProfile::NPC_DSK, fProfile::NPC_DSK, 258, SND_SOURCE_NPC_NRM, 0}, - {"NpcDskN", fProfile::NPC_DAISHINKAN_N, fProfile::NPC_DAISHINKAN_N, 340, SND_SOURCE_NPC_NRM, 0}, + { "NpcDsk", fProfile::NPC_DSK, fProfile::NPC_DSK, 258, SND_SOURCE_NPC_51, 0}, + {"NpcDskN", fProfile::NPC_DAISHINKAN_N, fProfile::NPC_DAISHINKAN_N, 340, SND_SOURCE_NPC_51, 0}, { "NpcFdr", fProfile::NPC_FDR, fProfile::NPC_FDR, 318, SND_SOURCE_NPC_DRAGON, 0}, - { "NpcGhm", fProfile::NPC_GHM, fProfile::NPC_GHM, 323, 50, 0}, - {"NpcGost", fProfile::NPC_TOILET_GHOST, fProfile::NPC_TOILET_GHOST, 300, SND_SOURCE_NPC_NRM, 0}, - { "NpcGra", fProfile::NPC_GRA, fProfile::NPC_GRA, 302, SND_SOURCE_NPC_NRM, 0}, - { "NpcGrc", fProfile::NPC_GRC, fProfile::NPC_GRC, 330, SND_SOURCE_NPC_NRM, 0}, - { "NpcGrd", fProfile::NPC_GRD, fProfile::NPC_GRD, 331, 50, 0}, - { "NpcGzl", fProfile::NPC_GZL, fProfile::NPC_GZL, 257, SND_SOURCE_NPC_NRM, 0}, - {"NpcIcgK", fProfile::NPC_ICGK, fProfile::NPC_ICGK, 460, SND_SOURCE_NPC_NRM, 0}, + { "NpcGhm", fProfile::NPC_GHM, fProfile::NPC_GHM, 323, SND_SOURCE_NPC_50, 0}, + {"NpcGost", fProfile::NPC_TOILET_GHOST, fProfile::NPC_TOILET_GHOST, 300, SND_SOURCE_NPC_51, 0}, + { "NpcGra", fProfile::NPC_GRA, fProfile::NPC_GRA, 302, SND_SOURCE_NPC_51, 0}, + { "NpcGrc", fProfile::NPC_GRC, fProfile::NPC_GRC, 330, SND_SOURCE_NPC_51, 0}, + { "NpcGrd", fProfile::NPC_GRD, fProfile::NPC_GRD, 331, SND_SOURCE_NPC_50, 0}, + { "NpcGzl", fProfile::NPC_GZL, fProfile::NPC_GZL, 257, SND_SOURCE_NPC_51, 0}, + {"NpcIcgK", fProfile::NPC_ICGK, fProfile::NPC_ICGK, 460, SND_SOURCE_NPC_51, 0}, { "NpcInv", fProfile::NPC_INV, fProfile::NPC_INV, 0xFFFF, 0xFF, 0}, - {"NpcJkML", fProfile::NPC_JUNK_MOTHER_LOD, fProfile::NPC_JUNK_MOTHER_LOD, 295, SND_SOURCE_NPC_NRM, 0}, - {"NpcJkMo", fProfile::NPC_JUNK_MOTHER, fProfile::NPC_JUNK_MOTHER, 295, SND_SOURCE_NPC_NRM, 0}, - {"NpcJkNi", fProfile::NPC_JUNK_NIGHT, fProfile::NPC_JUNK_NIGHT, 463, SND_SOURCE_NPC_NRM, 0}, - {"NpcKb2N", fProfile::NPC_KOBUN_B_NIGHT, fProfile::NPC_KOBUN_B_NIGHT, 459, SND_SOURCE_NPC_NRM, 0}, - { "NpcKbn", fProfile::NPC_KBN, fProfile::NPC_KBN, 262, SND_SOURCE_NPC_NRM, 0}, - {"NpcKbn2", fProfile::NPC_KBN2, fProfile::NPC_KBN2, 263, SND_SOURCE_NPC_NRM, 0}, + {"NpcJkML", fProfile::NPC_JUNK_MOTHER_LOD, fProfile::NPC_JUNK_MOTHER_LOD, 295, SND_SOURCE_NPC_51, 0}, + {"NpcJkMo", fProfile::NPC_JUNK_MOTHER, fProfile::NPC_JUNK_MOTHER, 295, SND_SOURCE_NPC_51, 0}, + {"NpcJkNi", fProfile::NPC_JUNK_NIGHT, fProfile::NPC_JUNK_NIGHT, 463, SND_SOURCE_NPC_51, 0}, + {"NpcKb2N", fProfile::NPC_KOBUN_B_NIGHT, fProfile::NPC_KOBUN_B_NIGHT, 459, SND_SOURCE_NPC_51, 0}, + { "NpcKbn", fProfile::NPC_KBN, fProfile::NPC_KBN, 262, SND_SOURCE_NPC_51, 0}, + {"NpcKbn2", fProfile::NPC_KBN2, fProfile::NPC_KBN2, 263, SND_SOURCE_NPC_51, 0}, { "NpcKen", fProfile::NPC_KENSEI, fProfile::NPC_KENSEI, 0xFFFF, SND_SOURCE_KENSEI, 0}, {"NpcKenT", fProfile::NPC_TALK_KENSEI, fProfile::NPC_TALK_KENSEI, 0xFFFF, SND_SOURCE_KENSEI, 0}, - {"NpcKnld", fProfile::NPC_KNIGHT_LEADER, fProfile::NPC_KNIGHT_LEADER, 271, SND_SOURCE_NPC_NRM, 0}, - {"NpcKyuE", fProfile::NPC_KYUI_ELDER, fProfile::NPC_KYUI_ELDER, 307, SND_SOURCE_NPC_NRM, 0}, - {"NpcKyuW", fProfile::NPC_KYUI_WIZARD, fProfile::NPC_KYUI_WIZARD, 308, SND_SOURCE_NPC_NRM, 0}, - {"NpcMHNi", fProfile::NPC_MED_HUS_NIGHT, fProfile::NPC_MED_HUS_NIGHT, 466, SND_SOURCE_NPC_NRM, 0}, - {"NpcMWNi", fProfile::NPC_MED_WIFE_NIGHT, fProfile::NPC_MED_WIFE_NIGHT, 465, SND_SOURCE_NPC_NRM, 0}, - {"NpcMlMg", fProfile::NPC_MOLE_MG, fProfile::NPC_MOLE_MG, 313, 50, 0}, - {"NpcMoEN", fProfile::NPC_MOLE_ES_NML, fProfile::NPC_MOLE_ES_NML, 345, 50, 0}, - {"NpcMoEl", fProfile::NPC_MOLE_ELDER, fProfile::NPC_MOLE_ELDER, 317, 50, 0}, - { "NpcMoN", fProfile::NPC_MOLE_NORMAL, fProfile::NPC_MOLE_NORMAL, 312, 50, 0}, - {"NpcMoN2", fProfile::NPC_MOLE_NORMAL2, fProfile::NPC_MOLE_NORMAL2, 312, 50, 0}, - { "NpcMoS", fProfile::NPC_MOLE_SAL, fProfile::NPC_MOLE_SAL, 474, 50, 0}, - { "NpcMoT", fProfile::NPC_MOLE_TACKLE, fProfile::NPC_MOLE_TACKLE, 315, 50, 0}, - {"NpcMoT2", fProfile::NPC_MOLE_TACKLE2, fProfile::NPC_MOLE_TACKLE2, 316, 50, 0}, - {"NpcMole", fProfile::NPC_MOLE, fProfile::NPC_MOLE, 345, 50, 0}, - { "NpcOim", fProfile::NPC_OIM, fProfile::NPC_OIM, 301, SND_SOURCE_NPC_NRM, 0}, - {"NpcOkyu", fProfile::NPC_ORD_KYUI, fProfile::NPC_ORD_KYUI, 304, SND_SOURCE_NPC_NRM, 0}, - { "NpcPcs", fProfile::NPC_PCS, fProfile::NPC_PCS, 469, SND_SOURCE_NPC_NRM, 0}, - { "NpcPdu", fProfile::NPC_PDU, fProfile::NPC_PDU, 274, SND_SOURCE_NPC_NRM, 0}, - { "NpcPma", fProfile::NPC_PMA, fProfile::NPC_PMA, 273, SND_SOURCE_NPC_NRM, 0}, - {"NpcResc", fProfile::NPC_RESCUE, fProfile::NPC_RESCUE, 291, SND_SOURCE_NPC_NRM, 0}, - { "NpcRvl", fProfile::NPC_RVL, fProfile::NPC_RVL, 261, SND_SOURCE_NPC_NRM, 0}, - {"NpcRvlL", fProfile::NPC_RIVAL_LOD, fProfile::NPC_RIVAL_LOD, 261, SND_SOURCE_NPC_NRM, 0}, - {"NpcRvlR", fProfile::NPC_REGRET_RIVAL, fProfile::NPC_REGRET_RIVAL, 261, SND_SOURCE_NPC_NRM, 0}, - {"NpcSAML", fProfile::NPC_SENPAIA_MOTHER_LOD, fProfile::NPC_SENPAIA_MOTHER_LOD, 296, SND_SOURCE_NPC_NRM, 0}, - {"NpcSAMo", fProfile::NPC_SENPAIA_MOTHER, fProfile::NPC_SENPAIA_MOTHER, 296, SND_SOURCE_NPC_NRM, 0}, - {"NpcSMnD", fProfile::NPC_SORAJIMA_MAN_D, fProfile::NPC_SORAJIMA_MAN_D, 297, SND_SOURCE_NPC_NRM, 0}, - {"NpcSMnE", fProfile::NPC_SORAJIMA_MAN_E, fProfile::NPC_SORAJIMA_MAN_E, 336, SND_SOURCE_NPC_NRM, 0}, - {"NpcSalS", fProfile::NPC_SALESMAN_S, fProfile::NPC_SALESMAN_S, 265, SND_SOURCE_NPC_NRM, 0}, - {"NpcSenb", fProfile::NPC_SENPAI_B, fProfile::NPC_SENPAI_B, 277, SND_SOURCE_NPC_NRM, 0}, - {"NpcSenp", fProfile::NPC_SENPAI, fProfile::NPC_SENPAI, 276, SND_SOURCE_NPC_NRM, 0}, - { "NpcSha", fProfile::NPC_SHA, fProfile::NPC_SHA, 275, SND_SOURCE_NPC_NRM, 0}, - { "NpcSkn", fProfile::NPC_SKN, fProfile::NPC_SKN, 259, SND_SOURCE_NPC_NRM, 0}, - {"NpcSkn2", fProfile::NPC_SKN2, fProfile::NPC_SKN2, 260, SND_SOURCE_NPC_NRM, 0}, + {"NpcKnld", fProfile::NPC_KNIGHT_LEADER, fProfile::NPC_KNIGHT_LEADER, 271, SND_SOURCE_NPC_51, 0}, + {"NpcKyuE", fProfile::NPC_KYUI_ELDER, fProfile::NPC_KYUI_ELDER, 307, SND_SOURCE_NPC_51, 0}, + {"NpcKyuW", fProfile::NPC_KYUI_WIZARD, fProfile::NPC_KYUI_WIZARD, 308, SND_SOURCE_NPC_51, 0}, + {"NpcMHNi", fProfile::NPC_MED_HUS_NIGHT, fProfile::NPC_MED_HUS_NIGHT, 466, SND_SOURCE_NPC_51, 0}, + {"NpcMWNi", fProfile::NPC_MED_WIFE_NIGHT, fProfile::NPC_MED_WIFE_NIGHT, 465, SND_SOURCE_NPC_51, 0}, + {"NpcMlMg", fProfile::NPC_MOLE_MG, fProfile::NPC_MOLE_MG, 313, SND_SOURCE_NPC_50, 0}, + {"NpcMoEN", fProfile::NPC_MOLE_ES_NML, fProfile::NPC_MOLE_ES_NML, 345, SND_SOURCE_NPC_50, 0}, + {"NpcMoEl", fProfile::NPC_MOLE_ELDER, fProfile::NPC_MOLE_ELDER, 317, SND_SOURCE_NPC_50, 0}, + { "NpcMoN", fProfile::NPC_MOLE_NORMAL, fProfile::NPC_MOLE_NORMAL, 312, SND_SOURCE_NPC_50, 0}, + {"NpcMoN2", fProfile::NPC_MOLE_NORMAL2, fProfile::NPC_MOLE_NORMAL2, 312, SND_SOURCE_NPC_50, 0}, + { "NpcMoS", fProfile::NPC_MOLE_SAL, fProfile::NPC_MOLE_SAL, 474, SND_SOURCE_NPC_50, 0}, + { "NpcMoT", fProfile::NPC_MOLE_TACKLE, fProfile::NPC_MOLE_TACKLE, 315, SND_SOURCE_NPC_50, 0}, + {"NpcMoT2", fProfile::NPC_MOLE_TACKLE2, fProfile::NPC_MOLE_TACKLE2, 316, SND_SOURCE_NPC_50, 0}, + {"NpcMole", fProfile::NPC_MOLE, fProfile::NPC_MOLE, 345, SND_SOURCE_NPC_50, 0}, + { "NpcOim", fProfile::NPC_OIM, fProfile::NPC_OIM, 301, SND_SOURCE_NPC_51, 0}, + {"NpcOkyu", fProfile::NPC_ORD_KYUI, fProfile::NPC_ORD_KYUI, 304, SND_SOURCE_NPC_51, 0}, + { "NpcPcs", fProfile::NPC_PCS, fProfile::NPC_PCS, 469, SND_SOURCE_NPC_51, 0}, + { "NpcPdu", fProfile::NPC_PDU, fProfile::NPC_PDU, 274, SND_SOURCE_NPC_51, 0}, + { "NpcPma", fProfile::NPC_PMA, fProfile::NPC_PMA, 273, SND_SOURCE_NPC_51, 0}, + {"NpcResc", fProfile::NPC_RESCUE, fProfile::NPC_RESCUE, 291, SND_SOURCE_NPC_51, 0}, + { "NpcRvl", fProfile::NPC_RVL, fProfile::NPC_RVL, 261, SND_SOURCE_NPC_51, 0}, + {"NpcRvlL", fProfile::NPC_RIVAL_LOD, fProfile::NPC_RIVAL_LOD, 261, SND_SOURCE_NPC_51, 0}, + {"NpcRvlR", fProfile::NPC_REGRET_RIVAL, fProfile::NPC_REGRET_RIVAL, 261, SND_SOURCE_NPC_51, 0}, + {"NpcSAML", fProfile::NPC_SENPAIA_MOTHER_LOD, fProfile::NPC_SENPAIA_MOTHER_LOD, 296, SND_SOURCE_NPC_51, 0}, + {"NpcSAMo", fProfile::NPC_SENPAIA_MOTHER, fProfile::NPC_SENPAIA_MOTHER, 296, SND_SOURCE_NPC_51, 0}, + {"NpcSMnD", fProfile::NPC_SORAJIMA_MAN_D, fProfile::NPC_SORAJIMA_MAN_D, 297, SND_SOURCE_NPC_51, 0}, + {"NpcSMnE", fProfile::NPC_SORAJIMA_MAN_E, fProfile::NPC_SORAJIMA_MAN_E, 336, SND_SOURCE_NPC_51, 0}, + {"NpcSalS", fProfile::NPC_SALESMAN_S, fProfile::NPC_SALESMAN_S, 265, SND_SOURCE_NPC_51, 0}, + {"NpcSenb", fProfile::NPC_SENPAI_B, fProfile::NPC_SENPAI_B, 277, SND_SOURCE_NPC_51, 0}, + {"NpcSenp", fProfile::NPC_SENPAI, fProfile::NPC_SENPAI, 276, SND_SOURCE_NPC_51, 0}, + { "NpcSha", fProfile::NPC_SHA, fProfile::NPC_SHA, 275, SND_SOURCE_NPC_51, 0}, + { "NpcSkn", fProfile::NPC_SKN, fProfile::NPC_SKN, 259, SND_SOURCE_NPC_51, 0}, + {"NpcSkn2", fProfile::NPC_SKN2, fProfile::NPC_SKN2, 260, SND_SOURCE_NPC_51, 0}, {"NpcSlFB", fProfile::NPC_SLFB, fProfile::NPC_SLFB, 0xFFFF, 43, 0}, {"NpcSlFl", fProfile::NPC_SLFL, fProfile::NPC_SLFL, 0xFFFF, 43, 0}, - {"NpcSlKy", fProfile::NPC_SALBAGE_MORRY, fProfile::NPC_SALBAGE_MORRY, 304, SND_SOURCE_NPC_NRM, 0}, + {"NpcSlKy", fProfile::NPC_SALBAGE_MORRY, fProfile::NPC_SALBAGE_MORRY, 304, SND_SOURCE_NPC_51, 0}, {"NpcSlRp", fProfile::NPC_SLRP, fProfile::NPC_SLRP, 477, 43, 0}, {"NpcSlb2", fProfile::NPC_SLB2, fProfile::NPC_SLB2, 354, 43, 0}, {"NpcSlrb", fProfile::NPC_SLB, fProfile::NPC_SLB, 0xFFFF, 43, 0}, {"NpcSltk", fProfile::NPC_SLTK, fProfile::NPC_SLTK, 0xFFFF, 0xFF, 0}, - {"NpcSma2", fProfile::NPC_SMA2, fProfile::NPC_SMA2, 286, SND_SOURCE_NPC_NRM, 0}, - {"NpcSma3", fProfile::NPC_SMA3, fProfile::NPC_SMA3, 287, SND_SOURCE_NPC_NRM, 0}, - {"NpcSoBo", fProfile::NPC_SORAJIMA_BOY, fProfile::NPC_SORAJIMA_BOY, 284, SND_SOURCE_NPC_NRM, 0}, - {"NpcSoFa", fProfile::NPC_SORAJIMA_FATHER, fProfile::NPC_SORAJIMA_FATHER, 282, SND_SOURCE_NPC_NRM, 0}, - { "NpcSoG", fProfile::NPC_SORAJIMA_GIRL, fProfile::NPC_SORAJIMA_GIRL, 288, SND_SOURCE_NPC_NRM, 0}, - {"NpcSoMo", fProfile::NPC_SORAJIMA_MOTHER, fProfile::NPC_SORAJIMA_MOTHER, 283, SND_SOURCE_NPC_NRM, 0}, - {"NpcSoma", fProfile::NPC_SORAJIMA_MALE, fProfile::NPC_SORAJIMA_MALE, 281, SND_SOURCE_NPC_NRM, 0}, - {"NpcSowo", fProfile::NPC_SORAJIMA_FEMALE, fProfile::NPC_SORAJIMA_FEMALE, 280, SND_SOURCE_NPC_NRM, 0}, + {"NpcSma2", fProfile::NPC_SMA2, fProfile::NPC_SMA2, 286, SND_SOURCE_NPC_51, 0}, + {"NpcSma3", fProfile::NPC_SMA3, fProfile::NPC_SMA3, 287, SND_SOURCE_NPC_51, 0}, + {"NpcSoBo", fProfile::NPC_SORAJIMA_BOY, fProfile::NPC_SORAJIMA_BOY, 284, SND_SOURCE_NPC_51, 0}, + {"NpcSoFa", fProfile::NPC_SORAJIMA_FATHER, fProfile::NPC_SORAJIMA_FATHER, 282, SND_SOURCE_NPC_51, 0}, + { "NpcSoG", fProfile::NPC_SORAJIMA_GIRL, fProfile::NPC_SORAJIMA_GIRL, 288, SND_SOURCE_NPC_51, 0}, + {"NpcSoMo", fProfile::NPC_SORAJIMA_MOTHER, fProfile::NPC_SORAJIMA_MOTHER, 283, SND_SOURCE_NPC_51, 0}, + {"NpcSoma", fProfile::NPC_SORAJIMA_MALE, fProfile::NPC_SORAJIMA_MALE, 281, SND_SOURCE_NPC_51, 0}, + {"NpcSowo", fProfile::NPC_SORAJIMA_FEMALE, fProfile::NPC_SORAJIMA_FEMALE, 280, SND_SOURCE_NPC_51, 0}, { "NpcStr", fProfile::NPC_STR, fProfile::NPC_STR, 0xFFFF, 0xFF, 0}, { "NpcSui", fProfile::NPC_SUISEI, fProfile::NPC_SUISEI, 344, 43, 0}, - {"NpcSuiN", fProfile::NPC_SUISEI_NORMAL, fProfile::NPC_SUISEI_NORMAL, 309, 50, 0}, + {"NpcSuiN", fProfile::NPC_SUISEI_NORMAL, fProfile::NPC_SUISEI_NORMAL, 309, SND_SOURCE_NPC_50, 0}, {"NpcSuiS", fProfile::NPC_SUISEI_SUB, fProfile::NPC_SUISEI_SUB, 309, 43, 0}, { "NpcTdr", fProfile::NPC_TDR, fProfile::NPC_TDR, 322, SND_SOURCE_NPC_DRAGON, 0}, {"NpcTdrB", fProfile::NPC_TDRB, fProfile::NPC_TDRB, 322, SND_SOURCE_OBJECT, 0}, { "NpcTds", fProfile::NPC_TDS, fProfile::NPC_TDS, 478, 0xFF, 0}, - { "NpcTer", fProfile::NPC_TERRY, fProfile::NPC_TERRY, 264, SND_SOURCE_NPC_NRM, 0}, + { "NpcTer", fProfile::NPC_TERRY, fProfile::NPC_TERRY, 264, SND_SOURCE_NPC_51, 0}, { "NpcTke", fProfile::NPC_TKE, fProfile::NPC_TKE, 0xFFFF, 0xFF, 0}, { "NpcTmn", fProfile::NPC_TMN, fProfile::NPC_TMN, 0xFFFF, 0xFF, 0}, - { "NpcYim", fProfile::NPC_YIM, fProfile::NPC_YIM, 311, SND_SOURCE_NPC_NRM, 0}, - { "NpcZld", fProfile::NPC_ZLD, fProfile::NPC_ZLD, 256, SND_SOURCE_NPC_NRM, 0}, - {"Npckyu1", fProfile::NPC_KYUI_FIRST, fProfile::NPC_KYUI_FIRST, 303, SND_SOURCE_NPC_NRM, 0}, - {"Npckyu3", fProfile::NPC_KYUI_THIRD, fProfile::NPC_KYUI_THIRD, 305, SND_SOURCE_NPC_NRM, 0}, - {"Npckyu4", fProfile::NPC_KYUI4, fProfile::NPC_KYUI4, 306, SND_SOURCE_NPC_NRM, 0}, + { "NpcYim", fProfile::NPC_YIM, fProfile::NPC_YIM, 311, SND_SOURCE_NPC_51, 0}, + { "NpcZld", fProfile::NPC_ZLD, fProfile::NPC_ZLD, 256, SND_SOURCE_NPC_51, 0}, + {"Npckyu1", fProfile::NPC_KYUI_FIRST, fProfile::NPC_KYUI_FIRST, 303, SND_SOURCE_NPC_51, 0}, + {"Npckyu3", fProfile::NPC_KYUI_THIRD, fProfile::NPC_KYUI_THIRD, 305, SND_SOURCE_NPC_51, 0}, + {"Npckyu4", fProfile::NPC_KYUI4, fProfile::NPC_KYUI4, 306, SND_SOURCE_NPC_51, 0}, { "NusiB", fProfile::B_NUSI, fProfile::B_NUSI, 0xFFFF, SND_SOURCE_BOSS_NUSI, 0}, { "NusiBt", fProfile::B_NUSI_BULLET, fProfile::B_NUSI_BULLET, 0xFFFF, SND_SOURCE_BULLET, 0}, {"NusiNpc", fProfile::NUSI_NPC, fProfile::NUSI_NPC, 0xFFFF, SND_SOURCE_NPC_NUSI, 0},