From ce13823586ed23c92a946d5188a719fa48e9e230 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Mon, 30 Jan 2023 22:52:13 -0800 Subject: [PATCH] some d_map_path_fmap work --- ...ypeGroupDataList_cFUcPCQ27dTres_c6data_s.s | 38 --- ...oomData__22dMenu_Fmap_room_data_cFiiffff.s | 14 - ...StageData__23dMenu_Fmap_stage_data_cFiff.s | 101 ------ ...sTypeGroup__22dMenu_Fmap_room_data_cFiii.s | 55 ---- ...pStageData__24dMenu_Fmap_region_data_cFi.s | 13 - include/d/d_tresure.h | 6 +- src/d/d_tresure.cpp | 7 +- src/d/map/d_map_path.cpp | 36 +-- src/d/map/d_map_path_fmap.cpp | 305 +++++++++++++----- 9 files changed, 244 insertions(+), 331 deletions(-) delete mode 100644 asm/d/map/d_map_path_fmap/addTypeGroupData__26fmpTresTypeGroupDataList_cFUcPCQ27dTres_c6data_s.s delete mode 100644 asm/d/map/d_map_path_fmap/buildFmapRoomData__22dMenu_Fmap_room_data_cFiiffff.s delete mode 100644 asm/d/map/d_map_path_fmap/buildFmapStageData__23dMenu_Fmap_stage_data_cFiff.s delete mode 100644 asm/d/map/d_map_path_fmap/buildTresTypeGroup__22dMenu_Fmap_room_data_cFiii.s delete mode 100644 asm/d/map/d_map_path_fmap/getMenuFmapStageData__24dMenu_Fmap_region_data_cFi.s diff --git a/asm/d/map/d_map_path_fmap/addTypeGroupData__26fmpTresTypeGroupDataList_cFUcPCQ27dTres_c6data_s.s b/asm/d/map/d_map_path_fmap/addTypeGroupData__26fmpTresTypeGroupDataList_cFUcPCQ27dTres_c6data_s.s deleted file mode 100644 index 436b62a51a3..00000000000 --- a/asm/d/map/d_map_path_fmap/addTypeGroupData__26fmpTresTypeGroupDataList_cFUcPCQ27dTres_c6data_s.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_8003D790: -/* 8003D790 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8003D794 7C 08 02 A6 */ mflr r0 -/* 8003D798 90 01 00 24 */ stw r0, 0x24(r1) -/* 8003D79C 39 61 00 20 */ addi r11, r1, 0x20 -/* 8003D7A0 48 32 4A 39 */ bl _savegpr_28 -/* 8003D7A4 7C 7C 1B 78 */ mr r28, r3 -/* 8003D7A8 7C 9D 23 78 */ mr r29, r4 -/* 8003D7AC 7C BE 2B 78 */ mr r30, r5 -/* 8003D7B0 83 E3 00 04 */ lwz r31, 4(r3) -/* 8003D7B4 38 60 00 0C */ li r3, 0xc -/* 8003D7B8 48 29 14 95 */ bl __nw__FUl -/* 8003D7BC 28 03 00 00 */ cmplwi r3, 0 -/* 8003D7C0 41 82 00 10 */ beq lbl_8003D7D0 -/* 8003D7C4 38 00 00 00 */ li r0, 0 -/* 8003D7C8 90 03 00 00 */ stw r0, 0(r3) -/* 8003D7CC 90 03 00 04 */ stw r0, 4(r3) -lbl_8003D7D0: -/* 8003D7D0 80 1C 00 00 */ lwz r0, 0(r28) -/* 8003D7D4 28 00 00 00 */ cmplwi r0, 0 -/* 8003D7D8 40 82 00 08 */ bne lbl_8003D7E0 -/* 8003D7DC 90 7C 00 00 */ stw r3, 0(r28) -lbl_8003D7E0: -/* 8003D7E0 93 C3 00 00 */ stw r30, 0(r3) -/* 8003D7E4 38 00 00 00 */ li r0, 0 -/* 8003D7E8 90 03 00 04 */ stw r0, 4(r3) -/* 8003D7EC 9B A3 00 08 */ stb r29, 8(r3) -/* 8003D7F0 28 1F 00 00 */ cmplwi r31, 0 -/* 8003D7F4 41 82 00 08 */ beq lbl_8003D7FC -/* 8003D7F8 90 7F 00 04 */ stw r3, 4(r31) -lbl_8003D7FC: -/* 8003D7FC 90 7C 00 04 */ stw r3, 4(r28) -/* 8003D800 39 61 00 20 */ addi r11, r1, 0x20 -/* 8003D804 48 32 4A 21 */ bl _restgpr_28 -/* 8003D808 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8003D80C 7C 08 03 A6 */ mtlr r0 -/* 8003D810 38 21 00 20 */ addi r1, r1, 0x20 -/* 8003D814 4E 80 00 20 */ blr diff --git a/asm/d/map/d_map_path_fmap/buildFmapRoomData__22dMenu_Fmap_room_data_cFiiffff.s b/asm/d/map/d_map_path_fmap/buildFmapRoomData__22dMenu_Fmap_room_data_cFiiffff.s deleted file mode 100644 index 891d487da09..00000000000 --- a/asm/d/map/d_map_path_fmap/buildFmapRoomData__22dMenu_Fmap_room_data_cFiiffff.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8003D92C: -/* 8003D92C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8003D930 7C 08 02 A6 */ mflr r0 -/* 8003D934 90 01 00 14 */ stw r0, 0x14(r1) -/* 8003D938 88 C3 00 10 */ lbz r6, 0x10(r3) -/* 8003D93C 80 03 00 00 */ lwz r0, 0(r3) -/* 8003D940 28 00 00 00 */ cmplwi r0, 0 -/* 8003D944 41 82 00 08 */ beq lbl_8003D94C -/* 8003D948 4B FF FF 21 */ bl buildTresTypeGroup__22dMenu_Fmap_room_data_cFiii -lbl_8003D94C: -/* 8003D94C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8003D950 7C 08 03 A6 */ mtlr r0 -/* 8003D954 38 21 00 10 */ addi r1, r1, 0x10 -/* 8003D958 4E 80 00 20 */ blr diff --git a/asm/d/map/d_map_path_fmap/buildFmapStageData__23dMenu_Fmap_stage_data_cFiff.s b/asm/d/map/d_map_path_fmap/buildFmapStageData__23dMenu_Fmap_stage_data_cFiff.s deleted file mode 100644 index 22401dcc2c9..00000000000 --- a/asm/d/map/d_map_path_fmap/buildFmapStageData__23dMenu_Fmap_stage_data_cFiff.s +++ /dev/null @@ -1,101 +0,0 @@ -lbl_8003D9D8: -/* 8003D9D8 94 21 FF 80 */ stwu r1, -0x80(r1) -/* 8003D9DC 7C 08 02 A6 */ mflr r0 -/* 8003D9E0 90 01 00 84 */ stw r0, 0x84(r1) -/* 8003D9E4 DB E1 00 70 */ stfd f31, 0x70(r1) -/* 8003D9E8 F3 E1 00 78 */ psq_st f31, 120(r1), 0, 0 /* qr0 */ -/* 8003D9EC DB C1 00 60 */ stfd f30, 0x60(r1) -/* 8003D9F0 F3 C1 00 68 */ psq_st f30, 104(r1), 0, 0 /* qr0 */ -/* 8003D9F4 DB A1 00 50 */ stfd f29, 0x50(r1) -/* 8003D9F8 F3 A1 00 58 */ psq_st f29, 88(r1), 0, 0 /* qr0 */ -/* 8003D9FC DB 81 00 40 */ stfd f28, 0x40(r1) -/* 8003DA00 F3 81 00 48 */ psq_st f28, 72(r1), 0, 0 /* qr0 */ -/* 8003DA04 DB 61 00 30 */ stfd f27, 0x30(r1) -/* 8003DA08 F3 61 00 38 */ psq_st f27, 56(r1), 0, 0 /* qr0 */ -/* 8003DA0C DB 41 00 20 */ stfd f26, 0x20(r1) -/* 8003DA10 F3 41 00 28 */ psq_st f26, 40(r1), 0, 0 /* qr0 */ -/* 8003DA14 39 61 00 20 */ addi r11, r1, 0x20 -/* 8003DA18 48 32 47 C1 */ bl _savegpr_28 -/* 8003DA1C 7C 7C 1B 78 */ mr r28, r3 -/* 8003DA20 7C 9D 23 78 */ mr r29, r4 -/* 8003DA24 FF 40 08 90 */ fmr f26, f1 -/* 8003DA28 FF 60 10 90 */ fmr f27, f2 -/* 8003DA2C 83 E3 00 0C */ lwz r31, 0xc(r3) -/* 8003DA30 3C 60 80 45 */ lis r3, __float_max@ha /* 0x80450AE8@ha */ -/* 8003DA34 C0 03 0A E8 */ lfs f0, __float_max@l(r3) /* 0x80450AE8@l */ -/* 8003DA38 FF E0 00 90 */ fmr f31, f0 -/* 8003DA3C FF C0 00 90 */ fmr f30, f0 -/* 8003DA40 FC 00 00 50 */ fneg f0, f0 -/* 8003DA44 FF A0 00 90 */ fmr f29, f0 -/* 8003DA48 FF 80 00 90 */ fmr f28, f0 -/* 8003DA4C 3B C0 00 00 */ li r30, 0 -/* 8003DA50 48 00 00 74 */ b lbl_8003DAC4 -lbl_8003DA54: -/* 8003DA54 7F E3 FB 78 */ mr r3, r31 -/* 8003DA58 7F A4 EB 78 */ mr r4, r29 -/* 8003DA5C 7F C5 F3 78 */ mr r5, r30 -/* 8003DA60 FC 20 D0 90 */ fmr f1, f26 -/* 8003DA64 FC 40 D8 90 */ fmr f2, f27 -/* 8003DA68 C0 7C 00 14 */ lfs f3, 0x14(r28) -/* 8003DA6C C0 9C 00 18 */ lfs f4, 0x18(r28) -/* 8003DA70 4B FF FE BD */ bl buildFmapRoomData__22dMenu_Fmap_room_data_cFiiffff -/* 8003DA74 80 7F 00 00 */ lwz r3, 0(r31) -/* 8003DA78 80 63 00 04 */ lwz r3, 4(r3) -/* 8003DA7C C0 03 00 00 */ lfs f0, 0(r3) -/* 8003DA80 C0 23 00 04 */ lfs f1, 4(r3) -/* 8003DA84 C0 43 00 08 */ lfs f2, 8(r3) -/* 8003DA88 C0 63 00 0C */ lfs f3, 0xc(r3) -/* 8003DA8C FC 00 F8 40 */ fcmpo cr0, f0, f31 -/* 8003DA90 40 80 00 08 */ bge lbl_8003DA98 -/* 8003DA94 FF E0 00 90 */ fmr f31, f0 -lbl_8003DA98: -/* 8003DA98 FC 01 F0 40 */ fcmpo cr0, f1, f30 -/* 8003DA9C 40 80 00 08 */ bge lbl_8003DAA4 -/* 8003DAA0 FF C0 08 90 */ fmr f30, f1 -lbl_8003DAA4: -/* 8003DAA4 FC 02 E8 40 */ fcmpo cr0, f2, f29 -/* 8003DAA8 40 81 00 08 */ ble lbl_8003DAB0 -/* 8003DAAC FF A0 10 90 */ fmr f29, f2 -lbl_8003DAB0: -/* 8003DAB0 FC 03 E0 40 */ fcmpo cr0, f3, f28 -/* 8003DAB4 40 81 00 08 */ ble lbl_8003DABC -/* 8003DAB8 FF 80 18 90 */ fmr f28, f3 -lbl_8003DABC: -/* 8003DABC 83 FF 00 08 */ lwz r31, 8(r31) -/* 8003DAC0 3B DE 00 01 */ addi r30, r30, 1 -lbl_8003DAC4: -/* 8003DAC4 28 1F 00 00 */ cmplwi r31, 0 -/* 8003DAC8 40 82 FF 8C */ bne lbl_8003DA54 -/* 8003DACC 2C 1E 00 00 */ cmpwi r30, 0 -/* 8003DAD0 40 81 00 18 */ ble lbl_8003DAE8 -/* 8003DAD4 D3 FC 00 1C */ stfs f31, 0x1c(r28) -/* 8003DAD8 D3 DC 00 20 */ stfs f30, 0x20(r28) -/* 8003DADC D3 BC 00 24 */ stfs f29, 0x24(r28) -/* 8003DAE0 D3 9C 00 28 */ stfs f28, 0x28(r28) -/* 8003DAE4 48 00 00 18 */ b lbl_8003DAFC -lbl_8003DAE8: -/* 8003DAE8 C0 02 84 20 */ lfs f0, lit_3894(r2) -/* 8003DAEC D0 1C 00 1C */ stfs f0, 0x1c(r28) -/* 8003DAF0 D0 1C 00 20 */ stfs f0, 0x20(r28) -/* 8003DAF4 D0 1C 00 24 */ stfs f0, 0x24(r28) -/* 8003DAF8 D0 1C 00 28 */ stfs f0, 0x28(r28) -lbl_8003DAFC: -/* 8003DAFC 7F C3 F3 78 */ mr r3, r30 -/* 8003DB00 E3 E1 00 78 */ psq_l f31, 120(r1), 0, 0 /* qr0 */ -/* 8003DB04 CB E1 00 70 */ lfd f31, 0x70(r1) -/* 8003DB08 E3 C1 00 68 */ psq_l f30, 104(r1), 0, 0 /* qr0 */ -/* 8003DB0C CB C1 00 60 */ lfd f30, 0x60(r1) -/* 8003DB10 E3 A1 00 58 */ psq_l f29, 88(r1), 0, 0 /* qr0 */ -/* 8003DB14 CB A1 00 50 */ lfd f29, 0x50(r1) -/* 8003DB18 E3 81 00 48 */ psq_l f28, 72(r1), 0, 0 /* qr0 */ -/* 8003DB1C CB 81 00 40 */ lfd f28, 0x40(r1) -/* 8003DB20 E3 61 00 38 */ psq_l f27, 56(r1), 0, 0 /* qr0 */ -/* 8003DB24 CB 61 00 30 */ lfd f27, 0x30(r1) -/* 8003DB28 E3 41 00 28 */ psq_l f26, 40(r1), 0, 0 /* qr0 */ -/* 8003DB2C CB 41 00 20 */ lfd f26, 0x20(r1) -/* 8003DB30 39 61 00 20 */ addi r11, r1, 0x20 -/* 8003DB34 48 32 46 F1 */ bl _restgpr_28 -/* 8003DB38 80 01 00 84 */ lwz r0, 0x84(r1) -/* 8003DB3C 7C 08 03 A6 */ mtlr r0 -/* 8003DB40 38 21 00 80 */ addi r1, r1, 0x80 -/* 8003DB44 4E 80 00 20 */ blr diff --git a/asm/d/map/d_map_path_fmap/buildTresTypeGroup__22dMenu_Fmap_room_data_cFiii.s b/asm/d/map/d_map_path_fmap/buildTresTypeGroup__22dMenu_Fmap_room_data_cFiii.s deleted file mode 100644 index 98bd757d019..00000000000 --- a/asm/d/map/d_map_path_fmap/buildTresTypeGroup__22dMenu_Fmap_room_data_cFiii.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_8003D868: -/* 8003D868 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8003D86C 7C 08 02 A6 */ mflr r0 -/* 8003D870 90 01 00 24 */ stw r0, 0x24(r1) -/* 8003D874 39 61 00 20 */ addi r11, r1, 0x20 -/* 8003D878 48 32 49 5D */ bl _savegpr_27 -/* 8003D87C 7C 7B 1B 78 */ mr r27, r3 -/* 8003D880 7C DC 33 78 */ mr r28, r6 -/* 8003D884 80 63 00 00 */ lwz r3, 0(r3) -/* 8003D888 80 63 00 00 */ lwz r3, 0(r3) -/* 8003D88C 28 03 00 00 */ cmplwi r3, 0 -/* 8003D890 41 82 00 84 */ beq lbl_8003D914 -/* 8003D894 83 C3 00 00 */ lwz r30, 0(r3) -/* 8003D898 83 A3 00 04 */ lwz r29, 4(r3) -/* 8003D89C 80 1B 00 04 */ lwz r0, 4(r27) -/* 8003D8A0 28 00 00 00 */ cmplwi r0, 0 -/* 8003D8A4 40 82 00 34 */ bne lbl_8003D8D8 -/* 8003D8A8 38 60 00 88 */ li r3, 0x88 -/* 8003D8AC 48 29 13 A1 */ bl __nw__FUl -/* 8003D8B0 7C 7F 1B 79 */ or. r31, r3, r3 -/* 8003D8B4 41 82 00 20 */ beq lbl_8003D8D4 -/* 8003D8B8 3C 80 80 04 */ lis r4, __ct__26fmpTresTypeGroupDataList_cFv@ha /* 0x8003EC90@ha */ -/* 8003D8BC 38 84 EC 90 */ addi r4, r4, __ct__26fmpTresTypeGroupDataList_cFv@l /* 0x8003EC90@l */ -/* 8003D8C0 3C A0 80 04 */ lis r5, __dt__26fmpTresTypeGroupDataList_cFv@ha /* 0x8003EB10@ha */ -/* 8003D8C4 38 A5 EB 10 */ addi r5, r5, __dt__26fmpTresTypeGroupDataList_cFv@l /* 0x8003EB10@l */ -/* 8003D8C8 38 C0 00 08 */ li r6, 8 -/* 8003D8CC 38 E0 00 11 */ li r7, 0x11 -/* 8003D8D0 48 32 44 91 */ bl __construct_array -lbl_8003D8D4: -/* 8003D8D4 93 FB 00 04 */ stw r31, 4(r27) -lbl_8003D8D8: -/* 8003D8D8 3B E0 00 00 */ li r31, 0 -/* 8003D8DC 48 00 00 30 */ b lbl_8003D90C -lbl_8003D8E0: -/* 8003D8E0 9B 9D 00 01 */ stb r28, 1(r29) -/* 8003D8E4 88 7D 00 11 */ lbz r3, 0x11(r29) -/* 8003D8E8 48 05 EB C9 */ bl getTypeToTypeGroupNo__7dTres_cFUc -/* 8003D8EC 7C 64 1B 78 */ mr r4, r3 -/* 8003D8F0 80 7B 00 04 */ lwz r3, 4(r27) -/* 8003D8F4 54 80 1D 78 */ rlwinm r0, r4, 3, 0x15, 0x1c -/* 8003D8F8 7C 63 02 14 */ add r3, r3, r0 -/* 8003D8FC 7F A5 EB 78 */ mr r5, r29 -/* 8003D900 4B FF FE 91 */ bl addTypeGroupData__26fmpTresTypeGroupDataList_cFUcPCQ27dTres_c6data_s -/* 8003D904 3B BD 00 14 */ addi r29, r29, 0x14 -/* 8003D908 3B FF 00 01 */ addi r31, r31, 1 -lbl_8003D90C: -/* 8003D90C 7C 1F F0 00 */ cmpw r31, r30 -/* 8003D910 41 80 FF D0 */ blt lbl_8003D8E0 -lbl_8003D914: -/* 8003D914 39 61 00 20 */ addi r11, r1, 0x20 -/* 8003D918 48 32 49 09 */ bl _restgpr_27 -/* 8003D91C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8003D920 7C 08 03 A6 */ mtlr r0 -/* 8003D924 38 21 00 20 */ addi r1, r1, 0x20 -/* 8003D928 4E 80 00 20 */ blr diff --git a/asm/d/map/d_map_path_fmap/getMenuFmapStageData__24dMenu_Fmap_region_data_cFi.s b/asm/d/map/d_map_path_fmap/getMenuFmapStageData__24dMenu_Fmap_region_data_cFi.s deleted file mode 100644 index 5410f11f6bf..00000000000 --- a/asm/d/map/d_map_path_fmap/getMenuFmapStageData__24dMenu_Fmap_region_data_cFi.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8003DB48: -/* 8003DB48 80 63 00 00 */ lwz r3, 0(r3) -/* 8003DB4C 38 A0 00 00 */ li r5, 0 -/* 8003DB50 48 00 00 0C */ b lbl_8003DB5C -lbl_8003DB54: -/* 8003DB54 80 63 00 10 */ lwz r3, 0x10(r3) -/* 8003DB58 38 A5 00 01 */ addi r5, r5, 1 -lbl_8003DB5C: -/* 8003DB5C 28 03 00 00 */ cmplwi r3, 0 -/* 8003DB60 4D 82 00 20 */ beqlr -/* 8003DB64 7C 05 20 00 */ cmpw r5, r4 -/* 8003DB68 41 80 FF EC */ blt lbl_8003DB54 -/* 8003DB6C 4E 80 00 20 */ blr diff --git a/include/d/d_tresure.h b/include/d/d_tresure.h index 8e5d134d0b7..b8feddbd267 100644 --- a/include/d/d_tresure.h +++ b/include/d/d_tresure.h @@ -41,8 +41,8 @@ public: }; // Size: 0x1C struct list_class { - /* 0x0 */ typeGroupData_c* field_0x0; - /* 0x4 */ typeGroupData_c* field_0x4; + /* 0x0 */ int field_0x0; + /* 0x4 */ data_s* field_0x4; /* 0x8 */ u8 mNumber; }; @@ -60,7 +60,7 @@ public: /* 8009C3B4 */ static typeGroupData_c* getNextData(dTres_c::typeGroupData_c const*); /* 8009C3CC */ static void setPosition(int, u8, Vec const*, int); /* 8009C49C */ static int getTypeGroupNoToType(u8); - /* 8009C4B0 */ static int getTypeToTypeGroupNo(u8); + /* 8009C4B0 */ static u8 getTypeToTypeGroupNo(u8); static int getTypeGroupNumber(int index) { return mTypeGroupListAll[index].mNumber; diff --git a/src/d/d_tresure.cpp b/src/d/d_tresure.cpp index 0480999a1d1..e27fa831419 100644 --- a/src/d/d_tresure.cpp +++ b/src/d/d_tresure.cpp @@ -264,7 +264,8 @@ dTres_c::typeGroupData_c* dTres_c::getFirstData(u8 listIdx) { return NULL; } - return mTypeGroupListAll[listIdx].field_0x0; + // this is wrong, fix later + return (dTres_c::typeGroupData_c*)mTypeGroupListAll[listIdx].field_0x0; } /* 8009C39C-8009C3B4 096CDC 0018+00 2/2 3/3 0/0 .text @@ -327,8 +328,8 @@ int dTres_c::getTypeGroupNoToType(u8 i_typeGroupNo) { /* 8009C4B0-8009C4FC 096DF0 004C+00 1/1 3/3 0/0 .text getTypeToTypeGroupNo__7dTres_cFUc */ -int dTres_c::getTypeToTypeGroupNo(u8 i_type) { - u8 groupNo = 17; +u8 dTres_c::getTypeToTypeGroupNo(u8 i_type) { + int groupNo = 17; for (int i = 0; i < 17; i++) { if (i_type == typeToTypeGroup[i][0]) { groupNo = typeToTypeGroup[i][1]; diff --git a/src/d/map/d_map_path.cpp b/src/d/map/d_map_path.cpp index ed5edf5e531..1e8c06b367c 100644 --- a/src/d/map/d_map_path.cpp +++ b/src/d/map/d_map_path.cpp @@ -4,8 +4,6 @@ // #include "d/map/d_map_path.h" -#include "dol2asm.h" -#include "dolphin/types.h" #include "d/com/d_com_inf_game.h" #include "m_Do/m_Do_lib.h" @@ -42,25 +40,12 @@ extern "C" u8 m_texObjAgg__8dMpath_n[28]; // External References: // -extern "C" void mDoLib_setResTimgObj__FPC7ResTIMGP9_GXTexObjUlP10_GXTlutObj(); extern "C" void draw__12dDlst_base_cFv(); extern "C" bool isDrawType__11dDrawPath_cFi(); extern "C" void __dt__18dRenderingFDAmap_cFv(); extern "C" void __dt__11dDrawPath_cFv(); extern "C" void getLineColor__11dDrawPath_cFii(); extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void GXClearVtxDesc(); -extern "C" void GXPixModeSync(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" extern Mtx g_mDoMtx_identity; // // Declarations: @@ -93,7 +78,7 @@ void dMpath_n::dTexObjAggregate_c::remove() { void dDrawPath_c::rendering(dDrawPath_c::line_class const* p_line) { if (isDrawType(p_line->unk0)) { int width = getLineWidth(p_line->unk1); - + if (width > 0 && p_line->unk2 >= 2) { GXSetLineWidth(width, GX_TO_ZERO); GXSetTevColor(GX_TEVREG0, *getLineColor(p_line->unk0 & 0x3F, p_line->unk1)); @@ -114,7 +99,7 @@ void dDrawPath_c::rendering(dDrawPath_c::line_class const* p_line) { void dDrawPath_c::rendering(dDrawPath_c::poly_class const* p_poly) { if (isDrawType(p_poly->field_0x0)) { GXSetTevColor(GX_TEVREG0, *getColor(p_poly->field_0x0 & 0x3F)); - + if (p_poly->field_0x1 >= 3) { GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, p_poly->field_0x1); @@ -169,7 +154,7 @@ void dDrawPath_c::rendering(dDrawPath_c::room_class const* p_room) { if (floor != NULL) { for (int i = 0; i < p_room->field_0x0; i++) { if (isRenderingFloor(floor->field_0x0)) { - rendering(floor); + rendering(floor); } floor++; } @@ -189,7 +174,7 @@ void dDrawPath_c::drawPath() { /* 8003CD38-8003CDAC 037678 0074+00 0/0 3/3 0/0 .text * makeResTIMG__15dRenderingMap_cCFP7ResTIMGUsUsPUcPUcUs */ void dRenderingMap_c::makeResTIMG(ResTIMG* p_image, u16 width, u16 height, u8* p_data, - u8* p_palette, u16 param_5) const { + u8* p_palette, u16 param_5) const { p_image->format = GX_TF_CI14; p_image->alphaEnabled = 2; p_image->width = width; @@ -253,7 +238,8 @@ void dRenderingFDAmap_c::setTevSettingIntensityTextureToCI() const { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_KONST, GX_CC_TEXC, GX_CC_C1); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_CPREV, GX_CC_C2, GX_CC_CPREV, GX_CC_ZERO); - GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_COMP_R8_GT, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_COMP_R8_GT, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, + GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); @@ -324,7 +310,7 @@ dMpath_n::dTexObjAggregate_c dMpath_n::m_texObjAgg; * make the map look worse for extra speed in the emulator, especially in large * areas such as hyrule field. */ -//#define HYRULE_FIELD_SPEEDHACK +// #define HYRULE_FIELD_SPEEDHACK /* 8003D3C0-8003D68C 037D00 02CC+00 0/0 2/2 0/0 .text * renderingDecoration__18dRenderingFDAmap_cFPCQ211dDrawPath_c10line_class */ @@ -333,6 +319,7 @@ void dRenderingFDAmap_c::renderingDecoration(dDrawPath_c::line_class const* p_li if (width <= 0) { return; } + setTevSettingIntensityTextureToCI(); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); @@ -341,6 +328,7 @@ void dRenderingFDAmap_c::renderingDecoration(dDrawPath_c::line_class const* p_li GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_POS_XYZ, GX_F32, 0); GXSetNumTevStages(1); GXLoadTexObj(dMpath_n::m_texObjAgg.mp_texObj[6], GX_TEXMAP0); + u16* unk = p_line->unk4; s32 unk2 = p_line->unk2; GXSetLineWidth(width, GX_TO_ONE); @@ -349,6 +337,7 @@ void dRenderingFDAmap_c::renderingDecoration(dDrawPath_c::line_class const* p_li GXSetTevColor(GX_TEVREG0, lineColor); lineColor.r = lineColor.r - 4; GXSetTevColor(GX_TEVREG1, lineColor); + for (int i = 0; i < unk2; unk++, i++) { #ifndef HYRULE_FIELD_SPEEDHACK if (i < unk2 - 1) { @@ -374,6 +363,7 @@ void dRenderingFDAmap_c::renderingDecoration(dDrawPath_c::line_class const* p_li GXTexCoord2f32(0, 0); i_GXEnd(); } + setTevSettingNonTextureDirectColor(); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); @@ -393,7 +383,7 @@ s32 dRenderingFDAmap_c::getDecorationLineWidth(int param_0) { /* ############################################################################################## */ /* 803A7C90-803A7CF8 004DB0 0068+00 0/0 12/12 0/0 .data __vt__18dRenderingFDAmap_c */ -SECTION_DATA extern void* __vt__18dRenderingFDAmap_c[26] = { +extern void* __vt__18dRenderingFDAmap_c[26] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__12dDlst_base_cFv, @@ -423,7 +413,7 @@ SECTION_DATA extern void* __vt__18dRenderingFDAmap_c[26] = { }; /* 803A7CF8-803A7D38 004E18 0040+00 0/0 15/15 0/0 .data __vt__11dDrawPath_c */ -SECTION_DATA extern void* __vt__11dDrawPath_c[16] = { +extern void* __vt__11dDrawPath_c[16] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__12dDlst_base_cFv, diff --git a/src/d/map/d_map_path_fmap.cpp b/src/d/map/d_map_path_fmap.cpp index b252fe87b59..58b65a0e565 100644 --- a/src/d/map/d_map_path_fmap.cpp +++ b/src/d/map/d_map_path_fmap.cpp @@ -4,78 +4,143 @@ // #include "d/map/d_map_path_fmap.h" +#include "d/com/d_com_inf_game.h" #include "dol2asm.h" -#include "dolphin/types.h" // // Types: // -struct fmpTresTypeGroupData_c { +class fmpTresTypeGroupData_c { +public: + fmpTresTypeGroupData_c() { + mpTresData = NULL; + mpNext = NULL; + } + /* 8003EB70 */ ~fmpTresTypeGroupData_c(); -}; -struct dTres_c { - struct data_s {}; + void setTypeGroupNo(u8 i_no) { mTypeGroupNo = i_no; } + void setNextData(fmpTresTypeGroupData_c* i_next) { mpNext = i_next; } + void setTresData(const dTres_c::data_s* i_data) { mpTresData = i_data; } + const dTres_c::data_s* getTresData() { return mpTresData; } + fmpTresTypeGroupData_c* getNextData() { return mpNext; } - struct typeGroupData_c {}; + /* 0x0 */ const dTres_c::data_s* mpTresData; + /* 0x0 */ fmpTresTypeGroupData_c* mpNext; + /* 0x8 */ u8 mTypeGroupNo; +}; // Size: 0xC - /* 8009C360 */ void getFirstData(u8); - /* 8009C39C */ void getNextData(dTres_c::typeGroupData_c*); - /* 8009C49C */ void getTypeGroupNoToType(u8); - /* 8009C4B0 */ void getTypeToTypeGroupNo(u8); -}; - -struct fmpTresTypeGroupDataList_c { +class fmpTresTypeGroupDataList_c { +public: /* 8003D790 */ void addTypeGroupData(u8, dTres_c::data_s const*); /* 8003EB10 */ ~fmpTresTypeGroupDataList_c(); /* 8003EC90 */ fmpTresTypeGroupDataList_c(); + + /* 0x0 */ fmpTresTypeGroupData_c* mpTypeGroupDataHead; + /* 0x4 */ fmpTresTypeGroupData_c* mpNextData; }; -struct dSv_save_c { - /* 800350A8 */ void getSave2(int); +class fmpTresTypeGroupDataListAll_c { +public: + void addTypeGroupData(u8 i_typeGroupNo, const dTres_c::data_s* i_data) { + mpTypeGroupData[i_typeGroupNo].addTypeGroupData(i_typeGroupNo, i_data); + } + + /* 0x0 */ fmpTresTypeGroupDataList_c mpTypeGroupData[17]; }; -struct dSv_memory2_c { - /* 80034AEC */ void isVisitedRoom(int); +class dMenu_Fmap_data_c { +public: + dTres_c::list_class* getTresure() { return mp_tresure; } + f32 getFilelist2MinX() { return m_fileList2->mLeftRmX; } + f32 getFilelist2MinZ() { return m_fileList2->mInnerRmZ; } + f32 getFilelist2MaxX() { return m_fileList2->mRightRmX; } + f32 getFilelist2MaxZ() { return m_fileList2->mFrontRmZ; } + + /* 0x0 */ dTres_c::list_class* mp_tresure; + /* 0x4 */ dStage_FileList2_dt_c* m_fileList2; + /* 0x8 */ dDrawPath_c::room_class* mp_mapPath; + /* 0xC */ void* mp_dzsData; }; -struct dSv_memBit_c { - /* 800347E8 */ void isTbox(int) const; +class dMenu_Fmap_stage_data_c; +class dMenu_Fmap_room_data_c { +public: + /* 8003D818 */ bool isArrival(); + /* 8003D868 */ void buildTresTypeGroup(int, int, int); + /* 8003D92C */ void buildFmapRoomData(int, int, f32, f32, f32, f32); + + f32 getFileList2MinX() { return mp_fmapData->getFilelist2MinX(); } + f32 getFileList2MinZ() { return mp_fmapData->getFilelist2MinZ(); } + f32 getFileList2MaxX() { return mp_fmapData->getFilelist2MaxX(); } + f32 getFileList2MaxZ() { return mp_fmapData->getFilelist2MaxZ(); } + dMenu_Fmap_room_data_c* getNextData() { return mp_nextData; } + int getRoomNo() { return m_roomNo; } + + /* 0x00 */ dMenu_Fmap_data_c* mp_fmapData; + /* 0x04 */ fmpTresTypeGroupDataListAll_c* mp_fmpTresTypeGroupDataListAll; + /* 0x08 */ dMenu_Fmap_room_data_c* mp_nextData; + /* 0x0C */ dMenu_Fmap_stage_data_c* mp_parentStage; + /* 0x10 */ u8 m_roomNo; }; -struct dSv_info_c { - /* 80035360 */ void isSwitch(int, int) const; +class dMenu_Fmap_stage_arc_data_c { +public: + u8 getVisitedRoomSaveTableNo() { return mVisitedRoomSaveTableNo; } + + /* 0x0 */ u8 field_0x0; + /* 0x1 */ u8 mSaveTableNo; + /* 0x2 */ u8 mVisitedRoomSaveTableNo; }; -struct dSv_event_flag_c { - static u8 saveBitLabels[1644 + 4 /* padding */]; +class dMenu_Fmap_stage_data_c { +public: + /* 8003D95C */ bool isArrival(); + /* 8003D9D8 */ int buildFmapStageData(int, f32, f32); + + dMenu_Fmap_stage_arc_data_c* getStageArc() { return mpStageArc; } + dMenu_Fmap_stage_data_c* getNextData() { return mpNextData; } + + /* 0x00 */ char name[8]; + /* 0x08 */ dMenu_Fmap_stage_arc_data_c* mpStageArc; + /* 0x0C */ dMenu_Fmap_room_data_c* mp_roomTop; + /* 0x10 */ dMenu_Fmap_stage_data_c* mpNextData; + /* 0x14 */ f32 m_offsetX; + /* 0x18 */ f32 m_offsetZ; + /* 0x1C */ f32 m_stageMinX; + /* 0x20 */ f32 m_stageMinZ; + /* 0x24 */ f32 m_stageMaxX; + /* 0x28 */ f32 m_stageMaxZ; + /* 0x2C */ int m_stageCntNo; }; -struct dSv_event_c { - /* 800349BC */ void isEventBit(u16) const; -}; - -struct dMenu_Fmap_region_data_c { - /* 8003DB48 */ void getMenuFmapStageData(int); +class dMenu_Fmap_region_data_c { +public: + /* 8003DB48 */ dMenu_Fmap_stage_data_c* getMenuFmapStageData(int); /* 8003DB70 */ void getPointStagePathInnerNo(f32, f32, int, int*, int*); /* 8003DEE0 */ void buildFmapRegionData(int); + + /* 0x00 */ dMenu_Fmap_stage_data_c* mpMenuFmapStageDataTop; + /* 0x04 */ dMenu_Fmap_region_data_c* mpNextData; + /* 0x08 */ f32 mRegionOffsetX; + /* 0x0C */ f32 mRegionOffsetZ; + /* 0x10 */ f32 mRegionMinX; + /* 0x14 */ f32 mRegionMaxX; + /* 0x18 */ f32 mRegionMinZ; + /* 0x1C */ f32 mRegionMaxZ; + /* 0x20 */ int mRegionNo; }; struct dMenu_Fmap_world_data_c { /* 8003E028 */ void create(dMenu_Fmap_region_data_c*); /* 8003E04C */ void buildFmapWorldData(); -}; -struct dMenu_Fmap_stage_data_c { - /* 8003D95C */ void isArrival(); - /* 8003D9D8 */ void buildFmapStageData(int, f32, f32); -}; - -struct dMenu_Fmap_room_data_c { - /* 8003D818 */ void isArrival(); - /* 8003D868 */ void buildTresTypeGroup(int, int, int); - /* 8003D92C */ void buildFmapRoomData(int, int, f32, f32, f32, f32); + /* 0x00 */ dMenu_Fmap_region_data_c* mp_fmapRegionData; + /* 0x04 */ f32 m_worldMinX; + /* 0x08 */ f32 m_worldMinZ; + /* 0x0C */ f32 m_worldMaxX; + /* 0x10 */ f32 m_worldMaxZ; }; struct dMenuFmapIconPointer_c { @@ -145,7 +210,6 @@ extern "C" void getTypeGroupNoToType__7dTres_cFUc(); extern "C" void getTypeToTypeGroupNo__7dTres_cFUc(); extern "C" void* __nw__FUl(); extern "C" void __dl__FPv(); -extern "C" void PSVECCrossProduct(); extern "C" void __construct_array(); extern "C" void __save_gpr(); extern "C" void _savegpr_22(); @@ -159,10 +223,7 @@ extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void strcmp(); extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u32 __float_max; // // Declarations: @@ -170,57 +231,98 @@ extern "C" extern u32 __float_max; /* 8003D790-8003D818 0380D0 0088+00 1/1 0/0 0/0 .text * addTypeGroupData__26fmpTresTypeGroupDataList_cFUcPCQ27dTres_c6data_s */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void fmpTresTypeGroupDataList_c::addTypeGroupData(u8 param_0, dTres_c::data_s const* param_1) { - nofralloc -#include "asm/d/map/d_map_path_fmap/addTypeGroupData__26fmpTresTypeGroupDataList_cFUcPCQ27dTres_c6data_s.s" +void fmpTresTypeGroupDataList_c::addTypeGroupData(u8 i_typeGroupNo, + dTres_c::data_s const* i_tresData) { + fmpTresTypeGroupData_c* next = mpNextData; + fmpTresTypeGroupData_c* fmpTresTypeGroupData_p = new fmpTresTypeGroupData_c(); + + if (mpTypeGroupDataHead == NULL) { + mpTypeGroupDataHead = fmpTresTypeGroupData_p; + } + + fmpTresTypeGroupData_p->setTresData(i_tresData); + fmpTresTypeGroupData_p->setNextData(NULL); + fmpTresTypeGroupData_p->setTypeGroupNo(i_typeGroupNo); + + if (next != NULL) { + next->setNextData(fmpTresTypeGroupData_p); + } + + mpNextData = fmpTresTypeGroupData_p; } -#pragma pop /* 8003D818-8003D868 038158 0050+00 1/1 1/1 0/0 .text isArrival__22dMenu_Fmap_room_data_cFv */ +#ifdef NONMATCHING +bool dMenu_Fmap_room_data_c::isArrival() { + u8 table_no = mp_parentStage->getStageArc()->getVisitedRoomSaveTableNo(); + return dComIfGs_isSaveVisitedRoom(table_no, m_roomNo) != false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap_room_data_c::isArrival() { +asm bool dMenu_Fmap_room_data_c::isArrival() { nofralloc #include "asm/d/map/d_map_path_fmap/isArrival__22dMenu_Fmap_room_data_cFv.s" } #pragma pop +#endif /* 8003D868-8003D92C 0381A8 00C4+00 1/1 0/0 0/0 .text * buildTresTypeGroup__22dMenu_Fmap_room_data_cFiii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap_room_data_c::buildTresTypeGroup(int param_0, int param_1, int param_2) { - nofralloc -#include "asm/d/map/d_map_path_fmap/buildTresTypeGroup__22dMenu_Fmap_room_data_cFiii.s" +void dMenu_Fmap_room_data_c::buildTresTypeGroup(int param_0, int param_1, int param_2) { + dTres_c::list_class* tresure_p = mp_fmapData->getTresure(); + if (tresure_p != NULL) { + int num = tresure_p->field_0x0; + dTres_c::data_s* data_p = tresure_p->field_0x4; + + if (mp_fmpTresTypeGroupDataListAll == NULL) { + mp_fmpTresTypeGroupDataListAll = new fmpTresTypeGroupDataListAll_c(); + } + + for (int i = 0; i < num; i++) { + data_p->mRoomNo = param_2; + u8 typeGroupNo = dTres_c::getTypeToTypeGroupNo(data_p->mType); + mp_fmpTresTypeGroupDataListAll->addTypeGroupData(typeGroupNo, data_p); + data_p++; + } + } } -#pragma pop /* 8003D92C-8003D95C 03826C 0030+00 1/1 0/0 0/0 .text * buildFmapRoomData__22dMenu_Fmap_room_data_cFiiffff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap_room_data_c::buildFmapRoomData(int param_0, int param_1, f32 param_2, - f32 param_3, f32 param_4, f32 param_5) { - nofralloc -#include "asm/d/map/d_map_path_fmap/buildFmapRoomData__22dMenu_Fmap_room_data_cFiiffff.s" +void dMenu_Fmap_room_data_c::buildFmapRoomData(int param_0, int param_1, f32 param_2, f32 param_3, + f32 param_4, f32 param_5) { + int roomNo = m_roomNo; + + if (mp_fmapData != NULL) { + buildTresTypeGroup(param_0, param_1, roomNo); + } } -#pragma pop /* 8003D95C-8003D9D8 03829C 007C+00 1/1 0/0 0/0 .text isArrival__23dMenu_Fmap_stage_data_cFv */ +#ifdef NONMATCHING +bool dMenu_Fmap_stage_data_c::isArrival() { + bool is_arrival = false; + + dMenu_Fmap_room_data_c* room = mp_roomTop; + u8 table_no = mpStageArc->getVisitedRoomSaveTableNo(); + for (; !is_arrival && room != NULL; room = room->getNextData()) { + is_arrival = dComIfGs_isSaveVisitedRoom(table_no, room->getRoomNo()) != false; + } + + return is_arrival; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap_stage_data_c::isArrival() { +asm bool dMenu_Fmap_stage_data_c::isArrival() { nofralloc #include "asm/d/map/d_map_path_fmap/isArrival__23dMenu_Fmap_stage_data_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80451E20-80451E28 000420 0004+04 5/5 0/0 0/0 .sdata2 @3894 */ @@ -232,25 +334,66 @@ SECTION_SDATA2 static f32 lit_3894[1 + 1 /* padding */] = { /* 8003D9D8-8003DB48 038318 0170+00 1/1 0/0 0/0 .text * buildFmapStageData__23dMenu_Fmap_stage_data_cFiff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap_stage_data_c::buildFmapStageData(int param_0, f32 param_1, f32 param_2) { - nofralloc -#include "asm/d/map/d_map_path_fmap/buildFmapStageData__23dMenu_Fmap_stage_data_cFiff.s" +int dMenu_Fmap_stage_data_c::buildFmapStageData(int param_0, f32 param_1, f32 param_2) { + dMenu_Fmap_room_data_c* room = mp_roomTop; + f32 fvar3 = __float_max[0]; + f32 fvar4 = __float_max[0]; + f32 fvar5 = -__float_max[0]; + f32 fvar6 = -__float_max[0]; + int ivar = 0; + + for (; room != NULL; room = room->getNextData()) { + room->buildFmapRoomData(param_0, ivar, param_1, param_2, m_offsetX, m_offsetZ); + f32 min_x = room->getFileList2MinX(); + f32 min_z = room->getFileList2MinZ(); + f32 max_x = room->getFileList2MaxX(); + f32 max_z = room->getFileList2MaxZ(); + + if (min_x < fvar3) { + fvar3 = min_x; + } + + if (min_z < fvar4) { + fvar4 = min_z; + } + + if (max_x > fvar5) { + fvar5 = max_x; + } + + if (max_z > fvar6) { + fvar6 = max_z; + } + + ivar++; + } + + if (ivar > 0) { + m_stageMinX = fvar3; + m_stageMinZ = fvar4; + m_stageMaxX = fvar5; + m_stageMaxZ = fvar6; + } else { + f32 tmp_0 = lit_3894[0]; + m_stageMinX = tmp_0; + m_stageMinZ = tmp_0; + m_stageMaxX = tmp_0; + m_stageMaxZ = tmp_0; + } + + return ivar; } -#pragma pop /* 8003DB48-8003DB70 038488 0028+00 0/0 1/1 0/0 .text * getMenuFmapStageData__24dMenu_Fmap_region_data_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap_region_data_c::getMenuFmapStageData(int param_0) { - nofralloc -#include "asm/d/map/d_map_path_fmap/getMenuFmapStageData__24dMenu_Fmap_region_data_cFi.s" +dMenu_Fmap_stage_data_c* dMenu_Fmap_region_data_c::getMenuFmapStageData(int param_0) { + dMenu_Fmap_stage_data_c* stage = mpMenuFmapStageDataTop; + for (int i = 0; stage != NULL && i < param_0; i++) { + stage = stage->getNextData(); + } + + return stage; } -#pragma pop /* 8003DB70-8003DEE0 0384B0 0370+00 0/0 1/1 0/0 .text * getPointStagePathInnerNo__24dMenu_Fmap_region_data_cFffiPiPi */