mirror of https://github.com/zeldaret/tp.git
612 lines
19 KiB
C++
612 lines
19 KiB
C++
#include "m_Do/m_Do_main/m_Do_main.h"
|
||
#include "JSystem/JKernel/JKRAram/JKRAram.h"
|
||
#include "JSystem/JKernel/JKRAramHeap/JKRAramHeap.h"
|
||
#include "JSystem/JUtility/JUTAssert/JUTAssert.h"
|
||
#include "JSystem/JUtility/JUTReport/JUTReport.h"
|
||
#include "SComponent/c_API_controller_pad.h"
|
||
#include "d/d_com/d_com_inf_game/d_com_inf_game.h"
|
||
#include "dvd/dvd.h"
|
||
#include "global.h"
|
||
#include "m_Do/m_Do_audio/m_Do_audio.h"
|
||
#include "m_Do/m_Do_controller_pad/m_Do_controller_pad.h"
|
||
#include "m_Do/m_Do_dvd_thread/m_Do_dvd_thread.h"
|
||
#include "m_Do/m_Do_ext/m_Do_ext.h"
|
||
#include "m_Do/m_Do_graphic/m_Do_graphic.h"
|
||
#include "m_Do/m_Do_machine/m_Do_machine.h"
|
||
#include "m_Do/m_Do_reset/m_Do_reset.h"
|
||
|
||
extern float lbl_80451A00;
|
||
extern float lbl_80451A04;
|
||
extern float lbl_80451A08;
|
||
extern u8 lbl_80451A0C;
|
||
extern u8 lbl_80451A10;
|
||
extern u8 lbl_80451A18;
|
||
extern u8 lbl_803D0000;
|
||
extern float lbl_80450B2C;
|
||
extern float lbl_80450B1C;
|
||
extern JKRExpHeap* sSystemHeap__7JKRHeap;
|
||
extern JKRExpHeap* lbl_80450C2C;
|
||
extern JKRExpHeap* lbl_80450C28;
|
||
extern JKRExpHeap* lbl_80450C34;
|
||
extern s8 lbl_80450B20;
|
||
extern s8 lbl_80450B28;
|
||
extern float lbl_80450B24;
|
||
extern s8 lbl_80450B30;
|
||
|
||
extern char lbl_803739A0[0x310];
|
||
extern "C" {
|
||
int strcmp(const char*, const char*);
|
||
void cDyl_InitAsync(void);
|
||
void CheckHeap1__9HeapCheckFv(void);
|
||
void create__12JKRSolidHeapFUlP7JKRHeapb(void);
|
||
void create__8mDoCPd_cFv(void);
|
||
void dComIfG_inf_c_NS_ct(void);
|
||
void debug__Fv(void);
|
||
void dRes_control_c_NS_dump(void);
|
||
void dump__11JKRAramHeapFv(void);
|
||
void DynamicModuleControlBase_NS_dump(void);
|
||
void fapGm_Create(void);
|
||
void fapGm_Execute(void);
|
||
void fopAcM_initManager(void);
|
||
void getFreeSize__11JKRAramHeapFv(void);
|
||
void getFreeSize__7JKRHeapCFv(void);
|
||
void getTotalFreeSize__11JKRAramHeapFv(void);
|
||
void getTotalFreeSize__7JKRHeapCFv(void);
|
||
void getTotalUsedSize__10JKRExpHeapCFv(void);
|
||
void getUsedCount__9HeapCheckCFv(void);
|
||
void heapDisplay__9HeapCheckCFv(void);
|
||
void JUTReport__FiiPCce(int, int, const char*, ...);
|
||
void JUTReport__FiiiPCce(void);
|
||
void mDoDvdThd_callback_c_NS_create(void);
|
||
void mDoMch_HeapCheckAll(void);
|
||
void mDoMemCd_Ctrl_c_NS_update(void);
|
||
void memcpy(void*, const void*, int);
|
||
void read__8mDoCPd_cFv(void);
|
||
void version_check__Fv(void);
|
||
void main01__Fv(void);
|
||
void ct__13dComIfG_inf_cFv(void);
|
||
int getLineOffset__10JUTConsoleCFv(void);
|
||
void dumpToTerminal__10JUTConsoleFUi(void);
|
||
void scroll__10JUTConsoleFi(void);
|
||
void clear__10JUTConsoleFv(void);
|
||
void setMessageCount__12JUTAssertionFi(void);
|
||
}
|
||
|
||
extern char* lbl_803A2F14[5];
|
||
extern char* lbl_803A2F28[5];
|
||
|
||
void version_check(void) {
|
||
if ((!strcmp("20Apr2004", "20Apr2004")) && (!strcmp("Patch2", "Patch2"))) {
|
||
return;
|
||
}
|
||
|
||
OSReport_Error("SDK<EFBFBD>̃o<EFBFBD>[<5B>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD>~<7E><><EFBFBD>܂<EFBFBD>\n");
|
||
do {
|
||
} while (true);
|
||
}
|
||
|
||
void HeapCheck::CheckHeap1(void) {
|
||
s32 totalUsedSize = heap->getTotalUsedSize();
|
||
s32 freeSize = heap->getFreeSize();
|
||
|
||
if (max_total_used_size < totalUsedSize) {
|
||
max_total_used_size = totalUsedSize;
|
||
}
|
||
|
||
if (max_total_free_size > freeSize) {
|
||
max_total_free_size = freeSize;
|
||
}
|
||
}
|
||
|
||
#ifdef NONMATCHING
|
||
void CheckHeap(u32 controller_pad_no) {
|
||
mDoMch_HeapCheckAll();
|
||
OSCheckActiveThreads();
|
||
|
||
bool unk = false;
|
||
|
||
// if L + R + Z is pressed...
|
||
if (((m_cpadInfo[controller_pad_no].mButtonFlags & ~0x10) == 0x60) &&
|
||
m_cpadInfo[controller_pad_no].mPressedButtonFlags & 0x10) {
|
||
unk = true;
|
||
}
|
||
|
||
for (int i = 0; i < 8; i++) {
|
||
HeapCheckTable[i]->CheckHeap1();
|
||
if (unk) {
|
||
HeapCheck* currentHeap = HeapCheckTable[i];
|
||
s32 used_count = currentHeap->getUsedCount();
|
||
|
||
currentHeap->getUsedCountRef() = used_count;
|
||
used_count = currentHeap->getHeap()->getTotalUsedSize();
|
||
currentHeap->getTotalUsedSizeRef() = used_count;
|
||
}
|
||
}
|
||
}
|
||
#else
|
||
asm void CheckHeap(u32 param_1) {
|
||
nofralloc
|
||
#include "m_Do/m_Do_main/asm/func_8000578C.s"
|
||
}
|
||
#endif
|
||
|
||
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(void) const {
|
||
return countUsed(heap);
|
||
}
|
||
|
||
void HeapCheck::heapDisplay(void) const {
|
||
s32 heap_size1 = heap->getSize();
|
||
s32 heap_size2 = heap_size1 - heap_size;
|
||
|
||
s32 heap_total_used_size = heap->getTotalUsedSize();
|
||
s32 heap_total_free_size = heap->getTotalFreeSize();
|
||
s32 heap_free_size = heap->getFreeSize();
|
||
|
||
JUTReport(0x64, 0xd4, "[%sName]", names[0]);
|
||
JUTReport(0x64, 0xe3, "HeapSize %8ld", heap_size1);
|
||
JUTReport(0x64, 0xf0, "TargetHeapSize %8ld", heap_size);
|
||
JUTReport(0x64, 0xfd, "TotalFree %8ld", heap_total_free_size - heap_size2);
|
||
JUTReport(0x64, 0x10a, "FreeSize %8ld", heap_free_size - heap_size2);
|
||
JUTReport(0x64, 0x117, "TotalUsedSize %8ld", heap_total_used_size);
|
||
JUTReport(0x64, 0x124, "TotalUsedRate %3ld%%",
|
||
(int)(heap_total_used_size * 0x64) / (int)heap_size);
|
||
JUTReport(0x64, 0x131, "MaxTotalUsedSize %8ld", max_total_used_size);
|
||
JUTReport(0x64, 0x13e, "MaxTotalUsedRate %3ld%%",
|
||
(max_total_used_size * 0x64) / (int)heap_size);
|
||
JUTReport(0x64, 0x14b, "MinFreeSize %8ld", max_total_free_size - heap_size2);
|
||
JUTReport(0x64, 0x158, "MinFreeRate %3ld%%",
|
||
((max_total_free_size - heap_size2) * 0x64) / (int)heap_size);
|
||
heap_size2 = countUsed(heap);
|
||
JUTReport(0x64, 0x165, "UsedCount %3ld%", heap_size2);
|
||
}
|
||
|
||
const char* lbl_80373AEF = "";
|
||
const char* lbl_80373AF0 = "TotalFree";
|
||
const char* lbl_80373AFA = "MaxUsed ";
|
||
const char* lbl_80373B04 = "Used ";
|
||
const char* lbl_80373B0E = "RelUsed ";
|
||
const char* lbl_80373B18 = "/ MaxFree";
|
||
const char* lbl_80373B22 = "/HeapSize";
|
||
const char* lbl_80373B2C = "Blk/Bytes";
|
||
const char* lbl_80373B36 = "ARAM Free";
|
||
const char* lbl_80373B40 = "%d";
|
||
const char* lbl_80373B43 = "%s";
|
||
const char* lbl_80373B46 = " [%s]";
|
||
const char* lbl_80373B4C = "%10d";
|
||
const char* lbl_80373B51 = "Press X+Y+START to CLEAR console.";
|
||
const char* lbl_80373B73 = "3DStick UP/Down to scroll";
|
||
const char* lbl_80373B8D = "Press A to output terminal from console.";
|
||
const char* lbl_80373BB6 = "SCROLL<EFBFBD>F%3d %3d %3d Output=%1x";
|
||
const char* lbl_80373BD5 = "Press L+R trigger to control console.";
|
||
const char* lbl_80373BFB = "Press [Z] trigger to close this window.";
|
||
|
||
#ifdef NONMATCHING
|
||
void debugDisplay(void) {
|
||
int tmp1;
|
||
int tmp2;
|
||
HeapCheck** hct = (HeapCheck**)lbl_803A2EE0;
|
||
|
||
if (lbl_80450B19 >= 1 && lbl_80450B19 <= 6) {
|
||
hct[lbl_80450B19 - 1]->heapDisplay();
|
||
}
|
||
|
||
if (lbl_80450588 == 5) {
|
||
JKRAramHeap* heap = sAramObject__7JKRAram->getAramHeap();
|
||
if (heap) {
|
||
JUTReport(0x1db, 100, lbl_803739A0 + 0x196);
|
||
JUTReport(0x1db, 0x72, lbl_803739A0 + 0x1A0, heap->getFreeSize());
|
||
JUTReport(0x1db, 0x80, lbl_803739A0 + 0x150);
|
||
JUTReport(0x1db, 0x8e, lbl_803739A0 + 0x1A0, heap->getTotalFreeSize());
|
||
}
|
||
|
||
} else {
|
||
if (lbl_80450588) {
|
||
JUTReport(0x1db, 100, lbl_803739A0 + 0x1A3, lbl_803A2F14[lbl_80450588]);
|
||
JUTReport(0x1db, 0x72, lbl_803739A0 + 0x1A3, lbl_803A2F28[lbl_80450588]);
|
||
|
||
int k = 0;
|
||
for (int i = 0; i < 8; i++, k += 0x2c) {
|
||
// heap check table stuff
|
||
HeapCheck* heap_check;
|
||
heap_check = HeapCheckTable[i];
|
||
|
||
switch (lbl_80450588) {
|
||
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, lbl_80373B46, heap_check->getNames()[0]);
|
||
JUTReport(0x1db, k + 0xA4, lbl_80373B4C, tmp1);
|
||
JUTReport(0x1db, k + 0xB2, lbl_80373B4C, tmp2);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#else
|
||
asm void debugDisplay(void) {
|
||
nofralloc
|
||
#include "m_Do\m_Do_main\asm\func_80005AD8.s"
|
||
}
|
||
#endif
|
||
|
||
#ifdef NONMATCHING
|
||
void Debug_console(u32 controller_no) {
|
||
float tmp2;
|
||
float tmp3;
|
||
int tmp6;
|
||
|
||
// systemConsole
|
||
if (lbl_804511B8) {
|
||
if (!lbl_80450B20) {
|
||
lbl_80450B1C = lbl_80451A00;
|
||
lbl_80450B20 = 1;
|
||
}
|
||
|
||
if (!lbl_80450B28) {
|
||
lbl_80450B24 = lbl_80451A04;
|
||
lbl_80450B28 = 1;
|
||
}
|
||
if (!lbl_80450B30) {
|
||
lbl_80450B2C = lbl_80451A08;
|
||
lbl_80450B30 = 1;
|
||
}
|
||
|
||
u32 tmp5 = m_cpadInfo[controller_no].mPressedButtonFlags;
|
||
|
||
if ((m_cpadInfo[controller_no].mPressedButtonFlags & 0x10) &&
|
||
!(m_cpadInfo[controller_no].mButtonFlags & 0xFFFFFFEF)) {
|
||
lbl_804511B8->field_0x68 = !lbl_804511B8->field_0x68;
|
||
JUTAssertion::setMessageCount(0);
|
||
}
|
||
|
||
if (lbl_804511B8->field_0x68) {
|
||
u32 tmp = m_cpadInfo[controller_no].mButtonFlags;
|
||
|
||
// if R and L are pressed
|
||
if ((tmp & 0x40 && tmp & 0x20) ||
|
||
((lbl_80451A08 > m_cpadInfo[controller_no].mTriggerLeft) &&
|
||
(lbl_80451A08 > m_cpadInfo[controller_no].mTriggerRight))) {
|
||
tmp2 = m_cpadInfo[controller_no].mMainStickPosX;
|
||
tmp3 = m_cpadInfo[controller_no].mMainStickPosY;
|
||
|
||
// if x buttons are pressed, clear the console
|
||
if (tmp & 0xC00 && tmp5 & 0x1000) {
|
||
lbl_804511B8->clear();
|
||
}
|
||
|
||
u32 tmp = m_cpadInfo[controller_no].mButtonFlags;
|
||
|
||
if (!(tmp & 0xC00)) {
|
||
// subtract console scroll value from stick Y
|
||
float tmp4 = lbl_80450B2C;
|
||
lbl_80450B2C = tmp4 - tmp3;
|
||
if (lbl_80450B2C <= lbl_80451A0C) {
|
||
lbl_80451A10 <= lbl_80450B2C ? tmp = 0 : tmp = lbl_80451A0C;
|
||
} else {
|
||
tmp = (tmp4 - tmp3);
|
||
}
|
||
|
||
if (tmp) {
|
||
lbl_80450B2C -= (tmp ^ 0x80000000) - 4503601774854144.00000000;
|
||
lbl_804511B8->scroll(tmp);
|
||
}
|
||
} else {
|
||
if (tmp & 0x400) {
|
||
lbl_80450B2C += tmp2;
|
||
}
|
||
|
||
if (tmp & 0x800) {
|
||
lbl_80450B2C -= tmp3;
|
||
}
|
||
}
|
||
|
||
if (tmp5 & 0x100) {
|
||
lbl_804511B8->dumpToTerminal(0xFFFFFFFF);
|
||
lbl_804511B8->field_0x58 = 3;
|
||
}
|
||
|
||
JUTReport(0x1E, 0x186, 1, lbl_80373B51);
|
||
JUTReport(0x1E, 400, 1, lbl_80373B73);
|
||
JUTReport(0x1E, 0x19A, 1, lbl_80373B8D);
|
||
tmp6 = lbl_804511B8->getLineOffset();
|
||
JUTReport(0x1E, 0x1A4, 1, lbl_80373BB6, tmp6, lbl_804511B8->field_0x40,
|
||
lbl_804511B8->field_0x44, lbl_804511B8->field_0x58);
|
||
}
|
||
} else {
|
||
if (tmp5 & 4) {
|
||
g_HIO.field_0x15 ^= 1;
|
||
}
|
||
|
||
if (tmp5 & 1) {
|
||
if (sAramObject__7JKRAram->getAramHeap()) {
|
||
sAramObject__7JKRAram->getAramHeap()->dump();
|
||
}
|
||
|
||
DynamicModuleControlBase_NS_dump();
|
||
dRes_control_c_NS_dump();
|
||
}
|
||
|
||
if (tmp5 & 2) {
|
||
sSystemHeap__7JKRHeap->dump_sort();
|
||
}
|
||
|
||
if (tmp5 & 8) {
|
||
lbl_80450C2C->dump_sort();
|
||
lbl_80450C28->dump_sort();
|
||
lbl_80450C34->dump_sort();
|
||
}
|
||
JUTReport(0x1E, 0x1B8, 1, lbl_80373BD5);
|
||
JUTReport(0x1E, 0x1C2, 1, lbl_80373BFB);
|
||
}
|
||
lbl_804511B8->field_0x40 = lbl_80450B1C;
|
||
lbl_804511B8->field_0x44 = lbl_80450B24;
|
||
tmp6 = 1;
|
||
}
|
||
}
|
||
#else
|
||
asm void Debug_console(u32) {
|
||
nofralloc
|
||
#include "m_Do\m_Do_main\asm\func_80005D4C.s"
|
||
}
|
||
#endif
|
||
|
||
#ifdef NONMATCHING
|
||
void LOAD_COPYDATE(void*) {
|
||
DVDFileInfo file_info;
|
||
|
||
s32 dvd_status = DVDOpen("/str/Final/Release/COPYDATE", &file_info);
|
||
if (dvd_status) {
|
||
char buffer[32];
|
||
DVDReadPrio(&file_info, buffer, 32, 0, 2);
|
||
memcpy(lbl_803A2EE0, buffer, 17);
|
||
DVDClose(&file_info);
|
||
}
|
||
}
|
||
#else
|
||
const char* lbl_80373C23 = "/str/Final/Release/COPYDATE";
|
||
asm void LOAD_COPYDATE(void*) {
|
||
nofralloc
|
||
#include "m_Do\m_Do_main\asm\func_8000614C.s"
|
||
}
|
||
#endif
|
||
|
||
const char* lbl_80373C3F = "Root";
|
||
const char* lbl_80373C44 = "<EFBFBD><EFBFBD><EFBFBD>[<5B>g";
|
||
const char* lbl_80373C4B = "System";
|
||
const char* lbl_80373C52 = "<EFBFBD>V<EFBFBD>X<EFBFBD>e<EFBFBD><EFBFBD>";
|
||
const char* lbl_80373C5B = "Zelda";
|
||
const char* lbl_80373C61 = "<EFBFBD>[<5B><><EFBFBD>_";
|
||
const char* lbl_80373C68 = "Game";
|
||
const char* lbl_80373C6D = "<EFBFBD>Q<EFBFBD>[<5B><>";
|
||
const char* lbl_80373C74 = "Archive";
|
||
const char* lbl_80373C7C = "<EFBFBD>A<EFBFBD>[<5B>J<EFBFBD>C<EFBFBD>u";
|
||
const char* lbl_80373C87 = "J2d";
|
||
const char* lbl_80373C8B = "J2D";
|
||
const char* lbl_80373C8F = "Hostio";
|
||
const char* lbl_80373C96 = "<EFBFBD>z<EFBFBD>X<EFBFBD>gIO";
|
||
const char* lbl_80373C9F = "Command";
|
||
const char* lbl_80373CA7 = "<EFBFBD>R<EFBFBD>}<7D><><EFBFBD>h";
|
||
|
||
void debug(void) {
|
||
if (lbl_80450580) {
|
||
if (lbl_80450B1A[0]) {
|
||
CheckHeap(2);
|
||
}
|
||
|
||
if (((m_gamePad[2]->buttons.mButtonFlags & ~0x10) == 0x20) &&
|
||
(m_gamePad[2]->buttons.mPressedButtonFlags & 0x10)) {
|
||
lbl_80450B18 ^= 0x1;
|
||
}
|
||
|
||
if (lbl_80450B18) {
|
||
if (((m_gamePad[2]->buttons.mButtonFlags & ~0x10) == 0x40) &&
|
||
(m_gamePad[2]->buttons.mPressedButtonFlags & 0x10)) {
|
||
lbl_80450588 < 0x5 ? lbl_80450588++ : lbl_80450588 = 0x1;
|
||
}
|
||
|
||
debugDisplay();
|
||
}
|
||
|
||
Debug_console(2);
|
||
}
|
||
}
|
||
#ifdef NONMATCHING
|
||
void main01(void) {
|
||
HeapCheck* heaps = lbl_803D32E0;
|
||
mDoMch_Create();
|
||
mDoGph_Create();
|
||
create__8mDoCPd_cFv();
|
||
mDoDVDThd_callback_c thread_callback;
|
||
// JKRSolidHeap audio_heap;
|
||
|
||
// Root Heap
|
||
heaps[0].setHeap((JKRExpHeap*)JKRHeap::getRootHeap());
|
||
if (JKRHeap::getRootHeap()) {
|
||
heaps[0].setHeapSize(JKRHeap::getRootHeap()->getSize());
|
||
}
|
||
|
||
// System Heap
|
||
heaps[1].setHeap((JKRExpHeap*)JKRHeap::getSystemHeap());
|
||
if (JKRHeap::getSystemHeap()) {
|
||
heaps[1].setHeapSize(JKRHeap::getSystemHeap()->getSize());
|
||
}
|
||
|
||
// Zelda Heap
|
||
heaps[2].setHeap(mDoExt_getZeldaHeap());
|
||
if (heaps[2].getHeap()) {
|
||
heaps[2].setHeapSize(heaps[2].getHeap()->getSize());
|
||
}
|
||
|
||
// Game Heap
|
||
heaps[3].setHeap(mDoExt_getGameHeap());
|
||
if (heaps[3].getHeap()) {
|
||
heaps[3].setHeapSize(heaps[3].getHeap()->getSize());
|
||
}
|
||
|
||
// Archive Heap
|
||
heaps[4].setHeap(mDoExt_getArchiveHeap());
|
||
if (heaps[4].getHeap()) {
|
||
heaps[4].setHeapSize(heaps[4].getHeap()->getSize());
|
||
}
|
||
|
||
// J2D Heap
|
||
heaps[5].setHeap(mDoExt_getJ2dHeap());
|
||
if (heaps[5].getHeap()) {
|
||
heaps[5].setHeapSize(heaps[5].getHeap()->getSize());
|
||
}
|
||
|
||
// HostIO Heap
|
||
heaps[6].setHeap(mDoExt_getHostIOHeap());
|
||
if (heaps[6].getHeap()) {
|
||
heaps[6].setHeapSize(heaps[6].getHeap()->getSize());
|
||
}
|
||
|
||
// Command Heap
|
||
heaps[7].setHeap(mDoExt_getCommandHeap());
|
||
|
||
u8* systemConsole = lbl_804511B8;
|
||
|
||
if (heaps[7].getHeap()) {
|
||
heaps[7].setHeapSize(heaps[7].getHeap()->getSize());
|
||
}
|
||
|
||
int unk = 0;
|
||
if (lbl_80450580) {
|
||
unk = 3;
|
||
}
|
||
|
||
*(lbl_804511B8 + 0x58) = unk;
|
||
*(systemConsole + 0x40) = 0x20;
|
||
*(systemConsole + 0x44) = 0x2a;
|
||
|
||
// lol
|
||
thread_callback.create((void* (*)(void*))LOAD_COPYDATE, 0);
|
||
fapGm_Create();
|
||
fopAcM_initManager();
|
||
lbl_80450B18 = 0;
|
||
cDyl_InitAsync();
|
||
|
||
// g_mDoAud_audioHeap
|
||
|
||
lbl_80450BBC = JKRSolidHeap_NS_create(0x14d800, JKRHeap::getCurrentHeap(), false);
|
||
|
||
// main loop
|
||
do {
|
||
// global frame counter?
|
||
lbl_80450B34++;
|
||
|
||
if (lbl_80450B00 && (lbl_80450B34 == ((lbl_80450B34 / lbl_80450B00) * lbl_80450B00))) {
|
||
mDoMch_HeapCheckAll();
|
||
}
|
||
|
||
if (lbl_80450C80) {
|
||
mDoMemCd_Ctrl_c_NS_update();
|
||
}
|
||
mDoCPd_c_NS_read();
|
||
fapGm_Execute();
|
||
mDoAud_Execute();
|
||
debug();
|
||
} while (true);
|
||
}
|
||
#else
|
||
asm void main01(void) {
|
||
nofralloc
|
||
#include "m_Do\m_Do_main\asm\func_8000628C.s"
|
||
}
|
||
#endif
|
||
|
||
#ifdef NONMATCHING
|
||
void main(void) {
|
||
s32 current_thread_priority;
|
||
u32 test;
|
||
u32 resetCode;
|
||
|
||
OSThread* current_thread = OSGetCurrentThread();
|
||
test = lbl_803D3420[0];
|
||
OSTime current_time = OSGetTime();
|
||
lbl_80450B0C = (current_time >> 0x20);
|
||
lbl_80450B08 = test;
|
||
|
||
OSReportInit__Fv();
|
||
version_check__Fv();
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData = (ResetData*)OSAllocFromArenaLo(0x18, 4);
|
||
if (!m_Do_Reset_NS_mDoRst_NS_mResetData) {
|
||
do {
|
||
} while (true);
|
||
}
|
||
|
||
resetCode = OSGetResetCode();
|
||
if (!resetCode) {
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x0 = 0;
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x4 = 0;
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x4 = 0;
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x8 = 0;
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData->pad_index = -1;
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x12 = 0;
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x13 = 0;
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x14 = 0;
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x15 = 0;
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x10 = 0;
|
||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x11 = 0;
|
||
}
|
||
|
||
g_dComIfG_gameInfo.ct();
|
||
|
||
if (lbl_80450580 < 0) {
|
||
DVDDiskID* disk_id = DVDGetCurrentDiskID();
|
||
if (disk_id->game_version > 0x90) {
|
||
lbl_80450580 = 0;
|
||
} else {
|
||
if (disk_id->game_version > 0x80) {
|
||
resetCode = OSGetConsoleType();
|
||
lbl_80450580 = (resetCode >> 0x1C) & 1;
|
||
}
|
||
lbl_80450580 = 1;
|
||
}
|
||
}
|
||
|
||
current_thread_priority = OSGetThreadPriority(current_thread);
|
||
OSCreateThread(&lbl_803DB420, main01__Fv, 0, &lbl_803DB420, 0x8000, current_thread_priority, 0);
|
||
OSResumeThread(&lbl_803DB420);
|
||
OSSetThreadPriority(current_thread, 0x1F);
|
||
OSSuspendThread(current_thread);
|
||
}
|
||
#else
|
||
asm void main(void) {
|
||
nofralloc
|
||
#include "m_Do\m_Do_main\asm\func_80006454.s"
|
||
}
|
||
#endif |