mirror of
https://github.com/zeldaret/tp
synced 2026-07-07 14:13:27 -04:00
Work on Audio, JAUSeqDataBlockMgr OK (#2027)
This commit is contained in:
@@ -412,7 +412,8 @@ REGISTER_CTORS(0x80290B14, __sinit_JASHeapCtrl_cpp);
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JASHeap::~JASHeap() {
|
||||
//asm JASHeap::~JASHeap() {
|
||||
asm void __dt__7JASHeapFv() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASHeapCtrl/__dt__7JASHeapFv.s"
|
||||
}
|
||||
|
||||
@@ -4,51 +4,13 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JAudio2/JASWSParser.h"
|
||||
#include "JSystem/JAudio2/JASWaveInfo.h"
|
||||
#include "JSystem/JAudio2/JASWaveArcLoader.h"
|
||||
#include "JSystem/JAudio2/JASSimpleWaveBank.h"
|
||||
#include "JSystem/JAudio2/JASBasicWaveBank.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JKRHeap {
|
||||
/* 802CE72C */ void getFreeSize();
|
||||
};
|
||||
|
||||
struct JASWaveInfo {
|
||||
static u32 one[1 + 1 /* padding */];
|
||||
};
|
||||
|
||||
struct JASWaveArc {
|
||||
/* 8029A70C */ void setFileName(char const*);
|
||||
};
|
||||
|
||||
struct JASWSParser {
|
||||
/* 80298FB0 */ void getGroupCount(void const*);
|
||||
/* 80298FD8 */ void createWaveBank(void const*, JKRHeap*);
|
||||
/* 80299034 */ void createBasicWaveBank(void const*, JKRHeap*);
|
||||
/* 80299264 */ void createSimpleWaveBank(void const*, JKRHeap*);
|
||||
|
||||
static u8 sUsedHeapSize[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
struct JASSimpleWaveBank {
|
||||
/* 80298C94 */ JASSimpleWaveBank();
|
||||
/* 80298DE0 */ void setWaveTableSize(u32, JKRHeap*);
|
||||
/* 80298E84 */ void setWaveInfo(u32, JASWaveInfo const&);
|
||||
};
|
||||
|
||||
struct JASBasicWaveBank {
|
||||
struct TWaveGroup {
|
||||
/* 80298A84 */ void setWaveCount(u32, JKRHeap*);
|
||||
};
|
||||
|
||||
/* 802984F8 */ JASBasicWaveBank();
|
||||
/* 80298640 */ void getWaveGroup(u32);
|
||||
/* 80298664 */ void setGroupCount(u32, JKRHeap*);
|
||||
/* 80298710 */ void setWaveTableSize(u32, JKRHeap*);
|
||||
/* 80298910 */ void setWaveInfo(JASBasicWaveBank::TWaveGroup*, int, u16, JASWaveInfo const&);
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
@@ -88,32 +50,38 @@ extern "C" void _savegpr_23();
|
||||
extern "C" void _restgpr_20();
|
||||
extern "C" void _restgpr_23();
|
||||
extern "C" u32 one__11JASWaveInfo[1 + 1 /* padding */];
|
||||
extern "C" extern u8 JASDram[4];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* 80298FB0-80298FD8 2938F0 0028+00 1/1 0/0 0/0 .text getGroupCount__11JASWSParserFPCv */
|
||||
// Matches with JSUConvertOffsetToPtr
|
||||
#ifdef NONMATCHING
|
||||
u32 JASWSParser::getGroupCount(void const* stream) {
|
||||
THeader* header = (THeader*)stream;
|
||||
return ((TOffset<TCtrlGroup>*)&header->mCtrlGroupOffset)->ptr(header)->mCtrlGroupCount;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASWSParser::getGroupCount(void const* param_0) {
|
||||
asm u32 JASWSParser::getGroupCount(void const* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASWSParser/getGroupCount__11JASWSParserFPCv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80298FD8-80299034 293918 005C+00 0/0 1/1 0/0 .text createWaveBank__11JASWSParserFPCvP7JKRHeap
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASWSParser::createWaveBank(void const* param_0, JKRHeap* param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASWSParser/createWaveBank__11JASWSParserFPCvP7JKRHeap.s"
|
||||
JASWaveBank* JASWSParser::createWaveBank(void const* param_0, JKRHeap* param_1) {
|
||||
if (getGroupCount(param_0) == 1) {
|
||||
return (JASWaveBank*)createSimpleWaveBank(param_0, param_1);
|
||||
} else {
|
||||
return (JASWaveBank*) createBasicWaveBank(param_0, param_1);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80451280-80451288 000780 0004+04 2/2 0/0 0/0 .sbss sUsedHeapSize__11JASWSParser */
|
||||
@@ -124,7 +92,7 @@ u8 JASWSParser::sUsedHeapSize[4 + 4 /* padding */];
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASWSParser::createBasicWaveBank(void const* param_0, JKRHeap* param_1) {
|
||||
asm JASBasicWaveBank* JASWSParser::createBasicWaveBank(void const* param_0, JKRHeap* param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASWSParser/createBasicWaveBank__11JASWSParserFPCvP7JKRHeap.s"
|
||||
}
|
||||
@@ -135,7 +103,7 @@ asm void JASWSParser::createBasicWaveBank(void const* param_0, JKRHeap* param_1)
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASWSParser::createSimpleWaveBank(void const* param_0, JKRHeap* param_1) {
|
||||
asm JASSimpleWaveBank* JASWSParser::createSimpleWaveBank(void const* param_0, JKRHeap* param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASWSParser/createSimpleWaveBank__11JASWSParserFPCvP7JKRHeap.s"
|
||||
}
|
||||
|
||||
@@ -107,6 +107,3 @@ void JAUAudioArcLoader::readMaxSeCategory(int param_0, int param_1, int param_2)
|
||||
seMgr->getCategory(param_0)->setMaxInactiveSe(param_2);
|
||||
}
|
||||
}
|
||||
|
||||
/* 802A49FC-802A4A5C 29F33C 0060+00 1/0 0/0 0/0 .text __dt__17JAUAudioArcLoaderFv */
|
||||
JAUAudioArcLoader::~JAUAudioArcLoader() {}
|
||||
|
||||
@@ -506,8 +506,8 @@ u8* JAUSection::newStaticSeqDataBlock_(JAISoundID param_0, u32 size) {
|
||||
if (!r28) {
|
||||
return NULL;
|
||||
}
|
||||
seqDataBlock->field_0x14 = r28;
|
||||
seqDataBlock->field_0x18 = size;
|
||||
seqDataBlock->field_0x14.addr = r28;
|
||||
seqDataBlock->field_0x14.size = size;
|
||||
seqDataBlock->field_0x10 = param_0;
|
||||
JASCriticalSection cs;
|
||||
if(data_.field_0x00.appendDynamicSeqDataBlock(seqDataBlock)) {
|
||||
@@ -844,7 +844,7 @@ bool JAUSectionHeap::setSeqDataUser(JAISeqDataUser* param_0) {
|
||||
}
|
||||
|
||||
/* 802A60AC-802A61D0 2A09EC 0124+00 0/0 2/2 0/0 .text newDynamicSeqBlock__14JAUSectionHeapFUl */
|
||||
bool JAUSectionHeap::newDynamicSeqBlock(u32 param_0) {
|
||||
bool JAUSectionHeap::newDynamicSeqBlock(u32 size) {
|
||||
/* JUT_ASSERT(937, isOpen());
|
||||
JUT_ASSERT(938, isBuilding());
|
||||
JUT_ASSERT(939, sectionHeap_ == this); */
|
||||
@@ -857,12 +857,12 @@ bool JAUSectionHeap::newDynamicSeqBlock(u32 param_0) {
|
||||
if (!link) {
|
||||
return false;
|
||||
}
|
||||
u8* r25 = new(0x20) u8[param_0];
|
||||
u8* r25 = new(0x20) u8[size];
|
||||
if (!r25) {
|
||||
return false;
|
||||
}
|
||||
seqDataBlock->field_0x14 = r25;
|
||||
seqDataBlock->field_0x18 = param_0;
|
||||
seqDataBlock->field_0x14.addr = r25;
|
||||
seqDataBlock->field_0x14.size = size;
|
||||
seqDataBlock->field_0x10.setAnonymous();
|
||||
JASCriticalSection cs;
|
||||
if (base1.sectionHeap_->sectionHeapData_.field_0x408.appendDynamicSeqDataBlock(seqDataBlock)) {
|
||||
|
||||
@@ -59,8 +59,8 @@ bool JAUSeqCollection::getSeqData(int param_0, int param_1, JAISeqData* param_2)
|
||||
* getSeqDataRegion__16JAUSeqCollectionFP16JAISeqDataRegion */
|
||||
bool JAUSeqCollection::getSeqDataRegion(JAISeqDataRegion* param_0) {
|
||||
if (isValid()) {
|
||||
param_0->field_0x0 = (u32)field_0x8;
|
||||
param_0->field_0x4 = field_0xc;
|
||||
param_0->addr = (u8*)field_0x8;
|
||||
param_0->size = field_0xc;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -1,145 +1,86 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JAUSeqDataBlockMgr
|
||||
// JAUSeqDataBlockMgr
|
||||
//
|
||||
|
||||
#include "JSystem/JAudio2/JAUSeqDataBlockMgr.h"
|
||||
#include "JSystem/JAudio2/JAUSoundInfo.h"
|
||||
#include "JSystem/JAudio2/JASResArcLoader.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JKRArchive {};
|
||||
|
||||
struct JAISeqDataUser {};
|
||||
|
||||
struct JAISeqData {};
|
||||
|
||||
struct JASResArcLoader {
|
||||
/* 80290BD0 */ void getResSize(JKRArchive const*, u16);
|
||||
/* 80290D18 */ void loadResourceAsync(JKRArchive*, u16, u8*, u32, void (*)(u32, u32), u32);
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void __ct__15JAUSeqDataBlockFv();
|
||||
extern "C" void getSeqData__16JAUSeqDataBlocksF10JAISoundID();
|
||||
extern "C" void seekFreeBlock__16JAUSeqDataBlocksFUl();
|
||||
extern "C" void func_802A69D8();
|
||||
extern "C" void func_802A69F8();
|
||||
extern "C" void hasFailedBlock__16JAUSeqDataBlocksF10JAISoundID();
|
||||
extern "C" void __ct__23JAUDynamicSeqDataBlocksFv();
|
||||
extern "C" void setSeqDataArchive__23JAUDynamicSeqDataBlocksFP10JKRArchive();
|
||||
extern "C" void getSeqData__23JAUDynamicSeqDataBlocksF10JAISoundIDP14JAISeqDataUserP10JAISeqDatab();
|
||||
extern "C" void appendDynamicSeqDataBlock__23JAUDynamicSeqDataBlocksFP15JAUSeqDataBlock();
|
||||
extern "C" static void JAUDynamicSeqDataBlocks_receiveLoaded___FUlUl();
|
||||
extern "C" void loadDynamicSeq__23JAUDynamicSeqDataBlocksF10JAISoundIDbP14JAISeqDataUser();
|
||||
extern "C" void releaseIdleDynamicSeqDataBlock__23JAUDynamicSeqDataBlocksFP14JAISeqDataUser();
|
||||
extern "C" void releaseIdleDynamicSeqDataBlock___23JAUDynamicSeqDataBlocksFP14JAISeqDataUserUl();
|
||||
extern "C" void rearrangeLoadingSeqs___23JAUDynamicSeqDataBlocksFv();
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void getResSize__15JASResArcLoaderFPC10JKRArchiveUs();
|
||||
extern "C" void loadResourceAsync__15JASResArcLoaderFP10JKRArchiveUsPUcUlPFUlUl_vUl();
|
||||
extern "C" void __ct__10JSUPtrLinkFPv();
|
||||
extern "C" void initiate__10JSUPtrListFv();
|
||||
extern "C" void append__10JSUPtrListFP10JSUPtrLink();
|
||||
extern "C" void remove__10JSUPtrListFP10JSUPtrLink();
|
||||
extern "C" void _savegpr_24();
|
||||
extern "C" void _savegpr_25();
|
||||
extern "C" void _savegpr_27();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_24();
|
||||
extern "C" void _restgpr_25();
|
||||
extern "C" void _restgpr_27();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" extern u8 data_80450B50[4];
|
||||
extern "C" extern u8 __OSReport_disable;
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* 802A68F4-802A6928 2A1234 0034+00 0/0 2/2 0/0 .text __ct__15JAUSeqDataBlockFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JAUSeqDataBlock::JAUSeqDataBlock() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/__ct__15JAUSeqDataBlockFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
JAUSeqDataBlock::JAUSeqDataBlock() : field_0x0(this) {}
|
||||
|
||||
/* 802A6928-802A6974 2A1268 004C+00 1/1 0/0 0/0 .text getSeqData__16JAUSeqDataBlocksF10JAISoundID
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JAUSeqDataBlocks::getSeqData(JAISoundID param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/getSeqData__16JAUSeqDataBlocksF10JAISoundID.s"
|
||||
u8* JAUSeqDataBlocks::getSeqData(JAISoundID param_0) {
|
||||
// fake match. Should be
|
||||
// if (param_0.isAnonymous()) {
|
||||
// But doesn't match
|
||||
if ((u32)param_0 == 0xffffffff) {
|
||||
return NULL;
|
||||
}
|
||||
for (JSULink<JAUSeqDataBlock>* link = field_0x0.getFirst(); link != NULL;
|
||||
link = link->getNext())
|
||||
{
|
||||
if ((u32)link->getObject()->field_0x10 == (u32)param_0) {
|
||||
return link->getObject()->field_0x14.addr;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A6974-802A69D8 2A12B4 0064+00 1/1 0/0 0/0 .text seekFreeBlock__16JAUSeqDataBlocksFUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JAUSeqDataBlocks::seekFreeBlock(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/seekFreeBlock__16JAUSeqDataBlocksFUl.s"
|
||||
JSULink<JAUSeqDataBlock>* JAUSeqDataBlocks::seekFreeBlock(u32 size) {
|
||||
u32 currentBlockSize = 0xffffffff;
|
||||
JSULink<JAUSeqDataBlock>* rv = NULL;
|
||||
for (JSULink<JAUSeqDataBlock>* link = field_0x0.getFirst(); link != NULL; link = link->getNext())
|
||||
{
|
||||
if (link->getObject()->field_0x10.isAnonymous()) {
|
||||
u32 blockSize = link->getObject()->field_0x14.size;
|
||||
if (blockSize >= size && blockSize < currentBlockSize) {
|
||||
rv = link;
|
||||
currentBlockSize = blockSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (rv != NULL) {
|
||||
return rv;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A69D8-802A69F8 2A1318 0020+00 5/5 0/0 0/0 .text
|
||||
* append__16JAUSeqDataBlocksFP26JSULink<15JAUSeqDataBlock> */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JAUSeqDataBlocks::append(JSULink<JAUSeqDataBlock>* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/func_802A69D8.s"
|
||||
bool JAUSeqDataBlocks::append(JSULink<JAUSeqDataBlock>* param_0) {
|
||||
return field_0x0.append(param_0);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A69F8-802A6A18 2A1338 0020+00 4/4 0/0 0/0 .text
|
||||
* remove__16JAUSeqDataBlocksFP26JSULink<15JAUSeqDataBlock> */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JAUSeqDataBlocks::remove(JSULink<JAUSeqDataBlock>* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/func_802A69F8.s"
|
||||
bool JAUSeqDataBlocks::remove(JSULink<JAUSeqDataBlock>* param_0) {
|
||||
return field_0x0.remove(param_0);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A6A18-802A6A58 2A1358 0040+00 1/1 0/0 0/0 .text
|
||||
* hasFailedBlock__16JAUSeqDataBlocksF10JAISoundID */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JAUSeqDataBlocks::hasFailedBlock(JAISoundID param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/hasFailedBlock__16JAUSeqDataBlocksF10JAISoundID.s"
|
||||
bool JAUSeqDataBlocks::hasFailedBlock(JAISoundID param_0) {
|
||||
JSULink<JAUSeqDataBlock>* rv = NULL;
|
||||
for (JSULink<JAUSeqDataBlock>* link = field_0x0.getFirst(); link != NULL; link = link->getNext())
|
||||
{
|
||||
if (link->getObject()->field_0x10 == param_0) {
|
||||
link->getObject()->field_0x10.setAnonymous();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A6A58-802A6AA0 2A1398 0048+00 0/0 2/2 0/0 .text __ct__23JAUDynamicSeqDataBlocksFv
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JAUDynamicSeqDataBlocks::JAUDynamicSeqDataBlocks() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/__ct__23JAUDynamicSeqDataBlocksFv.s"
|
||||
JAUDynamicSeqDataBlocks::JAUDynamicSeqDataBlocks() {
|
||||
seqDataArchive_ = NULL;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A6AA0-802A6AA8 -00001 0008+00 0/0 0/0 0/0 .text
|
||||
* setSeqDataArchive__23JAUDynamicSeqDataBlocksFP10JKRArchive */
|
||||
@@ -149,80 +90,158 @@ void JAUDynamicSeqDataBlocks::setSeqDataArchive(JKRArchive* param_0) {
|
||||
|
||||
/* 802A6AA8-802A6B8C 2A13E8 00E4+00 0/0 1/1 0/0 .text
|
||||
* getSeqData__23JAUDynamicSeqDataBlocksF10JAISoundIDP14JAISeqDataUserP10JAISeqDatab */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm s32 JAUDynamicSeqDataBlocks::getSeqData(JAISoundID param_0, JAISeqDataUser* param_1,
|
||||
JAISeqData* param_2, bool param_3) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/func_802A6AA8.s"
|
||||
s32 JAUDynamicSeqDataBlocks::getSeqData(JAISoundID param_0, JAISeqDataUser* param_1,
|
||||
JAISeqData* param_2, bool param_3) {
|
||||
rearrangeLoadingSeqs_();
|
||||
if (field_0x0.hasFailedBlock(param_0)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (field_0xc.getSeqData(param_0)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
u8* seqData = field_0x18.getSeqData(param_0);
|
||||
if (seqData != NULL) {
|
||||
param_2->field_0x0 = seqData;
|
||||
param_2->field_0x4 = 0;
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (loadDynamicSeq(param_0, param_3, param_1)) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A6B8C-802A6BF4 2A14CC 0068+00 0/0 2/2 0/0 .text
|
||||
* appendDynamicSeqDataBlock__23JAUDynamicSeqDataBlocksFP15JAUSeqDataBlock */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm bool JAUDynamicSeqDataBlocks::appendDynamicSeqDataBlock(JAUSeqDataBlock* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/appendDynamicSeqDataBlock__23JAUDynamicSeqDataBlocksFP15JAUSeqDataBlock.s"
|
||||
bool JAUDynamicSeqDataBlocks::appendDynamicSeqDataBlock(JAUSeqDataBlock* seqDataBlock) {
|
||||
rearrangeLoadingSeqs_();
|
||||
if (seqDataBlock->field_0x10.isAnonymous()) {
|
||||
field_0x0.append(&seqDataBlock->field_0x0);
|
||||
} else {
|
||||
field_0x18.append(&seqDataBlock->field_0x0);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A6BF4-802A6C18 2A1534 0024+00 1/1 0/0 0/0 .text
|
||||
* JAUDynamicSeqDataBlocks_receiveLoaded___FUlUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void JAUDynamicSeqDataBlocks_receiveLoaded_(u32 param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/JAUDynamicSeqDataBlocks_receiveLoaded___FUlUl.s"
|
||||
static void JAUDynamicSeqDataBlocks_receiveLoaded_(u32 param_0, u32 param_1) {
|
||||
JAUSeqDataBlock* seqDataBlock = ((JSULink<JAUSeqDataBlock>*)param_1)->getObject();
|
||||
if (param_0 != NULL) {
|
||||
seqDataBlock->field_0x1c = 2;
|
||||
} else {
|
||||
seqDataBlock->field_0x1c = 0;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A6C18-802A6D48 2A1558 0130+00 1/1 2/2 0/0 .text
|
||||
* loadDynamicSeq__23JAUDynamicSeqDataBlocksF10JAISoundIDbP14JAISeqDataUser */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm bool JAUDynamicSeqDataBlocks::loadDynamicSeq(JAISoundID param_0, bool param_1,
|
||||
JAISeqDataUser* param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/loadDynamicSeq__23JAUDynamicSeqDataBlocksF10JAISoundIDbP14JAISeqDataUser.s"
|
||||
bool JAUDynamicSeqDataBlocks::loadDynamicSeq(JAISoundID param_0, bool param_1,
|
||||
JAISeqDataUser* param_2) {
|
||||
if (seqDataArchive_ == NULL) {
|
||||
return false;
|
||||
}
|
||||
JAUSoundInfo* soundInfo = JASGlobalInstance<JAUSoundInfo>::getInstance();
|
||||
if (soundInfo == NULL) {
|
||||
return false;
|
||||
}
|
||||
u16 resourceId = soundInfo->getBgmSeqResourceID(param_0);
|
||||
size_t resSize = JASResArcLoader::getResSize(seqDataArchive_, resourceId);
|
||||
JSULink<JAUSeqDataBlock>* link = field_0x0.seekFreeBlock(resSize);
|
||||
if (link == NULL) {
|
||||
if (param_1) {
|
||||
link = &releaseIdleDynamicSeqDataBlock_(param_2, resSize)->field_0x0;
|
||||
if (link == NULL) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
field_0x0.remove(link);
|
||||
JAUSeqDataBlock* seqDataBlock = link->getObject();
|
||||
seqDataBlock->field_0x10 = param_0;
|
||||
link->getObject()->field_0x1c = 1;
|
||||
field_0xc.append(link);
|
||||
JASResArcLoader::loadResourceAsync(
|
||||
seqDataArchive_, resourceId,
|
||||
link->getObject()->field_0x14.addr, link->getObject()->field_0x14.size,
|
||||
JAUDynamicSeqDataBlocks_receiveLoaded_, (u32)link);
|
||||
return true;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A6D48-802A6E00 2A1688 00B8+00 0/0 1/1 0/0 .text
|
||||
* releaseIdleDynamicSeqDataBlock__23JAUDynamicSeqDataBlocksFP14JAISeqDataUser */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JAUDynamicSeqDataBlocks::releaseIdleDynamicSeqDataBlock(JAISeqDataUser* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/releaseIdleDynamicSeqDataBlock__23JAUDynamicSeqDataBlocksFP14JAISeqDataUser.s"
|
||||
u32 JAUDynamicSeqDataBlocks::releaseIdleDynamicSeqDataBlock(JAISeqDataUser* param_0) {
|
||||
rearrangeLoadingSeqs_();
|
||||
u32 size = 0;
|
||||
JSULink<JAUSeqDataBlock>* nextLink;
|
||||
for (JSULink<JAUSeqDataBlock>* link = field_0x18.field_0x0.getFirst(); link != NULL; ) {
|
||||
nextLink = link->getNext();
|
||||
JAUSeqDataBlock* seqDataBlock = link->getObject();
|
||||
if (param_0 == NULL || !param_0->isUsingSeqData(seqDataBlock->field_0x14)) {
|
||||
field_0x18.remove(link);
|
||||
JAUSeqDataBlock* seqDataBlock = link->getObject();
|
||||
link->getObject()->field_0x10.setAnonymous();
|
||||
if (size < seqDataBlock->field_0x14.size) {
|
||||
size = seqDataBlock->field_0x14.size;
|
||||
}
|
||||
field_0x0.append(link);
|
||||
}
|
||||
link = nextLink;
|
||||
}
|
||||
return size;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A6E00-802A6EDC 2A1740 00DC+00 1/1 0/0 0/0 .text
|
||||
* releaseIdleDynamicSeqDataBlock___23JAUDynamicSeqDataBlocksFP14JAISeqDataUserUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JAUDynamicSeqDataBlocks::releaseIdleDynamicSeqDataBlock_(JAISeqDataUser* param_0,
|
||||
u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/releaseIdleDynamicSeqDataBlock___23JAUDynamicSeqDataBlocksFP14JAISeqDataUserUl.s"
|
||||
JAUSeqDataBlock*
|
||||
JAUDynamicSeqDataBlocks::releaseIdleDynamicSeqDataBlock_(JAISeqDataUser* param_0, u32 param_1) {
|
||||
rearrangeLoadingSeqs_();
|
||||
u32 minSize = 0xffffffff;
|
||||
JSULink<JAUSeqDataBlock>* foundBlock = NULL;
|
||||
JSULink<JAUSeqDataBlock>* link = field_0x18.field_0x0.getFirst();
|
||||
JSULink<JAUSeqDataBlock>* nextLink;
|
||||
while (link != NULL) {
|
||||
nextLink = link->getNext();
|
||||
JAUSeqDataBlock* seqDataBlock = link->getObject();
|
||||
if (param_0 == NULL || !param_0->isUsingSeqData(seqDataBlock->field_0x14)) {
|
||||
u32 size = seqDataBlock->field_0x14.size;
|
||||
if (size >= param_1 && size < minSize) {
|
||||
foundBlock = link;
|
||||
minSize = size;
|
||||
}
|
||||
}
|
||||
link = nextLink;
|
||||
}
|
||||
if (foundBlock != NULL) {
|
||||
field_0x18.remove(foundBlock);
|
||||
JAUSeqDataBlock* seqDataBlock = foundBlock->getObject();
|
||||
seqDataBlock->field_0x10.setAnonymous();
|
||||
field_0x0.append(foundBlock);
|
||||
return foundBlock->getObject();
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A6EDC-802A6F70 2A181C 0094+00 4/4 0/0 0/0 .text
|
||||
* rearrangeLoadingSeqs___23JAUDynamicSeqDataBlocksFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JAUDynamicSeqDataBlocks::rearrangeLoadingSeqs_() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JAUSeqDataBlockMgr/rearrangeLoadingSeqs___23JAUDynamicSeqDataBlocksFv.s"
|
||||
void JAUDynamicSeqDataBlocks::rearrangeLoadingSeqs_() {
|
||||
JSULink<JAUSeqDataBlock>* link = field_0xc.field_0x0.getFirst();
|
||||
JSULink<JAUSeqDataBlock>* nextLink;
|
||||
while (link != NULL) {
|
||||
nextLink = link->getNext();
|
||||
JAUSeqDataBlock* seqDataBlock = link->getObject();
|
||||
if (seqDataBlock->field_0x1c == 0) {
|
||||
field_0xc.remove(link);
|
||||
field_0x0.append(link);
|
||||
} else if (seqDataBlock->field_0x1c == 2) {
|
||||
field_0xc.remove(link);
|
||||
field_0x18.append(link);
|
||||
}
|
||||
link = nextLink;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JAUSoundTable
|
||||
// JAUSoundTable
|
||||
//
|
||||
|
||||
#include "JSystem/JAudio2/JAUSoundTable.h"
|
||||
|
||||
@@ -301,7 +301,7 @@ SECTION_SDATA2 static f64 lit_1008 = 4503599627370496.0 /* cast u32 to float */;
|
||||
void Z2Audible::setOuterParams(JASSoundParams const& param_0, JASSoundParams const& param_1,
|
||||
int param_2) {
|
||||
Z2AudibleChannel* this_01 = &field_0x2c[param_2];
|
||||
u32 iStack_94 = (field_0x10.field_0x0.b.f1 & 0xf00) >> 8;
|
||||
u32 iStack_94 = (field_0x10.field_0x0.half.f1 & 0xf00) >> 8;
|
||||
if (iStack_94 == 0) {
|
||||
this_01->field_0x0.combine(param_0, param_1);
|
||||
return;
|
||||
@@ -1016,15 +1016,7 @@ asm Z2Audience::Z2Audience() {
|
||||
#endif
|
||||
|
||||
/* 802BD1FC-802BD288 2B7B3C 008C+00 1/0 1/1 0/0 .text __dt__10Z2AudienceFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
extern "C" asm void __dt__10Z2AudienceFv() {
|
||||
// asm Z2Audience::~Z2Audience() {
|
||||
nofralloc
|
||||
#include "asm/Z2AudioLib/Z2Audience/__dt__10Z2AudienceFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
Z2Audience::~Z2Audience() {}
|
||||
|
||||
/* 802BD288-802BD2DC 2B7BC8 0054+00 2/2 1/1 0/0 .text __dt__22JASMemPool<9Z2Audible>Fv */
|
||||
#pragma push
|
||||
|
||||
@@ -4,30 +4,16 @@
|
||||
//
|
||||
|
||||
#include "Z2AudioLib/Z2AudioArcLoader.h"
|
||||
#include "Z2AudioLib/Z2FxLineMgr.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JKernel/JKRArchive.h"
|
||||
#include "JSystem/JAudio2/JAUSectionHeap.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JKRHeap {
|
||||
static u8 sCurrentHeap[4];
|
||||
};
|
||||
|
||||
struct JKRArchive {
|
||||
struct EMountDirection {};
|
||||
|
||||
/* 802D5840 */ void mount(void*, JKRHeap*, JKRArchive::EMountDirection);
|
||||
};
|
||||
|
||||
struct Z2FxLineMgr {
|
||||
/* 802BA7FC */ void initDataArc(JKRArchive*, JKRHeap*);
|
||||
};
|
||||
|
||||
struct JAUSectionHeap {
|
||||
/* 802A6094 */ void getOpenSection();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
@@ -68,55 +54,33 @@ extern "C" extern u8 data_80450CC0[4 + 4 /* padding */];
|
||||
extern "C" u8 sCurrentHeap__7JKRHeap[4];
|
||||
extern "C" extern u8 __OSReport_disable;
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803C9CD0-803C9D18 026DF0 0044+04 2/2 1/1 0/0 .data __vt__16Z2AudioArcLoader */
|
||||
SECTION_DATA extern void* __vt__16Z2AudioArcLoader[17 + 1 /* padding */] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__16Z2AudioArcLoaderFv,
|
||||
(void*)readWS__17JAUAudioArcLoaderFUlPCvUl,
|
||||
(void*)readBNK__17JAUAudioArcLoaderFUlPCv,
|
||||
(void*)readBSC__17JAUAudioArcLoaderFPCvUl,
|
||||
(void*)readBST__17JAUAudioArcLoaderFPCvUl,
|
||||
(void*)readBSTN__16Z2AudioArcLoaderFPCvUl,
|
||||
(void*)readBMS__17JAUAudioArcLoaderFUlPCvUl,
|
||||
(void*)readBMS_fromArchive__17JAUAudioArcLoaderFUl,
|
||||
(void*)newVoiceBank__17JAUAudioArcLoaderFUlUl,
|
||||
(void*)newDynamicSeqBlock__17JAUAudioArcLoaderFUl,
|
||||
(void*)readBSFT__17JAUAudioArcLoaderFPCv,
|
||||
(void*)readMaxSeCategory__17JAUAudioArcLoaderFiii,
|
||||
(void*)beginBNKList__17JAUAudioArcLoaderFUlUl,
|
||||
(void*)endBNKList__17JAUAudioArcLoaderFv,
|
||||
(void*)readCommandMore__16Z2AudioArcLoaderFUl,
|
||||
/* padding */
|
||||
NULL,
|
||||
};
|
||||
|
||||
/* 802A9A34-802A9A70 2A4374 003C+00 0/0 1/1 0/0 .text __ct__16Z2AudioArcLoaderFP10JAUSection */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm Z2AudioArcLoader::Z2AudioArcLoader(JAUSection* param_0) {
|
||||
nofralloc
|
||||
#include "asm/Z2AudioLib/Z2AudioArcLoader/__ct__16Z2AudioArcLoaderFP10JAUSection.s"
|
||||
Z2AudioArcLoader::Z2AudioArcLoader(JAUSection* param_0) : JAUAudioArcLoader(param_0) {
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A9A70-802A9AC8 2A43B0 0058+00 1/0 0/0 0/0 .text readCommandMore__16Z2AudioArcLoaderFUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm bool Z2AudioArcLoader::readCommandMore(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/Z2AudioLib/Z2AudioArcLoader/readCommandMore__16Z2AudioArcLoaderFUl.s"
|
||||
bool Z2AudioArcLoader::readCommandMore(u32 param_0) {
|
||||
bool rv = false;
|
||||
switch (param_0) {
|
||||
case 'bfca':
|
||||
readBFCA(getContent_(readU32_()));
|
||||
rv = true;
|
||||
break;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802A9AC8-802A9B54 2A4408 008C+00 1/1 0/0 0/0 .text readBFCA__16Z2AudioArcLoaderFPCv */
|
||||
// regalloc and extra stack
|
||||
#ifdef NONMATCHING
|
||||
void Z2AudioArcLoader::readBFCA(void const* param_0) {
|
||||
JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance();
|
||||
JKRHeap* pJVar1 = sectionHeap->getHeap();
|
||||
JKRArchive* pJVar5 = JKRArchive::mount((void*)param_0, JKRGetCurrentHeap(), JKRArchive::MOUNT_DIRECTION_TAIL);
|
||||
Z2GetFxLineMgr()->initDataArc(pJVar5, pJVar1);
|
||||
JKRUnmountArchive(pJVar5);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -125,19 +89,9 @@ asm void Z2AudioArcLoader::readBFCA(void const* param_0) {
|
||||
#include "asm/Z2AudioLib/Z2AudioArcLoader/readBFCA__16Z2AudioArcLoaderFPCv.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
#endif
|
||||
/* 802A9B54-802A9B58 2A4494 0004+00 1/0 0/0 0/0 .text readBSTN__16Z2AudioArcLoaderFPCvUl
|
||||
*/
|
||||
void Z2AudioArcLoader::readBSTN(void const* param_0, u32 param_1) {
|
||||
/* empty function */
|
||||
}
|
||||
|
||||
/* 802A9B58-802A9BC8 2A4498 0070+00 1/0 0/0 0/0 .text __dt__16Z2AudioArcLoaderFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm Z2AudioArcLoader::~Z2AudioArcLoader() {
|
||||
nofralloc
|
||||
#include "asm/Z2AudioLib/Z2AudioArcLoader/__dt__16Z2AudioArcLoaderFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
Reference in New Issue
Block a user