diff options
| author | Jcw87 <Jcw87@users.noreply.github.com> | 2023-09-12 08:14:57 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-12 18:14:57 +0300 |
| commit | 4ab104f390e401c7dfdc9697374c17c223650661 (patch) | |
| tree | 155237d4435f832cb18dd9bd92da712a5b08c78c /libs/JSystem/JAudio2/JASBasicWaveBank.cpp | |
| parent | 696024598cfe536fb0011289c7d2a4aaa549adb1 (diff) | |
JASVoiceBank, JASBasicWaveBank, JASBank, JAUSeqCollection (#1924)
* JASVoiceBank OK
* JASBasicWaveBank
* JASBank
* JAUSeqCollection
Diffstat (limited to 'libs/JSystem/JAudio2/JASBasicWaveBank.cpp')
| -rw-r--r-- | libs/JSystem/JAudio2/JASBasicWaveBank.cpp | 285 |
1 files changed, 141 insertions, 144 deletions
diff --git a/libs/JSystem/JAudio2/JASBasicWaveBank.cpp b/libs/JSystem/JAudio2/JASBasicWaveBank.cpp index c5536da1d6..bebfd4832e 100644 --- a/libs/JSystem/JAudio2/JASBasicWaveBank.cpp +++ b/libs/JSystem/JAudio2/JASBasicWaveBank.cpp @@ -4,68 +4,15 @@ // #include "JSystem/JAudio2/JASBasicWaveBank.h" +#include "JSystem/JAudio2/JASMutex.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "JSystem/JUtility/JUTAssert.h" #include "dol2asm.h" // // Types: // -struct JKRHeap {}; - -struct JASWaveInfo { - static u32 one[1 + 1 /* padding */]; -}; - -struct JASWaveHandle { - /* 80298BD0 */ ~JASWaveHandle(); -}; - -struct JASWaveBank { - /* 80298B88 */ ~JASWaveBank(); -}; - -struct JASWaveArc { - /* 8029A13C */ JASWaveArc(); - /* 8029A1B4 */ ~JASWaveArc(); - /* 8029A664 */ void onDispose(); -}; - -struct JASBasicWaveBank { - struct TWaveHandle { - /* 802985E4 */ ~TWaveHandle(); - /* 80298B64 */ void getWavePtr() const; - /* 80298C18 */ TWaveHandle(); - /* 80298C64 */ void getWaveInfo() const; - }; - - struct TWaveGroup { - /* 802989C0 */ TWaveGroup(); - /* 80298A0C */ ~TWaveGroup(); - /* 80298A84 */ void setWaveCount(u32, JKRHeap*); - /* 80298B04 */ void onLoadDone(); - /* 80298B2C */ void onEraseDone(); - /* 80298B54 */ void getWaveID(int) const; - }; - - struct TGroupWaveInfo { - /* 80298C4C */ TGroupWaveInfo(); - }; - - /* 802984F8 */ JASBasicWaveBank(); - /* 80298558 */ ~JASBasicWaveBank(); - /* 80298640 */ void getWaveGroup(u32); - /* 80298664 */ void setGroupCount(u32, JKRHeap*); - /* 80298710 */ void setWaveTableSize(u32, JKRHeap*); - /* 80298790 */ void incWaveTable(JASBasicWaveBank::TWaveGroup const*); - /* 8029883C */ void decWaveTable(JASBasicWaveBank::TWaveGroup const*); - /* 802988DC */ void getWaveHandle(u32) const; - /* 80298910 */ void setWaveInfo(JASBasicWaveBank::TWaveGroup*, int, u16, JASWaveInfo const&); - /* 80298C6C */ void getWaveArc(u32); - /* 80298C8C */ void getArcCount() const; - - static u8 mNoLoad[4 + 4 /* padding */]; -}; - // // Forward References: // @@ -107,9 +54,6 @@ extern "C" void onDispose__10JASWaveArcFv(); extern "C" void* __nwa__FUlP7JKRHeapi(); extern "C" void __dl__FPv(); extern "C" void __dla__FPv(); -extern "C" void OSInitMutex(); -extern "C" void OSLockMutex(); -extern "C" void OSUnlockMutex(); extern "C" void __destroy_new_array(); extern "C" void __construct_new_array(); extern "C" void _savegpr_25(); @@ -170,6 +114,16 @@ SECTION_DATA extern void* __vt__11JASWaveBank[6] = { }; /* 802984F8-80298558 292E38 0060+00 0/0 1/1 0/0 .text __ct__16JASBasicWaveBankFv */ +// vtable order +#ifdef NONMATCHING +JASBasicWaveBank::JASBasicWaveBank() { + mWaveTable = NULL; + mWaveGroupArray = NULL; + mHandleCount = 0; + mGroupCount = 0; + OSInitMutex(&field_0x4); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -178,8 +132,16 @@ asm JASBasicWaveBank::JASBasicWaveBank() { #include "asm/JSystem/JAudio2/JASBasicWaveBank/__ct__16JASBasicWaveBankFv.s" } #pragma pop +#endif /* 80298558-802985E4 292E98 008C+00 1/0 0/0 0/0 .text __dt__16JASBasicWaveBankFv */ +// vtable order +#ifdef NONMATCHING +JASBasicWaveBank::~JASBasicWaveBank() { + delete[] mWaveTable; + delete[] mWaveGroupArray; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -188,8 +150,13 @@ asm JASBasicWaveBank::~JASBasicWaveBank() { #include "asm/JSystem/JAudio2/JASBasicWaveBank/__dt__16JASBasicWaveBankFv.s" } #pragma pop +#endif /* 802985E4-80298640 292F24 005C+00 3/2 0/0 0/0 .text __dt__Q216JASBasicWaveBank11TWaveHandleFv */ +// vtable order +#ifdef NONMATCHING +JASBasicWaveBank::TWaveHandle::~TWaveHandle() {} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -198,42 +165,54 @@ asm JASBasicWaveBank::TWaveHandle::~TWaveHandle() { #include "asm/JSystem/JAudio2/JASBasicWaveBank/__dt__Q216JASBasicWaveBank11TWaveHandleFv.s" } #pragma pop +#endif /* 80298640-80298664 292F80 0024+00 1/1 1/1 0/0 .text getWaveGroup__16JASBasicWaveBankFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::getWaveGroup(u32 param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/getWaveGroup__16JASBasicWaveBankFUl.s" +JASBasicWaveBank::TWaveGroup* JASBasicWaveBank::getWaveGroup(u32 param_0) { + if (param_0 >= mGroupCount) { + return NULL; + } + return mWaveGroupArray + param_0; } -#pragma pop /* 80298664-80298710 292FA4 00AC+00 0/0 1/1 0/0 .text * setGroupCount__16JASBasicWaveBankFUlP7JKRHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::setGroupCount(u32 param_0, JKRHeap* param_1) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/setGroupCount__16JASBasicWaveBankFUlP7JKRHeap.s" +void JASBasicWaveBank::setGroupCount(u32 param_0, JKRHeap* param_1) { + delete[] mWaveGroupArray; + mGroupCount = param_0; + mWaveGroupArray = new(param_1, 0) TWaveGroup[param_0]; + JUT_ASSERT("JASBasicWaveBank.cpp", 0x3e, mWaveGroupArray != 0); + for (int i = 0; i < mGroupCount; i++) { + mWaveGroupArray[i].mBank = this; + } } -#pragma pop /* 80298710-80298790 293050 0080+00 0/0 1/1 0/0 .text * setWaveTableSize__16JASBasicWaveBankFUlP7JKRHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::setWaveTableSize(u32 param_0, JKRHeap* param_1) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/setWaveTableSize__16JASBasicWaveBankFUlP7JKRHeap.s" +void JASBasicWaveBank::setWaveTableSize(u32 param_0, JKRHeap* param_1) { + delete[] mWaveTable; + mWaveTable = new(param_1, 0) TWaveHandle[param_0]; + JUT_ASSERT("JASBasicWaveBank.cpp",0x5c, mWaveTable != 0); + mHandleCount = param_0; } -#pragma pop /* 80298790-8029883C 2930D0 00AC+00 1/1 0/0 0/0 .text * incWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup */ +// instruction order +#ifdef NONMATCHING +void JASBasicWaveBank::incWaveTable(JASBasicWaveBank::TWaveGroup const* param_0) { + JASMutexLock lock(&field_0x4); + for (u32 i = 0; i < param_0->getWaveCount(); i++) { + TWaveHandle* handle = mWaveTable + param_0->getWaveID(i); + if (!handle->mHeap) { + handle->mHeap = ¶m_0->base.mHeap; + handle->field_0x4.field_0x20 = ¶m_0->base._48; + handle->field_0x4.field_0x08 = param_0->mCtrlWaveArray[i].field_0x4; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -242,6 +221,7 @@ asm void JASBasicWaveBank::incWaveTable(JASBasicWaveBank::TWaveGroup const* para #include "asm/JSystem/JAudio2/JASBasicWaveBank/incWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80451278-80451280 000778 0004+04 2/2 0/0 0/0 .sbss mNoLoad__16JASBasicWaveBank */ @@ -249,38 +229,52 @@ u8 JASBasicWaveBank::mNoLoad[4 + 4 /* padding */]; /* 8029883C-802988DC 29317C 00A0+00 1/1 0/0 0/0 .text * decWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::decWaveTable(JASBasicWaveBank::TWaveGroup const* param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/decWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup.s" +void JASBasicWaveBank::decWaveTable(JASBasicWaveBank::TWaveGroup const* param_0) { + JASMutexLock lock(&field_0x4); + for (u32 i = 0; i < param_0->getWaveCount(); i++) { + TWaveHandle* handle = mWaveTable + param_0->getWaveID(i); + if (handle->mHeap == ¶m_0->base.mHeap) { + handle->mHeap = NULL; + handle->field_0x4.field_0x20 = mNoLoad; + handle->field_0x4.field_0x08 = -1; + } + } } -#pragma pop /* 802988DC-80298910 29321C 0034+00 1/0 0/0 0/0 .text getWaveHandle__16JASBasicWaveBankCFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::getWaveHandle(u32 param_0) const { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/getWaveHandle__16JASBasicWaveBankCFUl.s" +JASWaveHandle* JASBasicWaveBank::getWaveHandle(u32 param_0) const { + if (param_0 >= mHandleCount) { + return NULL; + } + if (!mWaveTable[param_0].mHeap) { + return NULL; + } + return mWaveTable + param_0; } -#pragma pop /* 80298910-802989C0 293250 00B0+00 0/0 1/1 0/0 .text * setWaveInfo__16JASBasicWaveBankFPQ216JASBasicWaveBank10TWaveGroupiUsRC11JASWaveInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::setWaveInfo(JASBasicWaveBank::TWaveGroup* param_0, int param_1, - u16 param_2, JASWaveInfo const& param_3) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/func_80298910.s" +void JASBasicWaveBank::setWaveInfo(JASBasicWaveBank::TWaveGroup* wgrp, int index, + u16 param_2, JASWaveInfo const& param_3) { + JUT_ASSERT("JASBasicWaveBank.cpp", 0xcc, wgrp); + JUT_ASSERT("JASBasicWaveBank.cpp", 0xcd, index < wgrp->mWaveCount); + JUT_ASSERT("JASBasicWaveBank.cpp", 0xce, index >= 0); + mWaveTable[param_2].field_0x4 = param_3; + mWaveTable[param_2].field_0x4.field_0x20 = mNoLoad; + mWaveTable[param_2].field_0x4.field_0x08 = -1; + wgrp->mCtrlWaveArray[index].field_0x0 = param_2; + wgrp->mCtrlWaveArray[index].field_0x4 = param_3.field_0x08; } -#pragma pop /* 802989C0-80298A0C 293300 004C+00 1/1 0/0 0/0 .text __ct__Q216JASBasicWaveBank10TWaveGroupFv */ +// vtable order +#ifdef NONMATCHING +JASBasicWaveBank::TWaveGroup::TWaveGroup() { + mBank = NULL; + mCtrlWaveArray = NULL; + mWaveCount = 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -289,8 +283,15 @@ asm JASBasicWaveBank::TWaveGroup::TWaveGroup() { #include "asm/JSystem/JAudio2/JASBasicWaveBank/__ct__Q216JASBasicWaveBank10TWaveGroupFv.s" } #pragma pop +#endif /* 80298A0C-80298A84 29334C 0078+00 3/2 0/0 0/0 .text __dt__Q216JASBasicWaveBank10TWaveGroupFv */ +// vtable order +#ifdef NONMATCHING +JASBasicWaveBank::TWaveGroup::~TWaveGroup() { + delete[] mCtrlWaveArray; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -299,67 +300,57 @@ asm JASBasicWaveBank::TWaveGroup::~TWaveGroup() { #include "asm/JSystem/JAudio2/JASBasicWaveBank/__dt__Q216JASBasicWaveBank10TWaveGroupFv.s" } #pragma pop +#endif /* 80298A84-80298B04 2933C4 0080+00 0/0 1/1 0/0 .text * setWaveCount__Q216JASBasicWaveBank10TWaveGroupFUlP7JKRHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveGroup::setWaveCount(u32 param_0, JKRHeap* param_1) { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/setWaveCount__Q216JASBasicWaveBank10TWaveGroupFUlP7JKRHeap.s" +void JASBasicWaveBank::TWaveGroup::setWaveCount(u32 param_0, JKRHeap* param_1) { + delete[] mCtrlWaveArray; + mWaveCount = param_0; + mCtrlWaveArray = new(param_1, 0) TGroupWaveInfo[param_0]; + JUT_ASSERT("JASBasicWaveBank.cpp", 0xff, mCtrlWaveArray != 0); } -#pragma pop /* 80298B04-80298B2C 293444 0028+00 1/0 0/0 0/0 .text * onLoadDone__Q216JASBasicWaveBank10TWaveGroupFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveGroup::onLoadDone() { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/onLoadDone__Q216JASBasicWaveBank10TWaveGroupFv.s" +void JASBasicWaveBank::TWaveGroup::onLoadDone() { + JUT_ASSERT("JASBasicWaveBank.cpp", 0x11e, mBank); + mBank->incWaveTable(this); } -#pragma pop /* 80298B2C-80298B54 29346C 0028+00 1/0 0/0 0/0 .text * onEraseDone__Q216JASBasicWaveBank10TWaveGroupFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveGroup::onEraseDone() { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/onEraseDone__Q216JASBasicWaveBank10TWaveGroupFv.s" +void JASBasicWaveBank::TWaveGroup::onEraseDone() { + JUT_ASSERT("JASBasicWaveBank.cpp", 0x124, mBank); + mBank->decWaveTable(this); } -#pragma pop + /* 80298B54-80298B64 293494 0010+00 2/2 0/0 0/0 .text * getWaveID__Q216JASBasicWaveBank10TWaveGroupCFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveGroup::getWaveID(int param_0) const { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/getWaveID__Q216JASBasicWaveBank10TWaveGroupCFi.s" +u32 JASBasicWaveBank::TWaveGroup::getWaveID(int index) const { + JUT_ASSERT("JASBasicWaveBank.cpp", 0x12a, index < mWaveCount); + JUT_ASSERT("JASBasicWaveBank.cpp", 299, index >= 0); + return mCtrlWaveArray[index].field_0x0; } -#pragma pop /* 80298B64-80298B88 2934A4 0024+00 1/0 0/0 0/0 .text * getWavePtr__Q216JASBasicWaveBank11TWaveHandleCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveHandle::getWavePtr() const { - nofralloc -#include "asm/JSystem/JAudio2/JASBasicWaveBank/getWavePtr__Q216JASBasicWaveBank11TWaveHandleCFv.s" +int JASBasicWaveBank::TWaveHandle::getWavePtr() const { + JUT_ASSERT("JASBasicWaveBank.cpp", 0x139, mHeap); + void* base = mHeap->getBase(); + if (base == 0) { + return 0; + } + return (int)base + field_0x4.field_0x08; } -#pragma pop /* 80298B88-80298BD0 2934C8 0048+00 1/0 0/0 0/0 .text __dt__11JASWaveBankFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JASWaveBank::~JASWaveBank() { +// asm JASWaveBank::~JASWaveBank() { +asm void __dt__11JASWaveBankFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/__dt__11JASWaveBankFv.s" } @@ -369,7 +360,8 @@ asm JASWaveBank::~JASWaveBank() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JASWaveHandle::~JASWaveHandle() { +// asm JASWaveHandle::~JASWaveHandle() { +asm void __dt__13JASWaveHandleFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/__dt__13JASWaveHandleFv.s" } @@ -379,7 +371,8 @@ asm JASWaveHandle::~JASWaveHandle() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JASBasicWaveBank::TWaveHandle::TWaveHandle() { +// asm JASBasicWaveBank::TWaveHandle::TWaveHandle() { +asm void __ct__Q216JASBasicWaveBank11TWaveHandleFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/__ct__Q216JASBasicWaveBank11TWaveHandleFv.s" } @@ -390,7 +383,8 @@ asm JASBasicWaveBank::TWaveHandle::TWaveHandle() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JASBasicWaveBank::TGroupWaveInfo::TGroupWaveInfo() { +// asm JASBasicWaveBank::TGroupWaveInfo::TGroupWaveInfo() { +asm void __ct__Q216JASBasicWaveBank14TGroupWaveInfoFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/__ct__Q216JASBasicWaveBank14TGroupWaveInfoFv.s" } @@ -401,7 +395,8 @@ asm JASBasicWaveBank::TGroupWaveInfo::TGroupWaveInfo() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JASBasicWaveBank::TWaveHandle::getWaveInfo() const { +// asm JASWaveInfo* JASBasicWaveBank::TWaveHandle::getWaveInfo() const { +asm void getWaveInfo__Q216JASBasicWaveBank11TWaveHandleCFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/getWaveInfo__Q216JASBasicWaveBank11TWaveHandleCFv.s" } @@ -412,7 +407,8 @@ asm void JASBasicWaveBank::TWaveHandle::getWaveInfo() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JASBasicWaveBank::getWaveArc(u32 param_0) { +// asm JASWaveArc* JASBasicWaveBank::getWaveArc(u32 param_0) { +asm void getWaveArc__16JASBasicWaveBankFUl() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/getWaveArc__16JASBasicWaveBankFUl.s" } @@ -423,7 +419,8 @@ asm void JASBasicWaveBank::getWaveArc(u32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JASBasicWaveBank::getArcCount() const { +// asm u32 JASBasicWaveBank::getArcCount() const { +asm void getArcCount__16JASBasicWaveBankCFv() { nofralloc #include "asm/JSystem/JAudio2/JASBasicWaveBank/getArcCount__16JASBasicWaveBankCFv.s" } |
