Skip to content

Commit e979917

Browse files
authored
Fix loading and text breathing animations at HFR (#161)
* Fix loading and text breathing animations at HFR * API: additional research and clean-up
1 parent bfebb2e commit e979917

File tree

13 files changed

+188
-8
lines changed

13 files changed

+188
-8
lines changed

MarathonRecomp/api/Marathon.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
#include "Sonicteam/MyPhantom.h"
5858
#include "Sonicteam/MyTexture.h"
5959
#include "Sonicteam/MyTransforms.h"
60+
#include "Sonicteam/NoSyncThread.h"
6061
#include "Sonicteam/Player/IDynamicLink.h"
6162
#include "Sonicteam/Player/IExportExternalFlag.h"
6263
#include "Sonicteam/Player/IExportPostureRequestFlag.h"
@@ -133,6 +134,7 @@
133134
#include "Sonicteam/SoX/Scenery/CameraEventCallback.h"
134135
#include "Sonicteam/SoX/Scenery/CameraImp.h"
135136
#include "Sonicteam/SoX/Scenery/Drawable.h"
137+
#include "Sonicteam/SoX/Thread.h"
136138
#include "Sonicteam/StdImageFilters/BurnoutBlurFilter.h"
137139
#include "Sonicteam/StdImageFilters/SingleTechniqueFilter.h"
138140
#include "Sonicteam/System/CreateStatic.h"

MarathonRecomp/api/Sonicteam/HUDLoading.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@ namespace Sonicteam
99
public:
1010
enum HUDLoadingFlags
1111
{
12-
HUDLoadingFlags_Finished = 6
12+
HUDLoadingFlags_Finished = 6,
13+
HUDLoadingFlags_Open = 0x200,
14+
HUDLoadingFlags_End = 0x400
1315
};
1416

1517
MARATHON_INSERT_PADDING(0x5C);
1618
be<uint32_t> m_Flags;
19+
MARATHON_INSERT_PADDING(8);
1720
};
1821
}

MarathonRecomp/api/Sonicteam/HUDMessageWindow.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Sonicteam
1010
public:
1111
xpointer<CsdObject> m_pCsdObject;
1212
MARATHON_INSERT_PADDING(0x1C);
13-
xpointer<HUDMessageWindow> m_pThis;
13+
xpointer<HUDMessageWindow> m_pParent;
1414
MARATHON_INSERT_PADDING(0x14);
1515
xpointer<HintWindowTask> m_pHintWindowTask;
1616
};
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
#include <Sonicteam/SoX/Thread.h>
5+
6+
namespace Sonicteam
7+
{
8+
class NoSyncThread : SoX::Thread {};
9+
}

MarathonRecomp/api/Sonicteam/SelectWindowTask.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,7 @@ namespace Sonicteam
1212
be<uint32_t> m_ChosenIndex;
1313
MARATHON_INSERT_PADDING(0x28);
1414
be<uint32_t> m_SelectedIndex;
15+
MARATHON_INSERT_PADDING(0x14);
16+
be<uint32_t> m_BreatheFrame;
1517
};
1618
}

MarathonRecomp/api/Sonicteam/SoX/Graphics/FrameObserver.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Sonicteam::SoX::Graphics
1010
public:
1111
xpointer<void> m_pVftable;
1212
MARATHON_INSERT_PADDING(8);
13-
xpointer<FrameObserver> m_pThis;
13+
xpointer<FrameObserver> m_pParent;
1414
xpointer<FrameGP> m_pFrameGP;
1515
};
1616
}

MarathonRecomp/api/Sonicteam/SoX/Graphics/TechniqueFXL.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Sonicteam::SoX::Graphics
1010
public:
1111
xpointer<void> m_pShader;
1212
MARATHON_INSERT_PADDING(0x10);
13-
xpointer<TechniqueFXL> m_pThis;
13+
xpointer<TechniqueFXL> m_pParent;
1414
MARATHON_INSERT_PADDING(4);
1515
stdx::string m_TechniqueName;
1616
};

MarathonRecomp/api/Sonicteam/SoX/Physics/Shape.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ namespace Sonicteam::SoX::Physics
1010
public:
1111
struct Vftable : public RefCountObject::Vftable
1212
{
13-
be<uint32_t> VFunction04; // (__out VECTOR* u1, __out VECTOR* u2)
14-
be<uint32_t> InitializeVolume;
13+
be<uint32_t> fpVFunction04; // (__out VECTOR* u1, __out VECTOR* u2)
14+
be<uint32_t> fpInitializeVolume;
1515
};
1616

1717
be<uint32_t> m_ShapeType;

MarathonRecomp/api/Sonicteam/SoX/RefCountObject.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace Sonicteam::SoX
99
public:
1010
struct Vftable
1111
{
12-
be<uint32_t> Destroy;
12+
be<uint32_t> fpDestroy;
1313
};
1414

1515
xpointer<Vftable> m_pVftable;
@@ -30,7 +30,7 @@ namespace Sonicteam::SoX
3030

3131
void* Destroy(uint32_t flag)
3232
{
33-
return GuestToHostFunction<void*>(m_pVftable->Destroy, this, flag);
33+
return GuestToHostFunction<void*>(m_pVftable->fpDestroy, this, flag);
3434
}
3535
};
3636
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
5+
namespace Sonicteam::SoX
6+
{
7+
class Thread
8+
{
9+
public:
10+
xpointer<void> m_pVftable;
11+
MARATHON_INSERT_PADDING(8);
12+
xpointer<Thread> m_pParent;
13+
be<uint32_t> m_EventHandleA;
14+
be<uint32_t> m_EventHandleB;
15+
MARATHON_INSERT_PADDING(4);
16+
be<uint32_t> m_ThreadHandle;
17+
bool m_Field20;
18+
MARATHON_INSERT_PADDING(3);
19+
be<float> m_DeltaTime;
20+
MARATHON_INSERT_PADDING(8);
21+
xpointer<const char> m_pName;
22+
MARATHON_INSERT_PADDING(4);
23+
bool m_Field38;
24+
bool m_Field39;
25+
MARATHON_INSERT_PADDING(6);
26+
xpointer<void> m_pContext;
27+
MARATHON_INSERT_PADDING(8);
28+
29+
template <typename T>
30+
T* GetContext()
31+
{
32+
return (T*)m_pContext.get();
33+
}
34+
};
35+
}

0 commit comments

Comments
 (0)