From 02213c2a69348fa55ead47f72860a1b6874ba75c Mon Sep 17 00:00:00 2001 From: Daveo Date: Wed, 25 Jul 2001 21:37:17 +0000 Subject: [PATCH] --- Utils/Libs/DaveLib/facestore.cpp | 46 ++++++++++++++- Utils/MkLevel/MkLevel.cpp | 10 ++-- source/gfx/actor.cpp | 13 ++-- source/level/layertile3d.cpp | 98 +++++++++++++++++++++++++++---- tools/Data/bin/MkLevel.exe | Bin 233472 -> 233472 bytes tools/Data/include/dstructs.h | 9 ++- 6 files changed, 150 insertions(+), 26 deletions(-) diff --git a/Utils/Libs/DaveLib/facestore.cpp b/Utils/Libs/DaveLib/facestore.cpp index 4810c88f8..e210e4d8f 100644 --- a/Utils/Libs/DaveLib/facestore.cpp +++ b/Utils/Libs/DaveLib/facestore.cpp @@ -256,7 +256,8 @@ int V=ThisTex.v+H; Out.TPage=ThisTex.Tpage; Out.Clut=ThisTex.Clut; - Out.PolyCode=GPU_PolyFT3Code; +// Out.PolyCode=GPU_PolyFT3Code; + Out.PolyCode=GPU_PolyGT3Code; if (In.TPageFlag) { @@ -319,7 +320,8 @@ int V=ThisTex.v+H; Out.TPage=ThisTex.Tpage; Out.Clut=ThisTex.Clut; - Out.PolyCode=GPU_PolyFT4Code; +// Out.PolyCode=GPU_PolyFT4Code; + Out.PolyCode=GPU_PolyGT4Code; if (In.TPageFlag) { @@ -393,9 +395,29 @@ int ListSize=OutTriList.size(); ParseVtx4BBox(OutVtxList[OutFace.P0]); ParseVtx4BBox(OutVtxList[OutFace.P1]); ParseVtx4BBox(OutVtxList[OutFace.P2]); + // Materials and other shit SetupUV(InFace,OutFace); OutFace.OTOfs=InFace.OtOfs; + +// RGB Shite +int ZOfs=+4*Scale; + int Z[3]; + + Z[0]=(OutVtxList[OutFace.P0].vz+ZOfs)/8; + Z[1]=(OutVtxList[OutFace.P1].vz+ZOfs)/8; + Z[2]=(OutVtxList[OutFace.P2].vz+ZOfs)/8; + + for (int p=0; p<3; p++) + { + if (Z[p]<0 ) Z[p]=0; + if (Z[p]>15) Z[p]=15; + + } + + OutFace.C0=Z[0]*4; + OutFace.C1=Z[1]*4; + OutFace.C2=Z[2]*4; } } @@ -425,6 +447,26 @@ int ListSize=OutQuadList.size(); // Materials and other shit SetupUV(InFace,OutFace); OutFace.OTOfs=InFace.OtOfs; +// RGB Shite +int ZOfs=+4*Scale; + int Z[4]; + + Z[0]=(OutVtxList[OutFace.P0].vz+ZOfs)/8; + Z[1]=(OutVtxList[OutFace.P1].vz+ZOfs)/8; + Z[2]=(OutVtxList[OutFace.P2].vz+ZOfs)/8; + Z[3]=(OutVtxList[OutFace.P3].vz+ZOfs)/8; + + for (int p=0; p<4; p++) + { + if (Z[p]<0 ) Z[p]=0; + if (Z[p]>15) Z[p]=15; + + } + + OutFace.C0=Z[0]*4; + OutFace.C1=Z[1]*4; + OutFace.C2=Z[2]*4; + OutFace.C3=Z[3]*4; } } diff --git a/Utils/MkLevel/MkLevel.cpp b/Utils/MkLevel/MkLevel.cpp index 6eaac6458..b52b60827 100644 --- a/Utils/MkLevel/MkLevel.cpp +++ b/Utils/MkLevel/MkLevel.cpp @@ -1050,8 +1050,8 @@ int i,ListSize; //*************************************************************************** int CMkLevel::WriteTriList() { -int ThisPos=ftell(File); -int i,ListSize=OutTriList.size(); +int ThisPos=ftell(File); +int i,ListSize=OutTriList.size(); for (i=0;iAnimList+Anim; Ft4->tpage=ThisNode->TPage; Ft4->clut=PoolEntry->ActorGfx->Clut; setShadeTex(Ft4,1); + setRGB0(Ft4,127,127,127); addPrim(OtPtr+OtPos,Ft4); // Set BBox // Sizes now depend on aspect corrected sizes, so get sizes back from poly @@ -921,7 +922,7 @@ u32 const *XYList=(u32*)SCRATCH_RAM; sTri *TList=&TriList[ThisElem->TriStart]; while (TriCount--) { - POLY_FT3 *ThisPrim=(POLY_FT3*)PrimPtr; + POLY_GT3 *ThisPrim=(POLY_GT3*)PrimPtr; P0=XYList[TList->P0]; P1=XYList[TList->P1]; @@ -930,7 +931,7 @@ u32 const *XYList=(u32*)SCRATCH_RAM; gte_ldsxy1(P1); gte_ldsxy2(P2); - setlen(ThisPrim, GPU_PolyFT3Tag); + setlen(ThisPrim, GPU_PolyGT3Tag); ThisPrim->code=TList->PolyCode; gte_nclip_b(); // 8 cycles @@ -953,7 +954,7 @@ u32 const *XYList=(u32*)SCRATCH_RAM; *(u32*)&ThisPrim->x1=P1; // Set XY1 *(u32*)&ThisPrim->x2=P2; // Set XY2 addPrim(ThisOT,ThisPrim); - PrimPtr+=sizeof(POLY_FT3); + PrimPtr+=sizeof(POLY_GT3); } } @@ -962,7 +963,7 @@ u32 const *XYList=(u32*)SCRATCH_RAM; sQuad *QList=&QuadList[ThisElem->QuadStart]; while (QuadCount--) { - POLY_FT4 *ThisPrim=(POLY_FT4*)PrimPtr; + POLY_GT4 *ThisPrim=(POLY_GT4*)PrimPtr; P0=XYList[QList->P0]; P1=XYList[QList->P1]; @@ -972,7 +973,7 @@ u32 const *XYList=(u32*)SCRATCH_RAM; gte_ldsxy1(P1); gte_ldsxy2(P2); - setlen(ThisPrim, GPU_PolyFT4Tag); + setlen(ThisPrim, GPU_PolyGT4Tag); ThisPrim->code=QList->PolyCode; gte_nclip_b(); // 8 cycles @@ -997,7 +998,7 @@ u32 const *XYList=(u32*)SCRATCH_RAM; *(u32*)&ThisPrim->x2=P2; // Set XY2 *(u32*)&ThisPrim->x3=P3; // Set XY3 addPrim(ThisOT,ThisPrim); - PrimPtr+=sizeof(POLY_FT4); + PrimPtr+=sizeof(POLY_GT4); } } diff --git a/source/level/layertile3d.cpp b/source/level/layertile3d.cpp index 4dab60156..2f41b3f41 100644 --- a/source/level/layertile3d.cpp +++ b/source/level/layertile3d.cpp @@ -87,6 +87,16 @@ sFlipTable FlipTable[4]= },0<<31} }; +u8 RGBTable[16*4]; +int RS=128; +int Ri=-6; +int GS=128; +int Gi=-6; +int BS=128; +int Bi=-6; +int AS=128; +int Ai=-6; + /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ @@ -98,12 +108,29 @@ CLayerTile3d::CLayerTile3d(sLevelHdr *LevelHdr,sLayerHdr *Hdr) : CLayerTile(Leve VtxList=LevelHdr->VtxList; VtxIdxList=LevelHdr->VtxIdxList; + #if defined(_SHOW_POLYZ_) Font=new ("PrimFont") FontBank; Font->initialise( &standardFont ); Font->setOt( 0 ); Font->setTrans(1); #endif + for (int i=0; i<16; i++) + { + int R,G,B; + R=RS-(i*Ri); + G=GS-(i*Gi); + B=BS-(i*Bi); + if (R<0) R=0; else if (R>255) R=255; + if (G<0) G=0; else if (G>255) G=255; + if (B<0) B=0; else if (B>255) B=255; + + RGBTable[(i*4)+0]=R; + RGBTable[(i*4)+1]=G; + RGBTable[(i*4)+2]=B; + RGBTable[(i*4)+3]=0; + } + } /*****************************************************************************/ @@ -236,6 +263,33 @@ void CLayerTile3d::think(DVECTOR &MapPos) RenderH=SCREEN_TILE3D_HEIGHT; else RenderH=MapHeight-MapXY.vy; + +#if defined(__USER_daveo__) + if (AS!=-1) + { + RS=GS=BS=AS; + } + if (Ai!=-1) + { + Ri=Gi=Bi=Ai; + } + + for (int i=0; i<16; i++) + { + int R,G,B; + R=RS-(i*Ri); + G=GS-(i*Gi); + B=BS-(i*Bi); + if (R<0) R=0; else if (R>255) R=255; + if (G<0) G=0; else if (G>255) G=255; + if (B<0) B=0; else if (B>255) B=255; + + RGBTable[(i*4)+0]=R; + RGBTable[(i*4)+1]=G; + RGBTable[(i*4)+2]=B; + RGBTable[(i*4)+3]=0; + } +#endif } /*****************************************************************************/ @@ -386,7 +440,7 @@ s16 TCount=0,QCount=0; // --- Render Tri's ------------- while (TriCount--) { - POLY_FT3 *ThisPrim=(POLY_FT3*)PrimPtr; + POLY_GT3 *ThisPrim=(POLY_GT3*)PrimPtr; P0=XYList[TList->P0]; P1=XYList[TList->P1]; @@ -395,13 +449,14 @@ s16 TCount=0,QCount=0; gte_ldsxy1(P1); gte_ldsxy2(P2); - setlen(ThisPrim, GPU_PolyFT3Tag); + setlen(ThisPrim, GPU_PolyGT3Tag); ThisPrim->code=TList->PolyCode; gte_nclip_b(); // 8 cycles setShadeTex(ThisPrim,1); + #if defined(_SHOW_POLYZ_) - if (ShowPolyz) {setShadeTex(ThisPrim,0);setRGB0(ThisPrim,127,0,0);} + if (ShowPolyz) {setShadeTex(ThisPrim,0);setRGB0(ThisPrim,127,0,0); setRGB1(ThisPrim,255,0,0); setRGB2(ThisPrim,255,0,0);} #endif T0=*(u32*)&TList->uv0; // Get UV0 & TPage @@ -413,25 +468,35 @@ s16 TCount=0,QCount=0; gte_stopz(&ClipZ); ThisOT=OtPtr+TList->OTOfs; ClipZ^=FTab->ClipCode; - TList++; if (ClipZ<0) { *(u32*)&ThisPrim->x0=P0; // Set XY0 *(u32*)&ThisPrim->x1=P1; // Set XY1 *(u32*)&ThisPrim->x2=P2; // Set XY2 addPrim(ThisOT,ThisPrim); - PrimPtr+=sizeof(POLY_FT3); + // lighting + setShadeTex(ThisPrim,0); + T0=*(u32*)&RGBTable[TList->C0]; + T1=*(u32*)&RGBTable[TList->C1]; + T2=*(u32*)&RGBTable[TList->C2]; + *(u32*)&ThisPrim->r0=T0; + *(u32*)&ThisPrim->r1=T1; + *(u32*)&ThisPrim->r2=T2; + ThisPrim->code=TList->PolyCode; + + PrimPtr+=sizeof(POLY_GT3); #if defined(_SHOW_POLYZ_) TCount++; #endif } + TList++; } // --- Render Quads ----------- while (QuadCount--) { - POLY_FT4 *ThisPrim=(POLY_FT4*)PrimPtr; + POLY_GT4 *ThisPrim=(POLY_GT4*)PrimPtr; P0=XYList[QList->P0]; P1=XYList[QList->P1]; @@ -441,13 +506,13 @@ s16 TCount=0,QCount=0; gte_ldsxy1(P1); gte_ldsxy2(P2); - setlen(ThisPrim, GPU_PolyFT4Tag); + setlen(ThisPrim, GPU_PolyGT4Tag); ThisPrim->code=QList->PolyCode; gte_nclip_b(); // 8 cycles setShadeTex(ThisPrim,1); #if defined(_SHOW_POLYZ_) - if (ShowPolyz) {setShadeTex(ThisPrim,0);setRGB0(ThisPrim,0,127,0);} + if (ShowPolyz) {setShadeTex(ThisPrim,0);setRGB0(ThisPrim,0,127,0);setRGB1(ThisPrim,0,255,0); setRGB2(ThisPrim,0,255,0); setRGB3(ThisPrim,0,255,0);} #endif T0=*(u32*)&QList->uv0; // Get UV0 & TPage @@ -461,20 +526,31 @@ s16 TCount=0,QCount=0; gte_stopz(&ClipZ); ThisOT=OtPtr+QList->OTOfs; ClipZ^=FTab->ClipCode; - QList++; if (ClipZ<0) { *(u32*)&ThisPrim->x0=P0; // Set XY0 *(u32*)&ThisPrim->x1=P1; // Set XY1 *(u32*)&ThisPrim->x2=P2; // Set XY2 *(u32*)&ThisPrim->x3=P3; // Set XY3 + // Lighting + setShadeTex(ThisPrim,0); + T0=*(u32*)&RGBTable[QList->C0]; + T1=*(u32*)&RGBTable[QList->C1]; + T2=*(u32*)&RGBTable[QList->C2]; + T3=*(u32*)&RGBTable[QList->C3]; + *(u32*)&ThisPrim->r0=T0; + *(u32*)&ThisPrim->r1=T1; + *(u32*)&ThisPrim->r2=T2; + *(u32*)&ThisPrim->r3=T3; + ThisPrim->code=QList->PolyCode; + addPrim(ThisOT,ThisPrim); - PrimPtr+=sizeof(POLY_FT4); + PrimPtr+=sizeof(POLY_GT4); #if defined(_SHOW_POLYZ_) QCount++; #endif - } + QList++; } } diff --git a/tools/Data/bin/MkLevel.exe b/tools/Data/bin/MkLevel.exe index c3696d83614fe8eae56e1bbf425ae51818fdce21..b28add9a8cbd8715cf1a84735b1c81d52f9e34b0 100644 GIT binary patch delta 31435 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 diff --git a/tools/Data/include/dstructs.h b/tools/Data/include/dstructs.h index 6b9ddfd67..5a1edb64f 100644 --- a/tools/Data/include/dstructs.h +++ b/tools/Data/include/dstructs.h @@ -63,7 +63,7 @@ struct sShortXYZ //*************************************************************************** struct sVtx { - s16 vx, vy, vz, pad; + s16 vx, vy, vz, rgb; #ifdef WIN32 bool operator==(sVtx const &v1) {return((vx==v1.vx) && (vy==v1.vy) && (vz==v1.vz));} @@ -108,7 +108,9 @@ struct sTri s16 OTOfs; // 2 u8 PolyCode; // 1 u8 Pad; // 1 -}; // 20 + u8 C0,C1,C2; + u8 Pad2; +}; // 24 //--------------------------------------------------------------------------- struct sQuad @@ -126,7 +128,8 @@ struct sQuad s16 OTOfs; // 2 u8 PolyCode; // 1 u8 Pad; // 1 -}; // 24 + u8 C0,C1,C2,C3; +}; // 28 struct sPoly