What's new

N64 Glide Plugin

Status
Not open for further replies.

Eddy

I Run This
Damn dave i wish i could help, i cant imagine the excitement of making a gfx plugin and seeing your own gfx plugin do its magic.
 
OP
Dave2001

Dave2001

Moderator
Well guys, I finally got something to show up. :) It now shows wireframe models from mario64. There are no world translations yet, so everything appears right in front of the camera, but you can tell what the things are. I can't believe it's working!!! :) :colgate: Glide doesn't allow screenshots, so I can't show you pictures, but I will try to implement screen saving soon.

Happy New Year!!!
 

VTT

New member
Best of the best

Difference Glide from all graphic this that that it is realized is hardware, all other known interfaces are realized software.
Glide gives the big speed in processing graphics.
 

2fast4u

New member
Eddy said:
Sorry to say dave, glide had window support in its new version. But glide 4 was never released, because 3dfx went to bankruptcy. But until then, glide 3 or 2 had no window support. SORRY :-]

that what i thought, too but i recently tripped over a piece of code at www.nullsoft.com (go to "free shit" and then to "winglide"). this appearantly (did i spell that right?) enables u to use glide in a window, at least with v1 + v2 cards.
u oughta try it out. i am a vb-coder, i'm too dumb...:D

2fast4u
 

2fast4u

New member
Dave2001 said:
Glide doesn't allow screenshots, so I can't show you pictures, but I will try to implement screen saving soon.

Happy New Year!!!

u can always use hypersnap dx or some other screenshot proggie (www.download.com). it can make screenshots in glide.

2fast4u
 
OP
Dave2001

Dave2001

Moderator
Now this looks hopeful...

Oh, and about winglide, it's glide2x only. I'm using glide3x.
 
Last edited:

Slougi

New member
Hmm couldn't you release a preliminary version of the stuff you have made so far?
Cause that looks sweeet :)
 

2fast4u

New member
woa! this looks like progress! congrats dave, it looks like u will be able to accomplish that plug-in! keep it going!

:colgate: :thumbsup:
 
OP
Dave2001

Dave2001

Moderator
Ok, you can have it, but it doesn't do much more than that yet. It doesn't translate anything, it just places all objects in front of the camera, bringing jumbled messes during the game. Also, it only works with UCode 0 games, like Mario. If anyone knows of any other UCode 0 games, please tell me.

Oh, by the way, the final name will be Glide64. I just haven't gotten around to changing it from n64Glide.

*** By the way, you must switch to fullscreen to see anything!!!
 
Last edited:

VTT

New member
In the future

I shall do too support Glide. not at once and with time.
For now I yet have not let out also the emulator, I work...
Nitn64??? ??? ???
 

VTT

New member
In the future - 2002

VTT said:
I shall do too support Glide. not at once and with time.
For now I yet have not let out also the emulator, I work...
Nitn64??? ??? ???
:cool:
I try to bring in emulation new promotions.
 
OP
Dave2001

Dave2001

Moderator
It may seem like a silly math question, but how do I process the projection matrix? I'm used to Direct3D doing it for me and I've never done it manually before.
 

VTT

New member
GBI.h <-

Dave2001 said:
It may seem like a silly math question, but how do I process the projection matrix? I'm used to Direct3D doing it for me and I've never done it manually before.

Closely study GBI.h. You not have registered all, when at me the picture from for matrixes I is deformed see the deformed structures, at you on screenshots one sides are visible only. Not which people like to show work graphics without drawing textures thus having shown speed of work of the program. I saw many fakes and a deceit, I know as to force to work plugin faster, but thus quality of display graphics will be very low.
 
OP
Dave2001

Dave2001

Moderator
I said I haven't put in matrices yet, it just draws temporary wireframe images in front of the camera to make sure it was loading them right. It's not meant to look right because it has no real transformations.
 

VTT

New member
Dave2001 said:
I said I haven't put in matrices yet, it just draws temporary wireframe images in front of the camera to make sure it was loading them right. It's not meant to look right because it has no real transformations.

I did not want you to offend.
Sorry...
 

Hacktarux

Emulator Developer
Moderator
I think the matrix mechanism is explain in the directx manual.
You should just have to multiply each vertex's coordinate by the projection matrix. If you don't know how works a matrix multiplication ask me and i will explain it in more details.
 
OP
Dave2001

Dave2001

Moderator
I did not want you to offend.

It's ok, I understand why you thought that. I just used temporary scaling values, but now I'm working on the actual matrices. Textures are still a long way off, though. I'm going to get the game working completely in wireframe before even starting on those.

to Hacktarux:

Yeah, I heard that you just multiply it. I'll try it and tell you if it worked.
 

Eddy

I Run This
whoa dave, i think im happier than you to see your glie plugin working! YAY! Good work dave, i heavily congratulate you.
 
OP
Dave2001

Dave2001

Moderator
Ok, can someone check my math here? (I know it can be simplified, I'll do that after I get it working)

v is a vertex structure that has x,y,z, and w as floats. x,y, and z were set by the uc0:vertex command
rdp.model is a 4x4 matrix
rdp.proj is a 4x4 matrix

float x=v.x;
float y=v.y;
float z=v.z;
float w=1.0f;

v.x = x*rdp.model[0][0] + y*rdp.model[0][1] + z*rdp.model[0][2] + w*rdp.model[0][3];
v.y = x*rdp.model[1][0] + y*rdp.model[1][1] + z*rdp.model[1][2] + w*rdp.model[1][3];
v.z = x*rdp.model[2][0] + y*rdp.model[2][1] + z*rdp.model[2][2] + w*rdp.model[2][3];
v.w = x*rdp.model[3][0] + y*rdp.model[3][1] + z*rdp.model[3][2] + w*rdp.model[3][3];

x = v.x;
y = v.y;
z = v.z;
w = v.w;

v.x = x*rdp.proj[0][0] + y*rdp.proj[0][1] + z*rdp.proj[0][2] + w*rdp.proj[0][3];
v.y = x*rdp.proj[1][0] + y*rdp.proj[1][1] + z*rdp.proj[1][2] + w*rdp.proj[1][3];
v.z = x*rdp.proj[2][0] + y*rdp.proj[2][1] + z*rdp.proj[2][2] + w*rdp.proj[2][3];
v.w = x*rdp.proj[3][0] + y*rdp.proj[3][1] + z*rdp.proj[3][2] + w*rdp.proj[3][3];

// final screen coords (640x480 res) (do I divide by w or z?)
v.x = 320.0f + v.x / v.w;
v.y = 240.0f - v.y / v.w;
 

Azimer

Emulator Developer
Moderator
I dunno... this is what I use to Transform shit. It works for OGL.
MatrixVersions are Model Matricies and
MatrixVersions2 are Projection Matricies.

Since OpenGL does all the Geometry, I can do the transformations with Identity Matricies loaded without worrying about scaling to the screen. I hope this helps a little at least. It's been months since I looked at this code or worked with gfx. :)

Code:
static void
Transform(GLfloat *matrix, GLfloat *in)
{
    int ii;
	GLfloat out[4];

    for (ii=0; ii<4; ii++) {
	out[ii] = 
	    in[0] * matrix[0*4+ii] +
	    in[1] * matrix[1*4+ii] +
	    in[2] * matrix[2*4+ii] +
	    in[3] * matrix[3*4+ii];
    }

	memcpy (in, out, sizeof(float)*4);
}

void TransformVectors (int a, int b, int c) {
	if (MatrixVector[a] != 0) {
		Transform (MatrixVersions[MatrixVector[a]], vtxBuff[a]);
		Transform (MatrixVersions2[MatrixVector[a]], vtxBuff[a]);
	}
	if (MatrixVector[b] != 0) {
		Transform (MatrixVersions[MatrixVector[b]], vtxBuff[b]);
		Transform (MatrixVersions2[MatrixVector[b]], vtxBuff[b]);
	}
	if (MatrixVector[c] != 0) {
		Transform (MatrixVersions[MatrixVector[c]], vtxBuff[c]);
		Transform (MatrixVersions2[MatrixVector[c]], vtxBuff[c]);
	}
	MatrixVector[a] = 0;
	MatrixVector[b] = 0;
	MatrixVector[c] = 0;
}
 
Status
Not open for further replies.

Top