summaryrefslogtreecommitdiffstats
path: root/src/render
diff options
context:
space:
mode:
authoraap <aap@papnet.eu>2019-05-30 21:24:47 +0200
committeraap <aap@papnet.eu>2019-05-30 21:24:47 +0200
commit188aab4196c1d9de0c1bf33be1114e7a0e11fd19 (patch)
treeff0c0a98ced0ba0bbabf34f5f6b1c0e152dcb194 /src/render
parentfixed ped states (diff)
downloadre3-188aab4196c1d9de0c1bf33be1114e7a0e11fd19.tar
re3-188aab4196c1d9de0c1bf33be1114e7a0e11fd19.tar.gz
re3-188aab4196c1d9de0c1bf33be1114e7a0e11fd19.tar.bz2
re3-188aab4196c1d9de0c1bf33be1114e7a0e11fd19.tar.lz
re3-188aab4196c1d9de0c1bf33be1114e7a0e11fd19.tar.xz
re3-188aab4196c1d9de0c1bf33be1114e7a0e11fd19.tar.zst
re3-188aab4196c1d9de0c1bf33be1114e7a0e11fd19.zip
Diffstat (limited to '')
-rw-r--r--src/render/Coronas.cpp4
-rw-r--r--src/render/Coronas.h3
-rw-r--r--src/render/Draw.cpp5
-rw-r--r--src/render/Draw.h5
-rw-r--r--src/render/Fluff.cpp5
-rw-r--r--src/render/Fluff.h7
-rw-r--r--src/render/Font.cpp12
-rw-r--r--src/render/Glass.cpp (renamed from src/Glass.cpp)2
-rw-r--r--src/render/Glass.h (renamed from src/Glass.h)1
-rw-r--r--src/render/Hud.cpp6
-rw-r--r--src/render/Hud.h8
-rw-r--r--src/render/Lights.cpp2
-rw-r--r--src/render/Particle.cpp6
-rw-r--r--src/render/PointLights.cpp5
-rw-r--r--src/render/PointLights.h7
-rw-r--r--src/render/Renderer.cpp8
-rw-r--r--src/render/Rubbish.cpp5
-rw-r--r--src/render/Rubbish.h7
-rw-r--r--src/render/Shadows.cpp4
-rw-r--r--src/render/Shadows.h4
-rw-r--r--src/render/Skidmarks.cpp5
-rw-r--r--src/render/Skidmarks.h7
-rw-r--r--src/render/SpecialFX.cpp5
-rw-r--r--src/render/SpecialFX.h7
-rw-r--r--src/render/Sprite.cpp12
-rw-r--r--src/render/Sprite2d.cpp28
-rw-r--r--src/render/WaterCannon.cpp5
-rw-r--r--src/render/WaterCannon.h7
-rw-r--r--src/render/WaterLevel.cpp5
-rw-r--r--src/render/WaterLevel.h7
-rw-r--r--src/render/WeaponEffects.cpp5
-rw-r--r--src/render/WeaponEffects.h7
32 files changed, 171 insertions, 35 deletions
diff --git a/src/render/Coronas.cpp b/src/render/Coronas.cpp
index 39b85246..ee3f3da1 100644
--- a/src/render/Coronas.cpp
+++ b/src/render/Coronas.cpp
@@ -1,4 +1,5 @@
#include "common.h"
+#include "patcher.h"
#include "Coronas.h"
RwTexture **gpCoronaTexture = (RwTexture**)0x5FAF44; //[9]
@@ -8,3 +9,6 @@ float &CCoronas::SunScreenX = *(float*)0x8F4358;
float &CCoronas::SunScreenY = *(float*)0x8F4354;
bool &CCoronas::bSmallMoon = *(bool*)0x95CD49;
bool &CCoronas::SunBlockedByClouds = *(bool*)0x95CD73;
+
+WRAPPER void CCoronas::Render(void) { EAXJMP(0x4F8FB0); }
+WRAPPER void CCoronas::RenderReflections(void) { EAXJMP(0x4F9B40); }
diff --git a/src/render/Coronas.h b/src/render/Coronas.h
index 4ec7dd3b..796983bd 100644
--- a/src/render/Coronas.h
+++ b/src/render/Coronas.h
@@ -10,4 +10,7 @@ public:
static float &SunScreenX;
static bool &bSmallMoon;
static bool &SunBlockedByClouds;
+
+ static void Render(void);
+ static void RenderReflections(void);
};
diff --git a/src/render/Draw.cpp b/src/render/Draw.cpp
index 6244c3fa..7c5a48ad 100644
--- a/src/render/Draw.cpp
+++ b/src/render/Draw.cpp
@@ -6,6 +6,11 @@ float &CDraw::ms_fNearClipZ = *(float*)0x8E2DC4;
float &CDraw::ms_fFarClipZ = *(float*)0x9434F0;
float &CDraw::ms_fFOV = *(float*)0x5FBC6C;
+uint8 &CDraw::FadeValue = *(uint8*)0x95CD68;
+uint8 &CDraw::FadeRed = *(uint8*)0x95CD90;
+uint8 &CDraw::FadeGreen = *(uint8*)0x95CD71;
+uint8 &CDraw::FadeBlue = *(uint8*)0x95CD53;
+
static float hFov2vFov(float hfov)
{
float w = SCREENW;
diff --git a/src/render/Draw.h b/src/render/Draw.h
index 84ec7ed3..408c41b0 100644
--- a/src/render/Draw.h
+++ b/src/render/Draw.h
@@ -7,6 +7,11 @@ private:
static float &ms_fFarClipZ;
static float &ms_fFOV;
public:
+ static uint8 &FadeValue;
+ static uint8 &FadeRed;
+ static uint8 &FadeGreen;
+ static uint8 &FadeBlue;
+
static void SetNearClipZ(float nearclip) { ms_fNearClipZ = nearclip; }
static float GetNearClipZ(void) { return ms_fNearClipZ; }
static void SetFarClipZ(float farclip) { ms_fFarClipZ = farclip; }
diff --git a/src/render/Fluff.cpp b/src/render/Fluff.cpp
new file mode 100644
index 00000000..b1b8aa92
--- /dev/null
+++ b/src/render/Fluff.cpp
@@ -0,0 +1,5 @@
+#include "common.h"
+#include "patcher.h"
+#include "Fluff.h"
+
+WRAPPER void CMovingThings::Render(void) { EAXJMP(0x4FF210); }
diff --git a/src/render/Fluff.h b/src/render/Fluff.h
new file mode 100644
index 00000000..33532efa
--- /dev/null
+++ b/src/render/Fluff.h
@@ -0,0 +1,7 @@
+#pragma once
+
+class CMovingThings
+{
+public:
+ static void Render(void);
+};
diff --git a/src/render/Font.cpp b/src/render/Font.cpp
index b145bf38..2130fb95 100644
--- a/src/render/Font.cpp
+++ b/src/render/Font.cpp
@@ -341,22 +341,22 @@ CFont::GetTextRect(CRect *rect, float xstart, float ystart, uint16 *s)
if(Details.backgroundOnlyText){
rect->left = xstart - maxlength/2 - 4.0f;
rect->right = xstart + maxlength/2 + 4.0f;
- rect->top = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines +
+ rect->bottom = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines +
ystart + 2.0f;
- rect->bottom = ystart - 2.0f;
+ rect->top = ystart - 2.0f;
}else{
rect->left = xstart - Details.centreSize*0.5f - 4.0f;
rect->right = xstart + Details.centreSize*0.5f + 4.0f;
- rect->top = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines +
+ rect->bottom = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines +
ystart + 2.0f;
- rect->bottom = ystart - 2.0f;
+ rect->top = ystart - 2.0f;
}
}else{
rect->left = xstart - 4.0f;
rect->right = Details.wrapX;
// WTF?
- rect->top = ystart - 4.0f + 4.0f;
- rect->bottom = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines +
+ rect->bottom = ystart - 4.0f + 4.0f;
+ rect->top = (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * numLines +
ystart + 2.0f + 2.0f;
}
}
diff --git a/src/Glass.cpp b/src/render/Glass.cpp
index 7b02cb6c..aba8f9e0 100644
--- a/src/Glass.cpp
+++ b/src/render/Glass.cpp
@@ -13,3 +13,5 @@ CGlass::WindowRespondsToSoftCollision(CEntity *ent, float amount)
{
EAXJMP(0x504630);
}
+
+WRAPPER void CGlass::Render(void) { EAXJMP(0x502350); }
diff --git a/src/Glass.h b/src/render/Glass.h
index 5347467b..460c4548 100644
--- a/src/Glass.h
+++ b/src/render/Glass.h
@@ -7,4 +7,5 @@ class CGlass
public:
static void WindowRespondsToCollision(CEntity *ent, float amount, CVector speed, CVector point, bool foo);
static void WindowRespondsToSoftCollision(CEntity *ent, float amount);
+ static void Render(void);
};
diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp
new file mode 100644
index 00000000..f3211fd6
--- /dev/null
+++ b/src/render/Hud.cpp
@@ -0,0 +1,6 @@
+#include "common.h"
+#include "patcher.h"
+#include "Hud.h"
+
+WRAPPER void CHud::Draw(void) { EAXJMP(0x5052A0); }
+WRAPPER void CHud::DrawAfterFade(void) { EAXJMP(0x509030); }
diff --git a/src/render/Hud.h b/src/render/Hud.h
new file mode 100644
index 00000000..72d3c6ad
--- /dev/null
+++ b/src/render/Hud.h
@@ -0,0 +1,8 @@
+#pragma once
+
+class CHud
+{
+public:
+ static void Draw(void);
+ static void DrawAfterFade(void);
+};
diff --git a/src/render/Lights.cpp b/src/render/Lights.cpp
index 6962af4d..7954a07d 100644
--- a/src/render/Lights.cpp
+++ b/src/render/Lights.cpp
@@ -7,7 +7,7 @@
#include "Coronas.h"
#include "Weather.h"
#include "CullZones.h"
-#include "MenuManager.h"
+#include "Frontend.h"
RpLight *&pAmbient = *(RpLight**)0x885B6C;
RpLight *&pDirect = *(RpLight**)0x880F7C;
diff --git a/src/render/Particle.cpp b/src/render/Particle.cpp
index 18ea4c6c..bd4f7696 100644
--- a/src/render/Particle.cpp
+++ b/src/render/Particle.cpp
@@ -1853,18 +1853,18 @@ void CParticle::AddYardieDoorSmoke(CVector const &vecPos, CMatrix const &matMatr
}
STARTPATCHES
+return; // causes crash, out temporarily
//InjectHook(0x50C410, &CParticle::ctor, PATCH_JUMP);
//InjectHook(0x50C420, &CParticle::dtor, PATCH_JUMP);
InjectHook(0x50C430, CParticle::ReloadConfig, PATCH_JUMP);
InjectHook(0x50C570, CParticle::Initialise, PATCH_JUMP);
InjectHook(0x50CF40, CParticle::Shutdown, PATCH_JUMP);
//InjectHook(0x50D140, CParticle::AddParticle, PATCH_JUMP);
- InjectHook(0x50D190, (CParticle* (__cdecl *)(tParticleType, CVector const&, CVector const&, CEntity*, float, RwRGBA const&, int, int, int, int))CParticle::AddParticle, PATCH_JUMP);
+ InjectHook(0x50D190, (CParticle *(*)(tParticleType, CVector const&, CVector const&, CEntity*, float, RwRGBA const&, int, int, int, int))CParticle::AddParticle, PATCH_JUMP);
InjectHook(0x50DCF0, CParticle::Update, PATCH_JUMP);
InjectHook(0x50EE20, CParticle::Render, PATCH_JUMP);
InjectHook(0x50F6E0, CParticle::RemovePSystem, PATCH_JUMP);
InjectHook(0x50F720, CParticle::RemoveParticle, PATCH_JUMP);
InjectHook(0x50F760, CParticle::AddJetExplosion, PATCH_JUMP);
InjectHook(0x50FAA0, CParticle::AddYardieDoorSmoke, PATCH_JUMP);
-
-ENDPATCHES \ No newline at end of file
+ENDPATCHES
diff --git a/src/render/PointLights.cpp b/src/render/PointLights.cpp
new file mode 100644
index 00000000..8496d8aa
--- /dev/null
+++ b/src/render/PointLights.cpp
@@ -0,0 +1,5 @@
+#include "common.h"
+#include "patcher.h"
+#include "PointLights.h"
+
+WRAPPER void CPointLights::RenderFogEffect(void) { EAXJMP(0x510C30); }
diff --git a/src/render/PointLights.h b/src/render/PointLights.h
new file mode 100644
index 00000000..d20fbb7e
--- /dev/null
+++ b/src/render/PointLights.h
@@ -0,0 +1,7 @@
+#pragma once
+
+class CPointLights
+{
+public:
+ static void RenderFogEffect(void);
+};
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index f8703c01..70002dcf 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -602,9 +602,9 @@ CRenderer::ScanWorld(void)
if(x1 < 0) x1 = 0;
x2 = CWorld::GetSectorIndexX(rect.right);
if(x2 >= NUMSECTORS_X-1) x2 = NUMSECTORS_X-1;
- y1 = CWorld::GetSectorIndexY(rect.bottom);
+ y1 = CWorld::GetSectorIndexY(rect.top);
if(y1 < 0) y1 = 0;
- y2 = CWorld::GetSectorIndexY(rect.top);
+ y2 = CWorld::GetSectorIndexY(rect.bottom);
if(y2 >= NUMSECTORS_Y-1) y2 = NUMSECTORS_Y-1;
for(; x1 <= x2; x1++)
for(int y = y1; y <= y2; y++)
@@ -713,9 +713,9 @@ CRenderer::RequestObjectsInFrustum(void)
if(x1 < 0) x1 = 0;
x2 = CWorld::GetSectorIndexX(rect.right);
if(x2 >= NUMSECTORS_X-1) x2 = NUMSECTORS_X-1;
- y1 = CWorld::GetSectorIndexY(rect.bottom);
+ y1 = CWorld::GetSectorIndexY(rect.top);
if(y1 < 0) y1 = 0;
- y2 = CWorld::GetSectorIndexY(rect.top);
+ y2 = CWorld::GetSectorIndexY(rect.bottom);
if(y2 >= NUMSECTORS_Y-1) y2 = NUMSECTORS_Y-1;
for(; x1 <= x2; x1++)
for(int y = y1; y <= y2; y++)
diff --git a/src/render/Rubbish.cpp b/src/render/Rubbish.cpp
new file mode 100644
index 00000000..975f2554
--- /dev/null
+++ b/src/render/Rubbish.cpp
@@ -0,0 +1,5 @@
+#include "common.h"
+#include "patcher.h"
+#include "Rubbish.h"
+
+WRAPPER void CRubbish::Render(void) { EAXJMP(0x512190); }
diff --git a/src/render/Rubbish.h b/src/render/Rubbish.h
new file mode 100644
index 00000000..f4f976e9
--- /dev/null
+++ b/src/render/Rubbish.h
@@ -0,0 +1,7 @@
+#pragma once
+
+class CRubbish
+{
+public:
+ static void Render(void);
+};
diff --git a/src/render/Shadows.cpp b/src/render/Shadows.cpp
index ead84e92..587dda99 100644
--- a/src/render/Shadows.cpp
+++ b/src/render/Shadows.cpp
@@ -1,7 +1,11 @@
#include "common.h"
+#include "patcher.h"
#include "Shadows.h"
void CShadows::AddPermanentShadow(unsigned char ShadowType, RwTexture* pTexture, CVector* pPosn, float fX1, float fY1, float fX2, float fY2, short nTransparency, unsigned char nRed, unsigned char nGreen, unsigned char nBlue, float fZDistance, unsigned int nTime, float fScale)
{
((void (__cdecl *)(unsigned char, RwTexture*, CVector*, float, float, float, float, short, unsigned char, unsigned char, unsigned char, float, unsigned int, float))0x56EC50)(ShadowType, pTexture, pPosn, fX1, fY1, fX2, fY2, nTransparency, nRed, nGreen, nBlue, fZDistance, nTime, fScale);
}
+
+WRAPPER void CShadows::RenderStaticShadows(void) { EAXJMP(0x5145F0); }
+WRAPPER void CShadows::RenderStoredShadows(void) { EAXJMP(0x514010); }
diff --git a/src/render/Shadows.h b/src/render/Shadows.h
index 3c7b4981..0a475f6f 100644
--- a/src/render/Shadows.h
+++ b/src/render/Shadows.h
@@ -5,5 +5,7 @@ struct RwTexture;
class CShadows
{
public:
- static void AddPermanentShadow(unsigned char ShadowType, RwTexture* pTexture, CVector* pPosn, float fX1, float fY1, float fX2, float fY2, short nTransparency, unsigned char nRed, unsigned char nGreen, unsigned char nBlue, float fZDistance, unsigned int nTime, float fScale);
+ static void AddPermanentShadow(uint8 ShadowType, RwTexture* pTexture, CVector* pPosn, float fX1, float fY1, float fX2, float fY2, short nTransparency, uint8 nRed, uint8 nGreen, uint8 nBlue, float fZDistance, uint32 nTime, float fScale);
+ static void RenderStaticShadows(void);
+ static void RenderStoredShadows(void);
}; \ No newline at end of file
diff --git a/src/render/Skidmarks.cpp b/src/render/Skidmarks.cpp
new file mode 100644
index 00000000..678e1cdc
--- /dev/null
+++ b/src/render/Skidmarks.cpp
@@ -0,0 +1,5 @@
+#include "common.h"
+#include "patcher.h"
+#include "Skidmarks.h"
+
+WRAPPER void CSkidmarks::Render(void) { EAXJMP(0x5182E0); }
diff --git a/src/render/Skidmarks.h b/src/render/Skidmarks.h
new file mode 100644
index 00000000..dcd61652
--- /dev/null
+++ b/src/render/Skidmarks.h
@@ -0,0 +1,7 @@
+#pragma once
+
+class CSkidmarks
+{
+public:
+ static void Render(void);
+};
diff --git a/src/render/SpecialFX.cpp b/src/render/SpecialFX.cpp
new file mode 100644
index 00000000..3aa60f2f
--- /dev/null
+++ b/src/render/SpecialFX.cpp
@@ -0,0 +1,5 @@
+#include "common.h"
+#include "patcher.h"
+#include "SpecialFX.h"
+
+WRAPPER void CSpecialFX::Render(void) { EAXJMP(0x518DC0); }
diff --git a/src/render/SpecialFX.h b/src/render/SpecialFX.h
new file mode 100644
index 00000000..ffa2a90a
--- /dev/null
+++ b/src/render/SpecialFX.h
@@ -0,0 +1,7 @@
+#pragma once
+
+class CSpecialFX
+{
+public:
+ static void Render(void);
+};
diff --git a/src/render/Sprite.cpp b/src/render/Sprite.cpp
index 900b4dba..2b669c87 100644
--- a/src/render/Sprite.cpp
+++ b/src/render/Sprite.cpp
@@ -377,7 +377,7 @@ CSprite::Set6Vertices2D(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, co
recipz = m_fRecipNearClipPlane;
RwIm2DVertexSetScreenX(&verts[0], r.left);
- RwIm2DVertexSetScreenY(&verts[0], r.bottom);
+ RwIm2DVertexSetScreenY(&verts[0], r.top);
RwIm2DVertexSetScreenZ(&verts[0], screenz);
RwIm2DVertexSetCameraZ(&verts[0], z);
RwIm2DVertexSetRecipCameraZ(&verts[0], recipz);
@@ -386,7 +386,7 @@ CSprite::Set6Vertices2D(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, co
RwIm2DVertexSetV(&verts[0], 0.0f, recipz);
RwIm2DVertexSetScreenX(&verts[1], r.right);
- RwIm2DVertexSetScreenY(&verts[1], r.bottom);
+ RwIm2DVertexSetScreenY(&verts[1], r.top);
RwIm2DVertexSetScreenZ(&verts[1], screenz);
RwIm2DVertexSetCameraZ(&verts[1], z);
RwIm2DVertexSetRecipCameraZ(&verts[1], recipz);
@@ -395,7 +395,7 @@ CSprite::Set6Vertices2D(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, co
RwIm2DVertexSetV(&verts[1], 0.0f, recipz);
RwIm2DVertexSetScreenX(&verts[2], r.right);
- RwIm2DVertexSetScreenY(&verts[2], r.top);
+ RwIm2DVertexSetScreenY(&verts[2], r.bottom);
RwIm2DVertexSetScreenZ(&verts[2], screenz);
RwIm2DVertexSetCameraZ(&verts[2], z);
RwIm2DVertexSetRecipCameraZ(&verts[2], recipz);
@@ -404,7 +404,7 @@ CSprite::Set6Vertices2D(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, co
RwIm2DVertexSetV(&verts[2], 1.0f, recipz);
RwIm2DVertexSetScreenX(&verts[3], r.left);
- RwIm2DVertexSetScreenY(&verts[3], r.top);
+ RwIm2DVertexSetScreenY(&verts[3], r.bottom);
RwIm2DVertexSetScreenZ(&verts[3], screenz);
RwIm2DVertexSetCameraZ(&verts[3], z);
RwIm2DVertexSetRecipCameraZ(&verts[3], recipz);
@@ -413,7 +413,7 @@ CSprite::Set6Vertices2D(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, co
RwIm2DVertexSetV(&verts[3], 1.0f, recipz);
RwIm2DVertexSetScreenX(&verts[4], r.left);
- RwIm2DVertexSetScreenY(&verts[4], r.bottom);
+ RwIm2DVertexSetScreenY(&verts[4], r.top);
RwIm2DVertexSetScreenZ(&verts[4], screenz);
RwIm2DVertexSetCameraZ(&verts[4], z);
RwIm2DVertexSetRecipCameraZ(&verts[4], recipz);
@@ -422,7 +422,7 @@ CSprite::Set6Vertices2D(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, co
RwIm2DVertexSetV(&verts[4], 0.0f, recipz);
RwIm2DVertexSetScreenX(&verts[5], r.right);
- RwIm2DVertexSetScreenY(&verts[5], r.top);
+ RwIm2DVertexSetScreenY(&verts[5], r.bottom);
RwIm2DVertexSetScreenZ(&verts[5], screenz);
RwIm2DVertexSetCameraZ(&verts[5], z);
RwIm2DVertexSetRecipCameraZ(&verts[5], recipz);
diff --git a/src/render/Sprite2d.cpp b/src/render/Sprite2d.cpp
index ff6cd0db..3c699650 100644
--- a/src/render/Sprite2d.cpp
+++ b/src/render/Sprite2d.cpp
@@ -174,7 +174,7 @@ CSprite2d::SetVertices(const CRect &r, const CRGBA &c0, const CRGBA &c1, const C
// | / |
// 3---2
RwIm2DVertexSetScreenX(&maVertices[0], r.left);
- RwIm2DVertexSetScreenY(&maVertices[0], r.bottom);
+ RwIm2DVertexSetScreenY(&maVertices[0], r.top);
RwIm2DVertexSetScreenZ(&maVertices[0], screenz);
RwIm2DVertexSetCameraZ(&maVertices[0], z);
RwIm2DVertexSetRecipCameraZ(&maVertices[0], recipz);
@@ -183,7 +183,7 @@ CSprite2d::SetVertices(const CRect &r, const CRGBA &c0, const CRGBA &c1, const C
RwIm2DVertexSetV(&maVertices[0], 0.0f, recipz);
RwIm2DVertexSetScreenX(&maVertices[1], r.right);
- RwIm2DVertexSetScreenY(&maVertices[1], r.bottom);
+ RwIm2DVertexSetScreenY(&maVertices[1], r.top);
RwIm2DVertexSetScreenZ(&maVertices[1], screenz);
RwIm2DVertexSetCameraZ(&maVertices[1], z);
RwIm2DVertexSetRecipCameraZ(&maVertices[1], recipz);
@@ -192,7 +192,7 @@ CSprite2d::SetVertices(const CRect &r, const CRGBA &c0, const CRGBA &c1, const C
RwIm2DVertexSetV(&maVertices[1], 0.0f, recipz);
RwIm2DVertexSetScreenX(&maVertices[2], r.right);
- RwIm2DVertexSetScreenY(&maVertices[2], r.top);
+ RwIm2DVertexSetScreenY(&maVertices[2], r.bottom);
RwIm2DVertexSetScreenZ(&maVertices[2], screenz);
RwIm2DVertexSetCameraZ(&maVertices[2], z);
RwIm2DVertexSetRecipCameraZ(&maVertices[2], recipz);
@@ -201,7 +201,7 @@ CSprite2d::SetVertices(const CRect &r, const CRGBA &c0, const CRGBA &c1, const C
RwIm2DVertexSetV(&maVertices[2], 1.0f, recipz);
RwIm2DVertexSetScreenX(&maVertices[3], r.left);
- RwIm2DVertexSetScreenY(&maVertices[3], r.top);
+ RwIm2DVertexSetScreenY(&maVertices[3], r.bottom);
RwIm2DVertexSetScreenZ(&maVertices[3], screenz);
RwIm2DVertexSetCameraZ(&maVertices[3], z);
RwIm2DVertexSetRecipCameraZ(&maVertices[3], recipz);
@@ -225,7 +225,7 @@ CSprite2d::SetVertices(const CRect &r, const CRGBA &c0, const CRGBA &c1, const C
// | / |
// 3---2
RwIm2DVertexSetScreenX(&maVertices[0], r.left);
- RwIm2DVertexSetScreenY(&maVertices[0], r.bottom);
+ RwIm2DVertexSetScreenY(&maVertices[0], r.top);
RwIm2DVertexSetScreenZ(&maVertices[0], screenz);
RwIm2DVertexSetCameraZ(&maVertices[0], z);
RwIm2DVertexSetRecipCameraZ(&maVertices[0], recipz);
@@ -234,7 +234,7 @@ CSprite2d::SetVertices(const CRect &r, const CRGBA &c0, const CRGBA &c1, const C
RwIm2DVertexSetV(&maVertices[0], v0, recipz);
RwIm2DVertexSetScreenX(&maVertices[1], r.right);
- RwIm2DVertexSetScreenY(&maVertices[1], r.bottom);
+ RwIm2DVertexSetScreenY(&maVertices[1], r.top);
RwIm2DVertexSetScreenZ(&maVertices[1], screenz);
RwIm2DVertexSetCameraZ(&maVertices[1], z);
RwIm2DVertexSetRecipCameraZ(&maVertices[1], recipz);
@@ -243,7 +243,7 @@ CSprite2d::SetVertices(const CRect &r, const CRGBA &c0, const CRGBA &c1, const C
RwIm2DVertexSetV(&maVertices[1], v1, recipz);
RwIm2DVertexSetScreenX(&maVertices[2], r.right);
- RwIm2DVertexSetScreenY(&maVertices[2], r.top);
+ RwIm2DVertexSetScreenY(&maVertices[2], r.bottom);
RwIm2DVertexSetScreenZ(&maVertices[2], screenz);
RwIm2DVertexSetCameraZ(&maVertices[2], z);
RwIm2DVertexSetRecipCameraZ(&maVertices[2], recipz);
@@ -252,7 +252,7 @@ CSprite2d::SetVertices(const CRect &r, const CRGBA &c0, const CRGBA &c1, const C
RwIm2DVertexSetV(&maVertices[2], v2, recipz);
RwIm2DVertexSetScreenX(&maVertices[3], r.left);
- RwIm2DVertexSetScreenY(&maVertices[3], r.top);
+ RwIm2DVertexSetScreenY(&maVertices[3], r.bottom);
RwIm2DVertexSetScreenZ(&maVertices[3], screenz);
RwIm2DVertexSetCameraZ(&maVertices[3], z);
RwIm2DVertexSetRecipCameraZ(&maVertices[3], recipz);
@@ -358,7 +358,7 @@ CSprite2d::SetVertices(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, con
recipz = RecipNearClip;
RwIm2DVertexSetScreenX(&verts[0], r.left);
- RwIm2DVertexSetScreenY(&verts[0], r.bottom);
+ RwIm2DVertexSetScreenY(&verts[0], r.top);
RwIm2DVertexSetScreenZ(&verts[0], screenz);
RwIm2DVertexSetCameraZ(&verts[0], z);
RwIm2DVertexSetRecipCameraZ(&verts[0], recipz);
@@ -367,7 +367,7 @@ CSprite2d::SetVertices(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, con
RwIm2DVertexSetV(&verts[0], v0, recipz);
RwIm2DVertexSetScreenX(&verts[1], r.left);
- RwIm2DVertexSetScreenY(&verts[1], r.top);
+ RwIm2DVertexSetScreenY(&verts[1], r.bottom);
RwIm2DVertexSetScreenZ(&verts[1], screenz);
RwIm2DVertexSetCameraZ(&verts[1], z);
RwIm2DVertexSetRecipCameraZ(&verts[1], recipz);
@@ -376,7 +376,7 @@ CSprite2d::SetVertices(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, con
RwIm2DVertexSetV(&verts[1], v2, recipz);
RwIm2DVertexSetScreenX(&verts[2], r.right);
- RwIm2DVertexSetScreenY(&verts[2], r.top);
+ RwIm2DVertexSetScreenY(&verts[2], r.bottom);
RwIm2DVertexSetScreenZ(&verts[2], screenz);
RwIm2DVertexSetCameraZ(&verts[2], z);
RwIm2DVertexSetRecipCameraZ(&verts[2], recipz);
@@ -385,7 +385,7 @@ CSprite2d::SetVertices(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, con
RwIm2DVertexSetV(&verts[2], v3, recipz);
RwIm2DVertexSetScreenX(&verts[3], r.left);
- RwIm2DVertexSetScreenY(&verts[3], r.bottom);
+ RwIm2DVertexSetScreenY(&verts[3], r.top);
RwIm2DVertexSetScreenZ(&verts[3], screenz);
RwIm2DVertexSetCameraZ(&verts[3], z);
RwIm2DVertexSetRecipCameraZ(&verts[3], recipz);
@@ -394,7 +394,7 @@ CSprite2d::SetVertices(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, con
RwIm2DVertexSetV(&verts[3], v0, recipz);
RwIm2DVertexSetScreenX(&verts[4], r.right);
- RwIm2DVertexSetScreenY(&verts[4], r.top);
+ RwIm2DVertexSetScreenY(&verts[4], r.bottom);
RwIm2DVertexSetScreenZ(&verts[4], screenz);
RwIm2DVertexSetCameraZ(&verts[4], z);
RwIm2DVertexSetRecipCameraZ(&verts[4], recipz);
@@ -403,7 +403,7 @@ CSprite2d::SetVertices(RwIm2DVertex *verts, const CRect &r, const CRGBA &c0, con
RwIm2DVertexSetV(&verts[4], v3, recipz);
RwIm2DVertexSetScreenX(&verts[5], r.right);
- RwIm2DVertexSetScreenY(&verts[5], r.bottom);
+ RwIm2DVertexSetScreenY(&verts[5], r.top);
RwIm2DVertexSetScreenZ(&verts[5], screenz);
RwIm2DVertexSetCameraZ(&verts[5], z);
RwIm2DVertexSetRecipCameraZ(&verts[5], recipz);
diff --git a/src/render/WaterCannon.cpp b/src/render/WaterCannon.cpp
new file mode 100644
index 00000000..afb40f6f
--- /dev/null
+++ b/src/render/WaterCannon.cpp
@@ -0,0 +1,5 @@
+#include "common.h"
+#include "patcher.h"
+#include "WaterCannon.h"
+
+WRAPPER void CWaterCannons::Render(void) { EAXJMP(0x522550); }
diff --git a/src/render/WaterCannon.h b/src/render/WaterCannon.h
new file mode 100644
index 00000000..1a18e75f
--- /dev/null
+++ b/src/render/WaterCannon.h
@@ -0,0 +1,7 @@
+#pragma once
+
+class CWaterCannons
+{
+public:
+ static void Render(void);
+};
diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp
new file mode 100644
index 00000000..866847b3
--- /dev/null
+++ b/src/render/WaterLevel.cpp
@@ -0,0 +1,5 @@
+#include "common.h"
+#include "patcher.h"
+#include "WaterLevel.h"
+
+WRAPPER void CWaterLevel::RenderWater(void) { EAXJMP(0x5554E0); }
diff --git a/src/render/WaterLevel.h b/src/render/WaterLevel.h
new file mode 100644
index 00000000..70a2ba97
--- /dev/null
+++ b/src/render/WaterLevel.h
@@ -0,0 +1,7 @@
+#pragma once
+
+class CWaterLevel
+{
+public:
+ static void RenderWater(void);
+};
diff --git a/src/render/WeaponEffects.cpp b/src/render/WeaponEffects.cpp
new file mode 100644
index 00000000..a1a6d25a
--- /dev/null
+++ b/src/render/WeaponEffects.cpp
@@ -0,0 +1,5 @@
+#include "common.h"
+#include "patcher.h"
+#include "WeaponEffects.h"
+
+WRAPPER void CWeaponEffects::Render(void) { EAXJMP(0x564D70); }
diff --git a/src/render/WeaponEffects.h b/src/render/WeaponEffects.h
new file mode 100644
index 00000000..63c8fd7d
--- /dev/null
+++ b/src/render/WeaponEffects.h
@@ -0,0 +1,7 @@
+#pragma once
+
+class CWeaponEffects
+{
+public:
+ static void Render(void);
+};