Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions MarathonRecomp/api/Marathon.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@
#include "Sonicteam/Enemy/EnemyShotNormal.h"
#include "Sonicteam/Enemy/EnemyShotPoint.h"
#include "Sonicteam/Fixture.h"
#include "Sonicteam/GE1PE/EffectBank.h"
#include "Sonicteam/GE1PE/EmitterListener.h"
#include "Sonicteam/GE1PE/Manager.h"
#include "Sonicteam/GE1PE/ParticleEngine.h"
#include "Sonicteam/GE1PE/Plugin.h"
#include "Sonicteam/GE1PE/RefCountObject.h"
#include "Sonicteam/Game.h"
#include "Sonicteam/GameImp.h"
#include "Sonicteam/GameMode.h"
Expand All @@ -55,7 +61,12 @@
#include "Sonicteam/HintWindowTask.h"
#include "Sonicteam/HudTextParts.h"
#include "Sonicteam/ImageFilter.h"
#include "Sonicteam/LuaNode.h"
#include "Sonicteam/LuaNodeImp.h"
#include "Sonicteam/LuaSystem.h"
#include "Sonicteam/LuaSystemManager.h"
#include "Sonicteam/MainDisplayTask.h"
#include "Sonicteam/MainMenuExpositionTask.h"
#include "Sonicteam/MainMenuTask.h"
#include "Sonicteam/MainMode.h"
#include "Sonicteam/Message/MsgCameramanChangeMode.h"
Expand All @@ -76,16 +87,30 @@
#include "Sonicteam/MyCueAdx.h"
#include "Sonicteam/MyCueAttenuate.h"
#include "Sonicteam/MyGraphicsDevice.h"
#include "Sonicteam/MyPE/CManageParticle.h"
#include "Sonicteam/MyPE/EffectBankLoad.h"
#include "Sonicteam/MyPE/EffectBankLoadManager.h"
#include "Sonicteam/MyPE/MyEffectBank.h"
#include "Sonicteam/MyPE/MyEmitterListener.h"
#include "Sonicteam/MyPhantom.h"
#include "Sonicteam/MyRenderProcess.h"
#include "Sonicteam/MyTexture.h"
#include "Sonicteam/MyTransforms.h"
#include "Sonicteam/NamedActor.h"
#include "Sonicteam/NamedTask.h"
#include "Sonicteam/NoSyncThread.h"
#include "Sonicteam/ObjectVehicle.h"
#include "Sonicteam/ObjectVehicleBike.h"
#include "Sonicteam/Particles/Particle.h"
#include "Sonicteam/Particles/ParticleContainer.h"
#include "Sonicteam/Particles/ParticleContainerMgr.h"
#include "Sonicteam/Particles/ParticleManager.h"
#include "Sonicteam/Particles/ParticleManagerUnit.h"
#include "Sonicteam/Particles/ParticleRef.h"
#include "Sonicteam/PauseAdapter.h"
#include "Sonicteam/PauseTask.h"
#include "Sonicteam/Player/Effect/ParticleJoint.h"
#include "Sonicteam/Player/Effect/ParticleLuaTable.h"
#include "Sonicteam/Player/GroundRayListener.h"
#include "Sonicteam/Player/ICollisionListener.h"
#include "Sonicteam/Player/ICollisionListenerTemplate.h"
Expand Down Expand Up @@ -134,13 +159,18 @@
#include "Sonicteam/Player/Unit/ITestCase.h"
#include "Sonicteam/Player/Weapon/SonicWeapons.h"
#include "Sonicteam/Player/Zock.h"
#include "Sonicteam/PopupScreenTask.h"
#include "Sonicteam/PropFixture.h"
#include "Sonicteam/RaderMapManager.h"
#include "Sonicteam/RenderTargetContainer.h"
#include "Sonicteam/RootGTask.h"
#include "Sonicteam/SFXAgent.h"
#include "Sonicteam/SaveDataTask.h"
#include "Sonicteam/SaveDataTaskXENON.h"
#include "Sonicteam/SelectWindowTask.h"
#include "Sonicteam/SoX/AI/StateMachine.h"
#include "Sonicteam/SoX/ApplicationXenon.h"
#include "Sonicteam/SoX/Array.h"
#include "Sonicteam/SoX/Audio/Cue.h"
#include "Sonicteam/SoX/Audio/IAudioEngine.h"
#include "Sonicteam/SoX/Audio/Player.h"
Expand All @@ -149,16 +179,24 @@
#include "Sonicteam/SoX/Engine/Application.h"
#include "Sonicteam/SoX/Engine/Doc.h"
#include "Sonicteam/SoX/Engine/DocMode.h"
#include "Sonicteam/SoX/Engine/GTask.h"
#include "Sonicteam/SoX/Engine/RenderProcess.h"
#include "Sonicteam/SoX/Engine/RenderScheduler.h"
#include "Sonicteam/SoX/Engine/Task.h"
#include "Sonicteam/SoX/Graphics/Device.h"
#include "Sonicteam/SoX/Graphics/Frame.h"
#include "Sonicteam/SoX/Graphics/FrameGP.h"
#include "Sonicteam/SoX/Graphics/FrameObserver.h"
#include "Sonicteam/SoX/Graphics/Surface.h"
#include "Sonicteam/SoX/Graphics/SurfaceMgr.h"
#include "Sonicteam/SoX/Graphics/Technique.h"
#include "Sonicteam/SoX/Graphics/TechniqueFXL.h"
#include "Sonicteam/SoX/Graphics/Texture.h"
#include "Sonicteam/SoX/Graphics/TextureMgr.h"
#include "Sonicteam/SoX/Graphics/Transforms.h"
#include "Sonicteam/SoX/Graphics/Vertex.h"
#include "Sonicteam/SoX/Graphics/Xenon/DeviceXenon.h"
#include "Sonicteam/SoX/Graphics/Xenon/SurfaceXenon.h"
#include "Sonicteam/SoX/Graphics/Xenon/TextureXenon.h"
#include "Sonicteam/SoX/IResource.h"
#include "Sonicteam/SoX/IResource2.h"
Expand Down Expand Up @@ -186,11 +224,17 @@
#include "Sonicteam/SoX/Physics/World.h"
#include "Sonicteam/SoX/RefCountObject.h"
#include "Sonicteam/SoX/RefSharedPointer.h"
#include "Sonicteam/SoX/ResourceManager.h"
#include "Sonicteam/SoX/Scenery/Camera.h"
#include "Sonicteam/SoX/Scenery/CameraEventCallback.h"
#include "Sonicteam/SoX/Scenery/CameraImp.h"
#include "Sonicteam/SoX/Scenery/Drawable.h"
#include "Sonicteam/SoX/Thread.h"
#include "Sonicteam/Spanverse/AckResource.h"
#include "Sonicteam/Spanverse/AckResourceMgr.h"
#include "Sonicteam/Spanverse/SpanABDT.h"
#include "Sonicteam/Spanverse/SpanACBS.h"
#include "Sonicteam/Spanverse/SpanBASE.h"
#include "Sonicteam/StdImageFilters/BurnoutBlurFilter.h"
#include "Sonicteam/StdImageFilters/SingleTechniqueFilter.h"
#include "Sonicteam/System/CreateStatic.h"
Expand All @@ -209,6 +253,7 @@
#include "Sonicteam/sonicXmaPlayer.h"
#include "boost/smart_ptr/make_shared_object.h"
#include "boost/smart_ptr/shared_ptr.h"
#include "d3dxb.h"
#include "hk330/hkArray.h"
#include "hk330/hkReferencedObject.h"
#include "hk330/hkpBroadPhaseHandle.h"
Expand All @@ -228,6 +273,9 @@
#include "hk330/hkpTypedBroadPhaseHandle.h"
#include "hk330/hkpWorld.h"
#include "hk330/hkpWorldObject.h"
#include "lua50/lua.h"
#include "stdx/list.h"
#include "stdx/map.h"
#include "stdx/string.h"
#include "stdx/vector.h"
#include "stdx/wstring.h"
10 changes: 9 additions & 1 deletion MarathonRecomp/api/Marathon.inl
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,15 @@ constexpr double DEG2RAD = 0.01745329238474369;
#define MARATHON_VIRTUAL_FUNCTION(returnType, virtualIndex, ...) \
GuestToHostFunction<returnType>(*(be<uint32_t>*)(g_memory.Translate(*(be<uint32_t>*)(this) + (4 * virtualIndex))), __VA_ARGS__)

