diff options
| author | robojumper <robojumper@gmail.com> | 2025-06-13 11:21:04 +0200 |
|---|---|---|
| committer | robojumper <robojumper@gmail.com> | 2025-09-13 10:49:03 +0200 |
| commit | f9e95f9bb03b9474bbee85b03121c9b4e158aea4 (patch) | |
| tree | a99cd7311da8ceb83c86e850120ce780a9af3bc1 /include | |
| parent | a30123ac3d0f998fdc62027092fa63e256b2e163 (diff) | |
More d/snd
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/d_sc_game.h | 4 | ||||
| -rw-r--r-- | include/d/snd/d_snd_bgm_mgr.h | 139 | ||||
| -rw-r--r-- | include/d/snd/d_snd_bgm_sound.h | 27 | ||||
| -rw-r--r-- | include/d/snd/d_snd_checkers.h | 14 | ||||
| -rw-r--r-- | include/d/snd/d_snd_control_player_mgr.h | 2 | ||||
| -rw-r--r-- | include/d/snd/d_snd_mgr.h | 4 | ||||
| -rw-r--r-- | include/d/snd/d_snd_player_mgr.h | 9 | ||||
| -rw-r--r-- | include/d/snd/d_snd_sound.h | 40 | ||||
| -rw-r--r-- | include/d/snd/d_snd_source.h | 5 | ||||
| -rw-r--r-- | include/d/snd/d_snd_source_enums.h | 1 | ||||
| -rw-r--r-- | include/d/snd/d_snd_source_mgr.h | 5 | ||||
| -rw-r--r-- | include/d/snd/d_snd_stage_data.h | 197 | ||||
| -rw-r--r-- | include/d/snd/d_snd_state_mgr.h | 139 | ||||
| -rw-r--r-- | include/d/snd/d_snd_wzsound.h | 706 | ||||
| -rw-r--r-- | include/nw4r/snd/snd_SoundHandle.h | 4 | ||||
| -rw-r--r-- | include/toBeSorted/music_mgrs.h | 38 |
16 files changed, 1280 insertions, 54 deletions
diff --git a/include/d/d_sc_game.h b/include/d/d_sc_game.h index ec04ea82..01b0f7bc 100644 --- a/include/d/d_sc_game.h +++ b/include/d/d_sc_game.h @@ -88,6 +88,10 @@ struct SpawnInfo { return (Trial)trial; } + const char *getStageName() const { + return stageName; + } + bool isNight() { return getTimeOfDay() == NIGHT; } diff --git a/include/d/snd/d_snd_bgm_mgr.h b/include/d/snd/d_snd_bgm_mgr.h new file mode 100644 index 00000000..32de6a66 --- /dev/null +++ b/include/d/snd/d_snd_bgm_mgr.h @@ -0,0 +1,139 @@ +#ifndef D_SND_BGM_MGR_H +#define D_SND_BGM_MGR_H + +#include "common.h" +#include "d/snd/d_snd_actor.h" +#include "d/snd/d_snd_sound.h" +#include "d/snd/d_snd_util.h" +#include "nw4r/snd/snd_FxReverbStdDpl2.h" +#include "nw4r/ut/ut_list.h" + +SND_DISPOSER_FORWARD_DECL(dSndBgmMgr_c); + +class dSndBgmSound_c; +class dSndBgmBattleSound_c; + +// Previous Ghidra name: FanfareSoundMgr +class dSndBgmMgr_c { +public: + SND_DISPOSER_MEMBERS(dSndBgmMgr_c); + +public: + enum BgmSoundList_e { + BGM_LIST_PREPARING = 0, + BGM_LIST_PLAYING = 1, + BGM_LIST_STOPPED = 2, + + BGM_LIST_MAX = 3, + }; + + dSndBgmMgr_c(); + + bool playBgm(u32 soundId, s32 fadeFrames, bool paused); + bool prepareBgm(u32 soundId, u32 startOffset); + void stopAllBgm(s32 fadeFrames); + + dSndBgmSound_c *getSoundHandleForBgm(u32 soundId, u32 startOffset); + bool isPlayingBgmSoundId(u32 soundId) const; + + bool isPreparingBgmSoundId(u32 soundId) const; + bool isFadingOutBgmSoundId(u32 soundId) const; + bool isPreparingBgmSoundIdWithStartOffset(u32 soundId, u32 startOffset) const; + bool isPreparedBgmSoundId(u32 soundId) const; + + void registSound(dSndSound_c *sound); + void unregistSound(dSndSound_c *sound); + + dSndSound_c *getFanSoundHandleForFan2(u32 soundId); + dSndSound_c *getSoundHandleCurrentlyPlayingFanSound(u32 soundId); + bool isCurrentlyPlayingFanSound(u32 soundId) const; + bool hasPlayingFanSounds() const; + + bool playFanSound(u32 soundId); + bool prepareFanSound(u32 soundId); + + void playDelayedSound(u32 soundId, s32 delay); + void cancelDelayedSound(); + void cancelDelayedBgm(); + + dSndBgmSound_c *getBgmSoundByIndex(u32 idx); + + /** + * E.g. Lizalfos fight in ET. Note that in the ET case, this is only called when triggering + * the fight without a cutscene, the cutscene code runs through "ELizarufos_c_opening" + */ + bool beginBgmBattleRoom(); + /** Runs when the fight is over, no matter how you started it */ + bool endBgmBattleRoom(); + +private: + bool stopBgmSound(dSndBgmSound_c *sound, s32 fadeFrames); + void checkForPrepareStoppedBgmSound(u32 stoppedSoundId); + dSndBgmSound_c *findNewBgmSoundHandle(); + dSndBgmSound_c *findIdleBgmSoundHandle(); + bool prepareBgmSound(u32 soundId, dSndBgmSound_c *handle, u32 startOffset); + bool startAdditionalBgm(u32 soundId); + + bool playBattleBgm(u32 soundId, bool immediately); + + /** Used to mute other BGM when battle music is playing */ + void setBgmHandleIdxVolume(u32 handleIdx, f32 volume, s32 fadeFrames); + + bool isBgmHandleIdxPlayingSoundId(u32 handleIdx, u32 soundId); + bool stopBgmHandleIdx(u32 handleIdx, s32 fadeFrames); + + void calcLists(); + + void addToBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound); + void appendToBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound); + void removeFromBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound); + void removeFromAllBgmSoundLists(dSndBgmSound_c *sound); + bool isInBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound); + dSndBgmSound_c *getFirstInBgmSoundList(BgmSoundList_e list); + dSndBgmSound_c *getNextInBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound); + dSndBgmSound_c *getLastInBgmSoundList(BgmSoundList_e list); + + bool startDelayedSound(); + void calcDelayedSound(); + + dSndBgmSound_c *getBgmSoundHandleForId(u32 soundId) const; + + dSndSound_c *getFreeFanSoundHandle(); + dSndSound_c *getFanSoundHandleForFan(u32 soundId); + void stopFanSounds(s32 fadeFrames); + + + bool isSoundRegist(dSndSound_c *sound); + + /* 0x010 */ nw4r::snd::FxReverbStdDpl2 mFx; + /* 0x240 */ UNKWORD field_0x240; + /* 0x244 */ UNKWORD field_0x244; + /* 0x248 */ UNKWORD field_0x248; + /* 0x24C */ u32 mScheduledSoundId; + /* 0x250 */ s32 mScheduledSoundDelay; + /* 0x254 */ dSndBgmSound_c *mBgmSounds[7]; + /* 0x270 */ dSndBgmSound_c *field_0x270; + /* 0x274 */ UNKWORD field_0x274; + /* 0x278 */ nw4r::ut::List mBgmSoundLists[BGM_LIST_MAX]; // node offset 0xF0 -> dSndBgmSound_c + /* 0x29C */ UNKWORD field_0x29C; + /* 0x2A0 */ dSndActor_c mSoundActor; + /* 0x2F4 */ f32 field_0x2F4; + /* 0x2F8 */ s32 field_0x2F8; + /* 0x2FC */ u8 field_0x2FC; + /* 0x300 */ s32 field_0x300; + /* 0x304 */ u8 field_0x304; + /* 0x305 */ u8 field_0x305; + /* 0x306 */ u8 field_0x306; + /* 0x307 */ u8 field_0x307; + /* 0x308 */ u8 field_0x308; + /* 0x30C */ u32 field_0x30C[3]; + /* 0x318 */ u32 field_0x318[3]; + /* 0x324 */ u32 field_0x324[3]; + /* 0x330 */ u8 field_0x330[3]; + /* 0x333 */ u8 field_0x333; + /* 0x334 */ dSndSound_c *mFanSounds[3]; + /* 0x340 */ u8 field_0x340; + /* 0x344 */ nw4r::ut::List mAllSounds; // node offset 0x8 -> dSndSound_c +}; + +#endif diff --git a/include/d/snd/d_snd_bgm_sound.h b/include/d/snd/d_snd_bgm_sound.h new file mode 100644 index 00000000..f7fcb511 --- /dev/null +++ b/include/d/snd/d_snd_bgm_sound.h @@ -0,0 +1,27 @@ +#ifndef D_SND_BGM_SOUND_H +#define D_SND_BGM_SOUND_H + +#include "d/snd/d_snd_sound.h" +#include "nw4r/snd/snd_SoundStartable.h" +#include "nw4r/ut/ut_list.h" + +class dSndBgmSound_c : public dSndSound_c { +public: + dSndBgmSound_c(); + + virtual void init(nw4r::snd::SoundStartable &startable, s32 idx); // vt 0x28 + + bool isPreparedSoundId(u32 soundId) const { + return IsPrepared() && !mIsRunning && GetId() == soundId; + } + +private: + /* 0x0F0 */ nw4r::ut::Node mBgmMgrNode; +}; + +class dSndBgmBattleSound_c : public dSndBgmSound_c { +public: + dSndBgmBattleSound_c(); +}; + +#endif diff --git a/include/d/snd/d_snd_checkers.h b/include/d/snd/d_snd_checkers.h index d18c2777..25613dc0 100644 --- a/include/d/snd/d_snd_checkers.h +++ b/include/d/snd/d_snd_checkers.h @@ -1,8 +1,9 @@ #ifndef D_SND_CHECKERS_H #define D_SND_CHECKERS_H +#include "common.h" +#include "d/snd/d_snd_bgm_mgr.h" #include "nw4r/snd/snd_SoundHandle.h" -#include "toBeSorted/music_mgrs.h" class SoundPropertiesChecker { public: @@ -26,7 +27,7 @@ public: return; } - if (fn_803721F0(FANFARE_SOUND_MGR, pHandle.GetId())) { + if (dSndBgmMgr_c::GetInstance()->isPreparedBgmSoundId(pHandle.GetId())) { if (mpCounter3 != nullptr) { (*mpCounter3)++; } else { @@ -35,7 +36,7 @@ public: return; } - if (fn_803720E0(FANFARE_SOUND_MGR, pHandle.GetId())) { + if (dSndBgmMgr_c::GetInstance()->isPreparingBgmSoundId(pHandle.GetId())) { if (mpCounter3 != nullptr) { (*mpCounter3)++; } else { @@ -44,7 +45,7 @@ public: return; } - if (fn_80372070(FANFARE_SOUND_MGR, pHandle.GetId())) { + if (dSndBgmMgr_c::GetInstance()->isFadingOutBgmSoundId(pHandle.GetId())) { if (mpCounter4 != nullptr) { (*mpCounter4)++; } else { @@ -53,7 +54,9 @@ public: return; } - if (fn_803734C0(FANFARE_SOUND_MGR, pHandle.GetId()) && !fn_80373550(FANFARE_SOUND_MGR, pHandle.GetId())) { + if (dSndBgmMgr_c::GetInstance()->getFanSoundHandleForFan2(pHandle.GetId()) != nullptr && + !dSndBgmMgr_c::GetInstance()->isCurrentlyPlayingFanSound(pHandle.GetId())) { + // Why not mpCounter3??? mCounter3++; } } @@ -70,7 +73,6 @@ private: /* 0x24 */ u32 *mpCounter4; }; - // used at the very least when trying to finish Demise class IsCurrentSoundIdChecker { public: diff --git a/include/d/snd/d_snd_control_player_mgr.h b/include/d/snd/d_snd_control_player_mgr.h index 541268fb..caaad6a1 100644 --- a/include/d/snd/d_snd_control_player_mgr.h +++ b/include/d/snd/d_snd_control_player_mgr.h @@ -49,7 +49,7 @@ public: }; enum VolumeControlGroup { - /** PLAYER_BGM, PLAYER_BGM_BOSS */ + /** PLAYER_BGM, PLAYER_BGM_BATTLE */ CTRL_GROUP_BGM = 0, /** PLAYER_TG_SOUND - PLAYER_AREA_IN_WATER_LV */ CTRL_GROUP_STAGE_EFFECTS = 1, diff --git a/include/d/snd/d_snd_mgr.h b/include/d/snd/d_snd_mgr.h index 305e96ea..56ad1897 100644 --- a/include/d/snd/d_snd_mgr.h +++ b/include/d/snd/d_snd_mgr.h @@ -19,8 +19,8 @@ public: return sInstance; } - static nw4r::snd::SoundArchivePlayer* getPlayer() { - return sInstance->ArcPlayer::getPlayer(); + static nw4r::snd::SoundArchivePlayer& getPlayer() { + return *sInstance->ArcPlayer::getPlayer(); } private: diff --git a/include/d/snd/d_snd_player_mgr.h b/include/d/snd/d_snd_player_mgr.h index 5b83ee5d..fe03b987 100644 --- a/include/d/snd/d_snd_player_mgr.h +++ b/include/d/snd/d_snd_player_mgr.h @@ -51,16 +51,21 @@ public: bool loadDemoArchive(const char *demoArchiveName); const char *getSoundArchivePath(); u32 convertLabelStringToSoundId(const char *label) const; + static bool isBgmPlayerId(u32 id); nw4r::snd::SoundArchivePlayer &getSoundArchivePlayerForType(u8 sourceType); bool canUseThisPlayer(u8 sourceType) const; + void stopAllSound(); + enum PlayerMgrFlag_e { MGR_HBM = 0x1, MGR_UNK_0x2 = 0x2, MGR_PAUSE = 0x4, MGR_MAP = 0x8, MGR_HELP = 0x10, + + MGR_UNK_0x80 = 0x80, }; bool checkFlag(u32 mask) const { @@ -111,8 +116,8 @@ public: enum PlayerIndex_e { /** Background music */ PLAYER_BGM = 0, - /** Background music, boss battle */ - PLAYER_BGM_BOSS = 1, + /** Background music, battles */ + PLAYER_BGM_BATTLE = 1, /** "fanfare?" */ PLAYER_FAN = 2, /** small sound effects, only a few (UI navigation related) */ diff --git a/include/d/snd/d_snd_sound.h b/include/d/snd/d_snd_sound.h index c2b865da..c1093631 100644 --- a/include/d/snd/d_snd_sound.h +++ b/include/d/snd/d_snd_sound.h @@ -173,32 +173,37 @@ public: void linkCtrl(dSndControlSound_c *); void unlinkCtrl(dSndControlSound_c *); -protected: - bool cannotStart() const { + bool isPlaying() const { return mIsRunning && !mIsFadingOut && IsAttachedSound(); } - bool isRunning() const { - return mIsRunning && IsAttachedSound(); + bool isPlayingSoundId(u32 soundId) const { + return mIsRunning && !mIsFadingOut && GetId() == soundId; } - bool isPreparing() const { - return mIsPreparing && !mIsRunning; + bool isPreparingSoundId(u32 soundId) const { + return mIsPreparing && !mIsRunning && GetId() == soundId; + } + + bool isFadingOutSoundId(u32 soundId) const { + return mIsFadingOut && IsAttachedSound(); + } + + bool isPreparingSoundIdWithStartOffset(u32 soundId, u32 offset) const { + return isPreparingSoundId(soundId) && (offset == 0 || mPrevStartOffset == offset); } - bool canCancel() const { + bool hasState() const { return mIsRunning || mIsPreparing || IsAttachedSound(); } - bool isPreparingSoundId(u32 soundId) const { - bool ret = mIsPreparing; - if (ret) { - ret = !mIsRunning; - } - if (ret) { - ret = GetId() == soundId; - } - return ret; +protected: + bool isRunning() const { + return mIsRunning && IsAttachedSound(); + } + + bool isPreparing() const { + return mIsPreparing && !mIsRunning; } void resetControls(); @@ -206,8 +211,7 @@ protected: void setControlValue(dSndControlSound_c *ctrl, f32 value, s32 frames); - /* 0x08 */ u8 _0x08[0x10 - 0x08]; - + /* 0x08 */ nw4r::ut::Node mBgmMgrNode; /* 0x10 */ u32 mPrevStartOffset; /* 0x14 */ bool mIsPreparing; /* 0x15 */ bool mPauseFlag; diff --git a/include/d/snd/d_snd_source.h b/include/d/snd/d_snd_source.h index 946589ea..d2db73d0 100644 --- a/include/d/snd/d_snd_source.h +++ b/include/d/snd/d_snd_source.h @@ -19,6 +19,7 @@ public: static u32 getCharacterTalkSoundId(u32 baseSoundId, dSoundSource_c *source); u32 getRemoConSoundVariant(u32 soundId) const; + s32 getRoomId() const; // This is where it gets a bit wild and this class starts mixing in overrides between // new virtual functions, which causes the vtable to list these functions in exactly this @@ -86,10 +87,10 @@ private: // at 0x04: dSnd3DActor_c sub-object // at 0x58: thunk-vtable - /* 0xE8 */ nw4r::ut::Node mMgrLink; + /* 0x0E8 */ nw4r::ut::Node mMgrLink; /* 0x0F0 */ const char *mpName; /* 0x0F4 */ UNKWORD field_0x0F4; - /* 0x0F8 */ dAcBase_c *mpPlayer; + /* 0x0F8 */ dAcBase_c *mpActor; /* 0x0FC */ u8 mSourceCategory; /* 0x0FD */ u8 mSourceType; /* 0x0FE */ u8 field_0x0FE; diff --git a/include/d/snd/d_snd_source_enums.h b/include/d/snd/d_snd_source_enums.h index d4ebe17c..8ce423dc 100644 --- a/include/d/snd/d_snd_source_enums.h +++ b/include/d/snd/d_snd_source_enums.h @@ -19,6 +19,7 @@ enum SoundSourceType_e { // 10-31: Enemy? (2) SND_SOURCE_ENEMY_10 = 10, + SND_SOURCE_SPARK = 17, SND_SOURCE_BIGBOSS = 20, SND_SOURCE_GIRAHUMU_3 = 24, SND_SOURCE_BULLET = 29, diff --git a/include/d/snd/d_snd_source_mgr.h b/include/d/snd/d_snd_source_mgr.h index 5582b2d3..272c75a2 100644 --- a/include/d/snd/d_snd_source_mgr.h +++ b/include/d/snd/d_snd_source_mgr.h @@ -22,11 +22,16 @@ public: void playFlowSound(u32 id); static s32 getSourceCategoryForSourceType(s32 sourceType, const char *name); + static dSoundSource_c *getBoomerangSource() { + return GetInstance()->mpBoomerangSource; + } + private: static bool isCertainEnemyType(dSoundSource_c *source); void removeSourceFromList(dSoundSource_c *source, nw4r::ut::List *list); void clearSourceLists(); void clearSourceList(nw4r::ut::List *list); + s32 getPlayerSourceRoomId() const; /* 0x0010 */ u8 field_0x0010; /* 0x0011 */ u8 field_0x0011; diff --git a/include/d/snd/d_snd_stage_data.h b/include/d/snd/d_snd_stage_data.h new file mode 100644 index 00000000..96dce3d4 --- /dev/null +++ b/include/d/snd/d_snd_stage_data.h @@ -0,0 +1,197 @@ +#ifndef D_SND_STATE_DEF_H +#define D_SND_STATE_DEF_H + +#include "common.h" + +struct dSndStageInfo { + /* 0x00 */ const char *stageName; + /* 0x04 */ s32 layer; + /* 0x08 */ u32 unk1; + /* 0x0C */ u32 unk2; + /* 0x10 */ u32 unk3; + /* 0x14 */ u32 unk4; + /* 0x18 */ const char *demoName; + + + static const s32 sNumStageInfos; + static const dSndStageInfo sInfos[]; +}; + +enum SndStage_e { + /* 0x00 */ SND_STAGE_F100, + /* 0x01 */ SND_STAGE_F101, + /* 0x02 */ SND_STAGE_F102, + /* 0x03 */ SND_STAGE_F102_1, + /* 0x04 */ SND_STAGE_F103_L13, + /* 0x05 */ SND_STAGE_F103, + /* 0x06 */ SND_STAGE_F200, + /* 0x07 */ SND_STAGE_F201_1, + /* 0x08 */ SND_STAGE_F201_2, + /* 0x09 */ SND_STAGE_F201_3, + /* 0x0A */ SND_STAGE_F201_4, + /* 0x0B */ SND_STAGE_F202, + /* 0x0C */ SND_STAGE_F300, + /* 0x0D */ SND_STAGE_F300_1, + /* 0x0E */ SND_STAGE_F300_4_L13, + /* 0x0F */ SND_STAGE_F300_4, + /* 0x10 */ SND_STAGE_F301, + /* 0x11 */ SND_STAGE_F301_1, + /* 0x12 */ SND_STAGE_F301_2, + /* 0x13 */ SND_STAGE_F301_3, + /* 0x14 */ SND_STAGE_F301_4_L2, + /* 0x15 */ SND_STAGE_F301_4, + /* 0x16 */ SND_STAGE_F301_6, + /* 0x17 */ SND_STAGE_F301_7, + /* 0x18 */ SND_STAGE_F302_L13, + /* 0x19 */ SND_STAGE_F302, + /* 0x1A */ SND_STAGE_F400_L13, + /* 0x1B */ SND_STAGE_F400, + /* 0x1C */ SND_STAGE_F401_L2, + /* 0x1D */ SND_STAGE_F401_L3, + /* 0x1E */ SND_STAGE_F401_L4, + /* 0x1F */ SND_STAGE_F401_L13, + /* 0x20 */ SND_STAGE_F401_L14, + /* 0x21 */ SND_STAGE_F401_L15, + /* 0x22 */ SND_STAGE_F401, + /* 0x23 */ SND_STAGE_F403_L13, + /* 0x24 */ SND_STAGE_F403_L14, + /* 0x25 */ SND_STAGE_F403_L15, + /* 0x26 */ SND_STAGE_F403_L16, + /* 0x27 */ SND_STAGE_F403, + /* 0x28 */ SND_STAGE_F405, + /* 0x29 */ SND_STAGE_F406_L13, + /* 0x2A */ SND_STAGE_F406_L14, + /* 0x2B */ SND_STAGE_F406, + /* 0x2C */ SND_STAGE_D301, + /* 0x2D */ SND_STAGE_D301_1, + /* 0x2E */ SND_STAGE_D000, + /* 0x2F */ SND_STAGE_D100, + /* 0x30 */ SND_STAGE_D101, + /* 0x31 */ SND_STAGE_D200, + /* 0x32 */ SND_STAGE_D201, + /* 0x33 */ SND_STAGE_D201_1, + /* 0x34 */ SND_STAGE_D300, + /* 0x35 */ SND_STAGE_D300_1, + /* 0x36 */ SND_STAGE_D003_0, + /* 0x37 */ SND_STAGE_D003_1, + /* 0x38 */ SND_STAGE_D003_2, + /* 0x39 */ SND_STAGE_D003_3, + /* 0x3A */ SND_STAGE_D003_4, + /* 0x3B */ SND_STAGE_D003_5, + /* 0x3C */ SND_STAGE_D003_6, + /* 0x3D */ SND_STAGE_D003_7, + /* 0x3E */ SND_STAGE_D003_8, + /* 0x3F */ SND_STAGE_B100_L13, + /* 0x40 */ SND_STAGE_B100, + /* 0x41 */ SND_STAGE_B100_1_L13, + /* 0x42 */ SND_STAGE_B100_1, + /* 0x43 */ SND_STAGE_B101, + /* 0x44 */ SND_STAGE_B101_1_L13, + /* 0x45 */ SND_STAGE_B101_1, + /* 0x46 */ SND_STAGE_B200_L1, + /* 0x47 */ SND_STAGE_B200_L2, + /* 0x48 */ SND_STAGE_B200_L3, + /* 0x49 */ SND_STAGE_B200, + /* 0x4A */ SND_STAGE_B210_L13, + /* 0x4B */ SND_STAGE_B210_L14, + /* 0x4C */ SND_STAGE_B210, + /* 0x4D */ SND_STAGE_B201_L13, + /* 0x4E */ SND_STAGE_B201, + /* 0x4F */ SND_STAGE_B201_1_L13, + /* 0x50 */ SND_STAGE_B201_1, + /* 0x51 */ SND_STAGE_B300, + /* 0x52 */ SND_STAGE_B301_L13, + /* 0x53 */ SND_STAGE_B301, + /* 0x54 */ SND_STAGE_B003, + /* 0x55 */ SND_STAGE_B400_L13, + /* 0x56 */ SND_STAGE_B400_L14, + /* 0x57 */ SND_STAGE_B400, + /* 0x58 */ SND_STAGE_F100_1, + /* 0x59 */ SND_STAGE_F100_2, + /* 0x5A */ SND_STAGE_F102_2, + /* 0x5B */ SND_STAGE_F103_1_L13, + /* 0x5C */ SND_STAGE_F103_1_L14, + /* 0x5D */ SND_STAGE_F103_1, + /* 0x5E */ SND_STAGE_F210, + /* 0x5F */ SND_STAGE_F211, + /* 0x60 */ SND_STAGE_F221_L13, + /* 0x61 */ SND_STAGE_F221, + /* 0x62 */ SND_STAGE_F202_1, + /* 0x63 */ SND_STAGE_F202_2, + /* 0x64 */ SND_STAGE_F202_3, + /* 0x65 */ SND_STAGE_F202_4, + /* 0x66 */ SND_STAGE_F300_2, + /* 0x67 */ SND_STAGE_F300_3, + /* 0x68 */ SND_STAGE_F300_5, + /* 0x69 */ SND_STAGE_F303, + /* 0x6A */ SND_STAGE_S000, + /* 0x6B */ SND_STAGE_S100, + /* 0x6C */ SND_STAGE_S200, + /* 0x6D */ SND_STAGE_S300, + /* 0x6E */ SND_STAGE_F020_L3, + /* 0x6F */ SND_STAGE_F020, + /* 0x70 */ SND_STAGE_F021_L13, + /* 0x71 */ SND_STAGE_F021, + /* 0x72 */ SND_STAGE_F023_L14, + /* 0x73 */ SND_STAGE_F023, + /* 0x74 */ SND_STAGE_F000_L13, + /* 0x75 */ SND_STAGE_F000_L14, + /* 0x76 */ SND_STAGE_F000_L15, + /* 0x77 */ SND_STAGE_F000_L16, + /* 0x78 */ SND_STAGE_F000_L17, + /* 0x79 */ SND_STAGE_F000_L18, + /* 0x7A */ SND_STAGE_F000_L19, + /* 0x7B */ SND_STAGE_F000_L20, + /* 0x7C */ SND_STAGE_F000_L21, + /* 0x7D */ SND_STAGE_F000_L26, + /* 0x7E */ SND_STAGE_F000_L27, + /* 0x7F */ SND_STAGE_F000, + /* 0x80 */ SND_STAGE_F301_5, + /* 0x81 */ SND_STAGE_F001r_L13, + /* 0x82 */ SND_STAGE_F001r_L14, + /* 0x83 */ SND_STAGE_F001r_L15, + /* 0x84 */ SND_STAGE_F001r, + /* 0x85 */ SND_STAGE_F002r, + /* 0x86 */ SND_STAGE_F004r, + /* 0x87 */ SND_STAGE_F009r, + /* 0x88 */ SND_STAGE_F011r, + /* 0x89 */ SND_STAGE_F012r, + /* 0x8A */ SND_STAGE_F019r, + /* 0x8B */ SND_STAGE_F005r, + /* 0x8C */ SND_STAGE_F006r, + /* 0x8D */ SND_STAGE_F007r, + /* 0x8E */ SND_STAGE_F013r, + /* 0x8F */ SND_STAGE_F014r, + /* 0x90 */ SND_STAGE_F015r, + /* 0x91 */ SND_STAGE_F016r, + /* 0x92 */ SND_STAGE_F017r, + /* 0x93 */ SND_STAGE_F018r, + /* 0x94 */ SND_STAGE_F402_L2, + /* 0x95 */ SND_STAGE_F402_L3, + /* 0x96 */ SND_STAGE_F402_L5, + /* 0x97 */ SND_STAGE_F402_L13, + /* 0x98 */ SND_STAGE_F402_L18, + /* 0x99 */ SND_STAGE_F402_L19, + /* 0x9A */ SND_STAGE_F402, + /* 0x9B */ SND_STAGE_F404_L13, + /* 0x9C */ SND_STAGE_F404_L14, + /* 0x9D */ SND_STAGE_F404, + /* 0x9E */ SND_STAGE_F407_L13, + /* 0x9F */ SND_STAGE_F407_L14, + /* 0xA0 */ SND_STAGE_F407_L15, + /* 0xA1 */ SND_STAGE_F407, + /* 0xA2 */ SND_STAGE_F008r_L13, + /* 0xA3 */ SND_STAGE_F008r_L14, + /* 0xA4 */ SND_STAGE_F008r_L15, + /* 0xA5 */ SND_STAGE_F008r, + /* 0xA6 */ SND_STAGE_F010r_L13, + /* 0xA7 */ SND_STAGE_F010r_L14, + /* 0xA8 */ SND_STAGE_F010r_L15, + /* 0xA9 */ SND_STAGE_F010r, + /* 0xAA */ SND_STAGE_Demo_L13, + /* 0xAB */ SND_STAGE_Demo, + + /* 0xAC */ SND_STAGE_MAX, +}; + +#endif diff --git a/include/d/snd/d_snd_state_mgr.h b/include/d/snd/d_snd_state_mgr.h new file mode 100644 index 00000000..d2c54446 --- /dev/null +++ b/include/d/snd/d_snd_state_mgr.h @@ -0,0 +1,139 @@ +#ifndef D_SND_STATE_MGR_H +#define D_SND_STATE_MGR_H + +#include "common.h" +#include "d/snd/d_snd_util.h" +#include "nw4r/snd/snd_FxReverbStdDpl2.h" +#include "sized_string.h" + +SND_DISPOSER_FORWARD_DECL(dSndStateMgr_c); + +// Previous Ghidra name: EnemySoundMgr +class dSndStateMgr_c { +public: + SND_DISPOSER_MEMBERS(dSndStateMgr_c); + +public: + enum StageFlags_e { + STAGE_FIELD = 0x1, + STAGE_DUNGEON = 0x2, + STAGE_BOSS = 0x4, + STAGE_SILENT_REALM = 0x8, + + STAGE_ROOM = 0x10, // only for sky + + STAGE_SKY = 0x20, + STAGE_FOREST = 0x40, + STAGE_MOUNTAIN = 0x80, + STAGE_DESERT = 0x100, + STAGE_SILENT_GROUNDS = 0x200, + }; + + dSndStateMgr_c(); + + void setup(EGG::Heap *pHeap); + void onStageOrLayerUpdate(); + + static bool isInStage(const char *stageName); + + u32 getField_0x11C() const { + return field_0x11C; + } + + void resetStageName() { + field_0x098 = "EVENT_NONE"; + } + + bool checkFlag0x10(u32 mask) const { + return field_0x010 & mask; + } + + void onFlag0x10(u32 mask) { + field_0x010 |= mask; + } + + void offFlag0x10(u32 mask) { + field_0x010 &= ~mask; + } + + void setFlowEvent(u32 eventId); + +private: + 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); + + /* 0x010 */ u32 field_0x010; + /* 0x014 */ UNKWORD field_0x014; + /* 0x018 */ UNKWORD field_0x018; + /* 0x01C */ SizedString<32> field_0x01C; + /* 0x03C */ UNKWORD field_0x03C; + /* 0x040 */ s32 mStageId; + /* 0x044 */ UNKWORD field_0x044; + /* 0x048 */ u8 _0x048[0x050 - 0x048]; + /* 0x050 */ s32 mPreviousStageId; + /* 0x054 */ UNKWORD field_0x054; + /* 0x058 */ UNKWORD field_0x058; + /* 0x05C */ s32 mLayer; + /* 0x060 */ UNKWORD field_0x060; + /* 0x064 */ u8 field_0x064; + /* 0x065 */ bool field_0x065; + /* 0x066 */ u8 field_0x066; + /* 0x067 */ u8 field_0x067; + /* 0x068 */ UNKWORD field_0x068; + /* 0x06C */ UNKWORD field_0x06C; + /* 0x070 */ UNKWORD field_0x070; + /* 0x074 */ UNKWORD field_0x074; + /* 0x078 */ UNKWORD field_0x078; + /* 0x07C */ UNKWORD field_0x07C; + /* 0x080 */ UNKWORD field_0x080; + /* 0x084 */ UNKWORD field_0x084; + /* 0x088 */ UNKWORD field_0x088; + /* 0x08C */ UNKWORD field_0x08C; + /* 0x090 */ UNKWORD field_0x090; + /* 0x094 */ u32 field_0x094; + /* 0x098 */ SizedString<64> field_0x098; + /* 0x0D8 */ SizedString<64> field_0x0D8; + /* 0x118 */ const char *field_0x118; + /* 0x11C */ u32 field_0x11C; + /* 0x120 */ UNKWORD field_0x120; + /* 0x124 */ UNKWORD field_0x124; + /* 0x128 */ UNKWORD field_0x128; + /* 0x12C */ SizedString<64> field_0x12C; + /* 0x16C */ SizedString<64> field_0x16C; + /* 0x1AC */ SizedString<64> field_0x1AC; + /* 0x1EC */ SizedString<64> field_0x1EC; + /* 0x22C */ UNKWORD field_0x22C; + /* 0x230 */ UNKWORD field_0x230; + /* 0x234 */ UNKWORD field_0x234; + /* 0x238 */ UNKWORD field_0x238; + /* 0x23C */ u8 field_0x23C; + /* 0x23D */ u8 field_0x23D; + /* 0x240 */ UNKWORD field_0x240; + /* 0x244 */ UNKWORD field_0x244; + /* 0x248 */ UNKWORD field_0x248; + /* 0x24C */ UNKWORD field_0x24C; + /* 0x250 */ UNKWORD field_0x250; + /* 0x254 */ u8 field_0x254; + /* 0x258 */ UNKWORD field_0x258; + /* 0x25C */ nw4r::snd::FxReverbStdDpl2 mFx; + /* 0x48C */ UNKWORD field_0x48C; + /* 0x490 */ f32 field_0x490; + /* 0x494 */ f32 field_0x494; + /* 0x498 */ f32 field_0x498; + /* 0x49C */ f32 field_0x49C; + /* 0x4A0 */ f32 field_0x4A0; + /* 0x4A4 */ UNKWORD field_0x4A4; + /* 0x4A8 */ u8 field_0x4A8; + /* 0x4A9 */ bool needsGroupsReload; +}; + +#endif diff --git a/include/d/snd/d_snd_wzsound.h b/include/d/snd/d_snd_wzsound.h index 63da34c9..7fc1a8ac 100644 --- a/include/d/snd/d_snd_wzsound.h +++ b/include/d/snd/d_snd_wzsound.h @@ -6468,4 +6468,710 @@ enum WZSound { /* 0x193D */ LABEL_SOUND_END }; +enum WZSound_Group { + /* 0x000 */ GRP_BGM_BOSS_A, + /* 0x001 */ GRP_BGM_STATIC, + /* 0x002 */ GRP_FAN_TIMECHANGE, + /* 0x003 */ GRP_BGM_HARP_GODDESS, + /* 0x004 */ GRP_BGM_HARP_BREEZE, + /* 0x005 */ GRP_BGM_HARP_AQUA, + /* 0x006 */ GRP_BGM_HARP_FLAME, + /* 0x007 */ GRP_BGM_HARP_BRAVE, + /* 0x008 */ GRP_BGM_HARP_PUMPKIN, + /* 0x009 */ GRP_BGM_PLAY_DATA_STATIC, + /* 0x00A */ GRP_SE_SYSTEM_MINIGAME, + /* 0x00B */ GRP_SE_LINK, + /* 0x00C */ GRP_SE_LINK_VOICE, + /* 0x00D */ GRP_SE_HARP, + /* 0x00E */ GRP_SE_NPC_COMMON, + /* 0x00F */ GRP_SE_NpcKen, + /* 0x010 */ GRP_SE_NpcKen_VOCUL, + /* 0x011 */ GRP_SE_A_IN_WATER, + /* 0x012 */ GRP_SE_IN_WATER, + /* 0x013 */ GRP_SE_IN_WATER_MINI, + /* 0x014 */ GRP_SE_STATIC, + /* 0x015 */ GRP_DEFAULT, + /* 0x016 */ GRP_FIELD, + /* 0x017 */ GRP_BOSS, + /* 0x018 */ GRP_DUNGEON, + /* 0x019 */ GRP_DUNGEON_BATTLE_ROOM, + /* 0x01A */ GRP_SIREN, + /* 0x01B */ GRP_SKY, + /* 0x01C */ GRP_INDOOR, + /* 0x01D */ GRP_Demo, + /* 0x01E */ GRP_FOREST, + /* 0x01F */ GRP_MOUNTAIN, + /* 0x020 */ GRP_DESERT, + /* 0x021 */ GRP_STATIC, + /* 0x022 */ GRP_Warp, + /* 0x023 */ GRP_Sw, + /* 0x024 */ GRP_Pumpkin, + /* 0x025 */ GRP_Kanban, + /* 0x026 */ GRP_Item_A43, + /* 0x027 */ GRP_NpcRvl, + /* 0x028 */ GRP_NpcKbn, + /* 0x029 */ GRP_NpcKbn2, + /* 0x02A */ GRP_NpcSkn, + /* 0x02B */ GRP_NpcSkn2, + /* 0x02C */ GRP_NpcZld, + /* 0x02D */ GRP_NpcDsk, + /* 0x02E */ GRP_NpcDrb, + /* 0x02F */ GRP_NpcDrbC, + /* 0x030 */ GRP_NpcSoFa, + /* 0x031 */ GRP_NpcSoMo, + /* 0x032 */ GRP_NpcSoG, + /* 0x033 */ GRP_NpcTer, + /* 0x034 */ GRP_NpcResc, + /* 0x035 */ GRP_NpcResc_A1, + /* 0x036 */ GRP_NpcResc_A2, + /* 0x037 */ GRP_TstShtr, + /* 0x038 */ GRP_Kibako, + /* 0x039 */ GRP_PyBird, + /* 0x03A */ GRP_BirdCommon, + /* 0x03B */ GRP_BirdR, + /* 0x03C */ GRP_BirdZT, + /* 0x03D */ GRP_BirdB, + /* 0x03E */ GRP_Nusi, + /* 0x03F */ GRP_NusiT, + /* 0x040 */ GRP_BMg, + /* 0x041 */ GRP_BKr, + /* 0x042 */ GRP_BKrA, + /* 0x043 */ GRP_BLasBos, + /* 0x044 */ GRP_Bvd, + /* 0x045 */ GRP_Vdb, + /* 0x046 */ GRP_ECptn, + /* 0x047 */ GRP_EAm, + /* 0x048 */ GRP_Swhit, + /* 0x049 */ GRP_ESf, + /* 0x04A */ GRP_ESf4, + /* 0x04B */ GRP_Est, + /* 0x04C */ GRP_ERemly, + /* 0x04D */ GRP_ELizaru, + /* 0x04E */ GRP_EHidoK, + /* 0x04F */ GRP_EHydra, + /* 0x050 */ GRP_EGunho, + /* 0x051 */ GRP_EGunhob, + /* 0x052 */ GRP_EBfish, + /* 0x053 */ GRP_ECactus, + /* 0x054 */ GRP_ESm, + /* 0x055 */ GRP_EBeamos, + /* 0x056 */ GRP_EGeko, + /* 0x057 */ GRP_EPo, + /* 0x058 */ GRP_EPh, + /* 0x059 */ GRP_EOr, + /* 0x05A */ GRP_EEye, + /* 0x05B */ GRP_ESpark, + /* 0x05C */ GRP_EMagma, + /* 0x05D */ GRP_EMagupp, + /* 0x05E */ GRP_EKs, + /* 0x05F */ GRP_Ehb, + /* 0x060 */ GRP_EWs, + /* 0x061 */ GRP_BGh, + /* 0x062 */ GRP_BGh3, + /* 0x063 */ GRP_OGhSwL, + /* 0x064 */ GRP_OGhKf, + /* 0x065 */ GRP_BAsura, + /* 0x066 */ GRP_AsuraB, + /* 0x067 */ GRP_AsuraS, + /* 0x068 */ GRP_AsuraP, + /* 0x069 */ GRP_EMr, + /* 0x06A */ GRP_EMr_A1, + /* 0x06B */ GRP_EGumarm, + /* 0x06C */ GRP_NpcBird, + /* 0x06D */ GRP_Himo, + /* 0x06E */ GRP_SpiderL, + /* 0x06F */ GRP_Wind, + /* 0x070 */ GRP_Wind02, + /* 0x071 */ GRP_Wind03, + /* 0x072 */ GRP_Wind04, + /* 0x073 */ GRP_Tornado, + /* 0x074 */ GRP_SkEnmyT, + /* 0x075 */ GRP_EBc, + /* 0x076 */ GRP_EKGira, + /* 0x077 */ GRP_BcArrow, + /* 0x078 */ GRP_EBcZ, + /* 0x079 */ GRP_ESktl, + /* 0x07A */ GRP_Bamboo, + /* 0x07B */ GRP_TgTrap, + /* 0x07C */ GRP_NpcSalS, + /* 0x07D */ GRP_NpcSalS_A1, + /* 0x07E */ GRP_NpcSalS_A2, + /* 0x07F */ GRP_NpcSalS_A4, + /* 0x080 */ GRP_NpcSalS_A5, + /* 0x081 */ GRP_NpcSalS_A8, + /* 0x082 */ GRP_NpcDoMo, + /* 0x083 */ GRP_NpcJkMo, + /* 0x084 */ GRP_NpcSAMo, + /* 0x085 */ GRP_NpcSMnE, + /* 0x086 */ GRP_NpcSMnD, + /* 0x087 */ GRP_NpcAzFa, + /* 0x088 */ GRP_NpcDskN, + /* 0x089 */ GRP_EChb, + /* 0x08A */ GRP_EGue, + /* 0x08B */ GRP_EGerock, + /* 0x08C */ GRP_PushBlk, + /* 0x08D */ GRP_CyStone, + /* 0x08E */ GRP_HnComb, + /* 0x08F */ GRP_Bee, + /* 0x090 */ GRP_Bubble, + /* 0x091 */ GRP_EChaser, + /* 0x092 */ GRP_EHidory, + /* 0x093 */ GRP_NpcOim, + /* 0x094 */ GRP_NpcYim, + /* 0x095 */ GRP_NpcBgr, + /* 0x096 */ GRP_NpcSlrb, + /* 0x097 */ GRP_NpcSma3, + /* 0x098 */ GRP_NpcSma2, + /* 0x099 */ GRP_NpcPma, + /* 0x09A */ GRP_NpcPdu, + /* 0x09B */ GRP_NpcCbFd, + /* 0x09C */ GRP_NpcFdr, + /* 0x09D */ GRP_NpcTdr, + /* 0x09E */ GRP_NpcAdr, + /* 0x09F */ GRP_NpcGhm, + /* 0x0A0 */ GRP_NpcSha, + /* 0x0A1 */ GRP_NpcGra, + /* 0x0A2 */ GRP_NpcSoBo, + /* 0x0A3 */ GRP_NpcAkum, + /* 0x0A4 */ GRP_NpcSui, + /* 0x0A5 */ GRP_NpcMole, + /* 0x0A6 */ GRP_NpcMole_A1, + /* 0x0A7 */ GRP_NpcMole_A2, + /* 0x0A8 */ GRP_NpcMoN, + /* 0x0A9 */ GRP_NpcMoT, + /* 0x0AA */ GRP_NpcMoEl, + /* 0x0AB */ GRP_NpcChef, + /* 0x0AC */ GRP_Door, + /* 0x0AD */ GRP_Door_A4, + /* 0x0AE */ GRP_SwWall, + /* 0x0AF */ GRP_LeafSwg, + /* 0x0B0 */ GRP_IvyRope, + /* 0x0B1 */ GRP_RopeIga, + /* 0x0B2 */ GRP_RolRock, + /* 0x0B3 */ GRP_RidRock, + /* 0x0B4 */ GRP_MvLiftV, + /* 0x0B5 */ GRP_Truck, + /* 0x0B6 */ GRP_TrapRc1, + /* 0x0B7 */ GRP_StprRc, + /* 0x0B8 */ GRP_Log, + /* 0x0B9 */ GRP_LogWtr, + /* 0x0BA */ GRP_LightLi, + /* 0x0BB */ GRP_TimeStn, + /* 0x0BC */ GRP_BlsRock, + /* 0x0BD */ GRP_BlsRock_A18, + /* 0x0BE */ GRP_BlsRock_A5, + /* 0x0BF */ GRP_BlsRock_A6, + /* 0x0C0 */ GRP_BlsRock_A10, + /* 0x0C1 */ GRP_BlsRock_A8, + /* 0x0C2 */ GRP_FenceIr, + /* 0x0C3 */ GRP_SwDir, + /* 0x0C4 */ GRP_SwDir2, + /* 0x0C5 */ GRP_SwBnk, + /* 0x0C6 */ GRP_SwBnkS, + /* 0x0C7 */ GRP_Fairy, + /* 0x0C8 */ GRP_SnkFlrF, + /* 0x0C9 */ GRP_StpGm, + /* 0x0CA */ GRP_BrgFall, + /* 0x0CB */ GRP_BrgStp, + /* 0x0CC */ GRP_Gear, + /* 0x0CD */ GRP_DNight, + /* 0x0CE */ GRP_Fire, + /* 0x0CF */ GRP_Tshop, + /* 0x0D0 */ GRP_Obstacl, + /* 0x0D1 */ GRP_BeltCvr, + /* 0x0D2 */ GRP_Gcoil, + /* 0x0D3 */ GRP_Lotus, + /* 0x0D4 */ GRP_OcGrs, + /* 0x0D5 */ GRP_StepTS, + /* 0x0D6 */ GRP_WarpObj, + /* 0x0D7 */ GRP_WarpObj_A5, + /* 0x0D8 */ GRP_WarpObj_A4, + /* 0x0D9 */ GRP_WarpObj_A2, + /* 0x0DA */ GRP_WarpObj_A6, + /* 0x0DB */ GRP_WarpObj_A7, + /* 0x0DC */ GRP_Barrel, + /* 0x0DD */ GRP_Boat, + /* 0x0DE */ GRP_Blst, + /* 0x0DF */ GRP_BlstF3, + /* 0x0E0 */ GRP_TrpBrdW, + /* 0x0E1 */ GRP_Tckl, + /* 0x0E2 */ GRP_LvPlt, + /* 0x0E3 */ GRP_TWeed, + /* 0x0E4 */ GRP_TBoat, + /* 0x0E5 */ GRP_TBoatB, + /* 0x0E6 */ GRP_Vortex, + /* 0x0E7 */ GRP_TowerB, + /* 0x0E8 */ GRP_D300Obj, + /* 0x0E9 */ GRP_BrgBn, + /* 0x0EA */ GRP_SwSB, + /* 0x0EB */ GRP_SndStn, + /* 0x0EC */ GRP_SwHrp, + /* 0x0ED */ GRP_SwHrp_A1, + /* 0x0EE */ GRP_SwHrp_A2, + /* 0x0EF */ GRP_SwHrp_A4, + /* 0x0F0 */ GRP_Tubo, + /* 0x0F1 */ GRP_BigTubo, + /* 0x0F2 */ GRP_DoorBs, + /* 0x0F3 */ GRP_TBox, + /* 0x0F4 */ GRP_EffGnT_A2, + /* 0x0F5 */ GRP_PoleStn, + /* 0x0F6 */ GRP_EKg, + /* 0x0F7 */ GRP_BBigBos, + /* 0x0F8 */ GRP_NpcBRvl, + /* 0x0F9 */ GRP_OBBLBom, + /* 0x0FA */ GRP_NpcSoma, + /* 0x0FB */ GRP_NpcSowo, + /* 0x0FC */ GRP_vmSand, + /* 0x0FD */ GRP_wnleaf, + /* 0x0FE */ GRP_tware, + /* 0x0FF */ GRP_swsht, + /* 0x100 */ GRP_rpillar, + /* 0x101 */ GRP_wfall, + /* 0x102 */ GRP_ftower, + /* 0x103 */ GRP_NpcKen, + /* 0x104 */ GRP_sw_whip, + /* 0x105 */ GRP_ShtCS, + /* 0x106 */ GRP_fruit, + /* 0x107 */ GRP_Kinoko, + /* 0x108 */ GRP_chest, + /* 0x109 */ GRP_LBird, + /* 0x10A */ GRP_Fish, + /* 0x10B */ GRP_Eel, + /* 0x10C */ GRP_TerrGmk, + /* 0x10D */ GRP_TgSound_A1, + /* 0x10E */ GRP_TgSound_A2, + /* 0x10F */ GRP_TgSound_A3, + /* 0x110 */ GRP_TgSound_A4, + /* 0x111 */ GRP_TgSound_A5, + /* 0x112 */ GRP_TgSound_A6, + /* 0x113 */ GRP_TgSound_A7, + /* 0x114 */ GRP_TgSound_A8, + /* 0x115 */ GRP_TgSound_A9, + /* 0x116 */ GRP_TgSound_A10, + /* 0x117 */ GRP_TgSound_A11, + /* 0x118 */ GRP_TgSound_A12, + /* 0x119 */ GRP_TgSound_A13, + /* 0x11A */ GRP_TgSound_A14, + /* 0x11B */ GRP_TgSound_A15, + /* 0x11C */ GRP_TgSound_A16, + /* 0x11D */ GRP_TgSound_A17, + /* 0x11E */ GRP_TgSound_A18, + /* 0x11F */ GRP_TgSound_A19, + /* 0x120 */ GRP_TgSound_A20, + /* 0x121 */ GRP_TgSound_A21, + /* 0x122 */ GRP_TgSound_A22, + /* 0x123 */ GRP_TgSound_A23, + /* 0x124 */ GRP_TgSound_A24, + /* 0x125 */ GRP_TgSound_A25, + /* 0x126 */ GRP_TgSound_A26, + /* 0x127 */ GRP_TgSound_A27, + /* 0x128 */ GRP_TgSound_A28, + /* 0x129 */ GRP_TgSound_A29, + /* 0x12A */ GRP_TgSound_A30, + /* 0x12B */ GRP_TgSound_A31, + /* 0x12C */ GRP_TgSound_A32, + /* 0x12D */ GRP_TgSound_A33, + /* 0x12E */ GRP_TgSound_A34, + /* 0x12F */ GRP_TgSound_A35, + /* 0x130 */ GRP_TgSound_A36, + /* 0x131 */ GRP_TgSound_A37, + /* 0x132 */ GRP_TgSound_A38, + /* 0x133 */ GRP_TgSound_A39, + /* 0x134 */ GRP_TgSound_A40, + /* 0x135 */ GRP_ArrowSW, + /* 0x136 */ GRP_VentFan, + /* 0x137 */ GRP_WdBoard, + /* 0x138 */ GRP_ElLight, + /* 0x139 */ GRP_WaterSW, + /* 0x13A */ GRP_WaterSW_A1, + /* 0x13B */ GRP_BulbSW, + /* 0x13C */ GRP_SideST, + /* 0x13D */ GRP_STKraPt, + /* 0x13E */ GRP_HitLVSW, + /* 0x13F */ GRP_UDLava, + /* 0x140 */ GRP_BridgeB, + /* 0x141 */ GRP_Cannon, + /* 0x142 */ GRP_BridgeS, + /* 0x143 */ GRP_BlwCoal, + /* 0x144 */ GRP_UtaStop, + /* 0x145 */ GRP_Windmil, + /* 0x146 */ GRP_Pinwhel, + /* 0x147 */ GRP_WatrIga, + /* 0x148 */ GRP_STSink, + /* 0x149 */ GRP_ShipWin, + /* 0x14A */ GRP_FireObs, + /* 0x14B */ GRP_FireObs_A1, + /* 0x14C */ GRP_SldDoor, + /* 0x14D */ GRP_SliceLg, + /* 0x14E */ GRP_Debris, + /* 0x14F */ GRP_DwnLava, + /* 0x150 */ GRP_ApBridg, + /* 0x151 */ GRP_GrCover, + /* 0x152 */ GRP_TrukStp, + /* 0x153 */ GRP_WFF102, + /* 0x154 */ GRP_RockSkB, + /* 0x155 */ GRP_Bell, + /* 0x156 */ GRP_WndMilD, + /* 0x157 */ GRP_RkDrgn, + /* 0x158 */ GRP_Insect, + /* 0x159 */ GRP_Uground, + /* 0x15A */ GRP_BlockUg, + /* 0x15B */ GRP_MagBoat, + /* 0x15C */ GRP_skull, + /* 0x15D */ GRP_ESyako, + /* 0x15E */ GRP_LtsFlwr, + /* 0x15F */ GRP_LtsSeed, + /* 0x160 */ GRP_Npckyu, + /* 0x161 */ GRP_NpcKyuE, + /* 0x162 */ GRP_lock, + /* 0x163 */ GRP_trolley, + /* 0x164 */ GRP_trolley_A2, + /* 0x165 */ GRP_trlshut, + /* 0x166 */ GRP_swsyako, + /* 0x167 */ GRP_syashtr, + /* 0x168 */ GRP_d2ship, + /* 0x169 */ GRP_Chandel, + /* 0x16A */ GRP_needleU, + /* 0x16B */ GRP_SStatue, + /* 0x16C */ GRP_NpcKyuW, + /* 0x16D */ GRP_BDrD101, + /* 0x16E */ GRP_NpcCbLd, + /* 0x16F */ GRP_TGrD101, + /* 0x170 */ GRP_ShtrWtr, + /* 0x171 */ GRP_NpcKnld, + /* 0x172 */ GRP_TowerHa, + /* 0x173 */ GRP_NpcDgJg, + /* 0x174 */ GRP_NpcMlMg, + /* 0x175 */ GRP_BoxCage, + /* 0x176 */ GRP_FWall, + /* 0x177 */ GRP_SwrdPrj, + /* 0x178 */ GRP_SdCdl, + /* 0x179 */ GRP_NpcSenp, + /* 0x17A */ GRP_NpcSenb, + /* 0x17B */ GRP_Piston, + /* 0x17C */ GRP_GodCube, + /* 0x17D */ GRP_HeartCo, + /* 0x17E */ GRP_Clef, + /* 0x17F */ GRP_TDoor, + /* 0x180 */ GRP_Fence, + /* 0x181 */ GRP_Flag, + /* 0x182 */ GRP_DoorDun, + /* 0x183 */ GRP_DoorDun_A1, + /* 0x184 */ GRP_DoorDun_A2, + /* 0x185 */ GRP_TSBlk, + /* 0x186 */ GRP_Propera, + /* 0x187 */ GRP_Roulete, + /* 0x188 */ GRP_LvD201, + /* 0x189 */ GRP_Grave, + /* 0x18A */ GRP_FruitB, + /* 0x18B */ GRP_RoAtTar, + /* 0x18C */ GRP_PrpLift, + /* 0x18D */ GRP_TAgo, + /* 0x18E */ GRP_DivCrst, + /* 0x18F */ GRP_DNdl, + /* 0x190 */ GRP_CtrlPnl, + /* 0x191 */ GRP_NpcGost, + /* 0x192 */ GRP_D2Mtr, + /* 0x193 */ GRP_HrpHint, + /* 0x194 */ GRP_Paint, + /* 0x195 */ GRP_BrgTs, + /* 0x196 */ GRP_WarpH, + /* 0x197 */ GRP_UgSwitc, + /* 0x198 */ GRP_F000, + /* 0x199 */ GRP_F000_L1, + /* 0x19A */ GRP_F000_L2, + /* 0x19B */ GRP_F000_L3, + /* 0x19C */ GRP_F000_L4, + /* 0x19D */ GRP_F000_L5, + /* 0x19E */ GRP_F000_L6, + /* 0x19F */ GRP_F000_L7, + /* 0x1A0 */ GRP_F000_L8, + /* 0x1A1 */ GRP_F000_L9, + /* 0x1A2 */ GRP_F000_L10, + /* 0x1A3 */ GRP_F000_L12, + /* 0x1A4 */ GRP_F000_L13, + /* 0x1A5 */ GRP_F000_L14, + /* 0x1A6 */ GRP_F000_L15, + /* 0x1A7 */ GRP_F000_L16, + /* 0x1A8 */ GRP_F000_L17, + /* 0x1A9 */ GRP_F000_L18, + /* 0x1AA */ GRP_F000_L19, + /* 0x1AB */ GRP_F000_L20, + /* 0x1AC */ GRP_F000_L21, + /* 0x1AD */ GRP_F000_L26, + /* 0x1AE */ GRP_F000_L27, + /* 0x1AF */ GRP_F000_L28, + /* 0x1B0 */ GRP_F001r, + /* 0x1B1 */ GRP_F001r_L2, + /* 0x1B2 */ GRP_F001r_L3, + /* 0x1B3 */ GRP_F001r_L13, + /* 0x1B4 */ GRP_F001r_L14, + /* 0x1B5 */ GRP_F001r_L15, + /* 0x1B6 */ GRP_F002r, + /* 0x1B7 */ GRP_F004r, + /* 0x1B8 */ GRP_F005r, + /* 0x1B9 */ GRP_F006r, + /* 0x1BA */ GRP_F007r, + /* 0x1BB */ GRP_F008r, + /* 0x1BC */ GRP_F008r_L1, + /* 0x1BD */ GRP_F008r_L2, + /* 0x1BE */ GRP_F008r_L13, + /* 0x1BF */ GRP_F008r_L14, + /* 0x1C0 */ GRP_F008r_L15, + /* 0x1C1 */ GRP_F009r, + /* 0x1C2 */ GRP_F010r, + /* 0x1C3 */ GRP_F010r_L13, + /* 0x1C4 */ GRP_F010r_L14, + /* 0x1C5 */ GRP_F010r_L15, + /* 0x1C6 */ GRP_F011r, + /* 0x1C7 */ GRP_F011r_L12, + /* 0x1C8 */ GRP_F012r, + /* 0x1C9 */ GRP_F013r, + /* 0x1CA */ GRP_F014r, + /* 0x1CB */ GRP_F015r, + /* 0x1CC */ GRP_F016r, + /* 0x1CD */ GRP_F017r, + /* 0x1CE */ GRP_F018r, + /* 0x1CF */ GRP_F019r, + /* 0x1D0 */ GRP_F019r_L2, + /* 0x1D1 */ GRP_F020, + /* 0x1D2 */ GRP_F020_L1, + /* 0x1D3 */ GRP_F020_L2, + /* 0x1D4 */ GRP_F020_L3, + /* 0x1D5 */ GRP_F020_L4, + /* 0x1D6 */ GRP_F020_L5, + /* 0x1D7 */ GRP_F020_L6, + /* 0x1D8 */ GRP_F021_L13, + /* 0x1D9 */ GRP_D000, + /* 0x1DA */ GRP_D003_1, + /* 0x1DB */ GRP_D003_2, + /* 0x1DC */ GRP_D003_3, + /* 0x1DD */ GRP_S000, + /* 0x1DE */ GRP_D003_4, + /* 0x1DF */ GRP_D003_5, + /* 0x1E0 */ GRP_F023, + /* 0x1E1 */ GRP_F023_L2, + /* 0x1E2 */ GRP_F023_L13, + /* 0x1E3 */ GRP_F023_L14, + /* 0x1E4 */ GRP_D003_6, + /* 0x1E5 */ GRP_D003_7, + /* 0x1E6 */ GRP_D003_0, + /* 0x1E7 */ GRP_D003_8, + /* 0x1E8 */ GRP_F100, + /* 0x1E9 */ GRP_F100_L1, + /* 0x1EA */ GRP_F100_L2, + /* 0x1EB */ GRP_F100_L3, + /* 0x1EC */ GRP_F100_L4, + /* 0x1ED */ GRP_F100_1, + /* 0x1EE */ GRP_F101, + /* 0x1EF */ GRP_F102, + /* 0x1F0 */ GRP_F102_1, + /* 0x1F1 */ GRP_F102_2, + /* 0x1F2 */ GRP_F103, + /* 0x1F3 */ GRP_F103_L13, + /* 0x1F4 */ GRP_D100, + /* 0x1F5 */ GRP_D100_L1, + /* 0x1F6 */ GRP_D101, + /* 0x1F7 */ GRP_B100, + /* 0x1F8 */ GRP_B100_L1, + /* 0x1F9 */ GRP_B100_L2, + /* 0x1FA */ GRP_B100_L5, + /* 0x1FB */ GRP_B100_L13, + /* 0x1FC */ GRP_B100_1, + /* 0x1FD */ GRP_B100_1_L13, + /* 0x1FE */ GRP_B101, + /* 0x1FF */ GRP_B101_L2, + /* 0x200 */ GRP_B101_1, + /* 0x201 */ GRP_B101_1_L13, + /* 0x202 */ GRP_S100, + /* 0x203 */ GRP_F103_1, + /* 0x204 */ GRP_F103_1_L13, + /* 0x205 */ GRP_F103_1_L14, + /* 0x206 */ GRP_F200, + /* 0x207 */ GRP_F200_L1, + /* 0x208 */ GRP_F200_L2, + /* 0x209 */ GRP_F200_L3, + /* 0x20A */ GRP_F200_L4, + /* 0x20B */ GRP_F210, + /* 0x20C */ GRP_F211, + /* 0x20D */ GRP_F211_L2, + /* 0x20E */ GRP_F211_L3, + /* 0x20F */ GRP_F211_L4, + /* 0x210 */ GRP_F221, + /* 0x211 */ GRP_F221_L13, + /* 0x212 */ GRP_F202, + /* 0x213 */ GRP_D200, + /* 0x214 */ GRP_D201, + /* 0x215 */ GRP_B200, + /* 0x216 */ GRP_B200_L1, + /* 0x217 */ GRP_B200_L2, + /* 0x218 */ GRP_B200_L3, + /* 0x219 */ GRP_B201_L1, + /* 0x21A */ GRP_B201_L2, + /* 0x21B */ GRP_B201_L3, + /* 0x21C */ GRP_B201_L13, + /* 0x21D */ GRP_B201_1, + /* 0x21E */ GRP_B201_1_L13, + /* 0x21F */ GRP_B210, + /* 0x220 */ GRP_B210_L13, + /* 0x221 */ GRP_B210_L14, + /* 0x222 */ GRP_S200, + /* 0x223 */ GRP_F201_1, + /* 0x224 */ GRP_F201_2, + /* 0x225 */ GRP_F202_1, + /* 0x226 */ GRP_F202_2, + /* 0x227 */ GRP_D201_1, + /* 0x228 */ GRP_F201_3, + /* 0x229 */ GRP_F201_4, + /* 0x22A */ GRP_F202_3, + /* 0x22B */ GRP_F202_4, + /* 0x22C */ GRP_F300, + /* 0x22D */ GRP_F300_L2, + /* 0x22E */ GRP_F300_1, + /* 0x22F */ GRP_F300_2, + /* 0x230 */ GRP_F300_3, + /* 0x231 */ GRP_F300_4, + /* 0x232 */ GRP_F300_4_L13, + /* 0x233 */ GRP_F301, + /* 0x234 */ GRP_F301_1, + /* 0x235 */ GRP_F301_2, + /* 0x236 */ GRP_F301_3, + /* 0x237 */ GRP_F301_4, + /* 0x238 */ GRP_F301_4_L2, + /* 0x239 */ GRP_F301_5, + /* 0x23A */ GRP_F302, + /* 0x23B */ GRP_F302_L1, + /* 0x23C */ GRP_F302_L2, + /* 0x23D */ GRP_F302_L13, + /* 0x23E */ GRP_D300, + /* 0x23F */ GRP_D301, + /* 0x240 */ GRP_D301_L1, + /* 0x241 */ GRP_D301_L2, + /* 0x242 */ GRP_D301_L3, + /* 0x243 */ GRP_D301_L4, + /* 0x244 */ GRP_D301_L9, + /* 0x245 */ GRP_D301_L10, + /* 0x246 */ GRP_D301_L11, + /* 0x247 */ GRP_D301_L12, + /* 0x248 */ GRP_D301_1, + /* 0x249 */ GRP_B300, + /* 0x24A */ GRP_B300_L2, + /* 0x24B */ GRP_B301, + /* 0x24C */ GRP_B301_L2, + /* 0x24D */ GRP_B301_L13, + /* 0x24E */ GRP_S300, + /* 0x24F */ GRP_F301_6, + /* 0x250 */ GRP_F301_7, + /* 0x251 */ GRP_F303, + /* 0x252 */ GRP_F300_5, + /* 0x253 */ GRP_D300_1, + /* 0x254 */ GRP_F400, + /* 0x255 */ GRP_F400_L1, + /* 0x256 */ GRP_F400_L2, + /* 0x257 */ GRP_F400_L3, + /* 0x258 */ GRP_F400_L13, + /* 0x259 */ GRP_F401, + /* 0x25A */ GRP_F401_L1, + /* 0x25B */ GRP_F401_L2, + /* 0x25C */ GRP_F401_L3, + /* 0x25D */ GRP_F401_L4, + /* 0x25E */ GRP_F401_L5, + /* 0x25F */ GRP_F401_L6, + /* 0x260 */ GRP_F401_L13, + /* 0x261 */ GRP_F401_L14, + /* 0x262 */ GRP_F401_L15, + /* 0x263 */ GRP_F402, + /* 0x264 */ GRP_F402_L13, + /* 0x265 */ GRP_F402_L18, + /* 0x266 */ GRP_F402_L19, + /* 0x267 */ GRP_F402_L20, + /* 0x268 */ GRP_F403, + /* 0x269 */ GRP_F403_L1, + /* 0x26A */ GRP_F403_L2, + /* 0x26B */ GRP_F403_L3, + /* 0x26C */ GRP_F403_L4, + /* 0x26D */ GRP_F403_L7, + /* 0x26E */ GRP_F403_L13, + /* 0x26F */ GRP_F403_L14, + /* 0x270 */ GRP_F403_L15, + /* 0x271 */ GRP_F403_L16, + /* 0x272 */ GRP_F404, + /* 0x273 */ GRP_F404_L13, + /* 0x274 */ GRP_F404_L14, + /* 0x275 */ GRP_F405, + /* 0x276 */ GRP_F406, + /* 0x277 */ GRP_F406_L14, + /* 0x278 */ GRP_B400, + /* 0x279 */ GRP_B400_L13, + /* 0x27A */ GRP_B400_L14, + /* 0x27B */ GRP_F407_L13, + /* 0x27C */ GRP_F407_L14, + /* 0x27D */ GRP_F407_L15, + /* 0x27E */ GRP_A_IN_WATER, + /* 0x27F */ GRP_A_QUAKE, + /* 0x280 */ GRP_A_F000, + /* 0x281 */ GRP_A_F000_L2, + /* 0x282 */ GRP_A_F000_L5, + /* 0x283 */ GRP_A_F000_L7, + /* 0x284 */ GRP_A_F000_L9, + /* 0x285 */ GRP_A_F001r, + /* 0x286 */ GRP_A_F002r, + /* 0x287 */ GRP_A_F008r, + /* 0x288 */ GRP_A_F010r, + /* 0x289 */ GRP_A_F012r, + /* 0x28A */ GRP_A_F019r, + /* 0x28B */ GRP_A_F020, + /* 0x28C */ GRP_A_F023, + /* 0x28D */ GRP_A_F023_L2, + /* 0x28E */ GRP_A_D000, + /* 0x28F */ GRP_A_D003_0, + /* 0x290 */ GRP_A_D003_1, + /* 0x291 */ GRP_A_D003_2, + /* 0x292 */ GRP_A_D003_3, + /* 0x293 */ GRP_A_D003_4, + /* 0x294 */ GRP_A_D003_5, + /* 0x295 */ GRP_A_D003_6, + /* 0x296 */ GRP_A_D003_7, + /* 0x297 */ GRP_A_F100, + /* 0x298 */ GRP_A_F100_1, + /* 0x299 */ GRP_A_F102, + /* 0x29A */ GRP_A_F103, + /* 0x29B */ GRP_A_D100, + /* 0x29C */ GRP_A_D101, + /* 0x29D */ GRP_A_B100, + /* 0x29E */ GRP_A_B100_1, + /* 0x29F */ GRP_A_B101, + /* 0x2A0 */ GRP_A_B101_1, + /* 0x2A1 */ GRP_A_F200, + /* 0x2A2 */ GRP_A_F210, + /* 0x2A3 */ GRP_A_F211, + /* 0x2A4 */ GRP_A_F201_1, + /* 0x2A5 */ GRP_A_F201_2, + /* 0x2A6 */ GRP_A_F201_3, + /* 0x2A7 */ GRP_A_F201_4, + /* 0x2A8 */ GRP_A_F221, + /* 0x2A9 */ GRP_A_F202, + /* 0x2AA */ GRP_A_D200, + /* 0x2AB */ GRP_A_D201, + /* 0x2AC */ GRP_A_B210, + /* 0x2AD */ GRP_A_B201, + /* 0x2AE */ GRP_A_B201_1, + /* 0x2AF */ GRP_A_F300, + /* 0x2B0 */ GRP_A_F301, + /* 0x2B1 */ GRP_A_F301_1, + /* 0x2B2 */ GRP_A_F302, + /* 0x2B3 */ GRP_A_F303, + /* 0x2B4 */ GRP_A_D300, + /* 0x2B5 */ GRP_A_D301, + /* 0x2B6 */ GRP_A_B300, + /* 0x2B7 */ GRP_A_B301, + /* 0x2B8 */ GRP_A_F400, + /* 0x2B9 */ GRP_A_F401, + /* 0x2BA */ GRP_A_F402, + /* 0x2BB */ GRP_A_F403, + /* 0x2BC */ GRP_A_F404, + /* 0x2BD */ GRP_A_F406, + /* 0x2BE */ GRP_A_B400, +}; + #endif diff --git a/include/nw4r/snd/snd_SoundHandle.h b/include/nw4r/snd/snd_SoundHandle.h index 847f7942..5d1bf93b 100644 --- a/include/nw4r/snd/snd_SoundHandle.h +++ b/include/nw4r/snd/snd_SoundHandle.h @@ -69,6 +69,10 @@ namespace nw4r { namespace snd return IsAttachedSound() && mSound->IsPause(); } + bool IsPrepared() const { + return IsAttachedSound() && mSound->IsPrepared(); + } + int GetRemainingFadeFrames() const { if (IsAttachedSound()) return mSound->GetRemainingFadeFrames(); diff --git a/include/toBeSorted/music_mgrs.h b/include/toBeSorted/music_mgrs.h index 518ef793..fb5e5397 100644 --- a/include/toBeSorted/music_mgrs.h +++ b/include/toBeSorted/music_mgrs.h @@ -2,10 +2,11 @@ #define MUSIC_MGRS_H #include "common.h" +#include "d/snd/d_snd_bgm_mgr.h" #include "d/snd/d_snd_player_mgr.h" #include "d/snd/d_snd_source_mgr.h" +#include "d/snd/d_snd_state_mgr.h" -class dSndPlayerMgr_c; class dSndSound_c; // A lot of these names are and were guesses that are probably wrong in a lot of ways. @@ -17,33 +18,24 @@ extern "C" void fn_8035E820(dSndPlayerMgr_c *); extern "C" void fn_8035E880(dSndPlayerMgr_c *); extern "C" void fn_8035E790(dSndPlayerMgr_c *, UNKWORD, void *); -extern "C" void *ENEMY_SOUND_MGR; -extern "C" void fn_80362150(void *, u16); -extern "C" void fn_803625F0(void *, u16); -extern "C" void fn_803618F0(void *); -extern "C" void fn_80362730(void *); -extern "C" void fn_80365D20(void *); -extern "C" void fn_803624F0(void *); -extern "C" void fn_80364FD0(void *, s32); -extern "C" bool fn_80364DA0(void *); -extern "C" void fn_80365020(void *); -extern "C" void fn_80364D00(void *, s32); +#define ENEMY_SOUND_MGR (dSndStateMgr_c::GetInstance()) +extern "C" void fn_80362150(dSndStateMgr_c *, u16); +extern "C" void fn_803625F0(dSndStateMgr_c *, u16); +extern "C" void fn_803618F0(dSndStateMgr_c *); +extern "C" void fn_80362730(dSndStateMgr_c *); +extern "C" void fn_80365D20(dSndStateMgr_c *); +extern "C" void fn_803624F0(dSndStateMgr_c *); +extern "C" void fn_80364FD0(dSndStateMgr_c *, s32); +extern "C" bool fn_80364DA0(dSndStateMgr_c *); +extern "C" void fn_80365020(dSndStateMgr_c *); +extern "C" void fn_80364D00(dSndStateMgr_c *, s32); #define ENEMY_BGM_RELATED_MGR (dSndSourceMgr_c::GetInstance()) extern "C" void fn_80384570(dSndSourceMgr_c *, bool); // This one has a SoundActor that actually plays the BGM_ music tracks, // including the battle BGM track. -extern "C" void *FANFARE_SOUND_MGR; -extern "C" void AnotherSoundMgr__playSound(void *, s32); -extern "C" bool fn_803721F0(void *, u32); -extern "C" bool fn_803720E0(void *, u32); -extern "C" bool fn_80372070(void *, u32); -extern "C" bool fn_803734C0(void *, u32); -extern "C" bool fn_80373550(void *, u32); -extern "C" void fn_80372920(void *); -extern "C" void fn_803738B0(void *, dSndSound_c *sound); -extern "C" void fn_80373900(void *, dSndSound_c *sound); -extern "C" bool fn_803733B0(void *, u32); +#define FANFARE_SOUND_MGR (dSndBgmMgr_c::GetInstance()) +extern "C" void fn_80372920(dSndBgmMgr_c *); #endif |
