Skip to content

Commit 5abe6e4

Browse files
authored
Implement dynamic movie aspect ratio (#130)
* Implement dynamic movie aspect ratio * Fix movies with custom dimensions going off screen at narrow aspect ratios * Clean-up * Move modifiers out of header in preparation for CSD modifiers
1 parent c5df50e commit 5abe6e4

17 files changed

Lines changed: 350 additions & 1576 deletions

File tree

MarathonRecomp/api/Marathon.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,16 @@
2121
#include "Sonicteam/Camera/CameraMode.h"
2222
#include "Sonicteam/Camera/Cameraman.h"
2323
#include "Sonicteam/Camera/SonicCamera.h"
24+
#include "Sonicteam/CsdLink.h"
2425
#include "Sonicteam/DocMarathonImp.h"
2526
#include "Sonicteam/DocMarathonState.h"
2627
#include "Sonicteam/GameImp.h"
2728
#include "Sonicteam/GameMode.h"
29+
#include "Sonicteam/MovieObject.h"
30+
#include "Sonicteam/MovieObjectWmv.h"
31+
#include "Sonicteam/MovieTask.h"
32+
#include "Sonicteam/MyGraphicsDevice.h"
33+
#include "Sonicteam/MyTexture.h"
2834
#include "Sonicteam/Player/IDynamicLink.h"
2935
#include "Sonicteam/Player/IExportPostureRequestFlag.h"
3036
#include "Sonicteam/Player/IExportWeaponRequestFlag.h"
@@ -54,6 +60,12 @@
5460
#include "Sonicteam/SoX/Engine/Doc.h"
5561
#include "Sonicteam/SoX/Engine/DocMode.h"
5662
#include "Sonicteam/SoX/Engine/Task.h"
63+
#include "Sonicteam/SoX/Graphics/Device.h"
64+
#include "Sonicteam/SoX/Graphics/Xenon/DeviceXenon.h"
65+
#include "Sonicteam/SoX/Graphics/Xenon/TextureXenon.h"
66+
#include "Sonicteam/SoX/IResource.h"
67+
#include "Sonicteam/SoX/Math/Matrix.h"
68+
#include "Sonicteam/SoX/Math/Vector.h"
5769
#include "Sonicteam/SoX/MessageReceiver.h"
5870
#include "Sonicteam/SoX/Object.h"
5971
#include "Sonicteam/SoX/Physics/Havok/WorldHavok.h"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
5+
namespace Sonicteam
6+
{
7+
class CsdLink
8+
{
9+
public:
10+
xpointer<void> m_pVftable;
11+
xpointer<CsdLink> m_pNext;
12+
xpointer<CsdLink> m_pPrevious;
13+
be<float> m_Priority;
14+
MARATHON_INSERT_PADDING(8);
15+
};
16+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/MovieObjectWmv.h>
5+
6+
namespace Sonicteam
7+
{
8+
class MovieObject : public SoX::RefCountObject
9+
{
10+
public:
11+
MARATHON_INSERT_PADDING(4);
12+
xpointer<MovieObjectWmv> m_pMovieObjectWmv;
13+
stdx::string m_Language;
14+
xpointer<MyGraphicsDevice> m_pMyGraphicsDevice;
15+
MARATHON_INSERT_PADDING(8);
16+
be<uint32_t> m_Width;
17+
be<uint32_t> m_Height;
18+
bool m_Field40;
19+
};
20+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/MyGraphicsDevice.h>
5+
#include <Sonicteam/MyTexture.h>
6+
#include <stdx/string.h>
7+
8+
namespace Sonicteam
9+
{
10+
class MovieObjectWmv : public SoX::RefCountObject
11+
{
12+
public:
13+
bool m_UseCustomDimensions;
14+
be<float> m_Left;
15+
be<float> m_Top;
16+
be<float> m_Right;
17+
be<float> m_Bottom;
18+
MARATHON_INSERT_PADDING(4);
19+
stdx::string m_FilePath;
20+
MARATHON_INSERT_PADDING(8);
21+
bool m_RenderMovie;
22+
MARATHON_INSERT_PADDING(0x38);
23+
xpointer<MyGraphicsDevice> m_pMyGraphicsDevice;
24+
be<uint32_t> m_Field84;
25+
MARATHON_INSERT_PADDING(0x0C);
26+
xpointer<MyTexture> m_pTexturesYUV[4 * 3];
27+
MARATHON_INSERT_PADDING(8);
28+
be<uint32_t> m_Width;
29+
be<uint32_t> m_Height;
30+
MARATHON_INSERT_PADDING(0x0C);
31+
xpointer<void> m_pTechnique;
32+
stdx::string m_Language;
33+
};
34+
}
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+
5+
namespace Sonicteam
6+
{
7+
class MovieTask : public SoX::Engine::Task, public CsdLink
8+
{
9+
public:
10+
MARATHON_INSERT_PADDING(0x40);
11+
xpointer<MovieObject> m_pMovieObject;
12+
};
13+
}
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/Graphics/Xenon/DeviceXenon.h>
5+
6+
namespace Sonicteam
7+
{
8+
class MyGraphicsDevice : public SoX::Graphics::Xenon::DeviceXenon
9+
{
10+
public:
11+
MARATHON_INSERT_PADDING(0x180);
12+
};
13+
}
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/Graphics/Xenon/TextureXenon.h>
5+
6+
namespace Sonicteam
7+
{
8+
class MyTexture : public SoX::Graphics::Xenon::TextureXenon
9+
{
10+
public:
11+
MARATHON_INSERT_PADDING(4);
12+
};
13+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/SoX/Math/Matrix.h>
5+
6+
namespace Sonicteam::SoX::Graphics
7+
{
8+
class Device
9+
{
10+
public:
11+
xpointer<void> m_pVftable;
12+
MARATHON_INSERT_PADDING(0x3C);
13+
Math::Matrix4x4 m_Field40;
14+
be<float> m_Field80;
15+
MARATHON_INSERT_PADDING(0x4C);
16+
};
17+
}
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/Graphics/Device.h>
5+
6+
namespace Sonicteam::SoX::Graphics::Xenon
7+
{
8+
class DeviceXenon : public Device
9+
{
10+
public:
11+
MARATHON_INSERT_PADDING(0x100);
12+
};
13+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/SoX/IResource.h>
5+
6+
namespace Sonicteam::SoX::Graphics::Xenon
7+
{
8+
class TextureXenon : public IResource
9+
{
10+
public:
11+
MARATHON_INSERT_PADDING(0x1C);
12+
be<uint32_t> m_Width;
13+
be<uint32_t> m_Height;
14+
MARATHON_INSERT_PADDING(4);
15+
};
16+
}

0 commit comments

Comments
 (0)