diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index d2166e0c9..46cf38629 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -1874,7 +1874,7 @@ _ZN10PlayerBase17EquipCollidesWithEP8Cylinderi kind:function(arm,size=0x18) addr _ZN10PlayerBase18EquipItem_vfunc_2cEv kind:function(arm,size=0x38) addr:0x020a7cfc _ZN10PlayerBase9SetHealthEs kind:function(arm,size=0x58) addr:0x020a7d34 _ZN10PlayerBase9AddHealthEs kind:function(arm,size=0x68) addr:0x020a7d8c -_ZN10PlayerBase18TeleportToEntranceEib kind:function(arm,size=0x7c) addr:0x020a7df4 +_ZN10PlayerBase18TeleportToEntranceEtb kind:function(arm,size=0x7c) addr:0x020a7df4 _ZN10PlayerBase8TeleportEP5Vec3psibb kind:function(arm,size=0x118) addr:0x020a7e70 _ZN10PlayerBase22TeleportToLastEntranceEb kind:function(arm,size=0x1c) addr:0x020a7f88 _ZN13LinkStateBase8vfunc_00Ev kind:function(thumb,size=0x2) addr:0x020a7fa4 @@ -1901,15 +1901,15 @@ _ZN13LinkStateBase18func_ov00_020a827cEij kind:function(arm,size=0x18) addr:0x02 _ZN13LinkStateBase18func_ov00_020a8294Eij kind:function(arm,size=0x18) addr:0x020a8294 _ZN13LinkStateBase18func_ov00_020a82acEv kind:function(arm,size=0x18) addr:0x020a82ac _ZN13LinkStateBase12ApplyImpulseEii kind:function(arm,size=0x9c) addr:0x020a82c4 -_ZN13LinkStateBase18func_ov00_020a8360Ei kind:function(arm,size=0x30) addr:0x020a8360 -_ZN13LinkStateBase18func_ov00_020a8390EiPv kind:function(arm,size=0x12c) addr:0x020a8390 -_ZN13LinkStateBase18func_ov00_020a84bcEi kind:function(arm,size=0x4c) addr:0x020a84bc -_ZN13LinkStateBase18func_ov00_020a8508Ev kind:function(arm,size=0x34) addr:0x020a8508 +_ZN13LinkStateBase18func_ov00_020a8360Ej kind:function(arm,size=0x30) addr:0x020a8360 +_ZN13LinkStateBase18func_ov00_020a8390EjP19Actor_UnkStruct_020 kind:function(arm,size=0x12c) addr:0x020a8390 +_ZN13LinkStateBase18func_ov00_020a84bcEb kind:function(arm,size=0x4c) addr:0x020a84bc +_ZN13LinkStateBase18func_ov00_020a8508Ei kind:function(arm,size=0x34) addr:0x020a8508 _ZN13LinkStateBase18func_ov00_020a853cEP5Vec3p kind:function(arm,size=0x70) addr:0x020a853c -_ZN13LinkStateBase8TeleportEP5Vec3psibb kind:function(arm,size=0x34) addr:0x020a85ac -_ZN13LinkStateBase19PlayerBase_vfunc_38EP5Vec3p kind:function(arm,size=0x1c) addr:0x020a85e0 +_ZN13LinkStateBase8TeleportEP5Vec3p kind:function(arm,size=0x34) addr:0x020a85ac +_ZN13LinkStateBase18TeleportToEntranceEt kind:function(arm,size=0x1c) addr:0x020a85e0 _ZN13LinkStateBase23PlayerLinkBase_vfunc_74Ev kind:function(arm,size=0x18) addr:0x020a85fc -_ZN13LinkStateBase23PlayerLinkBase_vfunc_88Ev kind:function(arm,size=0x18) addr:0x020a8614 +_ZN13LinkStateBase23PlayerLinkBase_vfunc_88Ei kind:function(arm,size=0x18) addr:0x020a8614 _ZN13LinkStateBase24Get_PlayerLinkBase_Unk48Ev kind:function(arm,size=0xc) addr:0x020a862c _ZN13LinkStateBase18func_ov00_020a8638Ei kind:function(arm,size=0x30) addr:0x020a8638 _ZN13LinkStateBase26Clear_PlayerLinkBase_Unk48Et kind:function(arm,size=0x18) addr:0x020a8668 @@ -1921,11 +1921,11 @@ _ZN13LinkStateBase18func_ov00_020a8774EP5Vec3pi kind:function(arm,size=0xd0) add _ZN13LinkStateBase18func_ov00_020a8844EP5Vec3pbb kind:function(arm,size=0x110) addr:0x020a8844 _ZN13LinkStateBase18func_ov00_020a8954EbPi kind:function(arm,size=0x40) addr:0x020a8954 _ZN13LinkStateBase18func_ov00_020a8994Ev kind:function(arm,size=0x28) addr:0x020a8994 -_ZN13LinkStateBase18func_ov00_020a89bcEP24LinkStateBase_UnkStruct1i kind:function(arm,size=0x4c) addr:0x020a89bc -_ZN13LinkStateBase18func_ov00_020a8a08Ei kind:function(arm,size=0x44) addr:0x020a8a08 -_ZN13LinkStateBase18func_ov00_020a8a4cEPKvi kind:function(arm,size=0x44) addr:0x020a8a4c -_ZN13LinkStateBase18func_ov00_020a8a90Ei kind:function(arm,size=0x20) addr:0x020a8a90 -_ZN13LinkStateBase18func_ov00_020a8ab0Ei kind:function(arm,size=0x20) addr:0x020a8ab0 +_ZN13LinkStateBase18func_ov00_020a89bcEP24LinkStateBase_UnkStruct1c kind:function(arm,size=0x4c) addr:0x020a89bc +_ZN13LinkStateBase18func_ov00_020a8a08EP24LinkStateBase_UnkStruct1 kind:function(arm,size=0x44) addr:0x020a8a08 +_ZN13LinkStateBase18func_ov00_020a8a4cEP24LinkStateBase_UnkStruct1c kind:function(arm,size=0x44) addr:0x020a8a4c +_ZN13LinkStateBase18func_ov00_020a8a90EP24LinkStateBase_UnkStruct1 kind:function(arm,size=0x20) addr:0x020a8a90 +_ZN13LinkStateBase18func_ov00_020a8ab0EPi kind:function(arm,size=0x20) addr:0x020a8ab0 _ZN13LinkStateBase18func_ov00_020a8ad0Ei kind:function(arm,size=0x34) addr:0x020a8ad0 _ZN13LinkStateBase18func_ov00_020a8b04Eib kind:function(arm,size=0x38) addr:0x020a8b04 _ZN13LinkStateBase18func_ov00_020a8b3cEi kind:function(arm,size=0x44) addr:0x020a8b3c @@ -1938,7 +1938,7 @@ _ZN13LinkStateBase20GetPlayerControlDataEv kind:function(arm,size=0x10) addr:0x0 _ZN13LinkStateBase10GetStateIdEv kind:function(arm,size=0x10) addr:0x020a8bf8 _ZN13LinkStateBase9GetHealthEv kind:function(arm,size=0xc) addr:0x020a8c08 _ZN13LinkStateBase25GetCurrentCharacterHealthEv kind:function(arm,size=0x20) addr:0x020a8c14 -_ZN13LinkStateBase18func_ov00_020a8c34Ev kind:function(arm,size=0x18) addr:0x020a8c34 +_ZN13LinkStateBase18func_ov00_020a8c34EiP5Vec3pi kind:function(arm,size=0x18) addr:0x020a8c34 _ZN13LinkStateBase12GetPlayerPosEv kind:function(arm,size=0xc) addr:0x020a8c4c _ZN13LinkStateBase12GetPlayerVelEv kind:function(arm,size=0xc) addr:0x020a8c58 _ZN13LinkStateBase18func_ov00_020a8c64Ev kind:function(arm,size=0x14) addr:0x020a8c64 @@ -2313,7 +2313,7 @@ _ZN17PlayerControlData19func_ov000_020b4460Ei kind:function(arm,size=0x74) addr: _ZN17PlayerControlData19func_ov000_020b44d4Eij kind:function(arm,size=0x84) addr:0x020b44d4 _ZN17PlayerControlData19func_ov000_020b4558Eij kind:function(arm,size=0x88) addr:0x020b4558 _ZN17PlayerControlData19func_ov000_020b45e0Ev kind:function(arm,size=0x18) addr:0x020b45e0 -_ZN17PlayerControlData19func_ov000_020b45f8EPicc kind:function(arm,size=0x54) addr:0x020b45f8 +_ZN17PlayerControlData19func_ov000_020b45f8EP24LinkStateBase_UnkStruct1cc kind:function(arm,size=0x54) addr:0x020b45f8 _ZN17PlayerControlData19func_ov000_020b464cEPicc kind:function(arm,size=0x2c) addr:0x020b464c _ZN17PlayerControlData8vfunc_60Eiii kind:function(arm,size=0x2c) addr:0x020b4678 _ZN17PlayerControlData8vfunc_68Eii kind:function(arm,size=0x34) addr:0x020b46a4 @@ -2565,7 +2565,7 @@ _ZN14PlayerLinkBase19func_ov000_020bc808Ev kind:function(arm,size=0x44) addr:0x0 _ZN14PlayerLinkBase19func_ov000_020bc84cEv kind:function(arm,size=0x8) addr:0x020bc84c _ZN14PlayerLinkBase19func_ov000_020bc854EP5Vec3p kind:function(arm,size=0x64) addr:0x020bc854 _ZN14PlayerLinkBase13UpdateTilePosEP5Vec3pi kind:function(arm,size=0x54) addr:0x020bc8b8 -_ZN14PlayerLinkBase19func_ov000_020bc90cEPii kind:function(arm,size=0x54) addr:0x020bc90c +_ZN14PlayerLinkBase19func_ov000_020bc90cEP5Vec3pi kind:function(arm,size=0x54) addr:0x020bc90c _ZN14PlayerLinkBase19func_ov000_020bc960Eiii kind:function(arm,size=0xec) addr:0x020bc960 _ZN14PlayerLinkBase22TeleportToLastEntranceEb kind:function(thumb,size=0x48) addr:0x020bca4c _ZN14PlayerLinkBase18TeleportToEntranceEib kind:function(arm,size=0x44) addr:0x020bca94 @@ -2594,7 +2594,7 @@ _ZN14PlayerLinkBase19func_ov000_020bd304Ev kind:function(arm,size=0x14) addr:0x0 _ZN14PlayerLinkBase19func_ov000_020bd318Ev kind:function(arm,size=0x48) addr:0x020bd318 _ZN14PlayerLinkBase8vfunc_7cEv kind:function(arm,size=0x4) addr:0x020bd360 _ZN14PlayerLinkBase18SetPlayerCharacterEi kind:function(arm,size=0x4c) addr:0x020bd364 -_ZN14PlayerLinkBase19func_ov000_020bd3b0Eiiis kind:function(arm,size=0x128) addr:0x020bd3b0 +_ZN14PlayerLinkBase19func_ov000_020bd3b0EiP8ActorRefis kind:function(arm,size=0x128) addr:0x020bd3b0 _ZN14PlayerLinkBase11SetPositionEP5Vec3p kind:function(arm,size=0x24) addr:0x020bd4d8 _ZN14PlayerLinkBase8SetAngleEPs kind:function(arm,size=0x14) addr:0x020bd4fc _ZN14PlayerLinkBase19func_ov000_020bd510EiPi kind:function(arm,size=0xe0) addr:0x020bd510 @@ -2712,11 +2712,11 @@ func_ov000_020c0cc8 kind:function(arm,size=0x54) addr:0x020c0cc8 func_ov000_020c0d1c kind:function(arm,size=0x30) addr:0x020c0d1c func_ov000_020c0d4c kind:function(arm,size=0x8) addr:0x020c0d4c func_ov000_020c0d54 kind:function(arm,size=0x14) addr:0x020c0d54 -func_ov000_020c0d68 kind:function(arm,size=0x8) addr:0x020c0d68 +_ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0d68Ev 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 _ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0e04Ev kind:function(arm,size=0x20) addr:0x020c0e04 -func_ov000_020c0e24 kind:function(arm,size=0x38) addr:0x020c0e24 +_ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0e24Ei kind:function(arm,size=0x38) addr:0x020c0e24 _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 @@ -4777,11 +4777,12 @@ data_ov000_020e5640 kind:data(any) addr:0x020e5640 data_ov000_020e5644 kind:data(any) addr:0x020e5644 data_ov000_020e5648 kind:data(any) addr:0x020e5648 data_ov000_020e564c kind:data(any) addr:0x020e564c -data_ov000_020e5650 kind:data(any) addr:0x020e5650 -data_ov000_020e5674 kind:data(any) addr:0x020e5674 +gShipParts kind:data(any) addr:0x020e5650 local +data_ov000_020e5670$2102 kind:data(any) addr:0x020e5670 +data_ov000_020e5674$2103 kind:data(any) addr:0x020e5674 data_ov000_020e5684 kind:data(any) addr:0x020e5684 data_ov000_020e5694 kind:data(any) addr:0x020e5694 -_ZTV13LinkStateBase kind:data(any) addr:0x020e56ac +_ZTV13LinkStateBase kind:data(any) addr:0x020e56a4 _ZN13LinkStateMove19data_ov000_020e56f0E kind:data(any) addr:0x020e56f0 data_ov000_020e56f4$1005 kind:data(any) addr:0x020e56f4 local _ZTV13LinkStateMove kind:data(any) addr:0x020e56f8 @@ -4838,7 +4839,7 @@ _ZTV13LinkStateItem kind:data(any) addr:0x020e5a40 @1121 kind:data(any) addr:0x020e5aa0 @1120 kind:data(any) addr:0x020e5aa4 @1119 kind:data(any) addr:0x020e5aa8 -gShipParts kind:data(any) addr:0x020e5aac +gShipParts kind:data(any) addr:0x020e5aac local _ZN15LinkStateDamage19data_ov000_020e5accE kind:data(any) addr:0x020e5acc _ZN15LinkStateDamage19data_ov000_020e5adcE kind:data(any) addr:0x020e5adc _ZN15LinkStateDamage19data_ov000_020e5aecE kind:data(any) addr:0x020e5aec diff --git a/config/eur/arm9/overlays/ov004/relocs.txt b/config/eur/arm9/overlays/ov004/relocs.txt index fe9777c46..3ec0e0ed8 100644 --- a/config/eur/arm9/overlays/ov004/relocs.txt +++ b/config/eur/arm9/overlays/ov004/relocs.txt @@ -2213,7 +2213,7 @@ from:0x0210adb6 kind:thumb_call_arm to:0x0203780c module:main from:0x0210adbe kind:thumb_call_arm to:0x020350ac module:main from:0x0210adc4 kind:thumb_call to:0x0210adf4 module:overlay(4) from:0x0210adca kind:thumb_call_arm to:0x0202ea0c module:main -from:0x0210ade0 kind:load to:0x020e56ac module:overlay(0) +from:0x0210ade0 kind:load to:0x020e56a4 add:8 module:overlay(0) from:0x0210adec kind:thumb_call_arm to:0x0202ea0c module:main from:0x0210ae02 kind:thumb_call to:0x0210add4 module:overlay(4) from:0x0210ae40 kind:thumb_call_arm to:0x0204f614 module:main diff --git a/config/eur/arm9/overlays/ov005/symbols.txt b/config/eur/arm9/overlays/ov005/symbols.txt index fd0256ba7..2b00f13bc 100644 --- a/config/eur/arm9/overlays/ov005/symbols.txt +++ b/config/eur/arm9/overlays/ov005/symbols.txt @@ -292,7 +292,7 @@ _ZN13LinkStateBase19func_ov005_02110228Eiiicc kind:function(arm,size=0x364) addr _ZN13LinkStateBase19func_ov005_0211058cEi kind:function(arm,size=0x270) addr:0x0211058c _ZN13LinkStateBase19func_ov005_021107fcEv kind:function(arm,size=0x70) addr:0x021107fc _ZN13LinkStateBase19func_ov005_0211086cEi kind:function(arm,size=0x110) addr:0x0211086c -_ZN13LinkStateBase19func_ov005_0211097cEicc kind:function(arm,size=0x44) addr:0x0211097c +_ZN13LinkStateBase19func_ov005_0211097cEP24LinkStateBase_UnkStruct1cc kind:function(arm,size=0x44) addr:0x0211097c _ZN13LinkStateBase19func_ov005_021109c0Ev kind:function(arm,size=0x180) addr:0x021109c0 _ZN13LinkStateBase19func_ov005_02110b40Ei kind:function(arm,size=0x74) addr:0x02110b40 _ZN13LinkStateBase19func_ov005_02110bb4Ev kind:function(arm,size=0x34) addr:0x02110bb4 diff --git a/config/eur/arm9/overlays/ov023/symbols.txt b/config/eur/arm9/overlays/ov023/symbols.txt index 2ed12c71a..05ecf2a7e 100644 --- a/config/eur/arm9/overlays/ov023/symbols.txt +++ b/config/eur/arm9/overlays/ov023/symbols.txt @@ -271,7 +271,7 @@ func_ov023_02177a88 kind:function(arm,size=0x1c) addr:0x02177a88 func_ov023_02177aa4 kind:function(arm,size=0xa8) addr:0x02177aa4 func_ov023_02177b4c kind:function(arm,size=0x4) addr:0x02177b4c func_ov023_02177b50 kind:function(arm,size=0x50) addr:0x02177b50 -func_ov023_02177ba0 kind:function(arm,size=0x284) addr:0x02177ba0 +_ZN13LinkStateBase19func_ov023_02177ba0EP5Vec3p kind:function(arm,size=0x284) addr:0x02177ba0 func_ov023_02177e24 kind:function(arm,size=0x3c) addr:0x02177e24 func_ov023_02177e60 kind:function(arm,size=0x1c) addr:0x02177e60 _ZN10PlayerLink19func_ov023_02177e7cEv kind:function(arm,size=0x8) addr:0x02177e7c diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 2b0059c34..4095b3ac1 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -1874,7 +1874,7 @@ _ZN10PlayerBase17EquipCollidesWithEP8Cylinderi kind:function(arm,size=0x18) addr _ZN10PlayerBase18EquipItem_vfunc_2cEv kind:function(arm,size=0x38) addr:0x020a7c9c _ZN10PlayerBase9SetHealthEs kind:function(arm,size=0x58) addr:0x020a7cd4 _ZN10PlayerBase9AddHealthEs kind:function(arm,size=0x68) addr:0x020a7d2c -_ZN10PlayerBase18TeleportToEntranceEib kind:function(arm,size=0x7c) addr:0x020a7d94 +_ZN10PlayerBase18TeleportToEntranceEtb kind:function(arm,size=0x7c) addr:0x020a7d94 _ZN10PlayerBase8TeleportEP5Vec3psibb kind:function(arm,size=0x118) addr:0x020a7e10 _ZN10PlayerBase22TeleportToLastEntranceEb kind:function(arm,size=0x1c) addr:0x020a7f28 _ZN13LinkStateBase8vfunc_00Ev kind:function(thumb,size=0x2) addr:0x020a7f44 @@ -1901,15 +1901,15 @@ _ZN13LinkStateBase18func_ov00_020a827cEij kind:function(arm,size=0x18) addr:0x02 _ZN13LinkStateBase18func_ov00_020a8294Eij kind:function(arm,size=0x18) addr:0x020a8234 _ZN13LinkStateBase18func_ov00_020a82acEv kind:function(arm,size=0x18) addr:0x020a824c _ZN13LinkStateBase12ApplyImpulseEii kind:function(arm,size=0x9c) addr:0x020a8264 -_ZN13LinkStateBase18func_ov00_020a8360Ei kind:function(arm,size=0x30) addr:0x020a8300 -_ZN13LinkStateBase18func_ov00_020a8390EiPv kind:function(arm,size=0x12c) addr:0x020a8330 -_ZN13LinkStateBase18func_ov00_020a84bcEi kind:function(arm,size=0x4c) addr:0x020a845c -_ZN13LinkStateBase18func_ov00_020a8508Ev kind:function(arm,size=0x34) addr:0x020a84a8 +_ZN13LinkStateBase18func_ov00_020a8360Ej kind:function(arm,size=0x30) addr:0x020a8300 +_ZN13LinkStateBase18func_ov00_020a8390EjP19Actor_UnkStruct_020 kind:function(arm,size=0x12c) addr:0x020a8330 +_ZN13LinkStateBase18func_ov00_020a84bcEb kind:function(arm,size=0x4c) addr:0x020a845c +_ZN13LinkStateBase18func_ov00_020a8508Ei kind:function(arm,size=0x34) addr:0x020a84a8 _ZN13LinkStateBase18func_ov00_020a853cEP5Vec3p kind:function(arm,size=0x70) addr:0x020a84dc -_ZN13LinkStateBase8TeleportEP5Vec3psibb kind:function(arm,size=0x34) addr:0x020a854c -_ZN13LinkStateBase19PlayerBase_vfunc_38EP5Vec3p kind:function(arm,size=0x1c) addr:0x020a8580 +_ZN13LinkStateBase8TeleportEP5Vec3p kind:function(arm,size=0x34) addr:0x020a854c +_ZN13LinkStateBase18TeleportToEntranceEt kind:function(arm,size=0x1c) addr:0x020a8580 _ZN13LinkStateBase23PlayerLinkBase_vfunc_74Ev kind:function(arm,size=0x18) addr:0x020a859c -_ZN13LinkStateBase23PlayerLinkBase_vfunc_88Ev kind:function(arm,size=0x18) addr:0x020a85b4 +_ZN13LinkStateBase23PlayerLinkBase_vfunc_88Ei kind:function(arm,size=0x18) addr:0x020a85b4 _ZN13LinkStateBase24Get_PlayerLinkBase_Unk48Ev kind:function(arm,size=0xc) addr:0x020a85cc _ZN13LinkStateBase18func_ov00_020a8638Ei kind:function(arm,size=0x30) addr:0x020a85d8 _ZN13LinkStateBase26Clear_PlayerLinkBase_Unk48Et kind:function(arm,size=0x18) addr:0x020a8608 @@ -1921,11 +1921,11 @@ _ZN13LinkStateBase18func_ov00_020a8774EP5Vec3pi kind:function(arm,size=0xd0) add _ZN13LinkStateBase18func_ov00_020a8844EP5Vec3pbb kind:function(arm,size=0x110) addr:0x020a87e4 _ZN13LinkStateBase18func_ov00_020a8954EbPi kind:function(arm,size=0x40) addr:0x020a88f4 _ZN13LinkStateBase18func_ov00_020a8994Ev kind:function(arm,size=0x28) addr:0x020a8934 -_ZN13LinkStateBase18func_ov00_020a89bcEP24LinkStateBase_UnkStruct1i kind:function(arm,size=0x4c) addr:0x020a895c -_ZN13LinkStateBase18func_ov00_020a8a08Ei kind:function(arm,size=0x44) addr:0x020a89a8 -_ZN13LinkStateBase18func_ov00_020a8a4cEPKvi kind:function(arm,size=0x44) addr:0x020a89ec -_ZN13LinkStateBase18func_ov00_020a8a90Ei kind:function(arm,size=0x20) addr:0x020a8a30 -_ZN13LinkStateBase18func_ov00_020a8ab0Ei kind:function(arm,size=0x20) addr:0x020a8a50 +_ZN13LinkStateBase18func_ov00_020a89bcEP24LinkStateBase_UnkStruct1c kind:function(arm,size=0x4c) addr:0x020a895c +_ZN13LinkStateBase18func_ov00_020a8a08EP24LinkStateBase_UnkStruct1 kind:function(arm,size=0x44) addr:0x020a89a8 +_ZN13LinkStateBase18func_ov00_020a8a4cEP24LinkStateBase_UnkStruct1c kind:function(arm,size=0x44) addr:0x020a89ec +_ZN13LinkStateBase18func_ov00_020a8a90EP24LinkStateBase_UnkStruct1 kind:function(arm,size=0x20) addr:0x020a8a30 +_ZN13LinkStateBase18func_ov00_020a8ab0EPi kind:function(arm,size=0x20) addr:0x020a8a50 _ZN13LinkStateBase18func_ov00_020a8ad0Ei kind:function(arm,size=0x34) addr:0x020a8a70 _ZN13LinkStateBase18func_ov00_020a8b04Eib kind:function(arm,size=0x38) addr:0x020a8aa4 _ZN13LinkStateBase18func_ov00_020a8b3cEi kind:function(arm,size=0x44) addr:0x020a8adc @@ -1938,7 +1938,7 @@ _ZN13LinkStateBase20GetPlayerControlDataEv kind:function(arm,size=0x10) addr:0x0 _ZN13LinkStateBase10GetStateIdEv kind:function(arm,size=0x10) addr:0x020a8b98 _ZN13LinkStateBase9GetHealthEv kind:function(arm,size=0xc) addr:0x020a8ba8 _ZN13LinkStateBase25GetCurrentCharacterHealthEv kind:function(arm,size=0x20) addr:0x020a8bb4 -_ZN13LinkStateBase18func_ov00_020a8c34Ev kind:function(arm,size=0x18) addr:0x020a8bd4 +_ZN13LinkStateBase18func_ov00_020a8c34EiP5Vec3pi kind:function(arm,size=0x18) addr:0x020a8bd4 _ZN13LinkStateBase12GetPlayerPosEv kind:function(arm,size=0xc) addr:0x020a8bec _ZN13LinkStateBase12GetPlayerVelEv kind:function(arm,size=0xc) addr:0x020a8bf8 _ZN13LinkStateBase18func_ov00_020a8c64Ev kind:function(arm,size=0x14) addr:0x020a8c04 @@ -2313,7 +2313,7 @@ _ZN17PlayerControlData19func_ov000_020b4460Ei kind:function(arm,size=0x74) addr: _ZN17PlayerControlData19func_ov000_020b44d4Eij kind:function(arm,size=0x84) addr:0x020b4474 _ZN17PlayerControlData19func_ov000_020b4558Eij kind:function(arm,size=0x88) addr:0x020b44f8 _ZN17PlayerControlData19func_ov000_020b45e0Ev kind:function(arm,size=0x18) addr:0x020b4580 -_ZN17PlayerControlData19func_ov000_020b45f8EPicc kind:function(arm,size=0x54) addr:0x020b4598 +_ZN17PlayerControlData19func_ov000_020b45f8EP24LinkStateBase_UnkStruct1cc kind:function(arm,size=0x54) addr:0x020b4598 _ZN17PlayerControlData19func_ov000_020b464cEPicc kind:function(arm,size=0x2c) addr:0x020b45ec _ZN17PlayerControlData8vfunc_60Eiii kind:function(arm,size=0x2c) addr:0x020b4618 _ZN17PlayerControlData8vfunc_68Eii kind:function(arm,size=0x34) addr:0x020b4644 @@ -2553,7 +2553,7 @@ _ZN14PlayerLinkBase19func_ov000_020bc320Eiii kind:function(arm,size=0x78) addr:0 _ZN14PlayerLinkBase19func_ov000_020bc398Eii kind:function(arm,size=0xd4) addr:0x020bc338 _ZN14PlayerLinkBase19GetCurrentCharacterEv kind:function(arm,size=0x20) addr:0x020bc40c _ZN14PlayerLinkBase9GetHealthEi kind:function(arm,size=0x8) addr:0x020bc42c -_ZN14PlayerLinkBase9AddHealthEsi kind:function(arm,size=0x18) addr:0x020bc434 +_ZN14PlayerLinkBase10AddHealth2Esi kind:function(arm,size=0x18) addr:0x020bc434 _ZN14PlayerLinkBase19func_ov000_020bc4acEv kind:function(arm,size=0x54) addr:0x020bc44c _ZN14PlayerLinkBase10GetStateIdEv kind:function(arm,size=0x20) addr:0x020bc4a0 _ZN14PlayerLinkBase19func_ov000_020bc520EP5Vec3p kind:function(arm,size=0x1b4) addr:0x020bc4c0 @@ -2565,7 +2565,7 @@ _ZN14PlayerLinkBase19func_ov000_020bc808Ev kind:function(arm,size=0x44) addr:0x0 _ZN14PlayerLinkBase19func_ov000_020bc84cEv kind:function(arm,size=0x8) addr:0x020bc7ec _ZN14PlayerLinkBase19func_ov000_020bc854EP5Vec3p kind:function(arm,size=0x64) addr:0x020bc7f4 _ZN14PlayerLinkBase13UpdateTilePosEP5Vec3pi kind:function(arm,size=0x54) addr:0x020bc858 -_ZN14PlayerLinkBase19func_ov000_020bc90cEPii kind:function(arm,size=0x54) addr:0x020bc8ac +_ZN14PlayerLinkBase19func_ov000_020bc90cEP5Vec3pi kind:function(arm,size=0x54) addr:0x020bc8ac _ZN14PlayerLinkBase19func_ov000_020bc960Eiii kind:function(arm,size=0xec) addr:0x020bc900 _ZN14PlayerLinkBase22TeleportToLastEntranceEb kind:function(thumb,size=0x48) addr:0x020bc9ec _ZN14PlayerLinkBase18TeleportToEntranceEib kind:function(arm,size=0x44) addr:0x020bca34 @@ -2594,7 +2594,7 @@ _ZN14PlayerLinkBase19func_ov000_020bd304Ev kind:function(arm,size=0x14) addr:0x0 _ZN14PlayerLinkBase19func_ov000_020bd318Ev kind:function(arm,size=0x48) addr:0x020bd2b8 _ZN14PlayerLinkBase8vfunc_7cEv kind:function(arm,size=0x4) addr:0x020bd300 _ZN14PlayerLinkBase18SetPlayerCharacterEi kind:function(arm,size=0x4c) addr:0x020bd304 -_ZN14PlayerLinkBase19func_ov000_020bd3b0Eiiis kind:function(arm,size=0x128) addr:0x020bd350 +_ZN14PlayerLinkBase19func_ov000_020bd3b0EiP8ActorRefis kind:function(arm,size=0x128) addr:0x020bd350 _ZN14PlayerLinkBase11SetPositionEP5Vec3p kind:function(arm,size=0x24) addr:0x020bd478 _ZN14PlayerLinkBase8SetAngleEPs kind:function(arm,size=0x14) addr:0x020bd49c _ZN14PlayerLinkBase19func_ov000_020bd510EiPi kind:function(arm,size=0xe0) addr:0x020bd4b0 @@ -2712,11 +2712,11 @@ func_ov000_020c0cc8 kind:function(arm,size=0x54) addr:0x020c0c68 func_ov000_020c0d1c kind:function(arm,size=0x30) addr:0x020c0cbc func_ov000_020c0d4c kind:function(arm,size=0x8) addr:0x020c0cec func_ov000_020c0d54 kind:function(arm,size=0x14) addr:0x020c0cf4 -func_ov000_020c0d68 kind:function(arm,size=0x8) addr:0x020c0d08 +_ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0d68Ev 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 _ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0e04Ev kind:function(arm,size=0x20) addr:0x020c0da4 -func_ov000_020c0e24 kind:function(arm,size=0x38) addr:0x020c0dc4 +_ZN24UnkStruct_ov000_020c0c0819func_ov000_020c0e24Ei kind:function(arm,size=0x38) addr:0x020c0dc4 _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 @@ -4777,11 +4777,12 @@ data_ov000_020e5640 kind:data(any) addr:0x020e55e0 data_ov000_020e5644 kind:data(any) addr:0x020e55e4 data_ov000_020e5648 kind:data(any) addr:0x020e55e8 data_ov000_020e564c kind:data(any) addr:0x020e55ec -data_ov000_020e5650 kind:data(any) addr:0x020e55f0 -data_ov000_020e5674 kind:data(any) addr:0x020e5614 +gShipParts kind:data(any) addr:0x020e55f0 local +data_ov000_020e5670$2102 kind:data(any) addr:0x020e5610 +data_ov000_020e5674$2103 kind:data(any) addr:0x020e5614 data_ov000_020e5684 kind:data(any) addr:0x020e5624 data_ov000_020e5694 kind:data(any) addr:0x020e5634 -_ZTV13LinkStateBase kind:data(any) addr:0x020e564c +_ZTV13LinkStateBase kind:data(any) addr:0x020e5644 _ZN13LinkStateMove19data_ov000_020e56f0E kind:data(any) addr:0x020e5690 data_ov000_020e56f4$1005 kind:data(any) addr:0x020e5694 local _ZTV13LinkStateMove kind:data(any) addr:0x020e5698 @@ -4838,7 +4839,7 @@ _ZTV13LinkStateItem kind:data(any) addr:0x020e59e0 @1121 kind:data(any) addr:0x020e5a40 @1120 kind:data(any) addr:0x020e5a44 @1119 kind:data(any) addr:0x020e5a48 -gShipParts kind:data(any) addr:0x020e5a4c +gShipParts kind:data(any) addr:0x020e5a4c local _ZN15LinkStateDamage19data_ov000_020e5accE kind:data(any) addr:0x020e5a6c _ZN15LinkStateDamage19data_ov000_020e5adcE kind:data(any) addr:0x020e5a7c _ZN15LinkStateDamage19data_ov000_020e5aecE kind:data(any) addr:0x020e5a8c diff --git a/config/usa/arm9/overlays/ov004/relocs.txt b/config/usa/arm9/overlays/ov004/relocs.txt index 07a60ef96..1b95631e3 100644 --- a/config/usa/arm9/overlays/ov004/relocs.txt +++ b/config/usa/arm9/overlays/ov004/relocs.txt @@ -2213,7 +2213,7 @@ from:0x0210ad36 kind:thumb_call_arm to:0x020377c8 module:main from:0x0210ad3e kind:thumb_call_arm to:0x02035068 module:main from:0x0210ad44 kind:thumb_call to:0x0210ad74 module:overlay(4) from:0x0210ad4a kind:thumb_call_arm to:0x0202ea08 module:main -from:0x0210ad60 kind:load to:0x020e564c module:overlay(0) +from:0x0210ad60 kind:load to:0x020e5644 add:8 module:overlay(0) from:0x0210ad6c kind:thumb_call_arm to:0x0202ea08 module:main from:0x0210ad82 kind:thumb_call to:0x0210ad54 module:overlay(4) from:0x0210adc0 kind:thumb_call_arm to:0x0204f5d0 module:main diff --git a/config/usa/arm9/overlays/ov005/symbols.txt b/config/usa/arm9/overlays/ov005/symbols.txt index 5b9e26d63..213f584cd 100644 --- a/config/usa/arm9/overlays/ov005/symbols.txt +++ b/config/usa/arm9/overlays/ov005/symbols.txt @@ -292,7 +292,7 @@ _ZN13LinkStateBase19func_ov005_02110228Eiiicc kind:function(arm,size=0x364) addr _ZN13LinkStateBase19func_ov005_0211058cEi kind:function(arm,size=0x270) addr:0x0211050c _ZN13LinkStateBase19func_ov005_021107fcEv kind:function(arm,size=0x70) addr:0x0211077c _ZN13LinkStateBase19func_ov005_0211086cEi kind:function(arm,size=0x110) addr:0x021107ec -_ZN13LinkStateBase19func_ov005_0211097cEicc kind:function(arm,size=0x44) addr:0x021108fc +_ZN13LinkStateBase19func_ov005_0211097cEP24LinkStateBase_UnkStruct1cc kind:function(arm,size=0x44) addr:0x021108fc _ZN13LinkStateBase19func_ov005_021109c0Ev kind:function(arm,size=0x180) addr:0x02110940 _ZN13LinkStateBase19func_ov005_02110b40Ei kind:function(arm,size=0x74) addr:0x02110ac0 _ZN13LinkStateBase19func_ov005_02110bb4Ev kind:function(arm,size=0x34) addr:0x02110b34 diff --git a/config/usa/arm9/overlays/ov023/symbols.txt b/config/usa/arm9/overlays/ov023/symbols.txt index 4b44b61d5..bd5add23c 100644 --- a/config/usa/arm9/overlays/ov023/symbols.txt +++ b/config/usa/arm9/overlays/ov023/symbols.txt @@ -271,7 +271,7 @@ func_ov023_02177a88 kind:function(arm,size=0x1c) addr:0x021779e8 func_ov023_02177aa4 kind:function(arm,size=0xa8) addr:0x02177a04 func_ov023_02177b4c kind:function(arm,size=0x4) addr:0x02177aac func_ov023_02177b50 kind:function(arm,size=0x50) addr:0x02177ab0 -func_ov023_02177ba0 kind:function(arm,size=0x284) addr:0x02177b00 +_ZN13LinkStateBase19func_ov023_02177ba0EP5Vec3p kind:function(arm,size=0x284) addr:0x02177b00 func_ov023_02177e24 kind:function(arm,size=0x3c) addr:0x02177d84 func_ov023_02177e60 kind:function(arm,size=0x1c) addr:0x02177dc0 _ZN10PlayerLink19func_ov023_02177e7cEv kind:function(arm,size=0x8) addr:0x02177ddc diff --git a/include/Actor/ActorSpawner.hpp b/include/Actor/ActorSpawner.hpp index 05bb46a9b..3af3b1896 100644 --- a/include/Actor/ActorSpawner.hpp +++ b/include/Actor/ActorSpawner.hpp @@ -21,6 +21,7 @@ struct ActorSpawnOptions { /* 2c */ void func_ov000_020c3348(); + inline ActorSpawnOptions() : mUnk_1c(-1, -1) { func_ov000_020c3348(); diff --git a/include/DTCM/UnkStruct_027e0f64.hpp b/include/DTCM/UnkStruct_027e0f64.hpp index 9a0bdd36b..f556316e6 100644 --- a/include/DTCM/UnkStruct_027e0f64.hpp +++ b/include/DTCM/UnkStruct_027e0f64.hpp @@ -6,7 +6,9 @@ #include "Player/Bhio.hpp" struct UnkStruct_027e0f64_04 { - /* 000 */ u8 pad[0x1B4 - 0x00]; + /* 000 */ unk8 mUnk_00[0x15c]; + /* 15c */ unk32 mUnk_15c; + /* 160 */ unk8 mUnk_160[0x1B4 - 0x160]; /* 1b4 */ unk32 mUnk_1b4; }; diff --git a/include/DTCM/UnkStruct_027e0fd4.hpp b/include/DTCM/UnkStruct_027e0fd4.hpp index a7b984e2e..9d155aa02 100644 --- a/include/DTCM/UnkStruct_027e0fd4.hpp +++ b/include/DTCM/UnkStruct_027e0fd4.hpp @@ -22,6 +22,10 @@ class UnkStruct_027e0fd4_Unk1 { /* 18 */ }; +struct UnkStruct_027e0fd4_90 { + /* 00 */ unk32 mUnk_00; +}; + class UnkStruct_027e0fd4 : public UnkStruct_ov000_020b1528 { public: /* 000 (base) */ @@ -46,7 +50,7 @@ class UnkStruct_027e0fd4 : public UnkStruct_ov000_020b1528 { /* 070 */ unk32 mUnk_070; /* 074 */ unk32 mUnk_074; /* 078 */ unk8 mUnk_078[0x18]; - /* 090 */ unk32 mUnk_090; + /* 090 */ UnkStruct_027e0fd4_90 mUnk_090; /* 094 */ u32 mUnk_094; /* 098 */ s32 mUnk_098; /* 09c */ unk32 mUnk_09c; diff --git a/include/Game/Game.hpp b/include/Game/Game.hpp index 607d13a3a..eead8c51d 100644 --- a/include/Game/Game.hpp +++ b/include/Game/Game.hpp @@ -38,7 +38,7 @@ class Game { /* 0fc */ u16 mUnk_0fc; /* 0fe */ u16 mUnk_0fe; /* 100 */ bool mUnk_100; - /* 101 */ u8 mUnk_101; + /* 101 */ bool mUnk_101; /* 102 */ bool mUnk_102; /* 103 */ u8 mUnk_103; /* 104 */ diff --git a/include/Player/Battle/PlayerBattleLinkControlData.hpp b/include/Player/Battle/PlayerBattleLinkControlData.hpp index f3f9deaf6..ef9d863ff 100644 --- a/include/Player/Battle/PlayerBattleLinkControlData.hpp +++ b/include/Player/Battle/PlayerBattleLinkControlData.hpp @@ -26,7 +26,7 @@ class PlayerBattleLinkControlData : public PlayerControlData { /* 04 */ virtual ~PlayerBattleLinkControlData() override; /* 10 */ virtual unk32 GetCharacterId() override; - /* 14 */ virtual void vfunc_14(s32 param1) override; + /* 14 */ virtual u16 *vfunc_14(s32 param1) override; /* 18 */ virtual void vfunc_18() override; /* 20 */ virtual void vfunc_20() override; /* 2c */ virtual void vfunc_2c() override; diff --git a/include/Player/EquipShield.hpp b/include/Player/EquipShield.hpp index 638a85538..0904363f9 100644 --- a/include/Player/EquipShield.hpp +++ b/include/Player/EquipShield.hpp @@ -7,7 +7,11 @@ class EquipShield : public EquipItem { public: /* 00 (base) */ - /* 09 */ unk8 mUnk_09[5]; + /* 09 */ unk8 mUnk_09; + /* 0a */ unk8 mUnk_0a; + /* 0b */ unk8 mUnk_0b; + /* 0c */ unk8 mUnk_0c; + /* 0d */ unk8 mUnk_0d; /* 0e */ unk16 mUnk_0e; /* 10 */ void *mUnk_10; /* 14 */ void *mUnk_14; @@ -18,7 +22,6 @@ class EquipShield : public EquipItem { /* 28 */ void *mUnk_28; /* 2c */ -public: EquipShield(); /* 00 */ virtual void vfunc_00() override; diff --git a/include/Player/EquipSword.hpp b/include/Player/EquipSword.hpp index 145e2fcb1..7d3d99188 100644 --- a/include/Player/EquipSword.hpp +++ b/include/Player/EquipSword.hpp @@ -40,7 +40,6 @@ class EquipSword : public EquipItem { /* 6f */ unk8 mUnk_6f; /* 70 */ -public: EquipSword(); /* 00 */ virtual void vfunc_00() override; diff --git a/include/Player/LinkStateBase.hpp b/include/Player/LinkStateBase.hpp index 75490f47a..f545b26eb 100644 --- a/include/Player/LinkStateBase.hpp +++ b/include/Player/LinkStateBase.hpp @@ -6,6 +6,7 @@ #include "Actor/Actor.hpp" #include "Actor/ActorManager.hpp" +#include "DTCM/UnkStruct_027e0d38.hpp" #include "DTCM/UnkStruct_027e0fd4.hpp" #include "Player/Bhio.hpp" #include "Player/EquipItem.hpp" @@ -75,16 +76,16 @@ class LinkStateBase : public SysObject { void func_ov00_020a8294(s32 param1, u32 param2); void func_ov00_020a82ac(); void ApplyImpulse(s32 angle, s32 power); - void func_ov00_020a8360(unk32 param1); - void func_ov00_020a8390(unk32 param1, void *param2); - void func_ov00_020a84bc(s32 param1); - void func_ov00_020a8508(); + void func_ov00_020a8360(ActorTypeId type); + Actor *func_ov00_020a8390(ActorTypeId type, Actor_UnkStruct_020 *param2); + void func_ov00_020a84bc(bool isVisible); + void func_ov00_020a8508(unk32 param_1); void func_ov00_020a853c(Vec3p *param1); - void Teleport(Vec3p *pos, s16 angle, unk32 param3, bool param4, bool param5); - void PlayerBase_vfunc_38(Vec3p *pos); + void Teleport(Vec3p *pos); + void TeleportToEntrance(u16 entranceId); void PlayerLinkBase_vfunc_74(); - void PlayerLinkBase_vfunc_88(); - unk16 Get_PlayerLinkBase_Unk48(); + void PlayerLinkBase_vfunc_88(unk32 param_1); + u16 Get_PlayerLinkBase_Unk48(); bool func_ov00_020a8638(unk32 param1); void Clear_PlayerLinkBase_Unk48(u16 flags); void func_ov00_020a8680(unk32 param1, unk16 param2, bool param3); @@ -95,28 +96,28 @@ class LinkStateBase : public SysObject { void func_ov00_020a8844(Vec3p *param1, bool param2, bool param3); void func_ov00_020a8954(bool param1, unk32 *param2); void func_ov00_020a8994(); - void func_ov00_020a89bc(LinkStateBase_UnkStruct1 *param1, unk32 param2); - void func_ov00_020a8a08(unk32 param1); - void func_ov00_020a8a4c(const void *param1, unk32 param2); - void func_ov00_020a8a90(unk32 param1); - void func_ov00_020a8ab0(unk32 param1); + void func_ov00_020a89bc(LinkStateBase_UnkStruct1 *param1, unk8 param2); + void func_ov00_020a8a08(LinkStateBase_UnkStruct1 *param1); + void func_ov00_020a8a4c(LinkStateBase_UnkStruct1 *param1, unk8 param2); + void func_ov00_020a8a90(LinkStateBase_UnkStruct1 *param1); + void func_ov00_020a8ab0(unk32 *param1); void func_ov00_020a8ad0(unk32 param1); void func_ov00_020a8b04(s32 param1, bool param2); unk32 func_ov00_020a8b3c(s32 param1); bool func_ov00_020a8b80(); bool HasFlags_PlayerLinkBase_Unk48(u16 flags); - unk8 Get_PlayerLinkBase_Unk5e(); - unk32 Get_PlayerControlData_Unk004(); + u8 Get_PlayerLinkBase_Unk5e(); // bool? + unk32 *Get_PlayerControlData_Unk004(); PlayerCharacter GetCurrentCharacter(); PlayerControlData *GetPlayerControlData(); LinkStateId GetStateId(); s32 GetHealth(); s32 GetCurrentCharacterHealth(); - bool func_ov00_020a8c34(); + bool func_ov00_020a8c34(unk32 param1, Vec3p *param2, unk32 param3); Vec3p *GetPlayerPos(); Vec3p *GetPlayerVel(); - unk8 *func_ov00_020a8c64(); - u16 *GetPlayerAngle(); + UnkStruct_027e0fd4_90 *func_ov00_020a8c64(); + s16 *GetPlayerAngle(); void *GetPlayer_Unk18(); s32 Get_PlayerControlData_Unk32(); Actor *GetGrabActor(); @@ -131,7 +132,7 @@ class LinkStateBase : public SysObject { s32 PlayerControlData_vfunc_14(s32 param1); unk32 Get_PlayerControlData_Unk100(); unk32 Get_PlayerControlData_Unk120(); - s32 Get_PlayerLinkBase_Unk38(); + s32 *Get_PlayerLinkBase_Unk38(); Bhio *GetBhio0(); Bhio *GetBhio1(); @@ -144,7 +145,7 @@ class LinkStateBase : public SysObject { bool func_ov005_0211058c(s32 param1); void func_ov005_021107fc(); void func_ov005_0211086c(s32 param1); - void func_ov005_0211097c(unk32 param1, unk8 param2, unk8 param3); + void func_ov005_0211097c(LinkStateBase_UnkStruct1 *param1, unk8 param2, unk8 param3); unk32 func_ov005_021109c0(); void func_ov005_02110b40(s32 param1); void func_ov005_02110bb4(); @@ -157,6 +158,8 @@ class LinkStateBase : public SysObject { bool func_ov005_0211139c(); bool func_ov005_021113b4(); void func_ov005_021113c4(bool param1); + + void func_ov023_02177ba0(Vec3p *param_1); }; LinkStateBase *GetLinkState(LinkStateId index); diff --git a/include/Player/PlayerBase.hpp b/include/Player/PlayerBase.hpp index 9a85a211a..a94290b9f 100644 --- a/include/Player/PlayerBase.hpp +++ b/include/Player/PlayerBase.hpp @@ -37,7 +37,7 @@ class PlayerBase : public SysObject { /* 2c */ virtual void vfunc_2c(s32 param1, unk8 param2) = 0; /* 30 */ virtual bool vfunc_30(s32 param1, Vec3p *param2, s32 param3) = 0; /* 34 */ virtual bool Teleport(Vec3p *pos, s16 angle, unk32 param3, bool param4, bool param5); - /* 38 */ virtual bool TeleportToEntrance(unk32 entranceId, bool param2); + /* 38 */ virtual bool TeleportToEntrance(u16 entranceId, bool param2); /* 3c */ virtual bool TeleportToLastEntrance(bool param1); /* 40 */ virtual void AddHealth(s16 amount); /* 44 */ virtual void vfunc_44() = 0; @@ -64,4 +64,4 @@ class PlayerBase : public SysObject { extern PlayerBase *gPlayer; extern Vec3p gPlayerPos; extern Vec3p gPlayerVel; -extern u16 gPlayerAngle; +extern s16 gPlayerAngle; diff --git a/include/Player/PlayerControlData.hpp b/include/Player/PlayerControlData.hpp index edf906022..cc2083838 100644 --- a/include/Player/PlayerControlData.hpp +++ b/include/Player/PlayerControlData.hpp @@ -5,6 +5,8 @@ #include "types.h" #include "System/SysNew.hpp" +#include "Unknown/UnkStruct_0202e1a0.hpp" +#include "Unknown/UnkStruct_ov000_020c0c08.hpp" class PlayerControlData : public SysObject { public: @@ -26,11 +28,11 @@ class PlayerControlData : public SysObject { /* 040 */ unk8 mUnk_040[0xc0]; /* 100 */ unk32 mUnk_100; /* 104 */ unk8 mUnk_104[0x14]; - /* 118 */ unk32 mUnk_118; + /* 118 */ UnkStruct_ov000_020c0c08 *mUnk_118; /* 11c */ unk8 mUnk_11c[4]; /* 120 */ unk32 mUnk_120; /* 124 */ unk8 mUnk_124[0x14]; - /* 138 */ unk32 mUnk_138; + /* 138 */ UnkStruct_ov000_020c0c08 *mUnk_138; /* 13c */ unk8 mUnk_13c[4]; /* 140 */ unk32 mUnk_140; /* 144 */ unk32 mUnk_144; @@ -63,7 +65,7 @@ class PlayerControlData : public SysObject { /* 04 */ virtual ~PlayerControlData(); /* 0c */ virtual unk32 vfunc_0c(); /* 10 */ virtual unk32 GetCharacterId() = 0; - /* 14 */ virtual void vfunc_14(s32 param1) = 0; + /* 14 */ virtual u16 *vfunc_14(s32 param1) = 0; /* 18 */ virtual void vfunc_18(); /* 1c */ virtual void vfunc_1c(); /* 20 */ virtual void vfunc_20(); @@ -86,7 +88,7 @@ class PlayerControlData : public SysObject { /* 64 */ virtual void vfunc_64(u32 param1); /* 68 */ virtual void vfunc_68(unk32 param1, unk32 param2); /* 6c */ virtual void vfunc_6c(s32 param1, Vec3p *param2); - /* 70 */ virtual void vfunc_70(s32 param1); + /* 70 */ virtual void vfunc_70(s32 param1, Vec3p *param2); /* 74 */ virtual unk32 vfunc_74(s32 param1); /* 78 */ virtual unk32 vfunc_78(s32 param1); /* 7c */ virtual unk32 vfunc_7c(); @@ -97,7 +99,7 @@ class PlayerControlData : public SysObject { void func_ov000_020b44d4(s32 param1, u32 param2); void func_ov000_020b4558(s32 param1, u32 param2); void func_ov000_020b45e0(); - void func_ov000_020b45f8(unk32 *param1, unk8 param2, unk8 param3); + void func_ov000_020b45f8(struct LinkStateBase_UnkStruct1 *param1, unk8 param2, unk8 param3); void func_ov000_020b464c(unk32 *param1, unk8 param2, unk8 param3); void func_ov000_020b484c(s32 param1, s32 param2, s32 param3); void func_ov000_020b4944(unk32 param1, u32 param2, s32 param3); diff --git a/include/Player/PlayerLinkBase.hpp b/include/Player/PlayerLinkBase.hpp index ae46ebdf1..bf12e2697 100644 --- a/include/Player/PlayerLinkBase.hpp +++ b/include/Player/PlayerLinkBase.hpp @@ -29,7 +29,7 @@ class PlayerLinkBase : public PlayerBase { /* 38 */ s32 mUnk_38; /* 3c */ ActorRef mGrabActor; /* 44 */ s32 mUnk_44; - /* 48 */ unk16 mUnk_48; + /* 48 */ u16 mUnk_48; /* 4a */ unk16 mUnk_4a; /* 4c */ unk32 mUnk_4c; /* 50 */ unk32 mUnk_50; @@ -58,10 +58,10 @@ class PlayerLinkBase : public PlayerBase { /* 2c */ virtual void vfunc_2c(s32 param1, unk8 param2) override; /* 30 */ virtual bool vfunc_30(s32 param1, Vec3p *param2, s32 param3) override; /* 34 */ virtual bool Teleport(Vec3p *pos, s16 angle, unk32 param3, bool param4, bool param5) override; - /* 38 */ virtual bool TeleportToEntrance(unk32 entranceId, bool param2) override; + /* 38 */ virtual bool TeleportToEntrance(u16 entranceId, bool param2) override; /* 3c */ virtual bool TeleportToLastEntrance(bool param1) override; /* 50 */ virtual ~PlayerLinkBase() override; - /* 58 */ virtual bool vfunc_58(); + /* 58 */ virtual bool vfunc_58(unk32 param1, ActorRef *param2); /* 5c */ virtual bool vfunc_5c(); /* 60 */ virtual bool vfunc_60(); /* 64 */ virtual void vfunc_64(); @@ -73,7 +73,7 @@ class PlayerLinkBase : public PlayerBase { /* 7c */ virtual void vfunc_7c(); /* 80 */ virtual void SetUnk_5e(); /* 84 */ virtual void ResetUnk_5e(); - /* 88 */ + /* 88 */ virtual void vfunc_88(unk32 param_1); void UnequipPotion(); void ChangeLinkState(s32 index); @@ -114,7 +114,7 @@ class PlayerLinkBase : public PlayerBase { void func_ov000_020bc398(unk32 param1, s32 param2); PlayerCharacter GetCurrentCharacter(); s32 GetHealth(PlayerCharacter character); - void AddHealth(s16 amount, PlayerCharacter character); + void AddHealth2(s16 amount, PlayerCharacter character); void func_ov000_020bc4ac(); s32 GetStateId(); s32 func_ov000_020bc520(Vec3p *param1); @@ -125,7 +125,7 @@ class PlayerLinkBase : public PlayerBase { unk32 func_ov000_020bc84c(); void func_ov000_020bc854(Vec3p *param1); void UpdateTilePos(Vec3p *param1, PlayerCharacter character); - void func_ov000_020bc90c(unk32 *param1, s32 param2); + void func_ov000_020bc90c(Vec3p *param1, s32 param2); bool func_ov000_020bc960(unk32 param1, unk32 param2, unk32 param3); bool GongoronCollidesWith(Cylinder *hitbox); bool func_ov000_020bcc78(); @@ -148,7 +148,7 @@ class PlayerLinkBase : public PlayerBase { bool func_ov000_020bd304(); bool func_ov000_020bd318(); void SetPlayerCharacter(PlayerCharacter character); - bool func_ov000_020bd3b0(unk32 param1, unk32 param2, unk32 param3, unk16 param4); + bool func_ov000_020bd3b0(unk32 param1, ActorRef *param2, unk32 param3, unk16 param4); void SetPosition(Vec3p *position); void SetAngle(s16 *angle); bool func_ov000_020bd510(s32 param1, unk32 *param2); diff --git a/include/Unknown/UnkStruct_0202e1a0.hpp b/include/Unknown/UnkStruct_0202e1a0.hpp index aacd61441..8e7777d35 100644 --- a/include/Unknown/UnkStruct_0202e1a0.hpp +++ b/include/Unknown/UnkStruct_0202e1a0.hpp @@ -6,7 +6,7 @@ // astruct_11 struct UnkStruct_0202e1a0 { /* 00 */ u16 mUnk_00; - /* 02 */ unk16 mUnk_02; + /* 02 */ u16 mUnk_02; /* 04 */ s32 mUnk_04; /* 08 */ s32 mUnk_08; /* 0c */ s32 mUnk_0c; diff --git a/include/Unknown/UnkStruct_ov000_020c0c08.hpp b/include/Unknown/UnkStruct_ov000_020c0c08.hpp index 2e16bed32..4570e8b87 100644 --- a/include/Unknown/UnkStruct_ov000_020c0c08.hpp +++ b/include/Unknown/UnkStruct_ov000_020c0c08.hpp @@ -34,7 +34,9 @@ class UnkStruct_ov000_020c0c08 : public SysObject { UnkStruct_ov000_020c0c08(UnkStruct_ov000_020c0c08_04 *param1, ItemModel *param2); - void func_ov000_020c0c44(void *); + void func_ov000_020c0c44(void *param1); + unk32 func_ov000_020c0d68(); void func_ov000_020c0e04(); - void func_ov000_020c0e5c(unk32); + void func_ov000_020c0e24(unk32 param1); + void func_ov000_020c0e5c(unk32 param1); }; diff --git a/src/00_Core/Player/LinkStateBase.cpp b/src/00_Core/Player/LinkStateBase.cpp index 1ef00f4af..7606d45fa 100644 --- a/src/00_Core/Player/LinkStateBase.cpp +++ b/src/00_Core/Player/LinkStateBase.cpp @@ -1,85 +1,583 @@ #include "Player/LinkStateBase.hpp" +#include "Actor/ActorSpawner.hpp" +#include "DTCM/UnkStruct_027e0e58.hpp" +#include "DTCM/UnkStruct_027e0f64.hpp" +#include "Item/ItemManager.hpp" +#include "Message/MessageManager.hpp" +#include "Player/LinkStateItem.hpp" +#include "Player/PlayerControl.hpp" -void LinkStateBase::vfunc_00() {} -void LinkStateBase::OnStateEnter() {} -void LinkStateBase::OnStateLeave(s32 param1) {} -bool LinkStateBase::vfunc_20(s32 param1) {} -bool LinkStateBase::vfunc_24(s32 param1) {} -bool LinkStateBase::vfunc_28() {} -bool LinkStateBase::vfunc_34(Vec3p *param1) {} -void LinkStateBase::GiveControlToLink() {} -void LinkStateBase::SetPlayerCharacter(PlayerCharacter character) {} -void LinkStateBase::ChangeLinkState(LinkStateId id) {} -void LinkStateBase::ChangeLinkSubState(LinkStateId id, s32 subState) {} -void LinkStateBase::EquipItem_vfunc_28() {} -void LinkStateBase::UpdateSwordShieldInUse() {} -void LinkStateBase::func_ov00_020a81b8(unk32 param1, Vec3p *param2) {} -LinkStateItem *LinkStateBase::GetLinkItemState() {} -void LinkStateBase::LookAt(Vec3p *target) {} -void LinkStateBase::func_ov00_020a81fc(Vec3p *param1, unk32 param2) {} -void LinkStateBase::AddHealth(s16 amount) {} -void LinkStateBase::func_ov00_020a8224(unk32 param1) {} -void LinkStateBase::TurnTo(s16 angle, unk32 param2, unk32 speed) {} -void LinkStateBase::func_ov00_020a827c(s32 param1, u32 param2) {} -void LinkStateBase::func_ov00_020a8294(s32 param1, u32 param2) {} -void LinkStateBase::func_ov00_020a82ac() {} -void LinkStateBase::ApplyImpulse(s32 angle, s32 power) {} -void LinkStateBase::func_ov00_020a8360(unk32 param1) {} -void LinkStateBase::func_ov00_020a8390(unk32 param1, void *param2) {} -void LinkStateBase::func_ov00_020a84bc(s32 param1) {} -void LinkStateBase::func_ov00_020a8508() {} -void LinkStateBase::func_ov00_020a853c(Vec3p *param1) {} -void LinkStateBase::Teleport(Vec3p *pos, s16 angle, unk32 param3, bool param4, bool param5) {} -void LinkStateBase::PlayerBase_vfunc_38(Vec3p *pos) {} -void LinkStateBase::PlayerLinkBase_vfunc_74() {} -void LinkStateBase::PlayerLinkBase_vfunc_88() {} -unk16 LinkStateBase::Get_PlayerLinkBase_Unk48() {} -bool LinkStateBase::func_ov00_020a8638(unk32 param1) {} -void LinkStateBase::Clear_PlayerLinkBase_Unk48(u16 flags) {} -void LinkStateBase::func_ov00_020a8680(unk32 param1, unk16 param2, bool param3) {} -void LinkStateBase::PlayerLinkBase_func_ov00_020bccc8() {} -bool LinkStateBase::PlayerLinkBase_vfunc_58(unk32 param1, ActorRef *param2) {} -bool LinkStateBase::func_ov00_020a8704(s16 *pAngle) {} -bool LinkStateBase::func_ov00_020a8774(Vec3p *param1, s32 angle) {} -void LinkStateBase::func_ov00_020a8844(Vec3p *param1, bool param2, bool param3) {} -void LinkStateBase::func_ov00_020a8954(bool param1, unk32 *param2) {} -void LinkStateBase::func_ov00_020a8994() {} -void LinkStateBase::func_ov00_020a89bc(LinkStateBase_UnkStruct1 *param1, unk32 param2) {} -void LinkStateBase::func_ov00_020a8a08(unk32 param1) {} -void LinkStateBase::func_ov00_020a8a4c(const void *param1, unk32 param2) {} -void LinkStateBase::func_ov00_020a8a90(unk32 param1) {} -void LinkStateBase::func_ov00_020a8ab0(unk32 param1) {} -void LinkStateBase::func_ov00_020a8ad0(unk32 param1) {} -void LinkStateBase::func_ov00_020a8b04(s32 param1, bool param2) {} -unk32 LinkStateBase::func_ov00_020a8b3c(s32 param1) {} -bool LinkStateBase::func_ov00_020a8b80() {} -bool LinkStateBase::HasFlags_PlayerLinkBase_Unk48(u16 flags) {} -unk8 LinkStateBase::Get_PlayerLinkBase_Unk5e() {} -unk32 LinkStateBase::Get_PlayerControlData_Unk004() {} -PlayerCharacter LinkStateBase::GetCurrentCharacter() {} -PlayerControlData *LinkStateBase::GetPlayerControlData() {} -LinkStateId LinkStateBase::GetStateId() {} -s32 LinkStateBase::GetHealth() {} -s32 LinkStateBase::GetCurrentCharacterHealth() {} -bool LinkStateBase::func_ov00_020a8c34() {} -Vec3p *LinkStateBase::GetPlayerPos() {} -Vec3p *LinkStateBase::GetPlayerVel() {} -unk8 *LinkStateBase::func_ov00_020a8c64() {} -u16 *LinkStateBase::GetPlayerAngle() {} -void *LinkStateBase::GetPlayer_Unk18() {} -s32 LinkStateBase::Get_PlayerControlData_Unk32() {} -Actor *LinkStateBase::GetGrabActor() {} -ActorRef *LinkStateBase::GetGrabActorRef() {} -unk32 LinkStateBase::Grab() {} -s32 *LinkStateBase::Get_PlayerLinkBase_Unk44() {} -bool LinkStateBase::IsEquipBeingUsed(ItemFlag id) {} -EquipItem *LinkStateBase::GetEquipItem(ItemFlag id) {} -UnkStruct_027e0fd4 *LinkStateBase::func_ov00_020a8d40() {} -unk32 LinkStateBase::func_ov00_020a8d50() {} -unk32 LinkStateBase::func_ov00_020a8d6c() {} -s32 LinkStateBase::PlayerControlData_vfunc_14(s32 param1) {} -unk32 LinkStateBase::Get_PlayerControlData_Unk100() {} -unk32 LinkStateBase::Get_PlayerControlData_Unk120() {} -s32 LinkStateBase::Get_PlayerLinkBase_Unk38() {} -Bhio *LinkStateBase::GetBhio0() {} -Bhio *LinkStateBase::GetBhio1() {} +extern "C" bool func_01ffe468(unk32 param1, Vec3p *param2, s32 *param3, s32 *param4, bool param5); +extern "C" void ApproachAngle_thunk(s16 *src, s16 dst, u32 param3); +extern "C" void func_ov000_020b1a4c(Vec3p *, Vec3p *); +extern "C" void func_ov000_020b1498(s32, s32, s16); +extern unk32 data_027e0fb0; + +static char *gShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"}; + +static const LinkStateId data_ov000_020dc510[] = { + LinkStateId_Move, LinkStateId_Follow, LinkStateId_Move, LinkStateId_Move, LinkStateId_Move, LinkStateId_Move, +}; + +THUMB void LinkStateBase::vfunc_00() {} + +ARM void LinkStateBase::OnStateEnter() {} + +ARM void LinkStateBase::OnStateLeave(s32 param1) {} + +ARM bool LinkStateBase::vfunc_20(s32 param1) { + return false; +} + +ARM bool LinkStateBase::vfunc_24(s32 param1) { + bool bVar1; + bool bVar2; + + bVar1 = false; + bVar2 = false; + + if (this->func_ov00_020a8b80()) { + UnkStruct_027e0fd4 *pUnkStruct_027e0fd4 = this->func_ov00_020a8d40(); + + if (pUnkStruct_027e0fd4->mUnk_0c8 < 0) { + bVar2 = true; + } + } + + if (bVar2 && this->mLink->mUnk_5a <= 0) { + bVar1 = true; + } + + switch (param1) { + case 0: + break; + case 1: + break; + case 2: + break; + case 3: + case 6: + case 7: + if (bVar1 && PlayerControl::func_ov00_020aeeac()) { + return true; + } + + return false; + case 5: + if (bVar1 && !this->HasFlags_PlayerLinkBase_Unk48(0x3F) && PlayerControl::func_ov00_020aeeac()) { + return true; + } + + return false; + case 4: + if (gAdventureFlags->func_ov00_02097bbc()) { + return false; + } + + if (gMessageManager.mUnk_04 == 0 && data_027e0f64->mUnk_4->mUnk_15c == 4) { + return false; + } + + if (bVar1 && gPlayerControl->func_ov00_020af4a4()) { + return true; + } + + return false; + default: + break; + } + + return true; +} + +ARM bool LinkStateBase::vfunc_28() { + return true; +} + +ARM bool LinkStateBase::vfunc_34(Vec3p *param1) { + return false; +} + +ARM void LinkStateBase::GiveControlToLink() {} + +ARM void LinkStateBase::SetPlayerCharacter(PlayerCharacter character) { + this->mLink->SetPlayerCharacter(character); +} + +ARM void LinkStateBase::ChangeLinkState(LinkStateId id) { + this->mLink->ChangeLinkState(id); +} + +ARM void LinkStateBase::ChangeLinkSubState(LinkStateId id, s32 subState) { + this->mLink->SetLinkSubState(id, subState); +} + +ARM void LinkStateBase::EquipItem_vfunc_28() { + for (s32 i = 0; i < 11; i++) { + EquipItem *pEquipItem = gItemManager->GetEquipItem(i); + + if (pEquipItem != NULL) { + pEquipItem->UpdateInUse(0); + } + } +} + +ARM void LinkStateBase::UpdateSwordShieldInUse() { + gItemManager->UpdateSwordShieldInUse(); +} + +ARM void LinkStateBase::func_ov00_020a81b8(unk32 param1, Vec3p *param2) { + this->GetLinkItemState()->func_ov005_02106980(0, param1, (s32 *) param2); +} + +ARM LinkStateItem *LinkStateBase::GetLinkItemState() { + return (LinkStateItem *) GetLinkState(LinkStateId_Item); +} + +ARM void LinkStateBase::LookAt(Vec3p *target) { + this->mLink->LookAt(target); +} + +ARM void LinkStateBase::func_ov00_020a81fc(Vec3p *param1, unk32 param2) { + this->mLink->func_ov000_020bb810(param1, param2); +} + +ARM void LinkStateBase::AddHealth(s16 amount) { + this->mLink->AddHealth(amount); +} + +ARM void LinkStateBase::func_ov00_020a8224(unk32 param1) { + this->mLink->func_ov000_020bbbd0(param1, 1); +} + +ARM void LinkStateBase::TurnTo(s16 angle, unk32 param2, unk32 speed) { + ApproachAngle_thunk(&gPlayerAngle, angle, speed); + + //! TODO: optimization or conversion macro? + gPlayerControlData->func_ov000_020b4558((param2 - gPlayerAngle) * 0x10000 >> 0x10, 0x1000); +} + +ARM void LinkStateBase::func_ov00_020a827c(s32 param1, u32 param2) { + gPlayerControlData->func_ov000_020b4558(param1, param2); +} + +ARM void LinkStateBase::func_ov00_020a8294(s32 param1, u32 param2) { + gPlayerControlData->func_ov000_020b44d4(param1, param2); +} + +ARM void LinkStateBase::func_ov00_020a82ac() { + this->mLink->GetPlayerControlData(0)->func_ov000_020b45e0(); +} + +// non-matching +ARM void LinkStateBase::ApplyImpulse(s32 angle, s32 power) { + PlayerLinkBase *link; + int angle2; + s32 cos; + unk32 cos2; + s32 sin; + + sin = SIN(angle & 0xFFFF) * power; + cos = COS(angle & 0xFFFF) * power; + + this->mLink->mVel = gVec3p_ZERO; + + this->mLink->mVel.x += (sin >> 12 | (sin >> 32) * 0x100000); + this->mLink->mVel.z += (cos >> 12 | (cos >> 32) * 0x100000); +} + +ARM void LinkStateBase::func_ov00_020a8360(ActorTypeId type) { + Actor_UnkStruct_020 unkStruct_020; + this->func_ov00_020a8390(type, &unkStruct_020); +} + +// non-matching +ARM Actor *LinkStateBase::func_ov00_020a8390(ActorTypeId type, Actor_UnkStruct_020 *param2) { + Actor *pActor; + ActorRef *pGrabRef; + + ActorSpawnOptions local_44; + local_44.mUnk_00 = *param2; + local_44.mUnk_1c.id = 0; + + ActorRef local_4c; + local_4c.id = -1; + local_4c.index = -1; + + ActorSpawner *pActorSpawner = gActorSpawner; + pActorSpawner->Spawn(type, this->GetPlayerPos(), &local_44, &local_4c); + + pActor = gActorManager->GetActor(&local_4c); + + if (pActor != NULL) { + pGrabRef = this->GetGrabActorRef(); + pGrabRef->id = pActor->mRef.id; + pGrabRef->index = pActor->mRef.index; + pActor->Grab(); + } + + return pActor; +} + +ARM void LinkStateBase::func_ov00_020a84bc(bool isVisible) { + s16 sVar1; + + this->mLink->mVisible = isVisible; + sVar1 = isVisible ? 0x1F : 0; + PlayerBase::GetEquipSword()->mUnk_5c = sVar1; + PlayerBase::GetEquipShield()->mUnk_0e = sVar1; + data_027e0e58->func_ov000_0207c5d4(1, isVisible); +} + +ARM void LinkStateBase::func_ov00_020a8508(unk32 param_1) { + PlayerControlData *pPlayerControlData; + pPlayerControlData = gPlayerControlData; + pPlayerControlData->vfunc_70(param_1, this->GetPlayerPos()); +} + +ARM void LinkStateBase::func_ov00_020a853c(Vec3p *param1) { + PlayerLinkBase *pLink; + Vec3p VStack_18; + + if (data_027e0d38->mUnk_0c.func_ov000_020a5e9c() == 0x2E) { + this->func_ov023_02177ba0(param1); + return; + } + + pLink = this->mLink; + pLink->func_ov000_020bc90c(&VStack_18, pLink->GetCurrentCharacter()); + func_ov000_020b1a4c(param1, &VStack_18); +} + +ARM void LinkStateBase::Teleport(Vec3p *pos) { + this->mLink->Teleport(pos, 0, 0, 0, 1); +} + +ARM void LinkStateBase::TeleportToEntrance(u16 entranceId) { + this->mLink->TeleportToEntrance(entranceId, false); +} + +ARM void LinkStateBase::PlayerLinkBase_vfunc_74() { + this->mLink->vfunc_74(); +} + +ARM void LinkStateBase::PlayerLinkBase_vfunc_88(unk32 param_1) { + this->mLink->vfunc_88(param_1); // fake? +} + +ARM u16 LinkStateBase::Get_PlayerLinkBase_Unk48() { + return this->mLink->mUnk_48; +} + +ARM bool LinkStateBase::func_ov00_020a8638(unk32 param1) { + ActorRef local_c; + local_c.id = -1; + local_c.index = -1; + this->mLink->func_ov000_020bd3b0(param1, &local_c, 0, 0); +} + +ARM void LinkStateBase::Clear_PlayerLinkBase_Unk48(u16 flags) { + this->mLink->mUnk_48 &= ~flags; +} + +// non-matching +ARM void LinkStateBase::func_ov00_020a8680(unk32 param1, unk16 param2, bool param3) { + UnkStruct_027e0fd4 *pUVar1 = data_027e0fd4; + + data_027e0fd4->mUnk_098 = param1; + data_027e0fd4->mUnk_0a0 = param2; + + if (pUVar1->func_ov000_020b6e70()) { + data_027e0fd4->mUnk_0a2 = -1; + } else { + data_027e0fd4->mUnk_0a2 = !param3; + } +} + +ARM void LinkStateBase::PlayerLinkBase_func_ov00_020bccc8() { + this->mLink->func_ov000_020bccc8(); +} + +ARM bool LinkStateBase::PlayerLinkBase_vfunc_58(unk32 param1, ActorRef *param2) { + this->mLink->vfunc_58(param1, param2); +} + +// non-matching +ARM bool LinkStateBase::func_ov00_020a8704(s16 *pAngle) { + UnkStruct_027e0fd4 *iVar2; + UnkStruct_027e0fd4 *iVar3; + + iVar2 = func_ov00_020a8d40(); + iVar3 = func_ov00_020a8d40(); + + if (iVar3->mUnk_05c > 0 && (iVar3->mUnk_064 != 0 || iVar2->mUnk_06c != 0)) { + s16 uVar1 = FX_Atan2Idx(iVar2->mUnk_064, iVar2->mUnk_06c); + *pAngle = *GetPlayerAngle() - uVar1; + return true; + } + + return false; +} + +// non-matching +ARM bool LinkStateBase::func_ov00_020a8774(Vec3p *param1, s32 angle) {} + +// non-matching +ARM void LinkStateBase::func_ov00_020a8844(Vec3p *param1, bool param2, bool param3) { + Vec3p uStack_1c; + s32 uStack_20; + s32 uStack_24; + + if (gPlayerControl->mUnk_7d == false) { + return; + } + + if (gGame.mUnk_101) { + return; + } + + uStack_1c = *param1; + + if (func_01ffe468(data_027e0f64->func_ov000_0208b180(), &uStack_1c, &uStack_20, &uStack_24, false) ? false : true) { + return; + } + + if (param2) { + func_ov000_020b1498(uStack_20, uStack_24, *GetPlayerAngle()); + } + + if (param3) { + func_ov000_020b1498(uStack_20, uStack_24, (*GetPlayerAngle() - 0x8000) * 0x10000 >> 0x10); + } +} + +ARM void LinkStateBase::func_ov00_020a8954(bool param1, unk32 *param2) { + static unk32 data_ov000_020e5670 = 0x29; + static LinkStateBase_UnkStruct1 data_ov000_020e5674 = { + .mUnk_00 = 0x27, + .mUnk_04.x = FLOAT_TO_Q20(1.0), + .mUnk_04.y = FLOAT_TO_Q20(0.0), + .mUnk_04.z = FLOAT_TO_Q20(5.0), + }; + + if (param1) { + data_ov000_020e5670 = 0x29; + } else { + data_ov000_020e5670 = 0x27; + } + + this->func_ov00_020a8a4c(&data_ov000_020e5674, 1); + *param2 = 0; +} + +unk32 data_ov000_020e5684[] = {1, 0x1333, 0, 0x3C000}; +unk32 data_ov000_020e5694[] = {0x1F, 0x1000, 0, 0x3C000}; + +ARM void LinkStateBase::func_ov00_020a8994() { + this->ChangeLinkState(data_ov000_020dc510[this->func_ov00_020a8d40()->mUnk_05a]); +} + +ARM void LinkStateBase::func_ov00_020a89bc(LinkStateBase_UnkStruct1 *param1, unk8 param2) { + UnkStruct_027e0fd4 *pUVar1 = this->func_ov00_020a8d40(); + + if (!(pUVar1->mUnk_05a != 1 && pUVar1->mUnk_05a != 2)) { + this->func_ov005_0211097c(param1, 1, param2); + return; + } + + this->func_ov00_020a8a4c(param1, param2); +} + +ARM void LinkStateBase::func_ov00_020a8a08(LinkStateBase_UnkStruct1 *param1) { + UnkStruct_027e0fd4 *pUVar1 = this->func_ov00_020a8d40(); + + if (!(pUVar1->mUnk_05a != 1 && pUVar1->mUnk_05a != 2)) { + this->func_ov005_0211097c(param1, 0, 1); + return; + } + + this->func_ov00_020a8a90(param1); +} + +ARM void LinkStateBase::func_ov00_020a8a4c(LinkStateBase_UnkStruct1 *param1, unk8 param2) { + PlayerControlData *pPVar1 = gPlayerControlData; + + pPVar1->func_ov000_020b45f8(param1, 1, param2); + + if (pPVar1->mUnk_118 != NULL) { + pPVar1->mUnk_118->mUnk_0c.mUnk_02 = 0; + } + + if (pPVar1->mUnk_138 != NULL) { + pPVar1->mUnk_138->mUnk_0c.mUnk_02 = 0; + } +} + +ARM void LinkStateBase::func_ov00_020a8a90(LinkStateBase_UnkStruct1 *param1) { + gPlayerControlData->func_ov000_020b45f8(param1, 0, 1); +} + +ARM void LinkStateBase::func_ov00_020a8ab0(unk32 *param1) { + gPlayerControlData->func_ov000_020b464c(param1, 1, 1); +} + +ARM void LinkStateBase::func_ov00_020a8ad0(unk32 param1) { + gPlayerControlData->mUnk_118->func_ov000_020c0e24(param1); + gPlayerControlData->mUnk_138->func_ov000_020c0e24(param1); +} + +ARM void LinkStateBase::func_ov00_020a8b04(s32 param1, bool param2) { + PlayerControlData *pPlayerControlData = gPlayerControlData; + + if (param2) { + pPlayerControlData->mUnk_118->mUnk_0c.func_0202e310(param1); + } else { + pPlayerControlData->mUnk_138->mUnk_0c.func_0202e310(param1); + } +} + +ARM unk32 LinkStateBase::func_ov00_020a8b3c(s32 param1) { + PlayerControlData *pPlayerControlData = gPlayerControlData; + unk32 uVar2 = 0; + UnkStruct_ov000_020c0c08 *iVar3; + + if (param1 != 0) { + iVar3 = pPlayerControlData->mUnk_118; + } else { + iVar3 = pPlayerControlData->mUnk_138; + } + + if (iVar3->mUnk_0c.func_0202e58c() && !(iVar3->mUnk_0c.mUnk_02 & 5)) { + uVar2 = 1; + } + + return uVar2; +} + +ARM bool LinkStateBase::func_ov00_020a8b80() { + return data_027e0fd4->mUnk_0c6 >= 0; +} + +ARM bool LinkStateBase::HasFlags_PlayerLinkBase_Unk48(u16 flags) { + return this->mLink->mUnk_48 & flags; +} + +ARM u8 LinkStateBase::Get_PlayerLinkBase_Unk5e() { + return this->mLink->mUnk_5c[2]; +} + +ARM unk32 *LinkStateBase::Get_PlayerControlData_Unk004() { + return &gPlayerControlData->mUnk_004; +} + +ARM PlayerCharacter LinkStateBase::GetCurrentCharacter() { + return this->mLink->GetCurrentCharacter(); +} + +ARM PlayerControlData *LinkStateBase::GetPlayerControlData() { + return gPlayerControlData; +} + +ARM LinkStateId LinkStateBase::GetStateId() { + return this->mLink->GetStateId(); +} + +ARM s32 LinkStateBase::GetHealth() { + return this->mLink->mHealth; +} + +ARM s32 LinkStateBase::GetCurrentCharacterHealth() { + PlayerLinkBase *pLink = this->mLink; + + pLink->GetHealth(pLink->GetCurrentCharacter()); +} + +ARM bool LinkStateBase::func_ov00_020a8c34(unk32 param1, Vec3p *param2, unk32 param3) { + return data_027e0fd4->func_ov000_020b5268(param1, param2, param3); +} + +ARM Vec3p *LinkStateBase::GetPlayerPos() { + return &gPlayerPos; +} + +ARM Vec3p *LinkStateBase::GetPlayerVel() { + return &gPlayerVel; +} + +ARM UnkStruct_027e0fd4_90 *LinkStateBase::func_ov00_020a8c64() { + return &data_027e0fd4->mUnk_090; +} + +ARM s16 *LinkStateBase::GetPlayerAngle() { + return &gPlayerAngle; +} + +ARM void *LinkStateBase::GetPlayer_Unk18() { + return &data_027e0fb0; +} + +ARM s32 LinkStateBase::Get_PlayerControlData_Unk32() { + return gPlayerControlData->mUnk_032; +} + +ARM Actor *LinkStateBase::GetGrabActor() { + return gActorManager->GetActor(&this->mLink->mGrabActor); +} + +ARM ActorRef *LinkStateBase::GetGrabActorRef() { + return &this->mLink->mGrabActor; +} + +ARM unk32 LinkStateBase::Grab() { + return this->mLink->Grab(); +} + +ARM s32 *LinkStateBase::Get_PlayerLinkBase_Unk44() { + return &this->mLink->mUnk_44; +} + +ARM bool LinkStateBase::IsEquipBeingUsed(ItemFlag id) { + EquipItem *pEquipItem = gItemManager->GetEquipItem(id); + return pEquipItem != NULL && pEquipItem->IsInUse(); +} + +ARM EquipItem *LinkStateBase::GetEquipItem(ItemFlag id) { + return gItemManager->GetEquipItem(id); +} + +ARM UnkStruct_027e0fd4 *LinkStateBase::func_ov00_020a8d40() { + return data_027e0fd4; +} + +ARM unk32 LinkStateBase::func_ov00_020a8d50() { + return gPlayerControlData->mUnk_138->func_ov000_020c0d68(); +} + +ARM unk32 LinkStateBase::func_ov00_020a8d6c() { + return gPlayerControlData->mUnk_118->func_ov000_020c0d68(); +} + +ARM s32 LinkStateBase::PlayerControlData_vfunc_14(s32 param1) { + u16 *iVar1 = gPlayerControlData->vfunc_14(param1); + return iVar1 != 0 ? iVar1[2] << 12 : 0x1000; +} + +ARM unk32 LinkStateBase::Get_PlayerControlData_Unk100() { + return gPlayerControlData->mUnk_100; +} + +ARM unk32 LinkStateBase::Get_PlayerControlData_Unk120() { + return gPlayerControlData->mUnk_120; +} + +ARM s32 *LinkStateBase::Get_PlayerLinkBase_Unk38() { + return &this->mLink->mUnk_38; +} + +ARM Bhio *LinkStateBase::GetBhio0() { + return this->mLink->mBhio_0; +} + +ARM Bhio *LinkStateBase::GetBhio1() { + return this->mLink->mBhio_1; +} diff --git a/src/00_Core/Player/LinkStateDamage.cpp b/src/00_Core/Player/LinkStateDamage.cpp index 62968434c..478f9ca39 100644 --- a/src/00_Core/Player/LinkStateDamage.cpp +++ b/src/00_Core/Player/LinkStateDamage.cpp @@ -123,7 +123,7 @@ ARM void LinkStateDamage::Knockback(Vec3p *knockbackVec, unk32 param2) { playerVel->y = knockbackVec->y; playerVel->z = knockbackVec->z; s16 groundAngle = FX_Atan2Idx(knockbackVec->x, knockbackVec->z); - u16 *playerAngle = this->GetPlayerAngle(); + s16 *playerAngle = this->GetPlayerAngle(); *playerAngle = groundAngle - 0x8000; this->mUnk_24[12] = 0; this->mUnk_22 = param2; diff --git a/src/00_Core/Player/PlayerBase.cpp b/src/00_Core/Player/PlayerBase.cpp index 5edea52fb..2e2fea51c 100644 --- a/src/00_Core/Player/PlayerBase.cpp +++ b/src/00_Core/Player/PlayerBase.cpp @@ -122,13 +122,16 @@ ARM void PlayerBase::AddHealth(s16 amount) { } } -ARM bool PlayerBase::TeleportToEntrance(unk32 entranceId, bool param2) { +ARM bool PlayerBase::TeleportToEntrance(u16 entranceId, bool param2) { Entrance entrance; + gMapManager->GetEntrancePos(&entrance, entranceId); + if (this->Teleport(&entrance.mPos, entrance.mAngle, entrance.mUnk_10, param2, false)) { mEntranceId = entranceId; return true; } + return false; } diff --git a/src/00_Core/Player/PlayerControlData.cpp b/src/00_Core/Player/PlayerControlData.cpp index 1485048a8..bd81efdf7 100644 --- a/src/00_Core/Player/PlayerControlData.cpp +++ b/src/00_Core/Player/PlayerControlData.cpp @@ -1,4 +1,5 @@ #include "Player/PlayerControlData.hpp" +#include "Player/LinkStateBase.hpp" void PlayerControlData::vfunc_00() {} void PlayerControlData::func_ov000_020b4440() {} @@ -6,7 +7,7 @@ void PlayerControlData::func_ov000_020b4460(s32 param1) {} void PlayerControlData::func_ov000_020b44d4(s32 param1, u32 param2) {} void PlayerControlData::func_ov000_020b4558(s32 param1, u32 param2) {} void PlayerControlData::func_ov000_020b45e0() {} -void PlayerControlData::func_ov000_020b45f8(unk32 *param1, unk8 param2, unk8 param3) {} +void PlayerControlData::func_ov000_020b45f8(LinkStateBase_UnkStruct1 *param1, unk8 param2, unk8 param3) {} void PlayerControlData::func_ov000_020b464c(unk32 *param1, unk8 param2, unk8 param3) {} void PlayerControlData::vfunc_60(unk32 param1, unk32 param2, s32 param3) {} void PlayerControlData::vfunc_68(unk32 param1, unk32 param2) {} @@ -28,7 +29,7 @@ void PlayerControlData::vfunc_40(u16 *param1, Vec3p *param2, unk32 param3, char void PlayerControlData::vfunc_44(unk32 param1, unk32 *param2, unk32 param3, unk16 param4) {} void PlayerControlData::vfunc_48(unk32 param1, unk32 param2, unk32 param3, s16 param4) {} void PlayerControlData::vfunc_4c(unk32 param1, Vec3p *param2) {} -void PlayerControlData::vfunc_70(s32 param1) {} +void PlayerControlData::vfunc_70(s32 param1, Vec3p *param2) {} void PlayerControlData::vfunc_50() {} void PlayerControlData::vfunc_54() {} void PlayerControlData::vfunc_58() {} diff --git a/src/00_Core/Player/PlayerLinkBase.cpp b/src/00_Core/Player/PlayerLinkBase.cpp index bc2480448..9cd820fb6 100644 --- a/src/00_Core/Player/PlayerLinkBase.cpp +++ b/src/00_Core/Player/PlayerLinkBase.cpp @@ -22,7 +22,7 @@ bool PlayerLinkBase::func_ov000_020bba28() {} void PlayerLinkBase::func_ov000_020bba48() {} bool PlayerLinkBase::vfunc_18(s32 param1) {} bool PlayerLinkBase::CanMove() {} -bool PlayerLinkBase::vfunc_58() {} +bool PlayerLinkBase::vfunc_58(unk32 param1, ActorRef *param2) {} bool PlayerLinkBase::vfunc_5c() {} bool PlayerLinkBase::vfunc_60() {} void PlayerLinkBase::vfunc_64() {} @@ -51,7 +51,7 @@ unk32 PlayerLinkBase::func_ov000_020bc320(unk32 param1, unk32 param2, unk32 para void PlayerLinkBase::func_ov000_020bc398(unk32 param1, s32 param2) {} PlayerCharacter PlayerLinkBase::GetCurrentCharacter() {} s32 PlayerLinkBase::GetHealth(PlayerCharacter character) {} -void PlayerLinkBase::AddHealth(s16 amount, PlayerCharacter character) {} +void PlayerLinkBase::AddHealth2(s16 amount, PlayerCharacter character) {} void PlayerLinkBase::func_ov000_020bc4ac() {} s32 PlayerLinkBase::GetStateId() {} s32 PlayerLinkBase::func_ov000_020bc520(Vec3p *param1) {} @@ -63,10 +63,10 @@ s32 PlayerLinkBase::func_ov000_020bc808() {} unk32 PlayerLinkBase::func_ov000_020bc84c() {} void PlayerLinkBase::func_ov000_020bc854(Vec3p *param1) {} void PlayerLinkBase::UpdateTilePos(Vec3p *param1, PlayerCharacter character) {} -void PlayerLinkBase::func_ov000_020bc90c(unk32 *param1, s32 param2) {} +void PlayerLinkBase::func_ov000_020bc90c(Vec3p *param1, s32 param2) {} bool PlayerLinkBase::func_ov000_020bc960(unk32 param1, unk32 param2, unk32 param3) {} bool PlayerLinkBase::TeleportToLastEntrance(bool param1) {} -bool PlayerLinkBase::TeleportToEntrance(unk32 entranceId, bool param2) {} +bool PlayerLinkBase::TeleportToEntrance(u16 entranceId, bool param2) {} bool PlayerLinkBase::Teleport(Vec3p *pos, s16 angle, unk32 param3, bool param4, bool param5) {} void PlayerLinkBase::vfunc_74() {} bool PlayerLinkBase::GongoronCollidesWith(Cylinder *hitbox) {} @@ -92,7 +92,7 @@ bool PlayerLinkBase::func_ov000_020bd304() {} bool PlayerLinkBase::func_ov000_020bd318() {} void PlayerLinkBase::vfunc_7c() {} void PlayerLinkBase::SetPlayerCharacter(PlayerCharacter character) {} -bool PlayerLinkBase::func_ov000_020bd3b0(unk32 param1, unk32 param2, unk32 param3, unk16 param4) {} +bool PlayerLinkBase::func_ov000_020bd3b0(unk32 param1, ActorRef *param2, unk32 param3, unk16 param4) {} void PlayerLinkBase::SetPosition(Vec3p *position) {} void PlayerLinkBase::SetAngle(s16 *angle) {} bool PlayerLinkBase::func_ov000_020bd510(s32 param1, unk32 *param2) {} diff --git a/src/05/Player/LinkStateBase.cpp b/src/05/Player/LinkStateBase.cpp index 1a8982631..2d2162daf 100644 --- a/src/05/Player/LinkStateBase.cpp +++ b/src/05/Player/LinkStateBase.cpp @@ -15,7 +15,7 @@ void LinkStateBase::func_ov005_02110228(s32 param1, s32 param2, s32 param3, char bool LinkStateBase::func_ov005_0211058c(s32 param1) {} void LinkStateBase::func_ov005_021107fc() {} void LinkStateBase::func_ov005_0211086c(s32 param1) {} -void LinkStateBase::func_ov005_0211097c(unk32 param1, unk8 param2, unk8 param3) {} +void LinkStateBase::func_ov005_0211097c(LinkStateBase_UnkStruct1 *param1, unk8 param2, unk8 param3) {} unk32 LinkStateBase::func_ov005_021109c0() {} void LinkStateBase::func_ov005_02110b40(s32 param1) {} void LinkStateBase::func_ov005_02110bb4() {} diff --git a/src/05/Player/LinkStateMove_05.cpp b/src/05/Player/LinkStateMove_05.cpp index 68d44f416..8e2c271ee 100644 --- a/src/05/Player/LinkStateMove_05.cpp +++ b/src/05/Player/LinkStateMove_05.cpp @@ -36,10 +36,11 @@ ARM void LinkStateMove::func_ov005_021113d0() { mUnk_12 = 10; } -static q4 data_ov005_02112be4 = FLOAT_TO_Q20(16 / 15.0); -static q20 data_ov005_02112be8 = FLOAT_TO_Q20(1 / 64.0); -static q20 data_ov005_02112bec = FLOAT_TO_Q20(1 / 3.0); -static const Vec3p data_ov005_021123ac = { +static q4 data_ov005_02112be4 = FLOAT_TO_Q20(16 / 15.0); +static q20 data_ov005_02112be8 = FLOAT_TO_Q20(1 / 64.0); +static q20 data_ov005_02112bec = FLOAT_TO_Q20(1 / 3.0); +static LinkStateBase_UnkStruct1 data_ov005_021123ac = { + 0, FLOAT_TO_Q20(0.0122), FLOAT_TO_Q20(1.0), FLOAT_TO_Q20(0.0), diff --git a/src/12_Battle/Player/Battle/PlayerBattleLinkControlData.cpp b/src/12_Battle/Player/Battle/PlayerBattleLinkControlData.cpp index 59cfa4a69..3fc29ed75 100644 --- a/src/12_Battle/Player/Battle/PlayerBattleLinkControlData.cpp +++ b/src/12_Battle/Player/Battle/PlayerBattleLinkControlData.cpp @@ -3,7 +3,7 @@ PlayerBattleLinkControlData::PlayerBattleLinkControlData() {} PlayerBattleLinkControlData::~PlayerBattleLinkControlData() {} void PlayerBattleLinkControlData::vfunc_18() {} -void PlayerBattleLinkControlData::vfunc_14(s32 param1) {} +u16 *PlayerBattleLinkControlData::vfunc_14(s32 param1) {} void PlayerBattleLinkControlData::vfunc_60(unk32 param1, unk32 param2, s32 param3) {} void PlayerBattleLinkControlData::vfunc_68(unk32 param1, unk32 param2) {} void PlayerBattleLinkControlData::vfunc_64(u32 param1) {} diff --git a/src/59_Hammer/Player/EquipHammer.cpp b/src/59_Hammer/Player/EquipHammer.cpp index 0e869d3ab..900e43c34 100644 --- a/src/59_Hammer/Player/EquipHammer.cpp +++ b/src/59_Hammer/Player/EquipHammer.cpp @@ -10,7 +10,7 @@ static char *gShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"}; -extern "C" void ApproachAngle_thunk(u16 *src, s16 dst, u32 param3); +extern "C" void ApproachAngle_thunk(s16 *src, s16 dst, u32 param3); ARM bool EquipHammer::IsUsable(unk32 param1) const { ActorNavi *pAVar3; diff --git a/src/Main/Game/Game.cpp b/src/Main/Game/Game.cpp index d702f1911..df157d84b 100644 --- a/src/Main/Game/Game.cpp +++ b/src/Main/Game/Game.cpp @@ -225,7 +225,7 @@ THUMB bool Game::StartGameMode() { func_02017cb0(data_02062d4c, 0xc); mUnk_0f0 = 0; mUnk_0f4 = 0; - mUnk_101 = 0; + mUnk_101 = false; mUnk_103 = GetGameMode(mModeId)->mUnk_03; mUnk_0f2 = GetGameMode(mModeId)->mUnk_00; @@ -352,7 +352,7 @@ ARM void Game::Run() { } if (!bVar6) { gFadeController.ProcessFade((u32) this->mUnk_0f2); - if ((this->mUnk_101 == 0) && (ov00Loaded)) { + if (!this->mUnk_101 && (ov00Loaded)) { data_027e0e2c.func_ov000_0207be84(bVar2); data_027e0db0.func_ov000_0207b378(bVar2); } diff --git a/src/Main/Unknown/UnkStruct_020397f8.cpp b/src/Main/Unknown/UnkStruct_020397f8.cpp index 7d593d847..66878f90e 100644 --- a/src/Main/Unknown/UnkStruct_020397f8.cpp +++ b/src/Main/Unknown/UnkStruct_020397f8.cpp @@ -94,7 +94,7 @@ THUMB void UnkStruct_020397f8::vfunc_4c() { // non-matching ARM void UnkStruct_020397f8::vfunc_2c() { - if (gGame.mUnk_101 != 0) { + if (gGame.mUnk_101) { if (((data_02056be4[data_027e077c.mUnk_0] & 1) != 0) != this->mUnk_50) { return; } @@ -183,7 +183,7 @@ ARM void UnkStruct_020397f8::vfunc_3c(u16 *param1) { return; } - if (gGame.mUnk_101 != 0) { + if (gGame.mUnk_101) { if (((data_02056be4[data_027e077c.mUnk_0] & 1) != 0) != this->mUnk_50) { return; } @@ -414,7 +414,7 @@ ARM void UnkStruct_020397f8::vfunc_44(s32 touchLastX, s32 touchLastY) { if ((gTouchControl.mFlags & 1) != 0) { if (this->mUnk_50 == 0 && data_027e0d38 != 0) { if (func_ov000_02079e04() == 0 && data_027e0e28->func_ov000_0207bc48() == 0) { - if (gGame.mUnk_101 == 0 && data_027e103c->mUnk_24 == 0) { + if (!gGame.mUnk_101 && data_027e103c->mUnk_24 == 0) { return; } } @@ -949,7 +949,7 @@ ARM bool UnkStruct_020397f8::func_0203c084() { bVar1 = false; } - if (!bVar1 && gGame.mUnk_101 == 0) { + if (!bVar1 && !gGame.mUnk_101) { if ((data_027e0d38 != NULL && data_027e0d38->mUnk_14 == 1) == 0) { bVar2 = false; }