Skip to content

Commit 926a470

Browse files
committed
Initial support for Undying
1 parent 4615fb2 commit 926a470

File tree

10 files changed

+43
-6
lines changed

10 files changed

+43
-6
lines changed

Inc/D3D9Config.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,12 @@
8383
#define UTGLR_VALID_BUILD_CONFIG 1
8484
#define UTGLR_HP_ENGINE 1
8585
#define UTGLR_HAS_DARK_LIGHT 1
86+
#elif defined(UNDYING)
87+
#define UTGLR_VALID_BUILD_CONFIG 1
88+
#define UTGLR_NO_LODMESH 1
89+
#define UTGLR_NO_VECTOR_MEM 1
90+
#define UTGLR_HAS_DARK_LIGHT 1
91+
//#define UTGLR_USES_ALPHABLEND 1
8692
#else
8793
#define UTGLR_VALID_BUILD_CONFIG 0
8894
#endif

Inc/D3D9DebugUtils.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ extern ods_stream dout;
2424

2525
std::basic_string<TCHAR> HexString(DWORD data, DWORD numBits = 4);
2626

27+
#if UTGLR_ENABLE_CLASS_EXPORT
2728
bool exportPackage(const class FString& exportPackageName);
29+
#endif

Inc/D3D9Render.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

3-
#include "D3D9DebugUtils.h"
43
#include "D3D9RenderDevice.h"
4+
#include "D3D9DebugUtils.h"
55
#include "RTXLevelProperties.h"
66

77
#include <Render.h>
@@ -99,5 +99,8 @@ static_assert(sizeof(URender) == HP1_size);
9999
#elif KLINGON_HONOR_GUARD
100100
constexpr int KHG_size = 184;
101101
static_assert(sizeof(URender) == KHG_size);
102+
#elif UNDYING
103+
constexpr int Undying_size = 244;
104+
static_assert(sizeof(URender) == Undying_size);
102105
#endif
103106
static_assert(sizeof(UD3D9Render) == sizeof(URender));

Src/D3D9DebugUtils.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "D3D9DebugUtils.h"
22
#include "Core.h"
3+
#include "D3D9Config.h"
34

45
ods_buf::~ods_buf() {
56
sync();

Src/D3D9Render.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ void UD3D9Render::StaticConstructor() {
2525
dout << "Static Constructing UD3D9Render!" << std::endl;
2626
#if UTGLR_HP_ENGINE
2727
currentLevelData.facetsMem.Init(8192, TEXT("CacheLevelFacetMem"));
28+
#elif UNDYING
29+
constexpr uint32_t memSize = 0x800000;
30+
void* facetsMem = GMalloc->Malloc(memSize, TEXT("CacheLevelFacetMem"), 0);
31+
currentLevelData.facetsMem.Init((BYTE*)facetsMem, memSize);
2832
#else
2933
currentLevelData.facetsMem.Init(8192);
3034
#endif
@@ -263,7 +267,9 @@ void UD3D9Render::DrawWorld(FSceneNode* frame) {
263267
#endif
264268

265269
FMemMark memMark(GMem);
270+
#if !UTGLR_NO_VECTOR_MEM
266271
FMemMark vectorMark(VectorMem);
272+
#endif
267273

268274
//dout << "Starting frame" << std::endl;
269275

@@ -431,7 +437,9 @@ void UD3D9Render::DrawWorld(FSceneNode* frame) {
431437
}
432438

433439
memMark.Pop();
440+
#if !UTGLR_NO_VECTOR_MEM
434441
vectorMark.Pop();
442+
#endif
435443
unguard;
436444
}
437445

Src/D3D9RenderDevice.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3503,10 +3503,10 @@ void UD3D9RenderDevice::renderMover(FSceneNode* frame, ABrush* mover) {
35033503

35043504
bool append = false;
35053505
for (FPoly* poly : entry.second) {
3506-
FSavedPoly* sPoly = (FSavedPoly*)New<BYTE>(URender::VectorMem, sizeof(FSavedPoly) + poly->NumVertices * sizeof(FTransform*));
3506+
FSavedPoly* sPoly = (FSavedPoly*)New<BYTE>(GMem, sizeof(FSavedPoly) + poly->NumVertices * sizeof(FTransform*));
35073507
sPoly->NumPts = poly->NumVertices;
35083508
sPoly->Next = NULL;
3509-
FTransform* trans = New<FTransform>(URender::VectorMem, sPoly->NumPts);
3509+
FTransform* trans = New<FTransform>(GMem, sPoly->NumPts);
35103510
for (int i = 0; i < sPoly->NumPts; i++) {
35113511
int iDest = invertFaces ? (sPoly->NumPts - 1) - i : i;
35123512
trans[i].Point = poly->Vertex[i];
@@ -6131,7 +6131,13 @@ void UD3D9RenderDevice::startWorldDraw(FSceneNode* frame) {
61316131
#else
61326132
float aspect = frame->FX / frame->FY;
61336133
#endif
6134-
setProjection(aspect, frame->Viewport->Actor->FovAngle);
6134+
float fov = frame->Viewport->Actor->FovAngle;
6135+
if (XMScalarNearEqual(fov, 0.0f, 0.00001f * 2.0f)) {
6136+
// If fov calculation fails, default to 90
6137+
fov = 90;
6138+
}
6139+
6140+
setProjection(aspect, fov);
61356141

61366142
// Set viewport.
61376143
D3DVIEWPORT9 d3dViewport;

Src/D3D9Render_mesh_processing.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,15 @@ void UD3D9RenderDevice::renderMeshActor(FSceneNode* frame, AActor* actor, Render
230230
#endif // UTGLR_NO_LODMESH
231231
{
232232
isLod = false;
233+
#if UNDYING
234+
numVerts = mesh->FrameVerts(actor);
235+
samples = New<FVector>(GMem, numVerts);
236+
mesh->GetFrame(samples, sizeof(samples[0]), GMath.UnitCoords, actor, frame);
237+
#else
233238
numVerts = mesh->FrameVerts;
234239
samples = New<FVector>(GMem, numVerts);
235240
mesh->GetFrame(samples, sizeof(samples[0]), GMath.UnitCoords, actor);
241+
#endif
236242
numTris = mesh->Tris.Num();
237243
}
238244

@@ -268,7 +274,7 @@ void UD3D9RenderDevice::renderMeshActor(FSceneNode* frame, AActor* actor, Render
268274
#endif
269275
for (INT i = 0; i < numVerts; i++) {
270276
FVector& sample = samples[i];
271-
#if !KLINGON_HONOR_GUARD
277+
#if !KLINGON_HONOR_GUARD && !UNDYING
272278
if (actor->bRandomFrame) {
273279
tex = actor->MultiSkins[appCeil((&sample - samples) / 3.f) % 8];
274280
if (tex) {

scripts/BuildAll.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ def zip_build(build_name: str, version_path: Path, x64: bool = False):
116116
"HP2",
117117
"Brother_Bear",
118118
"Klingon_Honor_Guard",
119+
"Undying",
119120
]
120121

121122
for game_code in games_codes:

scripts/Clive_Barkers_Undying.bat

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@ECHO OFF
2+
call ChangeLinks.bat undying
3+
python SetProperties.py --debug-exe Undying.exe --no-unicode
4+
echo #define GAME_NAME "Clive Barkers Undying v1.1"> ..\gamename.h

sdks

Submodule sdks updated 194 files

0 commit comments

Comments
 (0)