diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 81862c03..a4f84da8 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -52,7 +52,7 @@ Vec3p_Normalize kind:function(arm,size=0x118) addr:0x01ff9d4c Vec3p_Axpy kind:function(arm,size=0x5c) addr:0x01ff9e64 Vec3p_Distance kind:function(arm,size=0x7c) addr:0x01ff9ec0 func_01ff9f3c kind:function(arm,size=0x1b8) addr:0x01ff9f3c -Atan2 kind:function(arm,size=0x1a8) addr:0x01ffa0f4 +FX_Atan2Idx kind:function(arm,size=0x1a8) addr:0x01ffa0f4 func_01ffa29c kind:function(arm,size=0x40) addr:0x01ffa29c func_01ffa2dc kind:function(arm,size=0x70) addr:0x01ffa2dc func_01ffa34c kind:function(arm,size=0x24) addr:0x01ffa34c @@ -83,7 +83,7 @@ func_01ffbbf8 kind:function(arm,size=0x1d8) addr:0x01ffbbf8 func_01ffbdd0 kind:function(arm,size=0x64) addr:0x01ffbdd0 func_01ffbe34 kind:function(arm,size=0x44) addr:0x01ffbe34 _ZN10MapManager13func_01ffbe78EP5Vec3pS1_S1_P5Vec4p kind:function(arm,size=0xe4) addr:0x01ffbe78 -_ZN10MapManager13func_01ffbf5cEiP5Vec3pS1_i kind:function(arm,size=0x1bc) addr:0x01ffbf5c +_ZN10MapManager13func_01ffbf5cEP9UnkStructP5Vec3pS3_iiiP24UnkStruct_ov000_020beba8i kind:function(arm,size=0x1bc) addr:0x01ffbf5c _ZN10MapManager13func_01ffc118EPiP5Vec3pS2_iS0_jS0_ kind:function(arm,size=0x10c8) addr:0x01ffc118 _ZN10MapManager13func_01ffd1e0EPiP5Vec3pS2_iS0_jS0_ kind:function(arm,size=0xfec) addr:0x01ffd1e0 func_01ffe1cc kind:function(arm,size=0x29c) addr:0x01ffe1cc diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index bc052163..0f389d0e 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -135,7 +135,7 @@ func_ov000_02079ddc kind:function(thumb,size=0x14) addr:0x02079ddc func_ov000_02079df0 kind:function(thumb,size=0x14) addr:0x02079df0 func_ov000_02079e04 kind:function(arm,size=0x38) addr:0x02079e04 func_ov000_02079e3c kind:function(arm,size=0x2c) addr:0x02079e3c -func_ov000_02079e68 kind:function(arm,size=0x4c) addr:0x02079e68 +_ZN18UnkStruct_020e936019func_ov000_02079e68Ei kind:function(arm,size=0x4c) addr:0x02079e68 func_ov000_02079eb4 kind:function(arm,size=0x24) addr:0x02079eb4 func_ov000_02079ed8 kind:function(thumb,size=0x22) addr:0x02079ed8 func_ov000_02079efc kind:function(thumb,size=0x3e) addr:0x02079efc @@ -209,7 +209,7 @@ func_ov000_0207b530 kind:function(thumb,size=0x2c) addr:0x0207b530 func_ov000_0207b55c kind:function(thumb,size=0x60) addr:0x0207b55c func_ov000_0207b5bc kind:function(thumb,size=0x264) addr:0x0207b5bc func_ov000_0207b820 kind:function(arm,size=0x7c) addr:0x0207b820 -func_ov000_0207b89c kind:function(arm,size=0x60) addr:0x0207b89c +_ZN24UnkStruct_ov000_020e9c8819func_ov000_0207b89cEiP5Vec3pPFvPvES2_ kind:function(arm,size=0x60) addr:0x0207b89c func_ov000_0207b8fc kind:function(arm,size=0x10) addr:0x0207b8fc func_ov000_0207b90c kind:function(arm,size=0x7c) addr:0x0207b90c _ZN18UnkStruct_027e0dbc19func_ov000_0207b988Ei kind:function(thumb,size=0x40) addr:0x0207b988 @@ -221,7 +221,7 @@ func_ov000_0207bab4 kind:function(arm,size=0x5c) addr:0x0207bab4 func_ov000_0207bb10 kind:function(arm,size=0x4) addr:0x0207bb10 func_ov000_0207bb14 kind:function(arm,size=0x4) addr:0x0207bb14 func_ov000_0207bb18 kind:function(arm,size=0x4) addr:0x0207bb18 -func_ov000_0207bb1c kind:function(arm,size=0x30) addr:0x0207bb1c +_ZN18UnkStruct_027e0de419func_ov000_0207bb1cEiPFvPvES0_ kind:function(arm,size=0x30) addr:0x0207bb1c func_ov000_0207bb4c kind:function(arm,size=0xfc) addr:0x0207bb4c func_ov000_0207bc48 kind:function(arm,size=0x20) addr:0x0207bc48 func_ov000_0207bc68 kind:function(arm,size=0x14) addr:0x0207bc68 @@ -473,7 +473,7 @@ func_ov000_02081ed4 kind:function(arm,size=0x10) addr:0x02081ed4 func_ov000_02081ee4 kind:function(arm,size=0x10) addr:0x02081ee4 func_ov000_02081ef4 kind:function(arm,size=0x44) addr:0x02081ef4 func_ov000_02081f38 kind:function(arm,size=0x14) addr:0x02081f38 -func_ov000_02081f4c kind:function(arm,size=0x4) addr:0x02081f4c +_ZN24UnkStruct_ov000_020beba8D2Ev kind:function(arm,size=0x4) addr:0x02081f4c func_ov000_02081f50 kind:function(arm,size=0x8) addr:0x02081f50 func_ov000_02081f58 kind:function(arm,size=0x14) addr:0x02081f58 func_ov000_02081f6c kind:function(arm,size=0x4) addr:0x02081f6c @@ -617,7 +617,7 @@ _ZN10MapManager18func_ov00_02083e70EP7TilePos kind:function(arm,size=0x70) addr: _ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x02083ee0 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_b kind:function(arm,size=0x4c) addr:0x02083ef8 _ZN10MapManager18func_ov00_02083f44EP5Vec3pb kind:function(arm,size=0x3c) addr:0x02083f44 -_ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x02083f80 +_ZN10MapManager16MapData_vfunc_6cEP5Vec3pPiS1_ kind:function(arm,size=0x18) addr:0x02083f80 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x02083f98 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x02083fb0 _ZN10MapManager18GetTileWorldBoundsEP7TilePosP4AABB kind:function(arm,size=0x64) addr:0x02084024 @@ -1987,7 +1987,7 @@ _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 -_ZN11ModelRenderC1Ev kind:function(thumb,size=0x1c) addr:0x020a9588 +_ZN11ModelRenderC1Ei 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 @@ -1999,7 +1999,7 @@ _ZN11ModelRender22SetRotationTranslationEP5Mat3pP5Vec3p kind:function(arm,size=0 _ZN11ModelRender14SetTranslationEP5Vec3p kind:function(arm,size=0x24) addr:0x020a9740 _ZN11ModelRender20PushGeometryCommandsEv kind:function(arm,size=0x6c) addr:0x020a9764 _ZN11ModelRender8vfunc_20Ev kind:function(arm,size=0x10) addr:0x020a97d0 -_ZN11ModelRender8vfunc_24Ei kind:function(arm,size=0x18) addr:0x020a97e0 +_ZN11ModelRender8vfunc_24EP24UnkStruct_ov000_020c0c08 kind:function(arm,size=0x18) addr:0x020a97e0 _ZN11ModelRender8vfunc_28Ev kind:function(arm,size=0x6c) addr:0x020a97f8 _ZN11ModelRender8vfunc_2cEv kind:function(arm,size=0x2c) addr:0x020a9864 _ZN11ModelRender8vfunc_34Ev kind:function(arm,size=0x2c) addr:0x020a9890 @@ -2108,10 +2108,10 @@ _ZNK11ItemManager8GetFairyEi kind:function(arm,size=0xc) addr:0x020ad428 _ZN11ItemManager13TickEquipItemEv kind:function(arm,size=0xf4) addr:0x020ad434 _ZN11ItemManager18func_ov00_020ad528Ev kind:function(arm,size=0x4) addr:0x020ad528 _ZN11ItemManager12GetItemModelEj kind:function(arm,size=0xc) addr:0x020ad52c -_ZNK11ItemManager18func_ov00_020ad538Ei kind:function(arm,size=0x28) addr:0x020ad538 -_ZNK11ItemManager18func_ov00_020ad560Ei kind:function(arm,size=0x28) addr:0x020ad560 +_ZNK11ItemManager18func_ov00_020ad538EPK16ItemManager_Unk1 kind:function(arm,size=0x28) addr:0x020ad538 +_ZNK11ItemManager18func_ov00_020ad560EPK16ItemManager_Unk1 kind:function(arm,size=0x28) addr:0x020ad560 _ZN11ItemManager19GetDungeonItemModelEj kind:function(arm,size=0xc) addr:0x020ad588 -_ZNK11ItemManager18func_ov00_020ad594Ei kind:function(arm,size=0x28) addr:0x020ad594 +_ZNK11ItemManager18func_ov00_020ad594EPK16ItemManager_Unk1 kind:function(arm,size=0x28) addr:0x020ad594 _ZN11ItemManager14Sword_vfunc_38Ei kind:function(arm,size=0x1c) addr:0x020ad5bc _ZN11ItemManager15Shield_vfunc_38Ei kind:function(arm,size=0x1c) addr:0x020ad5d8 _ZN11ItemManager18EquipItem_vfunc_38Ei kind:function(arm,size=0x84) addr:0x020ad5f4 @@ -2297,7 +2297,7 @@ func_ov000_020b3f78 kind:function(arm,size=0x84) addr:0x020b3f78 func_ov000_020b3ffc kind:function(arm,size=0x7c) addr:0x020b3ffc func_ov000_020b4078 kind:function(arm,size=0x70) addr:0x020b4078 func_ov000_020b40e8 kind:function(arm,size=0x54) addr:0x020b40e8 -func_ov000_020b413c kind:function(arm,size=0x64) addr:0x020b413c +_ZN11ModelRender19func_ov000_020b413cEsP5Vec3p kind:function(arm,size=0x64) addr:0x020b413c func_ov000_020b41a0 kind:function(arm,size=0x24) addr:0x020b41a0 func_ov000_020b41c4 kind:function(arm,size=0x28) addr:0x020b41c4 func_ov000_020b41ec kind:function(arm,size=0x30) addr:0x020b41ec @@ -2644,12 +2644,12 @@ _ZNK9EquipItem8vfunc_48Eii kind:function(arm,size=0x8) addr:0x020be980 _ZNK9EquipItem8vfunc_4cEv kind:function(arm,size=0x8) addr:0x020be988 _ZN9EquipItem12GetPlayerPosEv kind:function(arm,size=0xc) addr:0x020be990 _ZN9EquipItem19func_ov000_020be99cEP5Vec3p kind:function(arm,size=0x48) addr:0x020be99c -_ZN9EquipItem19func_ov000_020be9e4Eiiis kind:function(arm,size=0x14c) addr:0x020be9e4 +_ZN9EquipItem19func_ov000_020be9e4E5Vec3ps kind:function(arm,size=0x14c) addr:0x020be9e4 _ZNK9EquipItem7GetAmmoEv kind:function(arm,size=0x2c) addr:0x020beb30 _ZN9EquipItem8GiveAmmoEj kind:function(arm,size=0x34) addr:0x020beb5c _ZNK9EquipItem9GetHitboxEP8Cylinder kind:function(arm,size=0x18) addr:0x020beb90 -_ZN24UnkStruct_ov000_020beba8C1Ei kind:function(arm,size=0x18) addr:0x020beba8 -_ZN24UnkStruct_ov000_020beba8C2Ei kind:function(arm,size=0x18) addr:0x020bebc0 +_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_0cEPs kind:function(arm,size=0x84) addr:0x020bec5c _ZN24UnkStruct_ov000_020beba88vfunc_10EPi kind:function(arm,size=0x9c) addr:0x020bece0 @@ -2701,11 +2701,11 @@ _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 -func_ov000_020c0c08 kind:function(thumb,size=0x28) addr:0x020c0c08 +_ZN24UnkStruct_ov000_020c0c08C1EP27UnkStruct_ov000_020c0c08_04Ph 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 -func_ov000_020c0c44 kind:function(arm,size=0x2c) addr:0x020c0c44 +_ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0c44EPv kind:function(arm,size=0x2c) addr:0x020c0c44 func_ov000_020c0c70 kind:function(arm,size=0x2c) addr:0x020c0c70 func_ov000_020c0c9c kind:function(arm,size=0x2c) addr:0x020c0c9c func_ov000_020c0cc8 kind:function(arm,size=0x54) addr:0x020c0cc8 @@ -2715,9 +2715,9 @@ func_ov000_020c0d54 kind:function(arm,size=0x14) addr:0x020c0d54 func_ov000_020c0d68 kind:function(arm,size=0x8) addr:0x020c0d68 func_ov000_020c0d70 kind:function(arm,size=0x24) addr:0x020c0d70 func_ov000_020c0d94 kind:function(arm,size=0x70) addr:0x020c0d94 -func_ov000_020c0e04 kind:function(arm,size=0x20) addr:0x020c0e04 +_ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0e04Ev kind:function(arm,size=0x20) addr:0x020c0e04 func_ov000_020c0e24 kind:function(arm,size=0x38) addr:0x020c0e24 -func_ov000_020c0e5c kind:function(arm,size=0x38) addr:0x020c0e5c +_ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0e5cEi kind:function(arm,size=0x38) addr:0x020c0e5c func_ov000_020c0e94 kind:function(arm,size=0xc) addr:0x020c0e94 func_ov000_020c0ea0 kind:function(arm,size=0x20) addr:0x020c0ea0 func_ov000_020c0ec0 kind:function(arm,size=0xc) addr:0x020c0ec0 diff --git a/config/eur/arm9/overlays/ov005/symbols.txt b/config/eur/arm9/overlays/ov005/symbols.txt index a43ce370..fd0256ba 100644 --- a/config/eur/arm9/overlays/ov005/symbols.txt +++ b/config/eur/arm9/overlays/ov005/symbols.txt @@ -103,7 +103,7 @@ _ZN18UnkStruct_027e103c19func_ov005_021040ecEv kind:function(arm,size=0x28) addr _ZN18UnkStruct_027e103c19func_ov005_02104114Ev kind:function(arm,size=0x28) addr:0x02104114 _ZN18UnkStruct_027e103c19func_ov005_0210413cEv kind:function(arm,size=0x24) addr:0x0210413c _ZN18UnkStruct_027e103c19func_ov005_02104160Ev kind:function(arm,size=0x2c) addr:0x02104160 -_ZN18UnkStruct_027e103c19func_Ov005_0210418cEc kind:function(arm,size=0x38) addr:0x0210418c +_ZN18UnkStruct_027e103c19func_ov005_0210418cEc kind:function(arm,size=0x38) addr:0x0210418c func_ov005_021041c4 kind:function(arm,size=0x38) addr:0x021041c4 func_ov005_021041fc kind:function(arm,size=0x130) addr:0x021041fc func_ov005_0210432c kind:function(arm,size=0x50) addr:0x0210432c diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt index ec7ab67d..a3a2914d 100644 --- a/config/eur/arm9/overlays/ov014/symbols.txt +++ b/config/eur/arm9/overlays/ov014/symbols.txt @@ -101,7 +101,7 @@ _ZN9ActorRope19func_ov014_02123e48Ei kind:function(arm,size=0xbc) addr:0x02123e4 _ZN9ActorRope8vfunc_20Eb kind:function(arm,size=0xec) addr:0x02123f04 _ZN9ActorRope8vfunc_10Ej kind:function(thumb,size=0x12) addr:0x02123ff0 func_ov014_02124004 kind:function(arm,size=0x30) addr:0x02124004 -func_ov014_02124034 kind:function(arm,size=0xc) addr:0x02124034 +_ZN24UnkStruct_ov000_020beba819func_ov014_02124034EP27UnkStruct_ov000_020beba8_08 kind:function(arm,size=0xc) addr:0x02124034 func_ov014_02124040 kind:function(arm,size=0xdc) addr:0x02124040 func_ov014_0212411c kind:function(arm,size=0xc) addr:0x0212411c func_ov014_02124128 kind:function(arm,size=0x11c) addr:0x02124128 @@ -920,7 +920,7 @@ _ZN12EquipBombchu19func_ov014_0213ec40Ev kind:function(arm,size=0x24) addr:0x021 _ZN12EquipBombchu19func_ov014_0213ec64Ev kind:function(arm,size=0x48) addr:0x0213ec64 _ZNK12EquipBombchu5GetIdEv kind:function(arm,size=0x8) addr:0x0213ecac _ZN12EquipBombchu8vfunc_34EPs kind:function(arm,size=0xc0) addr:0x0213ecb4 -_ZN12EquipBombchu19func_ov014_0213ed74Ev kind:function(arm,size=0x20) addr:0x0213ed74 +_ZNK12EquipBombchu19func_ov014_0213ed74Ev kind:function(arm,size=0x20) addr:0x0213ed74 _ZN12EquipBombchu19func_ov014_0213ed94Ei kind:function(arm,size=0xc) addr:0x0213ed94 _ZN12EquipBombchu19func_ov014_0213eda0Ev kind:function(thumb,size=0x1e) addr:0x0213eda0 _ZN11EquipHammerC2Ev kind:function(thumb,size=0x24) addr:0x0213edc0 diff --git a/config/eur/arm9/overlays/ov058/delinks.txt b/config/eur/arm9/overlays/ov058/delinks.txt index f53e0902..4c61bff7 100644 --- a/config/eur/arm9/overlays/ov058/delinks.txt +++ b/config/eur/arm9/overlays/ov058/delinks.txt @@ -5,3 +5,10 @@ .data start:0x0219aea0 end:0x0219afc0 kind:data align:32 .bss start:0x0219afc0 end:0x0219b120 kind:bss align:32 +src/58_Bombchu/Player/EquipBombchu.cpp: + .text start:0x02198d00 end:0x0219a454 + .rodata start:0x0219ad68 end:0x0219ad80 + .init start:0x0219ad80 end:0x0219ae7c + .ctor start:0x0219ae7c end:0x0219ae80 + .data start:0x0219aea0 end:0x0219af18 + .bss start:0x0219afc0 end:0x0219b120 diff --git a/config/eur/arm9/overlays/ov058/relocs.txt b/config/eur/arm9/overlays/ov058/relocs.txt index b7a7b6ee..94594004 100644 --- a/config/eur/arm9/overlays/ov058/relocs.txt +++ b/config/eur/arm9/overlays/ov058/relocs.txt @@ -27,13 +27,13 @@ from:0x02199012 kind:thumb_call_arm to:0x020a97e0 module:overlay(0) from:0x02199020 kind:load to:0x027e0fb4 module:dtcm from:0x02199024 kind:load to:0x0219afcc module:overlay(58) from:0x02199028 kind:load to:0x0219b034 module:overlay(58) -from:0x0219902c kind:load to:0x0219b040 module:overlay(58) +from:0x0219902c kind:load to:0x0219b034 add:0xc module:overlay(58) from:0x02199030 kind:load to:0x0219ad68 module:overlay(58) from:0x02199034 kind:load to:0x0219b0a0 module:overlay(58) -from:0x02199038 kind:load to:0x0219b080 module:overlay(58) +from:0x02199038 kind:load to:0x0219b034 add:0x4c module:overlay(58) from:0x02199052 kind:thumb_call to:0x0213eda0 module:overlay(14) from:0x02199058 kind:thumb_call_arm to:0x0213ec64 module:overlay(14) -from:0x02199068 kind:load to:0x0219b080 module:overlay(58) +from:0x02199068 kind:load to:0x0219b034 add:0x4c module:overlay(58) from:0x02199082 kind:thumb_call_arm to:0x020b11dc module:overlay(0) from:0x021990aa kind:thumb_call_arm to:0x0210418c module:overlay(5) from:0x021990be kind:thumb_call_arm to:0x020c0e04 module:overlay(0) @@ -58,7 +58,7 @@ from:0x021991f8 kind:thumb_call_arm to:0x0207bb1c module:overlay(0) from:0x02199204 kind:load to:0x0219afcc module:overlay(58) from:0x02199208 kind:load to:0x020e9c88 module:overlay(0) from:0x0219920c kind:load to:0x02199221 module:overlay(58) -from:0x02199210 kind:load to:0x0219b080 module:overlay(58) +from:0x02199210 kind:load to:0x0219b034 add:0x4c module:overlay(58) from:0x02199214 kind:load to:0x027e077c module:dtcm from:0x02199218 kind:load to:0x027e0de4 module:dtcm from:0x0219921c kind:load to:0x02199265 module:overlay(58) @@ -134,9 +134,9 @@ from:0x02199aa6 kind:thumb_call_arm to:0x01ffbe78 module:itcm from:0x02199ac6 kind:thumb_call_arm to:0x02083a1c module:overlay(0) from:0x02199b2a kind:thumb_call_arm to:0x02083c7c module:overlay(0) from:0x02199b44 kind:load to:0x027e0e60 module:dtcm -from:0x02199b4c kind:load to:0x0219b100 module:overlay(58) +from:0x02199b4c kind:load to:0x0219b0f0 add:0x10 module:overlay(58) from:0x02199b50 kind:load to:0x0219b0f0 module:overlay(58) -from:0x02199b54 kind:load to:0x0219b0c0 module:overlay(58) +from:0x02199b54 kind:load to:0x0219b0a0 add:0x20 module:overlay(58) from:0x02199b6a kind:thumb_call_arm to:0x02083a1c module:overlay(0) from:0x02199bd0 kind:thumb_call_arm to:0x02083c7c module:overlay(0) from:0x02199bfe kind:thumb_call_arm to:0x02083ee0 module:overlay(0) diff --git a/config/eur/arm9/overlays/ov058/symbols.txt b/config/eur/arm9/overlays/ov058/symbols.txt index 36785ef8..7e6854b4 100644 --- a/config/eur/arm9/overlays/ov058/symbols.txt +++ b/config/eur/arm9/overlays/ov058/symbols.txt @@ -1,27 +1,27 @@ -_ZN25EquipBombchu_Unk_02198d008vfunc_08EPs kind:function(arm,size=0x1f4) addr:0x02198d00 -_Z19func_ov058_02198ef4v kind:function(arm,size=0x4) addr:0x02198ef4 -_Z19func_ov058_02198ef8v kind:function(arm,size=0x4) addr:0x02198ef8 -_ZN25EquipBombchu_Unk_02198d008vfunc_14EPt kind:function(arm,size=0x78) addr:0x02198efc +_ZN25EquipBombchu_Unk_02198d008vfunc_08EP27UnkStruct_ov000_020beba8_08 kind:function(arm,size=0x1f4) addr:0x02198d00 +_ZN24UnkStruct_027e0f6c_Unk_1D1Ev kind:function(arm,size=0x4) addr:0x02198ef4 +_ZN24UnkStruct_027e0f6c_Unk_1C1Ev kind:function(arm,size=0x4) addr:0x02198ef8 +_ZN25EquipBombchu_Unk_02198d008vfunc_14EPti kind:function(arm,size=0x78) addr:0x02198efc _ZN25EquipBombchu_Unk_02198d008vfunc_10EPi kind:function(arm,size=0x4c) addr:0x02198f74 _ZN12EquipBombchu8vfunc_00Ev kind:function(thumb,size=0x7c) addr:0x02198fc0 _ZN12EquipBombchu8vfunc_18Ev kind:function(thumb,size=0x22) addr:0x0219903c _ZN12EquipBombchu8vfunc_1cEv kind:function(thumb,size=0xc) addr:0x02199060 _ZN12EquipBombchu8vfunc_30Ev kind:function(thumb,size=0x104) addr:0x0219906c _ZN12EquipBombchu8vfunc_38Ei kind:function(thumb,size=0xb0) addr:0x02199170 -_ZN12EquipBombchu19func_ov058_02199220Ev kind:function(thumb,size=0x8) addr:0x02199220 +_Z19func_ov058_02199220P12EquipBombchu kind:function(thumb,size=0x8) addr:0x02199220 _ZN12EquipBombchu19func_ov058_02199228Ev kind:function(thumb,size=0x3c) addr:0x02199228 -_ZN12EquipBombchu19func_ov058_02199264Ev kind:function(thumb,size=0x8) addr:0x02199264 +_Z19func_ov058_02199264P12EquipBombchu kind:function(thumb,size=0x8) addr:0x02199264 _ZN12EquipBombchu19func_ov058_0219926cEv kind:function(thumb,size=0x18) addr:0x0219926c _ZNK12EquipBombchu8IsUsableEi kind:function(arm,size=0x40) addr:0x02199284 _ZNK12EquipBombchu11CheckUsableEi kind:function(arm,size=0x13c) addr:0x021992c4 _ZN12EquipBombchu19func_ov058_02199400Ev kind:function(thumb,size=0x98) addr:0x02199400 _ZN12EquipBombchu19func_ov058_02199498EP5Vec3p kind:function(thumb,size=0xa58) addr:0x02199498 -_ZN12EquipBombchu19func_ov058_02199ef0Es kind:function(arm,size=0xe8) addr:0x02199ef0 -_ZN12EquipBombchu19func_ov058_02199fd8Ej kind:function(arm,size=0xac) addr:0x02199fd8 -_ZN12EquipBombchu19func_ov058_0219a084Es kind:function(arm,size=0x330) addr:0x0219a084 -_ZN12EquipBombchu19func_ov058_0219a3b4Es kind:function(arm,size=0x70) addr:0x0219a3b4 -_ZN25EquipBombchu_Unk_02198d00D1Ev kind:function(arm,size=0x1c) addr:0x0219a424 -_ZN25EquipBombchu_Unk_02198d00D0Ev kind:function(arm,size=0x14) addr:0x0219a440 +_ZN12EquipBombchu19func_ov058_02199ef0E7TilePos kind:function(arm,size=0xe8) addr:0x02199ef0 +_ZN12EquipBombchu19func_ov058_02199fd8E7TilePos kind:function(arm,size=0xac) addr:0x02199fd8 +_ZN12EquipBombchu19func_ov058_0219a084E7TilePos kind:function(arm,size=0x330) addr:0x0219a084 +_ZN12EquipBombchu19func_ov058_0219a3b4E7TilePos kind:function(arm,size=0x70) addr:0x0219a3b4 +_ZN25EquipBombchu_Unk_02198d00D0Ev kind:function(arm,size=0x1c) addr:0x0219a424 +_ZN25EquipBombchu_Unk_02198d00D1Ev kind:function(arm,size=0x14) addr:0x0219a440 _ZN13LinkStateItem19func_ov058_0219a454Ev kind:function(arm,size=0x28) addr:0x0219a454 _ZN13LinkStateItem19func_ov058_0219a47cEv kind:function(arm,size=0x13c) addr:0x0219a47c _Z15GetEquipBombchuv kind:function(arm,size=0x10) addr:0x0219a5b8 local @@ -34,7 +34,7 @@ func_ov058_0219aad0 kind:function(arm,size=0x58) addr:0x0219aad0 func_ov058_0219ab28 kind:function(thumb,size=0x184) addr:0x0219ab28 func_ov058_0219acac kind:function(thumb,size=0x88) addr:0x0219acac func_ov058_0219ad34 kind:function(thumb,size=0x32) addr:0x0219ad34 -data_ov058_0219ad68 kind:data(any) addr:0x0219ad68 +sEquipBombchu_Unk1 kind:data(any) addr:0x0219ad68 local __sinit_EquipBombchu.cpp kind:function(arm,size=0xfc) addr:0x0219ad80 .p__sinit_ov058_0219ad80 kind:data(word) addr:0x0219ae7c data_ov058_0219aea0 kind:data(any) addr:0x0219aea0 @@ -70,12 +70,10 @@ data_ov058_0219afb0 kind:data(any) addr:0x0219afb0 _ZN12EquipBombchu19gModelRenderBombchuE kind:bss addr:0x0219afcc @912 kind:bss addr:0x0219b028 _ZN12EquipBombchu21gModelRenderBombchuPtE kind:bss addr:0x0219b034 -data_ov058_0219b040 kind:bss addr:0x0219b040 -data_ov058_0219b080 kind:bss addr:0x0219b080 -data_ov058_0219b094 kind:bss addr:0x0219b094 +data_ov058_0219b090 kind:bss(size=0x2) addr:0x0219b090 +@1716 kind:bss addr:0x0219b094 data_ov058_0219b0a0 kind:bss addr:0x0219b0a0 -data_ov058_0219b0c0 kind:bss addr:0x0219b0c0 data_ov058_0219b0c4 kind:bss addr:0x0219b0c4 @913 kind:bss addr:0x0219b0e4 sUnk_02198d00 kind:bss addr:0x0219b0f0 -data_ov058_0219b100 kind:bss addr:0x0219b100 +data_ov058_0219b110 kind:bss(size=0x2) addr:0x0219b110 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 24266d0b..74b55101 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -69,7 +69,7 @@ func_02003624 kind:function(arm,size=0x68) addr:0x02003624 func_0200368c kind:function(arm,size=0x12c) addr:0x0200368c func_020037b8 kind:function(arm,size=0xd0) addr:0x020037b8 func_02003888 kind:function(arm,size=0x4) addr:0x02003888 -func_0200388c kind:function(arm,size=0x18) addr:0x0200388c +FX_Mul kind:function(arm,size=0x18) addr:0x0200388c func_020038a4 kind:function(arm,size=0x3c) addr:0x020038a4 func_020038e0 kind:function(thumb,size=0xd0) addr:0x020038e0 func_020039b0 kind:function(arm,size=0x34) addr:0x020039b0 @@ -2478,7 +2478,7 @@ __sinit_02050eb8 kind:function(arm,size=0x2c) addr:0x02050eb8 __sinit_02050ee4 kind:function(arm,size=0x1c) addr:0x02050ee4 __sinit_02050f00 kind:function(arm,size=0x40) addr:0x02050f00 __sinit_02050f40 kind:function(arm,size=0x14) addr:0x02050f40 -gSinCosTable kind:data(any) addr:0x02050f54 +FX_SinCosTable_ kind:data(any) addr:0x02050f54 data_02051054 kind:data(any) addr:0x02051054 data_02051154 kind:data(any) addr:0x02051154 data_02051254 kind:data(any) addr:0x02051254 @@ -2492,7 +2492,7 @@ data_02054954 kind:data(any) addr:0x02054954 data_02054b54 kind:data(any) addr:0x02054b54 data_02054e54 kind:data(any) addr:0x02054e54 gAngToRadTable kind:data(any) addr:0x02054f54 -gAtan2Table kind:data(any) addr:0x02055058 +FX_AtanIdxTable_ kind:data(any) addr:0x02055058 data_0205515c kind:data(any) addr:0x0205515c data_0205516c kind:data(any) addr:0x0205516c data_0205516e kind:data(any) addr:0x0205516e diff --git a/config/usa/arm9/itcm/symbols.txt b/config/usa/arm9/itcm/symbols.txt index 81862c03..a4f84da8 100644 --- a/config/usa/arm9/itcm/symbols.txt +++ b/config/usa/arm9/itcm/symbols.txt @@ -52,7 +52,7 @@ Vec3p_Normalize kind:function(arm,size=0x118) addr:0x01ff9d4c Vec3p_Axpy kind:function(arm,size=0x5c) addr:0x01ff9e64 Vec3p_Distance kind:function(arm,size=0x7c) addr:0x01ff9ec0 func_01ff9f3c kind:function(arm,size=0x1b8) addr:0x01ff9f3c -Atan2 kind:function(arm,size=0x1a8) addr:0x01ffa0f4 +FX_Atan2Idx kind:function(arm,size=0x1a8) addr:0x01ffa0f4 func_01ffa29c kind:function(arm,size=0x40) addr:0x01ffa29c func_01ffa2dc kind:function(arm,size=0x70) addr:0x01ffa2dc func_01ffa34c kind:function(arm,size=0x24) addr:0x01ffa34c @@ -83,7 +83,7 @@ func_01ffbbf8 kind:function(arm,size=0x1d8) addr:0x01ffbbf8 func_01ffbdd0 kind:function(arm,size=0x64) addr:0x01ffbdd0 func_01ffbe34 kind:function(arm,size=0x44) addr:0x01ffbe34 _ZN10MapManager13func_01ffbe78EP5Vec3pS1_S1_P5Vec4p kind:function(arm,size=0xe4) addr:0x01ffbe78 -_ZN10MapManager13func_01ffbf5cEiP5Vec3pS1_i kind:function(arm,size=0x1bc) addr:0x01ffbf5c +_ZN10MapManager13func_01ffbf5cEP9UnkStructP5Vec3pS3_iiiP24UnkStruct_ov000_020beba8i kind:function(arm,size=0x1bc) addr:0x01ffbf5c _ZN10MapManager13func_01ffc118EPiP5Vec3pS2_iS0_jS0_ kind:function(arm,size=0x10c8) addr:0x01ffc118 _ZN10MapManager13func_01ffd1e0EPiP5Vec3pS2_iS0_jS0_ kind:function(arm,size=0xfec) addr:0x01ffd1e0 func_01ffe1cc kind:function(arm,size=0x29c) addr:0x01ffe1cc diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 066e5b8d..07fb0761 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -135,7 +135,7 @@ func_ov000_02079ddc kind:function(thumb,size=0x14) addr:0x02079d7c func_ov000_02079df0 kind:function(thumb,size=0x14) addr:0x02079d90 func_ov000_02079e04 kind:function(arm,size=0x38) addr:0x02079da4 func_ov000_02079e3c kind:function(arm,size=0x2c) addr:0x02079ddc -func_ov000_02079e68 kind:function(arm,size=0x4c) addr:0x02079e08 +_ZN18UnkStruct_020e936019func_ov000_02079e68Ei kind:function(arm,size=0x4c) addr:0x02079e08 func_ov000_02079eb4 kind:function(arm,size=0x24) addr:0x02079e54 func_ov000_02079ed8 kind:function(thumb,size=0x22) addr:0x02079e78 func_ov000_02079efc kind:function(thumb,size=0x3e) addr:0x02079e9c @@ -209,7 +209,7 @@ func_ov000_0207b530 kind:function(thumb,size=0x2c) addr:0x0207b4d0 func_ov000_0207b55c kind:function(thumb,size=0x60) addr:0x0207b4fc func_ov000_0207b5bc kind:function(thumb,size=0x264) addr:0x0207b55c func_ov000_0207b820 kind:function(arm,size=0x7c) addr:0x0207b7c0 -func_ov000_0207b89c kind:function(arm,size=0x60) addr:0x0207b83c +_ZN24UnkStruct_ov000_020e9c8819func_ov000_0207b89cEiP5Vec3pPFvPvES2_ kind:function(arm,size=0x60) addr:0x0207b83c func_ov000_0207b8fc kind:function(arm,size=0x10) addr:0x0207b89c func_ov000_0207b90c kind:function(arm,size=0x7c) addr:0x0207b8ac _ZN18UnkStruct_027e0dbc19func_ov000_0207b988Ei kind:function(thumb,size=0x40) addr:0x0207b928 @@ -221,7 +221,7 @@ func_ov000_0207bab4 kind:function(arm,size=0x5c) addr:0x0207ba54 func_ov000_0207bb10 kind:function(arm,size=0x4) addr:0x0207bab0 func_ov000_0207bb14 kind:function(arm,size=0x4) addr:0x0207bab4 func_ov000_0207bb18 kind:function(arm,size=0x4) addr:0x0207bab8 -func_ov000_0207bb1c kind:function(arm,size=0x30) addr:0x0207babc +_ZN18UnkStruct_027e0de419func_ov000_0207bb1cEiPFvPvES0_ kind:function(arm,size=0x30) addr:0x0207babc func_ov000_0207bb4c kind:function(arm,size=0xfc) addr:0x0207baec func_ov000_0207bc48 kind:function(arm,size=0x20) addr:0x0207bbe8 func_ov000_0207bc68 kind:function(arm,size=0x14) addr:0x0207bc08 @@ -473,7 +473,7 @@ func_ov000_02081ed4 kind:function(arm,size=0x10) addr:0x02081e74 func_ov000_02081ee4 kind:function(arm,size=0x10) addr:0x02081e84 func_ov000_02081ef4 kind:function(arm,size=0x44) addr:0x02081e94 func_ov000_02081f38 kind:function(arm,size=0x14) addr:0x02081ed8 -func_ov000_02081f4c kind:function(arm,size=0x4) addr:0x02081eec +_ZN24UnkStruct_ov000_020beba8D2Ev kind:function(arm,size=0x4) addr:0x02081eec func_ov000_02081f50 kind:function(arm,size=0x8) addr:0x02081ef0 func_ov000_02081f58 kind:function(arm,size=0x14) addr:0x02081ef8 func_ov000_02081f6c kind:function(arm,size=0x4) addr:0x02081f0c @@ -617,7 +617,7 @@ _ZN10MapManager18func_ov00_02083e70EP7TilePos kind:function(arm,size=0x70) addr: _ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x02083e80 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_b kind:function(arm,size=0x4c) addr:0x02083e98 _ZN10MapManager18func_ov00_02083f44EP5Vec3pb kind:function(arm,size=0x3c) addr:0x02083ee4 -_ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x02083f20 +_ZN10MapManager16MapData_vfunc_6cEP5Vec3pPiS1_ kind:function(arm,size=0x18) addr:0x02083f20 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x02083f38 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x02083f50 _ZN10MapManager18GetTileWorldBoundsEP7TilePosP4AABB kind:function(arm,size=0x64) addr:0x02083fc4 @@ -1987,7 +1987,7 @@ _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 -_ZN11ModelRenderC1Ev kind:function(thumb,size=0x1c) addr:0x020a9528 +_ZN11ModelRenderC1Ei 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 @@ -1999,7 +1999,7 @@ _ZN11ModelRender22SetRotationTranslationEP5Mat3pP5Vec3p kind:function(arm,size=0 _ZN11ModelRender14SetTranslationEP5Vec3p kind:function(arm,size=0x24) addr:0x020a96e0 _ZN11ModelRender20PushGeometryCommandsEv kind:function(arm,size=0x6c) addr:0x020a9704 _ZN11ModelRender8vfunc_20Ev kind:function(arm,size=0x10) addr:0x020a9770 -_ZN11ModelRender8vfunc_24Ei kind:function(arm,size=0x18) addr:0x020a9780 +_ZN11ModelRender8vfunc_24EP24UnkStruct_ov000_020c0c08 kind:function(arm,size=0x18) addr:0x020a9780 _ZN11ModelRender8vfunc_28Ev kind:function(arm,size=0x6c) addr:0x020a9798 _ZN11ModelRender8vfunc_2cEv kind:function(arm,size=0x2c) addr:0x020a9804 _ZN11ModelRender8vfunc_34Ev kind:function(arm,size=0x2c) addr:0x020a9830 @@ -2108,10 +2108,10 @@ _ZNK11ItemManager8GetFairyEi kind:function(arm,size=0xc) addr:0x020ad3c8 _ZN11ItemManager13TickEquipItemEv kind:function(arm,size=0xf4) addr:0x020ad3d4 _ZN11ItemManager18func_ov00_020ad528Ev kind:function(arm,size=0x4) addr:0x020ad4c8 _ZN11ItemManager12GetItemModelEj kind:function(arm,size=0xc) addr:0x020ad4cc -_ZNK11ItemManager18func_ov00_020ad538Ei kind:function(arm,size=0x28) addr:0x020ad4d8 -_ZNK11ItemManager18func_ov00_020ad560Ei kind:function(arm,size=0x28) addr:0x020ad500 +_ZNK11ItemManager18func_ov00_020ad538EPK16ItemManager_Unk1 kind:function(arm,size=0x28) addr:0x020ad4d8 +_ZNK11ItemManager18func_ov00_020ad560EPK16ItemManager_Unk1 kind:function(arm,size=0x28) addr:0x020ad500 _ZN11ItemManager19GetDungeonItemModelEj kind:function(arm,size=0xc) addr:0x020ad528 -_ZNK11ItemManager18func_ov00_020ad594Ei kind:function(arm,size=0x28) addr:0x020ad534 +_ZNK11ItemManager18func_ov00_020ad594EPK16ItemManager_Unk1 kind:function(arm,size=0x28) addr:0x020ad534 _ZN11ItemManager14Sword_vfunc_38Ei kind:function(arm,size=0x1c) addr:0x020ad55c _ZN11ItemManager15Shield_vfunc_38Ei kind:function(arm,size=0x1c) addr:0x020ad578 _ZN11ItemManager18EquipItem_vfunc_38Ei kind:function(arm,size=0x84) addr:0x020ad594 @@ -2297,7 +2297,7 @@ func_ov000_020b3f78 kind:function(arm,size=0x84) addr:0x020b3f18 func_ov000_020b3ffc kind:function(arm,size=0x7c) addr:0x020b3f9c func_ov000_020b4078 kind:function(arm,size=0x70) addr:0x020b4018 func_ov000_020b40e8 kind:function(arm,size=0x54) addr:0x020b4088 -func_ov000_020b413c kind:function(arm,size=0x64) addr:0x020b40dc +_ZN11ModelRender19func_ov000_020b413cEsP5Vec3p kind:function(arm,size=0x64) addr:0x020b40dc func_ov000_020b41a0 kind:function(arm,size=0x24) addr:0x020b4140 func_ov000_020b41c4 kind:function(arm,size=0x28) addr:0x020b4164 func_ov000_020b41ec kind:function(arm,size=0x30) addr:0x020b418c @@ -2644,12 +2644,12 @@ _ZNK9EquipItem8vfunc_48Eii kind:function(arm,size=0x8) addr:0x020be920 _ZNK9EquipItem8vfunc_4cEv kind:function(arm,size=0x8) addr:0x020be928 _ZN9EquipItem12GetPlayerPosEv kind:function(arm,size=0xc) addr:0x020be930 _ZN9EquipItem19func_ov000_020be99cEP5Vec3p kind:function(arm,size=0x48) addr:0x020be93c -_ZN9EquipItem19func_ov000_020be9e4Eiiis kind:function(arm,size=0x14c) addr:0x020be984 +_ZN9EquipItem19func_ov000_020be9e4E5Vec3ps kind:function(arm,size=0x14c) addr:0x020be984 _ZNK9EquipItem7GetAmmoEv kind:function(arm,size=0x2c) addr:0x020bead0 _ZN9EquipItem8GiveAmmoEj kind:function(arm,size=0x34) addr:0x020beafc _ZNK9EquipItem9GetHitboxEP8Cylinder kind:function(arm,size=0x18) addr:0x020beb30 -_ZN24UnkStruct_ov000_020beba8C1Ei kind:function(arm,size=0x18) addr:0x020beb48 -_ZN24UnkStruct_ov000_020beba8C2Ei kind:function(arm,size=0x18) addr:0x020beb60 +_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_0cEPs kind:function(arm,size=0x84) addr:0x020bebfc _ZN24UnkStruct_ov000_020beba88vfunc_10EPi kind:function(arm,size=0x9c) addr:0x020bec80 @@ -2701,11 +2701,11 @@ _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 -func_ov000_020c0c08 kind:function(thumb,size=0x28) addr:0x020c0ba8 +_ZN24UnkStruct_ov000_020c0c08C1EP27UnkStruct_ov000_020c0c08_04Ph 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 -func_ov000_020c0c44 kind:function(arm,size=0x2c) addr:0x020c0be4 +_ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0c44EPv kind:function(arm,size=0x2c) addr:0x020c0be4 func_ov000_020c0c70 kind:function(arm,size=0x2c) addr:0x020c0c10 func_ov000_020c0c9c kind:function(arm,size=0x2c) addr:0x020c0c3c func_ov000_020c0cc8 kind:function(arm,size=0x54) addr:0x020c0c68 @@ -2715,9 +2715,9 @@ func_ov000_020c0d54 kind:function(arm,size=0x14) addr:0x020c0cf4 func_ov000_020c0d68 kind:function(arm,size=0x8) addr:0x020c0d08 func_ov000_020c0d70 kind:function(arm,size=0x24) addr:0x020c0d10 func_ov000_020c0d94 kind:function(arm,size=0x70) addr:0x020c0d34 -func_ov000_020c0e04 kind:function(arm,size=0x20) addr:0x020c0da4 +_ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0e04Ev kind:function(arm,size=0x20) addr:0x020c0da4 func_ov000_020c0e24 kind:function(arm,size=0x38) addr:0x020c0dc4 -func_ov000_020c0e5c kind:function(arm,size=0x38) addr:0x020c0dfc +_ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0e5cEi kind:function(arm,size=0x38) addr:0x020c0dfc func_ov000_020c0e94 kind:function(arm,size=0xc) addr:0x020c0e34 func_ov000_020c0ea0 kind:function(arm,size=0x20) addr:0x020c0e40 func_ov000_020c0ec0 kind:function(arm,size=0xc) addr:0x020c0e60 diff --git a/config/usa/arm9/overlays/ov005/symbols.txt b/config/usa/arm9/overlays/ov005/symbols.txt index 8489ae26..5b9e26d6 100644 --- a/config/usa/arm9/overlays/ov005/symbols.txt +++ b/config/usa/arm9/overlays/ov005/symbols.txt @@ -103,7 +103,7 @@ _ZN18UnkStruct_027e103c19func_ov005_021040ecEv kind:function(arm,size=0x28) addr _ZN18UnkStruct_027e103c19func_ov005_02104114Ev kind:function(arm,size=0x28) addr:0x02104094 _ZN18UnkStruct_027e103c19func_ov005_0210413cEv kind:function(arm,size=0x24) addr:0x021040bc _ZN18UnkStruct_027e103c19func_ov005_02104160Ev kind:function(arm,size=0x2c) addr:0x021040e0 -_ZN18UnkStruct_027e103c19func_Ov005_0210418cEc kind:function(arm,size=0x38) addr:0x0210410c +_ZN18UnkStruct_027e103c19func_ov005_0210418cEc kind:function(arm,size=0x38) addr:0x0210410c func_ov005_021041c4 kind:function(arm,size=0x38) addr:0x02104144 func_ov005_021041fc kind:function(arm,size=0x130) addr:0x0210417c func_ov005_0210432c kind:function(arm,size=0x50) addr:0x021042ac diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt index 05811477..f2db3d32 100644 --- a/config/usa/arm9/overlays/ov014/symbols.txt +++ b/config/usa/arm9/overlays/ov014/symbols.txt @@ -101,7 +101,7 @@ _ZN9ActorRope19func_ov014_02123e48Ei kind:function(arm,size=0xbc) addr:0x02123dc _ZN9ActorRope8vfunc_20Eb kind:function(arm,size=0xec) addr:0x02123e84 _ZN9ActorRope8vfunc_10Ej kind:function(thumb,size=0x12) addr:0x02123f70 func_ov014_02124004 kind:function(arm,size=0x30) addr:0x02123f84 -func_ov014_02124034 kind:function(arm,size=0xc) addr:0x02123fb4 +_ZN24UnkStruct_ov000_020beba819func_ov014_02124034EP27UnkStruct_ov000_020beba8_08 kind:function(arm,size=0xc) addr:0x02123fb4 func_ov014_02124040 kind:function(arm,size=0xdc) addr:0x02123fc0 func_ov014_0212411c kind:function(arm,size=0xc) addr:0x0212409c func_ov014_02124128 kind:function(arm,size=0x11c) addr:0x021240a8 @@ -920,7 +920,7 @@ _ZN12EquipBombchu19func_ov014_0213ec40Ev kind:function(arm,size=0x24) addr:0x021 _ZN12EquipBombchu19func_ov014_0213ec64Ev kind:function(arm,size=0x48) addr:0x0213ebc0 _ZNK12EquipBombchu5GetIdEv kind:function(arm,size=0x8) addr:0x0213ec08 _ZN12EquipBombchu8vfunc_34EPs kind:function(arm,size=0xc0) addr:0x0213ec10 -_ZN12EquipBombchu19func_ov014_0213ed74Ev kind:function(arm,size=0x20) addr:0x0213ecd0 +_ZNK12EquipBombchu19func_ov014_0213ed74Ev kind:function(arm,size=0x20) addr:0x0213ecd0 _ZN12EquipBombchu19func_ov014_0213ed94Ei kind:function(arm,size=0xc) addr:0x0213ecf0 _ZN12EquipBombchu19func_ov014_0213eda0Ev kind:function(thumb,size=0x1e) addr:0x0213ecfc _ZN11EquipHammerC2Ev kind:function(thumb,size=0x24) addr:0x0213ed1c diff --git a/config/usa/arm9/overlays/ov058/delinks.txt b/config/usa/arm9/overlays/ov058/delinks.txt index d3d63fe3..83beb2a6 100644 --- a/config/usa/arm9/overlays/ov058/delinks.txt +++ b/config/usa/arm9/overlays/ov058/delinks.txt @@ -5,3 +5,10 @@ .data start:0x0219ae00 end:0x0219af20 kind:data align:32 .bss start:0x0219af20 end:0x0219b080 kind:bss align:32 +src/58_Bombchu/Player/EquipBombchu.cpp: + .text start:0x02198c60 end:0x0219a3b4 + .rodata start:0x0219acc8 end:0x0219ace0 + .init start:0x0219ace0 end:0x0219addc + .ctor start:0x0219addc end:0x0219ade4 + .data start:0x0219ae00 end:0x0219ae78 + .bss start:0x0219af20 end:0x0219b080 diff --git a/config/usa/arm9/overlays/ov058/relocs.txt b/config/usa/arm9/overlays/ov058/relocs.txt index 108c48f9..a387164d 100644 --- a/config/usa/arm9/overlays/ov058/relocs.txt +++ b/config/usa/arm9/overlays/ov058/relocs.txt @@ -27,13 +27,13 @@ from:0x02198f72 kind:thumb_call_arm to:0x020a9780 module:overlay(0) from:0x02198f80 kind:load to:0x027e0fb4 module:dtcm from:0x02198f84 kind:load to:0x0219af2c module:overlay(58) from:0x02198f88 kind:load to:0x0219af94 module:overlay(58) -from:0x02198f8c kind:load to:0x0219afa0 module:overlay(58) +from:0x02198f8c kind:load to:0x0219af94 add:0xc module:overlay(58) from:0x02198f90 kind:load to:0x0219acc8 module:overlay(58) from:0x02198f94 kind:load to:0x0219b000 module:overlay(58) -from:0x02198f98 kind:load to:0x0219afe0 module:overlay(58) +from:0x02198f98 kind:load to:0x0219af94 add:0x4c module:overlay(58) from:0x02198fb2 kind:thumb_call to:0x0213ecfc module:overlay(14) from:0x02198fb8 kind:thumb_call_arm to:0x0213ebc0 module:overlays(14,61) -from:0x02198fc8 kind:load to:0x0219afe0 module:overlay(58) +from:0x02198fc8 kind:load to:0x0219af94 add:0x4c module:overlay(58) from:0x02198fe2 kind:thumb_call_arm to:0x020b117c module:overlay(0) from:0x0219900a kind:thumb_call_arm to:0x0210410c module:overlay(5) from:0x0219901e kind:thumb_call_arm to:0x020c0da4 module:overlay(0) @@ -58,7 +58,7 @@ from:0x02199158 kind:thumb_call_arm to:0x0207babc module:overlay(0) from:0x02199164 kind:load to:0x0219af2c module:overlay(58) from:0x02199168 kind:load to:0x020e9c28 module:overlay(0) from:0x0219916c kind:load to:0x02199181 module:overlay(58) -from:0x02199170 kind:load to:0x0219afe0 module:overlay(58) +from:0x02199170 kind:load to:0x0219af94 add:0x4c module:overlay(58) from:0x02199174 kind:load to:0x027e077c module:dtcm from:0x02199178 kind:load to:0x027e0de4 module:dtcm from:0x0219917c kind:load to:0x021991c5 module:overlay(58) @@ -134,9 +134,9 @@ from:0x02199a06 kind:thumb_call_arm to:0x01ffbe78 module:itcm from:0x02199a26 kind:thumb_call_arm to:0x020839bc module:overlay(0) from:0x02199a8a kind:thumb_call_arm to:0x02083c1c module:overlay(0) from:0x02199aa4 kind:load to:0x027e0e60 module:dtcm -from:0x02199aac kind:load to:0x0219b060 module:overlay(58) +from:0x02199aac kind:load to:0x0219b050 add:0x10 module:overlay(58) from:0x02199ab0 kind:load to:0x0219b050 module:overlay(58) -from:0x02199ab4 kind:load to:0x0219b020 module:overlay(58) +from:0x02199ab4 kind:load to:0x0219b000 add:0x20 module:overlay(58) from:0x02199aca kind:thumb_call_arm to:0x020839bc module:overlay(0) from:0x02199b30 kind:thumb_call_arm to:0x02083c1c module:overlay(0) from:0x02199b5e kind:thumb_call_arm to:0x02083e80 module:overlay(0) diff --git a/config/usa/arm9/overlays/ov058/symbols.txt b/config/usa/arm9/overlays/ov058/symbols.txt index dbbf2ab1..2cf04713 100644 --- a/config/usa/arm9/overlays/ov058/symbols.txt +++ b/config/usa/arm9/overlays/ov058/symbols.txt @@ -1,27 +1,27 @@ -_ZN25EquipBombchu_Unk_02198d008vfunc_08EPs kind:function(arm,size=0x1f4) addr:0x02198c60 -_Z19func_ov058_02198ef4v kind:function(arm,size=0x4) addr:0x02198e54 -_Z19func_ov058_02198ef8v kind:function(arm,size=0x4) addr:0x02198e58 -_ZN25EquipBombchu_Unk_02198d008vfunc_14EPt kind:function(arm,size=0x78) addr:0x02198e5c +_ZN25EquipBombchu_Unk_02198d008vfunc_08EP27UnkStruct_ov000_020beba8_08 kind:function(arm,size=0x1f4) addr:0x02198c60 +_ZN24UnkStruct_027e0f6c_Unk_1D1Ev kind:function(arm,size=0x4) addr:0x02198e54 +_ZN24UnkStruct_027e0f6c_Unk_1C1Ev kind:function(arm,size=0x4) addr:0x02198e58 +_ZN25EquipBombchu_Unk_02198d008vfunc_14EPti kind:function(arm,size=0x78) addr:0x02198e5c _ZN25EquipBombchu_Unk_02198d008vfunc_10EPi kind:function(arm,size=0x4c) addr:0x02198ed4 _ZN12EquipBombchu8vfunc_00Ev kind:function(thumb,size=0x7c) addr:0x02198f20 _ZN12EquipBombchu8vfunc_18Ev kind:function(thumb,size=0x22) addr:0x02198f9c _ZN12EquipBombchu8vfunc_1cEv kind:function(thumb,size=0xc) addr:0x02198fc0 _ZN12EquipBombchu8vfunc_30Ev kind:function(thumb,size=0x104) addr:0x02198fcc _ZN12EquipBombchu8vfunc_38Ei kind:function(thumb,size=0xb0) addr:0x021990d0 -_ZN12EquipBombchu19func_ov058_02199220Ev kind:function(thumb,size=0x8) addr:0x02199180 +_Z19func_ov058_02199220P12EquipBombchu kind:function(thumb,size=0x8) addr:0x02199180 _ZN12EquipBombchu19func_ov058_02199228Ev kind:function(thumb,size=0x3c) addr:0x02199188 -_ZN12EquipBombchu19func_ov058_02199264Ev kind:function(thumb,size=0x8) addr:0x021991c4 +_Z19func_ov058_02199264P12EquipBombchu kind:function(thumb,size=0x8) addr:0x021991c4 _ZN12EquipBombchu19func_ov058_0219926cEv kind:function(thumb,size=0x18) addr:0x021991cc _ZNK12EquipBombchu8IsUsableEi kind:function(arm,size=0x40) addr:0x021991e4 _ZNK12EquipBombchu11CheckUsableEi kind:function(arm,size=0x13c) addr:0x02199224 _ZN12EquipBombchu19func_ov058_02199400Ev kind:function(thumb,size=0x98) addr:0x02199360 _ZN12EquipBombchu19func_ov058_02199498EP5Vec3p kind:function(thumb,size=0xa58) addr:0x021993f8 -_ZN12EquipBombchu19func_ov058_02199ef0Es kind:function(arm,size=0xe8) addr:0x02199e50 -_ZN12EquipBombchu19func_ov058_02199fd8Ej kind:function(arm,size=0xac) addr:0x02199f38 -_ZN12EquipBombchu19func_ov058_0219a084Es kind:function(arm,size=0x330) addr:0x02199fe4 -_ZN12EquipBombchu19func_ov058_0219a3b4Es kind:function(arm,size=0x70) addr:0x0219a314 -_ZN25EquipBombchu_Unk_02198d00D1Ev kind:function(arm,size=0x1c) addr:0x0219a384 -_ZN25EquipBombchu_Unk_02198d00D0Ev kind:function(arm,size=0x14) addr:0x0219a3a0 +_ZN12EquipBombchu19func_ov058_02199ef0E7TilePos kind:function(arm,size=0xe8) addr:0x02199e50 +_ZN12EquipBombchu19func_ov058_02199fd8E7TilePos kind:function(arm,size=0xac) addr:0x02199f38 +_ZN12EquipBombchu19func_ov058_0219a084E7TilePos kind:function(arm,size=0x330) addr:0x02199fe4 +_ZN12EquipBombchu19func_ov058_0219a3b4E7TilePos kind:function(arm,size=0x70) addr:0x0219a314 +_ZN25EquipBombchu_Unk_02198d00D0Ev kind:function(arm,size=0x1c) addr:0x0219a384 +_ZN25EquipBombchu_Unk_02198d00D1Ev kind:function(arm,size=0x14) addr:0x0219a3a0 _ZN13LinkStateItem19func_ov058_0219a454Ev kind:function(arm,size=0x28) addr:0x0219a3b4 _ZN13LinkStateItem19func_ov058_0219a47cEv kind:function(arm,size=0x13c) addr:0x0219a3dc _Z15GetEquipBombchuv kind:function(arm,size=0x10) addr:0x0219a518 local @@ -34,7 +34,7 @@ func_ov058_0219aad0 kind:function(arm,size=0x58) addr:0x0219aa30 func_ov058_0219ab28 kind:function(thumb,size=0x184) addr:0x0219aa88 func_ov058_0219acac kind:function(thumb,size=0x88) addr:0x0219ac0c func_ov058_0219ad34 kind:function(thumb,size=0x32) addr:0x0219ac94 -data_ov058_0219ad68 kind:data(any) addr:0x0219acc8 +sEquipBombchu_Unk1 kind:data(any) addr:0x0219acc8 local __sinit_EquipBombchu.cpp kind:function(arm,size=0xfc) addr:0x0219ace0 .p__sinit_EquipBombchu.cpp kind:data(word) addr:0x0219addc data_ov058_0219aea0 kind:data(any) addr:0x0219ae00 @@ -70,12 +70,10 @@ data_ov058_0219afb0 kind:data(any) addr:0x0219af10 _ZN12EquipBombchu19gModelRenderBombchuE kind:bss addr:0x0219af2c @912 kind:bss addr:0x0219af88 _ZN12EquipBombchu21gModelRenderBombchuPtE kind:bss addr:0x0219af94 -data_ov058_0219b040 kind:bss addr:0x0219afa0 -data_ov058_0219b080 kind:bss addr:0x0219afe0 -data_ov058_0219b094 kind:bss addr:0x0219aff4 +data_ov058_0219b090 kind:bss(size=0x2) addr:0x0219aff0 +@1716 kind:bss addr:0x0219aff4 data_ov058_0219b0a0 kind:bss addr:0x0219b000 -data_ov058_0219b0c0 kind:bss addr:0x0219b020 data_ov058_0219b0c4 kind:bss addr:0x0219b024 @913 kind:bss addr:0x0219b044 sUnk_02198d00 kind:bss addr:0x0219b050 -data_ov058_0219b100 kind:bss addr:0x0219b060 +data_ov058_0219b110 kind:bss(size=0x2) addr:0x0219b070 diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index 4f018976..52a674e4 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -69,7 +69,7 @@ func_02003624 kind:function(arm,size=0x68) addr:0x02003624 func_0200368c kind:function(arm,size=0x12c) addr:0x0200368c func_020037b8 kind:function(arm,size=0xd0) addr:0x020037b8 func_02003888 kind:function(arm,size=0x4) addr:0x02003888 -func_0200388c kind:function(arm,size=0x18) addr:0x0200388c +FX_Mul kind:function(arm,size=0x18) addr:0x0200388c func_020038a4 kind:function(arm,size=0x3c) addr:0x020038a4 func_020038e0 kind:function(thumb,size=0xd0) addr:0x020038e0 func_020039b0 kind:function(arm,size=0x34) addr:0x020039b0 @@ -2478,7 +2478,7 @@ __sinit_02050eb8 kind:function(arm,size=0x2c) addr:0x02050e74 __sinit_02050ee4 kind:function(arm,size=0x1c) addr:0x02050ea0 __sinit_02050f00 kind:function(arm,size=0x40) addr:0x02050ebc __sinit_02050f40 kind:function(arm,size=0x14) addr:0x02050efc -gSinCosTable kind:data(any) addr:0x02050f10 +FX_SinCosTable_ kind:data(any) addr:0x02050f10 data_02051054 kind:data(any) addr:0x02051010 data_02051154 kind:data(any) addr:0x02051110 data_02051254 kind:data(any) addr:0x02051210 @@ -2492,7 +2492,7 @@ data_02054954 kind:data(any) addr:0x02054910 data_02054b54 kind:data(any) addr:0x02054b10 data_02054e54 kind:data(any) addr:0x02054e10 gAngToRadTable kind:data(any) addr:0x02054f10 -gAtan2Table kind:data(any) addr:0x02055014 +FX_AtanIdxTable_ kind:data(any) addr:0x02055014 data_0205515c kind:data(any) addr:0x02055118 data_0205516c kind:data(any) addr:0x02055128 data_0205516e kind:data(any) addr:0x0205512a diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index b58c39c8..77a943a4 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -12,6 +12,7 @@ #include "Physics/Transform.hpp" #include "Player/EquipBoomerang.hpp" #include "System/SysNew.hpp" +#include "Unknown/UnkStruct_ov000_020beba8.hpp" struct Actor_UnkStruct_012 { /* 00 */ u16 mUnk_00; @@ -48,7 +49,7 @@ struct Actor_UnkStruct_09c { /* 0 */ u16 mUnk_0; /* 2 */ unk8 mUnk_2; /* 3 */ unk8 mUnk_3; - /* 4 */ unk32 mUnk_4; + /* 4 */ UnkStruct_ov000_020beba8 *mUnk_4; /* 8 */ Actor_UnkStruct_09c(); diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp index 30f2b0d1..b5ba6685 100644 --- a/include/Actor/ActorType.hpp +++ b/include/Actor/ActorType.hpp @@ -36,6 +36,7 @@ enum ActorTypeId_ { ActorTypeId_Arrow = 'ARRW', ActorTypeId_Blast = 'BLST', ActorTypeId_Bomb = 'BOMB', + ActorTypeId_Bombchu = 'BMTY', ActorTypeId_GrapplingHook = 'ROPE', ActorTypeId_PlayerDummy = 'PLDM', @@ -85,6 +86,7 @@ enum ActorTypeId_ { ActorTypeId_FLTB = 'FLTB', ActorTypeId_FLTM = 'FLTM', ActorTypeId_FORC = 'FORC', + ActorTypeId_PWBS = 'PWBS', ActorTypeId_SBEM = 'SBEM', ActorTypeId_STNE = 'STNE', ActorTypeId_TARU = 'TARU', diff --git a/include/Actor/Navi/ActorNavi.hpp b/include/Actor/Navi/ActorNavi.hpp index 1a15e666..44027971 100644 --- a/include/Actor/Navi/ActorNavi.hpp +++ b/include/Actor/Navi/ActorNavi.hpp @@ -2,6 +2,7 @@ #include "Actor/Navi/ActorNaviBase.hpp" #include "Unknown/UnkStruct_ov000_020beba8.hpp" +#include "Unknown/UnkStruct_ov000_020c0c08.hpp" class UnkStruct_ov000_020b8110 : public UnkStruct_ov000_020beba8 { public: @@ -10,7 +11,7 @@ public: /* 00 */ virtual ~UnkStruct_ov000_020b8110() override; /* 08 */ virtual void vfunc_08(unk16 *param1) override; - /* 14 */ virtual void vfunc_14(u16 *param1) override; + /* 14 */ virtual bool vfunc_14(u16 *param1) override; /* 18 */ virtual void vfunc_18(s32 *param1) override; /* 1c */ @@ -23,8 +24,8 @@ public: /* 000 (base) */ /* 294 */ ModelRender mUnk_294; - /* 2f0 */ void *mUnk_2f0; - /* 2f4 */ unk8 mUnk_2f4[0x40]; + /* 2f0 */ UnkStruct_ov000_020c0c08 mUnk_2f0; + /* 314 */ UnkStruct_ov000_020c0c08_04 mUnk_314; /* 334 */ Vec3p mUnk_334; /* 340 */ unk16 mUnk_340; /* 342 */ unk8 mUnk_342[0x2]; diff --git a/include/Actor/Player/ActorBlast.hpp b/include/Actor/Player/ActorBlast.hpp index 431cc1d7..4b546b6f 100644 --- a/include/Actor/Player/ActorBlast.hpp +++ b/include/Actor/Player/ActorBlast.hpp @@ -54,6 +54,6 @@ class ActorBlast_Unk1 : public UnkStruct_ov000_020beba8 { /* 70 */ /* 00 */ virtual ~ActorBlast_Unk1(); - /* 10 */ virtual void vfunc_10(s32 *param1); + /* 10 */ virtual bool vfunc_10(s32 *param1); /* 18 */ }; diff --git a/include/Actor/Player/ActorBomb.hpp b/include/Actor/Player/ActorBomb.hpp index 3817a73e..2c1cd196 100644 --- a/include/Actor/Player/ActorBomb.hpp +++ b/include/Actor/Player/ActorBomb.hpp @@ -16,7 +16,7 @@ public: /* 00 */ virtual ~ActorBomb_Unk1() override; /* 08 */ virtual void vfunc_0c(unk16 *param1) override; - /* 0c */ virtual void vfunc_10(s32 *param1) override; + /* 0c */ virtual bool vfunc_10(s32 *param1) override; /* 18 */ }; diff --git a/include/Actor/Player/ActorRope.hpp b/include/Actor/Player/ActorRope.hpp index 245a7851..65e7fa50 100644 --- a/include/Actor/Player/ActorRope.hpp +++ b/include/Actor/Player/ActorRope.hpp @@ -15,7 +15,7 @@ public: /* 00 */ virtual ~ActorRope_Unk_0219a3b0() override; /* 08 */ virtual void vfunc_08(unk16 *param1) override; - /* 10 */ virtual void vfunc_10(s32 *param1) override; + /* 10 */ virtual bool vfunc_10(s32 *param1) override; /* 1c */ inline ActorRope_Unk_0219a3b0() : diff --git a/include/DTCM/UnkStruct_027e0de4.hpp b/include/DTCM/UnkStruct_027e0de4.hpp new file mode 100644 index 00000000..d834b193 --- /dev/null +++ b/include/DTCM/UnkStruct_027e0de4.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_027e0de4 { + void func_ov000_0207bb1c(unk32 param1, void (*param2)(void *), void *param3); +}; + +extern UnkStruct_027e0de4 data_027e0de4; diff --git a/include/DTCM/UnkStruct_027e0f6c.hpp b/include/DTCM/UnkStruct_027e0f6c.hpp index 6bddc3ca..7608b75b 100644 --- a/include/DTCM/UnkStruct_027e0f6c.hpp +++ b/include/DTCM/UnkStruct_027e0f6c.hpp @@ -3,7 +3,52 @@ #include "global.h" #include "types.h" +class UnkStruct_027e0f6c_Unk_1 { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0c */ unk32 mUnk_0c; + /* 10 */ + + UnkStruct_027e0f6c_Unk_1(); + ~UnkStruct_027e0f6c_Unk_1(); +}; + +class UnkStruct_027e0f6c_20 { +public: + /* 00 */ u16 mUnk_00; + /* 02 */ u16 mUnk_02; + /* 04 */ u16 mUnk_04; + /* 06 */ u16 mUnk_06; + /* 08 */ Vec3p mUnk_08; + /* 14 */ s32 mUnk_14; + /* 18 */ UnkStruct_027e0f6c_Unk_1 mUnk_18[3]; + /* 48 */ s32 mUnk_48; + /* 4c */ + + UnkStruct_027e0f6c_20 &operator=(const UnkStruct_027e0f6c_20 &other) { + u16 temp_r2 = other.mUnk_00; + mUnk_02 = other.mUnk_02; + mUnk_00 = temp_r2; + mUnk_04 = other.mUnk_04; + mUnk_06 = other.mUnk_06; + mUnk_08.x = other.mUnk_08.x; + mUnk_08.y = other.mUnk_08.y; + mUnk_08.z = other.mUnk_08.z; + mUnk_14 = other.mUnk_14; + mUnk_18[0] = other.mUnk_18[0]; + mUnk_18[1] = other.mUnk_18[1]; + mUnk_18[2] = other.mUnk_18[2]; + mUnk_48 = other.mUnk_48; + return *this; + } +}; + struct UnkStruct_027e0f6c { + /* 00 */ unk8 mUnk_00[0x20]; + /* 20 */ UnkStruct_027e0f6c_20 *mUnk_20; + void func_ov004_02102770(); }; diff --git a/include/DTCM/UnkStruct_027e103c.hpp b/include/DTCM/UnkStruct_027e103c.hpp index bb094ec1..dd04d064 100644 --- a/include/DTCM/UnkStruct_027e103c.hpp +++ b/include/DTCM/UnkStruct_027e103c.hpp @@ -139,7 +139,7 @@ struct UnkStruct_027e103c { void func_ov005_02104114(); void func_ov005_0210413c(); void func_ov005_02104160(); - void func_Ov005_0210418c(char param1); + void func_ov005_0210418c(char param1); }; extern UnkStruct_027e103c *data_027e103c; diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp index 10a64427..2f552bb5 100644 --- a/include/Item/ItemManager.hpp +++ b/include/Item/ItemManager.hpp @@ -51,6 +51,12 @@ enum DungeonItemModelId_ { DungeonItemModelId_COUNT, }; +struct ItemManager_Unk1 { + /* 00 */ char mUnk_00[0x10]; + /* 10 */ unk32 mUnk_10[2]; + /* 18 */ +}; + class ItemManager : public SysObject { public: /* 000 */ ItemFlag mEquippedItem; @@ -149,10 +155,10 @@ public: // Item model void func_ov00_020ad528(); ItemModel *GetItemModel(ItemModelId id); - void func_ov00_020ad538(unk32 param1) const; - void func_ov00_020ad560(unk32 param1) const; + void *func_ov00_020ad538(const ItemManager_Unk1 *param1) const; + void *func_ov00_020ad560(const ItemManager_Unk1 *param1) const; ItemModel *GetDungeonItemModel(DungeonItemModelId id); - void func_ov00_020ad594(unk32 param1) const; + void *func_ov00_020ad594(const ItemManager_Unk1 *param1) const; void LoadFanfareItem(ItemId id); bool GetFanfareItemScale(Vec3p *pScale) const; void LoadDungeonItemModels(); @@ -209,8 +215,6 @@ public: // Unknown void func_ov00_020ae4dc(s32 param1); - void func_ov000_020c0c44(void *); - void func_ov000_020c0e5c(void *, unk32); }; extern ItemManager *gItemManager; diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 286e6156..8decca85 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -141,7 +141,7 @@ public: /* 60 */ virtual unk32 vfunc_60(TilePos *param_1); /* 64 */ virtual unk32 vfunc_64(); /* 68 */ virtual unk32 vfunc_68(Vec3p *param_1, bool param_2); - /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); + /* 6c */ virtual unk8 vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); /* 74 */ virtual unk32 *vfunc_74(Vec3p *param_2); /* 78 */ virtual unk32 *vfunc_78(TilePos *param_1); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 9989f31f..56888ab1 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -8,8 +8,10 @@ #include "Map/Course.hpp" #include "Map/MapBase.hpp" #include "Physics/AABB.hpp" +#include "Physics/Sphere.hpp" #include "Save/AdventureFlags.hpp" #include "System/SysNew.hpp" +#include "Unknown/UnkStruct_ov000_020beba8.hpp" struct MapManager_Unk1 { /* 0 */ unk32 mUnk_0; @@ -65,6 +67,57 @@ struct UnkStruct_0208210c_param3 { /* 1c4 */ }; +struct UnkStruct { + /* 00 */ unk8 mUnk_00[0x24]; + /* 24 */ u16 mUnk_24; + /* 26 */ u16 mUnk_26; + /* 28 */ u16 mUnk_28; + /* 2a */ u16 mUnk_2a; + /* 2c */ u16 mUnk_2c; + /* 2e */ unk8 mUnk_2e; + /* 2f */ unk8 mUnk_2f; + /* 30 */ unk8 mUnk_30; + /* 31 */ unk8 mUnk_31; + /* 32 */ unk8 mUnk_32; + /* 33 */ unk8 mUnk_33; + /* 34 */ unk8 mUnk_34; + /* 35 */ unk8 mUnk_35; + /* 36 */ unk8 mUnk_36; + /* 37 */ unk8 mUnk_37; + /* 38 */ unk8 mUnk_38; + /* 3c */ Vec3p mUnk_3c; + /* 48 */ unk8 mUnk_48[0x6]; + /* 4e */ u8 mUnk_4e; + /* 4f */ u8 mUnk_4f; + /* 50 */ u8 mUnk_50; + /* 51 */ u8 mUnk_51; + /* 52 */ unk8 mUnk_52[0x6]; + /* 58 */ u8 mUnk_58; + /* 59 */ u8 mUnk_59; + /* 5a */ u8 mUnk_5a; + /* 5b */ u8 mUnk_5b; + /* 5c */ u8 mUnk_5c; + /* 5d */ u8 mUnk_5d; + /* 5e */ + + inline UnkStruct() : + mUnk_24(-1), + mUnk_26(-1), + mUnk_28(-1), + mUnk_2a(-1), + mUnk_2c(0), + mUnk_4e(0), + mUnk_4f(0), + mUnk_50(0), + mUnk_51(0), + mUnk_58(0), + mUnk_59(0), + mUnk_5a(0), + mUnk_5b(0), + mUnk_5c(0), + mUnk_5d(0) {} +}; + class MapManager : public SysObject { public: /* 00 */ Course *mCourse; @@ -79,8 +132,9 @@ public: /* 0f */ unk8 mUnk_0f; /* 10 */ - bool func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Vec4p *param4); - bool func_01ffbf5c(struct UnkStruct *param1, Vec3p *param2, Vec3p *param3, s32 length); + bool func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Sphere *param4); + bool func_01ffbf5c(struct UnkStruct *param1, Vec3p *param2, Vec3p *param3, s32 length, unk32 param5, unk32 param6, + UnkStruct_ov000_020beba8 *param7, unk32 param8); bool func_01ffc118(s32 *param1, Vec3p *param2, Vec3p *param3, s32 param4, s32 *param5, u32 param6, s32 *param7); bool func_01ffd1e0(s32 *param1, Vec3p *param2, Vec3p *param3, s32 param4, s32 *param5, u32 param6, s32 *param7); @@ -213,7 +267,7 @@ public: unk32 MapData_vfunc_68(Vec3p *param_1, bool param_2); 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(unk32 param_2, unk32 param_3, unk32 param_4); + unk8 MapData_vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4); unk32 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); diff --git a/include/Map/MapOverworld.hpp b/include/Map/MapOverworld.hpp index 2fda60af..5e00b782 100644 --- a/include/Map/MapOverworld.hpp +++ b/include/Map/MapOverworld.hpp @@ -12,7 +12,7 @@ public: /* 00 (base) */ /* 24 */ - MapOverworld_Unk1(u32 param1, u8 *param2, unk32 param3); + MapOverworld_Unk1(u32 param1, ItemModel *param2, unk32 param3); }; class MapOverworld : public MapBase { diff --git a/include/Map/TilePos.hpp b/include/Map/TilePos.hpp index 419361d9..46f32076 100644 --- a/include/Map/TilePos.hpp +++ b/include/Map/TilePos.hpp @@ -11,7 +11,12 @@ public: inline TilePos() : x(0), y(0) {} + inline TilePos(bool) {} inline TilePos(u8 x, u8 y) : x(x), y(y) {} }; + +inline bool operator==(TilePos a, TilePos b) { + return (a.x == b.x && a.y == b.y); +} diff --git a/include/Player/EquipBombchu.hpp b/include/Player/EquipBombchu.hpp index c2e924b5..34a7ce61 100644 --- a/include/Player/EquipBombchu.hpp +++ b/include/Player/EquipBombchu.hpp @@ -3,28 +3,24 @@ #include "types.h" #include "Actor/Actor.hpp" +#include "Map/TilePos.hpp" #include "Player/EquipItem.hpp" #include "Render/ModelRender.hpp" #include "Unknown/UnkStruct_ov000_020beba8.hpp" -struct EquipBombchu_Unk1 { - /* 0 */ unk8 mUnk_0; - /* 1 */ unk8 mUnk_1; - /* 2 */ - - EquipBombchu_Unk1(); -}; - class EquipBombchu_Unk_02198d00 : public UnkStruct_ov000_020beba8 { public: /* 0 (base) */ - /* c */ + /* 0c */ unk8 mUnk_0c[4]; + /* 10 */ TilePos mUnk_10; + /* 12 (padding) */ + /* 14 */ Vec3p mUnk_14; + /* 20 */ - /* 00 */ virtual ~EquipBombchu_Unk_02198d00() override; - /* 08 */ virtual void vfunc_08(unk16 *param1) override; + /* 08 */ virtual bool vfunc_08(UnkStruct_ov000_020beba8_08 *param1) override; /* 0c */ virtual void vfunc_0c(unk16 *param1) override; - /* 10 */ virtual void vfunc_10(s32 *param1) override; - /* 14 */ virtual void vfunc_14(u16 *param1) override; + /* 10 */ virtual bool vfunc_10(s32 *param1) override; + /* 14 */ virtual bool vfunc_14(u16 *param1, s32 param2) override; /* 1c */ inline EquipBombchu_Unk_02198d00() : @@ -38,18 +34,16 @@ public: /* 00 (base) */ /* 09 */ u8 mUnk_09[3]; - /* 0c */ ActorRef mUnk_0c; - /* 0c */ u8 mUnk_14[0x4]; - /* 18 */ u32 mUnk_18; - /* 1c */ EquipBombchu_Unk1 *mUnk_1c; + /* 0c */ ActorRef mBombchuRef; + /* 14 */ unk32 mUnk_14; + /* 18 */ s32 mUnk_18; + /* 1c */ TilePos *mUnk_1c; /* 20 */ Vec3p mUnk_20; - /* 2c */ void *mUnk_2c; - /* 30 */ u32 mUnk_30; - /* 34 */ u32 mUnk_34; + /* 2c */ Vec3p mUnk_2c; /* 38 */ Vec3p mUnk_38; - /* 44 */ u16 mUnk_44; - /* 46 */ u8 mUnk_46; - /* 47 */ char mUnk_47; + /* 44 */ s16 mUnk_44; + /* 46 */ bool mUnk_46; + /* 47 */ bool mUnk_47; /* 48 */ bool mUnk_48; /* 49 */ unk8 mUnk_49[3]; /* 4c */ @@ -69,19 +63,17 @@ public: void func_ov014_0213eba4(); void func_ov014_0213ec40(); void func_ov014_0213ec64(); - Actor *func_ov014_0213ed74(); + Actor *func_ov014_0213ed74() const; void *func_ov014_0213ed94(s32 param1); void func_ov014_0213eda0(); - void func_ov058_02199220(); void func_ov058_02199228(); - void func_ov058_02199264(); void func_ov058_0219926c(); bool CheckUsable(unk32 param1) const; Actor *func_ov058_02199400(); bool func_ov058_02199498(Vec3p *vec); - void func_ov058_02199ef0(unk16 param1); - void func_ov058_02199fd8(u32 param1); - unk32 func_ov058_0219a084(unk16 param1); - bool func_ov058_0219a3b4(unk16 param1); + unk32 func_ov058_02199ef0(TilePos param1); + unk32 func_ov058_02199fd8(TilePos param1); + unk32 func_ov058_0219a084(TilePos param1); + bool func_ov058_0219a3b4(TilePos param1); }; diff --git a/include/Player/EquipItem.hpp b/include/Player/EquipItem.hpp index 79165634..bf0ce569 100644 --- a/include/Player/EquipItem.hpp +++ b/include/Player/EquipItem.hpp @@ -10,8 +10,8 @@ class EquipItem : public SysObject { public: /* 0 (vtable) */ - /* 4 */ u16 mUnk_00; - /* 6 */ u16 mUnk_04; + /* 4 */ s16 mUnk_04; + /* 6 */ u16 mUnk_06; /* 8 */ bool mInUse; /* 9 */ @@ -40,6 +40,6 @@ public: Vec3p *GetPlayerPos(); void func_ov000_020be99c(Vec3p *param1); - void func_ov000_020be9e4(s32 param1, s32 param2, s32 param3, s16 param4); + void func_ov000_020be9e4(Vec3p param3, s16 param4); s16 GetAmmo() const; }; diff --git a/include/Render/ModelRender.hpp b/include/Render/ModelRender.hpp index a9242578..8c8bd394 100644 --- a/include/Render/ModelRender.hpp +++ b/include/Render/ModelRender.hpp @@ -6,6 +6,7 @@ #include #include "System/SysNew.hpp" +#include "Unknown/UnkStruct_ov000_020c0c08.hpp" class ItemModel; @@ -31,7 +32,7 @@ public: /* 18 */ virtual void SetTranslation(Vec3p *translation); /* 1c */ virtual void PushGeometryCommands(); /* 20 */ virtual void vfunc_20(); - /* 24 */ virtual void vfunc_24(unk32 param1); + /* 24 */ virtual void vfunc_24(UnkStruct_ov000_020c0c08 *param1); /* 28 */ virtual void vfunc_28(); /* 2c */ virtual void vfunc_2c(); /* 30 */ virtual void vfunc_30(); @@ -40,7 +41,7 @@ public: /* 3c */ virtual void vfunc_3c(); /* 40 */ - ModelRender(); + ModelRender(unk32 param1); void *func_ov000_020a9624(s32 param1); void func_ov000_020a98e8(unk32 param1); void func_ov000_020a990c(unk32 param1); @@ -48,4 +49,5 @@ public: void func_ov000_020a9960(unk32 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_020e9360.hpp b/include/Unknown/UnkStruct_020e9360.hpp index 19c16094..f0744891 100644 --- a/include/Unknown/UnkStruct_020e9360.hpp +++ b/include/Unknown/UnkStruct_020e9360.hpp @@ -10,6 +10,8 @@ public: /* 0f */ unk8 mUnk_0f; UnkStruct_020e9360(); + + unk32 func_ov000_02079e68(unk32 param1); }; extern UnkStruct_020e9360 data_ov000_020e9360; diff --git a/include/Unknown/UnkStruct_ov000_020beba8.hpp b/include/Unknown/UnkStruct_ov000_020beba8.hpp index f9bbcead..4cf4bbbb 100644 --- a/include/Unknown/UnkStruct_ov000_020beba8.hpp +++ b/include/Unknown/UnkStruct_ov000_020beba8.hpp @@ -3,7 +3,17 @@ #include "global.h" #include "types.h" -class UnkStruct_ov000_020beba8 { +#include "System/SysNew.hpp" + +#include + +struct UnkStruct_ov000_020beba8_08 { + /* 00 */ u16 mUnk_00; + /* 04 */ Vec3p mUnk_04; + /* 10 */ +}; + +class UnkStruct_ov000_020beba8 : public SysObject { public: /* 0 (vtable) */ /* 4 */ unk32 mUnk_4; @@ -11,12 +21,14 @@ public: /* c */ /* 00 */ virtual ~UnkStruct_ov000_020beba8(); - /* 08 */ virtual void vfunc_08(unk16 *param1); + /* 08 */ virtual bool vfunc_08(UnkStruct_ov000_020beba8_08 *param1); /* 0c */ virtual void vfunc_0c(unk16 *param1); - /* 10 */ virtual void vfunc_10(s32 *param1); - /* 14 */ virtual void vfunc_14(u16 *param1); + /* 10 */ virtual bool vfunc_10(s32 *param1); + /* 14 */ virtual bool vfunc_14(u16 *param1, s32 param2); /* 18 */ virtual void vfunc_18(s32 *param1); /* 1c */ UnkStruct_ov000_020beba8(unk32 param1); + + bool func_ov014_02124034(UnkStruct_ov000_020beba8_08 *param1); }; diff --git a/include/Unknown/UnkStruct_ov000_020c0c08.hpp b/include/Unknown/UnkStruct_ov000_020c0c08.hpp index 69054538..ec253a46 100644 --- a/include/Unknown/UnkStruct_ov000_020c0c08.hpp +++ b/include/Unknown/UnkStruct_ov000_020c0c08.hpp @@ -6,16 +6,33 @@ #include "System/SysNew.hpp" #include "Unknown/UnkStruct_0202e1a0.hpp" +struct UnkStruct_ov000_020c0c08_04 { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ char *mUnk_08; + /* 0c */ unk8 mUnk_0c[0x4]; + /* 10 */ unk32 mUnk_10; + /* 14 */ unk32 mUnk_14; + /* 18 */ unk8 mUnk_18[0x8]; + /* 20 */ +}; + +class ItemModel; + class UnkStruct_ov000_020c0c08 : public SysObject { public: /* 00 (vtable) */ - /* 04 */ unk32 mUnk_04; - /* 08 */ u8 *mUnk_08; + /* 04 */ UnkStruct_ov000_020c0c08_04 *mUnk_04; + /* 08 */ ItemModel *mUnk_08; /* 0c */ UnkStruct_0202e1a0 mUnk_0c; /* 24 */ /* 00 */ virtual ~UnkStruct_ov000_020c0c08(); /* 08 */ - UnkStruct_ov000_020c0c08(unk32 param1, u8 *param2); + UnkStruct_ov000_020c0c08(UnkStruct_ov000_020c0c08_04 *param1, ItemModel *param2); + + void func_ov000_020c0c44(void *); + void func_ov000_020c0e04(); + void func_ov000_020c0e5c(unk32); }; diff --git a/include/Unknown/UnkStruct_ov000_020e9c88.hpp b/include/Unknown/UnkStruct_ov000_020e9c88.hpp new file mode 100644 index 00000000..ff60bd78 --- /dev/null +++ b/include/Unknown/UnkStruct_ov000_020e9c88.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_ov000_020e9c88 { + void func_ov000_0207b89c(s32 param2, Vec3p *param3, void (*param4)(void *), void *param5); +}; + +extern UnkStruct_ov000_020e9c88 data_ov000_020e9c88; diff --git a/libs/nds/include/nds/math.h b/libs/nds/include/nds/math.h index a74bf935..b3f0638e 100644 --- a/libs/nds/include/nds/math.h +++ b/libs/nds/include/nds/math.h @@ -28,7 +28,8 @@ typedef s16 q4; #define COS(n) (gSinCosTable[2 * ((n) >> 4) + 1]) u32 func_01ff9f3c(s32 a, s32 b); -s32 Atan2(s32 x, s32 y); +s32 FX_Atan2Idx(s32 x, s32 y); +q20 FX_Mul(q20 a, q20 b); u32 CoDivide64By32(u32 a, u32 b); u32 func_01ff98f0(u32 a, u32 b); diff --git a/libs/nds/src/itcm/math_1.c b/libs/nds/src/itcm/math_1.c index bbc5f740..ffec7e7c 100644 --- a/libs/nds/src/itcm/math_1.c +++ b/libs/nds/src/itcm/math_1.c @@ -61,4 +61,4 @@ q20 Vec3p_Distance(Vec3p *a, Vec3p *b) {} void Vec3p_func_01fffc94(Vec3p *a, Vec3p *b); u32 func_01ff9f3c(s32 a, s32 b) {} -s32 Atan2(s32 x, s32 y) {} +s32 FX_Atan2Idx(s32 x, s32 y) {} diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index 47d5e3d6..c2a0f06c 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -15,6 +15,7 @@ extern "C" { #include "Player/PlayerLinkBase.hpp" #include "Player/TouchControl.hpp" #include "Save/AdventureFlags.hpp" +#include "Unknown/UnkStruct_ov000_020e9c88.hpp" static char *sShipTypes[] = {"brg", "anc", "bow", "hul", "can", "dco", "pdl", "fnl"}; @@ -491,7 +492,7 @@ ARM bool Actor::CollidesWithShield(Cylinder *param1) { Vec3p vecFromPlayer; Vec3p_Sub(&mPos, &gPlayerPos, &vecFromPlayer); s32 currAngle = gPlayerAngle; - s32 angle = Atan2(vecFromPlayer.x, vecFromPlayer.z); + s32 angle = FX_Atan2Idx(vecFromPlayer.x, vecFromPlayer.z); s32 angleDiff = (s16) angle - currAngle; if (angleDiff < 0) { angleDiff = -angleDiff; @@ -705,7 +706,7 @@ ARM s16 Actor::GetAngleTo(Vec3p *vec) { q20 dz = vec->z - mPos.z; q20 dx = vec->x - mPos.x; if (dx != 0 || dz != 0) { - angle = Atan2(dx, dz); + angle = FX_Atan2Idx(dx, dz); } return angle; } @@ -973,11 +974,9 @@ ARM void Actor::KillInBounds() { this->Kill(); } -extern unk32 data_ov00_020e9c88; -extern "C" void func_ov00_0207b89c(unk32 *param1, s32 param2, Vec3p *param3, void *param4, Actor *param5); void vfunc_ac_Thunk(Actor *actor); ARM void Actor::func_ov00_020c31c0(unk32 param1) { - func_ov00_0207b89c(&data_ov00_020e9c88, param1, &mPos, &vfunc_ac_Thunk, this); + data_ov000_020e9c88.func_ov000_0207b89c(param1, &mPos, (void (*)(void *)) &vfunc_ac_Thunk, this); } ARM void vfunc_ac_Thunk(Actor *actor) { diff --git a/src/00_Core/Actor/Navi/ActorNavi.cpp b/src/00_Core/Actor/Navi/ActorNavi.cpp index 41a2015a..dd93a77a 100644 --- a/src/00_Core/Actor/Navi/ActorNavi.cpp +++ b/src/00_Core/Actor/Navi/ActorNavi.cpp @@ -10,7 +10,7 @@ UnkStruct_ov000_020b8110::UnkStruct_ov000_020b8110() : UnkStruct_ov000_020b8110::~UnkStruct_ov000_020b8110() {} void UnkStruct_ov000_020b8110::vfunc_08(unk16 *param1) {} void UnkStruct_ov000_020b8110::vfunc_18(s32 *param1) {} -void UnkStruct_ov000_020b8110::vfunc_14(u16 *param1) {} +bool UnkStruct_ov000_020b8110::vfunc_14(u16 *param1) {} void ActorNavi::func_ov000_020b8200() {} void ActorNavi::vfunc_c4() {} void ActorNavi::vfunc_c8() {} diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index 9fed2bf7..c15eafe4 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -167,24 +167,24 @@ ARM ItemModel *ItemManager::GetItemModel(ItemModelId id) { return mItemModels[id]; } -extern "C" void func_ov000_020c0bdc(unk32 param1, unk32 param2); -ARM void ItemManager::func_ov00_020ad538(unk32 param1) const { +extern "C" void *func_ov000_020c0bdc(unk32 param1, const ItemManager_Unk1 *param2); +ARM void *ItemManager::func_ov00_020ad538(const ItemManager_Unk1 *param1) const { unk32 unk1 = gItemModelLoader->func_ov000_020bb3a8(6); - func_ov000_020c0bdc(unk1, param1); + return func_ov000_020c0bdc(unk1, param1); } -ARM void ItemManager::func_ov00_020ad560(unk32 param1) const { +ARM void *ItemManager::func_ov00_020ad560(const ItemManager_Unk1 *param1) const { unk32 unk1 = gItemModelLoader->func_ov000_020bb3a8(7); - func_ov000_020c0bdc(unk1, param1); + return func_ov000_020c0bdc(unk1, param1); } ARM ItemModel *ItemManager::GetDungeonItemModel(u32 index) { return mDungeonItemModels[index]; } -ARM void ItemManager::func_ov00_020ad594(unk32 param1) const { +ARM void *ItemManager::func_ov00_020ad594(const ItemManager_Unk1 *param1) const { unk32 unk1 = gItemModelLoader->func_ov000_020bb3a8(11); - func_ov000_020c0bdc(unk1, param1); + return func_ov000_020c0bdc(unk1, param1); } ARM void ItemManager::Sword_vfunc_38(unk32 param1) { diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 555024bc..b3a7122e 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -27,7 +27,7 @@ unk32 MapBase::vfunc_68(Vec3p *param_1, bool param_2) {} unk8 MapBase::func_ov00_0207e940(unk8 *param_1) {} unk8 MapBase::func_ov00_0207e968() {} unk8 MapBase::func_ov00_0207e96c() {} -unk8 MapBase::vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) {} +unk8 MapBase::vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4) {} unk32 MapBase::vfunc_70(Vec3p *param_2) {} unk32 *MapBase::vfunc_74(Vec3p *param_2) {} unk8 MapBase::func_ov00_0207f100() {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index f2c38569..71bcd9dc 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1264,7 +1264,7 @@ ARM unk32 MapManager::func_ov00_02083f44(Vec3p *param_2, bool param_3) { return this->func_ov00_02083ef8(param_2, &local_18, param_3); } -unk8 MapManager::MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) { +unk8 MapManager::MapData_vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4) { this->mMap->vfunc_6c(param_2, param_3, param_4); } @@ -2503,7 +2503,7 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param Vec2p iStack_104; Vec3p VStack_f0; Vec3p VStack_e4; - Vec4p VStack_d8; + Sphere VStack_d8; Vec3p VStack_c8; Vec3p VStack_bc; Vec3p VStack_b0; @@ -2566,11 +2566,11 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param VStack_b0.z = VStack_bc.z; Vec3p_Add(&VStack_b0, &VStack_c8, &VStack_b0); } - bVar5 = false; - VStack_d8.y = param_5 << 1; - VStack_d8.x = 0; - VStack_d8.z = 0; - VStack_d8.w = param_5; + bVar5 = false; + VStack_d8.pos.y = param_5 << 1; + VStack_d8.pos.x = 0; + VStack_d8.pos.z = 0; + VStack_d8.radius = param_5; do { bVar4 = func_01ffbe78(param_2, &VStack_b0, &VStack_bc, &VStack_d8); if (bVar4) { diff --git a/src/00_Core/Player/EquipItem.cpp b/src/00_Core/Player/EquipItem.cpp index 8751b91d..1c51f48d 100644 --- a/src/00_Core/Player/EquipItem.cpp +++ b/src/00_Core/Player/EquipItem.cpp @@ -13,7 +13,7 @@ unk32 EquipItem::vfunc_48(unk32 param1) const {} s32 EquipItem::vfunc_4c() const {} Vec3p *EquipItem::GetPlayerPos() {} void EquipItem::func_ov000_020be99c(Vec3p *param1) {} -void EquipItem::func_ov000_020be9e4(s32 param1, s32 param2, s32 param3, s16 param4) {} +void EquipItem::func_ov000_020be9e4(Vec3p param3, s16 param4) {} s16 EquipItem::GetAmmo() const {} void EquipItem::GiveAmmo(u32 amount) {} bool EquipItem::GetHitbox(Cylinder *hitbox) const {} diff --git a/src/00_Core/Player/PlayerBase.cpp b/src/00_Core/Player/PlayerBase.cpp index 6f89f0d1..5edea52f 100644 --- a/src/00_Core/Player/PlayerBase.cpp +++ b/src/00_Core/Player/PlayerBase.cpp @@ -54,7 +54,7 @@ ARM void PlayerBase::LookAt(Vec3p *target) { if (vec.x == 0 && vec.z == 0) { return; } - gPlayerAngle = Atan2(*(vs32 *) &vec.x, vec.z); + gPlayerAngle = FX_Atan2Idx(*(vs32 *) &vec.x, vec.z); } ARM bool PlayerBase::func_ov00_020a7c00(s32 param1) { diff --git a/src/00_Core/Player/PlayerControl.cpp b/src/00_Core/Player/PlayerControl.cpp index 1e5f5d98..50c08bda 100644 --- a/src/00_Core/Player/PlayerControl.cpp +++ b/src/00_Core/Player/PlayerControl.cpp @@ -873,7 +873,7 @@ ARM bool PlayerControl::func_ov00_020b0b0c(s16 *pAngle, ItemFlag *pEquipId, unk3 *pAngle = mTouchAngle + ((s16) (mTouchFastAngle - mTouchAngle)) / 2; if (mTouchSpeed > FLOAT_TO_Q20(0.5)) { - q4 touchMoveAngle = Atan2(mTouchSpeedX, mTouchSpeedY) - *pAngle; + q4 touchMoveAngle = FX_Atan2Idx(mTouchSpeedX, mTouchSpeedY) - *pAngle; if (pFast != NULL) { *pFast = true; } @@ -881,7 +881,7 @@ ARM bool PlayerControl::func_ov00_020b0b0c(s16 *pAngle, ItemFlag *pEquipId, unk3 return true; } - s32 unkAngle = Atan2(local_20.x, local_20.z); + s32 unkAngle = FX_Atan2Idx(local_20.x, local_20.z); s32 unkAngle2 = (s16) ((s16) unkAngle - *pAngle); Vec3p VStack_2c = {INT_TO_Q20(mTouchFastX), INT_TO_Q20(mTouchFastY), 0}; diff --git a/src/00_Core/Render/ModelRender.cpp b/src/00_Core/Render/ModelRender.cpp index 03a66133..208ddb45 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() {} +ModelRender::ModelRender(unk32 param1) {} ModelRender::~ModelRender() {} void *ModelRender::GetLcdcAddress() {} void ModelRender::vfunc_0c(ItemModel *model) {} @@ -10,7 +10,7 @@ void ModelRender::SetRotationTranslation(Mat3p *rotation, Vec3p *translation) {} void ModelRender::SetTranslation(Vec3p *translation) {} void ModelRender::PushGeometryCommands() {} void ModelRender::vfunc_20() {} -void ModelRender::vfunc_24(unk32 param1) {} +void ModelRender::vfunc_24(UnkStruct_ov000_020c0c08 *param1) {} void ModelRender::vfunc_28() {} void ModelRender::vfunc_2c() {} void ModelRender::vfunc_34() {} diff --git a/src/00_Core/Unknown/UnkStruct_ov000_020beba8.cpp b/src/00_Core/Unknown/UnkStruct_ov000_020beba8.cpp index 1d46c6b3..076ddcbf 100644 --- a/src/00_Core/Unknown/UnkStruct_ov000_020beba8.cpp +++ b/src/00_Core/Unknown/UnkStruct_ov000_020beba8.cpp @@ -1,9 +1,9 @@ #include "Unknown/UnkStruct_ov000_020beba8.hpp" UnkStruct_ov000_020beba8::UnkStruct_ov000_020beba8(unk32 param1) {} -void UnkStruct_ov000_020beba8::vfunc_08(unk16 *param1) {} +bool UnkStruct_ov000_020beba8::vfunc_08(UnkStruct_ov000_020beba8_08 *param1) {} void UnkStruct_ov000_020beba8::vfunc_0c(unk16 *param1) {} -void UnkStruct_ov000_020beba8::vfunc_10(s32 *param1) {} +bool UnkStruct_ov000_020beba8::vfunc_10(s32 *param1) {} void UnkStruct_ov000_020beba8::vfunc_18(s32 *param1) {} -void UnkStruct_ov000_020beba8::vfunc_14(u16 *param1) {} +bool UnkStruct_ov000_020beba8::vfunc_14(u16 *param1, s32 param2) {} UnkStruct_ov000_020beba8::~UnkStruct_ov000_020beba8() {} diff --git a/src/04_Load/Actor/Navi/ActorNavi.cpp b/src/04_Load/Actor/Navi/ActorNavi.cpp index 12939c04..ca1635f8 100644 --- a/src/04_Load/Actor/Navi/ActorNavi.cpp +++ b/src/04_Load/Actor/Navi/ActorNavi.cpp @@ -1,3 +1,6 @@ #include "Actor/Navi/ActorNavi.hpp" +#include "Item/ItemManager.hpp" -ActorNavi::ActorNavi() {} +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 index 21d91459..2ad0dc0b 100644 --- a/src/04_Load/Actor/Navi/ActorNaviBase.cpp +++ b/src/04_Load/Actor/Navi/ActorNaviBase.cpp @@ -1,6 +1,7 @@ #include "Actor/Navi/ActorNaviBase.hpp" -ActorNaviBase::ActorNaviBase() {} +ActorNaviBase::ActorNaviBase() : + mUnk_168(0) {} ActorNaviBase::~ActorNaviBase() {} void func_ov004_021079d4(unk32 *param1) {} bool ActorNaviBase::Init() {} diff --git a/src/04_Load/Player/LinkStateDamage.cpp b/src/04_Load/Player/LinkStateDamage.cpp index 2eecae46..3f526599 100644 --- a/src/04_Load/Player/LinkStateDamage.cpp +++ b/src/04_Load/Player/LinkStateDamage.cpp @@ -1,6 +1,7 @@ #include "Player/LinkStateDamage.hpp" LinkStateDamage::LinkStateDamage(PlayerLinkBase *link) : - LinkStateBase(link) {} + LinkStateBase(link), + mUnk_3c(0) {} unk32 *_Z19func_ov004_021083f4Piiii(unk32 *param1, unk32 param2, unk32 param3, unk32 param4) {} LinkStateDamage::~LinkStateDamage() {} diff --git a/src/05/DTCM/UnkStruct_027e103c.cpp b/src/05/DTCM/UnkStruct_027e103c.cpp index 5e84fbe5..d3829d88 100644 --- a/src/05/DTCM/UnkStruct_027e103c.cpp +++ b/src/05/DTCM/UnkStruct_027e103c.cpp @@ -21,4 +21,4 @@ bool UnkStruct_027e103c::func_ov005_021040ec() {} void UnkStruct_027e103c::func_ov005_02104114() {} void UnkStruct_027e103c::func_ov005_0210413c() {} void UnkStruct_027e103c::func_ov005_02104160() {} -void UnkStruct_027e103c::func_Ov005_0210418c(char param1) {} +void UnkStruct_027e103c::func_ov005_0210418c(char param1) {} diff --git a/src/05/Player/LinkStateMove_05.cpp b/src/05/Player/LinkStateMove_05.cpp index 805685b3..043a05b7 100644 --- a/src/05/Player/LinkStateMove_05.cpp +++ b/src/05/Player/LinkStateMove_05.cpp @@ -227,7 +227,7 @@ ARM bool UnkFilterActor::Filter(Actor *actor) { Vec3p sp0; Vec3p_Sub(&actor->mPos, &mPos, &sp0); s16 angle2 = mAngle; - s16 angle1 = (s16) Atan2(sp0.x, sp0.z); + s16 angle1 = (s16) FX_Atan2Idx(sp0.x, sp0.z); s32 var_r6 = (s16) (angle1 - angle2) >> 3; if (var_r6 < 0) { var_r6 = -var_r6; diff --git a/src/14_Land/Actor/Player/ActorBlast.cpp b/src/14_Land/Actor/Player/ActorBlast.cpp index 06f82f63..64bea809 100644 --- a/src/14_Land/Actor/Player/ActorBlast.cpp +++ b/src/14_Land/Actor/Player/ActorBlast.cpp @@ -3,7 +3,7 @@ ActorType ActorBlast::gType = ActorType(ActorTypeId_Blast, (ActorCreateFunc) ActorBlast::Create, NULL); ActorBlast *ActorBlast::Create() {} -void ActorBlast_Unk1::vfunc_10(s32 *param1) {} +bool ActorBlast_Unk1::vfunc_10(s32 *param1) {} ActorBlast::ActorBlast() {} ActorBlast::~ActorBlast() {} bool ActorBlast::Init() {} diff --git a/src/14_Land/Actor/Player/ActorBomb.cpp b/src/14_Land/Actor/Player/ActorBomb.cpp index 91224f12..ce804b85 100644 --- a/src/14_Land/Actor/Player/ActorBomb.cpp +++ b/src/14_Land/Actor/Player/ActorBomb.cpp @@ -4,7 +4,7 @@ ActorType ActorBomb::gType = ActorType(ActorTypeId_Bomb, (ActorCreateFunc) Actor ActorBomb *ActorBomb::Create() {} void ActorBomb_Unk1::vfunc_0c(unk16 *param1) {} -void ActorBomb_Unk1::vfunc_10(s32 *param1) {} +bool ActorBomb_Unk1::vfunc_10(s32 *param1) {} ActorBomb::ActorBomb() {} ActorBomb_Unk2::~ActorBomb_Unk2() {} ActorBomb::~ActorBomb() {} diff --git a/src/14_Land/Player/EquipBombchu.cpp b/src/14_Land/Player/EquipBombchu.cpp index 5ebfe5b8..de5fdb6b 100644 --- a/src/14_Land/Player/EquipBombchu.cpp +++ b/src/14_Land/Player/EquipBombchu.cpp @@ -1,13 +1,12 @@ #include "Player/EquipBombchu.hpp" EquipBombchu::EquipBombchu() {} -EquipBombchu_Unk1::EquipBombchu_Unk1() {} EquipBombchu::~EquipBombchu() {} void EquipBombchu::func_ov014_0213eba4() {} void EquipBombchu::func_ov014_0213ec40() {} void EquipBombchu::func_ov014_0213ec64() {} ItemFlag EquipBombchu::GetId() const {} void EquipBombchu::vfunc_34(unk16 *param1) {} -Actor *EquipBombchu::func_ov014_0213ed74() {} +Actor *EquipBombchu::func_ov014_0213ed74() const {} void *EquipBombchu::func_ov014_0213ed94(s32 param1) {} void EquipBombchu::func_ov014_0213eda0() {} diff --git a/src/18_Overworld/Map/MapOverworld.cpp b/src/18_Overworld/Map/MapOverworld.cpp index de9b727e..9b892131 100644 --- a/src/18_Overworld/Map/MapOverworld.cpp +++ b/src/18_Overworld/Map/MapOverworld.cpp @@ -29,7 +29,7 @@ void MapOverworld::vfunc_b0(unk32 param_2, unk32 param_3) {} void MapOverworld::func_ov018_0215c650() {} void MapOverworld::func_ov018_0215c6ac() {} void MapOverworld::func_ov018_0215c6d0() {} -MapOverworld_Unk1::MapOverworld_Unk1(u32 param1, u8 *param2, unk32 param3) : +MapOverworld_Unk1::MapOverworld_Unk1(u32 param1, ItemModel *param2, unk32 param3) : UnkStruct_ov000_020c0c08(0, param2) {} void MapOverworld::func_ov018_0215c9ac() {} void func_ov018_0215ca24(s32 param1) {} diff --git a/src/54_Scoop/Player/EquipScoop.cpp b/src/54_Scoop/Player/EquipScoop.cpp index ba34e890..5c30cc39 100644 --- a/src/54_Scoop/Player/EquipScoop.cpp +++ b/src/54_Scoop/Player/EquipScoop.cpp @@ -1,7 +1,7 @@ #include "Player/EquipScoop.hpp" #include "Player/LinkStateItem.hpp" -ModelRender EquipScoop::gModelRender; +ModelRender EquipScoop::gModelRender(0); void EquipScoop::vfunc_00() {} void EquipScoop::vfunc_18() {} diff --git a/src/55_Bomb/Player/EquipBomb.cpp b/src/55_Bomb/Player/EquipBomb.cpp index fcfb30c6..e51972c1 100644 --- a/src/55_Bomb/Player/EquipBomb.cpp +++ b/src/55_Bomb/Player/EquipBomb.cpp @@ -1,7 +1,7 @@ #include "Player/EquipBomb.hpp" #include "Player/LinkStateItem.hpp" -ModelRender EquipBomb::gModelRender; +ModelRender EquipBomb::gModelRender(0); void EquipBomb::vfunc_00() {} bool EquipBomb::IsUsable(unk32 param1) const {} diff --git a/src/56_Bow/Player/EquipBow.cpp b/src/56_Bow/Player/EquipBow.cpp index 8cb51602..8310f781 100644 --- a/src/56_Bow/Player/EquipBow.cpp +++ b/src/56_Bow/Player/EquipBow.cpp @@ -1,8 +1,8 @@ #include "Player/EquipBow.hpp" #include "Player/LinkStateItem.hpp" -ModelRender EquipBow::gModelRenderBow; -ModelRender EquipBow::gModelRenderArrow; +ModelRender EquipBow::gModelRenderBow(0); +ModelRender EquipBow::gModelRenderArrow(0); void EquipBow::vfunc_00() {} bool EquipBow::IsUsable(unk32 param1) const {} diff --git a/src/57_Rope/Actor/Player/ActorRope.cpp b/src/57_Rope/Actor/Player/ActorRope.cpp index 40ab1aa4..bbcf4115 100644 --- a/src/57_Rope/Actor/Player/ActorRope.cpp +++ b/src/57_Rope/Actor/Player/ActorRope.cpp @@ -3,7 +3,7 @@ ActorRope_Unk_0219a3b0 gUnk_0219a3b0; void ActorRope_Unk_0219a3b0::vfunc_08(unk16 *param1) {} -void ActorRope_Unk_0219a3b0::vfunc_10(s32 *param1) {} +bool ActorRope_Unk_0219a3b0::vfunc_10(s32 *param1) {} ActorRope::ActorRope() {} bool ActorRope::Init() {} q20 ActorRope::func_ov057_0219a5ac() {} diff --git a/src/58_Bombchu/Player/EquipBombchu.cpp b/src/58_Bombchu/Player/EquipBombchu.cpp index 7e6c0742..68ee77a1 100644 --- a/src/58_Bombchu/Player/EquipBombchu.cpp +++ b/src/58_Bombchu/Player/EquipBombchu.cpp @@ -1,33 +1,884 @@ #include "Player/EquipBombchu.hpp" +#include "Actor/ActorSpawner.hpp" +#include "DTCM/UnkStruct_027e077c.hpp" +#include "DTCM/UnkStruct_027e0c54.hpp" +#include "DTCM/UnkStruct_027e0de4.hpp" +#include "DTCM/UnkStruct_027e0f6c.hpp" +#include "DTCM/UnkStruct_027e0fd4.hpp" +#include "DTCM/UnkStruct_027e103c.hpp" +#include "Map/MapManager.hpp" #include "Player/LinkStateItem.hpp" +#include "Player/PlayerControl.hpp" +#include "Unknown/UnkStruct_020e9360.hpp" +#include "Unknown/UnkStruct_ov000_020c0c08.hpp" +#include "Unknown/UnkStruct_ov000_020e9c88.hpp" -ModelRender EquipBombchu::gModelRenderBombchu; -ModelRender EquipBombchu::gModelRenderBombchuPt; -EquipBombchu_Unk_02198d00 sUnk_02198d00; +static char *sShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"}; -void EquipBombchu_Unk_02198d00::vfunc_08(unk16 *param1) {} -void func_ov058_02198ef4() {} -void func_ov058_02198ef8() {} -void EquipBombchu_Unk_02198d00::vfunc_14(u16 *param1) {} -void EquipBombchu_Unk_02198d00::vfunc_10(s32 *param1) {} -void EquipBombchu::vfunc_00() {} -void EquipBombchu::vfunc_18() {} -void EquipBombchu::vfunc_1c() {} -void EquipBombchu::vfunc_30() {} -void EquipBombchu::vfunc_38(unk32 param1) {} -void EquipBombchu::func_ov058_02199220() {} -void EquipBombchu::func_ov058_02199228() {} -void EquipBombchu::func_ov058_02199264() {} -void EquipBombchu::func_ov058_0219926c() {} -bool EquipBombchu::IsUsable(unk32 param1) const {} -bool EquipBombchu::CheckUsable(unk32 param1) const {} -Actor *EquipBombchu::func_ov058_02199400() {} -bool EquipBombchu::func_ov058_02199498(Vec3p *vec) {} -void EquipBombchu::func_ov058_02199ef0(unk16 param1) {} -void EquipBombchu::func_ov058_02199fd8(u32 param1) {} -unk32 EquipBombchu::func_ov058_0219a084(unk16 param1) {} -bool EquipBombchu::func_ov058_0219a3b4(unk16 param1) {} -EquipBombchu_Unk_02198d00::~EquipBombchu_Unk_02198d00() {} -void LinkStateItem::func_ov058_0219a454() {} -void LinkStateItem::func_ov058_0219a47c() {} -EquipBombchu *GetEquipBombchu() {} +ARM bool EquipBombchu_Unk_02198d00::vfunc_08(UnkStruct_ov000_020beba8_08 *param1) { + Vec3p sp14 = {param1->mUnk_04.x, param1->mUnk_04.y, param1->mUnk_04.z}; + UnkStruct_027e0f6c_20 sp38; + s32 temp_r1 = param1->mUnk_00; + UnkStruct_027e0f6c_20 *temp_r2 = data_027e0f6c->mUnk_20; + sp38 = *(temp_r2 + temp_r1); + + Vec3p sp8 = {sp38.mUnk_08.x, sp38.mUnk_08.y, sp38.mUnk_08.z}; + Vec3p_Normalize(&sp8, &sp8); + Vec3p_Scale(&sp8, -0x400); + Vec3p_Add(&sp14, &sp8, &sp14); + MapManager *pMapManager = gMapManager; + TilePos sp4 = pMapManager->func_ov00_02083a1c(&sp14); + if ((pMapManager->func_ov00_020840dc(&sp4) == 0x46) && (gMapManager->func_ov00_02083f44(&sp14, 0) <= (sp14.y + 0x17FF))) { + return 0; + } + return this->func_ov014_02124034(param1); +} + +static unk32 data_ov058_0219aee0 = -1; + +ModelRender EquipBombchu::gModelRenderBombchu(0); +ModelRender EquipBombchu::gModelRenderBombchuPt(0); +static unk16 data_ov058_0219b090; +extern UnkStruct_ov000_020c0c08_04 data_ov058_0219b0c4; +static UnkStruct_ov000_020c0c08 data_ov058_0219b0a0(&data_ov058_0219b0c4, 0); +static UnkStruct_ov000_020c0c08_04 data_ov058_0219b0c4; +static EquipBombchu_Unk_02198d00 sUnk_02198d00; +static TilePos data_ov058_0219b110; + +ARM UnkStruct_027e0f6c_Unk_1::~UnkStruct_027e0f6c_Unk_1() {} + +ARM UnkStruct_027e0f6c_Unk_1::UnkStruct_027e0f6c_Unk_1() {} + +struct UnkStruct1 { + /* 00 */ unk8 mUnk_00[0xc]; + /* 0c */ Vec3p mUnk_0c; + /* 18 */ + + UnkStruct1(Vec3p vec) : + mUnk_0c(vec) {} +}; + +ARM bool EquipBombchu_Unk_02198d00::vfunc_14(u16 *param1, s32 param2) { + Actor *temp_r0 = gActorManager->FindActorById(param2); + if ((temp_r0 != NULL) && (temp_r0->mType == ActorTypeId_PWBS)) { + mUnk_10.y = 1; + UnkStruct1 unk(*(Vec3p *) ((u32) temp_r0 + 0x820)); + mUnk_14 = unk.mUnk_0c; + } + return true; +} + +ARM bool EquipBombchu_Unk_02198d00::vfunc_10(s32 *param1) { + Actor *temp_r0 = (Actor *) param1; + if (!temp_r0->SetUnk_11b()) { + return false; + } + bool result; + if ((*(s32 *) ((s32) param1 + 4) & 0x800) == 0) { + return false; + } + sUnk_02198d00.mUnk_10 = true; + return false; +} + +static const ItemManager_Unk1 sEquipBombchu_Unk1 = { + .mUnk_00 = "bomchu_pt", + .mUnk_10 = {0, 100}, +}; + +THUMB void EquipBombchu::vfunc_00() { + gModelRenderBombchu.vfunc_0c(gItemManager->GetItemModel(ItemModelId_Bombchu)); + gModelRenderBombchuPt.vfunc_0c(gItemManager->GetItemModel(ItemModelId_BombchuPt)); + data_ov058_0219b0a0.mUnk_08 = gItemManager->GetItemModel(ItemModelId_BombchuPt); + data_ov058_0219b0a0.func_ov000_020c0c44(gItemManager->func_ov00_020ad538(&sEquipBombchu_Unk1)); + data_ov058_0219b0a0.func_ov000_020c0e5c(0); + gModelRenderBombchuPt.vfunc_24(&data_ov058_0219b0a0); + data_ov058_0219b090 = 2; +} + +THUMB void EquipBombchu::vfunc_18() { + this->UpdateInUse(1); + mBombchuRef.Reset(); + this->func_ov014_0213eda0(); + this->func_ov014_0213ec64(); +} + +THUMB void EquipBombchu::vfunc_1c() { + data_ov058_0219b090 = 2; +} + +THUMB void EquipBombchu::vfunc_30() { + mUnk_44 += 1; + if ((gPlayerControl->IsUntouchedNow() || !mUnk_47) && !mUnk_48 && mUnk_18 > 0) { + data_027e103c->func_ov005_0210418c(1); + mUnk_48 = true; + } + if (mUnk_18 <= 0) { + return; + } + + data_ov058_0219b0a0.func_ov000_020c0e04(); + if (data_027e077c.mUnk_0 != 0xd) { + return; + } + + Vec3p local_18 = mUnk_2c; + Vec3p_Sub(&local_18, &mUnk_20, &local_18); + q20 length = Vec3p_Length(&local_18); + if (length < FLOAT_TO_Q20(0.2)) { + mUnk_20 = mUnk_2c; + } else if (Vec3p_TryNormalize(&local_18)) { + if (length < FLOAT_TO_Q20(1.0)) { + Vec3p_Scale(&local_18, FLOAT_TO_Q20(0.2)); + } else { + Vec3p_Scale(&local_18, FX_Mul(length, FLOAT_TO_Q20(0.2))); + } + Vec3p_Add(&mUnk_20, &local_18, &mUnk_20); + } else { + mUnk_20 = mUnk_2c; + } + gPlayerLink->func_ov000_020bb810(&mUnk_20, 0x800); +} + +void func_ov058_02199220(EquipBombchu *bombchu); +void func_ov058_02199264(EquipBombchu *bombchu); + +THUMB void EquipBombchu::vfunc_38(unk32 param1) { + if (this->IsInUse()) { + Vec3p VStack_1c; + this->func_ov000_020be99c(&VStack_1c); + VStack_1c.y += FLOAT_TO_Q20(0.7); + gModelRenderBombchu.func_ov000_020b413c(mUnk_04, &VStack_1c); + if ((mUnk_14 == 1) && (mUnk_18 > 0)) { + data_ov000_020e9c88.func_ov000_0207b89c(param1, &mUnk_20, (void (*)(void *)) &func_ov058_02199220, this); + } + } else { + if (this->CheckUsable(1)) { + if (data_ov058_0219b090 > 0) { + data_ov058_0219b090 -= 1; + } + } else { + data_ov058_0219b090 = 2; + } + } + if (mUnk_46 && data_027e077c.mUnk_0 == 0xd) { + data_027e0de4.func_ov000_0207bb1c(5, (void (*)(void *)) &func_ov058_02199264, this); + } + return; +} + +THUMB void func_ov058_02199220(EquipBombchu *bombchu) { + bombchu->func_ov058_02199228(); +} + +extern "C" void func_020197bc(void *param1, unk32 param2); +extern "C" void func_0201987c(void *param1, unk32 param2); +THUMB void EquipBombchu::func_ov058_02199228() { + unk32 uVar1 = data_ov000_020e9360.func_ov000_02079e68(2); + void *pvVar2 = gModelRenderBombchuPt.GetLcdcAddress(); + func_020197bc(pvVar2, uVar1); + pvVar2 = gModelRenderBombchuPt.GetLcdcAddress(); + func_0201987c(pvVar2, 1); + gModelRenderBombchuPt.SetTranslation(&mUnk_20); +} + +THUMB void func_ov058_02199264(EquipBombchu *bombchu) { + bombchu->func_ov058_0219926c(); +} + +THUMB void EquipBombchu::func_ov058_0219926c() { + this->func_ov000_020be9e4(mUnk_38, mUnk_44); +} + +ARM bool EquipBombchu::IsUsable(unk32 param1) const { + if (!this->CheckUsable(param1)) { + return false; + } + if ((param1 != 0) && (data_ov058_0219b090 > 0)) { + return false; + } + return true; +} + +extern "C" unk32 func_ov014_0212505c(); +ARM bool EquipBombchu::CheckUsable(unk32 param1) const { + if (!gMapManager->func_ov00_0208499c() || data_027e0c54.mUnk_0 || data_027e0d38->mUnk_0c.func_ov000_020a5e9c() == 0x33) { + return false; + } + if (data_027e0fd4->mUnk_05a != 0) { + return false; + } + if (this->GetAmmo() <= 0) { + return false; + } + if (param1 != 0) { + if (!gPlayerLink->func_ov000_020bba28()) { + return false; + } + switch (data_027e077c.mUnk_0) { + case 0x1: + case 0xb: + case 0xc: + case 0xd: + case 0x33: + case 0x34: + return this->func_ov014_0213ed74() == NULL || func_ov014_0212505c() != 0; + } + return false; + } + return true; +} + +THUMB Actor *EquipBombchu::func_ov058_02199400() { + if (this->EquipItem::GetAmmo() <= 0 || mUnk_18 <= 0) { + return NULL; + } + Vec3p *playerPos = EquipItem::GetPlayerPos(); + Vec3p spawnPos = *playerPos; + spawnPos.y += FLOAT_TO_Q20(0.5); + ActorSpawnOptions options; + options.mUnk_1c.id = 1; + options.mAngle = mUnk_04; + gActorSpawner->Spawn(ActorTypeId_Bombchu, &spawnPos, &options, &mBombchuRef); + Actor *iVar3 = this->func_ov014_0213ed74(); + if (iVar3 != NULL) { + this->GiveAmmo(-1); + } + this->UpdateInUse(0); + return iVar3; +} + +extern "C" void func_ov014_02124ff4(Sphere *sphere); +extern "C" bool func_0202b2f8(Vec3p *param_1, Vec3p *param_2, unk32 param_3); +THUMB bool EquipBombchu::func_ov058_02199498(Vec3p *vec) { + struct TempStruct1 { + /* 00 */ unk8 mUnk_00[0xe]; + /* 0e */ unk8 mUnk_0e; + /* 0f */ unk8 mUnk_0f; + /* 10 */ unk8 mUnk_10; + /* 11 */ unk8 mUnk_11; + /* 12 */ unk8 mUnk_12[0x6]; + /* 18 */ volatile unk8 mUnk_18; + /* 19 */ unk8 mUnk_19; + /* 1a */ unk8 mUnk_1a; + /* 1b */ unk8 mUnk_1b; + /* 1c */ unk8 mUnk_1c; + /* 1d */ unk8 mUnk_1d; + /* 1e */ + }; + + struct TempStruct2 { + union { + /* 00 */ Vec3p mUnk_00; + struct { + /* 00 */ u16 mUnk_00_x; + /* 02 */ u16 mUnk_02; + /* 04 */ u16 mUnk_04; + /* 06 */ u16 mUnk_06; + /* 08 */ unk32 mUnk_08; + }; + }; + /* 0c */ unk8 mUnk_0c[0x34]; + /* 40 */ + }; + + TempStruct1 sp214; + TempStruct2 sp1D4; + AABB sp1BC; + Vec3p sp1B0; + Vec3p sp1A4; + Sphere sp194; + Vec3p sp188; + Vec3p sp17C; + Vec3p sp170; + Vec3p sp164; + Vec3p sp158; + Vec3p sp14C; + Vec3p sp140; + Vec3p sp134; + Vec3p sp128; + Vec3p sp11C; + Vec3p sp110; + Vec3p sp104; + Vec3p spF8; + Vec3p spEC; + Vec3p spE0; + Vec3p spD4; + Vec3p spBC; + Vec3p spB0; + Vec3p spA4; + Vec3p sp98; + Vec3p sp8C; + Vec3p sp80; + Vec3p sp74; + unk32 sp64; + u32 sp60; + u32 sp5C; + unk32 sp50; + unk32 sp48; + unk32 sp44; + s32 sp20; + s32 sp1C; + s32 sp18; + s32 sp14; + s32 temp_r0_13; + s32 temp_r0_16; + s32 temp_r0_21; + s32 temp_r0_22; + s32 temp_r0_23; + s32 temp_r0_24; + s32 temp_r0_25; + s32 temp_r0_27; + s32 temp_r0_3; + s32 temp_r0_4; + s32 temp_r0_5; + s32 temp_r0_6; + s32 temp_r0_7; + s32 temp_r0_8; + s32 temp_r0_9; + s32 temp_r1; + s32 temp_r1_10; + s32 temp_r1_14; + s32 temp_r1_2; + s32 temp_r1_3; + s32 temp_r7_2; + s32 temp_r7_3; + s32 var_r0; + s32 var_r0_2; + s32 var_r1; + s32 var_r1_2; + s32 var_r1_3; + s32 var_r6; + s32 var_r6_2; + s32 var_r6_3; + s32 var_r7; + + data_ov058_0219aee0 = -1; + if ((mUnk_18 >= 0x64) || (!mUnk_47)) { + return 0; + } + gMapManager->func_ov00_0208346c(&sp1BC); + sp128.x = vec->x; + sp128.y = vec->y; + sp128.z = vec->z; + if (!sp1BC.Contains(&sp128)) { + var_r0 = 1; + } else { + var_r0 = 0; + } + if (var_r0 != 0) { + if (mUnk_18 > 0) { + mUnk_47 = 0; + } + return 0; + } + TilePos sp5a = gMapManager->func_ov00_02083a1c(vec); + sp1B0.x = vec->x; + sp1B0.y = vec->y; + sp1B0.z = vec->z; + gMapManager->func_ov00_02083c7c(&sp1B0, sp5a); + sp1B0.y = vec->y; + temp_r1 = mUnk_18; + if (temp_r1 > 0) { + TilePos sp24_unk1C = sp5a; + TilePos sp24_unk6 = mUnk_1c[temp_r1 - 1]; + TilePos sp24_unk1E = sp24_unk6; + if (sp24_unk1E == sp24_unk1C) { + return 0; + } + gMapManager->func_ov00_02083c7c(&sp1A4, sp24_unk6); + var_r1 = vec->x - sp1A4.x; + if (var_r1 < 0) { + var_r1 = 0 - var_r1; + } + if (var_r1 < 0x1000) { + var_r1_2 = vec->z - sp1A4.z; + if (var_r1_2 < 0) { + var_r1_2 = 0 - var_r1_2; + } + if (var_r1_2 < 0x1000) { + return 0; + } + } + } + func_ov014_02124ff4(&sp194); + if (mUnk_18 <= 0) { + var_r6 = gPlayerPos.y; + sp18 = gPlayerPos.x; + sp1B0.y = var_r6; + sp14 = gPlayerPos.z; + } else { + var_r6 = mUnk_2c.y; + sp18 = mUnk_2c.x; + sp14 = mUnk_2c.z; + sp11C.x = sp1B0.x; + sp11C.y = sp1B0.y; + sp11C.z = sp1B0.z; + sp1B0.y = gMapManager->MapData_vfunc_68(&sp11C, 0); + } + var_r6_2 = var_r6 + sp194.pos.y; + temp_r1_2 = sp1B0.y + sp194.pos.y; + sp1B0.y = temp_r1_2; + sp188.x = sp1B0.x; + sp188.y = temp_r1_2; + sp188.z = sp1B0.z; + sp110.x = sp18; + sp110.y = var_r6_2; + sp110.z = sp14; + Vec3p_Sub(&sp188, &sp110, &sp188); + var_r7 = sp188.y; + sp188.y = 0; + sp20 = Vec3p_Length(&sp188); + sp1C = 0; + if (Vec3p_TryNormalize(&sp188) == 0) { + return 0; + } + if (sp20 > 0x7000) { + Vec3p_Scale(&sp188, 0x7000); + sp1C = 1; + } else if (sp20 >= 0x1000) { + if (mUnk_18 > 0 || ABS(var_r7) > 0) { + Vec3p_Scale(&sp188, 0x1000); + sp1C = 1; + } + } + if (sp1C != 0) { + sp1B0.x = sp18 + sp188.x; + sp1B0.z = sp14 + sp188.z; + TilePos sp58 = gMapManager->func_ov00_02083a1c(&sp1B0); + gMapManager->func_ov00_02083c7c(&sp1B0, sp58); + temp_r1_3 = sp1B0.y + 0x999; + sp1B0.y = temp_r1_3; + sp104.x = sp1B0.x; + sp104.x = temp_r1_3; + sp104.x = sp1B0.z; + temp_r0_3 = gMapManager->MapData_vfunc_68(&sp104, 0); + sp1B0.y = temp_r0_3; + temp_r0_4 = temp_r0_3 + sp194.pos.y; + sp1B0.y = temp_r0_4; + vec->x = sp1B0.x; + vec->y = temp_r0_4; + vec->z = sp1B0.z; + } + if (this->func_ov058_0219a3b4(sp5a) != 0) { + temp_r0_5 = this->func_ov058_02199ef0(sp5a); + sp1B0.y = temp_r0_5; + temp_r0_6 = temp_r0_5 + sp194.pos.y; + sp1B0.y = temp_r0_6; + vec->x = sp1B0.x; + vec->y = temp_r0_6; + vec->z = sp1B0.z; + } + if (mUnk_18 > 0) { + if (this->func_ov058_0219a3b4(mUnk_1c[mUnk_18 - 1]) != 0) { + var_r6_2 = this->func_ov058_02199ef0(mUnk_1c[mUnk_18 - 1]); + } + if (gMapManager->MapData_vfunc_54(&mUnk_1c[mUnk_18 - 1]) == 0x19) { + temp_r0_7 = gMapManager->MapData_vfunc_60(&mUnk_1c[mUnk_18 - 1]); + spF8.x = sp18; + spF8.y = temp_r0_7 - 0x1333; + spF8.z = sp14; + var_r6_2 = gMapManager->MapData_vfunc_68(&spF8, 0); + if ((sp1B0.y - var_r6_2) >= 0x999) { + return 0; + } + } + } + sp1D4.mUnk_00_x = -1; + sp1D4.mUnk_02 = -1; + sp1D4.mUnk_04 = -1; + sp1D4.mUnk_06 = -1; + sp1D4.mUnk_00.z = 0; + sp214.mUnk_0e = 0; + sp214.mUnk_0f = 0; + sp214.mUnk_10 = 0; + sp214.mUnk_11 = 0; + sp214.mUnk_18 = 0U; + sp214.mUnk_19 = 0U; + sp214.mUnk_1a = 0; + sp214.mUnk_1b = 0; + sp214.mUnk_1c = 0; + sp214.mUnk_1d = 0; + if (var_r6_2 < sp1B0.y) { + if ((sp1B0.y - var_r6_2) < 0x999) { + var_r6_2 = sp1B0.y; + } else { + spEC.x = sp18; + spEC.z = sp14; + spEC.y = var_r6_2; + gMapManager->MapData_vfunc_6c(&spEC, &sp64, &sp17C); + if ((sp17C.x != 0) || (sp17C.z != 0)) { + var_r6_2 += 0x99A; + if (var_r6_2 >= sp1B0.y) { + var_r6_2 = sp1B0.y; + } + } + } + } else { + sp1B0.y = var_r6_2; + } + sUnk_02198d00.mUnk_10.x = 0; + sUnk_02198d00.mUnk_10.y = 0; + spD4.y = var_r6_2; + spE0.x = sp1B0.x; + spE0.y = sp1B0.y; + spE0.z = sp1B0.z; + spD4.x = sp18; + spD4.z = sp14; + sp194.pos.y = 9; + sp194.pos.z = 0xCF; + sp194.radius = 1; + temp_r0_8 = gMapManager->func_01ffbe78(&sp1D4.mUnk_00, &spE0, &spD4, &sp194); + if (sUnk_02198d00.mUnk_10.x != 0) { + return 0; + } + if (temp_r0_8 != 0) { + if (sUnk_02198d00.mUnk_10.y != 0) { + sp1B0.x = sUnk_02198d00.mUnk_14.x; + sp1B0.y = sUnk_02198d00.mUnk_14.y; + sp1B0.z = sUnk_02198d00.mUnk_14.z; + sp1B0.y = mUnk_20.y; + TilePos sp56 = gMapManager->func_ov00_02083a1c(&sp1B0); + sp5a.x = sp56.x; + sp5a.y = sp56.y; + vec->x = sp1B0.x; + vec->y = sp1B0.y; + vec->z = sp1B0.z; + mUnk_38.x = sp1B0.x; + mUnk_38.y = sp1B0.y; + mUnk_38.z = sp1B0.z; + mUnk_47 = 0; + mUnk_46 = 1; + } else { + if (sp214.mUnk_18 != 0) { + if (mUnk_18 <= 0) { + return 0; + } + sp170.x = sp1D4.mUnk_00.x; + sp170.y = sp1D4.mUnk_00.y; + sp170.z = sp1D4.mUnk_00.z; + TilePos sp54 = gMapManager->func_ov00_02083a1c(&sp170); + sp5a = sp54; + if (this->func_ov058_0219a3b4(sp5a) != 0) { + return 0; + } + gMapManager->func_ov00_02083c7c(&sp170, sp5a); + TilePos sp24_unk18 = sp5a; + TilePos sp24_unk1A = mUnk_1c[mUnk_18 - 1]; + if (sp24_unk1A == sp24_unk18) { + sp164.x = sp1D4.mUnk_00.x; + spBC.y = var_r6_2; + sp164.y = sp1D4.mUnk_00.y; + sp164.z = sp1D4.mUnk_00.z; + spBC.x = sp18; + spBC.z = sp14; + Vec3p_Sub(&sp164, &spBC, &sp164); + var_r0_2 = sp164.z; + if (var_r0_2 < 0) { + var_r0_2 = 0 - var_r0_2; + } + var_r1_3 = sp164.x; + if (var_r1_3 < 0) { + var_r1_3 = 0 - var_r1_3; + } + if (var_r1_3 > var_r0_2) { + sp164.z = 0; + } else { + sp164.x = 0; + } + if (Vec3p_TryNormalize(&sp164) != 0) { + sp170.x = sp18; + sp170.y = var_r6_2; + sp170.z = sp14; + Vec3p_Add(&sp170, &sp164, &sp170); + } else { + return 0; + } + TilePos sp52 = gMapManager->func_ov00_02083a1c(&sp170); + sp5a = sp52; + if (this->func_ov058_0219a3b4(sp5a) != 0) { + return 0; + } + sUnk_02198d00.mUnk_10.x = 0; + sUnk_02198d00.mUnk_10.y = 0; + spB0.y = var_r6_2; + spB0.x = sp18; + spB0.z = sp14; + sp194.pos.y = 9; + sp194.pos.z = 0xCF; + sp194.radius = 1; + temp_r0_16 = gMapManager->func_01ffbe78(&sp1D4.mUnk_00, &sp170, &spB0, &sp194); + if (sUnk_02198d00.mUnk_10.x != 0) { + return 0; + } + if (temp_r0_16 == 0) { + TilePos sp50 = gMapManager->func_ov00_02083a1c(&sp170); + TilePos sp24_unk4 = sp50; + TilePos sp24_unk14 = sp24_unk4; + TilePos sp24_unk16 = mUnk_1c[mUnk_18 - 1]; + if (sp24_unk16 == sp24_unk14) { + return 0; + } + gMapManager->func_ov00_02083c7c(&sp170, sp24_unk4); + } else { + if (sp214.mUnk_18 == 0) { + return false; + } + sp170.x = sp1D4.mUnk_00.x; + sp170.y = sp1D4.mUnk_00.y; + sp170.z = sp1D4.mUnk_00.z; + TilePos sp4E = gMapManager->func_ov00_02083a1c(&sp170); + sp5a = sp4E; + TilePos sp24_unk2 = sp5a; + TilePos sp24_unk10 = sp24_unk2; + TilePos sp24_unk12 = mUnk_1c[mUnk_18 - 1]; + if (sp24_unk12 == sp24_unk10) { + return 0; + } + gMapManager->func_ov00_02083c7c(&sp170, sp24_unk2); + } + } + sp1B0.x = sp170.x; + spA4.x = sp170.x; + temp_r1_14 = sp170.y + 0x999; + sp1B0.y = sp170.y; + sp1B0.z = sp170.z; + spA4.z = sp170.z; + sp1B0.y = temp_r1_14; + spA4.y = temp_r1_14; + temp_r0_21 = gMapManager->MapData_vfunc_68(&spA4, 0); + sp1B0.y = temp_r0_21; + temp_r0_22 = temp_r0_21 + sp194.pos.y; + sp1B0.y = temp_r0_22; + vec->x = sp1B0.x; + vec->y = temp_r0_22; + vec->z = sp1B0.z; + } else { + if (sp214.mUnk_19 == 0) { + return 0; + } + sp158.x = sp1D4.mUnk_00.x; + sp158.y = sp1D4.mUnk_00.y; + sp158.z = sp1D4.mUnk_00.z; + TilePos sp4C = gMapManager->func_ov00_02083a1c(&sp158); + sp5a.x = sp4C.x; + sp5a.y = sp4C.y; + TilePos sp24_unk0 = sp5a; + TilePos sp24_unkC = sp24_unk0; + TilePos sp24_unkE = mUnk_1c[mUnk_18 - 1]; + if (sp24_unkE == sp24_unkC) { + return 0; + } + gMapManager->func_ov00_02083c7c(&sp158, sp24_unk0); + sp1B0.x = sp158.x; + sp98.x = sp158.x; + temp_r1_10 = sp158.y + 0x999; + sp1B0.y = sp158.y; + sp1B0.z = sp158.z; + sp98.z = sp158.z; + sp1B0.y = temp_r1_10; + sp98.y = temp_r1_10; + temp_r0_13 = gMapManager->MapData_vfunc_68(&sp98, 0); + sp1B0.y = temp_r0_13; + sp1B0.y = temp_r0_13 + sp194.pos.y; + } + } + } else { + MapManager *temp_r7_2 = gMapManager; + TilePos sp4a = temp_r7_2->func_ov00_02083a1c(&sp1B0); + if (temp_r7_2->MapData_vfunc_54(&sp4a) == 0x19) { + MapManager *temp_r7_3 = gMapManager; + TilePos sp48 = temp_r7_3->func_ov00_02083a1c(&sp1B0); + temp_r0_9 = temp_r7_3->MapData_vfunc_60(&sp48); + sp1B0.y = temp_r0_9; + sp1B0.y = temp_r0_9 - 0x1333; + } + sp8C.x = sp1B0.x; + sp8C.y = sp1B0.y; + sp8C.z = sp1B0.z; + sp1B0.y = gMapManager->MapData_vfunc_68(&sp8C, 0); + } + sp14C.y = var_r6_2; + sp14C.x = sp18; + sp140.y = var_r6_2; + sp14C.z = sp14; + var_r6_3 = 1; + sp140.x = sp18; + sp140.z = sp14; + while (true) { + if (func_0202b2f8(&sp14C, &sp1B0, 0x1000) != 0) { + var_r6_3 = 0; + } + MapManager::func_ov00_02083fb0(&sp60, gMapManager, &sp14C); + if (((3 & (sp60 >> 5)) == 2) && ((sp60 & 0x1F) != 0xA)) { + sp1B0.y = sp140.y; + temp_r0_23 = sp140.y + 0x999; + sp1B0.y = temp_r0_23; + sp80.y = temp_r0_23; + sp1B0.z = sp140.z; + sp80.z = sp140.z; + sp1B0.x = sp140.x; + sp80.x = sp140.x; + temp_r0_24 = gMapManager->MapData_vfunc_68(&sp80, 0); + sp1B0.y = temp_r0_24; + temp_r0_25 = temp_r0_24 + sp194.pos.y; + sp1B0.y = temp_r0_25; + vec->x = sp1B0.x; + vec->y = temp_r0_25; + vec->z = sp1B0.z; + TilePos sp46 = gMapManager->func_ov00_02083a1c(&sp1B0); + sp5a = sp46; + TilePos sp24_unk8 = sp5a; + TilePos sp24_unkA = mUnk_1c[mUnk_18 - 1]; + if (sp24_unkA == sp24_unk8) { + return 0; + } + goto block_114; + } else { + sp140.x = sp14C.x; + sp140.y = sp14C.y; + sp140.z = sp14C.z; + } + if (var_r6_3 == 0) { + block_114: + if (this->func_ov058_0219a3b4(sp5a) != 0) { + TilePos sp44 = gMapManager->func_ov00_02083a1c(&sp1B0); + temp_r0_27 = this->func_ov058_02199ef0(sp44); + sp1B0.y = temp_r0_27; + sp1B0.y = temp_r0_27 + sp194.pos.y; + } else { + sp74.x = sp1B0.x; + sp74.y = sp1B0.y; + sp74.z = sp1B0.z; + MapManager::func_ov00_02083fb0(&sp5C, gMapManager, &sp74); + if (((3 & (sp5C >> 5)) == 2) && ((0x1F & sp5C) != 0xA)) { + return 0; + } + } + mUnk_1c[mUnk_18] = sp5a; + mUnk_18 += 1; + sp134.x = sp1B0.x; + sp134.y = sp1B0.y; + sp134.z = sp1B0.z; + Vec3p_Sub(&sp134, &mUnk_20, &sp134); + mUnk_2c = sp1B0; + if (mUnk_18 <= 1) { + mUnk_20 = sp1B0; + } + mUnk_14 = 1; + return 1; + } + } +} + +extern "C" void func_ov000_020a61ac(Vec3p *vec, s16 angle); +ARM unk32 EquipBombchu::func_ov058_02199ef0(TilePos param1) { + s32 iVar1; + s32 iVar2; + s16 sVar3; + s32 result; + Vec3p local_58; + Vec3p local_4c; + Vec3p local_40; + + TilePos local_5c = param1; + gMapManager->func_ov00_02083c7c(&local_40, local_5c); + for (s32 iVar2 = 0; iVar2 < 4; iVar2++) { + sVar3 = 0; + local_58.x = 0; + local_58.y = 0; + local_58.z = 0x400; + func_ov000_020a61ac(&local_58, (int) sVar3); + local_4c.x = local_40.x; + local_4c.y = local_40.y; + local_4c.z = local_40.z; + Vec3p_Add(&local_4c, &local_58, &local_4c); + if (iVar2 == 0) { + result = gMapManager->func_ov00_02083f44(&local_4c, false); + } else { + iVar1 = gMapManager->func_ov00_02083f44(&local_4c, false); + if (result <= iVar1) { + result = iVar1; + } + } + sVar3 = sVar3 + 0x4000; + } + return result; +} + +ARM unk32 EquipBombchu::func_ov058_02199fd8(TilePos param1) { + if (data_ov058_0219aee0 != -1) { + if (data_ov058_0219b110 == param1) { + return data_ov058_0219aee0; + } + } + data_ov058_0219aee0 = this->func_ov058_0219a084(param1); + data_ov058_0219b110 = param1; + return data_ov058_0219aee0; +} + +ARM unk32 EquipBombchu::func_ov058_0219a084(TilePos param1) { + Vec3p sp3C[4]; + + Vec3p sp30; + gMapManager->func_ov00_02083c7c(&sp30, param1); + Vec3p sp24; + for (s32 i = 0; i < 4; i++) { + sp24.x = 0; + sp24.y = 0; + sp24.z = FLOAT_TO_Q20(0.25); + func_ov000_020a61ac(&sp24, 0x4000 * i); + sp3C[i] = sp30; + Vec3p_Add(&sp3C[i], &sp24, &sp3C[i]); + sp3C[i].y = gMapManager->func_ov00_02083f44(&sp3C[i], 0); + } + if ((sp3C[0].y == sp3C[1].y) && (sp3C[0].y == sp3C[2].y) && (sp3C[0].y == sp3C[3].y)) { + UnkStruct sp90; + if (gMapManager->func_01ffbf5c(&sp90, &sp3C[0], &sp3C[2], 0x200, 9, 1, &sUnk_02198d00, 0)) { + return 7; + } + if (gMapManager->func_01ffbf5c(&sp90, &sp3C[1], &sp3C[3], 0x200, 9, 1, &sUnk_02198d00, 0)) { + return 7; + } + if (gMapManager->func_01ffbf5c(&sp90, &sp3C[2], &sp3C[0], 0x200, 9, 1, &sUnk_02198d00, 0)) { + return 7; + } + if (gMapManager->func_01ffbf5c(&sp90, &sp3C[3], &sp3C[1], 0x200, 9, 1, &sUnk_02198d00, 0)) { + return 7; + } + return 0; + } + if ((sp3C[0].y == sp3C[1].y) && (sp3C[2].y == sp3C[3].y)) { + if (sp3C[0].y < sp3C[2].y) { + return 4; + } + return 1; + } + if ((sp3C[0].y == sp3C[3].y) && (sp3C[1].y == sp3C[2].y)) { + if (sp3C[0].y < sp3C[1].y) { + return 3; + } + return 2; + } + + Vec3p sp18; + unk32 sp14; + gMapManager->MapData_vfunc_6c(&sp30, &sp14, &sp18); + if ((sp18.x != 0) || (sp18.z != 0)) { + return 5; + } + return 7; +} + +bool EquipBombchu::func_ov058_0219a3b4(TilePos param1) { + switch (this->func_ov058_02199fd8(param1)) { + case 1: + case 2: + case 3: + case 4: + case 7: + return true; + default: + return false; + } +} diff --git a/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp b/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp index 7fac2ba5..acaa3bd3 100644 --- a/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp +++ b/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp @@ -7,8 +7,8 @@ #include "Player/PlayerBase.hpp" #include "Player/PlayerControl.hpp" -extern unk32 data_ov000_020dc7d0; -extern unk32 data_ov000_020dc7e4; +extern const ItemManager_Unk1 data_ov000_020dc7d0; +extern const ItemManager_Unk1 data_ov000_020dc7e4; extern u32 data_ov000_020e9370[]; extern "C" void Vec3p_RotateY(u32, Vec3p *); extern "C" void func_ov005_02102c2c(u32 *param_1, int param_2, Vec3p *param_3, int param_4, int param_5, u32 param_6, @@ -58,200 +58,99 @@ ARM void ActorNavi::func_ov059_0219aa08() { } } -struct UnkStruct { - /* 00 */ u16 mUnk_00; - /* 02 */ unk16 mUnk_02; - /* 04 */ unk16 mUnk_04; - /* 06 */ unk16 mUnk_06; - /* 08 */ unk16 mUnk_08; - /* 09 */ unk8 mUnk_09; - /* 0a */ unk8 mUnk_0a; - /* 0b */ unk8 mUnk_0b; - /* 0c */ unk8 mUnk_0c; - /* 0d */ unk8 mUnk_0d; - /* 0e */ unk8 mUnk_0e; - /* 0f */ unk8 mUnk_0f; - /* 10 */ unk8 mUnk_10; - /* 11 */ unk8 mUnk_11; - /* 12 */ unk8 mUnk_12; - /* 13 */ unk8 mUnk_13; - /* 14 */ Vec3p mUnk_14; - /* 14 */ unk8 mUnk_20[4]; - /* 24 */ -}; - // non-matching ARM void ActorNavi::func_ov059_0219aba8(u32 param1) { - bool bVar1; - LinkStateItem *uVar1; - ItemManager *pIVar3; - int uVar4; - int iVar5; - int uVar6; - bool bVar7; - Vec3p local_134; - Vec3p local_128; - Vec3p local_11c; - Vec3p local_110; - Vec3p local_104; - Vec3p local_e4; - - UnkStruct auStack_e0; - u16 local_bc; - unk16 local_ba; - unk16 local_b8; - unk16 local_b6; - unk16 local_b4; - unk32 local_92; - unk32 local_91; - unk32 local_90; - unk32 local_8f; - unk32 local_88; - unk32 local_87; - unk32 local_86; - unk32 local_85; - unk32 local_84; - unk32 local_83; - UnkStruct auStack_80; - u16 local_5c; - unk16 local_5a; - unk16 local_58; - unk16 local_56; - unk16 local_54; - unk32 local_32; - unk32 local_31; - unk32 local_30; - unk32 local_2f; - unk32 local_28; - unk32 local_27; - unk32 local_26; - unk32 local_25; - unk32 local_24; - unk32 local_23; - ItemManager *puVar1; - switch (param1) { - case 3: - uVar1 = EquipHammer::GetLinkStateItem(); + case 3: { + LinkStateItem *uVar1 = EquipHammer::GetLinkStateItem(); if (uVar1->mUnk_25[2] != 0 && uVar1->mUnk_25[3] != 0) { break; } - local_11c.x = data_027e0fd4->mUnk_020.pos.x; - local_11c.z = data_027e0fd4->mUnk_020.pos.z; + Vec3p local_11c = data_027e0fd4->mUnk_020.pos; - iVar5 = gPlayerPos.y + FLOAT_TO_Q20(0.5); - uVar4 = this->mPos.x; - uVar6 = this->mPos.z; + q20 iVar5 = gPlayerPos.y + FLOAT_TO_Q20(0.5); + q20 uVar4 = this->mPos.x; + q20 uVar6 = this->mPos.z; - auStack_80.mUnk_00 = -1; - auStack_80.mUnk_02 = 0; - auStack_80.mUnk_04 = 0; - auStack_80.mUnk_06 = 0; - auStack_80.mUnk_08 = 0; - auStack_80.mUnk_09 = 0; - auStack_80.mUnk_0a = 0; - auStack_80.mUnk_0b = 0; - auStack_80.mUnk_0c = 0; - auStack_80.mUnk_0d = 0; - auStack_80.mUnk_0e = 0; - auStack_80.mUnk_0f = 0; - auStack_80.mUnk_10 = 0; - auStack_80.mUnk_11 = 0; - auStack_80.mUnk_12 = 0; - local_11c.y = iVar5; + UnkStruct auStack_80; + local_11c.y = iVar5; - local_110.x = uVar4; - local_110.y = iVar5; - // local_110.z = uVar6; + Vec3p local_110 = {uVar4, iVar5, uVar6}; - local_e4.x = local_11c.x; - local_e4.y = iVar5; - local_e4.z = local_11c.z; + Vec3p local_e4 = local_11c; - local_5a = local_5c; - local_58 = local_5c; - local_56 = local_5c; - - if (gMapManager->func_01ffbf5c(&auStack_80, &local_110, &local_11c, this->mUnk_08c.size) ? false : true) { - this->mPos = local_e4; - this->mPrevPos = local_e4; - this->mOffsetPos = local_e4; - } else { + // if (gMapManager->func_01ffbf5c(&auStack_80, &local_110, &local_11c, this->mUnk_08c.size, 0, 0, NULL, 0) ? false + if (gMapManager->func_01ffbf5c(&auStack_80, &local_110, &local_11c, this->mUnk_08c.size, this->mRef.id, + this->mUnk_09c.mUnk_0, this->mUnk_09c.mUnk_4, 0) + ? false + : true) { this->mOffsetPos.x = uVar4; this->mOffsetPos.y = iVar5; this->mOffsetPos.z = uVar6; + } else { + this->mPos.x = local_e4.x; + this->mPos.y = local_e4.y; + this->mPos.z = local_e4.z; + this->mPrevPos = local_e4; + this->mOffsetPos = local_e4; } - break; - case 4: - uVar1 = EquipHammer::GetLinkStateItem(); + } break; + case 4: { + LinkStateItem *uVar1 = EquipHammer::GetLinkStateItem(); if (uVar1->mUnk_25[2] != 0 && uVar1->mUnk_25[3] != 0) { break; } - auStack_e0.mUnk_14.x = data_027e0fd4->mUnk_020.pos.x; - auStack_e0.mUnk_14.y = gPlayerPos.y + FLOAT_TO_Q20(0.5); - auStack_e0.mUnk_14.z = data_027e0fd4->mUnk_020.pos.z; - - bVar1 = gPlayerControl->UpdateAimWorld(&local_104); - bVar7 = false; - local_104.y = auStack_e0.mUnk_14.y; - auStack_80.mUnk_00 = -1; - auStack_80.mUnk_02 = 0; - auStack_80.mUnk_04 = 0; - auStack_80.mUnk_06 = 0; - auStack_80.mUnk_08 = 0; - auStack_80.mUnk_09 = 0; - auStack_80.mUnk_0a = 0; - auStack_80.mUnk_0b = 0; - auStack_80.mUnk_0c = 0; - auStack_80.mUnk_0d = 0; - auStack_80.mUnk_0e = 0; - auStack_80.mUnk_0f = 0; - auStack_80.mUnk_10 = 0; - auStack_80.mUnk_11 = 0; - auStack_80.mUnk_12 = 0; - local_ba = local_bc; - local_b8 = local_bc; - local_b6 = local_bc; + Vec3p local_f8 = data_027e0fd4->mUnk_020.pos; + local_f8.y = gPlayerPos.y + FLOAT_TO_Q20(0.5); + Vec3p local_104; + bool bVar1 = gPlayerControl->UpdateAimWorld(&local_104); + local_104.y = local_f8.y; + UnkStruct auStack_e0; + bool bVar7 = false; + UnkStruct auStack_80; if (bVar1) { - local_128 = auStack_e0.mUnk_14; + s32 id = this->mRef.id; + Vec3p local_128 = local_f8; - // local_134.x = local_104.x; - // local_134.y = auStack_e0.mUnk_14.y; - // local_134.z = local_104.z; + Vec3p local_134; + local_134 = local_104; + local_134.y = local_f8.y; - if (!gMapManager->func_01ffbf5c(&auStack_e0, &local_134, &local_128, this->mUnk_08c.size)) { + if (!gMapManager->func_01ffbf5c(&auStack_e0, &local_134, &local_128, this->mUnk_08c.size, id, + this->mUnk_09c.mUnk_0, this->mUnk_09c.mUnk_4, 0)) { bVar7 = true; } - } - if (!bVar7) { - this->mPos = auStack_e0.mUnk_14; - this->mPrevPos = auStack_e0.mUnk_14; - this->mOffsetPos = auStack_e0.mUnk_14; + if (!bVar7) { + this->mPos = auStack_e0.mUnk_3c; + this->mPrevPos = auStack_e0.mUnk_3c; + this->mOffsetPos = auStack_e0.mUnk_3c; + } + break; + default: + this->func_ov000_020b853c(); + break; } - break; - default: - this->func_ov000_020b853c(); - break; + } } - pIVar3 = gItemManager; + void *pvVar2; switch (param1) { case 3: - pIVar3->func_ov00_020ad538(data_ov000_020dc7d0); - pIVar3->func_ov000_020c0c44(&this->mUnk_2f0); - pIVar3->func_ov000_020c0e5c(&this->mUnk_2f0, 0); + pvVar2 = gItemManager->func_ov00_020ad538(&data_ov000_020dc7d0); + this->mUnk_2f0.func_ov000_020c0c44(pvVar2); + this->mUnk_2f0.func_ov000_020c0e5c(0); break; case 4: this->mUnk_348 = 0; - pIVar3->func_ov00_020ad538(data_ov000_020dc7e4); - pIVar3->func_ov000_020c0c44(&this->mUnk_2f0); - pIVar3->func_ov000_020c0e5c(&this->mUnk_2f0, 1); + pvVar2 = gItemManager->func_ov00_020ad538(&data_ov000_020dc7e4); + this->mUnk_2f0.func_ov000_020c0c44(pvVar2); + this->mUnk_2f0.func_ov000_020c0e5c(1); break; default: break; diff --git a/src/59_Hammer/Player/EquipHammer.cpp b/src/59_Hammer/Player/EquipHammer.cpp index cfccec9b..3928cb6e 100644 --- a/src/59_Hammer/Player/EquipHammer.cpp +++ b/src/59_Hammer/Player/EquipHammer.cpp @@ -161,7 +161,7 @@ ARM void LinkStateItem::func_ov059_02198ffc() { local_20 = *this->GetPlayerPos(); Vec3p_Sub(&local_14, &local_20, &local_14); - dest = Atan2(local_14.x, local_14.z); + dest = FX_Atan2Idx(local_14.x, local_14.z); ApproachAngle_thunk(this->GetPlayerAngle(), dest, 0x2000); } diff --git a/src/ITCM/Map/MapManager.cpp b/src/ITCM/Map/MapManager.cpp index 467b0990..2cf203c7 100644 --- a/src/ITCM/Map/MapManager.cpp +++ b/src/ITCM/Map/MapManager.cpp @@ -1,6 +1,7 @@ #include "Map/MapManager.hpp" -bool MapManager::func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Vec4p *param4) {} -bool MapManager::func_01ffbf5c(struct UnkStruct *param1, Vec3p *param2, Vec3p *param3, s32 length) {} +bool MapManager::func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Sphere *param4) {} +bool MapManager::func_01ffbf5c(struct UnkStruct *param1, Vec3p *param2, Vec3p *param3, s32 length, unk32 param5, unk32 param6, + UnkStruct_ov000_020beba8 *param7, unk32 param8) {} bool MapManager::func_01ffc118(s32 *param1, Vec3p *param2, Vec3p *param3, s32 param4, s32 *param5, u32 param6, s32 *param7) {} bool MapManager::func_01ffd1e0(s32 *param1, Vec3p *param2, Vec3p *param3, s32 param4, s32 *param5, u32 param6, s32 *param7) {} diff --git a/tools/configure.py b/tools/configure.py index f7da7237..e3bf934b 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -207,7 +207,7 @@ def check_can_run_dsd() -> bool: version = "v" + version # If it's not the correct version, Ninja will download it and then rerun this script - return version == DSD_VERSION + return version == DSD_VERSION or args.dsd is not None except subprocess.CalledProcessError: return False except FileNotFoundError: