diff options
| author | Pheenoh <pheenoh@gmail.com> | 2023-08-10 03:57:49 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-10 03:57:49 -0600 |
| commit | d24b09c2d9e303df68abd7f3417babfc00d83c78 (patch) | |
| tree | 52f020141957595ac866109832723941a8f7025f /src | |
| parent | 244892aeb849a9ad9801aa9828e6282d29df87f0 (diff) | |
d_file_select work + misc changes (#1873)
* setup TU
* JASResArcLoader OK
* d_a_obj_stoneMark work
* some funcs in d_a_obj_stoneMark
* many changes
* quat, d_a_obj_stone, d_a_alink, fix python script, tidy makefile
* d_file_select functions + pr cleanup
* match many dfile_select_c methods
* m_Do_main OK
* selFileWakuAnm & bookIconAnm
* selCopyFileWakuAnm & copyBookIconAnm
* dataDelEffAnm & dataCopyEffAnm
* selectDataBaseMoveAnmInitSet & selectDataBaseMoveAnm
* dataSelectIn
* _move & dataSelectInit
* match a few more
* comment
* J2DPicture::drawTexCoord
* draw_function
* dScnPly_Create + fix typing on request_of_phase_process_fn
* checkpoint
* checkpoint
* checkpoint
* checkpoint 2 (fixed)
* dFile_select_c::dataSelectAnmSet
* dFile_select_c::selectDataOpenMove
* dFile_select_c::copySelMoveAnmInitSet
* fix brightcheck issues
* rm comments, fix status update
* small mod to pr template
Diffstat (limited to 'src')
| -rw-r--r-- | src/c/c_dylink.cpp | 7 | ||||
| -rw-r--r-- | src/d/d_bright_check.cpp | 2 | ||||
| -rw-r--r-- | src/d/file/d_file_select.cpp | 1319 | ||||
| -rw-r--r-- | src/d/s/d_s_name.cpp | 145 | ||||
| -rw-r--r-- | src/d/s/d_s_play.cpp | 15 | ||||
| -rw-r--r-- | src/f_op/f_op_msg_mng.cpp | 2 | ||||
| -rw-r--r-- | src/m_Do/m_Do_machine.cpp | 1 | ||||
| -rw-r--r-- | src/m_Do/m_Do_main.cpp | 156 |
8 files changed, 1269 insertions, 378 deletions
diff --git a/src/c/c_dylink.cpp b/src/c/c_dylink.cpp index a04d07d782..7e7138226d 100644 --- a/src/c/c_dylink.cpp +++ b/src/c/c_dylink.cpp @@ -982,8 +982,11 @@ int cDylPhs::phase_03(void* param_0) { /* 8001884C-80018890 01318C 0044+00 0/0 2/2 0/0 .text * Link__7cDylPhsFP30request_of_phase_process_classs */ int cDylPhs::Link(request_of_phase_process_class* i_phase, s16 param_1) { - static int (*l_method[3])(void*) = {cDylPhs::phase_01, (int (*)(void*))cDylPhs::phase_02, - cDylPhs::phase_03}; + static request_of_phase_process_fn l_method[3] = { + (request_of_phase_process_fn)cDylPhs::phase_01, + (request_of_phase_process_fn)cDylPhs::phase_02, + (request_of_phase_process_fn)cDylPhs::phase_03 + }; if (i_phase->id == cPhs_TWO_e) { return cPhs_COMPLEATE_e; diff --git a/src/d/d_bright_check.cpp b/src/d/d_bright_check.cpp index aec69a7a85..0c0c463c7c 100644 --- a/src/d/d_bright_check.cpp +++ b/src/d/d_bright_check.cpp @@ -401,4 +401,4 @@ asm dDlst_BrightCheck_c::~dDlst_BrightCheck_c() { } #pragma pop -/* 803949D8-803949D8 021038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 803949D8-803949D8 021038 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
\ No newline at end of file diff --git a/src/d/file/d_file_select.cpp b/src/d/file/d_file_select.cpp index 52707f9efd..199d746195 100644 --- a/src/d/file/d_file_select.cpp +++ b/src/d/file/d_file_select.cpp @@ -20,6 +20,7 @@ #include "m_Do/m_Do_MemCard.h" #include "m_Do/m_Do_controller_pad.h" #include "m_Do/m_Do_graphic.h" +#include "m_Do/m_Do_Reset.h" // @@ -443,13 +444,17 @@ SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { }; /* 803BA854-803BA860 017974 000C+00 3/3 0/0 0/0 .data SelStartFrameTbl */ -SECTION_DATA static u8 SelStartFrameTbl[12] = { - 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x8B, +SECTION_DATA static u32 SelStartFrameTbl[3] = { + 0x0000003B, + 0x00000063, + 0x0000008B, }; /* 803BA860-803BA86C 017980 000C+00 3/3 0/0 0/0 .data SelEndFrameTbl */ -SECTION_DATA static u8 SelEndFrameTbl[12] = { - 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x95, +SECTION_DATA static s32 SelEndFrameTbl[3] = { + 0x00000045, + 0x0000006D, + 0x00000095, }; /* 803BA86C-803BA878 01798C 000C+00 7/7 0/0 0/0 .data SelOpenStartFrameTbl */ @@ -467,14 +472,14 @@ SECTION_DATA static u32 SelOpenEndFrameTbl[3] = { }; /* 803BA884-803BA890 0179A4 000C+00 5/5 0/0 0/0 .data MenuSelStartFrameTbl */ -SECTION_DATA static u32 MenuSelStartFrameTbl[3] = { +SECTION_DATA static s32 MenuSelStartFrameTbl[3] = { 0x000007CD, 0x00000382, 0x00000390, }; /* 803BA890-803BA8A0 0179B0 000C+04 3/3 0/0 0/0 .data MenuSelEndFrameTbl */ -SECTION_DATA static u32 MenuSelEndFrameTbl[4] = { +SECTION_DATA static s32 MenuSelEndFrameTbl[4] = { 0x000007DB, 0x0000038E, 0x00000382, @@ -960,44 +965,8 @@ SECTION_DATA static void* lit_4213[3] = { #pragma pop /* 803BAAEC-803BAD20 017C0C 0234+00 1/2 0/0 0/0 .data DataSelProc */ -SECTION_DATA static u8 DataSelProc[564] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, -}; +typedef void (dFile_select_c::*DataSelProcFunc)(void); +SECTION_DATA static DataSelProcFunc DataSelProc[47] = {}; /* 803BAD20-803BAD30 017E40 0010+00 1/1 0/0 0/0 .data l_tagName101$5620 */ SECTION_DATA static u8 l_tagName101[16] = { @@ -1893,6 +1862,7 @@ static u8 lit_3807[12]; /* 8042C9EC-8042CA10 05970C 0024+00 35/35 0/0 0/0 .bss g_fsHIO */ static dFs_HIO_c_tmp g_fsHIO; +// static dFs_HIO_c g_fsHIO; /* 8045392C-80453930 001F2C 0004+00 1/1 0/0 0/0 .sdata2 @4165 */ SECTION_SDATA2 static f32 lit_4165 = 9.0f / 10.0f; @@ -1905,22 +1875,26 @@ SECTION_SDATA2 static f32 lit_4166[1 + 1 /* padding */] = { }; /* 801843CC-801844FC 17ED0C 0130+00 0/0 1/1 0/0 .text _create__14dFile_select_cFv */ -// Matches with literals #ifdef NONMATCHING +// setFadeColor instruction reordering void dFile_select_c::_create() { mDoGph_gInf_c::setFadeColor(static_cast<JUtility::TColor&>(g_blackColor)); mStick = new STControl(2, 2, 1, 1, 0.9f, 0.5f, 0, 0x2000); g_fsHIO.field_0x0004 = -1; - for (int iVar2 = 0; iVar2 < 3; iVar2++) { - mDataNew[iVar2] = 0; - field_0x025b[iVar2] = 0; + + for (int i = 0; i < 3; i++) { + mDataNew[i] = 0; + field_0x025b[i] = 0; } mSelectNum = 0; + dComIfGs_init(); dComIfGp_itemDataInit(); dComIfGs_setNewFile(0); - mHasDrawn = 0; + + mHasDrawn = false; + screenSet(); screenSetCopySel(); screenSet3Menu(); @@ -1940,14 +1914,48 @@ asm void dFile_select_c::_create() { #endif /* 801844FC-80184664 17EE3C 0168+00 0/0 1/1 0/0 .text _move__14dFile_select_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dFile_select_c::_move() { - nofralloc -#include "asm/d/file/d_file_select/_move__14dFile_select_cFv.s" +void dFile_select_c::_move() { + dMeter2Info_decMsgKeyWaitTimer(); + + s32 drive_status = DVDGetDriveStatus(); + + if (drive_status != DVD_STATE_END && drive_status != DVD_STATE_BUSY && field_0x03b1 != 0) { + field_0x03b1 = 0; + } + + if ((mDoMemCd_getProbeStat() == 0 || mDoMemCd_getProbeStat() == 1) && (mDoRst::isReset() == 0 && field_0x03b1 == 0)) { + if (field_0x2378->getAlpha() != 0) { + field_0x2378->setAlpha(0); + } + + field_0x026f = 0; + field_0x0271 = 0; + + } + + (this->*DataSelProc[field_0x026f])(); + + selFileWakuAnm(); + bookIconAnm(); + dataDelEffAnm(); + dataCopyEffAnm(); + + mFileSelectDlst.mpScreen->animation(); + mFileSelYesNoDlst.mpScreen->animation(); + mFileSel3mDlst.mpScreen->animation(); + mFileSelDeleteDlst.mpScreen->animation(); + + if (mFileSelCopyDlst.field_0x08) { + selCopyFileWakuAnm(); + copyBookIconAnm(); + mFileSelCopyDlst.mpScreen->animation(); + } + + mpFileWarning->_move(); + mpFileSelect3d->_move(); + + mDoMemCd_clearProbeStat(); } -#pragma pop /* ############################################################################################## */ /* 80453938-80453940 001F38 0008+00 34/34 0/0 0/0 .sdata2 @4342 */ @@ -1955,6 +1963,53 @@ SECTION_SDATA2 static f64 lit_4342 = 4503601774854144.0 /* cast s32 to float */; /* 80184664-801848A0 17EFA4 023C+00 1/1 0/0 0/0 .text selFileWakuAnm__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::selFileWakuAnm() { + field_0x01cc += 2; + + if (field_0x01cc >= field_0x01c8->getFrameMax()) + field_0x01cc -= field_0x01c8->getFrameMax(); + + field_0x01c8->setFrame(field_0x01cc); + field_0x01D4 += 2; + + if (field_0x01D4 >= field_0x01d0->getFrameMax()) + field_0x01D4 -= field_0x01d0->getFrameMax(); + + field_0x01d0->setFrame(field_0x01D4); + field_0x031c += 2; + + if (field_0x031c >= field_0x0318->getFrameMax()) + field_0x031c -= field_0x0318->getFrameMax(); + + field_0x0318->setFrame(field_0x031c); + field_0x0324 += 2; + + if (field_0x0324 >= field_0x0320->getFrameMax()) + field_0x0324 -= field_0x0320->getFrameMax(); + + field_0x0320->setFrame(field_0x0324); + field_0x0334 += 2; + + if (field_0x0334 >= field_0x0330->getFrameMax()) + field_0x0334 -= field_0x0330->getFrameMax(); + + field_0x0330->setFrame(field_0x0334); + field_0x033c += 2; + + if (field_0x033c >= field_0x0338->getFrameMax()) + field_0x033c -= field_0x0338->getFrameMax(); + + field_0x0338->setFrame(field_0x033c); + field_0x03a4 += 2; + + if (field_0x03a4 >= field_0x03a0->getFrameMax()) + field_0x03a4 -= field_0x03a0->getFrameMax(); + + field_0x03a0->setFrame(field_0x03a4); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1963,8 +2018,32 @@ asm void dFile_select_c::selFileWakuAnm() { #include "asm/d/file/d_file_select/selFileWakuAnm__14dFile_select_cFv.s" } #pragma pop +#endif /* 801848A0-8018499C 17F1E0 00FC+00 1/1 0/0 0/0 .text bookIconAnm__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::bookIconAnm() { + field_0x01dc += 2; + + if (field_0x01dc >= field_0x01d8->getFrameMax()) + field_0x01dc -= field_0x01d8->getFrameMax(); + + field_0x01d8->setFrame(field_0x01dc); + field_0x01e4 += 2; + + if (field_0x01e4 >= field_0x01e0->getFrameMax()) + field_0x01e4 -= field_0x01e0->getFrameMax(); + + field_0x01e0->setFrame(field_0x01e4); + field_0x01ec += 2; + + if (field_0x01ec >= field_0x01e8->getFrameMax()) + field_0x01ec -= field_0x01e8->getFrameMax(); + + field_0x01e8->setFrame(field_0x01ec); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1973,8 +2052,26 @@ asm void dFile_select_c::bookIconAnm() { #include "asm/d/file/d_file_select/bookIconAnm__14dFile_select_cFv.s" } #pragma pop +#endif /* 8018499C-80184A48 17F2DC 00AC+00 1/1 0/0 0/0 .text selCopyFileWakuAnm__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::selCopyFileWakuAnm() { + field_0x02ec += 2; + + if (field_0x02ec >= field_0x02e8->getFrameMax()) + field_0x02ec -= field_0x02e8->getFrameMax(); + + field_0x02e8->setFrame(field_0x02ec); + field_0x02f4 += 2; + + if (field_0x02f4 >= field_0x02f0->getFrameMax()) + field_0x02f4 -= field_0x02f0->getFrameMax(); + + field_0x02f0->setFrame(field_0x02f4); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1983,9 +2080,33 @@ asm void dFile_select_c::selCopyFileWakuAnm() { #include "asm/d/file/d_file_select/selCopyFileWakuAnm__14dFile_select_cFv.s" } #pragma pop +#endif /* 80184A48-80184B44 17F388 00FC+00 1/1 0/0 0/0 .text copyBookIconAnm__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::copyBookIconAnm() { + field_0x02fc += 2; + + if (field_0x02fc >= field_0x02f8->getFrameMax()) + field_0x02fc -= field_0x02f8->getFrameMax(); + + field_0x02f8->setFrame(field_0x02fc); + field_0x0304 += 2; + + if (field_0x0304 >= field_0x0300->getFrameMax()) + field_0x0304 -= field_0x0300->getFrameMax(); + + field_0x0300->setFrame(field_0x0304); + field_0x030c += 2; + + if (field_0x030c >= field_0x0308->getFrameMax()) + field_0x030c -= field_0x0308->getFrameMax(); + + field_0x0308->setFrame(field_0x030c); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1994,9 +2115,29 @@ asm void dFile_select_c::copyBookIconAnm() { #include "asm/d/file/d_file_select/copyBookIconAnm__14dFile_select_cFv.s" } #pragma pop +#endif /* 80184B44-80184BFC 17F484 00B8+00 1/1 0/0 0/0 .text dataDelEffAnm__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::dataDelEffAnm() { + if (field_0x0208 != 0) { + field_0x0204 += 2; + + if (field_0x0204 >= field_0x0200->getFrameMax()) + field_0x0204 -= field_0x0200->getFrameMax(); + + field_0x0200->setFrame(field_0x0204); + field_0x01f4 += 2; + + if (field_0x01f4 >= field_0x01f0->getFrameMax()) + field_0x01f4 -= field_0x01f0->getFrameMax(); + + field_0x01f0->setFrame(field_0x01f4); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2005,9 +2146,29 @@ asm void dFile_select_c::dataDelEffAnm() { #include "asm/d/file/d_file_select/dataDelEffAnm__14dFile_select_cFv.s" } #pragma pop +#endif /* 80184BFC-80184CB4 17F53C 00B8+00 1/1 0/0 0/0 .text dataCopyEffAnm__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::dataCopyEffAnm() { + if (field_0x0209 != 0) { + field_0x0204 += 2; + + if (field_0x0204 >= field_0x0200->getFrameMax()) + field_0x0204 -= field_0x0200->getFrameMax(); + + field_0x0200->setFrame(field_0x0204); + field_0x01fc += 2; + + if (field_0x01fc >= field_0x01f8->getFrameMax()) + field_0x01fc -= field_0x01f8->getFrameMax(); + + field_0x01f8->setFrame(field_0x01fc); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2016,9 +2177,21 @@ asm void dFile_select_c::dataCopyEffAnm() { #include "asm/d/file/d_file_select/dataCopyEffAnm__14dFile_select_cFv.s" } #pragma pop +#endif /* 80184CB4-80184D4C 17F5F4 0098+00 2/2 0/0 0/0 .text * selectDataBaseMoveAnmInitSet__14dFile_select_cFii */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::selectDataBaseMoveAnmInitSet(int param_0, int param_1) { + field_0x00a4->getPanePtr()->setAnimation((J2DAnmTransform*)mpAnmBase[0]); + field_0x00b0 = param_0; + field_0x00b4 = param_1; + mpAnmBase[0]->setFrame(field_0x00b0); + field_0x00a4->getPanePtr()->animationTransform(); + field_0x00b9 = 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2027,16 +2200,48 @@ asm void dFile_select_c::selectDataBaseMoveAnmInitSet(int param_0, int param_1) #include "asm/d/file/d_file_select/selectDataBaseMoveAnmInitSet__14dFile_select_cFii.s" } #pragma pop +#endif /* 80184D4C-80184E38 17F68C 00EC+00 2/2 0/0 0/0 .text selectDataBaseMoveAnm__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +bool dFile_select_c::selectDataBaseMoveAnm() { + if (field_0x00b0 != field_0x00b4) { + if (field_0x00b0 < field_0x00b4) { + field_0x00b0 += 2; + + if (field_0x00b0 > field_0x00b4) + field_0x00b0 = field_0x00b4; + + } else { + field_0x00b0 -= 2; + + if (field_0x00b0 < field_0x00b4) + field_0x00b0 = field_0x00b4; + + } + + mpAnmBase[0]->setFrame(field_0x00b0); + field_0x00a4->getPanePtr()->animationTransform(); + return false; + } else { + field_0x00b0 == 0x21 ? field_0x00b8 = 1 : field_0x00b8 = 0; + field_0x00b9 = 0; + + field_0x00a4->getPanePtr()->setAnimation((J2DAnmTransform*)0); + return true; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dFile_select_c::selectDataBaseMoveAnm() { +asm bool dFile_select_c::selectDataBaseMoveAnm() { nofralloc #include "asm/d/file/d_file_select/selectDataBaseMoveAnm__14dFile_select_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80453940-80453944 001F40 0004+00 38/38 0/0 0/0 .sdata2 @4611 */ @@ -2046,6 +2251,58 @@ SECTION_SDATA2 static f32 lit_4611 = 1.0f; SECTION_SDATA2 static f32 lit_4612 = -1.0f; /* 80184E38-80185040 17F778 0208+00 1/1 0/0 0/0 .text dataSelectInAnmSet__14dFile_select_cFv */ +#ifdef NONMATCHING +void dFile_select_c::dataSelectInAnmSet() { + setSaveData(); + char* card_ptr = &mpMemCard; + OSTime date_ipl = mpSave->getPlayer().getPlayerStatusB().getDateIpl(); // guess + + // pdVar1 = (dSv_player_c *)dSv_save_c::getPlayer((dSv_save_c *)this_00); + // pdVar2 = (dSv_player_status_b_c *)dSv_player_c::getPlayerStatusB(pdVar1); + // uVar4 = dSv_player_status_b_c::getDateIpl(pdVar2); + mSelectNum = 0; + for (int i = 0; i < 3; i++) { + if (field_0x025b[i] == 0) { + // pdVar1 = (dSv_player_c *)dSv_save_c::getPlayer((dSv_save_c *)this_00); + // pdVar2 = (dSv_player_status_b_c *)dSv_player_c::getPlayerStatusB(pdVar1); + // uVar5 = dSv_player_status_b_c::getDateIpl(pdVar2); + + OSTime date_ipl2 = mpSave->getPlayer().getPlayerStatusB().getDateIpl(); + OSTime div_res = date_ipl2 / date_ipl; + + // wrong, fix + if (div_res < date_ipl) { + date_ipl = date_ipl2; + mSelectNum = i; + } + // uVar6 = Runtime.PPCEABI.H::__div2i + // ((int)((ulonglong)uVar5 >> 0x20),(int)uVar5,0,DAT_800000f8 >> 2); + // uVar7 = Runtime.PPCEABI.H::__div2i + // ((int)((ulonglong)uVar4 >> 0x20),(int)uVar4,0,DAT_800000f8 >> 2); + // if (((uint)((ulonglong)uVar7 >> 0x20) ^ 0x80000000) < + // (uint)((uint)uVar7 < (uint)uVar6) + ((uint)((ulonglong)uVar6 >> 0x20) ^ 0x80000000)) { + // mSelectNum = (byte)iVar3; + // uVar4 = uVar5; + // } + } + + card_ptr += 0xa94; + + if (field_0x025b[i] == 0 && mDataNew[i] != 0) { + field_0x0220[i]->setAlpha(0); + field_0x022c[i]->setAlpha(0xFF); + } else { + field_0x0220[i]->setAlpha(0xFF); + field_0x022c[i]->setAlpha(0); + } + + field_0x0188[i]->setAlpha(0); + } + mpFileWarning->init(); + selectDataBaseMoveAnmInitSet(1,0x21); + mDoAud_seStart(Z2SE_SY_FILE_MENU_SLIDE_IN,0,0,0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2054,19 +2311,89 @@ asm void dFile_select_c::dataSelectInAnmSet() { #include "asm/d/file/d_file_select/dataSelectInAnmSet__14dFile_select_cFv.s" } #pragma pop +#endif /* 80185040-80185230 17F980 01F0+00 1/0 0/0 0/0 .text dataSelectIn__14dFile_select_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dFile_select_c::dataSelectIn() { - nofralloc -#include "asm/d/file/d_file_select/dataSelectIn__14dFile_select_cFv.s" +void dFile_select_c::dataSelectIn() { + bool headerTxtChange = headerTxtChangeAnm(); + bool selectDataBaseMove = selectDataBaseMoveAnm(); + + bool errorMove = true; + if (field_0x014a || field_0x014b) { + errorMove = errorMoveAnm(); + } + + bool yesnoMenuMove = true; + if (field_0x0108 || field_0x0281) { + yesnoMenuMove = yesnoMenuMoveAnm(); + } + + bool nameMove = true; + if (field_0x0128 || mFileSelCopyDlst.field_0x08) { + nameMove = nameMoveAnm(); + } + + bool menuMove = true; + if (field_0x0360 || field_0x0283) { + menuMove = menuMoveAnm(); + } + + bool modoruTxtDisp = modoruTxtDispAnm(); + + if (headerTxtChange == true && selectDataBaseMove == true && + errorMove == true && yesnoMenuMove == true && + nameMove == true && menuMove == true && + modoruTxtDisp == true) { + for (int i = 0; i < 3; i++) { + field_0x00bc[i]->reinit(); + } + + headerTxtSet(0x43,1,0); + mLastSelectNum = mSelectNum; + field_0x00bc[mSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)mpAnmBase[0]); + field_0x00e0[mSelectNum] = SelStartFrameTbl[mSelectNum]; + field_0x0188[mSelectNum]->alphaAnimeStart(0); + ketteiTxtDispAnmInit(1); + field_0x026f = 2; + } } -#pragma pop /* 80185230-801853C4 17FB70 0194+00 1/0 0/0 0/0 .text dataSelectInit__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::dataSelectInit() { + bool headerTxtChange = headerTxtChangeAnm(); + bool alphaAnime = true; + bool ketteiTxtDisp = true; + bool check = true; + + if (mSelectNum != 0xFF) { + alphaAnime = field_0x0188[mSelectNum]->alphaAnime(g_fsHIO.field_0x0006,0,0xFF,1); + ketteiTxtDisp = ketteiTxtDispAnm(); + + if (field_0x00e0[mSelectNum] != SelEndFrameTbl[mSelectNum]) { + field_0x00e0[mSelectNum] += 2; + + if (field_0x00e0[mSelectNum] > SelEndFrameTbl[mSelectNum]) + field_0x00e0[mSelectNum] = SelEndFrameTbl[mSelectNum]; + + mpAnmBase[0]->setFrame(field_0x00e0[mSelectNum]); + field_0x00bc[mSelectNum]->getPanePtr()->animationTransform(); + check = false; + } + } + + if (headerTxtChange == true && alphaAnime == true && ketteiTxtDisp == true && check == true) { + if (mSelectNum != 0xFF) { + field_0x00bc[mSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + selFileCursorShow(); + } + + field_0x026f = 3; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2075,8 +2402,41 @@ asm void dFile_select_c::dataSelectInit() { #include "asm/d/file/d_file_select/dataSelectInit__14dFile_select_cFv.s" } #pragma pop +#endif /* 801853C4-80185508 17FD04 0144+00 1/0 0/0 0/0 .text dataSelect__14dFile_select_cFv */ +// handles switching between quest logs +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::dataSelect() { + mStick->checkTrigger(); + + // If A or Start was pressed + if (mDoCPd_c::getTrigA(PAD_1) || mDoCPd_c::getTrigStart(PAD_1)) { + dataSelectStart(); // run the quest log open process + } else { + if (mStick->checkUpTrigger()) { + // if we're not on the top quest log + if (mSelectNum != 0) { + mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR,0,0,0); + mLastSelectNum = mSelectNum; + mSelectNum--; + dataSelectAnmSet(); // run the quest log selection animation + field_0x026f = 4; + } + } else if (mStick->checkDownTrigger()) { + // if we're not on the bottom quest log + if (mSelectNum != 2) { + mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR,0,0,0); + mLastSelectNum = mSelectNum; + mSelectNum++; + dataSelectAnmSet(); // run the quest log selection animation + field_0x026f = 4; + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2085,29 +2445,26 @@ asm void dFile_select_c::dataSelect() { #include "asm/d/file/d_file_select/dataSelect__14dFile_select_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 804506B0-804506B8 000130 0008+00 2/2 0/0 0/0 .sdata YnSelStartFrameTbl */ -SECTION_SDATA static u8 YnSelStartFrameTbl[8] = { - 0x00, 0x00, 0x04, 0xE3, 0x00, 0x00, 0x04, 0xD4, +SECTION_SDATA static u32 YnSelStartFrameTbl[2] = { + 0x000004E3, + 0x000004D4, }; /* 804506B8-804506C0 000138 0008+00 2/2 0/0 0/0 .sdata YnSelEndFrameTbl */ -SECTION_SDATA static u8 YnSelEndFrameTbl[8] = { - 0x00, 0x00, 0x04, 0xD4, 0x00, 0x00, 0x04, 0xE3, +SECTION_SDATA static u32 YnSelEndFrameTbl[2] = { + 0x000004D4, + 0x000004E3, }; /* 804506C0-804506C8 000140 0006+02 4/4 0/0 0/0 .sdata msgTbl */ -SECTION_SDATA static u8 msgTbl[6 + 2 /* padding */] = { - 0x00, - 0x40, - 0x00, - 0x41, - 0x00, - 0x42, - /* padding */ - 0x00, - 0x00, +SECTION_SDATA static u16 msgTbl[3] = { + 0x0040, + 0x0041, + 0x0042, }; /* 80453948-8045394C 001F48 0004+00 35/35 0/0 0/0 .sdata2 @4778 */ @@ -2120,6 +2477,11 @@ SECTION_SDATA2 static u8 lit_4778[4] = { /* 80185508-80185994 17FE48 048C+00 1/1 0/0 0/0 .text dataSelectStart__14dFile_select_cFv */ +#ifdef NONMATCHING +void dFile_select_c::dataSelectStart() { + +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2128,9 +2490,26 @@ asm void dFile_select_c::dataSelectStart() { #include "asm/d/file/d_file_select/dataSelectStart__14dFile_select_cFv.s" } #pragma pop +#endif /* 80185994-80185AAC 1802D4 0118+00 7/7 0/0 0/0 .text * selectDataMoveAnmInitSet__14dFile_select_cFii */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::selectDataMoveAnmInitSet(int param_0, int param_1) { + field_0x00bc[0]->getPanePtr()->setAnimation((J2DAnmTransform*)mpAnmBase[0]); + field_0x00bc[1]->getPanePtr()->setAnimation((J2DAnmTransform*)mpAnmBase[0]); + field_0x00bc[2]->getPanePtr()->setAnimation((J2DAnmTransform*)mpAnmBase[0]); + mpPane->setAnimation((J2DAnmTransform*)mpAnmBase[0]); + field_0x00e0[mSelectNum] = param_0; + field_0x00ec = (s32*)param_1; + mpAnmBase[0]->setFrame(field_0x00e0[mSelectNum]); + field_0x00bc[0]->getPanePtr()->animationTransform(); + field_0x00bc[1]->getPanePtr()->animationTransform(); + field_0x00bc[2]->getPanePtr()->animationTransform(); + mpPane->animationTransform(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2139,18 +2518,78 @@ asm void dFile_select_c::selectDataMoveAnmInitSet(int param_0, int param_1) { #include "asm/d/file/d_file_select/selectDataMoveAnmInitSet__14dFile_select_cFii.s" } #pragma pop +#endif /* 80185AAC-80185C2C 1803EC 0180+00 8/8 0/0 0/0 .text selectDataMoveAnm__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +bool dFile_select_c::selectDataMoveAnm() { + if (field_0x00e0[mSelectNum] != field_0x00ec) { + if (field_0x00e0[mSelectNum] < field_0x00ec) { + field_0x00e0[mSelectNum] += 2; + + if (field_0x00e0[mSelectNum] > field_0x00ec) + field_0x00e0[mSelectNum] = field_0x00ec; + + } else { + field_0x00e0[mSelectNum] -= 2; + + if (field_0x00e0[mSelectNum] < field_0x00ec) + field_0x00e0[mSelectNum] = field_0x00ec; + } + + mpAnmBase[0]->setFrame(field_0x00e0[mSelectNum]); + + for (int i = 0; i < 3; i++) { + field_0x00bc[i]->getPanePtr()->animationTransform(); + } + mpPane->animationTransform(); + } + + if (field_0x00e0[mSelectNum] == field_0x00ec) { + for (int i = 0; i < 3; i++) { + field_0x00bc[i]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + } + mpPane->setAnimation((J2DAnmTransform*)0); + return true; + } else { + return false; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dFile_select_c::selectDataMoveAnm() { +asm bool dFile_select_c::selectDataMoveAnm() { nofralloc #include "asm/d/file/d_file_select/selectDataMoveAnm__14dFile_select_cFv.s" } #pragma pop +#endif /* 80185C2C-80185DE0 18056C 01B4+00 1/1 0/0 0/0 .text dataSelectAnmSet__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::dataSelectAnmSet() { + if (mSelectNum != 0xff) { + field_0x00bc[mSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)mpAnmBase[0]); + field_0x00e0[mSelectNum] = SelStartFrameTbl[mSelectNum]; + mpAnmBase[0]->setFrame(field_0x00e0[mSelectNum]); + field_0x00bc[mSelectNum]->getPanePtr()->animationTransform(); + field_0x0188[mSelectNum]->alphaAnimeStart(0); + } + + if (mLastSelectNum != 0xff) { + selectWakuAlpahAnmInit(mLastSelectNum,0xff,0,g_fsHIO.field_0x0008); + field_0x00bc[mLastSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)mpAnmBase[1]); // wrong? + field_0x00e0[mLastSelectNum] = SelEndFrameTbl[mLastSelectNum]; + mpAnmBase[1]->setFrame(field_0x00e0[mLastSelectNum]); + field_0x00bc[mLastSelectNum]->getPanePtr()->animationTransform(); + field_0x0188[mLastSelectNum]->alphaAnimeStart(0); + mpCursor1->setAlphaRate(0.0f); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2159,8 +2598,63 @@ asm void dFile_select_c::dataSelectAnmSet() { #include "asm/d/file/d_file_select/dataSelectAnmSet__14dFile_select_cFv.s" } #pragma pop +#endif /* 80185DE0-80186088 180720 02A8+00 1/0 0/0 0/0 .text dataSelectMoveAnime__14dFile_select_cFv */ +#ifdef NONMATCHING +// still alot wrong +void dFile_select_c::dataSelectMoveAnime() { + int iVar7 = 1; + int iVar6 = 1; + bool bVar1 = true; + if (mLastSelectNum != 0xff) { + field_0x0188[mLastSelectNum]->alphaAnime(g_fsHIO.field_0x0006,0xff,0,1); + selectWakuAlpahAnm(mLastSelectNum); + + if (field_0x00e0[mLastSelectNum] != SelStartFrameTbl[mLastSelectNum]) { + field_0x00e0[mLastSelectNum] = field_0x00e0[mLastSelectNum] - 2; + + if (field_0x00e0[mLastSelectNum] < SelStartFrameTbl[mLastSelectNum]) + field_0x00e0[mLastSelectNum] = SelStartFrameTbl[mLastSelectNum]; + + mpAnmBase[1]->setFrame(field_0x00e0[mLastSelectNum]); + field_0x00bc[mLastSelectNum]->getPanePtr()->animationTransform(); + bVar1 = false; + } + } + + int iVar5 = 1; + bool bVar2 = true; + + if (mSelectNum != 0xff) { + field_0x0188[mSelectNum]->alphaAnime(g_fsHIO.field_0x0006,0,0xff,1); + + if (field_0x00e0[mSelectNum] != SelEndFrameTbl[mSelectNum]) { + field_0x00e0[mSelectNum] = field_0x00e0[mSelectNum] + 2; + + if (SelEndFrameTbl[mSelectNum] < field_0x00e0[mSelectNum]) + field_0x00e0[mSelectNum] = SelEndFrameTbl[mSelectNum]; + + mpAnmBase[0]->setFrame(field_0x00e0[mSelectNum]); + field_0x00bc[mSelectNum]->getPanePtr()->animationTransform(); + bVar2 = false; + } + } + + if (iVar7 == 1 && iVar6 == 1 && bVar1 && (iVar5 == 1 && !bVar2)) { + if (mSelectNum != 0xff) { + field_0x00bc[mSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + selFileCursorShow(); + } + + if (mLastSelectNum != 0xff) { + field_0x00bc[mLastSelectNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + } + + field_0x026f = 3; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2169,6 +2663,7 @@ asm void dFile_select_c::dataSelectMoveAnime() { #include "asm/d/file/d_file_select/dataSelectMoveAnime__14dFile_select_cFv.s" } #pragma pop +#endif /* 80186088-801864DC 1809C8 0454+00 2/2 0/0 0/0 .text makeRecInfo__14dFile_select_cFUc */ #pragma push @@ -2181,6 +2676,27 @@ asm void dFile_select_c::makeRecInfo(u8 param_0) { #pragma pop /* 801864DC-80186638 180E1C 015C+00 1/0 0/0 0/0 .text selectDataOpenMove__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals (s32 -> float cast) +void dFile_select_c::selectDataOpenMove() { + bool headerTxtChange = headerTxtChangeAnm(); + bool selectDataMove = selectDataMoveAnm(); + bool menuMove = menuMoveAnm(); + bool modoruTxtDisp = modoruTxtDispAnm(); + bool selectWakuAlpah = selectWakuAlpahAnm(mSelectNum); + + if (headerTxtChange == true && selectDataMove == true && menuMove == true && + modoruTxtDisp == true && selectWakuAlpah == true) { + mSelectMenuNum = 1; + field_0x0340[mSelectMenuNum]->getPanePtr()->setAnimation(field_0x0328); + field_0x0328->setFrame(MenuSelStartFrameTbl[mSelectMenuNum]); + field_0x0340[mSelectMenuNum]->getPanePtr()->animationTransform(); + field_0x0340[mSelectMenuNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + menuCursorShow(); + field_0x026f = 8; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2189,55 +2705,68 @@ asm void dFile_select_c::selectDataOpenMove() { #include "asm/d/file/d_file_select/selectDataOpenMove__14dFile_select_cFv.s" } #pragma pop +#endif /* 80186638-801866C8 180F78 0090+00 1/0 0/0 0/0 .text selectDataNameMove__14dFile_select_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dFile_select_c::selectDataNameMove() { - nofralloc -#include "asm/d/file/d_file_select/selectDataNameMove__14dFile_select_cFv.s" +void dFile_select_c::selectDataNameMove() { + bool headerTxtChange = headerTxtChangeAnm(); + bool fileRecScale = fileRecScaleAnm2(); + bool nameMove = nameMoveAnm(); + bool modoruTxtDisp = modoruTxtDispAnm(); + + if (headerTxtChange == true && fileRecScale == true && nameMove == true && modoruTxtDisp == true) { + field_0x026f = 15; + } } -#pragma pop /* 801866C8-80186774 181008 00AC+00 1/0 0/0 0/0 .text selectDataOpenEraseMove__14dFile_select_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dFile_select_c::selectDataOpenEraseMove() { - nofralloc -#include "asm/d/file/d_file_select/selectDataOpenEraseMove__14dFile_select_cFv.s" +void dFile_select_c::selectDataOpenEraseMove() { + bool headerTxtChange = headerTxtChangeAnm(); + bool selectDataMove = selectDataMoveAnm(); + yesnoMenuMoveAnm(); + bool modoruTxtDisp = modoruTxtDispAnm(); + bool selectWakuAlpah = selectWakuAlpahAnm(mSelectNum); + + if (headerTxtChange == true && selectDataMove == true && modoruTxtDisp == true && selectWakuAlpah == true) { + field_0x026e = 2; + yesnoCursorShow(); + field_0x026f = 26; + } } -#pragma pop /* 80186774-801868EC 1810B4 0178+00 1/0 0/0 0/0 .text menuSelect__14dFile_select_cFv */ +// Handles selecting between copy / start / delete menus in quest log #ifdef NONMATCHING // matches with literals void dFile_select_c::menuSelect() { mStick->checkTrigger(); + // if a was pressed, do the menu selection process if (mDoCPd_c::getTrigA(PAD_1)) { menuSelectStart(); } else { + // if b was pressed, do the menu cancel process if (mDoCPd_c::getTrigB(PAD_1)) { menuSelectCansel(); } else { if (mStick->checkRightTrigger()) { - if (field_0x0258[mSelectNum] == 0 && field_0x0267 != 0) { + if (field_0x0258[mSelectNum] == 0 && mSelectMenuNum != 0) { mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON,0,0,0); - field_0x0266 = field_0x0267; - field_0x0267--; - menuSelectAnmSet(); + mLastSelectMenuNum = mSelectMenuNum; + mSelectMenuNum--; + menuSelectAnmSet(); // run the menu selection animation field_0x026f = 9; } - } else if (mStick->checkLeftTrigger() && field_0x0258[mSelectNum] == 0 && field_0x0267 != 2) { - mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON,0,0,0); - field_0x0266 = field_0x0267; - field_0x0267++; - menuSelectAnmSet(); - field_0x026f = 9; - } + } else if (mStick->checkLeftTrigger()) { + if (field_0x0258[mSelectNum] == 0 && mSelectMenuNum != 2) { + mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON,0,0,0); + mLastSelectMenuNum = mSelectMenuNum; + mSelectMenuNum++; + menuSelectAnmSet(); // run the menu selection animation + field_0x026f = 9; + } + } } } } @@ -2254,25 +2783,26 @@ asm void dFile_select_c::menuSelect() { /* 801868EC-80186A80 18122C 0194+00 1/1 0/0 0/0 .text menuSelectStart__14dFile_select_cFv */ +// Handles copy / start / delete actions depending on which menu is selected from menuSelect #ifdef NONMATCHING // matches with literals void dFile_select_c::menuSelectStart() { mDoAud_seStart(Z2SE_SY_CURSOR_OK,0,0,0); - if (field_0x0267 == 1) { + if (mSelectMenuNum == 1) { dComIfGs_setCardToMemory(&mpMemCard,mSelectNum); field_0x0270 = 1; - field_0x026f = 0x2e; + field_0x026f = 46; dComIfGs_setDataNum(mSelectNum); } - else if (field_0x0267 == 0) { + else if (mSelectMenuNum == 0) { mpCursor1->setAlphaRate(0.0f); yesnoMenuMoveAnmInitSet(0x473,0x47d); headerTxtSet(0x49, 0,0); field_0x026e = 1; field_0x026f = 12; } - else if (field_0x0267 == 2) { + else if (mSelectMenuNum == 2) { field_0x026a = mSelectNum; menuMoveAnmInitSet(0x329,799); headerTxtSet(0x44,0,0); @@ -2321,18 +2851,16 @@ asm void dFile_select_c::menuSelectCansel() { /* 80186B48-80186C84 181488 013C+00 8/8 0/0 0/0 .text menuMoveAnmInitSet__14dFile_select_cFii */ #ifdef NONMATCHING -// getPanePtr() calling function past end of vtable? +// matches with literals void dFile_select_c::menuMoveAnmInitSet(int param_0, int param_1) { if (param_0 == 799) { field_0x0283 = true; for (int i = 0; i < 3; i++) { - if (i == field_0x0267) { - JUtility::TColor black = JUtility::TColor(255,255,255,255); - (&mpPaneMgr2)[i]->getPanePtr()->setAnimation((J2DAnmVtxColor*)&black); + if (i == mSelectMenuNum) { + static_cast<J2DTextBox*>((&mpPaneMgr2)[i]->getPanePtr())->setWhite(JUtility::TColor(255,255,255,255)); } else { - JUtility::TColor darkGrey = JUtility::TColor(150,150,150,255); - (&mpPaneMgr2)[i]->getPanePtr()->setAnimation((J2DAnmVtxColor*)&darkGrey); + static_cast<J2DTextBox*>((&mpPaneMgr2)[i]->getPanePtr())->setWhite(JUtility::TColor(150,150,150,255)); } } } @@ -2354,6 +2882,7 @@ asm void dFile_select_c::menuMoveAnmInitSet(int param_0, int param_1) { #pragma pop #endif +// Auto generated from the above function. Delete later /* 80186C84-80186CAC 1815C4 0028+00 0/0 1/0 0/0 .text setWhite__10J2DTextBoxFQ28JUtility6TColor */ #pragma push #pragma optimization_level 0 @@ -2366,6 +2895,44 @@ extern "C" asm void setWhite__10J2DTextBoxFQ28JUtility6TColor() { #pragma pop /* 80186CAC-80186E14 1815EC 0168+00 9/9 0/0 0/0 .text menuMoveAnm__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +bool dFile_select_c::menuMoveAnm() { + if (field_0x0358 != field_0x035c) { + if (field_0x0358 < field_0x035c){ + field_0x0358 += 2; + + if (field_0x0358 > field_0x035c) + field_0x0358 = field_0x035c; + } else { + field_0x0358 -= 2; + + if (field_0x0358 < field_0x035c) + field_0x0358 = field_0x035c; + } + + field_0x0328->setFrame(field_0x0358); + field_0x0118->animationTransform(); + return false; + } else { + field_0x0118->setAnimation((J2DAnmTransform*)0); + if (field_0x035c == 0x0329) { + field_0x0360 = true; + field_0x0283 = false; + } else { + field_0x0360 = false; + + if (mSelectMenuNum != 0xFF) { + (&mpPaneAlpha1)[mSelectMenuNum]->setAlpha(0); + (&mpPaneAlpha2)[mSelectMenuNum]->setAlpha(0); + (&mpPaneAlpha3)[mSelectMenuNum]->setAlpha(0); + } + } + + return true; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2374,24 +2941,25 @@ asm bool dFile_select_c::menuMoveAnm() { #include "asm/d/file/d_file_select/menuMoveAnm__14dFile_select_cFv.s" } #pragma pop +#endif /* 80186E14-80186F98 181754 0184+00 1/1 0/0 0/0 .text menuSelectAnmSet__14dFile_select_cFv */ #ifdef NONMATCHING // matches with literals void dFile_select_c::menuSelectAnmSet() { - if (field_0x0267 != 0xFF) { - (&field_0x0340)[field_0x0267]->getPanePtr()->setAnimation(field_0x0328); - (&field_0x034c)[field_0x0267] = MenuSelEndFrameTbl[field_0x0267]; - field_0x0328->setFrame((&field_0x034c)[field_0x0267]); - (&field_0x0340)[field_0x0267]->getPanePtr()->animationTransform(); + if (mSelectMenuNum != 0xFF) { + (&field_0x0340)[mSelectMenuNum]->getPanePtr()->setAnimation(field_0x0328); + field_0x034c[mSelectMenuNum] = MenuSelEndFrameTbl[mSelectMenuNum]; + field_0x0328->setFrame(field_0x034c[mSelectMenuNum]); + (&field_0x0340)[mSelectMenuNum]->getPanePtr()->animationTransform(); } - if (field_0x0266 != 0xFF) { - (&field_0x0340)[field_0x0266]->getPanePtr()->setAnimation(field_0x032c); - (&field_0x034c)[field_0x0266] = MenuSelStartFrameTbl[field_0x0266]; - field_0x032c->setFrame((&field_0x034c)[field_0x0266]); - (&field_0x0340)[field_0x0266]->getPanePtr()->animationTransform(); - menuWakuAlpahAnmInit(field_0x0266,0xFF,0,g_fsHIO.field_0x0008); + if (mLastSelectMenuNum != 0xFF) { + (&field_0x0340)[mLastSelectMenuNum]->getPanePtr()->setAnimation(field_0x032c); + field_0x034c[mLastSelectMenuNum] = MenuSelStartFrameTbl[mLastSelectMenuNum]; + field_0x032c->setFrame(field_0x034c[mLastSelectMenuNum]); + (&field_0x0340)[mLastSelectMenuNum]->getPanePtr()->animationTransform(); + menuWakuAlpahAnmInit(mLastSelectMenuNum,0xFF,0,g_fsHIO.field_0x0008); mpCursor1->setAlphaRate(0.0f); } } @@ -2404,9 +2972,70 @@ asm void dFile_select_c::menuSelectAnmSet() { #include "asm/d/file/d_file_select/menuSelectAnmSet__14dFile_select_cFv.s" } #pragma pop - #endif + /* 80186F98-8018721C 1818D8 0284+00 1/0 0/0 0/0 .text menuSelectMoveAnm__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::menuSelectMoveAnm() { + bool tmp1 = true; + if (mSelectMenuNum != 0xFF && field_0x034c[mSelectMenuNum] != MenuSelStartFrameTbl[mSelectMenuNum]) { + if (field_0x034c[mSelectMenuNum] > MenuSelStartFrameTbl[mSelectMenuNum]) { + field_0x034c[mSelectMenuNum] -= 2; + + if (field_0x034c[mSelectMenuNum] < MenuSelStartFrameTbl[mSelectMenuNum]) + field_0x034c[mSelectMenuNum] = MenuSelStartFrameTbl[mSelectMenuNum]; + } else { + field_0x034c[mSelectMenuNum] += 2; + + if (field_0x034c[mSelectMenuNum] > MenuSelStartFrameTbl[mSelectMenuNum]) + field_0x034c[mSelectMenuNum] = MenuSelStartFrameTbl[mSelectMenuNum]; + } + + field_0x0328->setFrame(field_0x034c[mSelectMenuNum]); + (&field_0x0340)[mSelectMenuNum]->getPanePtr()->animationTransform(); + tmp1 = false; + } + + bool tmp2 = true; + bool tmp3 = true; + + if (mLastSelectMenuNum != 0xFF) { + if (field_0x034c[mLastSelectMenuNum] != MenuSelEndFrameTbl[mLastSelectMenuNum]) { + if (field_0x034c[mLastSelectMenuNum] < MenuSelEndFrameTbl[mLastSelectMenuNum]) { + field_0x034c[mLastSelectMenuNum] += 2; + + if (field_0x034c[mLastSelectMenuNum] > MenuSelEndFrameTbl[mLastSelectMenuNum]) + field_0x034c[mLastSelectMenuNum] = MenuSelEndFrameTbl[mLastSelectMenuNum]; + + } else { + field_0x034c[mLastSelectMenuNum] -= 2; + + if (field_0x034c[mLastSelectMenuNum] < MenuSelEndFrameTbl[mLastSelectMenuNum]) + field_0x034c[mLastSelectMenuNum] = MenuSelEndFrameTbl[mLastSelectMenuNum]; + } + field_0x032c->setFrame(field_0x034c[mLastSelectMenuNum]); + (&field_0x0340)[mLastSelectMenuNum]->getPanePtr()->animationTransform(); + tmp2 = false; + } + + tmp3 = menuWakuAlpahAnm(mLastSelectMenuNum); + } + + if (tmp1 == true && tmp2 == true && tmp3 == true) { + if (mSelectMenuNum != 0xFF) { + (&field_0x0340)[mSelectMenuNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + menuCursorShow(); + } + + if (mLastSelectMenuNum != 0xFF) { + (&field_0x0340)[mLastSelectMenuNum]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + } + + field_0x026f = 8; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2415,6 +3044,7 @@ asm void dFile_select_c::menuSelectMoveAnm() { #include "asm/d/file/d_file_select/menuSelectMoveAnm__14dFile_select_cFv.s" } #pragma pop +#endif /* 8018721C-801872C4 181B5C 00A8+00 1/0 0/0 0/0 .text ToNameMove__14dFile_select_cFv */ void dFile_select_c::ToNameMove() { @@ -2447,16 +3077,50 @@ void dFile_select_c::ToNameMove2() { /* 80187384-801873BC 181CC4 0038+00 1/0 0/0 0/0 .text nameInputWait__14dFile_select_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dFile_select_c::nameInputWait() { - nofralloc -#include "asm/d/file/d_file_select/nameInputWait__14dFile_select_cFv.s" +void dFile_select_c::nameInputWait() { + mpName->showIcon(); + field_0x026f = 16; } -#pragma pop + /* 801873BC-801874F8 181CFC 013C+00 1/0 0/0 0/0 .text nameInput__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::nameInput() { + mpName->_move(); + if (mpName->getCurPos() == 0) { + if (field_0x024c != 0) { + modoruTxtChange(0); + } + } else if (field_0x024c == 0) { + modoruTxtChange(1); + } + + int inputEnd = mpName->isInputEnd(); + + switch(mpName->isInputEnd()) { + case 1: + if (dComIfGs_getNoFile() == 1) { + field_0x021e = 0; + field_0x026f = 0; + field_0x0271 = 0; + } else { + headerTxtSet(0x43,1,0); + fileRecScaleAnmInitSet2(0.0f,1.0f); + nameMoveAnmInitSet(0xd29,0xd1f); + modoruTxtDispAnmInit(0); + field_0x026f = 14; + } + break; + case 2: + dComIfGs_setPlayerName(mpName->getInputStrPtr()); + mpName->hideIcon(); + field_0x020a = 15; + field_0x026f = 17; + + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2465,16 +3129,21 @@ asm void dFile_select_c::nameInput() { #include "asm/d/file/d_file_select/nameInput__14dFile_select_cFv.s" } #pragma pop +#endif /* 801874F8-8018759C 181E38 00A4+00 1/0 0/0 0/0 .text nameToDataSelectMove__14dFile_select_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dFile_select_c::nameToDataSelectMove() { - nofralloc -#include "asm/d/file/d_file_select/nameToDataSelectMove__14dFile_select_cFv.s" +void dFile_select_c::nameToDataSelectMove() { + bool headerTxtChange = headerTxtChangeAnm(); + bool fileResScal = fileRecScaleAnm2(); + bool nameMove = nameMoveAnm(); + bool modoruTxtDisp = modoruTxtDispAnm(); + + if (headerTxtChange == true && fileResScal == true && nameMove == true && modoruTxtDisp == true) { + modoruTxtChange(0); + selFileCursorShow(); + field_0x026f = 3; + } } -#pragma pop /* ############################################################################################## */ /* 8045394C-80453950 001F4C 0004+00 4/4 0/0 0/0 .sdata2 @5472 */ @@ -2492,6 +3161,25 @@ SECTION_SDATA2 static f64 lit_5475 = 4503599627370496.0 /* cast u32 to float */; /* 8018759C-801876A0 181EDC 0104+00 1/0 0/0 0/0 .text nameInputFade__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::nameInputFade() { + char name[32]; + field_0x020a--; + u8 alpha = (1.0f - (field_0x020a / 15.0f)) * 255.0f; + field_0x2378->setAlpha(alpha); + + if (field_0x020a == 0) { + headerTxtSet(900,1,1); + dMeter2Info_getString(899,name,0); + dComIfGs_setHorseName(name); + mpName->setNextNameStr(dComIfGs_getHorseName()); + mpName->initial(); + field_0x020a = 15; + field_0x026f = 18; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2500,9 +3188,26 @@ asm void dFile_select_c::nameInputFade() { #include "asm/d/file/d_file_select/nameInputFade__14dFile_select_cFv.s" } #pragma pop +#endif /* 801876A0-8018774C 181FE0 00AC+00 1/0 0/0 0/0 .text nameInput2Move__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::nameInput2Move() { + if (mDoRst::isReset() == 0) { + field_0x020a--; + + u8 alpha = (field_0x020a / 15.0f) * 255.0f; + field_0x2378->setAlpha(alpha); + + if (field_0x020a == 0) { + mpName->showIcon(); + field_0x026f = 19; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2511,8 +3216,34 @@ asm void dFile_select_c::nameInput2Move() { #include "asm/d/file/d_file_select/nameInput2Move__14dFile_select_cFv.s" } #pragma pop +#endif /* 8018774C-80187824 18208C 00D8+00 1/0 0/0 0/0 .text nameInput2__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::nameInput2() { + mpName->_move(); + if (mpName->getCurPos() == 0) { + if (field_0x024c != 0) { + modoruTxtChange(0); + } + } else if (field_0x024c == 0) { + modoruTxtChange(1); + } + + switch(mpName->isInputEnd()) { + case 1: + mpName->hideIcon(); + field_0x020a = 0xf; + field_0x026f = 20; + break; + case 2: + dComIfGs_setHorseName(mpName->getInputStrPtr()); + mSelectEnd = true; + field_0x026f = 46; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2521,8 +3252,26 @@ asm void dFile_select_c::nameInput2() { #include "asm/d/file/d_file_select/nameInput2__14dFile_select_cFv.s" } #pragma pop +#endif /* 80187824-80187908 182164 00E4+00 1/0 0/0 0/0 .text backNameInputMove0__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::backNameInputMove0() { + field_0x020a--; + u8 alpha = (1.0f - (field_0x020a / 15.0f)) * 255.0f; + field_0x2378->setAlpha(alpha); + + if (field_0x020a == 0) { + headerTxtSet(901,1,1); + mpName->setNextNameStr(dComIfGs_getPlayerName()); + mpName->initial(); + modoruTxtChange(1); + field_0x020a = 15; + field_0x026f = 21; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2531,8 +3280,25 @@ asm void dFile_select_c::backNameInputMove0() { #include "asm/d/file/d_file_select/backNameInputMove0__14dFile_select_cFv.s" } #pragma pop +#endif /* 80187908-801879B8 182248 00B0+00 1/0 0/0 0/0 .text backNameInputMove__14dFile_select_cFv */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::backNameInputMove() { + if (mDoRst::isReset() == 0) { + field_0x020a--; + + u8 alpha = (field_0x020a / 15.0f) * 255.0f; + field_0x2378->setAlpha(alpha); + + if (field_0x020a == 0) { + modoruTxtChange(1); + field_0x026f = 15; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2541,9 +3307,28 @@ asm void dFile_select_c::backNameInputMove() { #include "asm/d/file/d_file_select/backNameInputMove__14dFile_select_cFv.s" } #pragma pop +#endif /* 801879B8-80187ADC 1822F8 0124+00 1/0 0/0 0/0 .text ToCopyPaneMove__14dFile_select_cFv */ +#ifdef NONMATCHING +// unfinished +void dFile_select_c::ToCopyPaneMove() { + cPaneMgr* pPane; + + bool headerTxtChange = headerTxtChangeAnm(); + bool menuMove = menuMoveAnm(); + bool selectDataMove = selectDataMoveAnm(); + bool selectWakuAlpha = selectWakuAlpahAnm(mSelectNum); + bool nameMove = nameMoveAnm(); + + if (headerTxtChange == true && menuMove == true && selectDataMove == true && selectWakuAlpha == true && nameMove == true) { + field_0x026b = 0; + Vec vec = pPane->getGlobalVtxCenter(); + + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2552,28 +3337,34 @@ asm void dFile_select_c::ToCopyPaneMove() { #include "asm/d/file/d_file_select/ToCopyPaneMove__14dFile_select_cFv.s" } #pragma pop +#endif /* 80187ADC-80187B44 18241C 0068+00 1/0 0/0 0/0 .text ToErasePaneMove__14dFile_select_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dFile_select_c::ToErasePaneMove() { - nofralloc -#include "asm/d/file/d_file_select/ToErasePaneMove__14dFile_select_cFv.s" +void dFile_select_c::ToErasePaneMove() { + bool headerTxtChange = headerTxtChangeAnm(); + bool yesnoMenuMove = yesnoMenuMoveAnm(); + + if (headerTxtChange == true && yesnoMenuMove == true) { + yesnoCursorShow(); + field_0x026f = 26; + } } -#pragma pop /* 80187B44-80187BE8 182484 00A4+00 1/0 0/0 0/0 .text backSelectMove__14dFile_select_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dFile_select_c::backSelectMove() { - nofralloc -#include "asm/d/file/d_file_select/backSelectMove__14dFile_select_cFv.s" +void dFile_select_c::backSelectMove() { + bool headerTxtChange = headerTxtChangeAnm(); + bool selectDataMove = selectDataMoveAnm(); + bool menuMove = menuMoveAnm(); + bool modoruTxtDisp = modoruTxtDispAnm(); + + if (headerTxtChange == true && selectDataMove == true && menuMove == true && modoruTxtDisp == true) { + selFileCursorShow(); + mpFileSelect3d->drawOff(); + field_0x026f = 3; + } } -#pragma pop /* ############################################################################################## */ /* 80453960-80453964 001F60 0004+00 1/1 0/0 0/0 .sdata2 @5614 */ @@ -2584,6 +3375,38 @@ SECTION_SDATA2 static f32 lit_5615 = 109.0f; /* 80187BE8-80187DB8 182528 01D0+00 6/6 0/0 0/0 .text copySelMoveAnmInitSet__14dFile_select_cFii */ +#ifdef NONMATCHING +// matches with literals +void dFile_select_c::copySelMoveAnmInitSet(int param_0, int param_1) { + if (param_0 == 0xd1f) { + field_0x02c0->setAlpha(0xff); + field_0x02c8->setAlpha(0xff); + field_0x02d0->setAlpha(0xff); + field_0x02c4->setAlpha(0); + field_0x02cc->setAlpha(0); + field_0x02d4->setAlpha(0); + + field_0x02a4[0]->getPanePtr()->setAnimation(field_0x029c); + field_0x029c->setFrame(99.0f); + field_0x02a4[0]->getPanePtr()->animationTransform(); + field_0x02a4[0]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + + field_0x02a4[1]->getPanePtr()->setAnimation(field_0x02a0); + field_0x02a0->setFrame(109.0f); + field_0x02a4[1]->getPanePtr()->animationTransform(); + field_0x02a4[1]->getPanePtr()->setAnimation((J2DAnmTransform*)0); + + setSaveDataForCopySel(); + mFileSelCopyDlst.field_0x08 = true; + } + + field_0x011c->setAnimation(mpAnmBase[4]); + field_0x0120 = param_0; + field_0x0124 = param_1; + mpAnmBase[4]->setFrame(field_0x0120); + field_0x011c->animationTransform(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2592,6 +3415,7 @@ asm void dFile_select_c::copySelMoveAnmInitSet(int param_0, int param_1) { #include "asm/d/file/d_file_select/copySelMoveAnmInitSet__14dFile_select_cFii.s" } #pragma pop +#endif /* 80187DB8-80187ED4 1826F8 011C+00 1/1 0/0 0/0 .text setSaveDataForCopySel__14dFile_select_cFv */ #pragma push @@ -2673,7 +3497,7 @@ asm void dFile_select_c::copySelectWakuAlpahAnmInit(u8 param_0, u8 param_1, u8 p #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dFile_select_c::copySelectWakuAlpahAnm(u8 param_0) { +asm bool dFile_select_c::copySelectWakuAlpahAnm(u8 param_0) { nofralloc #include "asm/d/file/d_file_select/copySelectWakuAlpahAnm__14dFile_select_cFUc.s" } @@ -3170,18 +3994,21 @@ asm void dFile_select_c::setSaveData() { /* ############################################################################################## */ /* 804506D0-804506D8 000150 0008+00 1/1 0/0 0/0 .sdata fontsize$7230 */ -SECTION_SDATA static u8 fontsize[8] = { - 0x41, 0xA8, 0x00, 0x00, 0x41, 0xD8, 0x00, 0x00, +static f32 fontsize[2] = { + 21.0f, + 27.0f }; /* 804506D8-804506E0 000158 0008+00 1/1 0/0 0/0 .sdata linespace$7231 */ -SECTION_SDATA static u8 linespace[8] = { - 0x41, 0xA8, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, +static f32 linespace[2] = { + 21.0f, + 20.0f }; /* 804506E0-804506E8 000160 0008+00 1/1 0/0 0/0 .sdata charspace$7232 */ -SECTION_SDATA static u8 charspace[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static f32 charspace[2] = { + 0.0f, + 0.0f }; /* 8018D0E4-8018D25C 187A24 0178+00 20/20 0/0 0/0 .text headerTxtSet__14dFile_select_cFUsUcUc */ @@ -3282,7 +4109,7 @@ asm void dFile_select_c::selectWakuAlpahAnmInit(u8 param_0, u8 param_1, u8 param #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dFile_select_c::selectWakuAlpahAnm(u8 param_0) { +asm bool dFile_select_c::selectWakuAlpahAnm(u8 param_0) { nofralloc #include "asm/d/file/d_file_select/selectWakuAlpahAnm__14dFile_select_cFUc.s" } @@ -3314,7 +4141,7 @@ void dFile_select_c::menuWakuAlpahAnmInit(u8 i_idx, u8 param_1, u8 param_2, u8 p #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dFile_select_c::menuWakuAlpahAnm(u8 param_0) { +asm bool dFile_select_c::menuWakuAlpahAnm(u8 param_0) { nofralloc #include "asm/d/file/d_file_select/menuWakuAlpahAnm__14dFile_select_cFUc.s" } @@ -3353,15 +4180,48 @@ asm void dFile_select_c::yesnoWakuAlpahAnm(u8 param_0) { #pragma pop /* 8018DD38-8018DEBC 188678 0184+00 0/0 1/1 0/0 .text _draw__14dFile_select_cFv */ +#ifdef NONMATCHING +void dFile_select_c::_draw() { + if (!mHasDrawn) { + dComIfGd_set2DOpa(&mFileSelectDlst); + + for (int i = 0; i < 3; i++) { + mpFileInfo[i]->draw(); + } + + dComIfGd_set2DOpa(&mFileSelDeleteDlst); + mpFileSelect3d.draw(); + + if (mFileSelCopyDlst.field_0x08 != false) { + dComIfGd_set2DOpa(&mFileSelCopyDlst); + + for (int i = 0; i < 2; i++) { + mpFileInfo[i]->draw(); + } + } + + if (field137_0x128 != false) { + mpName.draw(); + } + + dComIfGd_set2DOpa(&mFileSel3mDlst); + dComIfGd_set2DOpa(&mFileSelYesNoDlst); + mpFileWarning.draw(); + dComIfGd_set2DOpa(mpCursor1); + dComIfGd_set2DOpa(mpCursor2); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -// asm void dFile_select_c::_draw() { -extern "C" asm void _draw__14dFile_select_cFv() { +asm void dFile_select_c::_draw() { +// extern "C" asm void _draw__14dFile_select_cFv() { nofralloc #include "asm/d/file/d_file_select/_draw__14dFile_select_cFv.s" } #pragma pop +#endif /* 8018DEBC-8018DEF4 1887FC 0038+00 1/0 0/0 0/0 .text draw__15dDlst_FileSel_cFv */ #pragma push @@ -3867,8 +4727,7 @@ asm void dFile_select_c::errorTxtChangeAnm() { /* 8018FE18-8018FE64 18A758 004C+00 1/1 0/0 0/0 .text fileRecScaleAnm__14dFile_select_cFv */ bool dFile_select_c::fileRecScaleAnm() { - // mpPaneMgrs might be typed wrong? - return mpPaneMgrs[mSelectNum]->scaleAnime(g_fsHIO.field_0x0005,*(f32*)&mpPaneMgrs[3],field_0x00d4,0); + return field_0x00bc[mSelectNum]->scaleAnime(g_fsHIO.field_0x0005,field_0x00c8,field_0x00d4,0); } /* 8018FE64-8018FEF4 18A7A4 0090+00 2/2 0/0 0/0 .text fileRecScaleAnmInitSet2__14dFile_select_cFff @@ -3886,7 +4745,7 @@ asm void dFile_select_c::fileRecScaleAnmInitSet2(f32 param_0, f32 param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dFile_select_c::fileRecScaleAnm2() { +asm bool dFile_select_c::fileRecScaleAnm2() { nofralloc #include "asm/d/file/d_file_select/fileRecScaleAnm2__14dFile_select_cFv.s" } @@ -4008,6 +4867,15 @@ asm void dFile_select_c::setInitSaveData() { #pragma pop /* 801902B8-801902F0 18ABF8 0038+00 2/2 0/0 0/0 .text dataSave__14dFile_select_cFv */ +#ifndef NONMATCHING +void dFile_select_c::dataSave() { + #if DEBUG + mDoMemCd_saveNAND(&mpMemCard,0x1fbc,0); + #else + mDoMemCd_save(&mpMemCard,0x1fbc,0); + #endif +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -4016,8 +4884,14 @@ asm void dFile_select_c::dataSave() { #include "asm/d/file/d_file_select/dataSave__14dFile_select_cFv.s" } #pragma pop +#endif /* 801902F0-80190380 18AC30 0090+00 1/1 0/0 0/0 .text __ct__16dFile_select3D_cFv */ +#ifdef NONMATCHING +dFile_select3D_c::dFile_select3D_c() { + mLightInfo.dKy_tevstr_c(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -4026,6 +4900,7 @@ asm dFile_select3D_c::dFile_select3D_c() { #include "asm/d/file/d_file_select/__ct__16dFile_select3D_cFv.s" } #pragma pop +#endif /* 80190380-801903DC 18ACC0 005C+00 1/0 0/0 0/0 .text __dt__16dFile_select3D_cFv */ #pragma push @@ -4038,6 +4913,33 @@ asm dFile_select3D_c::~dFile_select3D_c() { #pragma pop /* 801903DC-8019049C 18AD1C 00C0+00 1/1 0/0 0/0 .text _create__16dFile_select3D_cFUcUc */ +#ifdef NONMATCHING +// matches with literals +void dFile_select3D_c::_create(u8 i_mirrorIdx, u8 i_maskIdx) { + JKRHeap* ppHeap[2]; + + mpHeap = mDoExt_createSolidHeapFromGameToCurrent(ppHeap,0x25800,32); + field_0x03c4 = 0.0f; + field_0x03c8 = 0.0f; + mMirrorIdx = i_mirrorIdx; + mMaskIdx = i_maskIdx; + if (mMirrorIdx != 0) { + createMirrorModel(); + } + + if (mMaskIdx != 0) { + createMaskModel(); + } + + mpHeap->adjustSize(); + mDoExt_setCurrentHeap(*ppHeap); + + if (mpModel) { + dKy_tevstr_init((dKy_tevstr_c *)&mLightInfo,0xFF,0xFF); + set_mtx(); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -4046,6 +4948,7 @@ asm void dFile_select3D_c::_create(u8 param_0, u8 param_1) { #include "asm/d/file/d_file_select/_create__16dFile_select3D_cFUcUc.s" } #pragma pop +#endif /* 8019049C-801904A0 18ADDC 0004+00 1/1 0/0 0/0 .text _delete__16dFile_select3D_cFv */ void dFile_select3D_c::_delete() { @@ -4121,29 +5024,36 @@ asm void dFile_select3D_c::animePlay() { #pragma pop /* 80190B44-80190BA8 18B484 0064+00 1/1 0/0 0/0 .text animeEntry__16dFile_select3D_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dFile_select3D_c::animeEntry() { - nofralloc -#include "asm/d/file/d_file_select/animeEntry__16dFile_select3D_cFv.s" +void dFile_select3D_c::animeEntry() { + if (mBrkAnm) { + mBrkAnm->entry(mpModel->getModelData()); + } + + if (mBckAnm) { + mBckAnm->entry(mpModel->getModelData()); + } } -#pragma pop /* ############################################################################################## */ /* 80394310-80394324 020970 0014+00 2/2 0/0 0/0 .rodata m_kamen_offset_x$8678 */ -SECTION_RODATA static u8 const m_kamen_offset_x[20] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +const static f32 m_kamen_offset_x[5] = { + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f }; COMPILER_STRIP_GATE(0x80394310, &m_kamen_offset_x); /* 80394324-80394338 020984 0014+00 0/1 0/0 0/0 .rodata m_kamen_offset_y$8679 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const m_kamen_offset_y[20] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, +const static f32 m_kamen_offset_y[5] = { + 0.0f, + 0.0f, + 0.0f, + 5.0f, + 5.0f }; COMPILER_STRIP_GATE(0x80394324, &m_kamen_offset_y); #pragma pop @@ -4151,9 +5061,12 @@ COMPILER_STRIP_GATE(0x80394324, &m_kamen_offset_y); /* 80394338-8039434C 020998 0014+00 0/1 0/0 0/0 .rodata m_kamen_scale$8680 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const m_kamen_scale[20] = { - 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x3F, 0xCC, 0xCC, 0xCD, 0x3F, 0xCC, 0xCC, 0xCD, +const static f32 m_kamen_scale[5] = { + 2.0f, + 2.0f, + 2.0f, + 1.6f, + 1.6f }; COMPILER_STRIP_GATE(0x80394338, &m_kamen_scale); #pragma pop @@ -4172,9 +5085,12 @@ asm void dFile_select3D_c::createMaskModel() { /* 8039434C-80394360 0209AC 0014+00 0/1 0/0 0/0 .rodata m_mirror_offset_x$8781 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const m_mirror_offset_x[20] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +const static f32 m_mirror_offset_x[5] = { + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f }; COMPILER_STRIP_GATE(0x8039434C, &m_mirror_offset_x); #pragma pop @@ -4182,9 +5098,12 @@ COMPILER_STRIP_GATE(0x8039434C, &m_mirror_offset_x); /* 80394360-80394374 0209C0 0014+00 0/1 0/0 0/0 .rodata m_mirror_offset_y$8782 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const m_mirror_offset_y[20] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +const static f32 m_mirror_offset_y[5] = { + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f }; COMPILER_STRIP_GATE(0x80394360, &m_mirror_offset_y); #pragma pop @@ -4192,9 +5111,12 @@ COMPILER_STRIP_GATE(0x80394360, &m_mirror_offset_y); /* 80394374-80394388 0209D4 0014+00 0/1 0/0 0/0 .rodata m_mirror_scale$8783 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const m_mirror_scale[20] = { - 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, - 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, +const static f32 m_mirror_scale[5] = { + 0.6f, + 0.6f, + 0.6f, + 0.6f, + 0.6f }; COMPILER_STRIP_GATE(0x80394374, &m_mirror_scale); #pragma pop @@ -4249,6 +5171,12 @@ asm void dFile_select3D_c::toItem3Dpos(f32 param_0, f32 param_1, f32 param_2, cX SECTION_SDATA2 static f32 lit_8993 = -1000.0f; /* 801910D4-80191130 18BA14 005C+00 1/1 0/0 0/0 .text calcViewMtx__16dFile_select3D_cFPA4_f */ +#ifdef NONMATCHING +// matches with literals +void dFile_select3D_c::calcViewMtx(f32 (*param_0)[4]) { + cMtx_lookAt(param_0,&cXyz(0.0f,0.0f,-1000.0f),&cXyz::Zero,&cXyz(0.0f,1.0f,0.0f),0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -4257,6 +5185,7 @@ asm void dFile_select3D_c::calcViewMtx(f32 (*param_0)[4]) { #include "asm/d/file/d_file_select/calcViewMtx__16dFile_select3D_cFPA4_f.s" } #pragma pop +#endif /* 80191130-80191134 18BA70 0004+00 1/0 0/0 0/0 .text * getTransform__15J2DAnmTransformCFUsP16J3DTransformInfo */ @@ -4362,6 +5291,4 @@ extern "C" asm void getString__12dMsgString_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTF nofralloc #include "asm/d/file/d_file_select/getString__12dMsgString_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s" } -#pragma pop - -/* 80394388-80394388 0209E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +#pragma pop
\ No newline at end of file diff --git a/src/d/s/d_s_name.cpp b/src/d/s/d_s_name.cpp index 6ea7e9f269..4628c755a2 100644 --- a/src/d/s/d_s_name.cpp +++ b/src/d/s/d_s_name.cpp @@ -10,6 +10,7 @@ #include "d/meter/d_meter2_info.h" #include "dolphin/types.h" #include "f_op/f_op_overlap_mng.h" +#include "f_op/f_op_scene.h" #include "f_op/f_op_scene_mng.h" #include "f_pc/f_pc_manager.h" #include "global.h" @@ -18,69 +19,92 @@ #include "m_Do/m_Do_graphic.h" #include "m_Do/m_Do_machine.h" #include "m_Do/m_Do_mtx.h" +#include "f_op/f_op_overlap_mng.h" + // -// Types: +// Forward References: // -class dSn_HIO_c { -public: - /* 8025878C */ dSn_HIO_c(); - /* 802592DC */ virtual ~dSn_HIO_c() {} - - /* 0x4 */ s8 field_0x4; - /* 0x5 */ u8 mFileSelWaitTime; -}; - -// TODO: Remove when dFile_select_c virtual functions are properly defined in header -class dFile_select_c { -public: - /* 8018366C */ dFile_select_c(JKRArchive*); - /* 8018375C */ virtual ~dFile_select_c(); - /* 801843CC */ void _create(); - /* 801844FC */ void _move(); - /* 8018DD38 */ void _draw(); - - bool getFadeFlag() { return mFadeFlag; } - int isDataNew(u8 i) { return mDataNew[i]; } - int isSelectEnd() { return mSelectEnd; } - u8 getSelectNum() { return mSelectNum; } - void setUseType(u8 type) { mUseType = type; } - -private: - u8 field_0x4[0x254]; - /* 0x0258 */ u8 mDataNew[3]; - /* 0x025B */ u8 field_0x25b[0x265 - 0x25b]; - /* 0x0265 */ u8 mSelectNum; - /* 0x0266 */ u8 field_0x266[0x270 - 0x266]; - /* 0x0270 */ bool mSelectEnd; - /* 0x0271 */ u8 field_0x271[0x3b0 - 0x271]; - /* 0x03B0 */ u8 mUseType; - /* 0x03B1 */ u8 field_0x3b1[0x2374 - 0x3b1]; - /* 0x2374 */ bool mFadeFlag; - /* 0x2375 */ u8 field_0x2375[0x237c - 0x2375]; -}; - -// TODO: Remove when dBrightCheck_c virtual functions are properly defined in header -class dBrightCheck_c { -public: - /* 80192F10 */ dBrightCheck_c(JKRArchive*); - /* 80192F98 */ virtual ~dBrightCheck_c(); - /* 801934D0 */ void _move(); - /* 80193594 */ void _draw(); - - bool isEnd() { return mEnd; } - - u8 field_0x4[0x15]; - /* 0x19 */ bool mEnd; -}; - - +extern "C" void __ct__9dSn_HIO_cFv(); +extern "C" static void phase_1__FPc(); +extern "C" static void phase_2__FPc(); +extern "C" static void resLoad__FP30request_of_phase_process_classPc(); +extern "C" void create__10dScnName_cFv(); +extern "C" void setView__10dScnName_cFv(); +extern "C" void execute__10dScnName_cFv(); +extern "C" void draw__10dScnName_cFv(); +extern "C" void __dt__10dScnName_cFv(); +extern "C" void FileSelectOpen__10dScnName_cFv(); +extern "C" void FileSelectMain__10dScnName_cFv(); +extern "C" void FileSelectMainNormal__10dScnName_cFv(); +extern "C" void FileSelectClose__10dScnName_cFv(); +extern "C" void brightCheckOpen__10dScnName_cFv(); +extern "C" void brightCheck__10dScnName_cFv(); +extern "C" void changeGameScene__10dScnName_cFv(); +extern "C" static void dScnName_Draw__FP10dScnName_c(); +extern "C" static void dScnName_Execute__FP10dScnName_c(); +extern "C" static void dScnName_IsDelete__FP10dScnName_c(); +extern "C" static void dScnName_Delete__FP10dScnName_c(); +extern "C" static void dScnName_Create__FP11scene_class(); +extern "C" void __dt__17dScnName_camera_cFv(); +extern "C" void __dt__9dSn_HIO_cFv(); +extern "C" void __sinit_d_s_name_cpp(); +extern "C" extern char const* const d_s_d_s_name__stringBase0; // -// Forward References: +// External References: // +extern "C" void mDoMtx_lookAt__FPA4_fPC3VecPC3Vecs(); +extern "C" void mDoMtx_concatProjView__FPA4_CfPA4_CfPA4_f(); +extern "C" void mDoExt_getGameHeap__Fv(); +extern "C" void mDoExt_setCurrentHeap__FP7JKRHeap(); +extern "C" void fopOvlpM_IsPeek__Fv(); +extern "C" void fopScnM_ChangeReq__FP11scene_classssUs(); +extern "C" void dComIfG_resetToOpening__FP11scene_class(); +extern "C" void dComIfGp_setNextStage__FPCcsScSc(); +extern "C" void dComIfGs_gameStart__Fv(); +extern "C" void dComLbG_PhaseHandler__FP30request_of_phase_process_classPPFPv_iPv(); +extern "C" void offFirstBit__21dSv_player_get_item_cFUc(); +extern "C" void setRes__14dRes_control_cFPCcP11dRes_info_ciPCcUcP7JKRHeap(); +extern "C" void syncRes__14dRes_control_cFPCcP11dRes_info_ci(); +extern "C" void deleteRes__14dRes_control_cFPCcP11dRes_info_ci(); +extern "C" void getResInfo__14dRes_control_cFPCcP11dRes_info_ci(); +extern "C" void cleanup__13dPa_control_cFv(); +extern "C" void setViewPort__14dDlst_window_cFffffff(); +extern "C" void setScissor__14dDlst_window_cFffff(); +extern "C" void Run__12dVibration_cFv(); +extern "C" void Init__12dVibration_cFv(); +extern "C" void __ct__14dFile_select_cFP10JKRArchive(); +extern "C" void _create__14dFile_select_cFv(); +extern "C" void _move__14dFile_select_cFv(); +extern "C" void _draw__14dFile_select_cFv(); +extern "C" void __ct__14dBrightCheck_cFP10JKRArchive(); +extern "C" void _move__14dBrightCheck_cFv(); +extern "C" void _draw__14dBrightCheck_cFv(); +extern "C" void dKy_clear_game_init__Fv(); +extern "C" void dKy_setLight_init__Fv(); +extern "C" void changeWater__13dMeter2Info_cFUc(); +extern "C" void bgmStart__8Z2SeqMgrFUlUll(); +extern "C" void bgmStop__8Z2SeqMgrFUll(); +extern "C" void bgmStreamPrepare__8Z2SeqMgrFUl(); +extern "C" void bgmStreamPlay__8Z2SeqMgrFv(); +extern "C" void becomeCurrentHeap__7JKRHeapFv(); +extern "C" void destroy__7JKRHeapFv(); +extern "C" void* __nw__FUl(); +extern "C" void __dl__FPv(); +extern "C" void create__10JKRExpHeapFUlP7JKRHeapb(); +extern "C" void __register_global_object(); +extern "C" void __ptmf_scall(); +extern "C" void _savegpr_28(); +extern "C" void _restgpr_28(); +extern "C" void* mRenderModeObj__15mDoMch_render_c[1 + 1 /* padding */]; +extern "C" u8 mFader__13mDoGph_gInf_c[4]; +extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */]; +extern "C" u8 sManager__10JFWDisplay[4]; +extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; + // // Declarations: // @@ -130,9 +154,12 @@ static s32 phase_2(char* resName) { /* 80258878-802588A0 2531B8 0028+00 1/1 0/0 0/0 .text * resLoad__FP30request_of_phase_process_classPc */ static s32 resLoad(request_of_phase_process_class* i_phase, char* param_1) { - static s32 (*l_method[2])(char*) = {phase_1, phase_2}; + static request_of_phase_process_fn l_method[2] = { + (request_of_phase_process_fn)phase_1, + (request_of_phase_process_fn)phase_2 + }; - return dComLbG_PhaseHandler(i_phase, (request_of_phase_process_fn)l_method, param_1); + return dComLbG_PhaseHandler(i_phase, l_method, param_1); } /* ############################################################################################## */ @@ -313,10 +340,11 @@ void dScnName_c::brightCheck() { if (mBrightCheck->isEnd()) { dComIfGs_setSaveTotalTime(dComIfGs_getTotalTime()); dComIfGs_setSaveStartTime(OSGetTime()); - mDoAud_bgmStop(0x2D); + field_0x41f = 0; field_0x41d = 5; + dComIfGs_offItemFirstBit(GREEN_RUPEE); dComIfGs_offItemFirstBit(BLUE_RUPEE); dComIfGs_offItemFirstBit(YELLOW_RUPEE); @@ -339,6 +367,7 @@ void dScnName_c::changeGameScene() { if (dFs_c->isDataNew(dFs_c->getSelectNum())) { dComIfGp_setNextStage("F_SP108", 21, 1, 13); } + dKy_clear_game_init(); dComIfGs_resetDan(); dComIfGs_setRestartRoomParam(0); diff --git a/src/d/s/d_s_play.cpp b/src/d/s/d_s_play.cpp index a42e87d226..cdf06c78c7 100644 --- a/src/d/s/d_s_play.cpp +++ b/src/d/s/d_s_play.cpp @@ -984,20 +984,9 @@ static int phase_compleate(void* param_0) { } /* 8025AB94-8025ABC4 2554D4 0030+00 1/0 0/0 0/0 .text dScnPly_Create__FP11scene_class */ -#ifdef NONMATCHING -static void dScnPly_Create(scene_class* scn) { - dComLbG_PhaseHandler(&scn->field_0x1c4, l_method[0], scn); +static void dScnPly_Create(scene_class* i_this) { + dComLbG_PhaseHandler(&static_cast<dScnPly_c*>(i_this)->field_0x1c4, l_method, i_this); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dScnPly_Create(scene_class* param_0) { - nofralloc -#include "asm/d/s/d_s_play/dScnPly_Create__FP11scene_class.s" -} -#pragma pop -#endif /* 8025ABC4-8025AC0C 255504 0048+00 1/0 0/0 0/0 .text __dt__22dScnPly_env_debugHIO_cFv */ #pragma push diff --git a/src/f_op/f_op_msg_mng.cpp b/src/f_op/f_op_msg_mng.cpp index fc493bc542..e1ed7ec944 100644 --- a/src/f_op/f_op_msg_mng.cpp +++ b/src/f_op/f_op_msg_mng.cpp @@ -431,4 +431,4 @@ JKRExpHeap* fopMsgM_createExpHeap(u32 i_heapSize, JKRHeap* i_heap) { /* 800203E0-80020400 01AD20 0020+00 0/0 3/3 0/0 .text fopMsgM_destroyExpHeap__FP10JKRExpHeap */ void fopMsgM_destroyExpHeap(JKRExpHeap* i_heap) { i_heap->destroy(); -} +}
\ No newline at end of file diff --git a/src/m_Do/m_Do_machine.cpp b/src/m_Do/m_Do_machine.cpp index d67e433c7c..0e260bc2e1 100644 --- a/src/m_Do/m_Do_machine.cpp +++ b/src/m_Do/m_Do_machine.cpp @@ -27,6 +27,7 @@ #include "m_Do/m_Do_machine_exception.h" #include "m_Do/m_Do_main.h" + // // Forward References: // diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index 9c0a778ad0..42f1601859 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -32,23 +32,7 @@ #include "m_Do/m_Do_graphic.h" #include "m_Do/m_Do_machine.h" -// -// Forward References: -// - -extern "C" extern char const* const m_Do_m_Do_main__stringBase0; - -// -// External References: -// - -extern "C" void dump__14dRes_control_cFv(); -extern "C" void dump__24DynamicModuleControlBaseFv(); - -// -// Declarations: -// - +/* 800056C0-80005728 000000 0068+00 1/1 0/0 0/0 .text version_check__Fv */ void version_check() { if (!strcmp("20Apr2004", "20Apr2004") && !strcmp("Patch2", "Patch2")) { return; @@ -60,77 +44,60 @@ void version_check() { } while (true); } +/* 80005728-8000578C 000068 0064+00 1/1 0/0 0/0 .text CheckHeap1__9HeapCheckFv */ void HeapCheck::CheckHeap1() { s32 totalUsedSize = mHeap->getTotalUsedSize(); s32 freeSize = mHeap->getFreeSize(); - if (mMaxTotalUsedSize < totalUsedSize) { + if (mMaxTotalUsedSize < totalUsedSize) mMaxTotalUsedSize = totalUsedSize; - } - if (mMaxTotalFreeSize > freeSize) { + if (mMaxTotalFreeSize > freeSize) mMaxTotalFreeSize = freeSize; - } } +/* 803A2EE0-803A2EF4 000000 0012+02 2/2 1/1 0/0 .data COPYDATE_STRING__7mDoMain */ +char mDoMain::COPYDATE_STRING[18] = "??/??/?? ??:??:??"; + /* ############################################################################################## */ /* 803D32E0-803D3308 000000 0028+00 3/2 0/0 0/0 .bss RootHeapCheck */ -extern "C" HeapCheck RootHeapCheck; +// static HeapCheck RootHeapCheck; +static HeapCheck RootHeapCheck = HeapCheck(0,"Root","ルート"); /* 803D3308-803D3330 000028 0028+00 1/2 0/0 0/0 .bss SystemHeapCheck */ -extern "C" HeapCheck SystemHeapCheck; +// static HeapCheck SystemHeapCheck; +static HeapCheck SystemHeapCheck = HeapCheck(0,"System","システム"); /* 803D3330-803D3358 000050 0028+00 1/2 0/0 0/0 .bss ZeldaHeapCheck */ -extern "C" HeapCheck ZeldaHeapCheck; +// static HeapCheck ZeldaHeapCheck; +static HeapCheck ZeldaHeapCheck = HeapCheck(0,"Zelda","ゼルダ"); /* 803D3358-803D3380 000078 0028+00 1/2 0/0 0/0 .bss GameHeapCheck */ -extern "C" HeapCheck GameHeapCheck; +// static HeapCheck GameHeapCheck; +static HeapCheck GameHeapCheck = HeapCheck(0,"Game","ゲーム"); /* 803D3380-803D33A8 0000A0 0028+00 1/2 0/0 0/0 .bss ArchiveHeapCheck */ -extern "C" HeapCheck ArchiveHeapCheck; +// static HeapCheck ArchiveHeapCheck; +static HeapCheck ArchiveHeapCheck = HeapCheck(0,"Archive","アーカイブ"); /* 803D33A8-803D33D0 0000C8 0028+00 1/2 0/0 0/0 .bss J2dHeapCheck */ -extern "C" HeapCheck J2dHeapCheck; +// static HeapCheck J2dHeapCheck; +static HeapCheck J2dHeapCheck = HeapCheck(0,"J2d","J2D"); /* 803D33D0-803D33F8 0000F0 0028+00 1/2 0/0 0/0 .bss HostioHeapCheck */ -extern "C" HeapCheck HostioHeapCheck; +// static HeapCheck HostioHeapCheck; +static HeapCheck HostioHeapCheck = HeapCheck(0,"Hostio","ホストIO"); /* 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] = "??/??/?? ??:??:??"; +// static HeapCheck CommandHeapCheck; +static HeapCheck CommandHeapCheck = HeapCheck(0,"Command","コマンド"); /* 803A2EF4-803A2F14 -00001 0020+00 1/2 0/0 0/0 .data HeapCheckTable */ -SECTION_DATA static HeapCheck* HeapCheckTable[8] = { +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(); @@ -154,6 +121,7 @@ void CheckHeap(u32 i_padNo) { } } +/* 80005848-800058A0 000188 0058+00 2/2 0/0 0/0 .text countUsed__FP10JKRExpHeap */ static int countUsed(JKRExpHeap* heap) { OSDisableScheduler(); int counter = 0; @@ -168,10 +136,12 @@ static int countUsed(JKRExpHeap* heap) { return counter; } +/* 800058A0-800058C4 0001E0 0024+00 2/2 0/0 0/0 .text getUsedCount__9HeapCheckCFv */ s32 HeapCheck::getUsedCount() const { return countUsed(mHeap); } +/* 800058C4-80005AD8 000204 0214+00 1/1 0/0 0/0 .text heapDisplay__9HeapCheckCFv */ void HeapCheck::heapDisplay() const { s32 heap_size = mHeap->getSize(); s32 used_count = heap_size - mTargetHeapSize; @@ -199,13 +169,13 @@ void HeapCheck::heapDisplay() const { } /* 80450580-80450584 000000 0004+00 3/3 6/6 0/0 .sdata None */ -SECTION_SDATA s8 mDoMain::developmentMode = -1; +s8 mDoMain::developmentMode = -1; /* 80450584-80450588 000004 0004+00 0/0 1/1 0/0 .sdata memMargin__7mDoMain */ -SECTION_SDATA u32 mDoMain::memMargin = 0xFFFFFFFF; +u32 mDoMain::memMargin = 0xFFFFFFFF; /* 80450588-80450590 000008 0008+00 2/2 0/0 0/0 .sdata None */ -SECTION_SDATA u8 mDoMain::mHeapBriefType = 4; +u8 mDoMain::mHeapBriefType = 4; /* 80450B00-80450B08 000000 0008+00 1/1 0/0 0/0 .sbss None */ static u8 fillcheck_check_frame; @@ -218,10 +188,12 @@ 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 bool mDisplayHeapSize; + +/* 80450B19 0001+00 data_80450B19 None */ static u8 mSelectHeapBar; + +/* 80450B1A 0002+00 data_80450B1A None */ static bool mCheckHeap; /* 80005AD8-80005D4C 000418 0274+00 1/1 0/0 0/0 .text debugDisplay__Fv */ @@ -377,7 +349,8 @@ bool Debug_console(u32 i_padNo) { JKRAram::getAramHeap()->dump(); } - dump__24DynamicModuleControlBaseFv(); + // dump__24DynamicModuleControlBaseFv(); + DynamicModuleControlBase::dump(); g_dComIfG_gameInfo.mResControl.dump(); } @@ -416,6 +389,7 @@ s32 LOAD_COPYDATE(void*) { return status; } +/* 800061C8-8000628C 000B08 00C4+00 1/1 0/0 0/0 .text debug__Fv */ static void debug() { if (mDoMain::developmentMode) { if (mCheckHeap) { @@ -447,8 +421,13 @@ static void debug() { void main01(void) { static u32 frame; + // Setup heaps, setup exception manager, set RNG seed, setup DVDError Thread, setup Memory card Thread mDoMch_Create(); + + // setup FrameBuffer and ZBuffer, init display lists mDoGph_Create(); + + // Setup control pad mDoCPd_c::create(); RootHeapCheck.setHeap((JKRExpHeap*)JKRHeap::getRootHeap()); @@ -497,10 +476,10 @@ void main01(void) { console->setPosition(32, 42); mDoDvdThd_callback_c::create((mDoDvdThd_callback_func)LOAD_COPYDATE, NULL); - fapGm_Create(); + fapGm_Create(); // init framework fopAcM_initManager(); mDisplayHeapSize = 0; - cDyl_InitAsync(); + cDyl_InitAsync(); // init RELs g_mDoAud_audioHeap = JKRSolidHeap::create(0x14D800, JKRHeap::getCurrentHeap(), false); @@ -514,10 +493,10 @@ void main01(void) { g_mDoMemCd_control.update(); } - mDoCPd_c::read(); - fapGm_Execute(); - mDoAud_Execute(); - debug(); + mDoCPd_c::read(); // read controller input + fapGm_Execute(); // handle game execution + mDoAud_Execute(); // handle audio execution + debug(); // run debugger } while (true); } @@ -572,8 +551,7 @@ void main() { } s32 priority = OSGetThreadPriority(current_thread); - OSCreateThread(&mainThread, main01, 0, stack + sizeof(mainThreadStack), sizeof(mainThreadStack), - priority, 0); + OSCreateThread(&mainThread, main01, 0, stack + sizeof(mainThreadStack), sizeof(mainThreadStack), priority, 0); OSResumeThread(&mainThread); OSSetThreadPriority(current_thread, 0x1F); OSSuspendThread(current_thread); @@ -585,42 +563,6 @@ bool JKRHeap::dump_sort() { } /* ############################################################################################## */ -/* 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> */ Z2WolfHowlMgr* JASGlobalInstance<Z2WolfHowlMgr>::sInstance; |
