## pls write articles for ULTERSHIT

**category:**general [glöplog]

hello we have a new fuckmag its have no articles so pls write!!11!

we need your articles. you can fart them and we write it down. but pls we need. and you will be part of the biggest shit ever magged!

we need your articles. you can fart them and we write it down. but pls we need. and you will be part of the biggest shit ever magged!

hahahahaha, great joke ! :)

do you except outlines via skype? it's the future of communication btw.

ULTRAMAN!!!

..and the town is U

W=1/Z

V is the missing link

void DrawTextureTriangleZB(poly2d poly, unsigned short *vram, int tshr, unsigned short texture[])

{

int x0 =spts[poly.p0].x; int y0 =spts[poly.p0].y;

int x1 =spts[poly.p1].x; int y1 =spts[poly.p1].y;

int x2 =spts[poly.p2].x; int y2 =spts[poly.p2].y;

int c;

int u0 = poly.tc0.u; int v0 = poly.tc0.v;

int u1 = poly.tc1.u; int v1 = poly.tc1.v;

int u2 = poly.tc2.u; int v2 = poly.tc2.v;

int zfp = 0;

int z0 = fpts[poly.p0].z >> zfp;

int z1 = fpts[poly.p1].z >> zfp;

int z2 = fpts[poly.p2].z >> zfp;

// ===== Sort =====

int temp;

if (x1<x0)

{

temp = u0; u0 = u1; u1 = temp;

temp = v0; v0 = v1; v1 = temp;

temp = z0; z0 = z1; z1 = temp;

temp = x0; x0 = x1; x1 = temp;

temp = y0; y0 = y1; y1 = temp;

}

if (x2<x0)

{

temp = u0; u0 = u2; u2 = temp;

temp = v0; v0 = v2; v2 = temp;

temp = z0; z0 = z2; z2 = temp;

temp = x0; x0 = x2; x2 = temp;

temp = y0; y0 = y2; y2 = temp;

}

if (x2<x1)

{

temp = u1; u1 = u2; u2 = temp;

temp = v1; v1 = v2; v2 = temp;

temp = z1; z1 = z2; z2 = temp;

temp = x1; x1 = x2; x2 = temp;

temp = y1; y1 = y2; y2 = temp;

}

// ===== Interpolation variables =====

int n;

int fp = 8;

int ly01=0, ly12=0, ly02=0;

int lu01=0, lu12=0, lu02=0;

int lv01=0, lv12=0, lv02=0;

int lz01=0, lz12=0, lz02=0;

int dx01 = x1 - x0;

int dy01 = y1 - y0;

int du01 = u1 - u0;

int dv01 = v1 - v0;

int dz01 = z1 - z0;

ly01 = ((dy01<<fp)*div[dx01+2048])>>16;

lu01 = ((du01<<fp)*div[dx01+2048])>>16;

lv01 = ((dv01<<fp)*div[dx01+2048])>>16;

lz01 = (dz01*div[dx01+2048])>>16;

int dx12 = x2 - x1;

int dy12 = y2 - y1;

int du12 = u2 - u1;

int dv12 = v2 - v1;

int dz12 = z2 - z1;

ly12 = ((dy12<<fp)*div[dx12+2048])>>16;

lu12 = ((du12<<fp)*div[dx12+2048])>>16;

lv12 = ((dv12<<fp)*div[dx12+2048])>>16;

lz12 = (dz12*div[dx12+2048])>>16;

int dx02 = x2 - x0;

int dy02 = y2 - y0;

int du02 = u2 - u0;

int dv02 = v2 - v0;

int dz02 = z2 - z0;

ly02 = ((dy02<<fp)*div[dx02+2048])>>16;

lu02 = ((du02<<fp)*div[dx02+2048])>>16;

lv02 = ((dv02<<fp)*div[dx02+2048])>>16;

lz02 = (dz02*div[dx02+2048])>>16;

int vramofs;

int x, y;

int y01 = y0<<fp;

int y02 = y01;

int u01 = u0<<fp;

int u02 = u01;

int v01 = v0<<fp;

int v02 = v01;

int z01 = z0;

int z02 = z01;

int du, dv, dz;

int su1, su2;

int sv1, sv2;

int sy1, sy2;

int sz1, sz2;

int px, py;

int xp = x0 * GP32_Height;

for (x = x0; x<x1; x++)

{

sy1 = y01>>fp;

sy2 = y02>>fp;

su1 = u01;

su2 = u02;

sv1 = v01;

sv2 = v02;

sz1 = z01;

sz2 = z02;

if (sy1>sy2)

{

temp = sy1; sy1 = sy2; sy2 = temp;

temp = su1; su1 = su2; su2 = temp;

temp = sv1; sv1 = sv2; sv2 = temp;

temp = sz1; sz1 = sz2; sz2 = temp;

}

du = ((su2 - su1)*div[sy2-sy1+2048])>>16;

dv = ((sv2 - sv1)*div[sy2-sy1+2048])>>16;

dz = ((sz2 - sz1)*div[sy2-sy1+2048])>>16;

xp+=GP32_Height;

vramofs = xp + sy1;

for (y = sy1; y<sy2; y++)

{

su1+=du;

sv1+=dv;

sz1+=dz;

if ((vramofs>=0 && vramofs<GP32_Width*GP32_Height) && sz1<zbuffer[vramofs])

{

zbuffer[vramofs] = sz1;

c = texture[((su1>>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))];

*(vram+vramofs) = c;

}

vramofs++;

}

y01+=ly01;

y02+=ly02;

u01+=lu01;

u02+=lu02;

v01+=lv01;

v02+=lv02;

z01+=lz01;

z02+=lz02;

}

y01 = y1<<fp;

u01 = u1<<fp;

v01 = v1<<fp;

z01 = z1;

xp = x1 * GP32_Height;

for (x = x1; x<x2; x++)

{

sy1 = y01>>fp;

sy2 = y02>>fp;

su1 = u01;

su2 = u02;

sv1 = v01;

sv2 = v02;

sz1 = z01;

sz2 = z02;

if (sy1>sy2)

{

temp = sy1; sy1 = sy2; sy2 = temp;

temp = su1; su1 = su2; su2 = temp;

temp = sv1; sv1 = sv2; sv2 = temp;

temp = sz1; sz1 = sz2; sz2 = temp;

}

du = ((su2 - su1)*div[sy2-sy1+2048])>>16;

dv = ((sv2 - sv1)*div[sy2-sy1+2048])>>16;

dz = ((sz2 - sz1)*div[sy2-sy1+2048])>>16;

xp+=GP32_Height;

vramofs = xp + sy1;

for (y = sy1; y<sy2; y++)

{

su1+=du;

sv1+=dv;

sz1+=dz;

if ((vramofs>=0 && vramofs<GP32_Width*GP32_Height) && sz1<zbuffer[vramofs])

{

zbuffer[vramofs] = sz1;

c = texture[((su1>>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))];

*(vram+vramofs) = c;

}

vramofs++;

}

y01+=ly12;

y02+=ly02;

u01+=lu12;

u02+=lu02;

v01+=lv12;

v02+=lv02;

z01+=lz12;

z02+=lz02;

}

}

