This commit is contained in:
parent
ed41cd96cd
commit
432dedc6fd
9 changed files with 675 additions and 310 deletions
|
@ -58,6 +58,8 @@
|
|||
|
||||
#define setShadeTexPolyFT3(p) setlen(p, 7), setcode(p, 0x24|GPUCode_ShadeTex)
|
||||
#define setShadeTexPolyFT4(p) setlen(p, 9), setcode(p, 0x2c|GPUCode_ShadeTex)
|
||||
#define setShadeTexPolyGT3(p) setlen(p, 9), setcode(p, 0x34|GPUCode_ShadeTex)
|
||||
#define setShadeTexPolyGT4(p) setlen(p, 12), setcode(p, 0x3c|GPUCode_ShadeTex)
|
||||
|
||||
#define setSemiTransShadeTexPolyFT3(p) setlen(p, 7), setcode(p, 0x24|GPUCode_SemiTrans|GPUCode_ShadeTex)
|
||||
#define setSemiTransShadeTexPolyFT4(p) setlen(p, 9), setcode(p, 0x2c|GPUCode_SemiTrans|GPUCode_ShadeTex)
|
||||
|
|
|
@ -269,6 +269,39 @@ void SpriteBank::prepareFT4(POLY_FT4 *_ft4,sFrameHdr *_fh,int _x,int _y,bool _xF
|
|||
setUVTp(_fh,_ft4,_xFlip,_yFlip);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void SpriteBank::prepareGT4(POLY_GT4 *_gt4,sFrameHdr *_fh,int _x,int _y,bool _xFlip,bool _yFlip)
|
||||
{
|
||||
int W=_fh->W,H=_fh->H;
|
||||
|
||||
setShadeTexPolyGT4(_gt4);
|
||||
setShadeTex(_gt4,0);
|
||||
// setRGB0(_gt4,128,128,128);
|
||||
if (_xFlip)
|
||||
{
|
||||
_x-=_fh->XOfs;
|
||||
_x-=W;
|
||||
}
|
||||
else
|
||||
_x+=_fh->XOfs;
|
||||
|
||||
if (_yFlip)
|
||||
{
|
||||
_y-=_fh->YOfs;
|
||||
_y-=H;
|
||||
}
|
||||
else
|
||||
_y+=_fh->YOfs;
|
||||
|
||||
setXYWH(_gt4,_x,_y,W,H);
|
||||
setUVTp(_fh,_gt4,_xFlip,_yFlip);
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
|
@ -377,6 +410,33 @@ void SpriteBank::prepareFT4RotatedScaled(POLY_FT4 *_ft4,sFrameHdr *_fh,int _xCen
|
|||
////////////////////////////////
|
||||
}
|
||||
|
||||
void SpriteBank::RotateBox(sBox *B,int W,int H,int _xScale,int _yScale,int _rot)
|
||||
{
|
||||
int halfW,halfH;
|
||||
int ca,sa;
|
||||
int cw,ch,sw,sh;
|
||||
int width,height;
|
||||
int aspect;
|
||||
|
||||
halfW=(W*_xScale)>>(12+1);
|
||||
halfH=(H*_yScale)>>(12+1);
|
||||
ca=mcos(_rot);
|
||||
sa=msin(_rot);
|
||||
cw=(ca*halfW)>>12;
|
||||
ch=(ca*halfH)>>12;
|
||||
sw=(sa*halfW)>>12;
|
||||
sh=(sa*halfH)>>12;
|
||||
|
||||
// aspect=(512<<12)/384;//((_fh->H<<12)/_fh->W)/2;
|
||||
// ch=(ch*aspect)>>12;
|
||||
// sh=(sh*aspect)>>12;
|
||||
|
||||
B->x0=-cw+sh; B->y0=-sw-ch;
|
||||
B->x1=+cw+sh; B->y1=+sw-ch;
|
||||
B->x2=-cw-sh; B->y2=-sw+ch;
|
||||
B->x3=+cw-sh; B->y3=+sw+ch;
|
||||
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
|
@ -456,3 +516,76 @@ void SpriteBank::setUVTp(sFrameHdr *_fh,POLY_FT4 *_ft4,int _xFlip,int _yFlip)
|
|||
_ft4->tpage=_fh->TPage;
|
||||
_ft4->clut=_fh->Clut;
|
||||
}
|
||||
|
||||
void SpriteBank::setUVTp(sFrameHdr *_fh,POLY_GT4 *_gt4,int _xFlip,int _yFlip)
|
||||
{
|
||||
int U=_fh->U;
|
||||
int V=_fh->V;
|
||||
int W=_fh->W;
|
||||
int H=_fh->H;
|
||||
|
||||
if (!_fh->Rotated)
|
||||
{
|
||||
if (_xFlip)
|
||||
{
|
||||
_gt4->u0=U+W-1;
|
||||
_gt4->u1=U-1;
|
||||
_gt4->u2=U+W-1;
|
||||
_gt4->u3=U-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_gt4->u0=U;
|
||||
_gt4->u1=U+W;
|
||||
_gt4->u2=U;
|
||||
_gt4->u3=U+W;
|
||||
}
|
||||
if (_yFlip)
|
||||
{
|
||||
_gt4->v0=V+H-1;
|
||||
_gt4->v1=V+H-1;
|
||||
_gt4->v2=V-1;
|
||||
_gt4->v3=V-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_gt4->v0=V;
|
||||
_gt4->v1=V;
|
||||
_gt4->v2=V+H;
|
||||
_gt4->v3=V+H;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_xFlip)
|
||||
{
|
||||
_gt4->v0=V;
|
||||
_gt4->v2=V;
|
||||
_gt4->v1=V+W;
|
||||
_gt4->v3=V+W;
|
||||
}
|
||||
else
|
||||
{
|
||||
_gt4->v0=V+W-1;
|
||||
_gt4->v2=V+W-1;
|
||||
_gt4->v1=V-1;
|
||||
_gt4->v3=V-1;
|
||||
}
|
||||
if (_yFlip)
|
||||
{
|
||||
_gt4->u0=U+H-1;
|
||||
_gt4->u1=U+H-1;
|
||||
_gt4->u2=U-1;
|
||||
_gt4->u3=U-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_gt4->u0=U;
|
||||
_gt4->u1=U;
|
||||
_gt4->u2=U+H;
|
||||
_gt4->u3=U+H;
|
||||
}
|
||||
}
|
||||
_gt4->tpage=_fh->TPage;
|
||||
_gt4->clut=_fh->Clut;
|
||||
}
|
||||
|
|
|
@ -38,6 +38,13 @@
|
|||
Tyepdefs && Defines
|
||||
------------------- */
|
||||
|
||||
struct sBox
|
||||
{
|
||||
s16 x0,y0;
|
||||
s16 x1,y1;
|
||||
s16 x2,y2;
|
||||
s16 x3,y3;
|
||||
};
|
||||
/*----------------------------------------------------------------------
|
||||
Structure defintions
|
||||
-------------------- */
|
||||
|
@ -82,6 +89,8 @@ public:
|
|||
s32 getFrameWidth( int _frame ) {return (m_SpriteBankInstance->getFrameHeaders()[ _frame ].W);}
|
||||
s32 getFrameHeight( int _frame ) {return (m_SpriteBankInstance->getFrameHeaders()[ _frame ].H);}
|
||||
|
||||
void RotateBox(sBox *B,int W,int H,int _xScale,int _yScale,int _rot);
|
||||
|
||||
inline POLY_FT4 *printFT4(int _frame,int _x,int _y,int _xFlip,int _yFlip,int _ot) {return printFT4(&m_SpriteBankInstance->getFrameHeaders()[ _frame ],_x,_y,_xFlip,_yFlip,_ot);}
|
||||
inline POLY_FT4 *printFT4(sFrameHdr *_fh,int _x,int _y,int _xFlip,int _yFlip,int _ot)
|
||||
{
|
||||
|
@ -109,12 +118,13 @@ inline POLY_FT4 *printRotatedScaledSprite(sFrameHdr *_fh,int _xCentre,int _yCent
|
|||
return(ft4);
|
||||
}
|
||||
|
||||
|
||||
// Hmm.. why did these used to be private?
|
||||
void prepareFT4(POLY_FT4 *_ft4,sFrameHdr *_fh,int _x,int _y,bool _xFlip,bool _yFlip);
|
||||
void prepareGT4(POLY_GT4 *_gt4,sFrameHdr *_fh,int _x,int _y,bool _xFlip,bool _yFlip);
|
||||
void prepareFT4Scaled(POLY_FT4 *_ft4,sFrameHdr *_fh,int _x,int _y,bool _xFlip,bool _yFlip,long _z);
|
||||
void prepareFT4RotatedScaled(POLY_FT4 *_ft4,sFrameHdr *_fh,int _xCentre,int _yCentre,int _xScale,int _yScale,int _rot);
|
||||
void setUVTp(sFrameHdr *_fh,POLY_FT4 *_ft4,int _xFlip,int _yYFlip);
|
||||
void setUVTp(sFrameHdr *_fh,POLY_FT4 *_ft4,int _xFlip,int _yFlip);
|
||||
void setUVTp(sFrameHdr *_fh,POLY_GT4 *_gt4,int _xFlip,int _yFlip);
|
||||
|
||||
// void printRotatedScaledSprite(sFrameHdr *_fh,int _xCentre,int _yCentre,int _xScale,int _yScale,int _rot,int _ot);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue