This commit is contained in:
Daveo 2001-03-08 23:02:47 +00:00
parent 9fe641b09f
commit cf4b1c98fa
5 changed files with 62 additions and 98 deletions

View File

@ -39,7 +39,7 @@ TEMP_FILE := $(TEMP_BUILD_DIR)/build.tmp
#--- Levels -----------------------------------------------------------------
#----------------------------------------------------------------------------
# TEMP!!
LEVELS_OPTS := -t:8,4,1 -s:256
LEVELS_OPTS := -t:8,4,1 -s:16
LEVELS_IN_DIR := $(GRAF_DIR)/levels
LEVELS_OUT_DIR := $(DATA_OUT)/levels
LEVELS_MAKEFILE_DIR := $(TEMP_BUILD_DIR)/levels
@ -522,7 +522,7 @@ $(GRAF_DIRS_TO_MAKE) :
BIGLUMP_IN := $(GFX_DATA_OUT)
BIGLUMP_OUT := $(VERSION_DIR)/BigLump.Bin
BIGLUMP_INC := $(INC_DIR)/BigLump.h
BIGLUMP_INC := $(INC_DIR)/BigLump.hx
biglump : $(BIGLUMP_OUT)

View File

@ -64,10 +64,10 @@
#endif
int GX=248;
int GY=129;
//int GX=512/2;
//int GY=256/;
int GH=256;
int ZPos=5100;
int ZPos=5100/16;
/*****************************************************************************/
@ -99,9 +99,9 @@ void CGameScene::init()
s_genericFont=new ("CGameScene::Init") FontBank();
s_genericFont->initialise( &standardFont );
s_genericFont->setColour( 255, 255 , 0 );
VidSetClearScreen(1);
VidSetClearScreen(0);
SetGeomOffset( GX, GY );
// SetGeomOffset( GX, GY );
SetGeomScreen(GH);
m_pauseMenu=new ("Pause Menu") CPauseMenu();

View File

