diff --git a/Utils/MkActor/MkActor.cpp b/Utils/MkActor/MkActor.cpp index 11465bdf8..d75a426e7 100644 --- a/Utils/MkActor/MkActor.cpp +++ b/Utils/MkActor/MkActor.cpp @@ -29,12 +29,15 @@ GString SpritePath; GString OutPath; GString IncludePath; +float Aspect=512.0f/320.0f; + //*************************************************************************** char * CycleCommands(char *String,int Num) { char Text[2048],*TextPtr; int Count; + if (String[0]=='-' || String[0]=='/') { GString TpStr; @@ -64,6 +67,10 @@ int Count; RootPath.Upper(); RootPath.Append('\\'); break; + case 'a': + TpStr= CheckFileString(String); + Aspect=(float)atof(TpStr); + break; case 't': TpStr= CheckFileString(String); TextPtr=Text; @@ -103,6 +110,7 @@ void Usage(char *ErrStr) printf(" -s:nn Sprite Dir\n"); printf(" -t:p,w,h Set TPage No,Width,Height\n"); printf(" -d: Enable Debug output\n"); + printf(" -a: Aspect Ratio\n"); GObject::Error(ERR_FATAL,ErrStr); } @@ -150,6 +158,8 @@ CMkActor::CMkActor(GString &ActorName,GString &ActorPath,GString &SpritePath) DupCount=0; MaxW=0; MaxH=0; + BlankCount=0; + } //*************************************************************************** @@ -294,6 +304,7 @@ void CMkActor::MakePsxGfx(sBmp &Bmp) { Bmp.Psx=0; Bmp.PsxSize=0; + BlankCount++; return; } @@ -563,7 +574,7 @@ GString OutName=OutFile+".SBK"; fclose(File); WriteInclude(); - printf("%s. %i Dups, (In %i Out %i = Saved %i) (MaxWH %i %i)\n",Name,DupCount,TotalIn,TotalOut,TotalIn-TotalOut,FileHdr.MaxW,FileHdr.MaxH); + printf("%s. D=%i B=%i - WH=%i %i - In=%i Out=%i Sv=%i \n",Name,DupCount,BlankCount,FileHdr.MaxW,FileHdr.MaxH,TotalIn,TotalOut,TotalIn-TotalOut); } @@ -666,12 +677,28 @@ vector Hdrs; { sBmp &ThisBmp=BmpList[i]; - Hdrs[i].PAKSpr=(u8*)ftell(File); -// Hdrs[i].XOfs=ThisBmp.CrossHairX; -// Hdrs[i].YOfs=ThisBmp.CrossHairY; - Hdrs[i].W=ThisBmp.Frm.GetWidth(); - Hdrs[i].H=ThisBmp.Frm.GetHeight(); - fwrite(ThisBmp.Pak,1,ThisBmp.PakSize,File); + if (ThisBmp.Pak) + { + Hdrs[i].PAKSpr=(u8*)ftell(File); + Hdrs[i].W=ThisBmp.Frm.GetWidth(); + Hdrs[i].H=ThisBmp.Frm.GetHeight(); + // aspect + float aW=Hdrs[i].W*Aspect; + int dW=(int)aW-Hdrs[i].W; + int X0=dW/2; + int X1=dW-X0; + + Hdrs[i].AspectX0=X0; + Hdrs[i].AspectX1=X1; +// printf("%i %i %i\n",Hdrs[i].W,X0,X1); + fwrite(ThisBmp.Pak,1,ThisBmp.PakSize,File); + } + else + { + Hdrs[i].PAKSpr=0; + Hdrs[i].W=0; + Hdrs[i].H=0; + } } // ReWrite Headers int SavePos=ftell(File); diff --git a/Utils/MkActor/MkActor.h b/Utils/MkActor/MkActor.h index 9e4745e5b..12f6f3aae 100644 --- a/Utils/MkActor/MkActor.h +++ b/Utils/MkActor/MkActor.h @@ -79,6 +79,7 @@ private: int DupCount; int MaxW,MaxH; int TotalIn,TotalOut; + int BlankCount; }; //*************************************************************************** diff --git a/source/fx/fx.cpp b/source/fx/fx.cpp index 90c84a94f..3ca8142d7 100644 --- a/source/fx/fx.cpp +++ b/source/fx/fx.cpp @@ -88,7 +88,7 @@ CFXBaseAnim::sFXAnim FXExplodeData= CFXBaseAnim::sFXAnim FXFireData= { ONE, - FRM__FIRE01,FRM__FIRE06, + FRM__FIRE01,FRM__FIRE08, 1, 127,127,127, CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_TRANS, @@ -140,7 +140,7 @@ CFXBaseAnim::sFXAnim FXOilDripData= // Bubble CFXBaseAnim::sFXAnim FXBubbleWaterData= { - ONE/2, + ONE, FRM__BUBBLE_2,FRM__BUBBLE_2, 1, 127,127,255, @@ -151,7 +151,7 @@ CFXBaseAnim::sFXAnim FXBubbleWaterData= CFXBaseAnim::sFXAnim FXBubbleAcidData= { - ONE/2, + ONE, FRM__BUBBLE_2,FRM__BUBBLE_2, 1, 0,255,0, @@ -161,7 +161,7 @@ CFXBaseAnim::sFXAnim FXBubbleAcidData= }; CFXBaseAnim::sFXAnim FXBubbleLavaData= { - ONE/2, + ONE, FRM__BUBBLE_2,FRM__BUBBLE_2, 1, 255,0,0, @@ -171,7 +171,7 @@ CFXBaseAnim::sFXAnim FXBubbleLavaData= }; CFXBaseAnim::sFXAnim FXBubbleOilData= { - ONE/2, + ONE, FRM__BUBBLE_2,FRM__BUBBLE_2, 1, 32,32,32, @@ -183,7 +183,7 @@ CFXBaseAnim::sFXAnim FXBubbleOilData= CFXBaseAnim::sFXAnim FXWaterFountainData= { ONE, - FRM__GUSH000,FRM__GUSH002, + FRM__GUSH000,FRM__GUSH003, 3, 127,127,255, CFXBaseAnim::FXANIM_FLAG_LOOP, diff --git a/tools/Data/bin/MkActor.exe b/tools/Data/bin/MkActor.exe index ecb964790..46c7ce411 100644 Binary files a/tools/Data/bin/MkActor.exe and b/tools/Data/bin/MkActor.exe differ diff --git a/tools/Data/include/dstructs.h b/tools/Data/include/dstructs.h index d3ea43038..5baca4576 100644 --- a/tools/Data/include/dstructs.h +++ b/tools/Data/include/dstructs.h @@ -246,9 +246,9 @@ struct sLevelHdr // Actors struct sSpriteFrameGfx { - u8 *PAKSpr; // 4 Needs to be u32, so might as well make it a ptr - u16 Pad; // 2 :o( - u8 W,H; // 2 + u8 *PAKSpr; // 4 Needs to be u32, so might as well make it a ptr + s8 AspectX0,AspectX1; // 2 Aspect correction value + u8 W,H; // 2 }; struct sSpriteFrame @@ -366,4 +366,31 @@ struct sThingHazard }; // 12 //*************************************************************************** +//*** FX Stuff ************************************************************** +//*************************************************************************** +#if 0 +enum FX_FLAG +{ + FX_FLAG_LOOP =1<<0, + FX_FLAG_COLLIDE_KILL =1<<1, + FX_FLAG_HAS_GRAVITY =1<<2, + FX_FLAG_INJURE_PLAYER =1<<3, + FX_FLAG_TRANS =1<<4, +}; + +//*************************************************************************** +struct sFXData +{ + s16 Scale; +// s16 StartFrame,EndFrame; +// s8 FrameShift; +// u8 R,G,B; + u16 Flags; +// DVECTOR Velocity; + u16 Velocity,Heading; +// u16 EndFX; +}; +#endif +//*************************************************************************** + #endif \ No newline at end of file