Skip to content
Closed
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
6 changes: 6 additions & 0 deletions MarathonRecomp/api/Marathon.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
#include "CSD/Platform/csdTexList.h"
#include "Sonicteam/Actor.h"
#include "Sonicteam/AppMarathon.h"
#include "Sonicteam/SceneLODParam.h"
#include "Sonicteam/SceneShadowMapParam.h"
#include "Sonicteam/ISceneParam.h"
#include "Sonicteam/Camera/CameraMode.h"
#include "Sonicteam/Camera/Cameraman.h"
#include "Sonicteam/Camera/SonicCamera.h"
Expand Down Expand Up @@ -48,12 +51,15 @@
#include "Sonicteam/Player/State/Object2.h"
#include "Sonicteam/Player/State/TailsContext.h"
#include "Sonicteam/SoX/AI/StateMachine.h"
#include <Sonicteam/SoX/RefCountObject.h>
#include "Sonicteam/SoX/Component.h"
#include "Sonicteam/SoX/Engine/Doc.h"
#include "Sonicteam/SoX/Engine/DocMode.h"
#include "Sonicteam/SoX/Engine/Task.h"
#include "Sonicteam/SoX/MessageReceiver.h"
#include "Sonicteam/SoX/Object.h"
#include "Sonicteam/SoX/Scenery/Camera.h"
#include "Sonicteam/SoX/Scenery/CameraImp.h"
#include "Sonicteam/TitleTask.h"
#include "boost/smart_ptr/make_shared_object.h"
#include "boost/smart_ptr/shared_ptr.h"
Expand Down
22 changes: 22 additions & 0 deletions MarathonRecomp/api/Sonicteam/ISceneParam.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#pragma once

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

namespace Sonicteam
{
template <typename Type>
struct LinkSoxNode
{
xpointer<LinkSoxNode<Type>> m_Prev;
xpointer<LinkSoxNode<Type>> m_Next;
xpointer<Type> m_This;
};

class ISceneParam : public SoX::RefCountObject
{
public:
LinkSoxNode<void> m_Link;

};
}
46 changes: 46 additions & 0 deletions MarathonRecomp/api/Sonicteam/SceneLODParam.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#pragma once

#include <Marathon.inl>
#include <Sonicteam/ISceneParam.h>

namespace Sonicteam
{


class SceneLODParam : public ISceneParam
{
public:
struct LODParam
{
uint8_t m_IsSet;
MARATHON_INSERT_PADDING(3);
be<float> m_FarDistance;
be<float> m_ClipDistance;
be<float> m_TerrainClipDistance;
};
enum LODEnum
{
Main,
MainXp,
MainSky,
MainPsi,
MainOC,
MainGlare,
MainAfterPP,
Light0,
Light1,
Light2,
Light3,
Reflection0,
ReflectionSky,
MainUser0,
MainUser1,
User0,
User1,
MainParticle,
RaderMap
};
LODParam m_LODParam[19];

};
}
35 changes: 35 additions & 0 deletions MarathonRecomp/api/Sonicteam/SceneShadowMapParam.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#pragma once

#include <Marathon.inl>
#include <Sonicteam/ISceneParam.h>

namespace Sonicteam
{
class SceneShadowMapParam : public ISceneParam
{
public:
struct ShadowMapParam
{
be<float> m_BaseSize;
be<float> m_Float1;
be<float> m_Float2;
be<float> m_Float3;
be<float> m_CenterOffsetX;
be<float> m_CenterOffsetY;
be<float> m_CenterOffsetZ;
be<float> m_CenterOffsetW;

ShadowMapParam()
{
m_BaseSize = 1000.0;
m_Float1 = 10.0;
m_Float2 = 160000.0; //Far Distance???
m_Float3 = 40000.0;
m_CenterOffsetX = 0.0;
m_CenterOffsetY = 0.0;
m_CenterOffsetZ = 500.0;
m_CenterOffsetW = 1.0;
}
};
};
}
13 changes: 13 additions & 0 deletions MarathonRecomp/api/Sonicteam/SoX/RefCountObject.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#pragma once

#include <Marathon.inl>