struct marathon_null_ctor {};
struct MARATHON_NULL_CTOR {};

struct MARATHON_STD_MAP_CONST_CHAR_COMPARE
{
bool operator()(xpointer<const char> lhs, xpointer<const char> rhs) const
{
return std::strcmp(lhs.get(), rhs.get()) < 0;
}
};

inline std::vector<std::string_view> ParseTextVariables(const char* pVariables)
{
Expand Down
7 changes: 4 additions & 3 deletions MarathonRecomp/api/Sonicteam/AppMarathon.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@ namespace Sonicteam
public:
xpointer<DocMarathonState> m_pDoc;

static AppMarathon* GetInstance();
AppMarathon* GetInstance()
{
return *(xpointer<AppMarathon>*)MmGetHostAddress(0x82D3B348);
}

GameImp* GetGame() const
{
Expand All @@ -25,5 +28,3 @@ namespace Sonicteam

MARATHON_ASSERT_OFFSETOF(AppMarathon, m_pDoc, 0x180);
}

#include <Sonicteam/AppMarathon.inl>
7 changes: 0 additions & 7 deletions MarathonRecomp/api/Sonicteam/AppMarathon.inl

This file was deleted.

33 changes: 27 additions & 6 deletions MarathonRecomp/api/Sonicteam/DocMarathonImp.h
Original file line number Diff line number Diff line change
@@ -1,26 +1,47 @@
#pragma once

#include <Marathon.inl>
#include <boost/smart_ptr/shared_ptr.h>
#include <Sonicteam/Particles/ParticleManager.h>
#include <Sonicteam/SoX/Engine/Doc.h>
#include <Sonicteam/SoX/Input/Manager.h>
#include <boost/smart_ptr/shared_ptr.h>
#include <api/stdx/vector.h>
#include <Sonicteam/SoX/LinkNode.h>
#include <Sonicteam/SoX/Thread.h>
#include <Sonicteam/MyGraphicsDevice.h>
#include <Sonicteam/RaderMapManager.h>
#include <Sonicteam/RenderTargetContainer.h>
#include <Sonicteam/SFXAgent.h>
#include <stdx/vector.h>

namespace Sonicteam
{
class DocMarathonImp : public SoX::Engine::Doc
{
public:
MARATHON_INSERT_PADDING(0x40);
stdx::vector<boost::shared_ptr<SoX::Input::Manager>> m_vspInputManager;
MARATHON_INSERT_PADDING(4);
xpointer<MyGraphicsDevice> m_pMyGraphicsDevice;
MARATHON_INSERT_PADDING(0x38);
stdx::vector<boost::shared_ptr<SoX::Input::Manager>> m_vspInputManagers;
MARATHON_INSERT_PADDING(0x24);
bool m_VFrame;
MARATHON_INSERT_PADDING(0x55B58);
MARATHON_INSERT_PADDING(4);
xpointer<RenderTargetContainer> m_pRenderTargetContainer;
xpointer<SFXAgent> m_pSFXAgent;
MARATHON_INSERT_PADDING(0xC);
be<uint32_t> m_PauseFlags;
MARATHON_INSERT_PADDING(0x8);
xpointer<SoX::LinkedList<SoX::Thread>> m_lnThread;
MARATHON_INSERT_PADDING(0x288);
xpointer<Particles::ParticleManager> m_pParticleManager;
MARATHON_INSERT_PADDING(0x15D0);
xpointer<RaderMapManager> m_pRaderMapManager;
MARATHON_INSERT_PADDING(0x542D0);
be<uint32_t> m_aPadIDs[4];
MARATHON_INSERT_PADDING(0x2C);
};

MARATHON_ASSERT_OFFSETOF(DocMarathonImp, m_vspInputManager, 0x9C);
MARATHON_ASSERT_OFFSETOF(DocMarathonImp, m_PauseFlags, 0xEC);
MARATHON_ASSERT_OFFSETOF(DocMarathonImp, m_vspInputManagers, 0x9C);
MARATHON_ASSERT_OFFSETOF(DocMarathonImp, m_VFrame, 0xD0);
MARATHON_ASSERT_OFFSETOF(DocMarathonImp, m_aPadIDs, 0x55C2C);
MARATHON_ASSERT_SIZEOF(DocMarathonImp, 0x55C68);
Expand Down
42 changes: 42 additions & 0 deletions MarathonRecomp/api/Sonicteam/GE1PE/EffectBank.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#pragma once

#include <Marathon.inl>
#include <Sonicteam/GE1PE/RefCountObject.h>
#include <stdx/map.h>
#include <stdx/string.h>

namespace Sonicteam::GE1PE
{
class ParticleEngine;

struct EffectBankData
{
be<uint32_t> Field00;
stdx::string Name;
xpointer<void> pData1;
xpointer<void> pData2;
xpointer<void> pData3;
stdx::map<stdx::string, be<uint32_t>> mEffectDataIndices;
};

class EffectBank : public RefCountObject
{
public:
xpointer<ParticleEngine> m_pParticleEngine;
be<uint32_t> m_Field0C; // Index?
xpointer<EffectBankData> m_pEffectBankA;
};

MARATHON_ASSERT_OFFSETOF(EffectBankData, Field00, 0x00);
MARATHON_ASSERT_OFFSETOF(EffectBankData, Name, 0x04);
MARATHON_ASSERT_OFFSETOF(EffectBankData, pData1, 0x20);
MARATHON_ASSERT_OFFSETOF(EffectBankData, pData2, 0x24);
MARATHON_ASSERT_OFFSETOF(EffectBankData, pData3, 0x28);
MARATHON_ASSERT_OFFSETOF(EffectBankData, mEffectDataIndices, 0x2C);
MARATHON_ASSERT_SIZEOF(EffectBankData, 0x38);

MARATHON_ASSERT_OFFSETOF(EffectBank, m_pParticleEngine, 0x08);
MARATHON_ASSERT_OFFSETOF(EffectBank, m_Field0C, 0x0C);
MARATHON_ASSERT_OFFSETOF(EffectBank, m_pEffectBankA, 0x10);
MARATHON_ASSERT_SIZEOF(EffectBank, 0x14);
}
12 changes: 12 additions & 0 deletions MarathonRecomp/api/Sonicteam/GE1PE/EmitterListener.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#pragma once

#include <Marathon.inl>

namespace Sonicteam::GE1PE
{
class EmitterListener
{
public:
xpointer<void> m_pVftable;
};
}
43 changes: 43 additions & 0 deletions MarathonRecomp/api/Sonicteam/GE1PE/Manager.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#pragma once

#include <Marathon.inl>
#include <Sonicteam/SoX/LinkNode.h>

namespace Sonicteam::GE1PE
{
class Effect;
class Emitter;
class Particle;
class ParticleEngine;

class Manager
{
public:
struct Vftable
{
be<uint32_t> fpDestroy;
};

xpointer<Vftable> m_pVftable;
xpointer<ParticleEngine> m_pParticleEngine;
SoX::LinkNode<Manager> m_lnManager;
SoX::LinkNode<void> m_lnField14;
SoX::LinkNode<Particle> m_lnParticle;
SoX::LinkNode<void> m_lnField2C;
SoX::LinkNode<void> m_lnField38;
SoX::LinkNode<Emitter> m_lnEmitter;
SoX::LinkNode<Effect> m_lnEffect;
SoX::LinkNode<Effect> m_lnField5C;
MARATHON_INSERT_PADDING(0x24);
};

MARATHON_ASSERT_OFFSETOF(Manager, m_pParticleEngine, 0x04);
MARATHON_ASSERT_OFFSETOF(Manager, m_lnManager, 0x08);
MARATHON_ASSERT_OFFSETOF(Manager, m_lnField14, 0x14);
MARATHON_ASSERT_OFFSETOF(Manager, m_lnParticle, 0x20);
MARATHON_ASSERT_OFFSETOF(Manager, m_lnField2C, 0x2C);
MARATHON_ASSERT_OFFSETOF(Manager, m_lnField38, 0x38);
MARATHON_ASSERT_OFFSETOF(Manager, m_lnEmitter, 0x44);
MARATHON_ASSERT_OFFSETOF(Manager, m_lnEffect, 0x50);
MARATHON_ASSERT_OFFSETOF(Manager, m_lnField5C, 0x5C);
}
44 changes: 44 additions & 0 deletions MarathonRecomp/api/Sonicteam/GE1PE/ParticleEngine.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#pragma once

#include <Marathon.inl>
#include <boost/smart_ptr/shared_ptr.h>
#include <Sonicteam/GE1PE/Plugin.h>
#include <Sonicteam/SoX/LinkNode.h>
#include <Sonicteam/System/Singleton.h>
#include <Sonicteam/System/CreateStatic.h>
#include <stdx/map.h>
#include <stdx/string.h>
#include <stdx/vector.h>

namespace Sonicteam::GE1PE
{
class EffectBank;
class Manager;
class Material;
class TextureBank;

class ParticleEngine : public System::Singleton<ParticleEngine, 0x82D3C4F4, System::CreateStatic<ParticleEngine, 0x82642090>>
{
public:
xpointer<void> m_pVftable;
boost::shared_ptr<Plugin> m_spPlugin;
stdx::map<stdx::string, be<uint32_t>> m_mEffectIndices;
stdx::map<stdx::string, be<uint32_t>> m_mTextureIndices;
stdx::map<stdx::string, be<uint32_t>> m_mMaterialIndices;
stdx::vector<xpointer<EffectBank>> m_vpEffectBank;
stdx::vector<xpointer<TextureBank>> m_vpTextureBank;
stdx::vector<xpointer<TextureBank>> m_vpMaterialBank;
SoX::LinkNode<Manager> m_lnManager;
stdx::vector<be<uint32_t>> m_vField6C;
};

MARATHON_ASSERT_OFFSETOF(ParticleEngine, m_spPlugin, 0x04);
MARATHON_ASSERT_OFFSETOF(ParticleEngine, m_mEffectIndices, 0x0C);
MARATHON_ASSERT_OFFSETOF(ParticleEngine, m_mTextureIndices, 0x18);
MARATHON_ASSERT_OFFSETOF(ParticleEngine, m_mMaterialIndices, 0x24);
MARATHON_ASSERT_OFFSETOF(ParticleEngine, m_vpEffectBank, 0x30);
MARATHON_ASSERT_OFFSETOF(ParticleEngine, m_vpTextureBank, 0x40);
MARATHON_ASSERT_OFFSETOF(ParticleEngine, m_vpMaterialBank, 0x50);
MARATHON_ASSERT_OFFSETOF(ParticleEngine, m_lnManager, 0x60);
MARATHON_ASSERT_OFFSETOF(ParticleEngine, m_vField6C, 0x6C);
}
19 changes: 19 additions & 0 deletions MarathonRecomp/api/Sonicteam/GE1PE/Plugin.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#pragma once

#include <Marathon.inl>
#include <Sonicteam/SoX/Engine/Doc.h>

namespace Sonicteam::GE1PE
{
class Plugin
{
public:
struct Vftable
{
be<uint32_t> fpDestroy;
};

xpointer<Vftable> m_pVftable;
xpointer<SoX::Engine::Doc> m_pDoc;
};
}
Loading
Loading