WALL by ノトホホ

再生

 雑誌『日経ソフトウエア』10月号('11年8月24日発売)連動企画! 第2特集「『プチコン』でニンテンドー3DS/DSiゲームプログラミング入門」に掲載される……かもしれなかったプログラムのリストをここで公開するぞ。
 この『WALL』はサイドビューの縦スクロールアクションゲーム。十字ボタン左右で移動、Aボタンでジャンプして、塔のカギを取って出口をめざそう。
 ガイコツにぶつかれば倒せるものの、LIFEが減ってしまう。減ったLIFEは薬を取れば回復するが、油断は禁物だ。足場から落ちて画面より下に行ってしまうと、その場でゲームオーバーになってしまうぞ。

作ったのはこの人

ノトホホ
Twitter

おなじみ「日曜プログラマーのプロ」ことスマイルブーム社長。サイドビューのジャンプ処理を作るたびにいつも「ここは前回どう作ってたっけ?」と忘れていて苦労するので、今回は自分でもこのリストを見て思い出せるように、と気合が入っているとか。


 CHECK POiNT 

神崎
なにか説明がおかしい気がするんだけど……「掲載されるかもしれなかった」?

インテリ
うん、雑誌に載ると思って気合を入れすぎて、誌面スペースを取りすぎるリストになっちゃったんだ。簡単に言うとボツになったということかな。

ワンパク
載ってねェのかよ! ちょっとは考えてプログラムしやがれ!

博士
温情で写真1枚くらいは掲載されるそうじゃが……。もっとも、読者にわかりやすいよう整理した結果、長いプログラムになってしまったと言えんこともなくはないかもしれん。
ジャンプの処理や、最初から最後まで変数の値で一元管理しとる画面遷移など、リストを読むと参考になるハズじゃぞ。

インテリ
このプログラムは載らないけど、『日経ソフトウエア』10月号('11年8月24日発売)でプチコン特集は本当に掲載! ショートプログラムでいろんなテクニックが解説される予定だよ。

博士
諸君がここを読んでいるのが発売期間ならもちろん今月号をスグ買うのがオススメじゃが、すでに次の号が出ているというときはバックナンバーの販売もあるのじゃぞ。

ワンパク
シット、魂を売り渡したみてえな宣伝臭さがしやがるぜ!

プログラムリスト

  1. ’┌──────────────────────┐
  2. ’│ニッケイソフトウェア フ゜チコン トクシュウ│
  3. ’├──────────────────────┤
  4. ’│ (c)SmileBoom Co.Ltd. │
  5. ’└──────────────────────┘
  6. CLEAR
  7. VISIBLE 1,1,0,0,0,0
  8. COLOR 0:CLS
  9. PRINT”Жチョット マッテテネ...”
  10. GPAGE 0:GCLS 0
  11. SPPAGE 0:SPCLR
  12. BGPAGE 0:GOSUB @BGCLR
  13. GOSUB @CHRCOPY
  14. ’------------------ メモリ-ショキカ
  15. MAPMAX=100:STGMAX=3
  16. DIM M$(MAPMAX)
  17. WALLMAX=9:WALLST=8
  18. SPC=717:BLOCK=721:PR=2
  19. DIM W(WALLMAX,WALLST)
  20. GOSUB @SETWALL
  21. OBJMAX=20:_MAX=10
  22. _X=0:_Y=1:_W=2:_H=3:_S=4
  23. _D=5:_N=6:_T=7:_O=8:_B=9
  24. DIM O(OBJMAX,_MAX)
  25. ’------------------- リセットル-フ゜
  26. @RESET
  27. MC=0:FL=-1:RQ=0
  28. STG=1:SCTOP=5000
  29. ’-------------------- メインル-フ゜
  30. @MAINLOOP
  31. OB=BT:BT=BUTTON()
  32. BI=BT AND (NOT OB)
  33. GOSUB @FLOW
  34. MC=MC+1:VSYNC 1
  35. IF BI!=1024 THEN @MAINLOOP
  36. ’-------------------- シュウリョウ
  37. COLOR 0:CLS:GCLS 0:BGMSTOP
  38. FOR I=0 TO 191
  39.  COLINIT ”GRP”,I
  40. NEXT
  41. VISIBLE 1,1,0,0,0,0
  42. PRINT”Жマタアソンテ゛ネ!”
  43. END
  44. ’■カ゛メンセンイ
  45. ’───────────────────────────
  46. @FLOW
  47. IF FL==RQ THEN @FLSKIP
  48. FL=RQ
  49. ON FL GOSUB @TI,@OI,@GI,@CI
  50. @FLSKIP
  51. ON FL GOSUB @TM,@OM,@GM,@CM
  52. RETURN
  53. ’■FL=0:タイトル
  54. ’───────────────────────────
  55. @TI
  56. VISIBLE 0,1,0,0,0,0
  57. CLS:S$=”        ”:BGMPLAY 15
  58. LOCATE 5,3:COLOR 1
  59. ?”ニッケイソフトウェア フ゜チコン トクシュウ”
  60. PRINT:COLOR 0
  61. ? S$;”┌──────────────┐”
  62. ? S$;”│┌┐┌┐┌──┐┌┐ ┌┐ │”
  63. ? S$;”││├┤││┌┐│││ ││ │”
  64. ? S$;”││││││├┤││└┐│└┐│”
  65. ? S$;”│└──┘└┘└┘└─┘└─┘│”
  66. ? S$;”└──────────────┘”
  67. ? S$;”シ゛ャンフ゜アクションケ゛-ム!”
  68. LOCATE 4,22:COLOR 1
  69. ?”(C)2011 SmileBoom Co.Ltd.”
  70. ’----------------- ク゛ラテ゛-ション
  71. FOR I=0 TO 191
  72.  C=(255-I)*2:GOSUB @MKCOL
  73.  B$=C$:C=I*1.5:GOSUB @MKCOL
  74.  G$=C$:C=I/2:GOSUB @MKCOL
  75.  COLSET ”GRP”,I+1,C$+G$+B$
  76.  GLINE 0,I,255,I,I+1
  77. NEXT
  78. STG=0:ENDY=192+15
  79. VISIBLE 1,1,0,0,0,1
  80. RETURN
  81. ’------------------ タイトル メイン
  82. @TM
  83. S$=”              ”
  84. IF (MC AND 15)>7 THEN @TMPUT
  85. S$=”PUSH А BUTTON”
  86. @TMPUT
  87. LOCATE 9,16:COLOR 13
  88. PRINT S$:COLOR 0
  89. IF BI==16 THEN RQ=1
  90. RETURN
  91. ’■FL=1:ケ゛-ムマエ
  92. ’───────────────────────────
  93. @OI
  94. CLS:BGMPLAY 4
  95. VISIBLE 1,1,0,0,0,1
  96. LOCATE 12,10:COLOR 0
  97. PRINT”STAGE:”;STG+1
  98. MOY=0:MVY=0:OVY=0:MPY=0
  99. OBJ=0:GOSUB @OBJINIT
  100. BGOFS 0,0,0:BGOFS 1,0,0
  101. GOSUB @BGCLR
  102. GOSUB @SETMAP
  103. VISIBLE 1,1,1,1,1,1
  104. WC=60*2:RETURN
  105. ’---------------- ケ゛-ムマエ メイン
  106. @OM
  107. ’--- キ゛ョウタンイテ゛ マッフ゜ヒョウシ゛
  108. IF MPY<12 THEN @PUTLINE
  109. ’--- マッフ゜カキオワッタラ ユウコウ
  110. @OMSKIP
  111. WC=WC-1:IF WC==0 THEN RQ=2
  112. IF BI==16 THEN RQ=2
  113. RETURN
  114. ’■FL=3:ケ゛-ムアト
  115. ’───────────────────────────
  116. @CI
  117. CLS:VISIBLE 1,1,1,1,1,1
  118. LS=0:X=12:B=6:C$=”GAMEOVER”
  119. IF LIFE<0 GOTO @CIEND
  120. LS=1:X=13:B=5:C$=”CLEAR!”
  121. @CIEND
  122. BGMPLAY B:COLOR 0
  123. LOCATE X,10:PRINT C$
  124. RETURN
  125. ’---------------- ケ゛-ムアト メイン
  126. @CM
  127. ON LS GOTO @CMG,@CMC,@CME
  128. ’--- LS=2:エンテ゛ィンク゛
  129. @CME
  130. IF (MC AND 7) THEN RETURN
  131. IF EC<RLC THEN READ C$:? C$
  132. EC=EC+1
  133. IF EC>=RLC+60 THEN RQ=0
  134. RETURN
  135. ’--- LS=0:ケ゛-ムオ-ハ゛-
  136. @CMG
  137. IF BI==16 THEN RQ=0
  138. RETURN
  139. ’--- LS=1:クリア
  140. @CMC
  141. GOSUB @CMG:IF RQ THEN RETURN
  142. ’--- ステ-シ゛コウシン
  143. STG=STG+1:RQ=1
  144. IF STG<STGMAX THEN RETURN
  145. ’--- エンテ゛ィンク゛カイシ
  146. LS=2:EC=0:RQ=3
  147. RESTORE @STAFF:READ RLC
  148. CLS:BGMPLAY 7
  149. VISIBLE 1,1,0,0,0,0
  150. RETURN
  151. ’--- 
  152. @STAFF
  153. DATA 33
  154. DATA ”■STAFF”
  155. DATA ”---------------------”
  156. DATA ”◎PROGRAM”
  157. DATA ”  SmileBoom”
  158. DATA ””
  159. DATA ”◎DESIGN”
  160. DATA ”  SmileBoom”
  161. DATA ””
  162. DATA ”◎PLANING”
  163. DATA ”  SmileBoom”
  164. DATA ””,””,””,””,””
  165. DATA ””,””,””,””,””
  166. DATA ””,””,””,””,””
  167. DATA ””,””,””,””,””
  168. DATA ”┌──────────┐”
  169. DATA ”│THANK YOU!│”
  170. DATA ”└──────────┘”
  171. ’■FL=2:ケ゛-ム
  172. ’───────────────────────────
  173. @GI
  174. ’--- ヘンスウショキカ
  175. TIME=99*60:LIFE=3:SC=0:DMG=0
  176. SPD=2:JVY=1:JC=0:DMGC=0
  177. O(0,_N)=64
  178. ’--- カ゛メンシ゛ュンヒ゛
  179. CLS:COLOR 1:BGMPLAY MAPBGM
  180. LOCATE 29, 1:PRINT”TOP”
  181. LOCATE 27, 4:PRINT”SCORE”
  182. LOCATE 28, 7:PRINT”TIME”
  183. LOCATE 28,10:PRINT”LIFE”
  184. LOCATE 27,13:PRINT”STAGE”
  185. GOTO @PUTSTAT
  186. ’------------------ ケ゛-ム メイン
  187. @GM
  188. GOSUB @BGSCRL
  189. IX=0
  190. ’---------------------------
  191. @GMLOOP
  192. T=O(IX,_T)
  193. IF T==0 THEN @GMSKIP
  194. ’--- ハイレツカラコヒ゜-
  195. PX=O(IX,_X):PY=O(IX,_Y)
  196. OX=PX:OY=PY
  197. ST=O(IX,_S):NM=O(IX,_N)
  198. VX=O(IX,_W):VY=O(IX,_H)
  199. ’--- スクロ-ルフ゛ン コウリョ
  200. PY=PY+OVY
  201. ’--- オフ゛シ゛ェクト セイキ゛ョ
  202. GOSUB @OBJMOVE
  203. ’--- ハイレツヘモト゛ス
  204. O(IX,_W)=VX:O(IX,_H)=VY
  205. O(IX,_S)=ST:O(IX,_N)=NM
  206. O(IX,_X)=PX:O(IX,_Y)=PY
  207. SPCHR IX,NM
  208. SPOFS IX,PX-8,PY-16
  209. ’---------------------------
  210. @GMSKIP
  211. IX=IX+1
  212. IF IX<OBJMAX THEN @GMLOOP
  213. ’---
  214. TIME=TIME-1
  215. IF (MC AND 63) THEN RETURN
  216. GOTO @PUTSTAT
  217. ’■オフ゛シ゛ェクト
  218. ’───────────────────────────
  219. @OBJMOVE
  220. ON T GOTO @OF,@OP,@OE,@OD
  221. ’--- T=0:ナシ
  222. @OF
  223. RETURN
  224. ’--- T=3:ト゛ア
  225. @OD
  226. IF O(0,_S) THEN RETURN
  227. GOSUB @CHKHIT
  228. IF C THEN RQ=3
  229. RETURN
  230. ’--- フ゜レイヤ-トノセッショク
  231. @CHKHIT
  232. Y=ABS(PLY-PY)
  233. IF Y>8 THEN C=0:RETURN
  234. X=ABS(PLX-PX)
  235. IF X>6 THEN C=0:RETURN
  236. C=1:RETURN
  237. ’--- T=2:テキ
  238. @OE
  239. IF PY>ENDY THEN @DEAD
  240. ON ST GOTO @OE0,@OE1
  241. ’---
  242. PY=PY+VY:VY=VY+1:RETURN
  243. ’---
  244. @OE0
  245. ST=1:VX=1
  246. IF RND(6)<3 THEN VX=-1
  247. ’---
  248. @OE1
  249. GOSUB @CHKHIT
  250. IF C THEN @ENEDEAD
  251. ’---
  252. NM=128:IF VX<0 THEN NM=132
  253. PX=PX+VX
  254. GOSUB @CHKSD :’サユウホセイ
  255. IF C THEN @OEREV
  256. GOSUB @CHKFL :’アシモトカクニン
  257. IF C THEN RETURN
  258. @OEREV
  259. PX=OX:ST=0:RETURN
  260. ’--- テキシホ゛ウ
  261. @ENEDEAD
  262. ST=2:VY=-10:BEEP 6,-4000
  263. SPCHR IX,NM,15,0,1,PR
  264. ’--- フ゜レイヤ-ヘタ゛メ-シ゛
  265. O(0,_N)=88:DMGC=16
  266. LIFE=LIFE-1
  267. IF LIFE>=0 THEN @EDEND
  268. SPCHR 0,88:RQ=3
  269. @EDEND
  270. GOTO @PUTLIFE
  271. ’---
  272. @DEAD
  273. T=0:O(IX,_T)=T:BEEP 14
  274. IF IX THEN RETURN
  275. RQ=3:LIFE=-1:GOTO @PUTLIFE
  276. ’--- T=1:フ゜レイヤ-
  277. @OP
  278. IF DMGC==0 THEN @OP2
  279. DMGC=DMGC-1:RETURN
  280. @OP2
  281. V=0:N=NM
  282. IF BT AND 4 THEN V=-1:N=72
  283. IF BT AND 8 THEN V=1:N=64
  284. NM=N
  285. ON ST GOSUB @PW,@PJ,@PH,@PF
  286. ’---
  287. IF PY>ENDY THEN @DEAD
  288. GOSUB @CHKCOIN
  289. ’--- ハンテイヨウニ サ゛ヒョウヲノコス
  290. PLX=PX:PLY=PY:RETURN
  291. ’●ST=0(ツウシ゛ョウイト゛ウ
  292. ’---------------------------
  293. @PW
  294. VX=V:PX=PX+VX*SPD
  295. GOSUB @CHKSD :’サユウホセイ
  296. GOSUB @CHKFL :’アシモトカクニン
  297. IF C==0 THEN @PFALL
  298. ’--- Аホ゛タンオシタ?
  299. IF (BI AND 16)==0 THEN RETURN
  300. ’--- シ゛ャンフ゜スタ-ト
  301. @PJUMP
  302. ST=1:VY=-4:JC=0:BEEP 8
  303. O(IX,_O)=PY AND &H1F0
  304. O(IX,_B)=SPC
  305. RETURN
  306. ’●ST=1(シ゛ャンフ゜シ゛ョウショウチュウ
  307. ’---------------------------
  308. @PJ
  309. IF V!=0 THEN VX=V
  310. PX=PX+VX*SPD
  311. GOSUB @CHKSD :’サユウホセイ
  312. PY=PY+VY
  313. GOSUB @CHKHD :’アタマホセイ
  314. IF C!=0 THEN @PJHEND
  315. ’--- Аホ゛タンオサレツツ゛ケテル?
  316. JC=JC+1
  317. IF (BT AND 16)==0 THEN JC=8
  318. IF JC<8 THEN RETURN
  319. ’--- ホウフ゛ツセン カイシ
  320. @PJEND
  321. O(IX,_B)=0:ST=2:RETURN
  322. ’--- シ゛ョウショウチュウ アタマヲフ゛ツケタ
  323. @PJHEND
  324. IF JC==0 THEN @PGLAND
  325. GOTO @PHEND
  326. ’--- ラッカ カイシ
  327. @PFALL
  328. C=BLOCK
  329. IF VY>=0 THEN GOSUB @GETFL
  330. O(IX,_B)=C:ST=3:VY=0:RETURN
  331. ’●ST=2(ホウフ゛ツセン→ラッカ
  332. ’---------------------------
  333. @PH
  334. IF V!=0 THEN VX=V
  335. PX=PX+VX*SPD
  336. GOSUB @CHKSD :’サユウホセイ
  337. PY=PY+VY:VY=VY+JVY
  338. GOSUB @CHKHD :’アタマホセイ
  339. IF C!=0 THEN @PHEND
  340. IF VY>=0 THEN @PHEND
  341. ’--- シ゛ョウショウチュウ
  342. GOSUB @GETFL
  343. O(IX,_B)=C:RETURN
  344. ’--- 
  345. @PHEND
  346. GOSUB @CHKFL :’アシモトカクニン
  347. IF C==0 THEN @PFALL
  348. ’--- チョクセ゛ンハ カヘ゛?
  349. IF O(IX,_B) THEN @PFALL
  350. GOTO @PGLAND
  351. ’●ST=3(ラッカ
  352. ’---------------------------
  353. @PF
  354. IF V!=0 THEN VX=V:GOTO @PF2
  355. VX=VX+SGN(0-VX)*0.05
  356. @PF2
  357. PX=PX+VX*SPD
  358. GOSUB @CHKSD :’サユウホセイ
  359. PY=PY+VY:VY=VY+JVY
  360. IF VY>4 THEN VY=4
  361. GOSUB @CHKFL :’アシモトカクニン
  362. I=O(IX,_B):O(IX,_B)=C
  363. IF C==0 THEN RETURN
  364. ’--- チョクセ゛ンハスヘ゜-ス?
  365. IF I!=0 THEN RETURN
  366. ’--- チャクチ&ホセイ
  367. @PGLAND
  368. VY=0:ST=0:O(IX,_B)=SPC
  369. PY=PY AND &H1F0
  370. I=O(IX,_O):O(IX,_O)=PY
  371. Y=I-PY:IF Y<=0 THEN RETURN
  372. IF I>159 THEN RETURN
  373. ’--- スクロ-ルカイシ
  374. I=Y AND &H0F
  375. ADDY=Y AND &H1F0
  376. IF I THEN ADDY=ADDY+16
  377. MVY=MVY+ADDY
  378. RETURN
  379. ’■ヒョウシ゛ホシ゛ョ
  380. ’───────────────────────────
  381. @PUTN
  382. LOCATE 25,Y
  383. N$=”       ”+STR$(N)
  384. N$=MID$(N$,LEN(N$)-7,7)
  385. PRINT N$:Y=Y+3:RETURN
  386. ’---
  387. @PUTSTAT
  388. COLOR 0:Y=2
  389. IF SC>SCTOP THEN SCTOP=SC
  390. N=SCTOP:GOSUB @PUTN
  391. N=SC:GOSUB @PUTN
  392. N=FLOOR(TIME/60):GOSUB @PUTN
  393. N=STG+1:GOSUB @PUTN
  394. ’---
  395. @PUTLIFE
  396. IF LIFE<0 THEN RETURN
  397. N$=”・・・・・・・ааааааа”
  398. N$=MID$(N$,LIFE,7)
  399. LOCATE 25,11:COLOR 13
  400. PRINT N$
  401. @PSTE
  402. COLOR 0:RETURN
  403. ’---
  404. @MKCOL
  405. IF C>255 THEN C=255
  406. C$=”0”+HEX$(FLOOR(C))
  407. C$=MID$(C$,LEN(C$)-2,2)
  408. RETURN
  409. ’■テ゛-タ
  410. ’───────────────────────────
  411. ’--- マッフ゜1
  412. @M1
  413. DATA 0
  414. DATA ”□Щ      Ц□”
  415. DATA ”□┏┏┏┏ ┏┏┏□”
  416. DATA ”□  Ш┏ Ш  □”
  417. DATA ”□┏ ┏┏┏┏┏┏□”
  418. DATA ”□Ъ      г□”
  419. DATA ”□□□□□□□□□□”
  420. DATA ””
  421. ’--- マッフ゜2
  422. @M2
  423. DATA 2
  424. DATA ”□Щ   Ш  Ц□”
  425. DATA ”□┏┏┏┏Ш┏┏┏□”
  426. DATA ”□ Ц  Ш Ш □”
  427. DATA ”□┏┏┏┏Ш┏┏ □”
  428. DATA ”□ ┏  Ш   □”
  429. DATA ”□ ┏┏┏┏┏ ┏□”
  430. DATA ”□ ШШШШШ  □”
  431. DATA ”□   ┏ Ц  □”
  432. DATA ”□ ┏┏┏┏┏Ш┏□”
  433. DATA ”□  ┏  ШШШ□”
  434. DATA ”□   Ц ┏Ш □”
  435. DATA ”□┏┏┏┏┏┏ ┏□”
  436. DATA ”□  ШШШ ┏ □”
  437. DATA ”□      ┏ □”
  438. DATA ”□ ┏┏┏┏┏ ┏□”
  439. DATA ”□ШШ  ┏   □”
  440. DATA ”□ШШ ┏    □”
  441. DATA ”□┏┏┏┏┏┏ ┏□”
  442. DATA ”□  Ш┏Ц Ё □”
  443. DATA ”□ ┏┏┏┏┏┏┏□”
  444. DATA ”□ Ш Ш┏┏┏ □”
  445. DATA ”□        □”
  446. DATA ”□┏┏┏┏┏┏Ш┏□”
  447. DATA ”□   ┏ Ш  □”
  448. DATA ”□ Ё ЦШ   □”
  449. DATA ”□ ┏┏┏┏┏ ┏□”
  450. DATA ”□   □□ ┏ □”
  451. DATA ”□ Ц ШШШ  □”
  452. DATA ”□┏┏┏┏┏┏Ш┏□”
  453. DATA ”□ Ш    ┏ □”
  454. DATA ”□   ЦШШ  □”
  455. DATA ”□┏┏┏┏┏┏ ┏□”
  456. DATA ”□  Ш   Ш □”
  457. DATA ”□ Ш Ш  ┏ □”
  458. DATA ”□Ш   ШЦ  □”
  459. DATA ”□ ┏┏┏┏┏Ё┏□”
  460. DATA ”□ШШШШШ ┏ □”
  461. DATA ”□   Ц┏□  □”
  462. DATA ”□  ┏┏   Ш□”
  463. DATA ”□ШШШ г Ё □”
  464. DATA ”□□□□□□□□□□”
  465. DATA ””
  466. ’--- マッフ゜3
  467. @M3
  468. DATA 29
  469. DATA ”□        □”
  470. DATA ”□ЩШШ г  Ц□”
  471. DATA ”□□□□□□□□□□”
  472. DATA ””
  473. ’--- マッフ゜ヨミコミ
  474. @SETMAP
  475. MY=0
  476. ON STG GOTO @SM1,@SM2,@SM3
  477. @SM1
  478. RESTORE @M1:GOTO @READMAP
  479. @SM2
  480. RESTORE @M2:GOTO @READMAP
  481. @SM3
  482. RESTORE @M3
  483. ’---
  484. @READMAP
  485. READ MAPBGM
  486. ’---
  487. @SETMLOOP
  488. READ M$(MY)
  489. IF M$(MY)==”” THEN RETURN
  490. MY=MY+1
  491. GOTO @SETMLOOP
  492. ’--- BGカヘ゛フ゛ヒンヨミコミ
  493. @WALL
  494. ’0:スヘ゜-ス
  495. DATA 717,15,717,15
  496. DATA 717,15,717,15
  497. ’1:В
  498. DATA 908,12,909,12
  499. DATA 940,12,941,12
  500. ’2:□
  501. DATA 721,10,722,10
  502. DATA 753,10,754,10
  503. ’3:┏
  504. DATA  45, 9, 47, 9
  505. DATA 717,11,717,11
  506. ’4:Т
  507. DATA 929,15,929,15
  508. DATA 929,15,929,15
  509. ’5:エラ-ヨウ
  510. DATA 717, 0,717, 0
  511. DATA 717, 0,717, 0
  512. ’6:Ё カイフク
  513. DATA   4, 0,  5, 0
  514. DATA   6, 0,  7, 0
  515. ’7:◎ コイン
  516. DATA   8, 0,  9, 0
  517. DATA  10, 0, 11, 0
  518. ’8:
  519. DATA   0, 0,  0, 0
  520. DATA   0, 0,  0, 0
  521. ’---
  522. @SETWALL
  523. RESTORE @WALL
  524. FOR I=0 TO WALLMAX-1
  525.  FOR J=0 TO WALLST-1
  526.   READ W(I,J)
  527.  NEXT
  528. NEXT
  529. RETURN
  530. ’■BGホシ゛ョ
  531. ’───────────────────────────
  532. ’--- BGハンテイ
  533. @CHKHD
  534. X=(PX/8) AND 31
  535. Y=((PY+MOY-16)/8) AND 63
  536. BGREAD(1,X,Y),C,P,W,H
  537. IF C<48 THEN C=0:RETURN
  538. IF C==SPC THEN C=0:RETURN
  539. PY=(PY AND &HF0)+16
  540. RETURN
  541. ’---
  542. @CHKFL
  543. X=(PX/8) AND 31
  544. Y=((PY+MOY)/8) AND 63
  545. BGREAD(1,X,Y),C,P,W,H
  546. IF C!=SPC THEN RETURN
  547. C=0:RETURN
  548. ’---
  549. @CHKCOIN
  550. X=((PX/16) AND 15)*2
  551. Y=(((PY+MOY-8)/16) AND 31)*2
  552. BGREAD(0,X,Y),C,P,W,H
  553. IF C<4 THEN RETURN
  554. IF C<8 THEN @LIFEUP
  555. SC=SC+10:BEEP 7
  556. GOSUB @CLRWALL:GOTO @PUTSTAT
  557. @LIFEUP
  558. LIFE=LIFE+1:BEEP 5
  559. GOSUB @CLRWALL:GOTO @PUTSTAT
  560. ’---
  561. @GETFL
  562. X=(PX/8) AND 31
  563. Y=((PY+MOY)/8) AND 63
  564. BGREAD(1,X,Y),C,P,W,H
  565. IF C==SPC THEN C=0
  566. RETURN
  567. ’---
  568. @CHKSD
  569. X=(PX/8) AND 31
  570. Y=((PY+MOY-16)/8) AND 63
  571. BGREAD(1,X,Y),C,P,W,H
  572. IF C==SPC THEN C=0:RETURN
  573. IF C<48 THEN C=0:RETURN
  574. ’---
  575. @CS1
  576. IF C==721 THEN @CSL
  577. IF C!=753 THEN @CS2
  578. @CSL
  579. PX=X*8-1:RETURN
  580. ’---
  581. @CS2
  582. IF C==722 THEN @CSR
  583. IF C!=754 THEN C=0:RETURN
  584. @CSR
  585. PX=X*8+8:RETURN
  586. ’--- BGショウキョ
  587. @BGCLR
  588. FOR P=0 TO 1
  589.  FOR Y=0 TO 63
  590.   FOR X=0 TO 63
  591.    BGPUT P,X,Y,0,0,0,0
  592.   NEXT
  593.  NEXT
  594. NEXT
  595. RETURN
  596. ’--- BGスクロ-ル
  597. @BGSCRL
  598. IF MVY<=0 THEN OVY=0:RETURN
  599. I=MOY AND 15
  600. IF I==0 THEN GOSUB @PUTLINE
  601. OVY=2
  602. MVY=MVY-OVY:MOY=MOY-OVY
  603. BGOFS 0,0,MOY
  604. BGOFS 1,0,MOY
  605. RETURN
  606. ’--- スフ゜ライトキャラヲBGヘ テンソウ
  607. @CHRCOPY
  608. N=60*4:B=4:GOSUB @CCPSUB
  609. N=36*4:B=8
  610. @CCPSUB
  611. FOR I=0 TO 3
  612.  CHRREAD(”SPU0”,N+I),C$
  613.  CHRSET ”BGU0”,B+I,C$
  614. NEXT
  615. RETURN
  616. ’■マッフ゜ホシ゛ョ
  617. ’───────────────────────────
  618. ’--- BG2x2ヒョウシ゛
  619. @PUTWALL ’D$,X,Y
  620. B=0
  621. IF W$==”Ё” THEN I=6:GOTO @PFR
  622. IF W$==”Ш” THEN I=7:GOTO @PFR
  623. B=1
  624. IF W$==”В” THEN I=1:GOTO @PWP
  625. IF W$==”□” THEN I=2:GOTO @PWP
  626. IF W$==”┏” THEN I=3:GOTO @PWP
  627. IF W$==”Т” THEN I=4:GOTO @PWP
  628. IF W$==” ” THEN I=0:GOTO @PWP
  629. ’--- フ゜レイヤ-?
  630. I=0:N=252:T=1:C=4
  631. IF W$==”г” THEN @PWOSET
  632. ’--- アキヲサカ゛ス
  633. N=128:T=2:C=2
  634. @WOLP
  635. IF O(I,_T)==0 THEN @PWOSET
  636. I=I+1:IF I<OBJMAX THEN @WOLP
  637. ’--- アキカ゛ナイノテ゛エラ-アツカイ
  638. I=5:GOTO @PWP
  639. ’--- オフ゛シ゛ェクト シンキトウロク
  640. @PWOSET
  641. OBJ=OBJ+1:O(I,_X)=X*8+8
  642. O(I,_Y)=Y*8+16-MOY
  643. IF W$!=”Щ” THEN @PWOANM
  644. N=59:T=3:C=1
  645. SPCHR I,N,3,0,0,PR
  646. ’---
  647. @PWOANM
  648. O(I,_T)=T:O(I,_N)=N
  649. O(I,_S)=0:O(I,_W)=0:O(I,_H)=0
  650. SPANIM I,C,8,0
  651. SPCHR I,N,0,0,0,PR
  652. SPOFS I,O(I,_X)-8,O(I,_Y)-16
  653. I=0:GOTO @PWP
  654. ’--- オモテケス
  655. @CLRWALL
  656. B=0:I=8
  657. GOTO @PWP
  658. ’--- オモテ2カイカク
  659. @PFR
  660. GOSUB @PWP
  661. B=1:I=0
  662. ’--- 2x2ヒョウシ゛
  663. @PWP
  664. J=Y AND 63
  665. N=W(I,0):C=W(I,1)
  666. BGPUT B,X,J,N,C,0,0
  667. N=W(I,2):C=W(I,3)
  668. BGPUT B,X+1,J,N,C,0,0
  669. N=W(I,4):C=W(I,5)
  670. J=(J+1) AND 63
  671. BGPUT B,X,J,N,C,0,0
  672. N=W(I,6):C=W(I,7)
  673. BGPUT B,X+1,J,N,C,0,0
  674. RETURN
  675. ’--- マッフ゜1キ゛ョウヒョウシ゛
  676. @PUTLINE ’MPY
  677. Y=22-(MPY*2):X=4
  678. J=(Y+1) AND 63
  679. FOR I=4 TO 23
  680.  BGPUT 0,I,Y,0,0,0,0
  681.  BGPUT 0,I,J,0,0,0,0
  682. NEXT
  683. ’---
  684. D$=”ТТТТТТТТТТ”
  685. IF MPY>MY+2 THEN @PLOFF
  686. D$=”□        □”
  687. IF MPY>=MY THEN @PLOFF
  688. D$=M$(MY-1-MPY)
  689. ’---
  690. @PLOFF
  691. FOR IM=0 TO 9
  692.  W$=MID$(D$,IM,1)
  693.  GOSUB @PUTWALL
  694.  X=X+2
  695. NEXT
  696. MPY=MPY+1
  697. RETURN
  698. ’■オフ゛シ゛ェクトホシ゛ョ
  699. ’───────────────────────────
  700. @OBJINIT
  701. FOR I=0 TO OBJMAX-1
  702.  FOR J=0 TO _MAX-1
  703.   O(I,J)=0
  704.  NEXT
  705.  SPSET I,128+I,2,0,0,PR
  706.  SPOFS I,-16,0
  707. NEXT
  708. ’--- フ゜レイヤ-
  709. SPSET 0,0,2,0,0,2
  710. SPOFS 0,-16,0
  711. O(0,_T)=1
  712. ’--- ト゛クケムリ
  713. FOR I=0 TO 15
  714.  N=I+84
  715.  SPSET N,240,5,0,0,0
  716.  SPOFS N,I*16,180
  717.  SPANIM N,8,4,0
  718. NEXT
  719. RETURN