summaryrefslogtreecommitdiff
path: root/src/d/d_sys.cpp
diff options
context:
space:
mode:
authorSean Miller <seanmiller999@gmail.com>2026-03-22 22:07:56 +0000
committerSean Miller <seanmiller999@gmail.com>2026-03-22 22:07:56 +0000
commit2bcf403ea0c86dbdcb0ded8c81984741aadb08f7 (patch)
tree56d21b0095edbb250081e9cd00f2dd6eb8d43de9 /src/d/d_sys.cpp
parentdd1c8ac8c2ff91e84272fc2187a5213fef481def (diff)
dSys: create() and execute() to 99% each
Diffstat (limited to 'src/d/d_sys.cpp')
-rw-r--r--src/d/d_sys.cpp294
1 files changed, 294 insertions, 0 deletions
diff --git a/src/d/d_sys.cpp b/src/d/d_sys.cpp
index e69de29b..fe5a4281 100644
--- a/src/d/d_sys.cpp
+++ b/src/d/d_sys.cpp
@@ -0,0 +1,294 @@
+#include "c/c_counter.h"
+#include "c/c_math.h"
+#include "d/d_cursor_hit_check.h"
+#include "d/d_dvd.h"
+#include "d/d_dvd_unk.h"
+#include "d/d_gfx.h"
+#include "d/d_hbm.h"
+#include "d/d_heap.h"
+#include "d/d_heap_alloc.h"
+#include "d/d_pad.h"
+#include "d/d_reset.h"
+#include "d/d_scene.h"
+#include "d/d_state.h"
+#include "d/d_sys.h"
+#include "d/d_sys_init.h"
+#include "d/flag/flag_managers.h"
+#include "d/lyt/d_lyt_battery.h"
+#include "d/lyt/d_lyt_system_window.h"
+#include "d/snd/d_snd_mgr.h"
+#include "egg/core/eggExpHeap.h"
+#include "egg/core/eggAssertHeap.h"
+#include "egg/core/eggSystem.h"
+#include "egg/core/eggVideo.h"
+#include "f/f_manager.h"
+#include "m/m_dvd.h"
+#include "m/m_heap.h"
+#include "m/m_pad.h"
+#include "m/m_video.h"
+#include "m/m3d/m3d.h"
+#include "nw4r/ut/ut_Color.h"
+#include "toBeSorted/arc_callback_handler.h"
+#include "toBeSorted/d_d3d.h"
+#include "toBeSorted/file_manager.h"
+#include "toBeSorted/nand_request_thread.h"
+#include "toBeSorted/save_manager.h"
+#include "toBeSorted/unk_save_time.h"
+#include "toBeSorted/arc_managers/current_stage_arc_manager.h"
+#include "toBeSorted/arc_managers/layout_arc_manager.h"
+#include "toBeSorted/arc_managers/oarc_manager.h"
+
+#include "rvl/OS.h"
+
+EGG::TSystem<EGG::Video, EGG::Display, EGG::XfbManager, EGG::SimpleAudioMgr, EGG::SceneManager, EGG::PerformanceView> SysConfig;
+
+void dSys_c::setBlack(bool on) {
+
+ EGG::Video *video = EGG::BaseSystem::sSystem->getVideo();
+
+ if (video->mFlag.onBit(0) != on) {
+ create();
+ }
+}
+
+char *dummy = "オーディオヒープ"; // "Audio heap"
+extern u32 lbl_80574FA0;
+extern u32 lbl_80574FA4;
+
+void dSys_c::create() {
+ EGG::Heap *pRootHeapMem1;
+ EGG::Heap *pRootHeapMem2;
+ EGG::Heap *pCmdHeap;
+ EGG::Heap *pExpHeap;
+
+ dHeapAllocator::initCallbacks();
+
+ ms_configuration_p = &SysConfig;
+ EGG::BaseSystem::sSystem = &SysConfig;
+
+ ms_configuration_p->initialize();
+
+ pRootHeapMem1 = EGG::BaseSystem::sSystem->mRootHeapMem1;
+ ms_RootHeapMem1 = mHeap::createExpHeap(-1, pRootHeapMem1, "dSys_c::RootHeapMEM1", 32, mHeap::OPT_4);
+ pRootHeapMem1->mFlag.setBit(0);
+
+ pRootHeapMem2 = EGG::BaseSystem::sSystem->mRootHeapMem2;
+ ms_RootHeapMem2 = mHeap::createExpHeap(-1, pRootHeapMem2, "dSys_c::RootHeapMEM2", 32, mHeap::OPT_4);
+ pRootHeapMem2->mFlag.setBit(0);
+
+ EGG::Heap *heapMem1 = ms_RootHeapMem1;
+ EGG::Heap *heapMem2 = ms_RootHeapMem2;
+
+ mVideo::create();
+
+ mHeap::createDylinkHeap(0x1c8000, heapMem1);
+ mHeap::createGameHeap1(0x250000, heapMem1);
+ dHeap::createLayoutHeap(0x1e0000, heapMem1);
+ mHeap::createCommandHeap(0x8000, heapMem1);
+ dHeap::createWork1Heap(0x4c8000, heapMem1);
+ dHeap::createWorkExHeap(0x480000, heapMem1);
+ dHeap::createLayoutExHeap(0xc8000, heapMem2);
+ dHeap::createLayoutEx2Heap(0x38000, heapMem1);
+ mHeap::createArchiveHeap(0xb85000, heapMem2);
+ dHeap::createLayoutResHeap(0x4e7000, heapMem2);
+ dHeap::createWork2Heap(0xb08000, heapMem2);
+
+ pExpHeap = EGG::ExpHeap::create(0x40000, mHeap::g_gameHeaps[0], 0);
+ pExpHeap->setName("システムcreateヒープ"); // "system create heap"
+
+ mHeap::setCurrentHeap(mHeap::g_assertHeap);
+
+ {
+ mHeap heap(pExpHeap);
+ dPad::create();
+ }
+
+ dPad::fn_80059620();
+
+ mPad::beginPad();
+ mPad::g_currentCore->setPosParam(0.1f, 1.0f);
+ mPad::endPad();
+
+ {
+ mHeap heap(pExpHeap);
+ for (int i = 0; i < WPAD_MAX_CONTROLLERS; i++) {
+ mPad::g_padMg->getNthController(i)->createRumbleMgr(4);
+ }
+ }
+
+ cM::initRnd(OSGetTick());
+
+ dGfx_c::create(pExpHeap);
+
+ {
+ mHeap heap(pExpHeap);
+ dScene_c::getFader()->create();
+ }
+
+ dDvdUnk::FontUnk::create(pExpHeap);
+ FileManager::create(pExpHeap);
+ SaveMgr::create(pExpHeap);
+ setupFlagManagers(pExpHeap);
+ dCsMgr_c::create(pExpHeap);
+
+ lbl_80574FA0 = 0;
+ lbl_80574FA4 = 0;
+
+ cCounter_c::clear();
+
+ dDvd::create(OSGetThreadPriority(OSGetCurrentThread()) - 1, mHeap::g_commandHeap, mHeap::g_archiveHeap, pExpHeap);
+ mDvd::unk_initDecompressors();
+ mDvd::setAutoStreamDecomp(true);
+
+ void *p_buf = mHeap::g_gameHeaps[0]->alloc(0x4000, 32);
+ pCmdHeap = mHeap::g_commandHeap;
+ NandRequestThread::create(
+ OSGetThreadPriority(OSGetCurrentThread()) - 2,
+ pCmdHeap,
+ p_buf,
+ 0x4000,
+ ArcCallbackHandlerCreate(2),
+ pExpHeap);
+
+ dReset::Manage_c::CreateInstance(heapMem2);
+
+ dHeap::createHBMHeap(0x180000, heapMem2);
+ dHbm::Manage_c::CreateInstance(dHeap::HBMHeap);
+
+ initAudioMgr(heapMem1);
+
+ dSndMgr_c::GetInstance()->setup(heapMem2, 0x1000000);
+
+ dHeap::createFontHeap(0xfa000, heapMem2);
+
+ heapMem1->mFlag.setBit(0);
+ heapMem2->mFlag.setBit(0);
+
+ dScene_c::staticCreate();
+
+ CurrentStageArcManager::create(pExpHeap);
+ OarcManager::create(pExpHeap);
+ LayoutArcManager::create(pExpHeap);
+
+ setFrameRate(1);
+ nw4r::ut::Color clearColor(nw4r::ut::Color::BLACK);
+ setClearColor(clearColor);
+
+ SaveTimeRelated::fn_80190780(pExpHeap);
+
+ pExpHeap->mFlag.setBit(0);
+ pExpHeap->adjust();
+
+ mHeap::setCurrentHeap(mHeap::g_gameHeaps[0]);
+}
+
+void dSys_c::execute() {
+ beginFrame();
+
+ if (dState::fn_80062EC0()) {
+ dPad::beginPad_BR();
+ dPad::fn_80059630();
+ }
+
+ beginRender();
+ d3d::fn_80016860();
+
+ dDvdUnk::FontUnk::GetInstance()->preExecute();
+
+ bool isAnyError = dDvdUnk::FontUnk::GetInstance()->isAnyError();
+ if (isAnyError) {
+ if (dState::fn_80062EC0()) {
+ dHbm::Manage_c::GetInstance()->Calculate();
+ dReset::Manage_c::GetInstance()->Calculate();
+ dDvdUnk::FontUnk::GetInstance()->execute();
+ }
+
+ dDvdUnk::FontUnk::GetInstance()->drawNonDriveError();
+
+ if (dLytSystemWindow_c::GetInstance()) {
+ dLytSystemWindow_c::GetInstance()->fn_80125EF0();
+ }
+
+ SaveMgr::GetInstance()->draw();
+ dDvdUnk::FontUnk::GetInstance()->drawDriveError();
+ dReset::Manage_c::GetInstance()->Draw();
+ dHbm::Manage_c::GetInstance()->DrawMenu(0);
+ }
+ else {
+ dHbm::Manage_c::GetInstance()->DrawMenu(1);
+
+ if (dHbm::Manage_c::GetInstance()->getState() == dHbm::Manage_c::HBM_MANAGE_ACTIVE) {
+ if (dState::fn_80062EC0()) {
+ dHbm::Manage_c::GetInstance()->Calculate();
+ }
+ }
+ else {
+ dGfx_c::GetInstance()->drawBefore();
+ m3d::drawDone(0);
+ dScene_c::getFader()->draw();
+ dGfx_c::GetInstance()->drawLetterbox();
+ dLytBattery_c::draw();
+ dDvdUnk::FontUnk::GetInstance()->execute();
+
+ if (dLytSystemWindow_c::GetInstance()) {
+ dLytSystemWindow_c::GetInstance()->fn_80125EF0();
+ }
+
+ SaveMgr::GetInstance()->draw();
+
+ if (dState::fn_80062EC0()) {
+ dHbm::Manage_c::GetInstance()->Calculate();
+ }
+ }
+
+ if (dState::fn_80062EC0()) {
+ dReset::Manage_c::GetInstance()->Calculate();
+ }
+ dReset::Manage_c::GetInstance()->Draw();
+ }
+
+ dHbm::Manage_c::GetInstance()->DrawIcon();
+ endRender();
+ dState::fn_80062EB0();
+ dState::fn_80062E40();
+ dState::fn_80062E50();
+
+ if (!isAnyError &&
+ dHbm::Manage_c::GetInstance()->getState() != dHbm::Manage_c::HBM_MANAGE_ACTIVE)
+ {
+ if (dSystem::myDylinkInitPhase.callMethod(nullptr) == 2) {
+ if (dState::fn_80062EC0()) {
+ dScene_c::staticExecute();
+ }
+ fManager_c::mainLoop();
+ }
+
+ if (dState::fn_80062EC0()) {
+ dScene_c::getFader()->calc();
+ }
+ }
+
+ SaveMgr::GetInstance()->execute();
+
+ if (dLytSystemWindow_c::GetInstance()) {
+ dLytSystemWindow_c::GetInstance()->fn_80125E20();
+ }
+
+ dSndMgr_c::GetInstance()->calc();
+ SaveTimeRelated::GetInstance()->fn_801907C0();
+
+ if (dState::fn_80062EC0()) {
+ cCounter_c::IncrementGameFrame();
+ cCounter_c::IncrementUnkCounter();
+ }
+
+ m3d::calcWorld(0);
+ d3d::fn_80017500();
+ d3d::clearList();
+
+ if (dState::fn_80062EC0()) {
+ dPad::endPad_BR();
+ }
+
+ endFrame();
+}