Skip to content

Commit 6c397ca

Browse files
committed
Clean-up
1 parent 81dde47 commit 6c397ca

8 files changed

Lines changed: 88 additions & 72 deletions

File tree

MarathonRecomp/api/Marathon.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include "Sonicteam/HUDCALLBACK.h"
3131
#include "Sonicteam/HUDLoading.h"
3232
#include "Sonicteam/ImageFilter.h"
33+
#include "Sonicteam/Message/MsgSuckPlayer.h"
3334
#include "Sonicteam/MovieObject.h"
3435
#include "Sonicteam/MovieObjectWmv.h"
3536
#include "Sonicteam/MovieTask.h"
@@ -86,6 +87,7 @@
8687
#include "Sonicteam/SoX/Math/Matrix.h"
8788
#include "Sonicteam/SoX/Math/Quaternion.h"
8889
#include "Sonicteam/SoX/Math/Vector.h"
90+
#include "Sonicteam/SoX/Message.h"
8991
#include "Sonicteam/SoX/MessageReceiver.h"
9092
#include "Sonicteam/SoX/Object.h"
9193
#include "Sonicteam/SoX/Physics/Entity.h"
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/SoX/Math/Vector.h>
5+
#include <Sonicteam/SoX/Message.h>
6+
7+
namespace Sonicteam::Message
8+
{
9+
struct MsgSuckPlayer : SoX::Message<0x11034A>
10+
{
11+
Sonicteam::SoX::Math::Vector Point;
12+
};
13+
}
Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,15 @@
11
#pragma once
22

3-
#include <Marathon.h>
4-
#include <Sonicteam/Player/State/Machine2.h>
3+
#include <Marathon.inl>
54
#include <boost/smart_ptr/shared_ptr.h>
5+
#include <Sonicteam/Player/State/Machine2.h>
66
#include <Sonicteam/Player/IPlugIn.h>
7-
#include <stdx/vector.h>
8-
#include <Sonicteam/SoX/RefCountObject.h>
9-
#include <Sonicteam/SoX/RefSharedPointer.h>
107
#include <Sonicteam/Player/RootFrame.h>
11-
#include <Sonicteam/SoX/Math/Vector.h>
8+
#include <Sonicteam/SoX/RefSharedPointer.h>
9+
#include <stdx/vector.h>
1210

1311
namespace Sonicteam::Player
1412
{
15-
template <const uint32_t ID>
16-
struct ObjectMessage_Base:Sonicteam::SoX::Message
17-
{
18-
be<uint32_t> m_ID = ID;
19-
static uint32_t GetID()
20-
{
21-
return ID;
22-
}
23-
};
24-
25-
struct ObjectMessage_SuckPlayerToPoint:ObjectMessage_Base<0x11034A>
26-
{
27-
Sonicteam::SoX::Math::Vector m_Point;
28-
};
29-
3013
class Object : public Actor
3114
{
3215
public:
@@ -50,12 +33,22 @@ namespace Sonicteam::Player
5033
stdx::vector<boost::shared_ptr<IPlugIn>> m_vspPlayerPlugins;
5134
MARATHON_INSERT_PADDING(0x1F4);
5235

53-
template <typename T>
54-
inline T* GetGauge();
36+
template <typename T = IGauge>
37+
T* GetGauge()
38+
{
39+
return (T*)m_spGauge.get();
40+
}
5541

5642
template <typename T = IPlugIn>
57-
inline T* GetPlugin(const char* pluginName);
43+
inline T* GetPlugin(const char* pluginName)
44+
{
45+
for (auto& spPlugin : m_vspPlayerPlugins)
46+
{
47+
if (spPlugin->m_Name == pluginName)
48+
return static_cast<T*>(spPlugin.get());
49+
}
50+
51+
return nullptr;
52+
}
5853
};
5954
}
60-
61-
#include <Sonicteam/Player/Object.inl>

MarathonRecomp/api/Sonicteam/Player/Object.inl

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
5+
namespace Sonicteam::SoX
6+
{
7+
struct IMessage
8+
{
9+
be<uint32_t> ID{};
10+
11+
IMessage() {}
12+
IMessage(const uint32_t id) : ID(id) {}
13+
};
14+
15+
template <const uint32_t id>
16+
struct Message : IMessage
17+
{
18+
Message()
19+
{
20+
ID = id;
21+
}
22+
23+
static uint32_t GetID()
24+
{
25+
return id;
26+
}
27+
};
28+
}

MarathonRecomp/api/Sonicteam/SoX/MessageReceiver.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
#pragma once
22

