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;
|
int TPageX,TPageY,X,Y,W,H;
|
||||||
CAnimTex *ThisTex=new ("CAnimTex::AddAnimTex") CAnimTex;
|
CAnimTex *ThisTex=new ("CAnimTex::AddAnimTex") CAnimTex;
|
||||||
|
@ -79,6 +79,8 @@ CAnimTex *ThisTex=new ("CAnimTex::AddAnimTex") CAnimTex;
|
||||||
ThisTex->TPage=Frame->TPage;
|
ThisTex->TPage=Frame->TPage;
|
||||||
ThisTex->TexName=Filename;
|
ThisTex->TexName=Filename;
|
||||||
|
|
||||||
|
ThisTex->FrameNo=FrameNo;
|
||||||
|
|
||||||
int Size=W*H;
|
int Size=W*H;
|
||||||
ThisTex->TexData=(u32*)MemAlloc(Size*sizeof(u16), "AnTx");
|
ThisTex->TexData=(u32*)MemAlloc(Size*sizeof(u16), "AnTx");
|
||||||
DrawSync(0);
|
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 ***********************************************************/
|
/*** Pak Tex Stuff ***********************************************************/
|
||||||
|
|
|
@ -15,10 +15,11 @@ public:
|
||||||
CAnimTex();
|
CAnimTex();
|
||||||
~CAnimTex();
|
~CAnimTex();
|
||||||
|
|
||||||
static void AddAnimTex(sFrameHdr *Frame,FileEquate Filename);
|
static void AddAnimTex(sFrameHdr *Frame,int Frame,FileEquate Filename);
|
||||||
static void AnimateTex();
|
static void AnimateTex();
|
||||||
static void GetTexData();
|
static void GetTexData();
|
||||||
static void DumpThisTPage(FileEquate TexName);
|
static void DumpThisTPage(FileEquate TexName);
|
||||||
|
static void SetSpeed(FileEquate Filename,int Frm,int Speed);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CAnimTex *NextTex;
|
CAnimTex *NextTex;
|
||||||
|
@ -27,6 +28,7 @@ private:
|
||||||
s16 PixPerWord;
|
s16 PixPerWord;
|
||||||
u32 *TexData;
|
u32 *TexData;
|
||||||
FileEquate TexName;
|
FileEquate TexName;
|
||||||
|
int FrameNo;
|
||||||
u8 TPage;
|
u8 TPage;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -26,13 +26,19 @@ MAX_TPAGES = 32,
|
||||||
const int TPRawW=64;
|
const int TPRawW=64;
|
||||||
const int TPRawH=256;
|
const int TPRawH=256;
|
||||||
|
|
||||||
|
struct sAnimTexInfo
|
||||||
|
{
|
||||||
|
int Frame;
|
||||||
|
sFrameHdr FrameHdr;
|
||||||
|
};
|
||||||
|
|
||||||
struct sTPageInfo
|
struct sTPageInfo
|
||||||
{
|
{
|
||||||
s16 RefCount;
|
s16 RefCount;
|
||||||
FileEquate TPageName;
|
FileEquate TPageName;
|
||||||
s16 XOfs,YOfs;
|
s16 XOfs,YOfs;
|
||||||
u16 AnimTexCount;
|
u16 AnimTexCount;
|
||||||
sFrameHdr AnimTexFrame[TPAGE_MAX_ANIM_TEX];
|
sAnimTexInfo AnimTexFrame[TPAGE_MAX_ANIM_TEX];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct sTPageCache
|
struct sTPageCache
|
||||||
|
@ -167,23 +173,23 @@ 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++;
|
Cache->AnimTexCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
TPAGE_DESC TPLoadTex(FileEquate Filename)
|
TPAGE_DESC TPLoadTex(FileEquate Filename)
|
||||||
{
|
{
|
||||||
TPAGE_DESC Desc;
|
TPAGE_DESC Desc;
|
||||||
sTPageHdr *TPHdr;
|
sTPageHdr *TPHdr;
|
||||||
sFrameHdr *FramePtr;
|
sFrameHdr *FramePtr;
|
||||||
u32 *VRAMData;
|
u32 *VRAMData;
|
||||||
int TPage,Half;
|
int TPage,Half;
|
||||||
sTPageInfo *Cache;
|
sTPageInfo *Cache;
|
||||||
|
|
||||||
// Is it already loaded in TCache?
|
// Is it already loaded in TCache?
|
||||||
IsTPageInCache(Filename,TPage,Half);
|
IsTPageInCache(Filename,TPage,Half);
|
||||||
|
@ -193,7 +199,6 @@ sTPageInfo *Cache;
|
||||||
// DBG_MSG2("TPLoadTex Cached (%i,%i)",TPage,Half);
|
// DBG_MSG2("TPLoadTex Cached (%i,%i)",TPage,Half);
|
||||||
s_TPCache[TPage].Info[Half].RefCount++;
|
s_TPCache[TPage].Info[Half].RefCount++;
|
||||||
Cache=&s_TPCache[TPage].Info[Half];
|
Cache=&s_TPCache[TPage].Info[Half];
|
||||||
FramePtr=&Cache->AnimTexFrame[0];
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // Better load it then
|
{ // Better load it then
|
||||||
|
@ -205,7 +210,8 @@ sTPageInfo *Cache;
|
||||||
Cache=FindSpareTPage(Filename,TPage,Half,TPHdr);
|
Cache=FindSpareTPage(Filename,TPage,Half,TPHdr);
|
||||||
for (int Frm=0;Frm<TPHdr->NoOfFrames; Frm++) // Add Animated Texture references
|
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);
|
TPLoadVRam(TPHdr, TPage,Half,VRAMData);
|
||||||
MemFree(TPHdr);
|
MemFree(TPHdr);
|
||||||
|
@ -213,8 +219,8 @@ sTPageInfo *Cache;
|
||||||
// If first instance, add animated textures
|
// If first instance, add animated textures
|
||||||
if (Cache->RefCount==1)
|
if (Cache->RefCount==1)
|
||||||
{
|
{
|
||||||
FramePtr=Cache->AnimTexFrame;
|
sAnimTexInfo *ATexPtr=Cache->AnimTexFrame;
|
||||||
for (int Frm=0; Frm<Cache->AnimTexCount; Frm++) CAnimTex::AddAnimTex(FramePtr++,Filename);
|
for (int Frm=0; Frm<Cache->AnimTexCount; Frm++) CAnimTex::AddAnimTex(&ATexPtr[Frm].FrameHdr,ATexPtr[Frm].Frame,Filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
Desc.Half= Half;
|
Desc.Half= Half;
|
||||||
|
@ -281,7 +287,7 @@ int ReadLeft;
|
||||||
FramePtr=*hdrs;
|
FramePtr=*hdrs;
|
||||||
for (int Frm=0;Frm<TPHdr.NoOfFrames; Frm++) // Add Animated Texture references
|
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;
|
Cache->RefCount=1;
|
||||||
|
@ -295,8 +301,8 @@ int ReadLeft;
|
||||||
// If first instance, add animated textures
|
// If first instance, add animated textures
|
||||||
if (Cache->RefCount==1)
|
if (Cache->RefCount==1)
|
||||||
{
|
{
|
||||||
FramePtr=Cache->AnimTexFrame;
|
sAnimTexInfo *ATexPtr=Cache->AnimTexFrame;
|
||||||
for (int Frm=0; Frm<Cache->AnimTexCount; Frm++) CAnimTex::AddAnimTex(FramePtr++,Filename);
|
for (int Frm=0; Frm<Cache->AnimTexCount; Frm++) CAnimTex::AddAnimTex(&ATexPtr[Frm].FrameHdr,ATexPtr[Frm].Frame,Filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
Desc.Half= Half;
|
Desc.Half= Half;
|
||||||
|
|
|
@ -13,16 +13,17 @@
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
extern VECTOR upVec;
|
extern VECTOR upVec;
|
||||||
|
|
||||||
extern const s16 ACosTable[4097];
|
//extern const s16 ACosTable[4097];
|
||||||
extern const s16 SinTable[1024];
|
extern const s16 SinTable[1024];
|
||||||
extern const s32 OneSinTable[1024];
|
//extern const s32 OneSinTable[1024];
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
/*
|
||||||
inline s32 macos(const s32 &a)
|
inline s32 macos(const s32 &a)
|
||||||
{
|
{
|
||||||
return(ACosTable[a>>1]);
|
return(ACosTable[a>>1]);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
inline s32 msin(const s32 &a)
|
inline s32 msin(const s32 &a)
|
||||||
|
@ -66,7 +67,7 @@ inline s32 mcos(const s32 &a)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
/*
|
||||||
inline s32 monesin(const s32 &a)
|
inline s32 monesin(const s32 &a)
|
||||||
{
|
{
|
||||||
if (a>3071)
|
if (a>3071)
|
||||||
|
@ -85,7 +86,7 @@ inline s32 monesin(const s32 &a)
|
||||||
return(OneSinTable[a]);
|
return(OneSinTable[a]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*
|
/*
|
||||||
#define msin(x) rsin((x))
|
#define msin(x) rsin((x))
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
VECTOR upVec = { 0, ONE, 0, 0 };
|
VECTOR upVec = { 0, ONE, 0, 0 };
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
/*
|
||||||
s16 ACosTable[4097] = {
|
s16 ACosTable[4097] = {
|
||||||
2047 ,2027 ,2019 ,2012 ,2007 ,2002 ,1998 ,1994 ,1990 ,1986 ,1983 ,1980 ,1977 ,1974 ,1971 ,1969 ,
|
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 ,
|
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 ,
|
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 ,
|
81 ,78 ,76 ,73 ,70 ,67 ,64 ,61 ,57 ,53 ,49 ,45 ,40 ,35 ,28 ,20 ,
|
||||||
0 };
|
0 };
|
||||||
|
*/
|
||||||
|
|
||||||
s16 SinTable[1024] = {
|
s16 SinTable[1024] = {
|
||||||
0 ,6 ,12 ,18 ,25 ,31 ,37 ,43 ,50 ,56 ,62 ,69 ,75 ,81 ,87 ,94 ,
|
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 ,
|
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 };
|
4094 ,4094 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 ,4095 };
|
||||||
|
|
||||||
|
/*
|
||||||
s32 OneSinTable[1024] = {
|
s32 OneSinTable[1024] = {
|
||||||
0 ,2670177 ,1335090 ,890062 ,667548 ,534040 ,445035 ,381461 ,333780 ,296695 ,267028 ,242754 ,222527 ,205411 ,190741 ,178027 ,
|
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 ,
|
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 };
|
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