summaryrefslogtreecommitdiff
path: root/src/msg
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2024-01-21 11:15:22 +0200
committerGitHub <noreply@github.com>2024-01-21 01:15:22 -0800
commit0228b4e03ba255fdfabc25dab14ed21b5479a8d2 (patch)
tree6e8f6ab50a10deb32db03e34d1139cb73e968511 /src/msg
parent9f372c40d5cbac67bb445247efc56ab6a2b5a81e (diff)
Work on d_msg_scrn_howl + misc (#2040)
Diffstat (limited to 'src/msg')
-rw-r--r--src/msg/scrn/d_msg_scrn_base.cpp1
-rw-r--r--src/msg/scrn/d_msg_scrn_boss.cpp1
-rw-r--r--src/msg/scrn/d_msg_scrn_explain.cpp9
-rw-r--r--src/msg/scrn/d_msg_scrn_howl.cpp1049
4 files changed, 778 insertions, 282 deletions
diff --git a/src/msg/scrn/d_msg_scrn_base.cpp b/src/msg/scrn/d_msg_scrn_base.cpp
index c99550b468..2c715e2455 100644
--- a/src/msg/scrn/d_msg_scrn_base.cpp
+++ b/src/msg/scrn/d_msg_scrn_base.cpp
@@ -1,5 +1,4 @@
//
-// Generated By: dol2asm
// Translation Unit: msg/scrn/d_msg_scrn_base
//
diff --git a/src/msg/scrn/d_msg_scrn_boss.cpp b/src/msg/scrn/d_msg_scrn_boss.cpp
index ae609921a7..d1f32e4a9b 100644
--- a/src/msg/scrn/d_msg_scrn_boss.cpp
+++ b/src/msg/scrn/d_msg_scrn_boss.cpp
@@ -1,5 +1,4 @@
//
-// Generated By: dol2asm
// Translation Unit: msg/scrn/d_msg_scrn_boss
//
diff --git a/src/msg/scrn/d_msg_scrn_explain.cpp b/src/msg/scrn/d_msg_scrn_explain.cpp
index a81ac6363a..b7c317810a 100644
--- a/src/msg/scrn/d_msg_scrn_explain.cpp
+++ b/src/msg/scrn/d_msg_scrn_explain.cpp
@@ -1,5 +1,4 @@
//
-// Generated By: dol2asm
// Translation Unit: msg/scrn/d_msg_scrn_explain
//
@@ -19,14 +18,6 @@
#include "dolphin/types.h"
//
-// Types:
-//
-
-//
-// Forward References:
-//
-
-//
// External References:
//
diff --git a/src/msg/scrn/d_msg_scrn_howl.cpp b/src/msg/scrn/d_msg_scrn_howl.cpp
index d91720425c..07b0a93688 100644
--- a/src/msg/scrn/d_msg_scrn_howl.cpp
+++ b/src/msg/scrn/d_msg_scrn_howl.cpp
@@ -4,151 +4,25 @@
//
#include "msg/scrn/d_msg_scrn_howl.h"
+#include "m_Do/m_Do_controller_pad.h"
+#include "m_Do/m_Do_graphic.h"
+#include "d/msg/d_msg_class.h"
+#include "d/msg/d_msg_object.h"
+#include "d/meter/d_meter2_info.h"
+#include "d/meter/d_meter2_draw.h"
+#include "d/pane/d_pane_class_alpha.h"
+#include "d/pane/d_pane_class.h"
+#include "d/a/d_a_alink.h"
+#include "JSystem/JKernel/JKRExpHeap.h"
+#include "JSystem/JKernel/JKRArchive.h"
+#include "JSystem/JUtility/JUTTexture.h"
+#include "JSystem/JUtility/JUTAssert.h"
+#include "JSystem/J2DGraph/J2DGrafContext.h"
+#include "JSystem/J2DGraph/J2DScreen.h"
+#include "Z2AudioLib/Z2WolfHowlMgr.h"
#include "dol2asm.h"
//
-// Types:
-//
-
-struct mDoCPd_c {
- static u8 m_cpadInfo[256];
-};
-
-struct dMsgScrnHowl_c {
- /* 8024096C */ dMsgScrnHowl_c();
- /* 80241784 */ ~dMsgScrnHowl_c();
- /* 80241A70 */ void exec();
- /* 80241C30 */ void drawSelf();
- /* 80241D58 */ void guide_on_init();
- /* 80241D5C */ void guide_on_proc();
- /* 80241DFC */ void guide_off_init();
- /* 80241E00 */ void guide_off_proc();
- /* 80241E7C */ void guide_stop_init();
- /* 80241E80 */ void guide_stop_proc();
- /* 80241F28 */ void guide_demo_play_init();
- /* 80241F34 */ void guide_demo_play_proc();
- /* 8024202C */ void guide_off_test_init();
- /* 80242030 */ void guide_off_test_proc();
- /* 80242034 */ void fukiScale(f32);
- /* 80242038 */ void fukiTrans(f32, f32);
- /* 8024205C */ void fukiAlpha(f32);
- /* 80242080 */ void isKeyCheck();
- /* 802420D4 */ void resetLine();
- /* 80242198 */ void drawWave();
- /* 802427A8 */ void drawGuide();
- /* 80242FE4 */ void drawGuide2();
- /* 802435BC */ void drawEffect();
- /* 80243838 */ void calcMain();
- /* 8024389C */ void calcWave();
- /* 80243A50 */ void calcGuide();
- /* 80243BE0 */ void moveLineV(bool);
- /* 80243DCC */ void moveBaseLength(bool);
- /* 80243EEC */ void getOnLineNum(int);
- /* 80243F58 */ void addCount(s16);
- /* 80243F7C */ void addCountGuide(s16);
- /* 80243F94 */ void getNowPlotPitch(f32);
- /* 80244108 */ void getPlotPitch(f32);
- /* 8024414C */ void calcPitchLevel();
- /* 802441FC */ void initGuideData();
- /* 80244304 */ void getGuideDataSize();
- /* 8024438C */ void getGuideDataType(int);
-};
-
-struct dMsgScrnBase_c {
- /* 80238C40 */ void setSelectRubyString(char*, char*, char*);
- /* 80238C44 */ void setSelectString(char*, char*, char*);
- /* 80238C48 */ bool selectAnimeMove(u8, u8, bool);
- /* 80238C50 */ void selectAnimeInit(u8, u8, f32, u8);
- /* 80238C54 */ void arwAnimeMove();
- /* 80238C58 */ void arwAnimeInit();
- /* 80238C5C */ void fukiPosCalc(u8);
- /* 80238C60 */ bool isSelect();
- /* 80238C68 */ bool selectAnimeEnd();
- /* 80238C70 */ void dotAnimeMove();
- /* 80238C74 */ void dotAnimeInit();
- /* 8023C0DC */ dMsgScrnBase_c();
- /* 8023C124 */ ~dMsgScrnBase_c();
- /* 8023C16C */ void init();
- /* 8023C234 */ void multiDraw();
- /* 8023C274 */ void draw();
- /* 8023C4F4 */ void fontAlpha(f32);
-};
-
-struct JMSMesgEntry_c {};
-
-struct dMeter2Info_c {
- /* 8021C544 */ void getStringKanji(u32, char*, JMSMesgEntry_c*);
-};
-
-struct JUtility {
- struct TColor {};
-};
-
-struct dMeter2Draw_c {
- /* 802140DC */ void drawPikari(f32, f32, f32*, f32, JUtility::TColor, JUtility::TColor,
- JUtility::TColor, JUtility::TColor, f32, u8);
-};
-
-struct Z2WolfHowlMgr {
- /* 802CACCC */ void getNowInputValue();
- /* 802CB320 */ void getCorrectLine(u8);
- /* 802CB370 */ void getCorrectLineNum();
- /* 802CB650 */ void getOnLineNum();
- /* 802CBA88 */ void startGuideMelody(bool);
-};
-
-struct ResTIMG {};
-
-struct JKRExpHeap {};
-
-struct JKRArchive {};
-
-struct JGeometry {
- template <typename A1>
- struct TBox2 {};
- /* TBox2<f32> */
- struct TBox2__template0 {};
-};
-
-struct J2DTextBox {
- /* 80300658 */ void getStringPtr() const;
- /* 8030074C */ void setString(s16, char const*, ...);
-};
-
-struct J2DScreen {
- /* 802F8498 */ J2DScreen();
- /* 802F8648 */ void setPriority(char const*, u32, JKRArchive*);
-};
-
-struct J2DPicture {
- /* 802FC708 */ J2DPicture(ResTIMG const*);
-};
-
-struct J2DPane {
- /* 802F7100 */ void getBounds();
-};
-
-struct J2DGrafContext {
- /* 802E90C0 */ void scissor(JGeometry::TBox2<f32> const&);
-};
-
-struct CPaneMgrAlpha {
- /* 802557D0 */ void setAlphaRate(f32);
- /* 80255828 */ void getAlphaRate();
-};
-
-struct CPaneMgr {
- /* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*);
- /* 80253930 */ CPaneMgr();
- /* 80253A18 */ ~CPaneMgr();
- /* 802542E8 */ void getGlobalPosX();
- /* 80254364 */ void getGlobalPosY();
- /* 802545B0 */ void paneTrans(f32, f32);
- /* 80254C90 */ void getGlobalVtx(J2DPane*, f32 (*)[3][4], u8, bool, s16);
- /* 80254EBC */ void getGlobalVtxCenter(J2DPane*, bool, s16);
-};
-
-//
// Forward References:
//
@@ -243,7 +117,6 @@ extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive();
extern "C" void __ct__10J2DPictureFPC7ResTIMG();
extern "C" void getStringPtr__10J2DTextBoxCFv();
extern "C" void setString__10J2DTextBoxFsPCce();
-extern "C" void GXGetScissor();
extern "C" void __ptmf_scall();
extern "C" void _savegpr_21();
extern "C" void _savegpr_23();
@@ -260,9 +133,8 @@ extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" extern u8 g_meter2_info[248];
-extern "C" extern u8 g_MsgObject_HIO_c[1040];
+
+extern dMsgObject_HIO_c g_MsgObject_HIO_c;
//
// Declarations:
@@ -287,6 +159,18 @@ SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
+typedef void (dMsgScrnHowl_c::*dMsgScrnHowl_cFunc)();
+
+#ifdef NONMATCHING
+static dMsgScrnHowl_cFunc init_proc[5] = {
+ &dMsgScrnHowl_c::guide_on_init,
+ &dMsgScrnHowl_c::guide_off_init,
+ &dMsgScrnHowl_c::guide_stop_init,
+ &dMsgScrnHowl_c::guide_demo_play_init,
+ &dMsgScrnHowl_c::guide_off_test_init,
+};
+#else
+
/* 803C0FDC-803C0FE8 -00001 000C+00 0/1 0/0 0/0 .data @4173 */
#pragma push
#pragma force_active on
@@ -345,6 +229,17 @@ SECTION_DATA static u8 init_proc[60] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
+#endif
+
+#ifdef NONMATCHING
+static dMsgScrnHowl_cFunc process[5] = {
+ &dMsgScrnHowl_c::guide_on_proc,
+ &dMsgScrnHowl_c::guide_off_proc,
+ &dMsgScrnHowl_c::guide_stop_proc,
+ &dMsgScrnHowl_c::guide_demo_play_proc,
+ &dMsgScrnHowl_c::guide_off_test_proc,
+};
+#else
/* 803C1054-803C1060 -00001 000C+00 0/1 0/0 0/0 .data @4178 */
#pragma push
#pragma force_active on
@@ -463,46 +358,39 @@ SECTION_DATA static u8 process[60 + 4 /* padding */] = {
0x00,
0x00,
};
+#endif
/* 803C10D0-803C10E8 01E1F0 0018+00 0/1 0/0 0/0 .data ylinen_tag$4210 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 ylinen_tag[24] = {
- 0x79, 0x6C, 0x69, 0x6E, 0x65, 0x6E, 0x30, 0x30, 0x79, 0x6C, 0x69, 0x6E,
- 0x65, 0x6E, 0x30, 0x32, 0x79, 0x6C, 0x69, 0x6E, 0x65, 0x6E, 0x30, 0x34,
+SECTION_DATA static u64 ylinen_tag[3] = {
+ 'ylinen00',
+ 'ylinen02',
+ 'ylinen04',
};
#pragma pop
/* 803C10E8-803C1120 01E208 0038+00 0/1 0/0 0/0 .data tlinen_tag$4211 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 tlinen_tag[56] = {
- 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x6E, 0x30, 0x30, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x6E,
- 0x30, 0x31, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x6E, 0x30, 0x32, 0x74, 0x6C, 0x69, 0x6E,
- 0x65, 0x6E, 0x30, 0x33, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x6E, 0x30, 0x34, 0x74, 0x6C,
- 0x69, 0x6E, 0x65, 0x6E, 0x30, 0x35, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x6E, 0x30, 0x36,
+SECTION_DATA static u64 tlinen_tag[7] = {
+ 'tlinen00', 'tlinen01', 'tlinen02', 'tlinen03', 'tlinen04', 'tlinen05', 'tlinen06',
};
#pragma pop
/* 803C1120-803C1158 01E240 0038+00 0/0 0/0 0/0 .data tline_tag$4212 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 tline_tag[56] = {
- 0x00, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x30, 0x30, 0x00, 0x74, 0x6C, 0x69, 0x6E, 0x65,
- 0x30, 0x31, 0x00, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x30, 0x32, 0x00, 0x74, 0x6C, 0x69,
- 0x6E, 0x65, 0x30, 0x33, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x6E, 0x30, 0x34, 0x00, 0x74,
- 0x6C, 0x69, 0x6E, 0x65, 0x30, 0x35, 0x00, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x30, 0x36,
+SECTION_DATA static u64 tline_tag[7] = {
+ 'tline00', 'tline01', 'tline02', 'tline03', 'tlinen04', 'tline05', 'tline06',
};
#pragma pop
/* 803C1158-803C1190 01E278 0038+00 0/0 0/0 0/0 .data tlines_tag$4213 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 tlines_tag[56] = {
- 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x30, 0x30, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x73,
- 0x30, 0x31, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x30, 0x32, 0x74, 0x6C, 0x69, 0x6E,
- 0x65, 0x73, 0x30, 0x33, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x30, 0x34, 0x74, 0x6C,
- 0x69, 0x6E, 0x65, 0x73, 0x30, 0x35, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x30, 0x36,
+SECTION_DATA static u64 tlines_tag[7] = {
+ 'tlines00', 'tlines01', 'tlines02', 'tlines03', 'tlines04', 'tlines05', 'tlines06',
};
#pragma pop
@@ -560,6 +448,168 @@ SECTION_SDATA2 static f32 lit_4431[1 + 1 /* padding */] = {
SECTION_SDATA2 static f64 lit_4434 = 4503601774854144.0 /* cast s32 to float */;
/* 8024096C-80241784 23B2AC 0E18+00 0/0 1/1 0/0 .text __ct__14dMsgScrnHowl_cFv */
+// Matches with literals (Maybe minor issue with tag arrays)
+#ifdef NONMATCHING
+dMsgScrnHowl_c::dMsgScrnHowl_c() {
+ init();
+ mpScreen = new J2DScreen();
+ JUT_ASSERT(61, mpScreen != 0);
+ bool fg = mpScreen->setPriority("zelda_wolf_howl.blo", 0x20000, dComIfGp_getMsgArchive(5));
+ JUT_ASSERT(73, fg != false);
+ dPaneClass_showNullPane(mpScreen);
+ mpScreen->search('line00')->hide();
+ mpPmp_c = new CPaneMgr(mpScreen, 'n_all', 3, NULL);
+ JUT_ASSERT(79, mpPmP_c != 0);
+ mpScreen->search('ag_n')->hide();
+ field_0x1994 = 0.0f;
+ field_0x1998 = 0.0f;
+ mpScreen->search('wi_btn_n')->hide();
+ mpButtonIcon[0] = new CPaneMgr(mpScreen, 'cbtn_n', 2, NULL);
+ JUT_ASSERT(91, mpButtonIcon[0] != 0);
+ mpButtonText[0] = new CPaneMgr(mpScreen, 'g_ltxt_n', 2, NULL);
+ JUT_ASSERT(93, mpButtonText[0] != 0);
+ mpButtonIcon[1] = new CPaneMgr(mpScreen, 'abt_n', 2, NULL);
+ JUT_ASSERT(96, mpButtonIcon[1] != 0);
+ mpButtonText[1] = new CPaneMgr(mpScreen, 'gr_txt_n', 2, NULL);
+ JUT_ASSERT(98, mpButtonText[1] != 0);
+ J2DTextBox* piStack_19c = (J2DTextBox*)mpScreen->search('fgl_info');
+ J2DTextBox* piStack_1a0 = (J2DTextBox*)mpScreen->search('fgr_info');
+ mpScreen->search('g_l_info')->hide();
+ mpScreen->search('g_r_info')->hide();
+ piStack_19c->setString(0x40, "");
+ piStack_19c->setFont(mDoExt_getMesgFont());
+ dMeter2Info_getStringKanji(0x4d4, piStack_19c->getStringPtr(), NULL);
+ piStack_1a0->setString(0x40, "");
+ piStack_1a0->setFont(mDoExt_getMesgFont());
+ dMeter2Info_getStringKanji(0x4d5, piStack_1a0->getStringPtr(), NULL);
+ field_0x2195 = 0;
+ for (int i = 0; i < 0x300; i++) {
+ field_0x180[i] = 0.0f;
+ field_0xd80[i] = 0.0f;
+ field_0x2198[i] = 0;
+ field_0x2498[i] = 0;
+ field_0x1b14[i] = 0;
+ }
+ for (int i = 0; i < 3; i++) {
+ field_0x1b08[i] = 0.0f;
+ }
+ field_0x2114 = 0;
+ field_0x2118 = 0;
+ field_0x211c = 0;
+ field_0x2120 = 0;
+ for (int i = 0; i < 30; i++) {
+ field_0x213a[i] = 0;
+ field_0x2158[i] = 0;
+ field_0x2176[i] = 0;
+ field_0x19a0[i] = 0.0f;
+ field_0x1a18[i] = 0.0f;
+ field_0x1a90[i] = 0.0f;
+ }
+ field_0x279b = 0x0;
+ field_0x2124 = 0;
+ field_0x2128 = 0;
+ mPlotTime = 0;
+ field_0x212c = 0;
+ field_0x212e = 0;
+ field_0x2126 = 0;
+ field_0x2130 = 0;
+ field_0x2132 = 0;
+ field_0x17c = 1;
+ field_0x279a = 0;
+ field_0x199c = 0.0f;
+ s16 howl = daAlink_getAlinkActorClass()->checkWindStoneHowl();
+ if (howl != 0) {
+ field_0x2798 = 3;
+ } else {
+ field_0x2798 = 0;
+ }
+ field_0x2799 = field_0x2798;
+ (this->*init_proc[field_0x2798])();
+ field_0x1980 = g_MsgObject_HIO_c.mHowlHIO.mDrawInterval;
+ field_0x2136 = (350.0f / field_0x1980);
+ field_0x2138 = 0;
+ field_0x1984 = 255.0f / field_0x2136;
+ mpABase = new CPaneMgr(mpScreen, 'a_base', 0, NULL);
+ JUT_ASSERT(218, mpABase != 0);
+ mpLineAll = new CPaneMgr(mpScreen, 'line_all', 0, NULL);
+ JUT_ASSERT(221, mpLineAll != 0);
+ f32 in_f31;
+ for (int i = 0; i < 7; i++) {
+ J2DPane* piStack_1b4 = mpScreen->search(tlinen_tag[i]);
+ if (i == 0) {
+ CPaneMgr aCStack_b0;
+ Mtx mtx1;
+ Vec fStack_120 = mpABase->getGlobalVtx(&mtx1, 0, true, 0);
+ Vec fStack_144 = aCStack_b0.getGlobalVtxCenter(piStack_1b4, true, 0);
+ in_f31 = fStack_120.x - fStack_144.x;
+ }
+ f32 f29 = piStack_1b4->getBounds().i.y;
+ piStack_1b4->move(g_MsgObject_HIO_c.mHowlHIO.mInputStartPoint +
+ ((in_f31 + piStack_1b4->getBounds().i.x) - 3.0f),
+ f29);
+ }
+ for (int i = 0; i < 3; i++) {
+ mpLineH[i] = new CPaneMgr(mpScreen, ylinen_tag[i], 0, NULL);
+ JUT_ASSERT(242, mpLineH[i] != 0);
+ }
+ for (int i = 0; i < 7; i++) {
+ mpLineV[i] = new CPaneMgr(mpScreen, tline_tag[i], 2, NULL);
+ JUT_ASSERT(247, mpLineV[i] != 0);
+ }
+ Mtx mtx2;
+ field_0x128 = mpLineH[0]->getGlobalVtx(&mtx2, 0, true, 0);
+ field_0x134 = mpLineH[0]->getGlobalVtx(&mtx2, 3, true, 0);
+ field_0x140 = mpLineH[2]->getGlobalVtx(&mtx2, 3, true, 0);
+ field_0x14c = mpLineV[0]->getGlobalVtx(&mtx2, 0, true, 0);
+ field_0x158 = mpLineV[0]->getGlobalVtx(&mtx2, 3, true, 0);
+ field_0x164 = mpLineV[1]->getGlobalVtx(&mtx2, 0, true, 0);
+ field_0x170 = mpLineV[1]->getGlobalVtx(&mtx2, 3, true, 0);
+ field_0x279c = 0.0f;
+ field_0x27a0 = 0.0f;
+ field_0x27a4 = 1.0f;
+ field_0x27a8 = 0.0f;
+ ResTIMG const* res = (ResTIMG const*) dComIfGp_getMsgArchive(5)->getResource('TIMG', "tt_ginnouroko_s3tc.bti");
+ mpDot = new J2DPicture(res);
+ JUT_ASSERT(275, mpDot != 0);
+ mpDot->setWhite(JUtility::TColor(0xff, 0xff, 0x71, 0xff));
+ res = (ResTIMG const*)dComIfGp_getMsgArchive(5)->getResource('TIMG', "tt_black_32.bti");
+ mpGuideDot = new J2DPicture(res);
+ JUT_ASSERT(280, mpGuideDot != 0);
+ mpGuideDot->setBlackWhite(((J2DPicture*)mpScreen->search('line00'))->getBlack(), ((J2DPicture*)mpScreen->search('line00'))->getWhite());
+ res = (ResTIMG const*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_iastarRR.bti");
+ mpTopBall = new J2DPicture(res);
+ JUT_ASSERT(287, mpTopBall != 0);
+ mpTopBall->setBlackWhite(g_MsgObject_HIO_c.mHowlHIO.mDotBlack, g_MsgObject_HIO_c.mHowlHIO.mDotWhite);
+
+ ;
+ for (int i = 0; i < 5; i++) {
+ mpTopBallTail[i] = new J2DPicture(res);
+ JUT_ASSERT(292, mpTopBallTail[i] != 0);
+ mpTopBallTail[i]->setBlackWhite(g_MsgObject_HIO_c.mHowlHIO.mDotBlack, g_MsgObject_HIO_c.mHowlHIO.mDotWhite);
+ }
+ field_0x2134 = 0;
+ field_0x1988 = mpScreen->search('line00')->getWidth();
+ field_0x198c = mpScreen->search('line00')->getHeight();
+ field_0x2194 = daAlink_getAlinkActorClass()->getCorrectCurveID();
+ mCorrectLineMax = 0;
+ field_0x2197 = 0;
+ res = (ResTIMG const*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti");
+ mpWaveTex = new J2DPicture(res);
+ JUT_ASSERT(307, mpWaveTex != 0);
+ mpWaveTex->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(255, 200, 0, 255));
+ mpWaveTex->setCornerColor(
+ JUtility::TColor(128, 128, 128, 0), JUtility::TColor(255, 255, 255, 255),
+ JUtility::TColor(128, 128, 128, 0), JUtility::TColor(255, 255, 255, 255));
+ mpWaveTex->setAlpha(0);
+ if (field_0x2194 >= 0) {
+ mCorrectLineMax = daAlink_getAlinkActorClass()->getCorrectLineNum();
+ JUT_ASSERT(322, mCorrectLineMax < LINE_MAX);
+ field_0x2197 = LINE_MAX;
+ field_0x2138 = getGuideDataSize();
+ }
+ resetLine();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -568,16 +618,48 @@ asm dMsgScrnHowl_c::dMsgScrnHowl_c() {
#include "asm/msg/scrn/d_msg_scrn_howl/__ct__14dMsgScrnHowl_cFv.s"
}
#pragma pop
+#endif
/* 80241784-80241A70 23C0C4 02EC+00 1/0 0/0 0/0 .text __dt__14dMsgScrnHowl_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dMsgScrnHowl_c::~dMsgScrnHowl_c() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/__dt__14dMsgScrnHowl_cFv.s"
+dMsgScrnHowl_c::~dMsgScrnHowl_c() {
+ delete mpScreen;
+ mpScreen = NULL;
+
+ delete mpPmp_c;
+ mpPmp_c = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ delete mpButtonIcon[i];
+ mpButtonIcon[i] = NULL;
+ delete mpButtonText[i];
+ mpButtonText[i] = NULL;
+ }
+ for (int i = 0; i < 3; i++) {
+ delete mpLineH[i];
+ mpLineH[i] = NULL;
+ }
+ for (int i = 0; i < 7; i++) {
+ delete mpLineV[i];
+ mpLineV[i] = NULL;
+ }
+ delete mpABase;
+ mpABase = NULL;
+ delete mpLineAll;
+ mpLineAll = NULL;
+ delete mpDot;
+ mpDot = NULL;
+ delete mpGuideDot;
+ mpGuideDot = NULL;
+ delete mpTopBall;
+ mpTopBall = NULL;
+ for (int i = 0; i < 5; i++) {
+ delete mpTopBallTail[i];
+ mpTopBallTail[i] = NULL;
+ }
+ delete mpWaveTex;
+ mpWaveTex = NULL;
+ dComIfGp_getMsgArchive(5)->removeResourceAll();;
}
-#pragma pop
/* ############################################################################################## */
/* 80454C70-80454C74 003270 0004+00 7/7 0/0 0/0 .sdata2 @4561 */
@@ -594,6 +676,48 @@ SECTION_SDATA2 static f32 lit_4563[1 + 1 /* padding */] = {
};
/* 80241A70-80241C30 23C3B0 01C0+00 1/0 0/0 0/0 .text exec__14dMsgScrnHowl_cFv */
+// Matches with literals
+#ifdef NONMATCHING
+void dMsgScrnHowl_c::exec() {
+ field_0x2799 = field_0x2798;
+ (this->*process[field_0x2798])();
+ for (int i = 0; i < 0x300; i++) {
+ if (field_0x1b14[i] > 0) {
+ field_0x1b14[i]--;
+ }
+ }
+ if (field_0x2799 != field_0x2798) {
+ (this->*init_proc[field_0x2798])();
+ }
+
+ f32 dVar10 = mpPmp_c->getAlphaRate();
+ f32 fVar1;
+ f32 fVar2;
+ if (field_0x2798 == 3) {
+ fVar1 = 0.5f;
+ fVar2 = 0.0f;
+ } else {
+ fVar1 = 1.0f;
+ fVar2 = 1.0f;
+ }
+ if (field_0x1994 != fVar1) {
+ cLib_addCalc2(&field_0x1994, fVar1, 0.2f, 1.0f);
+ if (fabsf(field_0x1994 - fVar1) < 0.1f) {
+ field_0x1994 = fVar1;
+ }
+ }
+ if (field_0x1998 != fVar2) {
+ cLib_addCalc2(&field_0x1998, fVar2, 0.2f, 1.0f);
+ if (fabsf(field_0x1998 - fVar2) < 0.1f) {
+ field_0x1998 = fVar2;
+ }
+ }
+ mpButtonIcon[0]->setAlphaRate(field_0x1994 * dVar10);
+ mpButtonIcon[1]->setAlphaRate(field_0x1994 * dVar10);
+ mpButtonText[0]->setAlphaRate(field_0x1998 * dVar10);
+ mpButtonText[1]->setAlphaRate(field_0x1998 * dVar10);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -602,12 +726,32 @@ asm void dMsgScrnHowl_c::exec() {
#include "asm/msg/scrn/d_msg_scrn_howl/exec__14dMsgScrnHowl_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 80454C80-80454C88 003280 0008+00 6/6 0/0 0/0 .sdata2 @4587 */
SECTION_SDATA2 static f64 lit_4587 = 4503599627370496.0 /* cast u32 to float */;
/* 80241C30-80241D58 23C570 0128+00 1/0 0/0 0/0 .text drawSelf__14dMsgScrnHowl_cFv */
+// Matches with literals
+#ifdef NONMATCHING
+void dMsgScrnHowl_c::drawSelf() {
+ J2DGrafContext* grafContext = dComIfGp_getCurrentGrafPort();
+ GXGetScissor(&field_0x2114, &field_0x2118, &field_0x211c, &field_0x2120);
+ if (field_0x2138 != 0) {
+ if ((field_0x2798 == 0) || field_0x2798 == 4) {
+ drawGuide();
+ } else {
+ drawGuide2();
+ }
+ }
+ if (field_0x2798 != 3) {
+ drawWave();
+ }
+ grafContext->scissor(field_0x2114, field_0x2118, field_0x211c, field_0x2120);
+ grafContext->setScissor();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -616,6 +760,7 @@ asm void dMsgScrnHowl_c::drawSelf() {
#include "asm/msg/scrn/d_msg_scrn_howl/drawSelf__14dMsgScrnHowl_cFv.s"
}
#pragma pop
+#endif
/* 80241D58-80241D5C 23C698 0004+00 1/0 0/0 0/0 .text guide_on_init__14dMsgScrnHowl_cFv
*/
@@ -625,14 +770,22 @@ void dMsgScrnHowl_c::guide_on_init() {
/* 80241D5C-80241DFC 23C69C 00A0+00 1/0 0/0 0/0 .text guide_on_proc__14dMsgScrnHowl_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::guide_on_proc() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/guide_on_proc__14dMsgScrnHowl_cFv.s"
+void dMsgScrnHowl_c::guide_on_proc() {
+ if (daAlink_getAlinkActorClass()->getWolfHowlTimer() == 0) {
+ if (field_0x2195 == 1) {
+ field_0x2195 = 2;
+ }
+ if (mDoCPd_c::getTrigB(0) != 0 && field_0x2195 == 2) {
+ resetLine();
+ }
+ } else {
+ if (field_0x2195 == 2) {
+ resetLine();
+ }
+ field_0x2195 = 1;
+ calcMain();
+ }
}
-#pragma pop
/* 80241DFC-80241E00 23C73C 0004+00 1/0 0/0 0/0 .text guide_off_init__14dMsgScrnHowl_cFv
*/
@@ -642,14 +795,16 @@ void dMsgScrnHowl_c::guide_off_init() {
/* 80241E00-80241E7C 23C740 007C+00 1/0 0/0 0/0 .text guide_off_proc__14dMsgScrnHowl_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::guide_off_proc() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/guide_off_proc__14dMsgScrnHowl_cFv.s"
+void dMsgScrnHowl_c::guide_off_proc() {
+ calcMain();
+ if (daAlink_getAlinkActorClass()->getWolfHowlMgrP()->getReleaseTimer() != 30) {
+ if (daAlink_getAlinkActorClass()->getWolfHowlTimer() != 0) {
+ return;
+ }
+ }
+ field_0x2798 = 2;
+ resetLine();
}
-#pragma pop
/* 80241E7C-80241E80 23C7BC 0004+00 1/0 0/0 0/0 .text guide_stop_init__14dMsgScrnHowl_cFv
*/
@@ -659,34 +814,50 @@ void dMsgScrnHowl_c::guide_stop_init() {
/* 80241E80-80241F28 23C7C0 00A8+00 1/0 0/0 0/0 .text guide_stop_proc__14dMsgScrnHowl_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::guide_stop_proc() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/guide_stop_proc__14dMsgScrnHowl_cFv.s"
+void dMsgScrnHowl_c::guide_stop_proc() {
+ field_0x180[field_0x2124] =
+ getNowPlotPitch(-daAlink_getAlinkActorClass()->getWolfHowlMgrP()->getNowInputValue());
+ if (mDoCPd_c::getHoldA(0) != 0) {
+ resetLine();
+ field_0x2798 = 1;
+ } else {
+ if (mDoCPd_c::getTrigB(0) != 0) {
+ resetLine();
+ field_0x2798 = 3;
+ }
+ }
}
-#pragma pop
/* 80241F28-80241F34 23C868 000C+00 1/0 0/0 0/0 .text guide_demo_play_init__14dMsgScrnHowl_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::guide_demo_play_init() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/guide_demo_play_init__14dMsgScrnHowl_cFv.s"
+void dMsgScrnHowl_c::guide_demo_play_init() {
+ field_0x279a = 0;
}
-#pragma pop
/* 80241F34-8024202C 23C874 00F8+00 1/0 0/0 0/0 .text guide_demo_play_proc__14dMsgScrnHowl_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::guide_demo_play_proc() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/guide_demo_play_proc__14dMsgScrnHowl_cFv.s"
+void dMsgScrnHowl_c::guide_demo_play_proc() {
+ if (mDoCPd_c::getHoldA(0) != 0) {
+ if (daAlink_getAlinkActorClass()->getWolfHowlTimer() != 0) {
+ resetLine();
+ field_0x2798 = 1;
+ }
+ }
+ calcMain();
+ bool startGuideMelody = false;
+ if (mPlotTime == 30) {
+ startGuideMelody = true;
+ }
+ field_0x17c = daAlink_getAlinkActorClass()->getWolfHowlMgrP()->startGuideMelody(startGuideMelody);
+ if (mPlotTime >= 30) {
+ if (field_0x17c == 0) {
+ if (field_0x279a != 0) {
+ resetLine();
+ field_0x279a = 0;
+ }
+ } else if (field_0x279a == 0) {
+ field_0x279a = 1;
+ }
+ }
}
-#pragma pop
/* 8024202C-80242030 23C96C 0004+00 1/0 0/0 0/0 .text guide_off_test_init__14dMsgScrnHowl_cFv */
void dMsgScrnHowl_c::guide_off_test_init() {
@@ -704,36 +875,53 @@ void dMsgScrnHowl_c::fukiScale(f32 param_0) {
}
/* 80242038-8024205C 23C978 0024+00 1/0 0/0 0/0 .text fukiTrans__14dMsgScrnHowl_cFff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::fukiTrans(f32 param_0, f32 param_1) {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/fukiTrans__14dMsgScrnHowl_cFff.s"
+void dMsgScrnHowl_c::fukiTrans(f32 param_0, f32 param_1) {
+ mpPmp_c->paneTrans(param_0, param_1);
}
-#pragma pop
/* 8024205C-80242080 23C99C 0024+00 1/0 0/0 0/0 .text fukiAlpha__14dMsgScrnHowl_cFf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::fukiAlpha(f32 param_0) {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/fukiAlpha__14dMsgScrnHowl_cFf.s"
+void dMsgScrnHowl_c::fukiAlpha(f32 param_0) {
+ mpPmp_c->setAlphaRate(param_0);
}
-#pragma pop
/* 80242080-802420D4 23C9C0 0054+00 0/0 1/1 0/0 .text isKeyCheck__14dMsgScrnHowl_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::isKeyCheck() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/isKeyCheck__14dMsgScrnHowl_cFv.s"
+bool dMsgScrnHowl_c::isKeyCheck() {
+ if (daAlink_getAlinkActorClass()->getWolfHowlTimer() == 0 && field_0x2799 == field_0x2798 &&
+ (field_0x2798 == 3 || (field_0x2798 == 0 && field_0x2195 == 0)))
+ {
+ return true;
+ }
+ return false;
}
-#pragma pop
/* 802420D4-80242198 23CA14 00C4+00 5/5 0/0 0/0 .text resetLine__14dMsgScrnHowl_cFv */
+// Matches with literals
+#ifdef NONMATCHING
+void dMsgScrnHowl_c::resetLine() {
+ field_0x2195 = 0;
+ field_0x2128 = 0;
+ mPlotTime = 0;
+ field_0x212c = 0;
+ field_0x212e = 0;
+ field_0x2124 = 0;
+ field_0x2130 = 0;
+ field_0x2126 = 0;
+ field_0x279b = 0;
+ for (int i = 0; i < 30; i++) {
+ field_0x2158[i] = 0;
+ field_0x2176[i] = 0;
+ field_0x19a0[i] = 0.0f;
+ field_0x1a18[i] = 0.0f;
+ field_0x1a90[i] = 0.0f;
+ }
+ if (field_0x2138 != 0) {
+ initGuideData();
+ }
+ moveLineV(true);
+ moveBaseLength(true);
+ field_0x2138 = getGuideDataSize();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -742,6 +930,7 @@ asm void dMsgScrnHowl_c::resetLine() {
#include "asm/msg/scrn/d_msg_scrn_howl/resetLine__14dMsgScrnHowl_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 80454C88-80454C8C 003288 0004+00 2/2 0/0 0/0 .sdata2 @4824 */
@@ -763,6 +952,127 @@ SECTION_SDATA2 static f32 lit_4828 = 5.0f;
SECTION_SDATA2 static f32 lit_4829 = 15.0f;
/* 80242198-802427A8 23CAD8 0610+00 1/1 0/0 0/0 .text drawWave__14dMsgScrnHowl_cFv */
+// float regallocs
+#ifdef NONMATCHING
+void dMsgScrnHowl_c::drawWave() {
+ J2DGrafContext* grafContext = dComIfGp_getCurrentGrafPort();
+ f32 local_e0 = mpLineH[0]->getGlobalPosX();
+ s16 sVar14 = field_0x2124;
+ f32 local_60 = 0.0f;
+ f32 local_64 = 0.0f;
+ f32 local_68 = 0.0f;
+ f32 f26 = local_e0;
+ f32 local_e4 = field_0x180[sVar14];
+ s32 uVar6 = g_MsgObject_HIO_c.mHowlHIO.mWaveformDotLen;
+ s32 local_80 = field_0x2128 - 1 - uVar6;
+ f32 fVar4 = (30 - daAlink_getAlinkActorClass()->getWolfHowlMgrP()->getReleaseTimer()) / 30.0f;
+ if (local_80 < 0) {
+ local_80 = 0;
+ }
+ s32 local_94 = 0;
+ Vec fVar12 = field_0x128;
+ Vec this_02 = field_0x140;
+ f32 fVar1 = mDoGph_gInf_c::getWidthF() / 608.0f;
+ f32 fVar2 = mDoGph_gInf_c::getHeightF() / 448.0f;
+ f32 dVar16 = mDoGph_gInf_c::getMinXF();
+ grafContext->scissor(
+ (fVar12.x - dVar16) / fVar1 - 16.0f,
+ (fVar12.y / fVar2) / fVar2 - 16.0f,
+ 32.0f + (this_02.x - fVar12.x) / fVar1,
+ 32.0f + ((this_02.y - fVar12.y) + 2.0f)
+ );
+ grafContext->setScissor();
+ bool bVar5 = true;
+ if (field_0x2798 == 0) {
+ if (mPlotTime != field_0x212c) {
+ field_0x212c = mPlotTime;
+ } else {
+ bVar5 = false;
+ }
+ }
+ if (bVar5) {
+ for (int iVar10 = 0; iVar10 < field_0x2128 - 1; iVar10++) {
+ f32 local_54 = local_e0;
+ f32 local_c8 = field_0x180[sVar14];
+ s32 sVar3 = field_0x1b14[sVar14];
+ local_e0 += field_0x1980;
+ local_68 += field_0x1984;
+ if (local_68 > 255.0f) {
+ local_68 = 255.0f;
+ }
+ sVar14 = addCount(sVar14);
+ f32 fVar2 = field_0x180[sVar14];
+ s16 temp_r4 = field_0x1b14[sVar14];
+ if (iVar10 == field_0x2128 - 2) {
+ local_60 = local_e0;
+ local_64 = fVar2;
+ local_94 = temp_r4;
+ }
+ if (mPlotTime >= 30 && iVar10 >= local_80 && iVar10 >= 30) {
+ f32 local_b0 = 0.0f;
+ if (sVar3 > 0) {
+ local_b0 = (f32)sVar3 / (f32)uVar6;
+ }
+ if (fVar4 > 0.0f && local_b0 > 0.0f) {
+ f32 fVar7 = 0.1f + 0.2f * local_b0;
+ f32 fVar8 = 32.0f * g_MsgObject_HIO_c.mHowlHIO.mDotScale * fVar7;
+ f32 fVar9 = 32.0f * g_MsgObject_HIO_c.mHowlHIO.mDotScale * fVar7;
+ u8 cVar9 = 255.0f * local_b0 * fVar4;
+ if (cVar9 != 0) {
+ f32 local_c4 = local_54;
+ f32 dVar16 = 5.0f;
+ fVar2 = local_e0 - local_54;
+ f32 f19 = fVar2 / 5.0f;
+ f32 f17 = (fVar2 - local_c8) / 5.0f;
+ for (int iVar15 = 0; iVar15 < 5; iVar15++) {
+ mpTopBallTail[iVar15]->setAlpha(cVar9);
+ mpTopBallTail[iVar15]->draw(local_c4 - fVar8 / 2,
+ local_c8 - fVar9 / 2, fVar8, fVar9,
+ false, false, false);
+ local_c4 += f19;
+ local_c8 += f17;
+ }
+ }
+ }
+ }
+ local_54 = fVar1;
+ }
+ if (fVar4 > 0.0f) {
+ f32 fVar1 = 32.0f * g_MsgObject_HIO_c.mHowlHIO.mDotScale;
+ f32 fVar2 = 32.0f * g_MsgObject_HIO_c.mHowlHIO.mDotScale;
+ f32 local_dc = 0.0f;
+ f32 f17;
+ f32 f18;
+ if (field_0x2128 != 0) {
+ if (local_94 > 0) {
+ local_dc = (f32)local_94 / (f32)uVar6;
+ }
+ f17 = local_60;
+ f18 = local_64;
+ } else {
+ field_0x2134++;
+ if (field_0x2134 > 30) {
+ field_0x2134 = 0;
+ }
+ if (field_0x2134 < 15) {
+ local_dc = field_0x2134 / 15.0f;
+ } else {
+ local_dc = (30.0f - field_0x2134) / 15.0f;
+ }
+ f17 = f26;
+ f18 = local_e4;
+ }
+ if (local_dc > 0.0f) {
+ mpTopBall->setAlpha(255.0f * local_dc * fVar4);
+ mpTopBall->draw(
+ f17 - fVar1 / 2,
+ f18 - fVar2 / 2, fVar1,
+ fVar2, false, false, false);
+ }
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -771,6 +1081,7 @@ asm void dMsgScrnHowl_c::drawWave() {
#include "asm/msg/scrn/d_msg_scrn_howl/drawWave__14dMsgScrnHowl_cFv.s"
}
#pragma pop
+#endif
/* 802427A8-80242FE4 23D0E8 083C+00 1/1 0/0 0/0 .text drawGuide__14dMsgScrnHowl_cFv */
#pragma push
@@ -814,16 +1125,54 @@ asm void dMsgScrnHowl_c::drawEffect() {
#pragma pop
/* 80243838-8024389C 23E178 0064+00 3/3 0/0 0/0 .text calcMain__14dMsgScrnHowl_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::calcMain() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/calcMain__14dMsgScrnHowl_cFv.s"
+void dMsgScrnHowl_c::calcMain() {
+ if (mPlotTime < field_0x2138 + 380) {
+ mPlotTime++;
+ } else {
+ field_0x212c--;
+ }
+ calcWave();
+ calcGuide();
}
-#pragma pop
/* 8024389C-80243A50 23E1DC 01B4+00 1/1 0/0 0/0 .text calcWave__14dMsgScrnHowl_cFv */
+// Matches with literals
+#ifdef NONMATCHING
+void dMsgScrnHowl_c::calcWave() {
+ if (field_0x2128 < field_0x2136) {
+ field_0x2132 = field_0x2128;
+ field_0x2128++;
+ moveBaseLength(true);
+ } else {
+ if (field_0x212e < field_0x2138 + 380) {
+ field_0x212e++;
+ }
+ field_0x2132 = field_0x2124;
+ field_0x2124 = addCount(field_0x2124);
+ moveLineV(false);
+ moveBaseLength(false);
+ for (int iVar5 = 0; iVar5 < 30; iVar5++) {
+ if (field_0x1a90[iVar5] > 0.0f) {
+ field_0x19a0[iVar5] -= field_0x1980;
+ }
+ }
+ }
+ if (field_0x2798 != 3) {
+ s8 i_onNum = daAlink_getAlinkActorClass()->getOnLineNum();
+ if (i_onNum >= 0 && mPlotTime >= 30 && daAlink_getAlinkActorClass()->getWolfHowlTimer() != 0) {
+ JUT_ASSERT(1439, i_onNum < LINE_MAX);
+ JUT_ASSERT(1439, mPlotTime <= PLOT_BUFFER_MAX_e);
+ field_0x2158[i_onNum]++;
+ field_0x2498[mPlotTime] = 1;
+ } else {
+ field_0x2498[mPlotTime] = 0;
+ }
+ }
+
+ field_0x180[field_0x2132] = getNowPlotPitch(-daAlink_getAlinkActorClass()->getWolfHowlMgrP()->getNowInputValue());
+ field_0x1b14[field_0x2132] = g_MsgObject_HIO_c.mHowlHIO.mWaveformDotLen;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -832,8 +1181,41 @@ asm void dMsgScrnHowl_c::calcWave() {
#include "asm/msg/scrn/d_msg_scrn_howl/calcWave__14dMsgScrnHowl_cFv.s"
}
#pragma pop
+#endif
/* 80243A50-80243BE0 23E390 0190+00 1/1 0/0 0/0 .text calcGuide__14dMsgScrnHowl_cFv */
+// Matches with literals
+#ifdef NONMATCHING
+void dMsgScrnHowl_c::calcGuide() {
+ if (field_0x2138 != 0) {
+ if ((daAlink_getAlinkActorClass()->getWolfHowlTimer() != 0) || (field_0x2798 == 3)) {
+ calcPitchLevel();
+ for (int i = 0; i < 350; i++) {
+ if (field_0x2130 < field_0x2136) {
+ if (i < field_0x2138) {
+ u8 dataType = getGuideDataType(i);
+ field_0xd80[i] = getPlotPitch(dataType);
+ field_0x2198[i] = dataType;
+ } else {
+ field_0xd80[i] = 0.0f;
+ field_0x2198[i] = 0;
+ }
+ } else if (i + (field_0x2130 - field_0x2136) < field_0x2138) {
+ u8 dataType = getGuideDataType(i + (field_0x2130 - field_0x2136));
+ field_0xd80[i] = getPlotPitch(dataType);
+ field_0x2198[i] = dataType;
+ } else {
+ field_0xd80[i] = 0.0f;
+ field_0x2198[i] = 0;
+ }
+ }
+ if (field_0x2130 < (field_0x2138 + field_0x2136)) {
+ field_0x2130++;
+ }
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -842,8 +1224,45 @@ asm void dMsgScrnHowl_c::calcGuide() {
#include "asm/msg/scrn/d_msg_scrn_howl/calcGuide__14dMsgScrnHowl_cFv.s"
}
#pragma pop
+#endif
/* 80243BE0-80243DCC 23E520 01EC+00 2/2 0/0 0/0 .text moveLineV__14dMsgScrnHowl_cFb */
+// Matches with literals
+#ifdef NONMATCHING
+void dMsgScrnHowl_c::moveLineV(bool param_0) {
+ f32 dVar7 = (mpLineH[0]->getInitPosX() - mpLineV[0]->getInitCenterPosX());
+ f32 fVar1;
+ if (param_0) {
+ fVar1 = 0.0f;
+ } else {
+ fVar1 = (mpLineV[0]->getCenterPosX() - mpLineV[0]->getInitCenterPosX());
+ fVar1 -= field_0x1980;
+ }
+ f32 dVar8 = (mpLineV[0]->getInitCenterPosX() - mpLineV[1]->getInitCenterPosX()) - g_MsgObject_HIO_c.mHowlHIO.mLineSpaceOffset;
+ if (fVar1 < dVar7) {
+ fVar1 -= dVar8;
+ }
+ if (fVar1 < (dVar7 - (dVar8 / 2))) {
+ f32 fVar4 = ((dVar7 - (dVar8 / 2)) - fVar1);
+ dVar7 = fVar4 / (-dVar8 / 2);
+ mpLineV[0]->setAlphaRate(1.0f - dVar7);
+ mpLineV[6]->setAlphaRate(1.0f);
+ } else {
+ f32 fVar4 = fVar1 - (dVar7 - (dVar8 / 2));
+ dVar7 = fVar4 / (-dVar8 / 2);
+ mpLineV[0]->setAlphaRate(1.0f);
+ mpLineV[6]->setAlphaRate((1.0f - dVar7));
+ }
+ f32 fVar3 = 0.0f;
+ for (int i = 0; i < 7; i++) {
+ if (0 < i && i < 6) {
+ mpLineV[i]->setAlphaRate(1.0f);
+ }
+ mpLineV[i]->move((fVar3 + (fVar1 + mpLineV[i]->getInitPosX())), mpLineV[i]->getInitPosY());
+ fVar3 += g_MsgObject_HIO_c.mHowlHIO.mLineSpaceOffset;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -852,9 +1271,29 @@ asm void dMsgScrnHowl_c::moveLineV(bool param_0) {
#include "asm/msg/scrn/d_msg_scrn_howl/moveLineV__14dMsgScrnHowl_cFb.s"
}
#pragma pop
+#endif
/* 80243DCC-80243EEC 23E70C 0120+00 2/2 0/0 0/0 .text moveBaseLength__14dMsgScrnHowl_cFb
*/
+// Matches with literals
+#ifdef NONMATCHING
+void dMsgScrnHowl_c::moveBaseLength(bool param_0) {
+ if (param_0) {
+ field_0x1990 = 0.0f;
+ } else {
+ field_0x1990 -= field_0x1980;
+ }
+ f32 dVar6 = mpLineH[0]->getGlobalPosX();
+ f32 dVar8 = mpABase->getGlobalPosX() + mpABase->getSizeX();
+ f32 dVar7 = field_0x1990 + (mpABase->getInitGlobalPosX() - field_0x27a8);
+ if (dVar7 < dVar6) {
+ dVar7 = dVar6;
+ }
+ f32 dVar9 = dVar7 - mpABase->getInitGlobalPosX();
+ mpABase->resize((dVar8 - dVar7), mpABase->getSizeY());
+ mpABase->move(dVar9 + mpABase->getInitPosX(), mpABase->getPosY());
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -863,37 +1302,42 @@ asm void dMsgScrnHowl_c::moveBaseLength(bool param_0) {
#include "asm/msg/scrn/d_msg_scrn_howl/moveBaseLength__14dMsgScrnHowl_cFb.s"
}
#pragma pop
+#endif
/* 80243EEC-80243F58 23E82C 006C+00 2/2 0/0 0/0 .text getOnLineNum__14dMsgScrnHowl_cFi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::getOnLineNum(int param_0) {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/getOnLineNum__14dMsgScrnHowl_cFi.s"
+s8 dMsgScrnHowl_c::getOnLineNum(int param_0) {
+ if (param_0 < 0) {
+ return -1;
+ }
+
+ if (param_0 >= 30 && param_0 < field_0x2138 + 380) {
+ int iVar1 = 30;
+ for (int i = 0; i < mCorrectLineMax; i++) {
+ iVar1 += field_0x213a[i];
+ if (param_0 < iVar1) {
+ return i;
+ }
+ }
+ }
+ return -1;
}
-#pragma pop
/* 80243F58-80243F7C 23E898 0024+00 2/2 0/0 0/0 .text addCount__14dMsgScrnHowl_cFs */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::addCount(s16 param_0) {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/addCount__14dMsgScrnHowl_cFs.s"
+s16 dMsgScrnHowl_c::addCount(s16 param_0) {
+ if (++param_0 >= field_0x2136) {
+ param_0 -= field_0x2136;
+ }
+ return param_0;
}
-#pragma pop
/* 80243F7C-80243F94 23E8BC 0018+00 2/2 0/0 0/0 .text addCountGuide__14dMsgScrnHowl_cFs
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::addCountGuide(s16 param_0) {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/addCountGuide__14dMsgScrnHowl_cFs.s"
+s16 dMsgScrnHowl_c::addCountGuide(s16 param_0) {
+ if (++param_0 >= 350) {
+ param_0 -= 350;
+ }
+ return param_0;
}
-#pragma pop
/* ############################################################################################## */
/* 80454CAC-80454CB0 0032AC 0004+00 1/1 0/0 0/0 .sdata2 @5508 */
@@ -901,27 +1345,62 @@ SECTION_SDATA2 static f32 lit_5508 = -1.0f;
/* 80243F94-80244108 23E8D4 0174+00 2/2 0/0 0/0 .text getNowPlotPitch__14dMsgScrnHowl_cFf
*/
+// Matches with literals
+#ifdef NONMATCHING
+f32 dMsgScrnHowl_c::getNowPlotPitch(f32 param_0) {
+ if (param_0 < 0.0f) {
+ param_0 *= -1.0f;
+ return mpLineH[1]->getGlobalCenterPosY() + (param_0 * (mpLineH[0]->getGlobalCenterPosY() - mpLineH[1]->getGlobalCenterPosY()));
+ }
+ return mpLineH[1]->getGlobalCenterPosY() + (param_0 * (mpLineH[2]->getGlobalCenterPosY() - mpLineH[1]->getGlobalCenterPosY()));
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::getNowPlotPitch(f32 param_0) {
+asm f32 dMsgScrnHowl_c::getNowPlotPitch(f32 param_0) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_howl/getNowPlotPitch__14dMsgScrnHowl_cFf.s"
}
#pragma pop
+#endif
/* 80244108-8024414C 23EA48 0044+00 2/2 0/0 0/0 .text getPlotPitch__14dMsgScrnHowl_cFf */
+// Matches with literals
+#ifdef NONMATCHING
+f32 dMsgScrnHowl_c::getPlotPitch(f32 param_0) {
+ if (1.0f == param_0) {
+ return field_0x1b08[0];
+ }
+ if (2.0f == param_0) {
+ return field_0x1b08[1];
+ }
+ if (3.0f == param_0) {
+ return field_0x1b08[2];
+ }
+ return 0.0f;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::getPlotPitch(f32 param_0) {
+asm f32 dMsgScrnHowl_c::getPlotPitch(f32 param_0) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_howl/getPlotPitch__14dMsgScrnHowl_cFf.s"
}
#pragma pop
+#endif
/* 8024414C-802441FC 23EA8C 00B0+00 2/2 0/0 0/0 .text calcPitchLevel__14dMsgScrnHowl_cFv
*/
+// Matches with literals
+#ifdef NONMATCHING
+void dMsgScrnHowl_c::calcPitchLevel() {
+ field_0x1b08[0] = mpLineH[0]->getGlobalCenterPosY();
+ field_0x1b08[1] = mpLineH[1]->getGlobalCenterPosY();
+ field_0x1b08[2] = mpLineH[2]->getGlobalCenterPosY();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -930,9 +1409,32 @@ asm void dMsgScrnHowl_c::calcPitchLevel() {
#include "asm/msg/scrn/d_msg_scrn_howl/calcPitchLevel__14dMsgScrnHowl_cFv.s"
}
#pragma pop
+#endif
/* 802441FC-80244304 23EB3C 0108+00 1/1 0/0 0/0 .text initGuideData__14dMsgScrnHowl_cFv
*/
+// Matches with literals
+#ifdef NONMATCHING
+void dMsgScrnHowl_c::initGuideData() {
+ calcPitchLevel();
+ for (int i = 0; i < 350; i++) {
+ if (field_0x2138 <= 350) {
+ if (i < field_0x2138) {
+ u8 dataType = getGuideDataType(i);
+ field_0xd80[i] = getPlotPitch(dataType);
+ field_0x2198[i] = dataType;
+ } else {
+ field_0xd80[i] = 0.0f;
+ field_0x2198[i] = 0;
+ }
+ } else {
+ u8 dataType = getGuideDataType(i);
+ field_0xd80[i] = getPlotPitch(dataType);
+ field_0x2198[i] = dataType;
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -941,26 +1443,31 @@ asm void dMsgScrnHowl_c::initGuideData() {
#include "asm/msg/scrn/d_msg_scrn_howl/initGuideData__14dMsgScrnHowl_cFv.s"
}
#pragma pop
+#endif
/* 80244304-8024438C 23EC44 0088+00 2/2 0/0 0/0 .text getGuideDataSize__14dMsgScrnHowl_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::getGuideDataSize() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/getGuideDataSize__14dMsgScrnHowl_cFv.s"
+u16 dMsgScrnHowl_c::getGuideDataSize() {
+ u16 dataSize = field_0x2197;
+ for (int i = 0; i < mCorrectLineMax; i++) {
+ field_0x213a[i] = daAlink_getAlinkActorClass()->getCorrectLine(i).length;
+ dataSize += field_0x213a[i];
+ }
+ return dataSize;
}
-#pragma pop
/* 8024438C-80244454 23ECCC 00C8+00 2/2 0/0 0/0 .text getGuideDataType__14dMsgScrnHowl_cFi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnHowl_c::getGuideDataType(int param_0) {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_howl/getGuideDataType__14dMsgScrnHowl_cFi.s"
+u8 dMsgScrnHowl_c::getGuideDataType(int param_0) {
+ u16 uVar2 = field_0x2197;
+ u16 uVar3 = field_0x2197;
+ for (int i = 0; i < mCorrectLineMax; i++) {
+ uVar3 += daAlink_getAlinkActorClass()->getCorrectLine(i).length;
+ if (uVar2 <= param_0 && uVar3 > param_0) {
+ return daAlink_getAlinkActorClass()->getCorrectLine(i).barType;
+ }
+ uVar2 = uVar3;
+ }
+ return 0;
}
-#pragma pop
/* 80244454-80244558 23ED94 0104+00 0/0 1/0 0/0 .text __sinit_d_msg_scrn_howl_cpp */
#pragma push