diff --git a/config/eur/arm9/overlays/ov000/delinks.txt b/config/eur/arm9/overlays/ov000/delinks.txt index 46f9a7dc..558720d1 100644 --- a/config/eur/arm9/overlays/ov000/delinks.txt +++ b/config/eur/arm9/overlays/ov000/delinks.txt @@ -30,12 +30,42 @@ src/00_Core/Actor/Dungeon/ActorEventIcon.cpp: .data start:0x020e2aa0 end:0x020e2b5c .sbss start:0x020ecda4 end:0x020ecdc4 +src/00_Core/Actor/Navi/ActorNavi.cpp: + .text start:0x020b80e0 end:0x020b85d8 + .init start:0x020e12d8 end:0x020e133c + .ctor start:0x020e1f08 end:0x020e1f0c + .data start:0x020e6514 end:0x020e6674 + .sbss start:0x020ee1a0 end:0x020ee1d8 + +src/00_Core/Actor/Navi/ActorForceNavi.cpp: + complete + .text start:0x020b862c end:0x020b86a4 + .init start:0x020e133c end:0x020e137c + .ctor start:0x020e1f0c end:0x020e1f10 + .data start:0x020e6674 end:0x020e676c + .sbss start:0x020ee1d8 end:0x020ee1f8 + src/00_Core/Actor/Navi/ActorNaviBase.cpp: .text start:0x020b885c end:0x020bb118 .rodata start:0x020dc81c end:0x020dc858 .data start:0x020e676c end:0x020e68d4 .sbss start:0x020ee1f8 end:0x020ee1fc +src/00_Core/Actor/Dungeon/ActorActionObject.cpp: + .text start:0x020be198 end:0x020be418 + .init start:0x020e1b14 end:0x020e1b54 + .ctor start:0x020e1f14 end:0x020e1f18 + .data start:0x020e6d3c end:0x020e6df8 + .sbss start:0x020ee55c end:0x020ee57c + +src/00_Core/Actor/Navi/ActorWisdomNavi.cpp: + complete + .text start:0x020c0b64 end:0x020c0bdc + .init start:0x020e1b54 end:0x020e1b94 + .ctor start:0x020e1f18 end:0x020e1f1c + .data start:0x020e7098 end:0x020e7190 + .sbss start:0x020ee590 end:0x020ee5b0 + src/00_Core/Item/Item.cpp: .text start:0x020ad020 end:0x020ad090 .rodata start:0x020dc574 end:0x020dc6c4 diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 56f493dd..d2968311 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -2397,40 +2397,40 @@ func_ov000_020b7fe8 kind:function(arm,size=0x14) addr:0x20b7fe8 _ZN13PlayerManager4SaveEP15SaveItemManager kind:function(thumb,size=0x50) addr:0x20b7ffc _ZN13PlayerManager17IncreaseMaxHealthEs kind:function(thumb,size=0x14) addr:0x20b804c _ZN13PlayerManager19UpdateShipMaxHealthEv kind:function(thumb,size=0x80) addr:0x20b8060 -func_ov000_020b80e0 kind:function(arm,size=0x30) addr:0x20b80e0 -func_ov000_020b8110 kind:function(arm,size=0x24) addr:0x20b8110 -func_ov000_020b8134 kind:function(arm,size=0x14) addr:0x20b8134 -func_ov000_020b8148 kind:function(arm,size=0x1c) addr:0x20b8148 -func_ov000_020b8164 kind:function(arm,size=0x50) addr:0x20b8164 -func_ov000_020b81b4 kind:function(arm,size=0x40) addr:0x20b81b4 -func_ov000_020b81f4 kind:function(arm,size=0xc) addr:0x20b81f4 -func_ov000_020b8200 kind:function(arm,size=0x10) addr:0x20b8200 -func_ov000_020b8210 kind:function(arm,size=0x38) addr:0x20b8210 -func_ov000_020b8248 kind:function(arm,size=0x38) addr:0x20b8248 -func_ov000_020b8280 kind:function(arm,size=0x8) addr:0x20b8280 -func_ov000_020b8288 kind:function(arm,size=0x8) addr:0x20b8288 -func_ov000_020b8290 kind:function(arm,size=0x2c) addr:0x20b8290 -func_ov000_020b82bc kind:function(arm,size=0x2c) addr:0x20b82bc -func_ov000_020b82e8 kind:function(arm,size=0x58) addr:0x20b82e8 -func_ov000_020b8340 kind:function(arm,size=0xb8) addr:0x20b8340 -func_ov000_020b83f8 kind:function(arm,size=0x20) addr:0x20b83f8 -func_ov000_020b8418 kind:function(arm,size=0x3c) addr:0x20b8418 -func_ov000_020b8454 kind:function(arm,size=0x24) addr:0x20b8454 -func_ov000_020b8478 kind:function(arm,size=0x24) addr:0x20b8478 -func_ov000_020b849c kind:function(arm,size=0x34) addr:0x20b849c -func_ov000_020b84d0 kind:function(arm,size=0x8) addr:0x20b84d0 -func_ov000_020b84d8 kind:function(arm,size=0x54) addr:0x20b84d8 -func_ov000_020b852c kind:function(arm,size=0x10) addr:0x20b852c -func_ov000_020b853c kind:function(arm,size=0x14) addr:0x20b853c -func_ov000_020b8550 kind:function(arm,size=0x48) addr:0x20b8550 -func_ov000_020b8598 kind:function(arm,size=0x40) addr:0x20b8598 +_ZN9ActorNavi6CreateEv kind:function(arm,size=0x30) addr:0x20b80e0 +_ZN24UnkStruct_ov000_020b8110C2Ev kind:function(arm,size=0x24) addr:0x20b8110 +_ZN24UnkStruct_ov000_020b8110D1Ev kind:function(arm,size=0x14) addr:0x20b8134 +_ZN24UnkStruct_ov000_020b8110D0Ev kind:function(arm,size=0x1c) addr:0x20b8148 +_ZN24UnkStruct_ov000_020b81108vfunc_08EPs kind:function(arm,size=0x50) addr:0x20b8164 +_ZN24UnkStruct_ov000_020b81108vfunc_18EPi kind:function(arm,size=0x40) addr:0x20b81b4 +_ZN24UnkStruct_ov000_020b81108vfunc_14EPt kind:function(arm,size=0xc) addr:0x20b81f4 +_ZN9ActorNavi19func_ov000_020b8200Ev kind:function(arm,size=0x10) addr:0x20b8200 +_ZN9ActorNavi8vfunc_c4Ev kind:function(arm,size=0x38) addr:0x20b8210 +_ZN9ActorNavi8vfunc_c8Ev kind:function(arm,size=0x38) addr:0x20b8248 +_ZN9ActorNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20b8280 +_ZN9ActorNavi8vfunc_b8Ev kind:function(arm,size=0x8) addr:0x20b8288 +_ZN9ActorNavi8vfunc_d4Ev kind:function(arm,size=0x2c) addr:0x20b8290 +_ZN9ActorNavi8vfunc_d0Ev kind:function(arm,size=0x2c) addr:0x20b82bc +_ZN9ActorNavi9SetActiveEb kind:function(arm,size=0x58) addr:0x20b82e8 +_ZN9ActorNavi8vfunc_e0Ev kind:function(arm,size=0xb8) addr:0x20b8340 +_ZN9ActorNavi8vfunc_d8Ev kind:function(arm,size=0x20) addr:0x20b83f8 +_ZN9ActorNavi8vfunc_20Eb kind:function(arm,size=0x3c) addr:0x20b8418 +_ZN9ActorNavi8vfunc_ccEPi kind:function(arm,size=0x24) addr:0x20b8454 +_ZN9ActorNavi8vfunc_c0EP5Vec3p kind:function(arm,size=0x24) addr:0x20b8478 +_ZN9ActorNavi8vfunc_e8Ev kind:function(arm,size=0x34) addr:0x20b849c +_ZN9ActorNavi8vfunc_8cEv kind:function(arm,size=0x8) addr:0x20b84d0 +_ZN9ActorNavi8vfunc_ecEv kind:function(arm,size=0x54) addr:0x20b84d8 +_Z14GetEquipHammerv kind:function(arm,size=0x10) addr:0x20b852c local +_ZN9ActorNavi19func_ov000_020b853cEv kind:function(arm,size=0x14) addr:0x20b853c +_ZN9ActorNaviD1Ev kind:function(arm,size=0x48) addr:0x20b8550 +_ZN9ActorNaviD0Ev kind:function(arm,size=0x40) addr:0x20b8598 func_ov000_020b85d8 kind:function(thumb,size=0x28) addr:0x20b85d8 func_ov000_020b8600 kind:function(arm,size=0x10) addr:0x20b8600 func_ov000_020b8610 kind:function(arm,size=0x1c) addr:0x20b8610 -func_ov000_020b862c kind:function(arm,size=0x40) addr:0x20b862c -func_ov000_020b866c kind:function(arm,size=0x8) addr:0x20b866c -func_ov000_020b8674 kind:function(arm,size=0x1c) addr:0x20b8674 -func_ov000_020b8690 kind:function(arm,size=0x14) addr:0x20b8690 +_ZN14ActorForceNavi6CreateEv kind:function(arm,size=0x40) addr:0x20b862c +_ZN14ActorForceNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20b866c +_ZN14ActorForceNaviD0Ev kind:function(arm,size=0x1c) addr:0x20b8674 +_ZN14ActorForceNaviD1Ev kind:function(arm,size=0x14) addr:0x20b8690 func_ov000_020b86a4 kind:function(arm,size=0x44) addr:0x20b86a4 func_ov000_020b86e8 kind:function(arm,size=0x30) addr:0x20b86e8 func_ov000_020b8718 kind:function(arm,size=0x8) addr:0x20b8718 @@ -2617,13 +2617,13 @@ func_ov000_020bd958 kind:function(arm,size=0x4fc) addr:0x20bd958 func_ov000_020bde54 kind:function(arm,size=0x60) addr:0x20bde54 func_ov000_020bdeb4 kind:function(arm,size=0x10c) addr:0x20bdeb4 func_ov000_020bdfc0 kind:function(arm,size=0x1d8) addr:0x20bdfc0 -func_ov000_020be198 kind:function(arm,size=0x30) addr:0x20be198 -func_ov000_020be1c8 kind:function(arm,size=0x20) addr:0x20be1c8 -func_ov000_020be1e8 kind:function(arm,size=0x14) addr:0x20be1e8 -func_ov000_020be1fc kind:function(arm,size=0x1c) addr:0x20be1fc -func_ov000_020be218 kind:function(arm,size=0x7c) addr:0x20be218 -func_ov000_020be294 kind:function(arm,size=0x178) addr:0x20be294 -func_ov000_020be40c kind:function(arm,size=0xc) addr:0x20be40c +_ZN17ActorActionObject6CreateEv kind:function(arm,size=0x30) addr:0x20be198 +_ZN17ActorActionObjectC1Ev kind:function(arm,size=0x20) addr:0x20be1c8 +_ZN17ActorActionObjectD1Ev kind:function(arm,size=0x14) addr:0x20be1e8 +_ZN17ActorActionObjectD0Ev kind:function(arm,size=0x1c) addr:0x20be1fc +_ZN17ActorActionObject8vfunc_08Ev kind:function(arm,size=0x7c) addr:0x20be218 +_ZN17ActorActionObject8vfunc_14Ej kind:function(arm,size=0x178) addr:0x20be294 +_ZN17ActorActionObject8vfunc_18Ej kind:function(arm,size=0xc) addr:0x20be40c func_ov000_020be418 kind:function(arm,size=0x4c) addr:0x20be418 func_ov000_020be464 kind:function(arm,size=0x78) addr:0x20be464 func_ov000_020be4dc kind:function(arm,size=0x64) addr:0x20be4dc @@ -2696,10 +2696,10 @@ _ZN11EquipShield8vfunc_1cEv kind:function(arm,size=0xc) addr:0x20c07f8 _ZN11EquipShield8vfunc_30Ev kind:function(arm,size=0x68) addr:0x20c0804 _ZN11EquipShield8vfunc_38Ei kind:function(arm,size=0x21c) addr:0x20c086c _ZNK11EquipShield9GetHitboxEP8Cylinder kind:function(arm,size=0xdc) addr:0x20c0a88 -func_ov000_020c0b64 kind:function(arm,size=0x40) addr:0x20c0b64 -func_ov000_020c0ba4 kind:function(arm,size=0x8) addr:0x20c0ba4 -func_ov000_020c0bac kind:function(arm,size=0x1c) addr:0x20c0bac -func_ov000_020c0bc8 kind:function(arm,size=0x14) addr:0x20c0bc8 +_ZN15ActorWisdomNavi6CreateEv kind:function(arm,size=0x40) addr:0x20c0b64 +_ZN15ActorWisdomNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20c0ba4 +_ZN15ActorWisdomNaviD0Ev kind:function(arm,size=0x1c) addr:0x20c0bac +_ZN15ActorWisdomNaviD1Ev kind:function(arm,size=0x14) addr:0x20c0bc8 func_ov000_020c0bdc kind:function(arm,size=0x2c) addr:0x20c0bdc func_ov000_020c0c08 kind:function(thumb,size=0x28) addr:0x20c0c08 func_ov000_020c0c30 kind:function(thumb,size=0x4) addr:0x20c0c30 @@ -2745,7 +2745,7 @@ _ZN5Actor8vfunc_30Ev kind:function(arm,size=0x8) addr:0x20c17b0 _ZN5Actor8vfunc_14Ej kind:function(arm,size=0x4) addr:0x20c17b8 _ZN5Actor8vfunc_18Ej kind:function(arm,size=0x18) addr:0x20c17bc _ZN5Actor8vfunc_1cEPt kind:function(arm,size=0xc0) addr:0x20c17d4 -_ZN5Actor8vfunc_20Ei kind:function(arm,size=0x4) addr:0x20c1894 +_ZN5Actor8vfunc_20Eb kind:function(arm,size=0x4) addr:0x20c1894 _ZN5Actor10SetUnk_129Eb kind:function(arm,size=0x10) addr:0x20c1898 _ZN5Actor10SetUnk_11bEv kind:function(arm,size=0x1c) addr:0x20c18a8 _ZN5Actor11SetVelocityEP5Vec3p kind:function(arm,size=0x38) addr:0x20c18c4 @@ -2773,7 +2773,7 @@ _ZN5Actor20KillPickupItemActorsEv kind:function(arm,size=0x54) addr:0x20c1b18 _ZN5Actor15TrySetTransformEP9Transform kind:function(arm,size=0x48) addr:0x20c1b6c _ZN5Actor12SetTransformEP9Transform kind:function(arm,size=0x44) addr:0x20c1bb4 _ZN5Actor8vfunc_a8Ev kind:function(arm,size=0x4) addr:0x20c1bf8 -_ZN5Actor18func_Ov00_020c1bfcEi kind:function(arm,size=0x24) addr:0x20c1bfc +_ZN5Actor18func_ov00_020c1bfcEi kind:function(arm,size=0x24) addr:0x20c1bfc _ZN5Actor18func_ov00_020c1c20Eii kind:function(arm,size=0x28) addr:0x20c1c20 _ZN5Actor8vfunc_48EP9Knockback kind:function(arm,size=0x8) addr:0x20c1c48 _ZN5Actor8vfunc_4cEPi kind:function(arm,size=0x44) addr:0x20c1c50 @@ -3955,11 +3955,11 @@ __sinit_ov000_020e11d8 kind:function(arm,size=0x34) addr:0x20e11d8 __sinit_ov000_020e120c kind:function(arm,size=0x44) addr:0x20e120c __sinit_ov000_020e1250 kind:function(arm,size=0x40) addr:0x20e1250 __sinit_ov000_020e1290 kind:function(arm,size=0x48) addr:0x20e1290 -__sinit_ov000_020e12d8 kind:function(arm,size=0x64) addr:0x20e12d8 -__sinit_ov000_020e133c kind:function(arm,size=0x40) addr:0x20e133c +__sinit_ActorNavi.cpp kind:function(arm,size=0x64) addr:0x20e12d8 +__sinit_ActorForceNavi.cpp kind:function(arm,size=0x40) addr:0x20e133c __sinit_ov000_020e137c kind:function(arm,size=0x798) addr:0x20e137c -__sinit_ov000_020e1b14 kind:function(arm,size=0x40) addr:0x20e1b14 -__sinit_ov000_020e1b54 kind:function(arm,size=0x40) addr:0x20e1b54 +__sinit_ActorActionObject.cpp kind:function(arm,size=0x40) addr:0x20e1b14 +__sinit_ActorWisdomNavi.cpp kind:function(arm,size=0x40) addr:0x20e1b54 __sinit_ov000_020e1b94 kind:function(arm,size=0x40) addr:0x20e1b94 __sinit_ov000_020e1bd4 kind:function(arm,size=0x40) addr:0x20e1bd4 __sinit_ov000_020e1c14 kind:function(arm,size=0x40) addr:0x20e1c14 @@ -4956,9 +4956,9 @@ data_ov000_020e6528 kind:data(any) addr:0x20e6528 data_ov000_020e652c kind:data(any) addr:0x20e652c data_ov000_020e6530 kind:data(any) addr:0x20e6530 data_ov000_020e6534 kind:data(any) addr:0x20e6534 -data_ov000_020e6560 kind:data(any) addr:0x20e6560 -data_ov000_020e6658 kind:data(any) addr:0x20e6658 -data_ov000_020e667c kind:data(any) addr:0x20e667c +_ZTV9ActorNavi kind:data(any) addr:0x20e6560 +_ZTV24UnkStruct_ov000_020b8110 kind:data(any) addr:0x20e6658 +_ZTV14ActorForceNavi kind:data(any) addr:0x20e667c data_ov000_020e676c kind:data(any) addr:0x20e676c data_ov000_020e6770 kind:data(any) addr:0x20e6770 data_ov000_020e6774 kind:data(any) addr:0x20e6774 @@ -5017,7 +5017,7 @@ data_ov000_020e6c58 kind:data(any) addr:0x20e6c58 data_ov000_020e6c5c kind:data(any) addr:0x20e6c5c _ZTV14PlayerLinkBase kind:data(any) addr:0x20e6c88 data_ov000_020e6d18 kind:data(any) addr:0x20e6d18 -data_ov000_020e6d44 kind:data(any) addr:0x20e6d44 +_ZTV17ActorActionObject kind:data(any) addr:0x20e6d44 data_ov000_020e6df8 kind:data(any) addr:0x20e6df8 data_ov000_020e6dfc kind:data(any) addr:0x20e6dfc data_ov000_020e6e08 kind:data(any) addr:0x20e6e08 @@ -5057,7 +5057,7 @@ data_ov000_020e7014 kind:data(any) addr:0x20e7014 data_ov000_020e7018 kind:data(any) addr:0x20e7018 data_ov000_020e701c kind:data(any) addr:0x20e701c data_ov000_020e7048 kind:data(any) addr:0x20e7048 -data_ov000_020e70a0 kind:data(any) addr:0x20e70a0 +_ZTV15ActorWisdomNavi kind:data(any) addr:0x20e70a0 data_ov000_020e7198 kind:data(any) addr:0x20e7198 data_ov000_020e71a0 kind:data(any) addr:0x20e71a0 data_ov000_020e71a4 kind:data(any) addr:0x20e71a4 @@ -5875,12 +5875,12 @@ data_ov000_020ee16c kind:bss addr:0x20ee16c data_ov000_020ee178 kind:bss addr:0x20ee178 data_ov000_020ee184 kind:bss addr:0x20ee184 data_ov000_020ee198 kind:bss addr:0x20ee198 -data_ov000_020ee1a0 kind:bss addr:0x20ee1a0 -data_ov000_020ee1ac kind:bss addr:0x20ee1ac -data_ov000_020ee1c0 kind:bss addr:0x20ee1c0 +@418 kind:bss addr:0x20ee1a0 local +_ZN9ActorNavi5gTypeE kind:bss addr:0x20ee1ac +@419 kind:bss addr:0x20ee1c0 local data_ov000_020ee1cc kind:bss addr:0x20ee1cc -data_ov000_020ee1d8 kind:bss addr:0x20ee1d8 -data_ov000_020ee1e4 kind:bss addr:0x20ee1e4 +@405 kind:bss addr:0x20ee1d8 local +_ZN14ActorForceNavi5gTypeE kind:bss addr:0x20ee1e4 data_ov000_020ee1f8 kind:bss addr:0x20ee1f8 data_ov000_020ee1fc kind:bss addr:0x20ee1fc data_ov000_020ee208 kind:bss addr:0x20ee208 @@ -5939,12 +5939,12 @@ data_ov000_020ee50c kind:bss addr:0x20ee50c data_ov000_020ee520 kind:bss addr:0x20ee520 data_ov000_020ee534 kind:bss addr:0x20ee534 data_ov000_020ee548 kind:bss addr:0x20ee548 -data_ov000_020ee55c kind:bss addr:0x20ee55c -data_ov000_020ee568 kind:bss addr:0x20ee568 +@360 kind:bss addr:0x20ee55c local +_ZN17ActorActionObject5gTypeE kind:bss addr:0x20ee568 gPlayerAnimHandler kind:bss addr:0x20ee57c data_ov000_020ee588 kind:bss addr:0x20ee588 -data_ov000_020ee590 kind:bss addr:0x20ee590 -data_ov000_020ee59c kind:bss addr:0x20ee59c +@405 kind:bss addr:0x20ee590 local +_ZN15ActorWisdomNavi5gTypeE kind:bss addr:0x20ee59c data_ov000_020ee5b0 kind:bss addr:0x20ee5b0 data_ov000_020ee5bc kind:bss addr:0x20ee5bc data_ov000_020ee5d0 kind:bss addr:0x20ee5d0 diff --git a/config/usa/arm9/overlays/ov000/delinks.txt b/config/usa/arm9/overlays/ov000/delinks.txt index ddb30117..442437bd 100644 --- a/config/usa/arm9/overlays/ov000/delinks.txt +++ b/config/usa/arm9/overlays/ov000/delinks.txt @@ -30,12 +30,42 @@ src/00_Core/Actor/Dungeon/ActorEventIcon.cpp: .data start:0x020e2a40 end:0x020e2afc .sbss start:0x020ecd44 end:0x020ecd64 +src/00_Core/Actor/Navi/ActorNavi.cpp: + .text start:0x020b8080 end:0x020b8578 + .init start:0x020e1278 end:0x020e12dc + .ctor start:0x020e1ea8 end:0x020e1eac + .data start:0x020e64b4 end:0x020e6614 + .sbss start:0x020ee140 end:0x020ee178 + +src/00_Core/Actor/Navi/ActorForceNavi.cpp: + complete + .text start:0x020b85cc end:0x020b8644 + .init start:0x020e12dc end:0x020e131c + .ctor start:0x020e1eac end:0x020e1eb0 + .data start:0x020e6614 end:0x020e670c + .sbss start:0x020ee178 end:0x020ee198 + src/00_Core/Actor/Navi/ActorNaviBase.cpp: .text start:0x020b87fc end:0x020bb0b8 .rodata start:0x020dc7bc end:0x020dc7f8 .data start:0x020e670c end:0x020e6874 .sbss start:0x020ee198 end:0x020ee19c +src/00_Core/Actor/Dungeon/ActorActionObject.cpp: + .text start:0x020be138 end:0x020be3b8 + .init start:0x020e1ab4 end:0x020e1af4 + .ctor start:0x020e1eb4 end:0x020e1eb8 + .data start:0x020e6cdc end:0x020e6d98 + .sbss start:0x020ee4fc end:0x020ee51c + +src/00_Core/Actor/Navi/ActorWisdomNavi.cpp: + complete + .text start:0x020c0b04 end:0x020c0b7c + .init start:0x020e1af4 end:0x020e1b34 + .ctor start:0x020e1eb8 end:0x020e1ebc + .data start:0x020e7038 end:0x020e7130 + .sbss start:0x020ee530 end:0x020ee550 + src/00_Core/Item/Item.cpp: .text start:0x020acfc0 end:0x020ad030 .rodata start:0x020dc514 end:0x020dc664 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 1b9d2f65..82bfe5cf 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -2397,40 +2397,40 @@ func_ov000_020b7fe8 kind:function(arm,size=0x14) addr:0x20b7f88 _ZN13PlayerManager4SaveEP15SaveItemManager kind:function(thumb,size=0x50) addr:0x20b7f9c _ZN13PlayerManager17IncreaseMaxHealthEs kind:function(thumb,size=0x14) addr:0x20b7fec _ZN13PlayerManager19UpdateShipMaxHealthEv kind:function(thumb,size=0x80) addr:0x20b8000 -func_ov000_020b80e0 kind:function(arm,size=0x30) addr:0x20b8080 -func_ov000_020b8110 kind:function(arm,size=0x24) addr:0x20b80b0 -func_ov000_020b8134 kind:function(arm,size=0x14) addr:0x20b80d4 -func_ov000_020b8148 kind:function(arm,size=0x1c) addr:0x20b80e8 -func_ov000_020b8164 kind:function(arm,size=0x50) addr:0x20b8104 -func_ov000_020b81b4 kind:function(arm,size=0x40) addr:0x20b8154 -func_ov000_020b81f4 kind:function(arm,size=0xc) addr:0x20b8194 -func_ov000_020b8200 kind:function(arm,size=0x10) addr:0x20b81a0 -func_ov000_020b8210 kind:function(arm,size=0x38) addr:0x20b81b0 -func_ov000_020b8248 kind:function(arm,size=0x38) addr:0x20b81e8 -func_ov000_020b8280 kind:function(arm,size=0x8) addr:0x20b8220 -func_ov000_020b8288 kind:function(arm,size=0x8) addr:0x20b8228 -func_ov000_020b8290 kind:function(arm,size=0x2c) addr:0x20b8230 -func_ov000_020b82bc kind:function(arm,size=0x2c) addr:0x20b825c -func_ov000_020b82e8 kind:function(arm,size=0x58) addr:0x20b8288 -func_ov000_020b8340 kind:function(arm,size=0xb8) addr:0x20b82e0 -func_ov000_020b83f8 kind:function(arm,size=0x20) addr:0x20b8398 -func_ov000_020b8418 kind:function(arm,size=0x3c) addr:0x20b83b8 -func_ov000_020b8454 kind:function(arm,size=0x24) addr:0x20b83f4 -func_ov000_020b8478 kind:function(arm,size=0x24) addr:0x20b8418 -func_ov000_020b849c kind:function(arm,size=0x34) addr:0x20b843c -func_ov000_020b84d0 kind:function(arm,size=0x8) addr:0x20b8470 -func_ov000_020b84d8 kind:function(arm,size=0x54) addr:0x20b8478 -func_ov000_020b852c kind:function(arm,size=0x10) addr:0x20b84cc -func_ov000_020b853c kind:function(arm,size=0x14) addr:0x20b84dc -func_ov000_020b8550 kind:function(arm,size=0x48) addr:0x20b84f0 -func_ov000_020b8598 kind:function(arm,size=0x40) addr:0x20b8538 +_ZN9ActorNavi6CreateEv kind:function(arm,size=0x30) addr:0x20b8080 +_ZN24UnkStruct_ov000_020b8110C2Ev kind:function(arm,size=0x24) addr:0x20b80b0 +_ZN24UnkStruct_ov000_020b8110D1Ev kind:function(arm,size=0x14) addr:0x20b80d4 +_ZN24UnkStruct_ov000_020b8110D0Ev kind:function(arm,size=0x1c) addr:0x20b80e8 +_ZN24UnkStruct_ov000_020b81108vfunc_08EPs kind:function(arm,size=0x50) addr:0x20b8104 +_ZN24UnkStruct_ov000_020b81108vfunc_18EPi kind:function(arm,size=0x40) addr:0x20b8154 +_ZN24UnkStruct_ov000_020b81108vfunc_14EPt kind:function(arm,size=0xc) addr:0x20b8194 +_ZN9ActorNavi19func_ov000_020b8200Ev kind:function(arm,size=0x10) addr:0x20b81a0 +_ZN9ActorNavi8vfunc_c4Ev kind:function(arm,size=0x38) addr:0x20b81b0 +_ZN9ActorNavi8vfunc_c8Ev kind:function(arm,size=0x38) addr:0x20b81e8 +_ZN9ActorNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20b8220 +_ZN9ActorNavi8vfunc_b8Ev kind:function(arm,size=0x8) addr:0x20b8228 +_ZN9ActorNavi8vfunc_d4Ev kind:function(arm,size=0x2c) addr:0x20b8230 +_ZN9ActorNavi8vfunc_d0Ev kind:function(arm,size=0x2c) addr:0x20b825c +_ZN9ActorNavi9SetActiveEb kind:function(arm,size=0x58) addr:0x20b8288 +_ZN9ActorNavi8vfunc_e0Ev kind:function(arm,size=0xb8) addr:0x20b82e0 +_ZN9ActorNavi8vfunc_d8Ev kind:function(arm,size=0x20) addr:0x20b8398 +_ZN9ActorNavi8vfunc_20Eb kind:function(arm,size=0x3c) addr:0x20b83b8 +_ZN9ActorNavi8vfunc_ccEPi kind:function(arm,size=0x24) addr:0x20b83f4 +_ZN9ActorNavi8vfunc_c0EP5Vec3p kind:function(arm,size=0x24) addr:0x20b8418 +_ZN9ActorNavi8vfunc_e8Ev kind:function(arm,size=0x34) addr:0x20b843c +_ZN9ActorNavi8vfunc_8cEv kind:function(arm,size=0x8) addr:0x20b8470 +_ZN9ActorNavi8vfunc_ecEv kind:function(arm,size=0x54) addr:0x20b8478 +_Z14GetEquipHammerv kind:function(arm,size=0x10) addr:0x20b84cc local +_ZN9ActorNavi19func_ov000_020b853cEv kind:function(arm,size=0x14) addr:0x20b84dc +_ZN9ActorNaviD1Ev kind:function(arm,size=0x48) addr:0x20b84f0 +_ZN9ActorNaviD0Ev kind:function(arm,size=0x40) addr:0x20b8538 func_ov000_020b85d8 kind:function(thumb,size=0x28) addr:0x20b8578 func_ov000_020b8600 kind:function(arm,size=0x10) addr:0x20b85a0 func_ov000_020b8610 kind:function(arm,size=0x1c) addr:0x20b85b0 -func_ov000_020b862c kind:function(arm,size=0x40) addr:0x20b85cc -func_ov000_020b866c kind:function(arm,size=0x8) addr:0x20b860c -func_ov000_020b8674 kind:function(arm,size=0x1c) addr:0x20b8614 -func_ov000_020b8690 kind:function(arm,size=0x14) addr:0x20b8630 +_ZN14ActorForceNavi6CreateEv kind:function(arm,size=0x40) addr:0x20b85cc +_ZN14ActorForceNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20b860c +_ZN14ActorForceNaviD0Ev kind:function(arm,size=0x1c) addr:0x20b8614 +_ZN14ActorForceNaviD1Ev kind:function(arm,size=0x14) addr:0x20b8630 func_ov000_020b86a4 kind:function(arm,size=0x44) addr:0x20b8644 func_ov000_020b86e8 kind:function(arm,size=0x30) addr:0x20b8688 func_ov000_020b8718 kind:function(arm,size=0x8) addr:0x20b86b8 @@ -2617,13 +2617,13 @@ func_ov000_020bd958 kind:function(arm,size=0x4fc) addr:0x20bd8f8 func_ov000_020bde54 kind:function(arm,size=0x60) addr:0x20bddf4 func_ov000_020bdeb4 kind:function(arm,size=0x10c) addr:0x20bde54 func_ov000_020bdfc0 kind:function(arm,size=0x1d8) addr:0x20bdf60 -func_ov000_020be198 kind:function(arm,size=0x30) addr:0x20be138 -func_ov000_020be1c8 kind:function(arm,size=0x20) addr:0x20be168 -func_ov000_020be1e8 kind:function(arm,size=0x14) addr:0x20be188 -func_ov000_020be1fc kind:function(arm,size=0x1c) addr:0x20be19c -func_ov000_020be218 kind:function(arm,size=0x7c) addr:0x20be1b8 -func_ov000_020be294 kind:function(arm,size=0x178) addr:0x20be234 -func_ov000_020be40c kind:function(arm,size=0xc) addr:0x20be3ac +_ZN17ActorActionObject6CreateEv kind:function(arm,size=0x30) addr:0x20be138 +_ZN17ActorActionObjectC1Ev kind:function(arm,size=0x20) addr:0x20be168 +_ZN17ActorActionObjectD1Ev kind:function(arm,size=0x14) addr:0x20be188 +_ZN17ActorActionObjectD0Ev kind:function(arm,size=0x1c) addr:0x20be19c +_ZN17ActorActionObject8vfunc_08Ev kind:function(arm,size=0x7c) addr:0x20be1b8 +_ZN17ActorActionObject8vfunc_14Ej kind:function(arm,size=0x178) addr:0x20be234 +_ZN17ActorActionObject8vfunc_18Ej kind:function(arm,size=0xc) addr:0x20be3ac func_ov000_020be418 kind:function(arm,size=0x4c) addr:0x20be3b8 func_ov000_020be464 kind:function(arm,size=0x78) addr:0x20be404 func_ov000_020be4dc kind:function(arm,size=0x64) addr:0x20be47c @@ -2696,10 +2696,10 @@ _ZN11EquipShield8vfunc_1cEv kind:function(arm,size=0xc) addr:0x20c0798 _ZN11EquipShield8vfunc_30Ev kind:function(arm,size=0x68) addr:0x20c07a4 _ZN11EquipShield8vfunc_38Ei kind:function(arm,size=0x21c) addr:0x20c080c _ZNK11EquipShield9GetHitboxEP8Cylinder kind:function(arm,size=0xdc) addr:0x20c0a28 -func_ov000_020c0b64 kind:function(arm,size=0x40) addr:0x20c0b04 -func_ov000_020c0ba4 kind:function(arm,size=0x8) addr:0x20c0b44 -func_ov000_020c0bac kind:function(arm,size=0x1c) addr:0x20c0b4c -func_ov000_020c0bc8 kind:function(arm,size=0x14) addr:0x20c0b68 +_ZN15ActorWisdomNavi6CreateEv kind:function(arm,size=0x40) addr:0x20c0b04 +_ZN15ActorWisdomNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20c0b44 +_ZN15ActorWisdomNaviD0Ev kind:function(arm,size=0x1c) addr:0x20c0b4c +_ZN15ActorWisdomNaviD1Ev kind:function(arm,size=0x14) addr:0x20c0b68 func_ov000_020c0bdc kind:function(arm,size=0x2c) addr:0x20c0b7c func_ov000_020c0c08 kind:function(thumb,size=0x28) addr:0x20c0ba8 func_ov000_020c0c30 kind:function(thumb,size=0x4) addr:0x20c0bd0 @@ -2745,7 +2745,7 @@ _ZN5Actor8vfunc_30Ev kind:function(arm,size=0x8) addr:0x20c1750 _ZN5Actor8vfunc_14Ej kind:function(arm,size=0x4) addr:0x20c1758 _ZN5Actor8vfunc_18Ej kind:function(arm,size=0x18) addr:0x20c175c _ZN5Actor8vfunc_1cEPt kind:function(arm,size=0xc0) addr:0x20c1774 -_ZN5Actor8vfunc_20Ei kind:function(arm,size=0x4) addr:0x20c1834 +_ZN5Actor8vfunc_20Eb kind:function(arm,size=0x4) addr:0x20c1834 _ZN5Actor10SetUnk_129Eb kind:function(arm,size=0x10) addr:0x20c1838 _ZN5Actor10SetUnk_11bEv kind:function(arm,size=0x1c) addr:0x20c1848 _ZN5Actor11SetVelocityEP5Vec3p kind:function(arm,size=0x38) addr:0x20c1864 @@ -2773,7 +2773,7 @@ _ZN5Actor20KillPickupItemActorsEv kind:function(arm,size=0x54) addr:0x20c1ab8 _ZN5Actor15TrySetTransformEP9Transform kind:function(arm,size=0x48) addr:0x20c1b0c _ZN5Actor12SetTransformEP9Transform kind:function(arm,size=0x44) addr:0x20c1b54 _ZN5Actor8vfunc_a8Ev kind:function(arm,size=0x4) addr:0x20c1b98 -_ZN5Actor18func_Ov00_020c1bfcEi kind:function(arm,size=0x24) addr:0x20c1b9c +_ZN5Actor18func_ov00_020c1bfcEi kind:function(arm,size=0x24) addr:0x20c1b9c _ZN5Actor18func_ov00_020c1c20Eii kind:function(arm,size=0x28) addr:0x20c1bc0 _ZN5Actor8vfunc_48EP9Knockback kind:function(arm,size=0x8) addr:0x20c1be8 _ZN5Actor8vfunc_4cEPi kind:function(arm,size=0x44) addr:0x20c1bf0 @@ -3955,11 +3955,11 @@ __sinit_ov000_020e11d8 kind:function(arm,size=0x34) addr:0x20e1178 __sinit_ov000_020e120c kind:function(arm,size=0x44) addr:0x20e11ac __sinit_ov000_020e1250 kind:function(arm,size=0x40) addr:0x20e11f0 __sinit_ov000_020e1290 kind:function(arm,size=0x48) addr:0x20e1230 -__sinit_ov000_020e12d8 kind:function(arm,size=0x64) addr:0x20e1278 -__sinit_ov000_020e133c kind:function(arm,size=0x40) addr:0x20e12dc +__sinit_ActorNavi.cpp kind:function(arm,size=0x64) addr:0x20e1278 +__sinit_ActorForceNavi.cpp kind:function(arm,size=0x40) addr:0x20e12dc __sinit_ov000_020e137c kind:function(arm,size=0x798) addr:0x20e131c -__sinit_ov000_020e1b14 kind:function(arm,size=0x40) addr:0x20e1ab4 -__sinit_ov000_020e1b54 kind:function(arm,size=0x40) addr:0x20e1af4 +__sinit_ActorActionObject.cpp kind:function(arm,size=0x40) addr:0x20e1ab4 +__sinit_ActorWisdomNavi.cpp kind:function(arm,size=0x40) addr:0x20e1af4 __sinit_ov000_020e1b94 kind:function(arm,size=0x40) addr:0x20e1b34 __sinit_ov000_020e1bd4 kind:function(arm,size=0x40) addr:0x20e1b74 __sinit_ov000_020e1c14 kind:function(arm,size=0x40) addr:0x20e1bb4 @@ -4956,9 +4956,9 @@ data_ov000_020e6528 kind:data(any) addr:0x20e64c8 data_ov000_020e652c kind:data(any) addr:0x20e64cc data_ov000_020e6530 kind:data(any) addr:0x20e64d0 data_ov000_020e6534 kind:data(any) addr:0x20e64d4 -data_ov000_020e6560 kind:data(any) addr:0x20e6500 -data_ov000_020e6658 kind:data(any) addr:0x20e65f8 -data_ov000_020e667c kind:data(any) addr:0x20e661c +_ZTV9ActorNavi kind:data(any) addr:0x20e6500 +_ZTV24UnkStruct_ov000_020b8110 kind:data(any) addr:0x20e65f8 +_ZTV14ActorForceNavi kind:data(any) addr:0x20e661c data_ov000_020e676c kind:data(any) addr:0x20e670c data_ov000_020e6770 kind:data(any) addr:0x20e6710 data_ov000_020e6774 kind:data(any) addr:0x20e6714 @@ -5017,7 +5017,7 @@ data_ov000_020e6c58 kind:data(any) addr:0x20e6bf8 data_ov000_020e6c5c kind:data(any) addr:0x20e6bfc _ZTV14PlayerLinkBase kind:data(any) addr:0x20e6c28 data_ov000_020e6d18 kind:data(any) addr:0x20e6cb8 -data_ov000_020e6d44 kind:data(any) addr:0x20e6ce4 +_ZTV17ActorActionObject kind:data(any) addr:0x20e6ce4 data_ov000_020e6df8 kind:data(any) addr:0x20e6d98 data_ov000_020e6dfc kind:data(any) addr:0x20e6d9c data_ov000_020e6e08 kind:data(any) addr:0x20e6da8 @@ -5057,7 +5057,7 @@ data_ov000_020e7014 kind:data(any) addr:0x20e6fb4 data_ov000_020e7018 kind:data(any) addr:0x20e6fb8 data_ov000_020e701c kind:data(any) addr:0x20e6fbc data_ov000_020e7048 kind:data(any) addr:0x20e6fe8 -data_ov000_020e70a0 kind:data(any) addr:0x20e7040 +_ZTV15ActorWisdomNavi kind:data(any) addr:0x20e7040 data_ov000_020e7198 kind:data(any) addr:0x20e7138 data_ov000_020e71a0 kind:data(any) addr:0x20e7140 data_ov000_020e71a4 kind:data(any) addr:0x20e7144 @@ -5875,12 +5875,12 @@ data_ov000_020ee16c kind:bss addr:0x20ee10c data_ov000_020ee178 kind:bss addr:0x20ee118 data_ov000_020ee184 kind:bss addr:0x20ee124 data_ov000_020ee198 kind:bss addr:0x20ee138 -data_ov000_020ee1a0 kind:bss addr:0x20ee140 -data_ov000_020ee1ac kind:bss addr:0x20ee14c -data_ov000_020ee1c0 kind:bss addr:0x20ee160 +@418 kind:bss addr:0x20ee140 local +_ZN9ActorNavi5gTypeE kind:bss addr:0x20ee14c +@419 kind:bss addr:0x20ee160 local data_ov000_020ee1cc kind:bss addr:0x20ee16c -data_ov000_020ee1d8 kind:bss addr:0x20ee178 -data_ov000_020ee1e4 kind:bss addr:0x20ee184 +@405 kind:bss addr:0x20ee178 local +_ZN14ActorForceNavi5gTypeE kind:bss addr:0x20ee184 data_ov000_020ee1f8 kind:bss addr:0x20ee198 data_ov000_020ee1fc kind:bss addr:0x20ee19c data_ov000_020ee208 kind:bss addr:0x20ee1a8 @@ -5939,12 +5939,12 @@ data_ov000_020ee50c kind:bss addr:0x20ee4ac data_ov000_020ee520 kind:bss addr:0x20ee4c0 data_ov000_020ee534 kind:bss addr:0x20ee4d4 data_ov000_020ee548 kind:bss addr:0x20ee4e8 -data_ov000_020ee55c kind:bss addr:0x20ee4fc -data_ov000_020ee568 kind:bss addr:0x20ee508 +@360 kind:bss addr:0x20ee4fc local +_ZN17ActorActionObject5gTypeE kind:bss addr:0x20ee508 gPlayerAnimHandler kind:bss addr:0x20ee51c data_ov000_020ee588 kind:bss addr:0x20ee528 -data_ov000_020ee590 kind:bss addr:0x20ee530 -data_ov000_020ee59c kind:bss addr:0x20ee53c +@405 kind:bss addr:0x20ee530 local +_ZN15ActorWisdomNavi5gTypeE kind:bss addr:0x20ee53c data_ov000_020ee5b0 kind:bss addr:0x20ee550 data_ov000_020ee5bc kind:bss addr:0x20ee55c data_ov000_020ee5d0 kind:bss addr:0x20ee570 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 2a30a7c1..c22f086e 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -227,7 +227,7 @@ public: bool func_ov00_020c195c(); bool func_ov00_020c198c(); void KillPickupItemActors(); - void func_Ov00_020c1bfc(s32 param1); + bool func_ov00_020c1bfc(s32 param1); void func_ov00_020c1c20(s32 param1, unk32 param2); bool IsNearLink(); void func_ov00_020c1cf8(); diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp index 7842da14..f71c533b 100644 --- a/include/Actor/ActorType.hpp +++ b/include/Actor/ActorType.hpp @@ -41,6 +41,7 @@ enum ActorTypeId_ { ActorTypeId_SmallKey = 'NKEY', ActorTypeId_SwitchObject = 'SWOB', ActorTypeId_EventIcon = 'EVIC', + ActorTypeId_ActionObject = 'ACOB', ActorTypeId_Sandworm = 'MLDW', ActorTypeId_Tektite = 'TEKT', diff --git a/include/Actor/Dungeon/ActorActionObject.hpp b/include/Actor/Dungeon/ActorActionObject.hpp new file mode 100644 index 00000000..0bf35dfb --- /dev/null +++ b/include/Actor/Dungeon/ActorActionObject.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include "Actor/Actor.hpp" + +class ActorActionObject : public Actor { +public: + static ActorType gType; + + /* 000 (base) */ + /* 158 */ + + /* 00 */ virtual ~ActorActionObject() override; + /* 08 */ virtual bool vfunc_08() override; + /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 18 */ virtual void vfunc_18(u32 param1) override; + /* b4 */ + + static ActorActionObject *Create(); + ActorActionObject(); +}; diff --git a/include/Actor/Navi/ActorForceNavi.hpp b/include/Actor/Navi/ActorForceNavi.hpp new file mode 100644 index 00000000..18a124f4 --- /dev/null +++ b/include/Actor/Navi/ActorForceNavi.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include "Actor/Navi/ActorNaviBase.hpp" + +class ActorForceNavi : public ActorNaviBase { +public: + static ActorType gType; + + /* 000 (base) */ + /* 294 */ + + /* b4 */ virtual FairyId GetFairyId() override; + + static ActorForceNavi *Create(); +}; diff --git a/include/Actor/Navi/ActorNavi.hpp b/include/Actor/Navi/ActorNavi.hpp index 98ebcf51..86774de4 100644 --- a/include/Actor/Navi/ActorNavi.hpp +++ b/include/Actor/Navi/ActorNavi.hpp @@ -1,3 +1,65 @@ #pragma once -class ActorNavi; +#include "Actor/Navi/ActorNaviBase.hpp" +#include "Unknown/UnkStruct_ov000_020beba8.hpp" + +class UnkStruct_ov000_020b8110 : public UnkStruct_ov000_020beba8 { +public: + /* 0 (base) */ + /* c */ + + /* 00 */ virtual ~UnkStruct_ov000_020b8110() override; + /* 08 */ virtual void vfunc_08(unk16 *param1) override; + /* 14 */ virtual void vfunc_14(u16 *param1) override; + /* 18 */ virtual void vfunc_18(s32 *param1) override; + /* 1c */ + + UnkStruct_ov000_020b8110(); +}; + +class ActorNavi : public ActorNaviBase { +public: + static ActorType gType; + + /* 000 (base) */ + /* 294 */ ModelRender mUnk_294; + /* 2f0 */ void *mUnk_2f0; + /* 2f4 */ unk8 mUnk_2f4[0x40]; + /* 334 */ unk32 mUnk_334; + /* 338 */ unk32 mUnk_338; + /* 33c */ unk32 mUnk_33c; + /* 340 */ unk16 mUnk_340; + /* 342 */ unk8 mUnk_342[0x2]; + /* 344 */ unk32 mUnk_344; + /* 348 */ unk32 mUnk_348; + /* 34c */ unk8 mUnk_34c[0x68]; + /* 3b4 */ EquipHammer *mHammer; + /* 3b8 */ unk32 mUnk_3b8; + /* 3bc */ unk32 mUnk_3bc; + /* 3c0 */ unk8 mUnk_3c0[0x8]; + /* 3c8 */ + + /* 00 */ virtual ~ActorNavi() override; + /* 08 */ virtual bool vfunc_08() override; + /* 20 */ virtual void vfunc_20(bool param1) override; + /* 8c */ virtual bool vfunc_8c() override; + /* b4 */ virtual FairyId GetFairyId() override; + /* b8 */ virtual s32 vfunc_b8() override; + /* c0 */ virtual bool vfunc_c0(Vec3p *param1) override; + /* c4 */ virtual void vfunc_c4() override; + /* c8 */ virtual void vfunc_c8() override; + /* cc */ virtual bool vfunc_cc(unk32 *param1) override; + /* d0 */ virtual void vfunc_d0() override; + /* d4 */ virtual void vfunc_d4() override; + /* d8 */ virtual void vfunc_d8() override; + /* dc */ virtual void SetActive(bool active) override; + /* e0 */ virtual void vfunc_e0() override; + /* e8 */ virtual void vfunc_e8() override; + /* ec */ virtual void vfunc_ec() override; + + static ActorNavi *Create(); + void func_ov000_020b8200(); + void func_ov000_020b853c(); + + ActorNavi(); +}; diff --git a/include/Actor/Navi/ActorNaviBase.hpp b/include/Actor/Navi/ActorNaviBase.hpp index f3a45e8a..4c2a20cf 100644 --- a/include/Actor/Navi/ActorNaviBase.hpp +++ b/include/Actor/Navi/ActorNaviBase.hpp @@ -7,20 +7,30 @@ #include "Player/EquipHammer.hpp" #include "Render/ModelRender.hpp" +typedef s32 FairyId; +enum FairyId_ { + FairyId_None = -1, + FairyId_Courage = 0, + FairyId_Power = 1, + FairyId_Wisdom = 2, + FairyId_COUNT = 3, +}; + class ActorNaviBase_Unk1 {}; class ActorNaviBase : public Actor { +public: /* 000 (base) */ /* 158 */ Vec3p mUnk_158; /* 164 */ unk32 mUnk_164; /* 168 */ ModelRender mUnk_168; /* 1c4 */ unk8 mUnk_1c4[0xc]; - /* 1d0 */ void *mUnk_1d0; - /* 1d4 */ unk8 mUnk_1d4[0x30]; + /* 1d0 */ unk8 mUnk_1d0[0x24]; + /* 1f4 */ unk8 mUnk_1f4[0x20]; /* 214 */ unk16 mUnk_214; /* 216 */ unk8 mUnk_216[0xc]; /* 222 */ unk16 mUnk_222; - /* 224 */ unk8 mUnk_224[0x18]; + /* 224 */ unk8 mUnk_224[0x28]; /* 24c */ unk32 mUnk_24c; /* 250 */ unk32 mUnk_250; /* 254 */ unk32 mUnk_254; @@ -33,22 +43,7 @@ class ActorNaviBase : public Actor { /* 288 */ unk8 mUnk_288[0x2]; /* 28a */ unk16 mUnk_28a; /* 28c */ unk8 mUnk_28c[0x8]; - /* 294 */ ModelRender mUnk_294; - /* 2f0 */ void *mUnk_2f0; - /* 2f4 */ unk8 mUnk_2f4[0x40]; - /* 334 */ unk32 mUnk_334; - /* 338 */ unk32 mUnk_338; - /* 33c */ unk32 mUnk_33c; - /* 340 */ unk16 mUnk_340; - /* 342 */ unk8 mUnk_342[0x2]; - /* 344 */ unk32 mUnk_344; - /* 348 */ unk32 mUnk_348; - /* 34c */ unk8 mUnk_34c[0x68]; - /* 3b4 */ EquipHammer *mHammer; - /* 3b8 */ unk32 mUnk_3b8; - /* 3bc */ unk32 mUnk_3bc; - /* 3c0 */ unk8 mUnk_3c0[0x8]; - /* 3c8 */ + /* 294 */ /* 00 */ virtual ~ActorNaviBase() override; /* 08 */ virtual bool vfunc_08() override; @@ -65,9 +60,7 @@ class ActorNaviBase : public Actor { /* 84 */ virtual void vfunc_84() override; /* 90 */ virtual bool vfunc_90() override; /* 94 */ virtual void vfunc_94() override; - /* a0 */ virtual bool TrySetTransform(Transform *transform) override; - /* b0 */ virtual void SetTransform(Transform *transform) override; - /* b4 */ virtual void vfunc_b4() = 0; + /* b4 */ virtual FairyId GetFairyId() = 0; /* b8 */ virtual s32 vfunc_b8(); /* bc */ virtual bool vfunc_bc(unk32 param1, unk8 param2, s32 param3); /* c0 */ virtual bool vfunc_c0(Vec3p *param1); diff --git a/include/Actor/Navi/ActorWisdomNavi.hpp b/include/Actor/Navi/ActorWisdomNavi.hpp new file mode 100644 index 00000000..fb6d2641 --- /dev/null +++ b/include/Actor/Navi/ActorWisdomNavi.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include "Actor/Navi/ActorNaviBase.hpp" + +class ActorWisdomNavi : public ActorNaviBase { +public: + static ActorType gType; + + /* 000 (base) */ + /* 294 */ + + /* b4 */ virtual FairyId GetFairyId() override; + + static ActorWisdomNavi *Create(); +}; diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp index c0a84aa7..9e473fc2 100644 --- a/include/Item/ItemManager.hpp +++ b/include/Item/ItemManager.hpp @@ -8,7 +8,7 @@ extern "C" { #include "nds/math.h" #include "types.h" -#include "Actor/Navi/ActorNavi.hpp" +#include "Actor/Navi/ActorNaviBase.hpp" #include "Item/Item.hpp" #include "Player/EquipItem.hpp" #include "Render/ModelRender.hpp" @@ -20,15 +20,6 @@ extern "C" { #define MAX_AMMO_UPGRADE 2 #define MAX_UNK_0BA 9 -typedef s32 FairyId; -enum FairyId_ { - FairyId_None = -1, - FairyId_Courage = 0, - FairyId_Power = 1, - FairyId_Wisdom = 2, - FairyId_COUNT = 3, -}; - typedef u32 ItemModelId; enum ItemModelId_ { ItemModelId_OshusSword, // swA @@ -66,7 +57,7 @@ private: /* 008 */ ItemFlag mForcedItem; // game crashes when any item besides this one is equipped /* 00c */ u32 mHourglassSandFrames; /* 010 */ FairyId mEquippedFairy; - /* 014 */ ActorNavi *mFairies[FairyId_COUNT]; + /* 014 */ ActorNaviBase *mFairies[FairyId_COUNT]; /* 020 */ u16 mEquipLoadTimer; /* 022 */ u16 mNumRupees; /* 024 */ u8 mNumGems[Gem_COUNT]; @@ -114,7 +105,7 @@ public: // Fairy FairyId GetEquippedFairy() const; - ActorNavi *GetFairy(FairyId id) const; + ActorNaviBase *GetFairy(FairyId id) const; u32 GetActiveFairyLevel(FairyId id) const; u32 GetFairyLevel(FairyId id) const; void SpawnFairies(); diff --git a/include/Player/PlayerBase.hpp b/include/Player/PlayerBase.hpp index 354e1078..ba4b3deb 100644 --- a/include/Player/PlayerBase.hpp +++ b/include/Player/PlayerBase.hpp @@ -29,7 +29,7 @@ public: /* 0c */ virtual bool CanMove(); /* 10 */ virtual void vfunc_10(Cylinder *param1) = 0; /* 14 */ virtual void vfunc_14(Cylinder *param1) = 0; - /* 18 */ virtual void vfunc_18() = 0; + /* 18 */ virtual bool vfunc_18(s32 param1) = 0; /* 1c */ virtual void Init() = 0; /* 20 */ virtual void vfunc_20() = 0; /* 24 */ virtual void UpdatePos() = 0; diff --git a/include/Player/PlayerLinkBase.hpp b/include/Player/PlayerLinkBase.hpp index 2a208365..b5bf77ed 100644 --- a/include/Player/PlayerLinkBase.hpp +++ b/include/Player/PlayerLinkBase.hpp @@ -50,7 +50,7 @@ public: /* 0c */ virtual bool CanMove() override; /* 10 */ virtual void vfunc_10(Cylinder *param1) override; /* 14 */ virtual void vfunc_14(Cylinder *param1) override; - /* 18 */ virtual void vfunc_18(s32 param1) override; + /* 18 */ virtual bool vfunc_18(s32 param1) override; /* 1c */ virtual void Init() override; /* 20 */ virtual void vfunc_20() override; /* 24 */ virtual void UpdatePos() override; diff --git a/libs/c/include/stddef.h b/libs/c/include/stddef.h index 4986043a..4858fe46 100644 --- a/libs/c/include/stddef.h +++ b/libs/c/include/stddef.h @@ -5,4 +5,6 @@ typedef unsigned int size_t; +#define offsetof(type, member) ((size_t) &((type *) NULL)->member) + #endif diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index f008064d..74f0da25 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -318,8 +318,8 @@ ARM void Actor::SetTransform(Transform *transform) { ARM void Actor::vfunc_a8() {} -ARM void Actor::func_Ov00_020c1bfc(s32 param1) { - gMapManager->func_ov00_02084be0(mUnk_020.mUnk_0a[param1], mUnk_020.mUnk_08[param1]); +ARM bool Actor::func_ov00_020c1bfc(s32 param1) { + return gMapManager->func_ov00_02084be0(mUnk_020.mUnk_0a[param1], mUnk_020.mUnk_08[param1]); } ARM void Actor::func_ov00_020c1c20(s32 param1, unk32 param2) { diff --git a/src/00_Core/Actor/Dungeon/ActorActionObject.cpp b/src/00_Core/Actor/Dungeon/ActorActionObject.cpp new file mode 100644 index 00000000..0a2c3970 --- /dev/null +++ b/src/00_Core/Actor/Dungeon/ActorActionObject.cpp @@ -0,0 +1,85 @@ +#include "Actor/Dungeon/ActorActionObject.hpp" +#include "Map/MapManager.hpp" +#include "Player/LinkStateBase.hpp" +#include "Player/PlayerLinkBase.hpp" +#include "Save/AdventureFlags.hpp" + +#pragma section sbss begin +ActorType ActorActionObject::gType = ActorType(ActorTypeId_ActionObject, (ActorCreateFunc) ActorActionObject::Create, NULL); +#pragma section sbss end + +extern u32 **data_027e0fe0[]; +ARM ActorActionObject *ActorActionObject::Create() { + return new(*data_027e0fe0[0], 4) ActorActionObject(); +} + +ARM ActorActionObject::ActorActionObject() {} + +ARM ActorActionObject::~ActorActionObject() {} + +// non-matching +ARM bool ActorActionObject::vfunc_08() { + mGravity = 0; + mHitbox.pos = gVec3p_ZERO; + mHitbox.size = -1; + mUnk_08c.pos = mHitbox.pos; + mUnk_08c.size = mHitbox.size; + mUnk_0a4.mUnk_04 = gVec3p_ZERO; + mUnk_0a4.mUnk_10 = -1; + mVisible = false; + mUnk_130 = 0; + return true; +} + +ARM void ActorActionObject::vfunc_14(u32 param1) { + if (!this->func_ov00_020c313c(param1)) { + return; + } + + u32 flag = mUnk_020.mUnk_00[2]; + bool bVar3; + switch (mUnk_020.mUnk_00[0]) { + case 0: bVar3 = true; break; + case 1: + if (gPlayerLink->mGrabActor.id != -1 && gPlayerLink->GetStateId() == LinkStateId_Move) { + bVar3 = true; + } else { + bVar3 = false; + } + break; + case 2: + if (gPlayerLink->mGrabActor.id == -1 && gPlayerLink->GetStateId() == LinkStateId_Move) { + bVar3 = true; + } else { + bVar3 = false; + } + break; + default: bVar3 = false; break; + } + + if (!bVar3) { + return; + } + if (!gMapManager->func_ov00_020836dc((u32) mUnk_020.mUnk_00[1], 0)) { + return; + } + if (mUnk_020.mUnk_0a[0] != 0 && !this->func_ov00_020c1bfc(0)) { + return; + } + if (flag != 0 && !gAdventureFlags->Get(flag)) { + return; + } + + PlayerLinkBase *link = gPlayerLink; + if (link != NULL && link->vfunc_18(7)) { + if (mUnk_020.mUnk_00[3] == 1) { + link->func_ov000_020bcf50(&mPos, 0x800); + } + this->func_ov00_020c1c20(1, 1); + this->Kill(); + } +} + +ARM void ActorActionObject::vfunc_18(u32 param1) { + this->func_ov00_020c313c(param1); +} diff --git a/src/00_Core/Actor/Navi/ActorForceNavi.cpp b/src/00_Core/Actor/Navi/ActorForceNavi.cpp new file mode 100644 index 00000000..04b83c13 --- /dev/null +++ b/src/00_Core/Actor/Navi/ActorForceNavi.cpp @@ -0,0 +1,14 @@ +#include "Actor/Navi/ActorForceNavi.hpp" + +#pragma section sbss begin +ActorType ActorForceNavi::gType = ActorType(ActorTypeId_ForceNavi, (ActorCreateFunc) ActorForceNavi::Create, NULL); +#pragma section sbss end + +extern u32 **data_027e0fe0[]; +ActorForceNavi *ActorForceNavi::Create() { + return new(*data_027e0fe0[0], 4) ActorForceNavi(); +} + +ARM FairyId ActorForceNavi::GetFairyId() { + return FairyId_Power; +} diff --git a/src/00_Core/Actor/Navi/ActorNavi.cpp b/src/00_Core/Actor/Navi/ActorNavi.cpp new file mode 100644 index 00000000..7c195178 --- /dev/null +++ b/src/00_Core/Actor/Navi/ActorNavi.cpp @@ -0,0 +1,32 @@ +#include "Actor/Navi/ActorNavi.hpp" +#include "Player/EquipHammer.hpp" + +ActorType ActorNavi::gType = ActorType(ActorTypeId_Navi, (ActorCreateFunc) ActorNavi::Create, NULL); +UnkStruct_ov000_020b8110 data_ov000_020ee1cc; + +ActorNavi *ActorNavi::Create() {} +UnkStruct_ov000_020b8110::UnkStruct_ov000_020b8110() : + UnkStruct_ov000_020beba8(7) {} +UnkStruct_ov000_020b8110::~UnkStruct_ov000_020b8110() {} +void UnkStruct_ov000_020b8110::vfunc_08(unk16 *param1) {} +void UnkStruct_ov000_020b8110::vfunc_18(s32 *param1) {} +void UnkStruct_ov000_020b8110::vfunc_14(u16 *param1) {} +void ActorNavi::func_ov000_020b8200() {} +void ActorNavi::vfunc_c4() {} +void ActorNavi::vfunc_c8() {} +FairyId ActorNavi::GetFairyId() {} +s32 ActorNavi::vfunc_b8() {} +void ActorNavi::vfunc_d4() {} +void ActorNavi::vfunc_d0() {} +void ActorNavi::SetActive(bool active) {} +void ActorNavi::vfunc_e0() {} +void ActorNavi::vfunc_d8() {} +void ActorNavi::vfunc_20(bool param1) {} +bool ActorNavi::vfunc_cc(unk32 *param1) {} +bool ActorNavi::vfunc_c0(Vec3p *param1) {} +void ActorNavi::vfunc_e8() {} +bool ActorNavi::vfunc_8c() {} +void ActorNavi::vfunc_ec() {} +EquipHammer *GetEquipHammer() {} +void ActorNavi::func_ov000_020b853c() {} +ActorNavi::~ActorNavi() {} diff --git a/src/00_Core/Actor/Navi/ActorWisdomNavi.cpp b/src/00_Core/Actor/Navi/ActorWisdomNavi.cpp new file mode 100644 index 00000000..84c02e33 --- /dev/null +++ b/src/00_Core/Actor/Navi/ActorWisdomNavi.cpp @@ -0,0 +1,14 @@ +#include "Actor/Navi/ActorWisdomNavi.hpp" + +#pragma section sbss begin +ActorType ActorWisdomNavi::gType = ActorType(ActorTypeId_WisdomNavi, (ActorCreateFunc) ActorWisdomNavi::Create, NULL); +#pragma section sbss end + +extern u32 **data_027e0fe0[]; +ARM ActorWisdomNavi *ActorWisdomNavi::Create() { + return new(*data_027e0fe0[0], 4) ActorWisdomNavi(); +} + +ARM FairyId ActorWisdomNavi::GetFairyId() { + return FairyId_Wisdom; +} diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index 96fbad4c..3344c74e 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -126,7 +126,7 @@ ARM FairyId ItemManager::GetEquippedFairy() const { return fairy; } -ARM ActorNavi *ItemManager::GetFairy(FairyId id) const { +ARM ActorNaviBase *ItemManager::GetFairy(FairyId id) const { return mFairies[id]; } diff --git a/src/00_Core/Player/PlayerLinkBase.cpp b/src/00_Core/Player/PlayerLinkBase.cpp index 897932c8..bc248044 100644 --- a/src/00_Core/Player/PlayerLinkBase.cpp +++ b/src/00_Core/Player/PlayerLinkBase.cpp @@ -20,7 +20,7 @@ bool PlayerLinkBase::func_ov000_020bba00() {} bool PlayerLinkBase::func_ov000_020bba14() {} bool PlayerLinkBase::func_ov000_020bba28() {} void PlayerLinkBase::func_ov000_020bba48() {} -void PlayerLinkBase::vfunc_18(s32 param1) {} +bool PlayerLinkBase::vfunc_18(s32 param1) {} bool PlayerLinkBase::CanMove() {} bool PlayerLinkBase::vfunc_58() {} bool PlayerLinkBase::vfunc_5c() {} diff --git a/src/04_Load/Actor/Navi/ActorNavi.cpp b/src/04_Load/Actor/Navi/ActorNavi.cpp new file mode 100644 index 00000000..12939c04 --- /dev/null +++ b/src/04_Load/Actor/Navi/ActorNavi.cpp @@ -0,0 +1,3 @@ +#include "Actor/Navi/ActorNavi.hpp" + +ActorNavi::ActorNavi() {}