fixed near clip
authorJohn Tsiombikas <nuclear@member.fsf.org>
Wed, 7 Sep 2022 08:02:48 +0000 (11:02 +0300)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Wed, 7 Sep 2022 08:02:48 +0000 (11:02 +0300)
Makefile
src/xgl.c
src/xgl.h

index e61b6b9..ce12325 100644 (file)
--- 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
 
index c76991b..8f59d90 100644 (file)
--- 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);      \
index 979de5f..51dd64c 100644 (file)
--- a/src/xgl.h
+++ b/src/xgl.h
@@ -18,6 +18,8 @@ along with this program.  If not, see <https://www.gnu.org/licenses/>.
 #ifndef XGL_H_
 #define XGL_H_
 
+#include <stdint.h>
+
 #define X_PI   0x3243f
 #define X_2PI  0x6487f
 #define X_HPI  0x19220