This commit is contained in:
parent
545a3d1304
commit
f92df2b5bf
12 changed files with 352 additions and 55 deletions
|
@ -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 <frontend.h>
|
||||
#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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ public:
|
|||
|
||||
|
||||
private:
|
||||
class SpriteBank *m_sprites;
|
||||
class CFrontEndMainTitles *m_mainTitles;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -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;i<posnum;i++)
|
||||
{
|
||||
ft4=m_sprites->printFT4(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<seah+1;yloop++)
|
||||
{
|
||||
x=0;
|
||||
for(xloop=0;xloop<seaw+1;xloop++)
|
||||
{
|
||||
grid[xloop][yloop][0]=(x>>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;xloop<seaw+1;xloop++)
|
||||
{
|
||||
grid[xloop][yloop][1]=HORIZON_LEVEL;
|
||||
}
|
||||
|
||||
// Draw it
|
||||
fh=m_sprites->getFrameHeader(FRM_SKY);
|
||||
//fh=m_sprites->getFrameHeader(FRM__SBLOGO);
|
||||
xstep=(256<<8)/seaw;
|
||||
ystep=(256<<8)/seah;
|
||||
y=0;
|
||||
for(yloop=0;yloop<seah;yloop++)
|
||||
{
|
||||
x=0;
|
||||
for(xloop=0;xloop<seaw;xloop++)
|
||||
{
|
||||
ft4=prepareSeaPortionFT4(fh,x>>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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue