Merge pull request #287 from robojumper/d_lyt_force_line

d_lyt_force_line OK
This commit is contained in:
robojumper
2025-12-21 21:32:53 +01:00
committed by GitHub
7 changed files with 574 additions and 155 deletions
+2
View File
@@ -1605,8 +1605,10 @@ d/lyt/d_lyt_drop_line.cpp:
d/lyt/d_lyt_force_line.cpp:
.text start:0x80288500 end:0x8028A9F8 align:16
.ctors start:0x804DB86C end:0x804DB870
.rodata start:0x804EE790 end:0x804EE7D8
.data start:0x80538658 end:0x80538CE8
.sbss start:0x80575960 end:0x80575968
.sdata2 start:0x8057C6C8 end:0x8057C6E0
.bss start:0x805B60C0 end:0x805B6160
d/lyt/d_lyt_enemy_icon.cpp:
+165 -153
View File
@@ -15123,63 +15123,63 @@ fn_80288200 = .text:0x80288200; // type:function size:0x30
LytDropLineParts__initStates = .text:0x80288230; // type:function size:0x1DC
LytDropLineParts__dtor = .text:0x80288410; // type:function size:0x58
fn_80288470 = .text:0x80288470; // type:function size:0x88
fn_80288500 = .text:0x80288500; // type:function size:0x14
fn_80288520 = .text:0x80288520; // type:function size:0x28
fn_80288550 = .text:0x80288550; // type:function size:0x40
fn_80288590 = .text:0x80288590; // type:function size:0x28
fn_802885C0 = .text:0x802885C0; // type:function size:0x8
fn_802885D0 = .text:0x802885D0; // type:function size:0x30
fn_80288600 = .text:0x80288600; // type:function size:0x10
fn_80288610 = .text:0x80288610; // type:function size:0x8
fn_80288620 = .text:0x80288620; // type:function size:0x88
fn_802886B0 = .text:0x802886B0; // type:function size:0x5C
fn_80288710 = .text:0x80288710; // type:function size:0x10
LytForceLineParts__stateWaitEnter = .text:0x80288720; // type:function size:0x4
LytForceLineParts__stateWaitUpdate = .text:0x80288730; // type:function size:0x28
LytForceLineParts__stateWaitLeave = .text:0x80288760; // type:function size:0x4
LytForceLineParts__stateMoveEnter = .text:0x80288770; // type:function size:0xA4
LytForceLineParts__stateMoveUpdate = .text:0x80288820; // type:function size:0x28C
LytForceLineParts__stateMoveLeave = .text:0x80288AB0; // type:function size:0x4
fn_80288AC0 = .text:0x80288AC0; // type:function size:0x90
fn_80288B50 = .text:0x80288B50; // type:function size:0x94
fn_80288BF0 = .text:0x80288BF0; // type:function size:0x58
fn_80288C50 = .text:0x80288C50; // type:function size:0x6C
fn_80288CC0 = .text:0x80288CC0; // type:function size:0xA0
fn_80288D60 = .text:0x80288D60; // type:function size:0xA4
fn_80288E10 = .text:0x80288E10; // type:function size:0xB8
fn_80288ED0 = .text:0x80288ED0; // type:function size:0x30
fn_80288F00 = .text:0x80288F00; // type:function size:0x30
fn_80288F30 = .text:0x80288F30; // type:function size:0x30
fn_80288F60 = .text:0x80288F60; // type:function size:0x30
fn_80288F90 = .text:0x80288F90; // type:function size:0x5C
fn_80288FF0 = .text:0x80288FF0; // type:function size:0x20
fn_80289010 = .text:0x80289010; // type:function size:0x24
fn_80289040 = .text:0x80289040; // type:function size:0x68
fn_802890B0 = .text:0x802890B0; // type:function size:0x50
fn_80289100 = .text:0x80289100; // type:function size:0x50
fn_80289150 = .text:0x80289150; // type:function size:0x50
fn_802891A0 = .text:0x802891A0; // type:function size:0xEC
fn_80289290 = .text:0x80289290; // type:function size:0x10
fn_802892A0 = .text:0x802892A0; // type:function size:0x1220
fn_8028A4C0 = .text:0x8028A4C0; // type:function size:0x9C
fn_8028A560 = .text:0x8028A560; // type:function size:0x60
fn_8028A5C0 = .text:0x8028A5C0; // type:function size:0xC
fn_8028A5D0 = .text:0x8028A5D0; // type:function size:0x1C
fn_8028A5F0 = .text:0x8028A5F0; // type:function size:0x1C
fn_8028A610 = .text:0x8028A610; // type:function size:0x1C
fn_8028A630 = .text:0x8028A630; // type:function size:0x10
fn_8028A640 = .text:0x8028A640; // type:function size:0x10
fn_8028A650 = .text:0x8028A650; // type:function size:0x10
fn_8028A660 = .text:0x8028A660; // type:function size:0x10
fn_8028A670 = .text:0x8028A670; // type:function size:0x10
fn_8028A680 = .text:0x8028A680; // type:function size:0x10
fn_8028A690 = .text:0x8028A690; // type:function size:0x10
fn_8028A6A0 = .text:0x8028A6A0; // type:function size:0x30
fn_8028A6D0 = .text:0x8028A6D0; // type:function size:0x30
fn_8028A700 = .text:0x8028A700; // type:function size:0x30
LytForceLineParts__initStates = .text:0x8028A730; // type:function size:0x1DC
LytForceLineParts__dtor = .text:0x8028A910; // type:function size:0x58
fn_8028A970 = .text:0x8028A970; // type:function size:0x88
getNumTadtonesInGroup__Fl = .text:0x80288500; // type:function size:0x14 scope:local
__ct__19dLytForceLine_HIO_cFv = .text:0x80288520; // type:function size:0x28
__dt__19dLytForceLine_HIO_cFv = .text:0x80288550; // type:function size:0x40
create__20dLytForceLineParts_cFP15dLytForceLine_c = .text:0x80288590; // type:function size:0x28
doDelete__20dLytForceLineParts_cFv = .text:0x802885C0; // type:function size:0x8
execute__20dLytForceLineParts_cFv = .text:0x802885D0; // type:function size:0x30
executeState__89sStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80288600; // type:function size:0x10 scope:weak
draw__20dLytForceLineParts_cFv = .text:0x80288610; // type:function size:0x8
start__20dLytForceLineParts_cF7mVec3_c7mVec2_cl = .text:0x80288620; // type:function size:0x88
reset__20dLytForceLineParts_cFv = .text:0x802886B0; // type:function size:0x5C
changeState__89sStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x80288710; // type:function size:0x10 scope:weak
initializeState_Wait__20dLytForceLineParts_cFv = .text:0x80288720; // type:function size:0x4
executeState_Wait__20dLytForceLineParts_cFv = .text:0x80288730; // type:function size:0x28
finalizeState_Wait__20dLytForceLineParts_cFv = .text:0x80288760; // type:function size:0x4
initializeState_Move__20dLytForceLineParts_cFv = .text:0x80288770; // type:function size:0xA4
executeState_Move__20dLytForceLineParts_cFv = .text:0x80288820; // type:function size:0x28C
finalizeState_Move__20dLytForceLineParts_cFv = .text:0x80288AB0; // type:function size:0x4
dLytForceLine_c_classInit__Fv = .text:0x80288AC0; // type:function size:0x90
__ct__20dLytForceLineParts_cFv = .text:0x80288B50; // type:function size:0x94 scope:weak
__dt__33sFState_c<20dLytForceLineParts_c>Fv = .text:0x80288BF0; // type:function size:0x58 scope:weak
__dt__36sFStateFct_c<20dLytForceLineParts_c>Fv = .text:0x80288C50; // type:function size:0x6C scope:weak
__dt__89sStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80288CC0; // type:function size:0xA0 scope:weak
__dt__59sFStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c>Fv = .text:0x80288D60; // type:function size:0xA4 scope:weak
__dt__20dLytForceLineParts_cFv = .text:0x80288E10; // type:function size:0xB8 scope:weak
create__15dLytForceLine_cFv = .text:0x80288ED0; // type:function size:0x30
doDelete__15dLytForceLine_cFv = .text:0x80288F00; // type:function size:0x30
execute__15dLytForceLine_cFv = .text:0x80288F30; // type:function size:0x30
draw__15dLytForceLine_cFv = .text:0x80288F60; // type:function size:0x30
start__15dLytForceLine_cF7mVec3_clll = .text:0x80288F90; // type:function size:0x5C
isDone__15dLytForceLine_cFl = .text:0x80288FF0; // type:function size:0x20
initPos__15dLytForceLine_cFPQ23d2d9LytBase_cPQ23d2d10AnmGroup_c = .text:0x80289010; // type:function size:0x24
createInternal__15dLytForceLine_cFv = .text:0x80289040; // type:function size:0x68
doDeleteInternal__15dLytForceLine_cFv = .text:0x802890B0; // type:function size:0x50
executeInternal__15dLytForceLine_cFv = .text:0x80289100; // type:function size:0x50
drawInternal__15dLytForceLine_cFv = .text:0x80289150; // type:function size:0x50
startInternal__15dLytForceLine_cF7mVec3_clll = .text:0x802891A0; // type:function size:0xEC
isDoneInternal__15dLytForceLine_cFl = .text:0x80289290; // type:function size:0x10
initPosInternal__15dLytForceLine_cFPQ23d2d9LytBase_cPQ23d2d10AnmGroup_c = .text:0x802892A0; // type:function size:0x1220
__dt__15dLytForceLine_cFv = .text:0x8028A4C0; // type:function size:0x9C scope:weak
build__36sFStateFct_c<20dLytForceLineParts_c>FRC12sStateIDIf_c = .text:0x8028A560; // type:function size:0x60 scope:weak
dispose__36sFStateFct_c<20dLytForceLineParts_c>FRP10sStateIf_c = .text:0x8028A5C0; // type:function size:0xC scope:weak
initialize__33sFState_c<20dLytForceLineParts_c>Fv = .text:0x8028A5D0; // type:function size:0x1C scope:weak
execute__33sFState_c<20dLytForceLineParts_c>Fv = .text:0x8028A5F0; // type:function size:0x1C scope:weak
finalize__33sFState_c<20dLytForceLineParts_c>Fv = .text:0x8028A610; // type:function size:0x1C scope:weak
initializeState__89sStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8028A630; // type:function size:0x10 scope:weak
finalizeState__89sStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8028A640; // type:function size:0x10 scope:weak
refreshState__89sStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8028A650; // type:function size:0x10 scope:weak
getState__89sStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8028A660; // type:function size:0x10 scope:weak
getNewStateID__89sStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8028A670; // type:function size:0x10 scope:weak
getStateID__89sStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8028A680; // type:function size:0x10 scope:weak
getOldStateID__89sStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8028A690; // type:function size:0x10 scope:weak
finalizeState__35sFStateID_c<20dLytForceLineParts_c>CFR20dLytForceLineParts_c = .text:0x8028A6A0; // type:function size:0x30 scope:weak
executeState__35sFStateID_c<20dLytForceLineParts_c>CFR20dLytForceLineParts_c = .text:0x8028A6D0; // type:function size:0x30 scope:weak
initializeState__35sFStateID_c<20dLytForceLineParts_c>CFR20dLytForceLineParts_c = .text:0x8028A700; // type:function size:0x30 scope:weak
__sinit_\d_lyt_force_line_cpp = .text:0x8028A730; // type:function size:0x1DC scope:local
__dt__35sFStateID_c<20dLytForceLineParts_c>Fv = .text:0x8028A910; // type:function size:0x58 scope:weak
isSameName__35sFStateID_c<20dLytForceLineParts_c>CFPCc = .text:0x8028A970; // type:function size:0x88 scope:weak
fn_8028AA00 = .text:0x8028AA00; // type:function size:0x28
fn_8028AA30 = .text:0x8028AA30; // type:function size:0x40
fn_8028AA70 = .text:0x8028AA70; // type:function size:0xF0
@@ -28656,7 +28656,7 @@ lbl_804EE700 = .rodata:0x804EE700; // type:object size:0x28 data:4byte
lbl_804EE728 = .rodata:0x804EE728; // type:object size:0x28
lbl_804EE750 = .rodata:0x804EE750; // type:object size:0x28
@LOCAL@executeState_FadeOut__13dLytSaveMgr_cFv@sFadeOutModes@0 = .rodata:0x804EE778; // type:object size:0x18 scope:local
lbl_804EE790 = .rodata:0x804EE790; // type:object size:0x48
@LOCAL@getNumTadtonesInGroup__Fl@nums = .rodata:0x804EE790; // type:object size:0x44 scope:local
lbl_804EE7D8 = .rodata:0x804EE7D8; // type:object size:0x18 data:4byte
lbl_804EE7F0 = .rodata:0x804EE7F0; // type:object size:0x150 data:4byte
lbl_804EE940 = .rodata:0x804EE940; // type:object size:0x30
@@ -36660,91 +36660,100 @@ lbl_80538560 = .data:0x80538560; // type:object size:0x18
lbl_80538578 = .data:0x80538578; // type:object size:0xA8
lbl_80538620 = .data:0x80538620; // type:object size:0x38
g_profile_LYT_FORCE_LINE = .data:0x80538658; // type:object size:0xC
lbl_80538664 = .data:0x80538664; // type:object size:0xC data:string
lbl_80538670 = .data:0x80538670; // type:object size:0xC data:string
lbl_8053867C = .data:0x8053867C; // type:object size:0xC data:string
lbl_80538688 = .data:0x80538688; // type:object size:0xC data:string
lbl_80538694 = .data:0x80538694; // type:object size:0xC data:string
lbl_805386A0 = .data:0x805386A0; // type:object size:0xC data:string
lbl_805386AC = .data:0x805386AC; // type:object size:0xC data:string
lbl_805386B8 = .data:0x805386B8; // type:object size:0xC data:string
lbl_805386C4 = .data:0x805386C4; // type:object size:0xC data:string
lbl_805386D0 = .data:0x805386D0; // type:object size:0xC data:string
lbl_805386DC = .data:0x805386DC; // type:object size:0xC data:string
lbl_805386E8 = .data:0x805386E8; // type:object size:0xC data:string
lbl_805386F4 = .data:0x805386F4; // type:object size:0xC data:string
lbl_80538700 = .data:0x80538700; // type:object size:0xC data:string
lbl_8053870C = .data:0x8053870C; // type:object size:0xC data:string
lbl_80538718 = .data:0x80538718; // type:object size:0xC data:string
lbl_80538724 = .data:0x80538724; // type:object size:0xC data:string
lbl_80538730 = .data:0x80538730; // type:object size:0xC data:string
lbl_8053873C = .data:0x8053873C; // type:object size:0xC data:string
lbl_80538748 = .data:0x80538748; // type:object size:0xC data:string
lbl_80538754 = .data:0x80538754; // type:object size:0xC data:string
lbl_80538760 = .data:0x80538760; // type:object size:0xC data:string
lbl_8053876C = .data:0x8053876C; // type:object size:0xC data:string
lbl_80538778 = .data:0x80538778; // type:object size:0xC data:string
lbl_80538784 = .data:0x80538784; // type:object size:0xC data:string
lbl_80538790 = .data:0x80538790; // type:object size:0xC data:string
lbl_8053879C = .data:0x8053879C; // type:object size:0xC data:string
lbl_805387A8 = .data:0x805387A8; // type:object size:0xC data:string
lbl_805387B4 = .data:0x805387B4; // type:object size:0xC data:string
lbl_805387C0 = .data:0x805387C0; // type:object size:0xC data:string
lbl_805387CC = .data:0x805387CC; // type:object size:0xC data:string
lbl_805387D8 = .data:0x805387D8; // type:object size:0xC data:string
lbl_805387E4 = .data:0x805387E4; // type:object size:0xC data:string
lbl_805387F0 = .data:0x805387F0; // type:object size:0xC data:string
lbl_805387FC = .data:0x805387FC; // type:object size:0xC data:string
lbl_80538808 = .data:0x80538808; // type:object size:0xC data:string
lbl_80538814 = .data:0x80538814; // type:object size:0xC data:string
lbl_80538820 = .data:0x80538820; // type:object size:0xC data:string
lbl_8053882C = .data:0x8053882C; // type:object size:0xC data:string
lbl_80538838 = .data:0x80538838; // type:object size:0xC data:string
lbl_80538844 = .data:0x80538844; // type:object size:0xC data:string
lbl_80538850 = .data:0x80538850; // type:object size:0xC data:string
lbl_8053885C = .data:0x8053885C; // type:object size:0xC data:string
lbl_80538868 = .data:0x80538868; // type:object size:0xC data:string
lbl_80538874 = .data:0x80538874; // type:object size:0xC data:string
lbl_80538880 = .data:0x80538880; // type:object size:0xC data:string
lbl_8053888C = .data:0x8053888C; // type:object size:0xC data:string
lbl_80538898 = .data:0x80538898; // type:object size:0xC data:string
lbl_805388A4 = .data:0x805388A4; // type:object size:0xC data:string
lbl_805388B0 = .data:0x805388B0; // type:object size:0xC data:string
lbl_805388BC = .data:0x805388BC; // type:object size:0xC data:string
lbl_805388C8 = .data:0x805388C8; // type:object size:0xC data:string
lbl_805388D4 = .data:0x805388D4; // type:object size:0xC data:string
lbl_805388E0 = .data:0x805388E0; // type:object size:0xC data:string
lbl_805388EC = .data:0x805388EC; // type:object size:0xC data:string
lbl_805388F8 = .data:0x805388F8; // type:object size:0xC data:string
lbl_80538904 = .data:0x80538904; // type:object size:0xC data:string
lbl_80538910 = .data:0x80538910; // type:object size:0xC data:string
lbl_8053891C = .data:0x8053891C; // type:object size:0xC data:string
lbl_80538928 = .data:0x80538928; // type:object size:0xC data:string
lbl_80538934 = .data:0x80538934; // type:object size:0xC data:string
lbl_80538940 = .data:0x80538940; // type:object size:0xC data:string
lbl_8053894C = .data:0x8053894C; // type:object size:0xC data:string
lbl_80538958 = .data:0x80538958; // type:object size:0xC data:string
lbl_80538964 = .data:0x80538964; // type:object size:0xC data:string
lbl_80538970 = .data:0x80538970; // type:object size:0xC data:string
lbl_8053897C = .data:0x8053897C; // type:object size:0xC data:string
lbl_80538988 = .data:0x80538988; // type:object size:0xC data:string
lbl_80538994 = .data:0x80538994; // type:object size:0xC data:string
lbl_805389A0 = .data:0x805389A0; // type:object size:0xC data:string
lbl_805389AC = .data:0x805389AC; // type:object size:0xC data:string
lbl_805389B8 = .data:0x805389B8; // type:object size:0xC data:string
lbl_805389C4 = .data:0x805389C4; // type:object size:0xC data:string
lbl_805389D0 = .data:0x805389D0; // type:object size:0xC data:string
lbl_805389DC = .data:0x805389DC; // type:object size:0xC data:string
lbl_805389E8 = .data:0x805389E8; // type:object size:0xC data:string
lbl_805389F4 = .data:0x805389F4; // type:object size:0xC data:string
lbl_80538A00 = .data:0x80538A00; // type:object size:0x134 data:4byte
lbl_80538B34 = .data:0x80538B34; // type:object size:0xC
lbl_80538B40 = .data:0x80538B40; // type:object size:0x50
lbl_80538B90 = .data:0x80538B90; // type:object size:0x30
lbl_80538BC0 = .data:0x80538BC0; // type:object size:0x30
lbl_80538BF0 = .data:0x80538BF0; // type:object size:0x18
lbl_80538C08 = .data:0x80538C08; // type:object size:0xA8
lbl_80538CB0 = .data:0x80538CB0; // type:object size:0x38
...data.0 = .data:0x80538658; // type:label scope:local
@23145 = .data:0x80538664; // type:object size:0xC scope:local data:string
@23146 = .data:0x80538670; // type:object size:0xC scope:local data:string
@23147 = .data:0x8053867C; // type:object size:0xC scope:local data:string
@23148 = .data:0x80538688; // type:object size:0xC scope:local data:string
@23149 = .data:0x80538694; // type:object size:0xC scope:local data:string
@23150 = .data:0x805386A0; // type:object size:0xC scope:local data:string
@23151 = .data:0x805386AC; // type:object size:0xC scope:local data:string
@23152 = .data:0x805386B8; // type:object size:0xC scope:local data:string
@23153 = .data:0x805386C4; // type:object size:0xC scope:local data:string
@23154 = .data:0x805386D0; // type:object size:0xC scope:local data:string
@23155 = .data:0x805386DC; // type:object size:0xC scope:local data:string
@23156 = .data:0x805386E8; // type:object size:0xC scope:local data:string
@23157 = .data:0x805386F4; // type:object size:0xC scope:local data:string
@23158 = .data:0x80538700; // type:object size:0xC scope:local data:string
@23159 = .data:0x8053870C; // type:object size:0xC scope:local data:string
@23160 = .data:0x80538718; // type:object size:0xC scope:local data:string
@23161 = .data:0x80538724; // type:object size:0xC scope:local data:string
@23162 = .data:0x80538730; // type:object size:0xC scope:local data:string
@23163 = .data:0x8053873C; // type:object size:0xC scope:local data:string
@23164 = .data:0x80538748; // type:object size:0xC scope:local data:string
@23165 = .data:0x80538754; // type:object size:0xC scope:local data:string
@23166 = .data:0x80538760; // type:object size:0xC scope:local data:string
@23167 = .data:0x8053876C; // type:object size:0xC scope:local data:string
@23168 = .data:0x80538778; // type:object size:0xC scope:local data:string
@23169 = .data:0x80538784; // type:object size:0xC scope:local data:string
@23170 = .data:0x80538790; // type:object size:0xC scope:local data:string
@23171 = .data:0x8053879C; // type:object size:0xC scope:local data:string
@23172 = .data:0x805387A8; // type:object size:0xC scope:local data:string
@23173 = .data:0x805387B4; // type:object size:0xC scope:local data:string
@23174 = .data:0x805387C0; // type:object size:0xC scope:local data:string
@23175 = .data:0x805387CC; // type:object size:0xC scope:local data:string
@23176 = .data:0x805387D8; // type:object size:0xC scope:local data:string
@23177 = .data:0x805387E4; // type:object size:0xC scope:local data:string
@23178 = .data:0x805387F0; // type:object size:0xC scope:local data:string
@23179 = .data:0x805387FC; // type:object size:0xC scope:local data:string
@23180 = .data:0x80538808; // type:object size:0xC scope:local data:string
@23181 = .data:0x80538814; // type:object size:0xC scope:local data:string
@23182 = .data:0x80538820; // type:object size:0xC scope:local data:string
@23183 = .data:0x8053882C; // type:object size:0xC scope:local data:string
@23184 = .data:0x80538838; // type:object size:0xC scope:local data:string
@23185 = .data:0x80538844; // type:object size:0xC scope:local data:string
@23186 = .data:0x80538850; // type:object size:0xC scope:local data:string
@23187 = .data:0x8053885C; // type:object size:0xC scope:local data:string
@23188 = .data:0x80538868; // type:object size:0xC scope:local data:string
@23189 = .data:0x80538874; // type:object size:0xC scope:local data:string
@23190 = .data:0x80538880; // type:object size:0xC scope:local data:string
@23191 = .data:0x8053888C; // type:object size:0xC scope:local data:string
@23192 = .data:0x80538898; // type:object size:0xC scope:local data:string
@23193 = .data:0x805388A4; // type:object size:0xC scope:local data:string
@23194 = .data:0x805388B0; // type:object size:0xC scope:local data:string
@23195 = .data:0x805388BC; // type:object size:0xC scope:local data:string
@23196 = .data:0x805388C8; // type:object size:0xC scope:local data:string
@23197 = .data:0x805388D4; // type:object size:0xC scope:local data:string
@23198 = .data:0x805388E0; // type:object size:0xC scope:local data:string
@23199 = .data:0x805388EC; // type:object size:0xC scope:local data:string
@23200 = .data:0x805388F8; // type:object size:0xC scope:local data:string
@23201 = .data:0x80538904; // type:object size:0xC scope:local data:string
@23202 = .data:0x80538910; // type:object size:0xC scope:local data:string
@23203 = .data:0x8053891C; // type:object size:0xC scope:local data:string
@23204 = .data:0x80538928; // type:object size:0xC scope:local data:string
@23205 = .data:0x80538934; // type:object size:0xC scope:local data:string
@23206 = .data:0x80538940; // type:object size:0xC scope:local data:string
@23207 = .data:0x8053894C; // type:object size:0xC scope:local data:string
@23208 = .data:0x80538958; // type:object size:0xC scope:local data:string
@23209 = .data:0x80538964; // type:object size:0xC scope:local data:string
@23210 = .data:0x80538970; // type:object size:0xC scope:local data:string
@23211 = .data:0x8053897C; // type:object size:0xC scope:local data:string
@23212 = .data:0x80538988; // type:object size:0xC scope:local data:string
@23213 = .data:0x80538994; // type:object size:0xC scope:local data:string
@23214 = .data:0x805389A0; // type:object size:0xC scope:local data:string
@23215 = .data:0x805389AC; // type:object size:0xC scope:local data:string
@23216 = .data:0x805389B8; // type:object size:0xC scope:local data:string
@23217 = .data:0x805389C4; // type:object size:0xC scope:local data:string
@23218 = .data:0x805389D0; // type:object size:0xC scope:local data:string
@23219 = .data:0x805389DC; // type:object size:0xC scope:local data:string
@23220 = .data:0x805389E8; // type:object size:0xC scope:local data:string
@23221 = .data:0x805389F4; // type:object size:0xC scope:local data:string
sPaneNames = .data:0x80538A00; // type:object size:0x134 scope:local data:4byte
__vt__19dLytForceLine_HIO_c = .data:0x80538B34; // type:object size:0xC
__vt__15dLytForceLine_c = .data:0x80538B40; // type:object size:0x4C
__vt__59sFStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c> = .data:0x80538B90; // type:object size:0x30 scope:weak
__vt__89sStateMgr_c<20dLytForceLineParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80538BC0; // type:object size:0x30 scope:weak
__vt__36sFStateFct_c<20dLytForceLineParts_c> = .data:0x80538BF0; // type:object size:0x14 scope:weak
__vt__33sFState_c<20dLytForceLineParts_c> = .data:0x80538C08; // type:object size:0x18 scope:weak
@27314 = .data:0x80538C20; // type:object size:0xC scope:local
@27315 = .data:0x80538C2C; // type:object size:0xC scope:local
@27316 = .data:0x80538C38; // type:object size:0xC scope:local
@27317 = .data:0x80538C44; // type:object size:0xC scope:local
@27318 = .data:0x80538C50; // type:object size:0xC scope:local
@27319 = .data:0x80538C5C; // type:object size:0xC scope:local
@27321 = .data:0x80538C68; // type:object size:0x23 scope:local data:string
@27322 = .data:0x80538C8C; // type:object size:0x23 scope:local data:string
__vt__35sFStateID_c<20dLytForceLineParts_c> = .data:0x80538CB0; // type:object size:0x34 scope:weak
g_profile_LYT_ENEMY_ICON = .data:0x80538CE8; // type:object size:0xC
lbl_80538CF4 = .data:0x80538CF4; // type:object size:0xC
lbl_80538D00 = .data:0x80538D00; // type:object size:0x50
@@ -42445,7 +42454,7 @@ sInstance__13dLytSaveMgr_c = .sbss:0x80575950; // type:object size:0x4 data:4byt
lbl_80575958 = .sbss:0x80575958; // type:object size:0x1 data:byte
lbl_80575959 = .sbss:0x80575959; // type:object size:0x1 data:byte
lbl_8057595C = .sbss:0x8057595C; // type:object size:0x4 data:4byte
lbl_80575960 = .sbss:0x80575960; // type:object size:0x8 data:4byte
sInstance__15dLytForceLine_c = .sbss:0x80575960; // type:object size:0x4 data:4byte
lbl_80575968 = .sbss:0x80575968; // type:object size:0x8 data:4byte
sInstance__21dLytMiniGamePumpkin_c = .sbss:0x80575970; // type:object size:0x4 data:4byte
sInstance__18dLytMiniGameBugs_c = .sbss:0x80575974; // type:object size:0x4 data:4byte
@@ -48380,11 +48389,11 @@ lbl_8057C6B0 = .sdata2:0x8057C6B0; // type:object size:0x4 align:4 data:float
lbl_8057C6B4 = .sdata2:0x8057C6B4; // type:object size:0x4 align:4 data:float
lbl_8057C6B8 = .sdata2:0x8057C6B8; // type:object size:0x8 align:8 data:double
lbl_8057C6C0 = .sdata2:0x8057C6C0; // type:object size:0x4 align:4 data:float
lbl_8057C6C8 = .sdata2:0x8057C6C8; // type:object size:0x4 align:4 data:float
lbl_8057C6CC = .sdata2:0x8057C6CC; // type:object size:0x4 align:4 data:float
lbl_8057C6D0 = .sdata2:0x8057C6D0; // type:object size:0x8 align:8 data:double
lbl_8057C6D8 = .sdata2:0x8057C6D8; // type:object size:0x4 align:4 data:float
lbl_8057C6DC = .sdata2:0x8057C6DC; // type:object size:0x4 align:4 data:float
@26620 = .sdata2:0x8057C6C8; // type:object size:0x4 scope:local align:4 data:float
@26639 = .sdata2:0x8057C6CC; // type:object size:0x4 scope:local align:4 data:float
@26659 = .sdata2:0x8057C6D0; // type:object size:0x8 scope:local align:8 data:double
@27158 = .sdata2:0x8057C6D8; // type:object size:0x4 scope:local align:4 data:float
@27159 = .sdata2:0x8057C6DC; // type:object size:0x4 scope:local align:4 data:float
lbl_8057C6E0 = .sdata2:0x8057C6E0; // type:object size:0x4 align:4 data:float
lbl_8057C6E4 = .sdata2:0x8057C6E4; // type:object size:0x4 align:4 data:float
lbl_8057C6E8 = .sdata2:0x8057C6E8; // type:object size:0x4 align:4 data:float
@@ -52324,10 +52333,13 @@ lbl_805B6000 = .bss:0x805B6000; // type:object size:0x10
lbl_805B6010 = .bss:0x805B6010; // type:object size:0x20
LytDropLineParts__STATE_WAIT = .bss:0x805B6030; // type:object size:0x40 data:4byte
LytDropLineParts__STATE_MOVE = .bss:0x805B6070; // type:object size:0x50 data:4byte
lbl_805B60C0 = .bss:0x805B60C0; // type:object size:0x10
lbl_805B60D0 = .bss:0x805B60D0; // type:object size:0x20
LytForceLineParts__STATE_WAIT = .bss:0x805B60F0; // type:object size:0x40 data:4byte
LytForceLineParts__STATE_MOVE = .bss:0x805B6130; // type:object size:0x30 data:4byte
@22922 = .bss:0x805B60C0; // type:object size:0xC scope:local
...bss.0 = .bss:0x805B60C0; // type:label scope:local
sHio = .bss:0x805B60D0; // type:object size:0x10 scope:local
@22937 = .bss:0x805B60E0; // type:object size:0xC scope:local
StateID_Wait__20dLytForceLineParts_c = .bss:0x805B60F0; // type:object size:0x30 data:4byte
@22941 = .bss:0x805B6120; // type:object size:0xC scope:local
StateID_Move__20dLytForceLineParts_c = .bss:0x805B6130; // type:object size:0x30 data:4byte
lbl_805B6160 = .bss:0x805B6160; // type:object size:0x10
lbl_805B6170 = .bss:0x805B6170; // type:object size:0x20
LytEnemyIcon__STATE_WAIT = .bss:0x805B6190; // type:object size:0x30 data:4byte
+1 -1
View File
@@ -648,7 +648,7 @@ config.libs = [
Object(NonMatching, "d/lyt/d_lyt_game_over.cpp"),
Object(Matching, "d/lyt/d_lyt_save_mgr.cpp"),
Object(NonMatching, "d/lyt/d_lyt_drop_line.cpp"),
Object(NonMatching, "d/lyt/d_lyt_force_line.cpp"),
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"),
+88
View File
@@ -0,0 +1,88 @@
#ifndef D_LYT_FORCE_LINE_H
#define D_LYT_FORCE_LINE_H
#include "common.h"
#include "d/d_base.h"
#include "d/lyt/d2d.h"
#include "m/m_vec.h"
#include "s/s_State.hpp"
#include "toBeSorted/d_emitter.h"
class dLytForceLine_c;
class dLytForceLineParts_c {
public:
dLytForceLineParts_c() : mStateMgr(*this) {}
int create(dLytForceLine_c *main);
int doDelete();
int execute();
int draw();
void start(mVec3_c tadtoneWorldPos, mVec2_c targetPos, s32 variant);
void reset();
bool isDone() const {
return mIsDone;
}
private:
STATE_FUNC_DECLARE(dLytForceLineParts_c, Wait);
STATE_FUNC_DECLARE(dLytForceLineParts_c, Move);
/* 0x00 */ UI_STATE_MGR_DECLARE(dLytForceLineParts_c);
/* 0x3C */ dEmitter_c mEmitter;
/* 0x70 */ mVec3_c mStartPos;
/* 0x7C */ mVec3_c mEffectPos;
/* 0x88 */ mVec3_c mMoveLinearCoeff;
/* 0x94 */ mVec2_c mTargetPos;
/* 0x9C */ s32 mVariant;
/* 0xA0 */ s32 mMoveTimer;
/* 0xA4 */ bool mMoveRequest;
/* 0xA5 */ bool mIsDone;
};
/** 2D UI - Tadtone pickup trail */
class dLytForceLine_c : public dBase_c {
public:
dLytForceLine_c() {
sInstance = this;
}
virtual ~dLytForceLine_c() {
sInstance = nullptr;
}
static dLytForceLine_c *GetInstance() {
return sInstance;
}
virtual int create() override;
virtual int doDelete() override;
virtual int execute() override;
virtual int draw() override;
static void start(mVec3_c tadtoneWorldPos, s32 tadtoneGroupIdx, s32 tadtoneIdx, s32 variant);
static bool isDone(s32 idx);
static void initPos(d2d::LytBase_c *lyt, d2d::AnmGroup_c *anm);
private:
static dLytForceLine_c *sInstance;
static const s32 NUM_PARTS = 16;
static const s32 NUM_TADTONES = 77;
int createInternal();
int doDeleteInternal();
int executeInternal();
int drawInternal();
void startInternal(mVec3_c tadtoneWorldPos, s32 tadtoneGroupIdx, s32 tadtoneIdx, s32 variant);
bool isDoneInternal(s32 idx);
void initPosInternal(d2d::LytBase_c *lyt, d2d::AnmGroup_c *anm);
/* 0x068 */ dLytForceLineParts_c mParts[NUM_PARTS];
/* 0xAE8 */ mVec2_c field_0xAE8[NUM_TADTONES];
/* 0xD50 */ UNKWORD field_0xD50;
};
#endif
+8
View File
@@ -452,6 +452,14 @@ public:
}
}
static bool getfn_800C9F70() {
if (sInstance != nullptr) {
return sInstance->mMain.fn_800C9F70();
} else {
return false;
}
}
static bool getfn_800C9FE0() {
if (sInstance != nullptr) {
return sInstance->mMain.fn_800C9FE0();
+5 -1
View File
@@ -134,7 +134,7 @@ struct Vector3f : public nw4r::math::VEC3 {
void setZero() {
x = y = z = 0.0f;
};
}
f32 normalise();
@@ -168,6 +168,10 @@ public:
y = fy;
}
void setZero() {
x = y = 0.0f;
}
Vector2f operator-(const Vector2f &v) {
return Vector2f(x - v.x, y - v.y);
}
+305
View File
@@ -0,0 +1,305 @@
#include "d/lyt/d_lyt_force_line.h"
#include "common.h"
#include "d/lyt/meter/d_lyt_meter.h"
#include "f/f_base.h"
#include "m/m_vec.h"
#include "nw4r/lyt/lyt_pane.h"
#include "nw4r/math/math_types.h"
#include "toBeSorted/d_d3d.h"
#include "toBeSorted/d_emitter.h"
static s32 getNumTadtonesInGroup(s32 arg) {
static const s32 nums[] = {1, 4, 2, 8, 1, 8, 1, 4, 8, 1, 4, 8, 1, 4, 2, 4, 16};
return nums[arg];
}
class dLytForceLine_HIO_c {
public:
dLytForceLine_HIO_c();
virtual ~dLytForceLine_HIO_c();
/* 0x04 */ f32 field_0x04;
/* 0x08 */ s32 mMoveDuration;
/* 0x0C */ u8 field_0x0C;
};
static dLytForceLine_HIO_c sHio;
dLytForceLine_HIO_c::dLytForceLine_HIO_c() : field_0x04(5.0f), mMoveDuration(10), field_0x0C(0) {}
dLytForceLine_HIO_c::~dLytForceLine_HIO_c() {}
STATE_DEFINE(dLytForceLineParts_c, Wait);
STATE_DEFINE(dLytForceLineParts_c, Move);
int dLytForceLineParts_c::create(dLytForceLine_c *main) {
mEmitter.init(main);
reset();
return fBase_c::SUCCEEDED;
}
int dLytForceLineParts_c::doDelete() {
// no-op
return fBase_c::SUCCEEDED;
}
int dLytForceLineParts_c::execute() {
mStateMgr.executeState();
return fBase_c::SUCCEEDED;
}
int dLytForceLineParts_c::draw() {
// no-op
return fBase_c::SUCCEEDED;
}
void dLytForceLineParts_c::start(mVec3_c tadtoneWorldPos, mVec2_c targetPos, s32 variant) {
d3d::worldToScreen(mStartPos, tadtoneWorldPos);
mStartPos.z = 0.0f;
mEffectPos = mStartPos;
mEffectPos.z = 0.0f;
mTargetPos = targetPos;
mVariant = variant;
mMoveRequest = true;
mIsDone = false;
}
void dLytForceLineParts_c::reset() {
mStartPos.setZero();
mEffectPos.setZero();
mMoveLinearCoeff.setZero();
mTargetPos.setZero();
mMoveTimer = 0;
mVariant = 0;
mMoveRequest = false;
mIsDone = false;
mStateMgr.changeState(StateID_Wait);
}
void dLytForceLineParts_c::initializeState_Wait() {}
void dLytForceLineParts_c::executeState_Wait() {
if (mMoveRequest) {
mStateMgr.changeState(StateID_Move);
}
}
void dLytForceLineParts_c::finalizeState_Wait() {}
void dLytForceLineParts_c::initializeState_Move() {
mMoveTimer = 0;
// Set up the coefficients for the quadratic parabola below
mMoveLinearCoeff.x =
((mTargetPos.x - mStartPos.x) + (sHio.field_0x04 * (f32)sHio.mMoveDuration * (f32)sHio.mMoveDuration)) /
(f32)sHio.mMoveDuration;
mMoveLinearCoeff.y = (mTargetPos.y - mStartPos.y) / (f32)sHio.mMoveDuration;
}
void dLytForceLineParts_c::executeState_Move() {
bool isDone = false;
if (dLytMeter_c::getfn_800C9F70()) {
mStateMgr.changeState(StateID_Wait);
mMoveRequest = false;
mIsDone = true;
return;
}
if (mMoveTimer < sHio.mMoveDuration) {
// Quadratic parabola
mEffectPos.x =
mStartPos.x + mMoveLinearCoeff.x * (f32)mMoveTimer - sHio.field_0x04 * (f32)mMoveTimer * (f32)mMoveTimer;
mEffectPos.y = mStartPos.y + mMoveLinearCoeff.y * (f32)mMoveTimer;
mEffectPos.z = 0.0f;
mMoveTimer++;
} else {
isDone = true;
mEffectPos.x = mTargetPos.x;
mEffectPos.y = mTargetPos.y;
mEffectPos.z = 0.0f;
}
switch (mVariant) {
case 3:
mEmitter.holdUIEffect(PARTICLE_RESOURCE_ID_MAPPING_870_, mEffectPos, nullptr, nullptr, nullptr, nullptr);
break;
case 2:
mEmitter.holdUIEffect(PARTICLE_RESOURCE_ID_MAPPING_871_, mEffectPos, nullptr, nullptr, nullptr, nullptr);
break;
case 0:
mEmitter.holdUIEffect(PARTICLE_RESOURCE_ID_MAPPING_873_, mEffectPos, nullptr, nullptr, nullptr, nullptr);
break;
case 1:
mEmitter.holdUIEffect(PARTICLE_RESOURCE_ID_MAPPING_872_, mEffectPos, nullptr, nullptr, nullptr, nullptr);
break;
case 5:
mEmitter.holdUIEffect(PARTICLE_RESOURCE_ID_MAPPING_875_, mEffectPos, nullptr, nullptr, nullptr, nullptr);
break;
case 4:
mEmitter.holdUIEffect(PARTICLE_RESOURCE_ID_MAPPING_874_, mEffectPos, nullptr, nullptr, nullptr, nullptr);
break;
}
if (isDone) {
mStateMgr.changeState(StateID_Wait);
mMoveRequest = false;
mIsDone = true;
}
}
void dLytForceLineParts_c::finalizeState_Move() {}
SPECIAL_BASE_PROFILE(LYT_FORCE_LINE, dLytForceLine_c, fProfile::LYT_FORCE_LINE, 0x2B1, 0x6F9);
dLytForceLine_c *dLytForceLine_c::sInstance;
int dLytForceLine_c::create() {
if (sInstance != nullptr) {
sInstance->createInternal();
}
return SUCCEEDED;
}
int dLytForceLine_c::doDelete() {
if (sInstance != nullptr) {
sInstance->doDeleteInternal();
}
return SUCCEEDED;
}
int dLytForceLine_c::execute() {
if (sInstance != nullptr) {
sInstance->executeInternal();
}
return SUCCEEDED;
}
int dLytForceLine_c::draw() {
if (sInstance != nullptr) {
sInstance->drawInternal();
}
return SUCCEEDED;
}
void dLytForceLine_c::start(mVec3_c tadtoneWorldPos, s32 tadtoneGroupIdx, s32 tadtoneIdx, s32 variant) {
if (sInstance != nullptr) {
sInstance->startInternal(tadtoneWorldPos, tadtoneGroupIdx, tadtoneIdx, variant);
}
}
bool dLytForceLine_c::isDone(s32 idx) {
if (sInstance != nullptr) {
return sInstance->isDoneInternal(idx);
}
return false;
}
void dLytForceLine_c::initPos(d2d::LytBase_c *lyt, d2d::AnmGroup_c *anm) {
if (sInstance != nullptr) {
sInstance->initPosInternal(lyt, anm);
}
}
int dLytForceLine_c::createInternal() {
for (int i = 0; i < NUM_PARTS; i++) {
mParts[i].create(this);
}
field_0xD50 = 0;
return true;
}
int dLytForceLine_c::doDeleteInternal() {
for (int i = 0; i < NUM_PARTS; i++) {
mParts[i].doDelete();
}
return SUCCEEDED;
}
int dLytForceLine_c::executeInternal() {
for (int i = 0; i < NUM_PARTS; i++) {
mParts[i].execute();
}
return SUCCEEDED;
}
int dLytForceLine_c::drawInternal() {
for (int i = 0; i < NUM_PARTS; i++) {
mParts[i].draw();
}
return SUCCEEDED;
}
void dLytForceLine_c::startInternal(mVec3_c tadtoneWorldPos, s32 tadtoneGroupIdx, s32 tadtoneIdx, s32 variant) {
if (field_0xD50 != tadtoneGroupIdx || tadtoneIdx == 0) {
field_0xD50 = tadtoneGroupIdx;
for (int i = 0; i < NUM_PARTS; i++) {
mParts[i].reset();
}
}
s32 sum = 0;
for (int i = 0; i < tadtoneGroupIdx; i++) {
sum += getNumTadtonesInGroup(i);
}
sum += tadtoneIdx;
mParts[tadtoneIdx].start(tadtoneWorldPos, field_0xAE8[sum], variant);
}
bool dLytForceLine_c::isDoneInternal(s32 idx) {
return mParts[idx].isDone();
}
static const char *sPaneNames[] = {
"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",
};
void dLytForceLine_c::initPosInternal(d2d::LytBase_c *lyt, d2d::AnmGroup_c *anm) {
nw4r::lyt::Pane *panes[NUM_TADTONES];
for (int i = 0; i < NUM_TADTONES; i++) {
panes[i] = lyt->findPane(sPaneNames[i]);
}
bool enabled = anm->isEnabled_();
anm->setAnimEnable(true);
anm->setFrame(0.0f);
lyt->calc();
for (int i = 0; i < 24; i++) {
nw4r::math::MTX34 mtx = panes[i]->GetGlobalMtx();
field_0xAE8[i].set(mtx._03, mtx._13);
}
anm->setFrame(10.0f);
lyt->calc();
for (int i = 24; i < 50; i++) {
nw4r::math::MTX34 mtx = panes[i]->GetGlobalMtx();
field_0xAE8[i].set(mtx._03, mtx._13);
}
anm->setFrame(20.0f);
lyt->calc();
for (int i = 50; i < 77; i++) {
nw4r::math::MTX34 mtx = panes[i]->GetGlobalMtx();
field_0xAE8[i].set(mtx._03, mtx._13);
}
anm->setAnimEnable(enabled);
}