@ -48,31 +48,62 @@ void CLayerTile3d::shutdown()
{
}
/*****************************************************************************/
void CLayerTile3d::think(DVECTOR &MapPos)
{
int XPos=MapPos.vx>>MapXYShift;
int YPos=MapPos.vy>>MapXYShift;
MapXY.vx=XPos>>4;
MapXY.vy=YPos>>4;
MapXY.vx-=SCREEN_TILE_ADJ_LEFT;
MapXY.vy-=SCREEN_TILE_ADJ_UP;
ShiftX=XPos & 15;
ShiftY=YPos & 15;
if (MapXY.vx<0) MapXY.vx=0;
if (MapXY.vy<0) MapXY.vy=0;
if (MapXY.vx+SCREEN_TILE_WIDTH3D<=MapWidth)
RenderW=SCREEN_TILE_WIDTH3D;
else
RenderW=MapWidth-MapXY.vx;
if (MapXY.vy+SCREEN_TILE_HEIGHT3D<=MapHeight)
RenderH=SCREEN_TILE_HEIGHT3D;
else
RenderH=MapHeight-MapXY.vy;
}
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
#define BLOCK_MULT 16
int XOfs=-16;
int YOfs=-7;
int asd=16;
int TriMax=0;
void CLayerTile3d::render()
{
sTileMapElem *MapPtr=GetMapPos();
//sTileMapElem *MapPtr=Map;
const int XOfs=-(BLOCK_MULT*15)-(SCREEN_TILE_ADJ_LEFT*BLOCK_MULT);
const int YOfs=-(BLOCK_MULT*7)-(SCREEN_TILE_ADJ_UP*BLOCK_MULT);
sTileMapElem *MapPtr=GetMapPos();
u8 *PrimPtr=GetPrimPtr();
POLY_FT3 *TPrimPtr=(POLY_FT3*)PrimPtr;
VECTOR BlkPos;
sOT *ThisOT=OtPtr+LayerOT;
sVtx *P0,*P1,*P2;
u32 T0,T1,T2;
s32 ClipZ;
TriMax=0;
// Setup shift bits of pos
BlkPos.vx=-(((MapXY.vx-XOfs)*asd)+ShiftX)*asd;
BlkPos.vy=-(((MapXY.vy-YOfs)*asd)+ShiftY)*asd;
// Setup shift bits of pos
BlkPos.vx=XOfs-((MapXY.vx*BLOCK_MULT)+ShiftX);
BlkPos.vy=YOfs-((MapXY.vy*BLOCK_MULT)+ShiftY);
CMX_SetTransMtxXY(&BlkPos);
for (int Y=0; Y<RenderH; Y++)
@ -83,7 +114,6 @@ u32 T0,T1,T2;
int TriCount=TriEnd-TriStart;
sTri *TList=&TriList[TriStart];
while (TriCount>0)
{
P0=&VtxList[TList->P0]; P1=&VtxList[TList->P1]; P2=&VtxList[TList->P2];
@ -92,7 +122,7 @@ u32 T0,T1,T2;
setShadeTex(TPrimPtr,1);
setlen(TPrimPtr, GPU_PolyFT3Tag);
gte_rtpt_b();
T0=*(u32*)&TList->uv0; // Get UV0 & TPage
T1=*(u32*)&TList->uv1; // Get UV1 & Clut
T2=*(u16*)&TList->uv2; // Get UV2
@ -101,8 +131,9 @@ u32 T0,T1,T2;
*(u16*)&TPrimPtr->u2=T2; // Set UV2
TList++;
gte_nclip_b();
gte_stsxy3_ft3(TPrimPtr);
int ClipZ=NormalClip(*(u32*)&TPrimPtr->x0,*(u32*)&TPrimPtr->x1,*(u32*)&TPrimPtr->x2);
gte_stopz(&ClipZ);
if (ClipZ<=0)
{
addPrimNoCheck(ThisOT,TPrimPtr);
@ -116,82 +147,5 @@ u32 T0,T1,T2;
TriMax=((u8*)TPrimPtr-PrimPtr)/sizeof(POLY_FT3);
// Render it!!
/*
for (int Y=0; Y<RenderH; Y++)
{
sTileMapElem *MapRow=MapPtr;
TileX=-ShiftX;
for (int X=0; X<RenderW; X++)
{
sTile *Tile=&TileList[MapRow->Elem];
if (MapRow->Flags)
{ // Has 3d Data
CMX_SetTransMtxXY(&BlkPos);
}
MapRow++;
TileX+=TILE_WIDTH;
BlkPos.vx+=TILE_WIDTH*BLOCK_MULT;
}
MapPtr+=MapWidth;
TileY+=TILE_HEIGHT;
BlkPos.vx=BlkXStore;
BlkPos.vy+=TILE_HEIGHT*BLOCK_MULT;
}
*/
SetPrimPtr((u8*)TPrimPtr);
}
/*****************************************************************************/
// NOTE: Tiles will be sorted by z order (cos they 'should' be simple objects
// NOTE: Tiles are split into facing strips, to reduce overdraw :o)
// NOTE: Matrix already setup for block
#if 0
u8 *CLayerTile3d::RenderBlock(sTile *Tile,s16 RenderFlags,u8 *PrimPtr)
{
sVtx *P0,*P1,*P2;
POLY_FT3 *TPrimPtr=(POLY_FT3*)PrimPtr;
u16 *TileTable=Tile->TileTable;
u32 T0,T1,T2;
sTri *TList=TriList+Tile->TriStart;
sOT *ThisOT=OtPtr+LayerOT;
//--- Tris ---------------------------------------------------------------------------
for (int i=0; i<TILE3D_FLAGS_MAX; i++)
{
int TriCount=*TileTable++; // Get Tri Count
sTri *NextList=TList+TriCount;
// if (RenderFlags & 1)
{
while (TriCount--)
{
P0=&VtxList[TList->P0]; P1=&VtxList[TList->P1]; P2=&VtxList[TList->P2];
gte_ldv3(P0,P1,P2);
/**/ setPolyFT3(TPrimPtr);
/**/ setShadeTex(TPrimPtr,1);
/**/ setlen(TPrimPtr, GPU_PolyFT3Tag);
gte_rtpt_b();
T0=*(u32*)&TList->uv0; // Get UV0 & TPage
T1=*(u32*)&TList->uv1; // Get UV1 & Clut
T2=*(u16*)&TList->uv2; // Get UV2
*(u32*)&TPrimPtr->u0=T0; // Set UV0
*(u32*)&TPrimPtr->u1=T1; // Set UV1
*(u16*)&TPrimPtr->u2=T2; // Set UV2
TList++;
addPrimNoCheck(ThisOT,TPrimPtr);
gte_stsxy3_ft3(TPrimPtr);
TPrimPtr++;
}
}
TList=NextList;
RenderFlags>>=1;
}
return((u8*)TPrimPtr);
}
#endif

View File

@ -2,8 +2,8 @@
/*** 3d Tile Layer Class ***/
/***************************/
#ifndef __LAYER_TILE_3D_H__
#define __LAYER_TILE_3D_H__
#ifndef __LAYER_TILE_3D_Hx__
#define __LAYER_TILE_3D_Hx__
/*****************************************************************************/
@ -13,8 +13,19 @@ public:
CLayerTile3d(sLayerHdr *Hdr,sTile *TileBank);
~CLayerTile3d();
enum
{
SCREEN_TILE_ADJ_UP=2,
SCREEN_TILE_ADJ_DOWN=2,
SCREEN_TILE_ADJ_LEFT=2,
SCREEN_TILE_ADJ_RIGHT=5,
SCREEN_TILE_WIDTH3D= SCREEN_TILE_WIDTH+SCREEN_TILE_ADJ_RIGHT,
SCREEN_TILE_HEIGHT3D= SCREEN_TILE_HEIGHT+SCREEN_TILE_ADJ_DOWN,
};
void init(DVECTOR &MapPos,int Shift);
void shutdown();
void think(DVECTOR &MapPos);
void render();
protected:
@ -22,7 +33,6 @@ protected:
sTri *TriList;
sQuad *QuadList;
sVtx *VtxList;
};

Binary file not shown.