main attempt

This commit is contained in:
Pheenoh 2021-02-03 15:12:27 -05:00
parent 8091fa95c5
commit 9cb88fdb31
No known key found for this signature in database
GPG Key ID: 4312662758CE7D5A
10 changed files with 77 additions and 18 deletions

View File

@ -185,7 +185,7 @@
/* 8003049C 0002D3DC 38 E0 00 40 */ li r7, 0x40
/* 800304A0 0002D3E0 48 33 18 C1 */ bl func_80361D60
/* 800304A4 0002D3E4 7F E3 FB 78 */ mr r3, r31
/* 800304A8 0002D3E8 4B FF C7 3D */ bl dComIfG_inf_c_NS_ct
/* 800304A8 0002D3E8 4B FF C7 3D */ bl ct__13dComIfG_inf_cFv
/* 800304AC 0002D3EC 7F E3 FB 78 */ mr r3, r31
/* 800304B0 0002D3F0 39 61 00 20 */ addi r11, r1, 0x20
/* 800304B4 0002D3F4 48 33 1D 75 */ bl _restgpr_29

View File

@ -217,6 +217,7 @@ private: // NEEDS TO BE FIXED
class dComIfG_inf_c {
public:
dComIfG_inf_c(void);
void ct(void);
// temp until we map the item short function names
item_func& getPlayGiveItem() { return play.getGiveItem(); }

View File

@ -74,7 +74,7 @@ extern "C" {
s32 DVDOpen(const char*, DVDFileInfo*);
s32 DVDClose(DVDFileInfo*);
void DVDReadPrio(DVDFileInfo*, void*, s32, s32, s32);
void DVDGetCurrentDiskID(void);
DVDDiskID* DVDGetCurrentDiskID(void);
s32 DVDFastOpen(long, DVDFileInfo*);
int DVDGetCommandBlockStatus(DVDCommandBlock*);
s32 DVDReadAsyncPrio(DVDFileInfo*, void*, long, long, DVDCallback, long);

View File

@ -51,7 +51,7 @@ lbl_800064A8:
lbl_80006514:
/* 80006514 00003454 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha
/* 80006518 00003458 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l
/* 8000651C 0000345C 48 02 66 C9 */ bl dComIfG_inf_c_NS_ct
/* 8000651C 0000345C 48 02 66 C9 */ bl ct__13dComIfG_inf_cFv
/* 80006520 00003460 88 0D 80 00 */ lbz r0, lbl_80450580-_SDA_BASE_(r13)
/* 80006524 00003464 7C 00 07 75 */ extsb. r0, r0
/* 80006528 00003468 40 80 00 40 */ bge lbl_80006568

View File

@ -36,7 +36,6 @@ extern HeapCheck lbl_803D32E0[8]; // RootHeapCheck
// extern HeapCheck lbl_803D33A8; // J2dHeapCheck
// extern HeapCheck lbl_803D33D0; // HostioHeapCheck
// extern HeapCheck lbl_803D33F8; // CommandHeapCheck
extern s8 lbl_80450580[4];
extern u8 lbl_80450B1A[2];
extern u8 lbl_80450B18;
extern u8 lbl_80450588[8];

View File

@ -133,7 +133,7 @@ OSThread* OSGetCurrentThread(void);
s32 OSSuspendThread(OSThread* thread);
s32 OSSetThreadPriority(OSThread* thread, u32 pri);
s32 OSGetThreadPriority(OSThread* thread);
s32 OSCreateThread(OSThread* thread, void* (*func)(void*), void* param, void* stack, u32 stackSize,
s32 OSCreateThread(OSThread* thread, void* func, void* param, void* stack, u32 stackSize,
int param_6, int param_7);
void OSCancelThread(OSThread* thread);
void OSDetachThread(OSThread* thread);
@ -149,7 +149,7 @@ BOOL OSSendMessage(OSMessageQueue* queue, OSMessage message, int flags);
BOOL OSJamMessage(OSMessageQueue* queue, OSMessage message, int flags);
s32 OSGetConsoleType(void);
s32 OSGetResetCode(void);
u32 OSGetResetCode(void);
u32 OSGetSoundMode(void);
void OSSetSoundMode(OSSoundMode mode);
@ -176,7 +176,7 @@ u32 OSGetArenaHi();
u32 OSInitAlloc(u32 low, u32 high, int param_3);
void OSSetArenaLo(u32 param_1);
void OSSetArenaHi(u32 param_1);
void OSAllocFromArenaLo(u32 size, int alignment);
void* OSAllocFromArenaLo(u32 size, int alignment);
// void OSCancelAlarm(OSAlarm *alarm);

View File

@ -35,7 +35,7 @@ extern u8 lbl_80450C28;
extern u8 lbl_80450C34;
extern u8 lbl_80450B24;
extern u8 lbl_80450B1C;
extern s8 lbl_80450580[4];
extern s8 lbl_80450580;
// extern u8 lbl_80450B1A;
struct JUTGamePad;
extern JUTGamePad* m_gamePad[4];
@ -46,12 +46,12 @@ extern u8 lbl_80450B34;
extern u8 lbl_80450B00;
extern u8 lbl_80450C80;
extern u8 LOAD_COPYDATE__FPv;
extern u8 lbl_803D3420;
extern u8 lbl_80450B0C;
extern u32 lbl_803D3420[8192];
extern u32 lbl_80450B0C;
// struct ResetData;
extern u8 lbl_80450B08;
extern u8 lbl_803DB420;
extern u8 main01__Fv;
extern u32 lbl_80450B08;
extern OSThread lbl_803DB420;
//extern u8 main01__Fv;
extern u8 lbl_803BB598;
extern u8 lbl_803A6F88;
extern u8 lbl_803BB588;

View File

@ -281,6 +281,7 @@ void setBottleNum__24dSv_player_item_record_cFUcUc(u8, u8);
void setCollect__20dSv_player_collect_cFiUc(int, u8);
void setWarpItemData__14dComIfG_play_cFPCc4cXyzsScUcUc(void);
void* memset(void* dest, int ch, u32 count);
void ct__13dComIfG_inf_cFv(void);
}
// memset first arg is wrong
@ -474,7 +475,7 @@ u32 dComIfG_play_c::getTimerPtr(void) {
// ct__13dComIfG_inf_cFv
// dComIfG_inf_c::ct(void)
asm void dComIfG_inf_c_NS_ct(void) {
asm void dComIfG_inf_c::ct(void) {
nofralloc
#include "d/d_com/d_com_inf_game/asm/func_8002CBE4.s"
}

View File

@ -29,8 +29,8 @@ void print_f(void);
// additional symbols needed for m_Do_machine_exception.cpp
// autogenerated by split.py v0.4 at 2021-01-31 21:28:06.026523
extern u8 lbl_80374460;
extern u8 lbl_80450B08;
extern u8 lbl_80450B0C;
extern u32 lbl_80450B08;
extern u32 lbl_80450B0C;
extern u8 lbl_80450B10;
extern u8 lbl_80450B14;
extern u8 lbl_80450C28;

View File

@ -17,6 +17,7 @@ extern u8 lbl_80451A08;
extern u8 lbl_80451A0C;
extern u8 lbl_80451A10;
extern u8 lbl_80451A18;
extern u8 lbl_803D0000;
// extern char lbl_803739A0[0x310];
extern char lbl_803739A0;
@ -54,6 +55,8 @@ 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);
}
void version_check(void) {
@ -223,7 +226,7 @@ const char* lbl_80373C9F = "Command";
const char* lbl_80373CA7 = "ƒRƒ}ƒ“ƒh";
void debug(void) {
if (lbl_80450580[0]) {
if (lbl_80450580) {
if (lbl_80450B1A[0]) {
CheckHeap(2);
}
@ -351,7 +354,62 @@ asm void main01(void) {
#endif
#ifdef NONMATCHING
void main(void) {}
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