From e4c947d2adcf7a317840d613bd5b40f67a7a20b9 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Wed, 11 Oct 2023 19:27:57 -0400 Subject: [PATCH] Link CPowerBeam Former-commit-id: 2f08ee8e2b967aff6d0057ae0d010ee7982c5ba1 --- config/GM8E01_00/symbols.txt | 60 ++++----------------- configure.py | 2 +- include/MetroidPrime/Weapons/CGunWeapon.hpp | 2 + src/MetroidPrime/Weapons/CPowerBeam.cpp | 10 ++-- 4 files changed, 18 insertions(+), 56 deletions(-) diff --git a/config/GM8E01_00/symbols.txt b/config/GM8E01_00/symbols.txt index 75ee7223..705dc963 100644 --- a/config/GM8E01_00/symbols.txt +++ b/config/GM8E01_00/symbols.txt @@ -16986,7 +16986,7 @@ lbl_803CE4A5 = .rodata:0x803CE4A5; // type:object size:0xD data:string lbl_803CE4B2 = .rodata:0x803CE4B2; // type:object size:0x76 lbl_803CE528 = .rodata:0x803CE528; // type:object size:0x8 @stringBase0 = .rodata:0x803CE530; // type:object size:0x13 scope:local data:string_table -lbl_803CE548 = .rodata:0x803CE548; // type:object size:0x20 +@stringBase0 = .rodata:0x803CE548; // type:object size:0x1C scope:local data:string_table lbl_803CE568 = .rodata:0x803CE568; // type:object size:0x30 lbl_803CE598 = .rodata:0x803CE598; // type:object size:0x28 lbl_803CE5C0 = .rodata:0x803CE5C0; // type:object size:0x8 @@ -17318,52 +17318,14 @@ lbl_803D1678 = .rodata:0x803D1678; // type:object size:0xD data:string lbl_803D1685 = .rodata:0x803D1685; // type:object size:0x9 data:string lbl_803D168E = .rodata:0x803D168E; // type:object size:0xB data:string lbl_803D1699 = .rodata:0x803D1699; // type:object size:0xB7 -skMuzzleNames = .rodata:0x803D1750; // type:object size:0x28 scope:global -skFrozenNames = .rodata:0x803D1778; // type:object size:0x28 scope:global -skBeamXferNames = .rodata:0x803D17A0; // type:object size:0x14 scope:global -skAnimDependencyNames = .rodata:0x803D17B4; // type:object size:0x14 scope:global -skDependencyNames = .rodata:0x803D17C8; // type:object size:0x14 scope:global -skSuitArmNames = .rodata:0x803D17DC; // type:object size:0x20 scope:global data:4byte -skAnimTypeList = .rodata:0x803D17FC; // type:object size:0x2C scope:global -lbl_803D1828 = .rodata:0x803D1828; // type:object size:0xC data:string -lbl_803D1834 = .rodata:0x803D1834; // type:object size:0xC data:string -lbl_803D1840 = .rodata:0x803D1840; // type:object size:0xA data:string -lbl_803D184A = .rodata:0x803D184A; // type:object size:0xA data:string -lbl_803D1854 = .rodata:0x803D1854; // type:object size:0xB data:string -lbl_803D185F = .rodata:0x803D185F; // type:object size:0xD data:string -lbl_803D186C = .rodata:0x803D186C; // type:object size:0xD data:string -lbl_803D1879 = .rodata:0x803D1879; // type:object size:0xD data:string -lbl_803D1886 = .rodata:0x803D1886; // type:object size:0xC data:string -lbl_803D1892 = .rodata:0x803D1892; // type:object size:0xC data:string -lbl_803D189E = .rodata:0x803D189E; // type:object size:0x9 data:string -lbl_803D18A7 = .rodata:0x803D18A7; // type:object size:0xA data:string -lbl_803D18B1 = .rodata:0x803D18B1; // type:object size:0xB data:string -lbl_803D18BC = .rodata:0x803D18BC; // type:object size:0xD data:string -lbl_803D18C9 = .rodata:0x803D18C9; // type:object size:0xA data:string -lbl_803D18D3 = .rodata:0x803D18D3; // type:object size:0x8 data:string -lbl_803D18DB = .rodata:0x803D18DB; // type:object size:0x9 data:string -lbl_803D18E4 = .rodata:0x803D18E4; // type:object size:0xB data:string -lbl_803D18EF = .rodata:0x803D18EF; // type:object size:0xB data:string -lbl_803D18FA = .rodata:0x803D18FA; // type:object size:0x10 data:string -lbl_803D190A = .rodata:0x803D190A; // type:object size:0xE data:string -lbl_803D1918 = .rodata:0x803D1918; // type:object size:0xF data:string -lbl_803D1927 = .rodata:0x803D1927; // type:object size:0x11 data:string -lbl_803D1938 = .rodata:0x803D1938; // type:object size:0x11 data:string -lbl_803D1949 = .rodata:0x803D1949; // type:object size:0xB data:string -lbl_803D1954 = .rodata:0x803D1954; // type:object size:0x9 data:string -lbl_803D195D = .rodata:0x803D195D; // type:object size:0xA data:string -lbl_803D1967 = .rodata:0x803D1967; // type:object size:0xC data:string -lbl_803D1973 = .rodata:0x803D1973; // type:object size:0xC data:string -lbl_803D197F = .rodata:0x803D197F; // type:object size:0x9 data:string -lbl_803D1988 = .rodata:0x803D1988; // type:object size:0xB data:string -lbl_803D1993 = .rodata:0x803D1993; // type:object size:0x9 data:string -lbl_803D199C = .rodata:0x803D199C; // type:object size:0xA data:string -lbl_803D19A6 = .rodata:0x803D19A6; // type:object size:0xA data:string -lbl_803D19B0 = .rodata:0x803D19B0; // type:object size:0xB data:string -lbl_803D19BB = .rodata:0x803D19BB; // type:object size:0xB data:string -lbl_803D19C6 = .rodata:0x803D19C6; // type:object size:0xB data:string -lbl_803D19D1 = .rodata:0x803D19D1; // type:object size:0x6 data:string -lbl_803D19D7 = .rodata:0x803D19D7; // type:object size:0x19 +skMuzzleNames__10CGunWeapon = .rodata:0x803D1750; // type:object size:0x28 scope:global +skFrozenNames__10CGunWeapon = .rodata:0x803D1778; // type:object size:0x28 scope:global +skBeamXferNames__10CGunWeapon = .rodata:0x803D17A0; // type:object size:0x14 scope:global +skAnimDependencyNames__10CGunWeapon = .rodata:0x803D17B4; // type:object size:0x14 scope:global +skDependencyNames__10CGunWeapon = .rodata:0x803D17C8; // type:object size:0x14 scope:global +skSuitArmNames__10CGunWeapon = .rodata:0x803D17DC; // type:object size:0x20 scope:global data:4byte +skAnimTypeList__10CGunWeapon = .rodata:0x803D17FC; // type:object size:0x2C scope:global +@stringBase0 = .rodata:0x803D1828; // type:object size:0x1C7 scope:local data:string_table lbl_803D19F0 = .rodata:0x803D19F0; // type:object size:0x8 lbl_803D19F8 = .rodata:0x803D19F8; // type:object size:0x10 lbl_803D1A08 = .rodata:0x803D1A08; // type:object size:0x18 data:4byte @@ -24806,8 +24768,8 @@ lbl_805AC6D8 = .sdata2:0x805AC6D8; // type:object size:0x4 data:float lbl_805AC6DC = .sdata2:0x805AC6DC; // type:object size:0x4 data:float lbl_805AC6E0 = .sdata2:0x805AC6E0; // type:object size:0x4 data:float lbl_805AC6E4 = .sdata2:0x805AC6E4; // type:object size:0x4 data:float -lbl_805AC6E8 = .sdata2:0x805AC6E8; // type:object size:0x4 data:4byte -lbl_805AC6EC = .sdata2:0x805AC6EC; // type:object size:0x4 data:4byte +skMuzzleLocator__10CGunWeapon = .sdata2:0x805AC6E8; // type:object size:0x4 data:4byte +skElbowLocator__10CGunWeapon = .sdata2:0x805AC6EC; // type:object size:0x4 data:4byte skShootAnim__10CGunWeapon = .sdata2:0x805AC6F0; // type:object size:0x8 scope:global lbl_805AC6F8 = .sdata2:0x805AC6F8; // type:object size:0x4 data:float lbl_805AC6FC = .sdata2:0x805AC6FC; // type:object size:0x4 data:float diff --git a/configure.py b/configure.py index 1062ec3f..6881bb1a 100755 --- a/configure.py +++ b/configure.py @@ -352,7 +352,7 @@ config.libs = [ Object(NonMatching, "MetroidPrime/CSamusDoll.cpp"), Object(NonMatching, "MetroidPrime/Factories/CStateMachineFactory.cpp"), Object(Matching, "MetroidPrime/Weapons/CPlasmaBeam.cpp"), - Object(NonMatching, "MetroidPrime/Weapons/CPowerBeam.cpp"), + Object(Matching, "MetroidPrime/Weapons/CPowerBeam.cpp"), Object(NonMatching, "MetroidPrime/Weapons/CWaveBeam.cpp"), Object(NonMatching, "MetroidPrime/Weapons/CIceBeam.cpp"), Object(NonMatching, "MetroidPrime/CScriptMailbox.cpp"), diff --git a/include/MetroidPrime/Weapons/CGunWeapon.hpp b/include/MetroidPrime/Weapons/CGunWeapon.hpp index bd274818..cb21cdfc 100644 --- a/include/MetroidPrime/Weapons/CGunWeapon.hpp +++ b/include/MetroidPrime/Weapons/CGunWeapon.hpp @@ -164,6 +164,8 @@ protected: bool x218_28_suitArmLocked : 1; bool x218_29_drawHologram : 1; + static const char* skMuzzleLocator; + static const char* skElbowLocator; static const int skShootAnim[2]; void AllocResPools(CPlayerState::EBeamId beam); diff --git a/src/MetroidPrime/Weapons/CPowerBeam.cpp b/src/MetroidPrime/Weapons/CPowerBeam.cpp index b5dcc9dc..3fcbad52 100644 --- a/src/MetroidPrime/Weapons/CPowerBeam.cpp +++ b/src/MetroidPrime/Weapons/CPowerBeam.cpp @@ -48,8 +48,6 @@ void CPowerBeam::PostRenderGunFx(const CStateManager& mgr, const CTransform4f& x CGunWeapon::PostRenderGunFx(mgr, xf); } -static const char* kTransformName = "LBEAM"; - void CPowerBeam::UpdateGunFx(bool shotSmoke, float dt, const CStateManager& mgr, const CTransform4f& xf) { switch (x240_smokeState) { @@ -72,7 +70,7 @@ void CPowerBeam::UpdateGunFx(bool shotSmoke, float dt, const CStateManager& mgr, // [[fallthrough]]; case kSS_Done: if (!x234_shotSmokeGen.null()) { - CTransform4f locator = x10_solidModelData->GetScaledLocatorTransform(rstl::string_l(kTransformName)); + CTransform4f locator = x10_solidModelData->GetScaledLocatorTransform(rstl::string_l(CGunWeapon::skMuzzleLocator)); x234_shotSmokeGen->SetGlobalTranslation(locator.GetTranslation()); x234_shotSmokeGen->Update(dt); if (x240_smokeState == kSS_Done && x234_shotSmokeGen->GetSystemCount() == 0) @@ -100,7 +98,7 @@ void CPowerBeam::Update(float dt, CStateManager& mgr) { if (CGunWeapon::IsLoaded() && !x244_25_loaded) { x244_25_loaded = x21c_shotSmoke.IsLoaded() && x228_power2nd1.IsLoaded(); if (x244_25_loaded) { - x234_shotSmokeGen = new CElementGen (x21c_shotSmoke); + x234_shotSmokeGen = NEW CElementGen (x21c_shotSmoke); x234_shotSmokeGen->SetParticleEmission(false); } } @@ -109,7 +107,7 @@ void CPowerBeam::Update(float dt, CStateManager& mgr) { void CPowerBeam::Fire(bool underwater, float dt, CPlayerState::EChargeStage chargeState, const CTransform4f& xf, CStateManager& mgr, TUniqueId homingTarget, float chargeFactor1, float chargeFactor2) { - static ushort skSoundId[] = { + static const ushort skSoundId[] = { SFXwpn_fire_power_normal, SFXwpn_fire_power_charged, }; @@ -145,7 +143,7 @@ void CPowerBeam::EnableSecondaryFx(ESecondaryFxType type) { x1cc_enabledSecondaryEffect = kSFT_None; break; case kSFT_Charge: - x238_power2ndGen = new CElementGen(x228_power2nd1); + x238_power2ndGen = NEW CElementGen(x228_power2nd1); x238_power2ndGen->SetGlobalScale(x4_scale); x1cc_enabledSecondaryEffect = type; break;