This commit is contained in:
parent
9fe641b09f
commit
cf4b1c98fa
5 changed files with 62 additions and 98 deletions
|
@ -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)
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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];
|
||||
|
@ -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
|
|
@ -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.
Loading…
Add table
Add a link
Reference in a new issue