/******************************************** TOKUI WAZA BY: OMAR METWALLY Start Date: DECEMBER 2000 Completed: February 18, 2001 Thanks to Geoge Bain for the basic skeleton code from his tutorials to display a basic 3D object on-screen. All TMD-displaying routines are derived from his tutorials. Yaroze lives on! Visit: www.yarozescene.co.uk **********************************************/ #include #include "cntrl.h" #include "rsdanim.h" /**********************************************/ // screen resolution #define SCREEN_WIDTH (320) #define SCREEN_HEIGHT (240) #define XWIDTH (160) #define ZDEPTH (110) #define MOVESPEED (10)//ai moving speed #define PLAYMOVE (20)//human moving peed #define OT_LENGTH (8) #define SCRN_Z (1<<9) #define NEAR_CLIP (1<<8) #define FAR_CLIP (1<<13) #define PACKETMAX (10000) #define PACKETMAX2 (PACKETMAX*24) #define LEVEL_DATA 0x80090000 /* 1192 */ #define FIGHTMAT_DATA 0x800904b0 /* 3944 */ #define STAR_DATA 0x80091420 /* 32848 */ #define STONE05_DATA 0x80099470 /* 4640 */ #define CHAR1_DATA 0x8009a690 /* 23912 */ #define CHAR2_DATA 0x800a0400 /* 20856 */ #define KICKRP1_DATA 0x800a5580 /* 3072 */ #define KICKLP1_DATA 0x800a6180 /* 3072 */ #define PUNCHRP1_DATA 0x800a6d80 /* 3072 */ #define PUNCHLP1_DATA 0x800a7980 /* 3072 */ #define WALKP1_DATA 0x800a8580 /* 6136 */ #define WALKP2_DATA 0x800a9d80 /* 6136 */ #define KICKRP2_DATA 0x800ab580 /* 3072 */ #define KICKLP2_DATA 0x800ac180 /* 3072 */ #define PUNCHRP2_DATA 0x800acd80 /* 3072 */ #define PUNCHLP2_DATA 0x800ad980 /* 3072 */ #define POINTER_DATA 0x800ae580 /* 38944 */ #define VB_DATA 0x800b7da0 /* 401360 */ #define VH_DATA 0x80119d70 /* 60448 */ #define TODBATT1_DATA 0x80128990 /* 24656 */ #define PLAY #define CAMMOVE (0) #define RECHARGE (10)//power meter recharge speed //the higher, the slower /*********** G L O B A L S ***********************/ int out_buf; GsOT wot[2]; GsOT_TAG ot[2][1<200) aicount=0; metermove++; if(metermove>200) metermove=0; if(p1power.w<40&&metermove%RECHARGE==0) p1power.w++; if(p2power.w<40&&metermove%RECHARGE==0) p2power.w++; }// end while ResetGraph(0); SsSeqStop( seq_access_num ); ///stop playing SsSeqClose( seq_access_num ); // closes seq data SsVabClose( vab_id ); // closes VAB data return(0); }// end main /**************************************************************************/ //AI coding void OnePlayer( void ) { //if player one is directly above p2 if((char1_coord.coord.t[2]>char2_coord.coord.t[2])&& ((char1_coord.coord.t[0]>char2_coord.coord.t[0]-XWIDTH)&&(char1_coord.coord.t[0]char2_coord.coord.t[0])&&((char1_coord.coord.t[2]>char2_coord.coord.t[2]-ZDEPTH)&&(char1_coord.coord.t[2]char2_coord.coord.t[0]-XWIDTH)&&(char1_coord.coord.t[0]char2_coord.coord.t[2]-ZDEPTH)&&(char1_coord.coord.t[2]char2_coord.coord.t[2]+ZDEPTH)&&(char1_coord.coord.t[0]>char2_coord.coord.t[0]+XWIDTH)) char2_vector.vy=2560; //if player one is diagonal down-right if((char1_coord.coord.t[2]char2_coord.coord.t[0]+XWIDTH)) char2_vector.vy=3584; //if player one is diagonal down-left if((char1_coord.coord.t[2]char2_coord.coord.t[2]+ZDEPTH)&&(char1_coord.coord.t[0]char2_coord.coord.t[2]) char2_coord.coord.t[2]+=MOVESPEED; if(char1_coord.coord.t[2]char2_coord.coord.t[0]) char2_coord.coord.t[0]+=MOVESPEED; if(char1_coord.coord.t[0]0) p2power.w--; } if(aicount<50&&aicount>25) { actp2punchr=1; if(p2power.w>0) p2power.w--; } if(aicount<75&&aicount>50) { actp2kickl=1; if(p2power.w>0) p2power.w--; } if(aicount<100&&aicount>75) { actp2kickr=1; if(p2power.w>0) p2power.w--; } if(p1score>p2score) { if(aicount>100&&aicount<130) { actp2punchl=1; if(p2power.w>0) p2power.w--; } } } } void InitAll( void ) { ResetGraph(0); FntLoad(960,256); FntOpen(15-(SCREEN_WIDTH/2),5-(SCREEN_HEIGHT/2), SCREEN_WIDTH, SCREEN_HEIGHT, 0, 512); prev_mode = GetVideoMode(); SetVideoMode( GetVideoMode() ); GsInitGraph( SCREEN_WIDTH, SCREEN_HEIGHT, GsOFSGPU|GsNONINTER, 0, 0 ); GsDefDispBuff( 0, 0, 0, SCREEN_HEIGHT ); GsDISPENV.screen.x = 6; GsDISPENV.screen.y = 16; GsDISPENV.screen.w = 255; GsDISPENV.screen.h = 255; GsInit3D(); wot[0].length = OT_LENGTH; wot[0].org = ot[0]; wot[1].length = OT_LENGTH; wot[1].org = ot[1]; GsClearOt( 0, 0, &wot[out_buf]); GsClearOt( 0, 0, &wot[out_buf+1]); GetPadBuf((volatile u_char**)&buffer1,(volatile u_char**)&buffer2); }// end InitGame int Collision( GsCOORDINATE2 *coord1, GsCOORDINATE2 *coord2 ) { if( (coord1->coord.t[0] > coord2->coord.t[0]-(XWIDTH*2)) && (coord1->coord.t[0] < coord2->coord.t[0]+(2*XWIDTH) ) && (coord1->coord.t[2] > coord2->coord.t[2]-(2*ZDEPTH)) && (coord1->coord.t[2] < coord2->coord.t[2]+(2*ZDEPTH)) ) { return(1); } else { return(0); } } void EnergyBar(void) { p1bar.attribute=(0<<31); p1bar.x=(-149); p1bar.y=(-101); p1bar.w=(80); p1bar.h=(5); p1bar.r=0; p1bar.g=0; p1bar.b=128; p2bar.attribute=(0<<31); p2bar.x=(11); p2bar.y=(-101); p2bar.w=80; p2bar.h=5; p2bar.r=0; p2bar.g=0; p2bar.b=128; } void PowerBar(void) { p1power.attribute=(0<<31); p1power.x=(-129); p1power.y=(-94); p1power.w=(40); p1power.h=5; p1power.r=128; p1power.g=0; p1power.b=0; p2power.attribute=(0<<31); p2power.x=(31); p2power.y=(-94); p2power.w=40; p2power.h=5; p2power.r=128; p2power.g=0; p2power.b=0; } void InitPointer( void ) { GsIMAGE *tim; u_short tpage; tim = (GsIMAGE*)ReadTIM((u_long*)POINTER_DATA); tpage = GetTPage(1,0,tim->px,tim->py); InitSprite( &pointer,(1<<24),-94,5,8,7, tpage,0,0,tim->cx,tim->cy, 0x80,0x80,0x80,0,0,ONE,ONE,0 ); } void InitSprite( GsSPRITE *sprite, u_long attribute, short x, short y, u_short w, u_short h, u_short tpage, u_char u, u_char v, short cx, short cy, u_char r, u_char g, u_char b, short mx, short my, short scalex, short scaley, long rotate ) { sprite->attribute = attribute; sprite->x = x; sprite->y = y; sprite->w = w; sprite->h = h; sprite->tpage = tpage; sprite->u = u; sprite->v = v; sprite->cx = cx; sprite->cy = cy;; sprite->r = r; sprite->g = g; sprite->b = b; sprite->mx = mx; sprite->my = my; sprite->scalex = scalex; sprite->scaley = scaley; sprite->rotate = rotate; }// end InitSprite void UpdateScreen( void ) { GsSetRefView2(&view); out_buf = GsGetActiveBuff(); GsSetWorkBase((PACKET*)gpu_work_area[out_buf]); GsClearOt(0, 0, &wot[out_buf]); SortObject(&level_obj, &wot[out_buf], 4); SortObject(&fightmat_obj,&wot[out_buf],4); SortObject(&char1_obj,&wot[out_buf],4); SortObject(&char2_obj,&wot[out_buf],4); GsSortSprite(&pointer,&wot[out_buf],0); GsSortBoxFill(&p1bar,&wot[out_buf],0); GsSortBoxFill(&p2bar,&wot[out_buf],0); GsSortBoxFill(&p1power,&wot[out_buf],0); GsSortBoxFill(&p2power,&wot[out_buf],0); DrawSync(0); VSync(0); GsSwapDispBuff(); GsSortClear(0x0, 0x0, 0x0, &wot[out_buf]); GsDrawOt(&wot[out_buf]); FntFlush(-1); }// end UpdateScreen void InitTMD( GsDOBJ2 *obj, GsCOORDINATE2 *coord, u_long *addr ) { // header skip addr++; // mapping real address GsMapModelingData(addr); // link ObjectHandler and TMD FORMAT MODELING DATA GsLinkObject4((u_long)(addr+2),obj,0); // init coordinate system of object obj->coord2 = coord; // set translation coord->coord.t[0] = 0; coord->coord.t[1] = 0; coord->coord.t[2] = 0; // clear flag and attributes coord->flg = 0; obj->attribute = 0; }// end InitTMD void UpdateCoordinates( SVECTOR *svec, GsCOORDINATE2 *coord ) { MATRIX tmp; // set translation tmp.t[0] = coord->coord.t[0]; tmp.t[1] = coord->coord.t[1]; tmp.t[2] = coord->coord.t[2]; // rotate Matrix RotMatrix(svec,&tmp); // set Matrix to Coordinate coord->coord = tmp; // clear flag because of changing parameter coord->flg = 0; }// end UpdateCoordinates void SortObject( GsDOBJ2 *obj, GsOT *wot, int shift ) { MATRIX local_world, local_screen; // calculate both local world and local screen matrices GsGetLws(obj->coord2, &local_world, &local_screen); // set LWMATRIX to GTE Lighting Registers GsSetLightMatrix(&local_world); // sSet LSMATRIX to GTE Registers GsSetLsMatrix(&local_screen); // set perspective and light calculations, Z sort and send to OT GsSortObject4(obj, wot, shift, (u_long*)getScratchAddr(0)); }// end SortObject GsIMAGE *ReadTIM( u_long *addr ) { static GsIMAGE tim; RECT rect; // skip id and initialize image structure addr ++; GsGetTimInfo(addr, &tim); // transfer pixel data to VRAM rect.x = tim.px; rect.y = tim.py; rect.w = tim.pw; rect.h = tim.ph; LoadImage(&rect, tim.pixel); DrawSync(0); // check if CLUT exists and transfer it to VRAM if( (tim.pmode >> 3) & 0x01 ) { rect.x = tim.cx; rect.y = tim.cy; rect.w = tim.cw; rect.h = tim.ch; LoadImage(&rect, tim.clut); } DrawSync(0); return(&tim); }// end ReadTIM void InitView( void ) { GsSetProjection(SCRN_Z); // set view point coordinates view.vpx=(-525); view.vpy=(-1250); view.vpz=(-3650); view.vrx=(-525); view.vry=(21575); view.vrz=(0); // set the roll parameter of viewpoint view.rz = 0; // set origin to WORLD view.super = WORLD; GsSetRefView2(&view); }// end InitView void InitLights( void ) { // set first light light[0].vx = 20; light[0].vy = -100; light[0].vz = -100; light[0].r = 0x80; light[0].g = 0x80; light[0].b = 0x80; GsSetFlatLight(0,&light[0]); // set second light light[1].vx = 20; light[1].vy = -50; light[1].vz = 100; light[1].r = 0x80; light[1].g = 0x80; light[1].b = 0x80; GsSetFlatLight(1,&light[1]); // set third light light[2].vx = -20; light[2].vy = 20; light[2].vz = -100; light[2].r = 0x80; light[2].g = 0x80; light[2].b = 0x80; GsSetFlatLight(2,&light[2]); // set RGB ambient lighting GsSetAmbient( ONE/2, ONE/2, ONE/2 ); GsSetLightMode(0); }// end InitLights /**********************/ void CheckAnim( void ) { if(actp1walk==1) { if(!DoMIMe(&walkp1_handle)) { ResetMIMe(&walkp1_handle); actp1walk=0; } } if(actp2walk==1) { if(!DoMIMe(&walkp2_handle)) { ResetMIMe(&walkp2_handle); actp2walk=0; } } if(actp1kickr==1) { if(!DoMIMe(&kickrp1_handle)) { ResetMIMe(&kickrp1_handle); actp1kickr=0; } } if(actp1kickl==1) { if(!DoMIMe(&kicklp1_handle)) { ResetMIMe(&kicklp1_handle); actp1kickl=0; } } if(actp1punchl==1) { if(!DoMIMe(&punchlp1_handle)) { ResetMIMe(&punchlp1_handle); actp1punchl=0; } } if(actp1punchr==1) { if(!DoMIMe(&punchrp1_handle)) { ResetMIMe(&punchrp1_handle); actp1punchr=0; } } if(actp2punchl==1) { if(!DoMIMe(&punchlp2_handle)) { ResetMIMe(&punchlp2_handle); actp2punchl=0; } } if(actp2punchr==1) { if(!DoMIMe(&punchrp2_handle)) { ResetMIMe(&punchrp2_handle); actp2punchr=0; } } if(actp2kickl==1) { if(!DoMIMe(&kicklp2_handle)) { ResetMIMe(&kicklp2_handle); actp2kickl=0; } } if(actp2kickr==1) { if(!DoMIMe(&kickrp2_handle)) { ResetMIMe(&kickrp2_handle); actp2kickr=0; } } /***************************************************/ /***********test player one hits player 2**************/ //if p1 attacks from the top if(((char1_coord.coord.t[2]>char2_coord.coord.t[2])&& ((char1_coord.coord.t[0]>char2_coord.coord.t[0]-XWIDTH)&&(char1_coord.coord.t[0]0) p2bar.w--; } } //if p1 attacks from the right if(((char1_coord.coord.t[0]>char2_coord.coord.t[0])&&((char1_coord.coord.t[2]>char2_coord.coord.t[2]-ZDEPTH)&&(char1_coord.coord.t[2]0) p2bar.w--; } } //if p1 attacks from behind if(((char1_coord.coord.t[2]char2_coord.coord.t[0]-XWIDTH)&&(char1_coord.coord.t[0]0) p2bar.w--; } } //if p1 attacks from the left if(((char1_coord.coord.t[0]char2_coord.coord.t[2]-ZDEPTH)&&(char1_coord.coord.t[2]0) p2bar.w--; } } //if p1 attacks from diagonal up-right if(((char1_coord.coord.t[2]>char2_coord.coord.t[2]+ZDEPTH)&&(char1_coord.coord.t[0]>char2_coord.coord.t[0]+XWIDTH))&&(Collision(&char1_coord,&char2_coord))) { if(char1_vector.vy==512&&((actp1kickr==1)||(actp1kickl==1)||(actp1punchl==1)||(actp1punchr==1))) { if(p1power.w>0) p2bar.w--; } } //if p1 attacks from diagonal down-right if(((char1_coord.coord.t[2]char2_coord.coord.t[0]+XWIDTH))&&(Collision(&char1_coord,&char2_coord))) { if(char1_vector.vy==1536&&((actp1kickr==1)||(actp1kickl==1)||(actp1punchl==1)||(actp1punchr==1))) { if(p1power.w>0) p2bar.w--; } } //if p1 attacks from diagonal down-left if(((char1_coord.coord.t[2]0) p2bar.w--; } } //if p1 attacks from diagonal up-left if(((char1_coord.coord.t[2]>char2_coord.coord.t[2]+ZDEPTH)&&(char1_coord.coord.t[0]0) p2bar.w--; } } /***********test player two hits player one**************/ //if p2 attacks from the top if(((char2_coord.coord.t[2]>char1_coord.coord.t[2])&& ((char2_coord.coord.t[0]>char1_coord.coord.t[0]-XWIDTH)&&(char2_coord.coord.t[0]0) p1bar.w--; } } //if p2 attacks from the right if(((char2_coord.coord.t[0]>char1_coord.coord.t[0])&&((char2_coord.coord.t[2]>char1_coord.coord.t[2]-ZDEPTH)&&(char2_coord.coord.t[2]0) p1bar.w--; } } //if p2 attacks from behind if(((char2_coord.coord.t[2]char1_coord.coord.t[0]-XWIDTH)&&(char2_coord.coord.t[0]0) p1bar.w--; } } //if p2 attacks from the left if(((char2_coord.coord.t[0]char1_coord.coord.t[2]-ZDEPTH)&&(char2_coord.coord.t[2]0) p1bar.w--; } } //if p2 attacks from diagonal up-right if(((char2_coord.coord.t[2]>char1_coord.coord.t[2]+ZDEPTH)&&(char2_coord.coord.t[0]>char1_coord.coord.t[0]+XWIDTH))&&(Collision(&char1_coord,&char2_coord))) { if(char2_vector.vy==512&&((actp2kickr==1)||(actp2kickl==1)||(actp2punchl==1)||(actp2punchr==1))) { if(p2power.w>0) p1bar.w--; } } //if p2 attacks from diagonal down-right if(((char2_coord.coord.t[2]char1_coord.coord.t[0]+XWIDTH))&&(Collision(&char1_coord,&char2_coord))) { if(char2_vector.vy==1536&&((actp2kickr==1)||(actp2kickl==1)||(actp2punchl==1)||(actp2punchr==1))) { if(p2power.w>0) p1bar.w--; } } //if p2 attacks from diagonal down-left if(((char2_coord.coord.t[2]0) p1bar.w--; } } //if p2 attacks from diagonal up-left if(((char2_coord.coord.t[2]>char1_coord.coord.t[2]+ZDEPTH)&&(char2_coord.coord.t[0]0) p1bar.w--; } } } /**************************/ void Intro( void ) { FntPrint("\n\n\t\tTOKUI WAZA\t\t"); FntPrint("\n\n\t\t~c711Release 1~c711\n\n"); FntPrint("\n\n\t\t~c117By: Omar Metwally~c117"); FntPrint("\n\n\n\n\n\n\n\t\t~c9991-Player~c999"); FntPrint("\n\n\t\t2-Player VS"); FntPrint("\n\n\t\tView Intro"); if(PAD_PRESS(buffer1,PAD_LU)) pause++; if(PAD_PRESS(buffer1,PAD_LD)) pause--; if((!PAD_PRESS(buffer1,PAD_LU))&&(!PAD_PRESS(buffer1,PAD_LD))) pause=0; if(pause==22) pause=0; if(pause==(-22)) pause=0; if(pointer.y==5) select=0; if(pointer.y==21) select=1; if(pointer.y==37) select=2; if(pause==-1||pause==-11||pause==-21) { if(select==0) { pointer.y=21; } if(select==1) { pointer.y=37; } if(select==2) { pointer.y=5; } } if(pause==1||pause==11||pause==21) { if(select==0) { pointer.y=37; } if(select==1) { pointer.y=5; } if(select==2) { pointer.y=21; } } if((PAD_PRESS(buffer1,PAD_RD))&&select==0) { gamemode=2; wait=0; pointer.attribute=(1<<31); view.vpx=(-573); //-525 view.vpy=(-6550);//-7375 view.vpz=(-5075);//-3650 view.vrx=(-450);//-525 view.vry=(46625);//21775 view.vrz=(16550);//0 EnergyBar(); PowerBar(); } if((PAD_PRESS(buffer1,PAD_RD))&&select==1) { gamemode=3; wait=0; pointer.attribute=(1<<31); view.vpx=(-573); //-525 view.vpy=(-6550);//-7375 view.vpz=(-5075);//-3650 view.vrx=(-450);//-525 view.vry=(46625);//21775 view.vrz=(16550);//0 EnergyBar(); PowerBar(); } if((PAD_PRESS(buffer1,PAD_RD))&&select==2) { gamemode=1; wait=0; pointer.attribute=(1<<31); view.vpx=(-3575); //-3575 view.vpy=(-2975); //-2975 view.vpz=(-7150); //-7150 view.vrx=(-525); //-525 view.vry=(12850); //12850 view.vrz=(34825); //34825 } } /*********************************/ void Cam( void ) { static int count=0; static int left=0; static int right=0; FntPrint("\n\t\t\t~c911Demo~c911"); FntPrint("\n\n\n\n\n\n\n\n\t\t~c999Press Select...~c999"); if(PAD_PRESS(buffer1,PAD_SELECT) ) { gamemode=0; view.vpx=(-525); view.vpy=(-1250); view.vpz=(-3650); view.vrx=(-525); view.vry=(21575); view.vrz=(0); pointer.attribute=(0<<31); } count++; if(count>1000) count=0; if(((count*0)==CAMMOVE)&&(left==1)) { view.vpx+=2; } if(view.vpx==1450) { left=0; right=1; } if(view.vpx==(-3575)) { left=1; right=0; } if(((count*0)==CAMMOVE)&&(right==1)) view.vpx-=2; } /***************************************************************/ void ControlObject( void ) { #ifdef MOVEMENT if( PAD_PRESS(buffer1,PAD_LL) ) char1_coord.coord.t[0]-=5; if( PAD_PRESS(buffer1,PAD_LR) ) char1_coord.coord.t[0]+=5; if( PAD_PRESS(buffer1,PAD_LU) ) char1_coord.coord.t[1]-=5; if( PAD_PRESS(buffer1,PAD_LD) ) char1_coord.coord.t[1]+=5; if( PAD_PRESS(buffer1,PAD_L1) ) char1_coord.coord.t[2]-=5; if( PAD_PRESS(buffer1,PAD_L2) ) char1_coord.coord.t[2]+=5; if( PAD_PRESS(buffer1,PAD_RR) ) char2_coord.coord.t[0]+=5; if( PAD_PRESS(buffer1,PAD_RL) ) char2_coord.coord.t[0]-=5; if( PAD_PRESS(buffer1,PAD_RU) ) char2_coord.coord.t[1]-=5; if( PAD_PRESS(buffer1,PAD_RD) ) char2_coord.coord.t[1]+=5; if( PAD_PRESS(buffer1,PAD_R1) ) char2_coord.coord.t[2]-=5; if( PAD_PRESS(buffer1,PAD_R2) ) char2_coord.coord.t[2]+=5; if( PAD_PRESS(buffer2,PAD_L1) ) view.vpz-=25; if( PAD_PRESS(buffer2,PAD_L2) ) view.vpz+=25; if( PAD_PRESS(buffer2,PAD_LL) ) view.vpx-=25; if( PAD_PRESS(buffer2,PAD_LR) ) view.vpx+=25; if( PAD_PRESS(buffer2,PAD_LU) ) view.vpy-=25; if( PAD_PRESS(buffer2,PAD_LD) ) view.vpy+=25; if( PAD_PRESS(buffer2,PAD_R1) ) view.vrz-=25; if( PAD_PRESS(buffer2,PAD_R2) ) view.vrz+=25; if( PAD_PRESS(buffer2,PAD_RL) ) view.vrx-=25; if( PAD_PRESS(buffer2,PAD_RR) ) view.vrx+=25; if( PAD_PRESS(buffer2,PAD_RU) ) view.vry-=25; if( PAD_PRESS(buffer2,PAD_RD) ) view.vry+=25; #endif #ifdef PLAY /******PLAYER 1****/ if( PAD_PRESS(buffer1,PAD_LL) ) { sensep1x=(-1); } if( PAD_PRESS(buffer1,PAD_LR) ) { sensep1x=(1); } if( PAD_PRESS(buffer1,PAD_LD) ) { sensep1y=1; } if( PAD_PRESS(buffer1,PAD_LU) ) { sensep1y=(-1); } if((!PAD_PRESS(buffer1,PAD_LR) )&&(!PAD_PRESS(buffer1,PAD_LL)) ) sensep1x=0; if((!PAD_PRESS(buffer1,PAD_LU) )&&(!PAD_PRESS(buffer1,PAD_LD)) ) sensep1y=0; if(PAD_PRESS(buffer1,PAD_RR)) { actp1walk=0; actp1kickl=0; actp1punchr=0; actp1punchl=0; //ResetMIMe(&walkp1_handle); actp1kickr=1; if(p1power.w>0) p1power.w--; } if(PAD_PRESS(buffer1,PAD_RD)) { actp1walk=0; actp1kickr=0; actp1punchl=0; actp1punchr=0; //ResetMIMe(&walkp1_handle); actp1kickl=1; if(p1power.w>0) p1power.w--; } if(PAD_PRESS(buffer1,PAD_RL)) { actp1walk=0; actp1punchr=0; actp1kickl=0; actp1kickr=0; //ResetMIMe(&walkp1_handle); actp1punchl=1; if(p1power.w>0) p1power.w--; } if(PAD_PRESS(buffer1,PAD_RU)) { actp1walk=0; actp1punchl=0; actp1kickr=0; actp1kickl=0; //ResetMIMe(&walkp1_handle); actp1punchr=1; if(p1power.w>0) p1power.w--; } /************************************************/ if( (sensep1x==0 ) && (sensep1y==1 ) ) { char1_vector.vy=0; if(actp1kickl==0&&actp1kickr==0&&actp1punchr==0&&actp1punchl==0) actp1walk=1; if((Collision(&char1_coord,&char2_coord))&&(char1_coord.coord.t[2]>char2_coord.coord.t[2])) actp1walk=0; if(char1_coord.coord.t[2]<=(-3900)) actp1walk=0; if(actp1walk==1) { char1_coord.coord.t[2]-=PLAYMOVE; } } if( (sensep1x==(-1) ) && (sensep1y==1 ) ) { char1_vector.vy=512; if(actp1kickl==0&&actp1kickr==0&&actp1punchr==0&&actp1punchl==0) actp1walk=1; if((Collision(&char1_coord,&char2_coord))&&((char1_coord.coord.t[2]>char2_coord.coord.t[2])||(char1_coord.coord.t[0]>char2_coord.coord.t[0]))) actp1walk=0; if(char1_coord.coord.t[2]<=(-3900)) actp1walk=0; if(char1_coord.coord.t[0]<=(-1770)) actp1walk=0; if(actp1walk==1) { char1_coord.coord.t[2]-=PLAYMOVE; char1_coord.coord.t[0]-=PLAYMOVE; } } if( (sensep1x==(-1) ) && (sensep1y==0 ) ) { char1_vector.vy=1024; if(actp1kickl==0&&actp1kickr==0&&actp1punchr==0&&actp1punchl==0) actp1walk=1; if((Collision(&char1_coord,&char2_coord))&&(char1_coord.coord.t[0]>char2_coord.coord.t[0])) actp1walk=0; if(char1_coord.coord.t[0]<=(-1770)) actp1walk=0; if(actp1walk==1) char1_coord.coord.t[0]-=PLAYMOVE; } if( (sensep1x==(-1) ) && (sensep1y==(-1) ) ) { char1_vector.vy=1536; if(actp1kickl==0&&actp1kickr==0&&actp1punchr==0&&actp1punchl==0) actp1walk=1; if((Collision(&char1_coord,&char2_coord))&&((char1_coord.coord.t[2]char2_coord.coord.t[0]))) actp1walk=0; if(char1_coord.coord.t[0]<=(-1770)) actp1walk=0; if(char1_coord.coord.t[2]>=(-1705)) actp1walk=0; if(actp1walk==1) { char1_coord.coord.t[2]+=PLAYMOVE; char1_coord.coord.t[0]-=PLAYMOVE; } } if( (sensep1x==0 ) && (sensep1y==(-1) ) ) { char1_vector.vy=2048; if(actp1kickl==0&&actp1kickr==0&&actp1punchr==0&&actp1punchl==0) actp1walk=1; if((Collision(&char1_coord,&char2_coord))&&(char1_coord.coord.t[2]=(-1705)) actp1walk=0; if(actp1walk==1) char1_coord.coord.t[2]+=PLAYMOVE; } if( (sensep1x==1 ) && (sensep1y==(-1) ) ) { char1_vector.vy=2560; if(actp1kickl==0&&actp1kickr==0&&actp1punchr==0&&actp1punchl==0) actp1walk=1; if((Collision(&char1_coord,&char2_coord))&&((char1_coord.coord.t[2]=(-1705)) actp1walk=0; if(char1_coord.coord.t[0]>=640) actp1walk=0; if(actp1walk==1) { char1_coord.coord.t[2]+=PLAYMOVE; char1_coord.coord.t[0]+=PLAYMOVE; } } if( (sensep1x==1 ) && (sensep1y==0 ) ) { char1_vector.vy=3072; if(actp1kickl==0&&actp1kickr==0&&actp1punchr==0&&actp1punchl==0) actp1walk=1; if((Collision(&char1_coord,&char2_coord))&&(char1_coord.coord.t[0]=640) actp1walk=0; if(actp1walk==1) char1_coord.coord.t[0]+=PLAYMOVE; } if( (sensep1x==1 ) && (sensep1y==1 ) ) { char1_vector.vy=3584; if(actp1kickl==0&&actp1kickr==0&&actp1punchr==0&&actp1punchl==0) actp1walk=1; if((Collision(&char1_coord,&char2_coord))&&((char1_coord.coord.t[2]>char2_coord.coord.t[2])||(char1_coord.coord.t[0]=640) actp1walk=0; if(char1_coord.coord.t[2]<=(-3900)) actp1walk=0; if(actp1walk==1) { char1_coord.coord.t[2]-=PLAYMOVE; char1_coord.coord.t[0]+=PLAYMOVE; } } /************* PLAYER 2 ***************/ if( PAD_PRESS(buffer2,PAD_LL) ) { sensep2x=(-1); } if( PAD_PRESS(buffer2,PAD_LR) ) { sensep2x=(1); } if( PAD_PRESS(buffer2,PAD_LD) ) { sensep2y=1; } if( PAD_PRESS(buffer2,PAD_LU) ) { sensep2y=(-1); } if((!PAD_PRESS(buffer2,PAD_LR) )&&(!PAD_PRESS(buffer2,PAD_LL)) ) sensep2x=0; if((!PAD_PRESS(buffer2,PAD_LU) )&&(!PAD_PRESS(buffer2,PAD_LD)) ) sensep2y=0; if(PAD_PRESS(buffer2,PAD_RR)) { actp2walk=0; actp2kickl=0; actp2punchr=0; actp2punchl=0; actp2kickr=1; if(p2power.w>0) p2power.w--; } if(PAD_PRESS(buffer2,PAD_RD)) { actp2kickl=1; actp2walk=0; actp2kickr=0; actp2punchl=0; actp2punchr=0; if(p2power.w>0) p2power.w--; } if(PAD_PRESS(buffer2,PAD_RL)) { actp2walk=0; actp2punchr=0; actp2kickl=0; actp2kickr=0; actp2punchl=1; if(p2power.w>0) p2power.w--; } if(PAD_PRESS(buffer2,PAD_RU)) { actp2walk=0; actp2punchl=0; actp2kickr=0; actp2kickl=0; actp2punchr=1; if(p2power.w>0) p2power.w--; } /************************************************/ if( (sensep2x==0 ) && (sensep2y==1 ) ) { char2_vector.vy=0; if(actp2kickl==0&&actp2kickr==0&&actp2punchl==0&&actp2punchr==0) actp2walk=1; if((Collision(&char2_coord,&char1_coord))&&(char2_coord.coord.t[2]>char1_coord.coord.t[2])) actp2walk=0; if(char2_coord.coord.t[2]<=(-3900)) actp2walk=0; if( actp2walk==1) { char2_coord.coord.t[2]-=PLAYMOVE; } } if( (sensep2x==(-1) ) && (sensep2y==1 ) ) { char2_vector.vy=512; if(actp2kickl==0&&actp2kickr==0&&actp2punchl==0&&actp2punchr==0) actp2walk=1; if((Collision(&char2_coord,&char1_coord))&&((char2_coord.coord.t[0]>char1_coord.coord.t[0])||(char2_coord.coord.t[2]>char1_coord.coord.t[2]))) actp2walk=0; if(char2_coord.coord.t[2]<=(-3900)) actp2walk=0; if(char2_coord.coord.t[0]<=(-1770)) actp2walk=0; if(actp2walk==1) { char2_coord.coord.t[2]-=PLAYMOVE; char2_coord.coord.t[0]-=PLAYMOVE; } } if( (sensep2x==(-1) ) && (sensep2y==0 ) ) { char2_vector.vy=1024; if(actp2kickl==0&&actp2kickr==0&&actp2punchl==0&&actp2punchr==0) actp2walk=1; if((Collision(&char2_coord,&char1_coord))&&(char2_coord.coord.t[0]>char1_coord.coord.t[0])) actp2walk=0; if(char2_coord.coord.t[0]<=(-1770)) actp2walk=0; if(actp2walk==1) char2_coord.coord.t[0]-=PLAYMOVE; } if( (sensep2x==(-1) ) && (sensep2y==(-1) ) ) { char2_vector.vy=1536; if(actp2kickl==0&&actp2kickr==0&&actp2punchl==0&&actp2punchr==0) actp2walk=1; if((Collision(&char2_coord,&char1_coord))&&((char2_coord.coord.t[2]char1_coord.coord.t[0]))) actp2walk=0; if(char2_coord.coord.t[0]<=(-1770)) actp2walk=0; if(char2_coord.coord.t[2]>=(-1705)) actp2walk=0; if(actp2walk==1) { char2_coord.coord.t[2]+=PLAYMOVE; char2_coord.coord.t[0]-=PLAYMOVE; } } if( (sensep2x==0 ) && (sensep2y==(-1) ) ) { char2_vector.vy=2048; if(actp2kickl==0&&actp2kickr==0&&actp2punchl==0&&actp2punchr==0) actp2walk=1; if((Collision(&char2_coord,&char1_coord))&&(char2_coord.coord.t[2]=(-1705)) actp2walk=0; if(actp2walk==1) char2_coord.coord.t[2]+=PLAYMOVE; } if( (sensep2x==1 ) && (sensep2y==(-1) ) ) { char2_vector.vy=2560; if(actp2kickl==0&&actp2kickr==0&&actp2punchl==0&&actp2punchr==0) actp2walk=1; if((Collision(&char2_coord,&char1_coord))&&((char2_coord.coord.t[2]=(-1705)) actp2walk=0; if(char2_coord.coord.t[0]>=640) actp2walk=0; if(actp2walk==1) { char2_coord.coord.t[2]+=PLAYMOVE; char2_coord.coord.t[0]+=PLAYMOVE; } } if( (sensep2x==1 ) && (sensep2y==0 ) ) { char2_vector.vy=3072; if(actp2kickl==0&&actp2kickr==0&&actp2punchl==0&&actp2punchr==0) actp2walk=1; if((Collision(&char2_coord,&char1_coord))&&(char2_coord.coord.t[0]=640) actp2walk=0; if(actp2walk==1) char2_coord.coord.t[0]+=PLAYMOVE; } if( (sensep2x==1 ) && (sensep2y==1 ) ) { char2_vector.vy=3584; if(actp2kickl==0&&actp2kickr==0&&actp2punchl==0&&actp2punchr==0) actp2walk=1; if((Collision(&char2_coord,&char1_coord))&&((char2_coord.coord.t[2]>char1_coord.coord.t[2])||(char2_coord.coord.t[0]=640) actp2walk=0; if(char2_coord.coord.t[2]<=(-3900)) actp2walk=0; if(actp2walk==1) { char2_coord.coord.t[2]-=PLAYMOVE; char2_coord.coord.t[0]+=PLAYMOVE; } } /************** QUIT TO MAIN MENU **************************/ if((PAD_PRESS(buffer1,PAD_SELECT))||(PAD_PRESS(buffer2,PAD_SELECT))) { p1score=0; p2score=0; gamemode=0; p1bar.attribute=(1<<31); p2bar.attribute=(1<<31); p1power.attribute=(1<<31); p2power.attribute=(1<<31); pointer.attribute=(0<<31); view.vpx=(-525); view.vpy=(-1250); view.vpz=(-3650); view.vrx=(-525); view.vry=(21575); view.vrz=(0); char1_coord.coord.t[0]=(-1520); char1_coord.coord.t[1]=(-1495); char1_coord.coord.t[2]=(-3655); char2_coord.coord.t[0]=(410); char2_coord.coord.t[1]=(-1495); char2_coord.coord.t[2]=(-1870); char1_vector.vy=0; char2_vector.vy=0; } /**************************************************************/ #endif #ifdef METER if(PAD_PRESS(buffer1,PAD_LL)) p1power.x--; if(PAD_PRESS(buffer1,PAD_LR)) p1power.x++; if(PAD_PRESS(buffer1,PAD_LU)) p1power.y--; if(PAD_PRESS(buffer1,PAD_LD)) p1power.y++; #endif }// end ControlObject