summaryrefslogtreecommitdiffstats
path: root/src/rw
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2020-04-14 19:10:39 +0200
committerNikolay Korolev <nickvnuk@gmail.com>2020-04-14 19:10:39 +0200
commitf2c78e4bfb631de9f02d37d6b64af721b280cf8c (patch)
tree3d75fc97c042efb64ebd1fc999af1a301adbb709 /src/rw
parentscene edit (diff)
parentRwMatFX support with linked RW libs (diff)
downloadre3-f2c78e4bfb631de9f02d37d6b64af721b280cf8c.tar
re3-f2c78e4bfb631de9f02d37d6b64af721b280cf8c.tar.gz
re3-f2c78e4bfb631de9f02d37d6b64af721b280cf8c.tar.bz2
re3-f2c78e4bfb631de9f02d37d6b64af721b280cf8c.tar.lz
re3-f2c78e4bfb631de9f02d37d6b64af721b280cf8c.tar.xz
re3-f2c78e4bfb631de9f02d37d6b64af721b280cf8c.tar.zst
re3-f2c78e4bfb631de9f02d37d6b64af721b280cf8c.zip
Diffstat (limited to 'src/rw')
-rw-r--r--src/rw/RwHelper.cpp53
-rw-r--r--src/rw/RwHelper.h1
-rw-r--r--src/rw/RwMatFX.cpp13
3 files changed, 52 insertions, 15 deletions
diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp
index 44866f4f..44ca3a0a 100644
--- a/src/rw/RwHelper.cpp
+++ b/src/rw/RwHelper.cpp
@@ -3,6 +3,44 @@
#include "patcher.h"
#include "Timecycle.h"
#include "skeleton.h"
+#if defined(RWLIBS) && !defined(FINAL)
+#include "rtcharse.h"
+#pragma comment( lib, "rtcharse.lib" )
+
+RtCharset *debugCharset;
+#endif
+
+void CreateDebugFont()
+{
+#if defined(RWLIBS) && !defined(FINAL)
+ RwRGBA color = { 255, 255, 128, 255 };
+ RwRGBA colorbg = { 0, 0, 0, 0 };
+ RtCharsetOpen();
+ debugCharset = RtCharsetCreate(&color, &colorbg);
+#endif
+}
+
+void DestroyDebugFont()
+{
+#if defined(RWLIBS) && !defined(FINAL)
+ RtCharsetDestroy(debugCharset);
+ RtCharsetClose();
+#endif
+}
+
+void ObrsPrintfString(const char *str, short x, short y)
+{
+#if defined(RWLIBS) && !defined(FINAL)
+ RtCharsetPrintBuffered(debugCharset, str, x, y, true);
+#endif
+}
+
+void FlushObrsPrintfs()
+{
+#if defined(RWLIBS) && !defined(FINAL)
+ RtCharsetBufferFlush();
+#endif
+}
void *
RwMallocAlign(RwUInt32 size, RwUInt32 align)
@@ -347,21 +385,6 @@ CameraCreate(RwInt32 width, RwInt32 height, RwBool zBuffer)
return (nil);
}
-void CreateDebugFont()
-{
- ;
-}
-
-void DestroyDebugFont()
-{
- ;
-}
-
-void FlushObrsPrintfs()
-{
- ;
-}
-
WRAPPER void _TexturePoolsInitialise() { EAXJMP(0x598B10); }
WRAPPER void _TexturePoolsShutdown() { EAXJMP(0x598B30); }
diff --git a/src/rw/RwHelper.h b/src/rw/RwHelper.h
index a9f0bdf4..5b47cb6f 100644
--- a/src/rw/RwHelper.h
+++ b/src/rw/RwHelper.h
@@ -5,6 +5,7 @@ void RwFreeAlign(void *mem);
void CreateDebugFont();
void DestroyDebugFont();
+void ObrsPrintfString(const char *str, short x, short y);
void FlushObrsPrintfs();
void DefinedState(void);
RwFrame *GetFirstChild(RwFrame *frame);
diff --git a/src/rw/RwMatFX.cpp b/src/rw/RwMatFX.cpp
index ca9a633b..3af6fabe 100644
--- a/src/rw/RwMatFX.cpp
+++ b/src/rw/RwMatFX.cpp
@@ -43,8 +43,16 @@ struct MatFX
int effects;
};
+#ifdef RWLIBS
+extern "C" {
+ extern int MatFXMaterialDataOffset;
+ extern int MatFXAtomicDataOffset;
+ void _rpMatFXD3D8AtomicMatFXEnvRender(RxD3D8InstanceData* inst, int flags, int sel, RwTexture* texture, RwTexture* envMap);
+}
+#else
int &MatFXMaterialDataOffset = *(int*)0x66188C;
int &MatFXAtomicDataOffset = *(int*)0x66189C;
+#endif
#ifdef PS2_MATFX
@@ -206,8 +214,13 @@ _rpMatFXD3D8AtomicMatFXEnvRender_ps2(RxD3D8InstanceData *inst, int flags, int se
RwD3D8SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
}
+
STARTPATCHES
+#ifdef RWLIBS
+ InjectHook((uintptr)&_rpMatFXD3D8AtomicMatFXEnvRender, _rpMatFXD3D8AtomicMatFXEnvRender_ps2, PATCH_JUMP);
+#else
InjectHook(0x5CF6C0, _rpMatFXD3D8AtomicMatFXEnvRender_ps2, PATCH_JUMP);
+#endif
ENDPATCHES
#endif