Files
tp/src/m_Do/m_Do_main.cpp
T
TakaRikka 7d271be857 m_Do cleanup, d_resource, drawlist stuff (#145)
* d_resource / some d_stage

* setup dDlst_list_c / d_select_icon OK

* JUTXfb / some JUTVideo + various

* some J2D classes / JUTVideo/Fader attempts

* bunch of m_Do cleanup + matches / f_ap_game OK

* mDoLib_clipper::setup OK

* most of d_meter_HIO OK

* pane_class / kantera_icon_meter
2021-09-24 11:11:10 -04:00

982 lines
34 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//
// Generated By: dol2asm
// Translation Unit: m_Do/m_Do_main
//
#include "m_Do/m_Do_main.h"
#include "JSystem/JFramework/JFWSystem.h"
#include "JSystem/JKernel/JKRAram.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JUtility/JUTReport.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_ap/f_ap_game.h"
#include "m_Do/m_Do_MemCard.h"
#include "m_Do/m_Do_Reset.h"
#include "m_Do/m_Do_controller_pad.h"
#include "m_Do/m_Do_dvd_thread.h"
#include "m_Do/m_Do_graphic.h"
#include "msl_c/string.h"
//
// Types:
//
struct DynamicModuleControlBase {
/* 80262470 */ void dump();
};
//
// Forward References:
//
extern "C" void version_check__Fv();
extern "C" void CheckHeap1__9HeapCheckFv();
extern "C" static void CheckHeap__FUl();
extern "C" static void countUsed__FP10JKRExpHeap();
extern "C" void getUsedCount__9HeapCheckCFv();
extern "C" void heapDisplay__9HeapCheckCFv();
extern "C" static void debugDisplay__Fv();
extern "C" static void Debug_console__FUl();
extern "C" void* LOAD_COPYDATE__FPv();
extern "C" static void debug__Fv();
extern "C" static void main01__Fv();
extern "C" void main();
extern "C" bool dump_sort__7JKRHeapFv();
extern "C" void __sinit_m_Do_main_cpp();
extern "C" extern char const* const m_Do_m_Do_main__stringBase0;
extern "C" u8 COPYDATE_STRING__7mDoMain[18 + 2 /* padding */];
extern "C" u32 memMargin__7mDoMain;
extern "C" u8 sPowerOnTime__7mDoMain[4];
extern "C" u8 sHungUpTime__7mDoMain[4];
extern "C" extern u8 data_80450B38[4];
extern "C" extern u8 data_80450B3C[4];
extern "C" extern u8 data_80450B40[4];
extern "C" extern u8 data_80450B44[4];
extern "C" extern u8 data_80450B48[4];
extern "C" extern u8 data_80450B4C[4];
extern "C" extern u8 data_80450B50[4];
extern "C" extern u8 data_80450B54[4];
extern "C" extern u8 data_80450B58[4];
extern "C" extern u8 data_80450B5C[4];
extern "C" extern u8 data_80450B60[4];
extern "C" extern u8 data_80450B64[4];
extern "C" extern u8 data_80450B68[4];
extern "C" extern u8 data_80450B6C[4];
extern "C" extern u8 data_80450B70[4];
extern "C" extern u8 data_80450B74[4];
extern "C" extern u8 data_80450B78[4];
extern "C" extern u8 data_80450B7C[4];
extern "C" extern u8 data_80450B80[4];
extern "C" extern u8 data_80450B84[4];
extern "C" extern u8 data_80450B88[4];
extern "C" extern u8 data_80450B8C[4];
extern "C" extern u8 data_80450B90[4 + 4 /* padding */];
extern "C" extern u8 struct_80450B98[4];
extern "C" extern u8 data_80450B9C[4];
//
// External References:
//
extern "C" void OSReportInit__Fv();
extern "C" void mDoAud_Execute__Fv();
extern "C" void create__8mDoCPd_cFv();
extern "C" void read__8mDoCPd_cFv();
extern "C" void mDoGph_Create__Fv();
extern "C" void mDoMch_HeapCheckAll__Fv();
extern "C" void mDoMch_Create__Fv();
extern "C" void mDoExt_getGameHeap__Fv();
extern "C" void mDoExt_getZeldaHeap__Fv();
extern "C" void mDoExt_getCommandHeap__Fv();
extern "C" void mDoExt_getArchiveHeap__Fv();
extern "C" void mDoExt_getJ2dHeap__Fv();
extern "C" void mDoExt_getHostIOHeap__Fv();
extern "C" void create__20mDoDvdThd_callback_cFPFPv_PvPv();
extern "C" void update__15mDoMemCd_Ctrl_cFv();
extern "C" void cDyl_InitAsync__Fv();
extern "C" void fapGm_Execute__Fv();
extern "C" void fapGm_Create__Fv();
extern "C" void fopAcM_initManager__Fv();
extern "C" void ct__13dComIfG_inf_cFv();
extern "C" void dump__14dRes_control_cFv();
extern "C" void dump__24DynamicModuleControlBaseFv();
extern "C" void getFreeSize__7JKRHeapFv();
extern "C" void getTotalFreeSize__7JKRHeapFv();
extern "C" void getTotalUsedSize__10JKRExpHeapCFv();
extern "C" void create__12JKRSolidHeapFUlP7JKRHeapb();
extern "C" void getFreeSize__11JKRAramHeapFv();
extern "C" void getTotalFreeSize__11JKRAramHeapFv();
extern "C" void dump__11JKRAramHeapFv();
extern "C" void JUTReport__FiiPCce();
extern "C" void JUTReport__FiiiPCce();
extern "C" void setMessageCount__12JUTAssertionFi();
extern "C" void clear__10JUTConsoleFv();
extern "C" void dumpToTerminal__10JUTConsoleFUi();
extern "C" void scroll__10JUTConsoleFi();
extern "C" void getLineOffset__10JUTConsoleCFv();
extern "C" void _savegpr_23();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _restgpr_23();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" u8 m_gamePad__8mDoCPd_c[16];
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
extern "C" extern JKRSolidHeap* g_mDoAud_audioHeap;
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
extern "C" extern u8 struct_80450C80[8];
extern "C" u8 systemConsole__9JFWSystem[4];
extern "C" u8 sSystemHeap__7JKRHeap[4];
extern "C" u8 sCurrentHeap__7JKRHeap[4];
extern "C" u8 sRootHeap__7JKRHeap[4];
extern "C" u8 sAramObject__7JKRAram[4];
//
// Declarations:
//
void version_check() {
if (!strcmp("20Apr2004", "20Apr2004") && !strcmp("Patch2", "Patch2")) {
return;
}
// "SDK version doesn't match. Stopping\n"
OSReport_Error("SDKのバージョンが一致しません。停止します\n");
do {
} while (true);
}
void HeapCheck::CheckHeap1() {
s32 totalUsedSize = mHeap->getTotalUsedSize();
s32 freeSize = mHeap->getFreeSize();
if (mMaxTotalUsedSize < totalUsedSize) {
mMaxTotalUsedSize = totalUsedSize;
}
if (mMaxTotalFreeSize > freeSize) {
mMaxTotalFreeSize = freeSize;
}
}
/* ############################################################################################## */
/* 803D32E0-803D3308 000000 0028+00 3/2 0/0 0/0 .bss RootHeapCheck */
extern "C" HeapCheck RootHeapCheck;
/* 803D3308-803D3330 000028 0028+00 1/2 0/0 0/0 .bss SystemHeapCheck */
extern "C" HeapCheck SystemHeapCheck;
/* 803D3330-803D3358 000050 0028+00 1/2 0/0 0/0 .bss ZeldaHeapCheck */
extern "C" HeapCheck ZeldaHeapCheck;
/* 803D3358-803D3380 000078 0028+00 1/2 0/0 0/0 .bss GameHeapCheck */
extern "C" HeapCheck GameHeapCheck;
/* 803D3380-803D33A8 0000A0 0028+00 1/2 0/0 0/0 .bss ArchiveHeapCheck */
extern "C" HeapCheck ArchiveHeapCheck;
/* 803D33A8-803D33D0 0000C8 0028+00 1/2 0/0 0/0 .bss J2dHeapCheck */
extern "C" HeapCheck J2dHeapCheck;
/* 803D33D0-803D33F8 0000F0 0028+00 1/2 0/0 0/0 .bss HostioHeapCheck */
extern "C" HeapCheck HostioHeapCheck;
/* 803D33F8-803D3420 000118 0028+00 1/2 0/0 0/0 .bss CommandHeapCheck */
extern "C" HeapCheck CommandHeapCheck;
/* 803A2EE0-803A2EF4 000000 0012+02 2/2 1/1 0/0 .data COPYDATE_STRING__7mDoMain */
SECTION_DATA char mDoMain::COPYDATE_STRING[18] = "??/??/?? ??:??:??";
/* 803A2EF4-803A2F14 -00001 0020+00 1/2 0/0 0/0 .data HeapCheckTable */
SECTION_DATA static HeapCheck* HeapCheckTable[8] = {
&RootHeapCheck, &SystemHeapCheck, &ZeldaHeapCheck, &GameHeapCheck,
&ArchiveHeapCheck, &J2dHeapCheck, &HostioHeapCheck, &CommandHeapCheck,
};
/* 803D32E0-803D3308 000000 0028+00 3/2 0/0 0/0 .bss RootHeapCheck */
static HeapCheck RootHeapCheck;
/* 803D3308-803D3330 000028 0028+00 1/2 0/0 0/0 .bss SystemHeapCheck */
static HeapCheck SystemHeapCheck;
/* 803D3330-803D3358 000050 0028+00 1/2 0/0 0/0 .bss ZeldaHeapCheck */
static HeapCheck ZeldaHeapCheck;
/* 803D3358-803D3380 000078 0028+00 1/2 0/0 0/0 .bss GameHeapCheck */
static HeapCheck GameHeapCheck;
/* 803D3380-803D33A8 0000A0 0028+00 1/2 0/0 0/0 .bss ArchiveHeapCheck */
static HeapCheck ArchiveHeapCheck;
/* 803D33A8-803D33D0 0000C8 0028+00 1/2 0/0 0/0 .bss J2dHeapCheck */
static HeapCheck J2dHeapCheck;
/* 803D33D0-803D33F8 0000F0 0028+00 1/2 0/0 0/0 .bss HostioHeapCheck */
static HeapCheck HostioHeapCheck;
/* 803D33F8-803D3420 000118 0028+00 1/2 0/0 0/0 .bss CommandHeapCheck */
static HeapCheck CommandHeapCheck;
/* 8000578C-80005848 0000CC 00BC+00 1/1 0/0 0/0 .text CheckHeap__FUl */
void CheckHeap(u32 i_padNo) {
mDoMch_HeapCheckAll__Fv();
OSCheckActiveThreads();
bool comboCheck = false;
// if L + R + Z is pressed...
if ((mDoCPd_c::getHold(i_padNo) & ~CButton::Z) == (CButton::L + CButton::R) &&
mDoCPd_c::getTrig(i_padNo) & CButton::Z) {
comboCheck = true;
}
int unk2 = comboCheck;
for (int i = 0; i < 8; i++) {
HeapCheckTable[i]->CheckHeap1();
if (unk2) {
HeapCheckTable[i]->saveRelBase();
}
}
}
static int countUsed(JKRExpHeap* heap) {
OSDisableScheduler();
int counter = 0;
JKRExpHeap::CMemBlock* used_blocks_head = heap->getHeadUsedList();
while (used_blocks_head) {
used_blocks_head = used_blocks_head->getNextBlock();
counter++;
};
OSEnableScheduler();
return counter;
}
s32 HeapCheck::getUsedCount() const {
return countUsed(mHeap);
}
void HeapCheck::heapDisplay() const {
s32 heap_size = mHeap->getSize();
s32 used_count = heap_size - mTargetHeapSize;
s32 total_used_size = mHeap->getTotalUsedSize();
s32 total_free_size = mHeap->getTotalFreeSize();
s32 heap_free_size = mHeap->getFreeSize();
JUTReport(0x64, 0xd4, "[%sName]", mName);
JUTReport(0x64, 0xe3, "HeapSize %8ld", heap_size);
JUTReport(0x64, 0xf0, "TargetHeapSize %8ld", mTargetHeapSize);
JUTReport(0x64, 0xfd, "TotalFree %8ld", total_free_size - used_count);
JUTReport(0x64, 0x10a, "FreeSize %8ld", heap_free_size - used_count);
JUTReport(0x64, 0x117, "TotalUsedSize %8ld", total_used_size);
JUTReport(0x64, 0x124, "TotalUsedRate %3ld%%",
(int)(total_used_size * 0x64) / (int)mTargetHeapSize);
JUTReport(0x64, 0x131, "MaxTotalUsedSize %8ld", mMaxTotalUsedSize);
JUTReport(0x64, 0x13e, "MaxTotalUsedRate %3ld%%",
(mMaxTotalUsedSize * 0x64) / (int)mTargetHeapSize);
JUTReport(0x64, 0x14b, "MinFreeSize %8ld", mMaxTotalFreeSize - used_count);
JUTReport(0x64, 0x158, "MinFreeRate %3ld%%",
((mMaxTotalFreeSize - used_count) * 0x64) / (int)mTargetHeapSize);
used_count = countUsed(mHeap);
JUTReport(0x64, 0x165, "UsedCount %3ld%", used_count);
}
/* ############################################################################################## */
/* 803739A0-803739A0 000000 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80373AEF = "";
SECTION_DEAD static char const* const stringBase_80373AF0 = "TotalFree";
SECTION_DEAD static char const* const stringBase_80373AFA = "MaxUsed ";
SECTION_DEAD static char const* const stringBase_80373B04 = "Used ";
SECTION_DEAD static char const* const stringBase_80373B0E = "RelUsed ";
SECTION_DEAD static char const* const stringBase_80373B18 = "/ MaxFree";
SECTION_DEAD static char const* const stringBase_80373B22 = "/HeapSize";
SECTION_DEAD static char const* const stringBase_80373B2C = "Blk/Bytes";
SECTION_DEAD static char const* const stringBase_80373B36 = "ARAM Free";
SECTION_DEAD static char const* const stringBase_80373B40 = "%d";
SECTION_DEAD static char const* const stringBase_80373B43 = "%s";
SECTION_DEAD static char const* const stringBase_80373B46 = " [%s]";
SECTION_DEAD static char const* const stringBase_80373B4C = "%10d";
#pragma pop
/* 803A2F14-803A2F28 -00001 0014+00 0/1 0/0 0/0 .data desc1$3717 */
#pragma push
#pragma force_active on
SECTION_DATA static char* desc1[5] = {
"", "TotalFree", "MaxUsed ", "Used ", "RelUsed ",
};
#pragma pop
/* 803A2F28-803A2F40 -00001 0014+04 0/1 0/0 0/0 .data desc2$3718 */
#pragma push
#pragma force_active on
SECTION_DATA static char* desc2[5] = {
"", "/ MaxFree", "/HeapSize", "Blk/Bytes", "Blk/Bytes",
};
#pragma pop
/* 80450580-80450584 000000 0004+00 3/3 6/6 0/0 .sdata None */
SECTION_SDATA s8 data_80450580 = 0xFF;
/* 80450584-80450588 000004 0004+00 0/0 1/1 0/0 .sdata memMargin__7mDoMain */
SECTION_SDATA u32 mDoMain::memMargin = 0xFFFFFFFF;
/* 80450588-80450590 000008 0008+00 2/2 0/0 0/0 .sdata None */
// 0x04 is mDoMain::mHeapBriefType
SECTION_SDATA static u8 data_80450588[8] = {
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80450B00-80450B08 000000 0008+00 1/1 0/0 0/0 .sbss None */
static u8 data_80450B00;
/* 80450B08-80450B0C 000008 0004+00 1/1 1/1 0/0 .sbss sPowerOnTime__7mDoMain */
OSTime mDoMain::sPowerOnTime;
/* 80450B10-80450B14 000010 0004+00 0/0 2/2 0/0 .sbss sHungUpTime__7mDoMain */
OSTime mDoMain::sHungUpTime;
/* 80450B18-80450B1C -00001 0004+00 3/3 0/0 0/0 .sbss None */
/* 80450B18 0001+00 data_80450B18 None */
/* 80450B19 0001+00 data_80450B19 None */
/* 80450B1A 0002+00 data_80450B1A None */
static u8 struct_80450B18[2];
static u8 data_80450B1A;
static u8 data_80450B1B;
/* 80005AD8-80005D4C 000418 0274+00 1/1 0/0 0/0 .text debugDisplay__Fv */
#ifdef NONMATCHING
void debugDisplay(void) {
int tmp1;
int tmp2;
if (struct_80450B18[1] >= 1 && struct_80450B18[1] <= 6) {
HeapCheckTable[struct_80450B18[1]]->heapDisplay();
}
if (data_80450588[0] == 5) {
JKRAramHeap* heap = JKRAram::getAramHeap();
if (heap) {
JUTReport(0x1db, 100, "ARAM Free");
JUTReport(0x1db, 0x72, "%d", heap->getFreeSize());
JUTReport(0x1db, 0x80, "TotalFree");
JUTReport(0x1db, 0x8e, "%d", heap->getTotalFreeSize());
}
} else {
if (data_80450588[0] != 0) {
JUTReport(0x1db, 100, "%s", desc1[data_80450588[0]]);
JUTReport(0x1db, 0x72, "%s", lbl_803A2F28[data_80450588[0]]);
int k = 0;
for (int i = 0; i < 8; i++, k += 0x2C) {
HeapCheck* heap_check = HeapCheckTable[i];
switch (data_80450588[0]) {
case 3: {
tmp1 = heap_check->getUsedCount();
tmp2 = heap_check->getHeap()->getTotalUsedSize();
break;
}
case 1: {
tmp1 = heap_check->getHeap()->getTotalFreeSize();
tmp2 = heap_check->getHeap()->getFreeSize();
break;
}
case 2: {
tmp1 = heap_check->getMaxTotalUsedSize();
tmp2 = heap_check->getHeap()->getSize();
break;
}
case 4: {
tmp1 = heap_check->getUsedCount() - heap_check->getUsedCountRef();
tmp2 = heap_check->getHeap()->getTotalUsedSize() -
heap_check->getTotalUsedSizeRef();
break;
}
JUTReport(0x1db, k + 0x96, " [%s]", heap_check->getName());
JUTReport(0x1db, k + 0xA4, "%10d", tmp1);
JUTReport(0x1db, k + 0xB2, "%10d", tmp2);
}
}
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void debugDisplay() {
nofralloc
#include "asm/m_Do/m_Do_main/debugDisplay__Fv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 803739A0-803739A0 000000 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80373B51 = "Press X+Y+START to CLEAR console.";
SECTION_DEAD static char const* const stringBase_80373B73 = "3DStick UP/Down to scroll";
SECTION_DEAD static char const* const stringBase_80373B8D =
"Press A to output terminal from console.";
SECTION_DEAD static char const* const stringBase_80373BB6 = "SCROLL%3d %3d %3d Output=%1x";
SECTION_DEAD static char const* const stringBase_80373BD5 = "Press L+R trigger to control console.";
SECTION_DEAD static char const* const stringBase_80373BFB =
"Press [Z] trigger to close this window.";
#pragma pop
/* 80450B1C-80450B20 00001C 0004+00 1/1 0/0 0/0 .sbss console_position_x$3776 */
static f32 console_position_x;
/* 80450B20-80450B24 000020 0004+00 1/1 0/0 0/0 .sbss None */
static s8 data_80450B20;
/* 80450B24-80450B28 000024 0004+00 1/1 0/0 0/0 .sbss console_position_y$3779 */
static f32 console_position_y;
/* 80450B28-80450B2C 000028 0004+00 1/1 0/0 0/0 .sbss None */
static s8 data_80450B28;
/* 80450B2C-80450B30 00002C 0004+00 1/1 0/0 0/0 .sbss console_scroll$3782 */
static f32 console_scroll;
/* 80450B30-80450B34 000030 0004+00 1/1 0/0 0/0 .sbss None */
static s8 data_80450B30;
/* 80451A00-80451A04 000000 0004+00 1/1 0/0 0/0 .sdata2 @3884 */
SECTION_SDATA2 static f32 lit_3884 = 20.0f;
/* 80451A04-80451A08 000004 0004+00 1/1 0/0 0/0 .sdata2 @3885 */
SECTION_SDATA2 static f32 lit_3885 = 30.0f;
/* 80451A08-80451A0C 000008 0004+00 1/1 0/0 0/0 .sdata2 @3886 */
SECTION_SDATA2 static u8 lit_3886[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 80451A0C-80451A10 00000C 0004+00 1/1 0/0 0/0 .sdata2 @3887 */
SECTION_SDATA2 static f32 lit_3887 = 1.0f;
/* 80451A10-80451A18 000010 0004+04 1/1 0/0 0/0 .sdata2 @3888 */
SECTION_SDATA2 static f32 lit_3888[1 + 1 /* padding */] = {
-1.0f,
/* padding */
0.0f,
};
/* 80451A18-80451A20 000018 0008+00 1/1 0/0 0/0 .sdata2 @3890 */
SECTION_SDATA2 static f64 lit_3890 = 4503601774854144.0 /* cast s32 to float */;
/* 80005D4C-8000614C 00068C 0400+00 1/1 0/0 0/0 .text Debug_console__FUl */
// middle section has lots of issues
#ifdef NONMATCHING
bool Debug_console(u32 i_padNo) {
float tmp2;
float tmp3;
int tmp6;
JUTConsole* console = JFWSystem::getSystemConsole();
if (console) {
if (!data_80450B20) {
console_position_x = 20.0f;
data_80450B20 = 1;
}
if (!data_80450B28) {
console_position_y = 30.0f;
data_80450B28 = 1;
}
if (!data_80450B30) {
console_scroll = 0.0f;
data_80450B30 = 1;
}
if (mDoCPd_c::getTrig(i_padNo) & CButton::Z &&
!(mDoCPd_c::getHold(i_padNo) & ~CButton::Z)) {
bool visible = console->isVisible() == false;
console->setVisible(visible);
JUTAssertion::setMessageCount(0);
}
if (console->isVisible()) {
// if R and L are pressed
if ((mDoCPd_c::getHold(i_padNo) & CButton::L &&
mDoCPd_c::getHold(i_padNo) & CButton::R) ||
((mDoCPd_c::getAnalogL(i_padNo) > 0.0f &&
(0.0f > mDoCPd_c::getAnalogR(i_padNo))))) {
if (mDoCPd_c::getTrig(i_padNo) & (CButton::Y | CButton::X) &&
mDoCPd_c::getTrig(i_padNo) & CButton::START) {
console->clear();
}
if (!(mDoCPd_c::getHold(i_padNo) & (CButton::Y | CButton::X))) {
// subtract console scroll value from stick Y
console_scroll -= mDoCPd_c::getStickY(i_padNo);
int tmp;
if (1.0f <= console_scroll) {
-1.0f <= console_scroll ? tmp = 0 : tmp = -console_scroll;
} else {
tmp = mDoCPd_c::getStickX(i_padNo) - mDoCPd_c::getStickY(i_padNo);
}
if (tmp) {
console_scroll -= tmp;
console->scroll(tmp);
}
} else {
if (mDoCPd_c::getHold(i_padNo) & CButton::X) {
console_position_x += mDoCPd_c::getStickX(i_padNo);
}
if (mDoCPd_c::getHold(i_padNo) & CButton::Y) {
console_position_y -= mDoCPd_c::getStickY(i_padNo);
}
}
if (mDoCPd_c::getTrig(i_padNo) & CButton::A) {
console->dumpToTerminal(0xFFFFFFFF);
console->setOutput(3);
}
JUTReport(0x1E, 0x186, 1, "Press X+Y+START to CLEAR console.");
JUTReport(0x1E, 400, 1, "3DStick UP/Down to scroll");
JUTReport(0x1E, 0x19A, 1, "Press A to output terminal from console.");
JUTReport(0x1E, 0x1A4, 1, "SCROLL%3d %3d %3d Output=%1x",
console->getLineOffset(), console->getPositionX(),
console->getPositionY(), console->getOutput());
}
} else {
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_DOWN) {
g_HIO.mDisplayMeter ^= 1;
}
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_LEFT) {
if (JKRAram::getAramHeap()) {
JKRAram::getAramHeap()->dump();
}
dump__24DynamicModuleControlBaseFv();
g_dComIfG_gameInfo.mResControl.dump();
}
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_RIGHT) {
JKRHeap::getSystemHeap()->dump_sort();
}
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_UP) {
zeldaHeap->dump_sort();
gameHeap->dump_sort();
archiveHeap->dump_sort();
}
JUTReport(0x1E, 0x1B8, 1, "Press L+R trigger to control console.");
JUTReport(0x1E, 0x1C2, 1, "Press [Z] trigger to close this window.");
}
console->setPosition(console_position_x, console_position_y);
return 1;
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void Debug_console(u32 param_0) {
nofralloc
#include "asm/m_Do/m_Do_main/Debug_console__FUl.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 803739A0-803739A0 000000 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80373C23 = "/str/Final/Release/COPYDATE";
#pragma pop
/* 8000614C-800061C8 000A8C 007C+00 1/1 0/0 0/0 .text LOAD_COPYDATE__FPv */
#ifdef NONMATCHING
s32 LOAD_COPYDATE(void*) {
s32 status;
u8 buffer[32];
u8 fileInfo[80];
// DVDFileInfo fileInfo;
status = DVDOpen("/str/Final/Release/COPYDATE", (DVDFileInfo*)&fileInfo);
if (status) {
DVDReadPrio((DVDFileInfo*)fileInfo, &buffer, 32, 0, 2);
memcpy(mDoMain::COPYDATE_STRING, buffer, 17);
status = DVDClose((DVDFileInfo*)fileInfo);
}
return status;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void* LOAD_COPYDATE(void* param_0) {
nofralloc
#include "asm/m_Do/m_Do_main/LOAD_COPYDATE__FPv.s"
}
#pragma pop
#endif
static void debug() {
if (data_80450580) {
if (data_80450B1A) {
CheckHeap(2);
}
if ((mDoCPd_c::getGamePad(2)->getButton() & ~CButton::Z) == CButton::R &&
mDoCPd_c::getGamePad(2)->testTrigger(CButton::Z)) {
struct_80450B18[0] ^= 0x1;
}
if (struct_80450B18[0]) {
if ((mDoCPd_c::getGamePad(2)->getButton() & ~CButton::Z) == CButton::L &&
mDoCPd_c::getGamePad(2)->testTrigger(CButton::Z)) {
data_80450588[0] < 0x5 ? data_80450588[0]++ : data_80450588[0] = 0x1;
}
debugDisplay();
}
Debug_console(2);
}
}
/* ############################################################################################## */
/* 80450B34-80450B38 000034 0004+00 1/1 0/0 0/0 .sbss frame$3939 */
static u32 frame;
/* 8000628C-80006454 000BCC 01C8+00 1/1 0/0 0/0 .text main01__Fv */
// almost
#ifdef NONMATCHING
void main01(void) {
mDoMch_Create__Fv();
mDoGph_Create();
mDoCPd_c::create();
RootHeapCheck.setHeap((JKRExpHeap*)JKRHeap::getRootHeap());
if (JKRHeap::getRootHeap()) {
RootHeapCheck.setHeapSize(JKRHeap::getRootHeap()->getSize());
}
SystemHeapCheck.setHeap((JKRExpHeap*)JKRHeap::getSystemHeap());
if (JKRHeap::getSystemHeap()) {
SystemHeapCheck.setHeapSize(JKRHeap::getSystemHeap()->getSize());
}
ZeldaHeapCheck.setHeap(mDoExt_getZeldaHeap());
if (ZeldaHeapCheck.getHeap()) {
ZeldaHeapCheck.setHeapSize(ZeldaHeapCheck.getHeap()->getSize());
}
GameHeapCheck.setHeap(mDoExt_getGameHeap());
if (GameHeapCheck.getHeap()) {
GameHeapCheck.setHeapSize(GameHeapCheck.getHeap()->getSize());
}
ArchiveHeapCheck.setHeap(mDoExt_getArchiveHeap());
if (ArchiveHeapCheck.getHeap()) {
ArchiveHeapCheck.setHeapSize(ArchiveHeapCheck.getHeap()->getSize());
}
J2dHeapCheck.setHeap(mDoExt_getJ2dHeap());
if (J2dHeapCheck.getHeap()) {
J2dHeapCheck.setHeapSize(J2dHeapCheck.getHeap()->getSize());
}
HostioHeapCheck.setHeap(mDoExt_getHostIOHeap());
if (HostioHeapCheck.getHeap()) {
HostioHeapCheck.setHeapSize(HostioHeapCheck.getHeap()->getSize());
}
CommandHeapCheck.setHeap(mDoExt_getCommandHeap());
if (CommandHeapCheck.getHeap()) {
CommandHeapCheck.setHeapSize(CommandHeapCheck.getHeap()->getSize());
}
JUTConsole* console = JFWSystem::getSystemConsole();
if (data_80450580 != 0) {
console->setOutput(3);
}
console->setPosition(32, 42);
mDoDvdThd_callback_c::create(LOAD_COPYDATE, NULL);
fapGm_Create__Fv();
fopAcM_initManager__Fv();
struct_80450B18[0] = 0;
cDyl_InitAsync__Fv();
g_mDoAud_audioHeap = JKRSolidHeap::create(0x14D800, JKRHeap::getCurrentHeap(), false);
do {
frame++;
if (data_80450B00 && frame == data_80450B00 * (frame / data_80450B00)) {
mDoMch_HeapCheckAll__Fv();
}
if (struct_80450C80[0]) {
g_mDoMemCd_control.update();
}
mDoCPd_c::read();
fapGm_Execute__Fv();
mDoAud_Execute__Fv();
debug();
} while (true);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void main01() {
nofralloc
#include "asm/m_Do/m_Do_main/main01__Fv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 803D3420-803DB420 000140 8000+00 1/1 0/0 0/0 .bss mainThreadStack */
static u8 mainThreadStack[32768];
/* 803DB420-803DB740 008140 0318+08 1/1 0/0 0/0 .bss mainThread */
static OSThread mainThread;
/* 80006454-800065D8 000D94 0184+00 0/0 1/1 0/0 .text main */
void main() {
OSThread* current_thread = OSGetCurrentThread();
u8* stack = &mainThreadStack[0];
mDoMain::sPowerOnTime = OSGetTime();
OSReportInit();
version_check();
mDoRstData* reset_data = (mDoRstData*)OSAllocFromArenaLo(0x18, 4);
mDoRst::setResetData(reset_data);
if (!mDoRst::i_getResetData()) {
do {
} while (true);
}
if (!(OSGetResetCode() >> 0x1F)) {
mDoRst::offReset();
mDoRst::offResetPrepare();
mDoRst::off3ButtonReset();
mDoRst::set3ButtonResetPort(-1);
mDoRst::setLogoScnFlag(0);
mDoRst::setProgSeqFlag(0);
mDoRst::setProgChgFlag(0);
mDoRst::setWarningDispFlag(0);
mDoRst::offShutdown();
mDoRst::offReturnToMenu();
}
g_dComIfG_gameInfo.ct();
if (data_80450580 < 0) {
DVDDiskID* disk_id = DVDGetCurrentDiskID();
if (disk_id->game_version > 0x90) {
data_80450580 = 1;
} else if (disk_id->game_version > 0x80) {
u32 consoleType = OSGetConsoleType();
data_80450580 = (consoleType >> 0x1c) & 1;
} else {
data_80450580 = 0;
}
}
s32 priority = OSGetThreadPriority(current_thread);
OSCreateThread(&mainThread, main01, 0, stack + sizeof(mainThreadStack), sizeof(mainThreadStack),
priority, 0);
OSResumeThread(&mainThread);
OSSetThreadPriority(current_thread, 0x1F);
OSSuspendThread(current_thread);
}
/* 800065D8-800065E0 000F18 0008+00 0/0 2/0 0/0 .text dump_sort__7JKRHeapFv */
bool JKRHeap::dump_sort() {
return true;
}
/* ############################################################################################## */
/* 803739A0-803739A0 000000 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80373C3F = "Root";
SECTION_DEAD static char const* const stringBase_80373C44 = "ルート";
SECTION_DEAD static char const* const stringBase_80373C4B = "System";
SECTION_DEAD static char const* const stringBase_80373C52 = "システム";
SECTION_DEAD static char const* const stringBase_80373C5B = "Zelda";
SECTION_DEAD static char const* const stringBase_80373C61 = "ゼルダ";
SECTION_DEAD static char const* const stringBase_80373C68 = "Game";
SECTION_DEAD static char const* const stringBase_80373C6D = "ゲーム";
SECTION_DEAD static char const* const stringBase_80373C74 = "Archive";
SECTION_DEAD static char const* const stringBase_80373C7C = "アーカイブ";
SECTION_DEAD static char const* const stringBase_80373C87 = "J2d";
SECTION_DEAD static char const* const stringBase_80373C8B = "J2D";
SECTION_DEAD static char const* const stringBase_80373C8F = "Hostio";
SECTION_DEAD static char const* const stringBase_80373C96 = "ホストIO";
SECTION_DEAD static char const* const stringBase_80373C9F = "Command";
SECTION_DEAD static char const* const stringBase_80373CA7 = "コマンド";
#pragma pop
/* 800065E0-80006798 000F20 01B8+00 0/0 1/0 0/0 .text __sinit_m_Do_main_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_m_Do_main_cpp() {
nofralloc
#include "asm/m_Do/m_Do_main/__sinit_m_Do_main_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x800065E0, __sinit_m_Do_main_cpp);
#pragma pop
/* ############################################################################################## */
/* 80450B38-80450B3C 000038 0004+00 0/0 2/2 0/0 .sbss
* sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
extern u8 data_80450B38[4];
u8 data_80450B38[4];
/* 80450B3C-80450B40 00003C 0004+00 0/0 6/6 0/0 .sbss sInstance__31JASGlobalInstance<10Z2EnvSeMgr>
*/
extern u8 data_80450B3C[4];
u8 data_80450B3C[4];
/* 80450B40-80450B44 000040 0004+00 0/0 6/6 0/0 .sbss
* sInstance__32JASGlobalInstance<11Z2FxLineMgr> */
extern u8 data_80450B40[4];
u8 data_80450B40[4];
/* 80450B44-80450B48 000044 0004+00 0/0 18/18 0/0 .sbss
* sInstance__31JASGlobalInstance<10Z2Audience> */
extern u8 data_80450B44[4];
u8 data_80450B44[4];
/* 80450B48-80450B4C 000048 0004+00 0/0 17/17 0/0 .sbss
* sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */
extern u8 data_80450B48[4];
u8 data_80450B48[4];
/* 80450B4C-80450B50 00004C 0004+00 0/0 10/10 0/0 .sbss
* sInstance__32JASGlobalInstance<11Z2SoundInfo> */
extern u8 data_80450B4C[4];
u8 data_80450B4C[4];
/* 80450B50-80450B54 000050 0004+00 0/0 5/5 0/0 .sbss
* sInstance__33JASGlobalInstance<12JAUSoundInfo> */
extern u8 data_80450B50[4];
u8 data_80450B50[4];
/* 80450B54-80450B58 000054 0004+00 0/0 2/2 0/0 .sbss
* sInstance__38JASGlobalInstance<17JAUSoundNameTable> */
extern u8 data_80450B54[4];
u8 data_80450B54[4];
/* 80450B58-80450B5C 000058 0004+00 0/0 12/12 0/0 .sbss
* sInstance__34JASGlobalInstance<13JAUSoundTable> */
extern u8 data_80450B58[4];
u8 data_80450B58[4];
/* 80450B5C-80450B60 00005C 0004+00 0/0 6/6 0/0 .sbss
* sInstance__33JASGlobalInstance<12JAISoundInfo> */
extern u8 data_80450B5C[4];
u8 data_80450B5C[4];
/* 80450B60-80450B64 000060 0004+00 0/0 29/29 0/0 .sbss
* sInstance__31JASGlobalInstance<10Z2SoundMgr> */
extern u8 data_80450B60[4];
u8 data_80450B60[4];
/* 80450B64-80450B68 000064 0004+00 0/0 2/2 0/0 .sbss
* sInstance__33JASGlobalInstance<12JAIStreamMgr> */
extern u8 data_80450B64[4];
u8 data_80450B64[4];
/* 80450B68-80450B6C 000068 0004+00 0/0 3/3 0/0 .sbss sInstance__29JASGlobalInstance<9JAISeqMgr>
*/
extern u8 data_80450B68[4];
u8 data_80450B68[4];
/* 80450B6C-80450B70 00006C 0004+00 0/0 4/4 0/0 .sbss sInstance__28JASGlobalInstance<8JAISeMgr> */
extern u8 data_80450B6C[4];
u8 data_80450B6C[4];
/* 80450B70-80450B74 000070 0004+00 0/0 9/9 0/0 .sbss
* sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */
extern u8 data_80450B70[4];
u8 data_80450B70[4];
/* 80450B74-80450B78 000074 0004+00 0/0 22/22 0/0 .sbss
* sInstance__35JASGlobalInstance<14Z2SoundStarter> */
extern u8 data_80450B74[4];
u8 data_80450B74[4];
/* 80450B78-80450B7C 000078 0004+00 0/0 2/2 0/0 .sbss
* sInstance__36JASGlobalInstance<15JAISoundStarter> */
extern u8 data_80450B78[4];
u8 data_80450B78[4];
/* 80450B7C-80450B80 00007C 0004+00 0/0 34/34 0/0 .sbss
* sInstance__32JASGlobalInstance<11Z2StatusMgr> */
extern u8 data_80450B7C[4];
u8 data_80450B7C[4];
/* 80450B80-80450B84 000080 0004+00 0/0 46/46 0/0 .sbss
* sInstance__31JASGlobalInstance<10Z2SceneMgr> */
extern u8 data_80450B80[4];
u8 data_80450B80[4];
/* 80450B84-80450B88 000084 0004+00 0/0 38/38 0/0 .sbss sInstance__28JASGlobalInstance<8Z2SeqMgr>
*/
extern u8 data_80450B84[4];
u8 data_80450B84[4];
/* 80450B88-80450B8C 000088 0004+00 0/0 25/25 0/0 .sbss sInstance__27JASGlobalInstance<7Z2SeMgr>
*/
extern u8 data_80450B88[4];
u8 data_80450B88[4];
/* 80450B8C-80450B90 00008C 0004+00 0/0 6/6 0/0 .sbss
* sInstance__35JASGlobalInstance<14JASAudioThread> */
extern u8 data_80450B8C[4];
u8 data_80450B8C[4];
/* 80450B90-80450B98 000090 0004+04 0/0 4/4 0/0 .sbss
* sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
extern u8 data_80450B90[4 + 4 /* padding */];
u8 data_80450B90[4 + 4 /* padding */];
/* 80450B98-80450B9C -00001 0004+00 0/0 6/6 0/0 .sbss None */
/* 80450B98 0001+00 data_80450B98 None */
/* 80450B99 0001+00 data_80450B99 None */
/* 80450B9A 0001+00 data_80450B9A None */
/* 80450B9B 0001+00 data_80450B9B None */
extern u8 struct_80450B98[4];
u8 struct_80450B98[4];
/* 80450B9C-80450BA0 00009C 0004+00 0/0 3/3 0/0 .sbss None */
extern u8 data_80450B9C[4];
u8 data_80450B9C[4];
/* 803739A0-803739A0 000000 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */