From f9fb40518b148be5e472ae4d47651d594ec5421b Mon Sep 17 00:00:00 2001 From: John Tsiombikas Date: Wed, 7 Sep 2022 11:02:48 +0300 Subject: [PATCH] fixed near clip --- Makefile | 2 +- src/xgl.c | 11 ++++++----- src/xgl.h | 2 ++ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index e61b6b9..ce12325 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ AS = $(TCPREFIX)as OBJCOPY = $(TCPREFIX)objcopy OBJDUMP = $(TCPREFIX)objdump -opt = -O3 -fomit-frame-pointer -mcpu=arm7tdmi -mtune=arm7tdmi -mthumb -mthumb-interwork +opt = -O0 -fomit-frame-pointer -mcpu=arm7tdmi -mtune=arm7tdmi -mthumb -mthumb-interwork dbg = -g inc = -I. -Ilibs/maxmod diff --git a/src/xgl.c b/src/xgl.c index c76991b..8f59d90 100644 --- a/src/xgl.c +++ b/src/xgl.c @@ -191,7 +191,7 @@ static void xform_norm(struct xvertex *out, const struct xvertex *in, const int3 /* d = 1.0 / tan(fov/2) */ #define PROJ_D 0x20000 /* near Z = 0.5 */ -#define NEAR_Z 0x30000 +#define NEAR_Z 0x40000 void xgl_draw(int prim, const struct xvertex *varr, int vcount) { @@ -293,13 +293,14 @@ void xgl_xyzzy(void) mat[mtop][12] = mat[mtop][13] = 0; } -#define ISECT_NEAR(v0, v1) ((((v0)->z - NEAR_Z) << 8) / (((v0)->z - (v1)->z) >> 8)) +/* 24.8 */ +#define ISECT_NEAR(v0, v1) ((((v0)->z - NEAR_Z) << 8) / ((v0)->z - (v1)->z)) #define LERP_VATTR(res, v0, v1, t) \ do { \ - (res)->x = (v0)->x + (((v1)->x - (v0)->x) >> 8) * (t); \ - (res)->y = (v0)->y + (((v1)->y - (v0)->y) >> 8) * (t); \ - (res)->z = (v0)->z + (((v1)->z - (v0)->z) >> 8) * (t); \ + (res)->x = (v0)->x + (((v1)->x - (v0)->x) * (t) >> 8); \ + (res)->y = (v0)->y + (((v1)->y - (v0)->y) * (t) >> 8); \ + (res)->z = (v0)->z + (((v1)->z - (v0)->nx) >> 8) * (t); \ (res)->nx = (v0)->nx + (((v1)->nx - (v0)->nx) >> 8) * (t); \ (res)->ny = (v0)->ny + (((v1)->ny - (v0)->ny) >> 8) * (t); \ (res)->nz = (v0)->nz + (((v1)->nz - (v0)->nz) >> 8) * (t); \ diff --git a/src/xgl.h b/src/xgl.h index 979de5f..51dd64c 100644 --- a/src/xgl.h +++ b/src/xgl.h @@ -18,6 +18,8 @@ along with this program. If not, see . #ifndef XGL_H_ #define XGL_H_ +#include + #define X_PI 0x3243f #define X_2PI 0x6487f #define X_HPI 0x19220 -- 1.7.10.4