mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-21 22:54:37 -04:00
f8f258b5b6
* next d_menu_insect pass * work on d_menu_ring & d_menu_insect * d_menu_insect basically OK * remove unused asm
2121 lines
72 KiB
C++
2121 lines
72 KiB
C++
/**
|
|
* d_menu_ring.cpp
|
|
* Menu - Item Wheel
|
|
*/
|
|
|
|
#include "d/menu/d_menu_ring.h"
|
|
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
|
|
#include "JSystem/J2DGraph/J2DScreen.h"
|
|
#include "JSystem/J2DGraph/J2DTextBox.h"
|
|
#include "JSystem/JKernel/JKRExpHeap.h"
|
|
#include "MSL_C/string.h"
|
|
#include "SSystem/SComponent/c_math.h"
|
|
#include "d/a/d_a_alink.h"
|
|
#include "d/d_item_data.h"
|
|
#include "d/d_kantera_icon_meter.h"
|
|
#include "d/d_lib.h"
|
|
#include "d/d_select_cursor.h"
|
|
#include "d/menu/d_menu_item_explain.h"
|
|
#include "d/menu/d_menu_window.h"
|
|
#include "d/meter/d_meter2.h"
|
|
#include "d/meter/d_meter2_draw.h"
|
|
#include "d/meter/d_meter2_info.h"
|
|
#include "d/meter/d_meter_HIO.h"
|
|
#include "d/msg/d_msg_string.h"
|
|
#include "d/pane/d_pane_class.h"
|
|
#include "dol2asm.h"
|
|
#include "m_Do/m_Do_controller_pad.h"
|
|
#include "m_Do/m_Do_graphic.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
extern "C" void __ct__12dMenu_Ring_cFP10JKRExpHeapP9STControlP10CSTControlUc();
|
|
extern "C" void __dt__12dMenu_Ring_cFv();
|
|
extern "C" void _create__12dMenu_Ring_cFv();
|
|
extern "C" void _delete__12dMenu_Ring_cFv();
|
|
extern "C" void _move__12dMenu_Ring_cFv();
|
|
extern "C" void _draw__12dMenu_Ring_cFv();
|
|
extern "C" void setKanteraPos__12dMenu_Ring_cFff();
|
|
extern "C" void isOpen__12dMenu_Ring_cFv();
|
|
extern "C" void isMoveEnd__12dMenu_Ring_cFv();
|
|
extern "C" void isClose__12dMenu_Ring_cFv();
|
|
extern "C" void getStickInfo__12dMenu_Ring_cFP9STControl();
|
|
extern "C" void calcStickAngle__12dMenu_Ring_cFP9STControlUc();
|
|
extern "C" void setRotate__12dMenu_Ring_cFv();
|
|
extern "C" void setItemScale__12dMenu_Ring_cFif();
|
|
extern "C" void setButtonScale__12dMenu_Ring_cFif();
|
|
extern "C" void setItem__12dMenu_Ring_cFv();
|
|
extern "C" void setJumpItem__12dMenu_Ring_cFb();
|
|
extern "C" void setScale__12dMenu_Ring_cFv();
|
|
extern "C" void setNameString__12dMenu_Ring_cFUl();
|
|
extern "C" void setActiveCursor__12dMenu_Ring_cFv();
|
|
extern "C" void setMixItem__12dMenu_Ring_cFv();
|
|
extern "C" void drawItem__12dMenu_Ring_cFv();
|
|
extern "C" void drawItem2__12dMenu_Ring_cFv();
|
|
extern "C" void stick_wait_init__12dMenu_Ring_cFv();
|
|
extern "C" void stick_wait_proc__12dMenu_Ring_cFv();
|
|
extern "C" void stick_move_init__12dMenu_Ring_cFv();
|
|
extern "C" void stick_move_proc__12dMenu_Ring_cFv();
|
|
extern "C" void stick_explain_init__12dMenu_Ring_cFv();
|
|
extern "C" void stick_explain_force_init__12dMenu_Ring_cFv();
|
|
extern "C" void stick_explain_proc__12dMenu_Ring_cFv();
|
|
extern "C" void stick_explain_force_proc__12dMenu_Ring_cFv();
|
|
extern "C" void setSelectItem__12dMenu_Ring_cFiUc();
|
|
extern "C" void drawSelectItem__12dMenu_Ring_cFv();
|
|
extern "C" void setSelectItemForce__12dMenu_Ring_cFi();
|
|
extern "C" void getCursorPos__12dMenu_Ring_cFUc();
|
|
extern "C" void getItemNum__12dMenu_Ring_cFUc();
|
|
extern "C" void getItemMaxNum__12dMenu_Ring_cFUc();
|
|
extern "C" void checkExplainForce__12dMenu_Ring_cFv();
|
|
extern "C" bool checkCombineBomb__12dMenu_Ring_cFi();
|
|
extern "C" void setCombineBomb__12dMenu_Ring_cFi();
|
|
extern "C" void drawNumber__12dMenu_Ring_cFiiff();
|
|
extern "C" void getItem__12dMenu_Ring_cFiUc();
|
|
extern "C" void setDoStatus__12dMenu_Ring_cFUc();
|
|
extern "C" void isMixItemOn__12dMenu_Ring_cFv();
|
|
extern "C" void isMixItemOff__12dMenu_Ring_cFv();
|
|
extern "C" void setMixMessage__12dMenu_Ring_cFv();
|
|
extern "C" void textScaleHIO__12dMenu_Ring_cFv();
|
|
extern "C" void textCentering__12dMenu_Ring_cFv();
|
|
extern "C" void clacEllipseFunction__12dMenu_Ring_cFfff();
|
|
extern "C" void calcDistance__12dMenu_Ring_cFffff();
|
|
extern "C" void clacEllipsePlotAverage__12dMenu_Ring_cFiff();
|
|
extern "C" bool dpdMove__12dMenu_Ring_cFv();
|
|
extern "C" void openExplain__12dMenu_Ring_cFUc();
|
|
extern "C" void draw__12dMenu_Ring_cFv();
|
|
extern "C" void __sinit_d_menu_ring_cpp();
|
|
extern "C" extern char const* const d_menu_d_menu_ring__stringBase0;
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void mDoExt_getMesgFont__Fv();
|
|
extern "C" void dComIfGs_setSelectItemIndex__FiUc();
|
|
extern "C" void dComIfGs_setMixItemIndex__FiUc();
|
|
extern "C" void dComIfGs_getMixItemIndex__Fi();
|
|
extern "C" s32 dComIfGs_getBottleMax__Fv();
|
|
extern "C" void getSelectItemIndex__21dSv_player_status_a_cCFi();
|
|
extern "C" void getItem__17dSv_player_item_cCFib();
|
|
extern "C" void getLineUpItem__17dSv_player_item_cCFi();
|
|
extern "C" void getBombNum__24dSv_player_item_record_cCFUc();
|
|
extern "C" void getBottleNum__24dSv_player_item_record_cCFUc();
|
|
extern "C" void getBombNum__21dSv_player_item_max_cCFUc();
|
|
extern "C" void __ct__16dSelect_cursor_cFUcfP10JKRArchive();
|
|
extern "C" void setParam__16dSelect_cursor_cFfffff();
|
|
extern "C" void setScale__16dSelect_cursor_cFf();
|
|
extern "C" void setAlphaRate__16dSelect_cursor_cFf();
|
|
extern "C" void __ct__15dKantera_icon_cFv();
|
|
extern "C" void setAlphaRate__15dKantera_icon_cFf();
|
|
extern "C" void setPos__15dKantera_icon_cFff();
|
|
extern "C" void setScale__15dKantera_icon_cFff();
|
|
extern "C" void setNowGauge__15dKantera_icon_cFUsUs();
|
|
extern "C" void __ct__19dMenu_ItemExplain_cFP10JKRExpHeapP10JKRArchiveP9STControlb();
|
|
extern "C" void move__19dMenu_ItemExplain_cFv();
|
|
extern "C" void draw__19dMenu_ItemExplain_cFP13J2DOrthoGraph();
|
|
extern "C" void openExplain__19dMenu_ItemExplain_cFUcUcUcb();
|
|
extern "C" void openExplainTx__19dMenu_ItemExplain_cFUlUl();
|
|
extern "C" void getAlphaRatio__19dMenu_ItemExplain_cFv();
|
|
extern "C" void dMw_UP_TRIGGER__Fv();
|
|
extern "C" void dMw_DOWN_TRIGGER__Fv();
|
|
extern "C" void dMw_A_TRIGGER__Fv();
|
|
extern "C" void dMw_B_TRIGGER__Fv();
|
|
extern "C" void
|
|
drawPikari__13dMeter2Draw_cFffPffQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorfUc();
|
|
extern "C" void warpInProc__13dMeter2Info_cFv();
|
|
extern "C" void
|
|
readItemTexture__13dMeter2Info_cFUcPvP10J2DPicturePvP10J2DPicturePvP10J2DPicturePvP10J2DPicturei();
|
|
extern "C" void
|
|
setItemColor__13dMeter2Info_cFUcP10J2DPictureP10J2DPictureP10J2DPictureP10J2DPicture();
|
|
extern "C" void dMeter2Info_getNumberTextureName__Fi();
|
|
extern "C" void dMeter2Info_set2DVibration__Fv();
|
|
extern "C" void dMeter2Info_set2DVibrationM__Fv();
|
|
extern "C" void __ct__12dMsgString_cFv();
|
|
extern "C" void __dt__12dMsgString_cFv();
|
|
extern "C" void __ct__8CPaneMgrFv();
|
|
extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap();
|
|
extern "C" void __dt__8CPaneMgrFv();
|
|
extern "C" void paneTrans__8CPaneMgrFff();
|
|
extern "C" void getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs();
|
|
extern "C" void dPaneClass_showNullPane__FP9J2DScreen();
|
|
extern "C" void dPaneClass_setPriority__FPPvP7JKRHeapP9J2DScreenPCcUlP10JKRArchive();
|
|
extern "C" void __ct__13CPaneMgrAlphaFP9J2DScreenUxUcP10JKRExpHeap();
|
|
extern "C" void show__13CPaneMgrAlphaFv();
|
|
extern "C" void hide__13CPaneMgrAlphaFv();
|
|
extern "C" void isVisible__13CPaneMgrAlphaFv();
|
|
extern "C" void setAlphaRate__13CPaneMgrAlphaFf();
|
|
extern "C" void getAlphaRate__13CPaneMgrAlphaFv();
|
|
extern "C" void __mi__4cXyzCFRC3Vec();
|
|
extern "C" void cM_atan2s__Fff();
|
|
extern "C" void cLib_addCalcPosXZ__FP4cXyzRC4cXyzfff();
|
|
extern "C" void cLib_addCalcAngleS__FPsssss();
|
|
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
|
|
extern "C" void alloc__7JKRHeapFUli();
|
|
extern "C" void free__7JKRHeapFPv();
|
|
extern "C" void getTotalFreeSize__7JKRHeapFv();
|
|
extern "C" void* __nw__FUl();
|
|
extern "C" void* __nwa__FUl();
|
|
extern "C" void __dl__FPv();
|
|
extern "C" void __dla__FPv();
|
|
extern "C" void J2DDrawFrame__FffffQ28JUtility6TColorUc();
|
|
extern "C" void setBasePosition__7J2DPaneF15J2DBasePosition();
|
|
extern "C" void __ct__9J2DScreenFv();
|
|
extern "C" void draw__9J2DScreenFffPC14J2DGrafContext();
|
|
extern "C" void __ct__10J2DPictureFPC7ResTIMG();
|
|
extern "C" void getStringPtr__10J2DTextBoxCFv();
|
|
extern "C" void setString__10J2DTextBoxFsPCce();
|
|
extern "C" void __ptmf_scall();
|
|
extern "C" void _savegpr_17();
|
|
extern "C" void _savegpr_18();
|
|
extern "C" void _savegpr_20();
|
|
extern "C" void _savegpr_21();
|
|
extern "C" void _savegpr_23();
|
|
extern "C" void _savegpr_24();
|
|
extern "C" void _savegpr_26();
|
|
extern "C" void _savegpr_27();
|
|
extern "C" void _savegpr_28();
|
|
extern "C" void _savegpr_29();
|
|
extern "C" void _restgpr_17();
|
|
extern "C" void _restgpr_18();
|
|
extern "C" void _restgpr_20();
|
|
extern "C" void _restgpr_21();
|
|
extern "C" void _restgpr_23();
|
|
extern "C" void _restgpr_24();
|
|
extern "C" void _restgpr_26();
|
|
extern "C" void _restgpr_27();
|
|
extern "C" void _restgpr_28();
|
|
extern "C" void _restgpr_29();
|
|
extern "C" extern void* __vt__12dDlst_base_c[3];
|
|
extern "C" void* item_resource__10dItem_data[1530];
|
|
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
|
|
extern "C" u8 sincosTable___5JMath[65536];
|
|
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
/* 80397738-80397760 023D98 0028+00 1/1 0/0 0/0 .rodata xy_text$4015 */
|
|
static const u64 xy_text[5] = {
|
|
'yx_text', 'yx_te_s1', 'yx_te_s2', 'yx_te_s3', 'yx_te_s4',
|
|
};
|
|
|
|
/* 80397760-80397788 023DC0 0028+00 0/1 0/0 0/0 .rodata fxy_text$4016 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static const u64 fxy_text[5] = {
|
|
'fyx_tex', 'fyx_te_1', 'fyx_te_2', 'fyx_te_3', 'fyx_te_4',
|
|
};
|
|
#pragma pop
|
|
|
|
/* 80397788-803977B0 023DE8 0028+00 0/1 0/0 0/0 .rodata c_text$4022 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static const u64 c_text[5] = {
|
|
'c_text', 'c_te_s1', 'c_te_s2', 'c_te_s3', 'c_te_s4',
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803977B0-803977D8 023E10 0028+00 0/1 0/0 0/0 .rodata fc_text$4023 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static const u64 fc_text[5] = {
|
|
'fc_text', 'fc_te_s1', 'fc_te_s2', 'fc_te_s3', 'fc_te_s4',
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803977D8-80397800 023E38 0028+00 0/1 0/0 0/0 .rodata c_text1$4029 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static const u64 c_text1[5] = {
|
|
'c_text1', 'c_texs1', 'c_texs2', 'c_texs3', 'c_texs4',
|
|
};
|
|
#pragma pop
|
|
|
|
/* 80397800-80397828 023E60 0028+00 0/1 0/0 0/0 .rodata fc_text1$4030 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static const u64 fc_text1[5] = {
|
|
'fc_text1', 'fc_texs1', 'fc_texs2', 'fc_texs3', 'fc_texs4',
|
|
};
|
|
#pragma pop
|
|
|
|
/* 80397828-80397850 023E88 0028+00 0/1 0/0 0/0 .rodata t_on$4036 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static const u64 t_on[5] = {
|
|
'gr_t_on', 'g_tof_s5', 'g_tof_s6', 'g_tof_s7', 'g_tof_s8',
|
|
};
|
|
#pragma pop
|
|
|
|
/* 80397850-80397878 023EB0 0028+00 0/1 0/0 0/0 .rodata ft_on$4037 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static const u64 ft_on[5] = {
|
|
'fr_t_on', 'f_tof_s5', 'f_tof_s6', 'f_tof_s7', 'f_tof_s8',
|
|
};
|
|
#pragma pop
|
|
|
|
/* 80397878-803978A0 023ED8 0028+00 0/1 0/0 0/0 .rodata t_off$4043 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static const u64 t_off[5] = {
|
|
'gr_t_of', 'g_tof_s1', 'g_tof_s2', 'g_tof_s3', 'g_tof_s4',
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803978A0-803978C8 023F00 0028+00 0/1 0/0 0/0 .rodata ft_off$4044 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static const u64 ft_off[5] = {
|
|
'fr_t_of', 'f_tof_s1', 'f_tof_s2', 'f_tof_s3', 'f_tof_s4',
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803978C8-803978C8 023F28 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_803978C8 =
|
|
"SCRN/zelda_item_select_icon_message_ver2.blo";
|
|
SECTION_DEAD static char const* const stringBase_803978F5 = "";
|
|
SECTION_DEAD static char const* const stringBase_803978F6 = "tt_block8x8.bti";
|
|
SECTION_DEAD static char const* const stringBase_80397906 = "SCRN/zelda_item_select_icon3_spot.blo";
|
|
SECTION_DEAD static char const* const stringBase_8039792C =
|
|
"SCRN/zelda_item_select_icon3_center_parts.blo";
|
|
/* @stringBase0 padding */
|
|
SECTION_DEAD static char const* const pad_8039795A = "\0\0\0\0\0";
|
|
#pragma pop
|
|
|
|
/* 803BDE70-803BDE7C 01AF90 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
|
|
static u8 cNullVec__6Z2Calc[12] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
#ifdef NONMATCHING
|
|
typedef void (dMenu_Ring_c::*initFunc)();
|
|
static initFunc stick_init[] = {
|
|
&dMenu_Ring_c::stick_wait_init,
|
|
&dMenu_Ring_c::stick_move_init,
|
|
&dMenu_Ring_c::stick_explain_init,
|
|
&dMenu_Ring_c::stick_explain_force_init,
|
|
};
|
|
|
|
typedef void (dMenu_Ring_c::*procFunc)();
|
|
static procFunc stick_proc[] = {
|
|
&dMenu_Ring_c::stick_wait_proc,
|
|
&dMenu_Ring_c::stick_move_proc,
|
|
&dMenu_Ring_c::stick_explain_proc,
|
|
&dMenu_Ring_c::stick_explain_force_proc,
|
|
};
|
|
#else
|
|
/* 803BDE7C-803BDE88 -00001 000C+00 0/1 0/0 0/0 .data @3862 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_3862[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)stick_wait_init__12dMenu_Ring_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803BDE88-803BDE94 -00001 000C+00 0/1 0/0 0/0 .data @3863 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_3863[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)stick_move_init__12dMenu_Ring_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803BDE94-803BDEA0 -00001 000C+00 0/1 0/0 0/0 .data @3864 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_3864[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)stick_explain_init__12dMenu_Ring_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803BDEA0-803BDEAC -00001 000C+00 0/1 0/0 0/0 .data @3865 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_3865[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)stick_explain_force_init__12dMenu_Ring_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803BDEAC-803BDEDC 01AFCC 0030+00 3/4 0/0 0/0 .data stick_init */
|
|
SECTION_DATA static u8 stick_init[48] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
/* 803BDEDC-803BDEE8 -00001 000C+00 0/1 0/0 0/0 .data @3866 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_3866[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)stick_wait_proc__12dMenu_Ring_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803BDEE8-803BDEF4 -00001 000C+00 0/1 0/0 0/0 .data @3867 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_3867[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)stick_move_proc__12dMenu_Ring_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803BDEF4-803BDF00 -00001 000C+00 0/1 0/0 0/0 .data @3868 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_3868[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)stick_explain_proc__12dMenu_Ring_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803BDF00-803BDF0C -00001 000C+00 0/1 0/0 0/0 .data @3869 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_3869[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)stick_explain_force_proc__12dMenu_Ring_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803BDF0C-803BDF3C 01B02C 0030+00 1/2 0/0 0/0 .data stick_proc */
|
|
SECTION_DATA static u8 stick_proc[48] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
#endif
|
|
|
|
/* 803BDF3C-803BDF5C -00001 0020+00 1/1 0/0 0/0 .data @4795 */
|
|
SECTION_DATA static void* lit_4795[8] = {
|
|
(void*)(((char*)calcStickAngle__12dMenu_Ring_cFP9STControlUc) + 0x4C),
|
|
(void*)(((char*)calcStickAngle__12dMenu_Ring_cFP9STControlUc) + 0x60),
|
|
(void*)(((char*)calcStickAngle__12dMenu_Ring_cFP9STControlUc) + 0x8C),
|
|
(void*)(((char*)calcStickAngle__12dMenu_Ring_cFP9STControlUc) + 0x78),
|
|
(void*)(((char*)calcStickAngle__12dMenu_Ring_cFP9STControlUc) + 0x58),
|
|
(void*)(((char*)calcStickAngle__12dMenu_Ring_cFP9STControlUc) + 0x68),
|
|
(void*)(((char*)calcStickAngle__12dMenu_Ring_cFP9STControlUc) + 0x70),
|
|
(void*)(((char*)calcStickAngle__12dMenu_Ring_cFP9STControlUc) + 0x80),
|
|
};
|
|
|
|
/* 803BDF5C-803BDF78 01B07C 0010+0C 2/2 0/0 0/0 .data __vt__12dMenu_Ring_c */
|
|
SECTION_DATA extern void* __vt__12dMenu_Ring_c[4 + 3 /* padding */] = {
|
|
(void*)NULL /* RTTI */,
|
|
(void*)NULL,
|
|
(void*)draw__12dMenu_Ring_cFv,
|
|
(void*)__dt__12dMenu_Ring_cFv,
|
|
/* padding */
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
};
|
|
|
|
/* 80454388-8045438C 002988 0004+00 9/9 0/0 0/0 .sdata2 @4300 */
|
|
SECTION_SDATA2 static u8 lit_4300[4] = {
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
};
|
|
|
|
/* 8045438C-80454390 00298C 0004+00 3/3 0/0 0/0 .sdata2 @4301 */
|
|
SECTION_SDATA2 static f32 lit_4301 = 448.0f;
|
|
|
|
/* 80454390-80454394 002990 0004+00 3/3 0/0 0/0 .sdata2 @4302 */
|
|
SECTION_SDATA2 static f32 lit_4302 = -448.0f;
|
|
|
|
/* 80454394-80454398 002994 0004+00 3/3 0/0 0/0 .sdata2 @4303 */
|
|
SECTION_SDATA2 static f32 lit_4303 = 608.0f;
|
|
|
|
/* 80454398-8045439C 002998 0004+00 3/3 0/0 0/0 .sdata2 @4304 */
|
|
SECTION_SDATA2 static f32 lit_4304 = -608.0f;
|
|
|
|
/* 8045439C-804543A0 00299C 0004+00 18/18 0/0 0/0 .sdata2 @4305 */
|
|
SECTION_SDATA2 static f32 lit_4305 = 1.0f;
|
|
|
|
/* 804543A0-804543A4 0029A0 0004+00 2/2 0/0 0/0 .sdata2 @4306 */
|
|
SECTION_SDATA2 static f32 lit_4306 = 100.0f;
|
|
|
|
/* 804543A4-804543A8 0029A4 0004+00 5/5 0/0 0/0 .sdata2 @4307 */
|
|
SECTION_SDATA2 static f32 lit_4307 = 48.0f;
|
|
|
|
/* 804543A8-804543AC 0029A8 0004+00 4/4 0/0 0/0 .sdata2 @4308 */
|
|
SECTION_SDATA2 static f32 lit_4308 = 1.0f / 10.0f;
|
|
|
|
/* 804543AC-804543B0 0029AC 0004+00 4/4 0/0 0/0 .sdata2 @4309 */
|
|
SECTION_SDATA2 static f32 lit_4309 = 3.0f / 5.0f;
|
|
|
|
/* 804543B0-804543B8 0029B0 0004+04 7/7 0/0 0/0 .sdata2 @4310 */
|
|
SECTION_SDATA2 static f32 lit_4310[1 + 1 /* padding */] = {
|
|
0.5f,
|
|
/* padding */
|
|
0.0f,
|
|
};
|
|
|
|
/* 804543B8-804543C0 0029B8 0008+00 5/5 0/0 0/0 .sdata2 @4312 */
|
|
SECTION_SDATA2 static f64 lit_4312 = 4503599627370496.0 /* cast u32 to float */;
|
|
|
|
/* 801E9118-801EA708 1E3A58 15F0+00 0/0 1/1 0/0 .text
|
|
* __ct__12dMenu_Ring_cFP10JKRExpHeapP9STControlP10CSTControlUc */
|
|
#ifdef NONMATCHING
|
|
// clrlwi instruction instead of mr
|
|
dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i_cstick,
|
|
u8 param_3) {
|
|
mpHeap = i_heap;
|
|
mpStick = i_stick;
|
|
mpCStick = i_cstick;
|
|
field_0x6bc = param_3;
|
|
dMeter2Info_setItemExplainWindowStatus(0);
|
|
mpHeap->getTotalFreeSize();
|
|
field_0x570 = 0.0f;
|
|
if (field_0x6bc == 0) {
|
|
field_0x568 = 0.0f;
|
|
field_0x56c = 448.0f;
|
|
} else if (field_0x6bc == 2) {
|
|
field_0x568 = 0.0f;
|
|
field_0x56c = -448.0f;
|
|
}
|
|
if (field_0x6bc == 3) {
|
|
field_0x568 = 608.0f;
|
|
field_0x56c = 0.0f;
|
|
} else if (field_0x6bc == 1) {
|
|
field_0x568 = -608.0f;
|
|
field_0x56c = 0.0f;
|
|
} else {
|
|
field_0x568 = 0.0f;
|
|
field_0x56c = 0.0f;
|
|
}
|
|
field_0x58c = 0.0f;
|
|
field_0x590 = 0.0f;
|
|
field_0x594 = 1.0f;
|
|
for (int i = 0; i < 10; i++) {
|
|
field_0x598[i] = 0.0f;
|
|
field_0x5c0[i] = 0.0f;
|
|
field_0x5e8[i] = 1.0f;
|
|
}
|
|
field_0x610 = 1.0f;
|
|
field_0x614 = 0.0f;
|
|
field_0x618 = 0.0f;
|
|
field_0x61c = 1.0f;
|
|
field_0x620 = 1.0f;
|
|
field_0x624 = 1.0f;
|
|
field_0x62c = daPy_py_c::i_checkNowWolf();
|
|
field_0x630 = 0;
|
|
field_0x63a = 0;
|
|
field_0x63c = 0;
|
|
field_0x638 = 0;
|
|
field_0x6b0 = 0;
|
|
field_0x6b1 = 0;
|
|
field_0x6b2 = 0;
|
|
field_0x672 = 0;
|
|
field_0x380.set(0.0f, 0.0f, 0.0f);
|
|
setStatus(0);
|
|
field_0x6a9 = 0;
|
|
field_0x6aa = 0xff;
|
|
field_0x6ab = 0xff;
|
|
field_0x6ac = 0xff;
|
|
field_0x6ad = 0xff;
|
|
field_0x670 = 0;
|
|
field_0x67e = 0;
|
|
field_0x6b3 = 0;
|
|
field_0x514 = 0.0f;
|
|
mDrawFlag = 0;
|
|
field_0x6af = 0;
|
|
field_0x67c = 4;
|
|
field_0x6c5 = 0;
|
|
field_0x680 = 0;
|
|
field_0x684 = 0;
|
|
field_0x6c6 = 0;
|
|
field_0x6c4 = 0xff;
|
|
field_0x6cc = 0;
|
|
field_0x6cb = 0xff;
|
|
field_0x6cd = 0xff;
|
|
field_0x6ce = 0;
|
|
field_0x68e = 0;
|
|
field_0x6cf = 0xff;
|
|
field_0x6d0 = 0xff;
|
|
field_0x6d1 = 0xff;
|
|
field_0x6d2 = 0xff;
|
|
field_0x6d3 = 0xff;
|
|
int i;
|
|
for (int i = 0; i < 3; i++) {
|
|
field_0x580[i] = 0.0f;
|
|
field_0x574[i] = 0.0f;
|
|
}
|
|
field_0x6c3 = 0xff;
|
|
field_0x6c2 = 0;
|
|
for (int i = 0; i < 3; i++) {
|
|
field_0x374[i] = NULL;
|
|
}
|
|
for (int i = 0; i < 4; i++) {
|
|
field_0x6c7[i] = 0xff;
|
|
}
|
|
switch (field_0x6bc) {
|
|
case 0:
|
|
field_0x682 = 0x8000;
|
|
break;
|
|
case 1:
|
|
field_0x682 = 0x4000;
|
|
break;
|
|
case 2:
|
|
field_0x682 = 0;
|
|
break;
|
|
default:
|
|
field_0x682 = 0xc000;
|
|
break;
|
|
}
|
|
for (int i = 0; i < 4; i++) {
|
|
field_0x674[i] = 0;
|
|
field_0x518[i] = 0.0f;
|
|
field_0x528[i] = 0.0f;
|
|
field_0x538[i] = 0.0f;
|
|
field_0x6b4[i] = 0;
|
|
field_0x6b8[i] = 0xff;
|
|
mpSelectItemTex[i][0] = NULL;
|
|
mpSelectItemTex[i][1] = NULL;
|
|
mpSelectItemTex[i][2] = NULL;
|
|
field_0x686[i] = 0;
|
|
}
|
|
for (int i = 0; i < MAX_ITEM_SLOTS; i++) {
|
|
field_0x3ec[i] = 0.0f;
|
|
field_0x38c[i] = 0.0f;
|
|
for (int j = 0; j < 3; j++) {
|
|
mpItemTex[i][j] = NULL;
|
|
mpItemBuf[i][j] = NULL;
|
|
}
|
|
field_0x690[i] = 0;
|
|
field_0x63e[i] = 0;
|
|
field_0x4ac[i] = 0.0f;
|
|
field_0x44c[i] = 0.0f;
|
|
}
|
|
for (int i = 0; i < MAX_ITEM_SLOTS; i++) {
|
|
if (dComIfGs_getLineUpItem(i) != 0xff) {
|
|
field_0x6af++;
|
|
}
|
|
}
|
|
if (field_0x6af < 1) {
|
|
field_0x6ae = 1;
|
|
} else {
|
|
field_0x6ae = field_0x6af;
|
|
}
|
|
for (int i = 0; i < MAX_ITEM_SLOTS; i++) {
|
|
field_0x690[i] = dComIfGs_getLineUpItem(i);
|
|
}
|
|
for (int i = 0; i < field_0x6ae; i++) {
|
|
field_0x690[i] = dComIfGs_getLineUpItem(i);
|
|
if (dComIfGs_getSelectItemIndex(0) == dComIfGs_getLineUpItem(i)) {
|
|
field_0x6aa = i;
|
|
}
|
|
if (dComIfGs_getSelectItemIndex(1) == dComIfGs_getLineUpItem(i)) {
|
|
field_0x6ab = i;
|
|
}
|
|
if (dComIfGs_getSelectItemIndex(2) == dComIfGp_getSubHeapLockFlag(i + 5)) {
|
|
field_0x6ac = i;
|
|
}
|
|
}
|
|
field_0x50c = g_ringHIO.mRingRadiusH;
|
|
field_0x510 = g_ringHIO.mRingRadiusV;
|
|
field_0x66e = 0x8000;
|
|
field_0x634 = 0x10000 / field_0x6ae;
|
|
for (int i = 0; i < MAX_SELECT_ITEM; i++) {
|
|
for (int j = 0; j < 3; j++) {
|
|
for (int k = 0; k < SELECT_ITEM_NUM; k++) {
|
|
mpSelectItemTexBuf[i][j][k] = (ResTIMG*)mpHeap->alloc(0xC00, 0x20);
|
|
}
|
|
}
|
|
field_0x6be[i] = 0;
|
|
if (i == 2) {
|
|
setSelectItem(i, 0);
|
|
} else {
|
|
setSelectItem(i, 0x43);
|
|
}
|
|
for (int j = 0; j < 3; j++) {
|
|
mpSelectItemTex[i][j] = new J2DPicture(mpSelectItemTexBuf[i][field_0x6be[i]][0]);
|
|
mpSelectItemTex[i][j]->setBasePosition(J2DBasePosition_4);
|
|
}
|
|
field_0x548[i] = 0.0f;
|
|
field_0x558[i] = 0.0f;
|
|
}
|
|
ResTIMG* timg = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource(
|
|
'TIMG', dMeter2Info_getNumberTextureName(0));
|
|
for (int i = 0; i < 3; i++) {
|
|
mpItemNumTex[i] = new J2DPicture(timg);
|
|
}
|
|
mpKanteraMeter = new dKantera_icon_c();
|
|
mpScreen = new J2DScreen();
|
|
dPaneClass_setPriority(&field_0x374[0], mpHeap, mpScreen,
|
|
"SCRN/zelda_item_select_icon_message_ver2.blo", 0x20000,
|
|
dComIfGp_getRingResArchive());
|
|
dPaneClass_showNullPane(mpScreen);
|
|
mpMessageParent = new CPaneMgrAlpha(mpScreen, 'n_all', 2, NULL);
|
|
mpTextParent[0] = new CPaneMgr(mpScreen, 'r_n', 0, NULL);
|
|
mpTextParent[1] = new CPaneMgr(mpScreen, 'c_n', 2, NULL);
|
|
mpTextParent[1]->setAlphaRate(1.0f);
|
|
mpTextParent[2] = NULL;
|
|
mpTextParent[3] = new CPaneMgr(mpScreen, 'c_sen_n', 2, NULL);
|
|
mpTextParent[4] = new CPaneMgr(mpScreen, 'gr_n', 2, NULL);
|
|
mpTextParent[4]->hide();
|
|
for (int i = 5; i < 10; i++) {
|
|
mpTextParent[i] = NULL;
|
|
}
|
|
for (int i = 0; i < field_0x6af; i++) {
|
|
for (int j = 0; j < 3; j++) {
|
|
mpItemBuf[i][j] = (ResTIMG*)mpHeap->alloc(0xC00, 0x20);
|
|
}
|
|
u8 item = dComIfGs_getItem(field_0x690[i], false);
|
|
if (item != 0xff) {
|
|
if (item == 0x53) {
|
|
item = 0x43;
|
|
}
|
|
s32 i_textureNum =
|
|
dMeter2Info_readItemTexture(item, mpItemBuf[i][0], NULL, mpItemBuf[i][1], NULL,
|
|
mpItemBuf[i][2], NULL, NULL, NULL, -1);
|
|
for (int k = 0; k < i_textureNum; k++) {
|
|
mpItemTex[i][k] = new J2DPicture(mpItemBuf[i][k]);
|
|
mpItemTex[i][k]->setBasePosition(J2DBasePosition_4);
|
|
}
|
|
dMeter2Info_setItemColor(i_textureNum, mpItemTex[i][0], mpItemTex[i][1],
|
|
mpItemTex[i][2], NULL);
|
|
u8 texScale = dItem_data::getTexScale(item);
|
|
f32 fVar1 = (texScale / 100.0f);
|
|
f32 fVar2 = (mpItemBuf[i][0]->width / 48.0f);
|
|
fVar1 = fVar2 * fVar1;
|
|
field_0x44c[i] = fVar1;
|
|
field_0x4ac[i] = (mpItemBuf[i][0]->height / 48.0f * (texScale / 100.0f));
|
|
}
|
|
}
|
|
mpScreen->search('r_btn_n')->hide();
|
|
if (field_0x62c != 0) {
|
|
mpScreen->search('yx_te_s1')->hide();
|
|
mpScreen->search('yx_te_s2')->hide();
|
|
mpScreen->search('yx_te_s3')->hide();
|
|
mpScreen->search('yx_te_s4')->hide();
|
|
mpScreen->search('yx_text')->hide();
|
|
mpScreen->search('fyx_te_1')->hide();
|
|
mpScreen->search('fyx_te_2')->hide();
|
|
mpScreen->search('fyx_te_3')->hide();
|
|
mpScreen->search('fyx_te_4')->hide();
|
|
mpScreen->search('fyx_tex')->hide();
|
|
mpScreen->search('x_btn_n')->hide();
|
|
mpScreen->search('y_btn_n')->hide();
|
|
}
|
|
mpString = new dMsgString_c();
|
|
for (i = 0; i < 5; i++) {
|
|
J2DTextBox* fxy_TextBox = (J2DTextBox*)mpScreen->search(fxy_text[i]);
|
|
mpScreen->search(xy_text[i])->hide();
|
|
fxy_TextBox->setFont(mDoExt_getMesgFont());
|
|
fxy_TextBox->setString(0x40, "");
|
|
field_0x580[0] = mpString->getString(0x380, fxy_TextBox, NULL, NULL, NULL, 0);
|
|
}
|
|
for (i = 0; i < 5; i++) {
|
|
J2DTextBox* fc_TextBox = (J2DTextBox*)mpScreen->search(fc_text[i]);
|
|
mpScreen->search(c_text[i])->hide();
|
|
fc_TextBox->setFont(mDoExt_getMesgFont());
|
|
fc_TextBox->setString(0x40, "");
|
|
field_0x580[1] = mpString->getString(0x37F, fc_TextBox, NULL, NULL, NULL, 0);
|
|
}
|
|
for (i = 0; i < 5; i++) {
|
|
J2DTextBox* fc1_TextBox = (J2DTextBox*)mpScreen->search(fc_text1[i]);
|
|
mpScreen->search(c_text1[i])->hide();
|
|
fc1_TextBox->setFont(mDoExt_getMesgFont());
|
|
fc1_TextBox->setString(0x40, "");
|
|
field_0x580[2] = mpString->getString(0x4CD, fc1_TextBox, NULL, NULL, NULL, 0);
|
|
}
|
|
for (int i = 0; i < 5; i++) {
|
|
field_0x1c8[i] = (J2DTextBox*)mpScreen->search(ft_on[i]);
|
|
mpScreen->search(t_on[i])->hide();
|
|
field_0x1c8[i]->setString(0x40, "");
|
|
field_0x1c8[i]->setFont(mDoExt_getMesgFont());
|
|
mpString->getString(0x4D2, field_0x1c8[i], NULL, NULL, NULL, 0);
|
|
}
|
|
for (int i = 0; i < 5; i++) {
|
|
field_0x1dc[i] = (J2DTextBox*)mpScreen->search(ft_off[i]);
|
|
mpScreen->search(t_off[i])->hide();
|
|
field_0x1dc[i]->setString(0x40, "");
|
|
field_0x1dc[i]->setFont(mDoExt_getMesgFont());
|
|
mpString->getString(0x4D3, field_0x1dc[i], NULL, NULL, NULL, 0);
|
|
}
|
|
mpHeap->getTotalFreeSize();
|
|
timg = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti");
|
|
mpBlackTex = new J2DPicture(timg);
|
|
mpBlackTex->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 0xff));
|
|
mpBlackTex->setAlpha(0);
|
|
mpSpotScreen = new J2DScreen();
|
|
dPaneClass_setPriority(&field_0x374[1], mpHeap, mpSpotScreen,
|
|
"SCRN/zelda_item_select_icon3_spot.blo", 0x20000,
|
|
dComIfGp_getRingResArchive());
|
|
dPaneClass_showNullPane(mpSpotScreen);
|
|
mpSpotParent = new CPaneMgrAlpha(mpSpotScreen, 'n_all', 2, NULL);
|
|
mpCenterScreen = new J2DScreen();
|
|
dPaneClass_setPriority(&field_0x374[2], mpHeap, mpCenterScreen,
|
|
"SCRN/zelda_item_select_icon3_center_parts.blo", 0x20000,
|
|
dComIfGp_getRingResArchive());
|
|
dPaneClass_showNullPane(mpCenterScreen);
|
|
mpCenterParent = new CPaneMgrAlpha(mpCenterScreen, 'center_n', 2, NULL);
|
|
mpNameParent = new CPaneMgr(mpCenterScreen, 'label_n', 1, NULL);
|
|
mpCircle = new CPaneMgr(mpCenterScreen, 'circle_n', 2, NULL);
|
|
J2DTextBox* textBox[4];
|
|
textBox[0] = (J2DTextBox*)mpCenterScreen->search('fitem_n1');
|
|
textBox[1] = (J2DTextBox*)mpCenterScreen->search('fitem_n2');
|
|
textBox[2] = (J2DTextBox*)mpCenterScreen->search('fitem_n3');
|
|
textBox[3] = (J2DTextBox*)mpCenterScreen->search('fitem_n4');
|
|
mpCenterScreen->search('item_n04');
|
|
mpCenterScreen->search('item_n05');
|
|
mpCenterScreen->search('item_n06');
|
|
mpCenterScreen->search('item_n07');
|
|
for (int i = 0; i < 4; i++) {
|
|
textBox[i]->setFont(mDoExt_getMesgFont());
|
|
textBox[i]->setString(0x40, "");
|
|
}
|
|
textCentering();
|
|
mpDrawCursor = new dSelect_cursor_c(2, g_ringHIO.mCursorScale, dComIfGp_getMain2DArchive());
|
|
mpDrawCursor->setAlphaRate(1.0f);
|
|
mpItemExplain = new dMenu_ItemExplain_c(mpHeap, dComIfGp_getRingResArchive(), i_stick, true);
|
|
setRotate();
|
|
mpDrawCursor->setPos(field_0x38c[0] + field_0x568, field_0x3ec[0] + field_0x56c);
|
|
if (dComIfGs_getItem(field_0x690[0], false) != 0xff) {
|
|
mpDrawCursor->setParam(field_0x44c[0], field_0x4ac[0], 0.1f, 0.6f, 0.5f);
|
|
} else {
|
|
mpDrawCursor->setParam(1.0f, 1.0f, 0.1f, 0.6f, 0.5f);
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* param_0, STControl* param_1, CSTControl* param_2,
|
|
u8 param_3) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/__ct__12dMenu_Ring_cFP10JKRExpHeapP9STControlP10CSTControlUc.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EA708-801EAB7C 1E5048 0474+00 1/0 0/0 0/0 .text __dt__12dMenu_Ring_cFv */
|
|
dMenu_Ring_c::~dMenu_Ring_c() {
|
|
mpHeap->getTotalFreeSize();
|
|
dMeter2Info_setItemExplainWindowStatus(0);
|
|
for (int i = 0; i < 4; i++) {
|
|
for (int j = 0; j < 3; j++) {
|
|
for (int k = 0; k < 2; k++) {
|
|
mpHeap->free(mpSelectItemTexBuf[i][j][k]);
|
|
mpSelectItemTexBuf[i][j][k] = NULL;
|
|
}
|
|
if (mpSelectItemTex[i][j] != NULL) {
|
|
delete mpSelectItemTex[i][j];
|
|
mpSelectItemTex[i][j] = NULL;
|
|
}
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
if (mpItemNumTex[i] != NULL) {
|
|
delete mpItemNumTex[i];
|
|
mpItemNumTex[i] = NULL;
|
|
}
|
|
}
|
|
|
|
delete mpKanteraMeter;
|
|
mpKanteraMeter = NULL;
|
|
|
|
delete mpScreen;
|
|
mpScreen = NULL;
|
|
|
|
delete mpMessageParent;
|
|
mpMessageParent = NULL;
|
|
|
|
for (int i = 0; i < 10; i++) {
|
|
if (mpTextParent[i] != NULL) {
|
|
delete mpTextParent[i];
|
|
mpTextParent[i] = NULL;
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < MAX_ITEM_SLOTS; i++) {
|
|
for (int j = 0; j < 3; j++) {
|
|
if (mpItemTex[i][j] != NULL) {
|
|
delete mpItemTex[i][j];
|
|
mpItemTex[i][j] = NULL;
|
|
}
|
|
|
|
if (mpItemBuf[i][j] != NULL) {
|
|
mpHeap->free(mpItemBuf[i][j]);
|
|
mpItemBuf[i][j] = NULL;
|
|
}
|
|
}
|
|
}
|
|
|
|
delete mpString;
|
|
mpString = NULL;
|
|
|
|
mpHeap->getTotalFreeSize();
|
|
|
|
delete mpBlackTex;
|
|
mpBlackTex = NULL;
|
|
|
|
delete mpSpotScreen;
|
|
mpSpotScreen = NULL;
|
|
|
|
delete mpSpotParent;
|
|
mpSpotParent = NULL;
|
|
|
|
delete mpCenterScreen;
|
|
mpCenterScreen = NULL;
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
if (field_0x374[i] != NULL) {
|
|
mpHeap->free(field_0x374[i]);
|
|
field_0x374[i] = NULL;
|
|
}
|
|
}
|
|
|
|
delete mpCenterParent;
|
|
mpCenterParent = NULL;
|
|
|
|
delete mpNameParent;
|
|
mpNameParent = NULL;
|
|
|
|
delete mpCircle;
|
|
mpCircle = NULL;
|
|
|
|
delete mpDrawCursor;
|
|
mpDrawCursor = NULL;
|
|
|
|
delete mpItemExplain;
|
|
mpItemExplain = NULL;
|
|
|
|
dComIfGp_getRingResArchive()->removeResourceAll();
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 804543C0-804543C8 0029C0 0004+04 8/8 0/0 0/0 .sdata2 @4465 */
|
|
SECTION_SDATA2 static f32 lit_4465[1 + 1 /* padding */] = {
|
|
-1.0f,
|
|
/* padding */
|
|
0.0f,
|
|
};
|
|
|
|
/* 801EAB7C-801EABE8 1E54BC 006C+00 0/0 1/1 0/0 .text _create__12dMenu_Ring_cFv */
|
|
#ifdef NONMATCHING
|
|
// Matches with sinit and literals
|
|
void dMenu_Ring_c::_create() {
|
|
(this->*stick_init[field_0x6b0])();
|
|
Z2GetAudioMgr()->seStart(Z2SE_ITEM_RING_IN, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::_create() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/_create__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EABE8-801EABEC 1E5528 0004+00 0/0 1/1 0/0 .text _delete__12dMenu_Ring_cFv */
|
|
void dMenu_Ring_c::_delete() {
|
|
/* empty function */
|
|
}
|
|
|
|
/* 801EABEC-801EACC8 1E552C 00DC+00 0/0 1/1 0/0 .text _move__12dMenu_Ring_cFv */
|
|
#ifdef NONMATCHING
|
|
// Matches with sinit
|
|
void dMenu_Ring_c::_move() {
|
|
field_0x50c = g_ringHIO.mRingRadiusH;
|
|
field_0x510 = g_ringHIO.mRingRadiusV;
|
|
field_0x6b1 = field_0x6b0;
|
|
mpItemExplain->move();
|
|
(this->*stick_proc[field_0x6b0])();
|
|
if (field_0x6b0 != field_0x6b1) {
|
|
(this->*stick_init[field_0x6b0])();
|
|
}
|
|
setScale();
|
|
setActiveCursor();
|
|
setMixMessage();
|
|
if (field_0x610 != g_ringHIO.mCursorScale) {
|
|
field_0x610 = g_ringHIO.mCursorScale;
|
|
mpDrawCursor->setScale(g_ringHIO.mCursorScale);
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::_move() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/_move__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EACC8-801EB080 1E5608 03B8+00 1/1 0/0 0/0 .text _draw__12dMenu_Ring_cFv */
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
void dMenu_Ring_c::_draw() {
|
|
J2DGrafContext* grafPort = dComIfGp_getCurrentGrafPort();
|
|
grafPort->setup2D();
|
|
if (mDrawFlag == 0) {
|
|
mpSpotParent->setAlphaRate(field_0x514 * g_ringHIO.mOverlayAlpha);
|
|
mpSpotScreen->draw(0.0f, 0.0f, grafPort);
|
|
if (field_0x594 != g_ringHIO.mItemNameScale) {
|
|
field_0x594 = g_ringHIO.mItemNameScale;
|
|
mpNameParent->scale(field_0x594, field_0x594);
|
|
}
|
|
if (field_0x58c != g_ringHIO.mItemNamePosX || field_0x590 != g_ringHIO.mItemNamePosY) {
|
|
field_0x58c = g_ringHIO.mItemNamePosX;
|
|
field_0x590 = g_ringHIO.mItemNamePosY;
|
|
mpNameParent->paneTrans(field_0x58c, field_0x590);
|
|
}
|
|
if (field_0x614 != g_ringHIO.mRingPosX || field_0x618 != g_ringHIO.mRingPosY) {
|
|
field_0x614 = g_ringHIO.mRingPosX;
|
|
field_0x618 = g_ringHIO.mRingPosY;
|
|
mpCircle->paneTrans(field_0x614, field_0x618);
|
|
}
|
|
if (field_0x61c != g_ringHIO.mRingScaleH || field_0x620 != g_ringHIO.mRingScaleV) {
|
|
field_0x61c = g_ringHIO.mRingScaleH;
|
|
field_0x620 = g_ringHIO.mRingScaleV;
|
|
mpCircle->scale(field_0x61c, field_0x620);
|
|
}
|
|
f32 ringAlpha = field_0x62c != 0 ? g_ringHIO.mRingAlpha_Wolf : g_ringHIO.mRingAlpha;
|
|
if (field_0x624 != ringAlpha) {
|
|
field_0x624 = ringAlpha;
|
|
mpCircle->setAlphaRate(field_0x624);
|
|
}
|
|
mpCenterParent->setAlphaRate(field_0x514);
|
|
mpCenterScreen->draw(field_0x568, field_0x56c, grafPort);
|
|
drawItem();
|
|
textScaleHIO();
|
|
f32 alphaRate = mpTextParent[1]->getAlphaRate();
|
|
mpMessageParent->setAlphaRate(field_0x514);
|
|
if (field_0x6b0 == 2) {
|
|
mpTextParent[1]->setAlphaRate(alphaRate * field_0x514);
|
|
}
|
|
mpScreen->draw(field_0x568, field_0x56c, grafPort);
|
|
if (field_0x6b0 != 2 && field_0x570 > 0.0f) {
|
|
Vec pos;
|
|
CPaneMgr paneMgr;
|
|
pos = paneMgr.getGlobalVtxCenter(mpScreen->search('gr_btn'), true, 0);
|
|
dMeter2Info_getMeterClass()->getMeterDrawPtr()->drawPikari(
|
|
pos.x, pos.y, &field_0x570, g_ringHIO.mHighlightScale,
|
|
g_ringHIO.mHighlightFrontOuter, g_ringHIO.mHighlightFrontInner,
|
|
g_ringHIO.mHighlightBackOuter, g_ringHIO.mHighlightBackInner,
|
|
g_ringHIO.mHighlightAnimSpeed, 2);
|
|
}
|
|
mDrawFlag = 1;
|
|
} else {
|
|
drawSelectItem();
|
|
drawItem2();
|
|
mpDrawCursor->draw();
|
|
mpItemExplain->trans(field_0x568, field_0x56c);
|
|
mpItemExplain->draw((J2DOrthoGraph*)grafPort);
|
|
drawFlag0();
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::_draw() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/_draw__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EB080-801EB0A4 1E59C0 0024+00 2/2 0/0 0/0 .text setKanteraPos__12dMenu_Ring_cFff */
|
|
void dMenu_Ring_c::setKanteraPos(f32 i_posX, f32 i_posY) {
|
|
mpKanteraMeter->setPos(i_posX, i_posY);
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 804543C8-804543D0 0029C8 0008+00 6/6 0/0 0/0 .sdata2 @4596 */
|
|
SECTION_SDATA2 static f64 lit_4596 = 4503601774854144.0 /* cast s32 to float */;
|
|
|
|
/* 801EB0A4-801EB2B4 1E59E4 0210+00 0/0 1/1 0/0 .text isOpen__12dMenu_Ring_cFv */
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
bool dMenu_Ring_c::isOpen() {
|
|
bool opened = 0;
|
|
if (field_0x638 == 0) {
|
|
dMeter2Info_set2DVibrationM();
|
|
}
|
|
field_0x638++;
|
|
field_0x514 = (f32)field_0x638 / (f32)g_ringHIO.mOpenFrames;
|
|
if (field_0x6bc == 0) {
|
|
field_0x568 = 0.0f;
|
|
field_0x56c = (1.0f - field_0x514) * -448.0f;
|
|
} else if (field_0x6bc == 2) {
|
|
field_0x568 = 0.0f;
|
|
field_0x56c = (1.0f - field_0x514) * 448.0f;
|
|
} else if (field_0x6bc == 3) {
|
|
field_0x568 = (1.0f - field_0x514) * -608.0f;
|
|
field_0x56c = 0.0f;
|
|
} else if (field_0x6bc == 1) {
|
|
field_0x568 = (1.0f - field_0x514) * 608.0f;
|
|
field_0x56c = 0.0f;
|
|
}
|
|
if (field_0x638 >= g_ringHIO.mOpenFrames) {
|
|
field_0x638 = g_ringHIO.mCloseFrames;
|
|
field_0x514 = 1.0f;
|
|
field_0x568 = 0.0f;
|
|
field_0x56c = 0.0f;
|
|
opened = 1;
|
|
}
|
|
setScale();
|
|
mpDrawCursor->setPos(field_0x38c[0] + field_0x568, field_0x3ec[0] + field_0x56c);
|
|
if (dComIfGs_getItem(field_0x690[0], false) != 0xff) {
|
|
mpDrawCursor->setParam(field_0x44c[0], field_0x4ac[0], 0.1f, 0.6f, 0.5f);
|
|
} else {
|
|
mpDrawCursor->setParam(1.0f, 1.0f, 0.1f, 0.6f, 0.5f);
|
|
}
|
|
return opened;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm bool dMenu_Ring_c::isOpen() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/isOpen__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EB2B4-801EB3CC 1E5BF4 0118+00 0/0 1/1 0/0 .text isMoveEnd__12dMenu_Ring_cFv */
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
bool dMenu_Ring_c::isMoveEnd() {
|
|
bool ret = 0;
|
|
if (field_0x6b0 == 0 && field_0x6b1 != 3 && field_0x6b1 != 2) {
|
|
if (dMw_UP_TRIGGER() || dMw_DOWN_TRIGGER() || dMw_B_TRIGGER() ||
|
|
dMeter2Info_getWarpStatus() == 2 || dMeter2Info_getWarpStatus() == 1 ||
|
|
dMeter2Info_isTouchKeyCheck(0x4000) != 0)
|
|
{
|
|
if (dMw_UP_TRIGGER()) {
|
|
field_0x6bc = 0;
|
|
} else if (dMw_DOWN_TRIGGER()) {
|
|
field_0x6bc = 2;
|
|
} else {
|
|
field_0x6bc = 0xff;
|
|
}
|
|
Z2GetAudioMgr()->seStart(Z2SE_ITEM_RING_OUT, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
|
|
-1.0f, 0);
|
|
dMeter2Info_set2DVibrationM();
|
|
ret = 1;
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm bool dMenu_Ring_c::isMoveEnd() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/isMoveEnd__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EB3CC-801EB624 1E5D0C 0258+00 0/0 1/1 0/0 .text isClose__12dMenu_Ring_cFv */
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
bool dMenu_Ring_c::isClose() {
|
|
bool closed = 1;
|
|
if (field_0x674[0] != 0 || field_0x674[1] != 0 || field_0x674[2] != 0 || field_0x674[3] != 0) {
|
|
return 0;
|
|
}
|
|
field_0x638--;
|
|
field_0x514 = (f32)field_0x638 / (f32)g_ringHIO.mCloseFrames;
|
|
if (field_0x638 <= 0) {
|
|
for (int i = 0; i < 4; i++) {
|
|
setSelectItemForce(i);
|
|
}
|
|
field_0x638 = 0;
|
|
field_0x514 = 0.0f;
|
|
} else {
|
|
closed = 0;
|
|
}
|
|
if (field_0x6bc == 0) {
|
|
field_0x568 = 0.0f;
|
|
field_0x56c = (1.0f - field_0x514) * -448.0f;
|
|
} else if (field_0x6bc == 2) {
|
|
field_0x568 = 0.0f;
|
|
field_0x56c = (1.0f - field_0x514) * 448.0f;
|
|
} else if (field_0x6bc == 3) {
|
|
field_0x568 = (1.0f - field_0x514) * -608.0f;
|
|
field_0x56c = 0.0f;
|
|
} else if (field_0x6bc == 1) {
|
|
field_0x568 = (1.0f - field_0x514) * 608.0f;
|
|
field_0x56c = 0.0f;
|
|
}
|
|
mpDrawCursor->setPos(field_0x38c[mStatus] + field_0x568, field_0x3ec[mStatus] + field_0x56c);
|
|
if (dComIfGs_getItem(field_0x690[mStatus], false) != 0xff) {
|
|
mpDrawCursor->setParam(field_0x44c[mStatus], field_0x4ac[mStatus], 0.1f, 0.6f, 0.5f);
|
|
} else {
|
|
mpDrawCursor->setParam(1.0f, 1.0f, 0.1f, 0.6f, 0.5f);
|
|
}
|
|
|
|
return closed;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm bool dMenu_Ring_c::isClose() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/isClose__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* ############################################################################################## */
|
|
/* 804543D0-804543D4 0029D0 0004+00 1/1 0/0 0/0 .sdata2 @4739 */
|
|
SECTION_SDATA2 static f32 lit_4739 = 0.75f;
|
|
|
|
/* 801EB624-801EB8C0 1E5F64 029C+00 1/1 0/0 0/0 .text getStickInfo__12dMenu_Ring_cFP9STControl */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm u8 dMenu_Ring_c::getStickInfo(STControl* param_0) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/getStickInfo__12dMenu_Ring_cFP9STControl.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801EB8C0-801EB960 1E6200 00A0+00 1/0 0/0 0/0 .text calcStickAngle__12dMenu_Ring_cFP9STControlUc
|
|
*/
|
|
#ifdef NONMATCHING
|
|
// Matches with literals (lit_4795)
|
|
s16 dMenu_Ring_c::calcStickAngle(STControl* i_stick, u8 param_1) {
|
|
s16 directionTrig = i_stick->getAngleStick();
|
|
switch (param_1) {
|
|
case 0:
|
|
directionTrig += 0x8000;
|
|
break;
|
|
case 1:
|
|
directionTrig -= 0x6000;
|
|
break;
|
|
case 2:
|
|
break;
|
|
case 3:
|
|
directionTrig -= 0x4000;
|
|
break;
|
|
case 4:
|
|
directionTrig -= 0x2000;
|
|
break;
|
|
case 5:
|
|
directionTrig += 0x2000;
|
|
break;
|
|
case 6:
|
|
directionTrig += 0x4000;
|
|
break;
|
|
case 7:
|
|
directionTrig += 0x6000;
|
|
break;
|
|
default:
|
|
directionTrig += 0x4000;
|
|
}
|
|
return directionTrig;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm s16 dMenu_Ring_c::calcStickAngle(STControl* param_0, u8 param_1) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/calcStickAngle__12dMenu_Ring_cFP9STControlUc.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* ############################################################################################## */
|
|
/* 804543D4-804543D8 0029D4 0004+00 2/2 0/0 0/0 .sdata2 @4810 */
|
|
SECTION_SDATA2 static f32 lit_4810 = 304.0f;
|
|
|
|
/* 804543D8-804543DC 0029D8 0004+00 2/2 0/0 0/0 .sdata2 @4811 */
|
|
SECTION_SDATA2 static f32 lit_4811 = 224.0f;
|
|
|
|
/* 801EB960-801EBA38 1E62A0 00D8+00 1/1 0/0 0/0 .text setRotate__12dMenu_Ring_cFv */
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
void dMenu_Ring_c::setRotate() {
|
|
clacEllipsePlotAverage(field_0x6ae, g_ringHIO.mItemRingPosX + 304.0f,
|
|
g_ringHIO.mItemRingPosY + 224.0f);
|
|
for (int i = 0; i < field_0x6ae; i++) {
|
|
field_0x63e[i] = cM_atan2s(field_0x38c[i] - (304.0f + g_ringHIO.mItemRingPosX),
|
|
field_0x3ec[i] - (224.0f + g_ringHIO.mItemRingPosY));
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::setRotate() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/setRotate__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EBA38-801EBAB8 1E6378 0080+00 1/1 0/0 0/0 .text setItemScale__12dMenu_Ring_cFif */
|
|
void dMenu_Ring_c::setItemScale(int i_idx, f32 i_scale) {
|
|
for (int i = 0; i < 3; i++) {
|
|
if (mpItemTex[i_idx][i] != NULL) {
|
|
mpItemTex[i_idx][i]->scale(i_scale, i_scale);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801EBAB8-801EBB10 1E63F8 0058+00 2/2 0/0 0/0 .text setButtonScale__12dMenu_Ring_cFif
|
|
*/
|
|
void dMenu_Ring_c::setButtonScale(int i_idx, f32 i_value) {
|
|
i_idx += 8;
|
|
if (mpTextParent[i_idx] != NULL) {
|
|
f32 buttonScale = i_value * field_0x5e8[i_idx];
|
|
mpTextParent[i_idx]->scale(buttonScale, buttonScale);
|
|
}
|
|
}
|
|
|
|
/* 801EBB10-801EBE58 1E6450 0348+00 1/1 0/0 0/0 .text setItem__12dMenu_Ring_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::setItem() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/setItem__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801EBE58-801EC20C 1E6798 03B4+00 2/2 0/0 0/0 .text setJumpItem__12dMenu_Ring_cFb */
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) {
|
|
for (int i = 0; i < 4; i++) {
|
|
if (i == 2) {
|
|
setSelectItem(i, field_0x6b4[i]);
|
|
} else if (i == field_0x6cd) {
|
|
setSelectItem(i, getItem(field_0x6cb, 0));
|
|
} else {
|
|
setSelectItem(i, getItem(field_0x6b4[i], field_0x6b8[i]));
|
|
}
|
|
}
|
|
if (field_0x6aa != 0xff) {
|
|
field_0x518[0] = field_0x38c[field_0x6aa];
|
|
field_0x528[0] = field_0x3ec[field_0x6aa];
|
|
}
|
|
if (field_0x6ab != 0xff) {
|
|
field_0x518[1] = field_0x38c[field_0x6ab];
|
|
field_0x528[1] = field_0x3ec[field_0x6ab];
|
|
}
|
|
if (field_0x6ac != 0xff) {
|
|
field_0x518[2] = field_0x38c[field_0x6ac];
|
|
field_0x528[2] = field_0x3ec[field_0x6ac];
|
|
}
|
|
if (field_0x6ad != 0xff) {
|
|
field_0x518[3] = field_0x38c[field_0x6ad];
|
|
field_0x528[3] = field_0x3ec[field_0x6ad];
|
|
}
|
|
if (field_0x6b3 == 0) {
|
|
field_0x538[0] = g_ringHIO.mSelectItemScale;
|
|
field_0x538[1] = g_ringHIO.mUnselectItemScale;
|
|
if (field_0x6b4[0] != dComIfGs_getSelectItemIndex(0) || field_0x6b8[0] != dComIfGs_getMixItemIndex(0)) {
|
|
field_0x674[0] = 1;
|
|
}
|
|
} else if (field_0x6b3 == 1) {
|
|
field_0x538[0] = g_ringHIO.mUnselectItemScale;
|
|
field_0x538[1] = g_ringHIO.mSelectItemScale;
|
|
if (field_0x6b4[1] != dComIfGs_getSelectItemIndex(1) || field_0x6b8[1] != dComIfGs_getMixItemIndex(1)) {
|
|
field_0x674[1] = 1;
|
|
}
|
|
}
|
|
if (field_0x674[0] == 1) {
|
|
if (i_useVibrationM) {
|
|
dMeter2Info_set2DVibrationM();
|
|
}
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
} else if (field_0x674[1] == 1) {
|
|
if (i_useVibrationM) {
|
|
dMeter2Info_set2DVibrationM();
|
|
}
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
} else if (field_0x674[2] == 1) {
|
|
if (i_useVibrationM) {
|
|
dMeter2Info_set2DVibrationM();
|
|
}
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_X, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
} else if (field_0x674[3] == 1) {
|
|
if (i_useVibrationM) {
|
|
dMeter2Info_set2DVibrationM();
|
|
}
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_SET_B, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
} else {
|
|
Z2GetAudioMgr()->seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::setJumpItem(bool param_0) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/setJumpItem__12dMenu_Ring_cFb.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EC20C-801EC3B0 1E6B4C 01A4+00 2/2 0/0 0/0 .text setScale__12dMenu_Ring_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::setScale() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/setScale__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801EC3B0-801EC504 1E6CF0 0154+00 1/1 0/0 0/0 .text setNameString__12dMenu_Ring_cFUl */
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
void dMenu_Ring_c::setNameString(u32 i_stringID) {
|
|
J2DTextBox* textBox[4];
|
|
textBox[0] = (J2DTextBox*)mpCenterScreen->search('fitem_n1');
|
|
textBox[1] = (J2DTextBox*)mpCenterScreen->search('fitem_n2');
|
|
textBox[2] = (J2DTextBox*)mpCenterScreen->search('fitem_n3');
|
|
textBox[3] = (J2DTextBox*)mpCenterScreen->search('fitem_n4');
|
|
if (field_0x630 != i_stringID) {
|
|
for (int i = 0; i < 4; i++) {
|
|
if (i_stringID == 0) {
|
|
strcpy(textBox[i]->getStringPtr(), "");
|
|
} else {
|
|
mpString->getString(i_stringID, textBox[i], NULL, NULL, NULL, 0);
|
|
}
|
|
}
|
|
field_0x630 = i_stringID;
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::setNameString(u32 param_0) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/setNameString__12dMenu_Ring_cFUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EC504-801EC754 1E6E44 0250+00 1/1 0/0 0/0 .text setActiveCursor__12dMenu_Ring_cFv
|
|
*/
|
|
#ifdef NONMATCHING
|
|
// Matches with sinit and literals
|
|
void dMenu_Ring_c::setActiveCursor() {
|
|
u8 item = dComIfGs_getItem(field_0x690[mStatus], false);
|
|
if (field_0x6b0 == 0 && field_0x6b1 != 3 && field_0x6b1 != 2 && mpItemExplain->getStatus() == 0)
|
|
{
|
|
if (mDoCPd_c::getTrigR(PAD_1) && field_0x62c == 0 && item != 0xff) {
|
|
for (int i = 0; i < MAX_SELECT_ITEM; i++) {
|
|
setSelectItemForce(i);
|
|
}
|
|
setMixItem();
|
|
} else if (mDoCPd_c::getTrigX(PAD_1) && field_0x62c == 0 && item != 0xff) {
|
|
for (int i = 0; i < MAX_SELECT_ITEM; i++) {
|
|
setSelectItemForce(i);
|
|
}
|
|
field_0x6b3 = 0;
|
|
if (!checkCombineBomb(field_0x6b3)) {
|
|
setItem();
|
|
if (mpItemExplain->getStatus() == 0) {
|
|
field_0x6b0 = 0;
|
|
(this->*stick_init[field_0x6b0])();
|
|
}
|
|
}
|
|
} else if (mDoCPd_c::getTrigY(PAD_1) && field_0x62c == 0 && item != 0xff) {
|
|
for (int i = 0; i < MAX_SELECT_ITEM; i++) {
|
|
setSelectItemForce(i);
|
|
}
|
|
field_0x6b3 = 1;
|
|
if (!checkCombineBomb(field_0x6b3)) {
|
|
setItem();
|
|
if (mpItemExplain->getStatus() == 0) {
|
|
field_0x6b0 = 0;
|
|
(this->*stick_init[field_0x6b0])();
|
|
}
|
|
}
|
|
} else if (mDoCPd_c::getTrigX(PAD_1) || mDoCPd_c::getTrigY(PAD_1)) {
|
|
Z2GetAudioMgr()->seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f,
|
|
0);
|
|
}
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::setActiveCursor() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/setActiveCursor__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* ############################################################################################## */
|
|
/* 804543DC-804543E0 0029DC 0004+00 1/1 0/0 0/0 .sdata2 @5171 */
|
|
SECTION_SDATA2 static u32 lit_5171 = 0xFFFFFFFF;
|
|
|
|
/* 801EC754-801ECB14 1E7094 03C0+00 1/1 0/0 0/0 .text setMixItem__12dMenu_Ring_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::setMixItem() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/setMixItem__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* ############################################################################################## */
|
|
/* 804543E0-804543E4 0029E0 0004+00 2/2 0/0 0/0 .sdata2 @5366 */
|
|
SECTION_SDATA2 static f32 lit_5366 = 24.0f;
|
|
|
|
/* 804543E4-804543E8 0029E4 0004+00 3/3 0/0 0/0 .sdata2 @5367 */
|
|
SECTION_SDATA2 static f32 lit_5367 = 255.0f;
|
|
|
|
/* 804543E8-804543EC 0029E8 0004+00 2/2 0/0 0/0 .sdata2 @5368 */
|
|
SECTION_SDATA2 static f32 lit_5368 = 15.0f;
|
|
|
|
/* 804543EC-804543F0 0029EC 0004+00 3/3 0/0 0/0 .sdata2 @5369 */
|
|
SECTION_SDATA2 static f32 lit_5369 = 10.0f;
|
|
|
|
/* 804543F0-804543F4 0029F0 0004+00 2/2 0/0 0/0 .sdata2 @5370 */
|
|
SECTION_SDATA2 static f32 lit_5370 = 16.0f / 25.0f;
|
|
|
|
/* 801ECB14-801ECF9C 1E7454 0488+00 1/1 0/0 0/0 .text drawItem__12dMenu_Ring_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::drawItem() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/drawItem__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801ECF9C-801ED2BC 1E78DC 0320+00 1/1 0/0 0/0 .text drawItem2__12dMenu_Ring_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::drawItem2() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/drawItem2__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801ED2BC-801ED31C 1E7BFC 0060+00 1/0 0/0 0/0 .text stick_wait_init__12dMenu_Ring_cFv
|
|
*/
|
|
void dMenu_Ring_c::stick_wait_init() {
|
|
if (mDoCPd_c::getHoldL(PAD_1) != 0) {
|
|
if (field_0x6ce != 0) {
|
|
field_0x672 = g_ringHIO.mDirectSelectWaitFrames;
|
|
} else {
|
|
field_0x672 = 0;
|
|
}
|
|
} else {
|
|
field_0x672 = g_ringHIO.mCursorChangeWaitFrames;
|
|
}
|
|
field_0x63a = 0;
|
|
field_0x6ce = 0;
|
|
}
|
|
|
|
/* 801ED31C-801ED490 1E7C5C 0174+00 1/0 0/0 0/0 .text stick_wait_proc__12dMenu_Ring_cFv
|
|
*/
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::stick_wait_proc() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/stick_wait_proc__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801ED490-801ED53C 1E7DD0 00AC+00 1/0 0/0 0/0 .text stick_move_init__12dMenu_Ring_cFv
|
|
*/
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
void dMenu_Ring_c::stick_move_init() {
|
|
if (field_0x680 == 0) {
|
|
field_0x680 = g_ringHIO.mCursorInitSpeed;
|
|
} else if (field_0x680 < g_ringHIO.mCursorMax) {
|
|
field_0x680 += g_ringHIO.mCursorAccel;
|
|
if (field_0x680 > g_ringHIO.mCursorMax) {
|
|
field_0x680 = g_ringHIO.mCursorMax;
|
|
}
|
|
}
|
|
field_0x63a = 0;
|
|
Z2GetAudioMgr()->seStart(Z2SE_ITEM_RING_ROLL, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::stick_move_init() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/stick_move_init__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* ############################################################################################## */
|
|
/* 804543F4-804543F8 0029F4 0004+00 1/1 0/0 0/0 .sdata2 @5648 */
|
|
SECTION_SDATA2 static f32 lit_5648 = 70.0f;
|
|
|
|
/* 804543F8-80454400 0029F8 0008+00 1/1 0/0 0/0 .sdata2 @5649 */
|
|
SECTION_SDATA2 static f64 lit_5649 = 0.5;
|
|
|
|
/* 80454400-80454408 002A00 0008+00 1/1 0/0 0/0 .sdata2 @5650 */
|
|
SECTION_SDATA2 static f64 lit_5650 = 3.0;
|
|
|
|
/* 80454408-80454410 002A08 0008+00 1/1 0/0 0/0 .sdata2 @5651 */
|
|
SECTION_SDATA2 static u8 lit_5651[8] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
/* 801ED53C-801ED934 1E7E7C 03F8+00 1/0 0/0 0/0 .text stick_move_proc__12dMenu_Ring_cFv
|
|
*/
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::stick_move_proc() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/stick_move_proc__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801ED934-801ED938 1E8274 0004+00 1/0 0/0 0/0 .text stick_explain_init__12dMenu_Ring_cFv */
|
|
void dMenu_Ring_c::stick_explain_init() {
|
|
/* empty function */
|
|
}
|
|
|
|
/* 801ED938-801ED93C 1E8278 0004+00 1/0 0/0 0/0 .text stick_explain_force_init__12dMenu_Ring_cFv
|
|
*/
|
|
void dMenu_Ring_c::stick_explain_force_init() {
|
|
/* empty function */
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80454410-80454414 002A10 0004+00 2/2 0/0 0/0 .sdata2 @5683 */
|
|
SECTION_SDATA2 static f32 lit_5683 = 150.0f;
|
|
|
|
/* 801ED93C-801EDA0C 1E827C 00D0+00 1/0 0/0 0/0 .text stick_explain_proc__12dMenu_Ring_cFv */
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
void dMenu_Ring_c::stick_explain_proc() {
|
|
mpItemExplain->move();
|
|
if (mpItemExplain->getStatus() == 0) {
|
|
if (dMeter2Info_getWarpStatus() == 1) {
|
|
dMeter2Info_warpInProc();
|
|
} else if (dMeter2Info_getWarpStatus() == 2) {
|
|
dMeter2Info_warpInProc();
|
|
}
|
|
dMeter2Info_setItemExplainWindowStatus(0);
|
|
field_0x6b0 = 0;
|
|
}
|
|
f32 alphaRatio = mpItemExplain->getAlphaRatio();
|
|
mpTextParent[1]->setAlphaRate(alphaRatio);
|
|
mpBlackTex->setAlpha((1.0f - alphaRatio) * 150.0f);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::stick_explain_proc() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/stick_explain_proc__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EDA0C-801EDB14 1E834C 0108+00 1/0 0/0 0/0 .text stick_explain_force_proc__12dMenu_Ring_cFv
|
|
*/
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
void dMenu_Ring_c::stick_explain_force_proc() {
|
|
mpItemExplain->move();
|
|
u8 endButton = mpItemExplain->checkEndButton();
|
|
if (endButton == 1) {
|
|
setCombineBomb(field_0x6b3);
|
|
} else if (endButton == 2) {
|
|
u8 itemMaxNum = getItemMaxNum(field_0x690[mStatus]);
|
|
u8 itemNum = getItemNum(field_0x690[mStatus]);
|
|
mpItemExplain->openExplain(field_0x690[mStatus], itemNum, itemMaxNum, true);
|
|
field_0x6b0 = 0;
|
|
}
|
|
f32 alphaRatio = mpItemExplain->getAlphaRatio();
|
|
mpTextParent[1]->setAlphaRate(alphaRatio);
|
|
mpBlackTex->setAlpha((1.0f - alphaRatio) * 150.0f);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::stick_explain_force_proc() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/stick_explain_force_proc__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EDB14-801EDC98 1E8454 0184+00 2/2 0/0 0/0 .text setSelectItem__12dMenu_Ring_cFiUc
|
|
*/
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::setSelectItem(int param_0, u8 param_1) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/setSelectItem__12dMenu_Ring_cFiUc.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* ############################################################################################## */
|
|
/* 80454414-80454418 002A14 0004+00 1/1 0/0 0/0 .sdata2 @5811 */
|
|
SECTION_SDATA2 static f32 lit_5811 = 17.0f / 10.0f;
|
|
|
|
/* 801EDC98-801EDF2C 1E85D8 0294+00 1/1 0/0 0/0 .text drawSelectItem__12dMenu_Ring_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::drawSelectItem() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/drawSelectItem__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801EDF2C-801EDFDC 1E886C 00B0+00 4/4 0/0 0/0 .text setSelectItemForce__12dMenu_Ring_cFi */
|
|
void dMenu_Ring_c::setSelectItemForce(int param_0) {
|
|
if (param_0 == 2) {
|
|
if (field_0x674[param_0] != 0) {
|
|
dComIfGs_setSelectItemIndex(param_0, field_0x6b4[param_0]);
|
|
field_0x674[param_0] = 0;
|
|
}
|
|
} else if (field_0x674[param_0] != 0) {
|
|
for (int i = 0; i < 2; i++) {
|
|
dComIfGs_setMixItemIndex(i, field_0x6b8[i]);
|
|
dComIfGs_setSelectItemIndex(i, field_0x6b4[i]);
|
|
}
|
|
field_0x674[param_0] = 0;
|
|
}
|
|
}
|
|
|
|
/* 801EDFDC-801EE058 1E891C 007C+00 1/1 0/0 0/0 .text getCursorPos__12dMenu_Ring_cFUc */
|
|
s32 dMenu_Ring_c::getCursorPos(u8 param_0) {
|
|
for (s32 i = 0; i < field_0x6ae; i++) {
|
|
if (param_0 == dComIfGs_getLineUpItem(i)) {
|
|
return i & 0xff;
|
|
}
|
|
}
|
|
return 0xff;
|
|
}
|
|
|
|
/* 801EE058-801EE15C 1E8998 0104+00 4/4 0/0 0/0 .text getItemNum__12dMenu_Ring_cFUc */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm u8 dMenu_Ring_c::getItemNum(u8 param_0) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/getItemNum__12dMenu_Ring_cFUc.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801EE15C-801EE228 1E8A9C 00CC+00 4/4 0/0 0/0 .text getItemMaxNum__12dMenu_Ring_cFUc */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm u8 dMenu_Ring_c::getItemMaxNum(u8 param_0) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/getItemMaxNum__12dMenu_Ring_cFUc.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801EE228-801EE63C 1E8B68 0414+00 1/1 0/0 0/0 .text checkExplainForce__12dMenu_Ring_cFv
|
|
*/
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::checkExplainForce() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/checkExplainForce__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801EE63C-801EE644 1E8F7C 0008+00 1/1 0/0 0/0 .text checkCombineBomb__12dMenu_Ring_cFi
|
|
*/
|
|
bool dMenu_Ring_c::checkCombineBomb(int param_0) {
|
|
return false;
|
|
}
|
|
|
|
/* 801EE644-801EE648 1E8F84 0004+00 1/1 0/0 0/0 .text setCombineBomb__12dMenu_Ring_cFi */
|
|
void dMenu_Ring_c::setCombineBomb(int param_0) {
|
|
/* empty function */
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80454418-8045441C 002A18 0004+00 1/1 0/0 0/0 .sdata2 @6143 */
|
|
SECTION_SDATA2 static f32 lit_6143 = 16.0f;
|
|
|
|
/* 801EE648-801EEA84 1E8F88 043C+00 2/2 0/0 0/0 .text drawNumber__12dMenu_Ring_cFiiff */
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
void dMenu_Ring_c::drawNumber(int param_0, int param_1, f32 param_2, f32 param_3) {
|
|
if (param_0 > 100) {
|
|
param_0 = 100;
|
|
}
|
|
|
|
JUtility::TColor colorBlack;
|
|
JUtility::TColor colorWhite;
|
|
if (param_0 == param_1) {
|
|
colorBlack.set(30, 30, 30, 0);
|
|
colorWhite.set(0xff, 200, 50, 0xff);
|
|
} else if (param_0 == 0) {
|
|
colorBlack.set(30, 30, 30, 0);
|
|
colorWhite.set(180, 180, 180, 0xff);
|
|
} else {
|
|
colorBlack.set(0, 0, 0, 0);
|
|
colorWhite.set(0xff, 0xff, 0xff, 0xff);
|
|
}
|
|
for (int i = 0; i < 3; i++) {
|
|
mpItemNumTex[i]->setBlackWhite(colorBlack, colorWhite);
|
|
}
|
|
if (param_0 < 100) {
|
|
ResTIMG* texture = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource(
|
|
'TIMG', dMeter2Info_getNumberTextureName(param_0 / 10));
|
|
mpItemNumTex[0]->changeTexture(texture, 0);
|
|
texture = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource(
|
|
'TIMG', dMeter2Info_getNumberTextureName(param_0 % 10));
|
|
mpItemNumTex[1]->changeTexture(texture, 0);
|
|
mpItemNumTex[2]->hide();
|
|
} else {
|
|
ResTIMG* texture = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource(
|
|
'TIMG', dMeter2Info_getNumberTextureName(param_0 / 100));
|
|
mpItemNumTex[0]->changeTexture(texture, 0);
|
|
param_0 = (u8)(param_0 % 100);
|
|
texture = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource(
|
|
'TIMG', dMeter2Info_getNumberTextureName(param_0 / 10));
|
|
mpItemNumTex[1]->changeTexture(texture, 0);
|
|
texture = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource(
|
|
'TIMG', dMeter2Info_getNumberTextureName(param_0 % 10));
|
|
mpItemNumTex[2]->changeTexture(texture, 0);
|
|
mpItemNumTex[2]->show();
|
|
}
|
|
u8 itemIconAlpha = field_0x62c != 0 ? g_ringHIO.mItemIconAlpha_Wolf : g_ringHIO.mItemIconAlpha;
|
|
for (int i = 0; i < 3; i++) {
|
|
mpItemNumTex[i]->setAlpha(itemIconAlpha * field_0x514);
|
|
mpItemNumTex[i]->draw(param_2 + i * 16.0f, param_3 - 16.0f, 16.0f, 16.0f, 0, 0, 0);
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::drawNumber(int param_0, int param_1, f32 param_2, f32 param_3) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/drawNumber__12dMenu_Ring_cFiiff.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EEA84-801EEAE4 1E93C4 0060+00 1/1 0/0 0/0 .text getItem__12dMenu_Ring_cFiUc */
|
|
u8 dMenu_Ring_c::getItem(int i_slot_no, u8 i_slot_no2) {
|
|
u8 item = dComIfGs_getItem(i_slot_no, 0);
|
|
dComIfGs_getItem(i_slot_no2, 0);
|
|
return item;
|
|
}
|
|
|
|
/* 801EEAE4-801EEB58 1E9424 0074+00 2/2 0/0 0/0 .text setDoStatus__12dMenu_Ring_cFUc */
|
|
void dMenu_Ring_c::setDoStatus(u8 param_0) {
|
|
if (param_0 == 0 && field_0x6cc == 0x24) {
|
|
if (field_0x68e > 0) {
|
|
field_0x68e--;
|
|
if (field_0x68e == 0) {
|
|
field_0x6cc = 0;
|
|
}
|
|
} else {
|
|
field_0x68e = 10;
|
|
}
|
|
} else {
|
|
field_0x6cc = param_0;
|
|
field_0x68e = 0;
|
|
}
|
|
dComIfGp_setDoStatusForce(field_0x6cc, 0);
|
|
}
|
|
|
|
/* 801EEB58-801EEC98 1E9498 0140+00 1/1 0/0 0/0 .text isMixItemOn__12dMenu_Ring_cFv */
|
|
bool dMenu_Ring_c::isMixItemOn() {
|
|
if ((!field_0x62c) && (dComIfGs_getItem(field_0x690[mStatus], 0) != 0xff)) {
|
|
s32 item = dComIfGs_getItem(field_0x690[mStatus], 0);
|
|
switch (item) {
|
|
case 0x3E:
|
|
case 0x70:
|
|
case 0x71:
|
|
case 0x72:
|
|
if ((dComIfGs_getSelectItemIndex(0) == 4) && (dComIfGs_getMixItemIndex(0) == 0xff) ||
|
|
(dComIfGs_getMixItemIndex(0) == 4))
|
|
{
|
|
return 1;
|
|
}
|
|
if ((dComIfGs_getSelectItemIndex(1) == 4) && (dComIfGs_getMixItemIndex(1) == 0xff) ||
|
|
(dComIfGs_getMixItemIndex(1) == 4))
|
|
{
|
|
return 1;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 801EEC98-801EED84 1E95D8 00EC+00 1/1 0/0 0/0 .text isMixItemOff__12dMenu_Ring_cFv */
|
|
bool dMenu_Ring_c::isMixItemOff() {
|
|
if ((!field_0x62c) && (dComIfGs_getItem(field_0x690[mStatus], 0) != 0xff)) {
|
|
if ((dComIfGs_getMixItemIndex(0) == 4) &&
|
|
(field_0x690[mStatus] == dComIfGs_getSelectItemIndex(0)))
|
|
{
|
|
return 1;
|
|
}
|
|
if ((dComIfGs_getMixItemIndex(1) == 4) &&
|
|
(field_0x690[mStatus] == dComIfGs_getSelectItemIndex(1)))
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 8045441C-80454420 002A1C 0004+00 1/1 0/0 0/0 .sdata2 @6308 */
|
|
SECTION_SDATA2 static f32 lit_6308 = 18.0f;
|
|
|
|
/* 801EED84-801EEF14 1E96C4 0190+00 1/1 0/0 0/0 .text setMixMessage__12dMenu_Ring_cFv */
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
void dMenu_Ring_c::setMixMessage() {
|
|
if (mpTextParent[4] != NULL) {
|
|
if (isMixItemOff()) {
|
|
for (int i = 0; i < 5; i++) {
|
|
field_0x1c8[i]->hide();
|
|
field_0x1dc[i]->show();
|
|
}
|
|
if (!mpTextParent[4]->isVisible()) {
|
|
field_0x570 = 18.0f - g_ringHIO.mHighlightAnimSpeed;
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_COMBINE_ICON, NULL, 0, 0, 1.0f, 1.0f,
|
|
-1.0f, -1.0f, 0);
|
|
}
|
|
mpTextParent[4]->show();
|
|
} else if (isMixItemOn()) {
|
|
for (int i = 0; i < 5; i++) {
|
|
field_0x1c8[i]->show();
|
|
field_0x1dc[i]->hide();
|
|
}
|
|
if (!mpTextParent[4]->isVisible()) {
|
|
field_0x570 = 18.0f - g_ringHIO.mHighlightAnimSpeed;
|
|
Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_COMBINE_ICON, NULL, 0, 0, 1.0f, 1.0f,
|
|
-1.0f, -1.0f, 0);
|
|
}
|
|
mpTextParent[4]->show();
|
|
} else {
|
|
mpTextParent[4]->hide();
|
|
field_0x570 = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::setMixMessage() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/setMixMessage__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EEF14-801EF11C 1E9854 0208+00 2/2 0/0 0/0 .text textScaleHIO__12dMenu_Ring_cFv */
|
|
void dMenu_Ring_c::textScaleHIO() {
|
|
for (int i = 0; i < 10; i++) {
|
|
if (mpTextParent[i] != NULL && i != 2) {
|
|
if (field_0x598[i] != g_ringHIO.mGuidePosX[i] ||
|
|
field_0x5c0[i] != g_ringHIO.mGuidePosY[i])
|
|
{
|
|
field_0x598[i] = g_ringHIO.mGuidePosX[i];
|
|
field_0x5c0[i] = g_ringHIO.mGuidePosY[i];
|
|
if (i == 8) {
|
|
mpTextParent[i]->paneTrans(field_0x598[i] + field_0x574[0], field_0x5c0[i]);
|
|
} else if (i == 9) {
|
|
mpTextParent[i]->paneTrans(field_0x598[i] + field_0x574[1], field_0x5c0[i]);
|
|
} else {
|
|
mpTextParent[i]->paneTrans(field_0x598[i], field_0x5c0[i]);
|
|
}
|
|
if (mpTextParent[2] != NULL && i == 1) {
|
|
mpTextParent[2]->paneTrans(field_0x598[i], field_0x5c0[i]);
|
|
}
|
|
}
|
|
if (field_0x5e8[i] != g_ringHIO.mGuideScale[i]) {
|
|
field_0x5e8[i] = g_ringHIO.mGuideScale[i];
|
|
if (i == 8 || i == 9) {
|
|
if (field_0x6cf == i - 8) {
|
|
setButtonScale(i - 8, g_ringHIO.mSelectButtonScale);
|
|
} else {
|
|
setButtonScale(i - 8, g_ringHIO.mUnselectButtonScale);
|
|
}
|
|
} else if (i == 5 || i == 7) {
|
|
mpTextParent[i]->scale(field_0x5e8[i], field_0x5e8[i]);
|
|
}
|
|
if (mpTextParent[2] != NULL && i == 1) {
|
|
mpTextParent[2]->scale(field_0x5e8[i], field_0x5e8[i]);
|
|
}
|
|
if (i < 5 && mpTextParent[i] != NULL) {
|
|
mpTextParent[i]->scale(field_0x5e8[i], field_0x5e8[i]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801EF11C-801EF13C 1E9A5C 0020+00 1/1 0/0 0/0 .text textCentering__12dMenu_Ring_cFv */
|
|
void dMenu_Ring_c::textCentering() {
|
|
textScaleHIO();
|
|
}
|
|
|
|
/* 801EF13C-801EF174 1E9A7C 0038+00 1/1 0/0 0/0 .text clacEllipseFunction__12dMenu_Ring_cFfff */
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
f32 dMenu_Ring_c::clacEllipseFunction(f32 param_0, f32 param_1, f32 param_2) {
|
|
return -JMAFastSqrt(param_2 * param_2 * (1.0f - (param_0 * param_0) / (param_1 * param_1)));
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm f32 dMenu_Ring_c::clacEllipseFunction(f32 param_0, f32 param_1, f32 param_2) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/clacEllipseFunction__12dMenu_Ring_cFfff.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801EF174-801EF1A0 1E9AB4 002C+00 1/1 0/0 0/0 .text calcDistance__12dMenu_Ring_cFffff
|
|
*/
|
|
#ifdef NONMATCHING
|
|
// Matches with literals
|
|
f32 dMenu_Ring_c::calcDistance(f32 param_0, f32 param_1, f32 param_2, f32 param_3) {
|
|
return JMAFastSqrt((param_2 - param_0) * (param_2 - param_0) +
|
|
(param_3 - param_1) * (param_3 - param_1));
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm f32 dMenu_Ring_c::calcDistance(f32 param_0, f32 param_1, f32 param_2, f32 param_3) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/calcDistance__12dMenu_Ring_cFffff.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* ############################################################################################## */
|
|
/* 80454420-80454424 002A20 0004+00 1/1 0/0 0/0 .sdata2 @6454 */
|
|
SECTION_SDATA2 static f32 lit_6454 = 1000.0f;
|
|
|
|
/* 801EF1A0-801EF484 1E9AE0 02E4+00 1/1 0/0 0/0 .text clacEllipsePlotAverage__12dMenu_Ring_cFiff
|
|
*/
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMenu_Ring_c::clacEllipsePlotAverage(int param_0, f32 param_1, f32 param_2) {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/clacEllipsePlotAverage__12dMenu_Ring_cFiff.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801EF484-801EF48C 1E9DC4 0008+00 1/1 0/0 0/0 .text dpdMove__12dMenu_Ring_cFv */
|
|
bool dMenu_Ring_c::dpdMove() {
|
|
return false;
|
|
}
|
|
|
|
/* 80454424-8045442C 002A24 0008+00 1/1 0/0 0/0 .sdata2 i_nameID$6472 */
|
|
SECTION_SDATA2 static u32 i_nameID[2] = {0x4DE, 0x4E0};
|
|
|
|
/* 8045442C-80454434 002A2C 0008+00 1/1 0/0 0/0 .sdata2 i_expID$6473 */
|
|
SECTION_SDATA2 static u32 i_expID[2] = {0x4DF, 0x4E1};
|
|
|
|
/* 801EF48C-801EF560 1E9DCC 00D4+00 1/1 0/0 0/0 .text openExplain__12dMenu_Ring_cFUc */
|
|
u8 dMenu_Ring_c::openExplain(u8 param_0) {
|
|
if (field_0x6cf == 0xff && field_0x6d0 == 0xff) {
|
|
if (param_0 != 0xff) {
|
|
return mpItemExplain->openExplain(field_0x690[mStatus],
|
|
getItemNum(field_0x690[mStatus]),
|
|
getItemMaxNum(field_0x690[mStatus]), false);
|
|
}
|
|
return 0;
|
|
}
|
|
u8 idx = field_0x6d0 != 0xff ? field_0x6d0 : field_0x6cf;
|
|
return mpItemExplain->openExplainTx(i_nameID[idx], i_expID[idx]);
|
|
}
|
|
|
|
/* 801EF560-801EF580 1E9EA0 0020+00 1/0 0/0 0/0 .text draw__12dMenu_Ring_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
// asm void dMenu_Ring_c::draw() {
|
|
extern "C" asm void draw__12dMenu_Ring_cFv() {
|
|
nofralloc
|
|
#include "asm/d/menu/d_menu_ring/draw__12dMenu_Ring_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 801EF580-801EF654 1E9EC0 00D4+00 0/0 1/0 0/0 .text __sinit_d_menu_ring_cpp */
|
|
#ifdef NONMATCHING
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void __sinit_d_menu_ring_cpp(){nofralloc
|
|
#include "asm/d/menu/d_menu_ring/__sinit_d_menu_ring_cpp.s"
|
|
}
|
|
#pragma pop
|
|
|
|
#pragma push
|
|
#pragma force_active on
|
|
REGISTER_CTORS(0x801EF580, __sinit_d_menu_ring_cpp);
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* ############################################################################################## */
|
|
/* 80454434-80454438 -00001 0004+00 0/0 0/0 0/0 .sdata2 None */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_SDATA2 static u8 pad_80454434[4] = {
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
};
|
|
#pragma pop
|