From f92df2b5bf93d24a2fa95c68c01d98bcde1c27dd Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 15 Nov 2000 15:37:12 +0000 Subject: [PATCH] --- data/translations/text.dat | 11 + makefile.gaz | 7 +- makefile.gfx | 6 +- source/frontend/frontend.cpp | 39 +-- source/frontend/frontend.h | 2 +- source/frontend/maintitl.cpp | 237 +++++++++++++++++- source/frontend/maintitl.h | 38 ++- source/gfx/bubicles.cpp | 8 +- source/gfx/bubicles.h | 4 +- source/gfx/font.h | 2 +- source/system/main.cpp | 37 ++- .../spongebob project/spongebob project.dsp | 16 ++ 12 files changed, 352 insertions(+), 55 deletions(-) diff --git a/data/translations/text.dat b/data/translations/text.dat index 3399e8028..56aa63d30 100644 --- a/data/translations/text.dat +++ b/data/translations/text.dat @@ -33,6 +33,17 @@ eng=NOW LOADING.. eng= +; --------------------------------------------------------------- +; Front end +; --------------------------------------------------------------- + +[STR__FRONTEND__GAME_TITLE] +eng=SPONGEBOBS UNTITLED ADVENTURE +[STR__FRONTEND__PRESS_START] +eng=PRESS START + + + ; --------------------------------------------------------------- diff --git a/makefile.gaz b/makefile.gaz index e3be84e23..a4bf5b29d 100644 --- a/makefile.gaz +++ b/makefile.gaz @@ -51,7 +51,9 @@ CD_FILESYS_LIB := CMXBoot fileio_src := fileio \ $($(FILE_SYSTEM)_FILESYS_SRC) -frontend_src := scrollbg +frontend_src := frontend \ + scrollbg \ + maintitl game_src := game @@ -59,8 +61,9 @@ gfx_src := prim \ tpage \ animtex \ sprbank \ - font \ + fader \ fdata \ + font \ bubicles # camera \ diff --git a/makefile.gfx b/makefile.gfx index 6f0573772..239a5a661 100644 --- a/makefile.gfx +++ b/makefile.gfx @@ -147,10 +147,10 @@ GFX_DATA_OUT += $(INGAMEFX_GFX_TEX_OUT) FRONTEND_GFX_DIR := $(GRAF_DIR)/frontend FRONTEND_GFX_OUT_DIR := $(DATA_OUT)/frontend -FRONTEND_GFX_NONTRANS := -FRONTEND_GFX_NONTRANS_IN := $(foreach FILE,$(FRONTEND_GFX_NONTRANS),$(FRONTEND_NONTRANS_DIR)/$(FILE)) +FRONTEND_GFX_NONTRANS := sky.bmp +FRONTEND_GFX_NONTRANS_IN := $(foreach FILE,$(FRONTEND_GFX_NONTRANS),$(FRONTEND_GFX_DIR)/$(FILE)) -FRONTEND_GFX_TRANS := +bg1.bmp +sblogo.bmp +FRONTEND_GFX_TRANS := +bg1.bmp +island.bmp +sblogo.bmp FRONTEND_GFX_TRANS_IN := $(foreach FILE,$(FRONTEND_GFX_TRANS),$(FRONTEND_GFX_DIR)/$(FILE)) FRONTEND_GFX_TEX_IN := ${FRONTEND_GFX_NONTRANS_IN} ${FRONTEND_GFX_TRANS_IN} diff --git a/source/frontend/frontend.cpp b/source/frontend/frontend.cpp index b34688d62..eeac80495 100644 --- a/source/frontend/frontend.cpp +++ b/source/frontend/frontend.cpp @@ -18,16 +18,12 @@ #include "frontend\frontend.h" -#ifndef __FRONTEND_SCROLLBG_H__ -#include "frontend\scrollbg.h" -#endif - #ifndef __MEMORY_HEADER__ #include "mem\memory.h" #endif -#ifndef __GFX_SPRBANK_H__ -#include "gfx\sprbank.h" +#ifndef __FRONTEND_MAINTITL_H__ +#include "frontend\maintitl.h" #endif @@ -37,11 +33,6 @@ /* Data ---- */ -#ifndef __SPR_FRONTEND_H__ -#include -#endif - - /*---------------------------------------------------------------------- Tyepdefs && Defines ------------------- */ @@ -58,11 +49,6 @@ Vars ---- */ - - -static CScrollyBackground *s_bg1; - - CFrontEndScene FrontEndScene; @@ -74,13 +60,8 @@ CFrontEndScene FrontEndScene; ---------------------------------------------------------------------- */ void CFrontEndScene::init() { - s_bg1=new ("scrolly background") CScrollyBackground(); - s_bg1->init(); - s_bg1->setSpeed(+2,+2); - - - m_sprites=new ("FE Sprites") SpriteBank(); - m_sprites->load(FRONTEND_FRONTEND_SPR); + m_mainTitles=new ("FEMainTitles") CFrontEndMainTitles(); + m_mainTitles->init(); } @@ -92,8 +73,7 @@ void CFrontEndScene::init() ---------------------------------------------------------------------- */ void CFrontEndScene::shutdown() { - m_sprites->dump(); delete m_sprites; - s_bg1->shutdown(); delete s_bg1; + m_mainTitles->shutdown(); delete m_mainTitles; } @@ -105,12 +85,7 @@ void CFrontEndScene::shutdown() ---------------------------------------------------------------------- */ void CFrontEndScene::render() { - sFrameHdr *fh; - - fh=m_sprites->getFrameHeader(FRM__SBLOGO); - m_sprites->printFT4(fh,(512-fh->W)/2,(256-fh->H)/2,0,0,10); - - s_bg1->render(); + m_mainTitles->render(); } @@ -122,7 +97,7 @@ void CFrontEndScene::render() ---------------------------------------------------------------------- */ void CFrontEndScene::think(int _frames) { - s_bg1->think(_frames); + m_mainTitles->think(_frames); } diff --git a/source/frontend/frontend.h b/source/frontend/frontend.h index 5a7dc0e49..f10c961cf 100644 --- a/source/frontend/frontend.h +++ b/source/frontend/frontend.h @@ -45,7 +45,7 @@ public: private: - class SpriteBank *m_sprites; + class CFrontEndMainTitles *m_mainTitles; }; diff --git a/source/frontend/maintitl.cpp b/source/frontend/maintitl.cpp index f6ee6a3bb..972f987da 100644 --- a/source/frontend/maintitl.cpp +++ b/source/frontend/maintitl.cpp @@ -26,6 +26,26 @@ #include "gfx\sprbank.h" #endif +#ifndef __GFX_FONT_H__ +#include "gfx\font.h" +#endif + +#ifndef __MATHTABLE_HEADER__ +#include "utils\mathtab.h" +#endif + +#ifndef __LOCALE_TEXTDBASE_H__ +#include "locale\textdbase.h" +#endif + +#ifndef __PAD_PADS_H__ +#include "pad\pads.h" +#endif + +#ifndef __GFX_FADER_H__ +#include "gfx\fader.h" +#endif + /* Std Lib ------- */ @@ -54,6 +74,18 @@ Vars ---- */ +/////////////// +int seaw=10; +int seah=70; +int seaspeed=20; +int seagap=120; +int seascale=4000; +int seascalegrow=-50; + +int sval=0; +/////////////// + + /*---------------------------------------------------------------------- Function: Purpose: @@ -62,8 +94,21 @@ ---------------------------------------------------------------------- */ void CFrontEndMainTitles::init() { - m_sprites=new ("FE Sprites") SpriteBank(); + m_sprites=new ("MainTitle Sprites") SpriteBank(); m_sprites->load(FRONTEND_FRONTEND_SPR); + + m_smallFont=new ("MainTitle SmallFont") FontBank(); + m_smallFont->initialise(&standardFont); + m_smallFont->setJustification(FontBank::JUST_CENTRE); + + m_bigFont=new ("MainTitle BigFont") FontBank(); + m_bigFont->initialise(&largeFont); + m_bigFont->setJustification(FontBank::JUST_CENTRE); + m_bigFont->setColour(PRESS_START_TEXT_R,PRESS_START_TEXT_G,PRESS_START_TEXT_B); + + m_mode=MODE__PRESS_START; + + CFader::setFadingIn(); } @@ -75,10 +120,19 @@ void CFrontEndMainTitles::init() ---------------------------------------------------------------------- */ void CFrontEndMainTitles::shutdown() { - m_sprites->dump(); delete m_sprites; + m_bigFont->dump(); delete m_bigFont; + m_smallFont->dump(); delete m_smallFont; + m_sprites->dump(); delete m_sprites; } +typedef struct +{ + int x,y; +}xy; +xy pos[10]={{0,0},{3,0},{-3,0},{0,2},{0,-2}}; +int posnum=5; + /*---------------------------------------------------------------------- Function: Purpose: @@ -88,9 +142,40 @@ void CFrontEndMainTitles::shutdown() void CFrontEndMainTitles::render() { sFrameHdr *fh; + POLY_FT4 *ft4; + // Game logo/title fh=m_sprites->getFrameHeader(FRM__SBLOGO); - m_sprites->printFT4(fh,(512-fh->W)/2,(256-fh->H)/2,0,0,10); + m_sprites->printFT4(fh,256-(fh->W/2),LOGO_CENTRE_Y-(fh->H/2),0,0,20); + m_smallFont->setColour(GAME_TITLE_TEXT_R,GAME_TITLE_TEXT_G,GAME_TITLE_TEXT_B); + m_smallFont->print(256,GAME_TITLE_TEXT_CENTRE_Y,STR__FRONTEND__GAME_TITLE); + m_smallFont->setColour(0,0,0); + m_smallFont->print(256+1,GAME_TITLE_TEXT_CENTRE_Y+1,STR__FRONTEND__GAME_TITLE); + + // The island + fh=m_sprites->getFrameHeader(FRM__ISLAND); + m_sprites->printFT4(fh,ISLAND_LEFT_X,ISLAND_BOTTOM_Y-(fh->H),0,0,11); + + // Sky + fh=m_sprites->getFrameHeader(FRM_SKY); + for(int i=0;iprintFT4(fh,0,0,0,0,1020-i); + setXYWH(ft4,pos[i].x,pos[i].y,512,HORIZON_LEVEL); + if(i) + setSemiTrans(ft4,true); + } + + renderSea(); + + switch(m_mode) + { + case MODE__PRESS_START: + renderPressStart(); + break; + case MODE__SELECT_OPTION: + break; + } } @@ -102,6 +187,152 @@ void CFrontEndMainTitles::render() ---------------------------------------------------------------------- */ void CFrontEndMainTitles::think(int _frames) { + sval=(sval+(seaspeed*_frames))&4095; + + switch(m_mode) + { + case MODE__PRESS_START: + if(!CFader::isFading()&&PadGetDown(0)&PAD_START) + { + m_mode=MODE__SELECT_OPTION; +CFader::setFadingOut(); + } + break; + case MODE__SELECT_OPTION: + break; + } +} + + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +POLY_FT4 *CFrontEndMainTitles::prepareSeaPortionFT4(sFrameHdr *_fh,int _x,int _y,int _w,int _h) +{ + int u,v,w,h; + POLY_FT4 *ft4; + + + w=(_fh->W*_w)>>8; + h=(_fh->H*_h)>>8; + u=_fh->U+((_fh->W*_x)>>8); + v=_fh->V+_fh->H-((_fh->H*_y)>>8)-h; + + ft4=GetPrimFT4(); + setShadeTexPolyFT4(ft4); + setShadeTex(ft4,0); + setRGB0(ft4,64,64,64); + + ft4->u0=u; + ft4->u1=u+w; + ft4->u2=u; + ft4->u3=u+w; + ft4->v0=v+h-1; + ft4->v1=v+h-1; + ft4->v2=v-1; + ft4->v3=v-1; + ft4->tpage=_fh->TPage; + ft4->clut=_fh->Clut; + + return ft4; +} + + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CFrontEndMainTitles::renderSea() +{ + sFrameHdr *fh; + int xloop,yloop; + int xstep,ystep; + int x,y; + int scale; + POLY_FT4 *ft4; + int grid[seaw+1][seah+1][2]; + int waveval; + + + // Grow the grid + xstep=(512<<8)/seaw; + ystep=((256-HORIZON_LEVEL+(2048/(seascale+(seascalegrow*seah))))<<8)/seah; + y=HORIZON_LEVEL<<8; + waveval=sval; + scale=seascale; + for(yloop=0;yloop>8)+0; + grid[xloop][yloop][1]=(y>>8)+(msin(waveval)/scale); + x+=xstep; + } + y+=ystep; + scale+=seascalegrow; + waveval=(waveval+seagap)&4095; + } + + // Hmm.. let's stick the top line to the horizon shall we? + for(xloop=0;xloopgetFrameHeader(FRM_SKY); + //fh=m_sprites->getFrameHeader(FRM__SBLOGO); + xstep=(256<<8)/seaw; + ystep=(256<<8)/seah; + y=0; + for(yloop=0;yloop>8,y>>8,xstep>>8,ystep>>8); + ft4->x0=grid[xloop ][yloop ][0]; + ft4->y0=grid[xloop ][yloop ][1]; + ft4->x1=grid[xloop+1][yloop ][0]; + ft4->y1=grid[xloop+1][yloop ][1]; + ft4->x3=grid[xloop+1][yloop+1][0]; + ft4->y3=grid[xloop+1][yloop+1][1]; + ft4->x2=grid[xloop ][yloop+1][0]; + ft4->y2=grid[xloop ][yloop+1][1]; + AddPrimToList(ft4,1000); + x+=xstep; + } + y+=ystep; + } + + //////////////////////// bg + POLY_F4 *f4; + f4=GetPrimF4(); + setXYWH(f4,0,HORIZON_LEVEL,512,256-HORIZON_LEVEL); + setRGB0(f4,80,70,60); + AddPrimToList(f4,1020); + //////////////////////// bg +} + + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CFrontEndMainTitles::renderPressStart() +{ + if(!CFader::isFading()) + { + m_bigFont->print(256,PRESS_START_TEXT_Y,STR__FRONTEND__PRESS_START); + } } diff --git a/source/frontend/maintitl.h b/source/frontend/maintitl.h index fd7ed4669..89820edd7 100644 --- a/source/frontend/maintitl.h +++ b/source/frontend/maintitl.h @@ -17,8 +17,8 @@ Includes -------- */ -#ifndef __SYSTEM_GSTATE_H__ -#include "system\gstate.h" +#ifndef __PRIM_HEADER__ +#include "gfx\prim.h" #endif @@ -43,7 +43,41 @@ public: private: + enum + { + LOGO_CENTRE_Y=74, + GAME_TITLE_TEXT_CENTRE_Y=120, + GAME_TITLE_TEXT_R=128, + GAME_TITLE_TEXT_G=128, + GAME_TITLE_TEXT_B=128, + + PRESS_START_TEXT_Y=180, + PRESS_START_TEXT_R=150, + PRESS_START_TEXT_G=100, + PRESS_START_TEXT_B=100, + + HORIZON_LEVEL=160, + + ISLAND_LEFT_X=40, + ISLAND_BOTTOM_Y=HORIZON_LEVEL+10, + }; + + enum + { + MODE__PRESS_START, + MODE__SELECT_OPTION, + }; + + POLY_FT4 *prepareSeaPortionFT4(struct sFrameHdr *_fh,int _x,int _y,int _w,int _h); + void renderSea(); + + void renderPressStart(); + class SpriteBank *m_sprites; + class FontBank *m_smallFont; + class FontBank *m_bigFont; + + int m_mode; }; diff --git a/source/gfx/bubicles.cpp b/source/gfx/bubicles.cpp index 9513d01aa..d9b1919c8 100644 --- a/source/gfx/bubicles.cpp +++ b/source/gfx/bubicles.cpp @@ -393,7 +393,7 @@ void CBubicleFactory::shutdown() Params: Returns: ---------------------------------------------------------------------- */ -void CBubicleFactory::think() +void CBubicleFactory::think(int _frames) { ASSERT(s_initialised); @@ -402,20 +402,18 @@ void CBubicleFactory::think() CBubicleEmitter *emt; CBubicle *bub; - frames=GameState::getFramesSinceLast(); - emt=s_emitters; for(i=0;iisActive()) - emt->think(frames); + emt->think(_frames); } bub=s_bubicles; for(i=0;iisActive()) - bub->think(frames); + bub->think(_frames); } } diff --git a/source/gfx/bubicles.h b/source/gfx/bubicles.h index b7cb27183..d0ac0a441 100644 --- a/source/gfx/bubicles.h +++ b/source/gfx/bubicles.h @@ -156,7 +156,7 @@ class CBubicleFactory public: static void init(); static void shutdown(); - static void think(); + static void think(int _frames); static void render(); static CBubicleEmitter *spawnEmitter(BubicleEmitterData *_init); @@ -169,7 +169,7 @@ private: enum { NUM_EMITTERS=10, - NUM_BUBICLES=100, + NUM_BUBICLES=150, }; CBubicleFactory() {;} diff --git a/source/gfx/font.h b/source/gfx/font.h index 2f44dd2cb..3557d4aaa 100644 --- a/source/gfx/font.h +++ b/source/gfx/font.h @@ -78,7 +78,7 @@ private: DEFAULT_G=128, DEFAULT_B=128, DEFAULT_JUSTIFICATION=JUST_LEFT, - DEFAULT_OT=1, + DEFAULT_OT=10, }; diff --git a/source/system/main.cpp b/source/system/main.cpp index aba0bd3b9..5952ef34b 100644 --- a/source/system/main.cpp +++ b/source/system/main.cpp @@ -17,6 +17,17 @@ // scenes #include "game\game.h" +#ifndef __FRONTEND_FRONTEND_H__ +#include "frontend\frontend.h" +#endif + +#ifdef __USER_paul__ +#include "paul\paul.h" +CPaulScene s_paulScene; +#endif + + + #ifndef __SYSTEM_GSTATE_H__ #include "system\gstate.h" #endif @@ -29,10 +40,6 @@ #include "sound\sound.h" #endif -#ifdef __USER_paul__ -#include "paul\paul.h" -CPaulScene s_paulScene; -#endif #ifndef __SYSTEM_EXCEPT_H__ #include "system\except.h" @@ -46,6 +53,15 @@ CPaulScene s_paulScene; #include "gui\gui.h" #endif +#ifndef __GFX_FADER_H__ +#include "gfx\fader.h" +#endif + +#ifndef __GFX_BUBICLES_H__ +#include "gfx\bubicles.h" +#endif + + #define SCREEN_GRAB @@ -89,6 +105,8 @@ void InitSystem() // reordered to reduce black screen (hope all is well initGUIStuff(); + CBubicleFactory::init(); + #ifdef __USER_paul__ s_paulScene.init(); #endif @@ -109,9 +127,16 @@ void MainLoop() frames=GameState::getFramesSinceLast(); FontBank::think(frames); + GameState::think(); GameState::render(); + CBubicleFactory::think(frames); + CBubicleFactory::render(); + + CFader::think(frames); + CFader::render(); + CSoundMediator::think(frames); #ifdef __USER_paul__ @@ -153,7 +178,11 @@ int main() CFileIO::GetAllFilePos(); InitSystem(); +#ifdef __USER_paul__ + GameState::setNextScene( &FrontEndScene ); +#else GameState::setNextScene( &GameScene ); +#endif // CXAStream::Init(); // PKG - Stuck here so that it doesn't affect any startup stuff (7/8/00) MainLoop(); diff --git a/users/paul/spongebob project/spongebob project.dsp b/users/paul/spongebob project/spongebob project.dsp index 07fb19d9d..d85c23bb3 100644 --- a/users/paul/spongebob project/spongebob project.dsp +++ b/users/paul/spongebob project/spongebob project.dsp @@ -485,6 +485,22 @@ SOURCE=..\..\..\source\utils\utils.h # PROP Default_Filter "" # Begin Source File +SOURCE=..\..\..\source\frontend\frontend.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\frontend\frontend.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\frontend\maintitl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\frontend\maintitl.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\frontend\scrollbg.cpp # End Source File # Begin Source File