From c434c2edde34aaa21e8e186b880c3801f969d14a Mon Sep 17 00:00:00 2001 From: Carco_21 <144170194+carter-ktb21@users.noreply.github.com> Date: Sat, 20 Dec 2025 21:06:17 -0500 Subject: Various d_ work (#2968) * map work * various meter work * d_meter_button ShieldD almost equivalent * error fix --- src/d/d_menu_option.cpp | 100 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 82 insertions(+), 18 deletions(-) (limited to 'src/d/d_menu_option.cpp') diff --git a/src/d/d_menu_option.cpp b/src/d/d_menu_option.cpp index 75f7b52fbe..dbf6785c7a 100644 --- a/src/d/d_menu_option.cpp +++ b/src/d/d_menu_option.cpp @@ -103,10 +103,19 @@ void dMenu_Option_c::_create() { mpFont = mDoExt_getMesgFont(); mpString = new dMsgString_c(); + JUT_ASSERT(197, mpString != NULL); + + mpMeterHaihai = new dMeterHaihai_c(3); + JUT_ASSERT(201, mpMeterHaihai); + field_0x3f6 = 0; mpScreen = new J2DScreen(); - mpScreen->setPriority("zelda_option_select_menu.blo", 0x20000, mpArchive); + JUT_ASSERT(205, mpScreen != NULL); + + bool fg = mpScreen->setPriority("zelda_option_select_menu.blo", 0x20000, mpArchive); + JUT_ASSERT(210, fg != false); + mpScreen->search('base_a_n')->hide(); mpScreen->search('y_set_p4')->hide(); mpScreen->search('y_set_p3')->hide(); @@ -120,24 +129,41 @@ void dMenu_Option_c::_create() { field_0x254[i]->setString(0x20, ""); } mpBackScreen = new J2DScreen(); - mpBackScreen->setPriority("zelda_option_base.blo", 0x20000, mpArchive); + JUT_ASSERT(246, mpBackScreen != NULL); + fg = mpBackScreen->setPriority("zelda_option_base.blo", 0x20000, mpArchive); + JUT_ASSERT(251, fg != false); mpBackScreen->search('wi_btn_n')->hide(); field_0x27c = mpBackScreen->search('let_area'); + mpClipScreen = new J2DScreen(); - mpClipScreen->setPriority("zelda_option_menu_text.blo", 0x20000, mpArchive); + JUT_ASSERT(265, mpClipScreen != NULL); + fg = mpClipScreen->setPriority("zelda_option_menu_text.blo", 0x20000, mpArchive); + JUT_ASSERT(269, fg != false); dPaneClass_showNullPane(mpClipScreen); + mpClipScreen->setScissor(true); mpShadowScreen = new J2DScreen(); - mpShadowScreen->setPriority("zelda_option_menu_shadow.blo", 0x20000, mpArchive); + JUT_ASSERT(274, mpShadowScreen != NULL); + fg = mpShadowScreen->setPriority("zelda_option_menu_shadow.blo", 0x20000, mpArchive); + JUT_ASSERT(278, fg != false); dPaneClass_showNullPane(mpShadowScreen); mpShadowScreen->search('mw_n_5')->hide(); + mpTVScreen = new J2DScreen(); - mpTVScreen->setPriority("zelda_option_check.blo", 0x20000, mpArchive); + JUT_ASSERT(287, mpTVScreen != NULL); + fg = mpTVScreen->setPriority("zelda_option_check.blo", 0x20000, mpArchive); + JUT_ASSERT(291, fg != false); dPaneClass_showNullPane(mpTVScreen); + mpTVButtonAB = new CPaneMgr(mpTVScreen, 'g_abtn_n', 0, NULL); + JUT_ASSERT(295, mpTVButtonAB != NULL); + mpTVButtonText = new CPaneMgr(mpTVScreen, 'a_text_n', 0, NULL); + JUT_ASSERT(298, mpTVButtonText != NULL); mpTVScreen->search('g_abtn_n')->hide(); + mpScreenIcon = new J2DScreen(); + JUT_ASSERT(325, mpScreenIcon != NULL); mpScreenIcon->setPriority("zelda_collect_soubi_do_icon_parts.blo", 0x20000, mpArchive); for (int i = 0; i < 2; i++) { mpButtonAB[i] = NULL; @@ -157,24 +183,31 @@ void dMenu_Option_c::_create() { setBButtonString(0x3F9); ResTIMG* timg = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti"); mpBlackTex = new J2DPicture(timg); + JUT_ASSERT(402, mpBlackTex != NULL); mpBlackTex->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 0xff)); mpBlackTex->setAlpha(0); field_0x374 = 0.0f; mpWarning = new dFile_warning_c(mpArchive, 1); + JUT_ASSERT(408, mpWarning != NULL); mpWarning->setFontColor(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0xc8, 0xc8, 0xc8, 0xff)); mpSelectScreen = new J2DScreen(); - mpSelectScreen->setPriority("zelda_file_select_yes_no_window.blo", 0x1100000, mpArchive); + JUT_ASSERT(412, mpSelectScreen != NULL); + fg = mpSelectScreen->setPriority("zelda_file_select_yes_no_window.blo", 0x1100000, mpArchive); + JUT_ASSERT(416, fg != false); dPaneClass_showNullPane(mpSelectScreen); - void* resource = JKRGetNameResource("zelda_file_select_yes_no_window.bck", mpArchive); - field_0x24 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(resource); - field_0x28 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(resource); - field_0x20 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(resource); + + void* bck = JKRGetNameResource("zelda_file_select_yes_no_window.bck", mpArchive); + field_0x24 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + field_0x28 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); + field_0x20 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(bck); field_0x24->searchUpdateMaterialID(mpSelectScreen); field_0x28->searchUpdateMaterialID(mpSelectScreen); field_0x20->searchUpdateMaterialID(mpSelectScreen); for (int i = 0; i < 2; i++) { mpYesNoSelBase_c[i] = new CPaneMgr(mpSelectScreen, l_tagName012[i], 0, NULL); + JUT_ASSERT(439, mpYesNoSelBase_c[i] != NULL); mpYesNoTxt_c[i] = new CPaneMgr(mpSelectScreen, l_tagName013[i], 0, NULL); + JUT_ASSERT(441, mpYesNoTxt_c[i] != NULL); J2DTextBox* yesNoTxt = (J2DTextBox*)mpYesNoTxt_c[i]->getPanePtr(); yesNoTxt->setFont(mDoExt_getMesgFont()); char message[24]; @@ -182,24 +215,33 @@ void dMenu_Option_c::_create() { J2DTextBox* yesNoTxt2 = (J2DTextBox*)mpYesNoTxt_c[i]->getPanePtr(); yesNoTxt2->setString(0x20, message); } - resource = JKRGetNameResource("zelda_file_select_yes_no_window.bpk", mpArchive); - field_0x2c = (J2DAnmColor*)J2DAnmLoaderDataBase::load(resource); + + void* bpk = JKRGetNameResource("zelda_file_select_yes_no_window.bpk", mpArchive); + JUT_ASSERT(449, bpk != NULL); + field_0x2c = (J2DAnmColor*)J2DAnmLoaderDataBase::load(bpk); field_0x2c->searchUpdateMaterialID(mpSelectScreen); field_0x3c0 = 0; - resource = JKRGetNameResource("zelda_file_select_yes_no_window.btk", mpArchive); - field_0x30 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(resource); + + void* btk = JKRGetNameResource("zelda_file_select_yes_no_window.btk", mpArchive); + JUT_ASSERT(459, btk != NULL); + field_0x30 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk); field_0x30->searchUpdateMaterialID(mpSelectScreen); field_0x3c4 = 0; + for (int i = 0; i < 2; i++) { mpYesNoCurWaku_c[i] = new CPaneMgr(mpSelectScreen, l_tagName9[i], 0, NULL); + JUT_ASSERT(482, mpYesNoCurWaku_c[i] != NULL); mpYesNoCurWakuG0_c[i] = new CPaneMgr(mpSelectScreen, l_tagName10[i], 0, NULL); + JUT_ASSERT(484, mpYesNoCurWakuG0_c[i] != NULL); mpYesNoCurWakuG1_c[i] = new CPaneMgr(mpSelectScreen, l_tagName11[i], 0, NULL); + JUT_ASSERT(486, mpYesNoCurWakuG1_c[i] != NULL); mpYesNoCurWaku_c[i]->getPanePtr()->setAnimation(field_0x2c); mpYesNoCurWakuG0_c[i]->getPanePtr()->setAnimation(field_0x2c); mpYesNoCurWakuG1_c[i]->getPanePtr()->setAnimation(field_0x2c); mpYesNoCurWakuG0_c[i]->getPanePtr()->setAnimation(field_0x30); mpYesNoCurWakuG1_c[i]->getPanePtr()->setAnimation(field_0x30); } + field_0x3f9 = 0; field_0x3fa = 0; field_0x401 = 0xff; @@ -209,6 +251,7 @@ void dMenu_Option_c::_create() { field_0x3fd[i] = 0; field_0x3ff[i] = 0; } + field_0x403 = 0; screenSet(); field_0x3e0 = 0; @@ -234,6 +277,7 @@ void dMenu_Option_c::_create() { field_0x384[i] = 0.0f; field_0x39c[i] = 0.0f; } + field_0x3b8.r = 0xff; field_0x3b8.g = 0xff; field_0x3b8.b = 0xff; @@ -334,7 +378,15 @@ void dMenu_Option_c::_delete() { delete field_0x30; field_0x30 = NULL; - if (isUseFlag(1)) { + if ( + isUseFlag( + #if DEBUG + 0 + #else + 1 + #endif + ) + ) { delete mpStick; mpStick = NULL; } @@ -410,13 +462,13 @@ void dMenu_Option_c::_delete() { } if (mpMount != NULL) { - mpMount->getArchive()->unmount(); - delete mpMount; + JKRUnmountArchive(mpMount->getArchive()); + mpMount->destroy(); mpMount = NULL; } if (mpArchive != NULL) { - mpArchive->unmount(); + JKRUnmountArchive(mpArchive); mpArchive = NULL; } @@ -428,6 +480,7 @@ void dMenu_Option_c::_move() { if (field_0x3ea != 0 && !isRumbleSupported()) { field_0x3ea = 0; } + if (mDoGph_gInf_c::getFader()->getStatus() == 1) { if (mDoCPd_c::getTrigA(PAD_1) != 0 && field_0x3ef != SelectType3 && field_0x3f3 == 5) { if (field_0x3f4 == 5 && field_0x3ef != SelectType4 && field_0x3ef != SelectType5 && field_0x3ef != SelectType6 && @@ -447,6 +500,7 @@ void dMenu_Option_c::_move() { } } } + if (mDoCPd_c::getTrigB(PAD_1) != 0 && field_0x3ef != SelectType3 && field_0x3f3 == 5 && field_0x3ef != SelectType4 && field_0x3ef != SelectType5 && field_0x3ef != SelectType6 && field_0x3ef != SelectType7) { @@ -468,6 +522,7 @@ skip: if (field_0x3f3 == 5 && oldValue != SelectType4 && oldValue != SelectType5 && oldValue != SelectType6 && oldValue != SelectType7) { dpdMenuMove(); } + field_0x3f2 = 0; if (field_0x3f1 != 0xff) { if (field_0x3f0 != field_0x3f1 && field_0x3ef != field_0x3f1) { @@ -477,17 +532,26 @@ skip: } else { field_0x3f0 = 0xff; } + (this->*process[field_0x3ef])(); mpSelectScreen->animation(); if (oldValue != field_0x3ef) { (this->*init[field_0x3ef])(); } + setHIO(false); } void dMenu_Option_c::_draw() { if (mpArchive != NULL) { J2DGrafContext* ctx = dComIfGp_getCurrentGrafPort(); + #if (PLATFORM_WII || PLATFORM_SHIELD) + if (mpCalibration != NULL && field_0x3f4 != 5 && field_0x3f4 != 0 && field_0x3f4 != 4) { + mpCalibration->draw(); + return; + } + #endif + mpBlackTex->setAlpha(0xff); mpBlackTex->draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0, 0, 0); mpBackScreen->draw(0.0f, 0.0f, ctx); -- cgit v1.2.3