' cls() 10 HGR ' ::_:: 'for i=0,1600 do 20 FOR I=0 TO 1600 'if(i<15)pal(i,({0,128,130,2,136,8,142,137,9,10,135,7})[i+1],1) 30 REM 'x=rnd(128) 40 X=RND(1)*128 'y=rnd(128) 50 Y=RND(1)*128 'a=atan2(x-64,y-64)+.17 '60 A=ATN(X-20,Y-20)+.17 '60 IF Y-64>0 THEN A=ATN((X-64)/(Y-64)):GOTO 68 '61 IF Y-64=0 THEN A=1.57*SGN(X-64):GOTO 68 '62 A=ATN((X-64)/(Y-64))+3.14*SGN(X-64) ' PICO-8 uses TURNS instead of RADIANS so this is equivelant to roughly 1 radian '68 A=A+1 60 IF X-64=0 AND Y-64=0 THEN GOTO 40 ' X>0 case, plain ATN, Quadrants I and IV 64 IF X-64>0 THEN A=ATN((Y-64)/(X-64)):GOTO 68 ' X=0 then pi/2 or -pi/2 depending on Y 65 IF X-64=0 THEN A=1.57*SGN(Y-64):GOTO 68 ' X<0 and Y>=0, Quadrant II 67 IF Y-64>=0 THEN A=ATN((Y-64)/(X-64))+3.14:GOTO 68 ' X<0 and Y<0 Quadrant III 67 A=ATN((Y-64)/(X-64))-3.14 68 A=A+1 '69 PRINT A 'd=rnd(7) 70 D=RND(1)*7 'pset(x+cos(a)*d,y+sin(a)*d/3-cos(a)*d/4,max(0,pget(x,y)+.87-rnd())) ' 1+.87-.99 = .88 ' 1+.87-0.0 = 1.87 '80 C=SCRN(X/3.3,Y/3.3)+1.37-RND(1) 80 GOSUB 1100 81 C=C+0.87-RND(1) 82 IF C<0 THEN C=0 83 IF C>7 THEN C=7 84 HCOLOR=C 85 XX=(X+COS(A)*D) 87 YY=(Y+SIN(A)*D/3-COS(A)*D/4) 88 IF XX<0 OR XX>240 GOTO 100 89 IF YY<0 OR YY>192 GOTO 100 90 HPLOT XX,YY 'end 100 NEXT I ' circfill(64,64,5,11) 110 HCOLOR=7 115 HPLOT 61,60 TO 69,60:HPLOT 60,61 TO 70,61:HPLOT 60,62 TO 70,62 117 HPLOT 60,63 TO 70,63:HPLOT 60,64 TO 70,64:HPLOT 60,65 TO 70,65 119 HPLOT 60,66 TO 70,66:HPLOT 60,67 TO 70,67:HPLOT 61,68 TO 69,68 '125 INPUT A$ 130 GOTO 20 'flip()goto _ 1100 REM GET HCOLOR 1110 REM PARAMETERS: X Y 1120 REM RETURNS: C 1130 REM 1140 HP = 0:HX = X + 1:HY=Y 1150 ON (HX < 280) GOSUB 1300 1160 PR = HP:HP = 0:HX = HX - 2 1170 ON (HX > = 0) GOSUB 1300 1180 PL = HP:HX = HX + 1: GOSUB 1300 1190 ODD = HX - INT (HX / 2) * 2 1200 C = HH * 4 1210 IF NOT ((PL = PR) AND (PL < > HP)) THEN C = C + HP * 3: RETURN 1220 IF ODD THEN HP = NOT HP 1230 C = C + HP + 1 1240 RETURN 1250 REM 1260 REM GET PIXEL 1270 REM PARAMETERS: HX HY 1280 REM RETURNS: HH HP 1290 REM 1300 HH = INT (HX / 7) 1310 HV = INT (HY / 8) 1320 VO = PEEK (37) 1330 HO = PEEK (36) 1340 VTAB HV + 1: HTAB 1 1350 HA = PEEK (41) * 256 1360 HA = HA + PEEK (40) + HH 1370 VTAB VO + 1: HTAB HO + 1 1380 HA = HA + 8192 - 1024 1390 HP = PEEK (230) / 32 1400 IF HP = 2 THEN HA = HA + 8192 1410 HA = HA + (HY - HV * 8) * 1024 1420 HB = HX - HH * 7 1430 HV = PEEK (HA) 1440 HH = INT (HV / 128) 1450 HV = INT (HV / (2 ^ HB)) 1460 HP = HV - INT (HV / 2) * 2 1470 RETURN