This commit is contained in:
parent
057cb931bb
commit
e5a2e9a6ed
21 changed files with 121 additions and 95 deletions
|
@ -267,7 +267,8 @@ MemCard::Start();
|
|||
sl=new ("sldb") CSaveLoadDatabase();
|
||||
mode=mode_none;
|
||||
#endif
|
||||
m_image=CFileIO::loadFile(BACKDROP_CREDITS_GFX);
|
||||
m_image=LoadPakScreen(BACKDROP_CREDITS_GFX);
|
||||
|
||||
ASSERT(m_image);
|
||||
SetScreenImage(m_image);
|
||||
CFader::setFadingIn();
|
||||
|
|
|
@ -109,7 +109,7 @@ CGameOverScene GameOverScene;
|
|||
---------------------------------------------------------------------- */
|
||||
void CGameOverScene::init()
|
||||
{
|
||||
m_image=CFileIO::loadFile(BACKDROP_GAMEOVER_GFX);
|
||||
m_image=LoadPakScreen(BACKDROP_GAMEOVER_GFX);
|
||||
ASSERT(m_image);
|
||||
SetScreenImage((u8*)m_image);
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@ static int s_leftBobSin,s_leftBob,s_rightBobSin,s_rightBob;
|
|||
---------------------------------------------------------------------- */
|
||||
void CPartyScene::init()
|
||||
{
|
||||
m_image=CFileIO::loadFile(BACKDROP_PARTYBACKDROP_GFX);
|
||||
m_image=LoadPakScreen(BACKDROP_PARTYBACKDROP_GFX);
|
||||
ASSERT(m_image);
|
||||
SetScreenImage((u8*)m_image);
|
||||
|
||||
|
|
|
@ -187,7 +187,7 @@ void CFrontEndMainTitles::select()
|
|||
|
||||
m_demoTimeout=0;
|
||||
|
||||
s_image=CFileIO::loadFile(s_imageFiles[CGameSlotManager::getNumberOfFrontendScreenToUse()]);
|
||||
s_image=LoadPakScreen(s_imageFiles[CGameSlotManager::getNumberOfFrontendScreenToUse()]);
|
||||
ASSERT(s_image);
|
||||
SetScreenImage(s_image);
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ void CFrontEndNickLogo::select()
|
|||
{
|
||||
m_readyToExit=false;
|
||||
|
||||
m_image=CFileIO::loadFile(BACKDROP_NICK_GFX);
|
||||
m_image=LoadPakScreen(BACKDROP_NICK_GFX);
|
||||
ASSERT(m_image);
|
||||
SetScreenImage(m_image);
|
||||
|
||||
|
|
|
@ -309,7 +309,7 @@ void CFrontEndOptions::init()
|
|||
tb=new ("textbox") CGUITextBox();
|
||||
tb->init(fr);
|
||||
tb->setObjectXYWH(26,0,150,15);
|
||||
tb->setText(STR__FRONTEND__UP);
|
||||
tb->setText(STR__FRONTEND__LOOK_UP);
|
||||
sr=new ("spritereadout") CGUISpriteReadout();
|
||||
sr->init(fr);
|
||||
sr->setObjectXYWH(0,15,26,15);
|
||||
|
@ -318,7 +318,7 @@ void CFrontEndOptions::init()
|
|||
tb=new ("textbox") CGUITextBox();
|
||||
tb->init(fr);
|
||||
tb->setObjectXYWH(26,15,150,15);
|
||||
tb->setText(STR__FRONTEND__DOWN);
|
||||
tb->setText(STR__FRONTEND__LOOK_DOWN);
|
||||
sr=new ("spritereadout") CGUISpriteReadout();
|
||||
sr->init(fr);
|
||||
sr->setObjectXYWH(0,30,26,15);
|
||||
|
|
|
@ -752,6 +752,7 @@ void CGameScene::hitBossArenaTrigger()
|
|||
void CGameScene::initLevel()
|
||||
{
|
||||
CSoundMediator::setCanPlaySfx(false);
|
||||
Level.DisplayLoadingScreen(s_globalLevelSelectThing);
|
||||
|
||||
SYSTEM_DBGMSG("InitLevel\n");
|
||||
CThingManager::init();
|
||||
|
|
|
@ -110,7 +110,7 @@ int YPos=MapPos.vy>>MapXYShift;
|
|||
/*****************************************************************************/
|
||||
void CLayerTile::render()
|
||||
{
|
||||
sTileMapElem *MapPtr=GetMapPos();
|
||||
sTileMapElem *MapPtr=Map+GetMapOfs();
|
||||
s16 TileX,TileY;
|
||||
sOT *ThisOT=OtPtr+LayerOT;
|
||||
TSPRT *PrimPtr=PrimBank;
|
||||
|
|
|
@ -33,7 +33,7 @@ virtual void think(DVECTOR &MapPos);
|
|||
virtual void render();
|
||||
|
||||
int GetMapOfs() {return(MapXY.vx+(MapXY.vy*MapWidth));}
|
||||
virtual sTileMapElem *GetMapPos() {return(Map+GetMapOfs());}
|
||||
//virtual sTileMapElem *GetMapPos() {return(Map+GetMapOfs());}
|
||||
virtual sTileMapElem *getMapPtr(int _x,int _y) {return(&Map[(_x>>4)+((_y>>4)*MapWidth)]);}
|
||||
|
||||
protected:
|
||||
|
|
|
@ -87,27 +87,18 @@ 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;
|
||||
|
||||
/*****************************************************************************/
|
||||
/*****************************************************************************/
|
||||
/*****************************************************************************/
|
||||
CLayerTile3d::CLayerTile3d(sLevelHdr *LevelHdr,sLayerHdr *Hdr) : CLayerTile(LevelHdr,Hdr)
|
||||
CLayerTile3d::CLayerTile3d(sLevelHdr *LevelHdr,sLayerHdr *Hdr,u8 *_RGBMap,u8 *_RGBTable) : CLayerTile(LevelHdr,Hdr)
|
||||
{
|
||||
ElemBank3d=LevelHdr->ElemBank3d;
|
||||
TriList=LevelHdr->TriList;
|
||||
QuadList=LevelHdr->QuadList;
|
||||
VtxList=LevelHdr->VtxList;
|
||||
VtxIdxList=LevelHdr->VtxIdxList;
|
||||
|
||||
RGBMap=_RGBMap;
|
||||
RGBTable=_RGBTable;
|
||||
|
||||
#if defined(_SHOW_POLYZ_)
|
||||
Font=new ("PrimFont") FontBank;
|
||||
|
@ -115,21 +106,6 @@ CLayerTile3d::CLayerTile3d(sLevelHdr *LevelHdr,sLayerHdr *Hdr) : CLayerTile(Leve
|
|||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -263,33 +239,6 @@ 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
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -322,12 +271,14 @@ s32 *OutPtr;
|
|||
gte_ldv3(V0,V1,V2);
|
||||
gte_stsxy3c(OutPtr); // read XY back
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CLayerTile3d::render()
|
||||
{
|
||||
sTileMapElem *MapPtr=GetMapPos();
|
||||
int MapOfs=GetMapOfs();
|
||||
sTileMapElem *MapPtr=Map+MapOfs;
|
||||
u8 *RGBMapPtr=RGBMap+MapOfs;
|
||||
u8 *PrimPtr=GetPrimPtr();
|
||||
u32 *XYList=(u32*)SCRATCH_RAM;
|
||||
u32 T0,T1,T2,T3;
|
||||
|
@ -350,6 +301,7 @@ s16 TCount=0,QCount=0;
|
|||
for (int Y=0; Y<RenderH; Y++)
|
||||
{
|
||||
sTileMapElem *MapRow=MapPtr;
|
||||
u8 *RGBRow=RGBMapPtr;
|
||||
s32 BlkXOld=BlkPos.vx;
|
||||
s16 *DeltaFX=FTableX[ShiftX];
|
||||
s16 *DeltaBX=BTableX[ShiftX];
|
||||
|
@ -366,6 +318,9 @@ s16 TCount=0,QCount=0;
|
|||
sTri *TList=&TriList[Elem->TriStart];
|
||||
int QuadCount=Elem->QuadCount;
|
||||
sQuad *QList=&QuadList[Elem->QuadStart];
|
||||
int RGBOfs=*RGBRow++;
|
||||
u8 *RGB=&RGBTable[RGBOfs*(16*4)];
|
||||
|
||||
if (TriCount || QuadCount) // Blank tiles rejected here, to prevent over processing (as no tri-count)
|
||||
{
|
||||
CMX_SetTransMtxXY(&BlkPos);
|
||||
|
@ -472,9 +427,9 @@ s16 TCount=0,QCount=0;
|
|||
*(u32*)&ThisPrim->x2=P2; // Set XY2
|
||||
addPrim(ThisOT,ThisPrim);
|
||||
// lighting
|
||||
T0=*(u32*)&RGBTable[TList->C0];
|
||||
T1=*(u32*)&RGBTable[TList->C1];
|
||||
T2=*(u32*)&RGBTable[TList->C2];
|
||||
T0=*(u32*)&RGB[TList->C0];
|
||||
T1=*(u32*)&RGB[TList->C1];
|
||||
T2=*(u32*)&RGB[TList->C2];
|
||||
*(u32*)&ThisPrim->r0=T0;
|
||||
*(u32*)&ThisPrim->r1=T1;
|
||||
*(u32*)&ThisPrim->r2=T2;
|
||||
|
@ -527,10 +482,10 @@ s16 TCount=0,QCount=0;
|
|||
*(u32*)&ThisPrim->x2=P2; // Set XY2
|
||||
*(u32*)&ThisPrim->x3=P3; // Set XY3
|
||||
// Lighting
|
||||
T0=*(u32*)&RGBTable[QList->C0];
|
||||
T1=*(u32*)&RGBTable[QList->C1];
|
||||
T2=*(u32*)&RGBTable[QList->C2];
|
||||
T3=*(u32*)&RGBTable[QList->C3];
|
||||
T0=*(u32*)&RGB[QList->C0];
|
||||
T1=*(u32*)&RGB[QList->C1];
|
||||
T2=*(u32*)&RGB[QList->C2];
|
||||
T3=*(u32*)&RGB[QList->C3];
|
||||
*(u32*)&ThisPrim->r0=T0;
|
||||
*(u32*)&ThisPrim->r1=T1;
|
||||
*(u32*)&ThisPrim->r2=T2;
|
||||
|
@ -552,6 +507,7 @@ s16 TCount=0,QCount=0;
|
|||
DeltaFX++; DeltaBX++;
|
||||
}
|
||||
MapPtr+=MapWidth;
|
||||
RGBMapPtr+=MapWidth;
|
||||
BlkPos.vx=BlkXOld;
|
||||
BlkPos.vy+=BLOCK_SIZE;
|
||||
DeltaFY++; DeltaBY++;
|
||||
|
|
|
@ -28,7 +28,7 @@ class FontBank;
|
|||
class CLayerTile3d : public CLayerTile
|
||||
{
|
||||
public:
|
||||
CLayerTile3d(sLevelHdr *LevelHdr,sLayerHdr *Hdr);
|
||||
CLayerTile3d(sLevelHdr *LevelHdr,sLayerHdr *Hdr,u8 *_RGBMap,u8 *_RGBTable);
|
||||
~CLayerTile3d();
|
||||
|
||||
void init(DVECTOR &MapPos,int Shift);
|
||||
|
@ -46,6 +46,8 @@ protected:
|
|||
sVtx *VtxList;
|
||||
u16 *VtxIdxList;
|
||||
DVECTOR RenderOfs;
|
||||
u8 *RGBMap;
|
||||
u8 *RGBTable;
|
||||
|
||||
s16 *FTableX[16];
|
||||
s16 *FTableY[16];
|
||||
|
|
|
@ -201,9 +201,9 @@ void CLevel::init(int LevelNo)
|
|||
// Load it
|
||||
sLvlTab *lvlTab=&LvlTable[LevelNo];
|
||||
|
||||
CSoundMediator::setSong((CSoundMediator::SONGID)lvlTab->songId);
|
||||
// DisplayLoadingScreen(lvlTab);
|
||||
|
||||
DisplayLoadingScreen(lvlTab);
|
||||
CSoundMediator::setSong((CSoundMediator::SONGID)lvlTab->songId);
|
||||
|
||||
LevelHdr=(sLevelHdr*)CFileIO::loadFile(lvlTab->LevelFilename,"Level");
|
||||
LevelHdr->ElemBank2d=(sElem2d*) MakePtr(LevelHdr,(int)LevelHdr->ElemBank2d);
|
||||
|
@ -214,7 +214,34 @@ sLvlTab *lvlTab=&LvlTable[LevelNo];
|
|||
LevelHdr->VtxIdxList=(u16*) MakePtr(LevelHdr,(int)LevelHdr->VtxIdxList);
|
||||
LevelHdr->ModelList=(sModel*) MakePtr(LevelHdr,(int)LevelHdr->ModelList);
|
||||
|
||||
CModelGfx::SetData(LevelHdr);//LevelHdr->ModelList,LevelHdr->TriList,LevelHdr->QuadList,LevelHdr->VtxList);
|
||||
// Deal with RGB Tables (and create if none)
|
||||
if (LevelHdr->RGBLayer)
|
||||
{
|
||||
sLayerRGBHdr *RGBHdr=(sLayerRGBHdr*) MakePtr(LevelHdr,(int)LevelHdr->RGBLayer+sizeof(sLayerHdr));
|
||||
m_RGBMap=(u8*) MakePtr(LevelHdr,(int)RGBHdr->RGBMap);
|
||||
m_RGBTable=(u8*) MakePtr(LevelHdr,(int)RGBHdr->RGBTable);
|
||||
}
|
||||
else
|
||||
{ // Make blank RGB data
|
||||
sLayerHdr *LayerLayer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->ActionLayer);
|
||||
|
||||
int LvlSize=LayerLayer->Width*LayerLayer->Height;
|
||||
|
||||
m_RGBMap=(u8*)MemAlloc(LvlSize,"BlankRGBMap"); ASSERT(m_RGBMap);
|
||||
memset(m_RGBMap,0,LvlSize);
|
||||
m_RGBTable=(u8*)MemAlloc(16*4,"BlankRGBTable"); ASSERT(m_RGBTable);
|
||||
u8 RGB=127;
|
||||
for (int c=0; c<16; c++)
|
||||
{
|
||||
m_RGBTable[(c*4)+0]=RGB;
|
||||
m_RGBTable[(c*4)+1]=RGB;
|
||||
m_RGBTable[(c*4)+2]=RGB;
|
||||
m_RGBTable[(c*4)+3]=0;
|
||||
RGB+=6;
|
||||
}
|
||||
}
|
||||
|
||||
CModelGfx::SetData(LevelHdr);
|
||||
m_levelTPage=TPLoadTex(lvlTab->TexFilename);
|
||||
|
||||
s_playerSpawnPos.vx=LevelHdr->PlayerStartX*16;
|
||||
|
@ -252,19 +279,20 @@ bool Finished=false;
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CLevel::DisplayLoadingScreen(sLvlTab *lvlTab)
|
||||
void CLevel::DisplayLoadingScreen(int LevelNo)
|
||||
{
|
||||
sLvlTab *lvlTab=&LvlTable[LevelNo];
|
||||
ScalableFontBank font;
|
||||
char buf[256];
|
||||
u8 *s_image;
|
||||
int i;
|
||||
|
||||
|
||||
font.initialise(&standardFont);
|
||||
font.setJustification(FontBank::JUST_CENTRE);
|
||||
font.setScale(370);
|
||||
|
||||
sprintf(buf,"%s\n\n%s",TranslationDatabase::getString(lvlTab->ChapterLoadingText),TranslationDatabase::getString(lvlTab->LevelLoadingText));
|
||||
s_image=CFileIO::loadFile(loadingScreens[lvlTab->Chapter-1]);
|
||||
s_image=LoadPakScreen(loadingScreens[lvlTab->Chapter-1]);
|
||||
ASSERT(s_image);
|
||||
SetScreenImage(s_image);
|
||||
for(i=0;i<2;i++)
|
||||
|
@ -327,7 +355,7 @@ void CLevel::initLayers()
|
|||
if (LevelHdr->ActionLayer)
|
||||
{
|
||||
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->ActionLayer);
|
||||
CLayerTile *NewLayer=new ("Action Layer") CLayerTile3d(LevelHdr,Layer);
|
||||
CLayerTile *NewLayer=new ("Action Layer") CLayerTile3d(LevelHdr,Layer,m_RGBMap,m_RGBTable);
|
||||
NewLayer->init(MapPos,0);
|
||||
TileLayers[CLayerTile::LAYER_TILE_TYPE_ACTION]=NewLayer;
|
||||
}
|
||||
|
@ -604,6 +632,11 @@ void CLevel::shutdown()
|
|||
delete TileLayers[i];
|
||||
}
|
||||
}
|
||||
if (!LevelHdr->RGBLayer)
|
||||
{
|
||||
MemFree(m_RGBMap);
|
||||
MemFree(m_RGBTable);
|
||||
}
|
||||
|
||||
if (CollisionLayer)
|
||||
{
|
||||
|
|
|
@ -84,14 +84,12 @@ static s32 getBossHealth() {return m_bossHealth;}
|
|||
static void setIsBossRespawn( u8 newIsBossRespawn) {m_isBossRespawn=newIsBossRespawn;}
|
||||
static void setBossHealth( s32 newBossHealth ) {m_bossHealth=newBossHealth;}
|
||||
|
||||
static void DisplayLoadingScreen(int LevelNo=25);
|
||||
|
||||
private:
|
||||
void initLayers();
|
||||
void initThings(int _respawningLevel);
|
||||
|
||||
void DisplayLoadingScreen(sLvlTab *lvlTab);
|
||||
|
||||
|
||||
static sLevelHdr *LevelHdr;
|
||||
|
||||
static DVECTOR MapPos;
|
||||
|
@ -118,6 +116,9 @@ static DVECTOR s_playerSpawnPos;
|
|||
int HazardCount;
|
||||
sThingHazard **HazardList;
|
||||
|
||||
u8 *m_RGBMap;
|
||||
u8 *m_RGBTable;
|
||||
|
||||
static u8 m_isBossRespawn;
|
||||
static s32 m_bossHealth;
|
||||
|
||||
|
|
|
@ -231,18 +231,21 @@ extern int s_globalLevelSelectThing;
|
|||
---------------------------------------------------------------------- */
|
||||
void CMapScene::init()
|
||||
{
|
||||
CLevel::DisplayLoadingScreen();
|
||||
m_font=new ("map screen font") FontBank();
|
||||
m_font->initialise(&standardFont);
|
||||
m_font->setOt(10);
|
||||
m_font->setJustification(FontBank::JUST_LEFT);
|
||||
|
||||
m_screenImage=MemAlloc(512*256*2,"MapScreen");
|
||||
|
||||
m_currentChapterSelection=s_chapterToStartOn;
|
||||
/*
|
||||
m_screenImage=MemAlloc(512*256*2,"MapScreen");
|
||||
// m_mapBackgroundImage=(char*)CFileIO::loadFile(MAP_MAP_BACKGROUND_GFX);ASSERT(m_mapBackgroundImage);
|
||||
u8 *Back=(u8*)CFileIO::loadFile(MAP_MAP_BACKGROUND_GFX);ASSERT(Back);
|
||||
LZNP_Decode(Back,(u8*)m_screenImage);
|
||||
MemFree(Back);
|
||||
*/
|
||||
m_screenImage=(char*)LoadPakScreen(MAP_MAP_BACKGROUND_GFX);
|
||||
|
||||
// Load level Gfx
|
||||
for (int i=0; i<MAP_GFX_MAX; i++)
|
||||
|
|
|
@ -150,7 +150,7 @@ int fw=200;
|
|||
int fh=20;
|
||||
void CShopScene::init()
|
||||
{
|
||||
m_image=CFileIO::loadFile(BACKDROP_SHOP_GFX);
|
||||
m_image=LoadPakScreen(BACKDROP_SHOP_GFX);
|
||||
ASSERT(m_image);
|
||||
SetScreenImage((u8*)m_image);
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "system\vid.h"
|
||||
#include "gfx\prim.h"
|
||||
#include "fileio\fileio.h"
|
||||
#include "utils\lznp.h"
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -283,7 +284,7 @@ void VidSetRes(int x, int y)
|
|||
void VidInit()
|
||||
{
|
||||
// Wap up a loading screen
|
||||
u8 *screenData=CFileIO::loadFile(LOADINGSCREENS_BOOTSCREEN_GFX,"Loading Screen");
|
||||
u8 *screenData=LoadPakScreen(LOADINGSCREENS_BOOTSCREEN_GFX);
|
||||
SetScreenImage(screenData);
|
||||
|
||||
// VidSetXYOfs( ScreenXOfs, ScreenYOfs );
|
||||
|
@ -402,6 +403,19 @@ if(ScreenClipBox==2)
|
|||
}
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
u8 *LoadPakScreen(int Filename)
|
||||
{
|
||||
u8 *PakData=CFileIO::loadFile((FileEquate)Filename,"PakScreen");
|
||||
u8 *Screen=(u8*)MemAlloc(512*256*2,"Screen");
|
||||
|
||||
LZNP_Decode(PakData,Screen);
|
||||
MemFree(PakData);
|
||||
|
||||
return(Screen);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*** VRAM VIEWER *************************************************************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -66,4 +66,6 @@ void SetScreenImage(u8 *Ptr);
|
|||
u8 *GetScreenImage();
|
||||
void ClearScreenImage();
|
||||
|
||||
u8 *LoadPakScreen(int Filename);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue