Merge pull request #757 from mattias-blum/d_menu

d_menu work
This commit is contained in:
LagoLunatic
2025-05-21 18:10:15 -04:00
committed by GitHub
12 changed files with 1264 additions and 105 deletions
+5 -2
View File
@@ -91,9 +91,12 @@ public:
void getBounds() {}
void getGlbBounds() {}
void getRotate() const {}
f32 getRotate() const { return mRotation; }
void place(const JGeometry::TBox2<f32>&) {}
void rotate(f32) {}
void rotate(f32 angle) {
mRotation = angle;
calcMtx();
}
void rotate(f32 offsetX, f32 offsetY, J2DRotateAxis axis, f32 angle) {
mBasePosition.x = offsetX;
mBasePosition.y = offsetY;
+2 -1
View File
@@ -52,7 +52,8 @@ public:
void setCharColor(JUtility::TColor c) { mCharColor.set(c); }
void setGradColor(JUtility::TColor c) { mGradColor.set(c); }
void setBlack(JUtility::TColor c) { mBlack = c; }
void setWhite(JUtility::TColor c) { mBlack = c; }
void setWhite(JUtility::TColor c) { mWhite = c; }
void setLineSpace(f32 x) { mLineSpace = x; }
f32 getLineSpace() const { return mLineSpace; }
f32 getCharSpace() const { return mCharSpace; }
+4
View File
@@ -1149,6 +1149,10 @@ inline void dComIfGs_offCompleteCollectMap(int i_no) {
g_dComIfG_gameInfo.save.getPlayer().getMap().offCompleteMap(i_no - 1);
}
inline s32 dComIfGs_getCollectMapNum() {
return g_dComIfG_gameInfo.save.getPlayer().getMap().getCollectMapNum();
}
inline void dComIfGs_onSaveArriveGridForAgb(int i_no) {
g_dComIfG_gameInfo.save.getPlayer().getMap().onSaveArriveGridForAgb(i_no);
}
+1 -1
View File
@@ -25,7 +25,7 @@ public:
void Yinit();
virtual f32 getValueStick();
virtual s16 getAngleStick();
s32 checkTrigger();
u8 checkTrigger();
bool checkLeftTrigger();
bool checkRightTrigger();
bool checkUpTrigger();
+95
View File
@@ -2,6 +2,10 @@
#define D_MENU_COLLECT_H
#include "dolphin/types.h"
#include "JSystem/J2DGraph/J2DScreen.h"
#include "JSystem/J2DGraph/J2DTextBox.h"
#include "f_op/f_op_msg_mng.h"
#include "d/d_2dnumber.h"
struct fopMsgM_pane_class;
class JKRArchive;
@@ -84,11 +88,102 @@ public:
void animeStep4(short, short);
void _open2();
void _close2();
/* 0x000 */ u8 m000[0x004 - 0x000];
/* 0x004 */ J2DScreen* m004;
/* 0x008 */ fopMsgM_pane_class m008;
/* 0x040 */ fopMsgM_pane_class m040;
/* 0x078 */ fopMsgM_pane_class m078;
/* 0x0B0 */ fopMsgM_pane_class m0B0[15];
/* 0x3F8 */ fopMsgM_pane_class m3F8[15];
/* 0x740 */ fopMsgM_pane_class m740;
/* 0x778 */ fopMsgM_pane_class m778;
/* 0x7B0 */ fopMsgM_pane_class m7B0;
/* 0x7E8 */ fopMsgM_pane_class m7E8;
/* 0x820 */ fopMsgM_pane_class m820;
/* 0x858 */ fopMsgM_pane_class m858;
/* 0x890 */ fopMsgM_pane_class m890;
/* 0x8C8 */ fopMsgM_pane_class m8C8;
/* 0x900 */ fopMsgM_pane_class m900;
/* 0x938 */ fopMsgM_pane_class m938;
/* 0x970 */ fopMsgM_pane_class m970;
/* 0x9A8 */ fopMsgM_pane_class m9A8;
/* 0x9E0 */ fopMsgM_pane_class m9E0;
/* 0xA18 */ fopMsgM_pane_class mA18[4];
/* 0xAF8 */ fopMsgM_pane_class mAF8;
/* 0xB30 */ fopMsgM_pane_class mB30;
/* 0xB68 */ fopMsgM_pane_class mB68[4];
/* 0xC48 */ fopMsgM_pane_class mC48;
/* 0xC80 */ fopMsgM_pane_class mC80;
/* 0xCB8 */ fopMsgM_pane_class mCB8;
/* 0xCF0 */ fopMsgM_pane_class mCF0;
/* 0xD28 */ fopMsgM_pane_class mD28;
/* 0xD60 */ fopMsgM_pane_class mD60;
/* 0xD98 */ fopMsgM_pane_class mD98;
/* 0xDD0 */ fopMsgM_pane_class mDD0;
/* 0xE08 */ fopMsgM_pane_class mE08[8];
/* 0xFC8 */ fopMsgM_pane_class mFC8;
/* 0x1000 */ fopMsgM_pane_class m1000[3];
/* 0x10A8 */ fopMsgM_pane_class m10A8[3];
/* 0x1150 */ fopMsgM_pane_class m1150[11];
/* 0x13B8 */ fopMsgM_pane_class m13B8[3];
/* 0x1460 */ fopMsgM_pane_class m1460;
/* 0x1498 */ fopMsgM_pane_class m1498[6];
/* 0x15E8 */ fopMsgM_pane_class m15E8[6];
/* 0x1738 */ fopMsgM_pane_class m1738;
/* 0x1770 */ fopMsgM_pane_class m1770;
/* 0x17A8 */ fopMsgM_pane_class m17A8[6];
/* 0x18F8 */ fopMsgM_pane_class m18F8[6];
/* 0x1A48 */ fopMsgM_pane_class m1A48[6];
/* 0x1B98 */ fopMsgM_pane_class m1B98[6];
/* 0x1CE8 */ fopMsgM_pane_class m1CE8[6];
/* 0x1E38 */ fopMsgM_pane_class m1E38[6];
/* 0x1460 */ fopMsgM_pane_class m1F88;
/* 0x1460 */ fopMsgM_pane_class m1FC0;
/* 0x1460 */ fopMsgM_pane_class m1FF8;
/* 0x2030 */ fopMsgM_pane_class m2030[5];
/* 0x2148 */ fopMsgM_pane_class m2148[5];
/* 0x2260 */ fopMsgM_pane_class m2260[5];
/* 0x2378 */ fopMsgM_pane_class m2378;
/* 0x23B0 */ fopMsgM_pane_class m23B0;
/* 0x23E8 */ fopMsgM_pane_class m23E8;
/* 0x2420 */ fopMsgM_pane_class m2420;
/* 0x2458 */ u8 m2458[0x2460 - 0x2458];
/* 0x2460 */ dDlst_2DOutFont_c* m2460;
/* 0x2464 */ u8 m2464[0x2470 - 0x2464];
/* 0x2470 */ JUTFont* m2470;
/* 0x2474 */ JUTFont* m2474;
/* 0x2478 */ J2DPane* m2478;
/* 0x247C */ u8 m247C[0x2498 - 0x247C];
/* 0x2498 */ ResTIMG* m2498;
/* 0x249C */ ResTIMG* m249C;
/* 0x24A0 */ ResTIMG* m24A0[6];
/* 0x24B8 */ u8 m24B8[0x27A8 - 0x24B8];
/* 0x27A8 */ f32 m27A8;
/* 0x27AC */ f32 m27AC;
};
class dMc_HIO_c {
public:
dMc_HIO_c();
virtual ~dMc_HIO_c() {}
public:
/* 0x00 */ // vtable
/* 0x04 */ u8 m04[0x44 - 0x04];
/* 0x44 */ s16 m44;
/* 0x46 */ s16 m46;
/* 0x48 */ s16 m48;
/* 0x4A */ s16 m4A;
/* 0x4C */ s16 m4C;
/* 0x4E */ s16 m4E;
/* 0x50 */ s16 m50;
/* 0x52 */ u8 m52;
/* 0x53 */ u8 m53;
/* 0x54 */ f32 m54;
/* 0x58 */ JUtility::TColor m58;
/* 0x5C */ u8 m5C;
/* 0x5D */ u8 m5D;
};
#endif /* D_MENU_COLLECT_H */
+30 -21
View File
@@ -10,14 +10,25 @@
struct fopMsgM_pane_class;
class JKRArchive;
class JUTFont;
struct mesg_entry;
class dMenu_Option_c : public dDlst_base_c {
public:
void alphaChange(fopMsgM_pane_class*, f32) {}
void getQuitStatus() {}
void setArchive(JKRArchive*) {}
void setFont(JUTFont*, JUTFont*) {}
void setTextArea(char*, char*, char*, char*) {}
void setArchive(JKRArchive* archive) {
mpArchive = archive;
}
void setFont(JUTFont* font_1, JUTFont* font_2) {
mD2C = font_1;
mD30 = font_2;
}
void setTextArea(char* param_1, char* param_2, char* param_3, char* param_4) {
mD38 = param_1;
mD3C = param_2;
mD40 = param_3;
mD44 = param_4;
}
void screenSet();
void mainInit();
@@ -36,7 +47,7 @@ public:
void outFontInit();
void outFontMove();
void outFontDraw();
void stringlength(fopMsgM_pane_class*, char*);
f32 stringlength(fopMsgM_pane_class*, char*);
void changeScaleCenter(fopMsgM_pane_class*, char*);
void setSoundMode(u32);
void changeScaleRight(fopMsgM_pane_class*, char*);
@@ -45,8 +56,8 @@ public:
void _delete();
void _move();
void _draw();
void _open();
void _close();
bool _open();
bool _close();
private:
/* 0x004 */ J2DScreen* scrn;
@@ -55,31 +66,26 @@ private:
/* 0x078 */ fopMsgM_pane_class m078;
/* 0x0B0 */ fopMsgM_pane_class m0B0[15];
/* 0x3F8 */ fopMsgM_pane_class m3F8[15];
/* 0x740 */ fopMsgM_pane_class m740;
/* 0x778 */ fopMsgM_pane_class m778;
/* 0x740 */ fopMsgM_pane_class m740[2];
/* 0x7B0 */ fopMsgM_pane_class m7B0;
/* 0x7E8 */ fopMsgM_pane_class m7E8;
/* 0x820 */ fopMsgM_pane_class m820;
/* 0x858 */ fopMsgM_pane_class m858;
/* 0x890 */ fopMsgM_pane_class m890;
/* 0x858 */ fopMsgM_pane_class m858[2];
/* 0x8C8 */ fopMsgM_pane_class m8C8[4];
/* 0x9A8 */ fopMsgM_pane_class m9A8[2];
/* 0xA18 */ fopMsgM_pane_class mA18[3];
/* 0xAC0 */ fopMsgM_pane_class mAC0[2];
/* 0xB30 */ fopMsgM_pane_class mB30;
/* 0xB68 */ fopMsgM_pane_class mB68;
/* 0xBA0 */ fopMsgM_pane_class mBA0;
/* 0xBD8 */ fopMsgM_pane_class mBD8;
/* 0xC10 */ fopMsgM_pane_class mC10;
/* 0xC48 */ fopMsgM_pane_class mC48;
/* 0xC80 */ fopMsgM_pane_class mC80;
/* 0xCB8 */ fopMsgM_pane_class mCB8;
/* 0xB30 */ fopMsgM_pane_class mB30[6];
/* 0xC80 */ fopMsgM_pane_class mC80[2];
/* 0xCF0 */ fopMsgM_pane_class mCF0;
/* 0xD28 */ JKRArchive* mpArchive;
/* 0xD2C */ JUTFont* mD2C;
/* 0xD30 */ JUTFont* mD30;
/* 0xD34 */ STControl* stick;
/* 0xD38 */ u8 mD38[0xD48 - 0xD38];
/* 0xD38 */ char* mD38;
/* 0xD3C */ char* mD3C;
/* 0xD40 */ char* mD40;
/* 0xD44 */ char* mD44;
/* 0xD48 */ char mD48[20];
/* 0xD5C */ char mD5C[2][20];
/* 0xD84 */ char mD84[2][20];
@@ -89,9 +95,12 @@ private:
/* 0xE39 */ u8 mE39;
/* 0xE3A */ u8 mE3A;
/* 0xE3B */ u8 mE3B;
/* 0xE3C */ u8 mE3C[0xE40 - 0xE3C];
/* 0xE3C */ u8 mE3C;
/* 0xE3D */ u8 mE3D;
/* 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 {
+1
View File
@@ -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 */
+24 -1
View File
@@ -17,7 +17,28 @@ class JUTFont;
struct mesg_header;
struct mesg_data;
struct mesg_info;
struct mesg_entry;
struct mesg_entry {
// mesg_entry() {} // fixes fopMsgM_selectMessageGet, but messes up getMesgEntry
/* 0x00 */ u32 mDataOffs;
/* 0x04 */ u16 mMesgID;
/* 0x06 */ s16 mItemPrice;
/* 0x08 */ u16 mNextMessageID;
/* 0x0A */ u16 field_0x0a;
/* 0x0C */ u8 mTextboxType;
/* 0x0D */ u8 mDrawType;
/* 0x0E */ u8 mTextboxPosition;
/* 0x0F */ u8 mItemImage;
/* 0x10 */ u8 field_0x10;
/* 0x11 */ u8 mInitialSound;
/* 0x12 */ u8 mInitialCamera;
/* 0x13 */ u8 mInitialAnimation;
/* 0x14 */ u8 field_0x14;
/* 0x15 */ u8 field_0x15;
/* 0x16 */ u8 field_0x16;
/* 0x17 */ u8 field_0x17;
};
struct msg_process_profile_definition {
/* 0x00 */ leaf_process_profile_definition base;
@@ -356,6 +377,8 @@ void fopMsgM_setFontsizeCenter(char* param_1, char* param_2, char* param_3, char
void fopMsgM_setFontsizeCenter2(char* a, char* b, char* c, char* d, int, int size, int, int);
void fopMsgM_outFontSet(J2DPicture*, J2DPicture*, s16*, u32, u8);
void fopMsgM_outFontSet(J2DPicture*, s16*, u32, u8);
void fopMsgM_outFontDraw(J2DPicture*, J2DPicture*, int, int, int, s16*, u8, u8);
void fopMsgM_outFontDraw2(J2DPicture*, J2DPicture*, int, int, int, int, s16*, u8, u8);
#endif /* F_OP_MSG_MNG_H */
+1 -1
View File
@@ -353,7 +353,7 @@ s16 CSTControl::getAngleStick() {
}
/* 80058340-800585D0 .text checkTrigger__9STControlFv */
s32 STControl::checkTrigger() {
u8 STControl::checkTrigger() {
field_0x0d = field_0x0c;
f32 valueStick = getValueStick();
s16 angleStick = getAngleStick();
+309 -1
View File
@@ -5,15 +5,323 @@
#include "d/d_menu_collect.h"
#include "dolphin/types.h"
#include "stdio.h"
#include "d/d_com_inf_game.h"
#include "weak_bss_936_to_1036.h" // IWYU pragma: keep
#include "weak_data_1811.h" // IWYU pragma: keep
static dMc_HIO_c g_mcHIO;
/* 8019BE8C-8019BF14 .text __ct__9dMc_HIO_cFv */
dMc_HIO_c::dMc_HIO_c() {
/* Nonmatching */
m46 = 40;
m48 = 10;
m4A = 120;
m4C = 100;
m54 = 4.0f;
m5C = 0xff;
m5D = 70;
m52 = 130;
m4E = 250;
m50 = 20;
m58.set(0xFF, 0xAA, 0x00, 0x00);
m44 = 13;
}
/* 8019BF14-8019CB5C .text screenSet__15dMenu_Collect_cFv */
void dMenu_Collect_c::screenSet() {
/* Nonmatching */
char* print_format;
static const u32 l_ft[] = {
'ft00', 'ft01', 'ft02', 'ft03', 'ft04', 'ft05', 'ft06', 'ft07',
'ft08', 'ft09', 'ft10', 'ft11', 'ft12', 'ft13', 'ft14',
};
static const u32 l_fd[] = {
'fd00', 'fd01', 'fd02', 'fd03', 'fd04', 'fd05', 'fd06', 'fd07',
'fd08', 'fd09', 'fd10', 'fd11', 'fd12', 'fd13', 'fd14',
};
static const u32 l_car[] = {
'car1', 'car2', 'car3', 'car4',
};
static const u32 l_tri[] = {
'tri0', 'tri1', 'tri2', 'tri3', 'tri4', 'tri5', 'tri6', 'tri7',
};
static const u32 l_sit[] = {
'it16', 'it14', 'it15',
};
static const u32 l_sik[] = {
'ik16', 'ik14', 'ik15',
};
static const u32 l_ci[] = {
'ci10', 'ci09', 'ci08', 'ci07', 'ci06', 'ci05',
'ci04', 'ci03', 'ci02', 'ci01', 'ci00',
};
static const u32 l_htp[] = {
'htp2', 'htp1', 'htp3',
};
static const u32 l_tit[] = {
'it08', 'it09', 'it10', 'it11', 'it12', 'it13',
};
static const u32 l_tik[] = {
'ik08', 'ik09', 'ik10', 'ik11', 'ik12', 'ik13'
};
static const u32 l_cn[] = {
'cn01', 'cn02', 'cn03', 'cn04', 'cn05', 'cn06'
};
static const u32 l_wn[] = {
'wn01', 'wn02', 'wn03', 'wn04', 'wn05', 'wn06'
};
static const u32 l_i0[] = {
'i011', 'i021', 'i031', 'i041', 'i051',
'i061'
};
static const u32 l_i1[] = {
'i012', 'i022', 'i032', 'i042', 'i052', 'i062'
};
static const u32 l_bs[] = {
'bs01', 'bs02', 'bs03', 'bs04', 'bs05', 'bs06'
};
static const u32 l_hmb[] = {
'hmb1', 'hmb2', 'hmb3', 'hmb4', 'hmb5', 'hmb6'
};
static const u32 l_wit[] = {
'it00', 'it01', 'it02', 'it03', 'it04'
};
static const u32 l_wik[] = {
'ik00', 'ik01', 'ik02', 'ik03', 'ik04'
};
static const u32 l_ip[] = {
'ip09', 'ip07', 'ip05', 'ip03', 'ip01'
};
static const u32 l_wk[] = {
'wk00', 'wk01', 'wk02', 'wk03',
};
static char* triTex[8] = {
"triforce_00.bti", "triforce_01.bti", "triforce_02.bti", "triforce_03.bti",
"triforce_04.bti", "triforce_05.bti", "triforce_06.bti", "triforce_07.bti",
};
static char* symTex[3] = {
"god_symbol_02.bti", "god_symbol_00.bti", "god_symbol_01.bti",
};
static char* wepTex[5] = {
"sword_00.bti", "shield_00.bti", "gloves_00.bti", "amulet_00.bti", "amulet_01.bti",
};
J2DPane* mPane = m004->search('ROOT');
m2478 = mPane;
fopMsgM_setPaneData(&m008, m004, 'ft15');
fopMsgM_setPaneData(&m040, m004, 'ft16');
fopMsgM_setPaneData(&m078, m004, 'ft17');
for (int i = 0; i < (s32)ARRAY_SIZE(m0B0); i++) {
fopMsgM_setPaneData(&m0B0[i], m004, l_ft[i]);
fopMsgM_setPaneData(&m3F8[i], m004, l_fd[i]);
m0B0[i].mUserArea = 0xFFFF;
}
fopMsgM_setPaneData(&m740, m004, 'str0');
fopMsgM_setPaneData(&m778, m004, 'st00');
fopMsgM_setPaneData(&m7B0, m004, 'nt00');
fopMsgM_setPaneData(&m7E8, m004, 'nk00');
fopMsgM_setPaneData(&m820, m004, 'no11');
m820.mUserArea = m820.pane->mRotation;
if (m820.mUserArea > 180) m820.mUserArea -= 360;
((J2DTextBox*)(m740).pane)->setFont(m2474);
((J2DTextBox*)(m778).pane)->setFont(m2470);
// Couple of functions missing here
((J2DTextBox*)(m740).pane)->setWhite(0xFFFFFFFF);
((J2DTextBox*)(m740).pane)->setCharColor(0xFFFFFFFF);
((J2DTextBox*)(m740).pane)->setGradColor(0xFFFFFFFF);
((J2DTextBox*)(m778).pane)->setWhite(0xFFFFFFFF);
((J2DTextBox*)(m778).pane)->setCharColor(0xFFFFFFFF);
((J2DTextBox*)(m778).pane)->setGradColor(0xFFFFFFFF);
fopMsgM_setPaneData(&m858, m004, 'wd');
((J2DTextBox*)(m858).pane)->setFont(m2470);
m2460->setPane(m2470, &m858, &m008, &m040, &m078);
fopMsgM_setPaneData(&m890, m004, 'nm00');
((J2DTextBox*)(m890).pane)->setFont(m2470);
fopMsgM_setPaneData(&m8C8, m004, 'nm01');
((J2DTextBox*)(m8C8).pane)->setFont(m2470);
fopMsgM_setPaneData(&m900, m004, 'itnm');
fopMsgM_setPaneData(&m938, m004, 'itnk');
fopMsgM_setPaneData(&m970, m004, 'msk0');
fopMsgM_setPaneData(&m9A8, m004, 'tl00');
fopMsgM_setPaneData(&m9E0, m004, 'tk00');
for(int i = 0; i < 4; i++) {
fopMsgM_setPaneData(&mA18[i], m004, l_car[i]);
}
fopMsgM_setPaneData(&mAF8, m004, 'wdsv');
fopMsgM_setPaneData(&mB30, m004, 'wdop');
for(int i = 0; i < 4; i++) {
fopMsgM_setPaneData(&mB68[i], m004, l_wk[i]);
}
fopMsgM_setPaneData(&mC48, m004, 'num1');
fopMsgM_setPaneData(&mC80, m004, 'num2');
fopMsgM_setPaneData(&mCB8, m004, 'numc');
fopMsgM_setPaneData(&mCF0, m004, 'cmap');
fopMsgM_setPaneData(&mD28, m004, 'wk1');
fopMsgM_setPaneData(&mD60, m004, 'wk0');
fopMsgM_setPaneData(&mD98, m004, 'trim');
fopMsgM_setPaneData(&mDD0, m004, 'tril');
mD98.pane->mDrawAlpha = 1;
mDD0.pane->mDrawAlpha = 1;
for(int i = 0; i < 8; i++) {
fopMsgM_setPaneData(&mE08[i], m004, l_tri[i]);
}
fopMsgM_setPaneData(&mFC8, m004, 'trib');
for(int i = 0; i < 3; i++) {
fopMsgM_setPaneData(&m10A8[i], m004, l_sit[i]);
fopMsgM_setPaneData(&m3F8[i], m004, l_sik[i]);
}
if (dComIfGs_isEventBit(0x1480)) {
m1000[1].mInitAlpha *= 0.5f;
m10A8[1].mInitAlpha *= 0.5f;
}
if (dComIfGs_isEventBit(0x1440)) {
m1000[2].mInitAlpha *= 0.5f;
m10A8[2].mInitAlpha *= 0.5f;
}
if (dComIfGs_isEventBit(0x1410)) {
m1000[0].mInitAlpha *= 0.5f;
m10A8[0].mInitAlpha *= 0.5f;
}
for(int i = 0; i < 11; i++) {
fopMsgM_setPaneData(&m1150[i], m004, l_ci[i]);
}
for(int i = 0; i < 3; i++) {
fopMsgM_setPaneData(&m10A8[i], m004, l_htp[i]);
}
fopMsgM_setPaneData(&m1460, m004, 'htpb');
for(int i = 0; i < 6; i++) {
fopMsgM_setPaneData(&m1498[i], m004, l_tit[i]);
fopMsgM_setPaneData(&m15E8[i], m004, l_tik[i]);
fopMsgM_setPaneData(&m17A8[i], m004, l_cn[i]);
fopMsgM_pane_class* pPane = &m18F8[i];
fopMsgM_setPaneData(pPane, m004, l_wn[i]);
fopMsgM_setPaneData(&m1A48[i], m004, l_i0[i]);
fopMsgM_setPaneData(&m1B98[i], m004, l_i1[i]);
fopMsgM_setPaneData(&m1CE8[i], m004, l_bs[i]);
fopMsgM_setPaneData(&m1E38[i], m004, l_hmb[i]);
pPane->mPosCenterOrig.x -= 4.0f;
pPane->mPosCenterOrig.y -= 4.0f;
fopMsgM_paneTrans(pPane, 0.0f, 0.0f);
}
fopMsgM_setPaneData(&m1738, m004, 'i111');
fopMsgM_setPaneData(&m1770, m004, 'i122');
fopMsgM_setPaneData(&m1F88, m004, 'cc43');
fopMsgM_setPaneData(&m1FC0, m004, 'cc32');
fopMsgM_setPaneData(&m1FF8, m004, 'cc21');
for (int i = 0; i < 5; i++) {
fopMsgM_setPaneData(&m2030[i], m004, l_wit[i]);
fopMsgM_setPaneData(&m2148[i], m004, l_wik[i]);
}
for (int i = 0; i < 5; i++) {
fopMsgM_setPaneData(&m2260[i], m004, l_ip[i]);
}
fopMsgM_setPaneData(&m2378, m004, 'ip00');
fopMsgM_setPaneData(&m23B0, m004, 'cc14');
fopMsgM_setPaneData(&m23E8, m004, 'cc07');
fopMsgM_setPaneData(&m2420, m004, 'cc00');
JKRArchive::readTypeResource(m2498, 0xc00, 'TIMG', "baton.bti", dComIfGp_getItemIconArchive());
DCStoreRangeNoSync(m2498, 0xc00);
JKRArchive::readTypeResource(m249C, 0xc00, 'TIMG', "cmap_treasure2.bti", dComIfGp_getItemIconArchive());
DCStoreRangeNoSync(m249C, 0xc00);
for(int i = 0; i < 6; i++) {
((J2DPicture*)m1498[i].pane)->changeTexture(m2498, 0);
((J2DPicture*)m15E8[i].pane)->changeTexture(m2498, 0);
}
((J2DPicture*)mCF0.pane)->changeTexture(m249C, 0);
for(int i = 0; i < 8; i++) {
JKRArchive::readTypeResource(m24A0[i], 0xc00, 'TIMG', triTex[i], dComIfGp_getItemIconArchive());
DCStoreRangeNoSync(m24A0[i], 0xc00);
((J2DPicture*)mE08[i].pane)->changeTexture(m24A0[i], 0);
}
mE08[4].mUserArea = -1;
m27A8 = mE08[4].mPosCenterOrig.x - mFC8.mPosCenterOrig.x;
m27AC = mE08[4].mPosCenterOrig.y - mFC8.mPosCenterOrig.y;
for(int i = 0; i < 3; i++) {
JKRArchive::readTypeResource(m24A0[i], 0xc00, 'TIMG', symTex[i], dComIfGp_getItemIconArchive());
DCStoreRangeNoSync(m24A0[i], 0xc00);
((J2DPicture*)m1000[i].pane)->changeTexture(m24A0[i], 0);
((J2DPicture*)m10A8[i].pane)->changeTexture(m24A0[i], 0);
}
for(int i = 0; i < 5; i++) {
JKRArchive::readTypeResource(m24A0[i], 0xc00, 'TIMG', wepTex[i], dComIfGp_getItemIconArchive());
DCStoreRangeNoSync(m24A0[i], 0xc00);
((J2DPicture*)m2030[i].pane)->changeTexture(m24A0[i], 0);
((J2DPicture*)m2148[i].pane)->changeTexture(m24A0[i], 0);
}
sprintf(print_format, "rupy_num_%02d.bti", dComIfGs_getCollectMapNum() / 10);
((J2DPicture*)mC48.pane)->changeTexture(print_format, 0);
sprintf(print_format, "rupy_num_%02d.bti", dComIfGs_getCollectMapNum() % 10);
((J2DPicture*)mC80.pane)->changeTexture(print_format, 0);
return;
}
/* 8019CB5C-8019CD40 .text initialize__15dMenu_Collect_cFv */
+792 -55
View File
@@ -7,8 +7,12 @@
#include "JSystem/J2DGraph/J2DTextBox.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "d/d_lib.h"
#include "f_op/f_op_msg_mng.h"
#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;
@@ -40,13 +44,13 @@ void dMenu_Option_c::screenSet() {
fopMsgM_blendInit(&m0B0[i], "font_00.bti");
}
fopMsgM_setPaneData(&m778, scrn->search('str0'));
fopMsgM_setPaneData(&m740, scrn->search('st00'));
fopMsgM_setPaneData(&m740[1], scrn->search('str0'));
fopMsgM_setPaneData(&m740[0], scrn->search('st00'));
fopMsgM_setPaneData(&m7B0, scrn->search('nt00'));
fopMsgM_setPaneData(&m7E8, scrn->search('nk00'));
fopMsgM_setPaneData(&m820, scrn->search('no11'));
fopMsgM_setPaneData(&m858, scrn->search('yaz2'));
fopMsgM_setPaneData(&m890, scrn->search('yaz1'));
fopMsgM_setPaneData(&m858[0], scrn->search('yaz2'));
fopMsgM_setPaneData(&m858[1], scrn->search('yaz1'));
fopMsgM_setPaneData(&m8C8[0], scrn->search('ttyu'));
fopMsgM_setPaneData(&m9A8[0], scrn->search('thld'));
fopMsgM_setPaneData(&m9A8[1], scrn->search('tsic'));
@@ -57,16 +61,16 @@ void dMenu_Option_c::screenSet() {
fopMsgM_setPaneData(&m8C8[2], scrn->search('tvib'));
fopMsgM_setPaneData(&mAC0[1], scrn->search('tari'));
fopMsgM_setPaneData(&mAC0[0], scrn->search('tnas'));
fopMsgM_setPaneData(&mB30, scrn->search('cr32'));
fopMsgM_setPaneData(&mB68, scrn->search('cr31'));
fopMsgM_setPaneData(&mBA0, scrn->search('cc22'));
fopMsgM_setPaneData(&mBD8, scrn->search('cc21'));
fopMsgM_setPaneData(&mC10, scrn->search('cc12'));
fopMsgM_setPaneData(&mC48, scrn->search('cr11'));
fopMsgM_setPaneData(&mC80, scrn->search('bs09'));
fopMsgM_setPaneData(&mCB8, scrn->search('bs00'));
fopMsgM_setPaneData(&mB30[0], scrn->search('cr32'));
fopMsgM_setPaneData(&mB30[1], scrn->search('cr31'));
fopMsgM_setPaneData(&mB30[2], scrn->search('cc22'));
fopMsgM_setPaneData(&mB30[3], scrn->search('cc21'));
fopMsgM_setPaneData(&mB30[4], scrn->search('cc12'));
fopMsgM_setPaneData(&mB30[5], scrn->search('cr11'));
fopMsgM_setPaneData(&mC80[0], scrn->search('bs09'));
fopMsgM_setPaneData(&mC80[1], scrn->search('bs00'));
fopMsgM_setPaneData(&mCF0, scrn->search('blak'));
fopMsgM_messageGet(mD48, 0x19D);
fopMsgM_messageGet(mD5C[0], 0x19B);
fopMsgM_messageGet(mD5C[1], 0x1A9);
@@ -82,8 +86,8 @@ void dMenu_Option_c::screenSet() {
((J2DTextBox*)m008.pane)->setFont(mD2C);
((J2DTextBox*)m008.pane)->setString(mD48);
((J2DTextBox*)m740.pane)->setFont(mD2C);
((J2DTextBox*)m778.pane)->setFont(mD30);
((J2DTextBox*)m740[0].pane)->setFont(mD2C);
((J2DTextBox*)m740[1].pane)->setFont(mD30);
for (int i = 0; i < 2; i++) {
((J2DTextBox*)m9A8[i].pane)->setFont(mD2C);
@@ -111,6 +115,7 @@ void dMenu_Option_c::screenSet() {
m008.mUserArea = m008.pane->mRotation;
m040.mUserArea = m040.pane->mRotation;
m078.mUserArea = m078.pane->mRotation;
if (m820.mUserArea > 180) m820.mUserArea -= 360;
if (m008.mUserArea > 180) m008.mUserArea -= 360;
if (m040.mUserArea > 180) m040.mUserArea -= 360;
@@ -119,113 +124,617 @@ void dMenu_Option_c::screenSet() {
/* 801D3388-801D3518 .text mainInit__14dMenu_Option_cFv */
void dMenu_Option_c::mainInit() {
/* Nonmatching */
fopMsgM_setNowAlphaZero(&mCF0);
for (int i = 0; i < 2; i++) {
fopMsgM_paneTrans(&m858[i], 0.0f, 0.0f);
// Potential bug: Why access 0th index multiple times?
m858[0].pane->rotate(m858[0].mSize.x / 2.0f, m858[0].mSize.y / 2.0f, ROTATE_Z, 90.0f);
fopMsgM_setNowAlphaZero(&mC80[i]);
fopMsgM_setNowAlphaZero(&m858[i]);
fopMsgM_setNowAlphaZero(&m9A8[i]);
fopMsgM_setNowAlphaZero(&mAC0[i]);
}
for (int i = 0; i < 3; i++) {
fopMsgM_setNowAlphaZero(&mA18[i]);
}
for (int i = 0; i < 4; i++) {
if (i != 1) {
fopMsgM_setNowAlphaZero(&m8C8[i]);
}
}
for (int i = 0; i < 6; i++) {
fopMsgM_paneTrans(&mB30[i], 0.0f, 0.0f);
fopMsgM_setNowAlphaZero(&mB30[i]);
}
mB30[0].mUserArea = 0;
mB30[1].mUserArea = 0;
mB30[2].mUserArea = 0;
m858[0].mUserArea = 0;
m858[1].mUserArea = 0;
cursorMove();
}
/* 801D3518-801D35DC .text noteInit__14dMenu_Option_cFv */
void dMenu_Option_c::noteInit() {
/* Nonmatching */
void dMenu_Option_c::noteInit() {
fopMsgM_paneTrans(&m820, 0.0f, 35.0f);
m820.pane->rotate(m820.mSize.x / 2.0f, m820.mSize.y / 2.0f, ROTATE_Z, m820.mUserArea + -12.0f);
fopMsgM_setNowAlphaZero(&m740[0]);
fopMsgM_setNowAlphaZero(&m740[1]);
fopMsgM_setNowAlphaZero(&m7B0);
fopMsgM_setNowAlphaZero(&m7E8);
fopMsgM_setNowAlphaZero(&m820);
}
/* 801D35DC-801D37C8 .text titleInit__14dMenu_Option_cFv */
void dMenu_Option_c::titleInit() {
/* Nonmatching */
void dMenu_Option_c::titleInit() {
float rotate_angle = m008.mUserArea + 20;
if (rotate_angle > 180.0f) {
rotate_angle -= 360.0f;
}
if (rotate_angle < -180.0f) {
rotate_angle += 360.0f;
}
fopMsgM_paneTrans(&m008, 0.0f, -50.0f);
fopMsgM_paneTrans(&m040, 0.0f, -50.0f);
fopMsgM_paneTrans(&m078, 0.0f, -50.0f);
m008.pane->rotate(m008.mSize.x / 2.0f, m008.mSize.y / 2.0f, ROTATE_Z, rotate_angle + m008.mUserArea);
m040.pane->rotate(m040.mSize.x / 2.0f, m040.mSize.y / 2.0f, ROTATE_Z, rotate_angle + m040.mUserArea);
m078.pane->rotate(m078.mSize.x / 2.0f, m078.mSize.y / 2.0f, ROTATE_Z, rotate_angle + m078.mUserArea);
fopMsgM_setNowAlphaZero(&m008);
fopMsgM_setNowAlphaZero(&m040);
fopMsgM_setNowAlphaZero(&m078);
}
/* 801D37C8-801D38E0 .text mainMove__14dMenu_Option_cFv */
void dMenu_Option_c::mainMove() {
/* Nonmatching */
float alpha = fopMsgM_valueIncrease(7, mC80[0].mUserArea, 0);
fopMsgM_setNowAlpha(&mCF0, alpha);
fopMsgM_setNowAlpha(&m9A8[mE3C], alpha);
fopMsgM_setNowAlpha(&mAC0[mE3F], alpha);
fopMsgM_setNowAlpha(&mA18[mE3E], alpha);
for(int i = 0; i < 2; i++) {
fopMsgM_setNowAlpha(&mC80[i], alpha);
fopMsgM_setNowAlpha(&m858[i], alpha);
}
for (int i = 0; i < 4; i++) {
if (i != 1) {
fopMsgM_setNowAlpha(&m8C8[i], alpha);
}
}
fopMsgM_setNowAlpha(&mB30[0], alpha);
fopMsgM_setNowAlpha(&mB30[1], alpha);
}
/* 801D38E0-801D39F4 .text noteMove__14dMenu_Option_cFv */
void dMenu_Option_c::noteMove() {
/* Nonmatching */
float alpha;
alpha = fopMsgM_valueIncrease(7, mC80[0].mUserArea + -7, 0);
fopMsgM_paneTrans(&m820, 0.0f, (1.0f - alpha) * 35.0f);
m820.pane->rotate(m820.mSize.x / 2.0f, m820.mSize.y / 2.0f, ROTATE_Z, (1.0f - alpha) * -12.0f + m820.mUserArea);
fopMsgM_setNowAlpha(&m740[0], alpha);
fopMsgM_setNowAlpha(&m740[1], alpha);
fopMsgM_setNowAlpha(&m7B0, alpha);
fopMsgM_setNowAlpha(&m7E8, alpha);
}
/* 801D39F4-801D3C6C .text titleMove__14dMenu_Option_cFv */
void dMenu_Option_c::titleMove() {
/* Nonmatching */
float alpha = fopMsgM_valueIncrease(7, mC80[0].mUserArea + -7,0);
float rotate_angle = m008.mUserArea + 20;
if (rotate_angle > 180.0f) {
rotate_angle -= 360.0f;
}
if (rotate_angle < -180.0f) {
rotate_angle += 360.0f;
}
f32 f30 = rotate_angle * (1.0f - alpha);
if (mC80[0].mUserArea == 8) {
mDoAud_seStart(JA_SE_ITM_MENU_OPT_STR, NULL, 0, 0);
}
float y = 1.0f - alpha;
fopMsgM_paneTrans(&m008, 0.0f, y * -50.0f);
fopMsgM_paneTrans(&m040, 0.0f, y * -50.0f);
fopMsgM_paneTrans(&m078, 0.0f, y * -50.0f);
m008.pane->rotate(m008.mSize.x / 2.0f, m008.mSize.y / 2.0f, ROTATE_Z, f30 + m008.mUserArea);
m040.pane->rotate(m040.mSize.x / 2.0f, m040.mSize.y / 2.0f, ROTATE_Z, f30 + m040.mUserArea);
m078.pane->rotate(m078.mSize.x / 2.0f, m078.mSize.y / 2.0f, ROTATE_Z, f30 + m078.mUserArea);
fopMsgM_setNowAlpha(&m008, alpha);
fopMsgM_setNowAlpha(&m040, alpha);
fopMsgM_setNowAlpha(&m078, alpha);
}
/* 801D3C6C-801D3D34 .text cursorMove__14dMenu_Option_cFv */
void dMenu_Option_c::cursorMove() {
/* Nonmatching */
short sVar2 = mB30[1].mUserArea;
for (int i = 0; i < 6; i++) {
mB30[i].mPosCenter.x = m8C8[sVar2].mPosCenterOrig.x;
mB30[i].mPosCenter.y = m8C8[sVar2].mPosCenterOrig.y;
mB30[i].mSize.x = m8C8[sVar2].mSizeOrig.x;
fopMsgM_cposMove(&mB30[i]);
J2DPane* mpPane = mB30[i].pane;
mpPane->rotate(mB30[i].mSize.x / 2.0f, mB30[i].mSize.y / 2.0f, ROTATE_Z, mpPane->getRotate());
}
cursorScale();
}
/* 801D3D34-801D3E70 .text cursorScale__14dMenu_Option_cFv */
void dMenu_Option_c::cursorScale() {
/* Nonmatching */
float x[2];
float y;
switch (mB30[1].mUserArea) {
case 0: {
x[0] = m9A8[mE3C].mPosTopLeftOrig.x - 20.0f;
x[1] = m9A8[mE3C].mPosTopLeftOrig.x + m9A8[mE3C].mSizeOrig.x + 20.0f;
y = m9A8[mE3C].mPosCenterOrig.y;
break;
}
case 3: {
x[0] = mA18[mE3E].mPosTopLeftOrig.x - 20.0f;
x[1] = mA18[mE3E].mPosTopLeftOrig.x + mA18[mE3E].mSizeOrig.x + 20.0f;
y = mA18[mE3E].mPosCenterOrig.y;
break;
}
case 2: {
x[0] = mAC0[mE3F].mPosTopLeftOrig.x - 20.0f;
x[1] = mAC0[mE3F].mPosTopLeftOrig.x + mAC0[mE3F].mSizeOrig.x + 20.0f;
y = mAC0[mE3F].mPosCenterOrig.y;
break;
}
}
for (int i = 0; i < 2; i++) {
m858[i].mPosCenter.x = x[i];
m858[i].mPosCenter.y = y;
fopMsgM_cposMove(&m858[i]);
}
}
/* 801D3E70-801D3F98 .text typeMove__14dMenu_Option_cFv */
void dMenu_Option_c::typeMove() {
/* Nonmatching */
void dMenu_Option_c::typeMove() {
switch (mB30[1].mUserArea) {
case 0: {
for (int i = 0; i < 2; i++) {
if(i == mE3C) {
fopMsgM_setInitAlpha(&m9A8[i]);
}
else {
fopMsgM_setNowAlphaZero(&m9A8[i]);
}
}
break;
}
case 3: {
for (int i = 0; i < 3; i++) {
if(i == mE3E) {
fopMsgM_setInitAlpha(&mA18[i]);
}
else {
fopMsgM_setNowAlphaZero(&mA18[i]);
}
}
break;
}
case 2: {
for (int i = 0; i < 2; i++) {
if(i == mE3F) {
fopMsgM_setInitAlpha(&mAC0[i]);
}
else {
fopMsgM_setNowAlphaZero(&mAC0[i]);
}
}
break;
}
}
cursorScale();
}
/* 801D3F98-801D41C4 .text yazAnime__14dMenu_Option_cFv */
void dMenu_Option_c::yazAnime() {
/* Nonmatching */
static const u32 moveX[6] = { 0, 2, 8, 18, 8, 2};
static const int moveX[6] = { 0, 2, 8, 18, 8, 2};
float fVar1;
if (m858[0].mUserArea < 10) {
fVar1 = 6.0f;
}
else {
fVar1 = -6.0f;
}
m858[0].pane->rotate(m858[0].mSize.x / 2.0f, m858[0].mSize.y / 2.0f, ROTATE_Z, 90.0f + fVar1);
m858[1].pane->rotate(m858[1].mSize.x / 2.0f, m858[1].mSize.y / 2.0f, ROTATE_Z, 90.0f + fVar1);
m858[0].mUserArea++;
if(m858[1].mUserArea > 0) {
m858[1].mUserArea--;
int x = (int)(m858[1].mPosTopLeft.x + 0.5f) + moveX[m858[1].mUserArea];
int y = (int)(m858[1].mPosTopLeft.y + 0.5f);
m858[1].pane->move(x, y);
}
else if (m858[1].mUserArea < 0) {
m858[1].mUserArea++;
int x = (int)(m858[0].mPosTopLeft.x + 0.5f) - moveX[abs(m858[1].mUserArea)];
int y = (int)(m858[0].mPosTopLeft.y + 0.5f);
m858[0].pane->move(x, y);
}
if (m858[0].mUserArea >= 20) {
m858[0].mUserArea = 0;
}
}
/* 801D41C4-801D428C .text ccAnime__14dMenu_Option_cFv */
void dMenu_Option_c::ccAnime() {
/* Nonmatching */
int r29 = mB30[0].mUserArea / 7;
for (int i = 0; i < 3; i++) {
if (i == r29) {
fopMsgM_setInitAlpha(&mB30[(i*2)+0]);
fopMsgM_setInitAlpha(&mB30[(i*2)+1]);
}
else {
fopMsgM_setNowAlphaZero(&mB30[(i*2)+0]);
fopMsgM_setNowAlphaZero(&mB30[(i*2)+1]);
}
}
mB30[0].mUserArea++;
if (mB30[0].mUserArea >= 0x15) {
mB30[0].mUserArea = 0;
}
}
/* 801D428C-801D47A4 .text stickMove__14dMenu_Option_cFUc */
void dMenu_Option_c::stickMove(u8) {
/* Nonmatching */
void dMenu_Option_c::stickMove(u8 param_1) {
switch (param_1) {
case 4: {
if (mB30[1].mUserArea > 0) {
mB30[1].mUserArea--;
if (mB30[1].mUserArea == 1) {
mB30[1].mUserArea = 0;
}
cursorMove();
noteSet();
mDoAud_seStart(JA_SE_ITM_MENU_CURSOR, NULL, 0, 0);
}
break;
}
case 8: {
if (mB30[1].mUserArea < 3) {
mB30[1].mUserArea++;
if (mB30[1].mUserArea == 1) {
mB30[1].mUserArea = 2;
}
cursorMove();
noteSet();
mDoAud_seStart(JA_SE_ITM_MENU_CURSOR, NULL, 0, 0);
}
break;
}
case 2: {
switch (mB30[1].mUserArea) {
case 0: {
if (mE3C) {
mE3C = 0;
}
else {
mE3C = 1;
}
m858[1].mUserArea = 6;
mDoAud_seStart(JA_SE_ITM_MENU_OPT_SW, NULL, 0, 0);
break;
}
case 1: {
if (mE3D) {
mE3D = 0;
}
else {
mE3D = 1;
}
m858[1].mUserArea = 6;
mDoAud_seStart(JA_SE_ITM_MENU_OPT_SW, NULL, 0, 0);
;
break;
}
case 3: {
if (mE3E < 2) {
mE3E++;
}
else {
mE3E = 0;
}
m858[1].mUserArea = 6;
mDoAud_seStart(JA_SE_ITM_MENU_OPT_SW, NULL, 0, 0);
mDoAud_setOutputMode(soundMode[mE3E]);
setSoundMode(soundMode[mE3E]);
break;
}
case 2: {
if ((JUTGamePad::sRumbleSupported & 0x80000000) != 0) {
if (mE3F) {
mE3F = 0;
}
else {
mE3F = 1;
g_mDoCPd_gamePad[0]->mRumble.startPatternedRumble(&mE38, JUTGamePad::CRumble::LOOP_ONCE, 0x3c);
}
m858[1].mUserArea = 6;
mDoAud_seStart(JA_SE_ITM_MENU_OPT_SW, NULL, 0, 0);
}
break;
}
}
typeMove();
break;
}
case 1: {
switch (mB30[1].mUserArea) {
case 0: {
if (mE3C) {
mE3C = 0;
}
else {
mE3C = 1;
}
m858[1].mUserArea = -6;
mDoAud_seStart(JA_SE_ITM_MENU_OPT_SW, NULL, 0, 0);
break;
}
case 1: {
if (mE3D) {
mE3D = 0;
}
else {
mE3D = 1;
}
m858[1].mUserArea = -6;
mDoAud_seStart(JA_SE_ITM_MENU_OPT_SW, NULL, 0, 0);
break;
}
case 3: {
if (mE3E) {
mE3E--;
}
else {
mE3E = 2;
}
m858[1].mUserArea = -6;
mDoAud_seStart(JA_SE_ITM_MENU_OPT_SW, NULL, 0, 0);
mDoAud_setOutputMode(soundMode[mE3E]);
setSoundMode(soundMode[mE3E]);
break;
}
case 2: {
if ((JUTGamePad::sRumbleSupported & 0x80000000) != 0) {
if (mE3F) {
mE3F = 0;
}
else {
mE3F = 1;
g_mDoCPd_gamePad[0]->mRumble.startPatternedRumble(&mE38, JUTGamePad::CRumble::LOOP_ONCE, 0x3c);
}
m858[1].mUserArea = -6;
mDoAud_seStart(JA_SE_ITM_MENU_OPT_SW, NULL, 0, 0);
}
break;
}
}
typeMove();
break;
}
}
}
/* 801D47A4-801D4C00 .text noteSet__14dMenu_Option_cFv */
void dMenu_Option_c::noteSet() {
/* Nonmatching */
/* Nonmatching - heavily inlined, Ghidra output isn't helpful */
fopMsgM_itemMsgGet_c msgGet;
fopMsgM_msgDataProc_c msgDataProc;
strcpy(mD38, "");
strcpy(mD3C, "");
strcpy(mD40, "");
strcpy(mD44, "");
outFontInit();
float fVar1 = m740[0].pane[1].mBounds.getHeight();
float fVar2 = m740[1].pane[1].mBounds.getHeight();
mesg_header* head_p = msgGet.getMesgHeader(0x262);
JUT_ASSERT(0x313, head_p);
const char* mesg = msgGet.getMessage(head_p);
mesg_entry msg_entry = msgGet.getMesgEntry(head_p);
msgDataProc.dataInit();
msgDataProc.stringLength();
msgDataProc.stringShift();
msgDataProc.iconIdxRefresh();
msgDataProc.stringSet();
((J2DTextBox*)m740[0].pane)->setString(mD38);
((J2DTextBox*)m740[1].pane)->setString(mD3C);
for (int i = 0; i < 0xf; i++) {
if(m0B0[i].mUserArea == -1) {
m0B0[i].mPosTopLeft.x = m740[0].mPosTopLeft.x;
m0B0[i].mPosTopLeftOrig.x = m740[0].mPosTopLeftOrig.x;
m0B0[i].mPosTopLeft.y = m740[0].mPosTopLeft.y;
m0B0[i].mPosTopLeftOrig.y = m740[0].mPosTopLeftOrig.y;
fopMsgM_outFontSet((J2DPicture*)&m0B0[i], &m0B0[i].mUserArea, 0, 0);
}
}
}
/* 801D4C00-801D4C88 .text outFontInit__14dMenu_Option_cFv */
void dMenu_Option_c::outFontInit() {
/* Nonmatching */
for (int i = 0; i < 15; i++) {
m0B0[i].mUserArea = -1;
m0B0[i].pane->rotate(0.0f);
fopMsgM_setNowAlphaZero(&m0B0[i]);
}
}
/* 801D4C88-801D4D74 .text outFontMove__14dMenu_Option_cFv */
void dMenu_Option_c::outFontMove() {
/* Nonmatching */
void dMenu_Option_c::outFontMove() {
for (int i = 0; i < 15; i++) {
if (m0B0[i].mUserArea != -1) {
m3F8[i].mPosTopLeft.x = m0B0[i].mPosTopLeft.x + (m740[0].mPosTopLeft.x + (m820.mPosTopLeft.x + m7B0.mPosTopLeft.x));
m3F8[i].mPosTopLeft.y = m0B0[i].mPosTopLeft.y + (m740[0].mPosTopLeft.y + (m820.mPosTopLeft.y + m7B0.mPosTopLeft.y));
f32 rotation_offset_x = m820.mPosCenter.x - m3F8[i].mPosTopLeft.x;
f32 rotation_offset_y = m820.mPosCenter.y - m3F8[i].mPosTopLeft.y;
m3F8[i].pane->rotate(rotation_offset_x, rotation_offset_y, ROTATE_Z, m820.pane->mRotation);
}
else {
fopMsgM_setNowAlphaZero(&m0B0[i]);
}
}
}
/* 801D4D74-801D4E34 .text outFontDraw__14dMenu_Option_cFv */
void dMenu_Option_c::outFontDraw() {
/* Nonmatching */
for (int i = 0; i < 15; i++) {
if (m0B0[i].mUserArea != -1) {
m0B0[i].mNowAlpha = m740[0].pane->getAlpha();
fopMsgM_outFontDraw2((J2DPicture*)m0B0[i].pane, (J2DPicture*)m3F8[i].pane, m3F8[i].mPosTopLeft.x, m3F8[i].mPosTopLeft.y, 0x19, 0x19, &m0B0[i].mUserArea, m0B0[i].mNowAlpha, m0B0[i].mPosTopLeftOrig.y);
}
else {
fopMsgM_setAlpha(&m0B0[i]);
}
}
}
/* 801D4E34-801D505C .text stringlength__14dMenu_Option_cFP18fopMsgM_pane_classPc */
void dMenu_Option_c::stringlength(fopMsgM_pane_class*, char*) {
/* Nonmatching */
f32 dMenu_Option_c::stringlength(fopMsgM_pane_class*, char*) {
/* Nonmatching - also heavily inlined */
}
/* 801D505C-801D50A0 .text changeScaleCenter__14dMenu_Option_cFP18fopMsgM_pane_classPc */
void dMenu_Option_c::changeScaleCenter(fopMsgM_pane_class*, char*) {
/* Nonmatching */
void dMenu_Option_c::changeScaleCenter(fopMsgM_pane_class* param_1, char* i_str) {
f32 str_length = stringlength(param_1, i_str);
param_1->mSize.x = str_length;
param_1->mSizeOrig.x = str_length;
fopMsgM_cposMove(param_1);
param_1->mPosTopLeftOrig.x = param_1->mPosTopLeft.x;
}
/* 801D50A0-801D50E8 .text setSoundMode__14dMenu_Option_cFUl */
void dMenu_Option_c::setSoundMode(u32) {
/* Nonmatching */
void dMenu_Option_c::setSoundMode(u32 i_soundMode) {
switch(i_soundMode) {
case 0:
OSSetSoundMode(0);
break;
case 1:
case 2:
OSSetSoundMode(1);
break;
default:
break;
}
}
/* 801D50E8-801D5148 .text changeScaleRight__14dMenu_Option_cFP18fopMsgM_pane_classPc */
void dMenu_Option_c::changeScaleRight(fopMsgM_pane_class*, char*) {
/* Nonmatching */
void dMenu_Option_c::changeScaleRight(fopMsgM_pane_class* param_1, char* i_str) {
float str_length = stringlength(param_1, i_str);
float str_pos = (param_1->mPosTopLeft.x + param_1->mSize.x);
param_1->mSize.x = str_length;
param_1->mSizeOrig.x = str_length;
float new_str_pos = str_pos - param_1->mSize.x / 2.0f;
param_1->mPosCenter.x = new_str_pos;
param_1->mPosCenterOrig.x = new_str_pos;
fopMsgM_cposMove(param_1);
}
/* 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 */
void dMenu_Option_c::_create() {
/* Nonmatching */
/* Nonmatching - Code 100% */
scrn = new J2DScreen();
JUT_ASSERT(1074, scrn != NULL);
scrn->set("option.blo", mpArchive);
@@ -247,25 +756,253 @@ void dMenu_Option_c::_create() {
/* 801D53F0-801D546C .text _delete__14dMenu_Option_cFv */
void dMenu_Option_c::_delete() {
/* Nonmatching */
mpArchive->removeResourceAll();
delete scrn;
delete stick;
mDoHIO_deleteChild(g_moHIO.mNo);
}
/* 801D546C-801D576C .text _move__14dMenu_Option_cFv */
void dMenu_Option_c::_move() {
/* Nonmatching */
u8 check_trigger = stick->checkTrigger();
if (mE3F) {
if ((JUTGamePad::sRumbleSupported & 0x80000000U) == 0) {
mE3F = 0;
for(int i = 0; i < 2; i++) {
if (i == mE3F) {
fopMsgM_setInitAlpha(&mAC0[i]);
}
else {
fopMsgM_setNowAlphaZero(&mAC0[i]);
}
}
cursorScale();
}
}
if (CPad_CHECK_TRIG_A(0) &&
!CPad_CHECK_TRIG_START(0) &&
!CPad_CHECK_TRIG_B(0) &&
!CPad_CHECK_TRIG_UP(0) &&
!CPad_CHECK_TRIG_DOWN(0) &&
!CPad_CHECK_TRIG_LEFT(0) &&
!CPad_CHECK_TRIG_RIGHT(0)
) {
mE40 = 3;
mC80[0].mUserArea = 0;
mE41 = 1;
dComIfGs_setOptAttentionType(mE3C);
dComIfGs_setOptRuby(mE3D);
if (JUTGamePad::sRumbleSupported & 0x80000000) {
dComIfGs_setOptVibration(mE3F);
}
dComIfGp_setNowVibration(mE3F);
dComIfGs_setOptSound(mE3E);
mDoAud_seStart(JA_SE_ITM_MENU_OPT_OUT, NULL, 0);
}
else if (CPad_CHECK_TRIG_B(0) &&
!CPad_CHECK_TRIG_START(0) &&
!CPad_CHECK_TRIG_A(0) &&
!CPad_CHECK_TRIG_UP(0) &&
!CPad_CHECK_TRIG_DOWN(0) &&
!CPad_CHECK_TRIG_LEFT(0) &&
!CPad_CHECK_TRIG_RIGHT(0)
) {
mE40 = 3;
mE41 = 1;
mC80[0].mUserArea = 0;
mDoAud_seStart(JA_SE_ITM_MENU_OPT_OUT, NULL, 0);
}
else {
if (!check_trigger) {
m7B0.mUserArea = 0;
mC80[1].mUserArea = 0;
}
else {
if (mC80[1].mUserArea == 0) {
stickMove(check_trigger);
}
int sVar2;
if (m7B0.mUserArea < 2) {
sVar2 = 10;
} else {
sVar2 = 4;
}
mC80[1].mUserArea++;
if (mC80[1].mUserArea > sVar2) {
sVar2 = m7B0.mUserArea;
if (sVar2 < 2) {
m7B0.mUserArea = sVar2 + 1;
}
mC80[1].mUserArea = 0;
}
}
}
yazAnime();
if (mB30[1].mUserArea != 2 || JUTGamePad::sRumbleSupported & 0x80000000)
{
m858[0].pane->show();
m858[1].pane->show();
}
else {
m858[0].pane->hide();
m858[1].pane->hide();
}
ccAnime();
outFontMove();
if (mE3D) {
m740[1].pane->hide();
}
else {
m740[1].pane->show();
}
}
/* 801D576C-801D5C04 .text _draw__14dMenu_Option_cFv */
void dMenu_Option_c::_draw() {
/* Nonmatching */
/* Nonmatching - probably some inlining, tried using `setAlpha` and `getAlpha` but didn't work */
if (mE41 == 0) {
fopMsgM_setAlpha(&m008);
fopMsgM_setAlpha(&m040);
fopMsgM_setAlpha(&m078);
for (int i = 0; i < 2; i++) {
fopMsgM_setAlpha(&m740[i]);
fopMsgM_setAlpha(&m858[i]);
fopMsgM_setAlpha(&m9A8[i]);
fopMsgM_setAlpha(&mAC0[i]);
fopMsgM_setAlpha(&mC80[i]);
}
fopMsgM_setAlpha(&m7B0);
fopMsgM_setAlpha(&m7E8);
fopMsgM_setAlpha(&m820);
for (int i = 0; i < 4; i++) {
if (i != 1) {
fopMsgM_setAlpha(&m8C8[i]);
}
}
for (int i = 0; i < 3; i++) {
fopMsgM_setAlpha(&mA18[i]);
}
for (int i = 0; i < 6; i++) {
fopMsgM_setAlpha(&mB30[i]);
}
fopMsgM_setAlpha(&mCF0);
}
else {
float alpha_scale = 1.0f - fopMsgM_valueIncrease(10, mC80[0].mUserArea, 0);
m008.pane->mAlpha *= alpha_scale;
m040.pane->mAlpha *= alpha_scale;
m078.pane->mAlpha *= alpha_scale;
for (int i = 0; i < 2; i++) {
m740[i].pane->mAlpha *= alpha_scale;
m8C8[i].pane->mAlpha *= alpha_scale;
m9A8[i].pane->mAlpha *= alpha_scale;
mAC0[i].pane->mAlpha *= alpha_scale;
mC80[i].pane->mAlpha *= alpha_scale;
}
m7B0.pane->mAlpha *= alpha_scale;
m7E8.pane->mAlpha *= alpha_scale;
m820.pane->mAlpha *= alpha_scale;
for (int i = 0; i < 4; i++) {
if (i != 1) {
m8C8[i].pane->mAlpha *= alpha_scale;
}
}
for (int i = 0; i < 3; i++) {
mA18[i].pane->mAlpha *= alpha_scale;
}
for (int i = 0; i < 6; i++) {
mAC0[i].pane->mAlpha = mB30[i].pane->mAlpha * alpha_scale;
}
mCF0.pane->mAlpha *= alpha_scale;
}
outFontDraw();
scrn->draw(0.0f, 0.0f, (J2DGrafContext*)dComIfGp_getCurrentGrafPort());
}
/* 801D5C04-801D5CBC .text _open__14dMenu_Option_cFv */
void dMenu_Option_c::_open() {
/* Nonmatching */
bool dMenu_Option_c::_open() {
bool ret = false;
dMenu_setPushMenuButton(0);
if (mC80[0].mUserArea == 0) {
noteSet();
}
mC80[0].mUserArea++;
if (mC80[0].mUserArea <= 7) {
mainMove();
}
else if (mC80[0].mUserArea <= 0xe) {
noteMove();
titleMove();
_move();
if (mC80[0].mUserArea == 0xe) {
mE40 = 2;
mC80[0].mUserArea = 0;
ret = true;
}
}
return ret;
}
/* 801D5CBC-801D5D38 .text _close__14dMenu_Option_cFv */
void dMenu_Option_c::_close() {
/* Nonmatching */
bool dMenu_Option_c::_close() {
bool ret = false;
int value = ++mC80[0].mUserArea;
fopMsgM_valueIncrease(10, value, 0);
dMenu_setPushMenuButton(2);
if (value >= 10) {
initialize();
mE40 = 0;
ret = true;
}
return ret;
}
-22
View File
@@ -36,28 +36,6 @@ struct mesg_header : JUTDataFileHeader {
// first block is mesg_info
};
struct mesg_entry {
// mesg_entry() {} // fixes fopMsgM_selectMessageGet, but messes up getMesgEntry
/* 0x00 */ u32 mDataOffs;
/* 0x04 */ u16 mMesgID;
/* 0x06 */ s16 mItemPrice;
/* 0x08 */ u16 mNextMessageID;
/* 0x0A */ u16 field_0x0a;
/* 0x0C */ u8 mTextboxType;
/* 0x0D */ u8 mDrawType;
/* 0x0E */ u8 mTextboxPosition;
/* 0x0F */ u8 mItemImage;
/* 0x10 */ u8 field_0x10;
/* 0x11 */ u8 mInitialSound;
/* 0x12 */ u8 mInitialCamera;
/* 0x13 */ u8 mInitialAnimation;
/* 0x14 */ u8 field_0x14;
/* 0x15 */ u8 field_0x15;
/* 0x16 */ u8 field_0x16;
/* 0x17 */ u8 field_0x17;
};
struct mesg_info : JUTDataBlockHeader {
/* 0x08 */ u16 mNumEntry;
/* 0x0A */ u16 mEntrySize;