mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-25 15:05:06 -04:00
Endianness fixes in JAudio loading code
Not tested because I can't even get the code to init again due to the aforementioned race condition
This commit is contained in:
@@ -10,34 +10,34 @@ class JKRHeap;
|
||||
|
||||
namespace JASBNKParser {
|
||||
struct TFileHeader {
|
||||
/* 0x0 */ int id;
|
||||
/* 0x4 */ u32 mSize;
|
||||
/* 0x0 */ BE(int) id;
|
||||
/* 0x4 */ BE(u32) mSize;
|
||||
/* 0x8 */ u8 _08[4];
|
||||
/* 0xC */ u32 mVersion;
|
||||
/* 0xC */ BE(u32) mVersion;
|
||||
};
|
||||
|
||||
namespace Ver1 {
|
||||
struct TOsc {
|
||||
/* 0x00 */ u32 id;
|
||||
/* 0x00 */ BE(u32) id;
|
||||
/* 0x04 */ u8 mTarget;
|
||||
/* 0x08 */ f32 _08;
|
||||
/* 0x0C */ u32 mTableOffset;
|
||||
/* 0x10 */ u32 _10;
|
||||
/* 0x14 */ f32 mScale;
|
||||
/* 0x18 */ f32 _18;
|
||||
/* 0x08 */ BE(f32) _08;
|
||||
/* 0x0C */ BE(u32) mTableOffset;
|
||||
/* 0x10 */ BE(u32) _10;
|
||||
/* 0x14 */ BE(f32) mScale;
|
||||
/* 0x18 */ BE(f32) _18;
|
||||
};
|
||||
|
||||
struct TPercData {
|
||||
/* 0x00 */ f32 mVolume;
|
||||
/* 0x04 */ f32 mPitch;
|
||||
/* 0x00 */ BE(f32) mVolume;
|
||||
/* 0x04 */ BE(f32) mPitch;
|
||||
/* 0x08 */ u8 mPan;
|
||||
/* 0x0A */ u16 mRelease;
|
||||
/* 0x0C */ u32 field_0xc;
|
||||
/* 0x0A */ BE(u16) mRelease;
|
||||
/* 0x0C */ BE(u32) field_0xc;
|
||||
};
|
||||
|
||||
struct TChunk {
|
||||
/* 0x0 */ u32 mID;
|
||||
/* 0x4 */ u32 mSize;
|
||||
/* 0x0 */ BE(u32) mID;
|
||||
/* 0x4 */ BE(u32) mSize;
|
||||
};
|
||||
|
||||
struct TEnvtChunk : TChunk {
|
||||
@@ -45,13 +45,13 @@ namespace JASBNKParser {
|
||||
};
|
||||
|
||||
struct TOscChunk : TChunk {
|
||||
/* 0x8 */ u32 mCount;
|
||||
/* 0x8 */ BE(u32) mCount;
|
||||
/* 0xC */ TOsc mOsc[0];
|
||||
};
|
||||
|
||||
struct TListChunk : TChunk {
|
||||
/* 0x8 */ u32 count;
|
||||
/* 0xC */ u32 mOffsets[0];
|
||||
/* 0x8 */ BE(u32) count;
|
||||
/* 0xC */ BE(u32) mOffsets[0];
|
||||
};
|
||||
|
||||
TChunk* findChunk(void const*, u32);
|
||||
@@ -67,18 +67,18 @@ namespace JASBNKParser {
|
||||
|
||||
struct TOsc {
|
||||
/* 0x00 */ u8 mTarget;
|
||||
/* 0x04 */ f32 field_0x4;
|
||||
/* 0x04 */ BE(f32) field_0x4;
|
||||
/* 0x08 */ TOffset<JASOscillator::Point> mPointOffset;
|
||||
/* 0x0C */ TOffset<JASOscillator::Point> field_0xc;
|
||||
/* 0x10 */ f32 mScale;
|
||||
/* 0x14 */ f32 field_0x14;
|
||||
/* 0x10 */ BE(f32) mScale;
|
||||
/* 0x14 */ BE(f32) field_0x14;
|
||||
};
|
||||
|
||||
struct TVmap {
|
||||
/* 0x00 */ u8 field_0x0[4];
|
||||
/* 0x04 */ u32 field_0x4;
|
||||
/* 0x08 */ f32 field_0x8;
|
||||
/* 0x0C */ f32 field_0xc;
|
||||
/* 0x04 */ BE(u32) field_0x4;
|
||||
/* 0x08 */ BE(f32) field_0x8;
|
||||
/* 0x0C */ BE(f32) field_0xc;
|
||||
};
|
||||
|
||||
struct TKeymap {
|
||||
@@ -89,27 +89,27 @@ namespace JASBNKParser {
|
||||
|
||||
struct TInst {
|
||||
/* 0x00 */ u8 field_0x0[8];
|
||||
/* 0x08 */ f32 mVolume;
|
||||
/* 0x0C */ f32 mPitch;
|
||||
/* 0x08 */ BE(f32) mVolume;
|
||||
/* 0x0C */ BE(f32) mPitch;
|
||||
/* 0x10 */ TOffset<TOsc> mOscOffset[2];
|
||||
/* 0x18 */ u8 field_0x18[0x10];
|
||||
/* 0x28 */ u32 mKeyRegionCount;
|
||||
/* 0x28 */ BE(u32) mKeyRegionCount;
|
||||
/* 0x2C */ TOffset<TKeymap> mKeymapOffset[0];
|
||||
};
|
||||
|
||||
struct TPmap {
|
||||
/* 0x00 */ f32 mVolume;
|
||||
/* 0x04 */ f32 mPitch;
|
||||
/* 0x00 */ BE(f32) mVolume;
|
||||
/* 0x04 */ BE(f32) mPitch;
|
||||
/* 0x08 */ u8 field_0x8[0xc];
|
||||
/* 0x14 */ TOffset<TVmap> mVmapOffset;
|
||||
};
|
||||
|
||||
struct TPerc {
|
||||
/* 0x000 */ u32 mMagic;
|
||||
/* 0x000 */ BE(u32) mMagic;
|
||||
/* 0x000 */ u8 field_0x0[0x84];
|
||||
/* 0x088 */ TOffset<TPmap> mPmapOffset[0x80];
|
||||
/* 0x288 */ s8 mPan[0x80];
|
||||
/* 0x308 */ u16 mRelease[0x80];
|
||||
/* 0x308 */ BE(u16) mRelease[0x80];
|
||||
};
|
||||
|
||||
struct TOffsetData {
|
||||
@@ -133,7 +133,7 @@ namespace JASBNKParser {
|
||||
JASBasicBank* createBasicBank(void const*, JKRHeap*);
|
||||
|
||||
inline u32 getBankNumber(const void* param_0) {
|
||||
u32* ptr = (u32*)param_0;
|
||||
BE(u32)* ptr = (BE(u32)*)param_0;
|
||||
return ptr[2];
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
struct JASBasicWaveBank : public JASWaveBank {
|
||||
struct TWaveHandle : public JASWaveHandle {
|
||||
TWaveHandle() { mHeap = NULL; }
|
||||
virtual int getWavePtr() const;
|
||||
virtual intptr_t getWavePtr() const;
|
||||
virtual const JASWaveInfo* getWaveInfo() const { return &field_0x4; }
|
||||
bool compareHeap(JASHeap* heap) const { return mHeap == heap;}
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ public:
|
||||
u32 field_0x0;
|
||||
JASWaveInfo field_0x4;
|
||||
} field_0xdc;
|
||||
int field_0x104;
|
||||
intptr_t field_0x104;
|
||||
|
||||
static OSMessageQueue sBankDisposeMsgQ;
|
||||
static OSMessage sBankDisposeMsg[16];
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define JASOSCILLATOR_H
|
||||
|
||||
#include <dolphin/types.h>
|
||||
#include "dusk/endian.h"
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-jaudio
|
||||
@@ -9,9 +10,9 @@
|
||||
*/
|
||||
struct JASOscillator {
|
||||
struct Point {
|
||||
/* 0x0 */ s16 _0;
|
||||
/* 0x2 */ s16 _2;
|
||||
/* 0x4 */ s16 _4;
|
||||
/* 0x0 */ BE(s16) _0;
|
||||
/* 0x2 */ BE(s16) _2;
|
||||
/* 0x4 */ BE(s16) _4;
|
||||
};
|
||||
|
||||
struct EffectParams {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
struct JASSimpleWaveBank : JASWaveBank, JASWaveArc {
|
||||
struct TWaveHandle : JASWaveHandle {
|
||||
int getWavePtr() const;
|
||||
intptr_t getWavePtr() const;
|
||||
TWaveHandle();
|
||||
const JASWaveInfo* getWaveInfo() const;
|
||||
|
||||
|
||||
@@ -22,26 +22,26 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x0 */ u32 mOffset;
|
||||
/* 0x0 */ BE(u32) mOffset;
|
||||
};
|
||||
|
||||
struct TCtrlWave {
|
||||
/* 0x0 */ u32 _00;
|
||||
/* 0x0 */ BE(u32) _00;
|
||||
};
|
||||
|
||||
struct TWave {
|
||||
/* 0x00 */ u8 _00;
|
||||
/* 0x01 */ u8 _01;
|
||||
/* 0x02 */ u8 _02;
|
||||
/* 0x04 */ f32 _04;
|
||||
/* 0x08 */ u32 mOffset;
|
||||
/* 0x0C */ u32 _0C;
|
||||
/* 0x10 */ u32 _10;
|
||||
/* 0x14 */ u32 _14;
|
||||
/* 0x18 */ u32 _18;
|
||||
/* 0x1C */ u32 _1C;
|
||||
/* 0x20 */ s16 _20;
|
||||
/* 0x22 */ s16 _22;
|
||||
/* 0x04 */ BE(f32) _04;
|
||||
/* 0x08 */ BE(u32) mOffset;
|
||||
/* 0x0C */ BE(u32) _0C;
|
||||
/* 0x10 */ BE(u32) _10;
|
||||
/* 0x14 */ BE(u32) _14;
|
||||
/* 0x18 */ BE(u32) _18;
|
||||
/* 0x1C */ BE(u32) _1C;
|
||||
/* 0x20 */ BE(s16) _20;
|
||||
/* 0x22 */ BE(s16) _22;
|
||||
};
|
||||
|
||||
struct TWaveArchive {
|
||||
@@ -56,7 +56,7 @@ public:
|
||||
|
||||
struct TCtrl {
|
||||
/* 0x0 */ u8 _00[4];
|
||||
/* 0x4 */ u32 mWaveCount;
|
||||
/* 0x4 */ BE(u32) mWaveCount;
|
||||
/* 0x8 */ TOffset<TCtrlWave> mCtrlWaveOffsets[0];
|
||||
};
|
||||
|
||||
@@ -67,14 +67,14 @@ public:
|
||||
|
||||
struct TCtrlGroup {
|
||||
/* 0x0 */ u8 _00[8];
|
||||
/* 0x8 */ u32 mGroupCount;
|
||||
/* 0x8 */ BE(u32) mGroupCount;
|
||||
/* 0xC */ TOffset<TCtrlScene> mCtrlSceneOffsets[0];
|
||||
};
|
||||
|
||||
/** @fabricated */
|
||||
struct THeader {
|
||||
/* 0x00 */ u8 _00[0xC];
|
||||
/* 0x0C */ u32 mWaveTableSize;
|
||||
/* 0x0C */ BE(u32) mWaveTableSize;
|
||||
/* 0x10 */ TOffset<TWaveArchiveBank> mArchiveBankOffset;
|
||||
/* 0x14 */ TOffset<TCtrlGroup> mCtrlGroupOffset;
|
||||
};
|
||||
|
||||
@@ -39,7 +39,7 @@ class JASWaveHandle {
|
||||
public:
|
||||
virtual ~JASWaveHandle() {}
|
||||
virtual const JASWaveInfo* getWaveInfo() const = 0;
|
||||
virtual int getWavePtr() const = 0;
|
||||
virtual intptr_t getWavePtr() const = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define JAUAUDIOARCINTERPRETER_H
|
||||
|
||||
#include <dolphin/types.h>
|
||||
#include "dusk/endian.h"
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-jaudio
|
||||
@@ -33,7 +34,7 @@ public:
|
||||
}
|
||||
|
||||
u32 readU32_() {
|
||||
u32 temp = *(u32*)mReadPtr;
|
||||
u32 temp = *(BE(u32)*)mReadPtr;
|
||||
mReadPtr += 4;
|
||||
return temp;
|
||||
}
|
||||
|
||||
@@ -40,8 +40,8 @@ public:
|
||||
/* 0x88 */ const void* mBstnDst;
|
||||
/* 0x8C */ JSUList<JAUDisposer_> field_0x8c;
|
||||
/* 0x98 */ s32 field_0x98;
|
||||
/* 0x9C */ int field_0x9c;
|
||||
/* 0xA0 */ int field_0xa0;
|
||||
/* 0x9C */ int mBankMemoryUsage;
|
||||
/* 0xA0 */ int mWaveBankMemoryUsage;
|
||||
};
|
||||
|
||||
JAUSection(JAUSectionHeap*, u32, s32);
|
||||
|
||||
@@ -13,9 +13,9 @@ struct JAISeqDataRegion;
|
||||
struct JAUSeqCollectionData {
|
||||
s8 field_0x0;
|
||||
s8 field_0x1;
|
||||
u16 field_0x2;
|
||||
u32 field_0x4;
|
||||
u32 field_0x8;
|
||||
BE(u16) field_0x2;
|
||||
BE(u32) field_0x4;
|
||||
BE(u32) field_0x8;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -32,7 +32,7 @@ public:
|
||||
bool isValid() const { return field_0x8; }
|
||||
|
||||
/* 0x00 */ u16 field_0x0;
|
||||
/* 0x04 */ const u32* field_0x4;
|
||||
/* 0x04 */ const BE(u32)* field_0x4;
|
||||
/* 0x08 */ const JAUSeqCollectionData* field_0x8;
|
||||
/* 0x0C */ int field_0xc;
|
||||
};
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "JSystem/JAudio2/JAISound.h"
|
||||
#include "JSystem/JAudio2/JASGadget.h"
|
||||
#include "dusk/endian.h"
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-jaudio
|
||||
@@ -36,10 +37,10 @@ struct JAUSoundTable_ {
|
||||
field_0x0 = param_0;
|
||||
// magic number is not in debug rom. I'm not sure what this comparison is (maybe some sort of '' number?)
|
||||
// I also do not know how it is different between JAUSoundTable and JAUSoundNameTable
|
||||
if (*(u32*)field_0x0 + 0xbdad0000 != Root::magicNumber()) {
|
||||
if (*(BE(u32)*)field_0x0 + 0xbdad0000 != Root::magicNumber()) {
|
||||
field_0x0 = NULL;
|
||||
} else {
|
||||
field_0x4 = (Root*)((u8*)field_0x0 + *((u32*)field_0x0 + 3));
|
||||
field_0x4 = (Root*)((u8*)field_0x0 + *((BE(u32)*)field_0x0 + 3));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,8 +84,8 @@ struct JAUSoundTable_ {
|
||||
*/
|
||||
struct JAUSoundTableRoot {
|
||||
static inline u32 magicNumber() { return 0x5420; }
|
||||
u32 mSectionNumber;
|
||||
u32 mSectionOffsets[0];
|
||||
BE(u32) mSectionNumber;
|
||||
BE(u32) mSectionOffsets[0];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -102,8 +103,8 @@ struct JAUSoundTableSection {
|
||||
return mGroupOffsets[index];
|
||||
}
|
||||
|
||||
u32 mNumGroups;
|
||||
u32 mGroupOffsets[0];
|
||||
BE(u32) mNumGroups;
|
||||
BE(u32) mGroupOffsets[0];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -128,11 +129,11 @@ struct JAUSoundTableGroup {
|
||||
if (index >= mNumItems) {
|
||||
return 0;
|
||||
}
|
||||
return *(u32*)(mTypeIds + index * 4) & 0xffffff;
|
||||
return *(BE(u32)*)(mTypeIds + index * 4) & 0xffffff;
|
||||
}
|
||||
|
||||
u32 mNumItems;
|
||||
u32 field_0x4;
|
||||
BE(u32) mNumItems;
|
||||
BE(u32) field_0x4;
|
||||
u8 mTypeIds[0];
|
||||
};
|
||||
|
||||
@@ -169,8 +170,8 @@ struct JAUSoundTable : public JASGlobalInstance<JAUSoundTable> {
|
||||
*/
|
||||
struct JAUSoundNameTableRoot {
|
||||
static inline u32 magicNumber() { return 0x544e; }
|
||||
u32 mSectionNumber;
|
||||
u32 mSectionOffsets[0];
|
||||
BE(u32) mSectionNumber;
|
||||
BE(u32) mSectionOffsets[0];
|
||||
};
|
||||
/**
|
||||
* @ingroup jsystem-jaudio
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
struct BinaryStreamFileTable {
|
||||
/* 0x0 */ u8 mIdentifier[4];
|
||||
/* 0x4 */ u32 mNumFiles;
|
||||
/* 0x8 */ int mFilePathOffsets[];
|
||||
/* 0x4 */ BE(u32) mNumFiles;
|
||||
/* 0x8 */ BE(int) mFilePathOffsets[];
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -71,7 +71,7 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h
|
||||
u8* envt = new (heap, 2) u8[envt_chunk->mSize];
|
||||
JASCalc::bcopy(envt_chunk->mData, envt, envt_chunk->mSize);
|
||||
|
||||
u32* ptr = &osc_chunk->mCount;
|
||||
BE(u32)* ptr = &osc_chunk->mCount;
|
||||
u32 count = *ptr++;
|
||||
JASOscillator::Data* osc_data = new (heap, 0) JASOscillator::Data[count];
|
||||
for (int i = 0; i < count; i++, ptr += sizeof(TOsc) >> 2) {
|
||||
@@ -91,7 +91,7 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h
|
||||
bank->newInstTable(list_chunk->count, heap);
|
||||
for (int i = 0; i < list_chunk->count; i++) {
|
||||
if (list_chunk->mOffsets[i] != 0) {
|
||||
u32* data = (u32*)((intptr_t)stream + list_chunk->mOffsets[i]);
|
||||
BE(u32)* data = (BE(u32)*)((intptr_t)stream + list_chunk->mOffsets[i]);
|
||||
switch (*data++) {
|
||||
case 'Inst': {
|
||||
JASBasicInst* instp = new (heap, 0) JASBasicInst();
|
||||
@@ -112,15 +112,15 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h
|
||||
keymap->setHighKey(*data >> 0x18);
|
||||
u32 fVar4 = data[1];
|
||||
keymap->field_0x4 = JSULoHalf(data[3]);
|
||||
keymap->field_0x8 = *(f32*)&data[4];
|
||||
keymap->field_0xc = *(f32*)&data[5];
|
||||
keymap->field_0x8 = *(BE(f32)*)&data[4];
|
||||
keymap->field_0xc = *(BE(f32)*)&data[5];
|
||||
data += 2;
|
||||
for (int k = 0; k < fVar4; k++) {
|
||||
data += 4;
|
||||
}
|
||||
}
|
||||
instp->setVolume(*(f32*)&data[0]);
|
||||
instp->setPitch(*(f32*)&data[1]);
|
||||
instp->setVolume(*(BE(f32)*)&data[0]);
|
||||
instp->setPitch(*(BE(f32)*)&data[1]);
|
||||
bank->setInst(i, instp);
|
||||
break;
|
||||
}
|
||||
@@ -139,21 +139,21 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h
|
||||
JUT_ASSERT(277, percp);
|
||||
u32 type = data[0];
|
||||
JUT_ASSERT(282, type == 'Pmap');
|
||||
u32* ptr = (u32*)((intptr_t)stream + offset);
|
||||
BE(u32)* ptr = (BE(u32)*)((intptr_t)stream + offset);
|
||||
TPercData* perc_data = (TPercData*)(ptr + 1);
|
||||
percp->setVolume(perc_data->mVolume);
|
||||
percp->setPitch(perc_data->mPitch);
|
||||
percp->setPan((f32)perc_data->mPan / 127.0f);
|
||||
percp->setRelease(perc_data->mRelease);
|
||||
ptr = (u32*)&perc_data->field_0xc;
|
||||
ptr = (BE(u32)*)&perc_data->field_0xc;
|
||||
u32 count2 = *ptr++;
|
||||
for (int k = 0; k < count2; k++) {
|
||||
ptr++;
|
||||
}
|
||||
u32 pVar6 = ptr[0];
|
||||
percp->field_0xe = JSULoHalf(ptr[2]);
|
||||
percp->field_0x10 = *(f32*)&ptr[3];
|
||||
percp->field_0x14 = *(f32*)&ptr[4];
|
||||
percp->field_0x10 = *(BE(f32)*)&ptr[3];
|
||||
percp->field_0x14 = *(BE(f32)*)&ptr[4];
|
||||
for (int k = 0; k < pVar6; k++) {}
|
||||
drump->setPerc(j, percp);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ JASChannel* JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8
|
||||
if (!waveInfo) {
|
||||
return NULL;
|
||||
}
|
||||
int wavePtr = waveHandle->getWavePtr();
|
||||
intptr_t wavePtr = waveHandle->getWavePtr();
|
||||
if (!wavePtr) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ u32 JASBasicWaveBank::TWaveGroup::getWaveID(int index) const {
|
||||
return mCtrlWaveArray[index].field_0x0;
|
||||
}
|
||||
|
||||
int JASBasicWaveBank::TWaveHandle::getWavePtr() const {
|
||||
intptr_t JASBasicWaveBank::TWaveHandle::getWavePtr() const {
|
||||
JUT_ASSERT(313, mHeap);
|
||||
void* base = mHeap->getBase();
|
||||
if (base == 0) {
|
||||
|
||||
@@ -109,7 +109,7 @@ void JASOscillator::update() {
|
||||
_08 = _10;
|
||||
_14++;
|
||||
_0C = _08;
|
||||
const s16* ps = &psVar1[_14]._0;
|
||||
const BE(s16)* ps = &psVar1[_14]._0;
|
||||
s16 r26 = ps[0];
|
||||
switch(r26) {
|
||||
case 0xf:
|
||||
|
||||
@@ -39,7 +39,7 @@ JASWaveArc* JASSimpleWaveBank::getWaveArc(u32 no) {
|
||||
return this;
|
||||
}
|
||||
|
||||
int JASSimpleWaveBank::TWaveHandle::getWavePtr() const {
|
||||
intptr_t JASSimpleWaveBank::TWaveHandle::getWavePtr() const {
|
||||
void* base = mHeap->getBase();
|
||||
if (base == NULL) {
|
||||
return NULL;
|
||||
|
||||
@@ -32,32 +32,32 @@ namespace {
|
||||
JAUStreamFileTable stack_14;
|
||||
stack_14.init(param_0);
|
||||
if (!stack_14.isValid()) {
|
||||
field_0x4 = 0;
|
||||
field_0x8 = NULL;
|
||||
mNumStreamFiles = 0;
|
||||
mStreamFileDVDEntryNums = NULL;
|
||||
return;
|
||||
}
|
||||
field_0x4 = stack_14.getNumFiles();
|
||||
field_0x8 = new s32[field_0x4];
|
||||
if (!field_0x8) {
|
||||
field_0x4 = NULL;
|
||||
mNumStreamFiles = stack_14.getNumFiles();
|
||||
mStreamFileDVDEntryNums = new s32[mNumStreamFiles];
|
||||
if (!mStreamFileDVDEntryNums) {
|
||||
mNumStreamFiles = NULL;
|
||||
return;
|
||||
}
|
||||
for (u32 i = 0; i < field_0x4; i++) {
|
||||
field_0x8[i] = DVDConvertPathToEntrynum(stack_14.getFilePath(i));
|
||||
for (u32 i = 0; i < mNumStreamFiles; i++) {
|
||||
mStreamFileDVDEntryNums[i] = DVDConvertPathToEntrynum(stack_14.getFilePath(i));
|
||||
}
|
||||
}
|
||||
virtual s32 getStreamFileEntry(JAISoundID id) {
|
||||
u32 short_id = id.id_.info.waveID;
|
||||
if (short_id >= field_0x4) {
|
||||
if (short_id >= mNumStreamFiles) {
|
||||
return -1;
|
||||
}
|
||||
return field_0x8[short_id];
|
||||
return mStreamFileDVDEntryNums[short_id];
|
||||
}
|
||||
|
||||
bool isValid() { return field_0x4; }
|
||||
bool isValid() { return mNumStreamFiles; }
|
||||
|
||||
u32 field_0x4;
|
||||
s32* field_0x8;
|
||||
u32 mNumStreamFiles;
|
||||
s32* mStreamFileDVDEntryNums;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -75,8 +75,8 @@ JAUSection::TSectionData::TSectionData() {
|
||||
mBstDst = NULL;
|
||||
mBstnDst = NULL;
|
||||
field_0x80 = NULL;
|
||||
field_0xa0 = 0;
|
||||
field_0x9c = 0;
|
||||
mWaveBankMemoryUsage = 0;
|
||||
mBankMemoryUsage = 0;
|
||||
}
|
||||
|
||||
void JAUSection::TSectionData::resetRegisteredBankTables() {
|
||||
@@ -293,13 +293,13 @@ JASWaveBank* JAUSection::newWaveBank(u32 bank_no, void const* param_1) {
|
||||
JUT_ASSERT(529, isBuilding());
|
||||
{
|
||||
TPushCurrentHeap push(getHeap_());
|
||||
s32 r27 = getHeap_()->getFreeSize();
|
||||
s32 previousFree = getHeap_()->getFreeSize();
|
||||
JASWaveBank* waveBank = JASWSParser::createWaveBank(param_1, getHeap_());
|
||||
if (waveBank) {
|
||||
JUT_ASSERT(536, sectionHeap_->getWaveBankTable().getWaveBank( bank_no ) == NULL);
|
||||
sectionHeap_->getWaveBankTable().registWaveBank(bank_no, waveBank);
|
||||
data_.registeredWaveBankTables.set(bank_no, true);
|
||||
data_.field_0xa0 += r27 - getHeap_()->getFreeSize();
|
||||
data_.mWaveBankMemoryUsage += previousFree - getHeap_()->getFreeSize();
|
||||
return waveBank;
|
||||
}
|
||||
}
|
||||
@@ -331,7 +331,7 @@ JASBank* JAUSection::newBank(void const* param_0, u32 param_1) {
|
||||
{
|
||||
TPushCurrentHeap push(getHeap_());
|
||||
u32 bank_no = JASBNKParser::getBankNumber(param_0);
|
||||
s32 r25 = getHeap_()->getFreeSize();
|
||||
s32 previousFree = getHeap_()->getFreeSize();
|
||||
JASBank* bank = JASBNKParser::createBank(param_0, getHeap_());
|
||||
if (bank) {
|
||||
if (buildingBankTable_) {
|
||||
@@ -343,7 +343,7 @@ JASBank* JAUSection::newBank(void const* param_0, u32 param_1) {
|
||||
data_.registeredBankTables.set(bank_no, true);
|
||||
}
|
||||
bank->assignWaveBank(waveBank);
|
||||
data_.field_0x9c += r25 - getHeap_()->getFreeSize();
|
||||
data_.mBankMemoryUsage += previousFree - getHeap_()->getFreeSize();
|
||||
return bank;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ bool JAUSeqCollection::getSeqData(int param_0, int param_1, JAISeqData* param_2)
|
||||
return false;
|
||||
}
|
||||
u32 r29 = field_0x4[param_0];
|
||||
u32* puVar2 = (u32*)((u8*)field_0x8 + r29);
|
||||
BE(u32)* puVar2 = (BE(u32)*)((u8*)field_0x8 + r29);
|
||||
if (param_1 >= puVar2[0]) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user