gSPObjRectangleR [macro]
Draws a sprite referencing a 2D matrix.
Syntax
#include <ultra64.h> /* gs2dex.h */
gSPObjRectangleR(Gfx *gdl, uObjSprite *sp)
gsSPObjRectangleR(uObjSprite *sp)
Arguments
- gdl is the pointer to the graphics display list.
- sp is the pointer to the sprite drawing data structure.
Explanation
References the 2D matrix elements X, Y, BaseScaleX and BaseScaleY, changes the screen coordinate values for drawing, and draws a non-rotating sprite. The 2D matrix is set using g*SPObjSubMatrix.
Notes
To use a number of sprites consider this example, where the sprites A, B and C are lined up horizontally as shown:

- The following data is set for each objX, objY.
A: (objX, objY) = ( 0<<2, 0<<2)
- B: (objX, objY) = (32<<2, 0<<2)
- C: (objX, objY) = (64<<2, 0<<2)
By changing X and Y in these settings, the three sprites can move together as one large sprite. However, gaps may appear between A & B and B & C, as shown below, due to an error in multiplication or other calculations.

- In this case, you must take some appropriate action like slightly overlapping the adjacent sprites, as follows:
B: (objX, objY) = ((32<<2)-2, 0<<2)
- C: (objX, objY) = ((64<<2)-4, 0<<2)
Cautions
The uObjSubMtx_t structure is shown below. For information about the uObjSprite structure, see g*SPObjRectangle and also refer to the Readme file of the latest version of the S2DEX microcode.
typedef struct {
s16 X, Y; /* s10.2 */
u16 BaseScaleX; /* u5.10 */
u16 BaseScaleY; /* u5.10 */
} uObjSubMtx_t; /* 8 bytes */
This macro references the values of the 2D matrix elements X, Y, BaseScaleX and BaseScaleY, and determines the vertex coordinates of the sprite using the following formulas:
Upper-left coordinates: (X+objX/BaseScaleX, Y+objY/BaseScaleY)
Lower-right coordinates: (X+(objX+imageW/scaleW)/BaseScaleX-1,
Y+(objY+imageH/scaleH)/BaseScaleY-1)
Use g*SPObjSubMatrix to change X, Y, BaseScaleX and BaseScaleY. When X = Y = 0 and BaseScaleX = BaseScaleY = 1.0, the result will be the same as with g*SPObjRectangle. Changing the settings of the 2D matrix elements {X, Y, BaseScaleX and BaseScaleY} enables several sprites to be moved or scaled as a unit.
For other functions, see g*SPObjRectangle.
See Also
gSPObjMatrix
gSPObjRectangle
gSPObjSprite
gSPObjSubMatrix
Revision History
2/1/1999 Completely rewritten
|
Nintendo® Confidential
Warning: all information in this document is confidential and covered by a non-disclosure agreement. You are responsible for keeping this information confidential and protected. Nintendo will vigorously enforce this responsibility.
Copyright © 1998-1999
Nintendo of America Inc. All rights reserved Nintendo and N64 are registered trademarks of Nintendo
Last updated March 1999
|