dSys: create() and execute() to 99% each

This commit is contained in:
Sean Miller
2026-03-22 22:07:56 +00:00
parent dd1c8ac8c2
commit 2bcf403ea0
17 changed files with 511 additions and 63 deletions
+14 -14
View File
@@ -2822,10 +2822,10 @@ parseStageBzs__FiPCv = .text:0x80064070; // type:function size:0x7C
parseRoomBzs__FiPCv = .text:0x800640F0; // type:function size:0x70
parseRoomReactivateBzs__FiPCv = .text:0x80064160; // type:function size:0x70
parseRoomActivateBzs__FiPCv = .text:0x800641D0; // type:function size:0x7C
dSys_c__initAudioMgr = .text:0x80064250; // type:function size:0xB0
dSys_c__beginRender = .text:0x80064300; // type:function size:0x38
dSys_c__endRender = .text:0x80064340; // type:function size:0x18
dSys_c__beginFrame = .text:0x80064360; // type:function size:0x68
initAudioMgr__6dSys_cFPQ23EGG4Heap = .text:0x80064250; // type:function size:0xB0
beginRender__6dSys_cFv = .text:0x80064300; // type:function size:0x38
endRender__6dSys_cFv = .text:0x80064340; // type:function size:0x18
beginFrame__6dSys_cFv = .text:0x80064360; // type:function size:0x68
EGG__ConfigurationData__onBeginFrame = .text:0x800643D0; // type:function size:0x4
dSys_c__endFrame = .text:0x800643E0; // type:function size:0x48
EGG__ConfigurationData__onEndFrame = .text:0x80064430; // type:function size:0x4
@@ -2839,15 +2839,15 @@ setPosParam__Q23EGG14CoreControllerFff = .text:0x80064920; // type:function size
EGG__TSystem__initialize = .text:0x80064930; // type:function size:0x1F4
execute__6dSys_cFv = .text:0x80064B30; // type:function size:0x268
fixHeaps__7dSystemFv = .text:0x80064DA0; // type:function size:0xB8
dSystem__init = .text:0x80064E60; // type:function size:0x34
__sinit_\d_sys_cpp = .text:0x80064E60; // type:function size:0x34
EGG__ConfigurationData__initRenderMode = .text:0x80064EA0; // type:function size:0x4
getVideo = .text:0x80064EB0; // type:function size:0x8
getSystemHeap = .text:0x80064EC0; // type:function size:0x8
getDisplay = .text:0x80064ED0; // type:function size:0x8
getXfbManager = .text:0x80064EE0; // type:function size:0x8
getPerfView = .text:0x80064EF0; // type:function size:0x14
getSceneMgr = .text:0x80064F10; // type:function size:0x8
getAudioMgr = .text:0x80064F20; // type:function size:0x8
getVideo__Q23EGG123TSystem<Q23EGG5Video,Q23EGG7Display,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG15PerformanceView>Fv = .text:0x80064EB0; // type:function size:0x8
getSysHeap__Q23EGG123TSystem<Q23EGG5Video,Q23EGG7Display,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG15PerformanceView>Fv = .text:0x80064EC0; // type:function size:0x8
getDisplay__Q23EGG123TSystem<Q23EGG5Video,Q23EGG7Display,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG15PerformanceView>Fv = .text:0x80064ED0; // type:function size:0x8
getXfbMgr__Q23EGG123TSystem<Q23EGG5Video,Q23EGG7Display,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG15PerformanceView>Fv = .text:0x80064EE0; // type:function size:0x8
getPerfView__Q23EGG123TSystem<Q23EGG5Video,Q23EGG7Display,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG15PerformanceView>Fv = .text:0x80064EF0; // type:function size:0x14
getSceneMgr__Q23EGG123TSystem<Q23EGG5Video,Q23EGG7Display,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG15PerformanceView>Fv = .text:0x80064F10; // type:function size:0x8
getAudioMgr__Q23EGG123TSystem<Q23EGG5Video,Q23EGG7Display,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG15PerformanceView>Fv = .text:0x80064F20; // type:function size:0x8
fn_80064F30 = .text:0x80064F30; // type:function size:0x24
fn_80064F60 = .text:0x80064F60; // type:function size:0x2C
fn_80064F90 = .text:0x80064F90; // type:function size:0x30
@@ -17224,7 +17224,7 @@ my_vprintf__4sLibFPCcP16__va_list_struct = .text:0x802DEF90; // type:function si
printf__4sLibFPCce = .text:0x802DEFE0; // type:function size:0x80
OSReport = .text:0x802DF060; // type:function size:0x80 scope:global
OSVReport = .text:0x802DF0E0; // type:function size:0x4 scope:global
cCounter_c__clear = .text:0x802DF0F0; // type:function size:0x10
clear__10cCounter_cFv = .text:0x802DF0F0; // type:function size:0x10
__dt__24DynamicModuleControlBaseFv = .text:0x802DF100; // type:function size:0xA0
__ct__24DynamicModuleControlBaseFv = .text:0x802DF1A0; // type:function size:0x48
link__24DynamicModuleControlBaseFv = .text:0x802DF1F0; // type:function size:0x94
@@ -17283,7 +17283,7 @@ cM__rad2s = .text:0x802E0A50; // type:function size:0x5C
cM__U_GetAtanTable = .text:0x802E0AB0; // type:function size:0x34
atan2s__2cMFff = .text:0x802E0AF0; // type:function size:0x1BC
atan2f__2cMFff = .text:0x802E0CB0; // type:function size:0x48
cM__initRnd = .text:0x802E0D00; // type:function size:0x8
initRnd__2cMFl = .text:0x802E0D00; // type:function size:0x8
rnd__2cMFv = .text:0x802E0D10; // type:function size:0x8
rndInt__2cMFi = .text:0x802E0D20; // type:function size:0x58
rndF__2cMFf = .text:0x802E0D80; // type:function size:0x38
+11
View File
@@ -9,8 +9,19 @@ public:
return m_gameFrame;
}
static void IncrementGameFrame() {
m_gameFrame++;
}
static void IncrementUnkCounter() {
m_unkCounter++;
}
static void clear();
private:
static s32 m_gameFrame;
static s32 m_unkCounter;
};
#endif
+1 -1
View File
@@ -12,7 +12,7 @@ public:
typedef void (*MenuInitCallback)();
static void CreateInstance();
static void CreateInstance(EGG::Heap *);
static Manage_c *GetInstance();
Manage_c(EGG::Heap *);
+10 -10
View File
@@ -3,20 +3,20 @@
#include "egg/core/eggExpHeap.h"
class dHeap {
class dHeap : public EGG::Heap {
public:
EGG::ExpHeap *heap;
public:
static dHeap work1Heap;
static dHeap work2Heap;
static dHeap workExHeap;
static dHeap layoutHeap;
static dHeap layoutExHeap;
static dHeap layoutEx2Heap;
static dHeap layoutResHeap;
static dHeap fontHeap;
static dHeap HBMHeap;
static dHeap *work1Heap;
static dHeap *work2Heap;
static dHeap *workExHeap;
static dHeap *layoutHeap;
static dHeap *layoutExHeap;
static dHeap *layoutEx2Heap;
static dHeap *layoutResHeap;
static dHeap *fontHeap;
static dHeap *HBMHeap;
public:
EGG::ExpHeap *init(const char *name, size_t size, EGG::Heap *parent);
+4
View File
@@ -19,6 +19,10 @@ public:
static dBase_c *staticExecute();
static void setRootActor(fProfile::PROFILE_NAME_e rootActor, u32 params, s32 fadeInType, s32 fadeOutType);
static dFader_c *getFader() {
return &sFader;
}
protected:
static dFader_c sFader;
};
+13
View File
@@ -0,0 +1,13 @@
#ifndef D_STATE_H
#define D_STATE_H
namespace dState {
void fn_80062E40();
void fn_80062E50();
void fn_80062EB0();
bool fn_80062EC0();
}
#endif // D_STATE_H
+13
View File
@@ -3,10 +3,20 @@
#include "common.h"
#include "egg/core/eggHeap.h"
#include "egg/core/eggSystem.h"
#include "nw4r/ut/ut_Color.h"
class dSndMgr_c;
class dSys_c {
public:
static dSndMgr_c *initAudioMgr(EGG::Heap *heap);
static void beginRender();
static void endRender();
static void beginFrame();
static void endFrame();
static void setBlack(bool);
/* Frame rate values: 1 - 60fps, 2 - 30fps */
static void setFrameRate(u8);
@@ -17,12 +27,15 @@ public:
static void create();
static void execute();
static EGG::BaseSystem *ms_configuration_p;
static EGG::Heap *ms_RootHeapMem1;
static EGG::Heap *ms_RootHeapMem2;
};
namespace dSystem {
void fixHeaps();
};
#endif
+12
View File
@@ -0,0 +1,12 @@
#ifndef D_SYS_INIT_H
#define D_SYS_INIT_H
#include "s/s_Phase.hpp"
namespace dSystem {
extern sPhase_c myDylinkInitPhase;
}
#endif // D_SYS_INIT_H
+2
View File
@@ -80,6 +80,8 @@ public:
s32 getField_0xDE0() const;
bool getField_0xDFC() const;
void fn_80125E20();
void fn_80125EF0();
void fn_80152F10();
bool fn_80152F50() const;
bool fn_80152F60() const;
+115 -33
View File
@@ -2,64 +2,146 @@
#define EGG_SYSTEM_H
#include "common.h"
#include "egg/core/eggGraphicsFifo.h"
#include "egg/core/eggHeap.h"
#include "rvl/SC.h"
// Ported from https://github.com/snailspeed3/mkw/blob/master/lib/egg/core/eggSystem.hpp
namespace EGG {
class Display;
class XfbManager;
class Heap;
class PerformanceView;
class SceneManager;
class SimpleAudioMgr;
class Thread;
class Video;
class XfbManager;
class ConfigurationData {
class BaseSystem {
public:
// vtable at 0x0
static BaseSystem *sSystem;
public:
inline BaseSystem() : mSysHeapSize(0x97000), mGraphicsFifoSize(0x80000), mRenderMode(nullptr) {}
/* vt 0x08 */ virtual Video *getVideo() = 0;
/* vt 0x0C */ virtual Heap *getSystemHeap() = 0;
/* vt 0x0C */ virtual Heap *getSysHeap() = 0;
/* vt 0x10 */ virtual Display *getDisplay() = 0;
/* vt 0x14 */ virtual XfbManager *getXfbMgr() = 0;
/* vt 0x18 */ virtual void getPerfView() = 0;
/* vt 0x1C */ virtual void getScnMgr() = 0;
/* vt 0x20 */ virtual void getAudioMgr() = 0;
/* vt 0x18 */ virtual PerformanceView *getPerfView() = 0;
/* vt 0x1C */ virtual SceneManager *getSceneMgr() = 0;
/* vt 0x20 */ virtual SimpleAudioMgr *getAudioMgr() = 0;
/* vt 0x24 */ virtual void onBeginFrame();
/* vt 0x28 */ virtual void onEndFrame();
/* vt 0x2C */ virtual void initRenderMode();
/* vt 0x30 */ virtual void initMemory();
/* vt 0x34 */ virtual void run();
/* vt 0x38 */ virtual void initialize() = 0;
public:
/* 0x04 */ u32 mRoot1HeapStart;
/* 0x08 */ u32 mRoot1HeapEnd;
/* 0x0C */ u32 mRoot2HeapStart;
/* 0x10 */ u32 mRoot2HeapEnd;
/* 0x14 */ u32 mMemSize;
/* 0x04 */ void *mMEM1ArenaLo;
/* 0x08 */ void *mMEM1ArenaHi;
/* 0x0C */ void *mMEM2ArenaLo;
/* 0x10 */ void *mMEM2ArenaHi;
/* 0x14 */ u32 mMemorySize;
/* 0x18 */ Heap *mRootHeapMem1;
/* 0x1C */ Heap *mRootHeapMem2;
/* 0x20 */ Heap *mRootHeapDebug;
/* 0x24 */ Heap *mSystemHeap;
/* 0x28 */ Thread *mSystemThread;
/* 0x2C */ u32 field_0x2C;
/* 0x30 */ u32 mSystemHeapStart;
/* 0x34 */ u32 mSystemHeapSize;
/* 0x24 */ Heap *mSysHeap;
/* 0x28 */ Thread *mThread;
/* 0x2C */ void *_2c;
/* 0x30 */ void *_30;
/* 0x34 */ u32 mSysHeapSize;
/* 0x38 */ u32 mGraphicsFifoSize;
/* 0x3C */ u32 field_0x3C;
};
class BaseSystem {
public:
static ConfigurationData *mConfigData;
static XfbManager *getXfbMgr() {
return mConfigData->getXfbMgr();
}
static Display *getDisplay() {
return mConfigData->getDisplay();
}
static Video *getVideo() {
return mConfigData->getVideo();
}
/* 0x3C */ GXRenderModeObj *mRenderMode;
};
template <class TVideo, class TDisplay, class TXfbManager, class TAudioManager, class TSceneManager, class TPerfView>
class TSystem : ConfigurationData {};
template <class tVideo, class tDisplay, class tXfbMgr, class tAudioMgr, class tSceneMgr, class tPerfView>
class TSystem : public BaseSystem {
public:
inline TSystem() : BaseSystem() {}
Video *getVideo() override {
return static_cast<Video *>(mVideo);
}
Heap *getSysHeap() override {
return mSysHeap;
}
Display *getDisplay() override {
return static_cast<Display *>(mDisplay);
}
XfbManager *getXfbMgr() override {
return static_cast<XfbManager *>(mXfbMgr);
}
PerformanceView *getPerfView() override {
return static_cast<PerformanceView *>(mPerfView);
}
SceneManager *getSceneMgr() override {
return static_cast<SceneManager *>(mSceneMgr);
}
SimpleAudioMgr *getAudioMgr() override {
return static_cast<SimpleAudioMgr *>(mAudioMgr);
}
void onBeginFrame() override {}
void onEndFrame() override {}
void initRenderMode() override {}
void initialize() override {
// DVDInit();
// SCInit();
// initMemory();
// initRenderMode();
// GraphicsFifo::create(mGraphicsFifoSize, nullptr);
// mVideo = new tVideo(mRenderMode, nullptr);
// mXfbMgr = new tXfbMgr(nullptr);
// for (int i = 0; i < 2; ++i) {
// mXfbMgr->attach(new Xfb(mRootHeapMem2));
// }
// mDisplay = new tDisplay(1);
// Thread::initialize();
// mThread = new Thread(OSGetCurrentThread(), 4);
// mPerfView = new tPerfView(true);
// DvdFile::initialize();
// CoreControllerMgr::createStaticInstance();
// GCControllerMgr::createStaticInstance();
// Exception_create(0x40, 0x20, 4, nullptr, 1);
// mSceneMgr = new tSceneMgr(nullptr);
// mRootHeapMem1->becomeCurrentHeap();
// mAudioMgr = new tAudioMgr();
}
public:
/* 0x40 */ tAudioMgr *mAudioMgr;
/* 0x44 */ tVideo *mVideo;
/* 0x48 */ tXfbMgr *mXfbMgr;
/* 0x4c */ tDisplay *mDisplay;
/* 0x50 */ tPerfView *mPerfView;
/* 0x54 */ tSceneMgr *mSceneMgr;
};
} // namespace EGG
+3 -2
View File
@@ -9,10 +9,11 @@
// Note: names are taken from NSMBW where available but a lot are made up
void unk_initDecompressors();
namespace mDvd {
void unk_initDecompressors();
void setAutoStreamDecomp(bool arg);
extern void *somePtr;
class UncompressInfo_c {
@@ -0,0 +1,8 @@
#ifndef ARC_CALLBACK_HANDLER_H
#define ARC_CALLBACK_HANDLER_H
#include "common.h"
void *ArcCallbackHandlerCreate(u32);
#endif // ARC_CALLBACK_HANDLER_H
+4
View File
@@ -25,6 +25,10 @@ bool isOnScreen(const mVec3_c &worldPos);
void screenToWorld(mVec3_c &result, const mVec3_c &screenPos);
void createLightTextures();
void fn_80016860();
void clearList();
void fn_80017500();
class AnmMdlWrapper : public m3d::mdlAnmChr {
public:
AnmMdlWrapper();
+2
View File
@@ -17,6 +17,8 @@ public:
return field_0x30;
}
static void fn_80190780(EGG::Heap *heap);
void fn_801907C0();
s64 fn_801907D0();
void fn_801907F0();
void fn_801909A0();
+1 -1
View File
@@ -40,8 +40,8 @@ void main(int argc, char **argv) {
OSPriority curPrio = OSGetThreadPriority(curThread);
OSCreateThread(&MAIN_THREAD, dMain::main01, nullptr, &pStackBase[STACK_SIZE], STACK_SIZE, curPrio, 0);
OSResumeThread(&MAIN_THREAD);
OSSetThreadPriority(curThread, 31);
OSSuspendThread(curThread);
}
+294
View File
@@ -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();
}
+4 -2
View File
@@ -1,3 +1,5 @@
#include "toBeSorted/arc_callback_handler.h"
#include "d/col/bg/d_bg_s.h"
#include "d/col/bg/d_bg_w_kcol.h"
#include "d/d_rawarchive.h"
@@ -17,8 +19,8 @@ ArcCallbackHandler ArcCallbackHandler::sInstance;
#define NAME_OARC 'oarc'
#define NAME_RARC 'rarc'
u32 ArcCallbackHandlerCreate(u32) {
return 0;
void *ArcCallbackHandlerCreate(u32) {
return nullptr;
}
void BindSystemModelsAndLighting(nw4r::g3d::ResFile file) {