diff --git a/configure.py b/configure.py index 46522a152..f2972f9df 100644 --- a/configure.py +++ b/configure.py @@ -652,7 +652,7 @@ config.libs = [ [ Object(Matching, "JSystem/JAudio/JASCalc.cpp"), Object(Matching, "JSystem/JAudio/JASAiCtrl.cpp"), - Object(NonMatching, "JSystem/JAudio/JASDvdThread.cpp"), + Object(Matching, "JSystem/JAudio/JASDvdThread.cpp"), Object(Matching, "JSystem/JAudio/JASCallback.cpp"), Object(Matching, "JSystem/JAudio/JASRate.cpp"), Object(NonMatching, "JSystem/JAudio/JASHardStream.cpp"), diff --git a/include/JSystem/JAudio/JASBasicInst.h b/include/JSystem/JAudio/JASBasicInst.h index f491534d9..04153714f 100644 --- a/include/JSystem/JAudio/JASBasicInst.h +++ b/include/JSystem/JAudio/JASBasicInst.h @@ -8,21 +8,28 @@ namespace JASystem { class TInstEffect; class TBasicInst : public TInst { public: + struct TVeloRegion { + /* 0x00 */ s32 mBaseVel; + /* 0x04 */ s32 field_0x04; + /* 0x08 */ f32 field_0x08; + /* 0x0C */ f32 field_0x0c; + }; + class TKeymap { public: TKeymap() { - field_0x0 = -1; - field_0x4 = 0; + mBaseKey = -1; + mVeloRegionCount = 0; mVelomap = NULL; } ~TKeymap(); void setVeloRegionCount(u32); - void* getVeloRegion(int); - const void* getVeloRegion(int) const; + TVeloRegion* getVeloRegion(int); + const TVeloRegion* getVeloRegion(int) const; - /* 0x00 */ int field_0x0; - /* 0x04 */ u32 field_0x4; - /* 0x08 */ void* mVelomap; + /* 0x00 */ int mBaseKey; + /* 0x04 */ u32 mVeloRegionCount; + /* 0x08 */ TVeloRegion* mVelomap; }; TBasicInst(); @@ -43,7 +50,7 @@ namespace JASystem { /* 0x10 */ u32 mEffectCount; /* 0x14 */ TOscillator::Osc_** mOsc; /* 0x18 */ u32 mOscCount; - /* 0x1C */ u32 field_0x1c; + /* 0x1C */ u32 mKeyRegionCount; /* 0x20 */ TKeymap* mKeymap; }; } diff --git a/include/JSystem/JAudio/JASBasicWaveBank.h b/include/JSystem/JAudio/JASBasicWaveBank.h index 172cdc694..9cddfcfe1 100644 --- a/include/JSystem/JAudio/JASBasicWaveBank.h +++ b/include/JSystem/JAudio/JASBasicWaveBank.h @@ -13,34 +13,34 @@ namespace JASystem { public: ~TWaveHandle() {} const JASystem::TWaveInfo* getWaveInfo() const { - return &field_0x4; + return &mWaveInfo; } const void* getWavePtr() const { JUT_ASSERT(77, mHeap); if (!mHeap->mBase) { return NULL; } - return (u8*)mHeap->mBase + field_0x4.field_0x8; + return (u8*)mHeap->mBase + mWaveInfo.mWavePtrOffs; } - /* 0x04 */ JASystem::TWaveInfo field_0x4; + /* 0x04 */ JASystem::TWaveInfo mWaveInfo; /* 0x30 */ Kernel::THeap* mHeap; }; class TWaveInfo { public: TWaveInfo() { - field_0x0.mHeap = NULL; - field_0x34 = 0; - field_0x38 = NULL; - field_0x3c = NULL; + mWaveHandle.mHeap = NULL; + mWaveID = 0; + mPrev = NULL; + mNext = NULL; } ~TWaveInfo(); - /* 0x00 */ TWaveHandle field_0x0; - /* 0x34 */ u32 field_0x34; - /* 0x38 */ TWaveInfo* field_0x38; - /* 0x3C */ TWaveInfo* field_0x3c; + /* 0x00 */ TWaveHandle mWaveHandle; + /* 0x34 */ u32 mWaveID; + /* 0x38 */ TWaveInfo* mPrev; + /* 0x3C */ TWaveInfo* mNext; }; class TWaveGroup : public TWaveArc { diff --git a/include/JSystem/JAudio/JASDvdThread.h b/include/JSystem/JAudio/JASDvdThread.h index 52accbde9..135304ff6 100644 --- a/include/JSystem/JAudio/JASDvdThread.h +++ b/include/JSystem/JAudio/JASDvdThread.h @@ -15,16 +15,16 @@ public: }; JASTaskThread(u32 param_1, int param_2, s32 param_3) : JKRThread(param_1, param_2, param_3) { - field_0x70 = 0; - OSInitThreadQueue(&field_0x68); + mPaused = 0; + OSInitThreadQueue(&mQ); } ~JASTaskThread(); BOOL sendCmdMsg(s32 (*)(void*), void*, u32); void* run(); void pause(bool); - /* 0x68 */ OSThreadQueue field_0x68; - /* 0x70 */ u8 field_0x70; + /* 0x68 */ OSThreadQueue mQ; + /* 0x70 */ u8 mPaused; }; namespace JASystem { @@ -35,7 +35,7 @@ namespace JASystem { int checkPassDvdT(u32, u32*, void (*)(u32)); u32 checkFile(char*); void unpauseDvdT(); - int dvdThreadCheckBack(void*); + s32 dvdThreadCheckBack(void*); extern JASTaskThread* sThread; } diff --git a/include/JSystem/JAudio/JASSimpleWaveBank.h b/include/JSystem/JAudio/JASSimpleWaveBank.h index 9a3d56bef..633167735 100644 --- a/include/JSystem/JAudio/JASSimpleWaveBank.h +++ b/include/JSystem/JAudio/JASSimpleWaveBank.h @@ -12,15 +12,15 @@ namespace JASystem { public: TWaveHandle() { mHeap = NULL; } ~TWaveHandle(); - const TWaveInfo* getWaveInfo() const { return &field_0x4; }; + const TWaveInfo* getWaveInfo() const { return &mWaveInfo; } const void* getWavePtr() const { if (mHeap->mBase == NULL) { return NULL; } - return (u8*)mHeap->mBase + field_0x4.field_0x8; + return (u8*)mHeap->mBase + mWaveInfo.mWavePtrOffs; } - /* 0x04 */ TWaveInfo field_0x4; + /* 0x04 */ TWaveInfo mWaveInfo; /* 0x30 */ Kernel::THeap* mHeap; }; diff --git a/include/JSystem/JAudio/JASWaveArcLoader.h b/include/JSystem/JAudio/JASWaveArcLoader.h index 2580c790a..0b738ca9d 100644 --- a/include/JSystem/JAudio/JASWaveArcLoader.h +++ b/include/JSystem/JAudio/JASWaveArcLoader.h @@ -30,12 +30,12 @@ namespace JASystem { void setEntryNum(s32); void setFileName(const char*); - /* 0x04 */ Kernel::THeap field_0x4; + /* 0x04 */ Kernel::THeap mHeap; /* 0x4C */ int field_0x4c; /* 0x50 */ OSMutex mMutex; /* 0x68 */ int field_0x68; - /* 0x6C */ int field_0x6c; - /* 0x70 */ int field_0x70; + /* 0x6C */ int mFileNo; + /* 0x70 */ int mSize; /* 0x74 */ int field_0x74; }; } diff --git a/include/JSystem/JAudio/JASWaveBank.h b/include/JSystem/JAudio/JASWaveBank.h index 1c891f887..b7b529425 100644 --- a/include/JSystem/JAudio/JASWaveBank.h +++ b/include/JSystem/JAudio/JASWaveBank.h @@ -13,7 +13,7 @@ namespace JASystem { /* 0x01 */ u8 field_0x1; /* 0x02 */ u8 field_0x2; /* 0x04 */ f32 field_0x4; - /* 0x08 */ int field_0x8; + /* 0x08 */ int mWavePtrOffs; /* 0x0C */ int field_0xc; /* 0x10 */ int field_0x10; /* 0x14 */ int field_0x14; diff --git a/src/JSystem/JAudio/JASAudioThread.cpp b/src/JSystem/JAudio/JASAudioThread.cpp index 198ce4ce0..e937c97dc 100644 --- a/src/JSystem/JAudio/JASAudioThread.cpp +++ b/src/JSystem/JAudio/JASAudioThread.cpp @@ -114,26 +114,25 @@ void JASystem::TAudioThread::syncDSP(void*) { } /* 802891F0-8028920C .text setPriority__Q28JASystem12TAudioThreadFUcUc */ -void JASystem::TAudioThread::setPriority(u8 param_1, u8 param_2) { +void JASystem::TAudioThread::setPriority(u8 dspPrio, u8 dvdPrio) { sbIsPrioritySet = 1; - sDSPPrio = param_1; - sDVDPrio = param_2; + sDSPPrio = dspPrio; + sDVDPrio = dvdPrio; } /* 8028920C-802892E0 .text start__Q28JASystem12TAudioThreadFP12JKRSolidHeapUlUl */ -void JASystem::TAudioThread::start(JKRSolidHeap* param_1, u32 param_2, u32 param_3) { - /* Nonmatching */ +void JASystem::TAudioThread::start(JKRSolidHeap* heap, u32 aramSize, u32 flag) { if (!sbIsPrioritySet) { - s32 priority = OSGetThreadPriority(OSGetCurrentThread()); - sDSPPrio = priority - 3; + s32 priority = OSGetThreadPriority(OSGetCurrentThread()) - 3; + sDSPPrio = priority; sDVDPrio = priority - 1; } - Kernel::sysDramSetup(param_1); - Kernel::sysAramSetup(param_2); + Kernel::sysDramSetup(heap); + Kernel::sysAramSetup(aramSize); Dvd::createThread(sDVDPrio, 0x5a, 0x1000); Dvd::resumeThread(); Kernel::stackInit((u64*)saAudioStack, 0x200); - if ((param_3 & 2)) { + if ((flag & 2)) { OSCreateThread(&sAudioThread, audioproc, NULL, &saAudioStack[sizeof(saAudioStack)], sizeof(saAudioStack), sDSPPrio, 1); OSResumeThread(&sAudioThread); } diff --git a/src/JSystem/JAudio/JASBasicInst.cpp b/src/JSystem/JAudio/JASBasicInst.cpp index dac876e3f..f004afd52 100644 --- a/src/JSystem/JAudio/JASBasicInst.cpp +++ b/src/JSystem/JAudio/JASBasicInst.cpp @@ -18,7 +18,7 @@ JASystem::TBasicInst::TBasicInst() { mEffectCount = 0; mOsc = NULL; mOscCount = 0; - field_0x1c = 0; + mKeyRegionCount = 0; mKeymap = NULL; } @@ -30,82 +30,87 @@ JASystem::TBasicInst::~TBasicInst() { } /* 80284914-80284B4C .text getParam__Q28JASystem10TBasicInstCFiiPQ28JASystem10TInstParam */ -bool JASystem::TBasicInst::getParam(int param_1, int param_2, TInstParam* param_3) const { +bool JASystem::TBasicInst::getParam(int key, int velo, TInstParam* param) const { /* Nonmatching */ - param_3->field_0x0 = 0; - param_3->field_0x38 = 0; - param_3->field_0x8 = mOsc; - param_3->field_0xc = mOscCount; - param_3->field_0x10 *= field_0x4; - param_3->field_0x14 *= field_0x8; + param->field_0x0 = 0; + param->field_0x38 = 0; + param->field_0x8 = mOsc; + param->field_0xc = mOscCount; + param->field_0x10 *= field_0x4; + param->field_0x14 *= field_0x8; for (int i = 0; i < mEffectCount; i++) { TInstEffect* effect = mEffect[i]; if (!effect) { continue; } - f32 y = effect->getY(param_1, param_2); + f32 y = effect->getY(key, velo); switch (effect->mTarget) { case 0: - param_3->field_0x18 *= y; + param->field_0x18 *= y; break; case 1: - param_3->field_0x1c *= y; + param->field_0x1c *= y; break; case 2: - param_3->field_0x2c += y - 0.5; + param->field_0x2c += y - 0.5; break; case 3: - param_3->field_0x30 += y; + param->field_0x30 += y; break; case 4: - param_3->field_0x34 += y; + param->field_0x34 += y; break; default: JUT_ASSERT(93, 0); } } - TKeymap* keymap = NULL; - for (int i = 0; i < field_0x1c; i++) { + const TKeymap* keymap = NULL; + for (int i = 0; i < mKeyRegionCount; i++) { keymap = &mKeymap[i]; - if (param_1 <= keymap->field_0x0) { - param_3->field_0x3c = i; + if (key <= keymap->mBaseKey) { + param->field_0x3c = i; break; } } if (!keymap) { return false; } - for (int i = 0; i < keymap->field_0x4; i++) { - void* region = keymap->getVeloRegion(i); - // TODO + for (int i = 0; i < keymap->mVeloRegionCount; i++) { + const JASystem::TBasicInst::TVeloRegion * region = keymap->getVeloRegion(i); + if (velo <= region->mBaseVel) { + param->field_0x10 *= region->field_0x08; + param->field_0x14 *= region->field_0x0c; + param->field_0x4 = region->field_0x04; + return true; + } } return false; } /* 80284B4C-80284B54 .text getKeymapIndex__Q28JASystem10TBasicInstCFi */ -int JASystem::TBasicInst::getKeymapIndex(int param_1) const { - return param_1; +int JASystem::TBasicInst::getKeymapIndex(int index) const { + return index; } /* 80284B54-80284C10 .text setKeyRegionCount__Q28JASystem10TBasicInstFUl */ -void JASystem::TBasicInst::setKeyRegionCount(u32 param_1) { +void JASystem::TBasicInst::setKeyRegionCount(u32 num) { delete[] mKeymap; - mKeymap = new (TBank::getCurrentHeap(), 0) TKeymap[param_1]; + mKeymap = new (TBank::getCurrentHeap(), 0) TKeymap[num]; JUT_ASSERT(140, mKeymap != 0); - field_0x1c = param_1; + mKeyRegionCount = num; } /* 80284C10-80284CC4 .text setEffectCount__Q28JASystem10TBasicInstFUl */ -void JASystem::TBasicInst::setEffectCount(u32 param_1) { +void JASystem::TBasicInst::setEffectCount(u32 num) { delete[] mEffect; - mEffectCount = param_1; - if (param_1 == 0) { + mEffectCount = num; + if (num == 0) { mEffect = NULL; return; } - mEffect = new (TBank::getCurrentHeap(), 0) TInstEffect*[param_1]; + mEffect = new (TBank::getCurrentHeap(), 0) TInstEffect*[num]; JUT_ASSERT(157, mEffect != 0); - Calc::bzero(mEffect, param_1 * 4); + Calc::bzero(mEffect, num * 4); } /* 80284CC4-80284D7C .text setEffect__Q28JASystem10TBasicInstFiPQ28JASystem11TInstEffect */ @@ -116,16 +121,16 @@ void JASystem::TBasicInst::setEffect(int index, TInstEffect* effect) { } /* 80284D7C-80284E30 .text setOscCount__Q28JASystem10TBasicInstFUl */ -void JASystem::TBasicInst::setOscCount(u32 param_1) { +void JASystem::TBasicInst::setOscCount(u32 num) { delete[] mOsc; - mOscCount = param_1; - if (param_1 == 0) { + mOscCount = num; + if (num == 0) { mOsc = NULL; return; } - mOsc = new (TBank::getCurrentHeap(), 0) TOscillator::Osc_*[param_1]; + mOsc = new (TBank::getCurrentHeap(), 0) TOscillator::Osc_*[num]; JUT_ASSERT(193, mOsc != 0); - Calc::bzero(mOsc, param_1 * 4); + Calc::bzero(mOsc, num * 4); } /* 80284E30-80284EE8 .text setOsc__Q28JASystem10TBasicInstFiPQ38JASystem11TOscillator4Osc_ */ @@ -138,7 +143,7 @@ void JASystem::TBasicInst::setOsc(int index, TOscillator::Osc_* osc) { /* 80284EE8-80284F70 .text getKeyRegion__Q28JASystem10TBasicInstFi */ JASystem::TBasicInst::TKeymap* JASystem::TBasicInst::getKeyRegion(int index) { JUT_ASSERT(217, index >= 0); - if (index >= field_0x1c) { + if (index >= mKeyRegionCount) { return NULL; } return &mKeymap[index]; @@ -150,27 +155,27 @@ JASystem::TBasicInst::TKeymap::~TKeymap() { } /* 80284FC4-80285058 .text setVeloRegionCount__Q38JASystem10TBasicInst7TKeymapFUl */ -void JASystem::TBasicInst::TKeymap::setVeloRegionCount(u32 param_1) { +void JASystem::TBasicInst::TKeymap::setVeloRegionCount(u32 num) { delete[] mVelomap; - mVelomap = new (TBank::getCurrentHeap(), 0) u8[param_1 * 16]; + mVelomap = new (TBank::getCurrentHeap(), 0) JASystem::TBasicInst::TVeloRegion[num]; JUT_ASSERT(244, mVelomap != 0); - field_0x4 = param_1; + mVeloRegionCount = num; } /* 80285058-802850E0 .text getVeloRegion__Q38JASystem10TBasicInst7TKeymapFi */ -void* JASystem::TBasicInst::TKeymap::getVeloRegion(int index) { +JASystem::TBasicInst::TVeloRegion* JASystem::TBasicInst::TKeymap::getVeloRegion(int index) { JUT_ASSERT(252, index >= 0); - if (index >= field_0x4) { + if (index >= mVeloRegionCount) { return NULL; } - return (u8*)mVelomap + index * 16; + return &mVelomap[index]; } /* 802850E0-80285168 .text getVeloRegion__Q38JASystem10TBasicInst7TKeymapCFi */ -const void* JASystem::TBasicInst::TKeymap::getVeloRegion(int index) const { +const JASystem::TBasicInst::TVeloRegion* JASystem::TBasicInst::TKeymap::getVeloRegion(int index) const { JUT_ASSERT(261, index >= 0); - if (index >= field_0x4) { + if (index >= mVeloRegionCount) { return NULL; } - return (u8*)mVelomap + index * 16; + return &mVelomap[index]; } diff --git a/src/JSystem/JAudio/JASBasicWaveBank.cpp b/src/JSystem/JAudio/JASBasicWaveBank.cpp index 800416ba2..d5add7c67 100644 --- a/src/JSystem/JAudio/JASBasicWaveBank.cpp +++ b/src/JSystem/JAudio/JASBasicWaveBank.cpp @@ -66,10 +66,10 @@ void JASystem::TBasicWaveBank::incWaveTable(const TWaveGroup* param_1) { u32 waveID = param_1->getWaveID(i); TWaveInfo** table = mWaveTable; TWaveInfo* waveInfo = ¶m_1->mCtrlWaveArray[i]; - waveInfo->field_0x3c = 0; - waveInfo->field_0x38 = table[waveID]; + waveInfo->mNext = NULL; + waveInfo->mPrev = table[waveID]; if (table[waveID]) { - table[waveID]->field_0x3c = waveInfo; + table[waveID]->mNext = waveInfo; } table[waveID] = waveInfo; } @@ -87,7 +87,7 @@ JASystem::TWaveHandle* JASystem::TBasicWaveBank::getWaveHandle(u32 param_1) cons return NULL; } if (mWaveTable[param_1]) { - return &mWaveTable[param_1]->field_0x0; + return &mWaveTable[param_1]->mWaveHandle; } return NULL; } @@ -108,24 +108,24 @@ JASystem::TBasicWaveBank::TWaveGroup::~TWaveGroup() { JASystem::TBasicWaveBank::TWaveInfo::~TWaveInfo() {} /* 80285FC4-802860B8 .text setWaveCount__Q38JASystem14TBasicWaveBank10TWaveGroupFUl */ -void JASystem::TBasicWaveBank::TWaveGroup::setWaveCount(u32 param_1) { +void JASystem::TBasicWaveBank::TWaveGroup::setWaveCount(u32 num) { delete[] mCtrlWaveArray; - mWaveCount = param_1; - mCtrlWaveArray = new (getCurrentHeap(), 0) TWaveInfo[param_1]; + mWaveCount = num; + mCtrlWaveArray = new (getCurrentHeap(), 0) TWaveInfo[num]; JUT_ASSERT(180, mCtrlWaveArray != 0); - for (int i = 0; i < param_1; i++) { - mCtrlWaveArray[i].field_0x0.mHeap = &field_0x4; - mCtrlWaveArray[i].field_0x0.field_0x4.field_0x24 = &field_0x4c; + for (int i = 0; i < num; i++) { + mCtrlWaveArray[i].mWaveHandle.mHeap = &mHeap; + mCtrlWaveArray[i].mWaveHandle.mWaveInfo.field_0x24 = &field_0x4c; } } /* 802860B8-80286204 .text setWaveInfo__Q38JASystem14TBasicWaveBank10TWaveGroupFiUlRCQ28JASystem9TWaveInfo */ -void JASystem::TBasicWaveBank::TWaveGroup::setWaveInfo(int index, u32 param_2, const JASystem::TWaveInfo& param_3) { +void JASystem::TBasicWaveBank::TWaveGroup::setWaveInfo(int index, u32 waveID, const JASystem::TWaveInfo& waveInfo) { JUT_ASSERT(190, index < mWaveCount); JUT_ASSERT(191, index >= 0); - mCtrlWaveArray[index].field_0x34 = param_2; - mCtrlWaveArray[index].field_0x0.field_0x4 = param_3; - mCtrlWaveArray[index].field_0x0.field_0x4.field_0x24 = &field_0x4c; + mCtrlWaveArray[index].mWaveID = waveID; + mCtrlWaveArray[index].mWaveHandle.mWaveInfo = waveInfo; + mCtrlWaveArray[index].mWaveHandle.mWaveInfo.field_0x24 = &field_0x4c; } /* 80286204-80286274 .text onLoadDone__Q38JASystem14TBasicWaveBank10TWaveGroupFv */ @@ -141,6 +141,6 @@ void JASystem::TBasicWaveBank::TWaveGroup::onEraseDone() { } /* 802862E4-802862F8 .text getWaveID__Q38JASystem14TBasicWaveBank10TWaveGroupCFi */ -u32 JASystem::TBasicWaveBank::TWaveGroup::getWaveID(int param_1) const { - return mCtrlWaveArray[param_1].field_0x34; +u32 JASystem::TBasicWaveBank::TWaveGroup::getWaveID(int index) const { + return mCtrlWaveArray[index].mWaveID; } diff --git a/src/JSystem/JAudio/JASDvdThread.cpp b/src/JSystem/JAudio/JASDvdThread.cpp index 134059ca6..2d5b8a197 100644 --- a/src/JSystem/JAudio/JASDvdThread.cpp +++ b/src/JSystem/JAudio/JASDvdThread.cpp @@ -38,8 +38,8 @@ void* JASTaskThread::run() { while (true) { msg = waitMessageBlock(); TCallStack* callStack = (TCallStack*)msg; - if (field_0x70) { - OSSleepThread(&field_0x68); + if (mPaused) { + OSSleepThread(&mQ); } if (!callStack) { continue; @@ -53,14 +53,13 @@ void* JASTaskThread::run() { /* 8027B6D4-8027B72C .text pause__13JASTaskThreadFb */ void JASTaskThread::pause(bool param_1) { if (param_1) { - field_0x70 = 1; + mPaused = 1; } else { - if (field_0x70) { - OSWakeupThread(&field_0x68); + if (mPaused) { + OSWakeupThread(&mQ); } - field_0x70 = 0; + mPaused = 0; } - } JASTaskThread* JASystem::Dvd::sThread; @@ -84,20 +83,31 @@ BOOL JASystem::Dvd::sendCmdMsg(s32 (*param_1)(void*), void* param_2, u32 param_3 return sThread->sendCmdMsg(param_1, param_2, param_3); } +struct dvd_msg { + u32 field_0x00; + u32 * field_0x04; + void(* field_0x08)(u32); +}; + /* 8027B8D4-8027B914 .text checkPassDvdT__Q28JASystem3DvdFUlPUlPFUl_v */ -int JASystem::Dvd::checkPassDvdT(u32, u32*, void (*)(u32)) { - /* Nonmatching */ +int JASystem::Dvd::checkPassDvdT(u32 p1, u32* p2, void (*p3)(u32)) { + dvd_msg msg; + msg.field_0x00 = p1; + msg.field_0x04 = p2; + msg.field_0x08 = p3; + sendCmdMsg(dvdThreadCheckBack, &msg, sizeof(msg)); + return 0; } /* 8027B914-8027B960 .text checkFile__Q28JASystem3DvdFPc */ -u32 JASystem::Dvd::checkFile(char* param_1) { +u32 JASystem::Dvd::checkFile(char* name) { DVDFileInfo info; - if (!DVDOpen(param_1, &info)) { + if (!DVDOpen(name, &info)) { return 0; } - u32 r31 = info.length; + u32 size = info.length; DVDClose(&info); - return r31; + return size; } /* 8027B960-8027B9C4 .text unpauseDvdT__Q28JASystem3DvdFv */ @@ -107,8 +117,13 @@ void JASystem::Dvd::unpauseDvdT() { } /* 8027B9C4-8027BA10 .text dvdThreadCheckBack__Q28JASystem3DvdFPv */ -int JASystem::Dvd::dvdThreadCheckBack(void*) { - /* Nonmatching */ +s32 JASystem::Dvd::dvdThreadCheckBack(void* unk) { + const dvd_msg* msg = (const dvd_msg*)unk; + if (msg->field_0x04 != 0x00) + msg->field_0x04[0] = msg->field_0x00; + if (msg->field_0x08 != NULL) + msg->field_0x08(msg->field_0x00); + return 0; } /* 8027BA10-8027BA70 .text __dt__13JASTaskThreadFv */ diff --git a/src/JSystem/JAudio/JASInstSense.cpp b/src/JSystem/JAudio/JASInstSense.cpp index ab127b89b..a93974d69 100644 --- a/src/JSystem/JAudio/JASInstSense.cpp +++ b/src/JSystem/JAudio/JASInstSense.cpp @@ -12,7 +12,6 @@ void JASystem::TInstSense::getY(int, int) const { } /* 80286A1C-80286B58 .text setParams__Q28JASystem10TInstSenseFiiff */ -void JASystem::TInstSense::setParams(int, int, float, float) { +void JASystem::TInstSense::setParams(int trigger, int centerkey, float, float) { /* Nonmatching */ } - diff --git a/src/JSystem/JAudio/JASKernelDebug.cpp b/src/JSystem/JAudio/JASKernelDebug.cpp index e1fccc668..3504a106e 100644 --- a/src/JSystem/JAudio/JASKernelDebug.cpp +++ b/src/JSystem/JAudio/JASKernelDebug.cpp @@ -6,9 +6,8 @@ #include "JSystem/JAudio/JASKernelDebug.h" /* 8027D6B8-8027D6F4 .text stackInit__Q28JASystem6KernelFPUxUl */ -void JASystem::Kernel::stackInit(u64* param_1, u32 param_2) { - /* Nonmatching */ - for (int i = 1; i < param_2; i++) { - param_1[i] = 0xfadebabe12345678; +void JASystem::Kernel::stackInit(u64* stack, u32 num) { + for (int i = 1; i < num; i++) { + stack[i] = 0xfadebabe12345678; } } diff --git a/src/JSystem/JAudio/JASSimpleWaveBank.cpp b/src/JSystem/JAudio/JASSimpleWaveBank.cpp index 38f3d4483..c3b29fb6b 100644 --- a/src/JSystem/JAudio/JASSimpleWaveBank.cpp +++ b/src/JSystem/JAudio/JASSimpleWaveBank.cpp @@ -23,31 +23,31 @@ JASystem::TSimpleWaveBank::~TSimpleWaveBank() { JASystem::TSimpleWaveBank::TWaveHandle::~TWaveHandle() {} /* 80286650-8028670C .text setWaveTableSize__Q28JASystem15TSimpleWaveBankFUl */ -void JASystem::TSimpleWaveBank::setWaveTableSize(u32 param_1) { +void JASystem::TSimpleWaveBank::setWaveTableSize(u32 size) { delete[] mWaveTable; - mWaveTable = new (getCurrentHeap(), 0) TWaveHandle[param_1]; + mWaveTable = new (getCurrentHeap(), 0) TWaveHandle[size]; JUT_ASSERT(34, mWaveTable != 0); - mWaveCount = param_1; + mWaveCount = size; } /* 8028670C-80286730 .text getWaveHandle__Q28JASystem15TSimpleWaveBankCFUl */ -JASystem::TSimpleWaveBank::TWaveHandle* JASystem::TSimpleWaveBank::getWaveHandle(u32 param_1) const { - if (param_1 >= mWaveCount) { +JASystem::TSimpleWaveBank::TWaveHandle* JASystem::TSimpleWaveBank::getWaveHandle(u32 no) const { + if (no >= mWaveCount) { return NULL; } - return mWaveTable + param_1; + return &mWaveTable[no]; } /* 80286730-802867D4 .text setWaveInfo__Q28JASystem15TSimpleWaveBankFUlRCQ28JASystem9TWaveInfo */ -void JASystem::TSimpleWaveBank::setWaveInfo(u32 param_1, const JASystem::TWaveInfo& param_2) { - mWaveTable[param_1].field_0x4 = param_2; - mWaveTable[param_1].field_0x4.field_0x24 = &field_0x4c; - mWaveTable[param_1].mHeap = &field_0x4; +void JASystem::TSimpleWaveBank::setWaveInfo(u32 no, const JASystem::TWaveInfo& waveInfo) { + mWaveTable[no].mWaveInfo = waveInfo; + mWaveTable[no].mWaveInfo.field_0x24 = &field_0x4c; + mWaveTable[no].mHeap = &mHeap; } /* 802867D4-802867F4 .text getWaveArc__Q28JASystem15TSimpleWaveBankFi */ -JASystem::TWaveArc* JASystem::TSimpleWaveBank::getWaveArc(int param_1) { - if (param_1 != 0) { +JASystem::TWaveArc* JASystem::TSimpleWaveBank::getWaveArc(int no) { + if (no != 0) { return NULL; } return this; diff --git a/src/JSystem/JAudio/JASSystemHeap.cpp b/src/JSystem/JAudio/JASSystemHeap.cpp index 27f535573..748684ed4 100644 --- a/src/JSystem/JAudio/JASSystemHeap.cpp +++ b/src/JSystem/JAudio/JASSystemHeap.cpp @@ -16,7 +16,6 @@ JKRSolidHeap* JASDram; /* 8027DB38-8027DB9C .text sysDramSetup__Q28JASystem6KernelFP12JKRSolidHeap */ void JASystem::Kernel::sysDramSetup(JKRSolidHeap* heap) { - /* Nonmatching */ if (heap) { JASDram = heap; return; @@ -41,20 +40,19 @@ int JASystem::Kernel::audioAramTop; int JASystem::Kernel::CARD_SECURITY_BUFFER; /* 8027DC30-8027DC84 .text sysAramSetup__Q28JASystem6KernelFUl */ -void JASystem::Kernel::sysAramSetup(u32 param_1) { - /* Nonmatching */ - if (!param_1) { - param_1 = audioAramSize; +void JASystem::Kernel::sysAramSetup(u32 size) { + if (!size) { + size = audioAramSize; } audioAramTop = ARGetBaseAddress(); CARD_SECURITY_BUFFER = 0x40; - audioAramHeap.init((u8*)audioAramTop, param_1 - audioAramTop); + audioAramHeap.init((u8*)audioAramTop, size - audioAramTop); } /* 8027DC84-8027DCDC .text allocFromSysAramFull__Q28JASystem6KernelFPUl */ -void* JASystem::Kernel::allocFromSysAramFull(u32* param_1) { +void* JASystem::Kernel::allocFromSysAramFull(u32* bufSize) { u32 size = audioAramHeap.getRemain(); - void* var1 = audioAramHeap.alloc(size - 0x20); - *param_1 = size - 0x20; - return var1; + void* buf = audioAramHeap.alloc(size - 0x20); + *bufSize = size - 0x20; + return buf; } diff --git a/src/JSystem/JAudio/JASWaveArcLoader.cpp b/src/JSystem/JAudio/JASWaveArcLoader.cpp index b6e4706c4..13fad4490 100644 --- a/src/JSystem/JAudio/JASWaveArcLoader.cpp +++ b/src/JSystem/JAudio/JASWaveArcLoader.cpp @@ -52,11 +52,11 @@ char* JASystem::WaveArcLoader::getCurrentDir() { } /* 80287D30-80287DA4 .text __ct__Q28JASystem8TWaveArcFv */ -JASystem::TWaveArc::TWaveArc() : field_0x4(this) { +JASystem::TWaveArc::TWaveArc() : mHeap(this) { field_0x4c = 0; field_0x68 = 0; - field_0x6c = -1; - field_0x70 = 0; + mFileNo = -1; + mSize = 0; field_0x74 = 0; OSInitMutex(&mMutex); } @@ -97,20 +97,19 @@ bool JASystem::TWaveArc::eraseSetup() { } struct unk_message { - JASystem::TWaveArc* field_0x0; - int field_0x4; + JASystem::TWaveArc* mpWaveArc; + int mFileNo; void* field_0x8; u32 field_0xc; }; /* 80287EB8-80287F48 .text loadToAramCallback__Q28JASystem8TWaveArcFPv */ s32 JASystem::TWaveArc::loadToAramCallback(void* param_1) { - /* Nonmatching */ unk_message* msg = (unk_message*)param_1; - if (JKRDvdAramRipper::loadToAram(msg->field_0x4, u32(msg->field_0x8), EXPAND_SWITCH_UNKNOWN0, 0, 0) == 0) { + if (JKRDvdAramRipper::loadToAram(msg->mFileNo, u32(msg->field_0x8), EXPAND_SWITCH_UNKNOWN0, 0, 0) == 0) { return -1; } - TWaveArc* waveArc = msg->field_0x0; + TWaveArc* waveArc = msg->mpWaveArc; if (!waveArc->loadSetup(msg->field_0xc)) { return 0; } @@ -120,31 +119,49 @@ s32 JASystem::TWaveArc::loadToAramCallback(void* param_1) { /* 80287F48-80287FE4 .text sendLoadCmd__Q28JASystem8TWaveArcFv */ bool JASystem::TWaveArc::sendLoadCmd() { - /* Nonmatching */ OSLockMutex(&mMutex); field_0x4c = 0; field_0x68 = 1; unk_message msg; - msg.field_0x0 = this; - msg.field_0x4 = field_0x6c; - msg.field_0x8 = field_0x4.mBase; + msg.mpWaveArc = this; + msg.mFileNo = mFileNo; + msg.field_0x8 = mHeap.mBase; msg.field_0xc = ++field_0x74; OSUnlockMutex(&mMutex); if (!Dvd::sendCmdMsg(loadToAramCallback, &msg, sizeof(msg))) { - field_0x4.free(); + mHeap.free(); return false; } return true; } /* 80287FE4-802880A0 .text load__Q28JASystem8TWaveArcFPQ38JASystem6Kernel5THeap */ -bool JASystem::TWaveArc::load(Kernel::THeap*) { - /* Nonmatching */ +bool JASystem::TWaveArc::load(Kernel::THeap* heap) { + if (mFileNo < 0) + return false; + + OSLockMutex(&mMutex); + if (field_0x68 != 0) { + OSUnlockMutex(&mMutex); + return false; + } + + if (heap == NULL) + heap = WaveArcLoader::getRootHeap(); + + if (!mHeap.alloc(heap, mSize)) { + OSUnlockMutex(&mMutex); + return false; + } + + bool ret = sendLoadCmd(); + OSUnlockMutex(&mMutex); + return ret; } /* 802880A0-802880C4 .text erase__Q28JASystem8TWaveArcFv */ bool JASystem::TWaveArc::erase() { - return field_0x4.free(); + return mHeap.free(); } /* 802880C4-8028810C .text onDispose__Q28JASystem8TWaveArcFv */ @@ -155,8 +172,13 @@ void JASystem::TWaveArc::onDispose() { } /* 8028810C-8028816C .text setEntryNum__Q28JASystem8TWaveArcFl */ -void JASystem::TWaveArc::setEntryNum(s32) { - /* Nonmatching */ +void JASystem::TWaveArc::setEntryNum(s32 entryNum) { + DVDFileInfo file; + if (entryNum >= 0 && DVDFastOpen(entryNum, &file)) { + mSize = file.length; + DVDClose(&file); + mFileNo = entryNum; + } } /* 8028816C-80288214 .text setFileName__Q28JASystem8TWaveArcFPCc */