diff --git a/data/translations/text.dat b/data/translations/text.dat index bdede8a90..b75ddf4d9 100644 --- a/data/translations/text.dat +++ b/data/translations/text.dat @@ -76,10 +76,10 @@ eng=B eng=C [STR__FRONTEND__D] eng=D -[STR__FRONTEND__UP] -eng=UP -[STR__FRONTEND__DOWN] -eng=DOWN +[STR__FRONTEND__LOOK_UP] +eng=LOOK UP +[STR__FRONTEND__LOOK_DOWN] +eng=LOOK DOWN [STR__FRONTEND__LEFT] eng=LEFT [STR__FRONTEND__RIGHT] @@ -227,7 +227,7 @@ eng=zzzzzzzzzz [STR__INGAME__FMA_C2_SB0] eng=I’m ready. I’m ready. I’m ready. Oops! [STR__INGAME__FMA_C2_BB0] -eng=Back already?.. That is definitely a sandwich fit for a super hero!! Gonna need to think of something to test your super hero potential, and keep busy! . Look MM is not in great super hero condition at the moment and he could really do with some pampering!! Some Kelp cream and a facial! Not for me you understand! +eng=Back already?.. That is definitely a sandwich fit for a super hero!! Gonna need to think of something to test your super hero potential, and keep busy! Look MM is not in great super hero condition at the moment and he could really do with some pampering!! Some Kelp cream and a facial! Not for me you understand! ;PKG 17/7/01 - This is duped by STR__INGAME__FMA_C4_SB2 [STR__INGAME__FMA_C2_SB1] eng=I’m on my way!! @@ -236,7 +236,7 @@ eng=I [STR__INGAME__FMA_C3_SB0] eng=aaah!!! [STR__INGAME__FMA_C3_BB0] -eng=That is amazing, how did you manage that!! Reflecto has got nothing on you kid, you must really love your mate Trevor! +eng=That is amazing, how did you manage that!! Reflecto has nothing on you kid, you must really love your mate Trevor! [STR__INGAME__FMA_C3_SB1] eng=Patrick! [STR__INGAME__FMA_C3_BB1] diff --git a/makefile.gfx b/makefile.gfx index 37a98fc77..833a61252 100644 --- a/makefile.gfx +++ b/makefile.gfx @@ -465,7 +465,9 @@ cleanbackdrops : @$(ECHO) Backdrops Cleaned $(BACKDROPS_OUT_DIR)/%.gfx : $(BACKDROPS_IN_DIR)/%.tga - @$(TGA2GFX) $< $@ + @$(TGA2GFX) $< a.tmp + @$(LZNP) a.tmp $@ >nul + @$(RM) a.tmp GRAF_DIRS_TO_MAKE += $(BACKDROPS_OUT_DIR) GFX_DATA_OUT += $(BACKDROPS_OUT) @@ -494,6 +496,7 @@ cleanmapscreens: $(MAPSCREENS_OUT_DIR)/%.gfx : $(MAPSCREENS_IN_DIR)/%.tga @$(TGA2GFX) $< a.tmp @$(LZNP) a.tmp $@ >nul + @$(RM) a.tmp GRAF_DIRS_TO_MAKE += $(MAPSCREENS_OUT_DIR) GFX_DATA_OUT += $(MAPSCREENS_OUT) @@ -515,7 +518,10 @@ cleanloadingscreens : @$(ECHO) Loadingscreens Cleaned $(LOADINGSCREENS_OUT_DIR)/%.gfx : $(LOADINGSCREENS_IN_DIR)/%.tga - @$(TGA2GFX) $< $@ + @$(TGA2GFX) $< a.tmp + @$(LZNP) a.tmp $@ >nul + @$(RM) a.tmp + GRAF_DIRS_TO_MAKE += $(LOADINGSCREENS_OUT_DIR) GFX_DATA_OUT += $(LOADINGSCREENS_OUT) diff --git a/source/backend/credits.cpp b/source/backend/credits.cpp index 40a48cc99..1ad700339 100644 --- a/source/backend/credits.cpp +++ b/source/backend/credits.cpp @@ -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(); diff --git a/source/backend/gameover.cpp b/source/backend/gameover.cpp index f5e8ca579..b034e94a5 100644 --- a/source/backend/gameover.cpp +++ b/source/backend/gameover.cpp @@ -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); diff --git a/source/backend/party.cpp b/source/backend/party.cpp index 21c477e57..6bac90130 100644 --- a/source/backend/party.cpp +++ b/source/backend/party.cpp @@ -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); diff --git a/source/frontend/maintitl.cpp b/source/frontend/maintitl.cpp index af9c1e989..a64d45f41 100644 --- a/source/frontend/maintitl.cpp +++ b/source/frontend/maintitl.cpp @@ -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); diff --git a/source/frontend/nicklogo.cpp b/source/frontend/nicklogo.cpp index 8cd69053a..c2b974e11 100644 --- a/source/frontend/nicklogo.cpp +++ b/source/frontend/nicklogo.cpp @@ -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); diff --git a/source/frontend/options.cpp b/source/frontend/options.cpp index 18cea17d5..3a81f93f6 100644 --- a/source/frontend/options.cpp +++ b/source/frontend/options.cpp @@ -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); diff --git a/source/game/game.cpp b/source/game/game.cpp index 498de48b0..c68b78d08 100644 --- a/source/game/game.cpp +++ b/source/game/game.cpp @@ -752,6 +752,7 @@ void CGameScene::hitBossArenaTrigger() void CGameScene::initLevel() { CSoundMediator::setCanPlaySfx(false); + Level.DisplayLoadingScreen(s_globalLevelSelectThing); SYSTEM_DBGMSG("InitLevel\n"); CThingManager::init(); diff --git a/source/level/layertile.cpp b/source/level/layertile.cpp index 4d2a5dfb7..d7e61ce53 100644 --- a/source/level/layertile.cpp +++ b/source/level/layertile.cpp @@ -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; diff --git a/source/level/layertile.h b/source/level/layertile.h index 5dc4599fd..dcbf33bfc 100644 --- a/source/level/layertile.h +++ b/source/level/layertile.h @@ -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: diff --git a/source/level/layertile3d.cpp b/source/level/layertile3d.cpp index 811edc97a..f4506889e 100644 --- a/source/level/layertile3d.cpp +++ b/source/level/layertile3d.cpp @@ -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; YTriStart]; 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++; diff --git a/source/level/layertile3d.h b/source/level/layertile3d.h index 8c3178d0d..11fa0d1be 100644 --- a/source/level/layertile3d.h +++ b/source/level/layertile3d.h @@ -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]; diff --git a/source/level/level.cpp b/source/level/level.cpp index e4f491557..1736d6438 100644 --- a/source/level/level.cpp +++ b/source/level/level.cpp @@ -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) { diff --git a/source/level/level.h b/source/level/level.h index 225eafbff..b708c089e 100644 --- a/source/level/level.h +++ b/source/level/level.h @@ -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; diff --git a/source/map/map.cpp b/source/map/map.cpp index 9c704f4cd..39489702f 100644 --- a/source/map/map.cpp +++ b/source/map/map.cpp @@ -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