This commit is contained in:
parent
e26b5acfd3
commit
777155f9c9
5 changed files with 63 additions and 30 deletions
|
@ -33,7 +33,7 @@ CAnimTex::~CAnimTex()
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CAnimTex::AddAnimTex(sFrameHdr *Frame,FileEquate Filename)
|
||||
void CAnimTex::AddAnimTex(sFrameHdr *Frame,int FrameNo,FileEquate Filename)
|
||||
{
|
||||
int TPageX,TPageY,X,Y,W,H;
|
||||
CAnimTex *ThisTex=new ("CAnimTex::AddAnimTex") CAnimTex;
|
||||
|
@ -79,6 +79,8 @@ CAnimTex *ThisTex=new ("CAnimTex::AddAnimTex") CAnimTex;
|
|||
ThisTex->TPage=Frame->TPage;
|
||||
ThisTex->TexName=Filename;
|
||||
|
||||
ThisTex->FrameNo=FrameNo;
|
||||
|
||||
int Size=W*H;
|
||||
ThisTex->TexData=(u32*)MemAlloc(Size*sizeof(u16), "AnTx");
|
||||
DrawSync(0);
|
||||
|
@ -148,6 +150,26 @@ int Time = GameState::getFramesSinceLast();
|
|||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CAnimTex::SetSpeed(FileEquate TexName,int Frm,int Speed)
|
||||
{
|
||||
CAnimTex *ThisTex;
|
||||
|
||||
ThisTex=AnimTexList;
|
||||
|
||||
while(ThisTex)
|
||||
{
|
||||
if (ThisTex->TexName==TexName && ThisTex->FrameNo==Frm)
|
||||
{
|
||||
ThisTex->Speed=Speed;
|
||||
return;
|
||||
}
|
||||
ThisTex=ThisTex->NextTex;
|
||||
}
|
||||
ASSERT(!"CAnimTex::SetSpeed - Frame not Found");
|
||||
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*****************************************************************************/
|
||||
/*** Pak Tex Stuff ***********************************************************/
|
||||
|
|
|
@ -15,10 +15,11 @@ public:
|
|||
CAnimTex();
|
||||
~CAnimTex();
|
||||
|
||||
static void AddAnimTex(sFrameHdr *Frame,FileEquate Filename);
|
||||
static void AddAnimTex(sFrameHdr *Frame,int Frame,FileEquate Filename);
|
||||
static void AnimateTex();
|
||||
static void GetTexData();
|
||||
static void DumpThisTPage(FileEquate TexName);
|
||||
static void SetSpeed(FileEquate Filename,int Frm,int Speed);
|
||||
|
||||
private:
|
||||
CAnimTex *NextTex;
|
||||
|
@ -27,6 +28,7 @@ private:
|
|||
s16 PixPerWord;
|
||||
u32 *TexData;
|
||||
FileEquate TexName;
|
||||
int FrameNo;
|
||||
u8 TPage;
|
||||
|
||||
};
|
||||
|
|
|
@ -26,13 +26,19 @@ MAX_TPAGES = 32,
|
|||
const int TPRawW=64;
|
||||
const int TPRawH=256;
|
||||
|
||||
struct sAnimTexInfo
|
||||
{
|
||||
int Frame;
|
||||
sFrameHdr FrameHdr;
|
||||
};
|
||||
|
||||
struct sTPageInfo
|
||||
{
|
||||
s16 RefCount;
|
||||
FileEquate TPageName;
|
||||
s16 XOfs,YOfs;
|
||||
u16 AnimTexCount;
|
||||
sFrameHdr AnimTexFrame[TPAGE_MAX_ANIM_TEX];
|
||||
sAnimTexInfo AnimTexFrame[TPAGE_MAX_ANIM_TEX];
|
||||
};
|
||||
|
||||
struct sTPageCache
|
||||
|
@ -167,11 +173,11 @@ RECT Rect;
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void AddAnimTexToList(sTPageInfo *Cache,sFrameHdr *FramePtr,int TPage,int Half)
|
||||
void AddAnimTexToList(sTPageInfo *Cache,sFrameHdr *FramePtr,int Frm,int TPage,int Half)
|
||||
{
|
||||
sFrameHdr *AT=&Cache->AnimTexFrame[Cache->AnimTexCount];
|
||||
|
||||
MCmemcpy(AT,FramePtr,sizeof(sFrameHdr));
|
||||
MCmemcpy(&Cache->AnimTexFrame[Cache->AnimTexCount].FrameHdr,FramePtr,sizeof(sFrameHdr));
|
||||
Cache->AnimTexFrame[Cache->AnimTexCount].Frame=Frm;
|
||||
Cache->AnimTexCount++;
|
||||
}
|
||||
|
||||
|
@ -193,7 +199,6 @@ sTPageInfo *Cache;
|
|||
// DBG_MSG2("TPLoadTex Cached (%i,%i)",TPage,Half);
|
||||
s_TPCache[TPage].Info[Half].RefCount++;
|
||||
Cache=&s_TPCache[TPage].Info[Half];
|
||||
FramePtr=&Cache->AnimTexFrame[0];
|
||||
}
|
||||
else
|
||||
{ // Better load it then
|
||||
|
@ -205,7 +210,8 @@ sTPageInfo *Cache;
|
|||
Cache=FindSpareTPage(Filename,TPage,Half,TPHdr);
|
||||
for (int Frm=0;Frm<TPHdr->NoOfFrames; Frm++) // Add Animated Texture references
|
||||
{
|
||||
if (FramePtr->Cycle) AddAnimTexToList(Cache,FramePtr++,TPage,Half);
|
||||
if (FramePtr->Cycle) AddAnimTexToList(Cache,FramePtr,Frm,TPage,Half);
|
||||
FramePtr++;
|
||||
}
|
||||
TPLoadVRam(TPHdr, TPage,Half,VRAMData);
|
||||
MemFree(TPHdr);
|
||||
|
@ -213,8 +219,8 @@ sTPageInfo *Cache;
|
|||
// If first instance, add animated textures
|
||||
if (Cache->RefCount==1)
|
||||
{
|
||||
FramePtr=Cache->AnimTexFrame;
|
||||
for (int Frm=0; Frm<Cache->AnimTexCount; Frm++) CAnimTex::AddAnimTex(FramePtr++,Filename);
|
||||
sAnimTexInfo *ATexPtr=Cache->AnimTexFrame;
|
||||
for (int Frm=0; Frm<Cache->AnimTexCount; Frm++) CAnimTex::AddAnimTex(&ATexPtr[Frm].FrameHdr,ATexPtr[Frm].Frame,Filename);
|
||||
}
|
||||
|
||||
Desc.Half= Half;
|
||||
|
@ -281,7 +287,7 @@ int ReadLeft;
|
|||
FramePtr=*hdrs;
|
||||
for (int Frm=0;Frm<TPHdr.NoOfFrames; Frm++) // Add Animated Texture references
|
||||
{
|
||||
if (FramePtr->Cycle) AddAnimTexToList(Cache,FramePtr++,TPage,Half);
|
||||
if (FramePtr->Cycle) AddAnimTexToList(Cache,FramePtr++,Frm,TPage,Half);
|
||||
}
|
||||
|
||||
Cache->RefCount=1;
|
||||
|
@ -295,8 +301,8 @@ int ReadLeft;
|
|||
// If first instance, add animated textures
|
||||
if (Cache->RefCount==1)
|
||||
{
|
||||
FramePtr=Cache->AnimTexFrame;
|
||||
for (int Frm=0; Frm<Cache->AnimTexCount; Frm++) CAnimTex::AddAnimTex(FramePtr++,Filename);
|
||||
sAnimTexInfo *ATexPtr=Cache->AnimTexFrame;
|
||||
for (int Frm=0; Frm<Cache->AnimTexCount; Frm++) CAnimTex::AddAnimTex(&ATexPtr[Frm].FrameHdr,ATexPtr[Frm].Frame,Filename);
|
||||
}
|
||||
|
||||
Desc.Half= Half;
|
||||
|
|
|
@ -13,16 +13,17 @@
|
|||
/*****************************************************************************/
|
||||
extern VECTOR upVec;
|
||||
|
||||
extern const s16 ACosTable[4097];
|
||||
//extern const s16 ACosTable[4097];
|
||||
extern const s16 SinTable[1024];
|
||||
extern const s32 OneSinTable[1024];
|
||||
//extern const s32 OneSinTable[1024];
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
inline s32 macos(const s32 &a)
|
||||
{
|
||||
return(ACosTable[a>>1]);
|
||||
}
|
||||
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
|
||||
inline s32 msin(const s32 &a)
|
||||
|
@ -66,7 +67,7 @@ inline s32 mcos(const s32 &a)
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/*
|
||||
inline s32 monesin(const s32 &a)
|
||||
{
|
||||
if (a>3071)
|
||||
|
@ -85,7 +86,7 @@ inline s32 monesin(const s32 &a)
|
|||
return(OneSinTable[a]);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
#define msin(x) rsin((x))
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
VECTOR upVec = { 0, ONE, 0, 0 };
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
s16 ACosTable[4097] = {
|
||||
2047 ,2027 ,2019 ,2012 ,2007 ,2002 ,1998 ,1994 ,1990 ,1986 ,1983 ,1980 ,1977 ,1974 ,1971 ,1969 ,
|
||||
1966 ,1963 ,1961 ,1959 ,1956 ,1954 ,1952 ,1950 ,1948 ,1946 ,1944 ,1942 ,1940 ,1938 ,1936 ,1934 ,
|
||||
|
@ -265,7 +266,7 @@ s16 ACosTable[4097] = {
|
|||
115 ,113 ,111 ,109 ,107 ,105 ,103 ,101 ,99 ,97 ,95 ,93 ,91 ,88 ,86 ,84 ,
|
||||
81 ,78 ,76 ,73 ,70 ,67 ,64 ,61 ,57 ,53 ,49 ,45 ,40 ,35 ,28 ,20 ,
|
||||
0 };
|
||||
|
||||
*/
|
||||
|
||||
s16 SinTable[1024] = {
|
||||
0 ,6 ,12 ,18 ,25 ,31 ,37 ,43 ,50 ,56 ,62 ,69 ,75 ,81 ,87 ,94 ,
|
||||
|
@ -333,7 +334,7 @@ s16 SinTable[1024] = {
|
|||
4091 ,4091 ,4091 ,4091 ,4092 ,4092 ,4092 ,4092 ,4093 ,4093 ,4093 ,4093 ,4094 ,4094 ,4094 ,4094 ,
|
||||
4094 ,4094 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 };
|
||||
|
||||
|
||||
/*
|
||||
s32 OneSinTable[1024] = {
|
||||
0 ,2670177 ,1335090 ,890062 ,667548 ,534040 ,445035 ,381461 ,333780 ,296695 ,267028 ,242754 ,222527 ,205411 ,190741 ,178027 ,
|
||||
166902 ,157087 ,148362 ,140555 ,133529 ,127173 ,121394 ,116118 ,111282 ,106833 ,102726 ,98923 ,95392 ,92105 ,89037 ,86167 ,
|
||||
|
@ -401,3 +402,4 @@ s32 OneSinTable[1024] = {
|
|||
4097 ,4097 ,4096 ,4096 ,4096 ,4096 ,4096 ,4096 ,4096 ,4096 ,4096 ,4096 ,4096 ,4096 ,4096 ,4096 };
|
||||
|
||||
|
||||
*/
|
Loading…
Add table
Add a link
Reference in a new issue