diff --git a/config/eur/arm9/overlays/ov000/relocs.txt b/config/eur/arm9/overlays/ov000/relocs.txt index 3268527c..4736fe83 100644 --- a/config/eur/arm9/overlays/ov000/relocs.txt +++ b/config/eur/arm9/overlays/ov000/relocs.txt @@ -6473,7 +6473,7 @@ from:0x020b80f8 kind:arm_call to:0x0202e9dc module:main from:0x020b8104 kind:arm_call_thumb to:0x02107aa0 module:overlay(4) from:0x020b810c kind:load to:0x027e0fe0 module:dtcm from:0x020b811c kind:arm_call to:0x020beba8 module:overlay(0) -from:0x020b8130 kind:load to:0x020e6658 module:overlay(0) +from:0x020b8130 kind:load to:0x020e6650 add:8 module:overlay(0) from:0x020b813c kind:arm_call to:0x02081f4c module:overlay(0) from:0x020b8150 kind:arm_call to:0x02081f4c module:overlay(0) from:0x020b8158 kind:arm_call to:0x0202ea0c module:main diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 3227b3c6..dc608c31 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -1091,7 +1091,7 @@ func_ov000_0209394c kind:function(arm,size=0xc) addr:0x0209394c func_ov000_02093958 kind:function(arm,size=0x10) addr:0x02093958 func_ov000_02093968 kind:function(arm,size=0x78) addr:0x02093968 func_ov000_020939e0 kind:function(arm,size=0x3c) addr:0x020939e0 -_Z19func_ov000_02093a1cPjPii kind:function(arm,size=0x20) addr:0x02093a1c +_ZN18UnkStruct_027e0f6c19func_ov000_02093a1cEPjPS_t kind:function(arm,size=0x20) addr:0x02093a1c func_ov000_02093a3c kind:function(arm,size=0x10) addr:0x02093a3c func_ov000_02093a4c kind:function(arm,size=0x10) addr:0x02093a4c func_ov000_02093a5c kind:function(arm,size=0x94) addr:0x02093a5c @@ -1986,8 +1986,8 @@ _ZN12TouchGestureD2Ev kind:function(arm,size=0x4) addr:0x020a9544 _ZN16TouchGestureBaseD2Ev kind:function(arm,size=0x4) addr:0x020a9548 _ZN16TouchGestureBase17ResetTouchHistoryEv kind:function(arm,size=0xc) addr:0x020a954c _ZN16TouchGestureBaseD1Ev kind:function(arm,size=0x14) addr:0x020a9558 -_ZN11ModelRenderC2Ev kind:function(thumb,size=0x1c) addr:0x020a956c -_ZN11ModelRenderC1Ei kind:function(thumb,size=0x1c) addr:0x020a9588 +_ZN11ModelRenderC2EP9ItemModel kind:function(thumb,size=0x1c) addr:0x020a956c +_ZN11ModelRenderC1EP9ItemModel kind:function(thumb,size=0x1c) addr:0x020a9588 _ZN11ModelRenderD1Ev kind:function(thumb,size=0x20) addr:0x020a95a4 _ZN11ModelRenderD0Ev kind:function(thumb,size=0x28) addr:0x020a95c4 _ZN11ModelRenderD2Ev kind:function(thumb,size=0x20) addr:0x020a95ec @@ -2007,7 +2007,7 @@ _ZN11ModelRender8vfunc_30Ev kind:function(arm,size=0x2c) addr:0x020a98bc _ZN11ModelRender19func_ov000_020a98e8Ei kind:function(arm,size=0x24) addr:0x020a98e8 _ZN11ModelRender19func_ov000_020a990cEi kind:function(arm,size=0x2c) addr:0x020a990c _ZN11ModelRender19func_ov000_020a9938Ei kind:function(thumb,size=0x28) addr:0x020a9938 -_ZN11ModelRender19func_ov000_020a9960Ei kind:function(arm,size=0x8) addr:0x020a9960 +_ZN11ModelRender19func_ov000_020a9960EPv kind:function(arm,size=0x8) addr:0x020a9960 _ZN11ModelRender8vfunc_38Ev kind:function(arm,size=0x2c) addr:0x020a9968 _ZN11ModelRender8vfunc_3cEv kind:function(arm,size=0x4) addr:0x020a9994 _ZN11ModelRender19func_ov000_020a9998Eii kind:function(arm,size=0x28) addr:0x020a9998 @@ -2018,7 +2018,7 @@ func_ov000_020a9a40 kind:function(thumb,size=0x28) addr:0x020a9a40 func_ov000_020a9a68 kind:function(thumb,size=0x24) addr:0x020a9a68 func_ov000_020a9a8c kind:function(thumb,size=0xc) addr:0x020a9a8c func_ov000_020a9a98 kind:function(thumb,size=0x12) addr:0x020a9a98 -func_ov000_020a9aac kind:function(thumb,size=0xc) addr:0x020a9aac +_ZN18ActorNaviBase_Unk2D1Ev kind:function(thumb,size=0xc) addr:0x020a9aac func_ov000_020a9ab8 kind:function(thumb,size=0x12) addr:0x020a9ab8 func_ov000_020a9acc kind:function(thumb,size=0xc) addr:0x020a9acc func_ov000_020a9ad8 kind:function(thumb,size=0x12) addr:0x020a9ad8 @@ -2398,10 +2398,10 @@ _ZN13PlayerManager4SaveEP15SaveItemManager kind:function(thumb,size=0x50) addr:0 _ZN13PlayerManager17IncreaseMaxHealthEs kind:function(thumb,size=0x14) addr:0x020b804c _ZN13PlayerManager19UpdateShipMaxHealthEv kind:function(thumb,size=0x80) addr:0x020b8060 _ZN9ActorNavi6CreateEv kind:function(arm,size=0x30) addr:0x020b80e0 -_ZN24UnkStruct_ov000_020b8110C2Ev kind:function(arm,size=0x24) addr:0x020b8110 +_ZN24UnkStruct_ov000_020b8110C1Ev kind:function(arm,size=0x24) addr:0x020b8110 _ZN24UnkStruct_ov000_020b8110D1Ev kind:function(arm,size=0x14) addr:0x020b8134 _ZN24UnkStruct_ov000_020b8110D0Ev kind:function(arm,size=0x1c) addr:0x020b8148 -_ZN24UnkStruct_ov000_020b81108vfunc_08EPs kind:function(arm,size=0x50) addr:0x020b8164 +_ZN24UnkStruct_ov000_020b81108vfunc_08EP27UnkStruct_ov000_020beba8_08 kind:function(arm,size=0x50) addr:0x020b8164 _ZN24UnkStruct_ov000_020b81108vfunc_18EPi kind:function(arm,size=0x40) addr:0x020b81b4 _ZN24UnkStruct_ov000_020b81108vfunc_14EPt kind:function(arm,size=0xc) addr:0x020b81f4 _ZN9ActorNavi19func_ov000_020b8200Ev kind:function(arm,size=0x10) addr:0x020b8200 @@ -2411,7 +2411,7 @@ _ZN9ActorNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x020b8280 _ZN9ActorNavi8vfunc_b8Ev kind:function(arm,size=0x8) addr:0x020b8288 _ZN9ActorNavi8vfunc_d4Ev kind:function(arm,size=0x2c) addr:0x020b8290 _ZN9ActorNavi8vfunc_d0Ev kind:function(arm,size=0x2c) addr:0x020b82bc -_ZN9ActorNavi9SetActiveEb kind:function(arm,size=0x58) addr:0x020b82e8 +_ZN9ActorNavi9SetActiveEi kind:function(arm,size=0x58) addr:0x020b82e8 _ZN9ActorNavi8vfunc_e0Ev kind:function(arm,size=0xb8) addr:0x020b8340 _ZN9ActorNavi8vfunc_d8Ev kind:function(arm,size=0x20) addr:0x020b83f8 _ZN9ActorNavi8vfunc_20Eb kind:function(arm,size=0x3c) addr:0x020b8418 @@ -2422,8 +2422,8 @@ _ZN9ActorNavi8vfunc_8cEv kind:function(arm,size=0x8) addr:0x020b84d0 _ZN9ActorNavi8vfunc_ecEv kind:function(arm,size=0x54) addr:0x020b84d8 _Z14GetEquipHammerv kind:function(arm,size=0x10) addr:0x020b852c local _ZN9ActorNavi19func_ov000_020b853cEv kind:function(arm,size=0x14) addr:0x020b853c -_ZN9ActorNaviD1Ev kind:function(arm,size=0x48) addr:0x020b8550 -_ZN9ActorNaviD0Ev kind:function(arm,size=0x40) addr:0x020b8598 +_ZN9ActorNaviD0Ev kind:function(arm,size=0x48) addr:0x020b8550 +_ZN9ActorNaviD1Ev kind:function(arm,size=0x40) addr:0x020b8598 func_ov000_020b85d8 kind:function(thumb,size=0x28) addr:0x020b85d8 func_ov000_020b8600 kind:function(arm,size=0x10) addr:0x020b8600 func_ov000_020b8610 kind:function(arm,size=0x1c) addr:0x020b8610 @@ -2650,7 +2650,7 @@ _ZN9EquipItem8GiveAmmoEj kind:function(arm,size=0x34) addr:0x020beb5c _ZNK9EquipItem9GetHitboxEP8Cylinder kind:function(arm,size=0x18) addr:0x020beb90 _ZN24UnkStruct_ov000_020beba8C2Ei kind:function(arm,size=0x18) addr:0x020beba8 _ZN24UnkStruct_ov000_020beba8C1Ei kind:function(arm,size=0x18) addr:0x020bebc0 -_ZN24UnkStruct_ov000_020beba88vfunc_08EPs kind:function(arm,size=0x84) addr:0x020bebd8 +_ZN24UnkStruct_ov000_020beba88vfunc_08EP27UnkStruct_ov000_020beba8_08 kind:function(arm,size=0x84) addr:0x020bebd8 _ZN24UnkStruct_ov000_020beba88vfunc_0cEPs kind:function(arm,size=0x84) addr:0x020bec5c _ZN24UnkStruct_ov000_020beba88vfunc_10EPi kind:function(arm,size=0x9c) addr:0x020bece0 _ZN24UnkStruct_ov000_020beba88vfunc_18EPi kind:function(arm,size=0x50) addr:0x020bed7c @@ -2701,7 +2701,7 @@ _ZN15ActorWisdomNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x020c0ba4 _ZN15ActorWisdomNaviD0Ev kind:function(arm,size=0x1c) addr:0x020c0bac _ZN15ActorWisdomNaviD1Ev kind:function(arm,size=0x14) addr:0x020c0bc8 func_ov000_020c0bdc kind:function(arm,size=0x2c) addr:0x020c0bdc -_ZN24UnkStruct_ov000_020c0c08C1EP27UnkStruct_ov000_020c0c08_04Ph kind:function(thumb,size=0x28) addr:0x020c0c08 +_ZN24UnkStruct_ov000_020c0c08C2EP27UnkStruct_ov000_020c0c08_04P9ItemModel kind:function(thumb,size=0x28) addr:0x020c0c08 func_ov000_020c0c30 kind:function(thumb,size=0x2) addr:0x020c0c30 func_ov000_020c0c34 kind:function(thumb,size=0xc) addr:0x020c0c34 func_ov000_020c0c40 kind:function(thumb,size=0x2) addr:0x020c0c40 @@ -2747,8 +2747,8 @@ _ZN5Actor8vfunc_18Ej kind:function(arm,size=0x18) addr:0x020c17bc _ZN5Actor8vfunc_1cEPt kind:function(arm,size=0xc0) addr:0x020c17d4 _ZN5Actor8vfunc_20Eb kind:function(arm,size=0x4) addr:0x020c1894 _ZN5Actor10SetUnk_129Eb kind:function(arm,size=0x10) addr:0x020c1898 -_ZN5Actor10SetUnk_11bEv kind:function(arm,size=0x1c) addr:0x020c18a8 -_ZN5Actor11SetVelocityEP5Vec3p kind:function(arm,size=0x38) addr:0x020c18c4 +_ZN5Actor4GrabEv kind:function(arm,size=0x1c) addr:0x020c18a8 +_ZN5Actor4DropEP5Vec3p kind:function(arm,size=0x38) addr:0x020c18c4 _ZN5Actor8vfunc_60Ev kind:function(arm,size=0x8) addr:0x020c18fc _ZN5Actor8vfunc_64Ev kind:function(arm,size=0x4) addr:0x020c1904 _ZN5Actor10SetUnk_11cEc kind:function(arm,size=0x8) addr:0x020c1908 @@ -3393,8 +3393,8 @@ func_ov000_020d17a0 kind:function(arm,size=0x74) addr:0x020d17a0 func_ov000_020d1814 kind:function(arm,size=0x5c) addr:0x020d1814 func_ov000_020d1870 kind:function(arm,size=0x44) addr:0x020d1870 func_ov000_020d18b4 kind:function(arm,size=0x40) addr:0x020d18b4 -func_ov000_020d18f4 kind:function(arm,size=0x8c) addr:0x020d18f4 -func_ov000_020d1980 kind:function(arm,size=0x54) addr:0x020d1980 +_ZN24UnkStruct_ov000_020d18f4C1Ei kind:function(arm,size=0x8c) addr:0x020d18f4 +_ZN24UnkStruct_ov000_020d18f4D1Ev kind:function(arm,size=0x54) addr:0x020d1980 func_ov000_020d19d4 kind:function(arm,size=0x5c) addr:0x020d19d4 func_ov000_020d1a30 kind:function(arm,size=0x20) addr:0x020d1a30 func_ov000_020d1a50 kind:function(arm,size=0xa0) addr:0x020d1a50 @@ -5010,8 +5010,8 @@ data_ov000_020e6528 kind:data(any) addr:0x020e6528 data_ov000_020e652c kind:data(any) addr:0x020e652c data_ov000_020e6530 kind:data(any) addr:0x020e6530 data_ov000_020e6534 kind:data(any) addr:0x020e6534 -_ZTV9ActorNavi kind:data(any) addr:0x020e6560 -_ZTV24UnkStruct_ov000_020b8110 kind:data(any) addr:0x020e6658 +_ZTV9ActorNavi kind:data(any) addr:0x020e6558 +_ZTV24UnkStruct_ov000_020b8110 kind:data(any) addr:0x020e6650 _ZTV14ActorForceNavi kind:data(any) addr:0x020e6674 data_ov000_020e676c kind:data(any) addr:0x020e676c data_ov000_020e6770 kind:data(any) addr:0x020e6770 @@ -5025,8 +5025,8 @@ data_ov000_020e678c kind:data(any) addr:0x020e678c data_ov000_020e67ac kind:data(any) addr:0x020e67ac data_ov000_020e67b8 kind:data(any) addr:0x020e67b8 data_ov000_020e67d8 kind:data(any) addr:0x020e67d8 -vtable_ov000_020e67e4 kind:data(any) addr:0x020e67dc -vtable_ov000_020e68dc kind:data(any) addr:0x020e68d4 +_ZTV13ActorNaviBase kind:data(any) addr:0x020e67dc +_ZTV18ActorNaviBase_Unk3 kind:data(any) addr:0x020e68d4 data_ov000_020e691c kind:data(any) addr:0x020e691c data_ov000_020e6934 kind:data(any) addr:0x020e6934 data_ov000_020e6974 kind:data(any) addr:0x020e6974 diff --git a/config/eur/arm9/overlays/ov004/delinks.txt b/config/eur/arm9/overlays/ov004/delinks.txt index 08cdd6f0..3a3f9a9f 100644 --- a/config/eur/arm9/overlays/ov004/delinks.txt +++ b/config/eur/arm9/overlays/ov004/delinks.txt @@ -8,3 +8,6 @@ src/04_Load/Player/LinkStateMove_04.cpp: complete .text start:0x0210aed4 end:0x0210af14 + +src/04_Load/Actor/Navi/ActorNavi_04.cpp: + .text start:0x02107810 end:0x02107c00 diff --git a/config/eur/arm9/overlays/ov004/relocs.txt b/config/eur/arm9/overlays/ov004/relocs.txt index f056478a..ea0b6de9 100644 --- a/config/eur/arm9/overlays/ov004/relocs.txt +++ b/config/eur/arm9/overlays/ov004/relocs.txt @@ -1534,7 +1534,7 @@ from:0x0210788e kind:thumb_call_arm to:0x020d18f4 module:overlay(0) from:0x021078f4 kind:load to:0x020e67dc add:8 module:overlay(0) from:0x021078f8 kind:load to:0x020ee1f8 module:overlay(0) from:0x021078fc kind:load to:0x020e67ac module:overlay(0) -from:0x02107900 kind:load to:0x02110540 module:overlay(4) +from:0x02107900 kind:load to:0x02110538 add:8 module:overlay(4) from:0x02107904 kind:load to:0x020b7d74 module:overlay(0) from:0x02107908 kind:load to:0x021079d5 module:overlay(4) from:0x02107916 kind:thumb_call_arm to:0x020d1980 module:overlay(0) @@ -1569,9 +1569,9 @@ from:0x02107abe kind:thumb_call to:0x020a9588 module:overlay(0) from:0x02107ac8 kind:thumb_call_arm to:0x020ad52c module:overlay(0) from:0x02107ad8 kind:thumb_call to:0x020c0c08 module:overlay(0) from:0x02107b1c kind:thumb_call_arm to:0x0204f614 module:main -from:0x02107b4c kind:load to:0x020e6560 module:overlay(0) +from:0x02107b4c kind:load to:0x020e6558 add:8 module:overlay(0) from:0x02107b50 kind:load to:0x027e0fb4 module:dtcm -from:0x02107b54 kind:load to:0x02110540 module:overlay(4) +from:0x02107b54 kind:load to:0x02110538 add:8 module:overlay(4) from:0x02107b58 kind:load to:0x020b7d74 module:overlay(0) from:0x02107b5c kind:load to:0x021079d5 module:overlay(4) from:0x02107b60 kind:load to:0x02057200 module:main diff --git a/config/eur/arm9/overlays/ov004/symbols.txt b/config/eur/arm9/overlays/ov004/symbols.txt index e2593efe..7b59a721 100644 --- a/config/eur/arm9/overlays/ov004/symbols.txt +++ b/config/eur/arm9/overlays/ov004/symbols.txt @@ -224,11 +224,11 @@ _ZN13ActorNaviBaseC2Ev kind:function(thumb,size=0xfc) addr:0x02107810 _ZN13ActorNaviBaseD1Ev kind:function(thumb,size=0x40) addr:0x0210790c _ZN13ActorNaviBaseD0Ev kind:function(thumb,size=0x48) addr:0x0210794c _ZN13ActorNaviBaseD2Ev kind:function(thumb,size=0x40) addr:0x02107994 -_Z19func_ov004_021079d4Pi kind:function(thumb,size=0x6) addr:0x021079d4 +_ZN18ActorNaviBase_Unk1C1Ev kind:function(thumb,size=0x6) addr:0x021079d4 _ZN13ActorNaviBase4InitEv kind:function(thumb,size=0xa4) addr:0x021079dc -func_ov004_02107a80 kind:function(thumb,size=0x20) addr:0x02107a80 -func_ov004_02107aa0 kind:function(thumb,size=0xc4) addr:0x02107aa0 -func_ov004_02107b64 kind:function(thumb,size=0x9c) addr:0x02107b64 +_ZN18ActorNaviBase_Unk3C1EP9ItemModel kind:function(thumb,size=0x20) addr:0x02107a80 +_ZN9ActorNaviC1Ev kind:function(thumb,size=0xc4) addr:0x02107aa0 +_ZN9ActorNavi4InitEv kind:function(thumb,size=0x9c) addr:0x02107b64 func_ov004_02107c00 kind:function(thumb,size=0x2c) addr:0x02107c00 func_ov004_02107c2c kind:function(thumb,size=0x20) addr:0x02107c2c func_ov004_02107c4c kind:function(thumb,size=0x1c0) addr:0x02107c4c @@ -594,7 +594,7 @@ data_ov004_021104f8 kind:data(any) addr:0x021104f8 data_ov004_02110500 kind:data(any) addr:0x02110500 data_ov004_02110508 kind:data(any) addr:0x02110508 data_ov004_02110520 kind:data(any) addr:0x02110520 -data_ov004_02110540 kind:data(any) addr:0x02110540 +_ZTV18ActorNaviBase_Unk2 kind:data(any) addr:0x02110538 data_ov004_02110548 kind:data(any) addr:0x02110548 data_ov004_0211054c kind:data(any) addr:0x0211054c data_ov004_02110554 kind:data(any) addr:0x02110554 diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt index a3a2914d..db56cc1d 100644 --- a/config/eur/arm9/overlays/ov014/symbols.txt +++ b/config/eur/arm9/overlays/ov014/symbols.txt @@ -62,7 +62,7 @@ _ZN9ActorBomb8vfunc_18Ej kind:function(arm,size=0x98) addr:0x02122b20 _ZN9ActorBomb19func_ov014_02122bb8Ei kind:function(arm,size=0xe4) addr:0x02122bb8 _ZN9ActorBomb8vfunc_54Ev kind:function(arm,size=0x18) addr:0x02122c9c _ZN9ActorBomb8vfunc_20Eb kind:function(arm,size=0xb8) addr:0x02122cb4 -_ZN9ActorBomb11SetVelocityEP5Vec3p kind:function(arm,size=0xdc) addr:0x02122d6c +_ZN9ActorBomb4DropEP5Vec3p kind:function(arm,size=0xdc) addr:0x02122d6c _ZN9ActorBomb19func_ov014_02122e48EPi kind:function(arm,size=0x34) addr:0x02122e48 _ZN9ActorBomb19func_ov014_02122e7cEv kind:function(arm,size=0x1c) addr:0x02122e7c _ZN9ActorBomb19func_ov014_02122e98Ev kind:function(arm,size=0x20) addr:0x02122e98 diff --git a/config/eur/arm9/overlays/ov059/symbols.txt b/config/eur/arm9/overlays/ov059/symbols.txt index 1a27b353..fa3b63ed 100644 --- a/config/eur/arm9/overlays/ov059/symbols.txt +++ b/config/eur/arm9/overlays/ov059/symbols.txt @@ -18,7 +18,7 @@ _Z14GetEquipHammerv kind:function(arm,size=0x10) addr:0x0219930c _ZN13LinkStateItem15StopUsingHammerEv kind:function(arm,size=0x20) addr:0x0219931c _ZN9ActorNavi19func_ov059_0219933cEj kind:function(arm,size=0xd70) addr:0x0219933c _ZN9ActorNavi19func_ov059_0219a0acEv kind:function(arm,size=0x95c) addr:0x0219a0ac -_ZN9ActorNavi19func_ov059_0219aa08Ev kind:function(arm,size=0x1a0) addr:0x0219aa08 +_ZN9ActorNavi19func_ov059_0219aa08Eb kind:function(arm,size=0x1a0) addr:0x0219aa08 _ZN9ActorNavi19func_ov059_0219aba8Ej kind:function(arm,size=0x36c) addr:0x0219aba8 _ZN9ActorNavi19func_ov059_0219af14Ev kind:function(arm,size=0xb0) addr:0x0219af14 _ZN9ActorNavi19func_ov059_0219afc4Ev kind:function(arm,size=0x5c) addr:0x0219afc4 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 74b55101..ff218aae 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -919,8 +919,8 @@ func_0201e5c8 kind:function(arm,size=0x10) addr:0x0201e5c8 func_0201e5d8 kind:function(arm,size=0x10) addr:0x0201e5d8 func_0201e5e8 kind:function(arm,size=0x74) addr:0x0201e5e8 func_0201e65c kind:function(arm,size=0x1c) addr:0x0201e65c -func_0201e678 kind:function(arm,size=0x20) addr:0x0201e678 -func_0201e698 kind:function(arm,size=0x1c) addr:0x0201e698 +GetJntAnimation kind:function(arm,size=0x20) addr:0x0201e678 +FindJntSection kind:function(arm,size=0x1c) addr:0x0201e698 func_0201e6b4 kind:function(arm,size=0xac) addr:0x0201e6b4 func_0201e760 kind:function(arm,size=0x2c) addr:0x0201e760 func_0201e78c kind:function(arm,size=0x94) addr:0x0201e78c diff --git a/config/usa/arm9/overlays/ov000/relocs.txt b/config/usa/arm9/overlays/ov000/relocs.txt index 29b56242..8744298a 100644 --- a/config/usa/arm9/overlays/ov000/relocs.txt +++ b/config/usa/arm9/overlays/ov000/relocs.txt @@ -6473,7 +6473,7 @@ from:0x020b8098 kind:arm_call to:0x0202e9d8 module:main from:0x020b80a4 kind:arm_call_thumb to:0x02107a20 module:overlay(4) from:0x020b80ac kind:load to:0x027e0fe0 module:dtcm from:0x020b80bc kind:arm_call to:0x020beb48 module:overlay(0) -from:0x020b80d0 kind:load to:0x020e65f8 module:overlay(0) +from:0x020b80d0 kind:load to:0x020e65f0 add:8 module:overlay(0) from:0x020b80dc kind:arm_call to:0x02081eec module:overlay(0) from:0x020b80f0 kind:arm_call to:0x02081eec module:overlay(0) from:0x020b80f8 kind:arm_call to:0x0202ea08 module:main diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index c9eb2494..a75980b2 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -1091,7 +1091,7 @@ func_ov000_0209394c kind:function(arm,size=0xc) addr:0x020938ec func_ov000_02093958 kind:function(arm,size=0x10) addr:0x020938f8 func_ov000_02093968 kind:function(arm,size=0x78) addr:0x02093908 func_ov000_020939e0 kind:function(arm,size=0x3c) addr:0x02093980 -_Z19func_ov000_02093a1cPjPii kind:function(arm,size=0x20) addr:0x020939bc +_ZN18UnkStruct_027e0f6c19func_ov000_02093a1cEPjPS_t kind:function(arm,size=0x20) addr:0x020939bc func_ov000_02093a3c kind:function(arm,size=0x10) addr:0x020939dc func_ov000_02093a4c kind:function(arm,size=0x10) addr:0x020939ec func_ov000_02093a5c kind:function(arm,size=0x94) addr:0x020939fc @@ -1986,8 +1986,8 @@ _ZN12TouchGestureD2Ev kind:function(arm,size=0x4) addr:0x020a94e4 _ZN16TouchGestureBaseD2Ev kind:function(arm,size=0x4) addr:0x020a94e8 _ZN16TouchGestureBase17ResetTouchHistoryEv kind:function(arm,size=0xc) addr:0x020a94ec _ZN16TouchGestureBaseD1Ev kind:function(arm,size=0x14) addr:0x020a94f8 -_ZN11ModelRenderC2Ev kind:function(thumb,size=0x1c) addr:0x020a950c -_ZN11ModelRenderC1Ei kind:function(thumb,size=0x1c) addr:0x020a9528 +_ZN11ModelRenderC2EP9ItemModel kind:function(thumb,size=0x1c) addr:0x020a950c +_ZN11ModelRenderC1EP9ItemModel kind:function(thumb,size=0x1c) addr:0x020a9528 _ZN11ModelRenderD1Ev kind:function(thumb,size=0x20) addr:0x020a9544 _ZN11ModelRenderD0Ev kind:function(thumb,size=0x28) addr:0x020a9564 _ZN11ModelRenderD2Ev kind:function(thumb,size=0x20) addr:0x020a958c @@ -2007,7 +2007,7 @@ _ZN11ModelRender8vfunc_30Ev kind:function(arm,size=0x2c) addr:0x020a985c _ZN11ModelRender19func_ov000_020a98e8Ei kind:function(arm,size=0x24) addr:0x020a9888 _ZN11ModelRender19func_ov000_020a990cEi kind:function(arm,size=0x2c) addr:0x020a98ac _ZN11ModelRender19func_ov000_020a9938Ei kind:function(thumb,size=0x28) addr:0x020a98d8 -_ZN11ModelRender19func_ov000_020a9960Ei kind:function(arm,size=0x8) addr:0x020a9900 +_ZN11ModelRender19func_ov000_020a9960EPv kind:function(arm,size=0x8) addr:0x020a9900 _ZN11ModelRender8vfunc_38Ev kind:function(arm,size=0x2c) addr:0x020a9908 _ZN11ModelRender8vfunc_3cEv kind:function(arm,size=0x4) addr:0x020a9934 _ZN11ModelRender19func_ov000_020a9998Eii kind:function(arm,size=0x28) addr:0x020a9938 @@ -2018,7 +2018,7 @@ func_ov000_020a9a40 kind:function(thumb,size=0x28) addr:0x020a99e0 func_ov000_020a9a68 kind:function(thumb,size=0x24) addr:0x020a9a08 func_ov000_020a9a8c kind:function(thumb,size=0xc) addr:0x020a9a2c func_ov000_020a9a98 kind:function(thumb,size=0x12) addr:0x020a9a38 -func_ov000_020a9aac kind:function(thumb,size=0xc) addr:0x020a9a4c +_ZN18ActorNaviBase_Unk2D1Ev kind:function(thumb,size=0xc) addr:0x020a9a4c func_ov000_020a9ab8 kind:function(thumb,size=0x12) addr:0x020a9a58 func_ov000_020a9acc kind:function(thumb,size=0xc) addr:0x020a9a6c func_ov000_020a9ad8 kind:function(thumb,size=0x12) addr:0x020a9a78 @@ -2398,10 +2398,10 @@ _ZN13PlayerManager4SaveEP15SaveItemManager kind:function(thumb,size=0x50) addr:0 _ZN13PlayerManager17IncreaseMaxHealthEs kind:function(thumb,size=0x14) addr:0x020b7fec _ZN13PlayerManager19UpdateShipMaxHealthEv kind:function(thumb,size=0x80) addr:0x020b8000 _ZN9ActorNavi6CreateEv kind:function(arm,size=0x30) addr:0x020b8080 -_ZN24UnkStruct_ov000_020b8110C2Ev kind:function(arm,size=0x24) addr:0x020b80b0 +_ZN24UnkStruct_ov000_020b8110C1Ev kind:function(arm,size=0x24) addr:0x020b80b0 _ZN24UnkStruct_ov000_020b8110D1Ev kind:function(arm,size=0x14) addr:0x020b80d4 _ZN24UnkStruct_ov000_020b8110D0Ev kind:function(arm,size=0x1c) addr:0x020b80e8 -_ZN24UnkStruct_ov000_020b81108vfunc_08EPs kind:function(arm,size=0x50) addr:0x020b8104 +_ZN24UnkStruct_ov000_020b81108vfunc_08EP27UnkStruct_ov000_020beba8_08 kind:function(arm,size=0x50) addr:0x020b8104 _ZN24UnkStruct_ov000_020b81108vfunc_18EPi kind:function(arm,size=0x40) addr:0x020b8154 _ZN24UnkStruct_ov000_020b81108vfunc_14EPt kind:function(arm,size=0xc) addr:0x020b8194 _ZN9ActorNavi19func_ov000_020b8200Ev kind:function(arm,size=0x10) addr:0x020b81a0 @@ -2411,7 +2411,7 @@ _ZN9ActorNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x020b8220 _ZN9ActorNavi8vfunc_b8Ev kind:function(arm,size=0x8) addr:0x020b8228 _ZN9ActorNavi8vfunc_d4Ev kind:function(arm,size=0x2c) addr:0x020b8230 _ZN9ActorNavi8vfunc_d0Ev kind:function(arm,size=0x2c) addr:0x020b825c -_ZN9ActorNavi9SetActiveEb kind:function(arm,size=0x58) addr:0x020b8288 +_ZN9ActorNavi9SetActiveEi kind:function(arm,size=0x58) addr:0x020b8288 _ZN9ActorNavi8vfunc_e0Ev kind:function(arm,size=0xb8) addr:0x020b82e0 _ZN9ActorNavi8vfunc_d8Ev kind:function(arm,size=0x20) addr:0x020b8398 _ZN9ActorNavi8vfunc_20Eb kind:function(arm,size=0x3c) addr:0x020b83b8 @@ -2422,8 +2422,8 @@ _ZN9ActorNavi8vfunc_8cEv kind:function(arm,size=0x8) addr:0x020b8470 _ZN9ActorNavi8vfunc_ecEv kind:function(arm,size=0x54) addr:0x020b8478 _Z14GetEquipHammerv kind:function(arm,size=0x10) addr:0x020b84cc local _ZN9ActorNavi19func_ov000_020b853cEv kind:function(arm,size=0x14) addr:0x020b84dc -_ZN9ActorNaviD1Ev kind:function(arm,size=0x48) addr:0x020b84f0 -_ZN9ActorNaviD0Ev kind:function(arm,size=0x40) addr:0x020b8538 +_ZN9ActorNaviD0Ev kind:function(arm,size=0x48) addr:0x020b84f0 +_ZN9ActorNaviD1Ev kind:function(arm,size=0x40) addr:0x020b8538 func_ov000_020b85d8 kind:function(thumb,size=0x28) addr:0x020b8578 func_ov000_020b8600 kind:function(arm,size=0x10) addr:0x020b85a0 func_ov000_020b8610 kind:function(arm,size=0x1c) addr:0x020b85b0 @@ -2650,7 +2650,7 @@ _ZN9EquipItem8GiveAmmoEj kind:function(arm,size=0x34) addr:0x020beafc _ZNK9EquipItem9GetHitboxEP8Cylinder kind:function(arm,size=0x18) addr:0x020beb30 _ZN24UnkStruct_ov000_020beba8C2Ei kind:function(arm,size=0x18) addr:0x020beb48 _ZN24UnkStruct_ov000_020beba8C1Ei kind:function(arm,size=0x18) addr:0x020beb60 -_ZN24UnkStruct_ov000_020beba88vfunc_08EPs kind:function(arm,size=0x84) addr:0x020beb78 +_ZN24UnkStruct_ov000_020beba88vfunc_08EP27UnkStruct_ov000_020beba8_08 kind:function(arm,size=0x84) addr:0x020beb78 _ZN24UnkStruct_ov000_020beba88vfunc_0cEPs kind:function(arm,size=0x84) addr:0x020bebfc _ZN24UnkStruct_ov000_020beba88vfunc_10EPi kind:function(arm,size=0x9c) addr:0x020bec80 _ZN24UnkStruct_ov000_020beba88vfunc_18EPi kind:function(arm,size=0x50) addr:0x020bed1c @@ -2701,7 +2701,7 @@ _ZN15ActorWisdomNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x020c0b44 _ZN15ActorWisdomNaviD0Ev kind:function(arm,size=0x1c) addr:0x020c0b4c _ZN15ActorWisdomNaviD1Ev kind:function(arm,size=0x14) addr:0x020c0b68 func_ov000_020c0bdc kind:function(arm,size=0x2c) addr:0x020c0b7c -_ZN24UnkStruct_ov000_020c0c08C1EP27UnkStruct_ov000_020c0c08_04Ph kind:function(thumb,size=0x28) addr:0x020c0ba8 +_ZN24UnkStruct_ov000_020c0c08C2EP27UnkStruct_ov000_020c0c08_04P9ItemModel kind:function(thumb,size=0x28) addr:0x020c0ba8 func_ov000_020c0c30 kind:function(thumb,size=0x2) addr:0x020c0bd0 func_ov000_020c0c34 kind:function(thumb,size=0xc) addr:0x020c0bd4 func_ov000_020c0c40 kind:function(thumb,size=0x2) addr:0x020c0be0 @@ -2747,8 +2747,8 @@ _ZN5Actor8vfunc_18Ej kind:function(arm,size=0x18) addr:0x020c175c _ZN5Actor8vfunc_1cEPt kind:function(arm,size=0xc0) addr:0x020c1774 _ZN5Actor8vfunc_20Eb kind:function(arm,size=0x4) addr:0x020c1834 _ZN5Actor10SetUnk_129Eb kind:function(arm,size=0x10) addr:0x020c1838 -_ZN5Actor10SetUnk_11bEv kind:function(arm,size=0x1c) addr:0x020c1848 -_ZN5Actor11SetVelocityEP5Vec3p kind:function(arm,size=0x38) addr:0x020c1864 +_ZN5Actor4GrabEv kind:function(arm,size=0x1c) addr:0x020c1848 +_ZN5Actor4DropEP5Vec3p kind:function(arm,size=0x38) addr:0x020c1864 _ZN5Actor8vfunc_60Ev kind:function(arm,size=0x8) addr:0x020c189c _ZN5Actor8vfunc_64Ev kind:function(arm,size=0x4) addr:0x020c18a4 _ZN5Actor10SetUnk_11cEc kind:function(arm,size=0x8) addr:0x020c18a8 @@ -3393,8 +3393,8 @@ func_ov000_020d17a0 kind:function(arm,size=0x74) addr:0x020d1740 func_ov000_020d1814 kind:function(arm,size=0x5c) addr:0x020d17b4 func_ov000_020d1870 kind:function(arm,size=0x44) addr:0x020d1810 func_ov000_020d18b4 kind:function(arm,size=0x40) addr:0x020d1854 -func_ov000_020d18f4 kind:function(arm,size=0x8c) addr:0x020d1894 -func_ov000_020d1980 kind:function(arm,size=0x54) addr:0x020d1920 +_ZN24UnkStruct_ov000_020d18f4C1Ei kind:function(arm,size=0x8c) addr:0x020d1894 +_ZN24UnkStruct_ov000_020d18f4D1Ev kind:function(arm,size=0x54) addr:0x020d1920 func_ov000_020d19d4 kind:function(arm,size=0x5c) addr:0x020d1974 func_ov000_020d1a30 kind:function(arm,size=0x20) addr:0x020d19d0 func_ov000_020d1a50 kind:function(arm,size=0xa0) addr:0x020d19f0 @@ -5010,8 +5010,8 @@ data_ov000_020e6528 kind:data(any) addr:0x020e64c8 data_ov000_020e652c kind:data(any) addr:0x020e64cc data_ov000_020e6530 kind:data(any) addr:0x020e64d0 data_ov000_020e6534 kind:data(any) addr:0x020e64d4 -_ZTV9ActorNavi kind:data(any) addr:0x020e6500 -_ZTV24UnkStruct_ov000_020b8110 kind:data(any) addr:0x020e65f8 +_ZTV9ActorNavi kind:data(any) addr:0x020e64f8 +_ZTV24UnkStruct_ov000_020b8110 kind:data(any) addr:0x020e65f0 _ZTV14ActorForceNavi kind:data(any) addr:0x020e6614 data_ov000_020e676c kind:data(any) addr:0x020e670c data_ov000_020e6770 kind:data(any) addr:0x020e6710 @@ -5025,8 +5025,8 @@ data_ov000_020e678c kind:data(any) addr:0x020e672c data_ov000_020e67ac kind:data(any) addr:0x020e674c data_ov000_020e67b8 kind:data(any) addr:0x020e6758 data_ov000_020e67d8 kind:data(any) addr:0x020e6778 -vtable_ov000_020e67e4 kind:data(any) addr:0x020e677c -vtable_ov000_020e68dc kind:data(any) addr:0x020e6874 +_ZTV13ActorNaviBase kind:data(any) addr:0x020e677c +_ZTV18ActorNaviBase_Unk3 kind:data(any) addr:0x020e6874 data_ov000_020e691c kind:data(any) addr:0x020e68bc data_ov000_020e6934 kind:data(any) addr:0x020e68d4 data_ov000_020e6974 kind:data(any) addr:0x020e6914 diff --git a/config/usa/arm9/overlays/ov004/delinks.txt b/config/usa/arm9/overlays/ov004/delinks.txt index 65e120c9..39f0bf59 100644 --- a/config/usa/arm9/overlays/ov004/delinks.txt +++ b/config/usa/arm9/overlays/ov004/delinks.txt @@ -8,3 +8,6 @@ src/04_Load/Player/LinkStateMove_04.cpp: complete .text start:0x0210ae54 end:0x0210ae94 + +src/04_Load/Actor/Navi/ActorNavi_04.cpp: + .text start:0x02107790 end:0x02107b80 diff --git a/config/usa/arm9/overlays/ov004/relocs.txt b/config/usa/arm9/overlays/ov004/relocs.txt index ad8c39f4..b7303b1d 100644 --- a/config/usa/arm9/overlays/ov004/relocs.txt +++ b/config/usa/arm9/overlays/ov004/relocs.txt @@ -1534,7 +1534,7 @@ from:0x0210780e kind:thumb_call_arm to:0x020d1894 module:overlay(0) from:0x02107874 kind:load to:0x020e677c add:8 module:overlay(0) from:0x02107878 kind:load to:0x020ee198 module:overlay(0) from:0x0210787c kind:load to:0x020e674c module:overlay(0) -from:0x02107880 kind:load to:0x021104c0 module:overlay(4) +from:0x02107880 kind:load to:0x021104b8 add:8 module:overlay(4) from:0x02107884 kind:load to:0x020b7d14 module:overlay(0) from:0x02107888 kind:load to:0x02107955 module:overlay(4) from:0x02107896 kind:thumb_call_arm to:0x020d1920 module:overlay(0) @@ -1569,9 +1569,9 @@ from:0x02107a3e kind:thumb_call to:0x020a9528 module:overlay(0) from:0x02107a48 kind:thumb_call_arm to:0x020ad4cc module:overlay(0) from:0x02107a58 kind:thumb_call to:0x020c0ba8 module:overlay(0) from:0x02107a9c kind:thumb_call_arm to:0x0204f5d0 module:main -from:0x02107acc kind:load to:0x020e6500 module:overlay(0) +from:0x02107acc kind:load to:0x020e64f8 add:8 module:overlay(0) from:0x02107ad0 kind:load to:0x027e0fb4 module:dtcm -from:0x02107ad4 kind:load to:0x021104c0 module:overlay(4) +from:0x02107ad4 kind:load to:0x021104b8 add:8 module:overlay(4) from:0x02107ad8 kind:load to:0x020b7d14 module:overlay(0) from:0x02107adc kind:load to:0x02107955 module:overlay(4) from:0x02107ae0 kind:load to:0x020571b8 module:main diff --git a/config/usa/arm9/overlays/ov004/symbols.txt b/config/usa/arm9/overlays/ov004/symbols.txt index 1e2f5bc2..4434640b 100644 --- a/config/usa/arm9/overlays/ov004/symbols.txt +++ b/config/usa/arm9/overlays/ov004/symbols.txt @@ -224,11 +224,11 @@ _ZN13ActorNaviBaseC2Ev kind:function(thumb,size=0xfc) addr:0x02107790 _ZN13ActorNaviBaseD1Ev kind:function(thumb,size=0x40) addr:0x0210788c _ZN13ActorNaviBaseD0Ev kind:function(thumb,size=0x48) addr:0x021078cc _ZN13ActorNaviBaseD2Ev kind:function(thumb,size=0x40) addr:0x02107914 -_Z19func_ov004_021079d4Pi kind:function(thumb,size=0x6) addr:0x02107954 +_ZN18ActorNaviBase_Unk1C1Ev kind:function(thumb,size=0x6) addr:0x02107954 _ZN13ActorNaviBase4InitEv kind:function(thumb,size=0xa4) addr:0x0210795c -func_ov004_02107a80 kind:function(thumb,size=0x20) addr:0x02107a00 -func_ov004_02107aa0 kind:function(thumb,size=0xc4) addr:0x02107a20 -func_ov004_02107b64 kind:function(thumb,size=0x9c) addr:0x02107ae4 +_ZN18ActorNaviBase_Unk3C1EP9ItemModel kind:function(thumb,size=0x20) addr:0x02107a00 +_ZN9ActorNaviC1Ev kind:function(thumb,size=0xc4) addr:0x02107a20 +_ZN9ActorNavi4InitEv kind:function(thumb,size=0x9c) addr:0x02107ae4 func_ov004_02107c00 kind:function(thumb,size=0x2c) addr:0x02107b80 func_ov004_02107c2c kind:function(thumb,size=0x20) addr:0x02107bac func_ov004_02107c4c kind:function(thumb,size=0x1c0) addr:0x02107bcc @@ -594,7 +594,7 @@ data_ov004_021104f8 kind:data(any) addr:0x02110478 data_ov004_02110500 kind:data(any) addr:0x02110480 data_ov004_02110508 kind:data(any) addr:0x02110488 data_ov004_02110520 kind:data(any) addr:0x021104a0 -data_ov004_02110540 kind:data(any) addr:0x021104c0 +_ZTV18ActorNaviBase_Unk2 kind:data(any) addr:0x021104b8 data_ov004_02110548 kind:data(any) addr:0x021104c8 data_ov004_0211054c kind:data(any) addr:0x021104cc data_ov004_02110554 kind:data(any) addr:0x021104d4 diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt index f2db3d32..f4991334 100644 --- a/config/usa/arm9/overlays/ov014/symbols.txt +++ b/config/usa/arm9/overlays/ov014/symbols.txt @@ -62,7 +62,7 @@ _ZN9ActorBomb8vfunc_18Ej kind:function(arm,size=0x98) addr:0x02122aa0 _ZN9ActorBomb19func_ov014_02122bb8Ei kind:function(arm,size=0xe4) addr:0x02122b38 _ZN9ActorBomb8vfunc_54Ev kind:function(arm,size=0x18) addr:0x02122c1c _ZN9ActorBomb8vfunc_20Eb kind:function(arm,size=0xb8) addr:0x02122c34 -_ZN9ActorBomb11SetVelocityEP5Vec3p kind:function(arm,size=0xdc) addr:0x02122cec +_ZN9ActorBomb4DropEP5Vec3p kind:function(arm,size=0xdc) addr:0x02122cec _ZN9ActorBomb19func_ov014_02122e48EPi kind:function(arm,size=0x34) addr:0x02122dc8 _ZN9ActorBomb19func_ov014_02122e7cEv kind:function(arm,size=0x1c) addr:0x02122dfc _ZN9ActorBomb19func_ov014_02122e98Ev kind:function(arm,size=0x20) addr:0x02122e18 diff --git a/config/usa/arm9/overlays/ov059/symbols.txt b/config/usa/arm9/overlays/ov059/symbols.txt index 20dd64bf..015de91a 100644 --- a/config/usa/arm9/overlays/ov059/symbols.txt +++ b/config/usa/arm9/overlays/ov059/symbols.txt @@ -18,7 +18,7 @@ _Z14GetEquipHammerv kind:function(arm,size=0x10) addr:0x0219926c _ZN13LinkStateItem15StopUsingHammerEv kind:function(arm,size=0x20) addr:0x0219927c _ZN9ActorNavi19func_ov059_0219933cEj kind:function(arm,size=0xd70) addr:0x0219929c _ZN9ActorNavi19func_ov059_0219a0acEv kind:function(arm,size=0x95c) addr:0x0219a00c -_ZN9ActorNavi19func_ov059_0219aa08Ev kind:function(arm,size=0x1a0) addr:0x0219a968 +_ZN9ActorNavi19func_ov059_0219aa08Eb kind:function(arm,size=0x1a0) addr:0x0219a968 _ZN9ActorNavi19func_ov059_0219aba8Ej kind:function(arm,size=0x36c) addr:0x0219ab08 _ZN9ActorNavi19func_ov059_0219af14Ev kind:function(arm,size=0xb0) addr:0x0219ae74 _ZN9ActorNavi19func_ov059_0219afc4Ev kind:function(arm,size=0x5c) addr:0x0219af24 diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index 52a674e4..0db49020 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -919,8 +919,8 @@ func_0201e5c8 kind:function(arm,size=0x10) addr:0x0201e5c8 func_0201e5d8 kind:function(arm,size=0x10) addr:0x0201e5d8 func_0201e5e8 kind:function(arm,size=0x74) addr:0x0201e5e8 func_0201e65c kind:function(arm,size=0x1c) addr:0x0201e65c -func_0201e678 kind:function(arm,size=0x20) addr:0x0201e678 -func_0201e698 kind:function(arm,size=0x1c) addr:0x0201e698 +GetJntAnimation kind:function(arm,size=0x20) addr:0x0201e678 +FindJntSection kind:function(arm,size=0x1c) addr:0x0201e698 func_0201e6b4 kind:function(arm,size=0xac) addr:0x0201e6b4 func_0201e760 kind:function(arm,size=0x2c) addr:0x0201e760 func_0201e78c kind:function(arm,size=0x94) addr:0x0201e78c diff --git a/docs/decompiling.md b/docs/decompiling.md index e9f9c3b1..0c106afb 100644 --- a/docs/decompiling.md +++ b/docs/decompiling.md @@ -45,10 +45,10 @@ As a starting point, we look at the decompiler output in Ghidra. You can request Looking at this output, we might try writing something like this: ```cpp -ARM bool Actor::SetVelocity(Vec3p *vel) { - if (mUnk_11b) { - mVel = *vel; - mUnk_11b = false; +ARM bool Actor::Drop(Vec3p *vel) { + if (mGrabbed) { + mVel = *vel; + mGrabbed = false; return true; } return false; diff --git a/docs/images/ghidra_decomp.png b/docs/images/ghidra_decomp.png index d54ff6ab..07e54d73 100644 Binary files a/docs/images/ghidra_decomp.png and b/docs/images/ghidra_decomp.png differ diff --git a/docs/images/objdiff_function.png b/docs/images/objdiff_function.png index 34e8a164..26247156 100644 Binary files a/docs/images/objdiff_function.png and b/docs/images/objdiff_function.png differ diff --git a/docs/images/objdiff_match.png b/docs/images/objdiff_match.png index a43726b7..06dec2ff 100644 Binary files a/docs/images/objdiff_match.png and b/docs/images/objdiff_match.png differ diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 77a943a4..2ce19ac8 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -3,10 +3,10 @@ #include "global.h" #include "types.h" -#include "nds/math.h" +#include #include "Actor/ActorRef.hpp" -#include "Actor/ActorType.hpp" +#include "Actor/ActorTypeId.hpp" #include "Actor/FilterActorBase.hpp" #include "Physics/Cylinder.hpp" #include "Physics/Transform.hpp" @@ -60,8 +60,7 @@ struct Actor_UnkStruct_0a4 { /* 01 */ bool mUnk_01; /* 02 */ bool mUnk_02; /* 03 */ bool mUnk_03; - /* 04 */ Vec3p mUnk_04; - /* 10 */ s32 mUnk_10; + /* 04 */ Cylinder mUnk_04; /* 14 */ Actor_UnkStruct_0a4(q20 x, q20 y, q20 z, s32 unk_10); @@ -126,20 +125,23 @@ public: /* 08c */ Cylinder mUnk_08c; /* 09c */ Actor_UnkStruct_09c mUnk_09c; /* 0a4 */ Actor_UnkStruct_0a4 mUnk_0a4; - /* 0b8 */ unk8 mUnk_0b8[0x24]; + /* 0b8 */ Vec3p mUnk_0b8; // same as position for some actors + /* 0c4 */ unk8 mUnk_0c4[0x18]; /* 0dc */ u16 mUnk_0dc; /* 0de */ u16 mUnk_0de; /* 0e0 */ u16 mUnk_0e0; /* 0e2 */ u16 mUnk_0e2; /* 0e4 */ unk16 mUnk_0e4; - /* 0e6 */ unk8 mUnk_0e6[0x20]; + /* 0e6 */ unk8 mUnk_0e6[0x1a]; + /* 100 */ void *mUnk_100; + /* 104 */ unk16 mUnk_104; /* 106 */ unk8 mUnk_106; /* 107 */ unk8 mUnk_107; /* 108 */ unk8 mUnk_108; /* 109 */ unk8 mUnk_109; /* 10a */ unk8 mUnk_10a[0x6]; - /* 110 */ bool mUnk_110; - /* 111 */ bool mUnk_111; + /* 110 */ bool mTouchingWall; + /* 111 */ bool mTouchingFloor; /* 112 */ bool mUnk_112; /* 113 */ bool mUnk_113; /* 114 */ unk8 mUnk_114; @@ -149,7 +151,7 @@ public: /* 118 */ bool mAlive; /* 119 */ u8 mUnk_119; /* 11a */ bool mVisible; - /* 11b */ bool mUnk_11b; + /* 11b */ bool mGrabbed; /* 11c */ unk8 mUnk_11c; /* 11d */ bool mUnk_11d; /* 11e */ q4 mYOffset; @@ -194,8 +196,8 @@ public: /* 4c */ virtual bool vfunc_4c(unk32 *param1); /* 50 */ virtual Vec3p *GetPos(); /* 54 */ virtual void vfunc_54(); - /* 58 */ virtual bool SetUnk_11b(); - /* 5c */ virtual bool SetVelocity(Vec3p *vel); + /* 58 */ virtual bool Grab(); + /* 5c */ virtual bool Drop(Vec3p *vel); /* 60 */ virtual bool vfunc_60(); /* 64 */ virtual void vfunc_64(); /* 68 */ virtual void vfunc_68(); diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp index b5ba6685..cb9e840c 100644 --- a/include/Actor/ActorType.hpp +++ b/include/Actor/ActorType.hpp @@ -3,97 +3,8 @@ #include "global.h" #include "types.h" -typedef u32 ActorTypeId; -enum ActorTypeId_ { - ActorTypeId_Null = 'NULL', - - ActorTypeId_Navi = 'NAVI', - ActorTypeId_ForceNavi = 'FCNV', - ActorTypeId_WisdomNavi = 'WSNV', - - ActorTypeId_TreasureMap = 'TMAP', - ActorTypeId_DigSpot = 'DGTG', - - ActorTypeId_ShopItemBombchus = 'ITBT', - ActorTypeId_ShopItemBombs = 'ITBM', - ActorTypeId_ShopItemTreasure = 'ITTR', - ActorTypeId_ShopItemHeartContainer = 'ITHU', - ActorTypeId_ShopItemQuiver = 'ITAP', - ActorTypeId_ShopItemBombBag = 'ITBB', - ActorTypeId_ShopItemRedPotion = 'ITPB', - ActorTypeId_ShopItemCourageGem = 'ITSR', - ActorTypeId_ShopItemShield = 'ITSL', - ActorTypeId_ShopItemSoldOut = 'ITSO', - - ActorTypeId_RefillArrows = 'FLAL', - ActorTypeId_RefillBombs = 'FLBM', - ActorTypeId_RefillBombchus = 'FLBT', - ActorTypeId_RefillTime = 'FLTM', - ActorTypeId_Heart = 'HART', - ActorTypeId_LSTM = 'LSTM', - ActorTypeId_Rupee = 'RUPY', - - ActorTypeId_Arrow = 'ARRW', - ActorTypeId_Blast = 'BLST', - ActorTypeId_Bomb = 'BOMB', - ActorTypeId_Bombchu = 'BMTY', - ActorTypeId_GrapplingHook = 'ROPE', - - ActorTypeId_PlayerDummy = 'PLDM', - ActorTypeId_PushBlock = 'PSBL', - ActorTypeId_WindBlock = 'WBLK', - ActorTypeId_StorageDrum = 'DRUM', - - ActorTypeId_SmallKey = 'NKEY', - ActorTypeId_SwitchObject = 'SWOB', - ActorTypeId_EventIcon = 'EVIC', - ActorTypeId_ActionObject = 'ACOB', - - ActorTypeId_Sandworm = 'MLDW', - ActorTypeId_Tektite = 'TEKT', - ActorTypeId_PolsVoice = 'PLSV', - ActorTypeId_Yook = 'YETI', - ActorTypeId_Armos = 'AMOS', - ActorTypeId_Stalfos = 'STLF', - ActorTypeId_StalfosWarrior = 'STLW', - ActorTypeId_ChuChu = 'CHUC', - ActorTypeId_Gel = 'GELL', - ActorTypeId_Bee = 'BEE0', - ActorTypeId_BeeHive = 'BEEH', - ActorTypeId_Cucco = 'KOKO', - ActorTypeId_Rope = 'SNAK', - ActorTypeId_Octorok = 'OCTA', - ActorTypeId_Keese = 'KETH', - ActorTypeId_Rat = 'RAT0', - ActorTypeId_Beamos = 'BMOS', - ActorTypeId_LikeLike = 'LKLK', - ActorTypeId_Crow = 'CROW', - - ActorTypeId_Linebeck = 'LNBK', - ActorTypeId_Mailbox = 'POST', - ActorTypeId_Postman = 'PSTM', - - ActorTypeId_BIGR = 'BIGR', - ActorTypeId_BKEY = 'BKEY', - ActorTypeId_BMRN = 'BMRN', - ActorTypeId_BMTY = 'BMTY', - ActorTypeId_BTRF = 'BTRF', - ActorTypeId_CBLS = 'CBLS', - ActorTypeId_EVIC = 'EVIC', - ActorTypeId_FLAL = 'FLAL', - ActorTypeId_FLBM = 'FLBM', - ActorTypeId_FLBT = 'FLBT', - ActorTypeId_FLTB = 'FLTB', - ActorTypeId_FLTM = 'FLTM', - ActorTypeId_FORC = 'FORC', - ActorTypeId_PWBS = 'PWBS', - ActorTypeId_SBEM = 'SBEM', - ActorTypeId_STNE = 'STNE', - ActorTypeId_TARU = 'TARU', - ActorTypeId_TSBH = 'TSBH', - ActorTypeId_TSUB = 'TSUB', - ActorTypeId_VLR0 = 'VLR0', -}; +#include "Actor/Actor.hpp" +#include "Actor/ActorTypeId.hpp" class ActorType_UnkClass { public: @@ -106,7 +17,6 @@ public: mUnk_4(unk_04) {} }; -class Actor; typedef Actor *(*ActorCreateFunc)(); struct ActorType { diff --git a/include/Actor/ActorTypeId.hpp b/include/Actor/ActorTypeId.hpp new file mode 100644 index 00000000..9f5925b5 --- /dev/null +++ b/include/Actor/ActorTypeId.hpp @@ -0,0 +1,96 @@ +#pragma once + +#include "global.h" +#include "types.h" + +typedef u32 ActorTypeId; +enum ActorTypeId_ { + ActorTypeId_Null = 'NULL', + + ActorTypeId_Navi = 'NAVI', + ActorTypeId_ForceNavi = 'FCNV', + ActorTypeId_WisdomNavi = 'WSNV', + + ActorTypeId_TreasureMap = 'TMAP', + ActorTypeId_DigSpot = 'DGTG', + + ActorTypeId_ShopItemBombchus = 'ITBT', + ActorTypeId_ShopItemBombs = 'ITBM', + ActorTypeId_ShopItemTreasure = 'ITTR', + ActorTypeId_ShopItemHeartContainer = 'ITHU', + ActorTypeId_ShopItemQuiver = 'ITAP', + ActorTypeId_ShopItemBombBag = 'ITBB', + ActorTypeId_ShopItemRedPotion = 'ITPB', + ActorTypeId_ShopItemCourageGem = 'ITSR', + ActorTypeId_ShopItemShield = 'ITSL', + ActorTypeId_ShopItemSoldOut = 'ITSO', + + ActorTypeId_RefillArrows = 'FLAL', + ActorTypeId_RefillBombs = 'FLBM', + ActorTypeId_RefillBombchus = 'FLBT', + ActorTypeId_RefillTime = 'FLTM', + ActorTypeId_Heart = 'HART', + ActorTypeId_LSTM = 'LSTM', + ActorTypeId_Rupee = 'RUPY', + + ActorTypeId_Arrow = 'ARRW', + ActorTypeId_Blast = 'BLST', + ActorTypeId_Bomb = 'BOMB', + ActorTypeId_Bombchu = 'BMTY', + ActorTypeId_GrapplingHook = 'ROPE', + + ActorTypeId_PlayerDummy = 'PLDM', + ActorTypeId_PushBlock = 'PSBL', + ActorTypeId_WindBlock = 'WBLK', + ActorTypeId_StorageDrum = 'DRUM', + + ActorTypeId_SmallKey = 'NKEY', + ActorTypeId_SwitchObject = 'SWOB', + ActorTypeId_EventIcon = 'EVIC', + ActorTypeId_ActionObject = 'ACOB', + + ActorTypeId_Sandworm = 'MLDW', + ActorTypeId_Tektite = 'TEKT', + ActorTypeId_PolsVoice = 'PLSV', + ActorTypeId_Yook = 'YETI', + ActorTypeId_Armos = 'AMOS', + ActorTypeId_Stalfos = 'STLF', + ActorTypeId_StalfosWarrior = 'STLW', + ActorTypeId_ChuChu = 'CHUC', + ActorTypeId_Gel = 'GELL', + ActorTypeId_Bee = 'BEE0', + ActorTypeId_BeeHive = 'BEEH', + ActorTypeId_Cucco = 'KOKO', + ActorTypeId_Rope = 'SNAK', + ActorTypeId_Octorok = 'OCTA', + ActorTypeId_Keese = 'KETH', + ActorTypeId_Rat = 'RAT0', + ActorTypeId_Beamos = 'BMOS', + ActorTypeId_LikeLike = 'LKLK', + ActorTypeId_Crow = 'CROW', + + ActorTypeId_Linebeck = 'LNBK', + ActorTypeId_Mailbox = 'POST', + ActorTypeId_Postman = 'PSTM', + + ActorTypeId_BIGR = 'BIGR', + ActorTypeId_BKEY = 'BKEY', + ActorTypeId_BMRN = 'BMRN', + ActorTypeId_BMTY = 'BMTY', + ActorTypeId_BTRF = 'BTRF', + ActorTypeId_CBLS = 'CBLS', + ActorTypeId_EVIC = 'EVIC', + ActorTypeId_FLAL = 'FLAL', + ActorTypeId_FLBM = 'FLBM', + ActorTypeId_FLBT = 'FLBT', + ActorTypeId_FLTB = 'FLTB', + ActorTypeId_FLTM = 'FLTM', + ActorTypeId_FORC = 'FORC', + ActorTypeId_PWBS = 'PWBS', + ActorTypeId_SBEM = 'SBEM', + ActorTypeId_STNE = 'STNE', + ActorTypeId_TARU = 'TARU', + ActorTypeId_TSBH = 'TSBH', + ActorTypeId_TSUB = 'TSUB', + ActorTypeId_VLR0 = 'VLR0', +}; diff --git a/include/Actor/Dungeon/ActorActionObject.hpp b/include/Actor/Dungeon/ActorActionObject.hpp index c4e2add3..b984491c 100644 --- a/include/Actor/Dungeon/ActorActionObject.hpp +++ b/include/Actor/Dungeon/ActorActionObject.hpp @@ -1,6 +1,7 @@ #pragma once #include "Actor/Actor.hpp" +#include "Actor/ActorType.hpp" class ActorActionObject : public Actor { public: diff --git a/include/Actor/Navi/ActorForceNavi.hpp b/include/Actor/Navi/ActorForceNavi.hpp index 18a124f4..d2fad08b 100644 --- a/include/Actor/Navi/ActorForceNavi.hpp +++ b/include/Actor/Navi/ActorForceNavi.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Actor/ActorType.hpp" #include "Actor/Navi/ActorNaviBase.hpp" class ActorForceNavi : public ActorNaviBase { diff --git a/include/Actor/Navi/ActorNavi.hpp b/include/Actor/Navi/ActorNavi.hpp index 44027971..4dbad5fe 100644 --- a/include/Actor/Navi/ActorNavi.hpp +++ b/include/Actor/Navi/ActorNavi.hpp @@ -1,6 +1,8 @@ #pragma once +#include "Actor/ActorType.hpp" #include "Actor/Navi/ActorNaviBase.hpp" +#include "Unknown/UnkStruct_02057200.hpp" #include "Unknown/UnkStruct_ov000_020beba8.hpp" #include "Unknown/UnkStruct_ov000_020c0c08.hpp" @@ -10,34 +12,50 @@ public: /* c */ /* 00 */ virtual ~UnkStruct_ov000_020b8110() override; - /* 08 */ virtual void vfunc_08(unk16 *param1) override; + /* 08 */ virtual bool vfunc_08(UnkStruct_ov000_020beba8_08 *param1) override; /* 14 */ virtual bool vfunc_14(u16 *param1) override; - /* 18 */ virtual void vfunc_18(s32 *param1) override; + /* 18 */ virtual bool vfunc_18(s32 *param1) override; /* 1c */ UnkStruct_ov000_020b8110(); }; +class ActorNavi_Unk_334 { +public: + /* 00 */ Vec3p mUnk_00; + /* 0c */ + + inline ActorNavi_Unk_334() { + mUnk_00.x = 0; + mUnk_00.y = 0; + mUnk_00.z = 0; + } +}; + class ActorNavi : public ActorNaviBase { public: static ActorType gType; /* 000 (base) */ /* 294 */ ModelRender mUnk_294; - /* 2f0 */ UnkStruct_ov000_020c0c08 mUnk_2f0; - /* 314 */ UnkStruct_ov000_020c0c08_04 mUnk_314; - /* 334 */ Vec3p mUnk_334; + /* 2f0 */ ActorNaviBase_Unk2 mUnk_2f0; + /* 334 */ ActorNavi_Unk_334 mUnk_334; /* 340 */ unk16 mUnk_340; - /* 342 */ unk8 mUnk_342[0x2]; - /* 344 */ u32 mUnk_344; + /* 342 (padding) */ + /* 344 */ q20 mUnk_344; /* 348 */ unk32 mUnk_348; - /* 34c */ unk8 mUnk_34c[0x38]; + /* 34c */ ActorNaviBase_Unk1 mUnk_34c[4]; + /* 35c */ unk8 mUnk_35c[0x28]; /* 384 */ Mat3p mUnk_384; /* 3a8 */ unk8 mUnk_3a8[0xC]; /* 3b4 */ EquipHammer *mHammer; - /* 3b8 */ unk32 mUnk_3b8; - /* 3bc */ unk32 mUnk_3bc; - /* 3c0 */ u8 mUnk_3c0[0x8]; + /* 3b8 */ UnkStruct_02057200 mUnk_3b8; + /* 3c0 */ u8 mUnk_3c0; + /* 3c1 */ u8 mUnk_3c1; + /* 3c2 */ u8 mUnk_3c2; + /* 3c2 */ u8 mUnk_3c3; + /* 3c4 */ u16 mUnk_3c4; + /* 3c6 */ u16 mUnk_3c6; /* 3c8 */ /* 00 */ virtual ~ActorNavi() override; @@ -47,8 +65,8 @@ public: /* b4 */ virtual FairyId GetFairyId() override; /* b8 */ virtual s32 vfunc_b8() override; /* c0 */ virtual bool vfunc_c0(Vec3p *param1) override; - /* c4 */ virtual void vfunc_c4() override; - /* c8 */ virtual void vfunc_c8() override; + /* c4 */ virtual u16 vfunc_c4() override; + /* c8 */ virtual u16 vfunc_c8() override; /* cc */ virtual bool vfunc_cc(unk32 *param1) override; /* d0 */ virtual void vfunc_d0() override; /* d4 */ virtual void vfunc_d4() override; @@ -64,7 +82,7 @@ public: bool func_ov059_0219933c(u32 param1); void func_ov059_0219a0ac(); - void func_ov059_0219aa08(); + void func_ov059_0219aa08(bool param1); void func_ov059_0219aba8(u32 param1); bool func_ov059_0219af14(); bool func_ov059_0219afc4(); diff --git a/include/Actor/Navi/ActorNaviBase.hpp b/include/Actor/Navi/ActorNaviBase.hpp index 4427853a..4434c1ff 100644 --- a/include/Actor/Navi/ActorNaviBase.hpp +++ b/include/Actor/Navi/ActorNaviBase.hpp @@ -6,6 +6,8 @@ #include "Actor/Actor.hpp" #include "Player/EquipHammer.hpp" #include "Render/ModelRender.hpp" +#include "Unknown/UnkStruct_ov000_020b7d74.hpp" +#include "Unknown/UnkStruct_ov000_020d18f4.hpp" typedef s32 FairyId; enum FairyId_ { @@ -16,34 +18,62 @@ enum FairyId_ { FairyId_COUNT = 3, }; -class ActorNaviBase_Unk1 {}; +class ActorNaviBase_Unk1 : public UnkStruct_ov000_020b7d74 { +public: + ActorNaviBase_Unk1(); +}; + +class ActorNaviBase_Unk2 : public UnkStruct_ov000_020c0c08 { +public: + /* 00 (base) */ + /* 24 */ UnkStruct_ov000_020c0c08_04 mUnk_24; + /* 44 */ + + /* 00 */ virtual ~ActorNaviBase_Unk2() override; + /* 08 */ + + inline ActorNaviBase_Unk2(ItemModel *model) : + UnkStruct_ov000_020c0c08(&mUnk_24, model) {} + inline ActorNaviBase_Unk2(NsAnimation *param2, ItemModel *model) : + UnkStruct_ov000_020c0c08(&mUnk_24, model) { + this->func_ov000_020c0c44(param2); + } +}; + +class ActorNaviBase_Unk3 : public ModelRender { +public: + /* 00 */ virtual ~ActorNaviBase_Unk3() {} + /* 3c */ virtual void vfunc_3c() override; + /* 40 */ + + ActorNaviBase_Unk3(ItemModel *param1); +}; class ActorNaviBase : public Actor { public: /* 000 (base) */ /* 158 */ Vec3p mOffsetPos; /* 164 */ unk32 mUnk_164; - /* 168 */ ModelRender mUnk_168; + /* 168 */ ActorNaviBase_Unk3 mUnk_168; /* 1c4 */ unk8 mUnk_1c4[0xc]; - /* 1d0 */ void *mUnk_1d0; - /* 1d4 */ unk8 mUnk_1d4[0x20]; - /* 1f4 */ unk8 mUnk_1f4[0x20]; + /* 1d0 */ ActorNaviBase_Unk2 mUnk_1d0; /* 214 */ unk16 mUnk_214; - /* 216 */ unk8 mUnk_216[0xc]; + /* 216 */ unk8 mUnk_216[0x2]; + /* 218 */ ActorNaviBase_Unk1 mUnk_218[2]; + /* 220 */ unk8 mUnk_220[0x2]; /* 222 */ unk16 mUnk_222; - /* 224 */ unk8 mUnk_224[0x28]; - /* 24c */ unk32 mUnk_24c; - /* 250 */ unk32 mUnk_250; - /* 254 */ unk32 mUnk_254; - /* 258 */ unk32 mUnk_258; - /* 25c */ unk32 mUnk_25c; - /* 260 */ unk32 mUnk_260; - /* 264 */ unk8 mUnk_264[0x1c]; + /* 224 */ UnkStruct_ov000_020d18f4 mUnk_224; /* 280 */ unk32 mUnk_280; /* 284 */ unk32 mUnk_284; - /* 288 */ unk8 mUnk_288[0x2]; + /* 288 */ unk8 mUnk_288; + /* 288 */ unk8 mUnk_289; /* 28a */ unk16 mUnk_28a; - /* 28c */ unk8 mUnk_28c[0x8]; + /* 28c */ unk8 mUnk_28c; + /* 28d */ unk8 mUnk_28d; + /* 28e */ unk8 mUnk_28e; + /* 28e */ unk8 mUnk_28f; + /* 290 */ unk8 mUnk_290; + /* 291 */ unk8 mUnk_291; /* 294 */ /* 00 */ virtual ~ActorNaviBase() override; @@ -65,8 +95,8 @@ public: /* b8 */ virtual s32 vfunc_b8(); /* bc */ virtual bool vfunc_bc(unk32 param1, unk8 param2, s32 param3); /* c0 */ virtual bool vfunc_c0(Vec3p *param1); - /* c4 */ virtual void vfunc_c4(); - /* c8 */ virtual void vfunc_c8(); + /* c4 */ virtual u16 vfunc_c4(); + /* c8 */ virtual u16 vfunc_c8(); /* cc */ virtual bool vfunc_cc(unk32 *param1); /* d0 */ virtual void vfunc_d0(); /* d4 */ virtual void vfunc_d4(); diff --git a/include/Actor/Navi/ActorWisdomNavi.hpp b/include/Actor/Navi/ActorWisdomNavi.hpp index fb6d2641..bf18b5cb 100644 --- a/include/Actor/Navi/ActorWisdomNavi.hpp +++ b/include/Actor/Navi/ActorWisdomNavi.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Actor/ActorType.hpp" #include "Actor/Navi/ActorNaviBase.hpp" class ActorWisdomNavi : public ActorNaviBase { diff --git a/include/Actor/Player/ActorBomb.hpp b/include/Actor/Player/ActorBomb.hpp index 2c1cd196..38d49a53 100644 --- a/include/Actor/Player/ActorBomb.hpp +++ b/include/Actor/Player/ActorBomb.hpp @@ -59,7 +59,7 @@ public: /* 18 */ virtual void vfunc_18(u32 param1) override; /* 20 */ virtual void vfunc_20(bool param1) override; /* 54 */ virtual void vfunc_54() override; - /* 5c */ virtual bool SetVelocity(Vec3p *vel) override; + /* 5c */ virtual bool Drop(Vec3p *vel) override; /* b4 */ static ActorBomb *Create(); diff --git a/include/DTCM/UnkStruct_027e0f6c.hpp b/include/DTCM/UnkStruct_027e0f6c.hpp index 7608b75b..5124371a 100644 --- a/include/DTCM/UnkStruct_027e0f6c.hpp +++ b/include/DTCM/UnkStruct_027e0f6c.hpp @@ -3,6 +3,8 @@ #include "global.h" #include "types.h" +#include + class UnkStruct_027e0f6c_Unk_1 { public: /* 00 */ unk32 mUnk_00; @@ -49,6 +51,7 @@ struct UnkStruct_027e0f6c { /* 00 */ unk8 mUnk_00[0x20]; /* 20 */ UnkStruct_027e0f6c_20 *mUnk_20; + static void func_ov000_02093a1c(u32 *param_1, UnkStruct_027e0f6c *param_2, u16 param_3); void func_ov004_02102770(); }; diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp index 2f552bb5..5f632a2e 100644 --- a/include/Item/ItemManager.hpp +++ b/include/Item/ItemManager.hpp @@ -20,6 +20,7 @@ extern "C" { #define MAX_HOURGLASS_SECONDS 1500 // 25 minutes #define MAX_AMMO_UPGRADE 2 #define MAX_UNK_0BA 9 +#define MAX_KEYS 8 typedef u32 ItemModelId; enum ItemModelId_ { diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index 2cbf8387..b64a3ef3 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -9,8 +9,6 @@ #include "Physics/AABB.hpp" #include "System/SysNew.hpp" -#define MAX_KEYS 8 - typedef unk32 CourseType; enum CourseType_ { CourseType_Normal = 0, diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 8decca85..ac64e596 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -142,7 +142,7 @@ public: /* 64 */ virtual unk32 vfunc_64(); /* 68 */ virtual unk32 vfunc_68(Vec3p *param_1, bool param_2); /* 6c */ virtual unk8 vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4); - /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); + /* 70 */ virtual u16 vfunc_70(Vec3p *param_2); /* 74 */ virtual unk32 *vfunc_74(Vec3p *param_2); /* 78 */ virtual unk32 *vfunc_78(TilePos *param_1); /* 7c */ virtual s32 vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 56888ab1..37b6ce13 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -268,7 +268,7 @@ public: s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, bool param_4); unk32 func_ov00_02083f44(Vec3p *param_2, bool param_3); unk8 MapData_vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4); - unk32 MapData_vfunc_70(Vec3p *param_2); + u16 MapData_vfunc_70(Vec3p *param_2); static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); void GetTileWorldBounds(TilePos *tile, AABB *tileBounds); unk32 MapData_vfunc_54(TilePos *a); diff --git a/include/Message/MsgProc.hpp b/include/Message/MsgProc.hpp index 97cf46e9..0615dee8 100644 --- a/include/Message/MsgProc.hpp +++ b/include/Message/MsgProc.hpp @@ -119,7 +119,6 @@ extern "C" void func_020347b0(unk32, unk16, unk32 *, unk32 *, unk32, unk32); extern THUMB unk32 func_0202ab48(void); extern "C" void func_02034984(unk32, u8, unk32, unk32); extern "C" void func_02034698(unk32, unk32, unk32 *, unk32 *); -extern struct TouchControl gTouchControl; class UnkClass_027e0e28 { public: diff --git a/include/Physics/Cylinder.hpp b/include/Physics/Cylinder.hpp index 9fb50ef2..89e78467 100644 --- a/include/Physics/Cylinder.hpp +++ b/include/Physics/Cylinder.hpp @@ -18,6 +18,11 @@ struct Cylinder { this->size = size; } + inline void MakeEmpty() { + pos = gVec3p_ZERO; + size = -1; + } + bool Overlaps(Cylinder *other); bool func_ov000_0208f030(Vec3p *param1, Vec3p *param2, s32 param3); }; diff --git a/include/Player/TouchControl.hpp b/include/Player/TouchControl.hpp index 989f4791..ee63a3ee 100644 --- a/include/Player/TouchControl.hpp +++ b/include/Player/TouchControl.hpp @@ -53,5 +53,6 @@ public: static bool func_0202b864(Vec3p *param1, s32 size, unk8 param3); static bool func_0202b894(Vec3p *param1, s32 size, unk8 param3); }; +extern TouchControl gTouchControl; extern "C" void Fill16(int value, unsigned short *dst, int size); // TODO: Replace with header file diff --git a/include/Render/ModelRender.hpp b/include/Render/ModelRender.hpp index 8c8bd394..8698d5b9 100644 --- a/include/Render/ModelRender.hpp +++ b/include/Render/ModelRender.hpp @@ -41,12 +41,12 @@ public: /* 3c */ virtual void vfunc_3c(); /* 40 */ - ModelRender(unk32 param1); + ModelRender(ItemModel *param1); void *func_ov000_020a9624(s32 param1); void func_ov000_020a98e8(unk32 param1); void func_ov000_020a990c(unk32 param1); void func_ov000_020a9938(unk32 param1); - void func_ov000_020a9960(unk32 param1); + void func_ov000_020a9960(void *param1); void func_ov000_020a9998(unk32 param1, unk32 param2); void func_ov000_020a99c0(); void func_ov000_020b413c(unk16 param1, Vec3p *param2); diff --git a/include/Unknown/UnkStruct_02037750.hpp b/include/Unknown/UnkStruct_02037750.hpp index a480c1a3..493ca6b0 100644 --- a/include/Unknown/UnkStruct_02037750.hpp +++ b/include/Unknown/UnkStruct_02037750.hpp @@ -3,9 +3,11 @@ #include "global.h" #include "types.h" -#include "Player/LinkStateInteract.hpp" +#include + #include "System/SysNew.hpp" +class LinkStateInteract; class UnkStruct_020397f8; typedef unk32 (*UnkStruct_02037750_Callback1)(unk32); @@ -43,9 +45,9 @@ public: class UnkStruct_020386d8_24 { public: /* 00 */ u8 mUnk_00; - /* 00 */ u8 mUnk_01; - /* 00 */ u8 mUnk_02; - /* 00 */ u8 mUnk_03; + /* 01 */ u8 mUnk_01; + /* 02 */ u8 mUnk_02; + /* 03 */ u8 mUnk_03; /* 04 */ void func_020376c0(const Vec3p *param_2); diff --git a/include/Unknown/UnkStruct_02057200.hpp b/include/Unknown/UnkStruct_02057200.hpp new file mode 100644 index 00000000..48887226 --- /dev/null +++ b/include/Unknown/UnkStruct_02057200.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_02057200 { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; +}; +extern UnkStruct_02057200 data_02057200; diff --git a/include/Unknown/UnkStruct_ov000_020b7d74.hpp b/include/Unknown/UnkStruct_ov000_020b7d74.hpp new file mode 100644 index 00000000..7e2dd773 --- /dev/null +++ b/include/Unknown/UnkStruct_ov000_020b7d74.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include "global.h" +#include "types.h" + +class UnkStruct_ov000_020b7d74 { +public: + /* 0 */ unk32 mUnk_0; + /* 4 */ + + inline UnkStruct_ov000_020b7d74() : + mUnk_0(0) {} + ~UnkStruct_ov000_020b7d74(); +}; diff --git a/include/Unknown/UnkStruct_ov000_020beba8.hpp b/include/Unknown/UnkStruct_ov000_020beba8.hpp index 4cf4bbbb..fb48e60e 100644 --- a/include/Unknown/UnkStruct_ov000_020beba8.hpp +++ b/include/Unknown/UnkStruct_ov000_020beba8.hpp @@ -24,8 +24,8 @@ public: /* 08 */ virtual bool vfunc_08(UnkStruct_ov000_020beba8_08 *param1); /* 0c */ virtual void vfunc_0c(unk16 *param1); /* 10 */ virtual bool vfunc_10(s32 *param1); - /* 14 */ virtual bool vfunc_14(u16 *param1, s32 param2); - /* 18 */ virtual void vfunc_18(s32 *param1); + /* 14 */ virtual bool vfunc_14(u16 *param1); + /* 18 */ virtual bool vfunc_18(s32 *param1); /* 1c */ UnkStruct_ov000_020beba8(unk32 param1); diff --git a/include/Unknown/UnkStruct_ov000_020c0c08.hpp b/include/Unknown/UnkStruct_ov000_020c0c08.hpp index ec253a46..2e16bed3 100644 --- a/include/Unknown/UnkStruct_ov000_020c0c08.hpp +++ b/include/Unknown/UnkStruct_ov000_020c0c08.hpp @@ -3,6 +3,8 @@ #include "global.h" #include "types.h" +#include + #include "System/SysNew.hpp" #include "Unknown/UnkStruct_0202e1a0.hpp" diff --git a/include/Unknown/UnkStruct_ov000_020d18f4.hpp b/include/Unknown/UnkStruct_ov000_020d18f4.hpp new file mode 100644 index 00000000..ad2b80df --- /dev/null +++ b/include/Unknown/UnkStruct_ov000_020d18f4.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Actor/ActorRef.hpp" +#include "Unknown/UnkStruct_02037750.hpp" + +class UnkStruct_ov000_020d18f4 : public UnkStruct_02037750 { +public: + /* 00 (base) */ + /* 20 */ ActorRef mUnk_20; + /* 28 */ unk8 mUnk_28[0x18]; + /* 40 */ void *mUnk_40; + /* 44 */ unk32 mUnk_44; + /* 48 */ unk32 mUnk_48; + /* 4c */ unk32 mUnk_4c; + /* 50 */ unk32 mUnk_50; + /* 54 */ unk32 mUnk_54; + /* 58 */ unk32 mUnk_58; + /* 5c */ + + UnkStruct_ov000_020d18f4(unk32 param1); + ~UnkStruct_ov000_020d18f4(); +}; diff --git a/libs/nds/include/nds/ns.h b/libs/nds/include/nds/ns.h new file mode 100644 index 00000000..cf28f590 --- /dev/null +++ b/libs/nds/include/nds/ns.h @@ -0,0 +1,70 @@ +#ifndef _NDS_NS_H +#define _NDS_NS_H + +#include "global.h" +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct NsFile { + /* 00 */ u32 magic; + /* 04 */ u16 bom; + /* 06 */ u16 version; + /* 08 */ u32 size; + /* 0c */ u16 headerSize; + /* 0e */ u16 numSections; + /* 10 */ u32 sectionOffsets[]; + /* 10 + 4 * numSections */ +} NsFile; + +typedef struct NsName { + char name[16]; +} NsName; + +typedef struct NsInfoBlock { + /* 00 */ u8 dummy; + /* 01 */ u8 count; + /* 02 */ u16 size; + /* 04 */ u16 unknownOffset; + /* 06 */ u16 listOffset; + /* 08 */ u32 unknownNum; + /* 0c */ u32 unknown[]; // u32[count] + // u16 elementSize; + // u16 dataSectionSize; + // T data[count]; + // NsName data[count]; +} NsInfoBlock; +#define NS_INFO_BLOCK_ELEMENT_SIZE(section) *(u16 *) ((u32) (section) + (section)->listOffset) +#define NS_INFO_BLOCK_DATA_SECTION_SIZE(section) *(u16 *) ((u32) (section) + (section)->listOffset + 2) +#define NS_INFO_BLOCK_DATA(section, i) \ + *(u16 *) ((u32) (section) + (section)->listOffset + 4 + i * NS_INFO_BLOCK_ELEMENT_SIZE(section)) +#define NS_INFO_BLOCK_NAME(section, info, i) \ + *(u16 *) ((u32) (section) + (section)->listOffset + 4 + (info)->count * NS_INFO_BLOCK_ELEMENT_SIZE(section) + \ + i * sizeof(NsName)) + +typedef struct NsJntSection { + /* 00 */ u32 magic; + /* 04 */ u32 size; + /* 08 */ NsInfoBlock animations; +} NsJntSection; + +typedef struct NsAnimation { + /* 00 */ u32 magic; + /* 04 */ u16 numFrames; + /* 06 */ u16 numTracks; + /* 08 */ u32 unknown; + /* 0c */ u32 pivotDataOffset; + /* 10 */ u32 basisMatricesOffset; + /* 14 */ u16 trackOffsets[]; // u16[numTracks] +} NsAnimation; + +NsJntSection *FindJntSection(NsFile *file); +NsAnimation *GetJntAnimation(NsJntSection *section, u32 index); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libs/nds/include/nds/overlay.h b/libs/nds/include/nds/overlay.h index c5972f7a..d421c80e 100644 --- a/libs/nds/include/nds/overlay.h +++ b/libs/nds/include/nds/overlay.h @@ -1,6 +1,8 @@ #ifndef _NDS_OVERLAY_H #define _NDS_OVERLAY_H +#include "types.h" + #ifdef __cplusplus extern "C" { #endif diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index c2a0f06c..efe35900 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -70,8 +70,8 @@ ARM Actor::Actor() : mUnk_107(0), mUnk_108(0), mUnk_109(0), - mUnk_110(0), - mUnk_111(0), + mTouchingWall(false), + mTouchingFloor(false), mUnk_112(0), mUnk_113(0), mUnk_114(0), @@ -79,7 +79,7 @@ ARM Actor::Actor() : mAlive(true), mUnk_119(1), mVisible(true), - mUnk_11b(false), + mGrabbed(false), mUnk_11c(0), mUnk_11d(false), mYOffset(0), @@ -202,21 +202,21 @@ ARM void Actor::SetUnk_129(bool value) { } } -ARM bool Actor::SetUnk_11b() { - if (mUnk_11b) { +ARM bool Actor::Grab() { + if (mGrabbed) { return false; } - mUnk_11b = true; + mGrabbed = true; return true; } -ARM bool Actor::SetVelocity(Vec3p *vel) { - if (!mUnk_11b) { - return false; +ARM bool Actor::Drop(Vec3p *vel) { + if (mGrabbed) { + mVel = *vel; + mGrabbed = false; + return true; } - mVel = *vel; - mUnk_11b = false; - return true; + return false; } ARM bool Actor::vfunc_60() { @@ -263,7 +263,7 @@ ARM bool Actor::vfunc_98() {} ARM bool Actor::vfunc_9c() {} ARM bool Actor::func_ov00_020c195c() { - if (!mUnk_11b) { + if (!mGrabbed) { return false; } gPlayerLink->func_ov000_020bc854(&mPos); @@ -359,7 +359,7 @@ ARM bool Actor::IsNearLink() { } ARM void Actor::func_ov00_020c1cf8() { - if (mUnk_0a4.mUnk_00 || mUnk_0a4.mUnk_01 || mUnk_129 == true || mUnk_11d == true || mUnk_11b == true) { + if (mUnk_0a4.mUnk_00 || mUnk_0a4.mUnk_01 || mUnk_129 == true || mUnk_11d == true || mGrabbed == true) { mInactive = 0; } else { if (this->IsNearLink()) { @@ -648,7 +648,7 @@ ARM bool Actor::CollidesWith(Actor *other) { } ARM bool Actor::func_ov00_020c27a8(unk32 param1) { - if (mUnk_11b) { + if (mGrabbed) { return false; } if (param1 == 0) { diff --git a/src/00_Core/Actor/Dungeon/ActorActionObject.cpp b/src/00_Core/Actor/Dungeon/ActorActionObject.cpp index 1039b574..dbd66a76 100644 --- a/src/00_Core/Actor/Dungeon/ActorActionObject.cpp +++ b/src/00_Core/Actor/Dungeon/ActorActionObject.cpp @@ -19,15 +19,14 @@ ARM ActorActionObject::~ActorActionObject() {} // non-matching ARM bool ActorActionObject::Init() { - mGravity = 0; - mHitbox.pos = gVec3p_ZERO; - mHitbox.size = -1; - mUnk_08c.pos = mHitbox.pos; - mUnk_08c.size = mHitbox.size; - mUnk_0a4.mUnk_04 = gVec3p_ZERO; - mUnk_0a4.mUnk_10 = -1; - mVisible = false; - mUnk_130 = 0; + mGravity = 0; + mHitbox.pos = gVec3p_ZERO; + mHitbox.size = -1; + mUnk_08c.pos = mHitbox.pos; + mUnk_08c.size = mHitbox.size; + mUnk_0a4.mUnk_04.MakeEmpty(); + mVisible = false; + mUnk_130 = 0; return true; } diff --git a/src/00_Core/Actor/Navi/ActorNavi.cpp b/src/00_Core/Actor/Navi/ActorNavi.cpp index dd93a77a..2d001ec0 100644 --- a/src/00_Core/Actor/Navi/ActorNavi.cpp +++ b/src/00_Core/Actor/Navi/ActorNavi.cpp @@ -1,32 +1,199 @@ #include "Actor/Navi/ActorNavi.hpp" +#include "DTCM/UnkStruct_027e0f6c.hpp" +#include "Game/Game.hpp" +#include "Item/ItemManager.hpp" #include "Player/EquipHammer.hpp" +static char *sShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"}; + ActorType ActorNavi::gType = ActorType(ActorTypeId_Navi, (ActorCreateFunc) ActorNavi::Create, NULL); UnkStruct_ov000_020b8110 data_ov000_020ee1cc; -ActorNavi *ActorNavi::Create() {} -UnkStruct_ov000_020b8110::UnkStruct_ov000_020b8110() : +extern u32 **data_027e0fe0[]; +ARM ActorNavi *ActorNavi::Create() { + return new(*data_027e0fe0[0], 4) ActorNavi(); +} + +ARM UnkStruct_ov000_020b8110::UnkStruct_ov000_020b8110() : UnkStruct_ov000_020beba8(7) {} -UnkStruct_ov000_020b8110::~UnkStruct_ov000_020b8110() {} -void UnkStruct_ov000_020b8110::vfunc_08(unk16 *param1) {} -void UnkStruct_ov000_020b8110::vfunc_18(s32 *param1) {} -bool UnkStruct_ov000_020b8110::vfunc_14(u16 *param1) {} -void ActorNavi::func_ov000_020b8200() {} -void ActorNavi::vfunc_c4() {} -void ActorNavi::vfunc_c8() {} -FairyId ActorNavi::GetFairyId() {} -s32 ActorNavi::vfunc_b8() {} -void ActorNavi::vfunc_d4() {} -void ActorNavi::vfunc_d0() {} -void ActorNavi::SetActive(unk32 active) {} -void ActorNavi::vfunc_e0() {} -void ActorNavi::vfunc_d8() {} -void ActorNavi::vfunc_20(bool param1) {} -bool ActorNavi::vfunc_cc(unk32 *param1) {} -bool ActorNavi::vfunc_c0(Vec3p *param1) {} -void ActorNavi::vfunc_e8() {} -bool ActorNavi::vfunc_8c() {} -void ActorNavi::vfunc_ec() {} -EquipHammer *GetEquipHammer() {} -void ActorNavi::func_ov000_020b853c() {} + +ARM UnkStruct_ov000_020b8110::~UnkStruct_ov000_020b8110() {} + +ARM bool UnkStruct_ov000_020b8110::vfunc_08(UnkStruct_ov000_020beba8_08 *param1) { + u32 temp_r0; + UnkStruct_027e0f6c::func_ov000_02093a1c(&temp_r0, data_027e0f6c, param1->mUnk_00); + if ((temp_r0 & 0x1f) == 0 && ((temp_r0 >> 7) & 0x3) == 2) { + return true; + } + return UnkStruct_ov000_020beba8::vfunc_08(param1); +} + +ARM bool UnkStruct_ov000_020b8110::vfunc_18(s32 *param1) { + switch ((*(unk32(**)(s32 *))((*param1) + 0x1c))(param1)) { + case 0x10: + case 0x17: + return false; + } + return UnkStruct_ov000_020beba8::vfunc_18(param1); +} + +ARM bool UnkStruct_ov000_020b8110::vfunc_14(u16 *param1) { + return UnkStruct_ov000_020beba8::vfunc_14(param1); +} + +ARM void ActorNavi::func_ov000_020b8200() { + mUnk_09c.mUnk_4 = &data_ov000_020ee1cc; +} + +ARM u16 ActorNavi::vfunc_c4() { + if ((gGame.mModeId != GameModeId_Battle) && (mUnk_3c1 == 0)) { + return ActorNaviBase::vfunc_c4(); + } + return mUnk_3c4; +} + +ARM u16 ActorNavi::vfunc_c8() { + if ((gGame.mModeId != GameModeId_Battle) && (mUnk_3c1 == 0)) { + return ActorNaviBase::vfunc_c8(); + } + return mUnk_3c6; +} + +ARM FairyId ActorNavi::GetFairyId() { + return FairyId_Courage; +} + +ARM s32 ActorNavi::vfunc_b8() { + return 58; +} + +ARM void ActorNavi::vfunc_d4() { + if (mHammer != NULL && this->func_ov059_0219af14()) { + return; + } + return ActorNaviBase::vfunc_d4(); +} + +ARM void ActorNavi::vfunc_d0() { + if (mHammer != NULL && this->func_ov059_0219afc4()) { + return; + } + ActorNaviBase::vfunc_d0(); +} + +extern void func_ov000_020b7e6c(s32 *param1); +ARM void ActorNavi::SetActive(unk32 active) { + s32 temp_r4; + s32 var_r5; + var_r5 = (s32) mUnk_34c; + temp_r4 = (s32) (mUnk_34c + 4); + if (var_r5 != temp_r4) { + do { + func_ov000_020b7e6c((s32 *) var_r5); + var_r5 += 4; + } while (var_r5 != temp_r4); + } + if (mHammer != NULL) { + this->func_ov059_0219aba8(active); + } + return ActorNaviBase::SetActive(active); +} + +ARM void ActorNavi::vfunc_e0() { + void (*var_r1)(); + s32 temp_r0; + void **temp_r0_2; + + if (mUnk_3b8.mUnk_00 != NULL) { + if (mUnk_130 != 0) { + this->SetActive(1); + } else { + (*(void (**)())((*(unk32 *) ((s32) this + (mUnk_3b8.mUnk_04 >> 1))) + mUnk_3b8.mUnk_00))(); + return; + } + } + if (mHammer != NULL) { + if (!mHammer->IsInUse()) { + this->func_ov000_020b853c(); + } else { + + if (mUnk_130 != 0) { + return; + } + this->SetActive(3); + return; + } + } + return ActorNaviBase::vfunc_e0(); +} + +ARM void ActorNavi::vfunc_d8() { + if (mHammer != NULL) { + this->func_ov059_0219a0ac(); + return; + } + ActorNaviBase::vfunc_d8(); +} + +ARM void ActorNavi::vfunc_20(bool param1) { + + ActorNaviBase::vfunc_20(param1); + u8 var_r0 = param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00; + if ((var_r0 != 0) && mHammer != NULL) { + this->func_ov059_0219aa08(param1); + } +} + +ARM bool ActorNavi::vfunc_cc(unk32 *param1) { + if (mHammer != NULL || mUnk_3b8.mUnk_00 != 0) { + return false; + } + return ActorNaviBase::vfunc_cc(param1); +} + +ARM bool ActorNavi::vfunc_c0(Vec3p *param1) { + if (mHammer != NULL || mUnk_3b8.mUnk_00 != 0) { + return false; + } + return ActorNaviBase::vfunc_c0(param1); +} + +static unk32 data_ov000_020e6554 = 0x2000; + +ARM void ActorNavi::vfunc_e8() { + ActorNaviBase::vfunc_e8(); + if (mHammer == NULL) { + return; + } + mUnk_2f0.mUnk_0c.mUnk_04 = data_ov000_020e6554; + mUnk_2f0.func_ov000_020c0e04(); +} + +ARM bool ActorNavi::vfunc_8c() { + return true; +} + +ARM void ActorNavi::vfunc_ec() { + if (mUnk_3b8.mUnk_00 != 0 || mHammer != NULL) { + return; + } + if (gGame.mModeId == GameModeId_Battle) { + return; + } + if (!GetEquipHammer()->IsInUse()) { + return; + } + this->func_ov059_0219b020(); +} + +ARM EquipHammer *GetEquipHammer() { + return (EquipHammer *) gItemManager->GetEquipItemUnchecked(ItemFlag_Hammer); +} + +ARM void ActorNavi::func_ov000_020b853c() { + mHammer = NULL; + mUnk_3c0 = 0; + mUnk_348 = 0; +} + ActorNavi::~ActorNavi() {} diff --git a/src/00_Core/Actor/Navi/ActorNaviBase.cpp b/src/00_Core/Actor/Navi/ActorNaviBase.cpp index 39eb0bb5..0bbe0f8a 100644 --- a/src/00_Core/Actor/Navi/ActorNaviBase.cpp +++ b/src/00_Core/Actor/Navi/ActorNaviBase.cpp @@ -1,7 +1,7 @@ #include "Actor/Navi/ActorNaviBase.hpp" -void ActorNaviBase::vfunc_c4() {} -void ActorNaviBase::vfunc_c8() {} +u16 ActorNaviBase::vfunc_c4() {} +u16 ActorNaviBase::vfunc_c8() {} unk32 ActorNaviBase::vfunc_30() {} s32 ActorNaviBase::vfunc_b8() {} bool ActorNaviBase::vfunc_cc(unk32 *param1) {} diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index b3a7122e..988d745a 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -28,7 +28,7 @@ unk8 MapBase::func_ov00_0207e940(unk8 *param_1) {} unk8 MapBase::func_ov00_0207e968() {} unk8 MapBase::func_ov00_0207e96c() {} unk8 MapBase::vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4) {} -unk32 MapBase::vfunc_70(Vec3p *param_2) {} +u16 MapBase::vfunc_70(Vec3p *param_2) {} unk32 *MapBase::vfunc_74(Vec3p *param_2) {} unk8 MapBase::func_ov00_0207f100() {} bool MapBase::func_ov00_0207f104(unk32 param_2, unk32 param_3) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 71bcd9dc..cedb7d01 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -44,7 +44,6 @@ extern s32 func_ov000_0208e6f0(Vec3p *param_1); extern s32 func_ov000_0208e704(Vec3p *param_1); extern s32 func_ov000_0208e87c(AABB *param_1, Vec3p *param_2, Vec3p *param_3); extern void func_ov000_0208ed74(AABB *param_1, Vec3p *param_2); -extern void func_ov000_02093a1c(u32 *param_1, unk32 *param_2, unk32 param_3); extern void func_ov000_02096324(unk32 *param_1, unk32 *param_2); extern s32 *func_ov000_02096418(s32 *param_1); extern void func_ov015_021849a4(unk32 *param_1); @@ -1268,13 +1267,13 @@ unk8 MapManager::MapData_vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4 this->mMap->vfunc_6c(param_2, param_3, param_4); } -ARM unk32 MapManager::MapData_vfunc_70(Vec3p *param_2) { +ARM u16 MapManager::MapData_vfunc_70(Vec3p *param_2) { return this->mMap->vfunc_70(param_2); } ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) { unk32 *iVar1; // find type with field that exists at offset 0xc - s32 dVar2; + u16 dVar2; iVar1 = (unk32 *) param_2->mMap->vfunc_74(param_3); if (iVar1 != NULL) { @@ -1284,7 +1283,7 @@ ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p dVar2 = param_2->MapData_vfunc_70(param_3); if (dVar2 != 0xffff) { - func_ov000_02093a1c(param_1, (unk32 *) data_027e0f6c, dVar2); + UnkStruct_027e0f6c::func_ov000_02093a1c(param_1, data_027e0f6c, dVar2); return; } @@ -2086,7 +2085,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { } // dVar3 = this->MapData_vfunc_70(); // Missing param. if (dVar3 != 0xffff) { - func_ov000_02093a1c(&uStack_14, (unk32 *) data_027e0f6c, dVar3); + UnkStruct_027e0f6c::func_ov000_02093a1c(&uStack_14, data_027e0f6c, dVar3); if ((uStack_14 >> 5 & 3) != 1) { return 0; } @@ -2274,7 +2273,7 @@ s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *par ARM unk32 MapManager::func_ov00_02085594(Vec3p *param_2) { UnkStruct_02085594 *piVar1; - unk32 dVar3; + u16 dVar3; unk32 uVar4; bool bVar5; u32 uStack_24; @@ -2337,7 +2336,7 @@ ARM unk32 MapManager::func_ov00_02085594(Vec3p *param_2) { if (dVar3 == 0xffff) { return 0; } - func_ov000_02093a1c(&uStack_24, (unk32 *) data_027e0f6c, dVar3); + UnkStruct_027e0f6c::func_ov000_02093a1c(&uStack_24, data_027e0f6c, dVar3); if ((uStack_24 >> 5 & 3) == 1) { return bVar5 ? 1 : 2; } diff --git a/src/00_Core/Render/ModelRender.cpp b/src/00_Core/Render/ModelRender.cpp index 208ddb45..92d32375 100644 --- a/src/00_Core/Render/ModelRender.cpp +++ b/src/00_Core/Render/ModelRender.cpp @@ -1,6 +1,6 @@ #include "Render/ModelRender.hpp" -ModelRender::ModelRender(unk32 param1) {} +ModelRender::ModelRender(ItemModel *param1) {} ModelRender::~ModelRender() {} void *ModelRender::GetLcdcAddress() {} void ModelRender::vfunc_0c(ItemModel *model) {} @@ -18,7 +18,7 @@ void ModelRender::vfunc_30() {} void ModelRender::func_ov000_020a98e8(unk32 param1) {} void ModelRender::func_ov000_020a990c(unk32 param1) {} void ModelRender::func_ov000_020a9938(unk32 param1) {} -void ModelRender::func_ov000_020a9960(unk32 param1) {} +void ModelRender::func_ov000_020a9960(void *param1) {} void ModelRender::vfunc_38() {} void ModelRender::vfunc_3c() {} void ModelRender::func_ov000_020a9998(unk32 param1, unk32 param2) {} diff --git a/src/00_Core/Unknown/UnkStruct_ov000_020beba8.cpp b/src/00_Core/Unknown/UnkStruct_ov000_020beba8.cpp index 076ddcbf..ed96487c 100644 --- a/src/00_Core/Unknown/UnkStruct_ov000_020beba8.cpp +++ b/src/00_Core/Unknown/UnkStruct_ov000_020beba8.cpp @@ -4,6 +4,6 @@ UnkStruct_ov000_020beba8::UnkStruct_ov000_020beba8(unk32 param1) {} bool UnkStruct_ov000_020beba8::vfunc_08(UnkStruct_ov000_020beba8_08 *param1) {} void UnkStruct_ov000_020beba8::vfunc_0c(unk16 *param1) {} bool UnkStruct_ov000_020beba8::vfunc_10(s32 *param1) {} -void UnkStruct_ov000_020beba8::vfunc_18(s32 *param1) {} -bool UnkStruct_ov000_020beba8::vfunc_14(u16 *param1, s32 param2) {} +bool UnkStruct_ov000_020beba8::vfunc_18(s32 *param1) {} +bool UnkStruct_ov000_020beba8::vfunc_14(u16 *param1) {} UnkStruct_ov000_020beba8::~UnkStruct_ov000_020beba8() {} diff --git a/src/04_Load/Actor/Navi/ActorNavi.cpp b/src/04_Load/Actor/Navi/ActorNavi.cpp deleted file mode 100644 index ca1635f8..00000000 --- a/src/04_Load/Actor/Navi/ActorNavi.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "Actor/Navi/ActorNavi.hpp" -#include "Item/ItemManager.hpp" - -ActorNavi::ActorNavi() : - mUnk_294(0), - mUnk_2f0(&mUnk_314, gItemManager->GetItemModel(ItemModelId_Hammer)) {} diff --git a/src/04_Load/Actor/Navi/ActorNaviBase.cpp b/src/04_Load/Actor/Navi/ActorNaviBase.cpp deleted file mode 100644 index 2ad0dc0b..00000000 --- a/src/04_Load/Actor/Navi/ActorNaviBase.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "Actor/Navi/ActorNaviBase.hpp" - -ActorNaviBase::ActorNaviBase() : - mUnk_168(0) {} -ActorNaviBase::~ActorNaviBase() {} -void func_ov004_021079d4(unk32 *param1) {} -bool ActorNaviBase::Init() {} diff --git a/src/04_Load/Actor/Navi/ActorNavi_04.cpp b/src/04_Load/Actor/Navi/ActorNavi_04.cpp new file mode 100644 index 00000000..13bac706 --- /dev/null +++ b/src/04_Load/Actor/Navi/ActorNavi_04.cpp @@ -0,0 +1,81 @@ +#include "Actor/Navi/ActorNavi.hpp" +#include "Item/ItemManager.hpp" + +extern ItemModel *data_ov000_020ee1f8; +extern NsFile *data_ov000_020e67ac; + +THUMB ActorNaviBase::ActorNaviBase() : + mUnk_164(0), + mUnk_168(data_ov000_020ee1f8), + mUnk_1d0(GetJntAnimation(FindJntSection(data_ov000_020e67ac), 0), data_ov000_020ee1f8), + mUnk_214(0), + mUnk_222(-1), + mUnk_224(0x1000000), + mUnk_280(-1), + mUnk_284(-1), + mUnk_288(0), + mUnk_289(0), + mUnk_28a(0), + mUnk_28c(0), + mUnk_28d(0), + mUnk_290(0), + mUnk_291(0) { + mOffsetPos = mPos; + mUnk_130 = 0; + mYOffset = FLOAT_TO_Q20(0.2); +} + +THUMB ActorNaviBase::~ActorNaviBase() {} + +THUMB ActorNaviBase_Unk1::ActorNaviBase_Unk1() {} + +THUMB bool ActorNaviBase::Init() { + mGravity = 0; + mHitbox.MakeEmpty(); + mUnk_08c.pos.x = 0; + mUnk_08c.pos.y = 0; + mUnk_08c.pos.z = 0; + mUnk_08c.size = FLOAT_TO_Q20(0.4); + mUnk_0a4.mUnk_04.MakeEmpty(); + if (data_027e0d38->func_ov000_02078b40() == 2) { + return true; + } + this->func_ov000_020b9770(0); + mUnk_224.mUnk_20.id = mRef.id; + mUnk_224.mUnk_20.index = mRef.index; + mUnk_28e = 0; + mUnk_28f = 0; + return true; +} + +ActorNaviBase_Unk3::ActorNaviBase_Unk3(ItemModel *param1) : + ModelRender(param1) { + this->func_ov000_020a9998(6, 3); +} + +THUMB ActorNavi::ActorNavi() : + mUnk_294(gItemManager->GetItemModel(ItemModelId_Hammer)), + mUnk_2f0(gItemManager->GetItemModel(ItemModelId_Hammer)), + mUnk_340(0), + mUnk_344(FLOAT_TO_Q20(1.0)), + mUnk_348(0), + mHammer(NULL), + mUnk_3b8(data_02057200), + mUnk_3c0(0), + mUnk_3c1(0), + mUnk_3c2(0) {} + +extern const ItemManager_Unk1 data_ov000_020dc7d0; +THUMB bool ActorNavi::Init() { + mUnk_2f0.func_ov000_020c0c44(gItemManager->func_ov00_020ad538(&data_ov000_020dc7d0)); + mUnk_2f0.func_ov000_020c0e5c(0); + mUnk_294.func_ov000_020a9960(&mUnk_35c); + mUnk_294.vfunc_24(&mUnk_2f0); + mUnk_3c4 = ActorNaviBase::vfunc_c4(); + mUnk_3c6 = ActorNaviBase::vfunc_c8(); + mUnk_09c.mUnk_0 = 0xff; + mUnk_09c.mUnk_0 = (s16) (mUnk_09c.mUnk_0 & ~2); + mUnk_09c.mUnk_0 = (s16) (mUnk_09c.mUnk_0 & ~0x80); + this->func_ov000_020b8200(); + return ActorNaviBase::Init(); +} diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index f7e855a8..510261ba 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -33,24 +33,24 @@ ActorRupee::ActorRupee() { } bool ActorRupee::Init() { - RupeeId rupeeId = (RupeeId) mUnk_020.mUnk_00[0]; - mRupeeId = rupeeId; - s32 iVar1 = (func_ov14_0213b70c(rupeeId) ? data_ov014_021589f4.mUnk_4 : 0xaa8) >> 1; - mHitbox.pos.x = 0; - mHitbox.pos.y = iVar1; - mHitbox.pos.z = 0; - mHitbox.size = iVar1; - mUnk_08c.pos.x = mHitbox.pos.x; - mUnk_08c.pos.y = mHitbox.pos.y; - mUnk_08c.pos.z = mHitbox.pos.z; - mUnk_08c.size = mHitbox.size; - mUnk_0a4.mUnk_04.x = 0; - mUnk_0a4.mUnk_04.y = iVar1; - mUnk_0a4.mUnk_04.z = 0; - mUnk_0a4.mUnk_10 = iVar1 + 0x1000; - mUnk_09c.mUnk_0 = mUnk_09c.mUnk_0 & ~0xb0; - mUnk_09c.mUnk_3 = 1; - mMaxFall = mUnk_08c.size + -1; + RupeeId rupeeId = (RupeeId) mUnk_020.mUnk_00[0]; + mRupeeId = rupeeId; + s32 iVar1 = (func_ov14_0213b70c(rupeeId) ? data_ov014_021589f4.mUnk_4 : 0xaa8) >> 1; + mHitbox.pos.x = 0; + mHitbox.pos.y = iVar1; + mHitbox.pos.z = 0; + mHitbox.size = iVar1; + mUnk_08c.pos.x = mHitbox.pos.x; + mUnk_08c.pos.y = mHitbox.pos.y; + mUnk_08c.pos.z = mHitbox.pos.z; + mUnk_08c.size = mHitbox.size; + mUnk_0a4.mUnk_04.pos.x = 0; + mUnk_0a4.mUnk_04.pos.y = iVar1; + mUnk_0a4.mUnk_04.pos.z = 0; + mUnk_0a4.mUnk_04.size = iVar1 + 0x1000; + mUnk_09c.mUnk_0 = mUnk_09c.mUnk_0 & ~0xb0; + mUnk_09c.mUnk_3 = 1; + mMaxFall = mUnk_08c.size + -1; if (mUnk_03c >= 0) { this->func_ov14_0213b204(1); } else { @@ -215,7 +215,7 @@ void ActorRupee::Update(bool param1) { switch (mUnk_130) { case 0: Move(); - if (mUnk_111) { + if (mTouchingFloor) { local_1c = mPos; MapManager::func_ov00_02083fb0(&local_20, gMapManager, &local_1c); if (((local_20 >> 5) & 3) == 2) { diff --git a/src/14_Land/Actor/Player/ActorBomb.cpp b/src/14_Land/Actor/Player/ActorBomb.cpp index ce804b85..e50acf5f 100644 --- a/src/14_Land/Actor/Player/ActorBomb.cpp +++ b/src/14_Land/Actor/Player/ActorBomb.cpp @@ -16,7 +16,7 @@ void ActorBomb::vfunc_18(u32 param1) {} bool ActorBomb::func_ov014_02122bb8(s32 param1) {} void ActorBomb::vfunc_54() {} void ActorBomb::vfunc_20(bool param1) {} -bool ActorBomb::SetVelocity(Vec3p *vel) {} +bool ActorBomb::Drop(Vec3p *vel) {} bool ActorBomb::func_ov014_02122e48(unk32 *param1) {} bool ActorBomb::func_ov014_02122e7c() {} bool ActorBomb::func_ov014_02122e98() {} diff --git a/src/14_Land/Actor/Player/ActorRefill.cpp b/src/14_Land/Actor/Player/ActorRefill.cpp index ea448a42..e556774b 100644 --- a/src/14_Land/Actor/Player/ActorRefill.cpp +++ b/src/14_Land/Actor/Player/ActorRefill.cpp @@ -57,18 +57,18 @@ ARM bool ActorRefill::Init() { return false; } } - mHitbox.pos.x = 0; - mHitbox.pos.y = FLOAT_TO_Q20(0.3); - mHitbox.pos.z = 0; - mHitbox.size = FLOAT_TO_Q20(0.3); - mUnk_08c.pos.x = mHitbox.pos.x; - mUnk_08c.pos.y = mHitbox.pos.y; - mUnk_08c.pos.z = mHitbox.pos.z; - mUnk_08c.size = mHitbox.size; - mUnk_0a4.mUnk_04.x = 0; - mUnk_0a4.mUnk_04.y = FLOAT_TO_Q20(0.3); - mUnk_0a4.mUnk_04.z = 0; - mUnk_0a4.mUnk_10 = FLOAT_TO_Q20(1.3); + mHitbox.pos.x = 0; + mHitbox.pos.y = FLOAT_TO_Q20(0.3); + mHitbox.pos.z = 0; + mHitbox.size = FLOAT_TO_Q20(0.3); + mUnk_08c.pos.x = mHitbox.pos.x; + mUnk_08c.pos.y = mHitbox.pos.y; + mUnk_08c.pos.z = mHitbox.pos.z; + mUnk_08c.size = mHitbox.size; + mUnk_0a4.mUnk_04.pos.x = 0; + mUnk_0a4.mUnk_04.pos.y = FLOAT_TO_Q20(0.3); + mUnk_0a4.mUnk_04.pos.z = 0; + mUnk_0a4.mUnk_04.size = FLOAT_TO_Q20(1.3); mUnk_09c.mUnk_0 &= ~0xa4; mUnk_09c.mUnk_3 = 1; mMaxFall = mUnk_08c.size + -1; @@ -94,11 +94,11 @@ ARM void ActorRefill::vfunc_14(u32 param1) { temp_r0_2 = &mPos; Vec3p_Add(temp_r0_2, &mVel, temp_r0_2); this->func_01fffd04(0); - if (mUnk_110 || mUnk_112 || mUnk_113) { + if (mTouchingWall || mUnk_112 || mUnk_113) { mVel.x = 0; mVel.z = 0; } - if (mUnk_111) { + if (mTouchingFloor) { this->func_ov014_02135364(1); } else if (this->func_ov00_020c2c0c()) { this->func_ov014_02135364(4); diff --git a/src/58_Bombchu/Player/EquipBombchu.cpp b/src/58_Bombchu/Player/EquipBombchu.cpp index 68ee77a1..54f2fd76 100644 --- a/src/58_Bombchu/Player/EquipBombchu.cpp +++ b/src/58_Bombchu/Player/EquipBombchu.cpp @@ -70,7 +70,7 @@ ARM bool EquipBombchu_Unk_02198d00::vfunc_14(u16 *param1, s32 param2) { ARM bool EquipBombchu_Unk_02198d00::vfunc_10(s32 *param1) { Actor *temp_r0 = (Actor *) param1; - if (!temp_r0->SetUnk_11b()) { + if (!temp_r0->Grab()) { return false; } bool result; diff --git a/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp b/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp index acaa3bd3..07b8a4a5 100644 --- a/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp +++ b/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp @@ -18,7 +18,7 @@ ARM bool ActorNavi::func_ov059_0219933c(u32 param1) {} ARM void ActorNavi::func_ov059_0219a0ac() {} // non-matching -ARM void ActorNavi::func_ov059_0219aa08() { +ARM void ActorNavi::func_ov059_0219aa08(bool param1) { int iVar1; s64 lVar2; u16 uVar3; @@ -28,7 +28,7 @@ ARM void ActorNavi::func_ov059_0219aa08() { Mat3p MStack_48; Vec3p VStack_24; - if (this->mUnk_3c0[0] != 0) { + if (this->mUnk_3c0 != 0) { VStack_24.x = this->mPos.x; VStack_24.y = this->mPos.y + 0x333; // FLOAT_TO_Q20(0.2)? VStack_24.z = this->mPos.z; @@ -42,17 +42,17 @@ ARM void ActorNavi::func_ov059_0219aa08() { lVar2 = 0x666 * this->mUnk_344; uVar4 = lVar2; - this->mUnk_334.x = + this->mUnk_334.mUnk_00.x = ROUND_Q20(uVar4) | ((this->mUnk_344 >> 0x1F) * 0x666 + (lVar2 >> 0x20) + (~0x800 < uVar4)) * 0x100000; - Mat3p_MultiplyVec(&this->mUnk_334, &this->mUnk_384, &this->mUnk_334); - Vec3p_RotateY(uVar3, &this->mUnk_334); - Vec3p_Add(&this->mUnk_334, &VStack_24, &this->mUnk_334); - VStack_60.z = this->mUnk_334.z; - VStack_60.x = this->mUnk_334.x; + Mat3p_MultiplyVec(&this->mUnk_334.mUnk_00, &this->mUnk_384, &this->mUnk_334.mUnk_00); + Vec3p_RotateY(uVar3, &this->mUnk_334.mUnk_00); + Vec3p_Add(&this->mUnk_334.mUnk_00, &VStack_24, &this->mUnk_334.mUnk_00); + VStack_60.z = this->mUnk_334.mUnk_00.z; + VStack_60.x = this->mUnk_334.mUnk_00.x; lVar2 = 0x333 * this->mUnk_344; uVar4 = lVar2; - VStack_60.y = this->mUnk_334.y + 0x800; + VStack_60.y = this->mUnk_334.mUnk_00.y + 0x800; uVar4 = ROUND_Q20(uVar4) | ((this->mUnk_344 >> 0x1F) * 0x333 + (lVar2 >> 0x20) + (~0x800 < uVar4)) * 0x100000; func_ov005_02102c2c(&data_ov000_020e9370[0], 0, &VStack_60, uVar4, uVar4, 0, 0x10, 0, 0, 0); } @@ -160,7 +160,7 @@ ARM void ActorNavi::func_ov059_0219aba8(u32 param1) { ARM bool ActorNavi::func_ov059_0219af14() { int iVar1; - if (this->mUnk_3c0[2] != 0) { + if (this->mUnk_3c2 != 0) { return false; } @@ -193,7 +193,7 @@ ARM bool ActorNavi::func_ov059_0219af14() { } ARM bool ActorNavi::func_ov059_0219afc4() { - this->mUnk_3c0[2] = 0; + this->mUnk_3c2 = 0; this->func_ov059_0219933c(0); switch (this->mUnk_130) { @@ -220,8 +220,8 @@ ARM void ActorNavi::func_ov059_0219b020() { gPlayerControl->mAimWorld = this->mOffsetPos; - this->mHammer = GetEquipHammer(); - this->mUnk_3c0[0] = 0x0; - this->mUnk_3c0[2] = 0x0; + this->mHammer = GetEquipHammer(); + this->mUnk_3c0 = 0x0; + this->mUnk_3c2 = 0x0; this->SetActive(3); } diff --git a/src/59_Hammer/Player/EquipHammer.cpp b/src/59_Hammer/Player/EquipHammer.cpp index 3928cb6e..900e43c3 100644 --- a/src/59_Hammer/Player/EquipHammer.cpp +++ b/src/59_Hammer/Player/EquipHammer.cpp @@ -25,7 +25,7 @@ ARM bool EquipHammer::IsUsable(unk32 param1) const { pAVar3 = (ActorNavi *) gItemManager->GetFairy(FairyId_Courage); - if (pAVar3 == NULL || pAVar3->mUnk_3b8 != 0) { + if (pAVar3 == NULL || pAVar3->mUnk_3b8.mUnk_00 != 0) { return false; } @@ -187,7 +187,7 @@ ARM void LinkStateItem::func_ov059_021990a4() { if (CHECK_0219b160(data_ov059_0219b180.mUnk_00)) { this->mUnk_38 = gPlayerControl->mAimWorld; - if (pAVar5->mUnk_3c0[0] != 0 && gPlayerControl->UpdateAimWorld(&this->mUnk_38) && pEVar4->GetState() <= 0) { + if (pAVar5->mUnk_3c0 != 0 && gPlayerControl->UpdateAimWorld(&this->mUnk_38) && pEVar4->GetState() <= 0) { pEVar4->func_ov059_02198e90(); if (this->mUnk_25[2] != 0 && this->mUnk_25[3] != 0) { diff --git a/src/Main/System/OverlayManager.cpp b/src/Main/System/OverlayManager.cpp index 3f78516e..a1960e42 100644 --- a/src/Main/System/OverlayManager.cpp +++ b/src/Main/System/OverlayManager.cpp @@ -2,7 +2,7 @@ #include "Game/Game.hpp" #include "Unknown/UnkStruct_020ee698.hpp" #include "global.h" -#include "nds/overlay.h" +#include extern u32 *data_027e0ce0[]; extern "C" void func_ov007_02102850(u32 **); diff --git a/src/Main/Unknown/UnkStruct_02037750.cpp b/src/Main/Unknown/UnkStruct_02037750.cpp index 01ae540e..b5bd2a1a 100644 --- a/src/Main/Unknown/UnkStruct_02037750.cpp +++ b/src/Main/Unknown/UnkStruct_02037750.cpp @@ -2,6 +2,7 @@ #include "Actor/ActorManager.hpp" #include "Item/ItemManager.hpp" #include "Message/MessageManager.hpp" +#include "Player/LinkStateBase.hpp" #include "Save/AdventureFlags.hpp" #include "System/Random.hpp" diff --git a/src/Main/Unknown/UnkStruct_020397f8.cpp b/src/Main/Unknown/UnkStruct_020397f8.cpp index ac295c65..7d593d84 100644 --- a/src/Main/Unknown/UnkStruct_020397f8.cpp +++ b/src/Main/Unknown/UnkStruct_020397f8.cpp @@ -1,6 +1,7 @@ #include "Unknown/UnkStruct_020397f8.hpp" #include "DTCM/UnkStruct_027e0c38.hpp" #include "DTCM/UnkStruct_027e0c54.hpp" +#include "DTCM/UnkStruct_027e0d38.hpp" #include "DTCM/UnkStruct_027e103c.hpp" #include "Game/Game.hpp" #include "Message/MessageManager.hpp"