100 SCREEN 0:DIM P$(199),C(199) 110 ' 120 ' メッシュポリゴンのテクスチャ作成 130 ' 140 FOR I=0 TO 127:W=40-I/4 150 LINE (0,I)-(7,I),RGBADD(RGBADD(0,W,W,W),0,0,I*0/4):NEXT 160 GCOPY (0,0)-(7,127) TO TX$:CLS 0 170 ' 180 ' パレット作成 190 ' 200 CLS 0:FOR I=0 TO 255 STEP .25 210 P=RGBADD(RGBADD(RGBADD(0,I/5-10,I/5-10,I/5-10),0,I/6,I/6),0,0,I/8) 220 LINE (255,0)-(I,199),P:NEXT 230 FOR I=0 TO 199:GCOPY (0,I)-(255,I) TO A$ 240 P$(I)=WANDOR$(RIGHT$(A$,512),&H7FFF,0) :NEXT 250 FOR I=0 TO 99:C(I)=I*2:NEXT :FOR I=100 TO 199:C(I)=198-(I-100)*2:NEXT 260 ' 270 ' 256色モードに変更 280 ' 290 SCREEN 1:WINDOW 0,0,511,255: PALETTE 0,0,P$(0) 300 SPRWINDOW,,,,,320/2-30,224/2-24 310 SETTEX 0,8,128,32768,RIGHT$(TX$,8*128*2) 320 ' 330 ' 自機の作成 340 ' 350 SETPFONT 1,ASC("V"),(3,3,3,0,0,0):OBJ(1,@XR)=.25 360 ' 370 ' メッシュポリゴンの定義 380 ' 390 N=30:X=160:Y=112 400 VER_ID=VERTEXID(-1):SETVERTEX VER_ID,N*2 410 R=80:FOR J=0 TO 1:FOR I=0 TO N-1 420 X1=XSIN((I-.5)/N)*R:Y1=XCOS((I-.5)/N)*R 430 SETVERTEX (X1,Y1,-J*2):NEXT :R=65:NEXT 440 SETPOLYGON 2,N,VER_ID:ATR_ID=ATRID(-1):SETATR ATR_ID,N 450 FOR I=0 TO N-1 460 SETPOLYGON,(I,(I+1)MOD N,N+((I+1)MOD N),N+I):SETATR (0,1,1,0,32767,256) 470 NEXT 480 OBJATR 2,2,ATR_ID:OBJTYPE 2,4 490 CAMERA (64,170,-80) TO (0,0,0) 500 ' 510 ' BG描画 520 ' 530 FOR I=0 TO 255 :CIRCLE (280,210),300-I*300/255,I,F:NEXT 540 FOR I=0 TO 500:X=RND(512):Y=RND(256):PSET (X,Y),255:NEXT 550 ' 560 ' メインルーチン 570 ' 580 *MAIN 590 OBJ(2,@PARENT)=0 600 FOR I=32 TO 199 STEP 3:ZM = 1+((200-I)/100)^2 610 OBJ(1,@ZP)=ZM*34*3-I/8:OBJ(1,@YS)=ZM 620 R=I/32: OBJ(2,@XS) = R,R,R:VSYNC 630 SCROLL 0,I/4*2-20,I/20*4:CAMERA (64,170-(I/32)/3,-80) TO (0,0,0) 640 PALETTE 0,0,P$(C(I)):NEXT :PALETTE 0,0,P$(0):OBJ(2,@PARENT)=2 650 *KEYWAIT 660 I$=INKEY$:P=PAD(0,1):IF P OR I$<>"" THEN *MAIN ELSE *KEYWAIT