'VECTOR TESTS REM WAS8BIT RANDOMIZE TIMER PAUSE OFF RESET: CLS IMAX=10+INT(RND*75) GRAV=0.0 LIFT=0.1 BUMP=0.05 PI2=PI*2 BXC=64 BYC=64 BV=1 BA=RND*PI*2 GOSUB UPDATE GAMEPAD 1 FOR I=1 TO 2 FOR CI=2 TO 9 REM CELL RND(19),RND(15),CI NEXT CI NEXT I FOR I=6 TO 10 SPRITE I,,,1 NEXT I GLOBAL SA,XSA,YSA CALL SPINNER DO BXC=BXC+BDX BYC=BYC+BDY BDY=BDY+GRAV IF BDY>1 THEN BDY=1 SPRITE 1,BXC,BYC,1 IF BYC<0 THEN BDY=ABS(BDY) GOSUB ADJUST END IF IF BXC<0 THEN BDX=ABS(BDX) GOSUB ADJUST END IF IF BYC+8>128 THEN BDY=-ABS(BDY*0.9) GOSUB ADJUST END IF IF BXC+8>160 THEN BDX=-ABS(BDX) GOSUB ADJUST END IF IF UP(0) AND BYC>0 THEN CALL BOUNCE(0,BDY,0,-1) IF DOWN(0) AND BYC<120 THEN CALL BOUNCE(0,BDY,0,1) IF LEFT(0) AND BXC>0 THEN CALL BOUNCE(BDX,0,-1,0) IF RIGHT(0) AND BXC<152 THEN CALL BOUNCE(BDX,0,1,0) CH=CELL.C((BXC+4)\8,(BYC+4)\8) IF CH>=2 AND CH<=9 THEN IF CH=2 THEN CALL BOUNCE(0,BDY,0,-0.1) IF CH=3 THEN CALL BOUNCE(BDX,0,0.1,0) IF CH=4 THEN CALL BOUNCE(0,BDY,0,0.1) IF CH=5 THEN CALL BOUNCE(BDX,0,-0.1,0) IF CH=6 THEN CALL BOUNCE(BDX,BDY,0.1,-0.1) IF CH=7 THEN CALL BOUNCE(BDX,BDY,0.1,0.1) IF CH=8 THEN CALL BOUNCE(BDX,BDY,-0.1,0.1) IF CH=9 THEN CALL BOUNCE(BDX,BDY,-0.1,-0.1) END IF IF SPRITE HIT(1) THEN BXC=BXC-BDX BYC=BYC-BDY XSGN=-SGN(BDX) YSGN=-SGN(BDY) XX=XSGN*XSA*2 YY=YSGN*YSA*2 NUMBER 0,3,XX,4 NUMBER 0,4,YY,4 CALL BOUNCE(BDX,BDY,XX,YY) END IF IF BUTTON(0,0) THEN II=5 ELSE IF BUTTON(0,1) THEN II=30 ELSE II=1 SA=SA+0.01 IF SA>PI*2 THEN SA=SA-PI*2 CALL SPINNER IF PAUSE THEN GOTO RESET IWAIT=(IWAIT+1) MOD II IF IWAIT=0 THEN WAIT VBL LOOP SUB BOUNCE(X,Y,BX,BY) X=X+BX IF X<-1 THEN X=-1 IF X>1 THEN X=1 Y=Y+BY IF Y<-1 THEN Y=-1 IF Y>1 THEN Y=1 END SUB SUB SPINNER NUMBER 0,0,SA*100,4 XSA=ABS(COS(SA+PI/2)) NUMBER 0,1,XSA*100,2 YSA=ABS(SIN(SA+PI/2)) NUMBER 3,1,YSA*100,2 FOR I=6 TO 10 II=(I-6)*8 X=(8*10)+II*COS(SA)+4 Y=(8*8)+II*SIN(SA)-7 SPRITE I,X,Y, NEXT I END SUB UPDATE: AIN=BA RIN=BV GOSUB AR_XY BDX=XOUT BDY=YOUT RETURN ADJUST: XIN=BDX YIN=BDY GOSUB XY_AR BA=AOUT BV=ROUT RETURN AR_XY: XOUT=RIN*COS(AIN) YOUT=RIN*SIN(AIN) RETURN XY_AR: IF XIN=0 THEN XIN=0.0001 AIN=ATAN(YIN/XIN) IF XIN<0 AND YIN>0 THEN AOUT=AIN+PI IF XIN<0 AND YIN<0 THEN AOUT=AIN+PI IF XIN>0 AND YIN<0 THEN AOUT=AIN+PI2 IF XIN>0 AND YIN>0 THEN AOUT=AIN ROUT=SQR(XIN*XIN+YIN*YIN) RETURN SUB XYAR(X,Y,A,R) END SUB #2:MAIN CHARACTERS 00000000000000000000000000000000 3C7EFFFFFFFF7E3C0000000000000000 00081422081422000000000000000000 00004824122448000000000000000000 00442810442810000000000000000000 00122448241200000000000000000000 001C0404701010000000000000000000 00101072020E00000000000000000000 0008080E202038000000000000000000 000070404E0808000000000000000000