mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-14 13:34:52 -04:00
a35a429de0
* d_event_manager OK, d_kankyo rain WIP * Match createTimg
398 lines
13 KiB
C++
398 lines
13 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: d/file/d_file_sel_info
|
|
//
|
|
|
|
#include "d/file/d_file_sel_info.h"
|
|
#include "JSystem/J2DGraph/J2DScreen.h"
|
|
#include "JSystem/J2DGraph/J2DTextBox.h"
|
|
#include "MSL_C/stdio.h"
|
|
#include "d/com/d_com_inf_game.h"
|
|
#include "d/meter/d_meter2_info.h"
|
|
#include "d/pane/d_pane_class.h"
|
|
#include "dol2asm.h"
|
|
#include "dolphin/types.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
extern "C" void __ct__12dFile_info_cFP10JKRArchiveUc();
|
|
extern "C" void __dt__12dFile_info_cFv();
|
|
extern "C" void screenSet__12dFile_info_cFv();
|
|
extern "C" void setSaveData__12dFile_info_cFP10dSv_save_ciUc();
|
|
extern "C" void setHeartCnt__12dFile_info_cFP10dSv_save_c();
|
|
extern "C" void setSaveDate__12dFile_info_cFP10dSv_save_c();
|
|
extern "C" void setPlayTime__12dFile_info_cFP10dSv_save_c();
|
|
extern "C" void modeWait__12dFile_info_cFv();
|
|
extern "C" void modeMove__12dFile_info_cFv();
|
|
extern "C" void _draw__12dFile_info_cFv();
|
|
extern "C" void draw__16dDlst_FileInfo_cFv();
|
|
extern "C" void __sinit_d_file_sel_info_cpp();
|
|
extern "C" void __dt__16dDlst_FileInfo_cFv();
|
|
extern "C" extern char const* const d_file_d_file_sel_info__stringBase0;
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void mDoExt_getMesgFont__Fv();
|
|
extern "C" void mDoExt_removeMesgFont__Fv();
|
|
extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c();
|
|
extern "C" void getString__13dMeter2Info_cFUlPcP14JMSMesgEntry_c();
|
|
extern "C" void __ct__13CPaneMgrAlphaFP9J2DScreenUxUcP10JKRExpHeap();
|
|
extern "C" void* __nw__FUl();
|
|
extern "C" void __dl__FPv();
|
|
extern "C" void __ct__9J2DScreenFv();
|
|
extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive();
|
|
extern "C" void draw__9J2DScreenFffPC14J2DGrafContext();
|
|
extern "C" void getStringPtr__10J2DTextBoxCFv();
|
|
extern "C" void setString__10J2DTextBoxFsPCce();
|
|
extern "C" void _savegpr_22();
|
|
extern "C" void _savegpr_26();
|
|
extern "C" void _savegpr_28();
|
|
extern "C" void _savegpr_29();
|
|
extern "C" void _restgpr_22();
|
|
extern "C" void _restgpr_26();
|
|
extern "C" void _restgpr_28();
|
|
extern "C" void _restgpr_29();
|
|
extern "C" void __div2i();
|
|
extern "C" void __mod2i();
|
|
extern "C" extern void* __vt__12dDlst_base_c[3];
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
/* ############################################################################################## */
|
|
/* 803948B8-803948B8 020F18 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_803948B8 = "zelda_file_select_info_text.blo";
|
|
SECTION_DEAD static char const* const stringBase_803948D8 = "";
|
|
SECTION_DEAD static char const* const stringBase_803948D9 = "tt_heart_00.bti";
|
|
#pragma pop
|
|
|
|
/* 803BB498-803BB4A8 0185B8 000C+04 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
|
|
SECTION_DATA static u8 cNullVec__6Z2Calc[12 + 4 /* padding */] = {
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
/* padding */
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
};
|
|
|
|
/* 803BB4A8-803BB548 0185C8 00A0+00 1/1 0/0 0/0 .data l_htag$3879 */
|
|
SECTION_DATA static u64 l_htag[20] = {
|
|
'hear_20', 'hear_21', 'hear_22', 'hear_23', 'hear_24', 'hear_25', 'hear_26',
|
|
'hear_27', 'hear_28', 'hear_29', 'hear_30', 'hear_31', 'hear_32', 'hear_33',
|
|
'hear_34', 'hear_35', 'hear_36', 'hear_37', 'hear_38', 'hear_39',
|
|
};
|
|
|
|
/* 803BB548-803BB558 -00001 0010+00 1/1 0/0 0/0 .data amariheartTex$3880 */
|
|
SECTION_DATA static const char* amariheartTex[4] = {
|
|
"tt_heart_00.bti",
|
|
"tt_heart_00.bti",
|
|
"tt_heart_00.bti",
|
|
"tt_heart_00.bti",
|
|
};
|
|
|
|
/* 803BB558-803BB564 -00001 000C+00 0/1 0/0 0/0 .data @3953 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_3953[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)modeWait__12dFile_info_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803BB564-803BB570 -00001 000C+00 0/1 0/0 0/0 .data @3954 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_3954[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)modeMove__12dFile_info_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803BB570-803BB588 018690 0018+00 0/1 0/0 0/0 .data fileWarningProc */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static u8 fileWarningProc[24] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803BB588-803BB598 0186A8 0010+00 3/3 0/0 0/0 .data __vt__16dDlst_FileInfo_c */
|
|
SECTION_DATA extern void* __vt__16dDlst_FileInfo_c[4] = {
|
|
(void*)NULL /* RTTI */,
|
|
(void*)NULL,
|
|
(void*)draw__16dDlst_FileInfo_cFv,
|
|
(void*)__dt__16dDlst_FileInfo_cFv,
|
|
};
|
|
|
|
/* 803BB598-803BB5B0 0186B8 000C+0C 2/2 0/0 0/0 .data __vt__12dFile_info_c */
|
|
SECTION_DATA extern void* __vt__12dFile_info_c[3 + 3 /* padding */] = {
|
|
(void*)NULL /* RTTI */,
|
|
(void*)NULL,
|
|
(void*)__dt__12dFile_info_cFv,
|
|
/* padding */
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
};
|
|
|
|
/* 80192434-801924A0 18CD74 006C+00 0/0 3/3 0/0 .text __ct__12dFile_info_cFP10JKRArchiveUc */
|
|
dFile_info_c::dFile_info_c(JKRArchive* arc, u8 param_1) {
|
|
mArchive = arc;
|
|
field_0x22 = param_1;
|
|
mFileInfo.mBasePane = NULL;
|
|
screenSet();
|
|
field_0x20 = 0;
|
|
}
|
|
|
|
/* 801924A0-80192570 18CDE0 00D0+00 1/0 0/0 0/0 .text __dt__12dFile_info_cFv */
|
|
#ifdef NONMATCHING
|
|
dFile_info_c::~dFile_info_c() {
|
|
delete mFileInfo.Scr;
|
|
delete mDatBase;
|
|
delete mNoDatBase;
|
|
|
|
mDoExt_removeMesgFont();
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
// asm dFile_info_c::~dFile_info_c() {
|
|
extern "C" asm void __dt__12dFile_info_cFv() {
|
|
nofralloc
|
|
#include "asm/d/file/d_file_sel_info/__dt__12dFile_info_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80192570-80192954 18CEB0 03E4+00 1/1 0/0 0/0 .text screenSet__12dFile_info_cFv */
|
|
void dFile_info_c::screenSet() {
|
|
mFileInfo.Scr = new J2DScreen();
|
|
mFileInfo.Scr->setPriority("zelda_file_select_info_text.blo", 0x1100000, mArchive);
|
|
mFileInfo.mFont = mDoExt_getMesgFont();
|
|
mFileInfo.Scr->search('w_cp_ef1')->hide();
|
|
mFileInfo.field_0x10 = mFileInfo.Scr->search('w_dat_i1');
|
|
mDatBase = new CPaneMgrAlpha(mFileInfo.Scr, 'w_dat_i1', 2, NULL);
|
|
mNoDatBase = new CPaneMgrAlpha(mFileInfo.Scr, 'w_nda_i1', 2, NULL);
|
|
|
|
J2DTextBox* tboxs[4];
|
|
tboxs[0] = (J2DTextBox*)mFileInfo.Scr->search('f_s_t_02');
|
|
tboxs[1] = (J2DTextBox*)mFileInfo.Scr->search('f_p_t_02');
|
|
mFileInfo.Scr->search('w_s_t_01')->hide();
|
|
mFileInfo.Scr->search('w_p_t_01')->hide();
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
tboxs[i]->setFont(mFileInfo.mFont);
|
|
tboxs[i]->setString(0x20, "");
|
|
}
|
|
dMeter2Info_getString(0x3D0, tboxs[0]->getStringPtr(), NULL); // Save time
|
|
dMeter2Info_getString(0x3D1, tboxs[1]->getStringPtr(), NULL); // Total play time
|
|
|
|
tboxs[0] = (J2DTextBox*)mFileInfo.Scr->search('f_name01');
|
|
tboxs[1] = (J2DTextBox*)mFileInfo.Scr->search('f_new_1');
|
|
mFileInfo.Scr->search('w_name01')->hide();
|
|
mFileInfo.Scr->search('w_new_1')->hide();
|
|
|
|
tboxs[2] = (J2DTextBox*)mFileInfo.Scr->search('w_time01');
|
|
tboxs[3] = (J2DTextBox*)mFileInfo.Scr->search('w_ptim01');
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
tboxs[i]->setFont(mFileInfo.mFont);
|
|
tboxs[i]->setString(0x40, "");
|
|
}
|
|
mPlayerName = tboxs[0]->getStringPtr();
|
|
mSaveStatus = tboxs[1]->getStringPtr();
|
|
mSaveDate = tboxs[2]->getStringPtr();
|
|
mPlayTime = tboxs[3]->getStringPtr();
|
|
}
|
|
|
|
/* 80192954-80192AA0 18D294 014C+00 0/0 3/3 0/0 .text setSaveData__12dFile_info_cFP10dSv_save_ciUc
|
|
*/
|
|
int dFile_info_c::setSaveData(dSv_save_c* save, int checksumValid, u8 data_num) {
|
|
if (checksumValid) {
|
|
char* player_name = save->getPlayer().getPlayerInfo().getLinkName();
|
|
if (*player_name == NULL) {
|
|
if (field_0x22 == 1 && data_num == dComIfGs_getDataNum()) {
|
|
save->getPlayer().getPlayerStatusA().setLife(i_dComIfGs_getLife());
|
|
setHeartCnt(save);
|
|
save->getPlayer().getPlayerStatusA().setLife(12);
|
|
strcpy(mPlayerName, dComIfGs_getPlayerName());
|
|
strcpy(mSaveDate, "");
|
|
strcpy(mPlayTime, "");
|
|
dMeter2Info_getString(0x4D, mSaveStatus, NULL); // New Quest Log
|
|
return 2;
|
|
} else {
|
|
dMeter2Info_getString(0x4D, mSaveStatus, NULL); // New Quest Log
|
|
return 1;
|
|
}
|
|
} else {
|
|
setHeartCnt(save);
|
|
strcpy(mPlayerName, player_name);
|
|
setSaveDate(save);
|
|
setPlayTime(save);
|
|
return 0;
|
|
}
|
|
} else {
|
|
dMeter2Info_getString(0x51, mSaveStatus, NULL); // This Quest Log is Corrupted
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
/* 80192AA0-80192C08 18D3E0 0168+00 1/1 0/0 0/0 .text setHeartCnt__12dFile_info_cFP10dSv_save_c */
|
|
void dFile_info_c::setHeartCnt(dSv_save_c* save) {
|
|
u16 life = save->getPlayer().getPlayerStatusA().getLife();
|
|
s32 count = (life & 0xffff) / 5;
|
|
s32 quarter_count = life % 5;
|
|
if (quarter_count != 0) {
|
|
count++;
|
|
}
|
|
|
|
J2DPicture* heartP[20];
|
|
for (int i = 0; i < 20; i++) {
|
|
heartP[i] = (J2DPicture*)mFileInfo.Scr->search(l_htag[i]);
|
|
|
|
if (i < save->getPlayer().getPlayerStatusA().getMaxLife() / 5) {
|
|
heartP[i]->show();
|
|
if (i < count) {
|
|
if (quarter_count != 0 && i == count - 1) {
|
|
heartP[i]->changeTexture(amariheartTex[quarter_count - 1], 0);
|
|
} else {
|
|
heartP[i]->changeTexture("tt_heart_00.bti", 0);
|
|
}
|
|
} else {
|
|
heartP[i]->changeTexture("tt_heart_00.bti", 0);
|
|
}
|
|
} else {
|
|
heartP[i]->hide();
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 80192C08-80192C70 18D548 0068+00 1/1 0/0 0/0 .text setSaveDate__12dFile_info_cFP10dSv_save_c */
|
|
void dFile_info_c::setSaveDate(dSv_save_c* save) {
|
|
OSCalendarTime time;
|
|
OSTicksToCalendarTime(save->getPlayer().getPlayerStatusB().getDateIpl(), &time);
|
|
sprintf(mSaveDate, "%02d/%02d/%d %02d:%02d", time.month + 1, time.day_of_month, time.year,
|
|
time.hours, time.minutes);
|
|
}
|
|
|
|
/* 80192C70-80192D58 18D5B0 00E8+00 1/1 0/0 0/0 .text setPlayTime__12dFile_info_cFP10dSv_save_c */
|
|
void dFile_info_c::setPlayTime(dSv_save_c* save) {
|
|
s64 time = save->getPlayer().getPlayerInfo().getTotalTime() / (OS_BUS_CLOCK / 4);
|
|
|
|
// 3599940 = 999:59 in seconds
|
|
if (time >= 3599940) {
|
|
sprintf(mPlayTime, "999:59");
|
|
} else {
|
|
u32 min = (time % 3600) / 60;
|
|
u32 hours = time / 3600;
|
|
sprintf(mPlayTime, "%d:%02d", hours, min);
|
|
}
|
|
}
|
|
|
|
/* 80192D58-80192D5C 18D698 0004+00 1/0 0/0 0/0 .text modeWait__12dFile_info_cFv */
|
|
void dFile_info_c::modeWait() {
|
|
/* empty function */
|
|
}
|
|
|
|
/* 80192D5C-80192D60 18D69C 0004+00 1/0 0/0 0/0 .text modeMove__12dFile_info_cFv */
|
|
void dFile_info_c::modeMove() {
|
|
/* empty function */
|
|
}
|
|
|
|
/* 80192D60-80192D9C 18D6A0 003C+00 0/0 2/2 0/0 .text _draw__12dFile_info_cFv */
|
|
void dFile_info_c::_draw() {
|
|
dComIfGd_set2DOpa(&mFileInfo);
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 804539F8-804539FC 001FF8 0004+00 1/1 0/0 0/0 .sdata2 @4000 */
|
|
SECTION_SDATA2 static f32 lit_4000 = 1.0f;
|
|
|
|
/* 804539FC-80453A00 001FFC 0004+00 1/1 0/0 0/0 .sdata2 @4001 */
|
|
SECTION_SDATA2 static u8 lit_4001[4] = {
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
};
|
|
|
|
/* 80192D9C-80192E88 18D6DC 00EC+00 1/0 0/0 0/0 .text draw__16dDlst_FileInfo_cFv */
|
|
// vtable order issue
|
|
#ifdef NONMATCHING
|
|
void dDlst_FileInfo_c::draw() {
|
|
Mtx m;
|
|
J2DGrafContext* ctx = dComIfGp_getCurrentGrafPort();
|
|
|
|
if (mBasePane != NULL) {
|
|
MtxP glbMtx2 = mBasePane->getGlbMtx();
|
|
// Fake match
|
|
MtxP glbMtx = (MtxP)&glbMtx2[0][0];
|
|
PSMTXScale(m, mBasePane->getWidth() / field_0x10->getWidth(),
|
|
mBasePane->getHeight() / field_0x10->getHeight(), 1.0f);
|
|
PSMTXConcat(glbMtx, m, glbMtx);
|
|
Scr->search('Nm_02')->setMtx(glbMtx);
|
|
}
|
|
Scr->draw(0.0f, 0.0f, ctx);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
// asm void dDlst_FileInfo_c::draw() {
|
|
extern "C" asm void draw__16dDlst_FileInfo_cFv() {
|
|
nofralloc
|
|
#include "asm/d/file/d_file_sel_info/draw__16dDlst_FileInfo_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80192E88-80192EC8 18D7C8 0040+00 0/0 1/0 0/0 .text __sinit_d_file_sel_info_cpp */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void __sinit_d_file_sel_info_cpp() {
|
|
nofralloc
|
|
#include "asm/d/file/d_file_sel_info/__sinit_d_file_sel_info_cpp.s"
|
|
}
|
|
#pragma pop
|
|
|
|
#pragma push
|
|
#pragma force_active on
|
|
REGISTER_CTORS(0x80192E88, __sinit_d_file_sel_info_cpp);
|
|
#pragma pop
|
|
|
|
/* 80192EC8-80192F10 18D808 0048+00 1/0 0/0 0/0 .text __dt__16dDlst_FileInfo_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm dDlst_FileInfo_c::~dDlst_FileInfo_c() {
|
|
nofralloc
|
|
#include "asm/d/file/d_file_sel_info/__dt__16dDlst_FileInfo_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 803948B8-803948B8 020F18 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|