This commit is contained in:
parent
f54041ef04
commit
db53ce744a
18 changed files with 193 additions and 162 deletions
|
@ -43,6 +43,9 @@ protected:
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
#define ASSERT(x) if (!(x)) GObject::Error(ERR_FATAL,"%s %s %i\n",#x,__FILE__,__LINE__);
|
||||||
|
|
||||||
|
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
GString CheckFileString(const char * Str);
|
GString CheckFileString(const char * Str);
|
||||||
bool CheckPlusMinus(const char * Str);
|
bool CheckPlusMinus(const char * Str);
|
||||||
|
|
|
@ -14,11 +14,6 @@
|
||||||
#include "PsxTypes.h"
|
#include "PsxTypes.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
//***************************************************************************
|
|
||||||
//vector<GString> CFaceStore::TexList;
|
|
||||||
//CTexGrab CFaceStore::FaceStoreTexGrab;
|
|
||||||
//CTexGrab *CFaceStore::TexGrab=&FaceStoreTexGrab;
|
|
||||||
|
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
Vector3 normalise(Vector3 &v)
|
Vector3 normalise(Vector3 &v)
|
||||||
{
|
{
|
||||||
|
@ -108,53 +103,52 @@ CFace F;
|
||||||
}
|
}
|
||||||
|
|
||||||
F.TexName=Tex;
|
F.TexName=Tex;
|
||||||
// F.Mat = AddTex(Tex);
|
F.Mat = -1;
|
||||||
// F.Normal = crossProduct( F.vtx[0], F.vtx[1], F.vtx[2] );
|
|
||||||
// F.Avail = true;
|
|
||||||
// F.ID=ID;
|
|
||||||
|
|
||||||
return(AddFace(F));
|
return(AddFace(F));
|
||||||
}
|
}
|
||||||
|
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
CFace &CFaceStore::AddFace(CFace &Face)
|
CFace &CFaceStore::AddFace(CFace &F,bool ProcessTexFlag)
|
||||||
{
|
{
|
||||||
int ListSize=FaceList.size();
|
int ListSize=FaceList.size();
|
||||||
FaceList.resize(ListSize+1);
|
FaceList.resize(ListSize+1);
|
||||||
CFace &F = FaceList[ListSize];
|
|
||||||
F=Face;
|
|
||||||
|
|
||||||
// Process Vtx's
|
// Process Vtx's
|
||||||
for (int i=0; i<3; i++)
|
for (int i=0; i<3; i++)
|
||||||
{
|
{
|
||||||
F.pts[i]=AddVtx(F.vtx[i]*Scale);
|
F.pts[i]=AddVtx(F.vtx[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
F.Mat=AddTex(Face.TexName);
|
if (ProcessTexFlag && F.Mat==-1)
|
||||||
|
{
|
||||||
|
F.Mat=AddTex(F.TexName);
|
||||||
|
}
|
||||||
F.Normal = crossProduct( F.vtx[0], F.vtx[1], F.vtx[2] );
|
F.Normal = crossProduct( F.vtx[0], F.vtx[1], F.vtx[2] );
|
||||||
F.Avail = true;
|
F.Avail = true;
|
||||||
|
|
||||||
|
FaceList[ListSize]=F;
|
||||||
return(F);
|
return(F);
|
||||||
}
|
}
|
||||||
|
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
void CFaceStore::AddFaces(vector<CFace> &Faces)
|
void CFaceStore::AddFaces(vector<CFace> &Faces,bool ProcessTexFlag)
|
||||||
{
|
{
|
||||||
int ListSize=Faces.size();
|
int ListSize=Faces.size();
|
||||||
|
|
||||||
for (int i=0 ;i<ListSize ;i++)
|
for (int i=0 ;i<ListSize ;i++)
|
||||||
{
|
{
|
||||||
AddFace(Faces[i]);
|
AddFace(Faces[i],ProcessTexFlag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
void CFaceStore::AddFaces(CFaceStore &Faces)
|
void CFaceStore::AddFaces(CFaceStore &Faces,bool ProcessTexFlag)
|
||||||
{
|
{
|
||||||
int ListSize=Faces.GetFaceCount();
|
int ListSize=Faces.GetFaceCount();
|
||||||
|
|
||||||
for (int i=0 ;i<ListSize ;i++)
|
for (int i=0 ;i<ListSize ;i++)
|
||||||
{
|
{
|
||||||
AddFace(Faces[i]);
|
AddFace(Faces[i],ProcessTexFlag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,30 +183,28 @@ CFace &F = FaceList[ListSize];
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
int CFaceStore::AddTex(GString const &TexName)
|
int CFaceStore::AddTex(GString const &TexName)
|
||||||
{
|
{
|
||||||
|
static GString LastTex;
|
||||||
|
static int LastIdx=-1;
|
||||||
|
vector<FileInfo> const &TexList=TexGrab->GetTexInfoList();
|
||||||
int ListSize=TexList.size();
|
int ListSize=TexList.size();
|
||||||
GString Filename=TexName;
|
|
||||||
Filename.Upper();
|
|
||||||
|
|
||||||
for (int i=0; i<ListSize; i++)
|
GString Filename=TexName;
|
||||||
|
Filename.Lower();
|
||||||
|
|
||||||
|
LastTex=Filename;
|
||||||
|
|
||||||
|
for (LastIdx=0; LastIdx<ListSize; LastIdx++)
|
||||||
{
|
{
|
||||||
if (TexList[i].Name==Filename) return(TexList[i].TexGrabId);
|
GString const &ListName=TexList[LastIdx].GetActualFileName();
|
||||||
|
if (ListName==Filename) return(LastIdx);
|
||||||
}
|
}
|
||||||
// Does file exist
|
// Does file exist
|
||||||
if (!FindFile(TexName))
|
if (!FindFile(TexName))
|
||||||
GObject::Error(ERR_FATAL,"Texture not found %s!!\n",TexName);
|
GObject::Error(ERR_FATAL,"Texture not found %s!!\n",TexName);
|
||||||
|
|
||||||
|
TexGrab->AddFile(Filename);
|
||||||
|
LastIdx=ListSize;
|
||||||
|
return(ListSize);
|
||||||
TexList.resize(ListSize+1);
|
|
||||||
sFaceTexList &New=TexList[ListSize];
|
|
||||||
|
|
||||||
New.Name=Filename;
|
|
||||||
|
|
||||||
// printf("Add Tex %s\n",TexName);
|
|
||||||
New.TexGrabId=TexGrab->AddFile(Filename);
|
|
||||||
|
|
||||||
return(New.TexGrabId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
|
@ -255,6 +247,7 @@ void CFaceStore::SetupUV(CFace const &In, sTri &Out)
|
||||||
{
|
{
|
||||||
vector<sTexOutInfo> &TexInfo=TexGrab->GetTexInfo();
|
vector<sTexOutInfo> &TexInfo=TexGrab->GetTexInfo();
|
||||||
sTexOutInfo &ThisTex=TexInfo[In.Mat];
|
sTexOutInfo &ThisTex=TexInfo[In.Mat];
|
||||||
|
ASSERT(In.Mat<TexInfo.size());
|
||||||
|
|
||||||
int W = ThisTex.w - 1;
|
int W = ThisTex.w - 1;
|
||||||
int H = ThisTex.h - 1;
|
int H = ThisTex.h - 1;
|
||||||
|
@ -326,9 +319,9 @@ int CFaceStore::AddVtx(Vector3 &InVtx)
|
||||||
int ListSize=OutVtxList.size();
|
int ListSize=OutVtxList.size();
|
||||||
sVtx ThisVtx;
|
sVtx ThisVtx;
|
||||||
|
|
||||||
ThisVtx.vx=round(InVtx.x);
|
ThisVtx.vx=round(InVtx.x*Scale);
|
||||||
ThisVtx.vy=round(InVtx.y);
|
ThisVtx.vy=round(InVtx.y*Scale);
|
||||||
ThisVtx.vz=round(InVtx.z);
|
ThisVtx.vz=round(InVtx.z*Scale);
|
||||||
|
|
||||||
for (int i=0; i<ListSize; i++)
|
for (int i=0; i<ListSize; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,15 +15,33 @@
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
|
/*
|
||||||
struct sFaceTexList
|
struct sFaceTexList
|
||||||
{
|
{
|
||||||
GString Name;
|
GString Name;
|
||||||
int TexGrabId;
|
int TexGrabId;
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
class CFace
|
class CFace
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
// int PntCount;
|
||||||
|
int Mat;
|
||||||
|
Vector3 vtx[4];
|
||||||
|
int pts[4];
|
||||||
|
int idx[4];
|
||||||
|
sUV uvs[4];
|
||||||
|
int vis[4];
|
||||||
|
Vector3 Normal;
|
||||||
|
bool Avail;
|
||||||
|
int ID;
|
||||||
|
GString TexName;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
class CFace
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
CFace()
|
CFace()
|
||||||
{
|
{
|
||||||
|
@ -34,6 +52,7 @@ public:
|
||||||
vis.resize(3);
|
vis.resize(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// int PntCount;
|
||||||
int Mat;
|
int Mat;
|
||||||
vector<Vector3> vtx;
|
vector<Vector3> vtx;
|
||||||
vector<int> pts;
|
vector<int> pts;
|
||||||
|
@ -46,6 +65,7 @@ public:
|
||||||
GString TexName;
|
GString TexName;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
*/
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
#ifndef sTriFace
|
#ifndef sTriFace
|
||||||
struct sTriFace
|
struct sTriFace
|
||||||
|
@ -67,9 +87,9 @@ public:
|
||||||
~CFaceStore(){};
|
~CFaceStore(){};
|
||||||
|
|
||||||
CFace &AddFace(vector<Vector3> const &P, const sGinTri &T, const sUVTri &uv,GString const &Tex,int ID=0);
|
CFace &AddFace(vector<Vector3> const &P, const sGinTri &T, const sUVTri &uv,GString const &Tex,int ID=0);
|
||||||
CFace &AddFace(CFace &F);
|
CFace &AddFace(CFace &F,bool TexFlag=true);
|
||||||
void AddFaces(vector<CFace>&Faces);
|
void AddFaces(vector<CFace>&Faces,bool TexFlag=true);
|
||||||
void AddFaces(CFaceStore &Faces);
|
void AddFaces(CFaceStore &Faces,bool TexFlag=true);
|
||||||
|
|
||||||
CFace &AddFace(sTriFace &Face,int ID=0);
|
CFace &AddFace(sTriFace &Face,int ID=0);
|
||||||
|
|
||||||
|
@ -135,7 +155,7 @@ private:
|
||||||
int MaxStrip;
|
int MaxStrip;
|
||||||
|
|
||||||
vector<CFace> FaceList;
|
vector<CFace> FaceList;
|
||||||
vector<sFaceTexList> TexList;
|
// vector<sFaceTexList> TexList;
|
||||||
CTexGrab FaceStoreTexGrab,*TexGrab;
|
CTexGrab FaceStoreTexGrab,*TexGrab;
|
||||||
|
|
||||||
vector<CFace> TriFaceList;
|
vector<CFace> TriFaceList;
|
||||||
|
|
|
@ -138,7 +138,13 @@ int Idx=MyFiles.AddMemFrame(UpperName,Frame);
|
||||||
return(Idx);
|
return(Idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vector<FileInfo> const &CTexGrab::GetTexInfoList()
|
||||||
|
{
|
||||||
|
return(MyFiles.GetFileInfoVector());
|
||||||
|
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
|
||||||
/*===========================================================================
|
/*===========================================================================
|
||||||
end */
|
end */
|
||||||
|
|
|
@ -84,6 +84,8 @@ public:
|
||||||
void SetTPage(int Base,int W,int H) {m_PageBase=Base; m_WidthPages=W; m_HeightPages=H; m_PagePlacements=true;}
|
void SetTPage(int Base,int W,int H) {m_PageBase=Base; m_WidthPages=W; m_HeightPages=H; m_PagePlacements=true;}
|
||||||
void ForceOffsets(int XOfs,int YOfs) {MyFiles.SetXOff(XOfs); MyFiles.SetYOff(YOfs); MyFiles.SetForceOffsets(true);}
|
void ForceOffsets(int XOfs,int YOfs) {MyFiles.SetXOff(XOfs); MyFiles.SetYOff(YOfs); MyFiles.SetForceOffsets(true);}
|
||||||
|
|
||||||
|
vector<FileInfo> const &CTexGrab::GetTexInfoList();
|
||||||
|
|
||||||
std::vector<sTexOutInfo> &GetTexInfo() {return(TexInfo);}
|
std::vector<sTexOutInfo> &GetTexInfo() {return(TexInfo);}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ RSC=rc.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\libs\glib" /I "..\libs\maths" /I "..\libs\davelib" /I "..\libs\ginlib" /I "..\libs\texgrab" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\libs\glib" /I "..\libs\maths" /I "..\libs\davelib" /I "..\libs\ginlib" /I "..\libs\texgrab" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
|
||||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
|
|
|
@ -208,8 +208,8 @@ levels/CHAPTER03_LEVEL0401.Lvl
|
||||||
levels/CHAPTER03_LEVEL0402.Lvl
|
levels/CHAPTER03_LEVEL0402.Lvl
|
||||||
levels/CHAPTER03_LEVEL0403.Lvl
|
levels/CHAPTER03_LEVEL0403.Lvl
|
||||||
levels/CHAPTER03_LEVEL0404.Lvl
|
levels/CHAPTER03_LEVEL0404.Lvl
|
||||||
levels/CHAPTER03_LEVEL0404x.Lvl
|
|
||||||
levels/CHAPTER03_LEVEL0405.Lvl
|
levels/CHAPTER03_LEVEL0405.Lvl
|
||||||
|
levels/CHAPTER03_LEVEL0405x.Lvl
|
||||||
levels/CHAPTER03_LEVEL0406.Lvl
|
levels/CHAPTER03_LEVEL0406.Lvl
|
||||||
levels/CHAPTER03_LEVEL0407.Lvl
|
levels/CHAPTER03_LEVEL0407.Lvl
|
||||||
levels/CHAPTER03_LEVEL0408.Lvl
|
levels/CHAPTER03_LEVEL0408.Lvl
|
||||||
|
|
|
@ -63,7 +63,7 @@ LEVELS_CHAPTER03 := LEVEL01 LEVEL02 LEVEL03 LEVEL04
|
||||||
LEVELS_CHAPTER03_LEVEL01 := 01 02 03 04 05 06 07 08 09 10 11 12
|
LEVELS_CHAPTER03_LEVEL01 := 01 02 03 04 05 06 07 08 09 10 11 12
|
||||||
LEVELS_CHAPTER03_LEVEL02 := 01 02 03 04 05 06 07 08 09 10 11 12
|
LEVELS_CHAPTER03_LEVEL02 := 01 02 03 04 05 06 07 08 09 10 11 12
|
||||||
LEVELS_CHAPTER03_LEVEL03 := 01 02 03 04 05 06 07 08 09 10 11 12
|
LEVELS_CHAPTER03_LEVEL03 := 01 02 03 04 05 06 07 08 09 10 11 12
|
||||||
LEVELS_CHAPTER03_LEVEL04 := 01 02 03 04 04x 05 06 07 08 09 10 11
|
LEVELS_CHAPTER03_LEVEL04 := 01 02 03 04 05 05x 06 07 08 09 10 11
|
||||||
|
|
||||||
LEVELS_CHAPTER04 := LEVEL01 LEVEL02 LEVEL03 LEVEL04
|
LEVELS_CHAPTER04 := LEVEL01 LEVEL02 LEVEL03 LEVEL04
|
||||||
LEVELS_CHAPTER04_LEVEL01 := 01 02 03 04 05 06 07 08 09 10 11 12
|
LEVELS_CHAPTER04_LEVEL01 := 01 02 03 04 05 06 07 08 09 10 11 12
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
CLayerBack::CLayerBack(sLayerHdr *Hdr,sTile *TileList,sTri *TriList,sQuad *QuadList,sVtx *VtxList) : CLayerTile(Hdr,TileList,TriList,QuadList,VtxList)
|
CLayerBack::CLayerBack(sLayerHdr *Hdr,sTile *TileBank) : CLayerTile(Hdr,TileBank)
|
||||||
{
|
{
|
||||||
Data=(sLayerShadeHdr*)MakePtr(Hdr,sizeof(sLayerHdr));
|
Data=(sLayerShadeHdr*)MakePtr(Hdr,sizeof(sLayerHdr));
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
class CLayerBack : public CLayerTile
|
class CLayerBack : public CLayerTile
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CLayerBack(sLayerHdr *Hdr,sTile *TileList,sTri *TriList,sQuad *QuadList,sVtx *VtxList);
|
CLayerBack(sLayerHdr *Hdr,sTile *TileBank);
|
||||||
~CLayerBack();
|
~CLayerBack();
|
||||||
|
|
||||||
void init(DVECTOR &MapPos,int Shift);
|
void init(DVECTOR &MapPos,int Shift);
|
||||||
|
|
|
@ -22,17 +22,14 @@ DVECTOR TileMapOfs={0,4}; // To line layers up :oP
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
CLayerTile::CLayerTile(sLayerHdr *Hdr,sTile *_TileList,sTri *_TriList,sQuad *_QuadList,sVtx *_VtxList)
|
CLayerTile::CLayerTile(sLayerHdr *Hdr,sTile *_TileBank)
|
||||||
{
|
{
|
||||||
LayerHdr=Hdr;
|
LayerHdr=Hdr;
|
||||||
MapWidth=LayerHdr->Width;
|
MapWidth=LayerHdr->Width;
|
||||||
MapHeight=LayerHdr->Height;
|
MapHeight=LayerHdr->Height;
|
||||||
|
|
||||||
printf("%i %i\n",MapWidth,MapHeight);
|
printf("%i %i\n",MapWidth,MapHeight);
|
||||||
TileList=_TileList;
|
TileBank=_TileBank;
|
||||||
TriList=_TriList;
|
|
||||||
QuadList=_QuadList;
|
|
||||||
VtxList=_VtxList;
|
|
||||||
Map=(sTileMapElem*)MakePtr(Hdr,sizeof(sLayerHdr));
|
Map=(sTileMapElem*)MakePtr(Hdr,sizeof(sLayerHdr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,10 +105,10 @@ sOT *ThisOT=OtPtr+LayerOT;
|
||||||
|
|
||||||
for (int X=0; X<RenderW; X++)
|
for (int X=0; X<RenderW; X++)
|
||||||
{
|
{
|
||||||
/**/ sTile *Tile=&TileList[MapRow->Tile];
|
int ThisTile=*MapRow++;
|
||||||
|
if (ThisTile)
|
||||||
if (Tile->Clut)
|
|
||||||
{
|
{
|
||||||
|
/**/ sTile *Tile=&TileBank[ThisTile];
|
||||||
TSPRT_16 *SprPtr=(TSPRT_16*)PrimPtr;
|
TSPRT_16 *SprPtr=(TSPRT_16*)PrimPtr;
|
||||||
setTSprt16(SprPtr);
|
setTSprt16(SprPtr);
|
||||||
setTSetShadeTex(SprPtr,1);
|
setTSetShadeTex(SprPtr,1);
|
||||||
|
@ -122,7 +119,7 @@ sOT *ThisOT=OtPtr+LayerOT;
|
||||||
addPrimNoCheck(ThisOT,SprPtr);
|
addPrimNoCheck(ThisOT,SprPtr);
|
||||||
PrimPtr+=sizeof(TSPRT_16);
|
PrimPtr+=sizeof(TSPRT_16);
|
||||||
}
|
}
|
||||||
MapRow++;
|
// MapRow++;
|
||||||
TileX+=TILE_WIDTH;
|
TileX+=TILE_WIDTH;
|
||||||
}
|
}
|
||||||
MapPtr+=MapWidth;
|
MapPtr+=MapWidth;
|
||||||
|
|
|
@ -34,7 +34,7 @@ public:
|
||||||
SCREEN_TILE_SIZE=SCREEN_TILE_WIDTH*SCREEN_TILE_HEIGHT
|
SCREEN_TILE_SIZE=SCREEN_TILE_WIDTH*SCREEN_TILE_HEIGHT
|
||||||
};
|
};
|
||||||
|
|
||||||
CLayerTile(sLayerHdr *Hdr,sTile *TileList,sTri *TriList,sQuad *QuadList,sVtx *VtxList);
|
CLayerTile(sLayerHdr *Hdr,sTile *TileBank);
|
||||||
virtual ~CLayerTile();
|
virtual ~CLayerTile();
|
||||||
|
|
||||||
virtual void init(DVECTOR &MapPos,int Shift);
|
virtual void init(DVECTOR &MapPos,int Shift);
|
||||||
|
@ -48,10 +48,7 @@ protected:
|
||||||
|
|
||||||
|
|
||||||
sLayerHdr *LayerHdr;
|
sLayerHdr *LayerHdr;
|
||||||
sTile *TileList;
|
sTile *TileBank;
|
||||||
sTri *TriList;
|
|
||||||
sQuad *QuadList;
|
|
||||||
sVtx *VtxList;
|
|
||||||
|
|
||||||
int MapWidth,MapHeight,MapXYShift;
|
int MapWidth,MapHeight,MapXYShift;
|
||||||
int RenderW,RenderH;
|
int RenderW,RenderH;
|
||||||
|
|
|
@ -15,8 +15,17 @@
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
CLayerTile3d::CLayerTile3d(sLayerHdr *Hdr,sTile *TileList,sTri *TriList,sQuad *QuadList,sVtx *VtxList) : CLayerTile(Hdr,TileList,TriList,QuadList,VtxList)
|
CLayerTile3d::CLayerTile3d(sLayerHdr *Hdr,sTile *TileBank) : CLayerTile(Hdr,TileBank)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
LayerInfo=(sLayer3d*)MakePtr(Hdr,sizeof(sLayerHdr));
|
||||||
|
|
||||||
|
TriList=(sTri*) MakePtr(Hdr,LayerInfo->TriList);
|
||||||
|
QuadList=(sQuad*) MakePtr(Hdr,LayerInfo->QuadList);
|
||||||
|
VtxList=(sVtx*) MakePtr(Hdr,LayerInfo->VtxList);
|
||||||
|
|
||||||
|
Map=(sTileMapElem*)MakePtr(Hdr,sizeof(sLayerHdr)+sizeof(sLayer3d));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -32,116 +41,114 @@ CLayerTile3d::~CLayerTile3d()
|
||||||
void CLayerTile3d::init(DVECTOR &MapPos,int Shift)
|
void CLayerTile3d::init(DVECTOR &MapPos,int Shift)
|
||||||
{
|
{
|
||||||
CLayerTile::init(MapPos,Shift);
|
CLayerTile::init(MapPos,Shift);
|
||||||
CreateRenderFlagTable();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void CLayerTile3d::shutdown()
|
void CLayerTile3d::shutdown()
|
||||||
{
|
{
|
||||||
MemFree(RenderFlagTable);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
void CLayerTile3d::CreateRenderFlagTable()
|
|
||||||
{
|
|
||||||
s16 *Ptr;
|
|
||||||
|
|
||||||
RenderFlagTable=(s16*) MemAlloc(SCREEN_TILE_WIDTH*SCREEN_TILE_HEIGHT*sizeof(s32),"RenderFlagTable");
|
|
||||||
Ptr=RenderFlagTable;
|
|
||||||
|
|
||||||
for (int Y=0; Y<SCREEN_TILE_HEIGHT; Y++)
|
|
||||||
{
|
|
||||||
for (int X=0; X<SCREEN_TILE_WIDTH; X++)
|
|
||||||
{
|
|
||||||
s16 Flag=1<<TILE3D_FLAGS_F;
|
|
||||||
if (X<(SCREEN_TILE_WIDTH/2)+1)
|
|
||||||
{
|
|
||||||
Flag|=1<<TILE3D_FLAGS_R;
|
|
||||||
}
|
|
||||||
if (X>(SCREEN_TILE_WIDTH/2)-1)
|
|
||||||
{
|
|
||||||
Flag|=1<<TILE3D_FLAGS_L;
|
|
||||||
}
|
|
||||||
if (Y<(SCREEN_TILE_HEIGHT/2)+1)
|
|
||||||
{
|
|
||||||
Flag|=1<<TILE3D_FLAGS_D;
|
|
||||||
}
|
|
||||||
if (Y>(SCREEN_TILE_HEIGHT/2)-1)
|
|
||||||
{
|
|
||||||
Flag|=1<<TILE3D_FLAGS_U;
|
|
||||||
}
|
|
||||||
*Ptr++=Flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
#define BLOCK_MULT 16
|
#define BLOCK_MULT 16
|
||||||
|
int XOfs=-16;
|
||||||
|
int YOfs=-7;
|
||||||
|
int asd=16;
|
||||||
|
int TriMax=0;
|
||||||
void CLayerTile3d::render()
|
void CLayerTile3d::render()
|
||||||
{
|
{
|
||||||
sTileMapElem3d *MapPtr=GetMapPos3d();
|
sTileMapElem *MapPtr=GetMapPos();
|
||||||
|
//sTileMapElem *MapPtr=Map;
|
||||||
|
|
||||||
u8 *PrimPtr=GetPrimPtr();
|
u8 *PrimPtr=GetPrimPtr();
|
||||||
s16 TileX,TileY;
|
POLY_FT3 *TPrimPtr=(POLY_FT3*)PrimPtr;
|
||||||
VECTOR BlkPos;
|
VECTOR BlkPos;
|
||||||
s32 BlkXStore;
|
|
||||||
sOT *ThisOT=OtPtr+LayerOT;
|
sOT *ThisOT=OtPtr+LayerOT;
|
||||||
s16 *RenderFlags=RenderFlagTable;
|
sVtx *P0,*P1,*P2;
|
||||||
|
u32 T0,T1,T2;
|
||||||
|
|
||||||
|
TriMax=0;
|
||||||
// Setup shift bits of pos
|
// Setup shift bits of pos
|
||||||
TileY=-ShiftY;
|
BlkPos.vx=-(((MapXY.vx-XOfs)*asd)+ShiftX)*asd;
|
||||||
BlkPos.vx=((-15*TILE_WIDTH)-ShiftX)*BLOCK_MULT;
|
BlkPos.vy=-(((MapXY.vy-YOfs)*asd)+ShiftY)*asd;
|
||||||
BlkPos.vy=((-7*TILE_HEIGHT)-ShiftY)*BLOCK_MULT;
|
|
||||||
BlkXStore=BlkPos.vx;
|
CMX_SetTransMtxXY(&BlkPos);
|
||||||
|
|
||||||
// Render it!!
|
|
||||||
for (int Y=0; Y<RenderH; Y++)
|
for (int Y=0; Y<RenderH; Y++)
|
||||||
{
|
{
|
||||||
sTileMapElem3d *MapRow=MapPtr;
|
// Get strip render size
|
||||||
|
int TriStart=MapPtr[0];
|
||||||
|
int TriEnd=MapPtr[RenderW];
|
||||||
|
int TriCount=TriEnd-TriStart;
|
||||||
|
|
||||||
|
sTri *TList=&TriList[TriStart];
|
||||||
|
|
||||||
|
while (TriCount>0)
|
||||||
|
{
|
||||||
|
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++;
|
||||||
|
gte_stsxy3_ft3(TPrimPtr);
|
||||||
|
int ClipZ=NormalClip(*(u32*)&TPrimPtr->x0,*(u32*)&TPrimPtr->x1,*(u32*)&TPrimPtr->x2);
|
||||||
|
if (ClipZ<=0)
|
||||||
|
{
|
||||||
|
addPrimNoCheck(ThisOT,TPrimPtr);
|
||||||
|
TPrimPtr++;
|
||||||
|
}
|
||||||
|
|
||||||
|
TriCount--;
|
||||||
|
}
|
||||||
|
MapPtr+=MapWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
TriMax=((u8*)TPrimPtr-PrimPtr)/sizeof(POLY_FT3);
|
||||||
|
|
||||||
|
// Render it!!
|
||||||
|
/*
|
||||||
|
for (int Y=0; Y<RenderH; Y++)
|
||||||
|
{
|
||||||
|
sTileMapElem *MapRow=MapPtr;
|
||||||
TileX=-ShiftX;
|
TileX=-ShiftX;
|
||||||
|
|
||||||
for (int X=0; X<RenderW; X++)
|
for (int X=0; X<RenderW; X++)
|
||||||
{
|
{
|
||||||
/**/ sTile *Tile=&TileList[MapRow->Tile];
|
sTile *Tile=&TileList[MapRow->Elem];
|
||||||
|
|
||||||
if (Tile->Clut)
|
|
||||||
{
|
|
||||||
TSPRT_16 *SprPtr=(TSPRT_16*)PrimPtr;
|
|
||||||
setTSprt16(SprPtr);
|
|
||||||
setTSetShadeTex(SprPtr,1);
|
|
||||||
/**/ SprPtr->x0=TileX;
|
|
||||||
/**/ SprPtr->y0=TileY;
|
|
||||||
/**/ setTSprtTPage(SprPtr,Tile->TPage);
|
|
||||||
*(u32*)&SprPtr->u0=*(u32*)&Tile->u0; // copy uv AND clut
|
|
||||||
addPrimNoCheck(ThisOT,SprPtr);
|
|
||||||
PrimPtr+=sizeof(TSPRT_16);
|
|
||||||
}
|
|
||||||
if (MapRow->Flags)
|
if (MapRow->Flags)
|
||||||
{ // Has 3d Data
|
{ // Has 3d Data
|
||||||
CMX_SetTransMtxXY(&BlkPos);
|
CMX_SetTransMtxXY(&BlkPos);
|
||||||
PrimPtr=RenderBlock(Tile,MapRow->Flags & *RenderFlags,PrimPtr);
|
|
||||||
}
|
}
|
||||||
MapRow++;
|
MapRow++;
|
||||||
TileX+=TILE_WIDTH;
|
TileX+=TILE_WIDTH;
|
||||||
BlkPos.vx+=TILE_WIDTH*BLOCK_MULT;
|
BlkPos.vx+=TILE_WIDTH*BLOCK_MULT;
|
||||||
RenderFlags++;
|
|
||||||
}
|
}
|
||||||
MapPtr+=MapWidth;
|
MapPtr+=MapWidth;
|
||||||
TileY+=TILE_HEIGHT;
|
TileY+=TILE_HEIGHT;
|
||||||
BlkPos.vx=BlkXStore;
|
BlkPos.vx=BlkXStore;
|
||||||
BlkPos.vy+=TILE_HEIGHT*BLOCK_MULT;
|
BlkPos.vy+=TILE_HEIGHT*BLOCK_MULT;
|
||||||
}
|
}
|
||||||
SetPrimPtr(PrimPtr);
|
*/
|
||||||
|
SetPrimPtr((u8*)TPrimPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// NOTE: Tiles will be sorted by z order (cos they 'should' be simple objects
|
// 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: Tiles are split into facing strips, to reduce overdraw :o)
|
||||||
// NOTE: Matrix already setup for block
|
// NOTE: Matrix already setup for block
|
||||||
|
#if 0
|
||||||
u8 *CLayerTile3d::RenderBlock(sTile *Tile,s16 RenderFlags,u8 *PrimPtr)
|
u8 *CLayerTile3d::RenderBlock(sTile *Tile,s16 RenderFlags,u8 *PrimPtr)
|
||||||
{
|
{
|
||||||
sVtx *P0,*P1,*P2;
|
sVtx *P0,*P1,*P2;
|
||||||
|
@ -187,3 +194,4 @@ sOT *ThisOT=OtPtr+LayerOT;
|
||||||
return((u8*)TPrimPtr);
|
return((u8*)TPrimPtr);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
|
@ -10,20 +10,18 @@
|
||||||
class CLayerTile3d : public CLayerTile
|
class CLayerTile3d : public CLayerTile
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CLayerTile3d(sLayerHdr *Hdr,sTile *TileList,sTri *TriList,sQuad *QuadList,sVtx *VtxList);
|
CLayerTile3d(sLayerHdr *Hdr,sTile *TileBank);
|
||||||
~CLayerTile3d();
|
~CLayerTile3d();
|
||||||
|
|
||||||
void init(DVECTOR &MapPos,int Shift);
|
void init(DVECTOR &MapPos,int Shift);
|
||||||
void shutdown();
|
void shutdown();
|
||||||
void render();
|
void render();
|
||||||
|
|
||||||
sTileMapElem3d *GetMapPos3d() {return(((sTileMapElem3d*)Map)+GetMapOfs());}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void CreateRenderFlagTable();
|
sLayer3d *LayerInfo;
|
||||||
u8 *RenderBlock(sTile *Tile,s16 RenderFlags,u8 *PrimPtr);
|
sTri *TriList;
|
||||||
|
sQuad *QuadList;
|
||||||
s16 *RenderFlagTable;
|
sVtx *VtxList;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -183,8 +183,8 @@ sLvlTab LvlTable[]=
|
||||||
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0402_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 300,0,150,50, 368,110},
|
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0402_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 300,0,150,50, 368,110},
|
||||||
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0403_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 2550,400,100,150, 95,320},
|
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0403_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 2550,400,100,150, 95,320},
|
||||||
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0404_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 2400,450,250,150, 100,272},
|
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0404_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 2400,450,250,150, 100,272},
|
||||||
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0404X_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 0,200,100,100, 144,288},
|
|
||||||
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0405_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 0,600,100,200, 1910,464},
|
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0405_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 0,600,100,200, 1910,464},
|
||||||
|
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0405X_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 0,200,100,100, 144,288},
|
||||||
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0406_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 2000,400,100,100, 568,160},
|
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0406_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 2000,400,100,100, 568,160},
|
||||||
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0407_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 0,0,50,50, 268,160},
|
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0407_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 0,0,50,50, 268,160},
|
||||||
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0408_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 0,0,50,50, 268,160},
|
{LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0408_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, 0,0,50,50, 268,160},
|
||||||
|
@ -367,7 +367,7 @@ void CLevel::init()
|
||||||
#endif
|
#endif
|
||||||
if (s_globalLevelSelectThing>=LvlTableSize) s_globalLevelSelectThing=0;
|
if (s_globalLevelSelectThing>=LvlTableSize) s_globalLevelSelectThing=0;
|
||||||
|
|
||||||
while (CFileIO::getFileSize(LvlTable[s_globalLevelSelectThing ].Level)==2880) // Dodgy blank level skip
|
while (CFileIO::getFileSize(LvlTable[s_globalLevelSelectThing ].Level)==1492) // Dodgy blank level skip
|
||||||
{
|
{
|
||||||
s_globalLevelSelectThing++;
|
s_globalLevelSelectThing++;
|
||||||
if (s_globalLevelSelectThing>=LvlTableSize) s_globalLevelSelectThing=0;
|
if (s_globalLevelSelectThing>=LvlTableSize) s_globalLevelSelectThing=0;
|
||||||
|
@ -380,14 +380,10 @@ void CLevel::init()
|
||||||
CollisionLayer=0;
|
CollisionLayer=0;
|
||||||
MapPos.vx=0;
|
MapPos.vx=0;
|
||||||
MapPos.vy=0;
|
MapPos.vy=0;
|
||||||
/*
|
|
||||||
TileBankHdr=(sTileBankHdr *)CFileIO::loadFile(LEVELS_CHAPTER02_LEVEL04_TBK,"Tile Bank Data");
|
|
||||||
LevelHdr=(sLvlHdr *)CFileIO::loadFile(LEVELS_CHAPTER02_LEVEL0401_LVL,"Level Data");
|
|
||||||
m_levelTPage=TPLoadTex(LEVELS_CHAPTER02_LEVEL04_TEX);
|
|
||||||
*/
|
|
||||||
sLvlTab *lvlTab;
|
sLvlTab *lvlTab;
|
||||||
lvlTab=&LvlTable[s_globalLevelSelectThing];
|
lvlTab=&LvlTable[s_globalLevelSelectThing];
|
||||||
TileBankHdr=(sTileBankHdr *)CFileIO::loadFile(lvlTab->TileBank,"Tile Bank Data");
|
TileBank=(sTile *)CFileIO::loadFile(lvlTab->TileBank,"Tile Bank Data");
|
||||||
LevelHdr=(sLvlHdr *)CFileIO::loadFile(lvlTab->Level,"Level Data");
|
LevelHdr=(sLvlHdr *)CFileIO::loadFile(lvlTab->Level,"Level Data");
|
||||||
m_levelTPage=TPLoadTex(lvlTab->Tex);
|
m_levelTPage=TPLoadTex(lvlTab->Tex);
|
||||||
|
|
||||||
|
@ -409,17 +405,12 @@ void CLevel::init()
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void CLevel::initLayers()
|
void CLevel::initLayers()
|
||||||
{
|
{
|
||||||
sTri *TriList=(sTri*)MakePtr(TileBankHdr,TileBankHdr->TriList);
|
|
||||||
sQuad *QuadList=(sQuad*)MakePtr(TileBankHdr,TileBankHdr->QuadList);
|
|
||||||
sVtx *VtxList=(sVtx*)MakePtr(TileBankHdr,TileBankHdr->VtxList);
|
|
||||||
sTile *TileList=(sTile*)MakePtr(TileBankHdr,TileBankHdr->TileList);
|
|
||||||
|
|
||||||
// Back
|
// Back
|
||||||
|
|
||||||
if (LevelHdr->BackLayer)
|
if (LevelHdr->BackLayer)
|
||||||
{
|
{
|
||||||
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->BackLayer);
|
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->BackLayer);
|
||||||
CLayerTile *NewLayer=new ("Back Layer") CLayerBack(Layer, TileList, TriList, QuadList, VtxList);
|
CLayerTile *NewLayer=new ("Back Layer") CLayerBack(Layer, TileBank);
|
||||||
NewLayer->init(MapPos,3);
|
NewLayer->init(MapPos,3);
|
||||||
TileLayers[CLayerTile::LAYER_TILE_TYPE_BACK]=NewLayer;
|
TileLayers[CLayerTile::LAYER_TILE_TYPE_BACK]=NewLayer;
|
||||||
}
|
}
|
||||||
|
@ -428,7 +419,7 @@ sTile *TileList=(sTile*)MakePtr(TileBankHdr,TileBankHdr->TileList);
|
||||||
if (LevelHdr->MidLayer)
|
if (LevelHdr->MidLayer)
|
||||||
{
|
{
|
||||||
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->MidLayer);
|
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->MidLayer);
|
||||||
CLayerTile *NewLayer=new ("Mid Layer") CLayerTile(Layer, TileList, TriList, QuadList, VtxList);
|
CLayerTile *NewLayer=new ("Mid Layer") CLayerTile(Layer, TileBank);
|
||||||
NewLayer->init(MapPos,2);
|
NewLayer->init(MapPos,2);
|
||||||
TileLayers[CLayerTile::LAYER_TILE_TYPE_MID]=NewLayer;
|
TileLayers[CLayerTile::LAYER_TILE_TYPE_MID]=NewLayer;
|
||||||
}
|
}
|
||||||
|
@ -437,7 +428,7 @@ sTile *TileList=(sTile*)MakePtr(TileBankHdr,TileBankHdr->TileList);
|
||||||
if (LevelHdr->ActionLayer)
|
if (LevelHdr->ActionLayer)
|
||||||
{
|
{
|
||||||
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->ActionLayer);
|
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->ActionLayer);
|
||||||
CLayerTile *NewLayer=new ("Action Layer") CLayerTile3d(Layer, TileList, TriList, QuadList, VtxList);
|
CLayerTile *NewLayer=new ("Action Layer") CLayerTile3d(Layer, TileBank);
|
||||||
NewLayer->init(MapPos,0);
|
NewLayer->init(MapPos,0);
|
||||||
TileLayers[CLayerTile::LAYER_TILE_TYPE_ACTION]=NewLayer;
|
TileLayers[CLayerTile::LAYER_TILE_TYPE_ACTION]=NewLayer;
|
||||||
}
|
}
|
||||||
|
@ -476,7 +467,7 @@ void CLevel::shutdown()
|
||||||
{
|
{
|
||||||
CollisionLayer->shutdown(); MemFree(CollisionLayer);
|
CollisionLayer->shutdown(); MemFree(CollisionLayer);
|
||||||
}
|
}
|
||||||
MemFree(TileBankHdr);
|
MemFree(TileBank);
|
||||||
MemFree(LevelHdr);
|
MemFree(LevelHdr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ private:
|
||||||
void initLayers();
|
void initLayers();
|
||||||
|
|
||||||
sLvlHdr *LevelHdr;
|
sLvlHdr *LevelHdr;
|
||||||
sTileBankHdr *TileBankHdr;
|
sTile *TileBank;
|
||||||
static DVECTOR MapPos;
|
static DVECTOR MapPos;
|
||||||
static DVECTOR s_playerSpawnPos;
|
static DVECTOR s_playerSpawnPos;
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -179,7 +179,7 @@ struct sQuad
|
||||||
//*** Game Types and Headers ************************************************
|
//*** Game Types and Headers ************************************************
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
// Maps
|
// Maps
|
||||||
|
/*
|
||||||
enum TILE3D_FLAGS
|
enum TILE3D_FLAGS
|
||||||
{
|
{
|
||||||
TILE3D_FLAGS_F=0,
|
TILE3D_FLAGS_F=0,
|
||||||
|
@ -190,17 +190,20 @@ enum TILE3D_FLAGS
|
||||||
// TILE3D_FLAGS_B, // Should never have back facing polys
|
// TILE3D_FLAGS_B, // Should never have back facing polys
|
||||||
TILE3D_FLAGS_MAX
|
TILE3D_FLAGS_MAX
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
typedef u16 sTileMapElem; // Tile or Tri Start
|
||||||
|
/*
|
||||||
struct sTileMapElem
|
struct sTileMapElem
|
||||||
{
|
{
|
||||||
u16 Tile;
|
u16 Elem; // Tile or Tri Start
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
/*
|
||||||
struct sTileMapElem3d : public sTileMapElem
|
struct sTileMapElem3d : public sTileMapElem
|
||||||
{
|
{
|
||||||
u16 Flags;
|
u16 Flags;
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
struct sTileTable
|
struct sTileTable
|
||||||
{
|
{
|
||||||
|
@ -211,9 +214,8 @@ struct sTileTable
|
||||||
struct sTile
|
struct sTile
|
||||||
{
|
{
|
||||||
// 3d Tile
|
// 3d Tile
|
||||||
// sTileTable TileTable[TILE3D_FLAGS_MAX]; // 20 (4*5)
|
// u16 TriStart; // 2
|
||||||
u16 TriStart; // 2
|
// u16 TileTable[TILE3D_FLAGS_MAX]; // 10
|
||||||
u16 TileTable[TILE3D_FLAGS_MAX]; // 10
|
|
||||||
// 2d Tile
|
// 2d Tile
|
||||||
u8 u0,v0; // 2
|
u8 u0,v0; // 2
|
||||||
u16 Clut; // 2
|
u16 Clut; // 2
|
||||||
|
@ -237,6 +239,19 @@ struct sLayerHdr
|
||||||
/*int TileData[W][H];....*/
|
/*int TileData[W][H];....*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
struct sLayer3d
|
||||||
|
{
|
||||||
|
u16 TriCount;
|
||||||
|
u16 QuadCount;
|
||||||
|
u16 VtxCount;
|
||||||
|
u16 Pad;
|
||||||
|
|
||||||
|
u32 TriList;
|
||||||
|
u32 QuadList;
|
||||||
|
u32 VtxList;
|
||||||
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
// Shade Layer
|
// Shade Layer
|
||||||
struct sLayerShade
|
struct sLayerShade
|
||||||
|
@ -271,6 +286,7 @@ struct sLvlHdr
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
// TileBank
|
// TileBank
|
||||||
|
/*
|
||||||
struct sTileBankHdr
|
struct sTileBankHdr
|
||||||
{
|
{
|
||||||
u32 TriList;
|
u32 TriList;
|
||||||
|
@ -278,7 +294,7 @@ struct sTileBankHdr
|
||||||
u32 VtxList;
|
u32 VtxList;
|
||||||
u32 TileList;
|
u32 TileList;
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
//***************************************************************************
|
//***************************************************************************
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue