GX Identity Matrix
Posted: Thu Jun 30, 2011 8:57 pm
I'm wondering why the identity matrix does not function on GC hardware. I've been testing in "Dolphin" emulator and I noticed that when I used an identity matrix for both the projection and the position matrix, I get a coordinate space similar to the NDC of OpenGL (-1,-1) to (1,1). The emulator shows a triangle in the upper-left corner when I have a triangle with (0,0) -> (1,0) -> (1,1) coordinates, which is what I expected. I copied the program to my GameCube, and it is entirely black. If instead I use a FPS-style perspective projection, everything is fine.
My question is two-fold:
1) Are identity matrices not allowed by the GameCube hardware? Is the emulator just showing me something that can never be?
2) What about less standard projection matrices? The implementation of GX_LoadProjectionMtx() seems to use only 6 of the possible 16 values in the matrix. I checked YAGCD to see what registers it was twiddling, and it simply says "ProjectionA" through "ProjectionF" are used in the "projection equations" -- but I didn't see any equations defined. How could anyone have possibly implemented GX_LoadProjectionMtx() correctly? There doesn't seem to be any information at all about it.
Any help or thoughts on these would be useful -- I'm still trying to understand the basics of the Flipper chip's operation.
My question is two-fold:
1) Are identity matrices not allowed by the GameCube hardware? Is the emulator just showing me something that can never be?
2) What about less standard projection matrices? The implementation of GX_LoadProjectionMtx() seems to use only 6 of the possible 16 values in the matrix. I checked YAGCD to see what registers it was twiddling, and it simply says "ProjectionA" through "ProjectionF" are used in the "projection equations" -- but I didn't see any equations defined. How could anyone have possibly implemented GX_LoadProjectionMtx() correctly? There doesn't seem to be any information at all about it.
Any help or thoughts on these would be useful -- I'm still trying to understand the basics of the Flipper chip's operation.