From 49023df9799d4e8c2166ef26e0bceef60f35a13c Mon Sep 17 00:00:00 2001 From: mattias-blum <142374929+mattias-blum@users.noreply.github.com> Date: Sat, 17 May 2025 17:08:14 -0400 Subject: [PATCH] more progress --- include/d/d_menu_option.h | 4 +-- include/d/d_meter.h | 1 + src/d/d_menu_option.cpp | 53 ++++++++++++++++++++++++++++++++++++--- 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/include/d/d_menu_option.h b/include/d/d_menu_option.h index 92c22576f..02f7812ba 100644 --- a/include/d/d_menu_option.h +++ b/include/d/d_menu_option.h @@ -47,7 +47,7 @@ public: void _move(); void _draw(); void _open(); - void _close(); + bool _close(); private: /* 0x004 */ J2DScreen* scrn; @@ -91,7 +91,7 @@ private: /* 0xE3E */ u8 mE3E; /* 0xE3F */ u8 mE3F; /* 0xE40 */ u8 mE40; - /* 0xE41 */ u8 mE41[0xE42 - 0xE41]; + /* 0xE41 */ u8 mE41; }; // Size: 0xE42 class dMo_HIO_c : public JORReflexible { diff --git a/include/d/d_meter.h b/include/d/d_meter.h index f67692867..df5f53d69 100644 --- a/include/d/d_meter.h +++ b/include/d/d_meter.h @@ -596,5 +596,6 @@ extern dMeter_msg_HIO_c g_msgHIO; extern dMeter_message_HIO_c g_messageHIO; void dMeter_mtrShow(); +void dMenu_setPushMenuButton(u8); #endif /* D_METER_H */ diff --git a/src/d/d_menu_option.cpp b/src/d/d_menu_option.cpp index b6e8ca90a..286ba8a87 100644 --- a/src/d/d_menu_option.cpp +++ b/src/d/d_menu_option.cpp @@ -10,7 +10,9 @@ #include "m_Do/m_Do_audio.h" #include "m_Do/m_Do_controller_pad.h" #include "global.h" +#include "d/d_meter.h" #include "f_op/f_op_msg_mng.h" +#include "d/d_com_inf_game.h" dMo_HIO_c g_moHIO; @@ -781,7 +783,37 @@ void dMenu_Option_c::changeScaleRight(fopMsgM_pane_class* param_1, char* param_2 /* 801D5148-801D5224 .text initialize__14dMenu_Option_cFv */ void dMenu_Option_c::initialize() { - /* Nonmatching */ + mainInit(); + + noteInit(); + + titleInit(); + + outFontInit(); + + mE40 = 1; + + mCF0.mUserArea = 0; + m7B0.mUserArea = 0; + + mC80[0].mUserArea = 0; + mC80[1].mUserArea = 0; + + mE3C = dComIfGs_getOptAttentionType(); + mE3D = dComIfGs_getOptRuby(); + mE3E = dComIfGs_getOptSound(); + + if ((JUTGamePad::sRumbleSupported & 0x80000000)) { + mE3F = dComIfGp_getNowVibration(); + } + else { + mE3F = 0; + } + + mE41 = 0; + + mDoAud_setOutputMode(soundMode[mE3E]); + setSoundMode(soundMode[mE3E]); } /* 801D5224-801D53F0 .text _create__14dMenu_Option_cFv */ @@ -827,6 +859,21 @@ void dMenu_Option_c::_open() { } /* 801D5CBC-801D5D38 .text _close__14dMenu_Option_cFv */ -void dMenu_Option_c::_close() { - /* Nonmatching */ +bool dMenu_Option_c::_close() { + bool ret = false; + + mC80[0].mUserArea++; + s16 user_area = mC80[0].mUserArea; + + fopMsgM_valueIncrease(10, user_area, 0); + + dMenu_setPushMenuButton(2); + + if (user_area >= 10) { + initialize(); + mE40 = 0; + ret = true; + } + + return ret; }