From 47a12b876ac8d421f99400972104edf153ef468d Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Sun, 23 Oct 2022 11:35:55 -0700 Subject: [PATCH] Match and link PatternedCastTo Former-commit-id: dd62a7eaa0eac1cdd9264c7cd815f86e4a81d9ef --- asm/MetroidPrime/CGameProjectile.s | 8 +- asm/MetroidPrime/Enemies/CFlickerBat.s | 4 +- asm/MetroidPrime/Enemies/CFlyingPirate.s | 8 +- asm/MetroidPrime/Enemies/CIceSheegoth.s | 8 +- asm/MetroidPrime/Enemies/CJellyZap.s | 4 +- asm/MetroidPrime/Enemies/CMetroid.s | 60 +++++----- asm/MetroidPrime/Enemies/CMetroidPrimeExo.s | 16 +-- asm/MetroidPrime/Enemies/CMetroidPrimeRelay.s | 8 +- asm/MetroidPrime/Enemies/CParasite.s | 8 +- asm/MetroidPrime/Enemies/CPatterned.s | 4 +- asm/MetroidPrime/Enemies/CSpacePirate.s | 28 ++--- asm/MetroidPrime/Enemies/CThardus.s | 16 +-- asm/MetroidPrime/Enemies/CWarWasp.s | 40 +++---- asm/MetroidPrime/Enemies/PatternedCastTo.s | 96 +++++++-------- asm/MetroidPrime/Player/CMorphBall.s | 4 +- asm/MetroidPrime/Player/CPlayer.s | 4 +- asm/MetroidPrime/Player/CPlayerGun.s | 8 +- asm/MetroidPrime/Player/CPlayerOrbit.s | 4 +- asm/MetroidPrime/Weapons/CNewFlameThrower.s | 4 +- configure.py | 2 +- include/MetroidPrime/Enemies/CEnergyBall.hpp | 10 ++ include/MetroidPrime/Enemies/CFlickerBat.hpp | 8 ++ include/MetroidPrime/Enemies/CIceSheegoth.hpp | 8 ++ include/MetroidPrime/Enemies/CJellyZap.hpp | 10 ++ include/MetroidPrime/Enemies/CMetroid.hpp | 10 ++ include/MetroidPrime/Enemies/CMetroidBeta.hpp | 10 ++ .../MetroidPrime/Enemies/CMetroidPrimeExo.hpp | 10 ++ include/MetroidPrime/Enemies/CParasite.hpp | 10 ++ include/MetroidPrime/Enemies/CPatterned.hpp | 59 +++++++++- include/MetroidPrime/Enemies/CPuddleToad.hpp | 11 ++ include/MetroidPrime/Enemies/CSpacePirate.hpp | 11 ++ .../MetroidPrime/Enemies/CStateMachine.hpp | 4 +- .../Enemies/CThardusRockProjectile.hpp | 11 ++ include/MetroidPrime/Enemies/CWarWasp.hpp | 10 ++ obj_files.mk | 4 +- src/MetroidPrime/Enemies/PatternedCastTo.cpp | 111 ++++++++++++++++++ 36 files changed, 459 insertions(+), 172 deletions(-) create mode 100644 include/MetroidPrime/Enemies/CEnergyBall.hpp create mode 100644 include/MetroidPrime/Enemies/CFlickerBat.hpp create mode 100644 include/MetroidPrime/Enemies/CIceSheegoth.hpp create mode 100644 include/MetroidPrime/Enemies/CJellyZap.hpp create mode 100644 include/MetroidPrime/Enemies/CMetroid.hpp create mode 100644 include/MetroidPrime/Enemies/CMetroidBeta.hpp create mode 100644 include/MetroidPrime/Enemies/CMetroidPrimeExo.hpp create mode 100644 include/MetroidPrime/Enemies/CParasite.hpp create mode 100644 include/MetroidPrime/Enemies/CPuddleToad.hpp create mode 100644 include/MetroidPrime/Enemies/CSpacePirate.hpp create mode 100644 include/MetroidPrime/Enemies/CThardusRockProjectile.hpp create mode 100644 include/MetroidPrime/Enemies/CWarWasp.hpp create mode 100644 src/MetroidPrime/Enemies/PatternedCastTo.cpp diff --git a/asm/MetroidPrime/CGameProjectile.s b/asm/MetroidPrime/CGameProjectile.s index f056af28..a0fdb8a5 100644 --- a/asm/MetroidPrime/CGameProjectile.s +++ b/asm/MetroidPrime/CGameProjectile.s @@ -2221,8 +2221,8 @@ lbl_80039178: /* 800391A4 00036104 40 82 00 1C */ bne lbl_800391C0 /* 800391A8 00036108 7F C4 F3 78 */ mr r4, r30 /* 800391AC 0003610C 38 61 00 08 */ addi r3, r1, 8 -/* 800391B0 00036110 48 06 C2 55 */ bl sub_800a5404 -/* 800391B4 00036114 48 06 C2 25 */ bl "CastTo<11CPuddleToad>__10CPatternedFP7CEntity" +/* 800391B0 00036110 48 06 C2 55 */ bl "__ct__29TPatternedCast<11CPuddleToad>FP7CEntity" +/* 800391B4 00036114 48 06 C2 25 */ bl "CastTo<11CPuddleToad>__10CPatternedFRC29TPatternedCast<11CPuddleToad>" /* 800391B8 00036118 28 03 00 00 */ cmplwi r3, 0 /* 800391BC 0003611C 41 82 00 1C */ beq lbl_800391D8 lbl_800391C0: @@ -2278,8 +2278,8 @@ CanCollideWithComplexCollision__15CGameProjectileFR6CActorR13CStateManager: lbl_80039270: /* 80039270 000361D0 7F C4 F3 78 */ mr r4, r30 /* 80039274 000361D4 38 61 00 08 */ addi r3, r1, 8 -/* 80039278 000361D8 48 06 C1 8D */ bl sub_800a5404 -/* 8003927C 000361DC 48 06 C1 5D */ bl "CastTo<11CPuddleToad>__10CPatternedFP7CEntity" +/* 80039278 000361D8 48 06 C1 8D */ bl "__ct__29TPatternedCast<11CPuddleToad>FP7CEntity" +/* 8003927C 000361DC 48 06 C1 5D */ bl "CastTo<11CPuddleToad>__10CPatternedFRC29TPatternedCast<11CPuddleToad>" /* 80039280 000361E0 28 03 00 00 */ cmplwi r3, 0 /* 80039284 000361E4 41 82 00 0C */ beq lbl_80039290 /* 80039288 000361E8 7F DA F3 78 */ mr r26, r30 diff --git a/asm/MetroidPrime/Enemies/CFlickerBat.s b/asm/MetroidPrime/Enemies/CFlickerBat.s index 65f57d66..b943cb2f 100644 --- a/asm/MetroidPrime/Enemies/CFlickerBat.s +++ b/asm/MetroidPrime/Enemies/CFlickerBat.s @@ -571,8 +571,8 @@ lbl_801307F4: /* 80130804 0012D764 4B F1 BD 71 */ bl ObjectById__13CStateManagerF9TUniqueId /* 80130808 0012D768 7C 64 1B 78 */ mr r4, r3 /* 8013080C 0012D76C 38 61 00 0C */ addi r3, r1, 0xc -/* 80130810 0012D770 4B F7 4D 61 */ bl sub_800a5570 -/* 80130814 0012D774 4B F7 4D 31 */ bl "CastTo<11CFlickerBat>__10CPatternedFP7CEntity" +/* 80130810 0012D770 4B F7 4D 61 */ bl "__ct__29TPatternedCast<11CFlickerBat>FP7CEntity" +/* 80130814 0012D774 4B F7 4D 31 */ bl "CastTo<11CFlickerBat>__10CPatternedFRC29TPatternedCast<11CFlickerBat>" /* 80130818 0012D778 28 03 00 00 */ cmplwi r3, 0 /* 8013081C 0012D77C 40 82 00 18 */ bne lbl_80130834 /* 80130820 0012D780 7F E3 FB 78 */ mr r3, r31 diff --git a/asm/MetroidPrime/Enemies/CFlyingPirate.s b/asm/MetroidPrime/Enemies/CFlyingPirate.s index 3002f130..584753c8 100644 --- a/asm/MetroidPrime/Enemies/CFlyingPirate.s +++ b/asm/MetroidPrime/Enemies/CFlyingPirate.s @@ -4563,8 +4563,8 @@ lbl_801F7ADC: /* 801F7AE4 001F4A44 4B E1 81 F9 */ bl __vc__11CObjectListCFi /* 801F7AE8 001F4A48 7C 64 1B 78 */ mr r4, r3 /* 801F7AEC 001F4A4C 38 61 00 1C */ addi r3, r1, 0x1c -/* 801F7AF0 001F4A50 4B EA D8 E1 */ bl sub_800a53d0 -/* 801F7AF4 001F4A54 4B EA D8 B1 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 801F7AF0 001F4A50 4B EA D8 E1 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 801F7AF4 001F4A54 4B EA D8 B1 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 801F7AF8 001F4A58 28 03 00 00 */ cmplwi r3, 0 /* 801F7AFC 001F4A5C 41 82 00 30 */ beq lbl_801F7B2C /* 801F7B00 001F4A60 88 03 06 37 */ lbz r0, 0x637(r3) @@ -8831,8 +8831,8 @@ lbl_801FB8C0: /* 801FB8C8 001F8828 4B E1 44 15 */ bl __vc__11CObjectListCFi /* 801FB8CC 001F882C 7C 64 1B 78 */ mr r4, r3 /* 801FB8D0 001F8830 38 61 00 10 */ addi r3, r1, 0x10 -/* 801FB8D4 001F8834 4B EA 9A FD */ bl sub_800a53d0 -/* 801FB8D8 001F8838 4B EA 9A CD */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 801FB8D4 001F8834 4B EA 9A FD */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 801FB8D8 001F8838 4B EA 9A CD */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 801FB8DC 001F883C 28 03 00 00 */ cmplwi r3, 0 /* 801FB8E0 001F8840 41 82 00 90 */ beq lbl_801FB970 /* 801FB8E4 001F8844 88 03 06 37 */ lbz r0, 0x637(r3) diff --git a/asm/MetroidPrime/Enemies/CIceSheegoth.s b/asm/MetroidPrime/Enemies/CIceSheegoth.s index 85330d57..08731452 100644 --- a/asm/MetroidPrime/Enemies/CIceSheegoth.s +++ b/asm/MetroidPrime/Enemies/CIceSheegoth.s @@ -3387,8 +3387,8 @@ lbl_801A0E04: /* 801A0E2C 0019DD8C 41 82 01 50 */ beq lbl_801A0F7C /* 801A0E30 0019DD90 7F E4 FB 78 */ mr r4, r31 /* 801A0E34 0019DD94 38 61 00 10 */ addi r3, r1, 0x10 -/* 801A0E38 0019DD98 4B F0 47 05 */ bl sub_800a553c -/* 801A0E3C 0019DD9C 4B F0 46 D5 */ bl "CastTo<12CIceSheegoth>__10CPatternedFP7CEntity" +/* 801A0E38 0019DD98 4B F0 47 05 */ bl "__ct__30TPatternedCast<12CIceSheegoth>FP7CEntity" +/* 801A0E3C 0019DD9C 4B F0 46 D5 */ bl "CastTo<12CIceSheegoth>__10CPatternedFRC30TPatternedCast<12CIceSheegoth>" /* 801A0E40 0019DDA0 28 03 00 00 */ cmplwi r3, 0 /* 801A0E44 0019DDA4 40 82 01 38 */ bne lbl_801A0F7C /* 801A0E48 0019DDA8 80 7D 00 04 */ lwz r3, 4(r29) @@ -3518,8 +3518,8 @@ lbl_801A1008: /* 801A1018 0019DF78 4B EA B5 8D */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 801A101C 0019DF7C 7C 64 1B 78 */ mr r4, r3 /* 801A1020 0019DF80 38 61 00 0C */ addi r3, r1, 0xc -/* 801A1024 0019DF84 4B F0 45 19 */ bl sub_800a553c -/* 801A1028 0019DF88 4B F0 44 E9 */ bl "CastTo<12CIceSheegoth>__10CPatternedFP7CEntity" +/* 801A1024 0019DF84 4B F0 45 19 */ bl "__ct__30TPatternedCast<12CIceSheegoth>FP7CEntity" +/* 801A1028 0019DF88 4B F0 44 E9 */ bl "CastTo<12CIceSheegoth>__10CPatternedFRC30TPatternedCast<12CIceSheegoth>" /* 801A102C 0019DF8C 28 03 00 00 */ cmplwi r3, 0 /* 801A1030 0019DF90 41 82 00 54 */ beq lbl_801A1084 /* 801A1034 0019DF94 A0 83 00 08 */ lhz r4, 8(r3) diff --git a/asm/MetroidPrime/Enemies/CJellyZap.s b/asm/MetroidPrime/Enemies/CJellyZap.s index fc3d66fd..47d35525 100644 --- a/asm/MetroidPrime/Enemies/CJellyZap.s +++ b/asm/MetroidPrime/Enemies/CJellyZap.s @@ -362,8 +362,8 @@ lbl_801D7AC0: /* 801D7ACC 001D4A2C 7C 60 1B 78 */ mr r0, r3 /* 801D7AD0 001D4A30 38 61 00 08 */ addi r3, r1, 8 /* 801D7AD4 001D4A34 7C 04 03 78 */ mr r4, r0 -/* 801D7AD8 001D4A38 4B EC DA 31 */ bl sub_800a5508 -/* 801D7ADC 001D4A3C 4B EC DA 01 */ bl "CastTo<9CJellyZap>__10CPatternedFP7CEntity" +/* 801D7AD8 001D4A38 4B EC DA 31 */ bl "__ct__26TPatternedCast<9CJellyZap>FP7CEntity" +/* 801D7ADC 001D4A3C 4B EC DA 01 */ bl "CastTo<9CJellyZap>__10CPatternedFRC26TPatternedCast<9CJellyZap>" /* 801D7AE0 001D4A40 28 03 00 00 */ cmplwi r3, 0 /* 801D7AE4 001D4A44 41 82 00 74 */ beq lbl_801D7B58 /* 801D7AE8 001D4A48 80 83 00 04 */ lwz r4, 4(r3) diff --git a/asm/MetroidPrime/Enemies/CMetroid.s b/asm/MetroidPrime/Enemies/CMetroid.s index 0a0484d4..17fae3bf 100644 --- a/asm/MetroidPrime/Enemies/CMetroid.s +++ b/asm/MetroidPrime/Enemies/CMetroid.s @@ -818,8 +818,8 @@ lbl_8016A578: /* 8016A588 001674E8 4B EE 20 1D */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8016A58C 001674EC 7C 64 1B 78 */ mr r4, r3 /* 8016A590 001674F0 38 61 00 10 */ addi r3, r1, 0x10 -/* 8016A594 001674F4 4B F3 AF 0D */ bl sub_800a54a0 -/* 8016A598 001674F8 4B F3 AE DD */ bl "CastTo<12CMetroidBeta>__10CPatternedFP7CEntity" +/* 8016A594 001674F4 4B F3 AF 0D */ bl "__ct__30TPatternedCast<12CMetroidBeta>FP7CEntity" +/* 8016A598 001674F8 4B F3 AE DD */ bl "CastTo<12CMetroidBeta>__10CPatternedFRC30TPatternedCast<12CMetroidBeta>" /* 8016A59C 001674FC 28 03 00 00 */ cmplwi r3, 0 /* 8016A5A0 00167500 41 82 00 0C */ beq lbl_8016A5AC /* 8016A5A4 00167504 38 60 00 01 */ li r3, 1 @@ -881,8 +881,8 @@ sub_8016a5e8: /* 8016A668 001675C8 48 00 00 40 */ b lbl_8016A6A8 lbl_8016A66C: /* 8016A66C 001675CC 38 61 00 10 */ addi r3, r1, 0x10 -/* 8016A670 001675D0 4B F3 AD 61 */ bl sub_800a53d0 -/* 8016A674 001675D4 4B F3 AD 31 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 8016A670 001675D0 4B F3 AD 61 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8016A674 001675D4 4B F3 AD 31 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 8016A678 001675D8 28 03 00 00 */ cmplwi r3, 0 /* 8016A67C 001675DC 41 82 00 28 */ beq lbl_8016A6A4 /* 8016A680 001675E0 A0 63 07 B4 */ lhz r3, 0x7b4(r3) @@ -2813,8 +2813,8 @@ lbl_8016C300: /* 8016C31C 0016927C 4B EE 02 89 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8016C320 00169280 7C 64 1B 78 */ mr r4, r3 /* 8016C324 00169284 38 61 00 0C */ addi r3, r1, 0xc -/* 8016C328 00169288 4B F3 90 A9 */ bl sub_800a53d0 -/* 8016C32C 0016928C 4B F3 90 79 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 8016C328 00169288 4B F3 90 A9 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8016C32C 0016928C 4B F3 90 79 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 8016C330 00169290 28 03 00 00 */ cmplwi r3, 0 /* 8016C334 00169294 41 82 00 44 */ beq lbl_8016C378 /* 8016C338 00169298 88 03 06 38 */ lbz r0, 0x638(r3) @@ -3739,8 +3739,8 @@ lbl_8016D0A4: /* 8016D0C0 0016A020 4B ED F4 B5 */ bl ObjectById__13CStateManagerF9TUniqueId /* 8016D0C4 0016A024 7C 64 1B 78 */ mr r4, r3 /* 8016D0C8 0016A028 38 61 00 14 */ addi r3, r1, 0x14 -/* 8016D0CC 0016A02C 4B F3 83 05 */ bl sub_800a53d0 -/* 8016D0D0 0016A030 4B F3 82 D5 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 8016D0CC 0016A02C 4B F3 83 05 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8016D0D0 0016A030 4B F3 82 D5 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 8016D0D4 0016A034 7C 7C 1B 79 */ or. r28, r3, r3 /* 8016D0D8 0016A038 41 82 00 58 */ beq lbl_8016D130 /* 8016D0DC 0016A03C A0 9C 07 B4 */ lhz r4, 0x7b4(r28) @@ -3950,8 +3950,8 @@ sub_8016d370: /* 8016D3C4 0016A324 4B ED F1 B1 */ bl ObjectById__13CStateManagerF9TUniqueId /* 8016D3C8 0016A328 7C 64 1B 78 */ mr r4, r3 /* 8016D3CC 0016A32C 38 61 00 0C */ addi r3, r1, 0xc -/* 8016D3D0 0016A330 4B F3 81 05 */ bl sub_800a54d4 -/* 8016D3D4 0016A334 4B F3 80 D5 */ bl "CastTo<8CMetroid>__10CPatternedFP7CEntity" +/* 8016D3D0 0016A330 4B F3 81 05 */ bl "__ct__25TPatternedCast<8CMetroid>FP7CEntity" +/* 8016D3D4 0016A334 4B F3 80 D5 */ bl "CastTo<8CMetroid>__10CPatternedFRC25TPatternedCast<8CMetroid>" /* 8016D3D8 0016A338 7C 7F 1B 79 */ or. r31, r3, r3 /* 8016D3DC 0016A33C 41 82 01 60 */ beq lbl_8016D53C /* 8016D3E0 0016A340 C0 3E 00 50 */ lfs f1, 0x50(r30) @@ -4634,8 +4634,8 @@ sub_8016ddb0: /* 8016DDF0 0016AD50 4B ED E7 85 */ bl ObjectById__13CStateManagerF9TUniqueId /* 8016DDF4 0016AD54 7C 64 1B 78 */ mr r4, r3 /* 8016DDF8 0016AD58 38 61 00 28 */ addi r3, r1, 0x28 -/* 8016DDFC 0016AD5C 4B F3 75 D5 */ bl sub_800a53d0 -/* 8016DE00 0016AD60 4B F3 75 A5 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 8016DDFC 0016AD5C 4B F3 75 D5 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8016DE00 0016AD60 4B F3 75 A5 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 8016DE04 0016AD64 7C 7D 1B 79 */ or. r29, r3, r3 /* 8016DE08 0016AD68 41 82 01 18 */ beq lbl_8016DF20 /* 8016DE0C 0016AD6C 7F C3 F3 78 */ mr r3, r30 @@ -6025,8 +6025,8 @@ lbl_8016F1F8: /* 8016F208 0016C168 4B ED D3 6D */ bl ObjectById__13CStateManagerF9TUniqueId /* 8016F20C 0016C16C 7C 64 1B 78 */ mr r4, r3 /* 8016F210 0016C170 38 61 00 28 */ addi r3, r1, 0x28 -/* 8016F214 0016C174 4B F3 61 BD */ bl sub_800a53d0 -/* 8016F218 0016C178 4B F3 61 8D */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 8016F214 0016C174 4B F3 61 BD */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8016F218 0016C178 4B F3 61 8D */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 8016F21C 0016C17C 7C 7A 1B 79 */ or. r26, r3, r3 /* 8016F220 0016C180 41 82 00 5C */ beq lbl_8016F27C /* 8016F224 0016C184 7F C3 F3 78 */ mr r3, r30 @@ -6103,8 +6103,8 @@ lbl_8016F310: /* 8016F320 0016C280 4B ED D2 55 */ bl ObjectById__13CStateManagerF9TUniqueId /* 8016F324 0016C284 7C 64 1B 78 */ mr r4, r3 /* 8016F328 0016C288 38 61 00 24 */ addi r3, r1, 0x24 -/* 8016F32C 0016C28C 4B F3 60 A5 */ bl sub_800a53d0 -/* 8016F330 0016C290 4B F3 60 75 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 8016F32C 0016C28C 4B F3 60 A5 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8016F330 0016C290 4B F3 60 75 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 8016F334 0016C294 7C 64 1B 79 */ or. r4, r3, r3 /* 8016F338 0016C298 41 82 01 B8 */ beq lbl_8016F4F0 /* 8016F33C 0016C29C A0 1E 00 08 */ lhz r0, 8(r30) @@ -6973,8 +6973,8 @@ Inside__8CMetroidFR13CStateManagerf: /* 8016FFB4 0016CF14 4B ED C5 F1 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8016FFB8 0016CF18 7C 64 1B 78 */ mr r4, r3 /* 8016FFBC 0016CF1C 38 61 00 0C */ addi r3, r1, 0xc -/* 8016FFC0 0016CF20 4B F3 55 15 */ bl sub_800a54d4 -/* 8016FFC4 0016CF24 4B F3 54 E5 */ bl "CastTo<8CMetroid>__10CPatternedFP7CEntity" +/* 8016FFC0 0016CF20 4B F3 55 15 */ bl "__ct__25TPatternedCast<8CMetroid>FP7CEntity" +/* 8016FFC4 0016CF24 4B F3 54 E5 */ bl "CastTo<8CMetroid>__10CPatternedFRC25TPatternedCast<8CMetroid>" /* 8016FFC8 0016CF28 28 03 00 00 */ cmplwi r3, 0 /* 8016FFCC 0016CF2C 41 82 00 64 */ beq lbl_80170030 /* 8016FFD0 0016CF30 C0 02 A0 80 */ lfs f0, lbl_805ABDA0@sda21(r2) @@ -7207,8 +7207,8 @@ AggressionCheck__8CMetroidFR13CStateManagerf: /* 801702F8 0016D258 83 E3 00 04 */ lwz r31, 4(r3) /* 801702FC 0016D25C 38 61 00 0C */ addi r3, r1, 0xc /* 80170300 0016D260 7F E4 FB 78 */ mr r4, r31 -/* 80170304 0016D264 4B F3 50 CD */ bl sub_800a53d0 -/* 80170308 0016D268 4B F3 50 9D */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 80170304 0016D264 4B F3 50 CD */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 80170308 0016D268 4B F3 50 9D */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 8017030C 0016D26C 7C 64 1B 79 */ or. r4, r3, r3 /* 80170310 0016D270 41 82 00 28 */ beq lbl_80170338 /* 80170314 0016D274 7F A3 EB 78 */ mr r3, r29 @@ -7316,8 +7316,8 @@ lbl_80170468: /* 80170488 0016D3E8 4B ED C1 1D */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8017048C 0016D3EC 7C 64 1B 78 */ mr r4, r3 /* 80170490 0016D3F0 38 61 00 14 */ addi r3, r1, 0x14 -/* 80170494 0016D3F4 4B F3 50 41 */ bl sub_800a54d4 -/* 80170498 0016D3F8 4B F3 50 11 */ bl "CastTo<8CMetroid>__10CPatternedFP7CEntity" +/* 80170494 0016D3F4 4B F3 50 41 */ bl "__ct__25TPatternedCast<8CMetroid>FP7CEntity" +/* 80170498 0016D3F8 4B F3 50 11 */ bl "CastTo<8CMetroid>__10CPatternedFRC25TPatternedCast<8CMetroid>" /* 8017049C 0016D3FC 28 03 00 00 */ cmplwi r3, 0 /* 801704A0 0016D400 41 82 00 50 */ beq lbl_801704F0 /* 801704A4 0016D404 A0 03 07 B0 */ lhz r0, 0x7b0(r3) @@ -7453,8 +7453,8 @@ lbl_8017066C: /* 8017067C 0016D5DC 4B ED BE F9 */ bl ObjectById__13CStateManagerF9TUniqueId /* 80170680 0016D5E0 7C 64 1B 78 */ mr r4, r3 /* 80170684 0016D5E4 38 61 00 18 */ addi r3, r1, 0x18 -/* 80170688 0016D5E8 4B F3 4D 49 */ bl sub_800a53d0 -/* 8017068C 0016D5EC 4B F3 4D 19 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 80170688 0016D5E8 4B F3 4D 49 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8017068C 0016D5EC 4B F3 4D 19 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 80170690 0016D5F0 7C 7B 1B 79 */ or. r27, r3, r3 /* 80170694 0016D5F4 41 82 00 90 */ beq lbl_80170724 /* 80170698 0016D5F8 7F C3 F3 78 */ mr r3, r30 @@ -7621,8 +7621,8 @@ InRange__8CMetroidFR13CStateManagerf: /* 801708D0 0016D830 41 82 00 A0 */ beq lbl_80170970 /* 801708D4 0016D834 7F E4 FB 78 */ mr r4, r31 /* 801708D8 0016D838 38 61 00 0C */ addi r3, r1, 0xc -/* 801708DC 0016D83C 4B F3 4A F5 */ bl sub_800a53d0 -/* 801708E0 0016D840 4B F3 4A C5 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 801708DC 0016D83C 4B F3 4A F5 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 801708E0 0016D840 4B F3 4A C5 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 801708E4 0016D844 7C 64 1B 79 */ or. r4, r3, r3 /* 801708E8 0016D848 41 82 00 20 */ beq lbl_80170908 /* 801708EC 0016D84C 7F A3 EB 78 */ mr r3, r29 @@ -8052,8 +8052,8 @@ PatternShagged__8CMetroidFR13CStateManagerf: /* 80170F04 0016DE64 4B ED B6 A1 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 80170F08 0016DE68 7C 64 1B 78 */ mr r4, r3 /* 80170F0C 0016DE6C 38 61 00 0C */ addi r3, r1, 0xc -/* 80170F10 0016DE70 4B F3 44 C1 */ bl sub_800a53d0 -/* 80170F14 0016DE74 4B F3 44 91 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 80170F10 0016DE70 4B F3 44 C1 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 80170F14 0016DE74 4B F3 44 91 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 80170F18 0016DE78 28 03 00 00 */ cmplwi r3, 0 /* 80170F1C 0016DE7C 41 82 00 18 */ beq lbl_80170F34 /* 80170F20 0016DE80 88 03 04 00 */ lbz r0, 0x400(r3) @@ -8118,8 +8118,8 @@ LostInterest__8CMetroidFR13CStateManagerf: /* 80170FEC 0016DF4C 28 04 00 00 */ cmplwi r4, 0 /* 80170FF0 0016DF50 41 82 00 8C */ beq lbl_8017107C /* 80170FF4 0016DF54 38 61 00 0C */ addi r3, r1, 0xc -/* 80170FF8 0016DF58 4B F3 43 D9 */ bl sub_800a53d0 -/* 80170FFC 0016DF5C 4B F3 43 A9 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 80170FF8 0016DF58 4B F3 43 D9 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 80170FFC 0016DF5C 4B F3 43 A9 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 80171000 0016DF60 28 03 00 00 */ cmplwi r3, 0 /* 80171004 0016DF64 41 82 00 2C */ beq lbl_80171030 /* 80171008 0016DF68 A0 63 07 B4 */ lhz r3, 0x7b4(r3) diff --git a/asm/MetroidPrime/Enemies/CMetroidPrimeExo.s b/asm/MetroidPrime/Enemies/CMetroidPrimeExo.s index 7d442d1e..d22f3c14 100644 --- a/asm/MetroidPrime/Enemies/CMetroidPrimeExo.s +++ b/asm/MetroidPrime/Enemies/CMetroidPrimeExo.s @@ -3601,8 +3601,8 @@ lbl_802739AC: /* 802739BC 0027091C 4B DD 8B B9 */ bl ObjectById__13CStateManagerF9TUniqueId /* 802739C0 00270920 7C 64 1B 78 */ mr r4, r3 /* 802739C4 00270924 38 61 00 0C */ addi r3, r1, 0xc -/* 802739C8 00270928 4B E3 1B DD */ bl sub_800a55a4 -/* 802739CC 0027092C 4B E3 1B AD */ bl "CastTo<11CEnergyBall>__10CPatternedFP7CEntity" +/* 802739C8 00270928 4B E3 1B DD */ bl "__ct__29TPatternedCast<11CEnergyBall>FP7CEntity" +/* 802739CC 0027092C 4B E3 1B AD */ bl "CastTo<11CEnergyBall>__10CPatternedFRC29TPatternedCast<11CEnergyBall>" /* 802739D0 00270930 7C 7D 1B 79 */ or. r29, r3, r3 /* 802739D4 00270934 41 82 00 64 */ beq lbl_80273A38 /* 802739D8 00270938 38 82 BB D4 */ addi r4, r2, lbl_805AD8F4@sda21 @@ -3702,8 +3702,8 @@ lbl_80273AF0: /* 80273B18 00270A78 4B DD 8A 8D */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 80273B1C 00270A7C 7C 64 1B 78 */ mr r4, r3 /* 80273B20 00270A80 38 61 00 20 */ addi r3, r1, 0x20 -/* 80273B24 00270A84 4B E3 1A 81 */ bl sub_800a55a4 -/* 80273B28 00270A88 4B E3 1A 51 */ bl "CastTo<11CEnergyBall>__10CPatternedFP7CEntity" +/* 80273B24 00270A84 4B E3 1A 81 */ bl "__ct__29TPatternedCast<11CEnergyBall>FP7CEntity" +/* 80273B28 00270A88 4B E3 1A 51 */ bl "CastTo<11CEnergyBall>__10CPatternedFRC29TPatternedCast<11CEnergyBall>" /* 80273B2C 00270A8C 28 03 00 00 */ cmplwi r3, 0 /* 80273B30 00270A90 41 82 01 1C */ beq lbl_80273C4C /* 80273B34 00270A94 80 03 05 70 */ lwz r0, 0x570(r3) @@ -3721,8 +3721,8 @@ lbl_80273AF0: /* 80273B64 00270AC4 4B DD 8A 11 */ bl ObjectById__13CStateManagerF9TUniqueId /* 80273B68 00270AC8 7C 64 1B 78 */ mr r4, r3 /* 80273B6C 00270ACC 38 61 00 24 */ addi r3, r1, 0x24 -/* 80273B70 00270AD0 4B E3 1A 35 */ bl sub_800a55a4 -/* 80273B74 00270AD4 4B E3 1A 05 */ bl "CastTo<11CEnergyBall>__10CPatternedFP7CEntity" +/* 80273B70 00270AD0 4B E3 1A 35 */ bl "__ct__29TPatternedCast<11CEnergyBall>FP7CEntity" +/* 80273B74 00270AD4 4B E3 1A 05 */ bl "CastTo<11CEnergyBall>__10CPatternedFRC29TPatternedCast<11CEnergyBall>" /* 80273B78 00270AD8 7C 7A 1B 79 */ or. r26, r3, r3 /* 80273B7C 00270ADC 41 82 00 D0 */ beq lbl_80273C4C /* 80273B80 00270AE0 80 CD A5 84 */ lwz r6, lbl_805A9144@sda21(r13) @@ -3813,8 +3813,8 @@ lbl_80273CA8: /* 80273CB4 00270C14 7C 60 1B 78 */ mr r0, r3 /* 80273CB8 00270C18 38 61 00 08 */ addi r3, r1, 8 /* 80273CBC 00270C1C 7C 04 03 78 */ mr r4, r0 -/* 80273CC0 00270C20 4B E3 18 E5 */ bl sub_800a55a4 -/* 80273CC4 00270C24 4B E3 18 B5 */ bl "CastTo<11CEnergyBall>__10CPatternedFP7CEntity" +/* 80273CC0 00270C20 4B E3 18 E5 */ bl "__ct__29TPatternedCast<11CEnergyBall>FP7CEntity" +/* 80273CC4 00270C24 4B E3 18 B5 */ bl "CastTo<11CEnergyBall>__10CPatternedFRC29TPatternedCast<11CEnergyBall>" /* 80273CC8 00270C28 28 03 00 00 */ cmplwi r3, 0 /* 80273CCC 00270C2C 41 82 00 24 */ beq lbl_80273CF0 /* 80273CD0 00270C30 80 83 00 04 */ lwz r4, 4(r3) diff --git a/asm/MetroidPrime/Enemies/CMetroidPrimeRelay.s b/asm/MetroidPrime/Enemies/CMetroidPrimeRelay.s index 149751db..d352a136 100644 --- a/asm/MetroidPrime/Enemies/CMetroidPrimeRelay.s +++ b/asm/MetroidPrime/Enemies/CMetroidPrimeRelay.s @@ -115,8 +115,8 @@ lbl_80280594: /* 802805A0 0027D500 7C 60 1B 78 */ mr r0, r3 /* 802805A4 0027D504 38 61 00 88 */ addi r3, r1, 0x88 /* 802805A8 0027D508 7C 04 03 78 */ mr r4, r0 -/* 802805AC 0027D50C 4B E2 4E C1 */ bl sub_800a546c -/* 802805B0 0027D510 4B E2 4E 91 */ bl "CastTo<16CMetroidPrimeExo>__10CPatternedFP7CEntity" +/* 802805AC 0027D50C 4B E2 4E C1 */ bl "__ct__34TPatternedCast<16CMetroidPrimeExo>FP7CEntity" +/* 802805B0 0027D510 4B E2 4E 91 */ bl "CastTo<16CMetroidPrimeExo>__10CPatternedFRC34TPatternedCast<16CMetroidPrimeExo>" /* 802805B4 0027D514 28 03 00 00 */ cmplwi r3, 0 /* 802805B8 0027D518 40 82 02 58 */ bne lbl_80280810 /* 802805BC 0027D51C 2C 15 FF FF */ cmpwi r21, -1 @@ -301,8 +301,8 @@ ForwardMessageToMetroidPrimeExo__18CMetroidPrimeRelayF20EScriptObjectMessageR13C /* 80280858 0027D7B8 4B DC BD 1D */ bl ObjectById__13CStateManagerF9TUniqueId /* 8028085C 0027D7BC 7C 64 1B 78 */ mr r4, r3 /* 80280860 0027D7C0 38 61 00 14 */ addi r3, r1, 0x14 -/* 80280864 0027D7C4 4B E2 4C 09 */ bl sub_800a546c -/* 80280868 0027D7C8 4B E2 4B D9 */ bl "CastTo<16CMetroidPrimeExo>__10CPatternedFP7CEntity" +/* 80280864 0027D7C4 4B E2 4C 09 */ bl "__ct__34TPatternedCast<16CMetroidPrimeExo>FP7CEntity" +/* 80280868 0027D7C8 4B E2 4B D9 */ bl "CastTo<16CMetroidPrimeExo>__10CPatternedFRC34TPatternedCast<16CMetroidPrimeExo>" /* 8028086C 0027D7CC 7C 64 1B 79 */ or. r4, r3, r3 /* 80280870 0027D7D0 41 82 00 30 */ beq lbl_802808A0 /* 80280874 0027D7D4 2C 1E 00 24 */ cmpwi r30, 0x24 diff --git a/asm/MetroidPrime/Enemies/CParasite.s b/asm/MetroidPrime/Enemies/CParasite.s index 04800afe..0782c262 100644 --- a/asm/MetroidPrime/Enemies/CParasite.s +++ b/asm/MetroidPrime/Enemies/CParasite.s @@ -903,8 +903,8 @@ lbl_80157210: /* 80157220 00154180 4B EF 53 55 */ bl ObjectById__13CStateManagerF9TUniqueId /* 80157224 00154184 7C 64 1B 78 */ mr r4, r3 /* 80157228 00154188 38 61 00 0C */ addi r3, r1, 0xc -/* 8015722C 0015418C 4B F4 E2 0D */ bl sub_800a5438 -/* 80157230 00154190 4B F4 E1 DD */ bl "CastTo<9CParasite>__10CPatternedFP7CEntity" +/* 8015722C 0015418C 4B F4 E2 0D */ bl "__ct__26TPatternedCast<9CParasite>FP7CEntity" +/* 80157230 00154190 4B F4 E1 DD */ bl "CastTo<9CParasite>__10CPatternedFRC26TPatternedCast<9CParasite>" /* 80157234 00154194 28 03 00 00 */ cmplwi r3, 0 /* 80157238 00154198 41 82 00 A0 */ beq lbl_801572D8 /* 8015723C 0015419C A0 A3 00 08 */ lhz r5, 8(r3) @@ -1599,8 +1599,8 @@ lbl_80157C2C: /* 80157C3C 00154B9C 4B EF 49 39 */ bl ObjectById__13CStateManagerF9TUniqueId /* 80157C40 00154BA0 7C 64 1B 78 */ mr r4, r3 /* 80157C44 00154BA4 38 61 00 0C */ addi r3, r1, 0xc -/* 80157C48 00154BA8 4B F4 D7 F1 */ bl sub_800a5438 -/* 80157C4C 00154BAC 4B F4 D7 C1 */ bl "CastTo<9CParasite>__10CPatternedFP7CEntity" +/* 80157C48 00154BA8 4B F4 D7 F1 */ bl "__ct__26TPatternedCast<9CParasite>FP7CEntity" +/* 80157C4C 00154BAC 4B F4 D7 C1 */ bl "CastTo<9CParasite>__10CPatternedFRC26TPatternedCast<9CParasite>" /* 80157C50 00154BB0 7C 7F 1B 79 */ or. r31, r3, r3 /* 80157C54 00154BB4 40 82 00 18 */ bne lbl_80157C6C /* 80157C58 00154BB8 7F C3 F3 78 */ mr r3, r30 diff --git a/asm/MetroidPrime/Enemies/CPatterned.s b/asm/MetroidPrime/Enemies/CPatterned.s index 82916799..e3729ec6 100644 --- a/asm/MetroidPrime/Enemies/CPatterned.s +++ b/asm/MetroidPrime/Enemies/CPatterned.s @@ -2359,8 +2359,8 @@ lbl_80078C2C: /* 80078C74 00075BD4 4B FD 39 31 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 80078C78 00075BD8 7C 64 1B 78 */ mr r4, r3 /* 80078C7C 00075BDC 38 61 00 10 */ addi r3, r1, 0x10 -/* 80078C80 00075BE0 48 02 C8 55 */ bl sub_800a54d4 -/* 80078C84 00075BE4 48 02 C8 25 */ bl "CastTo<8CMetroid>__10CPatternedFP7CEntity" +/* 80078C80 00075BE0 48 02 C8 55 */ bl "__ct__25TPatternedCast<8CMetroid>FP7CEntity" +/* 80078C84 00075BE4 48 02 C8 25 */ bl "CastTo<8CMetroid>__10CPatternedFRC25TPatternedCast<8CMetroid>" /* 80078C88 00075BE8 28 03 00 00 */ cmplwi r3, 0 /* 80078C8C 00075BEC 41 82 00 08 */ beq lbl_80078C94 /* 80078C90 00075BF0 3B 80 00 01 */ li r28, 1 diff --git a/asm/MetroidPrime/Enemies/CSpacePirate.s b/asm/MetroidPrime/Enemies/CSpacePirate.s index 468f9bf6..64792d33 100644 --- a/asm/MetroidPrime/Enemies/CSpacePirate.s +++ b/asm/MetroidPrime/Enemies/CSpacePirate.s @@ -1958,8 +1958,8 @@ lbl_80121514: /* 8012151C 0011E47C 4B EE E7 C1 */ bl __vc__11CObjectListCFi /* 80121520 0011E480 7C 64 1B 78 */ mr r4, r3 /* 80121524 0011E484 38 61 00 20 */ addi r3, r1, 0x20 -/* 80121528 0011E488 4B F8 3E A9 */ bl sub_800a53d0 -/* 8012152C 0011E48C 4B F8 3E 79 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 80121528 0011E488 4B F8 3E A9 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8012152C 0011E48C 4B F8 3E 79 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 80121530 0011E490 28 03 00 00 */ cmplwi r3, 0 /* 80121534 0011E494 41 82 00 38 */ beq lbl_8012156C /* 80121538 0011E498 7C 03 E8 40 */ cmplw r3, r29 @@ -5259,8 +5259,8 @@ lbl_8012441C: /* 80124434 00121394 4B F2 81 71 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 80124438 00121398 7C 64 1B 78 */ mr r4, r3 /* 8012443C 0012139C 38 61 00 0C */ addi r3, r1, 0xc -/* 80124440 001213A0 4B F8 10 95 */ bl sub_800a54d4 -/* 80124444 001213A4 4B F8 10 65 */ bl "CastTo<8CMetroid>__10CPatternedFP7CEntity" +/* 80124440 001213A0 4B F8 10 95 */ bl "__ct__25TPatternedCast<8CMetroid>FP7CEntity" +/* 80124444 001213A4 4B F8 10 65 */ bl "CastTo<8CMetroid>__10CPatternedFRC25TPatternedCast<8CMetroid>" /* 80124448 001213A8 28 03 00 00 */ cmplwi r3, 0 /* 8012444C 001213AC 41 82 00 68 */ beq lbl_801244B4 /* 80124450 001213B0 88 03 09 BF */ lbz r0, 0x9bf(r3) @@ -7463,8 +7463,8 @@ lbl_80126444: /* 8012644C 001233AC 4B EE 98 91 */ bl __vc__11CObjectListCFi /* 80126450 001233B0 7C 64 1B 78 */ mr r4, r3 /* 80126454 001233B4 38 61 00 08 */ addi r3, r1, 8 -/* 80126458 001233B8 4B F7 EF 79 */ bl sub_800a53d0 -/* 8012645C 001233BC 4B F7 EF 49 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 80126458 001233B8 4B F7 EF 79 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8012645C 001233BC 4B F7 EF 49 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 80126460 001233C0 28 03 00 00 */ cmplwi r3, 0 /* 80126464 001233C4 41 82 00 84 */ beq lbl_801264E8 /* 80126468 001233C8 7C 03 F8 40 */ cmplw r3, r31 @@ -7547,8 +7547,8 @@ lbl_80126574: /* 8012657C 001234DC 4B EE 97 61 */ bl __vc__11CObjectListCFi /* 80126580 001234E0 7C 64 1B 78 */ mr r4, r3 /* 80126584 001234E4 38 61 00 08 */ addi r3, r1, 8 -/* 80126588 001234E8 4B F7 EE 49 */ bl sub_800a53d0 -/* 8012658C 001234EC 4B F7 EE 19 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 80126588 001234E8 4B F7 EE 49 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8012658C 001234EC 4B F7 EE 19 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 80126590 001234F0 28 03 00 00 */ cmplwi r3, 0 /* 80126594 001234F4 41 82 00 2C */ beq lbl_801265C0 /* 80126598 001234F8 7C 03 E0 40 */ cmplw r3, r28 @@ -8417,8 +8417,8 @@ lbl_801271F4: /* 801271FC 0012415C 4B EE 8A E1 */ bl __vc__11CObjectListCFi /* 80127200 00124160 7C 64 1B 78 */ mr r4, r3 /* 80127204 00124164 38 61 00 18 */ addi r3, r1, 0x18 -/* 80127208 00124168 4B F7 E1 C9 */ bl sub_800a53d0 -/* 8012720C 0012416C 4B F7 E1 99 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 80127208 00124168 4B F7 E1 C9 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8012720C 0012416C 4B F7 E1 99 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 80127210 00124170 28 03 00 00 */ cmplwi r3, 0 /* 80127214 00124174 41 82 00 98 */ beq lbl_801272AC /* 80127218 00124178 7C 03 F0 40 */ cmplw r3, r30 @@ -9906,8 +9906,8 @@ lbl_80128724: /* 8012872C 0012568C 4B EE 75 B1 */ bl __vc__11CObjectListCFi /* 80128730 00125690 7C 64 1B 78 */ mr r4, r3 /* 80128734 00125694 38 61 00 08 */ addi r3, r1, 8 -/* 80128738 00125698 4B F7 CC 99 */ bl sub_800a53d0 -/* 8012873C 0012569C 4B F7 CC 69 */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 80128738 00125698 4B F7 CC 99 */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 8012873C 0012569C 4B F7 CC 69 */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 80128740 001256A0 28 03 00 00 */ cmplwi r3, 0 /* 80128744 001256A4 41 82 00 D8 */ beq lbl_8012881C /* 80128748 001256A8 7C 03 C8 40 */ cmplw r3, r25 @@ -10296,8 +10296,8 @@ lbl_80128C94: /* 80128CE8 00125C48 40 82 00 BC */ bne lbl_80128DA4 /* 80128CEC 00125C4C 7F 84 E3 78 */ mr r4, r28 /* 80128CF0 00125C50 38 61 00 08 */ addi r3, r1, 8 -/* 80128CF4 00125C54 4B F7 C6 DD */ bl sub_800a53d0 -/* 80128CF8 00125C58 4B F7 C6 AD */ bl "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" +/* 80128CF4 00125C54 4B F7 C6 DD */ bl "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +/* 80128CF8 00125C58 4B F7 C6 AD */ bl "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" /* 80128CFC 00125C5C 28 03 00 00 */ cmplwi r3, 0 /* 80128D00 00125C60 41 82 00 A4 */ beq lbl_80128DA4 /* 80128D04 00125C64 C0 03 07 48 */ lfs f0, 0x748(r3) diff --git a/asm/MetroidPrime/Enemies/CThardus.s b/asm/MetroidPrime/Enemies/CThardus.s index ed975073..cae396b4 100644 --- a/asm/MetroidPrime/Enemies/CThardus.s +++ b/asm/MetroidPrime/Enemies/CThardus.s @@ -1374,8 +1374,8 @@ lbl_801DB2A4: /* 801DB2B8 001D8218 4B E7 12 BD */ bl ObjectById__13CStateManagerF9TUniqueId /* 801DB2BC 001D821C 7C 64 1B 78 */ mr r4, r3 /* 801DB2C0 001D8220 38 61 00 0C */ addi r3, r1, 0xc -/* 801DB2C4 001D8224 4B EC A0 D9 */ bl sub_800a539c -/* 801DB2C8 001D8228 4B EC A0 A9 */ bl "CastTo<22CThardusRockProjectile>__10CPatternedFP7CEntity" +/* 801DB2C4 001D8224 4B EC A0 D9 */ bl "__ct__40TPatternedCast<22CThardusRockProjectile>FP7CEntity" +/* 801DB2C8 001D8228 4B EC A0 A9 */ bl "CastTo<22CThardusRockProjectile>__10CPatternedFRC40TPatternedCast<22CThardusRockProjectile>" /* 801DB2CC 001D822C 28 03 00 00 */ cmplwi r3, 0 /* 801DB2D0 001D8230 41 82 00 0C */ beq lbl_801DB2DC /* 801DB2D4 001D8234 7F 84 E3 78 */ mr r4, r28 @@ -3316,8 +3316,8 @@ lbl_801DCDBC: /* 801DCDD0 001D9D30 4B E6 F7 A5 */ bl ObjectById__13CStateManagerF9TUniqueId /* 801DCDD4 001D9D34 7C 64 1B 78 */ mr r4, r3 /* 801DCDD8 001D9D38 38 61 00 0C */ addi r3, r1, 0xc -/* 801DCDDC 001D9D3C 4B EC 85 C1 */ bl sub_800a539c -/* 801DCDE0 001D9D40 4B EC 85 91 */ bl "CastTo<22CThardusRockProjectile>__10CPatternedFP7CEntity" +/* 801DCDDC 001D9D3C 4B EC 85 C1 */ bl "__ct__40TPatternedCast<22CThardusRockProjectile>FP7CEntity" +/* 801DCDE0 001D9D40 4B EC 85 91 */ bl "CastTo<22CThardusRockProjectile>__10CPatternedFRC40TPatternedCast<22CThardusRockProjectile>" /* 801DCDE4 001D9D44 28 03 00 00 */ cmplwi r3, 0 /* 801DCDE8 001D9D48 41 82 00 0C */ beq lbl_801DCDF4 /* 801DCDEC 001D9D4C 7F 64 DB 78 */ mr r4, r27 @@ -7290,8 +7290,8 @@ lbl_801E0640: /* 801E0674 001DD5D4 4B E6 BF 01 */ bl ObjectById__13CStateManagerF9TUniqueId /* 801E0678 001DD5D8 7C 64 1B 78 */ mr r4, r3 /* 801E067C 001DD5DC 38 61 00 88 */ addi r3, r1, 0x88 -/* 801E0680 001DD5E0 4B EC 4D 1D */ bl sub_800a539c -/* 801E0684 001DD5E4 4B EC 4C ED */ bl "CastTo<22CThardusRockProjectile>__10CPatternedFP7CEntity" +/* 801E0680 001DD5E0 4B EC 4D 1D */ bl "__ct__40TPatternedCast<22CThardusRockProjectile>FP7CEntity" +/* 801E0684 001DD5E4 4B EC 4C ED */ bl "CastTo<22CThardusRockProjectile>__10CPatternedFRC40TPatternedCast<22CThardusRockProjectile>" /* 801E0688 001DD5E8 7C 7A 1B 79 */ or. r26, r3, r3 /* 801E068C 001DD5EC 41 82 02 9C */ beq lbl_801E0928 /* 801E0690 001DD5F0 81 83 00 00 */ lwz r12, 0(r3) @@ -8597,8 +8597,8 @@ lbl_801E195C: /* 801E196C 001DE8CC 4B E6 AC 09 */ bl ObjectById__13CStateManagerF9TUniqueId /* 801E1970 001DE8D0 7C 64 1B 78 */ mr r4, r3 /* 801E1974 001DE8D4 38 61 00 E4 */ addi r3, r1, 0xe4 -/* 801E1978 001DE8D8 4B EC 3A 25 */ bl sub_800a539c -/* 801E197C 001DE8DC 4B EC 39 F5 */ bl "CastTo<22CThardusRockProjectile>__10CPatternedFP7CEntity" +/* 801E1978 001DE8D8 4B EC 3A 25 */ bl "__ct__40TPatternedCast<22CThardusRockProjectile>FP7CEntity" +/* 801E197C 001DE8DC 4B EC 39 F5 */ bl "CastTo<22CThardusRockProjectile>__10CPatternedFRC40TPatternedCast<22CThardusRockProjectile>" /* 801E1980 001DE8E0 28 03 00 00 */ cmplwi r3, 0 /* 801E1984 001DE8E4 41 82 00 2C */ beq lbl_801E19B0 /* 801E1988 001DE8E8 A0 01 00 C4 */ lhz r0, 0xc4(r1) diff --git a/asm/MetroidPrime/Enemies/CWarWasp.s b/asm/MetroidPrime/Enemies/CWarWasp.s index b7747938..b5eb083f 100644 --- a/asm/MetroidPrime/Enemies/CWarWasp.s +++ b/asm/MetroidPrime/Enemies/CWarWasp.s @@ -511,8 +511,8 @@ UpdateTelegraphMoveSpeed__8CWarWaspFR13CStateManager: /* 8010AE18 00107D78 4B F4 17 8D */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8010AE1C 00107D7C 7C 64 1B 78 */ mr r4, r3 /* 8010AE20 00107D80 38 61 00 14 */ addi r3, r1, 0x14 -/* 8010AE24 00107D84 4B F9 A5 45 */ bl sub_800a5368 -/* 8010AE28 00107D88 4B F9 A5 15 */ bl "CastTo<8CWarWasp>__10CPatternedFP7CEntity" +/* 8010AE24 00107D84 4B F9 A5 45 */ bl "__ct__25TPatternedCast<8CWarWasp>FP7CEntity" +/* 8010AE28 00107D88 4B F9 A5 15 */ bl "CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>" /* 8010AE2C 00107D8C 28 03 00 00 */ cmplwi r3, 0 /* 8010AE30 00107D90 41 82 00 A4 */ beq lbl_8010AED4 /* 8010AE34 00107D94 A0 81 00 10 */ lhz r4, 0x10(r1) @@ -659,8 +659,8 @@ lbl_8010B014: /* 8010B028 00107F88 4B F4 15 7D */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8010B02C 00107F8C 7C 64 1B 78 */ mr r4, r3 /* 8010B030 00107F90 38 61 00 1C */ addi r3, r1, 0x1c -/* 8010B034 00107F94 4B F9 A3 35 */ bl sub_800a5368 -/* 8010B038 00107F98 4B F9 A3 05 */ bl "CastTo<8CWarWasp>__10CPatternedFP7CEntity" +/* 8010B034 00107F94 4B F9 A3 35 */ bl "__ct__25TPatternedCast<8CWarWasp>FP7CEntity" +/* 8010B038 00107F98 4B F9 A3 05 */ bl "CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>" /* 8010B03C 00107F9C 28 03 00 00 */ cmplwi r3, 0 /* 8010B040 00107FA0 41 82 00 14 */ beq lbl_8010B054 /* 8010B044 00107FA4 80 03 07 08 */ lwz r0, 0x708(r3) @@ -724,8 +724,8 @@ lbl_8010B0FC: /* 8010B110 00108070 4B F4 14 95 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8010B114 00108074 7C 64 1B 78 */ mr r4, r3 /* 8010B118 00108078 38 61 00 1C */ addi r3, r1, 0x1c -/* 8010B11C 0010807C 4B F9 A2 4D */ bl sub_800a5368 -/* 8010B120 00108080 4B F9 A2 1D */ bl "CastTo<8CWarWasp>__10CPatternedFP7CEntity" +/* 8010B11C 0010807C 4B F9 A2 4D */ bl "__ct__25TPatternedCast<8CWarWasp>FP7CEntity" +/* 8010B120 00108080 4B F9 A2 1D */ bl "CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>" /* 8010B124 00108084 28 03 00 00 */ cmplwi r3, 0 /* 8010B128 00108088 41 82 00 1C */ beq lbl_8010B144 /* 8010B12C 0010808C 80 03 07 08 */ lwz r0, 0x708(r3) @@ -809,8 +809,8 @@ lbl_8010B230: /* 8010B244 001081A4 4B F4 13 31 */ bl ObjectById__13CStateManagerF9TUniqueId /* 8010B248 001081A8 7C 64 1B 78 */ mr r4, r3 /* 8010B24C 001081AC 38 61 00 20 */ addi r3, r1, 0x20 -/* 8010B250 001081B0 4B F9 A1 19 */ bl sub_800a5368 -/* 8010B254 001081B4 4B F9 A0 E9 */ bl "CastTo<8CWarWasp>__10CPatternedFP7CEntity" +/* 8010B250 001081B0 4B F9 A1 19 */ bl "__ct__25TPatternedCast<8CWarWasp>FP7CEntity" +/* 8010B254 001081B4 4B F9 A0 E9 */ bl "CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>" /* 8010B258 001081B8 28 03 00 00 */ cmplwi r3, 0 /* 8010B25C 001081BC 41 82 00 1C */ beq lbl_8010B278 /* 8010B260 001081C0 80 03 07 08 */ lwz r0, 0x708(r3) @@ -882,8 +882,8 @@ lbl_8010B338: /* 8010B34C 001082AC 4B F4 12 59 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8010B350 001082B0 7C 64 1B 78 */ mr r4, r3 /* 8010B354 001082B4 38 61 00 1C */ addi r3, r1, 0x1c -/* 8010B358 001082B8 4B F9 A0 11 */ bl sub_800a5368 -/* 8010B35C 001082BC 4B F9 9F E1 */ bl "CastTo<8CWarWasp>__10CPatternedFP7CEntity" +/* 8010B358 001082B8 4B F9 A0 11 */ bl "__ct__25TPatternedCast<8CWarWasp>FP7CEntity" +/* 8010B35C 001082BC 4B F9 9F E1 */ bl "CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>" /* 8010B360 001082C0 28 03 00 00 */ cmplwi r3, 0 /* 8010B364 001082C4 41 82 00 58 */ beq lbl_8010B3BC /* 8010B368 001082C8 80 9A 07 0C */ lwz r4, 0x70c(r26) @@ -1002,8 +1002,8 @@ lbl_8010B4D4: /* 8010B4FC 0010845C 4B F4 10 A9 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8010B500 00108460 7C 64 1B 78 */ mr r4, r3 /* 8010B504 00108464 38 61 00 24 */ addi r3, r1, 0x24 -/* 8010B508 00108468 4B F9 9E 61 */ bl sub_800a5368 -/* 8010B50C 0010846C 4B F9 9E 31 */ bl "CastTo<8CWarWasp>__10CPatternedFP7CEntity" +/* 8010B508 00108468 4B F9 9E 61 */ bl "__ct__25TPatternedCast<8CWarWasp>FP7CEntity" +/* 8010B50C 0010846C 4B F9 9E 31 */ bl "CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>" /* 8010B510 00108470 28 03 00 00 */ cmplwi r3, 0 /* 8010B514 00108474 41 82 01 60 */ beq lbl_8010B674 /* 8010B518 00108478 C3 A3 00 60 */ lfs f29, 0x60(r3) @@ -1036,8 +1036,8 @@ lbl_8010B564: /* 8010B580 001084E0 4B F4 10 25 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8010B584 001084E4 7C 64 1B 78 */ mr r4, r3 /* 8010B588 001084E8 38 61 00 20 */ addi r3, r1, 0x20 -/* 8010B58C 001084EC 4B F9 9D DD */ bl sub_800a5368 -/* 8010B590 001084F0 4B F9 9D AD */ bl "CastTo<8CWarWasp>__10CPatternedFP7CEntity" +/* 8010B58C 001084EC 4B F9 9D DD */ bl "__ct__25TPatternedCast<8CWarWasp>FP7CEntity" +/* 8010B590 001084F0 4B F9 9D AD */ bl "CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>" /* 8010B594 001084F4 28 03 00 00 */ cmplwi r3, 0 /* 8010B598 001084F8 41 82 00 84 */ beq lbl_8010B61C /* 8010B59C 001084FC 80 03 07 08 */ lwz r0, 0x708(r3) @@ -1249,8 +1249,8 @@ lbl_8010B87C: /* 8010B89C 001087FC 4B F4 0D 09 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8010B8A0 00108800 7C 64 1B 78 */ mr r4, r3 /* 8010B8A4 00108804 38 61 00 20 */ addi r3, r1, 0x20 -/* 8010B8A8 00108808 4B F9 9A C1 */ bl sub_800a5368 -/* 8010B8AC 0010880C 4B F9 9A 91 */ bl "CastTo<8CWarWasp>__10CPatternedFP7CEntity" +/* 8010B8A8 00108808 4B F9 9A C1 */ bl "__ct__25TPatternedCast<8CWarWasp>FP7CEntity" +/* 8010B8AC 0010880C 4B F9 9A 91 */ bl "CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>" /* 8010B8B0 00108810 28 03 00 00 */ cmplwi r3, 0 /* 8010B8B4 00108814 41 82 00 8C */ beq lbl_8010B940 /* 8010B8B8 00108818 80 83 07 08 */ lwz r4, 0x708(r3) @@ -2190,8 +2190,8 @@ lbl_8010C65C: /* 8010C66C 001095CC 4B F3 FF 39 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8010C670 001095D0 7C 64 1B 78 */ mr r4, r3 /* 8010C674 001095D4 38 61 00 0C */ addi r3, r1, 0xc -/* 8010C678 001095D8 4B F9 8C F1 */ bl sub_800a5368 -/* 8010C67C 001095DC 4B F9 8C C1 */ bl "CastTo<8CWarWasp>__10CPatternedFP7CEntity" +/* 8010C678 001095D8 4B F9 8C F1 */ bl "__ct__25TPatternedCast<8CWarWasp>FP7CEntity" +/* 8010C67C 001095DC 4B F9 8C C1 */ bl "CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>" /* 8010C680 001095E0 7C 7D 1B 79 */ or. r29, r3, r3 /* 8010C684 001095E4 41 82 01 14 */ beq lbl_8010C798 /* 8010C688 001095E8 A0 7D 00 08 */ lhz r3, 8(r29) @@ -5825,8 +5825,8 @@ lbl_8010FB08: /* 8010FB14 0010CA74 4B F3 CA 91 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8010FB18 0010CA78 7C 64 1B 78 */ mr r4, r3 /* 8010FB1C 0010CA7C 38 61 00 30 */ addi r3, r1, 0x30 -/* 8010FB20 0010CA80 4B F9 58 49 */ bl sub_800a5368 -/* 8010FB24 0010CA84 4B F9 58 19 */ bl "CastTo<8CWarWasp>__10CPatternedFP7CEntity" +/* 8010FB20 0010CA80 4B F9 58 49 */ bl "__ct__25TPatternedCast<8CWarWasp>FP7CEntity" +/* 8010FB24 0010CA84 4B F9 58 19 */ bl "CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>" /* 8010FB28 0010CA88 28 03 00 00 */ cmplwi r3, 0 /* 8010FB2C 0010CA8C 41 82 00 3C */ beq lbl_8010FB68 /* 8010FB30 0010CA90 88 03 07 2E */ lbz r0, 0x72e(r3) diff --git a/asm/MetroidPrime/Enemies/PatternedCastTo.s b/asm/MetroidPrime/Enemies/PatternedCastTo.s index 4c135a26..6f21c86c 100644 --- a/asm/MetroidPrime/Enemies/PatternedCastTo.s +++ b/asm/MetroidPrime/Enemies/PatternedCastTo.s @@ -2,8 +2,8 @@ .section .text, "ax" -.global "CastTo<8CWarWasp>__10CPatternedFP7CEntity" -"CastTo<8CWarWasp>__10CPatternedFP7CEntity": +.global "CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>" +"CastTo<8CWarWasp>__10CPatternedFRC25TPatternedCast<8CWarWasp>": /* 800A533C 000A229C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A5340 000A22A0 7C 08 02 A6 */ mflr r0 /* 800A5344 000A22A4 7C 64 1B 78 */ mr r4, r3 @@ -16,13 +16,13 @@ /* 800A5360 000A22C0 38 21 00 10 */ addi r1, r1, 0x10 /* 800A5364 000A22C4 4E 80 00 20 */ blr -.global sub_800a5368 -sub_800a5368: +.global "__ct__25TPatternedCast<8CWarWasp>FP7CEntity" +"__ct__25TPatternedCast<8CWarWasp>FP7CEntity": /* 800A5368 000A22C8 90 83 00 00 */ stw r4, 0(r3) /* 800A536C 000A22CC 4E 80 00 20 */ blr -.global "CastTo<22CThardusRockProjectile>__10CPatternedFP7CEntity" -"CastTo<22CThardusRockProjectile>__10CPatternedFP7CEntity": +.global "CastTo<22CThardusRockProjectile>__10CPatternedFRC40TPatternedCast<22CThardusRockProjectile>" +"CastTo<22CThardusRockProjectile>__10CPatternedFRC40TPatternedCast<22CThardusRockProjectile>": /* 800A5370 000A22D0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A5374 000A22D4 7C 08 02 A6 */ mflr r0 /* 800A5378 000A22D8 7C 64 1B 78 */ mr r4, r3 @@ -35,13 +35,13 @@ sub_800a5368: /* 800A5394 000A22F4 38 21 00 10 */ addi r1, r1, 0x10 /* 800A5398 000A22F8 4E 80 00 20 */ blr -.global sub_800a539c -sub_800a539c: +.global "__ct__40TPatternedCast<22CThardusRockProjectile>FP7CEntity" +"__ct__40TPatternedCast<22CThardusRockProjectile>FP7CEntity": /* 800A539C 000A22FC 90 83 00 00 */ stw r4, 0(r3) /* 800A53A0 000A2300 4E 80 00 20 */ blr -.global "CastTo<12CSpacePirate>__10CPatternedFP7CEntity" -"CastTo<12CSpacePirate>__10CPatternedFP7CEntity": +.global "CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>" +"CastTo<12CSpacePirate>__10CPatternedFRC30TPatternedCast<12CSpacePirate>": /* 800A53A4 000A2304 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A53A8 000A2308 7C 08 02 A6 */ mflr r0 /* 800A53AC 000A230C 7C 64 1B 78 */ mr r4, r3 @@ -54,13 +54,13 @@ sub_800a539c: /* 800A53C8 000A2328 38 21 00 10 */ addi r1, r1, 0x10 /* 800A53CC 000A232C 4E 80 00 20 */ blr -.global sub_800a53d0 -sub_800a53d0: +.global "__ct__30TPatternedCast<12CSpacePirate>FP7CEntity" +"__ct__30TPatternedCast<12CSpacePirate>FP7CEntity": /* 800A53D0 000A2330 90 83 00 00 */ stw r4, 0(r3) /* 800A53D4 000A2334 4E 80 00 20 */ blr -.global "CastTo<11CPuddleToad>__10CPatternedFP7CEntity" -"CastTo<11CPuddleToad>__10CPatternedFP7CEntity": +.global "CastTo<11CPuddleToad>__10CPatternedFRC29TPatternedCast<11CPuddleToad>" +"CastTo<11CPuddleToad>__10CPatternedFRC29TPatternedCast<11CPuddleToad>": /* 800A53D8 000A2338 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A53DC 000A233C 7C 08 02 A6 */ mflr r0 /* 800A53E0 000A2340 7C 64 1B 78 */ mr r4, r3 @@ -73,13 +73,13 @@ sub_800a53d0: /* 800A53FC 000A235C 38 21 00 10 */ addi r1, r1, 0x10 /* 800A5400 000A2360 4E 80 00 20 */ blr -.global sub_800a5404 -sub_800a5404: +.global "__ct__29TPatternedCast<11CPuddleToad>FP7CEntity" +"__ct__29TPatternedCast<11CPuddleToad>FP7CEntity": /* 800A5404 000A2364 90 83 00 00 */ stw r4, 0(r3) /* 800A5408 000A2368 4E 80 00 20 */ blr -.global "CastTo<9CParasite>__10CPatternedFP7CEntity" -"CastTo<9CParasite>__10CPatternedFP7CEntity": +.global "CastTo<9CParasite>__10CPatternedFRC26TPatternedCast<9CParasite>" +"CastTo<9CParasite>__10CPatternedFRC26TPatternedCast<9CParasite>": /* 800A540C 000A236C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A5410 000A2370 7C 08 02 A6 */ mflr r0 /* 800A5414 000A2374 7C 64 1B 78 */ mr r4, r3 @@ -92,13 +92,13 @@ sub_800a5404: /* 800A5430 000A2390 38 21 00 10 */ addi r1, r1, 0x10 /* 800A5434 000A2394 4E 80 00 20 */ blr -.global sub_800a5438 -sub_800a5438: +.global "__ct__26TPatternedCast<9CParasite>FP7CEntity" +"__ct__26TPatternedCast<9CParasite>FP7CEntity": /* 800A5438 000A2398 90 83 00 00 */ stw r4, 0(r3) /* 800A543C 000A239C 4E 80 00 20 */ blr -.global "CastTo<16CMetroidPrimeExo>__10CPatternedFP7CEntity" -"CastTo<16CMetroidPrimeExo>__10CPatternedFP7CEntity": +.global "CastTo<16CMetroidPrimeExo>__10CPatternedFRC34TPatternedCast<16CMetroidPrimeExo>" +"CastTo<16CMetroidPrimeExo>__10CPatternedFRC34TPatternedCast<16CMetroidPrimeExo>": /* 800A5440 000A23A0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A5444 000A23A4 7C 08 02 A6 */ mflr r0 /* 800A5448 000A23A8 7C 64 1B 78 */ mr r4, r3 @@ -111,13 +111,13 @@ sub_800a5438: /* 800A5464 000A23C4 38 21 00 10 */ addi r1, r1, 0x10 /* 800A5468 000A23C8 4E 80 00 20 */ blr -.global sub_800a546c -sub_800a546c: +.global "__ct__34TPatternedCast<16CMetroidPrimeExo>FP7CEntity" +"__ct__34TPatternedCast<16CMetroidPrimeExo>FP7CEntity": /* 800A546C 000A23CC 90 83 00 00 */ stw r4, 0(r3) /* 800A5470 000A23D0 4E 80 00 20 */ blr -.global "CastTo<12CMetroidBeta>__10CPatternedFP7CEntity" -"CastTo<12CMetroidBeta>__10CPatternedFP7CEntity": +.global "CastTo<12CMetroidBeta>__10CPatternedFRC30TPatternedCast<12CMetroidBeta>" +"CastTo<12CMetroidBeta>__10CPatternedFRC30TPatternedCast<12CMetroidBeta>": /* 800A5474 000A23D4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A5478 000A23D8 7C 08 02 A6 */ mflr r0 /* 800A547C 000A23DC 7C 64 1B 78 */ mr r4, r3 @@ -130,13 +130,13 @@ sub_800a546c: /* 800A5498 000A23F8 38 21 00 10 */ addi r1, r1, 0x10 /* 800A549C 000A23FC 4E 80 00 20 */ blr -.global sub_800a54a0 -sub_800a54a0: +.global "__ct__30TPatternedCast<12CMetroidBeta>FP7CEntity" +"__ct__30TPatternedCast<12CMetroidBeta>FP7CEntity": /* 800A54A0 000A2400 90 83 00 00 */ stw r4, 0(r3) /* 800A54A4 000A2404 4E 80 00 20 */ blr -.global "CastTo<8CMetroid>__10CPatternedFP7CEntity" -"CastTo<8CMetroid>__10CPatternedFP7CEntity": +.global "CastTo<8CMetroid>__10CPatternedFRC25TPatternedCast<8CMetroid>" +"CastTo<8CMetroid>__10CPatternedFRC25TPatternedCast<8CMetroid>": /* 800A54A8 000A2408 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A54AC 000A240C 7C 08 02 A6 */ mflr r0 /* 800A54B0 000A2410 7C 64 1B 78 */ mr r4, r3 @@ -149,13 +149,13 @@ sub_800a54a0: /* 800A54CC 000A242C 38 21 00 10 */ addi r1, r1, 0x10 /* 800A54D0 000A2430 4E 80 00 20 */ blr -.global sub_800a54d4 -sub_800a54d4: +.global "__ct__25TPatternedCast<8CMetroid>FP7CEntity" +"__ct__25TPatternedCast<8CMetroid>FP7CEntity": /* 800A54D4 000A2434 90 83 00 00 */ stw r4, 0(r3) /* 800A54D8 000A2438 4E 80 00 20 */ blr -.global "CastTo<9CJellyZap>__10CPatternedFP7CEntity" -"CastTo<9CJellyZap>__10CPatternedFP7CEntity": +.global "CastTo<9CJellyZap>__10CPatternedFRC26TPatternedCast<9CJellyZap>" +"CastTo<9CJellyZap>__10CPatternedFRC26TPatternedCast<9CJellyZap>": /* 800A54DC 000A243C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A54E0 000A2440 7C 08 02 A6 */ mflr r0 /* 800A54E4 000A2444 7C 64 1B 78 */ mr r4, r3 @@ -168,13 +168,13 @@ sub_800a54d4: /* 800A5500 000A2460 38 21 00 10 */ addi r1, r1, 0x10 /* 800A5504 000A2464 4E 80 00 20 */ blr -.global sub_800a5508 -sub_800a5508: +.global "__ct__26TPatternedCast<9CJellyZap>FP7CEntity" +"__ct__26TPatternedCast<9CJellyZap>FP7CEntity": /* 800A5508 000A2468 90 83 00 00 */ stw r4, 0(r3) /* 800A550C 000A246C 4E 80 00 20 */ blr -.global "CastTo<12CIceSheegoth>__10CPatternedFP7CEntity" -"CastTo<12CIceSheegoth>__10CPatternedFP7CEntity": +.global "CastTo<12CIceSheegoth>__10CPatternedFRC30TPatternedCast<12CIceSheegoth>" +"CastTo<12CIceSheegoth>__10CPatternedFRC30TPatternedCast<12CIceSheegoth>": /* 800A5510 000A2470 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A5514 000A2474 7C 08 02 A6 */ mflr r0 /* 800A5518 000A2478 7C 64 1B 78 */ mr r4, r3 @@ -187,13 +187,13 @@ sub_800a5508: /* 800A5534 000A2494 38 21 00 10 */ addi r1, r1, 0x10 /* 800A5538 000A2498 4E 80 00 20 */ blr -.global sub_800a553c -sub_800a553c: +.global "__ct__30TPatternedCast<12CIceSheegoth>FP7CEntity" +"__ct__30TPatternedCast<12CIceSheegoth>FP7CEntity": /* 800A553C 000A249C 90 83 00 00 */ stw r4, 0(r3) /* 800A5540 000A24A0 4E 80 00 20 */ blr -.global "CastTo<11CFlickerBat>__10CPatternedFP7CEntity" -"CastTo<11CFlickerBat>__10CPatternedFP7CEntity": +.global "CastTo<11CFlickerBat>__10CPatternedFRC29TPatternedCast<11CFlickerBat>" +"CastTo<11CFlickerBat>__10CPatternedFRC29TPatternedCast<11CFlickerBat>": /* 800A5544 000A24A4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A5548 000A24A8 7C 08 02 A6 */ mflr r0 /* 800A554C 000A24AC 7C 64 1B 78 */ mr r4, r3 @@ -206,13 +206,13 @@ sub_800a553c: /* 800A5568 000A24C8 38 21 00 10 */ addi r1, r1, 0x10 /* 800A556C 000A24CC 4E 80 00 20 */ blr -.global sub_800a5570 -sub_800a5570: +.global "__ct__29TPatternedCast<11CFlickerBat>FP7CEntity" +"__ct__29TPatternedCast<11CFlickerBat>FP7CEntity": /* 800A5570 000A24D0 90 83 00 00 */ stw r4, 0(r3) /* 800A5574 000A24D4 4E 80 00 20 */ blr -.global "CastTo<11CEnergyBall>__10CPatternedFP7CEntity" -"CastTo<11CEnergyBall>__10CPatternedFP7CEntity": +.global "CastTo<11CEnergyBall>__10CPatternedFRC29TPatternedCast<11CEnergyBall>" +"CastTo<11CEnergyBall>__10CPatternedFRC29TPatternedCast<11CEnergyBall>": /* 800A5578 000A24D8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 800A557C 000A24DC 7C 08 02 A6 */ mflr r0 /* 800A5580 000A24E0 7C 64 1B 78 */ mr r4, r3 @@ -225,8 +225,8 @@ sub_800a5570: /* 800A559C 000A24FC 38 21 00 10 */ addi r1, r1, 0x10 /* 800A55A0 000A2500 4E 80 00 20 */ blr -.global sub_800a55a4 -sub_800a55a4: +.global "__ct__29TPatternedCast<11CEnergyBall>FP7CEntity" +"__ct__29TPatternedCast<11CEnergyBall>FP7CEntity": /* 800A55A4 000A2504 90 83 00 00 */ stw r4, 0(r3) /* 800A55A8 000A2508 4E 80 00 20 */ blr diff --git a/asm/MetroidPrime/Player/CMorphBall.s b/asm/MetroidPrime/Player/CMorphBall.s index 7c677d71..654430a4 100644 --- a/asm/MetroidPrime/Player/CMorphBall.s +++ b/asm/MetroidPrime/Player/CMorphBall.s @@ -2581,8 +2581,8 @@ lbl_800EF064: /* 800EF078 000EBFD8 4B F5 D5 2D */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 800EF07C 000EBFDC 7C 64 1B 78 */ mr r4, r3 /* 800EF080 000EBFE0 38 61 00 10 */ addi r3, r1, 0x10 -/* 800EF084 000EBFE4 4B FB 64 1D */ bl sub_800a54a0 -/* 800EF088 000EBFE8 4B FB 63 ED */ bl "CastTo<12CMetroidBeta>__10CPatternedFP7CEntity" +/* 800EF084 000EBFE4 4B FB 64 1D */ bl "__ct__30TPatternedCast<12CMetroidBeta>FP7CEntity" +/* 800EF088 000EBFE8 4B FB 63 ED */ bl "CastTo<12CMetroidBeta>__10CPatternedFRC30TPatternedCast<12CMetroidBeta>" /* 800EF08C 000EBFEC 28 03 00 00 */ cmplwi r3, 0 /* 800EF090 000EBFF0 41 82 00 0C */ beq lbl_800EF09C /* 800EF094 000EBFF4 48 0D 65 D5 */ bl RenderHitBallEffect__12CMetroidBetaCFv diff --git a/asm/MetroidPrime/Player/CPlayer.s b/asm/MetroidPrime/Player/CPlayer.s index 50935d1e..477d92c3 100644 --- a/asm/MetroidPrime/Player/CPlayer.s +++ b/asm/MetroidPrime/Player/CPlayer.s @@ -3868,8 +3868,8 @@ lbl_80012A20: /* 80012A34 0000F994 48 03 9B 71 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 80012A38 0000F998 7C 64 1B 78 */ mr r4, r3 /* 80012A3C 0000F99C 38 61 00 10 */ addi r3, r1, 0x10 -/* 80012A40 0000F9A0 48 09 2A 61 */ bl sub_800a54a0 -/* 80012A44 0000F9A4 48 09 2A 31 */ bl "CastTo<12CMetroidBeta>__10CPatternedFP7CEntity" +/* 80012A40 0000F9A0 48 09 2A 61 */ bl "__ct__30TPatternedCast<12CMetroidBeta>FP7CEntity" +/* 80012A44 0000F9A4 48 09 2A 31 */ bl "CastTo<12CMetroidBeta>__10CPatternedFRC30TPatternedCast<12CMetroidBeta>" /* 80012A48 0000F9A8 28 03 00 00 */ cmplwi r3, 0 /* 80012A4C 0000F9AC 41 82 00 0C */ beq lbl_80012A58 /* 80012A50 0000F9B0 38 60 00 01 */ li r3, 1 diff --git a/asm/MetroidPrime/Player/CPlayerGun.s b/asm/MetroidPrime/Player/CPlayerGun.s index d81429ae..3a6e5dd1 100644 --- a/asm/MetroidPrime/Player/CPlayerGun.s +++ b/asm/MetroidPrime/Player/CPlayerGun.s @@ -2449,8 +2449,8 @@ lbl_8003C340: /* 8003C354 000392B4 48 01 02 51 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8003C358 000392B8 7C 64 1B 78 */ mr r4, r3 /* 8003C35C 000392BC 38 61 00 14 */ addi r3, r1, 0x14 -/* 8003C360 000392C0 48 06 91 41 */ bl sub_800a54a0 -/* 8003C364 000392C4 48 06 91 11 */ bl "CastTo<12CMetroidBeta>__10CPatternedFP7CEntity" +/* 8003C360 000392C0 48 06 91 41 */ bl "__ct__30TPatternedCast<12CMetroidBeta>FP7CEntity" +/* 8003C364 000392C4 48 06 91 11 */ bl "CastTo<12CMetroidBeta>__10CPatternedFRC30TPatternedCast<12CMetroidBeta>" /* 8003C368 000392C8 28 03 00 00 */ cmplwi r3, 0 /* 8003C36C 000392CC 41 82 00 0C */ beq lbl_8003C378 /* 8003C370 000392D0 48 18 92 BD */ bl RenderHitGunEffect__12CMetroidBetaCFv @@ -2838,8 +2838,8 @@ lbl_8003C894: /* 8003C8FC 0003985C 48 00 FC A9 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8003C900 00039860 7C 64 1B 78 */ mr r4, r3 /* 8003C904 00039864 38 61 00 34 */ addi r3, r1, 0x34 -/* 8003C908 00039868 48 06 8B CD */ bl sub_800a54d4 -/* 8003C90C 0003986C 48 06 8B 9D */ bl "CastTo<8CMetroid>__10CPatternedFP7CEntity" +/* 8003C908 00039868 48 06 8B CD */ bl "__ct__25TPatternedCast<8CMetroid>FP7CEntity" +/* 8003C90C 0003986C 48 06 8B 9D */ bl "CastTo<8CMetroid>__10CPatternedFRC25TPatternedCast<8CMetroid>" /* 8003C910 00039870 7C 03 00 D0 */ neg r0, r3 /* 8003C914 00039874 7C 00 1B 78 */ or r0, r0, r3 /* 8003C918 00039878 54 19 0F FE */ srwi r25, r0, 0x1f diff --git a/asm/MetroidPrime/Player/CPlayerOrbit.s b/asm/MetroidPrime/Player/CPlayerOrbit.s index f7493e77..1c8b765e 100644 --- a/asm/MetroidPrime/Player/CPlayerOrbit.s +++ b/asm/MetroidPrime/Player/CPlayerOrbit.s @@ -2501,8 +2501,8 @@ SetOrbitTargetId__7CPlayerF9TUniqueIdR13CStateManager: /* 8017B670 001785D0 4B ED 0F 35 */ bl GetObjectById__13CStateManagerCF9TUniqueId /* 8017B674 001785D4 7C 64 1B 78 */ mr r4, r3 /* 8017B678 001785D8 38 61 00 18 */ addi r3, r1, 0x18 -/* 8017B67C 001785DC 4B F2 9D 21 */ bl sub_800a539c -/* 8017B680 001785E0 4B F2 9C F1 */ bl "CastTo<22CThardusRockProjectile>__10CPatternedFP7CEntity" +/* 8017B67C 001785DC 4B F2 9D 21 */ bl "__ct__40TPatternedCast<22CThardusRockProjectile>FP7CEntity" +/* 8017B680 001785E0 4B F2 9C F1 */ bl "CastTo<22CThardusRockProjectile>__10CPatternedFRC40TPatternedCast<22CThardusRockProjectile>" /* 8017B684 001785E4 A0 1E 00 00 */ lhz r0, 0(r30) /* 8017B688 001785E8 7C 7C 1B 78 */ mr r28, r3 /* 8017B68C 001785EC 7F E3 FB 78 */ mr r3, r31 diff --git a/asm/MetroidPrime/Weapons/CNewFlameThrower.s b/asm/MetroidPrime/Weapons/CNewFlameThrower.s index 7e331022..9eec7a76 100644 --- a/asm/MetroidPrime/Weapons/CNewFlameThrower.s +++ b/asm/MetroidPrime/Weapons/CNewFlameThrower.s @@ -436,8 +436,8 @@ lbl_802614D4: /* 80261500 0025E460 40 82 00 1C */ bne lbl_8026151C /* 80261504 0025E464 7F C4 F3 78 */ mr r4, r30 /* 80261508 0025E468 38 61 00 08 */ addi r3, r1, 8 -/* 8026150C 0025E46C 4B E4 3E F9 */ bl sub_800a5404 -/* 80261510 0025E470 4B E4 3E C9 */ bl "CastTo<11CPuddleToad>__10CPatternedFP7CEntity" +/* 8026150C 0025E46C 4B E4 3E F9 */ bl "__ct__29TPatternedCast<11CPuddleToad>FP7CEntity" +/* 80261510 0025E470 4B E4 3E C9 */ bl "CastTo<11CPuddleToad>__10CPatternedFRC29TPatternedCast<11CPuddleToad>" /* 80261514 0025E474 28 03 00 00 */ cmplwi r3, 0 /* 80261518 0025E478 41 82 00 0C */ beq lbl_80261524 lbl_8026151C: diff --git a/configure.py b/configure.py index ab813341..445b4dc0 100755 --- a/configure.py +++ b/configure.py @@ -105,7 +105,7 @@ LIBS = [ ["MetroidPrime/ScriptObjects/CScriptCounter", True], "MetroidPrime/CMapWorld", "MetroidPrime/Enemies/CAi", - "MetroidPrime/Enemies/PatternedCastTo", + ["MetroidPrime/Enemies/PatternedCastTo", True], ["MetroidPrime/TCastTo", True], "MetroidPrime/ScriptObjects/CScriptSound", ["MetroidPrime/ScriptObjects/CScriptPlatform", False], diff --git a/include/MetroidPrime/Enemies/CEnergyBall.hpp b/include/MetroidPrime/Enemies/CEnergyBall.hpp new file mode 100644 index 00000000..72321137 --- /dev/null +++ b/include/MetroidPrime/Enemies/CEnergyBall.hpp @@ -0,0 +1,10 @@ +#ifndef _CENERGYBALL +#define _CENERGYBALL + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CEnergyBall : public CPatterned { + +}; + +#endif // _CENERGYBALL diff --git a/include/MetroidPrime/Enemies/CFlickerBat.hpp b/include/MetroidPrime/Enemies/CFlickerBat.hpp new file mode 100644 index 00000000..55e7ebd9 --- /dev/null +++ b/include/MetroidPrime/Enemies/CFlickerBat.hpp @@ -0,0 +1,8 @@ +#ifndef _CFLICKERBAT +#define _CFLICKERBAT + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CFlickerBat : public CPatterned {}; + +#endif // _CFLICKERBAT diff --git a/include/MetroidPrime/Enemies/CIceSheegoth.hpp b/include/MetroidPrime/Enemies/CIceSheegoth.hpp new file mode 100644 index 00000000..34356551 --- /dev/null +++ b/include/MetroidPrime/Enemies/CIceSheegoth.hpp @@ -0,0 +1,8 @@ +#ifndef _CICESHEEGOTH +#define _CICESHEEGOTH + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CIceSheegoth : public CPatterned {}; + +#endif // _CICESHEEGOTH diff --git a/include/MetroidPrime/Enemies/CJellyZap.hpp b/include/MetroidPrime/Enemies/CJellyZap.hpp new file mode 100644 index 00000000..47ba7898 --- /dev/null +++ b/include/MetroidPrime/Enemies/CJellyZap.hpp @@ -0,0 +1,10 @@ +#ifndef _CJELLYZAP +#define _CJELLYZAP + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CJellyZap : public CPatterned { + +}; + +#endif // _CJELLYZAP diff --git a/include/MetroidPrime/Enemies/CMetroid.hpp b/include/MetroidPrime/Enemies/CMetroid.hpp new file mode 100644 index 00000000..5dff996e --- /dev/null +++ b/include/MetroidPrime/Enemies/CMetroid.hpp @@ -0,0 +1,10 @@ +#ifndef _CMETROID +#define _CMETROID + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CMetroid : public CPatterned { + +}; + +#endif // _CMETROID diff --git a/include/MetroidPrime/Enemies/CMetroidBeta.hpp b/include/MetroidPrime/Enemies/CMetroidBeta.hpp new file mode 100644 index 00000000..fcd310ad --- /dev/null +++ b/include/MetroidPrime/Enemies/CMetroidBeta.hpp @@ -0,0 +1,10 @@ +#ifndef _CMETROIDBETA +#define _CMETROIDBETA + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CMetroidBeta : public CPatterned { + +}; + +#endif // _CMETROIDBETA diff --git a/include/MetroidPrime/Enemies/CMetroidPrimeExo.hpp b/include/MetroidPrime/Enemies/CMetroidPrimeExo.hpp new file mode 100644 index 00000000..570c4b34 --- /dev/null +++ b/include/MetroidPrime/Enemies/CMetroidPrimeExo.hpp @@ -0,0 +1,10 @@ +#ifndef _CMETROIDPRIMEEXO +#define _CMETROIDPRIMEEXO + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CMetroidPrimeExo : public CPatterned { + +}; + +#endif // _CMETROIDPRIMEEXO diff --git a/include/MetroidPrime/Enemies/CParasite.hpp b/include/MetroidPrime/Enemies/CParasite.hpp new file mode 100644 index 00000000..c3fea0a1 --- /dev/null +++ b/include/MetroidPrime/Enemies/CParasite.hpp @@ -0,0 +1,10 @@ +#ifndef _CPARASITE +#define _CPARASITE + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CParasite : public CPatterned { + +}; + +#endif // _CPARASITE diff --git a/include/MetroidPrime/Enemies/CPatterned.hpp b/include/MetroidPrime/Enemies/CPatterned.hpp index 02845ad8..056f8abd 100644 --- a/include/MetroidPrime/Enemies/CPatterned.hpp +++ b/include/MetroidPrime/Enemies/CPatterned.hpp @@ -3,13 +3,70 @@ #include "MetroidPrime/Enemies/CAi.hpp" +template +struct TPatternedCast { + CEntity* ent; + TPatternedCast(CEntity* ent); +}; + class CPatterned : public CAi { + public: + enum ECharacter { + kC_AtomicAlpha = 0, + kC_AtomicBeta = 1, + kC_Babygoth = 2, + kC_Beetle = 3, + kC_BloodFlower = 4, + kC_Burrower = 5, + kC_ChozoGhost = 6, + kC_Drone = 7, + kC_ElitePirate = 8, + kC_EyeBall = 9, + kC_FireFlea = 10, + kC_Flaahgra = 11, + kC_FlaahgraTentacle = 12, + kC_FlickerBat = 13, + kC_FlyingPirate = 14, + kC_IceSheegoth = 15, + kC_JellyZap = 16, + kC_Magdolite = 17, + kC_Metaree = 18, + kC_Metroid = 19, + kC_MetroidBeta = 20, + kC_MetroidPrimeExo = 21, + kC_MetroidPrimeEssence = 22, + kC_NewIntroBoss = 23, + kC_Parasite = 24, + kC_PuddleSpore = 27, + kC_PuddleToad = 28, + kC_Puffer = 29, + kC_Ridley = 30, + kC_Ripper = 31, + kC_Seedling = 32, + kC_SpacePirate = 34, + kC_SpankWeed = 35, + kC_PhazonHealingNodule = 35, + kC_Thardus = 36, + kC_ThardusRockProjectile = 37, + kC_Tryclops = 38, + kC_WarWasp = 39, + kC_EnergyBall = 40 + }; ~CPatterned(); void Accept(IVisitor& visitor); void Death(CStateManager& mgr, const CVector3f& direction, EScriptObjectState state) {} void KnockBack(const CVector3f&, CStateManager&, const CDamageInfo& info, EKnockBackType type, - bool inDeferred, float magnitude) {}; + bool inDeferred, float magnitude){}; + + ECharacter GetCharacterType() const { return x34c_characterType; } + + template < class T > + static T* CastTo(const TPatternedCast& ent); + +private: + char data[0xf4]; + ECharacter x34c_characterType; }; #endif // _CPATTERNED diff --git a/include/MetroidPrime/Enemies/CPuddleToad.hpp b/include/MetroidPrime/Enemies/CPuddleToad.hpp new file mode 100644 index 00000000..0371ac99 --- /dev/null +++ b/include/MetroidPrime/Enemies/CPuddleToad.hpp @@ -0,0 +1,11 @@ +#ifndef _CPUDDLETOAD +#define _CPUDDLETOAD + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CPuddleToad : public CPatterned { + +}; + + +#endif // _CPUDDLETOAD diff --git a/include/MetroidPrime/Enemies/CSpacePirate.hpp b/include/MetroidPrime/Enemies/CSpacePirate.hpp new file mode 100644 index 00000000..2bf1b57e --- /dev/null +++ b/include/MetroidPrime/Enemies/CSpacePirate.hpp @@ -0,0 +1,11 @@ +#ifndef _CSPACEPIRATE +#define _CSPACEPIRATE + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CSpacePirate : public CPatterned { + +}; + + +#endif // _CSPACEPIRATE diff --git a/include/MetroidPrime/Enemies/CStateMachine.hpp b/include/MetroidPrime/Enemies/CStateMachine.hpp index a2bff2a9..5748bd6a 100644 --- a/include/MetroidPrime/Enemies/CStateMachine.hpp +++ b/include/MetroidPrime/Enemies/CStateMachine.hpp @@ -33,16 +33,16 @@ public: void Setup(CAiTriggerFunc func, bool lnot, float arg, CAiTrigger* andTrig) { x0_func = func; - x18_lNot = lnot; xc_arg = arg; x10_andTrigger = andTrig; + x18_lNot = lnot; } void Setup(CAiTriggerFunc func, bool lnot, float arg, CAiState* state) { x0_func = func; - x18_lNot = lnot; xc_arg = arg; x14_state = state; + x18_lNot = lnot; } private: diff --git a/include/MetroidPrime/Enemies/CThardusRockProjectile.hpp b/include/MetroidPrime/Enemies/CThardusRockProjectile.hpp new file mode 100644 index 00000000..743397bd --- /dev/null +++ b/include/MetroidPrime/Enemies/CThardusRockProjectile.hpp @@ -0,0 +1,11 @@ +#ifndef _CTHARDUSROCKPROJECTILE +#define _CTHARDUSROCKPROJECTILE + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CThardusRockProjectile : public CPatterned { + +}; + + +#endif // _CTHARDUSROCKPROJECTILE diff --git a/include/MetroidPrime/Enemies/CWarWasp.hpp b/include/MetroidPrime/Enemies/CWarWasp.hpp new file mode 100644 index 00000000..d840a4c2 --- /dev/null +++ b/include/MetroidPrime/Enemies/CWarWasp.hpp @@ -0,0 +1,10 @@ +#ifndef _CWARWASP +#define _CWARWASP + +#include "MetroidPrime/Enemies/CPatterned.hpp" + +class CWarWasp : public CPatterned { + +}; + +#endif // _CWARWASP diff --git a/obj_files.mk b/obj_files.mk index a9a21250..7ad5c8ad 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -5,7 +5,7 @@ METROIDPRIME :=\ $(BUILD_DIR)/asm/MetroidPrime/main.o\ $(BUILD_DIR)/asm/MetroidPrime/IRenderer.o\ $(BUILD_DIR)/asm/MetroidPrime/Cameras/CCameraManager.o\ - $(BUILD_DIR)/asm/MetroidPrime/CControlMapper.o\ + $(BUILD_DIR)/src/MetroidPrime/CControlMapper.o\ $(BUILD_DIR)/asm/MetroidPrime/Cameras/CFirstPersonCamera.o\ $(BUILD_DIR)/src/MetroidPrime/CObjectList.o\ $(BUILD_DIR)/asm/MetroidPrime/Player/CPlayer.o\ @@ -70,7 +70,7 @@ METROIDPRIME :=\ $(BUILD_DIR)/src/MetroidPrime/ScriptObjects/CScriptCounter.o\ $(BUILD_DIR)/asm/MetroidPrime/CMapWorld.o\ $(BUILD_DIR)/asm/MetroidPrime/Enemies/CAi.o\ - $(BUILD_DIR)/asm/MetroidPrime/Enemies/PatternedCastTo.o\ + $(BUILD_DIR)/src/MetroidPrime/Enemies/PatternedCastTo.o\ $(BUILD_DIR)/src/MetroidPrime/TCastTo.o\ $(BUILD_DIR)/asm/MetroidPrime/ScriptObjects/CScriptSound.o\ $(BUILD_DIR)/asm/MetroidPrime/ScriptObjects/CScriptPlatform.o\ diff --git a/src/MetroidPrime/Enemies/PatternedCastTo.cpp b/src/MetroidPrime/Enemies/PatternedCastTo.cpp new file mode 100644 index 00000000..75ae9d3f --- /dev/null +++ b/src/MetroidPrime/Enemies/PatternedCastTo.cpp @@ -0,0 +1,111 @@ +#include "MetroidPrime/Enemies/CPatterned.hpp" + +#include "MetroidPrime/Enemies/CEnergyBall.hpp" +#include "MetroidPrime/Enemies/CFlickerBat.hpp" +#include "MetroidPrime/Enemies/CIceSheegoth.hpp" +#include "MetroidPrime/Enemies/CJellyZap.hpp" +#include "MetroidPrime/Enemies/CMetroid.hpp" +#include "MetroidPrime/Enemies/CMetroidBeta.hpp" +#include "MetroidPrime/Enemies/CMetroidPrimeExo.hpp" +#include "MetroidPrime/Enemies/CParasite.hpp" +#include "MetroidPrime/Enemies/CPuddleToad.hpp" +#include "MetroidPrime/Enemies/CSpacePirate.hpp" +#include "MetroidPrime/Enemies/CThardusRockProjectile.hpp" +#include "MetroidPrime/Enemies/CWarWasp.hpp" + +#include "MetroidPrime/TCastTo.hpp" + +class CEnergyBall; +CPatterned* CastPatternedCharacter(CPatterned::ECharacter character, CEntity* entity) { + CPatterned* pat = TCastToPtr< CPatterned >(entity); + + if (pat && pat->GetCharacterType() == character) { + return pat; + } + + return nullptr; +} + +template <> +TPatternedCast< CEnergyBall >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CEnergyBall* CPatterned::CastTo< CEnergyBall >(const TPatternedCast< CEnergyBall >& ent) { + return static_cast< CEnergyBall* >(CastPatternedCharacter(CPatterned::kC_EnergyBall, ent.ent)); +} + +template <> +TPatternedCast< CFlickerBat >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CFlickerBat* CPatterned::CastTo< CFlickerBat >(const TPatternedCast< CFlickerBat >& ent) { + return static_cast< CFlickerBat* >(CastPatternedCharacter(CPatterned::kC_FlickerBat, ent.ent)); +} + +template <> +TPatternedCast< CIceSheegoth >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CIceSheegoth* CPatterned::CastTo< CIceSheegoth >(const TPatternedCast< CIceSheegoth >& ent) { + return static_cast< CIceSheegoth* >(CastPatternedCharacter(CPatterned::kC_IceSheegoth, ent.ent)); +} + +template <> +TPatternedCast< CJellyZap >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CJellyZap* CPatterned::CastTo< CJellyZap >(const TPatternedCast< CJellyZap >& ent) { + return static_cast< CJellyZap* >(CastPatternedCharacter(CPatterned::kC_JellyZap, ent.ent)); +} + +template <> +TPatternedCast< CMetroid >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CMetroid* CPatterned::CastTo< CMetroid >(const TPatternedCast< CMetroid >& ent) { + return static_cast< CMetroid* >(CastPatternedCharacter(CPatterned::kC_Metroid, ent.ent)); +} + +template <> +TPatternedCast< CMetroidBeta >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CMetroidBeta* CPatterned::CastTo< CMetroidBeta >(const TPatternedCast< CMetroidBeta >& ent) { + return static_cast< CMetroidBeta* >(CastPatternedCharacter(CPatterned::kC_MetroidBeta, ent.ent)); +} + +template <> +TPatternedCast< CMetroidPrimeExo >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CMetroidPrimeExo* CPatterned::CastTo< CMetroidPrimeExo >(const TPatternedCast< CMetroidPrimeExo >& ent) { + return static_cast< CMetroidPrimeExo* >(CastPatternedCharacter(CPatterned::kC_MetroidPrimeExo, ent.ent)); +} + +template <> +TPatternedCast< CParasite >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CParasite* CPatterned::CastTo< CParasite >(const TPatternedCast< CParasite >& ent) { + return static_cast< CParasite* >(CastPatternedCharacter(CPatterned::kC_Parasite, ent.ent)); +} + +template <> +TPatternedCast< CPuddleToad >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CPuddleToad* CPatterned::CastTo< CPuddleToad >(const TPatternedCast< CPuddleToad >& ent) { + return static_cast< CPuddleToad* >(CastPatternedCharacter(CPatterned::kC_PuddleToad, ent.ent)); +} + +template <> +TPatternedCast< CSpacePirate >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CSpacePirate* CPatterned::CastTo< CSpacePirate >(const TPatternedCast< CSpacePirate >& ent) { + return static_cast< CSpacePirate* >(CastPatternedCharacter(CPatterned::kC_SpacePirate, ent.ent)); +} + +template <> +TPatternedCast< CThardusRockProjectile >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CThardusRockProjectile* CPatterned::CastTo< CThardusRockProjectile >(const TPatternedCast< CThardusRockProjectile >& ent) { + return static_cast< CThardusRockProjectile* >(CastPatternedCharacter(CPatterned::kC_ThardusRockProjectile, ent.ent)); +} + +template <> +TPatternedCast< CWarWasp >::TPatternedCast(CEntity* ent) : ent(ent) {} +template <> +CWarWasp* CPatterned::CastTo< CWarWasp >(const TPatternedCast< CWarWasp >& ent) { + return static_cast< CWarWasp* >(CastPatternedCharacter(CPatterned::kC_WarWasp, ent.ent)); +}