W=1/Z

V is the missing link

void DrawTextureTriangleZB(poly2d poly, unsigned short *vram, int tshr, unsigned short texture[])

{

int x0 =spts[poly.p0].x; int y0 =spts[poly.p0].y;

int x1 =spts[poly.p1].x; int y1 =spts[poly.p1].y;

int x2 =spts[poly.p2].x; int y2 =spts[poly.p2].y;

int c;

int u0 = poly.tc0.u; int v0 = poly.tc0.v;

int u1 = poly.tc1.u; int v1 = poly.tc1.v;

int u2 = poly.tc2.u; int v2 = poly.tc2.v;

int zfp = 0;

int z0 = fpts[poly.p0].z >> zfp;

int z1 = fpts[poly.p1].z >> zfp;

int z2 = fpts[poly.p2].z >> zfp;

// ===== Sort =====

int temp;

if (x1<x0)

{

temp = u0; u0 = u1; u1 = temp;

temp = v0; v0 = v1; v1 = temp;

temp = z0; z0 = z1; z1 = temp;

temp = x0; x0 = x1; x1 = temp;

temp = y0; y0 = y1; y1 = temp;

}

if (x2<x0)

{

temp = u0; u0 = u2; u2 = temp;

temp = v0; v0 = v2; v2 = temp;

temp = z0; z0 = z2; z2 = temp;

temp = x0; x0 = x2; x2 = temp;

temp = y0; y0 = y2; y2 = temp;

}

if (x2<x1)

{

temp = u1; u1 = u2; u2 = temp;

temp = v1; v1 = v2; v2 = temp;

temp = z1; z1 = z2; z2 = temp;

temp = x1; x1 = x2; x2 = temp;

temp = y1; y1 = y2; y2 = temp;

}

// ===== Interpolation variables =====

int n;

int fp = 8;

int ly01=0, ly12=0, ly02=0;

int lu01=0, lu12=0, lu02=0;

int lv01=0, lv12=0, lv02=0;

int lz01=0, lz12=0, lz02=0;

int dx01 = x1 - x0;

int dy01 = y1 - y0;

int du01 = u1 - u0;

int dv01 = v1 - v0;

int dz01 = z1 - z0;

ly01 = ((dy01<<fp)*div[dx01+2048])>>16;

lu01 = ((du01<<fp)*div[dx01+2048])>>16;

lv01 = ((dv01<<fp)*div[dx01+2048])>>16;

lz01 = (dz01*div[dx01+2048])>>16;

int dx12 = x2 - x1;

int dy12 = y2 - y1;

int du12 = u2 - u1;

int dv12 = v2 - v1;

int dz12 = z2 - z1;

ly12 = ((dy12<<fp)*div[dx12+2048])>>16;

lu12 = ((du12<<fp)*div[dx12+2048])>>16;

lv12 = ((dv12<<fp)*div[dx12+2048])>>16;

lz12 = (dz12*div[dx12+2048])>>16;

int dx02 = x2 - x0;

int dy02 = y2 - y0;

int du02 = u2 - u0;

int dv02 = v2 - v0;

int dz02 = z2 - z0;

ly02 = ((dy02<<fp)*div[dx02+2048])>>16;

lu02 = ((du02<<fp)*div[dx02+2048])>>16;

lv02 = ((dv02<<fp)*div[dx02+2048])>>16;

lz02 = (dz02*div[dx02+2048])>>16;

int vramofs;

int x, y;

int y01 = y0<<fp;

int y02 = y01;

int u01 = u0<<fp;

int u02 = u01;

int v01 = v0<<fp;

int v02 = v01;

int z01 = z0;

int z02 = z01;

int du, dv, dz;

int su1, su2;

int sv1, sv2;

int sy1, sy2;

int sz1, sz2;

int px, py;

int xp = x0 * GP32_Height;

for (x = x0; x<x1; x++)

{

sy1 = y01>>fp;

sy2 = y02>>fp;

su1 = u01;

su2 = u02;

sv1 = v01;

sv2 = v02;

sz1 = z01;

sz2 = z02;

if (sy1>sy2)

{

temp = sy1; sy1 = sy2; sy2 = temp;

temp = su1; su1 = su2; su2 = temp;

temp = sv1; sv1 = sv2; sv2 = temp;

temp = sz1; sz1 = sz2; sz2 = temp;

}

du = ((su2 - su1)*div[sy2-sy1+2048])>>16;

dv = ((sv2 - sv1)*div[sy2-sy1+2048])>>16;

dz = ((sz2 - sz1)*div[sy2-sy1+2048])>>16;

xp+=GP32_Height;

vramofs = xp + sy1;

for (y = sy1; y<sy2; y++)

{

su1+=du;

sv1+=dv;

sz1+=dz;

if ((vramofs>=0 && vramofs<GP32_Width*GP32_Height) && sz1<zbuffer[vramofs])

{

zbuffer[vramofs] = sz1;

c = texture[((su1>>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))];

*(vram+vramofs) = c;

}

vramofs++;

}

y01+=ly01;

y02+=ly02;

u01+=lu01;

u02+=lu02;

v01+=lv01;

v02+=lv02;

z01+=lz01;

z02+=lz02;

}

y01 = y1<<fp;

u01 = u1<<fp;

v01 = v1<<fp;

z01 = z1;

xp = x1 * GP32_Height;

for (x = x1; x<x2; x++)

{

sy1 = y01>>fp;

sy2 = y02>>fp;

su1 = u01;

su2 = u02;

sv1 = v01;

sv2 = v02;

sz1 = z01;

sz2 = z02;

if (sy1>sy2)

{

temp = sy1; sy1 = sy2; sy2 = temp;

temp = su1; su1 = su2; su2 = temp;

temp = sv1; sv1 = sv2; sv2 = temp;

temp = sz1; sz1 = sz2; sz2 = temp;

}

du = ((su2 - su1)*div[sy2-sy1+2048])>>16;

dv = ((sv2 - sv1)*div[sy2-sy1+2048])>>16;

dz = ((sz2 - sz1)*div[sy2-sy1+2048])>>16;

xp+=GP32_Height;

vramofs = xp + sy1;

for (y = sy1; y<sy2; y++)

{

su1+=du;

sv1+=dv;

sz1+=dz;

if ((vramofs>=0 && vramofs<GP32_Width*GP32_Height) && sz1<zbuffer[vramofs])

{

zbuffer[vramofs] = sz1;

c = texture[((su1>>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))];

*(vram+vramofs) = c;

}

vramofs++;

}

y01+=ly12;

y02+=ly02;

u01+=lu12;

u02+=lu02;

v01+=lv12;

v02+=lv02;

z01+=lz12;

z02+=lz02;

}

}

I am too ashamed of the piece of code btw. And it will be released opensource too :/

At least it's fast and does demo. LOL

hah, my filler is better than yours!

how can that huge pile of code be fast?

---

this is our old material for demo, but the idea sucks and design sucks too, however.........

maybe someone would write article about this ? =)

i hate it, really ! ;o

i have better idea right now .... hmmm.

so...

pls - write articles For ALL DISKMAGS, like

hugi, pain, savage and other ? :D

pls - write articles For ALL DISKMAGS, like

hugi, pain, savage and other ? :D

Lol. It may be bloated but is fast enough on GP32 but I know it can be faster and simpler if rewritten.

wie8: I like it. Reminds me of "Alien".

Adok: your cinema references are a bit confused... this has nothing to do with Alien. Don't make your Mensa buddies ashamed!

Ah, now I remember! It's from this TV series which is based on a movie. Science-fiction, in which Anubis was the great enemy. What was it called again?

here's an idea: model us some penises. I'm sure we can use 'em.

shit i can only model pussies... you want 'em anyway?