This commit is contained in:
Daveo 2001-06-28 21:01:28 +00:00
parent db80847a5d
commit 1231e2e3fd
3 changed files with 31 additions and 25 deletions

View File

@ -9,6 +9,7 @@
#include "gfx\sprbank.h"
#include <sprites.h>
#include "level\level.h"
#include "level\layertile3d.h"
#include "FX\FXfallingTile.h"
@ -74,21 +75,23 @@ VECTOR ThisRenderPos;
ThisRenderPos.vx=PXOfs+RenderPos.vx;
ThisRenderPos.vy=PYOfs+RenderPos.vy;
gte_SetRotMatrix(&Mtx);
u16 TileIdx=Tile>>2;
u16 Flip=Tile&3;
sFlipTable *FTab=&FlipTable[Flip];
sElem3d *Elem=&ElemBank3d[TileIdx];
int TriCount=Elem->TriCount;
sTri *TList=&TriList[Elem->TriStart];
CMX_SetTransMtxXY(&ThisRenderPos);
sElem3d *ThisTile=&ElemBank3d[Tile];
int TriCount=ThisTile->TriCount;
sTri *TList=&TriList[ThisTile->TriStart];
CMX_SetRotMatrixXY(&FTab->Mtx);
while (TriCount--)
{
P0=&VtxList[TList->P0]; P1=&VtxList[TList->P1]; P2=&VtxList[TList->P2];
gte_ldv3(P0,P1,P2);
setlen(TPrimPtr, GPU_PolyFT3Tag);
TPrimPtr->code=TList->PolyCode;
setRGB0(TPrimPtr,128,128,128);
gte_rtpt_b();
setShadeTex(TPrimPtr,1);
T0=*(u32*)&TList->uv0; // Get UV0 & TPage
T1=*(u32*)&TList->uv1; // Get UV1 & Clut
@ -97,12 +100,13 @@ VECTOR ThisRenderPos;
*(u32*)&TPrimPtr->u1=T1; // Set UV1
*(u16*)&TPrimPtr->u2=T2; // Set UV2
ThisOT=OtPtr;
ThisOT=OtPtr+TList->OTOfs;
TList++;
gte_nclip_b();
gte_stsxy3_ft3(TPrimPtr);
gte_stopz(&ClipZ);
if (ClipZ<=0)
ClipZ^=FTab->ClipCode;
if (ClipZ<0)
{
addPrim(ThisOT,TPrimPtr);
TPrimPtr++;

View File

@ -111,20 +111,6 @@ void CLayerTile3d::think(DVECTOR &MapPos)
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
#define CMX_SetRotMatrixXY( r0 ) __asm__ ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $2;" \
: \
: "r"( r0 ) \
: "$12", "$13")
struct sFlipTable
{
s16 Mtx[4];
s32 ClipCode;
};
sFlipTable FlipTable[4]=
{
@ -165,10 +151,10 @@ VECTOR BlkPos;
sTri *TList=&TriList[Elem->TriStart];
P0=&VtxList[TList->P0]; P1=&VtxList[TList->P1]; P2=&VtxList[TList->P2];
CMX_SetTransMtxXY(&BlkPos);
CMX_SetRotMatrixXY(&FTab->Mtx);
while (TriCount--) // Blank tiles rejected here (as no tri-count)
{
CMX_SetTransMtxXY(&BlkPos);
CMX_SetRotMatrixXY(&FTab->Mtx);
gte_ldv3(P0,P1,P2);
setlen(TPrimPtr, GPU_PolyFT3Tag);
TPrimPtr->code=TList->PolyCode;

View File

@ -6,6 +6,22 @@
#define __LAYER_TILE_3D_Hx__
#define CMX_SetRotMatrixXY( r0 ) __asm__ ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $2;" \
: \
: "r"( r0 ) \
: "$12", "$13")
struct sFlipTable
{
s16 Mtx[4];
s32 ClipCode;
};
extern sFlipTable FlipTable[];
/*****************************************************************************/
class FontBank;
class CLayerTile3d : public CLayerTile