- ’┌──────────────────┐
- ’│SAMPLE9 │
- ’│ SPRITE/BGカンレン │
- ’└──────────────────┘
- CLEAR
- ’--- メニュー ショキカ
- MENUMAX=6
- DIM MENU$(MENUMAX)
- DIM INFO$(MENUMAX)
- FOR I=0 TO MENUMAX-1
- READ MENU$(I)
- READ INFO$(I)
- NEXT
- DATA ”SPGETV/SPSETV”
- DATA ”スフ゜ライトニ シ゛ョウホウヲ ヨミ/カキ”
- DATA ”SPCOL/SPHIT”
- DATA ”スフ゜ライト ノ ショウトツヲ ケンシュツ”
- DATA ”SPHOME”
- DATA ”スフ゜ライト ノ キシ゛ュンサ゛ヒョウ セッテイ”
- DATA ”SPREAD/SPCHK”
- DATA ”スフ゜ライト ノ シ゛ョウタイヲ ヨミトル”
- DATA ”BGFILL/BGCOPY/BGCLR”
- DATA ”BGノ ヌリツフ゛シ/コヒ゜ー/ショウキョ”
- DATA ”BGCHK/BGREAD”
- DATA ”BGノシ゛ョウタイヲ ヨミトル/BGノ キャラヨミトリ”
- ’--- MAIN LOOP
- @MAIN
- ACLS
- COLOR 0
- PRINT ”┌────────────────────┐”
- PRINT ”│SAMPLE9 │”
- PRINT ”│ SPRITE/BGカンレン メイレイ │”
- PRINT ”└────────────────────┘”
- FOR I=0 TO MENUMAX-1
- Y=I*3+4
- COLOR 9
- LOCATE 0,Y
- PRINT I+1;” ”;
- COLOR 0
- PRINT MENU$(I);” ”;
- COLOR 3
- LOCATE 2,Y+1
- PRINT INFO$(I)
- NEXT
- COLOR 0
- LOCATE 0,22
- INPUT ”Ж:ト゛レカ エランテ゛(0=END)”;CMD
- CLS
- IF CMD<=0 THEN END
- IF CMD>MENUMAX THEN @MAIN
- COLOR 3
- PRINT ”───────────────────────────”
- PRINT
- PRINT MENU$(CMD-1):PRINT
- PRINT ” ”;INFO$(CMD-1)
- PRINT ”───────────────────────────”
- COLOR 7
- PRINT ”シ゛ッコウレイ:”:PRINT
- COLOR 0
- IF CMD==1 THEN GOSUB @TEST1
- IF CMD==2 THEN GOSUB @TEST2
- IF CMD==3 THEN GOSUB @TEST3
- IF CMD==4 THEN GOSUB @TEST4
- IF CMD==5 THEN GOSUB @TEST5
- IF CMD==6 THEN GOSUB @TEST6
- GOSUB @HITANY
- GOTO @MAIN
- ’--- SPGETV/SPSETV
- @TEST1
- PAL=2
- NUM = 0 ’スフ゜ライトNO.
- PRINT ”ランスウヲ ユーサ゛ーヘンスウニ ヨミ/カキ”
- COLOR 3
- SPSET NUM,68,PAL,0,0,1
- SPOFS NUM,128,160
- FOR I=0 TO 7
- VL=RND(10000)
- SPSETV NUM,I,VL
- LOCATE 0,10+I
- PRINT VL;” → HENSU(”;I;”)”
- NEXT
- COLOR 4
- FOR I=0 TO 7
- VL=SPGETV(NUM,I)
- LOCATE 16,10+I
- PRINT ”HENSU(”;I;”) → ”;VL
- NEXT
- RETURN
- ’--- SPCOL/SPHIT
- @TEST2
- PAL=12
- AN=0 ’スフ゜ライトNO.
- FN=10 ’スフ゜ライトNO.
- AW=16 ’WIDTH
- AH=32 ’HEIGHT
- AX=128:AY=96
- AX1=2:AY1=1
- SPSET AN,288,PAL,0,0,2,AW,AH
- SPCOL AN,-AW/2,-AH/2,AW,AH,FALSE
- SPHOME AN,AW/2,AH/2
- FMAX=8 ’TEKI MAX
- FW=16 ’WIDTH
- FH=16 ’HEIGHT
- FOR I=0 TO FMAX-1
- NUM = FN+I
- SCL = 200
- CH = 137
- SPSET NUM,CH,PAL,0,0,2
- SPSCALE NUM,SCL
- FX=48 + ((I%4)*48)
- FY=72 + FLOOR(I/4)*48
- SPHOME NUM,FW/2,FH/2
- SPCOL NUM,-FW/2,-FH/2,FW,FH,TRUE
- SPOFS NUM,FX,FY
- LOCATE FX/8-2,FY/8+2
- PRINT ”NO.”;NUM
- NEXT
- FOR I=0 TO 600
- IF AX<8 OR AX>246 THEN AX1=-AX1
- IF AY<16 OR AY>174 THEN AY1=-AY1
- AX=AX+AX1:AY=AY+AY1
- SPOFS AN,AX,AY
- HIT=SPHIT(AN,0)
- COLOR 0
- LOCATE 1,19
- PRINT ”SPHITカンスウ モト゛リチ:”;
- IF HIT THEN COLOR 13
- PRINT HIT;
- PRINT
- COLOR 0
- LOCATE 1,21
- PRINT ”SPHITNO ノ アタイ:”;
- COLOR 4
- PRINT SPHITNO;” ”
- VSYNC 1
- NEXT
- RETURN
- ’--- SPHOME
- @TEST3
- PAL=4
- NUM = 0 ’スフ゜ライトNO.
- AW=16 ’WIDTH
- AH=16 ’HEIGHT
- CH=68
- SCL = 200
- AX = 128
- AY = 96
- ANG = 359
- DIR = 1
- SPSET NUM,CH,PAL,0,0,2
- SPOFS NUM,AX,AY
- SPSCALE NUM,SCL
- GLINE AX,AY-32,AX,AY+32,2
- GLINE AX-32,AY,AX+32,AY,2
- GOSUB @PUTCMD
- HX = 0:HY = 0
- GOSUB @TURNSUB
- HX = AW/2:HY = AH/2
- GOSUB @TURNSUB
- HX = AW-1:HY = AH-1
- GOSUB @TURNSUB
- RETURN
- ’---
- @TURNSUB
- PRINT ”(”;HX;”,”;HY;”)テ゛ カイテン”
- PRINT
- SPHOME NUM,HX,HY
- SPANGLE NUM,0
- VSYNC 1
- SPANGLE NUM,ANG,180,DIR
- @SPBUSY
- VSYNC 1
- IF SPCHK(AN) THEN @SPBUSY
- RETURN
- ’--- SPREAD/SPCHK
- @TEST4
- PAL=4
- AN=0 ’スフ゜ライトNO.
- AMAX=12 ’MAX
- AW=16 ’WIDTH
- AH=16 ’HEIGHT
- FOR I=0 TO AMAX-1
- NUM = AN+I
- SCL = 100 ’スケール
- CH = RND(256)
- ANG = 0
- SEC = RND(9)+1 ’ホカンシ゛カン
- SPSET NUM,CH,PAL,0,0,2
- SPSCALE NUM,SCL
- SPHOME NUM,AW/2,AH/2
- SPOFS NUM,128,8
- VSYNC 1
- AX=240:AY=8+(I*16)
- SPOFS NUM,AX,AY,60*SEC
- NEXT
- TY=8
- LOCATE 1,TY-1
- PRINT ”SPREAD/SPCHK モト゛リチ”
- @SPRMAIN
- BUSY=0
- FOR I=0 TO AMAX-1
- NUM = AN+I
- SPREAD(NUM),AX,AY,ANG,SCL,CH
- SPC=SPCHK(NUM)
- COLOR 0
- LOCATE 0,TY+I
- PRINT NUM;”:”;
- LOCATE 3,TY+I
- PRINT ”(”;AX
- LOCATE 7,TY+I
- PRINT ”,”;AY;”)”
- COLOR 0
- LOCATE 13,TY+I
- PRINT ”SPCHK=”;
- IF SPC THEN COLOR 4 ELSE COLOR 0
- PRINT SPC;
- VSYNC 1
- BUSY=BUSY+SPC
- NEXT
- IF BUSY THEN @SPRMAIN
- RETURN
- ’--- BGFILL/BGCOPY/BGCLR
- @TEST5
- PAL=9 ’ハ゜レット
- LOCATE 0,8
- PRINT ”BGFILLメイレイヲ シ゛ッコウ”
- LAY=0
- X1=8:Y1=9
- X2=50:Y2=14
- CH=32
- H=0:V=0
- BGFILL LAY,X1,Y1,X2,Y2,CH,PAL,0,0
- WAIT 180
- X1=0 :Y1=15
- X2=X1+10:Y2=Y1+4
- FOR Y=0 TO (Y2-Y1)
- FOR X=0 TO (X2-X1)
- CH=X+(Y*32)
- BGPUT LAY,X1+X,Y1+Y,CH,PAL,0,0
- NEXT
- NEXT
- LOCATE 0,13
- PRINT ”BGCOPYメイレイヲ シ゛ッコウ”
- PRINT ” コヒ゜ーモト → コヒ゜ーサキ”
- X3=X1+16:Y3=Y1
- BGCOPY LAY,X1,Y1,X2,Y2,X3,Y3
- WAIT 180
- GOSUB @HITANY
- COLOR 0
- LOCATE 0,21
- PRINT ”BGCLRメイレイヲ シ゛ッコウ”
- BGCLR LAY
- RETURN
- @BGBUSY
- VSYNC 1
- BUSY=BGCHK(LAY)
- LOCATE 0,14
- COLOR 0
- PRINT ”BGCHKモト゛リチ:”;
- IF BUSY THEN COLOR 3
- PRINT BUSY
- IF BUSY THEN @BGBUSY
- ’0=シュウリョウ
- RETURN
- ’--- BGCHK/BGREAD
- @TEST6
- PAL=9 ’ハ゜レット
- LAY=0
- X1=0 :Y1=10
- X2=X1+31:Y2=Y1+4
- FOR Y=0 TO (Y2-Y1)-1
- FOR X=0 TO (X2-X1)-1
- CH=X+(Y*32)
- BGPUT LAY,X1+X,Y1+Y,CH,PAL,0,0
- NEXT
- NEXT
- LOCATE 0,8
- PRINT ”BGCHKカンスウテ゛ シ゛ョウホウ シュトク”
- BX=511:BY=511:SEC=3
- BGOFS LAY,BX,BY,60*SEC
- GOSUB @BGBUSY
- WAIT 60
- BX=0:BY=0:SEC=3
- BGOFS LAY,BX,BY,60*SEC
- GOSUB @BGBUSY
- WAIT 60
- SC$=””
- X=FLOOR((X1+X2)/2)
- Y=FLOOR((Y1+Y2)/2)
- LOCATE 0,16
- PRINT ”BGREADヲシ゛ッコウ”
- BGREAD(LAY,X,Y),SC$ ’
- PRINT ” X=”;X;”,Y=”;Y
- PRINT ” モト゛リチ(16シンスウ4ケタ):”;SC$
- PRINT
- PRINT ”BGPUTヲシ゛ッコウ.コ-ト゛=”;SC$
- X=10:Y=21
- BGPUT LAY,X,Y,SC$
- ’16シンスウ4ケタ
- RETURN
- ’--- コマント゛メイ
- @PUTCMD
- PRINT
- COLOR 4
- PRINT ” ”;
- PRINT MENU$(CMD-1);”ヲ シ゛ッコウ”
- PRINT ” ↓”
- COLOR 0
- PRINT
- RETURN
- ’---
- @HITANY
- GOSUB @KEYOFF
- @HITANY2
- COLOR RND(13)+1
- LOCATE 7,23
- PRINT ”HIT ANY BUTTON”;
- VSYNC 5
- IF BUTTON() THEN RETURN
- GOTO @HITANY2
- ’---
- @KEYOFF
- IF BUTTON() THEN @KEYOFF
- RETURN
- ’┌─────────────────────────┐
- ’│ オワリ │
- ’└─────────────────────────┘