more harp stuff

This commit is contained in:
robojumper
2025-07-16 23:20:26 +02:00
parent ba3092ca92
commit 81e2b78249
14 changed files with 457 additions and 36 deletions
+13
View File
@@ -19,4 +19,17 @@ private:
/* 0x298 */ dSndBgmSoundHarpMgr_c *field_0x298;
};
class dSndBgmMmlParserHarpSong_c : dSndBgmMmlParser_c {
public:
dSndBgmMmlParserHarpSong_c();
virtual void CommandProc(u32 trackNo, int wait, u32 command, s32 commandArg1, s32 commandArg2) const override;
virtual void NoteOnCommandProc(u32 trackNo, int wait, int key, int velocity, s32 length) const override;
bool parseData(u32 soundId, dSndHarpSongData_c *pData);
private:
/* 0x294 */ dSndHarpSongData_c *field_0x294;
};
#endif
+5 -1
View File
@@ -14,9 +14,13 @@ public:
void fiSpeak(const char *, u16, s32);
void executeOutputText(u16, u16);
/** The bank argument affects what Fi is singing */
bool startFiVocal(s16 pitch, s16 bank);
s16 getStaticSongValue(s32, u32, s32, s32);
private:
/* 0x10 */ nw4r::snd::SoundHandle mHandle;
/* 0x10 */ nw4r::snd::SoundHandle mSpeechHandle;
};
#endif
+69
View File
@@ -0,0 +1,69 @@
#ifndef D_SND_HARP_SONG_DATA_H
#define D_SND_HARP_SONG_DATA_H
#include "common.h"
class dSndHarpSongEntryBase_c {
public:
dSndHarpSongEntryBase_c(s16 count, s16 stride);
~dSndHarpSongEntryBase_c();
void insert(u32 idx, s16 value);
s32 get(u32 idx) const;
void reset();
private:
/* 0x00 */ s16 *mpData;
/* 0x04 */ u16 mCount;
/* 0x06 */ u16 mStride;
};
class dSndHarpSongEntry1_c : public dSndHarpSongEntryBase_c {
static const s32 NUM_ENTRIES_TYPE_1 = 24;
public:
dSndHarpSongEntry1_c();
void loadStaticData(s32 i1, u32 i2, s32 i3);
s16 getStaticDatum(u32 idx) const;
private:
/* 0x08 */ s16 mStaticValues[24];
};
class dSndHarpSongEntry2_c : public dSndHarpSongEntryBase_c {
static const s32 NUM_ENTRIES_TYPE_2 = 12;
public:
dSndHarpSongEntry2_c() : dSndHarpSongEntryBase_c(NUM_ENTRIES_TYPE_2, NUM_ENTRIES_TYPE_2 * 2) {}
private:
};
class dSndHarpSongData_c {
public:
dSndHarpSongData_c();
void init(u32 idx);
void loadStaticValues();
void insert2(u32 key, s16 value, s32);
void insert1(u32 key, s16 value);
static const s32 sNumHarpSongs;
void setSoundId(u32 id) {
mSoundId = id;
}
private:
/* 0x00 */ u32 mSoundId;
/* 0x04 */ u32 mIndex;
/* 0x08 */ UNKWORD field_0x08;
/* 0x0C */ f32 field_0x0C;
/* 0x10 */ dSndHarpSongEntry2_c mEntries2[4][2][2];
/* 0x90 */ UNKWORD field_0x90[4][2];
/* 0xB0 */ dSndHarpSongEntry1_c mEntries1[4][2];
};
#endif
+57
View File
@@ -1,7 +1,10 @@
#ifndef D_SND_HARP_SONG_MGR_H
#define D_SND_HARP_SONG_MGR_H
#include "common.h"
#include "d/snd/d_snd_util.h"
#include "d/snd/d_snd_types.h"
#include "nw4r/snd/snd_SoundHandle.h"
SND_DISPOSER_FORWARD_DECL(dSndHarpSongMgr_c);
@@ -12,9 +15,63 @@ public:
dSndHarpSongMgr_c();
void setup();
void setupState0();
void calc();
nw4r::snd::SoundHandle &getFiSingHandle() {
return mFiSingHandle;
}
private:
void resetFloatArr1();
void resetFloatArr2();
/* 0x010 */ u8 field_0x010;
/* 0x011 */ u8 field_0x011;
/* 0x012 */ bool mDataLoaded;
/* 0x014 */ UNKWORD field_0x014;
/* 0x018 */ UNKWORD field_0x018;
/* 0x01C */ UNKWORD field_0x01C;
/* 0x020 */ UNKWORD field_0x020;
/* 0x024 */ UNKWORD field_0x024;
/* 0x028 */ UNKWORD field_0x028;
/* 0x02C */ UNKWORD field_0x02C;
/* 0x030 */ UNKWORD field_0x030;
/* 0x034 */ UNKWORD field_0x034;
/* 0x038 */ f32 field_0x038;
/* 0x03C */ f32 field_0x03C;
/* 0x040 */ u8 field_0x040;
/* 0x041 */ u8 field_0x041;
/* 0x042 */ u8 field_0x042;
/* 0x043 */ u8 field_0x043;
/* 0x044 */ u8 field_0x044;
/* 0x048 */ UNKWORD field_0x048;
/* 0x04C */ UNKWORD field_0x04C;
/* 0x050 */ UNKWORD field_0x050;
/* 0x054 */ UNKWORD field_0x054;
/* 0x058 */ UNKWORD field_0x058;
/* 0x05C */ UNKWORD field_0x05C;
/* 0x060 */ UNKWORD field_0x060;
/* 0x064 */ UNKWORD field_0x064;
/* 0x068 */ UNKWORD field_0x068;
/* 0x06C */ UNKWORD field_0x06C;
/* 0x070 */ f32 field_0x070;
/* 0x074 */ u8 _0x074[0x078 - 0x074];
/* 0x078 */ u8 field_0x078;
/* 0x07C */ f32 field_0x07C[300];
/* 0x52C */ f32 field_0x52C[30];
/* 0x5A4 */ dSndHarpSongData_c *mpData;
/* 0x5A8 */ dSndHarpSongData_c *mpTmpData;
/* 0x5AC */ UNKWORD field_0x5AC;
/* 0x5B0 */ nw4r::snd::SoundHandle mFiSingHandle;
/* 0x5B4 */ UNKWORD field_0x5B4;
/* 0x5B8 */ UNKWORD field_0x5B8;
/* 0x5BC */ u8 field_0x5BC;
/* 0x5C0 */ UNKWORD field_0x5C0;
/* 0x5C4 */ UNKWORD field_0x5C4;
};
#endif
+2
View File
@@ -189,6 +189,8 @@ public:
void onCameraCut(s32 cutIdx);
static void clearExecuteCallback();
private:
void resetOverrides();
void initializeEventCallbacks(const char *name);
+2
View File
@@ -26,4 +26,6 @@ class dSndBgmSoundHarpMgr_c;
class dSndBgmSeqConfig;
class dSndBgmBattleConfig;
class dSndHarpSongData_c;
#endif