From 4d10183fb83670dde15fa98de6cd95eaf549afce Mon Sep 17 00:00:00 2001 From: Daveo Date: Mon, 8 Jan 2001 21:42:07 +0000 Subject: [PATCH] --- source/gfx/prim.h | 21 +++++++++++++-------- source/level/layertile.cpp | 2 +- source/level/layertile3d.cpp | 5 ++--- source/level/level.cpp | 26 +++++++++++++++++--------- 4 files changed, 33 insertions(+), 21 deletions(-) diff --git a/source/gfx/prim.h b/source/gfx/prim.h index 1d22860ea..99ebe09ec 100644 --- a/source/gfx/prim.h +++ b/source/gfx/prim.h @@ -97,6 +97,11 @@ struct sOT (OT)->LastPrim = (u32*)(Prim); \ (OT)->FirstPrim = (u32*)(Prim); \ } +#define addPrimNoCheck(OT,Prim) \ +{ \ + setaddr(((u32*)Prim), (OT)->FirstPrim); \ + (OT)->FirstPrim = (u32*)(Prim); \ +} #define NTAG_addPrims(_nt,_ps,_pe) \ { \ @@ -217,20 +222,20 @@ typedef u32 sOT; #define GetPrimLG4() GetPrim(LINE_G4);\ setLineG4(CurrPrim-sizeof(LINE_G4)) -#define GetPrimSPRT8() GetPrim(SPRT8);\ - setSprt8(CurrPrim-sizeof(SPRT8)) +#define GetPrimSPRT8() GetPrim(SPRT_8);\ + setSprt8(CurrPrim-sizeof(SPRT_8)) -#define GetPrimSPRT16() GetPrim(SPRT16);\ - setSprt16(CurrPrim-sizeof(SPRT16)) +#define GetPrimSPRT16() GetPrim(SPRT_16);\ + setSprt16(CurrPrim-sizeof(SPRT_16)) #define GetPrimSPRT() GetPrim(SPRT);\ setSprt(CurrPrim-sizeof(SPRT)) -#define GetPrimTILE8() GetPrim(TILE8);\ - setTile(CurrPrim-sizeof(TILE8)) +#define GetPrimTILE8() GetPrim(TILE_8);\ + setTile(CurrPrim-sizeof(TILE_8)) -#define GetPrimTILE16() GetPrim(TILE16);\ - setTile(CurrPrim-sizeof(TILE16)) +#define GetPrimTILE16() GetPrim(TILE_16);\ + setTile(CurrPrim-sizeof(TILE_16)) #define GetPrimTILE() GetPrim(TILE);\ setTile(CurrPrim-sizeof(TILE)) diff --git a/source/level/layertile.cpp b/source/level/layertile.cpp index 8707e05a4..0fb04df25 100644 --- a/source/level/layertile.cpp +++ b/source/level/layertile.cpp @@ -220,7 +220,7 @@ s16 TileX,TileY; { /**/ Prim->x0=TileX; /**/ Prim->y0=TileY; -/**/ AddPrim(OtPtr,Prim); + addPrimNoCheck(OtPtr,Prim); } Grid=Grid->Right; TileX+=TILE_WIDTH; diff --git a/source/level/layertile3d.cpp b/source/level/layertile3d.cpp index 64f9b88b4..9604c8744 100644 --- a/source/level/layertile3d.cpp +++ b/source/level/layertile3d.cpp @@ -147,7 +147,6 @@ sTileMapElem3d *MapPtr=GetMapPos3d(X,Y); #define BLOCK_MULT 16 void CLayerTile3d::render() { - sPrimGridElem3d *Grid=GetGridPos3d(MapX,MapY); s16 TileX,TileY; VECTOR BlkPos; @@ -172,7 +171,7 @@ s32 BlkXStore; { // Has 2d Data /**/ Prim->x0=TileX; /**/ Prim->y0=TileY; -/**/ AddPrim(OtPtr,Prim); + addPrimNoCheck(OtPtr,Prim); } if (Grid->Flags) { // Has 3d Data @@ -231,7 +230,7 @@ sTri *TList=TriList+Tile->TriStart; *(u16*)&TPrimPtr->u2=T2; // Set UV2 TList++; - addPrim(OtPtr,TPrimPtr); + addPrimNoCheck(OtPtr,TPrimPtr); gte_stsxy3_ft3(TPrimPtr); TPrimPtr++; } diff --git a/source/level/level.cpp b/source/level/level.cpp index c030ea75d..d7813eccc 100644 --- a/source/level/level.cpp +++ b/source/level/level.cpp @@ -46,14 +46,6 @@ void CLevel::init() TPLoadTex(LEVEL04_LEVEL04_TEX); initLayers(); - -// Setup Constand Rot Matrix -MATRIX Mtx; - - SetIdent(&Mtx); - Mtx.t[2]=ZPos; - SetRotMatrix(&Mtx); - SetTransMatrix(&Mtx); } /*****************************************************************************/ @@ -114,6 +106,22 @@ void CLevel::shutdown() /*****************************************************************************/ void CLevel::render() { +// Setup Constant Rot Matrix +MATRIX Mtx; + + SetIdent(&Mtx); + Mtx.t[2]=ZPos; + SetRotMatrix(&Mtx); + SetTransMatrix(&Mtx); + +// Setup dummy prim to ensure OtPos 0 is initialised (for fast add) +TILE_16 *Prim=GetPrimTILE16(); + + Prim->x0=1024; + Prim->y0=1024; + AddPrim(OtPtr,Prim); + ASSERT(OtPtr->FirstPrim); + for (int i=0; irender(); @@ -123,7 +131,7 @@ void CLevel::render() /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -int MapSpd=8; +int MapSpd=4; void CLevel::think(int _frames) { int padh = PadGetHeld( 0 );