summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2026-01-29 23:33:34 +0100
committerrobojumper <robojumper@gmail.com>2026-01-30 23:38:28 +0100
commit75f3be60d26e205f1681afb44a3b4d5a72f75d80 (patch)
tree2e399dc27bddb24282a0b6714367e6678fce97de
parent62fc066b605680af84cc921aba070b62e7df8ff7 (diff)
A start
-rw-r--r--config/SOUE01/splits.txt8
-rw-r--r--config/SOUE01/symbols.txt288
-rw-r--r--configure.py2
-rw-r--r--include/d/flag/storyflag_map.h2
-rw-r--r--include/d/lyt/d2d.h4
-rw-r--r--include/d/lyt/d_lyt_note.h4
-rw-r--r--include/d/lyt/d_lyt_suiryu_score.h148
-rw-r--r--include/d/lyt/meter/d_lyt_meter.h20
-rw-r--r--include/d/lyt/meter/d_lyt_meter_ganbari_gauge.h13
-rw-r--r--include/d/t/d_t_clef_game.h17
-rw-r--r--include/m/m2d.h4
-rw-r--r--include/toBeSorted/misc_actor.h47
-rw-r--r--src/d/d_message.cpp4
-rw-r--r--src/d/lyt/d_lyt_force_line.cpp2
-rw-r--r--src/d/lyt/d_lyt_suiryu_score.cpp724
-rw-r--r--src/d/lyt/meter/d_lyt_meter.cpp62
-rw-r--r--src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp4
17 files changed, 1156 insertions, 197 deletions
diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt
index 02c56d5e..bcc5edfa 100644
--- a/config/SOUE01/splits.txt
+++ b/config/SOUE01/splits.txt
@@ -1637,19 +1637,21 @@ d/lyt/d_lyt_mini_game.cpp:
.sbss start:0x80575970 end:0x80575990
.sdata2 start:0x8057C700 end:0x8057C760
-d/lyt/d_lyt_meter_suiryu_score.cpp:
+d/lyt/d_lyt_suiryu_score.cpp:
.text start:0x802969E0 end:0x8029C2C8 align:16
.ctors start:0x804DB874 end:0x804DB878
.rodata start:0x804EEB68 end:0x804EEF98
- .data start:0x80539B68 end:0x8053AAC8
+ .data start:0x80539B68 end:0x8053AAD8
+ .sdata start:0x80573BB0 end:0x80573BC8
.sbss start:0x80575990 end:0x80575998
+ .sdata2 start:0x8057C760 end:0x8057C788
.bss start:0x805B61C0 end:0x805B63C0
d/lyt/d_lyt_meter_suiryu_score_comp.cpp:
.text start:0x8029C2D0 end:0x8029F278 align:16
.ctors start:0x804DB878 end:0x804DB87C
.rodata start:0x804EEF98 end:0x804EF100
- .data start:0x8053AAC8 end:0x8053B968
+ .data start:0x8053AAD8 end:0x8053B968
.sbss start:0x80575998 end:0x805759A0
.bss start:0x805B63C0 end:0x805B6640
diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt
index e86041fb..96693fac 100644
--- a/config/SOUE01/symbols.txt
+++ b/config/SOUE01/symbols.txt
@@ -4498,7 +4498,7 @@ build__16dLytMeterParts_cFl = .text:0x800C9ED0; // type:function size:0x24
execute__16dLytMeterParts_cFv = .text:0x800C9F00; // type:function size:0x10
executeState__85sStateMgr_c<16dLytMeterParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800C9F10; // type:function size:0x10 scope:weak
isNotSilentRealmOrLoftwing__15dLytMeterMain_cFv = .text:0x800C9F20; // type:function size:0x44
-fn_800C9F70__15dLytMeterMain_cFv = .text:0x800C9F70; // type:function size:0x70
+shouldHideLytClef__15dLytMeterMain_cFv = .text:0x800C9F70; // type:function size:0x70
fn_800C9FE0__15dLytMeterMain_cFv = .text:0x800C9FE0; // type:function size:0x60
isPopupOpen__15dLytMeterMain_cFv = .text:0x800CA040; // type:function size:0x60
setUiMode__15dLytMeterMain_cCFUs = .text:0x800CA0A0; // type:function size:0x1C
@@ -4751,7 +4751,7 @@ fn_800D5590__15dLytMeterMain_cFv = .text:0x800D5590; // type:function size:0x98
fn_800D5630__15dLytMeterMain_cFv = .text:0x800D5630; // type:function size:0x18
isInModeMap__15dLytMeterMain_cFv = .text:0x800D5650; // type:function size:0x24
isInModePause__15dLytMeterMain_cFv = .text:0x800D5680; // type:function size:0x28
-fn_800D56B0__15dLytMeterMain_cFv = .text:0x800D56B0; // type:function size:0xFC
+shouldBeHiddenGeneral__15dLytMeterMain_cFv = .text:0x800D56B0; // type:function size:0xFC
checkPaneVisibility__15dLytMeterMain_cFv = .text:0x800D57B0; // type:function size:0x1A58
execute__15dLytMeterMain_cFv = .text:0x800D7210; // type:function size:0x92C
fn_800D7B40__15dLytMsgWindow_cFv = .text:0x800D7B40; // type:function size:0xC scope:weak
@@ -15486,139 +15486,139 @@ isLoading__14dLytMiniGame_cCFPCc = .text:0x802966B0; // type:function size:0x30
attachLoadedData__14dLytMiniGame_cFPCcRQ23d2d10ResAccIf_c = .text:0x802966E0; // type:function size:0x40
unloadData__14dLytMiniGame_cFPCc = .text:0x80296720; // type:function size:0x4C
__dt__14dLytMiniGame_cFv = .text:0x80296770; // type:function size:0x270
-LytMeterSuiryuScoreBase__stateNoneEnter = .text:0x802969E0; // type:function size:0x4
-LytMeterSuiryuScoreBase__stateNoneUpdate = .text:0x802969F0; // type:function size:0x4
-LytMeterSuiryuScoreBase__stateNoneLeave = .text:0x80296A00; // type:function size:0x4
-LytMeterSuiryuScoreBase__stateInEnter = .text:0x80296A10; // type:function size:0x4
-LytMeterSuiryuScoreBase__stateInUpdate = .text:0x80296A20; // type:function size:0x4
-LytMeterSuiryuScoreBase__stateInLeave = .text:0x80296A30; // type:function size:0x4
-LytMeterSuiryuScoreBase__stateWaitEnter = .text:0x80296A40; // type:function size:0x4
-LytMeterSuiryuScoreBase__stateWaitUpdate = .text:0x80296A50; // type:function size:0x56C
-LytMeterSuiryuScoreBase__stateWaitLeave = .text:0x80296FC0; // type:function size:0x4
-LytMeterSuiryuScoreBase__stateOutEnter = .text:0x80296FD0; // type:function size:0x4
-LytMeterSuiryuScoreBase__stateOutUpdate = .text:0x80296FE0; // type:function size:0x4
-LytMeterSuiryuScoreBase__stateOutLeave = .text:0x80296FF0; // type:function size:0x4
-fn_80297000 = .text:0x80297000; // type:function size:0x174
-fn_80297180 = .text:0x80297180; // type:function size:0x10
-fn_80297190 = .text:0x80297190; // type:function size:0x58
-fn_802971F0 = .text:0x802971F0; // type:function size:0x144
-fn_80297340 = .text:0x80297340; // type:function size:0x10
-fn_80297350 = .text:0x80297350; // type:function size:0x28
-fn_80297380 = .text:0x80297380; // type:function size:0x2D8
-fn_80297660 = .text:0x80297660; // type:function size:0xBC
-fn_80297720 = .text:0x80297720; // type:function size:0xA8
-fn_802977D0 = .text:0x802977D0; // type:function size:0x84
-fn_80297860 = .text:0x80297860; // type:function size:0x84
+initializeState_None__26dLytMeterSuiryuScoreBase_cFv = .text:0x802969E0; // type:function size:0x4
+executeState_None__26dLytMeterSuiryuScoreBase_cFv = .text:0x802969F0; // type:function size:0x4
+finalizeState_None__26dLytMeterSuiryuScoreBase_cFv = .text:0x80296A00; // type:function size:0x4
+initializeState_In__26dLytMeterSuiryuScoreBase_cFv = .text:0x80296A10; // type:function size:0x4
+executeState_In__26dLytMeterSuiryuScoreBase_cFv = .text:0x80296A20; // type:function size:0x4
+finalizeState_In__26dLytMeterSuiryuScoreBase_cFv = .text:0x80296A30; // type:function size:0x4
+initializeState_Wait__26dLytMeterSuiryuScoreBase_cFv = .text:0x80296A40; // type:function size:0x4
+executeState_Wait__26dLytMeterSuiryuScoreBase_cFv = .text:0x80296A50; // type:function size:0x56C
+finalizeState_Wait__26dLytMeterSuiryuScoreBase_cFv = .text:0x80296FC0; // type:function size:0x4
+initializeState_Out__26dLytMeterSuiryuScoreBase_cFv = .text:0x80296FD0; // type:function size:0x4
+executeState_Out__26dLytMeterSuiryuScoreBase_cFv = .text:0x80296FE0; // type:function size:0x4
+finalizeState_Out__26dLytMeterSuiryuScoreBase_cFv = .text:0x80296FF0; // type:function size:0x4
+build__26dLytMeterSuiryuScoreBase_cFPQ23d2d10ResAccIf_c = .text:0x80297000; // type:function size:0x174
+changeState__95sStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x80297180; // type:function size:0x10
+remove__26dLytMeterSuiryuScoreBase_cFv = .text:0x80297190; // type:function size:0x58
+execute__26dLytMeterSuiryuScoreBase_cFv = .text:0x802971F0; // type:function size:0x144
+executeState__95sStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80297340; // type:function size:0x10
+draw__26dLytMeterSuiryuScoreBase_cFv = .text:0x80297350; // type:function size:0x28
+initAnm__26dLytMeterSuiryuScoreBase_cFv = .text:0x80297380; // type:function size:0x2D8
+startIn__26dLytMeterSuiryuScoreBase_cFv = .text:0x80297660; // type:function size:0xBC
+startOut__26dLytMeterSuiryuScoreBase_cFv = .text:0x80297720; // type:function size:0xA8
+setColor0__26dLytMeterSuiryuScoreBase_cFl = .text:0x802977D0; // type:function size:0x84
+setColor1__26dLytMeterSuiryuScoreBase_cFl = .text:0x80297860; // type:function size:0x84
fn_802978F0 = .text:0x802978F0; // type:function size:0x1EC
fn_80297AE0 = .text:0x80297AE0; // type:function size:0x54
fn_80297B40 = .text:0x80297B40; // type:function size:0x54
fn_80297BA0 = .text:0x80297BA0; // type:function size:0xD4
fn_80297C80 = .text:0x80297C80; // type:function size:0xC4
-fn_80297D50 = .text:0x80297D50; // type:function size:0x60
-fn_80297DB0 = .text:0x80297DB0; // type:function size:0x60
+alphaBackwards__26dLytMeterSuiryuScoreBase_cFlf = .text:0x80297D50; // type:function size:0x60
+alphaForwards__26dLytMeterSuiryuScoreBase_cFlf = .text:0x80297DB0; // type:function size:0x60
fn_80297E10 = .text:0x80297E10; // type:function size:0x84
fn_80297EA0 = .text:0x80297EA0; // type:function size:0x140
fn_80297FE0 = .text:0x80297FE0; // type:function size:0x61C
fn_80298600 = .text:0x80298600; // type:function size:0x50C
-fn_80298B10 = .text:0x80298B10; // type:function size:0x64
+stopMove__26dLytMeterSuiryuScoreBase_cFv = .text:0x80298B10; // type:function size:0x64
fn_80298B80 = .text:0x80298B80; // type:function size:0x248
-dLytMeterClefMain__stateNoneEnter = .text:0x80298DD0; // type:function size:0x4
-dLytMeterClefMain__stateNoneUpdate = .text:0x80298DE0; // type:function size:0x4
-dLytMeterClefMain__stateNoneLeave = .text:0x80298DF0; // type:function size:0x4
-dLytMeterClefMain__stateInEnter = .text:0x80298E00; // type:function size:0x4
-dLytMeterClefMain__stateInUpdate = .text:0x80298E10; // type:function size:0x4
-dLytMeterClefMain__stateInLeave = .text:0x80298E20; // type:function size:0x4
-dLytMeterClefMain__stateWaitEnter = .text:0x80298E30; // type:function size:0x4
-dLytMeterClefMain__stateWaitUpdate = .text:0x80298E40; // type:function size:0xA74
-dLytMeterClefMain__stateWaitLeave = .text:0x802998C0; // type:function size:0x4
-dLytMeterClefMain__stateOutEnter = .text:0x802998D0; // type:function size:0x4
-dLytMeterClefMain__stateOutUpdate = .text:0x802998E0; // type:function size:0x4
-dLytMeterClefMain__stateOutLeave = .text:0x802998F0; // type:function size:0x4
-fn_80299900 = .text:0x80299900; // type:function size:0x80
-fn_80299980 = .text:0x80299980; // type:function size:0x10
-fn_80299990 = .text:0x80299990; // type:function size:0x6C
-fn_80299A00 = .text:0x80299A00; // type:function size:0x1B8
-fn_80299BC0 = .text:0x80299BC0; // type:function size:0x10
-fn_80299BD0 = .text:0x80299BD0; // type:function size:0x5C
-fn_80299C30 = .text:0x80299C30; // type:function size:0x14C
-fn_80299D80 = .text:0x80299D80; // type:function size:0x10
-fn_80299D90 = .text:0x80299D90; // type:function size:0x5C
-fn_80299DF0 = .text:0x80299DF0; // type:function size:0x34
-fn_80299E30 = .text:0x80299E30; // type:function size:0x220
-fn_8029A050 = .text:0x8029A050; // type:function size:0x1A4
-fn_8029A200 = .text:0x8029A200; // type:function size:0x5C
-fn_8029A260 = .text:0x8029A260; // type:function size:0x60
-fn_8029A2C0 = .text:0x8029A2C0; // type:function size:0xE8
-fn_8029A3B0 = .text:0x8029A3B0; // type:function size:0x8C
-fn_8029A440 = .text:0x8029A440; // type:function size:0x238
-LytSuiryuScore__ctor = .text:0x8029A680; // type:function size:0x1DC
-fn_8029A860 = .text:0x8029A860; // type:function size:0x58
-fn_8029A8C0 = .text:0x8029A8C0; // type:function size:0x6C
-fn_8029A930 = .text:0x8029A930; // type:function size:0xA0
-fn_8029A9D0 = .text:0x8029A9D0; // type:function size:0xA4
-fn_8029AA80 = .text:0x8029AA80; // type:function size:0x58
-fn_8029AAE0 = .text:0x8029AAE0; // type:function size:0x6C
-fn_8029AB50 = .text:0x8029AB50; // type:function size:0xA0
-fn_8029ABF0 = .text:0x8029ABF0; // type:function size:0xA4
-fn_8029ACA0 = .text:0x8029ACA0; // type:function size:0xD8
-fn_8029AD80 = .text:0x8029AD80; // type:function size:0xC0
-fn_8029AE40 = .text:0x8029AE40; // type:function size:0x58
-fn_8029AEA0 = .text:0x8029AEA0; // type:function size:0x6C
-fn_8029AF10 = .text:0x8029AF10; // type:function size:0xA0
-fn_8029AFB0 = .text:0x8029AFB0; // type:function size:0xA4
-fn_8029B060 = .text:0x8029B060; // type:function size:0xD8
-fn_8029B140 = .text:0x8029B140; // type:function size:0xDC
-fn_8029B220 = .text:0x8029B220; // type:function size:0x14C
-fn_8029B370 = .text:0x8029B370; // type:function size:0x58
-fn_8029B3D0 = .text:0x8029B3D0; // type:function size:0x30
-fn_8029B400 = .text:0x8029B400; // type:function size:0x28
-fn_8029B430 = .text:0x8029B430; // type:function size:0x28
-fn_8029B460 = .text:0x8029B460; // type:function size:0x184
-fn_8029B5F0 = .text:0x8029B5F0; // type:function size:0x10
-fn_8029B600 = .text:0x8029B600; // type:function size:0x60
-fn_8029B660 = .text:0x8029B660; // type:function size:0xC
-fn_8029B670 = .text:0x8029B670; // type:function size:0x60
-fn_8029B6D0 = .text:0x8029B6D0; // type:function size:0xC
-fn_8029B6E0 = .text:0x8029B6E0; // type:function size:0x60
-fn_8029B740 = .text:0x8029B740; // type:function size:0xC
-fn_8029B750 = .text:0x8029B750; // type:function size:0x1C
-fn_8029B770 = .text:0x8029B770; // type:function size:0x1C
-fn_8029B790 = .text:0x8029B790; // type:function size:0x1C
-fn_8029B7B0 = .text:0x8029B7B0; // type:function size:0x1C
-fn_8029B7D0 = .text:0x8029B7D0; // type:function size:0x1C
-fn_8029B7F0 = .text:0x8029B7F0; // type:function size:0x1C
-fn_8029B810 = .text:0x8029B810; // type:function size:0x1C
-fn_8029B830 = .text:0x8029B830; // type:function size:0x1C
-fn_8029B850 = .text:0x8029B850; // type:function size:0x1C
-fn_8029B870 = .text:0x8029B870; // type:function size:0x10
-fn_8029B880 = .text:0x8029B880; // type:function size:0x10
-fn_8029B890 = .text:0x8029B890; // type:function size:0x10
-fn_8029B8A0 = .text:0x8029B8A0; // type:function size:0x10
-fn_8029B8B0 = .text:0x8029B8B0; // type:function size:0x10
-fn_8029B8C0 = .text:0x8029B8C0; // type:function size:0x10
-fn_8029B8D0 = .text:0x8029B8D0; // type:function size:0x10
-fn_8029B8E0 = .text:0x8029B8E0; // type:function size:0x10
-fn_8029B8F0 = .text:0x8029B8F0; // type:function size:0x10
-fn_8029B900 = .text:0x8029B900; // type:function size:0x10
-fn_8029B910 = .text:0x8029B910; // type:function size:0x10
-fn_8029B920 = .text:0x8029B920; // type:function size:0x10
-fn_8029B930 = .text:0x8029B930; // type:function size:0x10
-fn_8029B940 = .text:0x8029B940; // type:function size:0x10
-fn_8029B950 = .text:0x8029B950; // type:function size:0x10
-fn_8029B960 = .text:0x8029B960; // type:function size:0x10
-fn_8029B970 = .text:0x8029B970; // type:function size:0x10
-fn_8029B980 = .text:0x8029B980; // type:function size:0x10
-fn_8029B990 = .text:0x8029B990; // type:function size:0x30
-fn_8029B9C0 = .text:0x8029B9C0; // type:function size:0x30
-fn_8029B9F0 = .text:0x8029B9F0; // type:function size:0x30
-fn_8029BA20 = .text:0x8029BA20; // type:function size:0x30
-fn_8029BA50 = .text:0x8029BA50; // type:function size:0x30
-fn_8029BA80 = .text:0x8029BA80; // type:function size:0x30
-LytTadtonesBase__initStates = .text:0x8029BAB0; // type:function size:0x634
-LytMeterSuiryuScoreBase__dtor = .text:0x8029C0F0; // type:function size:0x58
-dLytMeterClefMain__dtor = .text:0x8029C150; // type:function size:0x58
-fn_8029C1B0 = .text:0x8029C1B0; // type:function size:0x88
-fn_8029C240 = .text:0x8029C240; // type:function size:0x88
+initializeState_None__19dLytMeterClefMain_cFv = .text:0x80298DD0; // type:function size:0x4
+executeState_None__19dLytMeterClefMain_cFv = .text:0x80298DE0; // type:function size:0x4
+finalizeState_None__19dLytMeterClefMain_cFv = .text:0x80298DF0; // type:function size:0x4
+initializeState_In__19dLytMeterClefMain_cFv = .text:0x80298E00; // type:function size:0x4
+executeState_In__19dLytMeterClefMain_cFv = .text:0x80298E10; // type:function size:0x4
+finalizeState_In__19dLytMeterClefMain_cFv = .text:0x80298E20; // type:function size:0x4
+initializeState_Wait__19dLytMeterClefMain_cFv = .text:0x80298E30; // type:function size:0x4
+executeState_Wait__19dLytMeterClefMain_cFv = .text:0x80298E40; // type:function size:0xA74
+finalizeState_Wait__19dLytMeterClefMain_cFv = .text:0x802998C0; // type:function size:0x4
+initializeState_Out__19dLytMeterClefMain_cFv = .text:0x802998D0; // type:function size:0x4
+executeState_Out__19dLytMeterClefMain_cFv = .text:0x802998E0; // type:function size:0x4
+finalizeState_Out__19dLytMeterClefMain_cFv = .text:0x802998F0; // type:function size:0x4
+startIn__19dLytMeterClefMain_cFv = .text:0x80299900; // type:function size:0x80
+getStateID__88sStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80299980; // type:function size:0x10
+startOut__19dLytMeterClefMain_cFv = .text:0x80299990; // type:function size:0x6C
+build__19dLytMeterClefMain_cFPQ23d2d10ResAccIf_c = .text:0x80299A00; // type:function size:0x1B8
+changeState__88sStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x80299BC0; // type:function size:0x10
+remove__19dLytMeterClefMain_cFv = .text:0x80299BD0; // type:function size:0x5C
+execute__19dLytMeterClefMain_cFv = .text:0x80299C30; // type:function size:0x14C
+executeState__88sStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80299D80; // type:function size:0x10
+draw__19dLytMeterClefMain_cFv = .text:0x80299D90; // type:function size:0x5C
+fn_80299DF0__19dLytMeterClefMain_cFv = .text:0x80299DF0; // type:function size:0x34
+fn_80299E30__19dLytMeterClefMain_cFv = .text:0x80299E30; // type:function size:0x220
+fn_8029A050__19dLytMeterClefMain_cFv = .text:0x8029A050; // type:function size:0x1A4
+fn_8029A200__19dLytMeterClefMain_cFv = .text:0x8029A200; // type:function size:0x5C
+fn_8029A260__19dLytMeterClefMain_cFv = .text:0x8029A260; // type:function size:0x60
+fn_8029A2C0__19dLytMeterClefMain_cFv = .text:0x8029A2C0; // type:function size:0xE8
+fn_8029A3B0__19dLytMeterClefMain_cFv = .text:0x8029A3B0; // type:function size:0x8C
+fn_8029A440__19dLytMeterClefMain_cFv = .text:0x8029A440; // type:function size:0x238
+dLytSuiryuScore_c_classInit__Fv = .text:0x8029A680; // type:function size:0x1DC
+__dt__32sFState_c<19dLytMeterClefMain_c>Fv = .text:0x8029A860; // type:function size:0x58
+__dt__35sFStateFct_c<19dLytMeterClefMain_c>Fv = .text:0x8029A8C0; // type:function size:0x6C
+__dt__88sStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029A930; // type:function size:0xA0
+__dt__58sFStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c>Fv = .text:0x8029A9D0; // type:function size:0xA4
+__dt__39sFState_c<26dLytMeterSuiryuScoreBase_c>Fv = .text:0x8029AA80; // type:function size:0x58
+__dt__42sFStateFct_c<26dLytMeterSuiryuScoreBase_c>Fv = .text:0x8029AAE0; // type:function size:0x6C
+__dt__95sStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029AB50; // type:function size:0xA0
+__dt__65sFStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c>Fv = .text:0x8029ABF0; // type:function size:0xA4
+__dt__26dLytMeterSuiryuScoreBase_cFv = .text:0x8029ACA0; // type:function size:0xD8
+__ct__11dLytNote2_cFv = .text:0x8029AD80; // type:function size:0xC0
+__dt__23sFState_c<10dLytNote_c>Fv = .text:0x8029AE40; // type:function size:0x58
+__dt__26sFStateFct_c<10dLytNote_c>Fv = .text:0x8029AEA0; // type:function size:0x6C
+__dt__79sStateMgr_c<10dLytNote_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029AF10; // type:function size:0xA0
+__dt__49sFStateMgr_c<10dLytNote_c,20sStateMethodUsr_FI_c>Fv = .text:0x8029AFB0; // type:function size:0xA4
+__dt__10dLytNote_cFv = .text:0x8029B060; // type:function size:0xD8
+__dt__11dLytNote2_cFv = .text:0x8029B140; // type:function size:0xDC
+__dt__19dLytMeterClefMain_cFv = .text:0x8029B220; // type:function size:0x14C
+create__17dLytSuiryuScore_cFv = .text:0x8029B370; // type:function size:0x58
+doDelete__17dLytSuiryuScore_cFv = .text:0x8029B3D0; // type:function size:0x30
+execute__17dLytSuiryuScore_cFv = .text:0x8029B400; // type:function size:0x28
+draw__17dLytSuiryuScore_cFv = .text:0x8029B430; // type:function size:0x28
+__dt__17dLytSuiryuScore_cFv = .text:0x8029B460; // type:function size:0x184
+getStateID__95sStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8029B5F0; // type:function size:0x10
+build__35sFStateFct_c<19dLytMeterClefMain_c>FRC12sStateIDIf_c = .text:0x8029B600; // type:function size:0x60
+dispose__35sFStateFct_c<19dLytMeterClefMain_c>FRP10sStateIf_c = .text:0x8029B660; // type:function size:0xC
+build__42sFStateFct_c<26dLytMeterSuiryuScoreBase_c>FRC12sStateIDIf_c = .text:0x8029B670; // type:function size:0x60
+dispose__42sFStateFct_c<26dLytMeterSuiryuScoreBase_c>FRP10sStateIf_c = .text:0x8029B6D0; // type:function size:0xC
+build__26sFStateFct_c<10dLytNote_c>FRC12sStateIDIf_c = .text:0x8029B6E0; // type:function size:0x60
+dispose__26sFStateFct_c<10dLytNote_c>FRP10sStateIf_c = .text:0x8029B740; // type:function size:0xC
+initialize__32sFState_c<19dLytMeterClefMain_c>Fv = .text:0x8029B750; // type:function size:0x1C
+execute__32sFState_c<19dLytMeterClefMain_c>Fv = .text:0x8029B770; // type:function size:0x1C
+finalize__32sFState_c<19dLytMeterClefMain_c>Fv = .text:0x8029B790; // type:function size:0x1C
+initialize__39sFState_c<26dLytMeterSuiryuScoreBase_c>Fv = .text:0x8029B7B0; // type:function size:0x1C
+execute__39sFState_c<26dLytMeterSuiryuScoreBase_c>Fv = .text:0x8029B7D0; // type:function size:0x1C
+finalize__39sFState_c<26dLytMeterSuiryuScoreBase_c>Fv = .text:0x8029B7F0; // type:function size:0x1C
+initialize__23sFState_c<10dLytNote_c>Fv = .text:0x8029B810; // type:function size:0x1C
+execute__23sFState_c<10dLytNote_c>Fv = .text:0x8029B830; // type:function size:0x1C
+finalize__23sFState_c<10dLytNote_c>Fv = .text:0x8029B850; // type:function size:0x1C
+initializeState__88sStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029B870; // type:function size:0x10
+finalizeState__88sStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029B880; // type:function size:0x10
+refreshState__88sStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029B890; // type:function size:0x10
+getState__88sStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8029B8A0; // type:function size:0x10
+getNewStateID__88sStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8029B8B0; // type:function size:0x10
+getOldStateID__88sStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8029B8C0; // type:function size:0x10
+initializeState__95sStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029B8D0; // type:function size:0x10
+finalizeState__95sStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029B8E0; // type:function size:0x10
+refreshState__95sStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029B8F0; // type:function size:0x10
+getState__95sStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8029B900; // type:function size:0x10
+getNewStateID__95sStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8029B910; // type:function size:0x10
+getOldStateID__95sStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8029B920; // type:function size:0x10
+initializeState__79sStateMgr_c<10dLytNote_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029B930; // type:function size:0x10
+finalizeState__79sStateMgr_c<10dLytNote_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029B940; // type:function size:0x10
+refreshState__79sStateMgr_c<10dLytNote_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8029B950; // type:function size:0x10
+getState__79sStateMgr_c<10dLytNote_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8029B960; // type:function size:0x10
+getNewStateID__79sStateMgr_c<10dLytNote_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8029B970; // type:function size:0x10
+getOldStateID__79sStateMgr_c<10dLytNote_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8029B980; // type:function size:0x10
+finalizeState__41sFStateID_c<26dLytMeterSuiryuScoreBase_c>CFR26dLytMeterSuiryuScoreBase_c = .text:0x8029B990; // type:function size:0x30
+executeState__41sFStateID_c<26dLytMeterSuiryuScoreBase_c>CFR26dLytMeterSuiryuScoreBase_c = .text:0x8029B9C0; // type:function size:0x30
+initializeState__41sFStateID_c<26dLytMeterSuiryuScoreBase_c>CFR26dLytMeterSuiryuScoreBase_c = .text:0x8029B9F0; // type:function size:0x30
+finalizeState__34sFStateID_c<19dLytMeterClefMain_c>CFR19dLytMeterClefMain_c = .text:0x8029BA20; // type:function size:0x30
+executeState__34sFStateID_c<19dLytMeterClefMain_c>CFR19dLytMeterClefMain_c = .text:0x8029BA50; // type:function size:0x30
+initializeState__34sFStateID_c<19dLytMeterClefMain_c>CFR19dLytMeterClefMain_c = .text:0x8029BA80; // type:function size:0x30
+__sinit_\d_lyt_suiryu_score_cpp = .text:0x8029BAB0; // type:function size:0x634
+__dt__41sFStateID_c<26dLytMeterSuiryuScoreBase_c>Fv = .text:0x8029C0F0; // type:function size:0x58
+__dt__34sFStateID_c<19dLytMeterClefMain_c>Fv = .text:0x8029C150; // type:function size:0x58
+isSameName__34sFStateID_c<19dLytMeterClefMain_c>CFPCc = .text:0x8029C1B0; // type:function size:0x88
+isSameName__41sFStateID_c<26dLytMeterSuiryuScoreBase_c>CFPCc = .text:0x8029C240; // type:function size:0x88
LytNoteCompMain__stateSoundEnter = .text:0x8029C2D0; // type:function size:0xF8
LytNoteCompMain__stateSoundUpdate = .text:0x8029C3D0; // type:function size:0x98
fn_8029C470 = .text:0x8029C470; // type:function size:0x10
@@ -37076,24 +37076,24 @@ lbl_8053A444 = .data:0x8053A444; // type:object size:0x134 data:4byte
lbl_8053A578 = .data:0x8053A578; // type:object size:0xE data:string
lbl_8053A588 = .data:0x8053A588; // type:object size:0x19 data:string
g_profile_LYT_SUIRYU_SCORE = .data:0x8053A5A4; // type:object size:0xC
-lbl_8053A5B0 = .data:0x8053A5B0; // type:object size:0x4C
-lbl_8053A5FC = .data:0x8053A5FC; // type:object size:0xC
-lbl_8053A608 = .data:0x8053A608; // type:object size:0x30
-lbl_8053A638 = .data:0x8053A638; // type:object size:0x30
-lbl_8053A668 = .data:0x8053A668; // type:object size:0x18
-lbl_8053A680 = .data:0x8053A680; // type:object size:0x18
-lbl_8053A698 = .data:0x8053A698; // type:object size:0x10
-lbl_8053A6A8 = .data:0x8053A6A8; // type:object size:0x30
-lbl_8053A6D8 = .data:0x8053A6D8; // type:object size:0x30
-lbl_8053A708 = .data:0x8053A708; // type:object size:0x18
-lbl_8053A720 = .data:0x8053A720; // type:object size:0x18
-lbl_8053A738 = .data:0x8053A738; // type:object size:0x10
-lbl_8053A748 = .data:0x8053A748; // type:object size:0x30
-lbl_8053A778 = .data:0x8053A778; // type:object size:0x30
-lbl_8053A7A8 = .data:0x8053A7A8; // type:object size:0x18
-lbl_8053A7C0 = .data:0x8053A7C0; // type:object size:0x2A0
-lbl_8053AA60 = .data:0x8053AA60; // type:object size:0x34
-lbl_8053AA94 = .data:0x8053AA94; // type:object size:0x34
+__vt__17dLytSuiryuScore_c = .data:0x8053A5B0; // type:object size:0x4C
+__vt__19dLytMeterClefMain_c = .data:0x8053A5FC; // type:object size:0xC
+__vt__58sFStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c> = .data:0x8053A608; // type:object size:0x30
+__vt__88sStateMgr_c<19dLytMeterClefMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x8053A638; // type:object size:0x30
+__vt__35sFStateFct_c<19dLytMeterClefMain_c> = .data:0x8053A668; // type:object size:0x18
+__vt__32sFState_c<19dLytMeterClefMain_c> = .data:0x8053A680; // type:object size:0x18
+__vt__26dLytMeterSuiryuScoreBase_c = .data:0x8053A698; // type:object size:0x10
+__vt__65sFStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c> = .data:0x8053A6A8; // type:object size:0x30
+__vt__95sStateMgr_c<26dLytMeterSuiryuScoreBase_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x8053A6D8; // type:object size:0x30
+__vt__42sFStateFct_c<26dLytMeterSuiryuScoreBase_c> = .data:0x8053A708; // type:object size:0x18
+__vt__39sFState_c<26dLytMeterSuiryuScoreBase_c> = .data:0x8053A720; // type:object size:0x18
+__vt__10dLytNote_c = .data:0x8053A738; // type:object size:0x10
+__vt__49sFStateMgr_c<10dLytNote_c,20sStateMethodUsr_FI_c> = .data:0x8053A748; // type:object size:0x30
+__vt__79sStateMgr_c<10dLytNote_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x8053A778; // type:object size:0x30
+__vt__26sFStateFct_c<10dLytNote_c> = .data:0x8053A7A8; // type:object size:0x18
+__vt__23sFState_c<10dLytNote_c> = .data:0x8053A7C0; // type:object size:0x2A0
+__vt__34sFStateID_c<19dLytMeterClefMain_c> = .data:0x8053AA60; // type:object size:0x34
+__vt__41sFStateID_c<26dLytMeterSuiryuScoreBase_c> = .data:0x8053AA94; // type:object size:0x34
lbl_8053AAC8 = .data:0x8053AAC8; // type:object size:0xE data:string
lbl_8053AAD8 = .data:0x8053AAD8; // type:object size:0x1F data:string
lbl_8053AAF8 = .data:0x8053AAF8; // type:object size:0xB data:string
@@ -42584,7 +42584,7 @@ sInstance__19dLytMiniGameStart_c = .sbss:0x8057597C; // type:object size:0x4 dat
sInstance__19dLytMiniGameScore_c = .sbss:0x80575980; // type:object size:0x4 data:4byte
sInstance__21dLytMiniGameScoreSd_c = .sbss:0x80575984; // type:object size:0x4 data:4byte
sInstance__14dLytMiniGame_c = .sbss:0x80575988; // type:object size:0x8 data:4byte
-lbl_80575990 = .sbss:0x80575990; // type:object size:0x8 data:4byte
+sInstance__17dLytSuiryuScore_c = .sbss:0x80575990; // type:object size:0x8 data:4byte
lbl_80575998 = .sbss:0x80575998; // type:object size:0x8 data:4byte
sInstance__17dLytBossCaption_c = .sbss:0x805759A0; // type:object size:0x8 data:4byte
sInstance__17dLytDemoDowsing_c = .sbss:0x805759A8; // type:object size:0x8 data:4byte
diff --git a/configure.py b/configure.py
index 86ce4cf8..17ce1984 100644
--- a/configure.py
+++ b/configure.py
@@ -657,7 +657,7 @@ config.libs = [
Object(Matching, "d/lyt/d_lyt_force_line.cpp"),
Object(NonMatching, "d/lyt/d_lyt_enemy_icon.cpp"),
Object(NonMatching, "d/lyt/d_lyt_mini_game.cpp"),
- Object(NonMatching, "d/lyt/d_lyt_meter_suiryu_score.cpp"),
+ Object(NonMatching, "d/lyt/d_lyt_suiryu_score.cpp"),
Object(NonMatching, "d/lyt/d_lyt_meter_suiryu_score_comp.cpp"),
Object(NonMatching, "d/lyt/d_lyt_boss_caption.cpp"),
Object(NonMatching, "d/lyt/d_lyt_demo_dowsing.cpp"),
diff --git a/include/d/flag/storyflag_map.h b/include/d/flag/storyflag_map.h
index 9f82fc70..4feeed1f 100644
--- a/include/d/flag/storyflag_map.h
+++ b/include/d/flag/storyflag_map.h
@@ -427,7 +427,7 @@ enum StoryFlags_e {
/** [Music Scroll for Tadtones (sets before the collecting, unsets when collecting is done)]
* Story Flag #82 (0x0052) - JP 805ACD6B 0x08 / US 805A9AEB 0x08
*/
- STORYFLAG_82,
+ STORYFLAG_HAS_TADTONE_SCROLL,
/** [Ghirahim 1 defeated (Skyview Spring layer 1 / Skyview Boss Room layer 1)]
* Story Flag #83 (0x0053) - JP 805ACD69 0x80 / US 805A9AE9 0x80
diff --git a/include/d/lyt/d2d.h b/include/d/lyt/d2d.h
index d650ee9e..fcf416ef 100644
--- a/include/d/lyt/d2d.h
+++ b/include/d/lyt/d2d.h
@@ -245,6 +245,10 @@ struct AnmGroupBase_c {
return mpFrameCtrl->isEndReached();
}
+ inline bool isStartReached() const {
+ return mpFrameCtrl->isStartReached();
+ }
+
inline void setRate(f32 rate) {
mpFrameCtrl->setRate(rate);
}
diff --git a/include/d/lyt/d_lyt_note.h b/include/d/lyt/d_lyt_note.h
index 1e437031..138f6254 100644
--- a/include/d/lyt/d_lyt_note.h
+++ b/include/d/lyt/d_lyt_note.h
@@ -20,6 +20,10 @@ public:
f32 getField0x260() const;
void setFrame(f32);
+ bool isStateWait() const {
+ return mStateMgr.isState(StateID_Wait);
+ }
+
private:
STATE_FUNC_DECLARE(dLytNote_c, Wait);
STATE_FUNC_DECLARE(dLytNote_c, In);
diff --git a/include/d/lyt/d_lyt_suiryu_score.h b/include/d/lyt/d_lyt_suiryu_score.h
new file mode 100644
index 00000000..758c541d
--- /dev/null
+++ b/include/d/lyt/d_lyt_suiryu_score.h
@@ -0,0 +1,148 @@
+#ifndef D_LYT_SUIRYU_SCORE_H
+#define D_LYT_SUIRYU_SCORE_H
+
+#include "d/d_base.h"
+#include "d/lyt/d2d.h"
+#include "d/lyt/d_lyt_note.h"
+#include "m/m_vec.h"
+#include "nw4r/lyt/lyt_pane.h"
+#include "s/s_State.hpp"
+
+struct dLytNote2_c {
+ /* 0x000 */ dLytNote_c mNote;
+ /* 0x278 */ UNKWORD field_0x278;
+};
+
+class dLytMeterSuiryuScoreBase_c {
+public:
+ dLytMeterSuiryuScoreBase_c()
+ : mStateMgr(*this), field_0x2250(0), field_0x2262(0), field_0x2263(0), field_0x2264(0) {}
+ virtual ~dLytMeterSuiryuScoreBase_c() {}
+
+ bool build(d2d::ResAccIf_c *resAcc);
+ bool remove();
+ bool execute();
+ bool draw();
+
+ void startIn();
+ void startOut();
+ void setColor0(s32 idx);
+ void setColor1(s32 idx);
+ void alphaForwards(s32 idx, f32 rate);
+ void alphaBackwards(s32 idx, f32 rate);
+ void stopMove();
+
+ void fn_802978F0(u8);
+
+ nw4r::lyt::Pane *getInOutAllPane() const {
+ return mLyt.findPane("N_inOutAll_00");
+ }
+
+private:
+ STATE_FUNC_DECLARE(dLytMeterSuiryuScoreBase_c, None);
+ STATE_FUNC_DECLARE(dLytMeterSuiryuScoreBase_c, In);
+ STATE_FUNC_DECLARE(dLytMeterSuiryuScoreBase_c, Wait);
+ STATE_FUNC_DECLARE(dLytMeterSuiryuScoreBase_c, Out);
+
+ void initAnm();
+ bool fn_80298600();
+ void fn_80298B10();
+
+ /* 0x0004 */ UI_STATE_MGR_DECLARE(dLytMeterSuiryuScoreBase_c);
+ /* 0x0040 */ d2d::LytBase_c mLyt;
+ /* 0x00D0 */ d2d::AnmGroup_c mAnm[129];
+ /* 0x2110 */ nw4r::lyt::Pane *mpPanes[77];
+ /* 0x2244 */ nw4r::lyt::Pane *mpPaneInOutAll;
+ /* 0x2248 */ mVec2_c mMainTranslate;
+
+ /* 0x2250 */ u8 field_0x2250;
+ /* 0x2251 */ u8 field_0x2251[17];
+
+ /* 0x2262 */ u8 field_0x2262;
+ /* 0x2263 */ u8 field_0x2263;
+ /* 0x2264 */ UNKWORD field_0x2264;
+};
+
+class dLytMeterClefMain_c {
+private:
+ static const s32 NUM_TADTONE_GROUPS = 17;
+
+public:
+ dLytMeterClefMain_c()
+ : mStateMgr(*this),
+ field_0x0040(0),
+ field_0x5E4C(0),
+ field_0x5E4D(0),
+ field_0x5F35(0),
+ field_0x5F36(0),
+ field_0x5F38(0),
+ field_0x5F3C(0),
+ field_0x5F40(0) {}
+ virtual ~dLytMeterClefMain_c() {}
+
+ bool build(d2d::ResAccIf_c *resAcc);
+ bool remove();
+ bool execute();
+ bool draw();
+
+private:
+ void startIn();
+ void startOut();
+ void fn_80299DF0();
+ void fn_80299E30();
+ void fn_8029A050();
+ void fn_8029A200();
+ void fn_8029A260();
+ void fn_8029A2C0();
+ void fn_8029A3B0();
+ void fn_8029A440();
+
+ STATE_FUNC_DECLARE(dLytMeterClefMain_c, None);
+ STATE_FUNC_DECLARE(dLytMeterClefMain_c, In);
+ STATE_FUNC_DECLARE(dLytMeterClefMain_c, Wait);
+ STATE_FUNC_DECLARE(dLytMeterClefMain_c, Out);
+
+ /* 0x0004 */ UI_STATE_MGR_DECLARE(dLytMeterClefMain_c);
+ /* 0x0040 */ u8 field_0x0040;
+ /* 0x0044 */ dLytMeterSuiryuScoreBase_c mBase;
+ /* 0x22AC */ dLytNote2_c mNotes[24];
+ /* 0x5E4C */ u8 field_0x5E4C;
+ /* 0x5E4D */ u8 field_0x5E4D;
+
+ /* 0x5E4E */ u8 field_0x5E4E[NUM_TADTONE_GROUPS];
+ /* 0x5E5F */ u8 field_0x5E5F[NUM_TADTONE_GROUPS];
+ /* 0x5E70 */ u8 field_0x5E70[NUM_TADTONE_GROUPS];
+ /* 0x5E81 */ u8 field_0x5E81[NUM_TADTONE_GROUPS];
+ /* 0x5E92 */ u8 field_0x5E92[NUM_TADTONE_GROUPS];
+ /* 0x5EA4 */ UNKWORD field_0x5EA4[NUM_TADTONE_GROUPS];
+ /* 0x5EE8 */ u8 field_0x5EE8[77];
+
+ /* 0x5F35 */ u8 field_0x5F35;
+ /* 0x5F36 */ u8 field_0x5F36;
+
+ /* 0x5F38 */ UNKWORD field_0x5F38;
+ /* 0x5F3C */ UNKWORD field_0x5F3C;
+ /* 0x5F40 */ UNKWORD field_0x5F40;
+};
+
+// Alternative name ideas: dLytMeterClef_c, dLytMeterSuiryuScore_c
+// The profile name is LYT_SUIRYU_SCORE so I went with that class name,
+// but the fact that it contains a dLytMeterClefMain_c (known name) is suspicious...
+class dLytSuiryuScore_c : public dBase_c {
+public:
+ dLytSuiryuScore_c() {}
+ virtual ~dLytSuiryuScore_c() {}
+
+ virtual int create() override;
+ virtual int doDelete() override;
+ virtual int execute() override;
+ virtual int draw() override;
+
+private:
+ static dLytSuiryuScore_c *sInstance;
+
+ /* 0x0060 */ d2d::ResAccIf_c mResAcc;
+ /* 0x03D8 */ dLytMeterClefMain_c mMain;
+};
+
+#endif
diff --git a/include/d/lyt/meter/d_lyt_meter.h b/include/d/lyt/meter/d_lyt_meter.h
index 972144d7..d5eebc37 100644
--- a/include/d/lyt/meter/d_lyt_meter.h
+++ b/include/d/lyt/meter/d_lyt_meter.h
@@ -91,7 +91,7 @@ public:
bool isNotSilentRealmOrLoftwing();
- bool fn_800C9F70();
+ bool shouldHideLytClef();
bool fn_800C9FE0();
bool isPopupOpen();
@@ -102,7 +102,7 @@ public:
void fn_800D5630();
bool isInModeMap();
bool isInModePause();
- bool fn_800D56B0();
+ bool shouldBeHiddenGeneral();
void checkPaneVisibility();
bool execute();
@@ -198,7 +198,7 @@ private:
/* 0x13772 */ bool field_0x13772;
/* 0x13773 */ bool field_0x13773;
/* 0x13774 */ bool mHelpOpen;
- /* 0x13775 */ bool field_0x13775;
+ /* 0x13775 */ bool mIsCollectingTadtoneScroll;
/* 0x13776 */ bool mTimerVisible;
/* 0x13777 */ bool mBirdGaugeVisible;
/* 0x13778 */ bool mSkyGaugeVisible;
@@ -310,8 +310,8 @@ public:
mMain.mHelpOpen = val;
}
- void setMeterField_0x13775(bool val) {
- mMain.field_0x13775 = val;
+ void setIsCollectingTadtoneScroll(bool val) {
+ mMain.mIsCollectingTadtoneScroll = val;
}
bool getMeterField_0x1377F() const {
@@ -334,6 +334,12 @@ public:
mFlags = 0xFFFFFFFF;
}
+ static void setGanbariClefRelated(bool arg) {
+ if (sInstance != nullptr) {
+ sInstance->mMain.mGanbariGauge.setClefRelated(arg);
+ }
+ }
+
static dLytMeterCrossBtn_c::CrossIcon_e getCrossIconDown() {
if (sInstance != nullptr) {
return sInstance->mMain.mCrossBtn.getIconDown();
@@ -452,9 +458,9 @@ public:
}
}
- static bool getfn_800C9F70() {
+ static bool shouldHideLytClef() {
if (sInstance != nullptr) {
- return sInstance->mMain.fn_800C9F70();
+ return sInstance->mMain.shouldHideLytClef();
} else {
return false;
}
diff --git a/include/d/lyt/meter/d_lyt_meter_ganbari_gauge.h b/include/d/lyt/meter/d_lyt_meter_ganbari_gauge.h
index 2356a36f..4140f60d 100644
--- a/include/d/lyt/meter/d_lyt_meter_ganbari_gauge.h
+++ b/include/d/lyt/meter/d_lyt_meter_ganbari_gauge.h
@@ -35,6 +35,10 @@ public:
mStaminaPercent = value;
}
+ void setClefRelated(bool v) {
+ mClefRelated = v;
+ }
+
void setField_0x539(bool v) {
field_0x539 = v;
}
@@ -87,12 +91,11 @@ private:
/* 0x548 */ s32 field_0x548;
/* 0x54C */ f32 field_0x54C;
/* 0x550 */ f32 field_0x550;
-
/* 0x554 */ f32 field_0x554;
- u8 field_0x558;
- u8 field_0x559;
- bool field_0x55A;
- u8 field_0x55B;
+ /* 0x558 */ u8 field_0x558;
+ /* 0x559 */ bool mClefRelated;
+ /* 0x55A */ bool field_0x55A;
+ /* 0x55B */ u8 field_0x55B;
};
STATIC_ASSERT(sizeof(dLytMeterGanbariGauge_c) == 0x55C);
diff --git a/include/d/t/d_t_clef_game.h b/include/d/t/d_t_clef_game.h
index 2864ad10..5f95745c 100644
--- a/include/d/t/d_t_clef_game.h
+++ b/include/d/t/d_t_clef_game.h
@@ -8,7 +8,24 @@ public:
dTgClefGame_c() {}
virtual ~dTgClefGame_c() {}
+ static dTgClefGame_c *GetInstance() {
+ return sInstance;
+ }
+
+ u8 getField_0x14C(s32 idx) const {
+ return field_0x14C[idx];
+ }
+
+ u8 getField_0x15D(s32 idx) const {
+ return field_0x15D[idx];
+ }
+
private:
+ static dTgClefGame_c *sInstance;
+
+ /* 0x0FC */ u8 _0x0FC[0x14C - 0x0FC];
+ /* 0x14C */ u8 field_0x14C[17];
+ /* 0x15D */ u8 field_0x15D[17];
};
#endif
diff --git a/include/m/m2d.h b/include/m/m2d.h
index c51b47dd..5ecdab76 100644
--- a/include/m/m2d.h
+++ b/include/m/m2d.h
@@ -85,6 +85,10 @@ public:
return mCurrFrame >= actualEnd;
}
+ inline bool isStartReached() const {
+ return std::fabsf(mCurrFrame) <= EGG::Math<f32>::epsilon();
+ }
+
inline void setToEnd() {
setFrame(mEndFrame - 1.0f);
}
diff --git a/include/toBeSorted/misc_actor.h b/include/toBeSorted/misc_actor.h
index 4024e1bc..ade8210e 100644
--- a/include/toBeSorted/misc_actor.h
+++ b/include/toBeSorted/misc_actor.h
@@ -1,6 +1,10 @@
#ifndef MISC_ACTOR_H
#define MISC_ACTOR_H
+#include "common.h"
+#include "d/flag/sceneflag_manager.h"
+#include "d/t/d_t_clef_game.h"
+
// TODO - this header might be unnecessary; a lot of functions in
// the split corresponding to this header clearly are REL functions
// that were moved to the DOL because they need to be called from the DOL.
@@ -9,4 +13,47 @@
bool checkIsInSkykeepPuzzle();
void restoreSkykeepPuzzleFromGlobal();
+extern const u8 sTadtoneSceneflags[];
+extern const u8 sTadtoneGroupSizes[];
+
+inline bool isValidTadtoneGroupIndex(s32 i) {
+ return 0 <= i && i <= 17 - 1;
+}
+
+inline void unkTadtoneInline(s32 i, u8 *result) {
+ if (result != nullptr) {
+ if (isValidTadtoneGroupIndex(i)) {
+ if (SceneflagManager::sInstance->isNotTempOrZoneFlag(sTadtoneSceneflags[i])) {
+ if (SceneflagManager::sInstance->checkTempOrSceneflag(sTadtoneSceneflags[i])) {
+ *result = sTadtoneGroupSizes[i];
+ } else if (dTgClefGame_c::GetInstance() == nullptr) {
+ *result = 0;
+ } else {
+ *result = dTgClefGame_c::GetInstance()->getField_0x14C(i);
+ }
+ } else {
+ *result = sTadtoneGroupSizes[i];
+ }
+ }
+ }
+}
+
+inline void unkTadtoneInline2(s32 i, u8 *result) {
+ if (result != nullptr) {
+ if (isValidTadtoneGroupIndex(i)) {
+ *result = sTadtoneGroupSizes[i];
+ }
+ }
+}
+
+inline void unkTadtoneInline3(s32 i, u8 *result) {
+ if (result != nullptr) {
+ if (isValidTadtoneGroupIndex(i)) {
+ if (dTgClefGame_c::GetInstance() != nullptr) {
+ *result = dTgClefGame_c::GetInstance()->getField_0x15D(i);
+ }
+ }
+ }
+}
+
#endif
diff --git a/src/d/d_message.cpp b/src/d/d_message.cpp
index ee053763..a8c8c7b4 100644
--- a/src/d/d_message.cpp
+++ b/src/d/d_message.cpp
@@ -228,8 +228,8 @@ bool dFlow_c::handleEventInternal(const MsbFlowInfo *element) {
switch (element->param3) {
case EVENT_SET_STORYFLAG:
StoryflagManager::sInstance->setFlag(params1n2);
- if (params1n2 == 0x52) {
- dLytMeter_c::GetInstance()->setMeterField_0x13775(true);
+ if (params1n2 == STORYFLAG_HAS_TADTONE_SCROLL) {
+ dLytMeter_c::GetInstance()->setIsCollectingTadtoneScroll(true);
}
if (dLytMsgWindow_c::fn_800D7B40() != 50013 && dLytMsgWindow_c::fn_800D7B40() != 20061) {
if (params1n2 == 100 || params1n2 == 64 || params1n2 == 271 || params1n2 == 81 || params1n2 == 668 ||
diff --git a/src/d/lyt/d_lyt_force_line.cpp b/src/d/lyt/d_lyt_force_line.cpp
index 89fa1d3e..fdfca838 100644
--- a/src/d/lyt/d_lyt_force_line.cpp
+++ b/src/d/lyt/d_lyt_force_line.cpp
@@ -101,7 +101,7 @@ void dLytForceLineParts_c::initializeState_Move() {
void dLytForceLineParts_c::executeState_Move() {
bool isDone = false;
- if (dLytMeter_c::getfn_800C9F70()) {
+ if (dLytMeter_c::shouldHideLytClef()) {
mStateMgr.changeState(StateID_Wait);
mMoveRequest = false;
mIsDone = true;
diff --git a/src/d/lyt/d_lyt_suiryu_score.cpp b/src/d/lyt/d_lyt_suiryu_score.cpp
new file mode 100644
index 00000000..631bc262
--- /dev/null
+++ b/src/d/lyt/d_lyt_suiryu_score.cpp
@@ -0,0 +1,724 @@
+#include "d/lyt/d_lyt_suiryu_score.h"
+
+#include "common.h"
+#include "d/d_pad.h"
+#include "d/d_sc_game.h"
+#include "d/d_vec.h"
+#include "d/flag/storyflag_manager.h"
+#include "d/lyt/d2d.h"
+#include "d/lyt/d_lyt_force_line.h"
+#include "d/lyt/meter/d_lyt_meter.h"
+#include "m/m_vec.h"
+#include "toBeSorted/arc_managers/layout_arc_manager.h"
+#include "toBeSorted/misc_actor.h"
+
+STATE_DEFINE(dLytMeterSuiryuScoreBase_c, None);
+STATE_DEFINE(dLytMeterSuiryuScoreBase_c, In);
+STATE_DEFINE(dLytMeterSuiryuScoreBase_c, Wait);
+STATE_DEFINE(dLytMeterSuiryuScoreBase_c, Out);
+
+#define SUIRYU_SCORE_BASE_ANIM_IN 0
+#define SUIRYU_SCORE_BASE_ANIM_ALPHA_OFFSET 1
+#define SUIRYU_SCORE_BASE_ANIM_MOVE_1 4
+#define SUIRYU_SCORE_BASE_ANIM_MOVE_2 5
+#define SUIRYU_SCORE_BASE_ANIM_MOVE_3 6
+#define SUIRYU_SCORE_BASE_ANIM_MOVE_123 7
+#define SUIRYU_SCORE_BASE_ANIM_MOVE_ALL 8
+#define SUIRYU_SCORE_BASE_ANIM_FIX_COLOR_OFFSET 9
+#define SUIRYU_SCORE_BASE_ANIM_LOOP_OFFSET 26
+#define SUIRYU_SCORE_BASE_ANIM_FIX_OFFSET 43
+#define SUIRYU_SCORE_BASE_ANIM_LOST_LOOP_OFFSET 60
+#define SUIRYU_SCORE_BASE_ANIM_FIX_N_OFFSET 77
+#define SUIRYU_SCORE_BASE_ANIM_FIX_N_LOOP_OFFSET 94
+#define SUIRYU_SCORE_BASE_ANIM_FIX_P_OFFSET 111
+#define SUIRYU_SCORE_BASE_ANIM_OUT 128
+
+#define SUIRYU_SCORE_BASE_NUM_NOTE_ANIMS 17
+#define SUIRYU_SCORE_BASE_NUM_ALPHA_ANIMS 3
+#define SUIRYU_SCORE_BASE_NUM_ANIMS 129
+
+#define SUIRYU_SCORE_BASE_NUM_PANES 77
+
+void dLytMeterSuiryuScoreBase_c::initializeState_None() {}
+void dLytMeterSuiryuScoreBase_c::executeState_None() {}
+void dLytMeterSuiryuScoreBase_c::finalizeState_None() {}
+
+void dLytMeterSuiryuScoreBase_c::initializeState_In() {}
+void dLytMeterSuiryuScoreBase_c::executeState_In() {}
+void dLytMeterSuiryuScoreBase_c::finalizeState_In() {}
+
+void dLytMeterSuiryuScoreBase_c::initializeState_Wait() {}
+void dLytMeterSuiryuScoreBase_c::executeState_Wait() {
+ if (mAnm[SUIRYU_SCORE_BASE_ANIM_IN].isEnabled() && mAnm[SUIRYU_SCORE_BASE_ANIM_IN].isEndReached()) {
+ mAnm[SUIRYU_SCORE_BASE_ANIM_IN].setAnimEnable(false);
+ field_0x2264 = 2;
+ }
+
+ if (mAnm[SUIRYU_SCORE_BASE_ANIM_OUT].isEnabled() && mAnm[SUIRYU_SCORE_BASE_ANIM_OUT].isEndReached()) {
+ mAnm[SUIRYU_SCORE_BASE_ANIM_OUT].setAnimEnable(false);
+ field_0x2264 = 0;
+ dLytMeter_c::setGanbariClefRelated(false);
+ }
+
+ for (int i = 0; i < SUIRYU_SCORE_BASE_NUM_ALPHA_ANIMS; i++) {
+ if (mAnm[i + SUIRYU_SCORE_BASE_ANIM_ALPHA_OFFSET].isEnabled() &&
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_ALPHA_OFFSET].isStop2()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_ALPHA_OFFSET].setAnimEnable(false);
+ }
+ }
+
+ int i;
+ for (int i = 0; i < SUIRYU_SCORE_BASE_NUM_NOTE_ANIMS; i++) {
+ if (field_0x2251[i] == 0 && mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOOP_OFFSET].isEnabled()) {
+ field_0x2262 = i;
+ break;
+ }
+ }
+
+ for (int i = 0; i < SUIRYU_SCORE_BASE_NUM_NOTE_ANIMS; i++) {
+ if (mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOOP_OFFSET].isEnabled() &&
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOOP_OFFSET].isEndReached()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOOP_OFFSET].setFrame(0.0f);
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOOP_OFFSET].setAnimEnable(false);
+ }
+
+ if (mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_OFFSET].isEnabled() &&
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_OFFSET].isEndReached()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_OFFSET].setFrame(0.0f);
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_OFFSET].setAnimEnable(false);
+ }
+
+ if (mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOST_LOOP_OFFSET].isEnabled() &&
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOST_LOOP_OFFSET].isEndReached()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOST_LOOP_OFFSET].setFrame(0.0f);
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOST_LOOP_OFFSET].setAnimEnable(false);
+ }
+
+ if (field_0x2251[i] == 0 && mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOST_LOOP_OFFSET].isEnabled() &&
+ 30.0f < mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOST_LOOP_OFFSET].getFrame()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOST_LOOP_OFFSET].setFrame(0.0f);
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOST_LOOP_OFFSET].setAnimEnable(false);
+ }
+
+ if (mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_N_OFFSET].isEnabled() &&
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_N_OFFSET].isEndReached()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_N_OFFSET].setAnimEnable(false);
+ field_0x2251[i] = 3;
+ }
+
+ if (mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_P_OFFSET].isEnabled() &&
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_P_OFFSET].isEndReached()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_P_OFFSET].setAnimEnable(false);
+ field_0x2251[i] = 3;
+ }
+
+ if (mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_N_LOOP_OFFSET].isEnabled() &&
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_N_LOOP_OFFSET].isEndReached()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_N_LOOP_OFFSET].setAnimEnable(false);
+ field_0x2251[i] = 3;
+ }
+ }
+
+ for (int i = 0; i < SUIRYU_SCORE_BASE_NUM_NOTE_ANIMS; i++) {
+ if (mAnm[field_0x2262 + SUIRYU_SCORE_BASE_ANIM_LOOP_OFFSET].isStartReached() == true) {
+ if (field_0x2251[i] == 0 && !mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOOP_OFFSET].isEnabled()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOOP_OFFSET].setAnimEnable(true);
+ }
+
+ if (field_0x2251[i] == 0 && !mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_OFFSET].isEnabled()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_OFFSET].setAnimEnable(true);
+ }
+ }
+
+ if (field_0x2251[i] == 1 && !mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOST_LOOP_OFFSET].isEnabled()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_LOST_LOOP_OFFSET].setAnimEnable(true);
+ }
+
+ if (field_0x2251[i] == 2 && !mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_N_OFFSET].isEnabled()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_N_OFFSET].setAnimEnable(true);
+ }
+
+ if (field_0x2251[i] == 2 && !mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_P_OFFSET].isEnabled()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_P_OFFSET].setAnimEnable(true);
+ }
+
+ if (field_0x2251[i] == 2 && !mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_N_LOOP_OFFSET].isEnabled()) {
+ mAnm[i + SUIRYU_SCORE_BASE_ANIM_FIX_N_LOOP_OFFSET].setAnimEnable(true);
+ }
+ }
+}
+void dLytMeterSuiryuScoreBase_c::finalizeState_Wait() {}
+
+void dLytMeterSuiryuScoreBase_c::initializeState_Out() {}
+void dLytMeterSuiryuScoreBase_c::executeState_Out() {}
+void dLytMeterSuiryuScoreBase_c::finalizeState_Out() {}
+
+static const d2d::LytBrlanMapping scoreBaseBrlanMap[] = {
+ { "suiryuScoreBase_00_in.brlan", "G_inOutAll_00"},
+ { "suiryuScoreBase_00_baseAlpha.brlan", "G_baseAlpha_00"},
+ { "suiryuScoreBase_00_baseAlpha.brlan", "G_baseAlpha_01"},
+ { "suiryuScoreBase_00_baseAlpha.brlan", "G_baseAlpha_02"},
+ { "suiryuScoreBase_00_move1.brlan", "G_scroll_00"},
+ { "suiryuScoreBase_00_move2.brlan", "G_scroll_00"},
+ { "suiryuScoreBase_00_move3.brlan", "G_scroll_00"},
+ { "suiryuScoreBase_00_move123.brlan", "G_scroll_00"},
+ { "suiryuScoreBase_00_moveAll.brlan", "G_scroll_00"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_00"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_01"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_02"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_03"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_04"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_05"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_06"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_07"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_08"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_09"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_10"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_11"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_12"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_13"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_14"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_15"},
+ { "suiryuScoreBase_00_noteFixColor.brlan", "G_scoreFixP_16"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_00"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_01"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_02"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_03"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_04"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_05"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_06"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_07"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_08"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_09"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_10"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_11"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_12"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_13"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_14"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_15"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreLoop_16"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_00"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_01"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_02"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_03"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_04"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_05"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_06"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_07"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_08"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_09"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_10"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_11"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_12"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_13"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_14"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_15"},
+ { "suiryuScoreBase_00_noteLoop.brlan", "G_scoreFixN_16"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_00"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_01"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_02"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_03"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_04"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_05"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_06"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_07"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_08"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_09"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_10"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_11"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_12"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_13"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_14"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_15"},
+ {"suiryuScoreBase_00_noteLostLoopB.brlan", "G_scoreLoop_16"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_00"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_01"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_02"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_03"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_04"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_05"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_06"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_07"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_08"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_09"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_10"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_11"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_12"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_13"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_14"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_15"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreFixN_16"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_00"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_01"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_02"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_03"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_04"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_05"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_06"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_07"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_08"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_09"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_10"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_11"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_12"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_13"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_14"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_15"},
+ { "suiryuScoreBase_00_noteFixN.brlan", "G_scoreLoop_16"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_00"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_01"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_02"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_03"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_04"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_05"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_06"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_07"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_08"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_09"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_10"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_11"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_12"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_13"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_14"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_15"},
+ { "suiryuScoreBase_00_noteFixP.brlan", "G_scoreFixP_16"},
+ { "suiryuScoreBase_00_out.brlan", "G_inOutAll_00"},
+};
+
+static const char *scoreBasePanes[] = {
+ "N_scoreA_00", "N_scoreB_00", "N_scoreB_01", "N_scoreB_02", "N_scoreB_03", "N_scoreC_00", "N_scoreC_01",
+ "N_scoreD_00", "N_scoreD_01", "N_scoreD_02", "N_scoreD_03", "N_scoreD_04", "N_scoreD_05", "N_scoreD_06",
+ "N_scoreD_07", "N_scoreE_00", "N_scoreF_00", "N_scoreF_01", "N_scoreF_02", "N_scoreF_03", "N_scoreF_04",
+ "N_scoreF_05", "N_scoreF_06", "N_scoreF_07", "N_scoreG_00", "N_scoreH_00", "N_scoreH_01", "N_scoreH_02",
+ "N_scoreH_03", "N_scoreI_00", "N_scoreI_01", "N_scoreI_02", "N_scoreI_03", "N_scoreI_04", "N_scoreI_05",
+ "N_scoreI_06", "N_scoreI_07", "N_scoreJ_00", "N_scoreK_00", "N_scoreK_01", "N_scoreK_02", "N_scoreK_03",
+ "N_scoreL_00", "N_scoreL_01", "N_scoreL_02", "N_scoreL_03", "N_scoreL_04", "N_scoreL_05", "N_scoreL_06",
+ "N_scoreL_07", "N_scoreM_00", "N_scoreN_00", "N_scoreN_01", "N_scoreN_02", "N_scoreN_03", "N_scoreO_00",
+ "N_scoreO_01", "N_scoreP_00", "N_scoreP_01", "N_scoreP_02", "N_scoreP_03", "N_scoreQ_00", "N_scoreQ_01",
+ "N_scoreQ_02", "N_scoreQ_03", "N_scoreQ_04", "N_scoreQ_05", "N_scoreQ_06", "N_scoreQ_07", "N_scoreQ_08",
+ "N_scoreQ_09", "N_scoreQ_10", "N_scoreQ_11", "N_scoreQ_12", "N_scoreQ_13", "N_scoreQ_14", "N_scoreQ_15",
+};
+
+static const char *scoreBasePaneInOutAll = "N_inOutAll_00";
+
+bool dLytMeterSuiryuScoreBase_c::build(d2d::ResAccIf_c *resAcc) {
+ mLyt.setResAcc(resAcc);
+ mLyt.build("suiryuScoreBase_00.brlyt", nullptr);
+
+ for (int i = 0; i < SUIRYU_SCORE_BASE_NUM_ANIMS; i++) {
+ mAnm[i].init(scoreBaseBrlanMap[i].mFile, resAcc, mLyt.getLayout(), scoreBaseBrlanMap[i].mName);
+ mAnm[i].bind(false);
+ mAnm[i].setRate(1.0f);
+ mAnm[i].setAnimEnable(false);
+ }
+
+ for (int i = 0; i < SUIRYU_SCORE_BASE_NUM_PANES; i++) {
+ mpPanes[i] = mLyt.findPane(scoreBasePanes[i]);
+ }
+
+ mpPaneInOutAll = mLyt.findPane(scoreBasePaneInOutAll);
+ mMainTranslate.x = mpPaneInOutAll->GetTranslate().x;
+ mMainTranslate.y = mpPaneInOutAll->GetTranslate().y;
+
+ for (int i = SUIRYU_SCORE_BASE_ANIM_MOVE_1; i <= SUIRYU_SCORE_BASE_ANIM_MOVE_ALL; i++) {
+ mAnm[i].setAnimEnable(false);
+ }
+
+ dLytForceLine_c::initPos(&mLyt, &mAnm[SUIRYU_SCORE_BASE_ANIM_MOVE_123]);
+
+ initAnm();
+
+ mStateMgr.changeState(StateID_Wait);
+ field_0x2264 = 0;
+
+ return true;
+}
+
+bool dLytMeterSuiryuScoreBase_c::remove() {
+ for (int i = 0; i < SUIRYU_SCORE_BASE_NUM_ANIMS; i++) {
+ mAnm[i].unbind();
+ mAnm[i].remove();
+ }
+
+ return true;
+}
+
+bool dLytMeterSuiryuScoreBase_c::execute() {
+ if (fn_80298600()) {
+ fn_80298B10();
+ }
+
+ if (dScGame_c::isCurrentStage("F103") && dScGame_c::currentSpawnInfo.layer == 13) {
+ mVec2_c t(mMainTranslate.x, mMainTranslate.y + 110.0f);
+ mpPaneInOutAll->SetTranslate(vec2ToVec3XY(t));
+ } else {
+ mpPaneInOutAll->SetTranslate(vec2ToVec3XY(mMainTranslate));
+ }
+
+ mStateMgr.executeState();
+
+ for (int i = 0; i < SUIRYU_SCORE_BASE_NUM_ANIMS; i++) {
+ if (mAnm[i].isEnabled()) {
+ mAnm[i].play();
+ }
+ }
+
+ mLyt.calc();
+
+ return true;
+}
+
+bool dLytMeterSuiryuScoreBase_c::draw() {
+ mLyt.addToDrawList();
+ return true;
+}
+
+void dLytMeterSuiryuScoreBase_c::initAnm() {}
+
+void dLytMeterSuiryuScoreBase_c::startIn() {
+ if (field_0x2264 == 0) {
+ if (dScGame_c::isCurrentStage("F103") && dScGame_c::currentSpawnInfo.layer == 13) {
+ mAnm[SUIRYU_SCORE_BASE_ANIM_IN].setRate(1.0f / 3.0f);
+ } else {
+ mAnm[SUIRYU_SCORE_BASE_ANIM_IN].setRate(1.0f);
+ }
+ mAnm[SUIRYU_SCORE_BASE_ANIM_IN].setForwardOnce();
+ mAnm[SUIRYU_SCORE_BASE_ANIM_IN].setFrame(0.0f);
+ mAnm[SUIRYU_SCORE_BASE_ANIM_IN].setAnimEnable(true);
+ field_0x2264 = 1;
+ dLytMeter_c::setGanbariClefRelated(true);
+ }
+}
+
+void dLytMeterSuiryuScoreBase_c::startOut() {
+ if (field_0x2264 == 2) {
+ if (dScGame_c::isCurrentStage("F103") && dScGame_c::currentSpawnInfo.layer == 13) {
+ mAnm[SUIRYU_SCORE_BASE_ANIM_OUT].setRate(1.0f / 3.0f);
+ } else {
+ mAnm[SUIRYU_SCORE_BASE_ANIM_OUT].setRate(1.0f);
+ }
+ mAnm[SUIRYU_SCORE_BASE_ANIM_OUT].setForwardOnce();
+ mAnm[SUIRYU_SCORE_BASE_ANIM_OUT].setFrame(0.0f);
+ mAnm[SUIRYU_SCORE_BASE_ANIM_OUT].setAnimEnable(true);
+ field_0x2264 = 3;
+ }
+}
+
+void dLytMeterSuiryuScoreBase_c::setColor0(s32 idx) {
+ s32 actualIdx = idx + SUIRYU_SCORE_BASE_ANIM_FIX_COLOR_OFFSET;
+ mAnm[actualIdx].setFrame(0.0f);
+ mAnm[actualIdx].setAnimEnable(true);
+ mLyt.calc();
+ mAnm[actualIdx].setAnimEnable(false);
+}
+
+void dLytMeterSuiryuScoreBase_c::setColor1(s32 idx) {
+ s32 actualIdx = idx + SUIRYU_SCORE_BASE_ANIM_FIX_COLOR_OFFSET;
+ mAnm[actualIdx].setFrame(1.0f);
+ mAnm[actualIdx].setAnimEnable(true);
+ mLyt.calc();
+ mAnm[actualIdx].setAnimEnable(false);
+}
+
+void dLytMeterSuiryuScoreBase_c::alphaBackwards(s32 idx, f32 rate) {
+ s32 actualIdx = idx + SUIRYU_SCORE_BASE_ANIM_ALPHA_OFFSET;
+ mAnm[actualIdx].setBackwardsOnce();
+ mAnm[actualIdx].setRate(rate);
+ mAnm[actualIdx].setAnimEnable(true);
+}
+
+void dLytMeterSuiryuScoreBase_c::alphaForwards(s32 idx, f32 rate) {
+ s32 actualIdx = idx + SUIRYU_SCORE_BASE_ANIM_ALPHA_OFFSET;
+ mAnm[actualIdx].setForwardOnce();
+ mAnm[actualIdx].setRate(rate);
+ mAnm[actualIdx].setAnimEnable(true);
+}
+
+void dLytMeterSuiryuScoreBase_c::stopMove() {
+ mAnm[SUIRYU_SCORE_BASE_ANIM_MOVE_1].setAnimEnable(false);
+ mAnm[SUIRYU_SCORE_BASE_ANIM_MOVE_2].setAnimEnable(false);
+ mAnm[SUIRYU_SCORE_BASE_ANIM_MOVE_3].setAnimEnable(false);
+ mAnm[SUIRYU_SCORE_BASE_ANIM_MOVE_123].setAnimEnable(false);
+ mAnm[SUIRYU_SCORE_BASE_ANIM_MOVE_ALL].setAnimEnable(false);
+}
+
+STATE_DEFINE(dLytMeterClefMain_c, None);
+STATE_DEFINE(dLytMeterClefMain_c, In);
+STATE_DEFINE(dLytMeterClefMain_c, Wait);
+STATE_DEFINE(dLytMeterClefMain_c, Out);
+
+#define SUIRYU_SCORE_NUM_NOTES 24
+
+void dLytMeterClefMain_c::initializeState_None() {}
+void dLytMeterClefMain_c::executeState_None() {}
+void dLytMeterClefMain_c::finalizeState_None() {}
+
+void dLytMeterClefMain_c::initializeState_In() {}
+void dLytMeterClefMain_c::executeState_In() {}
+void dLytMeterClefMain_c::finalizeState_In() {}
+
+void dLytMeterClefMain_c::initializeState_Wait() {}
+void dLytMeterClefMain_c::executeState_Wait() {
+ fn_8029A200();
+ fn_8029A2C0();
+ fn_8029A260();
+ fn_8029A440();
+
+ bool b = dPad::ex_c::fn_80059100();
+ if (dScGame_c::isCurrentStage("F103") && dScGame_c::currentSpawnInfo.layer == 13) {
+ b = false;
+ field_0x5F40 = 0;
+ }
+
+ if (dLytMeter_c::GetMain()->fn_800D5380(0) || dLytMeter_c::GetInstance()->isHelpOpen()) {
+ b = true;
+ }
+
+ for (int i = 0; i < NUM_TADTONE_GROUPS; i++) {
+ if (field_0x5E81[i] != 0) {
+ field_0x5E81[i]--;
+ // TODO - ...
+ }
+ }
+}
+void dLytMeterClefMain_c::finalizeState_Wait() {}
+
+void dLytMeterClefMain_c::initializeState_Out() {}
+void dLytMeterClefMain_c::executeState_Out() {}
+void dLytMeterClefMain_c::finalizeState_Out() {}
+
+void dLytMeterClefMain_c::startIn() {
+ if (mStateMgr.isState(StateID_Wait)) {
+ if (!field_0x5E4C) {
+ fn_80299DF0();
+ }
+ mBase.startIn();
+ }
+}
+
+void dLytMeterClefMain_c::startOut() {
+ if (mStateMgr.isState(StateID_Wait)) {
+ mBase.startOut();
+ }
+}
+
+bool dLytMeterClefMain_c::build(d2d::ResAccIf_c *resAcc) {
+ mBase.build(resAcc);
+
+ for (int i = 0; i < SUIRYU_SCORE_NUM_NOTES; i++) {
+ mNotes[i].mNote.build(resAcc);
+ }
+
+ fn_80299E30();
+ fn_8029A200();
+ fn_8029A2C0();
+
+ for (int i = 0; i < NUM_TADTONE_GROUPS; i++) {
+ field_0x5E70[i] = field_0x5E5F[i];
+ field_0x5E81[i] = field_0x5E5F[i];
+ }
+
+ mStateMgr.changeState(StateID_Wait);
+
+ return true;
+}
+
+bool dLytMeterClefMain_c::remove() {
+ mBase.remove();
+ for (int i = 0; i < SUIRYU_SCORE_NUM_NOTES; i++) {
+ mNotes[i].mNote.remove();
+ }
+ return true;
+}
+
+bool dLytMeterClefMain_c::execute() {
+ bool hasCollectedAllTadtones = StoryflagManager::sInstance->getFlag(STORYFLAG_ALL_TADTONES_GATHERED);
+ bool hasTadtoneScroll = StoryflagManager::sInstance->getFlag(STORYFLAG_HAS_TADTONE_SCROLL);
+ if (hasCollectedAllTadtones == true) {
+ startOut();
+ } else if (hasTadtoneScroll == true) {
+ if (dLytMeter_c::shouldHideLytClef()) {
+ startOut();
+ } else {
+ startIn();
+ }
+ } else {
+ startOut();
+ }
+
+ mStateMgr.executeState();
+
+ mBase.execute();
+
+ for (int i = 0; i < SUIRYU_SCORE_NUM_NOTES; i++) {
+ mNotes[i].mNote.execute(mBase.getInOutAllPane()->GetAlpha());
+ }
+
+ return true;
+}
+
+bool dLytMeterClefMain_c::draw() {
+ mBase.draw();
+ for (int i = 0; i < SUIRYU_SCORE_NUM_NOTES; i++) {
+ mNotes[i].mNote.draw();
+ }
+ return true;
+}
+
+void dLytMeterClefMain_c::fn_80299DF0() {
+ fn_8029A050();
+ field_0x5E4C = 1;
+}
+
+void dLytMeterClefMain_c::fn_80299E30() {
+ for (int i = 0; i < NUM_TADTONE_GROUPS; i++) {
+ field_0x5E4E[i] = 0;
+ field_0x5E5F[i] = 0;
+ field_0x5E70[i] = 0;
+ field_0x5E81[i] = 0;
+ field_0x5EA4[i] = 9;
+ }
+
+ for (int i = 0; i < SUIRYU_SCORE_NUM_NOTES; i++) {
+ mNotes[i].field_0x278 = 7;
+ }
+
+ for (int i = 0; i < 77; i++) {
+ field_0x5EE8[i] = 77;
+ }
+
+ field_0x5F35 = 18;
+ field_0x5F36 = 18;
+ field_0x5E4D = 0;
+
+ field_0x5F3C = 60;
+ field_0x5F40 = 0;
+}
+
+void dLytMeterClefMain_c::fn_8029A050() {
+ fn_8029A200();
+ fn_8029A2C0();
+
+ for (int i = 0; i < NUM_TADTONE_GROUPS; i++) {
+ field_0x5E70[i] = field_0x5E5F[i];
+ field_0x5E81[i] = field_0x5E5F[i];
+ }
+
+ for (int i = 0; i < NUM_TADTONE_GROUPS; i++) {
+ if (field_0x5E5F[i] == field_0x5E4E[i]) {
+ field_0x5EA4[i] = 8;
+ field_0x5E81[i] = field_0x5E4E[i];
+ mBase.fn_802978F0(i);
+ }
+ }
+}
+
+void dLytMeterClefMain_c::fn_8029A200() {
+ for (int i = 0; i < NUM_TADTONE_GROUPS; i++) {
+ unkTadtoneInline2(i, &field_0x5E4E[i]);
+ }
+}
+
+void dLytMeterClefMain_c::fn_8029A260() {
+ for (int i = 0; i < NUM_TADTONE_GROUPS; i++) {
+ unkTadtoneInline3(i, &field_0x5E92[i]);
+ }
+}
+
+void dLytMeterClefMain_c::fn_8029A2C0() {
+ for (int i = 0; i < NUM_TADTONE_GROUPS; i++) {
+ u8 *result = field_0x5E5F + i;
+ unkTadtoneInline(i, &field_0x5E5F[i]);
+ }
+}
+
+void dLytMeterClefMain_c::fn_8029A3B0() {
+ for (int i = 0; i < NUM_TADTONE_GROUPS; i++) {
+ field_0x5E70[i] = field_0x5E5F[i];
+ }
+}
+
+void dLytMeterClefMain_c::fn_8029A440() {
+ s32 num8 = 0;
+ for (int i = 0; i < NUM_TADTONE_GROUPS; i++) {
+ if (field_0x5EA4[i] == 8) {
+ num8++;
+ if (num8 == NUM_TADTONE_GROUPS) {
+ field_0x5E4D = 1;
+ }
+ } else if (field_0x5EA4[i] == 7) {
+ int acc = 0;
+ for (int j = 0; j < NUM_TADTONE_GROUPS; j++) {
+ if (i == j) {
+ break;
+ }
+ acc += field_0x5E4E[j];
+ }
+ bool b = true;
+ for (int j = 0; j < field_0x5E4E[i]; j++) {
+ // TODO cast
+ if ((s32)field_0x5EE8[acc + j] != 77 && !mNotes[field_0x5EE8[acc + j]].mNote.isStateWait()) {
+ b = false;
+ }
+ }
+
+ if (b) {
+ field_0x5EA4[i] = 8;
+ }
+ } else {
+ if ((field_0x5E5F[i] == field_0x5E4E[i]) && (field_0x5E81[i] == field_0x5E4E[i])) {
+ field_0x5EA4[i] = 5;
+ } else if ((field_0x5E5F[i] == 0) && (field_0x5E81[i] == 0)) {
+ field_0x5EA4[i] = 9;
+ } else if (field_0x5EA4[i] != 4) {
+ if (field_0x5E5F[i] != field_0x5E81[i]) {
+ if (field_0x5E81[i] < field_0x5E5F[i]) {
+ field_0x5EA4[i] = 0;
+ field_0x5F35 = i;
+ }
+ if (field_0x5EA4[field_0x5F36] != 3 && field_0x5E5F[i] < field_0x5E81[i]) {
+ field_0x5EA4[i] = 1;
+ }
+ if (field_0x5E5F[i] == field_0x5E4E[i]) {
+ field_0x5F35 = i;
+ }
+ }
+ }
+ }
+ }
+
+ if (field_0x5F35 < NUM_TADTONE_GROUPS && field_0x5F36 < NUM_TADTONE_GROUPS && field_0x5F35 != field_0x5F36) {
+ if ((field_0x5EA4[field_0x5F36] < 3 || field_0x5EA4[field_0x5F36] > 5) &&
+ (field_0x5EA4[field_0x5F36] < 7 || field_0x5EA4[field_0x5F36] > 8)) {
+ field_0x5EA4[field_0x5F36] = 2;
+ }
+ }
+}
+
+SPECIAL_BASE_PROFILE(LYT_SUIRYU_SCORE, dLytSuiryuScore_c, fProfile::LYT_SUIRYU_SCORE, 0x2B5, 0x06F9);
+
+dLytSuiryuScore_c *dLytSuiryuScore_c::sInstance;
+
+int dLytSuiryuScore_c::create() {
+ void *data = LayoutArcManager::GetInstance()->getLoadedData("Score");
+ mResAcc.attach(data, "");
+ mMain.build(&mResAcc);
+ sInstance = this;
+ return SUCCEEDED;
+}
+
+int dLytSuiryuScore_c::doDelete() {
+ mMain.remove();
+ sInstance = nullptr;
+ return SUCCEEDED;
+}
+
+int dLytSuiryuScore_c::execute() {
+ mMain.execute();
+ return SUCCEEDED;
+}
+
+int dLytSuiryuScore_c::draw() {
+ mMain.draw();
+ return SUCCEEDED;
+}
diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp
index bb0accb9..4de66635 100644
--- a/src/d/lyt/meter/d_lyt_meter.cpp
+++ b/src/d/lyt/meter/d_lyt_meter.cpp
@@ -567,15 +567,15 @@ bool dLytMeterMain_c::isNotSilentRealmOrLoftwing() {
return true;
}
-bool dLytMeterMain_c::fn_800C9F70() {
- if ((fn_800D56B0() && !field_0x13775) || isInModeMap() || isInModePause()) {
+bool dLytMeterMain_c::shouldHideLytClef() {
+ if ((shouldBeHiddenGeneral() && !mIsCollectingTadtoneScroll) || isInModeMap() || isInModePause()) {
return true;
}
return false;
}
bool dLytMeterMain_c::fn_800C9FE0() {
- if (fn_800D56B0() || mMode == MODE_MAP_INIT || isInModePause()) {
+ if (shouldBeHiddenGeneral() || mMode == MODE_MAP_INIT || isInModePause()) {
return true;
}
return false;
@@ -857,7 +857,7 @@ bool dLytMeterMain_c::build(d2d::ResAccIf_c *resAcc) {
mMode = MODE_NONE;
field_0x13770 = 3;
mHelpOpen = false;
- field_0x13775 = 0;
+ mIsCollectingTadtoneScroll = false;
field_0x13773 = 0;
mTimerVisible = false;
mBirdGaugeVisible = false;
@@ -1078,7 +1078,7 @@ bool dLytMeterMain_c::isInModePause() {
return false;
}
-bool dLytMeterMain_c::fn_800D56B0() {
+bool dLytMeterMain_c::shouldBeHiddenGeneral() {
if (dLytSaveMgr_c::GetInstance() != nullptr && dLytSaveMgr_c::GetInstance()->isBusy()) {
return true;
}
@@ -1179,18 +1179,18 @@ void dLytMeterMain_c::checkPaneVisibility() {
|| (MinigameManager::isInMinigameState(MinigameManager::TRIAL_TIME_ATTACK) &&
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_B) == LytDoButtonRelated::ACT_IE_NONE) ||
- (dLytMeter_c::getField_0x13B66() || (fn_800D56B0() && !mItemSelect.fn_800F02F0() && !isDoingSkyKeepPuzzle()) ||
+ (dLytMeter_c::getField_0x13B66() || (shouldBeHiddenGeneral() && !mItemSelect.fn_800F02F0() && !isDoingSkyKeepPuzzle()) ||
isInModeMap() || isInModePause())) {
mPanesVisible[METER_ANIM_ITEM_SELECT] = false;
}
- if ((fn_800D56B0() && !isDoingSkyKeepPuzzle() && !mMinusBtn.fn_800F75E0())
+ if ((shouldBeHiddenGeneral() && !isDoingSkyKeepPuzzle() && !mMinusBtn.fn_800F75E0())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())) {
mPanesVisible[METER_ANIM_MINUS_BTN] = false;
}
- if ((fn_800D56B0() && !isDoingSkyKeepPuzzle())
+ if ((shouldBeHiddenGeneral() && !isDoingSkyKeepPuzzle())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())
@@ -1198,7 +1198,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
mPanesVisible[METER_ANIM_PLUS_BTN] = false;
}
- if ((fn_800D56B0() && !isDoingSkyKeepPuzzle())
+ if ((shouldBeHiddenGeneral() && !isDoingSkyKeepPuzzle())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())
@@ -1206,7 +1206,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
mPanesVisible[METER_ANIM_CROSS_BTN] = false;
}
- if ((fn_800D56B0() && !isDoingSkyKeepPuzzle())
+ if ((shouldBeHiddenGeneral() && !isDoingSkyKeepPuzzle())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())
@@ -1214,7 +1214,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
mPanesVisible[METER_ANIM_1_BTN] = false;
}
- if ((fn_800D56B0() && !isDoingSkyKeepPuzzle())
+ if ((shouldBeHiddenGeneral() && !isDoingSkyKeepPuzzle())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())
@@ -1222,7 +1222,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
mPanesVisible[METER_ANIM_2_BTN] = false;
}
- if ((fn_800D56B0() && !isDoingSkyKeepPuzzle())
+ if ((shouldBeHiddenGeneral() && !isDoingSkyKeepPuzzle())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())
@@ -1230,7 +1230,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
mPanesVisible[METER_ANIM_A_BTN] = false;
}
- if ((fn_800D56B0() && !isDoingSkyKeepPuzzle())
+ if ((shouldBeHiddenGeneral() && !isDoingSkyKeepPuzzle())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())
@@ -1238,7 +1238,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
mPanesVisible[METER_ANIM_REMOCON_BG] = false;
}
- if ((fn_800D56B0() && !isDoingSkyKeepPuzzle() && !mDowsing.fn_800FE490())
+ if ((shouldBeHiddenGeneral() && !isDoingSkyKeepPuzzle() && !mDowsing.fn_800FE490())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())
@@ -1246,7 +1246,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
mPanesVisible[METER_ANIM_DOWSING] = false;
}
- if ((fn_800D56B0() && !isDoingSkyKeepPuzzle())
+ if ((shouldBeHiddenGeneral() && !isDoingSkyKeepPuzzle())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())
@@ -1254,7 +1254,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
mPanesVisible[METER_ANIM_Z_BTN] = false;
}
- if ((fn_800D56B0() && !isDoingSkyKeepPuzzle())
+ if ((shouldBeHiddenGeneral() && !isDoingSkyKeepPuzzle())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())
@@ -1262,7 +1262,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
mPanesVisible[METER_ANIM_NUN_STK] = false;
}
- if ((fn_800D56B0() && !isDoingSkyKeepPuzzle())
+ if ((shouldBeHiddenGeneral() && !isDoingSkyKeepPuzzle())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())
@@ -1278,7 +1278,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
MinigameManager::isInMinigameState(MinigameManager::TRIAL_TIME_ATTACK) ||
MinigameManager::isInMinigameState(MinigameManager::PUMPKIN_ARCHERY) ||
MinigameManager::isInMinigameState(MinigameManager::SPIRAL_CHARGE_TUTORIAL) ||
- MinigameManager::isInMinigameState(MinigameManager::ROLLERCOASTER) || fn_800D56B0() || mIsInSwordDrawEvent)
+ MinigameManager::isInMinigameState(MinigameManager::ROLLERCOASTER) || shouldBeHiddenGeneral() || mIsInSwordDrawEvent)
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() ||
(dLytSimpleWindow_c::getInstance() != nullptr && dLytSimpleWindow_c::getInstance()->isOutputText()) ||
@@ -1301,7 +1301,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
||
(dMessage_c::getInstance()->getField_0x2FC() && mHeart.getField_0x78C() && !dAcPy_c::LINK->isSittingOrUnk0xAE())
- || (fn_800D56B0() &&
+ || (shouldBeHiddenGeneral() &&
(dMessage_c::getInstance()->getField_0x2FC() == 0 || dMessage_c::getInstance()->getField_0x2FC() == -2)) ||
mIsInSwordDrawEvent
@@ -1326,7 +1326,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
MinigameManager::isInMinigameState(MinigameManager::SPIRAL_CHARGE_TUTORIAL) ||
MinigameManager::isInMinigameState(MinigameManager::ROLLERCOASTER))
- || (fn_800D56B0() && mHeart.getField_0x78C() == 0)
+ || (shouldBeHiddenGeneral() && mHeart.getField_0x78C() == 0)
|| (dScGame_c::currentSpawnInfo.stageName == "F406" && dScGame_c::currentSpawnInfo.layer == 13)
@@ -1338,7 +1338,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
mPanesVisible[METER_ANIM_HEART] = false;
}
- if (!isSilentRealm() || (fn_800D56B0() && !fn_800D5590())
+ if (!isSilentRealm() || (shouldBeHiddenGeneral() && !fn_800D5590())
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || mMode == MODE_MAP_INIT || isInModePause())) {
mTimerVisible = false;
@@ -1353,7 +1353,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
}
if ((dAcPy_c::GetLink()->hasvt_0x1C0() || dAcPy_c::GetLink()->checkActionFlagsCont(0x10) ||
- (fn_800D56B0() && !mHelpOpen) || mGanbariGauge.fn_80104760() ||
+ (shouldBeHiddenGeneral() && !mHelpOpen) || mGanbariGauge.fn_80104760() ||
MinigameManager::isInMinigameState(MinigameManager::FUN_FUN_ISLAND) ||
MinigameManager::isInMinigameState(MinigameManager::THRILL_DIGGER) ||
@@ -1365,7 +1365,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
mPanesVisible[METER_ANIM_GANBARI_GAUGE] = false;
}
- if ((dAcPy_c::GetLink()->getRidingActorType() != dAcPy_c::RIDING_LOFTWING || fn_800D56B0()) ||
+ if ((dAcPy_c::GetLink()->getRidingActorType() != dAcPy_c::RIDING_LOFTWING || shouldBeHiddenGeneral()) ||
(dLytMeter_c::getField_0x13B66() || fn_800D5420() || isInModeMap() || isInModePause())) {
mSkyGaugeVisible = false;
} else if (bird != nullptr && mpSkyGauge != nullptr) {
@@ -1382,7 +1382,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
if (dAcPy_c::GetLink()->getRidingActorType() != dAcPy_c::RIDING_LOFTWING || !field_0x13780 ||
- (dLytDobutton_c::getAction() != dLytDobutton_c::ACT_DO_INVALID || fn_800D56B0() ||
+ (dLytDobutton_c::getAction() != dLytDobutton_c::ACT_DO_INVALID || shouldBeHiddenGeneral() ||
dLytMeter_c::getField_0x13B66() || fn_800D5420() || isInModeMap() || isInModePause())) {
mBirdGaugeVisible = false;
}
@@ -1408,7 +1408,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
}
}
- if (!field_0x13781 || fn_800D56B0() ||
+ if (!field_0x13781 || shouldBeHiddenGeneral() ||
(dLytMeter_c::getField_0x13B66() || fn_800D5420() || isInModeMap() || isInModePause())) {
mBossGaugeVisible = false;
@@ -1436,7 +1436,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
if (dAcItem_c::getKeyPieceCount() == 0 || dLytAreaCaption_c::getVisible() || fn_800D5380(false) ||
SceneflagManager::sInstance->checkSceneflagGlobal(4, 0x21) || MinigameManager::isInAnyMinigame()
- || (dLytMeter_c::getField_0x13B66() || fn_800D56B0() || mIsInSwordDrawEvent || fn_800D5420() ||
+ || (dLytMeter_c::getField_0x13B66() || shouldBeHiddenGeneral() || mIsInSwordDrawEvent || fn_800D5420() ||
isInModeMap() || isInModePause())) {
mKakeraKeyVisible = false;
}
@@ -1454,7 +1454,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
|| DungeonflagManager::sInstance->getCounterOrFlag(16, 8) != 0 ||
dAcPy_c::GetLink()->getCurrentAction() == 0x8C || dLytAreaCaption_c::getVisible() || fn_800D5380(false) ||
- MinigameManager::isInAnyMinigame() || fn_800D56B0() || mIsInSwordDrawEvent
+ MinigameManager::isInAnyMinigame() || shouldBeHiddenGeneral() || mIsInSwordDrawEvent
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || isInModeMap() || isInModePause())) {
mBossKeyVisible = false;
@@ -1471,7 +1471,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
if (mpSmallKey != nullptr) {
if (dAcItem_c::getSmallKeyCount() == 0 || dLytAreaCaption_c::getVisible() || fn_800D5380(false) ||
- MinigameManager::isInAnyMinigame() || fn_800D56B0() || mIsInSwordDrawEvent
+ MinigameManager::isInAnyMinigame() || shouldBeHiddenGeneral() || mIsInSwordDrawEvent
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() || isInModeMap() || isInModePause())) {
mSmallKeyVisible = false;
@@ -1490,7 +1490,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
if (!field_0x137B2 || dLytAreaCaption_c::getVisible() || fn_800D5380(false) ||
MinigameManager::isInAnyMinigame() || mIsInSwordDrawEvent
- || fn_800D56B0() || dLytMeter_c::getField_0x13B66() || fn_800D5420() || isInModeMap() || isInModePause()) {
+ || shouldBeHiddenGeneral() || dLytMeter_c::getField_0x13B66() || fn_800D5420() || isInModeMap() || isInModePause()) {
mDrinkVisible = false;
}
@@ -1509,8 +1509,8 @@ void dLytMeterMain_c::checkPaneVisibility() {
bool dLytMeterMain_c::execute() {
dLytMeter_c *meter = dLytMeter_c::GetInstance();
- if (field_0x13775 && !EventManager::isInEvent()) {
- field_0x13775 = 0;
+ if (mIsCollectingTadtoneScroll && !EventManager::isInEvent()) {
+ mIsCollectingTadtoneScroll = false;
}
if (isSilentRealm()) {
diff --git a/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp b/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp
index 448c8cbe..9cd61dbf 100644
--- a/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp
+++ b/src/d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp
@@ -332,7 +332,7 @@ bool dLytMeterGanbariGauge_c::build(d2d::ResAccIf_c *resAcc) {
field_0x548 = dLytMeter_HIO_c::sInstance->field_0x1C8;
field_0x558 = 0;
- field_0x559 = 0;
+ mClefRelated = false;
field_0x55B = 0;
mpOwnerPane = nullptr;
field_0x55A = 0;
@@ -483,7 +483,7 @@ bool dLytMeterGanbariGauge_c::execute() {
angle = 3;
v2.set(-95.0f, -50.0f);
scale = 0.9f;
- } else if (field_0x559 && swimmingRelated()) {
+ } else if (mClefRelated && swimmingRelated()) {
angle = 1;
v2.set(-65.0f, 0.0f);
scale = 1.0f;