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:
PJB3005
2026-02-26 23:22:47 +01:00
parent b6a6c4fd0e
commit 38c006fa0e
19 changed files with 110 additions and 107 deletions
+10 -10
View File
@@ -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);
}
+1 -1
View File
@@ -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;
}
+1 -1
View File
@@ -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) {
+1 -1
View File
@@ -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:
+1 -1
View File
@@ -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;
+19 -19
View File
@@ -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;
}
}
+1 -1
View File
@@ -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;
}