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 -----------------------------------------------------------------
|
#--- Levels -----------------------------------------------------------------
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# TEMP!!
|
# TEMP!!
|
||||||
LEVELS_OPTS := -t:8,4,1 -s:256
|
LEVELS_OPTS := -t:8,4,1 -s:16
|
||||||
LEVELS_IN_DIR := $(GRAF_DIR)/levels
|
LEVELS_IN_DIR := $(GRAF_DIR)/levels
|
||||||
LEVELS_OUT_DIR := $(DATA_OUT)/levels
|
LEVELS_OUT_DIR := $(DATA_OUT)/levels
|
||||||
LEVELS_MAKEFILE_DIR := $(TEMP_BUILD_DIR)/levels
|
LEVELS_MAKEFILE_DIR := $(TEMP_BUILD_DIR)/levels
|
||||||
|
@ -522,7 +522,7 @@ $(GRAF_DIRS_TO_MAKE) :
|
||||||
|
|
||||||
BIGLUMP_IN := $(GFX_DATA_OUT)
|
BIGLUMP_IN := $(GFX_DATA_OUT)
|
||||||
BIGLUMP_OUT := $(VERSION_DIR)/BigLump.Bin
|
BIGLUMP_OUT := $(VERSION_DIR)/BigLump.Bin
|
||||||
BIGLUMP_INC := $(INC_DIR)/BigLump.h
|
BIGLUMP_INC := $(INC_DIR)/BigLump.hx
|
||||||
|
|
||||||
biglump : $(BIGLUMP_OUT)
|
biglump : $(BIGLUMP_OUT)
|
||||||
|
|
||||||
|
|
|
@ -64,10 +64,10 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int GX=248;
|
//int GX=512/2;
|
||||||
int GY=129;
|
//int GY=256/;
|
||||||
int GH=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=new ("CGameScene::Init") FontBank();
|
||||||
s_genericFont->initialise( &standardFont );
|
s_genericFont->initialise( &standardFont );
|
||||||
s_genericFont->setColour( 255, 255 , 0 );
|
s_genericFont->setColour( 255, 255 , 0 );
|
||||||
VidSetClearScreen(1);
|
VidSetClearScreen(0);
|
||||||
|
|
||||||
SetGeomOffset( GX, GY );
|
// SetGeomOffset( GX, GY );
|
||||||
SetGeomScreen(GH);
|
SetGeomScreen(GH);
|
||||||
|
|
||||||
m_pauseMenu=new ("Pause Menu") CPauseMenu();
|
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
|
#define BLOCK_MULT 16
|
||||||
int XOfs=-16;
|
|
||||||
int YOfs=-7;
|
|
||||||
int asd=16;
|
|
||||||
int TriMax=0;
|
int TriMax=0;
|
||||||
|
|
||||||
void CLayerTile3d::render()
|
void CLayerTile3d::render()
|
||||||
{
|
{
|
||||||
sTileMapElem *MapPtr=GetMapPos();
|
const int XOfs=-(BLOCK_MULT*15)-(SCREEN_TILE_ADJ_LEFT*BLOCK_MULT);
|
||||||
//sTileMapElem *MapPtr=Map;
|
const int YOfs=-(BLOCK_MULT*7)-(SCREEN_TILE_ADJ_UP*BLOCK_MULT);
|
||||||
|
|
||||||
|
sTileMapElem *MapPtr=GetMapPos();
|
||||||
u8 *PrimPtr=GetPrimPtr();
|
u8 *PrimPtr=GetPrimPtr();
|
||||||
POLY_FT3 *TPrimPtr=(POLY_FT3*)PrimPtr;
|
POLY_FT3 *TPrimPtr=(POLY_FT3*)PrimPtr;
|
||||||
VECTOR BlkPos;
|
VECTOR BlkPos;
|
||||||
sOT *ThisOT=OtPtr+LayerOT;
|
sOT *ThisOT=OtPtr+LayerOT;
|
||||||
sVtx *P0,*P1,*P2;
|
sVtx *P0,*P1,*P2;
|
||||||
u32 T0,T1,T2;
|
u32 T0,T1,T2;
|
||||||
|
s32 ClipZ;
|
||||||
|
|
||||||
TriMax=0;
|
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);
|
CMX_SetTransMtxXY(&BlkPos);
|
||||||
|
|
||||||
for (int Y=0; Y<RenderH; Y++)
|
for (int Y=0; Y<RenderH; Y++)
|
||||||
|
@ -83,7 +114,6 @@ u32 T0,T1,T2;
|
||||||
int TriCount=TriEnd-TriStart;
|
int TriCount=TriEnd-TriStart;
|
||||||
|
|
||||||
sTri *TList=&TriList[TriStart];
|
sTri *TList=&TriList[TriStart];
|
||||||
|
|
||||||
while (TriCount>0)
|
while (TriCount>0)
|
||||||
{
|
{
|
||||||
P0=&VtxList[TList->P0]; P1=&VtxList[TList->P1]; P2=&VtxList[TList->P2];
|
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
|
*(u16*)&TPrimPtr->u2=T2; // Set UV2
|
||||||
|
|
||||||
TList++;
|
TList++;
|
||||||
|
gte_nclip_b();
|
||||||
gte_stsxy3_ft3(TPrimPtr);
|
gte_stsxy3_ft3(TPrimPtr);
|
||||||
int ClipZ=NormalClip(*(u32*)&TPrimPtr->x0,*(u32*)&TPrimPtr->x1,*(u32*)&TPrimPtr->x2);
|
gte_stopz(&ClipZ);
|
||||||
if (ClipZ<=0)
|
if (ClipZ<=0)
|
||||||
{
|
{
|
||||||
addPrimNoCheck(ThisOT,TPrimPtr);
|
addPrimNoCheck(ThisOT,TPrimPtr);
|
||||||
|
@ -116,82 +147,5 @@ u32 T0,T1,T2;
|
||||||
|
|
||||||
TriMax=((u8*)TPrimPtr-PrimPtr)/sizeof(POLY_FT3);
|
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);
|
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 ***/
|
/*** 3d Tile Layer Class ***/
|
||||||
/***************************/
|
/***************************/
|
||||||
|
|
||||||
#ifndef __LAYER_TILE_3D_H__
|
#ifndef __LAYER_TILE_3D_Hx__
|
||||||
#define __LAYER_TILE_3D_H__
|
#define __LAYER_TILE_3D_Hx__
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -13,8 +13,19 @@ public:
|
||||||
CLayerTile3d(sLayerHdr *Hdr,sTile *TileBank);
|
CLayerTile3d(sLayerHdr *Hdr,sTile *TileBank);
|
||||||
~CLayerTile3d();
|
~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 init(DVECTOR &MapPos,int Shift);
|
||||||
void shutdown();
|
void shutdown();
|
||||||
|
void think(DVECTOR &MapPos);
|
||||||
void render();
|
void render();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -22,7 +33,6 @@ protected:
|
||||||
sTri *TriList;
|
sTri *TriList;
|
||||||
sQuad *QuadList;
|
sQuad *QuadList;
|
||||||
sVtx *VtxList;
|
sVtx *VtxList;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue