diff options
Diffstat (limited to 'src/msg')
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_base.cpp | 1 | ||||
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_boss.cpp | 1 | ||||
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_explain.cpp | 9 | ||||
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_howl.cpp | 1049 |
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 |
