Kicsit játszottam a programmal. 16 színű módban szebb (persze csak az alsó 8 színt használja), és előbb kiszámolja a szín összetevőket, aztán sötétít, így Basicben is egész tűrhető a sebesség.
100 PROGRAM "SOTET16.BAS"
105 DIM R(0 TO 7),G(0 TO 7),B(0 TO 7)
110 GRAPHICS HIRES 16
115 RANDOMIZE
120 CALL PALETTE(RND(16),RND(256),RND(256),RND(256),RND(256),RND(256),RND(256),RND(256))
130 FOR I=1 TO 100
140 SET INK RND(7)+1
150 PLOT RND(1280),RND(720);
160 NEXT I
170 PRINT "Nyomj meg egy billentyut!"
180 GET KEY$
190 IF KEY$="" THEN 180
200 CALL SOTET
300 !
310 DEF PALETTE(C0,C1,C2,C3,C4,C5,C6,C7)
320 NUMERIC COL(0 TO 7)
330 COL(0)=C0:COL(1)=C1:COL(2)=C2:COL(3)=C3
335 COL(4)=C4:COL(5)=C5:COL(6)=C6:COL(7)=C7
340 SET PALETTE C0,C1,C2,C3,C4,C5,C6,C7
350 FOR I=0 TO 7
360 LET R(I)=(COL(I) BAND 1)*4+(COL(I) BAND 8)/4+(COL(I) BAND 64)/64
370 LET G(I)=(COL(I) BAND 2)*2+(COL(I) BAND 16)/8+(COL(I) BAND 128)/128
380 LET B(I)=(COL(I) BAND 4)/2+(COL(I) BAND 32)/32
390 NEXT
400 END DEF
500 !
510 DEF SOTET
520 NUMERIC CT(0 TO 7,0 TO 7)
530 FOR J=6 TO 0 STEP-1
535 PRINT ".";
540 FOR I=0 TO 7
550 LET RT=INT(R(I)*J/7)
560 LET GT=INT(G(I)*J/7)
570 LET BT=INT(B(I)*J/7)
580 LET CT(J,I)=(RT BAND 4)/4+(RT BAND 2)*4+(RT BAND 1)*64+(GT BAND 4)/2+(GT BAND 2)*8+(GT BAND 1)*128+(BT BAND 2)*2+(BT BAND 1)*32
590 NEXT I
600 NEXT J
610 FOR J=6 TO 0 STEP-1
620 SET PALETTE CT(J,0),CT(J,1),CT(J,2),CT(J,3),CT(J,4),CT(J,5),CT(J,6),CT(J,7)
630 NEXT
640 PRINT
650 END DEF