d_snd_bgm_seq_data_mgr, d_snd_bgm_seq_config OK

This commit is contained in:
robojumper
2025-07-08 00:10:45 +02:00
parent 030c5a3952
commit b18a2f00d7
15 changed files with 217 additions and 69 deletions
+11 -4
View File
@@ -2700,7 +2700,7 @@ d/snd/d_snd_bgm_sound.cpp:
.text start:0x80379D20 end:0x8037B4D8 align:16
.data start:0x80549088 end:0x80549100
.sbss start:0x80575D88 end:0x80575D90
.sdata2 start:0x8057DA58 end:0x8057DA80
.sdata2 start:0x8057DA58 end:0x8057DA60
d/snd/d_snd_bgm_sound_battle.cpp:
.text start:0x8037B4E0 end:0x8037B908 align:16
@@ -2709,13 +2709,20 @@ d/snd/d_snd_bgm_sound_battle.cpp:
d/snd/d_snd_bgm_sound_harp_mgr.cpp:
.text start:0x8037B910 end:0x8037BA68 align:16
d/snd/d_snd_bgm_battle_data_mgr.cpp:
.text start:0x8037BA70 end:0x8037BEA8 align:16
.rodata start:0x804F3858 end:0x804F38C8
d/snd/d_snd_bgm_seq_data_mgr.cpp:
.text start:0x8037BA70 end:0x8037BD24 align:16
.data start:0x80549148 end:0x80549158
.sdata start:0x805742F0 end:0x805742F8
.sbss start:0x80575D90 end:0x80575D98
d/snd/d_snd_bgm_reverb.cpp:
.text start:0x8037BD30 end:0x8037BD84 align:16
.sdata2 start:0x8057DA60 end:0x8057DA80
d/snd/d_snd_bgm_seq_config.cpp:
.text start:0x8037BD90 end:0x8037BEA8 align:16
.rodata start:0x804F3858 end:0x804F38C8
d/snd/d_snd_bgm_harp_data.cpp:
.text start:0x8037BEB0 end:0x8037C518 align:16
+19 -19
View File
@@ -20725,7 +20725,7 @@ fn_8037A0C0 = .text:0x8037A0C0; // type:function size:0xC
fn_8037A0D0 = .text:0x8037A0D0; // type:function size:0x20
startBgmSound__14dSndBgmSound_cFUllUl = .text:0x8037A0F0; // type:function size:0x2D4
fadeIn__14dSndBgmSound_cFUll = .text:0x8037A3D0; // type:function size:0x1D0
fn_8037A5A0 = .text:0x8037A5A0; // type:function size:0x68
loadSeqConfig__14dSndBgmSound_cFUl = .text:0x8037A5A0; // type:function size:0x68
prepareSound__14dSndBgmSound_cFUlUl = .text:0x8037A610; // type:function size:0x250
prepareSound__14dSndBgmSound_cFPCcUl = .text:0x8037A860; // type:function size:0x58
onPreparing__14dSndBgmSound_cFUlUl = .text:0x8037A8C0; // type:function size:0x7C
@@ -20767,20 +20767,20 @@ setLoaded__21dSndBgmSoundHarpMgr_cFv = .text:0x8037B980; // type:function size:0
reset__21dSndBgmSoundHarpMgr_cFv = .text:0x8037B990; // type:function size:0x48
setPlaySamplePosition__21dSndBgmSoundHarpMgr_cFl = .text:0x8037B9E0; // type:function size:0x74
getCurrentVarSet__21dSndBgmSoundHarpMgr_cFv = .text:0x8037BA60; // type:function size:0x8
__dt__40SndMgrDisposer<22dSndBgmBattleDataMgr_c>Fv = .text:0x8037BA70; // type:function size:0x78
create__40SndMgrDisposer<22dSndBgmBattleDataMgr_c>Fv = .text:0x8037BAF0; // type:function size:0x48
remove__40SndMgrDisposer<22dSndBgmBattleDataMgr_c>Fv = .text:0x8037BB40; // type:function size:0x10
__ct__22dSndBgmBattleDataMgr_cFv = .text:0x8037BB50; // type:function size:0x6C
getDataPrefix__22dSndBgmBattleDataMgr_cFv = .text:0x8037BBC0; // type:function size:0x8
getDataPrefixLength__22dSndBgmBattleDataMgr_cFv = .text:0x8037BBD0; // type:function size:0x24
fn_8037BC00 = .text:0x8037BC00; // type:function size:0x4
fn_8037BC10 = .text:0x8037BC10; // type:function size:0xC0
getHarpMgrForSoundId__22dSndBgmBattleDataMgr_cFUl = .text:0x8037BCD0; // type:function size:0x54
__dt__37SndMgrDisposer<19dSndBgmSeqDataMgr_c>Fv = .text:0x8037BA70; // type:function size:0x78 scope:weak
create__37SndMgrDisposer<19dSndBgmSeqDataMgr_c>Fv = .text:0x8037BAF0; // type:function size:0x48 scope:weak
remove__37SndMgrDisposer<19dSndBgmSeqDataMgr_c>Fv = .text:0x8037BB40; // type:function size:0x10 scope:weak
__ct__19dSndBgmSeqDataMgr_cFv = .text:0x8037BB50; // type:function size:0x6C
getDataPrefix__19dSndBgmSeqDataMgr_cFv = .text:0x8037BBC0; // type:function size:0x8
getDataPrefixLength__19dSndBgmSeqDataMgr_cFv = .text:0x8037BBD0; // type:function size:0x24
initialize__19dSndBgmSeqDataMgr_cFv = .text:0x8037BC00; // type:function size:0x4
setupState0__19dSndBgmSeqDataMgr_cFv = .text:0x8037BC10; // type:function size:0xC0
getHarpMgrForSoundId__19dSndBgmSeqDataMgr_cFUl = .text:0x8037BCD0; // type:function size:0x54
fn_8037BD30 = .text:0x8037BD30; // type:function size:0x4C
fn_8037BD80 = .text:0x8037BD80; // type:function size:0x4
fn_8037BD90 = .text:0x8037BD90; // type:function size:0x4C
fn_8037BDE0 = .text:0x8037BDE0; // type:function size:0x5C
fn_8037BE40 = .text:0x8037BE40; // type:function size:0x68
getConfig__19dSndBgmBattleConfigFUl = .text:0x8037BD90; // type:function size:0x4C
hasConfig__19dSndBgmBattleConfigFUl = .text:0x8037BDE0; // type:function size:0x5C
getConfig__16dSndBgmSeqConfigFUll = .text:0x8037BE40; // type:function size:0x68
__ct__27dSndBgmDataHarpVarSetBase_cFl = .text:0x8037BEB0; // type:function size:0x7C
__ct__20dSndBgmDataHarpVar_cFv = .text:0x8037BF30; // type:function size:0x10 scope:weak
__dt__27dSndBgmDataHarpVarSetBase_cFv = .text:0x8037BF40; // type:function size:0x64
@@ -29029,8 +29029,8 @@ 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
lbl_804F3888 = .rodata:0x804F3888; // type:object size:0x40
sBattleConfigs = .rodata:0x804F3858; // type:object size:0x30 scope:local data:4byte
sBgmConfigs = .rodata:0x804F3888; // type:object size:0x40 scope:local
lbl_804F38C8 = .rodata:0x804F38C8; // type:object size:0x18
lbl_804F38E0 = .rodata:0x804F38E0; // type:object size:0x10
sFlowSoundDefs = .rodata:0x804F38F0; // type:object size:0x80 scope:local
@@ -38041,7 +38041,7 @@ lbl_80549078 = .data:0x80549078; // type:object size:0x10
lbl_80549088 = .data:0x80549088; // type:object size:0x34
__vt__14dSndBgmSound_c = .data:0x805490BC; // type:object size:0x44
lbl_80549100 = .data:0x80549100; // type:object size:0x48
__vt__40SndMgrDisposer<22dSndBgmBattleDataMgr_c> = .data:0x80549148; // type:object size:0x10
__vt__37SndMgrDisposer<19dSndBgmSeqDataMgr_c> = .data:0x80549148; // type:object size:0xC scope:weak
__vt__18dSndBgmMmlParser_c = .data:0x80549158; // type:object size:0x10
lbl_80549168 = .data:0x80549168; // type:object size:0x10
lbl_80549178 = .data:0x80549178; // type:object size:0x10
@@ -41096,7 +41096,7 @@ lbl_805742D0 = .sdata:0x805742D0; // type:object size:0x8
lbl_805742D8 = .sdata:0x805742D8; // type:object size:0x8
lbl_805742E0 = .sdata:0x805742E0; // type:object size:0x8
lbl_805742E8 = .sdata:0x805742E8; // type:object size:0x8
lbl_805742F0 = .sdata:0x805742F0; // type:object size:0x8
@7580 = .sdata:0x805742F0; // type:object size:0x6 scope:local data:string
lbl_805742F8 = .sdata:0x805742F8; // type:object size:0x8
lbl_80574300 = .sdata:0x80574300; // type:object size:0x8 data:string
lbl_80574308 = .sdata:0x80574308; // type:object size:0x8
@@ -42297,8 +42297,8 @@ sDisposer__24dSndAreaSoundEffectMgr_c = .sbss:0x80575D7C; // type:object size:0x
sInstance__12dSndBgmMgr_c = .sbss:0x80575D80; // type:object size:0x4 data:4byte
sDisposer__12dSndBgmMgr_c = .sbss:0x80575D84; // type:object size:0x4 data:4byte
spGlobalHarpMgr__14dSndBgmSound_c = .sbss:0x80575D88; // type:object size:0x8 data:4byte
sInstance__22dSndBgmBattleDataMgr_c = .sbss:0x80575D90; // type:object size:0x4 data:4byte
sDisposer__22dSndBgmBattleDataMgr_c = .sbss:0x80575D94; // type:object size:0x4 data:4byte
sInstance__19dSndBgmSeqDataMgr_c = .sbss:0x80575D90; // type:object size:0x4 data:4byte
sDisposer__19dSndBgmSeqDataMgr_c = .sbss:0x80575D94; // type:object size:0x4 data:4byte
sInstance__20dSndSmallEffectMgr_c = .sbss:0x80575D98; // type:object size:0x4 data:4byte
sDisposer__20dSndSmallEffectMgr_c = .sbss:0x80575D9C; // type:object size:0x4 data:4byte
lbl_80575DA0 = .sbss:0x80575DA0; // type:object size:0x4 data:4byte
+3 -1
View File
@@ -759,7 +759,9 @@ config.libs = [
Object(NonMatching, "d/snd/d_snd_bgm_sound.cpp"),
Object(NonMatching, "d/snd/d_snd_bgm_sound_battle.cpp"),
Object(Matching, "d/snd/d_snd_bgm_sound_harp_mgr.cpp"),
Object(NonMatching, "d/snd/d_snd_bgm_battle_data_mgr.cpp"),
Object(Matching, "d/snd/d_snd_bgm_seq_data_mgr.cpp"),
Object(NonMatching, "d/snd/d_snd_bgm_reverb.cpp"),
Object(Matching, "d/snd/d_snd_bgm_seq_config.cpp"),
Object(Matching, "d/snd/d_snd_bgm_harp_data.cpp"),
Object(Matching, "d/snd/d_snd_bgm_mml_parser_base.cpp"),
Object(NonMatching, "d/snd/d_snd_bgm_mml_parsers.cpp"),
+30
View File
@@ -0,0 +1,30 @@
#ifndef D_SND_BGM_SEQ_CONFIG_H
#define D_SND_BGM_SEQ_CONFIG_H
#include "common.h"
struct dSndBgmSeqConfig {
/* 0x00 */ u32 soundId;
/* 0x04 */ s32 field_0x04;
/* 0x08 */ s32 field_0x08;
/* 0x0C */ u16 field_0x0C;
/* 0x0E */ u16 field_0x0E;
static const dSndBgmSeqConfig *getConfig(u32 soundId, s32 unkParam);
};
struct dSndBgmBattleConfig_MuteUnmuteMasks {
/* 0x00 */ u16 unmuteMask;
/* 0x02 */ u16 muteMask;
};
struct dSndBgmBattleConfig {
/* 0x00 */ u32 soundId;
/* 0x04 */ dSndBgmBattleConfig_MuteUnmuteMasks mTrackMasks[3];
static bool hasConfig(u32 soundId);
static const dSndBgmBattleConfig *getConfig(u32 soundId);
};
#endif
@@ -1,28 +1,32 @@
#ifndef D_SND_BGM_BATTLE_DATA_MGR_H
#define D_SND_BGM_BATTLE_DATA_MGR_H
#ifndef D_SND_BGM_SEQ_DATA_MGR_H
#define D_SND_BGM_SEQ_DATA_MGR_H
#include "common.h"
#include "d/snd/d_snd_util.h"
#include "d/snd/d_snd_types.h"
#include "d/snd/d_snd_util.h"
SND_DISPOSER_FORWARD_DECL(dSndBgmBattleDataMgr_c);
SND_DISPOSER_FORWARD_DECL(dSndBgmSeqDataMgr_c);
// Previous Ghidra name: SomeUnusedSoundMgr
class dSndBgmBattleDataMgr_c {
class dSndBgmSeqDataMgr_c {
public:
SND_DISPOSER_MEMBERS(dSndBgmBattleDataMgr_c);
SND_DISPOSER_MEMBERS(dSndBgmSeqDataMgr_c);
public:
dSndBgmBattleDataMgr_c();
dSndBgmSeqDataMgr_c();
static const char *getDataPrefix();
static u32 getDataPrefixLength();
dSndBgmSoundHarpMgr_c *getHarpMgrForSoundId(u32 soundId);
void initialize();
void setupState0();
private:
static const s32 NUM_SOUNDS = 2;
/* 0x10 */ dSndBgmSoundHarpMgr_c *mpMgrs;
/* 0x14 */ u8 field_0x14;
/* 0x14 */ bool mInitialized;
};
#endif
-7
View File
@@ -7,13 +7,6 @@
#include "nw4r/snd/snd_SoundStartable.h"
#include "nw4r/ut/ut_list.h"
struct dSndBgmSeqConfig {
/* 0x00 */ u32 soundId;
/* 0x04 */ u8 _0x04[0x0C - 0x04];
/* 0x0C */ u16 field_0x0C;
/* 0x0E */ u16 field_0x0E;
};
class dSndBgmSound_c : public dSndSound_c {
enum BgmSoundFlags_e {
BGM_FLAG_BATTLE = 0x1,
+4
View File
@@ -41,6 +41,10 @@ public:
mPrevIdx = -1;
}
u32 getSoundId() const {
return mSoundId;
}
private:
/* 0x00 */ dSndBgmHarpData_c mHarpData;
/* 0x0C */ dSndBgmDataHarpVarSetBase_c *mpCurrVarSet;
+6 -5
View File
@@ -31,7 +31,8 @@ public:
};
enum EventFlags_e {
EVENT_0x2 = 0x2,
EVENT_IN_EVENT = 0x1,
EVENT_DEMO = 0x2,
EVENT_MUTE_BGM_PARTIAL = 0x8,
EVENT_MUTE_BGM_FULL = 0x10,
EVENT_MUTE_STAGE_EFFECTS_PARTIAL = 0x20,
@@ -92,15 +93,15 @@ public:
}
bool checkEventFlag(u32 mask) const {
return field_0x094 & mask;
return mEventFlags & mask;
}
void onEventFlag(u32 mask) {
field_0x094 |= mask;
mEventFlags |= mask;
}
void offEventFlag(u32 mask) {
field_0x094 &= ~mask;
mEventFlags &= ~mask;
}
void setFlowEvent(u32 eventId);
@@ -197,7 +198,7 @@ private:
/* 0x088 */ UNKWORD field_0x088;
/* 0x08C */ s32 mSoundEventId;
/* 0x090 */ UNKWORD field_0x090;
/* 0x094 */ u32 field_0x094;
/* 0x094 */ u32 mEventFlags;
/* 0x098 */ SizedString<64> field_0x098;
/* 0x0D8 */ SizedString<64> field_0x0D8;
/* 0x118 */ const char *field_0x118;
+1
View File
@@ -23,5 +23,6 @@ class dSndBgmSound_c;
class dSndBgmBattleSound_c;
class dSndBgmSoundHarpMgr_c;
class dSndBgmSeqConfig;
#endif
-18
View File
@@ -1,18 +0,0 @@
#include "d/snd/d_snd_bgm_battle_data_mgr.h"
#include "d/snd/d_snd_bgm_sound_harp_mgr.h"
#include "d/snd/d_snd_util.h"
SND_DISPOSER_DEFINE(dSndBgmBattleDataMgr_c)
dSndBgmBattleDataMgr_c::dSndBgmBattleDataMgr_c() : field_0x14(0) {
mpMgrs = new dSndBgmSoundHarpMgr_c[2];
}
const char *dSndBgmBattleDataMgr_c::getDataPrefix() {
return "DATA_";
}
u32 dSndBgmBattleDataMgr_c::getDataPrefixLength() {
return std::strlen(getDataPrefix());
}
+2 -2
View File
@@ -3,7 +3,7 @@
#include "common.h"
#include "d/snd/d_snd_mgr.h"
#include "d/snd/d_snd_bgm_sound_harp_mgr.h"
#include "d/snd/d_snd_bgm_battle_data_mgr.h"
#include "d/snd/d_snd_bgm_seq_data_mgr.h"
#include "d/snd/d_snd_player_mgr.h"
#include "nw4r/snd/snd_SoundArchive.h"
#include "sized_string.h"
@@ -21,7 +21,7 @@ bool dSndBgmMmlParserHarp_c::parseData(const char *soundLabel, u32 baseSoundId,
bool ok = false;
field_0x294->reset();
SizedString<64> dataLabel;
dataLabel.sprintf("%s%s", dSndBgmBattleDataMgr_c::getDataPrefix(), soundLabel);
dataLabel.sprintf("%s%s", dSndBgmSeqDataMgr_c::getDataPrefix(), soundLabel);
u32 dataId = dSndPlayerMgr_c::GetInstance()->convertLabelStringToSoundId(dataLabel);
if (dataId != -1 && dSndMgr_c::GetInstance()->getArchive()->GetSoundType(dataId) == nw4r::snd::SoundArchive::SOUND_TYPE_SEQ) {
ok = loadAndParse(dataId, trackMask, true);
+52
View File
@@ -0,0 +1,52 @@
#include "d/snd/d_snd_bgm_seq_config.h"
#include "common.h"
#include "d/snd/d_snd_wzsound.h"
static const dSndBgmBattleConfig sBattleConfigs[] = {
{ BGM_BATTLE2, {{(1 << 7) | (1 << 4) | (1 << 3), 0}, {(1 << 9) | (1 << 6), 0}, {0, 0}}},
{BGM_BATTLE_ROOM_MAIN, {{(1 << 7) | (1 << 4), 0}, {(1 << 9), 0}, {0, 0}}},
{ BGM_MIDDLE_BOSS, {{(1 << 1), 0}, {(1 << 2), 0}, {0, 0}}}
};
const dSndBgmBattleConfig *dSndBgmBattleConfig::getConfig(u32 soundId) {
for (int i = 0; i < ARRAY_LENGTH(sBattleConfigs); i++) {
if (soundId == sBattleConfigs[i].soundId) {
return &sBattleConfigs[i];
}
}
return nullptr;
}
bool dSndBgmBattleConfig::hasConfig(u32 soundId) {
if (soundId == -1) {
return false;
}
for (int i = 0; i < ARRAY_LENGTH(sBattleConfigs); i++) {
if (soundId == sBattleConfigs[i].soundId) {
return true;
}
}
return false;
}
static const dSndBgmSeqConfig sBgmConfigs[] = {
{ BGM_BATTLE2, 0, 0x180, 1, 4},
{ BGM_BATTLE2, 1, 0x180, 5, 0x2F},
{BGM_BATTLE_ROOM_MAIN, 1, 0x180, 5, 0x2C},
{ BGM_MUTE, 1, 0x120, 0, 0x1F},
};
const dSndBgmSeqConfig *dSndBgmSeqConfig::getConfig(u32 soundId, s32 unkParam) {
if (soundId == -1) {
return nullptr;
}
for (const dSndBgmSeqConfig *def = sBgmConfigs; def < sBgmConfigs + ARRAY_LENGTH(sBgmConfigs); def++) {
if (soundId == def->soundId && def->field_0x04 == unkParam) {
return def;
}
}
return nullptr;
}
+60
View File
@@ -0,0 +1,60 @@
#include "d/snd/d_snd_bgm_seq_data_mgr.h"
#include "common.h"
#include "d/snd/d_snd_bgm_mgr.h"
#include "d/snd/d_snd_bgm_mml_parsers.h"
#include "d/snd/d_snd_bgm_sound_harp_mgr.h"
#include "d/snd/d_snd_mgr.h"
#include "d/snd/d_snd_player_mgr.h"
#include "d/snd/d_snd_util.h"
#include "d/snd/d_snd_wzsound.h"
SND_DISPOSER_DEFINE(dSndBgmSeqDataMgr_c)
dSndBgmSeqDataMgr_c::dSndBgmSeqDataMgr_c() : mInitialized(false) {
mpMgrs = new dSndBgmSoundHarpMgr_c[NUM_SOUNDS];
}
const char *dSndBgmSeqDataMgr_c::getDataPrefix() {
return "DATA_";
}
u32 dSndBgmSeqDataMgr_c::getDataPrefixLength() {
return std::strlen(getDataPrefix());
}
void dSndBgmSeqDataMgr_c::initialize() {
// no-op
}
void dSndBgmSeqDataMgr_c::setupState0() {
if (mInitialized) {
return;
}
// DATA_BGM_BATTLE2, DATA_BGM_BATTLE2_OUTRO
for (int i = 0; i < NUM_SOUNDS; i++) {
u32 dataId = DATA_BGM_BATTLE2 + i;
const char *baseLabel = dSndMgr_c::getSoundLabelString(dataId) + getDataPrefixLength();
u32 baseSoundId = dSndPlayerMgr_c::GetInstance()->convertLabelStringToSoundId(baseLabel);
dSndBgmMmlParserHarp_c parser(&mpMgrs[i]);
(void)dSndBgmMgr_c::isSoundPlayedByBgmBattlePlayer(dataId);
parser.parseData(baseSoundId, (1 << 15) | (1 << 0));
}
mInitialized = true;
}
dSndBgmSoundHarpMgr_c *dSndBgmSeqDataMgr_c::getHarpMgrForSoundId(u32 soundId) {
if (soundId == -1) {
return nullptr;
}
for (dSndBgmSoundHarpMgr_c *it = &mpMgrs[0]; it < &mpMgrs[NUM_SOUNDS]; it++) {
if (it->getSoundId() == soundId) {
return it;
}
}
return nullptr;
}
+15 -3
View File
@@ -1,9 +1,10 @@
#include "d/snd/d_snd_bgm_sound.h"
#include "common.h"
#include "d/snd/d_snd_bgm_battle_data_mgr.h"
#include "d/snd/d_snd_bgm_mgr.h"
#include "d/snd/d_snd_bgm_mml_parsers.h"
#include "d/snd/d_snd_bgm_seq_config.h"
#include "d/snd/d_snd_bgm_seq_data_mgr.h"
#include "d/snd/d_snd_mgr.h"
#include "d/snd/d_snd_player_mgr.h"
#include "d/snd/d_snd_sound.h"
@@ -17,6 +18,7 @@
#include "nw4r/snd/snd_WaveSoundHandle.h"
#include "toBeSorted/music_mgrs.h"
dSndBgmSoundHarpMgr_c *dSndBgmSound_c::spGlobalHarpMgr;
dSndBgmSound_c::dSndBgmSound_c()
@@ -153,7 +155,8 @@ nw4r::snd::SoundStartable::StartResult dSndBgmSound_c::startBgmSound(u32 soundId
mSeqTempo = mpHarpMgr->getTempo();
}
if (mSeqTempo > 0 && dSndMgr_c::GetInstance()->getArchive()->GetSoundType(soundId) == nw4r::snd::SoundArchive::SOUND_TYPE_SEQ) {
if (mSeqTempo > 0 && dSndMgr_c::GetInstance()->getArchive()->GetSoundType(soundId) ==
nw4r::snd::SoundArchive::SOUND_TYPE_SEQ) {
mSeqPlaySamplePosition = (mSeqTempo * startOffset * 0xC0);
mSeqPlaySamplePosition /= 120000;
info.startOffsetType = nw4r::snd::SoundStartable::StartInfo::START_OFFSET_TYPE_TICK;
@@ -232,6 +235,15 @@ void dSndBgmSound_c::fadeIn(u32 id, s32 fadeFrames) {
}
}
void dSndBgmSound_c::loadSeqConfig(u32 soundId) {
if (dSndMgr_c::GetInstance()->getArchive()->GetSoundType(soundId) == nw4r::snd::SoundArchive::SOUND_TYPE_SEQ) {
mpSeqConfig = dSndBgmSeqConfig::getConfig(soundId, 1);
if (mpSeqConfig != nullptr) {
field_0x118 = mpSeqConfig->field_0x08;
}
}
}
// Largely a copy of dSndSound_c::prepareSound, with changes to support different startable
nw4r::snd::SoundStartable::StartResult dSndBgmSound_c::prepareSound(u32 soundId, u32 startOffset) {
if (soundId == -1) {
@@ -454,7 +466,7 @@ void dSndBgmSound_c::getHarpData(u32 soundId) {
return;
}
dSndBgmSoundHarpMgr_c *mgr = dSndBgmBattleDataMgr_c::GetInstance()->getHarpMgrForSoundId(soundId);
dSndBgmSoundHarpMgr_c *mgr = dSndBgmSeqDataMgr_c::GetInstance()->getHarpMgrForSoundId(soundId);
if (mgr != nullptr) {
mpHarpMgr = mgr;
} else {
+2 -2
View File
@@ -41,7 +41,7 @@ dSndStateMgr_c::dSndStateMgr_c()
field_0x088(0),
mSoundEventId(SND_EVENT_0x89),
field_0x090(0),
field_0x094(0),
mEventFlags(0),
field_0x118(nullptr),
field_0x11C(0),
field_0x120(0),
@@ -210,7 +210,7 @@ void dSndStateMgr_c::initializeEventCallbacks(const char *name) {
sEventExecuteCallback = nullptr;
resetOverrides();
if (checkEventFlag(EVENT_0x2)) {
if (checkEventFlag(EVENT_DEMO)) {
handleDemoEvent(name);
return;
}