summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libgfxd/.gitrepo6
-rw-r--r--lib/libgfxd/gbi.h26
-rw-r--r--lib/libgfxd/uc_argtbl.c5
-rw-r--r--lib/libgfxd/uc_macrofn.c27
4 files changed, 44 insertions, 20 deletions
diff --git a/lib/libgfxd/.gitrepo b/lib/libgfxd/.gitrepo
index c5e0d08..4c8b7fe 100644
--- a/lib/libgfxd/.gitrepo
+++ b/lib/libgfxd/.gitrepo
@@ -4,9 +4,9 @@
; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
;
[subrepo]
- remote = https://github.com/glankk/libgfxd.git
+ remote = git@github.com:glankk/libgfxd.git
branch = master
- commit = 01db16329ef5cac23566b6d143b57d0525e22876
- parent = c6b352aac040527d2962f3e764e460eb9e813fe5
+ commit = 008f73dca8ebc9151b205959b17773a19c5bd0da
+ parent = c92cfda733aa740a53129a21f69c8abb08a465c7
method = merge
cmdver = 0.4.3
diff --git a/lib/libgfxd/gbi.h b/lib/libgfxd/gbi.h
index bc264ee..69fa7f1 100644
--- a/lib/libgfxd/gbi.h
+++ b/lib/libgfxd/gbi.h
@@ -1,5 +1,5 @@
/**
- * gbi.h version 0.3.5
+ * gbi.h version 0.3.6
* n64 graphics microcode interface library
* compatible with fast3d, f3dex, f3dex2, s2dex, and s2dex2
*
@@ -2766,6 +2766,14 @@
gF_(gV4_(v2, v3, v0, v1, flag) * 2, 8, 8) | \
gF_(gV4_(v3, v0, v1, v2, flag) * 2, 8, 0))
+# define gsSPLineW3D(v0, v1, wd, flag) \
+ gO_( \
+ G_LINE3D, \
+ 0, \
+ gF_(gV2_(v0, v1, flag) * 2, 8, 16) | \
+ gF_(gV2_(v1, v0, flag) * 2, 8, 8) | \
+ gF_(wd, 8, 0))
+
# define gsSPVertex(v, n, v0) \
gO_( \
G_VTX, \
@@ -2807,14 +2815,6 @@
gF_((v0) * 2, 16, 0), \
gF_((vn) * 2, 16, 0))
-# define gsSPLineW3D(v0, v1, wd, flag) \
- gO_( \
- G_LINE3D, \
- gF_(gV2_(v0, v1, flag) * 2, 8, 16) | \
- gF_(gV2_(v1, v0, flag) * 2, 8, 8) | \
- gF_(wd, 8, 0), \
- 0)
-
# define gsSPLoadUcode(uc_start, uc_dstart) \
gsSPLoadUcodeEx(uc_start, uc_dstart, 0x800)
@@ -2886,6 +2886,14 @@
# define gsSPLoadGeometryMode(mode) \
gsSPGeometryMode(~gI_(0), mode)
+# define gsSPLineW3D(v0, v1, wd, flag) \
+ gO_( \
+ G_LINE3D, \
+ gF_(gV2_(v0, v1, flag) * 2, 8, 16) | \
+ gF_(gV2_(v1, v0, flag) * 2, 8, 8) | \
+ gF_(wd, 8, 0), \
+ 0)
+
# define gsSPLookAtX(l) \
gsMoveMem(sizeof(Light), G_MV_LIGHT, G_MVO_LOOKATX, l)
diff --git a/lib/libgfxd/uc_argtbl.c b/lib/libgfxd/uc_argtbl.c
index 09baa0a..22a0b65 100644
--- a/lib/libgfxd/uc_argtbl.c
+++ b/lib/libgfxd/uc_argtbl.c
@@ -422,11 +422,6 @@ static const gfxd_arg_type_t arg_tbl[] =
.fmt = gfxd_argfmt_u,
.fn = argfn_x32,
},
- [gfxd_Dlflag] =
- {
- .fmt = gfxd_argfmt_i,
- .fn = argfn_i,
- },
[gfxd_Sftlo] =
{
.fmt = gfxd_argfmt_i,
diff --git a/lib/libgfxd/uc_macrofn.c b/lib/libgfxd/uc_macrofn.c
index 7659325..46d4b4e 100644
--- a/lib/libgfxd/uc_macrofn.c
+++ b/lib/libgfxd/uc_macrofn.c
@@ -1467,7 +1467,29 @@ UCFUNC int d_SPLine3D(gfxd_macro_t *m, uint32_t hi, uint32_t lo)
}
return ret;
}
-#elif defined(F3DEX_GBI) || defined(F3DEX_GBI_2)
+#elif defined(F3DEX_GBI)
+UCFUNC int d_SPLine3D(gfxd_macro_t *m, uint32_t hi, uint32_t lo)
+{
+ m->id = gfxd_SPLine3D;
+ int n0 = getfield(lo, 8, 16);
+ int n1 = getfield(lo, 8, 8);
+ argi(m, 0, "v0", n0 / 2, gfxd_Vtx);
+ argi(m, 1, "v1", n1 / 2, gfxd_Vtx);
+ argi(m, 2, "flag", 0, gfxd_Vtxflag);
+ int ret = 0;
+ if (n0 % 2 != 0)
+ {
+ badarg(m, 0);
+ ret = -1;
+ }
+ if (n1 % 2 != 0)
+ {
+ badarg(m, 1);
+ ret = -1;
+ }
+ return ret;
+}
+#elif defined(F3DEX_GBI_2)
UCFUNC int d_SPLine3D(gfxd_macro_t *m, uint32_t hi, uint32_t lo)
{
m->id = gfxd_SPLine3D;
@@ -2047,7 +2069,6 @@ UCFUNC int c_DPLoadTLUT(gfxd_macro_t *m, int n_macro)
return 0;
}
-#pragma warning(disable:4146)
#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2)
UCFUNC int d_BranchZ(gfxd_macro_t *m, uint32_t hi, uint32_t lo)
{
@@ -2056,7 +2077,7 @@ UCFUNC int d_BranchZ(gfxd_macro_t *m, uint32_t hi, uint32_t lo)
int nb = getfield(hi, 12, 0);
int32_t zval;
if (lo > 0x7FFFFFFF)
- zval = -0x80000000 + (int32_t)(lo & 0x7FFFFFFF);
+ zval = INT32_MIN + (int32_t)(lo & 0x7FFFFFFF);
else
zval = lo;
argi(m, 0, "vtx", nb / 2, gfxd_Vtx);