summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.clangd3
-rw-r--r--config/SOUE01/splits.txt2
-rw-r--r--config/SOUE01/symbols.txt164
-rw-r--r--include/d/lyt/d_lyt_map.h312
-rw-r--r--include/d/lyt/d_lyt_map_capture.h38
-rw-r--r--include/d/lyt/d_structd.h2
-rw-r--r--include/m/m2d.h1
-rw-r--r--include/s/s_FStateMgr.hpp2
-rw-r--r--include/s/s_StateMgr.hpp3
-rw-r--r--src/d/lyt/d_lyt_map.cpp99
-rw-r--r--src/d/lyt/meter/d_lyt_meter.cpp2
11 files changed, 544 insertions, 84 deletions
diff --git a/.clangd b/.clangd
index 7d32bd41..69c978c9 100644
--- a/.clangd
+++ b/.clangd
@@ -3,5 +3,6 @@ CompileFlags:
Add: [
"-Wno-c++11-compat-deprecated-writable-strings",
"-Wno-trigraphs",
- "-fno-trigraphs"
+ "-fno-trigraphs",
+ "-Wno-c++11-extensions"
]
diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt
index 1f4b5e83..acdcc786 100644
--- a/config/SOUE01/splits.txt
+++ b/config/SOUE01/splits.txt
@@ -423,6 +423,8 @@ d/lyt/d_lyt_map_capture.cpp:
d/lyt/d_lyt_map.cpp:
.text start:0x8012DC30 end:0x80148DE8
.ctors start:0x804DB76C end:0x804DB770
+ .data start:0x8051EAE0 end:0x805225E8
+ .bss start:0x805AF480 end:0x805B0830
d/lyt/d_lyt_note.cpp:
.text start:0x80148DF0 end:0x80149C28
diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt
index 428b2d63..e23eaa7b 100644
--- a/config/SOUE01/symbols.txt
+++ b/config/SOUE01/symbols.txt
@@ -2867,7 +2867,7 @@ appendToList1__Q23d2d15dLytStructDListFPQ23d2d11dLytStructC = .text:0x800657B0;
removeFromList1__Q23d2d15dLytStructDListFPQ23d2d11dLytStructC = .text:0x80065810; // type:function size:0x60
appendToList2__Q23d2d15dLytStructDListFPQ23d2d11dLytStructD = .text:0x80065870; // type:function size:0x110
removeFromList2__Q23d2d15dLytStructDListFPQ23d2d11dLytStructD = .text:0x80065980; // type:function size:0xA4
-fn_80065A30 = .text:0x80065A30; // type:function size:0x34
+fn_80065A30__Q23d2d15dLytStructDListFPQ23d2d11dLytStructD = .text:0x80065A30; // type:function size:0x34
create__Q23d2d15dLytStructDListFPQ23EGG4Heap = .text:0x80065A70; // type:function size:0x38
fn_80065AB0 = .text:0x80065AB0; // type:function size:0x78
fn_80065B30 = .text:0x80065B30; // type:function size:0x4C
@@ -7541,7 +7541,7 @@ fn_8012EB30 = .text:0x8012EB30; // type:function size:0xF8
fn_8012EC30 = .text:0x8012EC30; // type:function size:0x80
fn_8012ECB0 = .text:0x8012ECB0; // type:function size:0x10C
fn_8012EDC0 = .text:0x8012EDC0; // type:function size:0x2C
-fn_8012EDF0 = .text:0x8012EDF0; // type:function size:0x110
+__dt__16dLytMapPinIcon_cFv = .text:0x8012EDF0; // type:function size:0x110
fn_8012EF00 = .text:0x8012EF00; // type:function size:0xA4
fn_8012EFB0 = .text:0x8012EFB0; // type:function size:0xA0
fn_8012F050 = .text:0x8012F050; // type:function size:0x6C
@@ -7609,8 +7609,8 @@ fn_80130470 = .text:0x80130470; // type:function size:0x4
fn_80130480 = .text:0x80130480; // type:function size:0x4
fn_80130490 = .text:0x80130490; // type:function size:0x78
fn_80130510 = .text:0x80130510; // type:function size:0x4
-fn_80130520 = .text:0x80130520; // type:function size:0x17C
-fn_801306A0 = .text:0x801306A0; // type:function size:0xA8
+__dt__20dLytMapFloorBtnMgr_cFv = .text:0x80130520; // type:function size:0x17C
+__dt__17dLytMapFloorBtn_cFv = .text:0x801306A0; // type:function size:0xA8
fn_80130750 = .text:0x80130750; // type:function size:0xA4
fn_80130800 = .text:0x80130800; // type:function size:0xA0
fn_801308A0 = .text:0x801308A0; // type:function size:0x6C
@@ -7642,7 +7642,7 @@ fn_80131A80 = .text:0x80131A80; // type:function size:0x4
fn_80131A90 = .text:0x80131A90; // type:function size:0x4
fn_80131AA0 = .text:0x80131AA0; // type:function size:0x4
fn_80131AB0 = .text:0x80131AB0; // type:function size:0x98
-m2d__Base_c____ct = .text:0x80131B50; // type:function size:0x18
+__ct__Q23m2d6Base_cFv = .text:0x80131B50; // type:function size:0x18
__dt__Q23EGG10ColorFaderFv = .text:0x80131B70; // type:function size:0x40
fn_80131BB0 = .text:0x80131BB0; // type:function size:0x58
fn_80131C10 = .text:0x80131C10; // type:function size:0x10
@@ -7738,25 +7738,25 @@ fn_80133810 = .text:0x80133810; // type:function size:0x4C
fn_80133860 = .text:0x80133860; // type:function size:0x54
fn_801338C0 = .text:0x801338C0; // type:function size:0x10
fn_801338D0 = .text:0x801338D0; // type:function size:0x60
-fn_80133930 = .text:0x80133930; // type:function size:0x358
+__ct__13dLytMapMain_cFv = .text:0x80133930; // type:function size:0x358
fn_80133C90 = .text:0x80133C90; // type:function size:0x1C
fn_80133CB0 = .text:0x80133CB0; // type:function size:0x40
-fn_80133CF0 = .text:0x80133CF0; // type:function size:0xE0
+__ct__16dLytMapCapture_cFv = .text:0x80133CF0; // type:function size:0xE0
fn_80133DD0 = .text:0x80133DD0; // type:function size:0x58
fn_80133E30 = .text:0x80133E30; // type:function size:0x6C
fn_80133EA0 = .text:0x80133EA0; // type:function size:0xA0
fn_80133F40 = .text:0x80133F40; // type:function size:0xA4
fn_80133FF0 = .text:0x80133FF0; // type:function size:0xB4
-fn_801340B0 = .text:0x801340B0; // type:function size:0x178
+__ct__20dLytMapFloorBtnMgr_cFPv = .text:0x801340B0; // type:function size:0x178
fn_80134230 = .text:0x80134230; // type:function size:0x140
-fn_80134370 = .text:0x80134370; // type:function size:0x48
-fn_801343C0 = .text:0x801343C0; // type:function size:0xAC
-fn_80134470 = .text:0x80134470; // type:function size:0xF0
+__ct__Q23d2d11dLytStructDFv = .text:0x80134370; // type:function size:0x48
+__ct__17dLytMapFloorBtn_cFv = .text:0x801343C0; // type:function size:0xAC
+__ct__25dLytMapPinIconAggregate_cFv = .text:0x80134470; // type:function size:0xF0
fn_80134560 = .text:0x80134560; // type:function size:0x58
fn_801345C0 = .text:0x801345C0; // type:function size:0x6C
fn_80134630 = .text:0x80134630; // type:function size:0xA0
fn_801346D0 = .text:0x801346D0; // type:function size:0xA4
-fn_80134780 = .text:0x80134780; // type:function size:0x134
+__ct__16dLytMapPinIcon_cFv = .text:0x80134780; // type:function size:0x134
fn_801348C0 = .text:0x801348C0; // type:function size:0xCC
fn_80134990 = .text:0x80134990; // type:function size:0x464
fn_80134E00 = .text:0x80134E00; // type:function size:0x74
@@ -7775,37 +7775,37 @@ fn_80135210 = .text:0x80135210; // type:function size:0x234
fn_80135450 = .text:0x80135450; // type:function size:0x78
fn_801354D0 = .text:0x801354D0; // type:function size:0x54
fn_80135530 = .text:0x80135530; // type:function size:0x5C
-fn_80135590 = .text:0x80135590; // type:function size:0xC8
+__ct__16dLytMapSaveObj_cFv = .text:0x80135590; // type:function size:0xC8
fn_80135660 = .text:0x80135660; // type:function size:0x58
fn_801356C0 = .text:0x801356C0; // type:function size:0x6C
fn_80135730 = .text:0x80135730; // type:function size:0xA0
fn_801357D0 = .text:0x801357D0; // type:function size:0xA4
-fn_80135880 = .text:0x80135880; // type:function size:0xD0
-fn_80135950 = .text:0x80135950; // type:function size:0xB4
+__dt__16dLytMapSaveObj_cFv = .text:0x80135880; // type:function size:0xD0
+__ct__20dLytMapSaveCaption_cFv = .text:0x80135950; // type:function size:0xB4
fn_80135A10 = .text:0x80135A10; // type:function size:0x58
fn_80135A70 = .text:0x80135A70; // type:function size:0x6C
fn_80135AE0 = .text:0x80135AE0; // type:function size:0xA0
fn_80135B80 = .text:0x80135B80; // type:function size:0xA4
-fn_80135C30 = .text:0x80135C30; // type:function size:0x84
-fn_80135CC0 = .text:0x80135CC0; // type:function size:0xA0
+__ct__18dLytMapSavePopup_cFv = .text:0x80135C30; // type:function size:0x84
+__ct__24dLytMapSavePopupAction_cFv = .text:0x80135CC0; // type:function size:0xA0
fn_80135D60 = .text:0x80135D60; // type:function size:0x58
fn_80135DC0 = .text:0x80135DC0; // type:function size:0x6C
fn_80135E30 = .text:0x80135E30; // type:function size:0xA0
fn_80135ED0 = .text:0x80135ED0; // type:function size:0xA4
-fn_80135F80 = .text:0x80135F80; // type:function size:0xA8
-fn_80136030 = .text:0x80136030; // type:function size:0xB4
+__dt__24dLytMapSavePopupAction_cFv = .text:0x80135F80; // type:function size:0xA8
+__ct__16dLytMapPopupInfoFv = .text:0x80136030; // type:function size:0xB4
fn_801360F0 = .text:0x801360F0; // type:function size:0x58
fn_80136150 = .text:0x80136150; // type:function size:0x6C
fn_801361C0 = .text:0x801361C0; // type:function size:0xA0
fn_80136260 = .text:0x80136260; // type:function size:0xA4
-fn_80136310 = .text:0x80136310; // type:function size:0x90
+__ct__52sFStateMgr_c<13dLytMapMain_c,20sStateMethodUsr_FI_c>FR13dLytMapMain_c = .text:0x80136310; // type:function size:0x90
fn_801363A0 = .text:0x801363A0; // type:function size:0x58
fn_80136400 = .text:0x80136400; // type:function size:0x6C
fn_80136470 = .text:0x80136470; // type:function size:0xA0
fn_80136510 = .text:0x80136510; // type:function size:0xA4
fn_801365C0 = .text:0x801365C0; // type:function size:0x4
fn_801365D0 = .text:0x801365D0; // type:function size:0x40
-fn_80136610 = .text:0x80136610; // type:function size:0x608
+__dt__13dLytMapMain_cFv = .text:0x80136610; // type:function size:0x608
fn_80136C20 = .text:0x80136C20; // type:function size:0xC
fn_80136C30 = .text:0x80136C30; // type:function size:0xC8
fn_80136D00 = .text:0x80136D00; // type:function size:0x6CC
@@ -7815,7 +7815,7 @@ fn_80137490 = .text:0x80137490; // type:function size:0x2E8
fn_80137780 = .text:0x80137780; // type:function size:0x15C
fn_801378E0 = .text:0x801378E0; // type:function size:0x838
fn_80138120 = .text:0x80138120; // type:function size:0x10
-fn_80138130 = .text:0x80138130; // type:function size:0x238
+draw__13dLytMapMain_cFv = .text:0x80138130; // type:function size:0x238
fn_80138370 = .text:0x80138370; // type:function size:0x138
fn_801384B0 = .text:0x801384B0; // type:function size:0x5C
fn_80138510 = .text:0x80138510; // type:function size:0x140
@@ -8011,9 +8011,9 @@ fn_80143930 = .text:0x80143930; // type:function size:0x60
fn_80143990 = .text:0x80143990; // type:function size:0x4C
fn_801439E0 = .text:0x801439E0; // type:function size:0x4C
fn_80143A30 = .text:0x80143A30; // type:function size:0x70
-fn_80143AA0 = .text:0x80143AA0; // type:function size:0x8
-fn_80143AB0 = .text:0x80143AB0; // type:function size:0x8
-fn_80143AC0 = .text:0x80143AC0; // type:function size:0x8
+getName__20dLytMapFloorBtnMgr_cCFv = .text:0x80143AA0; // type:function size:0x8
+getLyt__20dLytMapFloorBtnMgr_cFv = .text:0x80143AB0; // type:function size:0x8
+getPane__20dLytMapFloorBtnMgr_cFv = .text:0x80143AC0; // type:function size:0x8
fn_80143AD0 = .text:0x80143AD0; // type:function size:0x60
fn_80143B30 = .text:0x80143B30; // type:function size:0xC
fn_80143B40 = .text:0x80143B40; // type:function size:0x60
@@ -8156,7 +8156,7 @@ fn_80144B50 = .text:0x80144B50; // type:function size:0x30
fn_80144B80 = .text:0x80144B80; // type:function size:0x30
fn_80144BB0 = .text:0x80144BB0; // type:function size:0x30
fn_80144BE0 = .text:0x80144BE0; // type:function size:0x30
-LytMap__initStates = .text:0x80144C10; // type:function size:0x3968
+__sinit_\d_lyt_map_cpp = .text:0x80144C10; // type:function size:0x3968 scope:local
LytMapPinIcon__dtor = .text:0x80148580; // type:function size:0x58
LytMapPinIconAggregate__dtor = .text:0x801485E0; // type:function size:0x58
LytMapFloorBtn__dtor = .text:0x80148640; // type:function size:0x58
@@ -32674,66 +32674,66 @@ lbl_80520588 = .data:0x80520588; // type:object size:0x10 data:string
lbl_80520598 = .data:0x80520598; // type:object size:0x10 data:string
lbl_805205A8 = .data:0x805205A8; // type:object size:0x10 data:string
lbl_805205B8 = .data:0x805205B8; // type:object size:0xC
-lbl_805205C4 = .data:0x805205C4; // type:object size:0x14
-lbl_805205D8 = .data:0x805205D8; // type:object size:0x30
-lbl_80520608 = .data:0x80520608; // type:object size:0x30
-lbl_80520638 = .data:0x80520638; // type:object size:0x18
-lbl_80520650 = .data:0x80520650; // type:object size:0x18
-lbl_80520668 = .data:0x80520668; // type:object size:0x30
-lbl_80520698 = .data:0x80520698; // type:object size:0x30
-lbl_805206C8 = .data:0x805206C8; // type:object size:0x18
-lbl_805206E0 = .data:0x805206E0; // type:object size:0x18
-lbl_805206F8 = .data:0x805206F8; // type:object size:0x30
-lbl_80520728 = .data:0x80520728; // type:object size:0x30
-lbl_80520758 = .data:0x80520758; // type:object size:0x18
-lbl_80520770 = .data:0x80520770; // type:object size:0x18
-lbl_80520788 = .data:0x80520788; // type:object size:0x30
-lbl_805207B8 = .data:0x805207B8; // type:object size:0x30
-lbl_805207E8 = .data:0x805207E8; // type:object size:0x18
-lbl_80520800 = .data:0x80520800; // type:object size:0x18
-lbl_80520818 = .data:0x80520818; // type:object size:0x30
-lbl_80520848 = .data:0x80520848; // type:object size:0x30
-lbl_80520878 = .data:0x80520878; // type:object size:0x18
-lbl_80520890 = .data:0x80520890; // type:object size:0x18
+__vt__13dLytMapMain_c = .data:0x805205C4; // type:object size:0x14
+__vt__52sFStateMgr_c<13dLytMapMain_c,20sStateMethodUsr_FI_c> = .data:0x805205D8; // type:object size:0x30
+__vt__82sStateMgr_c<13dLytMapMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80520608; // type:object size:0x30
+__vt__29sFStateFct_c<13dLytMapMain_c> = .data:0x80520638; // type:object size:0x14
+__vt__26sFState_c<13dLytMapMain_c> = .data:0x80520650; // type:object size:0x18
+__vt__55sFStateMgr_c<16dLytMapSaveObj_c,20sStateMethodUsr_FI_c> = .data:0x80520668; // type:object size:0x30
+__vt__85sStateMgr_c<16dLytMapSaveObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80520698; // type:object size:0x30
+__vt__32sFStateFct_c<16dLytMapSaveObj_c> = .data:0x805206C8; // type:object size:0x14
+__vt__29sFState_c<16dLytMapSaveObj_c> = .data:0x805206E0; // type:object size:0x18
+__vt__59sFStateMgr_c<20dLytMapSaveCaption_c,20sStateMethodUsr_FI_c> = .data:0x805206F8; // type:object size:0x30
+__vt__89sStateMgr_c<20dLytMapSaveCaption_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80520728; // type:object size:0x30
+__vt__36sFStateFct_c<20dLytMapSaveCaption_c> = .data:0x80520758; // type:object size:0x14
+__vt__33sFState_c<20dLytMapSaveCaption_c> = .data:0x80520770; // type:object size:0x18
+__vt__63sFStateMgr_c<24dLytMapSavePopupAction_c,20sStateMethodUsr_FI_c> = .data:0x80520788; // type:object size:0x30
+__vt__93sStateMgr_c<24dLytMapSavePopupAction_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805207B8; // type:object size:0x30
+__vt__40sFStateFct_c<24dLytMapSavePopupAction_c> = .data:0x805207E8; // type:object size:0x14
+__vt__37sFState_c<24dLytMapSavePopupAction_c> = .data:0x80520800; // type:object size:0x18
+__vt__57sFStateMgr_c<18dLytMapPopupInfo_c,20sStateMethodUsr_FI_c> = .data:0x80520818; // type:object size:0x30
+__vt__87sStateMgr_c<18dLytMapPopupInfo_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80520848; // type:object size:0x30
+__vt__34sFStateFct_c<18dLytMapPopupInfo_c> = .data:0x80520878; // type:object size:0x14
+__vt__31sFState_c<18dLytMapPopupInfo_c> = .data:0x80520890; // type:object size:0x18
lbl_805208A8 = .data:0x805208A8; // type:object size:0x10
-lbl_805208B8 = .data:0x805208B8; // type:object size:0x38
-lbl_805208F0 = .data:0x805208F0; // type:object size:0x30
-lbl_80520920 = .data:0x80520920; // type:object size:0x30
-lbl_80520950 = .data:0x80520950; // type:object size:0x18
-lbl_80520968 = .data:0x80520968; // type:object size:0x18
-lbl_80520980 = .data:0x80520980; // type:object size:0x30
-lbl_805209B0 = .data:0x805209B0; // type:object size:0x30
-lbl_805209E0 = .data:0x805209E0; // type:object size:0x18
-lbl_805209F8 = .data:0x805209F8; // type:object size:0x18
-lbl_80520A10 = .data:0x80520A10; // type:object size:0x10
-lbl_80520A20 = .data:0x80520A20; // type:object size:0x30
-lbl_80520A50 = .data:0x80520A50; // type:object size:0x30
-lbl_80520A80 = .data:0x80520A80; // type:object size:0x18
-lbl_80520A98 = .data:0x80520A98; // type:object size:0x18
-lbl_80520AB0 = .data:0x80520AB0; // type:object size:0x10
-lbl_80520AC0 = .data:0x80520AC0; // type:object size:0x30
-lbl_80520AF0 = .data:0x80520AF0; // type:object size:0x30
-lbl_80520B20 = .data:0x80520B20; // type:object size:0x18
-lbl_80520B38 = .data:0x80520B38; // type:object size:0x18
+__vt__20dLytMapFloorBtnMgr_c = .data:0x805208B8; // type:object size:0x38
+__vt__59sFStateMgr_c<20dLytMapFloorBtnMgr_c,20sStateMethodUsr_FI_c> = .data:0x805208F0; // type:object size:0x30
+__vt__89sStateMgr_c<20dLytMapFloorBtnMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80520920; // type:object size:0x30
+__vt__36sFStateFct_c<20dLytMapFloorBtnMgr_c> = .data:0x80520950; // type:object size:0x14
+__vt__33sFState_c<20dLytMapFloorBtnMgr_c> = .data:0x80520968; // type:object size:0x18
+__vt__56sFStateMgr_c<17dLytMapFloorBtn_c,20sStateMethodUsr_FI_c> = .data:0x80520980; // type:object size:0x30
+__vt__86sStateMgr_c<17dLytMapFloorBtn_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805209B0; // type:object size:0x30
+__vt__33sFStateFct_c<17dLytMapFloorBtn_c> = .data:0x805209E0; // type:object size:0x14
+__vt__30sFState_c<17dLytMapFloorBtn_c> = .data:0x805209F8; // type:object size:0x18
+__vt__25dLytMapPinIconAggregate_c = .data:0x80520A10; // type:object size:0x10
+__vt__64sFStateMgr_c<25dLytMapPinIconAggregate_c,20sStateMethodUsr_FI_c> = .data:0x80520A20; // type:object size:0x30
+__vt__94sStateMgr_c<25dLytMapPinIconAggregate_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80520A50; // type:object size:0x30
+__vt__41sFStateFct_c<25dLytMapPinIconAggregate_c> = .data:0x80520A80; // type:object size:0x14
+__vt__38sFState_c<25dLytMapPinIconAggregate_c> = .data:0x80520A98; // type:object size:0x18
+__vt__16dLytMapPinIcon_c = .data:0x80520AB0; // type:object size:0x10
+__vt__55sFStateMgr_c<16dLytMapPinIcon_c,20sStateMethodUsr_FI_c> = .data:0x80520AC0; // type:object size:0x30
+__vt__85sStateMgr_c<16dLytMapPinIcon_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80520AF0; // type:object size:0x30
+__vt__32sFStateFct_c<16dLytMapPinIcon_c> = .data:0x80520B20; // type:object size:0x14
+__vt__29sFState_c<16dLytMapPinIcon_c> = .data:0x80520B38; // type:object size:0x18
lbl_80520B50 = .data:0x80520B50; // type:object size:0xC
lbl_80520B5C = .data:0x80520B5C; // type:object size:0xC
lbl_80520B68 = .data:0x80520B68; // type:object size:0xC
lbl_80520B74 = .data:0x80520B74; // type:object size:0xC
lbl_80520B80 = .data:0x80520B80; // type:object size:0xC
-lbl_80520B8C = .data:0x80520B8C; // type:object size:0xC
-lbl_80520B98 = .data:0x80520B98; // type:object size:0x30
-lbl_80520BC8 = .data:0x80520BC8; // type:object size:0x30
-lbl_80520BF8 = .data:0x80520BF8; // type:object size:0x18
-lbl_80520C10 = .data:0x80520C10; // type:object size:0x1804
-lbl_80522414 = .data:0x80522414; // type:object size:0x34
-lbl_80522448 = .data:0x80522448; // type:object size:0x34
-lbl_8052247C = .data:0x8052247C; // type:object size:0x34
-lbl_805224B0 = .data:0x805224B0; // type:object size:0x34
-lbl_805224E4 = .data:0x805224E4; // type:object size:0x34
-lbl_80522518 = .data:0x80522518; // type:object size:0x34
-lbl_8052254C = .data:0x8052254C; // type:object size:0x34
-lbl_80522580 = .data:0x80522580; // type:object size:0x34
-lbl_805225B4 = .data:0x805225B4; // type:object size:0x34
+__vt__16dLytMapCapture_c = .data:0x80520B8C; // type:object size:0xC
+__vt__55sFStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c> = .data:0x80520B98; // type:object size:0x30
+__vt__85sStateMgr_c<16dLytMapCapture_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80520BC8; // type:object size:0x30
+__vt__32sFStateFct_c<16dLytMapCapture_c> = .data:0x80520BF8; // type:object size:0x14
+__vt__29sFState_c<16dLytMapCapture_c> = .data:0x80520C10; // type:object size:0x18
+__vt__28sFStateID_c<13dLytMapMain_c> = .data:0x80522414; // type:object size:0x34
+__vt__35sFStateID_c<20dLytMapSaveCaption_c> = .data:0x80522448; // type:object size:0x34
+__vt__39sFStateID_c<24dLytMapSavePopupAction_c> = .data:0x8052247C; // type:object size:0x34
+__vt__33sFStateID_c<18dLytMapPopupInfo_c> = .data:0x805224B0; // type:object size:0x34
+__vt__31sFStateID_c<16dLytMapSaveObj_c> = .data:0x805224E4; // type:object size:0x34
+__vt__35sFStateID_c<20dLytMapFloorBtnMgr_c> = .data:0x80522518; // type:object size:0x34
+__vt__32sFStateID_c<17dLytMapFloorBtn_c> = .data:0x8052254C; // type:object size:0x34
+__vt__40sFStateID_c<25dLytMapPinIconAggregate_c> = .data:0x80522580; // type:object size:0x34
+__vt__31sFStateID_c<16dLytMapPinIcon_c> = .data:0x805225B4; // type:object size:0x34
lbl_805225E8 = .data:0x805225E8; // type:object size:0x20
lbl_80522608 = .data:0x80522608; // type:object size:0xC
lbl_80522614 = .data:0x80522614; // type:object size:0x24
@@ -48683,8 +48683,8 @@ LytAutoExplain__STATE_IN = .bss:0x805AF340; // type:object size:0x40 data:4byte
LytAutoExplain__STATE_OUTPUT_TEXT = .bss:0x805AF380; // type:object size:0x40 data:4byte
LytAutoExplain__STATE_OUT = .bss:0x805AF3C0; // type:object size:0x30 data:4byte
lbl_805AF3F0 = .bss:0x805AF3F0; // type:object size:0x10
-LytMapCapture__STATE_RENDERING_WAIT = .bss:0x805AF400; // type:object size:0x40 data:4byte
-LytMapCapture__STATE_RENDERING_WAIT_STEP_2 = .bss:0x805AF440; // type:object size:0x30 data:4byte
+StateID_RenderingWait__16dLytMapCapture_c = .bss:0x805AF400; // type:object size:0x40 data:4byte
+StateID_RenderingWaitStep2__16dLytMapCapture_c = .bss:0x805AF440; // type:object size:0x30 data:4byte
lbl_805AF470 = .bss:0x805AF470; // type:object size:0x10
lbl_805AF480 = .bss:0x805AF480; // type:object size:0x40
LytMapPinIcon__STATE_WAIT = .bss:0x805AF4C0; // type:object size:0x40 data:4byte
diff --git a/include/d/lyt/d_lyt_map.h b/include/d/lyt/d_lyt_map.h
new file mode 100644
index 00000000..2addd77e
--- /dev/null
+++ b/include/d/lyt/d_lyt_map.h
@@ -0,0 +1,312 @@
+#ifndef D_LYT_MAP_H
+#define D_LYT_MAP_H
+
+#include "common.h"
+#include "d/lyt/d2d.h"
+#include "d/lyt/d_lyt_map_capture.h"
+#include "d/lyt/d_structd.h"
+#include "m/m2d.h"
+#include "m/m_vec.h"
+#include "s/s_State.hpp"
+
+// Size 0x1E0
+class dLytMapPinIcon_c {
+public:
+ friend class dLytMapPinIconAggregate_c;
+
+ dLytMapPinIcon_c()
+ : mStateMgr(*this, sStateID::null), field_0x1B8(0), field_0x1BC(0), field_0x1C0(0.0f, 0.0f, 0.0f),
+ field_0x1CC(0), field_0x1D0(0), field_0x1D4(0), mIndex(0), field_0x1DC(0) {}
+ virtual ~dLytMapPinIcon_c() {
+ if (d2d::dLytStructDList::sInstance->fn_80065A30(&mStructD)) {
+ d2d::dLytStructDList::sInstance->removeFromList2(&mStructD);
+ }
+ }
+
+ STATE_FUNC_DECLARE(dLytMapPinIcon_c, Wait);
+ STATE_FUNC_DECLARE(dLytMapPinIcon_c, ToSelect);
+ STATE_FUNC_DECLARE(dLytMapPinIcon_c, Select);
+ STATE_FUNC_DECLARE(dLytMapPinIcon_c, ToUnselect);
+ STATE_FUNC_DECLARE(dLytMapPinIcon_c, Remove);
+
+private:
+ /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMapPinIcon_c);
+ /* 0x040 */ d2d::LytBase_c mLyt;
+ /* 0x0D0 */ d2d::AnmGroup_c mAnm[3];
+ /* 0x190 */ d2d::dLytStructD mStructD;
+ /* 0x1B8 */ UNKWORD field_0x1B8;
+ /* 0x1BC */ UNKWORD field_0x1BC;
+ /* 0x1C0 */ mVec3_c field_0x1C0;
+ /* 0x1CC */ u8 field_0x1CC;
+ /* 0x1D0 */ UNKWORD field_0x1D0;
+ /* 0x1D4 */ UNKWORD field_0x1D4;
+ /* 0x1D8 */ s32 mIndex;
+ /* 0x1DC */ UNKWORD field_0x1DC;
+};
+
+class dLytMapPinIconAggregate_c {
+public:
+ dLytMapPinIconAggregate_c() : mStateMgr(*this, sStateID::null) {
+ field_0x9A0 = 0;
+ field_0x9A4 = 0;
+ field_0x9A8 = 0;
+ for (int i = 0; i < 5; i++) {
+ mPins[i].mIndex = i;
+ }
+ }
+ virtual ~dLytMapPinIconAggregate_c() {}
+
+ STATE_FUNC_DECLARE(dLytMapPinIconAggregate_c, Wait);
+ STATE_FUNC_DECLARE(dLytMapPinIconAggregate_c, Select);
+ STATE_FUNC_DECLARE(dLytMapPinIconAggregate_c, Remove);
+
+private:
+ /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMapPinIconAggregate_c);
+ /* 0x040 */ dLytMapPinIcon_c mPins[5];
+
+ /* 0x9A0 */ UNKWORD field_0x9A0;
+ /* 0x9A4 */ UNKWORD field_0x9A4;
+ /* 0x9A8 */ UNKWORD field_0x9A8;
+};
+
+// Size 0x50
+class dLytMapFloorBtn_c {
+public:
+ dLytMapFloorBtn_c()
+ : mStateMgr(*this, sStateID::null), field_0x3C(0), field_0x40(0), field_0x44(0), field_0x48(0), field_0x4C(0),
+ field_0x4D(0) {}
+
+ STATE_FUNC_DECLARE(dLytMapFloorBtn_c, Wait);
+ STATE_FUNC_DECLARE(dLytMapFloorBtn_c, ToSelect);
+ STATE_FUNC_DECLARE(dLytMapFloorBtn_c, Select);
+ STATE_FUNC_DECLARE(dLytMapFloorBtn_c, ToWait);
+ STATE_FUNC_DECLARE(dLytMapFloorBtn_c, ToDecide);
+ STATE_FUNC_DECLARE(dLytMapFloorBtn_c, Decide);
+ STATE_FUNC_DECLARE(dLytMapFloorBtn_c, ToSelectInDecide);
+ STATE_FUNC_DECLARE(dLytMapFloorBtn_c, SelectInDecide);
+ STATE_FUNC_DECLARE(dLytMapFloorBtn_c, DecideToSelectInDecide);
+
+private:
+ /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMapFloorBtn_c);
+ /* 0x3C */ UNKWORD field_0x3C;
+ /* 0x40 */ UNKWORD field_0x40;
+ /* 0x44 */ UNKWORD field_0x44;
+ /* 0x48 */ UNKWORD field_0x48;
+ /* 0x4C */ u8 field_0x4C;
+ /* 0x4D */ u8 field_0x4D;
+};
+
+class dLytMapFloorBtnMgr_c : public d2d::dSubPane {
+public:
+ dLytMapFloorBtnMgr_c(void *arg) : field_0x008(arg), mStateMgr(*this, sStateID::null) {}
+ virtual ~dLytMapFloorBtnMgr_c();
+
+ virtual bool build(d2d::ResAccIf_c *resAcc) override;
+ virtual bool remove() override;
+ virtual bool LytMeter0x14() override;
+ virtual nw4r::lyt::Pane *getPane() override {
+ return mLyt.getLayout()->GetRootPane();
+ }
+ virtual d2d::LytBase_c *getLyt() override {
+ return &mLyt;
+ }
+ virtual const char *getName() const override {
+ return mLyt.getName();
+ }
+
+ STATE_FUNC_DECLARE(dLytMapFloorBtnMgr_c, Invisible);
+ STATE_FUNC_DECLARE(dLytMapFloorBtnMgr_c, Wait);
+
+private:
+ /* 0x008 */ void *field_0x008;
+ /* 0x00C */ UI_STATE_MGR_DECLARE(dLytMapFloorBtnMgr_c);
+ /* 0x048 */ d2d::dLytSub mLyt;
+ /* 0x0DC */ d2d::AnmGroup_c mAnm[1];
+ /* 0x11C */ // unk array
+ /* 0x520 */ d2d::dLytStructD mStructDs[4];
+ /* 0x5C0 */ dLytMapFloorBtn_c mFloorBtns[4];
+};
+
+// Size 0x4C
+class dLytMapPopupInfo_c {
+public:
+ dLytMapPopupInfo_c() : mStateMgr(*this, sStateID::null) {}
+
+ STATE_FUNC_DECLARE(dLytMapPopupInfo_c, Invisible);
+ STATE_FUNC_DECLARE(dLytMapPopupInfo_c, In);
+ STATE_FUNC_DECLARE(dLytMapPopupInfo_c, Wait);
+ STATE_FUNC_DECLARE(dLytMapPopupInfo_c, WaitInvalid);
+ STATE_FUNC_DECLARE(dLytMapPopupInfo_c, Out);
+
+private:
+ /* 0x000 */ UI_STATE_MGR_DECLARE(dLytMapPopupInfo_c);
+ /* 0x03C */ d2d::LytBase_c mLyt;
+ /* 0x0CC */ d2d::AnmGroup_c mAnm[3];
+};
+
+// Size 0x4C
+class dLytMapSavePopupAction_c {
+public:
+ dLytMapSavePopupAction_c() : mStateMgr(*this, sStateID::null), field_0x44(0.0f), field_0x48(0) {}
+
+ STATE_FUNC_DECLARE(dLytMapSavePopupAction_c, Invisible);
+ STATE_FUNC_DECLARE(dLytMapSavePopupAction_c, In);
+ STATE_FUNC_DECLARE(dLytMapSavePopupAction_c, Wait);
+ STATE_FUNC_DECLARE(dLytMapSavePopupAction_c, Out);
+
+private:
+ /* 0x00 */ UI_STATE_MGR_DECLARE(dLytMapSavePopupAction_c);
+ /* 0x44 */ f32 field_0x44;
+ /* 0x48 */ u8 field_0x48;
+};
+
+// Assumed name
+class dLytMapSavePopup_c {
+public:
+ dLytMapSavePopup_c() {}
+
+private:
+ /* 0x000 */ d2d::LytBase_c mLyt;
+ /* 0x090 */ d2d::AnmGroup_c mAnm[2];
+ /* 0x110 */ dLytMapSavePopupAction_c mActions[12];
+};
+
+class dLytMapSaveCaption_c {
+public:
+ dLytMapSaveCaption_c() : mStateMgr(*this, sStateID::null) {}
+
+ STATE_FUNC_DECLARE(dLytMapSaveCaption_c, Invisible);
+ STATE_FUNC_DECLARE(dLytMapSaveCaption_c, In);
+ STATE_FUNC_DECLARE(dLytMapSaveCaption_c, Wait);
+ STATE_FUNC_DECLARE(dLytMapSaveCaption_c, Out);
+
+private:
+ /* 0x000 */ UI_STATE_MGR_DECLARE(dLytMapSaveCaption_c);
+ /* 0x03C */ d2d::LytBase_c mLyt;
+ /* 0x0CC */ d2d::AnmGroup_c mAnm[5];
+};
+
+// Size 0x190
+class dLytMapSaveObj_c {
+public:
+ dLytMapSaveObj_c() : mStateMgr(*this, sStateID::null), field_0x18C(0), field_0x18D(0), field_0x18E(0) {}
+
+ STATE_FUNC_DECLARE(dLytMapSaveObj_c, Wait);
+ STATE_FUNC_DECLARE(dLytMapSaveObj_c, ToSelect);
+ STATE_FUNC_DECLARE(dLytMapSaveObj_c, Select);
+ STATE_FUNC_DECLARE(dLytMapSaveObj_c, ToWait);
+ STATE_FUNC_DECLARE(dLytMapSaveObj_c, Decide);
+
+private:
+ /* 0x000 */ UI_STATE_MGR_DECLARE(dLytMapSaveObj_c);
+ /* 0x03C */ d2d::LytBase_c mLyt;
+ /* 0x0CC */ d2d::AnmGroup_c mAnm[3];
+ /* 0x18C */ u8 field_0x18C;
+ /* 0x18D */ u8 field_0x18D;
+ /* 0x18E */ u8 field_0x18E;
+};
+
+class dLytMapMain_c : public m2d::Base_c {
+public:
+ dLytMapMain_c();
+ virtual ~dLytMapMain_c();
+ virtual void draw() override;
+ virtual void dLytMapMain_vt0x10();
+
+ STATE_FUNC_DECLARE(dLytMapMain_c, Invisible);
+ STATE_FUNC_DECLARE(dLytMapMain_c, RenderingWait);
+ STATE_FUNC_DECLARE(dLytMapMain_c, In);
+ STATE_FUNC_DECLARE(dLytMapMain_c, Active);
+ STATE_FUNC_DECLARE(dLytMapMain_c, Out);
+ STATE_FUNC_DECLARE(dLytMapMain_c, FloorChange);
+ STATE_FUNC_DECLARE(dLytMapMain_c, ChgMapUpDirection);
+ STATE_FUNC_DECLARE(dLytMapMain_c, ChgDispAreaMode_Map);
+ STATE_FUNC_DECLARE(dLytMapMain_c, ChgDispAreaMode_MapRot);
+ STATE_FUNC_DECLARE(dLytMapMain_c, ChgDispAreaMode_WA);
+ STATE_FUNC_DECLARE(dLytMapMain_c, ChgDispAreaMode_CsrRot);
+ STATE_FUNC_DECLARE(dLytMapMain_c, ResetPos);
+ STATE_FUNC_DECLARE(dLytMapMain_c, ResetPosWithFloorChange);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventSwBankSmall_Step1);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventSwBankSmall_Step2);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventSwBankSmall_Step3);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventMapIntro_Step1);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventMapIntro_Step2);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventMapIntro_Step3);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventMapIntro_Step4);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventDungeonMapGet_Step1);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventDungeonMapGet_Step2);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventDungeonMapGet_Step3);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventFieldMapChange_Step1);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventFieldMapChange_Step2);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventFieldMapChange_Step3);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventFieldMapChange_Step4);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventForestMapChange_Step1);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventForestMapChange_Step2);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventForestMapChange_Step3);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventSignalAdd_Step1);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventSignalAdd_Step2);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventSignalAdd_Step3);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventGoddessCube_Step1);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventGoddessCube_Step2);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventGoddessCube_Step3);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventSaveObjMsgWindow);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventSaveObjSelect);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventSaveObjConfirmMsgWindow);
+ STATE_FUNC_DECLARE(dLytMapMain_c, EventSaveObjDecide);
+
+private:
+ /* 0x0010 */ UI_STATE_MGR_DECLARE(dLytMapMain_c);
+ /* 0x004C */ u8 field_0x004C[0x00A4 - 0x004C];
+ /* 0x00A4 */ u8 field_0x00A4[0x010C - 0x00A4];
+ /* 0x010C */ d2d::LytBase_c mLyt;
+ /* 0x019C */ d2d::AnmGroup_c mAnmGroups[54];
+ /* 0x0F1C */ u8 field_0x0F1C[0x0F24 - 0x0F1C];
+ /* 0x0F24 */ dLytMapCapture_c mMapCapture;
+ /* 0x0FA0 */ dLytMapFloorBtnMgr_c mFloorBtnMgr;
+ /* 0x16B4 */ dLytMapPinIconAggregate_c mPinIconAggregate;
+
+ /* 0x6704 */ dLytMapSaveObj_c mSaveObjs[12];
+ /* 0x79C4 */ dLytMapSaveCaption_c mSaveCaption;
+ /* 0x0000 */ dLytMapSavePopup_c mSavePopup;
+ /* 0x807C */ dLytMapPopupInfo_c mPopupInfo;
+ /* 0x828C */ mVec3_c field_0x828C[12];
+ /* 0x832C */ d2d::dLytStructD field_0x832C[33];
+ /* 0x8904 */ mVec3_c field_0x8904;
+ /* 0x8910 */ mVec3_c field_0x8910;
+ /* 0x891C */ mVec3_c field_0x891C;
+ // ???
+ /* 0x8930 */ mVec3_c field_0x8930;
+ /* 0x893C */ mVec3_c field_0x893C;
+ // ???
+
+ /* 0x8CC4 */ mVec3_c field_0x8CC4;
+ /* 0x8CD0 */ mVec3_c field_0x8CD0;
+ /* 0x8CDC */ mVec3_c field_0x8CDC;
+ /* 0x8CE8 */ mVec3_c field_0x8CE8;
+ /* 0x8CF4 */ mVec3_c field_0x8CF4;
+ /* 0x8D00 */ mVec3_c field_0x8D00;
+ /* 0x8D0C */ mVec3_c field_0x8D0C;
+ /* 0x8D18 */ mVec3_c field_0x8D18;
+ /* 0x8D24 */ mVec3_c field_0x8D24;
+
+ /* 0x8DC8 */ UNKWORD field_0x8DC8;
+};
+
+// Size 0x91FC, inline ctor at 802ccd88
+class dLytMap_c {
+public:
+ dLytMap_c() {
+ sInstance = this;
+ }
+ virtual ~dLytMap_c() {
+ sInstance = nullptr;
+ }
+
+private:
+ /* 0x0004 */ d2d::ResAccIf_c mResAcc;
+ /* 0x0374 */ dLytMapMain_c mMapMain;
+
+ static dLytMap_c *sInstance;
+};
+
+#endif
diff --git a/include/d/lyt/d_lyt_map_capture.h b/include/d/lyt/d_lyt_map_capture.h
new file mode 100644
index 00000000..92d533a5
--- /dev/null
+++ b/include/d/lyt/d_lyt_map_capture.h
@@ -0,0 +1,38 @@
+#ifndef D_LYT_MAP_CAPTURE_H
+#define D_LYT_MAP_CAPTURE_H
+
+#include "common.h"
+#include "s/s_State.hpp"
+#include "s/s_StateID.hpp"
+
+class dLytMapCapture_c {
+public:
+ dLytMapCapture_c() :mStateMgr(*this, sStateID::null) {
+ field_0x040 = 0;
+ field_0x070 = 0.0f;
+ field_0x074 = 0.0f;
+ field_0x078 = 0;
+ field_0x079 = 0;
+ field_0x06C = 0.0f;
+ field_0x068 = 0.0f;
+ field_0x064 = 0.0f;
+ mStateMgr.changeState(StateID_RenderingWait);
+ }
+ virtual ~dLytMapCapture_c() {}
+
+ STATE_FUNC_DECLARE(dLytMapCapture_c, RenderingWait);
+ STATE_FUNC_DECLARE(dLytMapCapture_c, RenderingWaitStep2);
+
+private:
+ /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMapCapture_c);
+ /* 0x040*/ UNKWORD field_0x040;
+ /* 0x064 */ f32 field_0x064;
+ /* 0x068 */ f32 field_0x068;
+ /* 0x06C */ f32 field_0x06C;
+ /* 0x070 */ f32 field_0x070;
+ /* 0x074 */ f32 field_0x074;
+ /* 0x078 */ u8 field_0x078;
+ /* 0x079 */ u8 field_0x079;
+};
+
+#endif
diff --git a/include/d/lyt/d_structd.h b/include/d/lyt/d_structd.h
index 346dda60..c3d75d2a 100644
--- a/include/d/lyt/d_structd.h
+++ b/include/d/lyt/d_structd.h
@@ -90,6 +90,8 @@ public:
void appendToList2(dLytStructD *other);
void removeFromList2(dLytStructD *other);
+ bool fn_80065A30(dLytStructD *other);
+
private:
TList<dLytStructC, offsetof(dLytStructC, mLink)> mList1;
TList<dLytStructD, offsetof(dLytStructD, mLink)> mList2;
diff --git a/include/m/m2d.h b/include/m/m2d.h
index 72349aef..a07cdc26 100644
--- a/include/m/m2d.h
+++ b/include/m/m2d.h
@@ -155,6 +155,7 @@ public:
class Base_c {
public:
+ Base_c() : mPriority(0x80) {}
Base_c(u8 priority) : mPriority(priority) {}
/* 0x00 */ nw4r::ut::Node mLink;
diff --git a/include/s/s_FStateMgr.hpp b/include/s/s_FStateMgr.hpp
index cac7efc1..ec3fea12 100644
--- a/include/s/s_FStateMgr.hpp
+++ b/include/s/s_FStateMgr.hpp
@@ -19,6 +19,8 @@
template <class T, class Method>
class sFStateMgr_c : public sStateMgr_c<T, Method, sFStateFct_c, sStateIDChk_c> {
public:
+ sFStateMgr_c(T &owner)
+ : sStateMgr_c<T, Method, sFStateFct_c, sStateIDChk_c>(owner) {}
sFStateMgr_c(T &owner, const sStateIDIf_c &initializeState)
: sStateMgr_c<T, Method, sFStateFct_c, sStateIDChk_c>(owner, initializeState) {}
};
diff --git a/include/s/s_StateMgr.hpp b/include/s/s_StateMgr.hpp
index 388f72c6..507c7ddd 100644
--- a/include/s/s_StateMgr.hpp
+++ b/include/s/s_StateMgr.hpp
@@ -1,6 +1,7 @@
#ifndef S_STATEMGR_H
#define S_STATEMGR_H
+#include "s/s_StateID.hpp"
#include "s/s_StateInterfaces.hpp"
// Note: Ported from https://github.com/NSMBW-Community/NSMBW-Decomp/tree/master/include/dol/sLib
@@ -18,6 +19,8 @@
template <class T, class Method, template <class> class Factory, class Check>
class sStateMgr_c : sStateMgrIf_c {
public:
+ sStateMgr_c(T &owner)
+ : mFactory(owner), mMethod(mCheck, mFactory, sStateID::null) {}
sStateMgr_c(T &owner, const sStateIDIf_c &initialState)
: mFactory(owner), mMethod(mCheck, mFactory, initialState) {}
diff --git a/src/d/lyt/d_lyt_map.cpp b/src/d/lyt/d_lyt_map.cpp
new file mode 100644
index 00000000..4ad5ea59
--- /dev/null
+++ b/src/d/lyt/d_lyt_map.cpp
@@ -0,0 +1,99 @@
+#include "d/lyt/d_lyt_map.h"
+
+STATE_DEFINE(dLytMapPinIcon_c, Wait);
+STATE_DEFINE(dLytMapPinIcon_c, ToSelect);
+STATE_DEFINE(dLytMapPinIcon_c, Select);
+STATE_DEFINE(dLytMapPinIcon_c, ToUnselect);
+STATE_DEFINE(dLytMapPinIcon_c, Remove);
+
+STATE_DEFINE(dLytMapPinIconAggregate_c, Wait);
+STATE_DEFINE(dLytMapPinIconAggregate_c, Select);
+STATE_DEFINE(dLytMapPinIconAggregate_c, Remove);
+
+STATE_DEFINE(dLytMapFloorBtn_c, Wait);
+STATE_DEFINE(dLytMapFloorBtn_c, ToSelect);
+STATE_DEFINE(dLytMapFloorBtn_c, Select);
+STATE_DEFINE(dLytMapFloorBtn_c, ToWait);
+STATE_DEFINE(dLytMapFloorBtn_c, ToDecide);
+STATE_DEFINE(dLytMapFloorBtn_c, Decide);
+STATE_DEFINE(dLytMapFloorBtn_c, ToSelectInDecide);
+STATE_DEFINE(dLytMapFloorBtn_c, SelectInDecide);
+STATE_DEFINE(dLytMapFloorBtn_c, DecideToSelectInDecide);
+
+STATE_DEFINE(dLytMapFloorBtnMgr_c, Invisible);
+STATE_DEFINE(dLytMapFloorBtnMgr_c, Wait);
+
+nw4r::ut::Color sSomeColor(0xFF, 0xFF, 0xFF, 0xFF);
+
+STATE_DEFINE(dLytMapPopupInfo_c, Invisible);
+STATE_DEFINE(dLytMapPopupInfo_c, In);
+STATE_DEFINE(dLytMapPopupInfo_c, Wait);
+STATE_DEFINE(dLytMapPopupInfo_c, WaitInvalid);
+STATE_DEFINE(dLytMapPopupInfo_c, Out);
+
+STATE_DEFINE(dLytMapSavePopupAction_c, Invisible);
+STATE_DEFINE(dLytMapSavePopupAction_c, In);
+STATE_DEFINE(dLytMapSavePopupAction_c, Wait);
+STATE_DEFINE(dLytMapSavePopupAction_c, Out);
+
+STATE_DEFINE(dLytMapSaveCaption_c, Invisible);
+STATE_DEFINE(dLytMapSaveCaption_c, In);
+STATE_DEFINE(dLytMapSaveCaption_c, Wait);
+STATE_DEFINE(dLytMapSaveCaption_c, Out);
+
+STATE_DEFINE(dLytMapSaveObj_c, Wait);
+STATE_DEFINE(dLytMapSaveObj_c, ToSelect);
+STATE_DEFINE(dLytMapSaveObj_c, Select);
+STATE_DEFINE(dLytMapSaveObj_c, ToWait);
+STATE_DEFINE(dLytMapSaveObj_c, Decide);
+
+STATE_DEFINE(dLytMapMain_c, Invisible);
+STATE_DEFINE(dLytMapMain_c, RenderingWait);
+STATE_DEFINE(dLytMapMain_c, In);
+STATE_DEFINE(dLytMapMain_c, Active);
+STATE_DEFINE(dLytMapMain_c, Out);
+STATE_DEFINE(dLytMapMain_c, FloorChange);
+STATE_DEFINE(dLytMapMain_c, ChgMapUpDirection);
+STATE_DEFINE(dLytMapMain_c, ChgDispAreaMode_Map);
+STATE_DEFINE(dLytMapMain_c, ChgDispAreaMode_MapRot);
+STATE_DEFINE(dLytMapMain_c, ChgDispAreaMode_WA);
+STATE_DEFINE(dLytMapMain_c, ChgDispAreaMode_CsrRot);
+STATE_DEFINE(dLytMapMain_c, ResetPos);
+STATE_DEFINE(dLytMapMain_c, ResetPosWithFloorChange);
+STATE_DEFINE(dLytMapMain_c, EventSwBankSmall_Step1);
+STATE_DEFINE(dLytMapMain_c, EventSwBankSmall_Step2);
+STATE_DEFINE(dLytMapMain_c, EventSwBankSmall_Step3);
+STATE_DEFINE(dLytMapMain_c, EventMapIntro_Step1);
+STATE_DEFINE(dLytMapMain_c, EventMapIntro_Step2);
+STATE_DEFINE(dLytMapMain_c, EventMapIntro_Step3);
+STATE_DEFINE(dLytMapMain_c, EventMapIntro_Step4);
+STATE_DEFINE(dLytMapMain_c, EventDungeonMapGet_Step1);
+STATE_DEFINE(dLytMapMain_c, EventDungeonMapGet_Step2);
+STATE_DEFINE(dLytMapMain_c, EventDungeonMapGet_Step3);
+STATE_DEFINE(dLytMapMain_c, EventFieldMapChange_Step1);
+STATE_DEFINE(dLytMapMain_c, EventFieldMapChange_Step2);
+STATE_DEFINE(dLytMapMain_c, EventFieldMapChange_Step3);
+STATE_DEFINE(dLytMapMain_c, EventFieldMapChange_Step4);
+STATE_DEFINE(dLytMapMain_c, EventForestMapChange_Step1);
+STATE_DEFINE(dLytMapMain_c, EventForestMapChange_Step2);
+STATE_DEFINE(dLytMapMain_c, EventForestMapChange_Step3);
+STATE_DEFINE(dLytMapMain_c, EventSignalAdd_Step1);
+STATE_DEFINE(dLytMapMain_c, EventSignalAdd_Step2);
+STATE_DEFINE(dLytMapMain_c, EventSignalAdd_Step3);
+STATE_DEFINE(dLytMapMain_c, EventGoddessCube_Step1);
+STATE_DEFINE(dLytMapMain_c, EventGoddessCube_Step2);
+STATE_DEFINE(dLytMapMain_c, EventGoddessCube_Step3);
+STATE_DEFINE(dLytMapMain_c, EventSaveObjMsgWindow);
+STATE_DEFINE(dLytMapMain_c, EventSaveObjSelect);
+STATE_DEFINE(dLytMapMain_c, EventSaveObjConfirmMsgWindow);
+STATE_DEFINE(dLytMapMain_c, EventSaveObjDecide);
+
+#pragma dont_inline on
+dLytMapMain_c::dLytMapMain_c() : mStateMgr(*this), mFloorBtnMgr(&field_0x8DC8) {}
+#pragma dont_inline reset
+
+dLytMapMain_c::~dLytMapMain_c() {}
+
+void dLytMapMain_c::draw() {}
+
+dLytMapFloorBtnMgr_c::~dLytMapFloorBtnMgr_c() {}
diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp
index f86fb2fe..ef9eaf92 100644
--- a/src/d/lyt/meter/d_lyt_meter.cpp
+++ b/src/d/lyt/meter/d_lyt_meter.cpp
@@ -275,7 +275,7 @@ void floats2() {
#pragma dont_inline on
dLytMeter_c::dLytMeter_c() {}
-#pragma dont_inline off
+#pragma dont_inline reset
extern "C" void *GLOBAL_TITLE_RELOADER;
extern "C" void fn_800D97E0(int i);