100 SCREEN 1:CLEAR 10:PRIORITY 1,5:SETPFONT 1,0:OBJ(1,@TYPE)=6 110 DIM R(15),G(15),B(15) 120 ' 130 ' パレットの準備 140 ' 150 FOR I=0 TO 15 160 R(I)=RND(I*3):G(I)=RND(I*3):B(I)=RND(I*3): '<--- もとのパレット 170 PALETTE 0,I,RGBADD(0,R(I),G(I),B(I)) 180 FOR J=0 TO 15:C=J*2 190 PALETTE 1,J*16+I,RGBADD(PALETTE(0,I),C,C,C):'<--- 白っぽくしたパレット 200 NEXT 210 NEXT 220 G_WIDTH = 320: ' <--- グラデーションの幅 230 G_PATTERN$ = "DCBA987654321": ' <--- グラデーションパターン(0:元の色〜F:白っぽい) 240 G_HEIGHT = LEN(G_PATTERN$):POKE 0,0,BITW$(HEXBIN$(G_PATTERN$+"0"),4,8) 250 ' 260 ' 背景描画 270 ' 280 WINDOW 160-G_WIDTH/2,0,160+G_WIDTH/2,255 290 LINE (0,0)-(319,255),1,BF 300 FOR I=0 TO 200:X=RND(320):Y=RND(256) 310 LINE (X,Y)-(X+RND(16),Y+RND(16)),RND(16),BF:NEXT 320 YP=0:FRAME=1:VSYNC 330 ' 340 ' メインループ 350 ' 360 *MAIN 370 LOCATE 0,0:RATE=(RATE*9+60/FRAME)/10:PRINT USING "##.##frame/sec";RATE 380 ' ▼ グラデーションをかける 390 OBJ(1,@TIME)=0:IMAGE$=STRW$(1,G_WIDTH)+STRW$(1,G_HEIGHT) 400 FOR I=1 TO G_HEIGHT:Y=(I+YP-1)AND 255 410 GCOPY 0,(160-G_WIDTH/2,Y)-(160+G_WIDTH/2-1,Y) TO I$ 420 IMAGE$=IMAGE$+WADD$(RIGHT$(I$,G_WIDTH),PEEK(0,I)*&H1010):NEXT 430 ' ▼ 所定の時間がたつまで待つ 440 *TIMING: FR=OBJ(1,@TIME):IF FR=FRAME THEN FRAME=FR: ELSE FRAME=FR+(FR>1) 470 GCOPY IMAGE$ TO 1,(160-G_WIDTH/2,0) 480 SCROLL 0,0,YP:YP=(YP-FRAME)AND 255:GOTO *MAIN