/**********************************/ /* BOLL */ /* ecrit par MAGNIER Nicolas */ /* magnier@caramail.com */ /* ou magnier1 sur le site yaroze */ /**********************************/ #include #include "pad.h" #include "screen.h" // ---definitions--- #define SPRITE_ADD (0x80090000) #define BG_ADD (0x80092000) #define NB_BALL (10) #define NB_SPRITE (NB_BALL) #define OT_LENGTH (NB_SPRITE+1) #define UN (4096) static GsOT OTable_Header[2]; static GsOT_TAG OTable_Array[2][1<(88+2*(3*8))) menu.y=88; if (menu.y<88) menu.y=88+2*(3*8); if ((PAD & PADcross) && menu.y==88) pad_status=2; if ((PAD & PADcross) && menu.y==88+(3*8)) {pad_status=2;PersoInit();} if ((PAD & PADcross) && menu.y==88+2*(3*8)) {pad_status=2;Run=0;} RenderInit(); FntPrint(police," start START\n\n\n\n"); FntPrint(police," continuer\n\n\n"); FntPrint(police," recommencer\n\n\n"); FntPrint(police," quitter"); menu=Select(menu); for (i=0;i<4;i++) GsSortGLine(&menu.line[i],&OTable_Header[buff],i); Render(); } }; void Pad() { PAD=PadRead(); if (PAD & PADcircle) Worms.direction[0]=0; if (PAD & PADright) Worms.direction[0]=1; if (PAD & PADdown) Worms.direction[0]=-2; if (PAD & PADleft) Worms.direction[0]=-1; if (PAD & PADup) Worms.direction[0]=2; if (!(PAD & PADstart)) start_status=0; if ((PAD & PADstart) && start_status==0) Start(); }; void RenderSprite() { short i; for (i=0;i300){Worms.direction[0]=-2;Worms.ball[0].x=300;} if (Worms.ball[0].y<20){Worms.direction[0]=1;Worms.ball[0].y=20;} if (Worms.ball[0].y>220){Worms.direction[0]=-1;Worms.ball[0].y=220;} }; void deplacement() { long i,X,Y; for (i=1;i20 || abs(Y)>20 ) { if (Worms.direction[i-1]==1) {if (Worms.ball[i].y!=Worms.ball[i-1].y) {if (Y>0) Worms.direction[i]=-2; else Worms.direction[i]=2;} else {if (X>20) Worms.direction[i]=1; if (X<-20) Worms.direction[i]=-1;} } if (Worms.direction[i-1]==2) {if (Worms.ball[i].x!=Worms.ball[i-1].x) {if (X>0) Worms.direction[i]=1; else Worms.direction[i]=-1;} else {if (Y>20) Worms.direction[i]=-2; if (Y<-20) Worms.direction[i]=2;} } if (Worms.direction[i-1]==-1) {if (Worms.ball[i].y!=Worms.ball[i-1].y) {if (Y>0) Worms.direction[i]=-2; else Worms.direction[i]=2;} else {if (X>20) Worms.direction[i]=1; if (X<-20) Worms.direction[i]=-1;} } if (Worms.direction[i-1]==-2) {if (Worms.ball[i].x!=Worms.ball[i-1].x) {if (X>0) Worms.direction[i]=1; else Worms.direction[i]=-1;} else {if (Y>20) Worms.direction[i]=-2; if (Y<-20) Worms.direction[i]=2;} } } } for (i=0;i150) menu.sens=1; if (menu.line[3].b0<10) menu.sens=0; if (menu.sens==0) { menu.line[i].r0+=6; menu.line[i].g0+=6; menu.line[i].b0+=6; menu.line[i].r1-=6; menu.line[i].g1-=6; menu.line[i].b1-=6; } else { menu.line[i].r0-=6; menu.line[i].g0-=6; menu.line[i].b0-=6; menu.line[i].r1+=6; menu.line[i].g1+=6; menu.line[i].b1+=6; } }; return (menu); }; void PersoInit() { short i; for (i=0;iu=Tim.px-SCREEN_WIDTH; BgCell->v=Tim.py; BgCell->cba= GetClut(Tim.cx,Tim.cy); BgCell->flag=0; BgCell->tpage=GetTPage(Clut,0,Tim.px,Tim.py); BgMap->cellw=Tim.pw; BgMap->cellh=Tim.ph/2; BgMap->ncellw=2; BgMap->ncellh=2; BgMap->base=BgCell; BgMap->index=map; Bg->attribute=(1<<24); Bg->x=0; Bg->y=0; Bg->w=BgMap->cellw*BgMap->ncellw; Bg->h=BgMap->cellh*BgMap->ncellh; Bg->scrollx=0; Bg->scrolly=0; Bg->r=Bg->g=Bg->b=128; Bg->map=BgMap; Bg->mx=Bg->w/2; Bg->my=Bg->h/2; Bg->scalex=UN; Bg->scaley=UN; Bg->rotate=0; }; void SetSprite(GsSPRITE *Sprite,u_long addressTIM,long X,long Y) { GsIMAGE Tim; u_long Clut; GsGetTimInfo((u_long *)(addressTIM+4),&Tim); Clut=1; Sprite->attribute=(1<<24); Sprite->w=Tim.pw*2; Sprite->h=Tim.ph; Sprite->x=X; Sprite->y=Y; Sprite->u=Tim.px-SCREEN_WIDTH; Sprite->v=Tim.py; Sprite->tpage=GetTPage(Clut,0,Tim.px,Tim.py); Sprite->cx=Tim.cx; Sprite->cy=Tim.cy; Sprite->r=128; Sprite->g=128; Sprite->b=128; Sprite->mx=Sprite->w/2; Sprite->my=Sprite->h/2; Sprite->scalex=UN; Sprite->scaley=UN; Sprite->rotate=0; }; void Render() { DrawSync(0); VSync(0); GsSwapDispBuff(); GsSortClear(50,50,50,&OTable_Header[buff]); GsDrawOt(&OTable_Header[buff]); FntFlush(police); }; void RenderInit() { buff=GsGetActiveBuff(); GsClearOt(0,0,&OTable_Header[buff]); GsSetWorkBase((PACKET *) PacketMemory[buff]); };