namespace Sonicteam::SoX
{
class RefCountObject
{
public:
xpointer<void> m_pVftable;
be<uint32_t> m_RefCount;
};
}
10 changes: 10 additions & 0 deletions MarathonRecomp/api/Sonicteam/SoX/Scenery/Camera.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#pragma once
#include <Marathon.inl>
namespace Sonicteam::SoX::Scenery
{
class Camera
{
public:
xpointer<void> m_pVftable;
};
}
41 changes: 41 additions & 0 deletions MarathonRecomp/api/Sonicteam/SoX/Scenery/CameraImp.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#pragma once

#include <Marathon.inl>
#include <Sonicteam/SoX/Scenery/Camera.h>
#include <stdx/string.h>


namespace Sonicteam::SoX::Scenery
{
class CameraImp:Sonicteam::SoX::Scenery::Camera
{
public:
static constexpr std::string_view c_Main = "Main";
static constexpr std::string_view c_MainSky = "MainSky";
static constexpr std::string_view c_MainPsi = "MainPsi";
static constexpr std::string_view c_MainOC = "MainOC";
static constexpr std::string_view c_MainGlare = "MainGlare";
static constexpr std::string_view c_MainAfterPP = "MainAfterPP";
static constexpr std::string_view c_Reflection0 = "Reflection0";
static constexpr std::string_view c_ReflectionSky = "ReflectionSky";
static constexpr std::string_view c_MainUser0 = "MainUser0";
static constexpr std::string_view c_MainUser1 = "MainUser1";
static constexpr std::string_view c_User0 = "User0";
static constexpr std::string_view c_User1 = "User1";
static constexpr std::string_view c_MainParticle = "MainParticle";
static constexpr std::string_view c_Light0 = "Light0";
static constexpr std::string_view c_Light1 = "Light1";
static constexpr std::string_view c_Light2 = "Light2";
static constexpr std::string_view c_Light3 = "Light3";
static constexpr std::string_view c_RaderMap = "RaderMap";


stdx::string m_CamName;
be<float> m_FOV;
be<float> m_Param1; // == 16.0
be<float> m_Param2; // == 9.0
be<float> m_Param3; // == 1.0
be<float> m_Far; //
MARATHON_INSERT_PADDING(0x1EC);
};
}
40 changes: 40 additions & 0 deletions MarathonRecomp/app.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,3 +173,43 @@ PPC_FUNC(sub_825822D0)
__imp__sub_825822D0(ctx, base);
}
#endif

PPC_FUNC_IMPL(__imp__sub_82590C38);
PPC_FUNC(sub_82590C38)
{
auto pCamera = (Sonicteam::SoX::Scenery::CameraImp*)(base + ctx.r3.u32);
float pFar = ctx.f1.f64;
pCamera->m_Far = pFar;
printf("pCamera[%s] pFar = %f\n", pCamera->m_CamName.c_str(), pFar);
pCamera->m_Far = 12800000;
GuestToHostFunction<void>(sub_82590A28,ctx.r3.u32,pFar);
return;
}

//821728D4 (secondary)
//SceneLODParam::InitializeSceneParam
PPC_FUNC_IMPL(__imp__sub_825F3FE0);
PPC_FUNC(sub_825F3FE0)
{
auto pSceneLOD = (Sonicteam::SceneLODParam*)(base + ctx.r3.u32);
__imp__sub_825F3FE0(ctx, base);
auto& lMain = pSceneLOD->m_LODParam[Sonicteam::SceneLODParam::Main];
for (int i = 0; i < 19; i++)
{
pSceneLOD->m_LODParam[i].m_IsSet = 1;
pSceneLOD->m_LODParam[i].m_FarDistance = 12800000;
pSceneLOD->m_LODParam[i].m_ClipDistance = 12800000;
pSceneLOD->m_LODParam[i].m_TerrainClipDistance = 12800000;

}
return;
}

//SceneShadowMapParam::InitializeSceneParam
PPC_FUNC_IMPL(__imp__sub_825F5DA8);
PPC_FUNC(sub_825F5DA8)
{
auto pSceneLOD = (Sonicteam::SceneShadowMapParam*)(base + ctx.r3.u32);
__imp__sub_825F5DA8(ctx, base);
auto pParamMarathon = (Sonicteam::SceneShadowMapParam::ShadowMapParam*)(base + 0x82B84B30);
}
Loading