Merge pull request #234 from robojumper/d_lyt_game_over

d_lyt_game_over almost OK
This commit is contained in:
robojumper
2025-09-13 10:05:32 +02:00
committed by GitHub
17 changed files with 854 additions and 151 deletions
+2
View File
@@ -1539,7 +1539,9 @@ d/lyt/d_lyt_game_over.cpp:
.ctors start:0x804DB860 end:0x804DB864
.rodata start:0x804EE700 end:0x804EE778
.data start:0x80537970 end:0x80538160
.sdata start:0x80573B58 end:0x80573B80
.sbss start:0x80575948 end:0x80575950
.sdata2 start:0x8057C6A0 end:0x8057C6B0
.bss start:0x805B5D40 end:0x805B5F00
d/lyt/d_lyt_save_mgr.cpp:
+125 -113
View File
@@ -10447,7 +10447,7 @@ isInSkyKeepPuzzleRoom = .text:0x80194F40; // type:function size:0xA4
isInAnySkyKeepRoom = .text:0x80194FF0; // type:function size:0x38
maybeResetSkykeepPuzzle = .text:0x80195030; // type:function size:0xB4
saveSkykeepPuzzleToGlobal = .text:0x801950F0; // type:function size:0x58
restoreSkykeepPuzzleFromGlobal = .text:0x80195150; // type:function size:0x68
restoreSkykeepPuzzleFromGlobal__Fv = .text:0x80195150; // type:function size:0x68
relatedToSkeepMapStuff = .text:0x801951C0; // type:function size:0x120
getSKDoorSceneflag = .text:0x801952E0; // type:function size:0x18
checkSKDoorHasSceneflag = .text:0x80195300; // type:function size:0x34
@@ -11179,7 +11179,7 @@ clearSpawnInfo__9dScGame_cFv = .text:0x801BAE10; // type:function size:0x48
fn_801BAE60 = .text:0x801BAE60; // type:function size:0x90
fn_801BAEF0 = .text:0x801BAEF0; // type:function size:0x50
fn_801BAF40 = .text:0x801BAF40; // type:function size:0x54
Reloader__triggerEntrance = .text:0x801BAFA0; // type:function size:0xDC
triggerEntrance__9dScGame_cFPCcUcUcUciiUcUsSc = .text:0x801BAFA0; // type:function size:0xDC
triggerExit__9dScGame_cFlUsll = .text:0x801BB080; // type:function size:0xC0
Reloader__triggerExitInner = .text:0x801BB140; // type:function size:0x154
fn_801BB2A0 = .text:0x801BB2A0; // type:function size:0x28
@@ -14932,95 +14932,95 @@ LytPauseMain__dtor = .text:0x802824A0; // type:function size:0x58
LytPauseMgr__dtor = .text:0x80282500; // type:function size:0x58
fn_80282560 = .text:0x80282560; // type:function size:0x88
fn_802825F0 = .text:0x802825F0; // type:function size:0x88
fn_80282680 = .text:0x80282680; // type:function size:0x22C
fn_802828B0 = .text:0x802828B0; // type:function size:0xA4
fn_80282960 = .text:0x80282960; // type:function size:0xA0
fn_80282A00 = .text:0x80282A00; // type:function size:0x6C
fn_80282A70 = .text:0x80282A70; // type:function size:0x58
fn_80282AD0 = .text:0x80282AD0; // type:function size:0x2D0
fn_80282DA0 = .text:0x80282DA0; // type:function size:0x10
fn_80282DB0 = .text:0x80282DB0; // type:function size:0xF4
fn_80282EB0 = .text:0x80282EB0; // type:function size:0x68
fn_80282F20 = .text:0x80282F20; // type:function size:0x10
fn_80282F30 = .text:0x80282F30; // type:function size:0x3C
fn_80282F70 = .text:0x80282F70; // type:function size:0xC0
fn_80283030 = .text:0x80283030; // type:function size:0x80
fn_802830B0 = .text:0x802830B0; // type:function size:0x10
fn_802830C0 = .text:0x802830C0; // type:function size:0x4
fn_802830D0 = .text:0x802830D0; // type:function size:0x30
fn_80283100 = .text:0x80283100; // type:function size:0x4
fn_80283110 = .text:0x80283110; // type:function size:0x64
fn_80283180 = .text:0x80283180; // type:function size:0xC4
fn_80283250 = .text:0x80283250; // type:function size:0x3C
fn_80283290 = .text:0x80283290; // type:function size:0xC
fn_802832A0 = .text:0x802832A0; // type:function size:0xB4
fn_80283360 = .text:0x80283360; // type:function size:0x4
fn_80283370 = .text:0x80283370; // type:function size:0x24
fn_802833A0 = .text:0x802833A0; // type:function size:0x114
fn_802834C0 = .text:0x802834C0; // type:function size:0x4
fn_802834D0 = .text:0x802834D0; // type:function size:0x1C
fn_802834F0 = .text:0x802834F0; // type:function size:0x50
fn_80283540 = .text:0x80283540; // type:function size:0x10
fn_80283550 = .text:0x80283550; // type:function size:0xAC
fn_80283600 = .text:0x80283600; // type:function size:0xC4
LytGameOver__ctor = .text:0x802836D0; // type:function size:0x30
LytGameOver__ctorCont = .text:0x80283700; // type:function size:0xB0
fn_802837B0 = .text:0x802837B0; // type:function size:0x200
fn_802839B0 = .text:0x802839B0; // type:function size:0x58
fn_80283A10 = .text:0x80283A10; // type:function size:0x6C
fn_80283A80 = .text:0x80283A80; // type:function size:0xA0
fn_80283B20 = .text:0x80283B20; // type:function size:0xA4
fn_80283BD0 = .text:0x80283BD0; // type:function size:0x268
fn_80283E40 = .text:0x80283E40; // type:function size:0x50
fn_80283E90 = .text:0x80283E90; // type:function size:0x10
fn_80283EA0 = .text:0x80283EA0; // type:function size:0x28
fn_80283ED0 = .text:0x80283ED0; // type:function size:0x30
fn_80283F00 = .text:0x80283F00; // type:function size:0x10
fn_80283F10 = .text:0x80283F10; // type:function size:0x28
fn_80283F40 = .text:0x80283F40; // type:function size:0x4
fn_80283F50 = .text:0x80283F50; // type:function size:0x18
fn_80283F70 = .text:0x80283F70; // type:function size:0x4
fn_80283F80 = .text:0x80283F80; // type:function size:0x10
fn_80283F90 = .text:0x80283F90; // type:function size:0xA0
fn_80284030 = .text:0x80284030; // type:function size:0x4
fn_80284040 = .text:0x80284040; // type:function size:0x10
LytGameOver__triggerRespawn = .text:0x80284050; // type:function size:0x44C
fn_802844A0 = .text:0x802844A0; // type:function size:0x4
fn_802844B0 = .text:0x802844B0; // type:function size:0x10
fn_802844C0 = .text:0x802844C0; // type:function size:0x60
fn_80284520 = .text:0x80284520; // type:function size:0xC
fn_80284530 = .text:0x80284530; // type:function size:0x60
fn_80284590 = .text:0x80284590; // type:function size:0xC
fn_802845A0 = .text:0x802845A0; // type:function size:0x1C
fn_802845C0 = .text:0x802845C0; // type:function size:0x1C
fn_802845E0 = .text:0x802845E0; // type:function size:0x1C
fn_80284600 = .text:0x80284600; // type:function size:0x1C
fn_80284620 = .text:0x80284620; // type:function size:0x1C
fn_80284640 = .text:0x80284640; // type:function size:0x1C
fn_80284660 = .text:0x80284660; // type:function size:0x10
fn_80284670 = .text:0x80284670; // type:function size:0x10
fn_80284680 = .text:0x80284680; // type:function size:0x10
fn_80284690 = .text:0x80284690; // type:function size:0x10
fn_802846A0 = .text:0x802846A0; // type:function size:0x10
fn_802846B0 = .text:0x802846B0; // type:function size:0x10
fn_802846C0 = .text:0x802846C0; // type:function size:0x10
fn_802846D0 = .text:0x802846D0; // type:function size:0x10
fn_802846E0 = .text:0x802846E0; // type:function size:0x10
fn_802846F0 = .text:0x802846F0; // type:function size:0x10
fn_80284700 = .text:0x80284700; // type:function size:0x10
fn_80284710 = .text:0x80284710; // type:function size:0x10
fn_80284720 = .text:0x80284720; // type:function size:0x10
fn_80284730 = .text:0x80284730; // type:function size:0x30
fn_80284760 = .text:0x80284760; // type:function size:0x30
fn_80284790 = .text:0x80284790; // type:function size:0x30
fn_802847C0 = .text:0x802847C0; // type:function size:0x30
fn_802847F0 = .text:0x802847F0; // type:function size:0x30
fn_80284820 = .text:0x80284820; // type:function size:0x30
LytGameOver__initStates = .text:0x80284850; // type:function size:0x578
LytGameOver__dtor = .text:0x80284DD0; // type:function size:0x58
LytGameOverMgr__dtor = .text:0x80284E30; // type:function size:0x58
fn_80284E90 = .text:0x80284E90; // type:function size:0x88
fn_80284F20 = .text:0x80284F20; // type:function size:0x88
__ct__14dLytGameOver_cFv = .text:0x80282680; // type:function size:0x22C
__dt__53sFStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c>Fv = .text:0x802828B0; // type:function size:0xA4
__dt__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80282960; // type:function size:0xA0
__dt__30sFStateFct_c<14dLytGameOver_c>Fv = .text:0x80282A00; // type:function size:0x6C
__dt__27sFState_c<14dLytGameOver_c>Fv = .text:0x80282A70; // type:function size:0x58
build__14dLytGameOver_cFv = .text:0x80282AD0; // type:function size:0x2D0
changeState__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x80282DA0; // type:function size:0x10
remove__14dLytGameOver_cFv = .text:0x80282DB0; // type:function size:0xF4
execute__14dLytGameOver_cFv = .text:0x80282EB0; // type:function size:0x68
executeState__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80282F20; // type:function size:0x10
draw__14dLytGameOver_cFv = .text:0x80282F30; // type:function size:0x3C
requestIn__14dLytGameOver_cFPCcll = .text:0x80282F70; // type:function size:0xC0
requestOut__14dLytGameOver_cFl = .text:0x80283030; // type:function size:0x80
getStateID__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802830B0; // type:function size:0x10
initializeState_Init__14dLytGameOver_cFv = .text:0x802830C0; // type:function size:0x4
executeState_Init__14dLytGameOver_cFv = .text:0x802830D0; // type:function size:0x30
finalizeState_Init__14dLytGameOver_cFv = .text:0x80283100; // type:function size:0x4
initializeState_In__14dLytGameOver_cFv = .text:0x80283110; // type:function size:0x64
executeState_In__14dLytGameOver_cFv = .text:0x80283180; // type:function size:0xC4
finalizeState_In__14dLytGameOver_cFv = .text:0x80283250; // type:function size:0x3C
initializeState_Wait__14dLytGameOver_cFv = .text:0x80283290; // type:function size:0xC
executeState_Wait__14dLytGameOver_cFv = .text:0x802832A0; // type:function size:0xB4
finalizeState_Wait__14dLytGameOver_cFv = .text:0x80283360; // type:function size:0x4
initializeState_Out__14dLytGameOver_cFv = .text:0x80283370; // type:function size:0x24
executeState_Out__14dLytGameOver_cFv = .text:0x802833A0; // type:function size:0x114
finalizeState_Out__14dLytGameOver_cFv = .text:0x802834C0; // type:function size:0x4
init__14dLytGameOver_cFv = .text:0x802834D0; // type:function size:0x1C
setAnm__14dLytGameOver_cFi = .text:0x802834F0; // type:function size:0x50
stopAnm__14dLytGameOver_cFi = .text:0x80283540; // type:function size:0x10
applyText__14dLytGameOver_cFv = .text:0x80283550; // type:function size:0xAC
setupButtons__14dLytGameOver_cFv = .text:0x80283600; // type:function size:0xC4
dLytGameOverMgr_c_classInit__Fv = .text:0x802836D0; // type:function size:0x30
__ct__17dLytGameOverMgr_cFv = .text:0x80283700; // type:function size:0xB0
__dt__14dLytGameOver_cFv = .text:0x802837B0; // type:function size:0x200
__dt__30sFState_c<17dLytGameOverMgr_c>Fv = .text:0x802839B0; // type:function size:0x58
__dt__33sFStateFct_c<17dLytGameOverMgr_c>Fv = .text:0x80283A10; // type:function size:0x6C
__dt__86sStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80283A80; // type:function size:0xA0
__dt__56sFStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c>Fv = .text:0x80283B20; // type:function size:0xA4
__dt__17dLytGameOverMgr_cFv = .text:0x80283BD0; // type:function size:0x268
create__17dLytGameOverMgr_cFv = .text:0x80283E40; // type:function size:0x50
changeState__86sStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x80283E90; // type:function size:0x10
doDelete__17dLytGameOverMgr_cFv = .text:0x80283EA0; // type:function size:0x28
execute__17dLytGameOverMgr_cFv = .text:0x80283ED0; // type:function size:0x30
executeState__86sStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80283F00; // type:function size:0x10
draw__17dLytGameOverMgr_cFv = .text:0x80283F10; // type:function size:0x28
initializeState_Init__17dLytGameOverMgr_cFv = .text:0x80283F40; // type:function size:0x4
executeState_Init__17dLytGameOverMgr_cFv = .text:0x80283F50; // type:function size:0x18
finalizeState_Init__17dLytGameOverMgr_cFv = .text:0x80283F70; // type:function size:0x4
initializeState_FadeOut__17dLytGameOverMgr_cFv = .text:0x80283F80; // type:function size:0x10
executeState_FadeOut__17dLytGameOverMgr_cFv = .text:0x80283F90; // type:function size:0xA0
finalizeState_FadeOut__17dLytGameOverMgr_cFv = .text:0x80284030; // type:function size:0x4
initializeState_Select__17dLytGameOverMgr_cFv = .text:0x80284040; // type:function size:0x10
executeState_Select__17dLytGameOverMgr_cFv = .text:0x80284050; // type:function size:0x44C
finalizeState_Select__17dLytGameOverMgr_cFv = .text:0x802844A0; // type:function size:0x4
init__17dLytGameOverMgr_cFv = .text:0x802844B0; // type:function size:0x10
build__33sFStateFct_c<17dLytGameOverMgr_c>FRC12sStateIDIf_c = .text:0x802844C0; // type:function size:0x60
dispose__33sFStateFct_c<17dLytGameOverMgr_c>FRP10sStateIf_c = .text:0x80284520; // type:function size:0xC
build__30sFStateFct_c<14dLytGameOver_c>FRC12sStateIDIf_c = .text:0x80284530; // type:function size:0x60
dispose__30sFStateFct_c<14dLytGameOver_c>FRP10sStateIf_c = .text:0x80284590; // type:function size:0xC
initialize__30sFState_c<17dLytGameOverMgr_c>Fv = .text:0x802845A0; // type:function size:0x1C
execute__30sFState_c<17dLytGameOverMgr_c>Fv = .text:0x802845C0; // type:function size:0x1C
finalize__30sFState_c<17dLytGameOverMgr_c>Fv = .text:0x802845E0; // type:function size:0x1C
initialize__27sFState_c<14dLytGameOver_c>Fv = .text:0x80284600; // type:function size:0x1C
execute__27sFState_c<14dLytGameOver_c>Fv = .text:0x80284620; // type:function size:0x1C
finalize__27sFState_c<14dLytGameOver_c>Fv = .text:0x80284640; // type:function size:0x1C
initializeState__86sStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80284660; // type:function size:0x10
finalizeState__86sStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80284670; // type:function size:0x10
refreshState__86sStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80284680; // type:function size:0x10
getState__86sStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80284690; // type:function size:0x10
getNewStateID__86sStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802846A0; // type:function size:0x10
getStateID__86sStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802846B0; // type:function size:0x10
getOldStateID__86sStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802846C0; // type:function size:0x10
initializeState__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802846D0; // type:function size:0x10
finalizeState__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802846E0; // type:function size:0x10
refreshState__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802846F0; // type:function size:0x10
getState__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80284700; // type:function size:0x10
getNewStateID__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80284710; // type:function size:0x10
getOldStateID__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80284720; // type:function size:0x10
finalizeState__29sFStateID_c<14dLytGameOver_c>CFR14dLytGameOver_c = .text:0x80284730; // type:function size:0x30
executeState__29sFStateID_c<14dLytGameOver_c>CFR14dLytGameOver_c = .text:0x80284760; // type:function size:0x30
initializeState__29sFStateID_c<14dLytGameOver_c>CFR14dLytGameOver_c = .text:0x80284790; // type:function size:0x30
finalizeState__32sFStateID_c<17dLytGameOverMgr_c>CFR17dLytGameOverMgr_c = .text:0x802847C0; // type:function size:0x30
executeState__32sFStateID_c<17dLytGameOverMgr_c>CFR17dLytGameOverMgr_c = .text:0x802847F0; // type:function size:0x30
initializeState__32sFStateID_c<17dLytGameOverMgr_c>CFR17dLytGameOverMgr_c = .text:0x80284820; // type:function size:0x30
__sinit_\d_lyt_game_over_cpp = .text:0x80284850; // type:function size:0x578
__dt__29sFStateID_c<14dLytGameOver_c>Fv = .text:0x80284DD0; // type:function size:0x58
__dt__32sFStateID_c<17dLytGameOverMgr_c>Fv = .text:0x80284E30; // type:function size:0x58
isSameName__32sFStateID_c<17dLytGameOverMgr_c>CFPCc = .text:0x80284E90; // type:function size:0x88
isSameName__29sFStateID_c<14dLytGameOver_c>CFPCc = .text:0x80284F20; // type:function size:0x88
LytSaveMgr__ctor = .text:0x80284FB0; // type:function size:0x30
LytSaveMgr__ctorCont = .text:0x80284FE0; // type:function size:0xB0
fn_80285090 = .text:0x80285090; // type:function size:0x58
@@ -28667,7 +28667,9 @@ lbl_804EE578 = .rodata:0x804EE578; // type:object size:0x30 align:4 data:float
TgMassObj__GRASS_A_TYPES = .rodata:0x804EE5A8; // type:object size:0xF8 data:4byte
lbl_804EE6A0 = .rodata:0x804EE6A0; // type:object size:0x20
lbl_804EE6C0 = .rodata:0x804EE6C0; // type:object size:0x40 data:4byte
lbl_804EE700 = .rodata:0x804EE700; // type:object size:0x78 data:4byte
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
lbl_804EE778 = .rodata:0x804EE778; // type:object size:0x18
lbl_804EE790 = .rodata:0x804EE790; // type:object size:0x48
lbl_804EE7D8 = .rodata:0x804EE7D8; // type:object size:0x18 data:4byte
@@ -36055,22 +36057,32 @@ lbl_80537ACC = .data:0x80537ACC; // type:object size:0x18
lbl_80537AE4 = .data:0x80537AE4; // type:object size:0x1C
lbl_80537B00 = .data:0x80537B00; // type:object size:0x1C
lbl_80537B1C = .data:0x80537B1C; // type:object size:0x18
lbl_80537B34 = .data:0x80537B34; // type:object size:0xA0
lbl_80537B34 = .data:0x80537B34; // type:object size:0xC
lbl_80537B40 = .data:0x80537B40; // type:object size:0xC data:string
lbl_80537B4C = .data:0x80537B4C; // type:object size:0xC data:string
lbl_80537B58 = .data:0x80537B58; // type:object size:0xC data:string
lbl_80537B64 = .data:0x80537B64; // type:object size:0x9 data:string
lbl_80537B70 = .data:0x80537B70; // type:object size:0x12 data:string
lbl_80537B84 = .data:0x80537B84; // type:object size:0x12 data:string
lbl_80537B98 = .data:0x80537B98; // type:object size:0x12 data:string
lbl_80537BAC = .data:0x80537BAC; // type:object size:0xC data:string
lbl_80537BB8 = .data:0x80537BB8; // type:object size:0xD data:string
lbl_80537BC8 = .data:0x80537BC8; // type:object size:0x9 data:string
g_profile_LYT_GAMEOVER_MGR = .data:0x80537BD4; // type:object size:0xC
lbl_80537BE0 = .data:0x80537BE0; // type:object size:0x10 data:string
lbl_80537BF0 = .data:0x80537BF0; // type:object size:0x10 data:string
lbl_80537C00 = .data:0x80537C00; // type:object size:0x50
lbl_80537C50 = .data:0x80537C50; // type:object size:0x30
lbl_80537C80 = .data:0x80537C80; // type:object size:0x30
lbl_80537CB0 = .data:0x80537CB0; // type:object size:0x18
lbl_80537CC8 = .data:0x80537CC8; // type:object size:0x18
lbl_80537CE0 = .data:0x80537CE0; // type:object size:0x10
lbl_80537CF0 = .data:0x80537CF0; // type:object size:0x30
lbl_80537D20 = .data:0x80537D20; // type:object size:0x30
lbl_80537D50 = .data:0x80537D50; // type:object size:0x18
lbl_80537D68 = .data:0x80537D68; // type:object size:0x390
lbl_805380F8 = .data:0x805380F8; // type:object size:0x34
lbl_8053812C = .data:0x8053812C; // type:object size:0x34
__vt__17dLytGameOverMgr_c = .data:0x80537C00; // type:object size:0x50
__vt__56sFStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c> = .data:0x80537C50; // type:object size:0x30
__vt__86sStateMgr_c<17dLytGameOverMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80537C80; // type:object size:0x30
__vt__33sFStateFct_c<17dLytGameOverMgr_c> = .data:0x80537CB0; // type:object size:0x18
__vt__30sFState_c<17dLytGameOverMgr_c> = .data:0x80537CC8; // type:object size:0x18
__vt__14dLytGameOver_c = .data:0x80537CE0; // type:object size:0x10
__vt__53sFStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c> = .data:0x80537CF0; // type:object size:0x30
__vt__83sStateMgr_c<14dLytGameOver_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80537D20; // type:object size:0x30
__vt__30sFStateFct_c<14dLytGameOver_c> = .data:0x80537D50; // type:object size:0x18
__vt__27sFState_c<14dLytGameOver_c> = .data:0x80537D68; // type:object size:0x390
__vt__32sFStateID_c<17dLytGameOverMgr_c> = .data:0x805380F8; // type:object size:0x34
__vt__29sFStateID_c<14dLytGameOver_c> = .data:0x8053812C; // type:object size:0x34
g_profile_LYT_SAVE_MGR = .data:0x80538160; // type:object size:0xC
lbl_8053816C = .data:0x8053816C; // type:object size:0xC data:string
lbl_80538178 = .data:0x80538178; // type:object size:0xC data:string
@@ -40503,10 +40515,10 @@ lbl_80573B48 = .sdata:0x80573B48; // type:object size:0x8
lbl_80573B50 = .sdata:0x80573B50; // type:object size:0x8
lbl_80573B58 = .sdata:0x80573B58; // type:object size:0x4 data:4byte
lbl_80573B5C = .sdata:0x80573B5C; // type:object size:0x4
lbl_80573B60 = .sdata:0x80573B60; // type:object size:0x8
lbl_80573B68 = .sdata:0x80573B68; // type:object size:0x8
lbl_80573B70 = .sdata:0x80573B70; // type:object size:0x8
lbl_80573B78 = .sdata:0x80573B78; // type:object size:0x8
lbl_80573B60 = .sdata:0x80573B60; // type:object size:0x5 data:string
lbl_80573B68 = .sdata:0x80573B68; // type:object size:0x5 data:string
lbl_80573B70 = .sdata:0x80573B70; // type:object size:0x5 data:string
lbl_80573B78 = .sdata:0x80573B78; // type:object size:0x5 data:string
lbl_80573B80 = .sdata:0x80573B80; // type:object size:0x8
lbl_80573B88 = .sdata:0x80573B88; // type:object size:0x8 data:string
lbl_80573B90 = .sdata:0x80573B90; // type:object size:0x4 data:4byte
@@ -41688,9 +41700,9 @@ lbl_80575778 = .sbss:0x80575778; // type:object size:0x4 align:4 data:float
lbl_8057577C = .sbss:0x8057577C; // type:object size:0x4 data:4byte
sInstance__10dScTitle_c = .sbss:0x80575780; // type:object size:0x4 data:4byte
sPreventEmptyFilesTitle__10dScTitle_c = .sbss:0x80575784; // type:object size:0x1 data:byte
lbl_80575785 = .sbss:0x80575785; // type:object size:0x1
lbl_80575786 = .sbss:0x80575786; // type:object size:0x1 data:byte
lbl_80575787 = .sbss:0x80575787; // type:object size:0x1 data:byte
lbl_80575785__10dScTitle_c = .sbss:0x80575785; // type:object size:0x1
lbl_80575786__10dScTitle_c = .sbss:0x80575786; // type:object size:0x1 data:byte
lbl_80575787__10dScTitle_c = .sbss:0x80575787; // type:object size:0x1 data:byte
CAMERAS = .sbss:0x80575788; // type:object size:0x4 data:4byte
LINK__7dAcPy_c = .sbss:0x8057578C; // type:object size:0x4 data:4byte
SCRAPPER_PTR = .sbss:0x80575790; // type:object size:0x4 data:4byte
@@ -41831,7 +41843,7 @@ lbl_80575934 = .sbss:0x80575934; // type:object size:0x4 data:4byte
lbl_80575938 = .sbss:0x80575938; // type:object size:0x4 align:4 data:float
lbl_8057593C = .sbss:0x8057593C; // type:object size:0x4 align:4 data:float
LYT_PAUSE_DISP = .sbss:0x80575940; // type:object size:0x8 data:4byte
sInstance__14dLytGameOver_c = .sbss:0x80575948; // type:object size:0x8 data:4byte
sInstance__17dLytGameOverMgr_c = .sbss:0x80575948; // type:object size:0x8 data:4byte
sInstance__13dLytSaveMgr_c = .sbss:0x80575950; // type:object size:0x8 data:4byte
lbl_80575958 = .sbss:0x80575958; // type:object size:0x1 data:byte
lbl_80575959 = .sbss:0x80575959; // type:object size:0x1 data:byte
+7
View File
@@ -8,6 +8,13 @@
class dFader_c : public mFader_c {
public:
enum FadeType_e {
FADER_BLACK = 0,
FADER_GREY = 1,
FADER_LYT = 2,
FADER_SCREEN = 3,
};
dFader_c() : mpColorFader(nullptr), mpLytFader(nullptr), mpScreenFader(nullptr), field_0x14(0) {}
virtual ~dFader_c();
+9 -5
View File
@@ -3,10 +3,10 @@
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/d_camera.h"
#include "d/d_dylink.h"
#include "d/d_fader.h"
#include "d/d_scene.h"
#include "d/d_camera.h"
#include "egg/gfx/eggScreen.h"
#include "f/f_profile_name.h"
#include "m/m2d.h"
@@ -130,6 +130,10 @@ public:
virtual void deleteReady() override;
void triggerExit(s32 room, u16 exitIndex, s32 forcedNight = 2, s32 forcedTrial = 2);
void triggerEntrance(
const char *stageName, u8 roomid, u8 layer, u8 entrance, int forcedNight = SpawnInfo::RETAIN_TOD, int forcedTrial = SpawnInfo::RETAIN_TRIAL, u8 transitionType = dFader_c::FADER_BLACK,
u16 transitionFadeFrames = 15, s8 field0x28 = -1
);
// void triggerEntrance(const char *stageName, u8 room, );
const LinkReloadInfo &getLinkReloadInfo() const;
@@ -152,7 +156,6 @@ public:
return sInstance;
}
bool setReloadTrigger(fProfile::PROFILE_NAME_e reloadTrigger);
void setRespawnInfo(const mVec3_c &linkPos, const mAng3_c &linkRot, bool unk);
void setSpawnInfo(u8 roomid, const mVec3_c &pos, mAng rot);
@@ -206,13 +209,14 @@ public:
return mScreen1.fn_801BBEC0();
}
static bool sCopyFileBToCurrentAfterRespawn;
static bool sDoSomethingWithFileAOnTransition;
static bool sPreventClearingSomeFlag;
protected:
static u32 sUpdateFrameCount;
static u8 sCurrentLayer;
static u8 sReloaderType;
static bool sCopyFileBToCurrentAfterRespawn;
static bool sDoSomethingWithFileAOnTransition;
static bool sPreventClearingSomeFlag;
static void someGfxThingCallback();
void somethingWithScreen();
+8
View File
@@ -15,6 +15,14 @@ public:
static dScTitle_c *sInstance;
static void setLbl_80575787(bool v) {
lbl_80575787 = v;
}
static u8 lbl_80575785;
static u8 lbl_80575786;
static u8 lbl_80575787;
static void loadTitleScreen(u32 params);
static void setSomethingSkbRelated();
+85 -4
View File
@@ -1,19 +1,100 @@
#ifndef D_LYT_GAME_OVER_H
#define D_LYT_GAME_OVER_H
#include "common.h"
#include "d/d_base.h"
#include "d/lyt/d2d.h"
#include "d/lyt/msg_window/d_lyt_msg_window_select_btn.h"
#include "s/s_State.hpp"
#include "sized_string.h"
class dLytGameOver_c : public dBase_c {
class dLytGameOver_c {
public:
dLytGameOver_c();
virtual ~dLytGameOver_c();
virtual ~dLytGameOver_c() {}
static dLytGameOver_c *GetInstance() {
bool build();
bool remove();
bool execute();
bool draw();
bool requestIn(const char *text, s32 p1, s32 p2);
bool requestOut(s32 outType);
s32 getSelectedOption() const {
return mSelectedOption;
}
bool isChangingState() const {
return mIsChangingState;
}
void setField_0x1338(bool v) {
field_0x1338 = v;
}
private:
STATE_FUNC_DECLARE(dLytGameOver_c, Init);
STATE_FUNC_DECLARE(dLytGameOver_c, In);
STATE_FUNC_DECLARE(dLytGameOver_c, Wait);
STATE_FUNC_DECLARE(dLytGameOver_c, Out);
void init();
void setAnm(int idx);
void stopAnm(int idx);
void applyText();
void setupButtons();
/* 0x0004 */ UI_STATE_MGR_DECLARE(dLytGameOver_c);
/* 0x0044 */ d2d::ResAccIf_c mResAcc1;
/* 0x03B0 */ d2d::ResAccIf_c mResAcc2;
/* 0x0720 */ d2d::LytBase_c mLyt;
/* 0x07B0 */ d2d::AnmGroup_c mAnm[5];
/* 0x08F0 */ d2d::SubPaneList mSubpaneList;
/* 0x08FC */ d2d::SubPaneListNode mSubpanes[1];
/* 0x090C */ dLytMsgWindowSelectBtn_c mSelectBtn;
/* 0x12E0 */ SizedString<0x40> mLabel;
/* 0x1320 */ s32 mVariant;
/* 0x1324 */ s32 mInType;
/* 0x1328 */ s32 mOutType;
/* 0x132C */ s32 mStep;
/* 0x1330 */ s32 mSelectedOption;
/* 0x1334 */ bool mIsVisible;
/* 0x1335 */ bool mIsChangingState;
/* 0x1336 */ bool mInRequest;
/* 0x1337 */ bool mOutRequest;
/* 0x1338 */ bool field_0x1338;
};
class dLytGameOverMgr_c : public dBase_c {
public:
dLytGameOverMgr_c();
virtual ~dLytGameOverMgr_c();
int create() override;
int doDelete() override;
int execute() override;
int draw() override;
static dLytGameOverMgr_c *GetInstance() {
return sInstance;
}
private:
static dLytGameOver_c *sInstance;
STATE_FUNC_DECLARE(dLytGameOverMgr_c, Init);
STATE_FUNC_DECLARE(dLytGameOverMgr_c, FadeOut);
STATE_FUNC_DECLARE(dLytGameOverMgr_c, Select);
void init();
static dLytGameOverMgr_c *sInstance;
/* 0x0068 */ UI_STATE_MGR_DECLARE(dLytGameOverMgr_c);
/* 0x00A4 */ dLytGameOver_c mMain;
/* 0x13E0 */ s32 mStep;
/* 0x13E4 */ s32 mTimer;
};
#endif
+5 -5
View File
@@ -174,16 +174,16 @@ public:
/* 8000BDD0 */ u16 getHitCountFromEnemy(u8 enemy);
/* 8000BE50 */ void setLoadRoomT1_FileB(s16 roomId);
/* 8000BE80 */ s16 getLoadRoomT1_FileB();
/* 8000BE80 */ u16 getLoadRoomT1_FileB();
/* 8000BE90 */ void setEntranceT1_FileB(u8 entrance);
/* 8000BEC0 */ u8 getEntranceT1_FileB();
/* 8000BED0 */ void setAreaT1_FileB(const char *name);
/* 8000BF80 */ char *getAreaT1_FileB();
/* 8000C080 */ void setNightT1_FileB(bool night);
/* 8000C0B0 */ bool getNightT1_FileB();
/* 8000C0B0 */ u8 getNightT1_FileB();
/* 8000C0C0 */ void setEntranceT1LoadFlag_FileB(u8 flag);
/* 8000C0F0 */ void setForcedLayerT1_FileB(u8 layer);
/* 8000C120 */ void getForcedLayerT1_FileB();
/* 8000C120 */ u8 getForcedLayerT1_FileB();
/* 8000C130 */ void setCurrentHealth_FileB(s16 health);
/* 8000C160 */ void setHeroname(const wchar_t *name);
@@ -208,7 +208,7 @@ public:
/* 8000CA00 */ bool getNightT1();
/* 8000CA50 */ void setNightT3(bool night);
/* 8000CA80 */ bool getNightT3();
/* 8000CA80 */ u8 getNightT3();
/* 8000CAD0 */ bool isNew_FileA();
@@ -358,8 +358,8 @@ public:
mSelectedFile = val;
}
private:
static FileManager *sInstance;
private:
};
#endif
+1
View File
@@ -24,6 +24,7 @@ public:
static void create();
static void destroy();
static void execute();
private:
MinigameManager() {}
virtual ~MinigameManager() {}
+1
View File
@@ -2,5 +2,6 @@
#define MISC_ACTOR_H
bool checkIsInSkykeepPuzzle();
void restoreSkykeepPuzzleFromGlobal();
#endif
+7 -7
View File
@@ -36,18 +36,18 @@ bool dFader_c::create() {
return false;
}
mFadeOutType = 0;
mFadeInType = 0;
mFadeOutType = FADER_BLACK;
mFadeInType = FADER_BLACK;
mFadeInFrame = 0x1E;
mFadeOutFrame = 0x1E;
setFader(0);
setFader(FADER_BLACK);
return true;
}
bool dFader_c::setFader(s32 fader) {
switch (fader) {
case 0:
case FADER_BLACK:
if (mFader_c::setFader(mpColorFader)) {
if (mpColorFader->getStatus() == mFaderBase_c::FADED_IN) {
mpColorFader->setColor(mColor(0, 0, 0, 0xFF));
@@ -55,7 +55,7 @@ bool dFader_c::setFader(s32 fader) {
return true;
}
break;
case 1:
case FADER_GREY:
if (mFader_c::setFader(mpColorFader)) {
if (mpColorFader->getStatus() == mFaderBase_c::FADED_IN) {
mpColorFader->setColor(mFaderColor);
@@ -63,7 +63,7 @@ bool dFader_c::setFader(s32 fader) {
return true;
}
break;
case 2:
case FADER_LYT:
if (mFader_c::setFader(mpLytFader)) {
if (mpLytFader->getStatus() == mFaderBase_c::FADED_IN) {
mpLytFader->setColor(mColor(0, 0, 0, 0xFF));
@@ -71,7 +71,7 @@ bool dFader_c::setFader(s32 fader) {
return true;
}
break;
case 3:
case FADER_SCREEN:
if (mFader_c::setFader(mpScreenFader)) {
if (mpScreenFader->getStatus() == mFaderBase_c::FADED_IN) {
mpScreenFader->setColor(mColor(0, 0, 0, 0xFF));
+2 -1
View File
@@ -2,6 +2,7 @@
#include "common.h"
#include "d/d_base.h"
#include "d/d_fader.h"
#include "d/d_gfx.h"
#include "d/d_stage_mgr.h"
#include "d/flag/storyflag_manager.h"
@@ -104,7 +105,7 @@ void dScGame_c::deleteReady() {
sFPhaseBase::sFPhaseState dScGame_c::cb1() {
mFader.create();
mFader.setFrames(15, 15);
mFader.setTypes(1, 1);
mFader.setTypes(dFader_c::FADER_GREY, dFader_c::FADER_GREY);
mFader.initForLyt();
mRelCtrl.do_link();
mLayoutCtrl.load(nullptr);
+8 -8
View File
@@ -2,6 +2,7 @@
#include "common.h"
#include "d/d_dvd_unk.h"
#include "d/d_fader.h"
#include "d/d_heap.h"
#include "d/d_message.h"
#include "d/d_pad.h"
@@ -24,11 +25,10 @@ SPECIAL_BASE_PROFILE(TITLE, dScTitle_c, fProfile::TITLE, 0, 0);
dScTitle_c *dScTitle_c::sInstance;
bool dScTitle_c::sPreventEmptyFilesTitle;
extern "C" {
u8 lbl_80575785;
u8 lbl_80575786;
u8 lbl_80575787;
}
u8 dScTitle_c::lbl_80575785;
u8 dScTitle_c::lbl_80575786;
u8 dScTitle_c::lbl_80575787;
static u16 sModulesToLoad[] = {
// ??? not sure what these correspond to
@@ -159,11 +159,11 @@ void dScTitle_c::loadTitleScreen(u32 params) {
params = 2;
}
TITLE_SCREEN_CHANGE = params;
setRootActor(fProfile::TITLE, params, 0, 0);
setRootActor(fProfile::TITLE, params, dFader_c::FADER_BLACK, dFader_c::FADER_BLACK);
if (checkAllSaveFilesEmpty() == true) {
actuallyTriggerEntrance("F000", 0, 26, 55, 0, 0, 0, 15, -1);
actuallyTriggerEntrance("F000", 0, 26, 55, 0, 0, dFader_c::FADER_BLACK, 15, -1);
} else {
actuallyTriggerEntrance("F000", 0, 28, 48, 0, 0, 0, 15, -1);
actuallyTriggerEntrance("F000", 0, 28, 48, 0, 0, dFader_c::FADER_BLACK, 15, -1);
}
fn_80362150(ENEMY_SOUND_MGR, 30);
}
+2 -1
View File
@@ -4,6 +4,7 @@
#include "d/col/bg/d_bg_s.h"
#include "d/d_base.h"
#include "d/d_bzs_types.h"
#include "d/d_fader.h"
#include "d/d_room.h"
#include "d/d_rumble.h"
#include "d/d_sc_game.h"
@@ -124,7 +125,7 @@ sFPhaseBase::sFPhaseState dStage_c::createRooms() {
// TODO
// if (dScGame_c::sCo)
mFader.create();
mFader.setTypes(1, 1);
mFader.setTypes(dFader_c::FADER_GREY, dFader_c::FADER_GREY);
mFader.setFadeInFrame(1);
mFader.fadeIn();
mFader.calc();
+584
View File
@@ -0,0 +1,584 @@
#include "d/lyt/d_lyt_game_over.h"
#include "common.h"
#include "d/d_base.h"
#include "d/d_fader.h"
#include "d/d_message.h"
#include "d/d_sc_game.h"
#include "d/d_sc_title.h"
#include "d/d_stage.h"
#include "d/flag/sceneflag_manager.h"
#include "d/lyt/d2d.h"
#include "d/lyt/d_window.h"
#include "d/snd/d_snd_wzsound.h"
#include "f/f_base.h"
#include "nw4r/lyt/lyt_group.h"
#include "toBeSorted/arc_managers/layout_arc_manager.h"
#include "toBeSorted/file_manager.h"
#include "toBeSorted/minigame_mgr.h"
#include "toBeSorted/misc_actor.h"
#include "toBeSorted/music_mgrs.h"
STATE_DEFINE(dLytGameOver_c, Init);
STATE_DEFINE(dLytGameOver_c, In);
STATE_DEFINE(dLytGameOver_c, Wait);
STATE_DEFINE(dLytGameOver_c, Out);
static const d2d::LytBrlanMapping brlanMap2[] = {
{"gameOver_02_gameOver.brlan", "G_gameOver_00"},
{ "gameOver_02_loop.brlan", "G_loop_00"},
{ "gameOver_02_textOut.brlan", "G_textInOut_00"},
{ "gameOver_02_textIn.brlan", "G_textInOut_00"},
{ "gameOver_02_fade.brlan", "G_fade_00"},
};
static const d2d::LytBrlanMapping brlanMap3[] = {
{"gameOver_03_gameOver.brlan", "G_gameOver_00"},
{ "gameOver_03_loop.brlan", "G_loop_00"},
{ "gameOver_03_textOut.brlan", "G_textInOut_00"},
{ "gameOver_03_textIn.brlan", "G_textInOut_00"},
{ "gameOver_03_fade.brlan", "G_fade_00"},
};
static const d2d::LytBrlanMapping brlanMap1[] = {
{"gameOver_01_gameOver.brlan", "G_gameOver_00"},
{ "gameOver_01_loop.brlan", "G_loop_00"},
{ "gameOver_01_textOut.brlan", "G_textInOut_00"},
{ "gameOver_01_textIn.brlan", "G_textInOut_00"},
{ "gameOver_01_fade.brlan", "G_fade_00"},
};
#define GAME_OVER_ANIM_GAME_OVER 0
#define GAME_OVER_ANIM_LOOP 1
#define GAME_OVER_ANIM_TEXT_OUT 2
#define GAME_OVER_ANIM_TEXT_IN 3
#define GAME_OVER_ANIM_TEXT_FADE 4
#define GAME_OVER_NUM_ANIMS 5
static const char *sGroupName = "G_ref_00";
dLytGameOver_c::dLytGameOver_c() : mStateMgr(*this) {
init();
}
extern "C" u8 fn_80054F30();
bool dLytGameOver_c::build() {
u8 lang = fn_80054F30();
s32 variant;
if (lang == 3) {
variant = 1;
} else if (lang == 4) {
variant = 2;
} else {
variant = 0;
}
if (variant == 0) {
void *data = LayoutArcManager::GetInstance()->getLoadedData("gameOver_01");
mResAcc1.attach(data, "");
} else if (variant == 1) {
void *data = LayoutArcManager::GetInstance()->getLoadedData("gameOver_02");
mResAcc1.attach(data, "");
} else {
void *data = LayoutArcManager::GetInstance()->getLoadedData("gameOver_03");
mResAcc1.attach(data, "");
}
void *data2 = LayoutArcManager::GetInstance()->getLoadedData("System2D");
mResAcc2.attach(data2, "");
switch (variant) {
case 1: {
mLyt.setResAcc(&mResAcc1);
mLyt.build("gameOver_02.brlyt", nullptr);
for (int i = 0; i < GAME_OVER_NUM_ANIMS; i++) {
mAnm[i].init(brlanMap2[i].mFile, &mResAcc1, mLyt.getLayout(), brlanMap2[i].mName);
}
break;
}
case 2: {
mLyt.setResAcc(&mResAcc1);
mLyt.build("gameOver_03.brlyt", nullptr);
for (int i = 0; i < GAME_OVER_NUM_ANIMS; i++) {
mAnm[i].init(brlanMap3[i].mFile, &mResAcc1, mLyt.getLayout(), brlanMap3[i].mName);
}
break;
}
default: {
mLyt.setResAcc(&mResAcc1);
mLyt.build("gameOver_01.brlyt", nullptr);
for (int i = 0; i < GAME_OVER_NUM_ANIMS; i++) {
mAnm[i].init(brlanMap1[i].mFile, &mResAcc1, mLyt.getLayout(), brlanMap1[i].mName);
}
break;
}
}
mLyt.setPriority(0x8A);
for (int i = 0; i < 1; i++) {
mSubpanes[i].mpLytPane = &mSelectBtn;
mSelectBtn.build(&mResAcc2);
mSubpaneList.PushBack(&mSubpanes[i]);
}
if (mLyt.getLayout()->GetGroupContainer() != nullptr) {
nw4r::lyt::Group *g = mLyt.getLayout()->GetGroupContainer()->FindGroupByName(sGroupName);
if (g != nullptr) {
d2d::dSubPane::linkMeters(g, &mSubpaneList);
}
}
mSelectBtn.setField_0x9C4(1);
mSelectBtn.setField_0x99C(1);
mSelectBtn.setField_0x9A0(2);
mStateMgr.changeState(StateID_Init);
field_0x1338 = true;
return true;
}
bool dLytGameOver_c::remove() {
for (d2d::SubPaneList::Iterator it = mSubpaneList.GetBeginIter(); it != mSubpaneList.GetEndIter(); ++it) {
d2d::dSubPane *subPane = it->mpLytPane;
if (subPane != nullptr) {
nw4r::lyt::Pane *parent = subPane->getPane()->GetParent();
parent->RemoveChild(subPane->getPane());
}
}
for (int i = 0; i < 1; i++) {
mSubpanes[i].mpLytPane->remove();
}
mLyt.unbindAnims();
for (int i = 0; i < GAME_OVER_NUM_ANIMS; i++) {
mAnm[i].remove();
}
mResAcc2.detach();
mResAcc1.detach();
dBase_c::s_NextExecuteControlFlags &= ~0x200;
dBase_c::s_DrawControlFlags &= ~0x200;
return true;
}
bool dLytGameOver_c::execute() {
mStateMgr.executeState();
mLyt.calc();
for (int i = 0; i < 1; i++) {
mSubpanes[i].mpLytPane->execute();
}
return true;
}
bool dLytGameOver_c::draw() {
if (mIsVisible != true) {
return true;
}
mLyt.addToDrawList();
return true;
}
bool dLytGameOver_c::requestIn(const char *label, s32 p1, s32 p2) {
mLabel = label;
mVariant = p1;
mInType = p2;
mInRequest = true;
return true;
}
bool dLytGameOver_c::requestOut(s32 type) {
if (!mStateMgr.getStateID()->isEqual(StateID_Wait)) {
return false;
}
mOutType = type;
mOutRequest = true;
return true;
}
void dLytGameOver_c::initializeState_Init() {
init();
}
void dLytGameOver_c::executeState_Init() {
if (mInRequest == true) {
mInRequest = false;
mStateMgr.changeState(StateID_In);
}
}
void dLytGameOver_c::finalizeState_Init() {}
void dLytGameOver_c::initializeState_In() {
mStep = 0;
mIsVisible = true;
u32 anim = GAME_OVER_ANIM_TEXT_IN;
if (mInType == 0) {
anim = GAME_OVER_ANIM_GAME_OVER;
}
setAnm(anim);
applyText();
field_0x1338 = 0;
}
void dLytGameOver_c::executeState_In() {
u32 anim = GAME_OVER_ANIM_TEXT_IN;
if (mInType == 0) {
anim = GAME_OVER_ANIM_GAME_OVER;
}
d2d::AnmGroup_c &anm = mAnm[anim];
if (anm.isEndReached() == true) {
stopAnm(anim);
setAnm(GAME_OVER_ANIM_LOOP);
mStateMgr.changeState(StateID_Wait);
setupButtons();
}
anm.play();
}
void dLytGameOver_c::finalizeState_In() {
mSelectBtn.getPane()->SetVisible(true);
}
void dLytGameOver_c::initializeState_Wait() {
mStep = 0;
}
void dLytGameOver_c::executeState_Wait() {
d2d::AnmGroup_c &anm = mAnm[GAME_OVER_ANIM_LOOP];
anm.play();
switch (mStep) {
case 0: {
if (mSelectBtn.getField_0x9B4() >= 0) {
mSelectedOption = mSelectBtn.getField_0x9B4();
mStep += 1;
mIsChangingState = true;
}
break;
}
case 1: {
if (mStep == 1 && mOutRequest == true) {
mIsChangingState = false;
mOutRequest = false;
mStateMgr.changeState(StateID_Out);
}
break;
}
}
}
void dLytGameOver_c::finalizeState_Wait() {}
void dLytGameOver_c::initializeState_Out() {
mStep = 0;
if (mOutType == 0) {
setAnm(GAME_OVER_ANIM_TEXT_OUT);
} else {
setAnm(GAME_OVER_ANIM_TEXT_FADE);
}
}
void dLytGameOver_c::executeState_Out() {
u32 anim = GAME_OVER_ANIM_TEXT_OUT;
if (mOutType != 0) {
anim = GAME_OVER_ANIM_TEXT_FADE;
}
d2d::AnmGroup_c &anm = mAnm[anim];
switch (mStep) {
case 0: {
if (anm.isEndReached() == true) {
stopAnm(GAME_OVER_ANIM_TEXT_OUT);
stopAnm(GAME_OVER_ANIM_LOOP);
mIsVisible = false;
mIsChangingState = true;
mSelectBtn.getPane()->SetVisible(false);
mStep = 1;
}
break;
}
case 1: {
mStateMgr.changeState(StateID_Init);
break;
}
}
anm.play();
}
void dLytGameOver_c::finalizeState_Out() {}
void dLytGameOver_c::init() {
mIsVisible = false;
mIsChangingState = false;
mInRequest = false;
mOutRequest = false;
mSelectedOption = 0;
}
void dLytGameOver_c::setAnm(int idx) {
d2d::AnmGroup_c &anm = mAnm[idx];
anm.bind(false);
anm.setFrame(0.0f);
}
void dLytGameOver_c::stopAnm(int idx) {
d2d::AnmGroup_c &anm = mAnm[idx];
anm.unbind();
}
void dLytGameOver_c::applyText() {
const wchar_t *text = dMessage_c::getTextMessageByLabel(mLabel, true, nullptr, 0);
mLyt.getTextBox("T_select_00")->setTextWithGlobalTextProcessor(text);
mLyt.getTextBox("T_selectS_00")->setTextWithGlobalTextProcessor(text);
dWindow_c *window = mLyt.getWindow("W_bgP_00");
window->UpdateSize(mLyt.getSizeBoxInWindow("W_bgP_00"), 32.0f);
}
void dLytGameOver_c::setupButtons() {
s32 numOptions = 2;
if (mVariant == 1) {
numOptions = 3;
} else if (mVariant == 2) {
numOptions = 4;
}
for (int i = 0; i < numOptions; i++) {
const wchar_t *buf = dMessage_c::getGlobalTagProcessor()->getBuf(i);
mSelectBtn.getSelectTextBox(i, 0)->setTextWithGlobalTextProcessor(buf);
mSelectBtn.getSelectTextBox(i, 1)->setTextWithGlobalTextProcessor(buf);
}
mSelectBtn.setTagProcessor(dMessage_c::getGlobalTagProcessor());
u32 tmp = dMessage_c::getGlobalTagProcessor()->getField_0x828();
mSelectBtn.setField_0x9BC(tmp);
mSelectBtn.setField_0x990(tmp);
mSelectBtn.fn_8011E5D0(numOptions, true);
}
SPECIAL_BASE_PROFILE(LYT_GAMEOVER_MGR, dLytGameOverMgr_c, fProfile::LYT_GAMEOVER_MGR, 0x02AC, 0x0201);
STATE_DEFINE(dLytGameOverMgr_c, Init);
STATE_DEFINE(dLytGameOverMgr_c, FadeOut);
STATE_DEFINE(dLytGameOverMgr_c, Select);
dLytGameOverMgr_c::dLytGameOverMgr_c() : mStateMgr(*this) {
sInstance = this;
init();
}
dLytGameOverMgr_c::~dLytGameOverMgr_c() {
sInstance = nullptr;
}
int dLytGameOverMgr_c::create() {
mMain.build();
mStateMgr.changeState(StateID_Init);
return SUCCEEDED;
}
int dLytGameOverMgr_c::doDelete() {
mMain.remove();
return SUCCEEDED;
}
int dLytGameOverMgr_c::execute() {
mStateMgr.executeState();
return SUCCEEDED;
}
int dLytGameOverMgr_c::draw() {
mMain.draw();
return SUCCEEDED;
}
void dLytGameOverMgr_c::initializeState_Init() {}
void dLytGameOverMgr_c::executeState_Init() {
mStateMgr.changeState(StateID_FadeOut);
}
void dLytGameOverMgr_c::finalizeState_Init() {}
void dLytGameOverMgr_c::initializeState_FadeOut() {
dStage_c::GetInstance()->fadeOut(dFader_c::FADER_BLACK, 40);
}
void dLytGameOverMgr_c::executeState_FadeOut() {
if (dStage_c::GetInstance()->isFadedOut() == true) {
// "Do you want to continue adventuring? [1]Continue[2]Quit"
if (mMain.requestIn("SYS_GAMEOVER_01", 0, 0)) {
mMain.setField_0x1338(true);
mStateMgr.changeState(StateID_Select);
AnotherSoundMgr__playSound(FANFARE_SOUND_MGR, FAN_GAMEOVER);
}
}
}
void dLytGameOverMgr_c::finalizeState_FadeOut() {}
void dLytGameOverMgr_c::initializeState_Select() {
mStep = 0;
mTimer = 0;
}
void dLytGameOverMgr_c::executeState_Select() {
// TODO - regswaps https://decomp.me/scratch/IPWjo
// FileManager::GetInstance() causes even more regswaps
FileManager *fileManager = FileManager::sInstance;
// I'm not sure if all these were declared here - it'd make
// sense for a switch statement...
const char *stage;
u8 entrance;
u16 room;
u8 layer;
bool isSpecialMinigame;
switch (mStep) {
case 0: {
if (mTimer < 20) {
mTimer++;
if (mTimer == 20) {
dBase_c::s_NextExecuteControlFlags |= 1;
dBase_c::s_DrawControlFlags |= 1;
}
}
if (mMain.isChangingState() == true) {
if (mMain.getSelectedOption() == 0) {
mStep = 20;
} else {
mStep = 1;
}
}
break;
}
case 1:
case 10: {
if (mMain.requestOut(0) == true) {
mStep++;
}
break;
}
case 2:
case 11: {
if (mMain.isChangingState() == true) {
mStep++;
}
break;
}
case 3: {
// "Are you sure you want to quit? [1]Quit[2-]Cancel"
if (mMain.requestIn("SYS_GAMEOVER_03", 0, 1)) {
mStep++;
}
break;
}
case 4: {
if (mMain.isChangingState() == true) {
if (mMain.getSelectedOption() == 0) {
mStep++;
} else {
mStep = 10;
}
}
break;
}
case 5:
case 20: {
if (mMain.requestOut(1) == true) {
mStep++;
}
break;
}
case 6: {
dScTitle_c::loadTitleScreen(1);
mStep = 100;
// break;
}
case 12: {
// "Do you want to continue adventuring? [1]Continue[2]Quit"
if (mMain.requestIn("SYS_GAMEOVER_01", 0, 1)) {
mStep = 0;
}
break;
}
case 21: {
if (mMain.isChangingState() == true) {
dScTitle_c::setLbl_80575787(true);
dScGame_c::sPreventClearingSomeFlag = true;
// Maybe an inline? Would have to use the inverse condition and then negate...
isSpecialMinigame = false;
if (MinigameManager::isInMinigameState(MinigameManager::TRIAL_TIME_ATTACK) ||
MinigameManager::isInMinigameState(MinigameManager::BOSS_RUSH)) {
isSpecialMinigame = true;
}
if (params != 0 && !isSpecialMinigame) {
dScGame_c::setReloaderType(1);
dScGame_c::sCopyFileBToCurrentAfterRespawn = true;
entrance = fileManager->getEntranceT1_FileB();
room = fileManager->getLoadRoomT1_FileB();
layer = fileManager->getForcedLayerT1_FileB();
// TODO document this logic
if (dScGame_c::isCurrentStage("F403") && layer == 2) {
layer = 7;
}
stage = fileManager->getAreaT1_FileB();
// TODO - this is weird, why is dScGame_c::sInstance being loaded first?
// inlines? But we're using the fileManager from above for this call...
// Probably the reason for the regswaps...
dScGame_c::GetInstance()->triggerEntrance(
stage, room, layer, entrance, fileManager->getNightT1_FileB()
);
} else {
dScGame_c::setReloaderType(3);
entrance = fileManager->getEntranceT3();
room = fileManager->getLoadRoomT3();
layer = fileManager->getForcedLayerT3();
// TODO - document this logic
if (dScGame_c::isCurrentStage("B400") && !isSpecialMinigame) {
dScGame_c::setReloaderType(4);
entrance = 8;
room = 1;
layer = 3;
}
stage = fileManager->getAreaT3();
// TODO - same as above
dScGame_c::GetInstance()->triggerEntrance(stage, room, layer, entrance, fileManager->getNightT3());
}
// TODO - document this logic
if (dScGame_c::isCurrentStage("F401")) {
if (fileManager->getCurrentHealth() < 24) {
fileManager->setCurrentHealth(24);
}
} else {
fileManager->setCurrentHealth(24);
}
// TODO - document this logic
if (dScGame_c::isCurrentStage("F302")) {
// "Minecart Escort related"
SceneflagManager::sInstance->unsetTempflag_i(0x3F, 0);
}
restoreSkykeepPuzzleFromGlobal();
mStep = 100;
}
break;
}
case 100: {
dBase_c::s_NextExecuteControlFlags &= ~0x1;
dBase_c::s_DrawControlFlags &= ~0x1;
dBase_c::s_NextExecuteControlFlags |= 0x200;
dBase_c::s_DrawControlFlags |= 0x200;
mStep++;
break;
}
}
mMain.execute();
}
void dLytGameOverMgr_c::finalizeState_Select() {}
void dLytGameOverMgr_c::init() {
mStep = 0;
mTimer = 0;
}
+3 -2
View File
@@ -1,6 +1,7 @@
#include "d/lyt/d_lyt_wipe.h"
#include "common.h"
#include "d/d_fader.h"
#include "d/d_stage.h"
#include "d/lyt/d2d.h"
#include "toBeSorted/arc_managers/layout_arc_manager.h"
@@ -148,7 +149,7 @@ void dLytWipe_c::executeState_None() {
mIsSettled = false;
// State IN fades OUT, because I guess the fader fades the scene out,
// which means Wipe is In
if (dStage_c::GetInstance()->fadeOut(2, 16)) {
if (dStage_c::GetInstance()->fadeOut(dFader_c::FADER_LYT, 16)) {
mStateMgr.changeState(StateID_In);
mWantsIn = false;
mVisible = true;
@@ -207,7 +208,7 @@ void dLytWipe_c::executeState_Out() {
dStage_c::GetInstance()->forceFadeOut();
mFadeDelay--;
if (mFadeDelay == 0) {
dStage_c::GetInstance()->fadeIn(2, 16);
dStage_c::GetInstance()->fadeIn(dFader_c::FADER_LYT, 16);
mMain.gotoNone();
mTransitionStage = 2;
}
+1 -1
View File
@@ -322,7 +322,7 @@ void dLytMeterHeart_c::executeInternal() {
mStoredHealth = mStoredHealth + 1;
if (mpAlphaPane->IsVisible() && mpAlphaPane->GetGlobalAlpha() != 0 && mStoredHealth % 4 == 0 &&
(!(dScGame_c::currentSpawnInfo.stageName == "F406") || dScGame_c::currentSpawnInfo.layer != 13) &&
dLytGameOver_c::GetInstance() == nullptr) {
dLytGameOverMgr_c::GetInstance() == nullptr) {
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_HP_GAUGE_UP);
}
} else {
+4 -4
View File
@@ -199,16 +199,16 @@ u16 *FileManager::getStoryFlagsMut() {
/* 8000BDD0 */ u16 FileManager::getHitCountFromEnemy(u8 enemy) {}
/* 8000BE50 */ void FileManager::setLoadRoomT1_FileB(s16 roomId) {}
/* 8000BE80 */ s16 FileManager::getLoadRoomT1_FileB() {}
/* 8000BE80 */ u16 FileManager::getLoadRoomT1_FileB() {}
/* 8000BE90 */ void FileManager::setEntranceT1_FileB(u8 entrance) {}
/* 8000BEC0 */ u8 FileManager::getEntranceT1_FileB() {}
/* 8000BED0 */ void FileManager::setAreaT1_FileB(const char *name) {}
/* 8000BF80 */ char *FileManager::getAreaT1_FileB() {}
/* 8000C080 */ void FileManager::setNightT1_FileB(bool night) {}
/* 8000C0B0 */ bool FileManager::getNightT1_FileB() {}
/* 8000C0B0 */ u8 FileManager::getNightT1_FileB() {}
/* 8000C0C0 */ void FileManager::setEntranceT1LoadFlag_FileB(u8 flag) {}
/* 8000C0F0 */ void FileManager::setForcedLayerT1_FileB(u8 layer) {}
/* 8000C120 */ void FileManager::getForcedLayerT1_FileB() {}
/* 8000C120 */ u8 FileManager::getForcedLayerT1_FileB() {}
/* 8000C130 */ void FileManager::setCurrentHealth_FileB(s16 health) {}
/* 8000C160 */ void FileManager::setHeroname(const wchar_t *name) {}
@@ -233,7 +233,7 @@ u16 *FileManager::getStoryFlagsMut() {
/* 8000CA00 */ bool FileManager::getNightT1() {}
/* 8000CA50 */ void FileManager::setNightT3(bool night) {}
/* 8000CA80 */ bool FileManager::getNightT3() {}
/* 8000CA80 */ u8 FileManager::getNightT3() {}
/* 8000CAD0 */ bool FileManager::isNew_FileA() {}