This commit is contained in:
Jasper St. Pierre
2023-11-08 00:41:29 -08:00
parent 044fec8706
commit 47303cd4b7
16 changed files with 209 additions and 165 deletions
+1 -1
View File
@@ -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"),
+15 -8
View File
@@ -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;
};
}
+11 -11
View File
@@ -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 {
+5 -5
View File
@@ -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;
}
+3 -3
View File
@@ -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;
};
+3 -3
View File
@@ -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;
};
}
+1 -1
View File
@@ -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;
+9 -10
View File
@@ -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);
}
+51 -46
View File
@@ -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];
}
+16 -16
View File
@@ -66,10 +66,10 @@ void JASystem::TBasicWaveBank::incWaveTable(const TWaveGroup* param_1) {
u32 waveID = param_1->getWaveID(i);
TWaveInfo** table = mWaveTable;
TWaveInfo* waveInfo = &param_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;
}
+30 -15
View File
@@ -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 */
+1 -2
View File
@@ -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 */
}
+3 -4
View File
@@ -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;
}
}
+12 -12
View File
@@ -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;
+8 -10
View File
@@ -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;
}
+40 -18
View File
@@ -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 */