summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorJcw87 <Jcw87@users.noreply.github.com>2023-09-07 09:50:36 -0700
committerGitHub <noreply@github.com>2023-09-07 19:50:36 +0300
commit3dd1963a59c4cf80c0348f10532d2ce445dec7de (patch)
tree0d948d80170ec4a0193acb3b8c62d24889561f88 /libs
parentd56a9719ea1f2a325a5013bd4f8c94fb76f21599 (diff)
JAUInitializer (#1915)
* JAUInitializer * forgot a couple things
Diffstat (limited to 'libs')
-rw-r--r--libs/JSystem/JAudio2/JAIStream.cpp34
-rw-r--r--libs/JSystem/JAudio2/JASAramStream.cpp38
-rw-r--r--libs/JSystem/JAudio2/JASHeapCtrl.cpp25
-rw-r--r--libs/JSystem/JAudio2/JAUInitializer.cpp215
-rw-r--r--libs/Z2AudioLib/Z2AudioMgr.cpp4
5 files changed, 104 insertions, 212 deletions
diff --git a/libs/JSystem/JAudio2/JAIStream.cpp b/libs/JSystem/JAudio2/JAIStream.cpp
index 35cb0a4a74..b70f89f2d2 100644
--- a/libs/JSystem/JAudio2/JAIStream.cpp
+++ b/libs/JSystem/JAudio2/JAIStream.cpp
@@ -16,40 +16,10 @@ struct JASGenericMemPool {
/* 80290994 */ void free(void*, u32);
};
-struct JASAramStream {
- /* 802963A8 */ JASAramStream();
- /* 8029649C */ void init(u32, u32, void (*)(u32, JASAramStream*, void*), void*);
- /* 8029655C */ void prepare(s32, int);
- /* 80296618 */ void start();
- /* 8029664C */ void stop(u16);
- /* 80296684 */ void pause(bool);
- /* 802966CC */ void cancel();
-};
-
struct JAIStreamMgr {};
struct JAIAudience {};
-struct JAIStream {
- /* 802A3104 */ JAIStream(JAIStreamMgr*, JAISoundStrategyMgr<JAIStream>*);
- /* 802A319C */ void JAIStreamMgr_startID_(JAISoundID, s32, JGeometry::TVec3<f32> const*,
- JAIAudience*, int);
- /* 802A3230 */ void prepare_prepareStream_();
- /* 802A33F4 */ void prepare_();
- /* 802A3498 */ void prepare_startStream_();
- /* 802A34E4 */ void JAIStreamMgr_mixOut_(JASSoundParams const&, JAISoundActivity);
- /* 802A3720 */ void die_JAIStream_();
- /* 802A37FC */ void JAISound_tryDie_();
- /* 802A388C */ void JAIStreamMgr_calc_();
- /* 802A3948 */ s32 getNumChild() const;
- /* 802A3950 */ void getChild(int);
- /* 802A3A24 */ void releaseChild(int);
- /* 802A3ABC */ JASTrack* getTrack();
- /* 802A3AC4 */ JASTrack* getChildTrack(int);
- /* 802A3ACC */ JAIStream* asStream();
- /* 802A3AD0 */ JAITempoMgr* getTempoMgr();
-};
-
struct JAISoundChild {
/* 802A2AB0 */ void init();
/* 802A2B7C */ void calc();
@@ -247,7 +217,7 @@ asm void JAIStream::die_JAIStream_() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JAIStream::JAISound_tryDie_() {
+asm bool JAIStream::JAISound_tryDie_() {
nofralloc
#include "asm/JSystem/JAudio2/JAIStream/JAISound_tryDie___9JAIStreamFv.s"
}
@@ -272,7 +242,7 @@ s32 JAIStream::getNumChild() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JAIStream::getChild(int param_0) {
+asm JAISoundChild* JAIStream::getChild(int param_0) {
nofralloc
#include "asm/JSystem/JAudio2/JAIStream/getChild__9JAIStreamFi.s"
}
diff --git a/libs/JSystem/JAudio2/JASAramStream.cpp b/libs/JSystem/JAudio2/JASAramStream.cpp
index 6c843ad1b1..cec32a2cf1 100644
--- a/libs/JSystem/JAudio2/JASAramStream.cpp
+++ b/libs/JSystem/JAudio2/JASAramStream.cpp
@@ -40,10 +40,6 @@ struct JASGenericMemPool {
/* 80290948 */ void alloc(u32);
};
-struct JASDsp {
- struct TChannel {};
-};
-
struct JASDriver {
/* 8029C9E8 */ void getDacRate();
/* 8029E1C4 */ void rejectCallback(s32 (*)(void*), void*);
@@ -58,37 +54,6 @@ struct JASChannel {
/* 8029AB98 */ void setMixConfig(u32, u16);
};
-struct JASAramStream {
- /* 8029631C */ void initSystem(u32, u32);
- /* 802963A8 */ JASAramStream();
- /* 8029649C */ void init(u32, u32, void (*)(u32, JASAramStream*, void*), void*);
- /* 8029655C */ void prepare(s32, int);
- /* 80296618 */ void start();
- /* 8029664C */ void stop(u16);
- /* 80296684 */ void pause(bool);
- /* 802966CC */ void cancel();
- /* 80296710 */ void getBlockSamples() const;
- /* 8029673C */ void headerLoadTask(void*);
- /* 8029676C */ void firstLoadTask(void*);
- /* 80296848 */ void loadToAramTask(void*);
- /* 80296868 */ void finishTask(void*);
- /* 802968C8 */ void prepareFinishTask(void*);
- /* 80296920 */ void headerLoad(u32, int);
- /* 80296AE8 */ void load();
- /* 80296D74 */ void channelProcCallback(void*);
- /* 80296D94 */ void dvdErrorCheck(void*);
- /* 80296DF0 */ void channelCallback(u32, JASChannel*, JASDsp::TChannel*, void*);
- /* 80296E2C */ void updateChannel(u32, JASChannel*, JASDsp::TChannel*);
- /* 802974AC */ void channelProc();
- /* 80297658 */ void channelStart();
- /* 80297870 */ void channelStop(u16);
-
- static u8 sLoadThread[4];
- static u8 sReadBuffer[4];
- static u8 sBlockSize[4];
- static u8 sChannelMax[4];
-};
-
//
// Forward References:
//
@@ -145,9 +110,6 @@ extern "C" void __dl__FPv();
extern "C" void mainRamToAram__7JKRAramFPUcUlUl15JKRExpandSwitchUlP7JKRHeapiPUl();
extern "C" void OSDisableInterrupts();
extern "C" void OSRestoreInterrupts();
-extern "C" void OSInitMessageQueue();
-extern "C" void OSSendMessage();
-extern "C" void OSReceiveMessage();
extern "C" void DVDFastOpen();
extern "C" void DVDReadPrio();
extern "C" void DVDGetDriveStatus();
diff --git a/libs/JSystem/JAudio2/JASHeapCtrl.cpp b/libs/JSystem/JAudio2/JASHeapCtrl.cpp
index 89431411c6..290d2c2df7 100644
--- a/libs/JSystem/JAudio2/JASHeapCtrl.cpp
+++ b/libs/JSystem/JAudio2/JASHeapCtrl.cpp
@@ -20,19 +20,6 @@ struct JKRExpHeap {
/* 802CEE2C */ void create(u32, JKRHeap*, bool);
};
-struct JASKernel {
- /* 802909B8 */ void setupRootHeap(JKRSolidHeap*, u32);
- /* 80290AC0 */ u32 getSystemHeap();
- /* 80290AC8 */ u32 getCommandHeap();
- /* 80290AD0 */ void setupAramHeap(u32, u32);
- /* 80290B08 */ void getAramHeap();
-
- static u8 audioAramHeap[68];
- static u8 sAramBase[4];
- static u8 sSystemHeap[4];
- static u8 sCommandHeap[4];
-};
-
struct JASDisposer {
/* 80290BCC */ void onDispose();
};
@@ -122,7 +109,7 @@ asm void JASHeap::initRootHeap(void* param_0, u32 param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JASHeap::alloc(JASHeap* param_0, u32 param_1) {
+asm bool JASHeap::alloc(JASHeap* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/JAudio2/JASHeapCtrl/alloc__7JASHeapFP7JASHeapUl.s"
}
@@ -132,7 +119,7 @@ asm void JASHeap::alloc(JASHeap* param_0, u32 param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JASHeap::allocTail(JASHeap* param_0, u32 param_1) {
+asm bool JASHeap::allocTail(JASHeap* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/JAudio2/JASHeapCtrl/allocTail__7JASHeapFP7JASHeapUl.s"
}
@@ -250,7 +237,7 @@ asm void JASGenericMemPool::free(void* param_0, u32 param_1) {
u8 JASKernel::sAramBase[4];
/* 80451218-8045121C 000718 0004+00 2/1 0/0 0/0 .sbss sSystemHeap__9JASKernel */
-u8 JASKernel::sSystemHeap[4];
+JKRHeap* JASKernel::sSystemHeap;
/* 8045121C-80451220 00071C 0004+00 2/1 0/0 0/0 .sbss sCommandHeap__9JASKernel */
u8 JASKernel::sCommandHeap[4];
@@ -267,8 +254,8 @@ asm void JASKernel::setupRootHeap(JKRSolidHeap* param_0, u32 param_1) {
#pragma pop
/* 80290AC0-80290AC8 -00001 0008+00 0/0 0/0 0/0 .text getSystemHeap__9JASKernelFv */
-u32 JASKernel::getSystemHeap() {
- return *(u32*)(&JASKernel::sSystemHeap);
+JKRHeap* JASKernel::getSystemHeap() {
+ return JASKernel::sSystemHeap;
}
/* 80290AC8-80290AD0 -00001 0008+00 0/0 0/0 0/0 .text getCommandHeap__9JASKernelFv */
@@ -297,7 +284,7 @@ asm void JASKernel::setupAramHeap(u32 param_0, u32 param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JASKernel::getAramHeap() {
+asm JASHeap* JASKernel::getAramHeap() {
nofralloc
#include "asm/JSystem/JAudio2/JASHeapCtrl/getAramHeap__9JASKernelFv.s"
}
diff --git a/libs/JSystem/JAudio2/JAUInitializer.cpp b/libs/JSystem/JAudio2/JAUInitializer.cpp
index 3aca3cac82..9e27a06558 100644
--- a/libs/JSystem/JAudio2/JAUInitializer.cpp
+++ b/libs/JSystem/JAudio2/JAUInitializer.cpp
@@ -4,105 +4,28 @@
//
#include "JSystem/JAudio2/JAUInitializer.h"
+#include "JSystem/JAudio2/JAISe.h"
+#include "JSystem/JAudio2/JAISeq.h"
+#include "JSystem/JAudio2/JAISoundChild.h"
+#include "JSystem/JAudio2/JAIStream.h"
+#include "JSystem/JAudio2/JASAramStream.h"
+#include "JSystem/JAudio2/JASAudioThread.h"
+#include "JSystem/JAudio2/JASDriverIF.h"
+#include "JSystem/JAudio2/JASDvdThread.h"
+#include "JSystem/JAudio2/JASHeapCtrl.h"
+#include "JSystem/JAudio2/JASTaskThread.h"
+#include "JSystem/JAudio2/JASTrack.h"
+#include "JSystem/JAudio2/JASWaveArcLoader.h"
+#include "JSystem/JKernel/JKRAram.h"
+#include "JSystem/JKernel/JKRSolidHeap.h"
+#include "JSystem/JKernel/JKRThread.h"
#include "dol2asm.h"
+#include "dolphin/os/OSRtc.h"
//
// Types:
//
-struct JKRThread {};
-
-struct JKRThreadSwitch {
- /* 802D1A70 */ void enter(JKRThread*, int);
-
- static u8 sManager[4];
-};
-
-struct JKRSolidHeap {};
-
-struct JKRHeap {
- /* 802CE72C */ void getFreeSize();
-};
-
-struct JKRAram {
- static u8 sAramObject[4];
-};
-
-struct JAU_JASInitializer {
- /* 802A4AD0 */ JAU_JASInitializer();
- /* 802A4B28 */ void initJASystem(JKRSolidHeap*);
-};
-
-struct JAU_JAIInitializer {
- /* 802A4D3C */ JAU_JAIInitializer();
- /* 802A4D60 */ void initJAInterface();
-};
-
-struct JASWaveArcLoader {
- /* 8029A0D0 */ void setCurrentDir(char const*);
-};
-
-template <typename A0>
-struct JASMemPool_MultiThreaded {};
-/* JASMemPool_MultiThreaded<JASTrack> */
-struct JASMemPool_MultiThreaded__template0 {
- /* 802932E0 */ void func_802932E0(void* _this);
-};
-
-/* JASMemPool_MultiThreaded<JASTrack::TChannelMgr> */
-struct JASMemPool_MultiThreaded__template1 {
- /* 80293334 */ void func_80293334(void* _this);
-};
-
-template <typename A0>
-struct JASMemPool {};
-/* JASMemPool<JAISe> */
-struct JASMemPool__template0 {
- /* 8029FC34 */ void func_8029FC34(void* _this);
-};
-
-/* JASMemPool<JAISoundChild> */
-struct JASMemPool__template1 {
- /* 802A1268 */ void func_802A1268(void* _this);
-};
-
-/* JASMemPool<JAISeq> */
-struct JASMemPool__template2 {
- /* 802A1AF4 */ void func_802A1AF4(void* _this);
-};
-
-/* JASMemPool<JAIStream> */
-struct JASMemPool__template3 {
- /* 802A3E68 */ void func_802A3E68(void* _this);
-};
-
-struct JASKernel {
- /* 802909B8 */ void setupRootHeap(JKRSolidHeap*, u32);
- /* 80290AD0 */ void setupAramHeap(u32, u32);
-};
-
-struct JASGenericMemPool {
- /* 80290848 */ JASGenericMemPool();
- /* 802908C8 */ void newMemPool(u32, int);
-};
-
-struct JASDvd {
- /* 8028FF04 */ void createThread(s32, int, u32);
-};
-
-struct JASDriver {
- /* 8029E130 */ void setDSPLevel(f32);
- /* 8029E178 */ void setOutputMode(u32);
-};
-
-struct JASAudioThread {
- /* 8029CD4C */ void create(s32);
-};
-
-struct JASAramStream {
- /* 8029631C */ void initSystem(u32, u32);
-};
-
//
// Forward References:
//
@@ -135,9 +58,6 @@ extern "C" void func_802A1AF4(void* _this);
extern "C" void func_802A3E68(void* _this);
extern "C" void getFreeSize__7JKRHeapFv();
extern "C" void enter__15JKRThreadSwitchFP9JKRThreadi();
-extern "C" void OSDisableInterrupts();
-extern "C" void OSRestoreInterrupts();
-extern "C" void OSGetSoundMode();
extern "C" void __register_global_object();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
@@ -148,7 +68,6 @@ extern "C" extern u8 data_804340B0[16];
extern "C" extern u8 data_804340CC[16 + 4 /* padding */];
extern "C" extern u8 data_804340FC[16 + 4 /* padding */];
extern "C" extern u8 data_80450B8C[4];
-extern "C" extern u8 JASDram[4];
extern "C" extern u8 struct_80451230[8];
extern "C" extern u8 data_80451310[8];
extern "C" extern u8 data_80451318[8];
@@ -162,23 +81,22 @@ extern "C" extern u8 __OSReport_disable;
// Declarations:
//
-/* ############################################################################################## */
-/* 80455810-80455818 003E10 0004+04 1/1 0/0 0/0 .sdata2 @730 */
-SECTION_SDATA2 static f32 lit_730[1 + 1 /* padding */] = {
- 1.0f,
- /* padding */
- 0.0f,
-};
-
/* 802A4AD0-802A4B28 29F410 0058+00 0/0 1/1 0/0 .text __ct__18JAU_JASInitializerFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JAU_JASInitializer::JAU_JASInitializer() {
- nofralloc
-#include "asm/JSystem/JAudio2/JAUInitializer/__ct__18JAU_JASInitializerFv.s"
+JAU_JASInitializer::JAU_JASInitializer() {
+ field_0x00 = 0;
+ field_0x04 = 0;
+ field_0x14 = -1;
+ field_0x18 = -1;
+ field_0x08 = 0x1000;
+ field_0x0c = 3;
+ field_0x10 = 2;
+ field_0x1c = 0x80;
+ field_0x2c = 1.0f;
+ field_0x24 = 0x2760;
+ field_0x28 = 2;
+ field_0x20 = 0;
+ field_0x30 = NULL;
}
-#pragma pop
/* ############################################################################################## */
/* 80434110-8043411C 060E30 000C+00 2/2 0/0 0/0 .bss @757 */
@@ -189,6 +107,53 @@ static u8 lit_763[12];
/* 802A4B28-802A4D3C 29F468 0214+00 0/0 1/1 0/0 .text
* initJASystem__18JAU_JASInitializerFP12JKRSolidHeap */
+// extra destructors
+#ifdef NONMATCHING
+void JAU_JASInitializer::initJASystem(JKRSolidHeap* param_0) {
+ if (JASAudioThread::getThreadPointer()) {
+
+ } else if (JASDvd::getThreadPointer()) {
+
+ } else {
+ JASKernel::setupRootHeap(param_0, field_0x08);
+ if (field_0x00 == 0) {
+ field_0x00 = JKRAram::getManager()->getAudioMemory();
+ }
+ if (field_0x04 == 0) {
+ field_0x04 = JKRAram::getManager()->getAudioMemSize();
+ }
+ JASKernel::setupAramHeap(field_0x00, field_0x04);
+ JASPoolAllocObject_MultiThreaded<JASTrack>::newMemPool(field_0x1c);
+ if (field_0x20 > 0) {
+ JASPoolAllocObject_MultiThreaded<JASTrack::TChannelMgr>::newMemPool(field_0x20);
+ }
+ JASDvd::createThread(field_0x0c,0x80,0x1000);
+ JASAudioThread::create(field_0x10);
+ JKRThreadSwitch* threadSwitch = JKRThreadSwitch::getManager();
+ if (threadSwitch) {
+ if (field_0x14 >= 0) {
+ threadSwitch->enter(JASDvd::getThreadPointer(), field_0x14);
+ }
+ if (field_0x18 >= 0) {
+ threadSwitch->enter(JASAudioThread::getThreadPointer(), field_0x18);
+ }
+ }
+ JASDriver::setDSPLevel(field_0x2c);
+ JASAramStream::initSystem(field_0x24,field_0x28);
+ }
+ if (field_0x30) {
+ JASWaveArcLoader::setCurrentDir(field_0x30);
+ }
+ switch (OSGetSoundMode()) {
+ case 0:
+ JASDriver::setOutputMode(0);
+ break;
+ case 1:
+ JASDriver::setOutputMode(1);
+ break;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -197,16 +162,15 @@ asm void JAU_JASInitializer::initJASystem(JKRSolidHeap* param_0) {
#include "asm/JSystem/JAudio2/JAUInitializer/initJASystem__18JAU_JASInitializerFP12JKRSolidHeap.s"
}
#pragma pop
+#endif
/* 802A4D3C-802A4D60 29F67C 0024+00 0/0 1/1 0/0 .text __ct__18JAU_JAIInitializerFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JAU_JAIInitializer::JAU_JAIInitializer() {
- nofralloc
-#include "asm/JSystem/JAudio2/JAUInitializer/__ct__18JAU_JAIInitializerFv.s"
+JAU_JAIInitializer::JAU_JAIInitializer() {
+ field_0x0 = 100;
+ field_0x4 = 4;
+ field_0x8 = 2;
+ field_0xc = 16;
}
-#pragma pop
/* ############################################################################################## */
/* 80434128-80434134 060E48 000C+00 0/1 0/0 0/0 .bss @855 */
@@ -234,6 +198,18 @@ static u8 lit_867[12 + 96 /* padding */];
#pragma pop
/* 802A4D60-802A4EE8 29F6A0 0188+00 0/0 1/1 0/0 .text initJAInterface__18JAU_JAIInitializerFv */
+// extra destructors
+#ifdef NONMATCHING
+void JAU_JAIInitializer::initJAInterface() {
+ s32 r30 = JASDram->getFreeSize();
+ JASPoolAllocObject<JAIStream>::newMemPool(field_0x8);
+ JASPoolAllocObject<JAISeq>::newMemPool(field_0x4);
+ JASPoolAllocObject<JAISe>::newMemPool(field_0x0);
+ JASPoolAllocObject<JAISoundChild>::newMemPool(field_0xc);
+ s32 r29 = JASDram->getFreeSize();
+ //OSReport("JAU_JAIInitializer uses %d bytes\n", r30 - r29);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -242,3 +218,4 @@ asm void JAU_JAIInitializer::initJAInterface() {
#include "asm/JSystem/JAudio2/JAUInitializer/initJAInterface__18JAU_JAIInitializerFv.s"
}
#pragma pop
+#endif
diff --git a/libs/Z2AudioLib/Z2AudioMgr.cpp b/libs/Z2AudioLib/Z2AudioMgr.cpp
index bcc367119c..8e14b25f64 100644
--- a/libs/Z2AudioLib/Z2AudioMgr.cpp
+++ b/libs/Z2AudioLib/Z2AudioMgr.cpp
@@ -82,10 +82,6 @@ struct JASResArcLoader {
/* 80290C04 */ void getResMaxSize(JKRArchive const*);
};
-struct JASKernel {
- /* 80290B08 */ void getAramHeap();
-};
-
struct JASAramStream {
static u8 sBlockSize[4];
};