プチコンmkII

  1. ’┌──────────────────┐
  2. ’│SAGAME4           │
  3. ’│ タ゛ンマクシューティンク゛ケ゛ーム│
  4. ’└──────────────────┘
  5. @START
  6. GOSUB @INIT
  7. GOSUB @TITLE
  8. OVR=0
  9. SHIP=3 ’サ゛ンキ
  10. SC=0   ’SCORE
  11. STA=4
  12. BOSS=0
  13. NOW=MAINCNTL
  14. FPS=0:CNT=NOW
  15. ’--- MAIN LOOP
  16. @MAIN
  17. GOSUB @MYMOVE
  18. GOSUB @MYSHOT
  19. GOSUB @TKMOVE
  20. GOSUB @MAPCTR
  21. FPS=FPS+1
  22. NOW=MAINCNTL
  23. VSYNC 1
  24. IF NOW<CNT THEN CNT=NOW
  25. IF (NOW-CNT)<60 THEN @MAIN
  26. CNT=NOW
  27. LOCATE 0,1
  28. COLOR 0
  29. PRINT ”  SHIP  ”;SHIP;” ”
  30. PRINT ”  SCORE ”;SC
  31. IF BOMB==0 THEN COLOR 13
  32. PRINT ”  BOMB  ”;BOMB;” ”
  33. IF DEBUG THEN PRINT FPS;”FPS ”;
  34. FPS=0
  35. IF MSG THEN MSG=MSG-1
  36. IF MSG THEN @MAIN
  37. A$=”           ”:GOSUB @PNTSUB3
  38. IF SHIP==0 THEN @START
  39. IF OVR==0 THEN @MAIN
  40. STA=4
  41. OVR=0
  42. GOTO @MAIN
  43. ’--- シ゛キ イト゛ウ
  44. @MYMOVE
  45. IF OVR THEN @MYDEAD
  46. BT=BUTTON()
  47. IF (BT AND 1) THEN AY=AY-AD
  48. IF (BT AND 2) THEN AY=AY+AD
  49. IF (BT AND 4) THEN AX=AX-AD
  50. IF (BT AND 8) THEN AX=AX+AD
  51. IF AX<16  THEN AX=16
  52. IF AX>247 THEN AX=247
  53. IF AY<8   THEN AY=8
  54. IF AY>176 THEN AY=176
  55. SPOFS AN,AX,AY
  56. IF STA THEN @MYSTART
  57. ’--- シ゛キ アタリ ハンテイ
  58. IF SPHIT(AN,0)==0 THEN RETURN
  59. J=SPHITNO
  60. IF J<FN OR J>=FN+FMAX THEN RETURN
  61. C=SPGETV(J,0)
  62. IF C==0 THEN RETURN   ’ハ゛クフウ
  63. IF C==4 THEN @ONEUP   ’1UP
  64. IF C==5 THEN @BOMBADD ’BOMB
  65. IF DEBUG THEN RETURN
  66. OVR=1
  67. BEEP 13
  68. GOSUB @MYDEAD
  69. SHIP=SHIP-1
  70. IF SHIP==0 THEN @GMOVER
  71. MSG=1
  72. RETURN
  73. ’--- GAME OVER
  74. @GMOVER
  75. BGMN=6
  76. BGMPLAY BGMN
  77. A$=”GAME OVER”:GOSUB @PNTSUB2
  78. BGMSTOP
  79. RETURN
  80. ’--- 
  81. @PAUSE
  82. COLOR 12
  83. BGMSTOP
  84. I=0
  85. @PAUSE2
  86. IF I==0 THEN A$=”→ツツ゛ケル  シ゛ハ゛ク”
  87. IF I==1 THEN A$=” ツツ゛ケル →シ゛ハ゛ク”
  88. GOSUB @PNTSUB3
  89. GOSUB @BTNOFF
  90. GOSUB @BTWAIT
  91. IF (BT AND &HF) THEN I=I XOR 1
  92. IF (BT AND &H4F0)==0 THEN @PAUSE2
  93. CLS
  94. GOSUB @BTNOFF
  95. IF I==0 THEN BGMPLAY BGMN:RETURN
  96. SHIP=0:OVR=1:MSG=3
  97. RETURN
  98. ’--- GET 1UP
  99. @ONEUP
  100. BEEP 7
  101. SHIP=SHIP+1
  102. GOTO @ITEMCLR
  103. ’--- GET BOMB
  104. @BOMBADD
  105. BEEP 12
  106. BOMB=BOMB+1
  107. @ITEMCLR
  108. SPOFS FN+J,0,999
  109. SPSETV FN+J,4,999 ’Y
  110. SPSETV FN+J,1,0   ’HP
  111. RETURN
  112. ’---BOMB ツカウ
  113. @BOMB
  114. IF BUSY THEN RETURN
  115. IF BOMB==0 THEN RETURN
  116. BUSY=3    ’レンソ゛ク シヨウ サセナイ
  117. BOMB=BOMB-1
  118. FOR J=0 TO FMAX-1
  119.  GOSUB @TKDAMAGE  ’テキ タ゛メーシ゛
  120. NEXT
  121. ’--- ホ゛ム シカクコウカ
  122. FOR I=0 TO BMAX-1
  123.  SPCHR BN+I,143
  124.  SPOFS BN+I,AX,AY
  125. NEXT
  126. FOR I=0 TO BMAX-1
  127.  R=RAD(I*360/BMAX)
  128.  X=AX+COS(R)*300
  129.  Y=AY+SIN(R)*300
  130.  SPOFS BN+I,X,Y,60
  131. NEXT
  132. RETURN
  133. ’--- シ゛キ スタート
  134. @MYSTART
  135. IF STA<4 THEN @MYSTA2
  136. BEEP 6
  137. AX=128:AY=200
  138. BOMB=3 ’ホ゛ム ショキソウヒ゛
  139. BUSY=2
  140. @MYSTA2
  141. AY=AY-(STA/4)
  142. STA=STA-0.05
  143. IF STA<=0 THEN STA=0
  144. IF RND(15) THEN RETURN
  145. X=AX:Y=AY+16
  146. NEWR=RAD(90):GOSUB @TKSMOKE
  147. RETURN
  148. ’--- シ゛キ ハ゛クハツ
  149. @MYDEAD
  150. BT=0
  151. NEWR=RAD(RND(360))
  152. X=AX:Y=AY:GOSUB @TKSMOKE
  153. SPOFS AN,999,999
  154. IF RND(10)==0 THEN BEEP 37
  155. RETURN
  156. ’--- タマ ショリ
  157. @MYSHOT
  158. ’---[B]BUTTON=ホ゛ム
  159. IF (BT AND 32) THEN @BOMB
  160. IF (FPS%8) THEN RETURN
  161. IF BUSY THEN BUSY=BUSY-1:RETURN
  162. ’---[A]BUTTON=SHOT
  163. IF (BT AND 16) THEN @MYFIRE
  164. ’---[Y]BUTTON=SHOT
  165. IF (BT AND 128) THEN @MYFIREY
  166. IF (BT AND 1024) THEN @PAUSE
  167. RETURN
  168. ’--- タマ ハッシャ
  169. @MYFIRE
  170. X=AX:Y=AY
  171. X1=0:GOTO @MYFIRE2
  172. @MYFIREY
  173. X=AX:Y=AY
  174. X1= 90
  175. IF (FPS%16)<8 THEN X1=-X1
  176. GOTO @MYFIRE2
  177. @MYFIRE2
  178. I=BN
  179. @MYFIRE3
  180. ’--- スフ゜ライトノ アキ サカ゛ス
  181. IF SPCHK(I)==0 THEN @MYFIRE4
  182. I=I+1
  183. IF I<BN+BMAX THEN @MYFIRE3
  184. RETURN  ’アキカ゛ ナイ
  185. @MYFIRE4  ’アキ ケンシュツ
  186. SPCHR I,37
  187. SPOFS I,X,Y
  188. SPOFS I,X+X1,Y-192,30
  189. RETURN
  190. ’--- テキ イト゛ウ
  191. @TKMOVE
  192. FOR I=0 TO FMAX-1
  193.  Y=SPGETV(FN+I,4)  ’サ゛ヒョウ
  194.  IF Y==999 THEN @TKMOVE2
  195.  C=SPGETV(FN+I,0)  ’シュルイ
  196.  T=SPGETV(FN+I,2)  ’ト゛ウサ シ゛カン
  197.  SPSETV FN+I,2,T+1 ’シ゛カン+1
  198.  X=SPGETV(FN+I,3)  ’サ゛ヒョウ
  199.  R=FR(I)           ’カクト゛
  200.  GOSUB JMPTBL$(C)
  201.  X=X+COS(R)*FD
  202.  Y=Y+SIN(R)*FD
  203.  IF X<-8  OR X>263 THEN Y=999
  204.  IF Y<-31 OR Y>199 THEN Y=999
  205.  SPSETV FN+I,3,X   ’サ゛ヒョウ
  206.  SPSETV FN+I,4,Y   ’
  207.  SPOFS FN+I,X,Y
  208.  IF FR(I)!=R THEN FR(I)=R:SPANGLE FN+I,FLOOR(DEG(R-TKOF(C)))
  209.  GOSUB @HITCHK
  210. @TKMOVE2
  211. NEXT
  212. RETURN
  213. ’--- SMOKE
  214. @TK0
  215. FD=T/15
  216. X=X+RND(5)-2
  217. Y=Y+RND(5)-2
  218. IF T>40 THEN Y=999
  219. RETURN
  220. ’--- FIRE
  221. @TK1
  222. FD=2
  223. RETURN
  224. ’--- HOMING
  225. @TK2
  226. FD=T/17
  227. IF RND(3) THEN RETURN
  228. GOSUB @TRKING
  229. R=R+(SGN(R1)*0.04)
  230. RETURN
  231. ’--- BEAM
  232. @TK3
  233. FD=FLOOR(T*T/200)
  234. IF FD>6 THEN FD=6
  235. RETURN
  236. ’--- 1UP
  237. @TK4
  238. FD=0
  239. Y=Y+((T-35)/30)
  240. RETURN
  241. ’--- BOMB
  242. @TK5
  243. FD=0.5
  244. X=X+COS(RAD((T*2)%360))*2
  245. RETURN
  246. @TK6
  247. RETURN
  248. @TK7
  249. RETURN
  250. ’--- S CURVE
  251. @TK8
  252. FD=2
  253. R1=RAD(180/50)
  254. IF ABS(50-(T%100))<26 THEN R1=-R1
  255. R=R+R1
  256. IF (T%20) THEN RETURN
  257. NEWR=R:GOSUB @TKFIRE
  258. RETURN
  259. ’--- SW BACK
  260. @TK9
  261. R=SGN(70-T)*1.57
  262. FD=FLOOR(ABS(60-T)/20)
  263. IF FD>0 THEN RETURN
  264. IF (T%16) THEN RETURN
  265. IF RND(10)>LVL THEN RETURN
  266. BEEP 38
  267. NEWR=RAD(90):NEWC=2:GOSUB @TKBORN
  268. RETURN
  269. ’--- V SHOT
  270. @TK10
  271. FD=FLOOR(ABS(60-T)/18)
  272. IF T>100 THEN RETURN
  273. IF FD>0 THEN RETURN
  274. GOSUB @TRKING
  275. R=R+(SGN(R1)*0.05)
  276. IF (T%14) THEN RETURN
  277. NEWR=R-0.3:GOSUB @TKFIRE
  278. NEWR=R+0.3:GOSUB @TKFIRE
  279. BEEP 4
  280. RETURN
  281. ’--- U TURN
  282. @TK11
  283. FD=ABS(70-T)/15
  284. R1=RAD(180/140)
  285. IF (I%2) THEN R1=-R1
  286. R=R+R1
  287. IF FD>1 OR (T%15) THEN RETURN
  288. NEWR=ATAN(AY-Y,AX-X)
  289. GOSUB @TKFIRE
  290. BEEP 4
  291. RETURN
  292. ’--- SPIN
  293. @TK12
  294. FD=2
  295. IF T>170 THEN RETURN
  296. IF T>100 THEN @TKA12B
  297. IF (T%30) THEN RETURN
  298. J=85+FLOOR(I%2)*85
  299. R=ATAN(64-Y,J-X)
  300. RETURN
  301. @TKA12B
  302. FD=0
  303. IF (T%8) THEN RETURN
  304. R=R+0.8
  305. NEWR=R:GOSUB @TKFIRE
  306. RETURN
  307. ’--- UFO
  308. @TK13
  309. FD=1+(T/150)
  310. IF RND(4)==0 THEN R=R-RAD(8)
  311. IF RND(4)==0 THEN R=R+RAD(8)
  312. IF (T%60) THEN RETURN
  313. NEWR=ATAN(AY-Y,AX-X)
  314. GOSUB @TKFIRE
  315. RETURN
  316. ’--- HOMING MISSILE
  317. @TK14
  318. IF T>240 THEN J=I:GOTO @TKDEAD
  319. FD=3.5-(T/35)
  320. IF FD<1.6 THEN FD=1.6
  321. GOSUB @TRKING
  322. R=R+(SGN(R1)*0.05)
  323. RETURN
  324. ’--- SIDE SHOT
  325. @TK15
  326. FD=FLOOR((T%90)/30)
  327. IF ABS(AY-Y)>20 THEN RETURN
  328. IF (T%20) THEN RETURN
  329. NEWR=RAD(  0):GOSUB @TKFIRE
  330. NEWR=RAD(180):GOSUB @TKFIRE
  331. RETURN
  332. ’--- NEAR MISS
  333. @TK16
  334. FD=2.2
  335. J=T%64
  336. IF J THEN RETURN
  337. R=ATAN(120,(AX-48+RND(96))-X)
  338. RETURN
  339. ’--- TSUBO
  340. @TK17
  341. J=T%60
  342. FD=0
  343. Y=Y+1
  344. IF J==59 THEN @TK17B
  345. IF J>30 THEN RETURN
  346. GOSUB @TRKING
  347. R=R+(SGN(R1)*0.04)
  348. RETURN
  349. @TK17B
  350. NEWR=R:GOSUB @TKFIRE
  351. RETURN
  352. ’--- 
  353. @TK18
  354. @TK19
  355. RETURN
  356. ’--- BOSS1
  357. @TK20
  358. FD=0.5
  359. IF T<90*2 THEN RETURN
  360. FD=0
  361. X=X+COS(RAD((T%90)*4))*2
  362. Y=Y+SIN(RAD((T%40)*9))*2
  363. IF (T%40) THEN RETURN
  364. IF (T%200)<20*LVL THEN @TK20B
  365. FOR NEWR=0 TO 3.14 STEP 0.45
  366.  GOSUB @TKFIRE
  367. NEXT
  368. BEEP 11
  369. RETURN
  370. @TK20B
  371. TY=Y
  372. NEWR=RAD(90)
  373. GOSUB @TKBEAM
  374. Y=Y-32
  375. GOSUB @TKBEAM
  376. Y=Y-32
  377. GOSUB @TKBEAM
  378. Y=TY
  379. BEEP 5
  380. RETURN
  381. ’--- BOSS2
  382. @TK21
  383. FD=0.5
  384. IF T<90*2 THEN RETURN
  385. FD=0
  386. J=130-(LVL*4)
  387. IF J<100 THEN J=100
  388. J=T%J
  389. IF J>=90 THEN @TK21B
  390. X=X+COS(RAD(J*4))*1.5
  391. GOSUB @TRKING
  392. R=R+(SGN(R1)*0.01)
  393. IF (T%40) THEN RETURN
  394. FOR NEWR=0 TO 3.14 STEP 0.6
  395.  GOSUB @TKFIRE
  396. NEXT
  397. RETURN
  398. @TK21B
  399. IF (T%5) THEN RETURN
  400. IF RND(14) THEN BEEP 6
  401. TX=X:TY=Y
  402. NEWR=R
  403. X=TX+COS(NEWR)*30
  404. Y=TY+SIN(NEWR)*30
  405. GOSUB @TKBEAM
  406. X=TX:Y=TY
  407. RETURN
  408. ’--- BOSS3
  409. @TK22
  410. FD=((90*2)-T)/220
  411. IF T<90*2 THEN RETURN ’トウシ゛ョウ
  412. FD=0
  413. J=T%360
  414. IF J<180 THEN @TK22B
  415. X=X+COS(RAD((J*2)%360))
  416. IF (T%90)==0 THEN @TK22D
  417. IF (T%12)==0 THEN @TK22C
  418. RETURN
  419. @TK22B
  420. Y=Y+(90-J)/40
  421. IF (T%30) THEN RETURN
  422. BEEP 9
  423. FOR NEWR=0 TO 6.28 STEP 0.7
  424. GOSUB @TKFIRE
  425. NEXT
  426. RETURN
  427. @TK22C
  428. IF LVL<RND(20) THEN RETURN
  429. BEEP 38
  430. TX=X  ’BACKUP
  431. X=TX+RND(2)*80-40
  432. NEWR=RAD(90)
  433. NEWC=2
  434. GOSUB @TKBORN
  435. X=TX
  436. RETURN
  437. @TK22D
  438. BEEP 11
  439. NEWR=RAD(270)
  440. NEWC=14
  441. GOSUB @TKBORN
  442. RETURN
  443. @TK23
  444. @TK24
  445. @TK25
  446. RETURN
  447. ’--- シ゛キ ヲ ツイセキ
  448. @TRKING
  449. R1=ATAN(AY-Y,AX-X)-R
  450. IF R1> 3.14 THEN R1=R1-6.28
  451. IF R1<-3.14 THEN R1=R1+6.28
  452. RETURN
  453. ’--- テキ+タマ アタリ ハンテイ
  454. @HITCHK
  455. IF Y==999 THEN RETURN
  456. IF C<8 THEN RETURN  ’ムテキキャラ
  457. IF SPHIT(FN+I,BN)==0 THEN RETURN
  458. J=SPHITNO
  459. IF (J<BN) OR (J>=BN+BMAX) THEN RETURN
  460. IF SPCHK(J)==0 THEN RETURN
  461. SPOFS J,0,999
  462. J=I
  463. @TKDAMAGE
  464. NN=FN+J
  465. IF SPGETV(NN,4)==999 THEN RETURN
  466. C=SPGETV(NN,0)
  467. IF C<1 THEN RETURN
  468. HP=SPGETV(NN,1)
  469. IF HP THEN HP=HP-1  ’テキ タイリョク-1
  470. SPSETV NN,1,HP
  471. IF HP THEN BEEP 0,2048:RETURN
  472. X=SPGETV(NN,3)  ’サ゛ヒョウ
  473. Y=SPGETV(NN,4)  ’サ゛ヒョウ
  474. BEEP 13,2096
  475. GOSUB @TKDEAD
  476. SC=SC+1
  477. IF C<8 THEN RETURN
  478. ’アイテム ニ シナイ
  479. IF C<20 THEN @HITCHK2
  480. ’--- ホ゛ス タオシタ
  481. @BOSDEAD
  482. BGMN=15
  483. BGMPLAY BGMN
  484. LVL=LVL+1
  485. BOSS=BOSPOS+10000
  486. RETURN
  487. ’--- テキヲ タオシタ
  488. @HITCHK2
  489. IF RND(8)==0 THEN NEWC=4:GOTO @ITEMADD ’1UP
  490. IF RND(8)==0 THEN NEWC=5:GOTO @ITEMADD ’BOMB
  491. RETURN
  492. @ITEMADD  ’アイテム ハッセイ
  493. NEWR=RAD(90)
  494. GOSUB @TKBORN2
  495. RETURN
  496. ’--- ハイケイ ショリ
  497. @MAPCTR
  498. ’--- BG0 テマエ スクロ-ル
  499. HY=(HY-1)AND 511
  500. BGOFS 0,0,HY
  501. GOSUB @DRAWBG0
  502. ’--- BG1 オク スクロ-ル
  503. IF (HY%4) THEN RETURN
  504. GY=(GY-1)AND 511
  505. BGOFS 1,0,GY
  506. GOSUB @DRAWBG1
  507. IF OVR OR MSG THEN RETURN
  508. IF BOSS==0 THEN A$=”STAGE ”+STR$(LVL):BGMN=23:BGMPLAY BGMN:GOSUB @PNTSUB2
  509. BOSS=BOSS+1
  510. IF BOSS>=BOSPOS THEN @BOSS1
  511. ’--- テキシュツケ゛ン ショリ
  512. IF (GY%4) THEN RETURN
  513. IF RND(12)>LVL THEN RETURN
  514. X=RND(256-64)+32:Y=-24
  515. NEWC=FLOOR((GY/(4*5))%10)+8
  516. NEWR=RAD(90)
  517. GOSUB @TKBORN
  518. RETURN
  519. ’--- ホ゛ス シュツケ゛ン ショリ
  520. @BOSS1
  521. J=BOSS-BOSPOS
  522. IF J>10050 THEN BOSS=0:RETURN
  523. IF J>10000 THEN @BOSS3
  524. IF J>1500  THEN @BOSS4
  525. IF J>900   THEN RETURN
  526. IF J>20    THEN @BOSS2
  527. ’--- ホ゛ス テマエ
  528. IF BOSS!=BOSPOS THEN RETURN
  529. BGMN=13
  530. BGMPLAY BGMN
  531. A$=”WARNING!!”:GOSUB @PNTSUB2
  532. RETURN
  533. ’--- ホ゛ス トウシ゛ョウ
  534. @BOSS2
  535. X=128:Y=-31
  536. NEWC=20+((LVL-1) % 3)
  537. NEWR=RAD(90)
  538. GOSUB @TKBORN
  539. IF J>=0 THEN BOSS=BOSPOS+900
  540. RETURN
  541. ’--- ホ゛ス タイシ゛ョウ
  542. @BOSS3
  543. X=128+RND(128)-64
  544. Y=96+RND(96)-48
  545. NEWR=RAD(RND(360))
  546. IF RND(10)==0 THEN BEEP 13
  547. GOSUB @TKSMOKE
  548. RETURN
  549. ’--- ホ゛ス シ゛ハ゛ク
  550. @BOSS4
  551. FOR J=0 TO FMAX-1
  552.  X=SPGETV(FN+J,3)  ’サ゛ヒョウ
  553.  Y=SPGETV(FN+J,4)  ’サ゛ヒョウ
  554.  IF Y!=999 THEN GOSUB @TKDEAD
  555. NEXT
  556. GOSUB @BOSDEAD
  557. RETURN
  558. ’--- テキ ハ゛クハツ
  559. @TKDEAD
  560. NEWC=0
  561. GOTO @TKBORN2
  562. ’--- BEAM
  563. @TKBEAM
  564. NEWC=3
  565. GOTO @TKBORN
  566. ’--- ハ゛クハツ
  567. @TKSMOKE
  568. NEWC=0
  569. GOTO @TKBORN
  570. ’--- テキタ゛ンハッシャ
  571. @TKFIRE
  572. NEWC=1
  573. IF RND(9)>LVL THEN RETURN
  574. GOTO @TKBORN
  575. ’--- テキ/エフェクト シュツケ゛ン
  576. @TKBORN
  577. J=0
  578. @TKBORN1  ’スフ゜ライト ノ アキ サカ゛ス
  579. IF SPGETV(FN+J,4)==999 THEN @TKBORN2
  580. J=J+1
  581. IF J<FMAX THEN @TKBORN1
  582. J=-1   ’アキカ゛ ナイ
  583. RETURN
  584. @TKBORN2  ’スフ゜ライト ノ アキケンシュツ
  585. W=TKW(NEWC)
  586. H=TKH(NEWC)
  587. NN=FN+J
  588. SPSET NN,TKC(NEWC),TKPL(NEWC),0,0,1,W,H
  589. SPHOME NN,W/2,H/2
  590. SPCOL NN,-W/2,-H/2,W,H,TRUE
  591. SPOFS NN,X,Y
  592. SPSCALE NN,TKSC(NEWC)
  593. SPANIM NN,TKA(NEWC),8
  594. SPANGLE NN,FLOOR(DEG(NEWR-TKOF(NEWC)))
  595. FR(J)=NEWR
  596. SPSETV NN,0,NEWC ’シュルイ
  597. SPSETV NN,1,TKHP(NEWC) ’タイリョク
  598. SPSETV NN,2,0    ’ト゛ウサ シ゛カン
  599. SPSETV NN,3,X    ’サ゛ヒョウ
  600. SPSETV NN,4,Y    ’サ゛ヒョウ
  601. RETURN
  602. ’---BG0 テマエ
  603. @DRAWBG0
  604. IF (HY%8) THEN RETURN
  605. PAL=10+((LVL+2)%5)
  606. Y=((HY/8)-1)AND 63
  607. IF BOSS>(BOSPOS+1040) THEN @CLRBG0
  608. FOR X=0 TO 31
  609.  C=0
  610.  IF X<=1  THEN C=796+X+(Y%4)*32
  611.  IF X>=30 THEN C=768+X+(Y%4)*32
  612.  BGPUT 0,X,Y,C,PAL,0,0
  613. NEXT
  614. RETURN
  615. @CLRBG0
  616. FOR X=0 TO 31
  617.  C=0:BGPUT 0,X,Y,C,PAL,0,0
  618. NEXT
  619. RETURN
  620. ’---BG1 オク
  621. @DRAWBG1
  622. IF (GY%8) THEN RETURN
  623. Y=((GY/8)-1)AND 63
  624. IF BOSS>BOSPOS THEN @CLRBG1
  625. PAL=10+(LVL%5)
  626. FOR X=0 TO 31
  627.  C=RND(4)+790
  628.  J=ABS(X-16)
  629.  IF J>4 AND ((Y%8)>1) THEN C=0
  630.  BGPUT 1,X,Y,C,PAL,0,0
  631. NEXT
  632. RETURN
  633. @CLRBG1
  634. FOR X=0 TO 31
  635.  C=0:BGPUT 1,X,Y,C,PAL,0,0
  636. NEXT
  637. RETURN
  638. ’--- ショキカ
  639. @INIT
  640. CLEAR
  641. ACLS
  642. LVL=1
  643. GY=0:HY=0   ’BG サ゛ヒョウ
  644. BOSPOS=300  ’ホ゛ス トウシ゛ョウ シ゛キ
  645. BMAX=16  ’タマシュツケ゛ンスウ
  646. FMAX=32  ’テキシュツケ゛ンスウ
  647. TMAX=26  ’テキノ シュルイ
  648. DIM FR(FMAX)
  649. DIM TKC(TMAX)  ’キャラクタ
  650. DIM TKPL(TMAX) ’ハ゜レット
  651. DIM TKA(TMAX)  ’アニメ スウ
  652. DIM TKW(TMAX)  ’ハハ゛
  653. DIM TKH(TMAX)  ’タカサ
  654. DIM TKSC(TMAX) ’スケール
  655. DIM TKHP(TMAX) ’タイリョク
  656. DIM TKOF(TMAX) ’カイテン オフセット
  657. DIM JMPTBL$(TMAX)
  658. FOR I=0 TO TMAX-1
  659.  JMPTBL$(I)=”@TK”+STR$(I)
  660. NEXT
  661. AN=60   ’シ゛キ スフ゜ライトNO.
  662. BN=62   ’タマ スフ゜ライトNO.
  663. FN=0    ’テキ スフ゜ライトNO.
  664. ’--- シ゛キ ショキカ
  665. PAL=11
  666. AD=3
  667. W=16:H=32
  668. SPSET AN,288,PAL,0,0,1,W,H
  669. SPHOME AN,W/2,H/2
  670. SPCOL AN,-W/4,-H/4,W/2,H/2,FALSE
  671. SPOFS AN,999,999
  672. ’--- タマ ショキカ
  673. PAL=4
  674. W=16:H=16
  675. FOR I=0 TO BMAX-1
  676.  J=BN+I     ’カンリ ハ゛ンコ゛ウ
  677.  SPSET J,37,PAL,0,0,1,W,H
  678.  SPHOME J,W/2,H/2
  679.  SPCOL J,-W/2,-H/2,W,H,FALSE
  680.  SPOFS J,999,999
  681. NEXT
  682. ’--- テキ ショキカ
  683. PAL=3
  684. FOR I=0 TO FMAX-1
  685.  J=FN+I     ’カンリ ハ゛ンコ゛ウ
  686.  SPSET J,142,PAL,0,0,1,W,H
  687.  SPHOME J,W/2,H/2
  688.  SPCOL J,-W/2,-H/2,W,H,TRUE
  689.  SPOFS J,999,999
  690.  SPSETV J,1,0    ’タイリョク
  691.  SPSETV J,3,999  ’サ゛ヒョウ
  692.  SPSETV J,4,999  ’サ゛ヒョウ
  693. NEXT
  694. ’--- キャラクタテ゛ータ ナラヘ゛カエ
  695. DIM BF$(64)
  696. ’スフ゜ライトハ゛ンコ゛ウ 256-287
  697. CHRINIT ”SPU4”
  698. BFMAX=2*1*4   ’キャラクタスウ
  699. FOR C=0 TO 31*4 STEP BFMAX
  700.  FOR I=0 TO BFMAX-1
  701.   J=C+(I%2)
  702.   J=J+FLOOR((I%4)/2)*4
  703.   J=J+(FLOOR(I/4)%2)*2
  704.   CHRREAD(”SPU4”,J),BF$(I)
  705.  NEXT
  706.  FOR I=0 TO BFMAX-1
  707.   J=C+I
  708.   CHRSET ”SPU4”,J,BF$(I)
  709.  NEXT
  710. NEXT
  711. ’スフ゜ライトハ゛ンコ゛ウ 320-383
  712. CHRINIT ”SPU5”
  713. BFMAX=2*2*4   ’キャラクタスウ
  714. FOR C=0 TO 63*4 STEP BFMAX
  715.  FOR I=0 TO BFMAX-1
  716.   J=C+(I%2)
  717.   J=J+FLOOR((I%4)/2)*4
  718.   J=J+FLOOR(I/8)*8
  719.   J=J+(FLOOR(I/4)%2)*2
  720.   CHRREAD(”SPU5”,J),BF$(I)
  721.  NEXT
  722.  FOR I=0 TO BFMAX-1
  723.   J=C+I
  724.   CHRSET ”SPU5”,J,BF$(I)
  725.  NEXT
  726. NEXT
  727. ’スフ゜ライトハ゛ンコ゛ウ 448-511
  728. CHRINIT ”SPU7”
  729. BFMAX=4*4*4   ’キャラクタスウ
  730. FOR C=0 TO 63*4 STEP BFMAX
  731.  FOR I=0 TO BFMAX-1
  732.   J=C+FLOOR(I/16)*16
  733.   J=J+FLOOR((I%8)/2)*4
  734.   J=J+(FLOOR(I/8)%2)*2
  735.   J=J+(I%2)
  736.   CHRREAD(”SPU7”,J),BF$(I)
  737.  NEXT
  738.  FOR I=0 TO BFMAX-1
  739.   J=C+I
  740.   CHRSET ”SPU7”,J,BF$(I)
  741.  NEXT
  742. NEXT
  743. ’--- 
  744. RESTORE @TEKIDATA
  745. FOR I=0 TO TMAX-1
  746.  READ TKC(I)
  747.  READ TKPL(I)
  748.  READ TKA(I)
  749.  READ TKSC(I)
  750.  READ TKW(I),TKH(I)
  751.  READ TKHP(I),TKOF(I)
  752. NEXT
  753. @TEKIDATA
  754. ’    キャラ,ハ゜,アニ,スケール,W, H,HP,オフセット
  755. DATA 248,12, 8,150,16,16, 1,0
  756. DATA  40, 4, 2,120,16,16, 1,0
  757. DATA 237, 4, 2,120,16,16, 1,0
  758. DATA 169, 3, 1,200,16,16, 1,-0.01
  759. ’アイテム
  760. DATA 288, 4, 1,120,16,16, 4,1.57
  761. DATA 234, 4, 2,120,16,16, 4,1.57
  762. DATA   0, 0, 0, 0 , 0, 0, 0,0
  763. DATA   0, 0, 0, 0 , 0, 0, 0,0
  764. ’テキ
  765. DATA 136, 2, 1,120,16,16, 1,0
  766. DATA 176, 2, 2,180,16,16, 4,0
  767. DATA 376,12, 1,100,32,32, 1,0
  768. DATA 204, 4, 1,120,16,16, 1,0
  769. DATA 174, 3, 2,180,16,16, 2,0
  770. DATA 184, 3, 2,150,16,16, 2,4.71
  771. DATA 272,11, 3,100,32,16, 1,3.14
  772. DATA 178, 3, 6,150,16,16, 6,0
  773. DATA 380,12, 1,100,32,32, 2,3.14
  774. DATA 206,11, 1,150,16,16, 4,-1.57
  775. ’ミシヨウ
  776. DATA   0, 0, 0, 0 , 0, 0, 0,0
  777. DATA   0, 0, 0, 0 , 0, 0, 0,0
  778. ’ホ゛ス
  779. DATA 340,12, 1,200,32,32,70,1.56
  780. DATA 372,12, 1,200,32,32,90,3.13
  781. DATA 448,12, 1,120,64,64,90,0
  782. ’ミシヨウ
  783. DATA   0, 0, 0, 0 , 0, 0, 0,0
  784. DATA   0, 0, 0, 0 , 0, 0, 0,0
  785. DATA   0, 0, 0, 0 , 0, 0, 0,0
  786. PAL=10
  787. FOR Y=0 TO 63
  788.  GOSUB @CLRBG0 ’BG0 テマエ
  789.  GOSUB @CLRBG1 ’BG1 オク
  790. NEXT
  791. ’--- GRAPHIC
  792. FOR I=0 TO 400
  793.  X=RND(256):Y=RND(196)
  794.  GPSET X,Y,242+RND(5)
  795. NEXT
  796. RETURN
  797. ’--- 
  798. @TITLE
  799. BGMSTOP
  800. VISIBLE 1,1,0,0,1,1  ’BGOFF
  801. CLS
  802. COLOR 0
  803. BEEP 42
  804. RESTORE @TITLE2
  805. Y=4
  806. @TITLE1
  807. READ A$
  808. IF A$==”END” THEN @TITLE3
  809. Y=23
  810. GOSUB @PNTSUB
  811. VSYNC 3
  812. ’Y=Y+1
  813. GOTO @TITLE1
  814. @TITLE2
  815. DATA ”клк┗клклклклклклклклк┗кл”
  816. DATA ”л ┌┐  ─┐┌┐ ─   ──   ┌┐ к”
  817. DATA ”к ┴┤●│ │┘│ ─│  ─┬ ●│┘│ л”
  818. DATA ”л ─┘─┘├┘─┘ ─┘ユж─┘イ─┘─┘ к”
  819. DATA ”к DANMAKU SHOOTING GAMEл”
  820. DATA ”лклклклклклклклклклклклк”
  821. DATA ””
  822. DATA ”HOW TO PLAY”
  823. DATA ””
  824. DATA ”[A]BUTTON:フツウ ショット”
  825. DATA ””
  826. DATA ”[B]BUTTON:スコ゛イ ホ゛ム”
  827. DATA ””
  828. DATA ”[П]BUTTON:シ゛キ イト゛ウ”
  829. DATA ””
  830. DATA ””
  831. DATA ””
  832. DATA ””
  833. DATA ””
  834. DATA ”PUSH ANY BUTTON”
  835. DATA ””
  836. DATA ”END”
  837. @TITLE3
  838. GOSUB @BTWAIT
  839. GOSUB @BTNOFF
  840. ’--- (カクシ キノウ)ムテキ
  841. IF BT AND 4+8 THEN DEBUG=DEBUG XOR 1
  842. ’--- (カクシ キノウ)メン セレクト 
  843. IF BT AND 1 THEN LVL=LVL+1
  844. IF BT AND 2 THEN LVL=LVL-1
  845. IF LVL<1  THEN LVL=1
  846. IF LVL>99 THEN LVL=99
  847. IF (BT AND &HF)==0 THEN @TITLE4
  848. A$=”[↑↓]STAGE ”+STR$(LVL)+” ”
  849. Y=17
  850. GOSUB @PNTSUB
  851. A$=”フツウモ-ト゛”
  852. IF DEBUG THEN A$=”ムテキモ-ト゛”
  853. A$=”[←→]”+A$
  854. Y=19
  855. GOSUB @PNTSUB
  856. GOTO @TITLE3
  857. ’--- スタ-ト
  858. @TITLE4
  859. CLS
  860. VISIBLE 1,1,1,1,1,1
  861. RETURN
  862. ’--- テキスト
  863. @PNTSUB2
  864. COLOR 3
  865. MSG=4   ’ヒョウシ゛ シ゛カン
  866. @PNTSUB3
  867. Y=96/8
  868. @PNTSUB
  869. X=16-(LEN(A$)/2)
  870. LOCATE X,Y
  871. PRINT A$
  872. RETURN
  873. ’--- ホ゛タン オス
  874. @BTWAIT
  875. VSYNC 1
  876. BT=BUTTON()
  877. IF BT==0 THEN @BTWAIT
  878. BEEP 3
  879. RETURN
  880. ’--- ホ゛タン ハナス
  881. @BTNOFF
  882. VSYNC 1
  883. IF BUTTON() THEN @BTNOFF
  884. RETURN
  885. ’┌─────────────────────────┐
  886. ’│オワリ                      │
  887. ’└─────────────────────────┘