mirror of
https://github.com/zeldaret/ss
synced 2026-06-24 17:23:13 -04:00
115 lines
2.5 KiB
C++
115 lines
2.5 KiB
C++
#include "d/snd/d_snd_harp_song_data.h"
|
|
|
|
#include "common.h"
|
|
#include "d/snd/d_snd_fi_vocal_mgr.h"
|
|
#include "d/snd/d_snd_wzsound.h"
|
|
|
|
const s32 dSndHarpSongData_c::sNumHarpSongs = LABEL_HARP_TONE_RAW_END - LABEL_HARP_TONE_RAW_START - 1;
|
|
static const f32 sUnkSongVals[] = {
|
|
40.0f,
|
|
40.0f,
|
|
40.0f,
|
|
40.0f,
|
|
40.0f,
|
|
40.0f,
|
|
};
|
|
|
|
dSndHarpSongEntryBase_c::dSndHarpSongEntryBase_c(s16 count, s16 stride) : mCount(count), mStride(stride) {
|
|
mpData = new s16[count];
|
|
reset();
|
|
}
|
|
|
|
dSndHarpSongEntryBase_c::~dSndHarpSongEntryBase_c() {
|
|
delete[] mpData;
|
|
}
|
|
|
|
void dSndHarpSongEntryBase_c::reset() {
|
|
for (int i = 0; i < mCount; i++) {
|
|
mpData[i] = -1;
|
|
}
|
|
}
|
|
|
|
void dSndHarpSongEntryBase_c::insert(u32 idx, s16 value) {
|
|
// TODO - magic number
|
|
if (idx > 0x120) {
|
|
return;
|
|
}
|
|
|
|
u32 insert = 0;
|
|
while (mStride <= idx) {
|
|
insert++;
|
|
idx -= mStride;
|
|
}
|
|
mpData[insert] = value;
|
|
}
|
|
|
|
s32 dSndHarpSongEntryBase_c::get(u32 idx) const {
|
|
if (idx >= mCount) {
|
|
return -1;
|
|
}
|
|
return mpData[idx];
|
|
}
|
|
|
|
dSndHarpSongEntry1_c::dSndHarpSongEntry1_c() : dSndHarpSongEntryBase_c(NUM_ENTRIES_TYPE_1, NUM_ENTRIES_TYPE_1 / 2) {
|
|
reset();
|
|
for (s32 i = 0; i < NUM_ENTRIES_TYPE_1; i++) {
|
|
mStaticValues[i] = 0;
|
|
}
|
|
}
|
|
|
|
void dSndHarpSongEntry1_c::loadStaticData(s32 i1, u32 i2, s32 i3) {
|
|
for (s32 i = 0; i < NUM_ENTRIES_TYPE_1; i++) {
|
|
if (get(i) > 0) {
|
|
mStaticValues[i] = dSndFiVocalMgr_c::GetInstance()->getStaticSongValue(i1, i2, i3, i);
|
|
}
|
|
}
|
|
}
|
|
|
|
s16 dSndHarpSongEntry1_c::getStaticDatum(u32 idx) const {
|
|
if (idx >= NUM_ENTRIES_TYPE_1) {
|
|
return -1;
|
|
}
|
|
return mStaticValues[idx];
|
|
}
|
|
|
|
dSndHarpSongData_c::dSndHarpSongData_c() : field_0x0C(30.0f) {
|
|
init(0);
|
|
}
|
|
|
|
void dSndHarpSongData_c::init(u32 idx) {
|
|
if (idx >= sNumHarpSongs) {
|
|
return;
|
|
}
|
|
mIndex = idx;
|
|
mSoundId = -1;
|
|
field_0x08 = 0;
|
|
|
|
for (s32 i1 = 0; i1 < 4; i1++) {
|
|
for (u32 i2 = 0; i2 < 2; i2++) {
|
|
for (s32 i3 = 0; i3 < 2; i3++) {
|
|
mEntries2[i1][i2][i3].reset();
|
|
}
|
|
field_0x90[i1][i2] = 0;
|
|
}
|
|
}
|
|
|
|
field_0x0C = sUnkSongVals[mIndex];
|
|
loadStaticValues();
|
|
}
|
|
|
|
void dSndHarpSongData_c::loadStaticValues() {
|
|
for (s32 i1 = 0; i1 < 4; i1++) {
|
|
for (u32 i2 = 0; i2 < 2; i2++) {
|
|
mEntries1[i1][i2].loadStaticData(mIndex, i1, i2);
|
|
}
|
|
}
|
|
}
|
|
|
|
void dSndHarpSongData_c::insert2(u32 key, s16 value, s32) {
|
|
// TODO
|
|
}
|
|
|
|
void dSndHarpSongData_c::insert1(u32 key, s16 value) {
|
|
// TODO
|
|
}
|