From 17bb3ebb133f0f48bba89eac8d27ffed7485acc3 Mon Sep 17 00:00:00 2001 From: Jcw87 Date: Sun, 7 Jan 2024 00:26:00 -0800 Subject: [PATCH] JAIBasic --- include/JSystem/JAudio/JAIBasic.h | 5 ++- src/JSystem/JAudio/JAIBasic.cpp | 69 +++++++++++++++++++++++++++---- 2 files changed, 64 insertions(+), 10 deletions(-) diff --git a/include/JSystem/JAudio/JAIBasic.h b/include/JSystem/JAudio/JAIBasic.h index aaa42c463..be44cb8e8 100644 --- a/include/JSystem/JAudio/JAIBasic.h +++ b/include/JSystem/JAudio/JAIBasic.h @@ -9,6 +9,7 @@ class JKRSolidHeap; namespace JAInter { class Actor; + class Camera; } namespace JASystem { @@ -34,7 +35,7 @@ public: void setCameraInfo(Vec*, Vec*, f32(*)[4], u32); void initAudioThread(JKRSolidHeap*, u32, u8); void initCamera(); - bool initReadFile(); + BOOL initReadFile(); void processFrameWork(); void startSoundVec(u32, JAISound**, Vec*, u32, u32, u8); void startSoundActor(u32, JAISound**, JAInter::Actor*, u32, u8); @@ -56,7 +57,7 @@ public: bool allocStreamBuffer(void*, s32); bool deallocStreamBuffer(); - /* 0x04 */ void* field_0x4; + /* 0x04 */ JAInter::Camera* mAudioCamera; /* 0x08 */ JKRSolidHeap* field_0x8; /* 0x0C */ u8 initLoadFileSw; /* 0x0D */ u8 field_0xd; diff --git a/src/JSystem/JAudio/JAIBasic.cpp b/src/JSystem/JAudio/JAIBasic.cpp index a3a43dfb5..c05ba7632 100644 --- a/src/JSystem/JAudio/JAIBasic.cpp +++ b/src/JSystem/JAudio/JAIBasic.cpp @@ -4,9 +4,16 @@ // #include "JSystem/JAudio/JAIBasic.h" +#include "JSystem/JAudio/JAIBankWave.h" +#include "JSystem/JAudio/JAIConst.h" +#include "JSystem/JAudio/JAIDummyObject.h" +#include "JSystem/JAudio/JAIFx.h" #include "JSystem/JAudio/JAIGlobalParameter.h" #include "JSystem/JAudio/JAIInitData.h" +#include "JSystem/JAudio/JAISeMgr.h" +#include "JSystem/JAudio/JAISequenceHeap.h" #include "JSystem/JAudio/JAISequenceMgr.h" +#include "JSystem/JAudio/JAIStreamMgr.h" #include "JSystem/JAudio/JASAudioThread.h" #include "JSystem/JAudio/JASDriverIF.h" #include "JSystem/JAudio/JASSystemHeap.h" @@ -33,7 +40,7 @@ JAIBasic::JAIBasic() { field_0xe.flag4 = 0; field_0xe.flag5 = 0; field_0x14 = 0; - field_0x4 = NULL; + mAudioCamera = NULL; field_0x10 = 0; initLoadFileSw = 2; field_0x1c = 0; @@ -54,7 +61,26 @@ void JAIBasic::initInterface(u8) { /* 8028FD04-8028FDC0 .text initInterfaceMain__8JAIBasicFv */ void JAIBasic::initInterfaceMain() { - /* Nonmatching */ + initHeap(); + initResourcePath(); + initArchive(); + if (initReadFile()) { + if (!field_0xe.flag1) { + JAInter::BankWave::setWaveScene(); + } + JAInter::DummyObjectMgr::init(); + JAInter::Fx::init(); + JAInter::SequenceMgr::init(); + JAInter::SeMgr::init(); + JAInter::StreamMgr::init(); + JAInter::HeapMgr::init(JAIGlobalParameter::stayHeapMax, JAIGlobalParameter::stayHeapSize, JAIGlobalParameter::autoHeapMax, JAIGlobalParameter::autoHeapRoomSize); + initCamera(); + initStream(); + JAInter::SeMgr::startSeSequence(); + if (!field_0xe.flag1) { + JAInter::SequenceMgr::checkEntriedSeq(); + } + } } /* 8028FDC0-8028FE78 .text initHeap__8JAIBasicFv */ @@ -94,13 +120,20 @@ void JAIBasic::initResourcePath() { } /* 8028FFF8-8029002C .text setCameraInfo__8JAIBasicFP3VecP3VecPA4_fUl */ -void JAIBasic::setCameraInfo(Vec*, Vec*, f32(*)[4], u32) { - /* Nonmatching */ +void JAIBasic::setCameraInfo(Vec* param_1, Vec* param_2, MtxP param_3, u32 param_4) { + if (JAIGlobalParameter::audioCameraMax <= param_4) { + return; + } + mAudioCamera[param_4].field_0x0 = param_1; + mAudioCamera[param_4].field_0x4 = param_2; + mAudioCamera[param_4].field_0x8 = param_3; } /* 8029002C-80290068 .text initStream__8JAIBasicFv */ void JAIBasic::initStream() { - /* Nonmatching */ + if (!field_0xe.flag4) { + JAInter::StreamLib::init(field_0xe.flag5); + } } /* 80290068-80290090 .text setRegisterTrackCallback__8JAIBasicFv */ @@ -123,12 +156,32 @@ void JAIBasic::initAudioThread(JKRSolidHeap* param_1, u32 param_2, u8 param_3) { /* 8029011C-8029031C .text initCamera__8JAIBasicFv */ void JAIBasic::initCamera() { - /* Nonmatching */ + mAudioCamera = new (JAIBasic::getCurrentJAIHeap(), 0x20) JAInter::Camera[JAIGlobalParameter::audioCameraMax]; + JUT_ASSERT_MSG(291, mAudioCamera, "JAIBasic::initAllocParameter Cannot Alloc Heap!! (mAudioCamera)\n"); + if (!mAudioCamera->field_0x0) { + JAInter::Const::nullCamera.field_0x0->x = 0.0f; + JAInter::Const::nullCamera.field_0x0->y = 0.0f; + JAInter::Const::nullCamera.field_0x0->z = -50.0f; + JAInter::Const::nullCamera.field_0x4->x = 0.0f; + JAInter::Const::nullCamera.field_0x4->y = 0.0f; + JAInter::Const::nullCamera.field_0x4->z = -50.0f; + Vec local_2c; + local_2c.x = 0.0f; + local_2c.y = 1.0f; + local_2c.z = 0.0f; + Vec local_38; + local_38.x = JAInter::Const::dummyZeroVec.x; + local_38.y = JAInter::Const::dummyZeroVec.y; + local_38.z = JAInter::Const::dummyZeroVec.z; + C_MTXLookAt(JAInter::Const::camMtx, JAInter::Const::nullCamera.field_0x0, &local_2c, &local_38); + for (u32 i = 0; i < JAIGlobalParameter::audioCameraMax; i++) { + setCameraInfo(JAInter::Const::nullCamera.field_0x0, JAInter::Const::nullCamera.field_0x4, JAInter::Const::camMtx, i); + } + } } /* 80290330-8029046C .text initReadFile__8JAIBasicFv */ -bool JAIBasic::initReadFile() { - /* Nonmatching */ +BOOL JAIBasic::initReadFile() { switch (initLoadFileSw) { case 2: if (JAIInitData::checkInitDataFile()) {