mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-07 13:23:27 -04:00
JAS work
This commit is contained in:
+1
-1
@@ -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"),
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user