100 '床グラフィック描画 110 SCREEN 1:DIM C$(256) 120 'LINE (0,0)-(191,191),160,BF 130 FOR I=512 TO 0 STEP -1:CIRCLE (95,95),70+I/64,160+I/32,F:NEXT 140 FOR I=512 TO 0 STEP -1:CIRCLE (95,95),I/32,160+I/8,F:NEXT 150 'グラフィックデータ圧縮 160 C_WIDTH = 24:C_HEIGHT = 24 : GOSUB *G_COMP 170 '圧縮したデータを3軸回転BG面に展開 180 SCREEN 5:PALETTE 8,160,RGB(0,0,2) 190 FOR I=0 TO C:SETCHR 8,I,C$(I):NEXT 200 FOR I=0 TO 255/C_HEIGHT:FOR J=0 TO 255/C_WIDTH:CCOPY M$ TO 8,(I*24,J*24):NEXT J,I 210 'ポリゴン定義 220 SETPFONT 1,12,(1,1,1,0,-32,0),RGB(15,31,15) 230 SETPFONT 2,12,(1,-1,1,0,32,0),RGB(15,31,15) 240 SETATR 1,26 250 FOR I=0 TO 25:SETATR (4,1,3,1,RGB(15,31,15),256+8+2):NEXT 260 LIMIT = 25: V=LIMIT:H=0 270 'カメラとオブジェクトの移動 280 *CAMERA_MOVE 290 X=XSIN(U)*500:Y=XCOS(U*1.1)*200:Z=XCOS(U/3)*100-150:U=U+&H0.004 300 CAMERA (X,Z,Y) TO (0,0,0),BG 310 OBJ(1,@YP)=-H:OBJ(2,@YP)=H:H=H+V:V=V-1:IF V=-LIMIT-1 THEN LIMIT=RND(40)+10:V=LIMIT 320 VSYNC :GOTO *CAMERA_MOVE 1000 'グラフィックデータ圧縮サブルーチン 1010 *G_COMP 1020 C$(0)=STRW$(32,0):M$="":C=1 1030 FOR I=0 TO C_HEIGHT-1:FOR J=0 TO C_WIDTH-1:K=0 1040 GCOPY 0,(J*8,I*8)-(J*8+7,I*8+7) TO A$:A$=RIGHT$(A$,64) 1050 *CMP_LP: IF C$(K)=A$ GOTO *CMP_LP_NEXT 1060 IF K