- ’┌──────────────────┐
- ’│SAGAME4 │
- ’│ タ゛ンマクシューティンク゛ケ゛ーム│
- ’└──────────────────┘
- @START
- GOSUB @INIT
- GOSUB @TITLE
- OVR=0
- SHIP=3 ’サ゛ンキ
- SC=0 ’SCORE
- STA=4
- BOSS=0
- NOW=MAINCNTL
- FPS=0:CNT=NOW
- ’--- MAIN LOOP
- @MAIN
- GOSUB @MYMOVE
- GOSUB @MYSHOT
- GOSUB @TKMOVE
- GOSUB @MAPCTR
- FPS=FPS+1
- NOW=MAINCNTL
- VSYNC 1
- IF NOW<CNT THEN CNT=NOW
- IF (NOW-CNT)<60 THEN @MAIN
- CNT=NOW
- LOCATE 0,1
- COLOR 0
- PRINT ” SHIP ”;SHIP;” ”
- PRINT ” SCORE ”;SC
- IF BOMB==0 THEN COLOR 13
- PRINT ” BOMB ”;BOMB;” ”
- IF DEBUG THEN PRINT FPS;”FPS ”;
- FPS=0
- IF MSG THEN MSG=MSG-1
- IF MSG THEN @MAIN
- A$=” ”:GOSUB @PNTSUB3
- IF SHIP==0 THEN @START
- IF OVR==0 THEN @MAIN
- STA=4
- OVR=0
- GOTO @MAIN
- ’--- シ゛キ イト゛ウ
- @MYMOVE
- IF OVR THEN @MYDEAD
- BT=BUTTON()
- IF (BT AND 1) THEN AY=AY-AD
- IF (BT AND 2) THEN AY=AY+AD
- IF (BT AND 4) THEN AX=AX-AD
- IF (BT AND 8) THEN AX=AX+AD
- IF AX<16 THEN AX=16
- IF AX>247 THEN AX=247
- IF AY<8 THEN AY=8
- IF AY>176 THEN AY=176
- SPOFS AN,AX,AY
- IF STA THEN @MYSTART
- ’--- シ゛キ アタリ ハンテイ
- IF SPHIT(AN,0)==0 THEN RETURN
- J=SPHITNO
- IF J<FN OR J>=FN+FMAX THEN RETURN
- C=SPGETV(J,0)
- IF C==0 THEN RETURN ’ハ゛クフウ
- IF C==4 THEN @ONEUP ’1UP
- IF C==5 THEN @BOMBADD ’BOMB
- IF DEBUG THEN RETURN
- OVR=1
- BEEP 13
- GOSUB @MYDEAD
- SHIP=SHIP-1
- IF SHIP==0 THEN @GMOVER
- MSG=1
- RETURN
- ’--- GAME OVER
- @GMOVER
- BGMN=6
- BGMPLAY BGMN
- A$=”GAME OVER”:GOSUB @PNTSUB2
- BGMSTOP
- RETURN
- ’---
- @PAUSE
- COLOR 12
- BGMSTOP
- I=0
- @PAUSE2
- IF I==0 THEN A$=”→ツツ゛ケル シ゛ハ゛ク”
- IF I==1 THEN A$=” ツツ゛ケル →シ゛ハ゛ク”
- GOSUB @PNTSUB3
- GOSUB @BTNOFF
- GOSUB @BTWAIT
- IF (BT AND &HF) THEN I=I XOR 1
- IF (BT AND &H4F0)==0 THEN @PAUSE2
- CLS
- GOSUB @BTNOFF
- IF I==0 THEN BGMPLAY BGMN:RETURN
- SHIP=0:OVR=1:MSG=3
- RETURN
- ’--- GET 1UP
- @ONEUP
- BEEP 7
- SHIP=SHIP+1
- GOTO @ITEMCLR
- ’--- GET BOMB
- @BOMBADD
- BEEP 12
- BOMB=BOMB+1
- @ITEMCLR
- SPOFS FN+J,0,999
- SPSETV FN+J,4,999 ’Y
- SPSETV FN+J,1,0 ’HP
- RETURN
- ’---BOMB ツカウ
- @BOMB
- IF BUSY THEN RETURN
- IF BOMB==0 THEN RETURN
- BUSY=3 ’レンソ゛ク シヨウ サセナイ
- BOMB=BOMB-1
- FOR J=0 TO FMAX-1
- GOSUB @TKDAMAGE ’テキ タ゛メーシ゛
- NEXT
- ’--- ホ゛ム シカクコウカ
- FOR I=0 TO BMAX-1
- SPCHR BN+I,143
- SPOFS BN+I,AX,AY
- NEXT
- FOR I=0 TO BMAX-1
- R=RAD(I*360/BMAX)
- X=AX+COS(R)*300
- Y=AY+SIN(R)*300
- SPOFS BN+I,X,Y,60
- NEXT
- RETURN
- ’--- シ゛キ スタート
- @MYSTART
- IF STA<4 THEN @MYSTA2
- BEEP 6
- AX=128:AY=200
- BOMB=3 ’ホ゛ム ショキソウヒ゛
- BUSY=2
- @MYSTA2
- AY=AY-(STA/4)
- STA=STA-0.05
- IF STA<=0 THEN STA=0
- IF RND(15) THEN RETURN
- X=AX:Y=AY+16
- NEWR=RAD(90):GOSUB @TKSMOKE
- RETURN
- ’--- シ゛キ ハ゛クハツ
- @MYDEAD
- BT=0
- NEWR=RAD(RND(360))
- X=AX:Y=AY:GOSUB @TKSMOKE
- SPOFS AN,999,999
- IF RND(10)==0 THEN BEEP 37
- RETURN
- ’--- タマ ショリ
- @MYSHOT
- ’---[B]BUTTON=ホ゛ム
- IF (BT AND 32) THEN @BOMB
- IF (FPS%8) THEN RETURN
- IF BUSY THEN BUSY=BUSY-1:RETURN
- ’---[A]BUTTON=SHOT
- IF (BT AND 16) THEN @MYFIRE
- ’---[Y]BUTTON=SHOT
- IF (BT AND 128) THEN @MYFIREY
- IF (BT AND 1024) THEN @PAUSE
- RETURN
- ’--- タマ ハッシャ
- @MYFIRE
- X=AX:Y=AY
- X1=0:GOTO @MYFIRE2
- @MYFIREY
- X=AX:Y=AY
- X1= 90
- IF (FPS%16)<8 THEN X1=-X1
- GOTO @MYFIRE2
- @MYFIRE2
- I=BN
- @MYFIRE3
- ’--- スフ゜ライトノ アキ サカ゛ス
- IF SPCHK(I)==0 THEN @MYFIRE4
- I=I+1
- IF I<BN+BMAX THEN @MYFIRE3
- RETURN ’アキカ゛ ナイ
- @MYFIRE4 ’アキ ケンシュツ
- SPCHR I,37
- SPOFS I,X,Y
- SPOFS I,X+X1,Y-192,30
- RETURN
- ’--- テキ イト゛ウ
- @TKMOVE
- FOR I=0 TO FMAX-1
- Y=SPGETV(FN+I,4) ’サ゛ヒョウ
- IF Y==999 THEN @TKMOVE2
- C=SPGETV(FN+I,0) ’シュルイ
- T=SPGETV(FN+I,2) ’ト゛ウサ シ゛カン
- SPSETV FN+I,2,T+1 ’シ゛カン+1
- X=SPGETV(FN+I,3) ’サ゛ヒョウ
- R=FR(I) ’カクト゛
- GOSUB JMPTBL$(C)
- X=X+COS(R)*FD
- Y=Y+SIN(R)*FD
- IF X<-8 OR X>263 THEN Y=999
- IF Y<-31 OR Y>199 THEN Y=999
- SPSETV FN+I,3,X ’サ゛ヒョウ
- SPSETV FN+I,4,Y ’
- SPOFS FN+I,X,Y
- IF FR(I)!=R THEN FR(I)=R:SPANGLE FN+I,FLOOR(DEG(R-TKOF(C)))
- GOSUB @HITCHK
- @TKMOVE2
- NEXT
- RETURN
- ’--- SMOKE
- @TK0
- FD=T/15
- X=X+RND(5)-2
- Y=Y+RND(5)-2
- IF T>40 THEN Y=999
- RETURN
- ’--- FIRE
- @TK1
- FD=2
- RETURN
- ’--- HOMING
- @TK2
- FD=T/17
- IF RND(3) THEN RETURN
- GOSUB @TRKING
- R=R+(SGN(R1)*0.04)
- RETURN
- ’--- BEAM
- @TK3
- FD=FLOOR(T*T/200)
- IF FD>6 THEN FD=6
- RETURN
- ’--- 1UP
- @TK4
- FD=0
- Y=Y+((T-35)/30)
- RETURN
- ’--- BOMB
- @TK5
- FD=0.5
- X=X+COS(RAD((T*2)%360))*2
- RETURN
- @TK6
- RETURN
- @TK7
- RETURN
- ’--- S CURVE
- @TK8
- FD=2
- R1=RAD(180/50)
- IF ABS(50-(T%100))<26 THEN R1=-R1
- R=R+R1
- IF (T%20) THEN RETURN
- NEWR=R:GOSUB @TKFIRE
- RETURN
- ’--- SW BACK
- @TK9
- R=SGN(70-T)*1.57
- FD=FLOOR(ABS(60-T)/20)
- IF FD>0 THEN RETURN
- IF (T%16) THEN RETURN
- IF RND(10)>LVL THEN RETURN
- BEEP 38
- NEWR=RAD(90):NEWC=2:GOSUB @TKBORN
- RETURN
- ’--- V SHOT
- @TK10
- FD=FLOOR(ABS(60-T)/18)
- IF T>100 THEN RETURN
- IF FD>0 THEN RETURN
- GOSUB @TRKING
- R=R+(SGN(R1)*0.05)
- IF (T%14) THEN RETURN
- NEWR=R-0.3:GOSUB @TKFIRE
- NEWR=R+0.3:GOSUB @TKFIRE
- BEEP 4
- RETURN
- ’--- U TURN
- @TK11
- FD=ABS(70-T)/15
- R1=RAD(180/140)
- IF (I%2) THEN R1=-R1
- R=R+R1
- IF FD>1 OR (T%15) THEN RETURN
- NEWR=ATAN(AY-Y,AX-X)
- GOSUB @TKFIRE
- BEEP 4
- RETURN
- ’--- SPIN
- @TK12
- FD=2
- IF T>170 THEN RETURN
- IF T>100 THEN @TKA12B
- IF (T%30) THEN RETURN
- J=85+FLOOR(I%2)*85
- R=ATAN(64-Y,J-X)
- RETURN
- @TKA12B
- FD=0
- IF (T%8) THEN RETURN
- R=R+0.8
- NEWR=R:GOSUB @TKFIRE
- RETURN
- ’--- UFO
- @TK13
- FD=1+(T/150)
- IF RND(4)==0 THEN R=R-RAD(8)
- IF RND(4)==0 THEN R=R+RAD(8)
- IF (T%60) THEN RETURN
- NEWR=ATAN(AY-Y,AX-X)
- GOSUB @TKFIRE
- RETURN
- ’--- HOMING MISSILE
- @TK14
- IF T>240 THEN J=I:GOTO @TKDEAD
- FD=3.5-(T/35)
- IF FD<1.6 THEN FD=1.6
- GOSUB @TRKING
- R=R+(SGN(R1)*0.05)
- RETURN
- ’--- SIDE SHOT
- @TK15
- FD=FLOOR((T%90)/30)
- IF ABS(AY-Y)>20 THEN RETURN
- IF (T%20) THEN RETURN
- NEWR=RAD( 0):GOSUB @TKFIRE
- NEWR=RAD(180):GOSUB @TKFIRE
- RETURN
- ’--- NEAR MISS
- @TK16
- FD=2.2
- J=T%64
- IF J THEN RETURN
- R=ATAN(120,(AX-48+RND(96))-X)
- RETURN
- ’--- TSUBO
- @TK17
- J=T%60
- FD=0
- Y=Y+1
- IF J==59 THEN @TK17B
- IF J>30 THEN RETURN
- GOSUB @TRKING
- R=R+(SGN(R1)*0.04)
- RETURN
- @TK17B
- NEWR=R:GOSUB @TKFIRE
- RETURN
- ’---
- @TK18
- @TK19
- RETURN
- ’--- BOSS1
- @TK20
- FD=0.5
- IF T<90*2 THEN RETURN
- FD=0
- X=X+COS(RAD((T%90)*4))*2
- Y=Y+SIN(RAD((T%40)*9))*2
- IF (T%40) THEN RETURN
- IF (T%200)<20*LVL THEN @TK20B
- FOR NEWR=0 TO 3.14 STEP 0.45
- GOSUB @TKFIRE
- NEXT
- BEEP 11
- RETURN
- @TK20B
- TY=Y
- NEWR=RAD(90)
- GOSUB @TKBEAM
- Y=Y-32
- GOSUB @TKBEAM
- Y=Y-32
- GOSUB @TKBEAM
- Y=TY
- BEEP 5
- RETURN
- ’--- BOSS2
- @TK21
- FD=0.5
- IF T<90*2 THEN RETURN
- FD=0
- J=130-(LVL*4)
- IF J<100 THEN J=100
- J=T%J
- IF J>=90 THEN @TK21B
- X=X+COS(RAD(J*4))*1.5
- GOSUB @TRKING
- R=R+(SGN(R1)*0.01)
- IF (T%40) THEN RETURN
- FOR NEWR=0 TO 3.14 STEP 0.6
- GOSUB @TKFIRE
- NEXT
- RETURN
- @TK21B
- IF (T%5) THEN RETURN
- IF RND(14) THEN BEEP 6
- TX=X:TY=Y
- NEWR=R
- X=TX+COS(NEWR)*30
- Y=TY+SIN(NEWR)*30
- GOSUB @TKBEAM
- X=TX:Y=TY
- RETURN
- ’--- BOSS3
- @TK22
- FD=((90*2)-T)/220
- IF T<90*2 THEN RETURN ’トウシ゛ョウ
- FD=0
- J=T%360
- IF J<180 THEN @TK22B
- X=X+COS(RAD((J*2)%360))
- IF (T%90)==0 THEN @TK22D
- IF (T%12)==0 THEN @TK22C
- RETURN
- @TK22B
- Y=Y+(90-J)/40
- IF (T%30) THEN RETURN
- BEEP 9
- FOR NEWR=0 TO 6.28 STEP 0.7
- GOSUB @TKFIRE
- NEXT
- RETURN
- @TK22C
- IF LVL<RND(20) THEN RETURN
- BEEP 38
- TX=X ’BACKUP
- X=TX+RND(2)*80-40
- NEWR=RAD(90)
- NEWC=2
- GOSUB @TKBORN
- X=TX
- RETURN
- @TK22D
- BEEP 11
- NEWR=RAD(270)
- NEWC=14
- GOSUB @TKBORN
- RETURN
- @TK23
- @TK24
- @TK25
- RETURN
- ’--- シ゛キ ヲ ツイセキ
- @TRKING
- R1=ATAN(AY-Y,AX-X)-R
- IF R1> 3.14 THEN R1=R1-6.28
- IF R1<-3.14 THEN R1=R1+6.28
- RETURN
- ’--- テキ+タマ アタリ ハンテイ
- @HITCHK
- IF Y==999 THEN RETURN
- IF C<8 THEN RETURN ’ムテキキャラ
- IF SPHIT(FN+I,BN)==0 THEN RETURN
- J=SPHITNO
- IF (J<BN) OR (J>=BN+BMAX) THEN RETURN
- IF SPCHK(J)==0 THEN RETURN
- SPOFS J,0,999
- J=I
- @TKDAMAGE
- NN=FN+J
- IF SPGETV(NN,4)==999 THEN RETURN
- C=SPGETV(NN,0)
- IF C<1 THEN RETURN
- HP=SPGETV(NN,1)
- IF HP THEN HP=HP-1 ’テキ タイリョク-1
- SPSETV NN,1,HP
- IF HP THEN BEEP 0,2048:RETURN
- X=SPGETV(NN,3) ’サ゛ヒョウ
- Y=SPGETV(NN,4) ’サ゛ヒョウ
- BEEP 13,2096
- GOSUB @TKDEAD
- SC=SC+1
- IF C<8 THEN RETURN
- ’アイテム ニ シナイ
- IF C<20 THEN @HITCHK2
- ’--- ホ゛ス タオシタ
- @BOSDEAD
- BGMN=15
- BGMPLAY BGMN
- LVL=LVL+1
- BOSS=BOSPOS+10000
- RETURN
- ’--- テキヲ タオシタ
- @HITCHK2
- IF RND(8)==0 THEN NEWC=4:GOTO @ITEMADD ’1UP
- IF RND(8)==0 THEN NEWC=5:GOTO @ITEMADD ’BOMB
- RETURN
- @ITEMADD ’アイテム ハッセイ
- NEWR=RAD(90)
- GOSUB @TKBORN2
- RETURN
- ’--- ハイケイ ショリ
- @MAPCTR
- ’--- BG0 テマエ スクロ-ル
- HY=(HY-1)AND 511
- BGOFS 0,0,HY
- GOSUB @DRAWBG0
- ’--- BG1 オク スクロ-ル
- IF (HY%4) THEN RETURN
- GY=(GY-1)AND 511
- BGOFS 1,0,GY
- GOSUB @DRAWBG1
- IF OVR OR MSG THEN RETURN
- IF BOSS==0 THEN A$=”STAGE ”+STR$(LVL):BGMN=23:BGMPLAY BGMN:GOSUB @PNTSUB2
- BOSS=BOSS+1
- IF BOSS>=BOSPOS THEN @BOSS1
- ’--- テキシュツケ゛ン ショリ
- IF (GY%4) THEN RETURN
- IF RND(12)>LVL THEN RETURN
- X=RND(256-64)+32:Y=-24
- NEWC=FLOOR((GY/(4*5))%10)+8
- NEWR=RAD(90)
- GOSUB @TKBORN
- RETURN
- ’--- ホ゛ス シュツケ゛ン ショリ
- @BOSS1
- J=BOSS-BOSPOS
- IF J>10050 THEN BOSS=0:RETURN
- IF J>10000 THEN @BOSS3
- IF J>1500 THEN @BOSS4
- IF J>900 THEN RETURN
- IF J>20 THEN @BOSS2
- ’--- ホ゛ス テマエ
- IF BOSS!=BOSPOS THEN RETURN
- BGMN=13
- BGMPLAY BGMN
- A$=”WARNING!!”:GOSUB @PNTSUB2
- RETURN
- ’--- ホ゛ス トウシ゛ョウ
- @BOSS2
- X=128:Y=-31
- NEWC=20+((LVL-1) % 3)
- NEWR=RAD(90)
- GOSUB @TKBORN
- IF J>=0 THEN BOSS=BOSPOS+900
- RETURN
- ’--- ホ゛ス タイシ゛ョウ
- @BOSS3
- X=128+RND(128)-64
- Y=96+RND(96)-48
- NEWR=RAD(RND(360))
- IF RND(10)==0 THEN BEEP 13
- GOSUB @TKSMOKE
- RETURN
- ’--- ホ゛ス シ゛ハ゛ク
- @BOSS4
- FOR J=0 TO FMAX-1
- X=SPGETV(FN+J,3) ’サ゛ヒョウ
- Y=SPGETV(FN+J,4) ’サ゛ヒョウ
- IF Y!=999 THEN GOSUB @TKDEAD
- NEXT
- GOSUB @BOSDEAD
- RETURN
- ’--- テキ ハ゛クハツ
- @TKDEAD
- NEWC=0
- GOTO @TKBORN2
- ’--- BEAM
- @TKBEAM
- NEWC=3
- GOTO @TKBORN
- ’--- ハ゛クハツ
- @TKSMOKE
- NEWC=0
- GOTO @TKBORN
- ’--- テキタ゛ンハッシャ
- @TKFIRE
- NEWC=1
- IF RND(9)>LVL THEN RETURN
- GOTO @TKBORN
- ’--- テキ/エフェクト シュツケ゛ン
- @TKBORN
- J=0
- @TKBORN1 ’スフ゜ライト ノ アキ サカ゛ス
- IF SPGETV(FN+J,4)==999 THEN @TKBORN2
- J=J+1
- IF J<FMAX THEN @TKBORN1
- J=-1 ’アキカ゛ ナイ
- RETURN
- @TKBORN2 ’スフ゜ライト ノ アキケンシュツ
- W=TKW(NEWC)
- H=TKH(NEWC)
- NN=FN+J
- SPSET NN,TKC(NEWC),TKPL(NEWC),0,0,1,W,H
- SPHOME NN,W/2,H/2
- SPCOL NN,-W/2,-H/2,W,H,TRUE
- SPOFS NN,X,Y
- SPSCALE NN,TKSC(NEWC)
- SPANIM NN,TKA(NEWC),8
- SPANGLE NN,FLOOR(DEG(NEWR-TKOF(NEWC)))
- FR(J)=NEWR
- SPSETV NN,0,NEWC ’シュルイ
- SPSETV NN,1,TKHP(NEWC) ’タイリョク
- SPSETV NN,2,0 ’ト゛ウサ シ゛カン
- SPSETV NN,3,X ’サ゛ヒョウ
- SPSETV NN,4,Y ’サ゛ヒョウ
- RETURN
- ’---BG0 テマエ
- @DRAWBG0
- IF (HY%8) THEN RETURN
- PAL=10+((LVL+2)%5)
- Y=((HY/8)-1)AND 63
- IF BOSS>(BOSPOS+1040) THEN @CLRBG0
- FOR X=0 TO 31
- C=0
- IF X<=1 THEN C=796+X+(Y%4)*32
- IF X>=30 THEN C=768+X+(Y%4)*32
- BGPUT 0,X,Y,C,PAL,0,0
- NEXT
- RETURN
- @CLRBG0
- FOR X=0 TO 31
- C=0:BGPUT 0,X,Y,C,PAL,0,0
- NEXT
- RETURN
- ’---BG1 オク
- @DRAWBG1
- IF (GY%8) THEN RETURN
- Y=((GY/8)-1)AND 63
- IF BOSS>BOSPOS THEN @CLRBG1
- PAL=10+(LVL%5)
- FOR X=0 TO 31
- C=RND(4)+790
- J=ABS(X-16)
- IF J>4 AND ((Y%8)>1) THEN C=0
- BGPUT 1,X,Y,C,PAL,0,0
- NEXT
- RETURN
- @CLRBG1
- FOR X=0 TO 31
- C=0:BGPUT 1,X,Y,C,PAL,0,0
- NEXT
- RETURN
- ’--- ショキカ
- @INIT
- CLEAR
- ACLS
- LVL=1
- GY=0:HY=0 ’BG サ゛ヒョウ
- BOSPOS=300 ’ホ゛ス トウシ゛ョウ シ゛キ
- BMAX=16 ’タマシュツケ゛ンスウ
- FMAX=32 ’テキシュツケ゛ンスウ
- TMAX=26 ’テキノ シュルイ
- DIM FR(FMAX)
- DIM TKC(TMAX) ’キャラクタ
- DIM TKPL(TMAX) ’ハ゜レット
- DIM TKA(TMAX) ’アニメ スウ
- DIM TKW(TMAX) ’ハハ゛
- DIM TKH(TMAX) ’タカサ
- DIM TKSC(TMAX) ’スケール
- DIM TKHP(TMAX) ’タイリョク
- DIM TKOF(TMAX) ’カイテン オフセット
- DIM JMPTBL$(TMAX)
- FOR I=0 TO TMAX-1
- JMPTBL$(I)=”@TK”+STR$(I)
- NEXT
- AN=60 ’シ゛キ スフ゜ライトNO.
- BN=62 ’タマ スフ゜ライトNO.
- FN=0 ’テキ スフ゜ライトNO.
- ’--- シ゛キ ショキカ
- PAL=11
- AD=3
- W=16:H=32
- SPSET AN,288,PAL,0,0,1,W,H
- SPHOME AN,W/2,H/2
- SPCOL AN,-W/4,-H/4,W/2,H/2,FALSE
- SPOFS AN,999,999
- ’--- タマ ショキカ
- PAL=4
- W=16:H=16
- FOR I=0 TO BMAX-1
- J=BN+I ’カンリ ハ゛ンコ゛ウ
- SPSET J,37,PAL,0,0,1,W,H
- SPHOME J,W/2,H/2
- SPCOL J,-W/2,-H/2,W,H,FALSE
- SPOFS J,999,999
- NEXT
- ’--- テキ ショキカ
- PAL=3
- FOR I=0 TO FMAX-1
- J=FN+I ’カンリ ハ゛ンコ゛ウ
- SPSET J,142,PAL,0,0,1,W,H
- SPHOME J,W/2,H/2
- SPCOL J,-W/2,-H/2,W,H,TRUE
- SPOFS J,999,999
- SPSETV J,1,0 ’タイリョク
- SPSETV J,3,999 ’サ゛ヒョウ
- SPSETV J,4,999 ’サ゛ヒョウ
- NEXT
- ’--- キャラクタテ゛ータ ナラヘ゛カエ
- DIM BF$(64)
- ’スフ゜ライトハ゛ンコ゛ウ 256-287
- CHRINIT ”SPU4”
- BFMAX=2*1*4 ’キャラクタスウ
- FOR C=0 TO 31*4 STEP BFMAX
- FOR I=0 TO BFMAX-1
- J=C+(I%2)
- J=J+FLOOR((I%4)/2)*4
- J=J+(FLOOR(I/4)%2)*2
- CHRREAD(”SPU4”,J),BF$(I)
- NEXT
- FOR I=0 TO BFMAX-1
- J=C+I
- CHRSET ”SPU4”,J,BF$(I)
- NEXT
- NEXT
- ’スフ゜ライトハ゛ンコ゛ウ 320-383
- CHRINIT ”SPU5”
- BFMAX=2*2*4 ’キャラクタスウ
- FOR C=0 TO 63*4 STEP BFMAX
- FOR I=0 TO BFMAX-1
- J=C+(I%2)
- J=J+FLOOR((I%4)/2)*4
- J=J+FLOOR(I/8)*8
- J=J+(FLOOR(I/4)%2)*2
- CHRREAD(”SPU5”,J),BF$(I)
- NEXT
- FOR I=0 TO BFMAX-1
- J=C+I
- CHRSET ”SPU5”,J,BF$(I)
- NEXT
- NEXT
- ’スフ゜ライトハ゛ンコ゛ウ 448-511
- CHRINIT ”SPU7”
- BFMAX=4*4*4 ’キャラクタスウ
- FOR C=0 TO 63*4 STEP BFMAX
- FOR I=0 TO BFMAX-1
- J=C+FLOOR(I/16)*16
- J=J+FLOOR((I%8)/2)*4
- J=J+(FLOOR(I/8)%2)*2
- J=J+(I%2)
- CHRREAD(”SPU7”,J),BF$(I)
- NEXT
- FOR I=0 TO BFMAX-1
- J=C+I
- CHRSET ”SPU7”,J,BF$(I)
- NEXT
- NEXT
- ’---
- RESTORE @TEKIDATA
- FOR I=0 TO TMAX-1
- READ TKC(I)
- READ TKPL(I)
- READ TKA(I)
- READ TKSC(I)
- READ TKW(I),TKH(I)
- READ TKHP(I),TKOF(I)
- NEXT
- @TEKIDATA
- ’ キャラ,ハ゜,アニ,スケール,W, H,HP,オフセット
- DATA 248,12, 8,150,16,16, 1,0
- DATA 40, 4, 2,120,16,16, 1,0
- DATA 237, 4, 2,120,16,16, 1,0
- DATA 169, 3, 1,200,16,16, 1,-0.01
- ’アイテム
- DATA 288, 4, 1,120,16,16, 4,1.57
- DATA 234, 4, 2,120,16,16, 4,1.57
- DATA 0, 0, 0, 0 , 0, 0, 0,0
- DATA 0, 0, 0, 0 , 0, 0, 0,0
- ’テキ
- DATA 136, 2, 1,120,16,16, 1,0
- DATA 176, 2, 2,180,16,16, 4,0
- DATA 376,12, 1,100,32,32, 1,0
- DATA 204, 4, 1,120,16,16, 1,0
- DATA 174, 3, 2,180,16,16, 2,0
- DATA 184, 3, 2,150,16,16, 2,4.71
- DATA 272,11, 3,100,32,16, 1,3.14
- DATA 178, 3, 6,150,16,16, 6,0
- DATA 380,12, 1,100,32,32, 2,3.14
- DATA 206,11, 1,150,16,16, 4,-1.57
- ’ミシヨウ
- DATA 0, 0, 0, 0 , 0, 0, 0,0
- DATA 0, 0, 0, 0 , 0, 0, 0,0
- ’ホ゛ス
- DATA 340,12, 1,200,32,32,70,1.56
- DATA 372,12, 1,200,32,32,90,3.13
- DATA 448,12, 1,120,64,64,90,0
- ’ミシヨウ
- DATA 0, 0, 0, 0 , 0, 0, 0,0
- DATA 0, 0, 0, 0 , 0, 0, 0,0
- DATA 0, 0, 0, 0 , 0, 0, 0,0
- PAL=10
- FOR Y=0 TO 63
- GOSUB @CLRBG0 ’BG0 テマエ
- GOSUB @CLRBG1 ’BG1 オク
- NEXT
- ’--- GRAPHIC
- FOR I=0 TO 400
- X=RND(256):Y=RND(196)
- GPSET X,Y,242+RND(5)
- NEXT
- RETURN
- ’---
- @TITLE
- BGMSTOP
- VISIBLE 1,1,0,0,1,1 ’BGOFF
- CLS
- COLOR 0
- BEEP 42
- RESTORE @TITLE2
- Y=4
- @TITLE1
- READ A$
- IF A$==”END” THEN @TITLE3
- Y=23
- GOSUB @PNTSUB
- VSYNC 3
- ’Y=Y+1
- GOTO @TITLE1
- @TITLE2
- DATA ”клк┗клклклклклклклклк┗кл”
- DATA ”л ┌┐ ─┐┌┐ ─ ── ┌┐ к”
- DATA ”к ┴┤●│ │┘│ ─│ ─┬ ●│┘│ л”
- DATA ”л ─┘─┘├┘─┘ ─┘ユж─┘イ─┘─┘ к”
- DATA ”к DANMAKU SHOOTING GAMEл”
- DATA ”лклклклклклклклклклклклк”
- DATA ””
- DATA ”HOW TO PLAY”
- DATA ””
- DATA ”[A]BUTTON:フツウ ショット”
- DATA ””
- DATA ”[B]BUTTON:スコ゛イ ホ゛ム”
- DATA ””
- DATA ”[П]BUTTON:シ゛キ イト゛ウ”
- DATA ””
- DATA ””
- DATA ””
- DATA ””
- DATA ””
- DATA ”PUSH ANY BUTTON”
- DATA ””
- DATA ”END”
- @TITLE3
- GOSUB @BTWAIT
- GOSUB @BTNOFF
- ’--- (カクシ キノウ)ムテキ
- IF BT AND 4+8 THEN DEBUG=DEBUG XOR 1
- ’--- (カクシ キノウ)メン セレクト
- IF BT AND 1 THEN LVL=LVL+1
- IF BT AND 2 THEN LVL=LVL-1
- IF LVL<1 THEN LVL=1
- IF LVL>99 THEN LVL=99
- IF (BT AND &HF)==0 THEN @TITLE4
- A$=”[↑↓]STAGE ”+STR$(LVL)+” ”
- Y=17
- GOSUB @PNTSUB
- A$=”フツウモ-ト゛”
- IF DEBUG THEN A$=”ムテキモ-ト゛”
- A$=”[←→]”+A$
- Y=19
- GOSUB @PNTSUB
- GOTO @TITLE3
- ’--- スタ-ト
- @TITLE4
- CLS
- VISIBLE 1,1,1,1,1,1
- RETURN
- ’--- テキスト
- @PNTSUB2
- COLOR 3
- MSG=4 ’ヒョウシ゛ シ゛カン
- @PNTSUB3
- Y=96/8
- @PNTSUB
- X=16-(LEN(A$)/2)
- LOCATE X,Y
- PRINT A$
- RETURN
- ’--- ホ゛タン オス
- @BTWAIT
- VSYNC 1
- BT=BUTTON()
- IF BT==0 THEN @BTWAIT
- BEEP 3
- RETURN
- ’--- ホ゛タン ハナス
- @BTNOFF
- VSYNC 1
- IF BUTTON() THEN @BTNOFF
- RETURN
- ’┌─────────────────────────┐
- ’│オワリ │
- ’└─────────────────────────┘