3+
#include <Marathon.inl>
4+
#include <Sonicteam/SoX/Message.h>
5+
36
namespace Sonicteam::SoX
47
{
5-
struct Message
6-
{
7-
8-
};
9-
108
class MessageReceiver
119
{
1210
public:
@@ -18,7 +16,7 @@ namespace Sonicteam::SoX
1816

1917
xpointer<Vftable> m_pVftable;
2018

21-
bool OnMessageRecieved(Message* message)
19+
bool OnMessageRecieved(IMessage* message)
2220
{
2321
return GuestToHostFunction<uint32_t>(m_pVftable->OnMessageRecieved, this, message);
2422
}

MarathonRecomp/patches/fps_patches.cpp

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -87,26 +87,29 @@ void ObjEspSwing_DecayRateFix(PPCRegister& f0, PPCRegister& f13, PPCRegister& de
8787
f0.f64 = float(f13.f64 * pow(pow(f0.f64, 60.0), deltaTime.f64));
8888
}
8989

90-
struct ObjectMessage_SuckPlayerToPointEX :public Sonicteam::Player::ObjectMessage_SuckPlayerToPoint
90+
struct MsgSuckPlayerEx : public Sonicteam::Message::MsgSuckPlayer
9191
{
92-
public:
93-
be<float> m_delta;
92+
be<float> DeltaTime;
9493
};
9594

96-
void ObjectInputWarp_MessageToPlayerExtraDelta(PPCRegister& Phantom, PPCRegister& Message, PPCRegister& delta)
95+
void ObjectInputWarp_ExtendMsgSuckPlayer(PPCRegister& phantom, PPCRegister& message, PPCRegister& deltaTime)
9796
{
98-
auto pPhantom = (Sonicteam::SoX::Physics::Phantom*)(g_memory.Translate(Phantom.u32));
99-
auto pMessage = (Sonicteam::Player::ObjectMessage_SuckPlayerToPoint*)(g_memory.Translate(Message.u32));
100-
auto pNewMessage = (ObjectMessage_SuckPlayerToPointEX*)g_userHeap.Alloc(sizeof(ObjectMessage_SuckPlayerToPointEX));
101-
pNewMessage->m_ID = pMessage->m_ID;
102-
pNewMessage->m_Point = pMessage->m_Point;
103-
pNewMessage->m_delta = delta.f64;
104-
pPhantom->OnMessageRecieved(pNewMessage);
97+
auto pPhantom = (Sonicteam::SoX::Physics::Phantom*)(g_memory.Translate(phantom.u32));
98+
auto pMessage = (Sonicteam::Message::MsgSuckPlayer*)(g_memory.Translate(message.u32));
99+
100+
auto pNewMessage = (MsgSuckPlayerEx*)g_userHeap.Alloc(sizeof(MsgSuckPlayerEx));
101+
pNewMessage->ID = pMessage->ID;
102+
pNewMessage->Point = pMessage->Point;
103+
pNewMessage->DeltaTime = deltaTime.f64;
104+
105+
pPhantom->OnMessageRecieved(pNewMessage);
106+
105107
g_userHeap.Free(pNewMessage);
106108
}
107109

108-
void ObjectPlayer_Message0x1104AExtraDelta(PPCRegister& delta, PPCRegister& Message)
110+
void PlayerObject_ProcessMsgSuckPlayer(PPCRegister& message, PPCRegister& deltaTime)
109111
{
110-
auto pMessage = (ObjectMessage_SuckPlayerToPointEX*)(g_memory.Translate(Message.u32));
111-
delta.f64 = pMessage->m_delta;
112+
auto pMessage = (MsgSuckPlayerEx*)(g_memory.Translate(message.u32));
113+
114+
deltaTime.f64 = pMessage->DeltaTime;
112115
}

MarathonRecompLib/config/Marathon.toml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -441,13 +441,12 @@ registers = ["f0", "f13", "f28"]
441441
jump_address = 0x8232A4D4
442442

443443
[[midasm_hook]]
444-
name = "ObjectInputWarp_MessageToPlayerExtraDelta"
444+
name = "ObjectInputWarp_ExtendMsgSuckPlayer"
445445
address = 0x82389E48
446-
registers = ["r3","r4","f25"]
446+
registers = ["r3", "r4", "f25"]
447447
jump_address = 0x82389E4C
448448

449449
[[midasm_hook]]
450-
name = "ObjectPlayer_Message0x1104AExtraDelta"
451-
address = 0x8219B65C
452-
registers = ["f31","r28"]
453-
after_instruction = true
450+
name = "PlayerObject_ProcessMsgSuckPlayer"
451+
address = 0x8219B660
452+
registers = ["r28", "f31"]

0 commit comments

Comments
 (0)