More d/snd

This commit is contained in:
robojumper
2025-06-13 11:21:04 +02:00
parent a30123ac3d
commit f9e95f9bb0
34 changed files with 2632 additions and 330 deletions
+4
View File
@@ -88,6 +88,10 @@ struct SpawnInfo {
return (Trial)trial;
}
const char *getStageName() const {
return stageName;
}
bool isNight() {
return getTimeOfDay() == NIGHT;
}
+139
View File
@@ -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
+27
View File
@@ -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
+8 -6
View File
@@ -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:
+1 -1
View File
@@ -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,
+2 -2
View File
@@ -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:
+7 -2
View File
@@ -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) */
+23 -19
View File
@@ -173,11 +173,31 @@ public:
void linkCtrl(dSndControlSound_c *);
void unlinkCtrl(dSndControlSound_c *);
protected:
bool cannotStart() const {
bool isPlaying() const {
return mIsRunning && !mIsFadingOut && IsAttachedSound();
}
bool isPlayingSoundId(u32 soundId) const {
return mIsRunning && !mIsFadingOut && GetId() == soundId;
}
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 hasState() const {
return mIsRunning || mIsPreparing || IsAttachedSound();
}
protected:
bool isRunning() const {
return mIsRunning && IsAttachedSound();
}
@@ -186,28 +206,12 @@ protected:
return mIsPreparing && !mIsRunning;
}
bool canCancel() const {
return mIsRunning || mIsPreparing || IsAttachedSound();
}
bool isPreparingSoundId(u32 soundId) const {
bool ret = mIsPreparing;
if (ret) {
ret = !mIsRunning;
}
if (ret) {
ret = GetId() == soundId;
}
return ret;
}
void resetControls();
void resetTrackVolumes();
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;
+3 -2
View File
@@ -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;
+1
View File
@@ -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,
+5
View File
@@ -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;
+197
View File
@@ -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
+139
View File
@@ -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
+706
View File
@@ -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
+4
View File
@@ -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();
+15 -23
View File
@@ -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