summaryrefslogtreecommitdiff
path: root/libs/JSystem/src/JAudio2/JAUInitializer.cpp
diff options
context:
space:
mode:
authorLuke Street <luke@street.dev>2026-03-01 15:35:36 -0700
committerGitHub <noreply@github.com>2026-03-01 14:35:36 -0800
commit9649319ec4926457ef85e6094f8207474c977c2d (patch)
tree1c5cd4c7cc4c1aee03f28921213da47f2775444d /libs/JSystem/src/JAudio2/JAUInitializer.cpp
parent6e149819e13b1f70ecbf8a4c66b030c17ffed2bb (diff)
Reorganize library code into `libs/` (#3119)
* Reorganize files into libs/{dolphin,JSystem,PowerPC_EABI_Support,revolution,TRK_MINNOW_DOLPHIN} * Update configure.py and project.py for new libs structure * Refactor `#include <dolphin/x.h>` -> `<x.h>` * Remove `__REVOLUTION_SDK__` forwards from dolphin * Fix dolphin/ references in revolution * Wrap `#include <dolphin.h>` in `!__REVOLUTION_SDK__` * Always build TRK against dolphin headers * Resolve revolution SDK header resolution issues
Diffstat (limited to 'libs/JSystem/src/JAudio2/JAUInitializer.cpp')
-rw-r--r--libs/JSystem/src/JAudio2/JAUInitializer.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/libs/JSystem/src/JAudio2/JAUInitializer.cpp b/libs/JSystem/src/JAudio2/JAUInitializer.cpp
new file mode 100644
index 0000000000..cbcd7ba62b
--- /dev/null
+++ b/libs/JSystem/src/JAudio2/JAUInitializer.cpp
@@ -0,0 +1,108 @@
+#include "JSystem/JSystem.h" // IWYU pragma: keep
+
+#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/JASTrack.h"
+#include "JSystem/JAudio2/JASWaveArcLoader.h"
+#include "JSystem/JKernel/JKRAram.h"
+#include "JSystem/JKernel/JKRSolidHeap.h"
+#include "JSystem/JKernel/JKRThread.h"
+
+JAU_JASInitializer::JAU_JASInitializer() {
+ audioMemory_ = 0;
+ audioMemSize_ = 0;
+ dvdThreadId_ = -1;
+ audioThreadId_ = -1;
+ heapSize_ = 0x1000;
+ dvdThreadPriority_ = 3;
+ audioThreadPriority_ = 2;
+ field_0x1c = 0x80;
+ dspLevel_ = 1.0f;
+ aramBlockSize_ = 0x2760;
+ aramChannelNum_ = 2;
+ field_0x20 = 0;
+ waveArcDir_ = NULL;
+}
+
+// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations
+void JAU_JASInitializer::initJASystem(JKRSolidHeap* heap) {
+ if (JASAudioThread::getThreadPointer()) {
+ JUT_WARN(48, "%s", "Though initialized JASAudioThread, called JAU_JASInitializer::initJASystem()\n");
+ } else if (JASDvd::getThreadPointer()) {
+ JUT_WARN(52, "%s", "Though initialized JASDvd, called JAU_JASInitializer::initJASystem()\n");
+ } else {
+ JASKernel::setupRootHeap(heap, heapSize_);
+
+ if (audioMemory_ == 0) {
+ audioMemory_ = JKRAram::getManager()->getAudioMemory();
+ }
+
+ if (audioMemSize_ == 0) {
+ audioMemSize_ = JKRAram::getManager()->getAudioMemSize();
+ }
+
+ JASKernel::setupAramHeap(audioMemory_, audioMemSize_);
+
+ JASTrack::newMemPool(field_0x1c);
+ if (field_0x20 > 0) {
+ JASTrack::TChannelMgr::newMemPool(field_0x20);
+ }
+
+ JASDvd::createThread(dvdThreadPriority_, 0x80, 0x1000);
+ JASAudioThread::create(audioThreadPriority_);
+ JKRThreadSwitch* threadSwitch = JKRThreadSwitch::getManager();
+ if (threadSwitch) {
+ if (dvdThreadId_ >= 0) {
+ threadSwitch->enter(JASDvd::getThreadPointer(), dvdThreadId_);
+ }
+ if (audioThreadId_ >= 0) {
+ threadSwitch->enter(JASAudioThread::getThreadPointer(), audioThreadId_);
+ }
+ }
+
+ JASDriver::setDSPLevel(dspLevel_);
+ JASAramStream::initSystem(aramBlockSize_, aramChannelNum_);
+ }
+
+ if (waveArcDir_) {
+ JASWaveArcLoader::setCurrentDir(waveArcDir_);
+ }
+
+ #if PLATFORM_SHIELD
+ JASDriver::setOutputMode(1);
+ #else
+ switch (OSGetSoundMode()) {
+ case 0:
+ JASDriver::setOutputMode(0);
+ break;
+ case 1:
+ JASDriver::setOutputMode(1);
+ break;
+ }
+ #endif
+}
+
+JAU_JAIInitializer::JAU_JAIInitializer() {
+ field_0x0 = 100;
+ field_0x4 = 4;
+ field_0x8 = 2;
+ field_0xc = 16;
+}
+
+// NONMATCHING JASPoolAllocObject<_> locations
+void JAU_JAIInitializer::initJAInterface() {
+ s32 r30 = JASDram->getFreeSize();
+ JAIStream::newMemPool(field_0x8);
+ JAISeq::newMemPool(field_0x4);
+ JAISe::newMemPool(field_0x0);
+ JAISoundChild::newMemPool(field_0xc);
+ s32 r29 = JASDram->getFreeSize();
+ OS_REPORT("JAU_JAIInitializer uses %d bytes\n", r30 - r29);
+}