// #define GTC_ONCALC //undo this line if with GCC4TI #define MIN_AMS 200 #include #ifdef GTC_ONCALC long al(long a) {return a;} long mu(long a,long b) {return a*b;} long di(long a,long b) {return a/b;} #else #define al(a) (a) #define mu(a,b) (a)*(b) #define di(a,b) (a)/(b) #endif #define WITH_GRAPHH WINDOW wind; unsigned char is_interh; unsigned char *lcdad; unsigned char gmode; INT_HANDLER OldInt5 = NULL; long ir; long var2,var5,var8,var9,var11,var12,var18,var20,var21,var23,var24,var25,var26,var28,var29,var30,var32,var34,var36,var39,var40,var41,var42,var43,var44,var45,var46,var48,var52,var54,var56,var58,var60,var61,var62,var63; char *psb1,*psb10,*psb51,*psb59; int psw3[]={40,100,300,1200}; int psw4[]={36,11,9,7,6,5,4,3,2,1}; char psb6[]={31,31,27,31,31,31,31,31,31,31}; char psb7[]={0,0,0,1,0,2,0,3,0,0,1,0,1,1,2,1,0,1,1,1,1,0,2,0,0,0,1,0,1,1,1,2,0,0,1,0,0,1,0,2,255,0,0,0,1,0,0,1,0,0,1,0,1,1,0,1}; char psb13[]={0,0,0,0}; char psb14[]={0,0,0,0}; char psb38[]={0,255,1,254,2}; char psb50[]={0,13,0,0,0,0,0,0,0,0,0,0,0,0,248}; long fc1(),fc2(),fc3(),fc4(),fc5(),fc6(),fc7(),fc8(),fc9(),fc10(),fc11(),fc12(),fc13(),fc14(),fc15(); long fiy0(void),fiy1(void); #include #include #include #ifdef WITH_GRAPHH #ifdef GTC_ONCALC #include #else #include #endif #endif #include #include #include #include long fiy0(void) { if(var9) { free(var9); } } long fiy1(void) { if(psb59) { free(psb59); } } long fc1() { fiy0(); f_keydisp_(); execbas(basicfh1); f_finish_(0); } long fc2() { f_clrscr_(lcdad); for(var12=0;var12!=((20)-(1)+1);var12+=1) { for(var11=0;var11!=((var2)-(1)+1);var11+=1) { if((psb10[(var11)+(mu(var12,var2))])!=(0)) { f_sprt8_(al((mu(var11,5))+(75)),al(mu(var12,5)),5,(unsigned char*)(psb6),gmode,lcdad); } } } } long fc3() { for(var18=0;var18!=((4)-(1)+1);var18+=1) { f_sprt8_(al(((psb13[var18])*(5))+(75)),al((psb14[var18])*(5)),5,(unsigned char*)(psb6),gmode,lcdad); } } long fc4() { FontSetSys(1); printf_xy(4,50,"Score:%ld",(long)var20); printf_xy(4,65,"Level:%ld",(long)var5); printf_xy(4,75,"Best:%ld",(long)var21); printf_xy(4,85,"%s",(long)psb1); } long fc5() { fc4(); var23=(long)(var24); var24=(long)(random(var8)); (gmode=1); f_fillrect_(0,0,50,50,gmode,lcdad); (gmode=2); for(var18=0;var18!=((4)-(1)+1);var18+=1) { var25=(long)(psb7[(mu(8,var24))+(mu(2,var18))]); var26=(long)(psb7[((mu(8,var24))+(mu(2,var18)))+(1)]); f_sprt8_(al((30)+(mu(5,var25))),al((20)+(mu(5,var26))),5,(unsigned char*)(psb6),gmode,lcdad); } for(var18=0;var18!=((4)-(1)+1);var18+=1) { psb13[var18]=(char)((psb7[(mu(8,var23))+(mu(2,var18))])+(di(var2,2))); psb14[var18]=(char)(psb7[((mu(8,var23))+(mu(2,var18)))+(1)]); } fc3(); for(var18=0;var18!=((4)-(1)+1);var18+=1) { if((psb10[(psb13[var18])+(mu(var2,psb14[var18]))])!=(0)) { return 1; } } fc4(); return 0; } long fc6() { var28=(long)(0); var29=(long)(0); for(var18=0;var18!=((19)-(1)+1);var18+=1) { var30=(long)(1); for(var11=1;var11!=((var2)-(2)+1);var11+=1) { var30=(long)(mu(psb10[(var11)+(mu(var2,var18))],var30)); } if(((long)(var30))==((long)(1))) { var29=(long)(1); (++((var28))); memmove((psb10)+(var2),psb10,mu(var2,var18)); psb10[0]=(char)(9); psb10[(var2)-(1)]=(char)(9); for(var11=1;var11!=((var2)-(2)+1);var11+=1) { for(ir=0;ir<1;ir++) f_sprt8_(al((mu(var11,5))+(75)),al(mu(var18,5)),5,(unsigned char*)(psb6),gmode,lcdad); ; } } } if(var29) { fc2(); var20=(long)((var20)+(mu(psw3[(var28)-(1)],var5))); } } long fc7() { var32=(long)(0); for(var18=0;var18!=((4)-(1)+1);var18+=1) { if((psb10[(psb13[var18])+(mu(var2,(psb14[var18])+(1)))])!=(0)) { var32=(long)(1); } } if(((long)(var32))==((long)(0))) { fc3(); for(var18=0;var18!=((4)-(1)+1);var18+=1) { psb14[var18]=(char)((psb14[var18])+(1)); } fc3(); } else { for(var18=0;var18!=((4)-(1)+1);var18+=1) { psb10[(psb13[var18])+(mu(var2,psb14[var18]))]=(char)(1); } fc6(); return fc5(); } return 0; } long fc8() { var34=(long)(0); for(var18=0;var18!=((4)-(1)+1);var18+=1) { if((psb10[((psb13[var18])-(1))+(mu(var2,psb14[var18]))])!=(0)) { var34=(long)(1); } } if(((long)(var34))==((long)(0))) { fc3(); for(var18=0;var18!=((4)-(1)+1);var18+=1) { psb13[var18]=(char)((psb13[var18])-(1)); } fc3(); } else { } } long fc9() { var36=(long)(0); for(var18=0;var18!=((4)-(1)+1);var18+=1) { if((psb10[((psb13[var18])+(1))+(mu(var2,psb14[var18]))])!=(0)) { var36=(long)(1); } } if(((long)(var36))==((long)(0))) { fc3(); for(var18=0;var18!=((4)-(1)+1);var18+=1) { psb13[var18]=(char)((psb13[var18])+(1)); } fc3(); } else { } } long fc10() { for(var39=0;var39!=(4+1);var39+=1) { var40=(long)(0); var41=(long)(psb13[2]); var42=(long)(psb14[2]); for(var43=0;var43!=((4)-(1)+1);var43+=1) { var44=(long)(psb13[var43]); var45=(long)(psb14[var43]); if((psb10[((((var45)-(var42))+(var41))+(psb38[var39]))+(mu(var2,((var41)-(var44))+(var42)))])!=(0)) { var40=(long)(1); } } if(((long)(var40))==((long)(0))) { fc3(); for(var18=0;var18!=((4)-(1)+1);var18+=1) { var46=(long)(psb13[var18]); psb13[var18]=(char)(((psb14[var18])-(psb14[2]))+(psb13[2])); psb14[var18]=(char)(((psb13[2])-(var46))+(psb14[2])); } for(var18=0;var18!=((4)-(1)+1);var18+=1) { psb13[var18]=(char)((psb13[var18])+(psb38[var39])); } fc3(); return 1; } } } long fc11() { var32=(long)(0); fc3(); var32=(long)(0); var48=(long)(0); var23=(long)(random(var8)); while(((long)(var32))==((long)(0))) { for(var18=0;var18!=((4)-(1)+1);var18+=1) { if((psb10[(psb13[var18])+(mu(var2,(psb14[var18])+(var48)))])!=(0)) { var32=(long)(1); } } (++((var48))); } (--((var48))); for(var18=0;var18!=((4)-(1)+1);var18+=1) { psb14[var18]=(char)(((psb14[var18])+(var48))-(1)); } for(var18=0;var18!=((4)-(1)+1);var18+=1) { psb10[(psb13[var18])+(mu(var2,psb14[var18]))]=(char)(1); } fc3(); fc6(); fc5(); } long fc12() { OSFreeTimer(6); OSFreeTimer(5); FontSetSys(2); for(ir=0;ir<240;ir++) f_lscroll_((char*)(100),lcdad); ; f_drawstr_(0,25,(char*)("GAME OVER"),gmode); fc4(); for(ir=0;ir<50;ir++) f_rscroll_((char*)(100),lcdad); ; gkey(); f_keywait_(); var18=(long)(isarchi("tethsc")); if(((long)(var18))==((long)(-1))) { if(((long)(f_fcreate_((char*)(psb50),(char*)("tethsc"))))==((long)(0))) { f_pause_("Mem error"); fc1(); } } if(((long)(var18))==((long)(1))) { if(((long)(unarchiv("tethsc")))==((long)(0))) { f_pause_("Mem error"); fc1(); } } psb51=(char*)(f_fopen_((char*)("tethsc"))); if(((long)(psb51))==((long)(0))) { f_pause_("Mem error"); fc1(); } if(((unsigned int)(((int*)((psb51)+(2)))[0]))<(var20)) { *((int*)((long)(psb51)+(2)+(long)(2*0)))=var20; var52=(long)((psb51)+(4)); toos_indir("hscnamez",var52); execbas(basicfh2); var52=(long)(tios("hscnamez")); strcpy((psb51)+(4),var52); } f_fcreate_((char*)(psb51),(char*)("tethsc")); free(psb51); if(((long)(archiv("tethsc")))==((long)(0))) { f_pause_("Mem error"); fc1(); } fc1(); } long fc13() { if((_keytest(RR_LEFT)&_keytest(RR_LEFT))) { var54=(long)(1); } else { var54=(long)(0); } } long fc14() { if((_keytest(RR_RIGHT)&_keytest(RR_RIGHT))) { var56=(long)(1); } else { var56=(long)(0); } } long fc15() { if((_keytest(RR_DOWN)&_keytest(RR_DOWN))) { var58=(long)(1); } else { var58=(long)(0); } } void _main(void) { kbhit(); is_interh=1; init_inter(); OldInt5=GetIntVec(AUTO_INT_5); SetIntVec(AUTO_INT_5,MyInt5); init_save_load_scr(); #ifdef GTC_ONCALC #ifdef WITH_GRAPHH loadasm(); #endif #endif lcdad=0x4C00; gmode=0; kbq=kbd_queue (); randomize(); execbas(basicfh0); if(((long)(tios("vvxyz")))==((long)(3))) { f_finish_(0); } var2=(long)(((tios("nbcol"))+(5))+(2)); var5=(long)(tios("vvlvl")); var8=(long)(7); var9=(long)(malloc(mu(var2,((20)+(1))+(5)))); if(((long)(var9))==((long)(0))) { f_pause_("Memory missing"); f_finish_(0); } memset(var9,0,mu(var2,((20)+(1))+(5))); psb10=(char*)((var9)+(mu(4,var2))); f_clrscr_(lcdad); (gmode=2); for(var11=0;var11!=((var2)-(1)+1);var11+=1) { psb10[(var11)+(mu(19,var2))]=(char)(9); } for(var12=0;var12!=((20)-(2)+1);var12+=1) { psb10[(0)+(mu(var12,var2))]=(char)(9); psb10[((var2)-(1))+(mu(var12,var2))]=(char)(9); } f_inter_(5,2); f_inter_(6,1); psb1="No. name"; if(((long)(isarchi("tethsc")))==((long)(-1))) { var21=(long)(0); } else { psb59=(char*)(f_fopen_((char*)("tethsc"))); var21=(long)(((int*)((psb59)+(2)))[0]); strcpy(psb1,(psb59)+(4)); fiy1(); } fc2(); fc5(); f_settimer_(6,psw4[(var5)-(1)]); f_settimer_(5,18*30); while(1) { if((_keytest(RR_ESC)&_keytest(RR_ESC))) { var60=(long)(OSTimerCurVal(4)); f_savescr_(1,lcdad); f_clrscr_(lcdad); FontSetSys(2); f_drawstr_(50,35,(char*)("PAUSE"),gmode); f_drawstr_(30,50,(char*)("Enter to return"),gmode); f_drawstr_(30,65,(char*)("Esc to exit"),gmode); gkey(); var61=(long)(f_keywait_()); if(((long)(var61))==((long)(264))) { fc1(); } f_settimer_(5,var60); f_loadscr_(1,lcdad); } if(var54) { var54=(long)(0); fc8(); } if(var56) { var56=(long)(0); fc9(); } if(var58) { var58=(long)(0); fc7(); } if((_keytest(RR_SHIFT)&_keytest(RR_SHIFT))) { if(((long)(var62))==((long)(0))) { fc11(); var62=(long)(1); } } else { var62=(long)(0); } if((_keytest(RR_2ND)&_keytest(RR_2ND))) { if(((long)(var63))==((long)(0))) { fc10(); var63=(long)(1); } } else { var63=(long)(0); } if(OSTimerExpired(6)) { if(((long)(fc7()))==((long)(1))) { fc12(); } f_settimer_(6,psw4[(var5)-(1)]); } if(OSTimerExpired(5)) { if((var5)<(10)) { (++((var5))); fc4(); f_settimer_(6,psw4[(var5)-(1)]); f_settimer_(5,18*30); } } } fc12(); f_finish_(0); }