mirror of
https://github.com/zeldaret/ss
synced 2026-07-02 12:05:54 -04:00
dSys: create() and execute() to 99% each
This commit is contained in:
+294
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user