Advertisement
Guest User

Untitled

a guest
Sep 16th, 2014
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.24 KB | None | 0 0
  1. '---------------- JUMP KUN
  2.  
  3. GOSUB @INIT
  4.  
  5. WHILE 1
  6. GOSUB @INIT2
  7.  
  8. '-------------------MAIN LOOP
  9. WHILE 1
  10. GOSUB @MSGCTR
  11. GOSUB @BGSCR
  12. GOSUB @MYCTR
  13. GOSUB @TEKICTR
  14. VSYNC 1
  15. IF OVR THEN BREAK
  16. WEND
  17. GOSUB @GOVER
  18.  
  19. WEND
  20. '------------------------INIT
  21. @INIT
  22. XSCREEN 0
  23. DISPLAY -
  24. GPRIO 1024
  25. GCLS
  26. CLS
  27.  
  28. GRW=400
  29. GRH=240
  30. NONE=999
  31.  
  32. BGW=25*8 'BG WIDTH
  33. BGH=15 'BG HEIGHT
  34. 'SCL=1.7 'SCALE
  35. SCL=2
  36. SZ=FLOOR(16*SCL) 'CHARA SIZE
  37. SZ(SZ/2)-2
  38.  
  39. DIM MAP[BGW,BGH]
  40. DIM HX[4]
  41. DIM BY[4]
  42.  
  43. HX[0]= 0:HY[0]= 1 '
  44. HX[1]= 0:HY[1]=-1 '
  45. HX[2]= 1:HY[2]= 0 '
  46. HX[3]=-1:HY[3]= 0 '
  47.  
  48. CMAX=10
  49. LVLLOOP=7
  50.  
  51. DIM BGTBL[10.4]
  52.  
  53. DIM ANINUM[CMAX]
  54. DIM ANIMAX[CMAX]
  55. DIM HITPRG$[CMAX]
  56.  
  57. RESTORE @ANIDATA
  58. FOR I=0 TO CMAX-1
  59. READ ANINUM[I]
  60. READ ANIMAX[I]
  61. READ HITPRG$[I]
  62. NEXT
  63.  
  64. @ANIDATA
  65. DATA 6 ,3,"@SETOVR" '0:(TYPE A)GHOST
  66. DATA 9 ,2,"@GETCOIN" '1:(TYPE B)COIN
  67. DATA 11 ,3,"@SETOVR" '2:(TYPE C)ROBOT
  68. DATA 14 ,3,"@SETOVR" '3:(TYPE D)INO
  69. DATA 17 ,1,"@SETOVR" '4:(TYPE E)TOGE
  70. DATA 18 ,2,"@SETOVR" '5:(TYPE F)FIRE BALL
  71. DATA 20 ,1,"@RIDEBS" '6:(TYPE G)BASE
  72. DATA 20 ,1,"@RIDEBS" '7:(TYPE H)BASE
  73. DATA 0 ,1," '8:(TYPE I)
  74. DATA 0 ,1," '9:(TYPE J)
  75.  
  76.  
  77. SPDEF "@SPDATA"
  78. @SPDATA
  79. DATA 22
  80. DATA 0,144,16,16,8,8,1 '0:BOY R1
  81. DATA 16,144,16,16,8,8,1 '1:BOY R2
  82. DATA 32,144,16,16,8,8,1 '2:BOY R3
  83.  
  84. DATA 0,144,16,16,8,8,9 '3:BOY L1
  85. DATA 16,144,16,16,8,8,9 '4:BOY L1
  86. DATA 32,144,16,16,8,8,9 '3:BOY L3
  87.  
  88. DATA 256,240,16,16,8,8,9 '6:GHOST1
  89. DATA 272,240,16,16,8,8,9 '7:GHOST1
  90. DATA 288,240,16,16,8,8,9 '8:GHOST1
  91.  
  92. DATA 352,64,16,16,8,8,1 '9:COIN1
  93. DATA 368,64,16,16,8,8,1 '10:COIN2
  94.  
  95. DATA 256,224,16,16,8,8,9 '11: ROBOT1
  96. DATA 272,224,16,16,8,8,9 '12: ROBOT1
  97. DATA 288,224,16,16,8,8,9 '13: ROBOT1
  98.  
  99. DATA 128,224,16,16,8,8,9 '14: INOSHISHI1
  100. DATA 144,224,16,16,8,8,9 '14: INOSHISHI2
  101. DATA 160,224,16,16,8,8,9 '14: INOSHISHI3
  102.  
  103. DATA 280,304,16,16,8,8,1 '17: TOGE
  104.  
  105. DATA 480,112,16,16,8,8,1 '18: FIRE BALL1
  106. DATA 496,112,16,16,8,8,1 '19: FIRE BALL2
  107.  
  108. DATA 480,64,16,16,8,8,1 '20: BASE
  109.  
  110. DATA 48,272,16,16,8,8,1 '21
  111.  
  112. DIM JMPTBL$[CMAX]
  113. FOR I=0 TO CMAX-1
  114. JMPTBL$[I]="@ARG"+STR$(I)
  115. NEXT
  116.  
  117.  
  118. AN=0 'SPRITE NO.
  119. DN=1 'xx SPRITE NO.
  120. DMAX=10
  121.  
  122. AA=0 'ANIME COUNTER
  123.  
  124.  
  125. '---GRP
  126. FOR Y=0 TO GRH STEP 16
  127. C=(Y/16) MOD 2
  128. FOR X=0 TO GRW STEP 16
  129. C=C XOR 1
  130. GFILL X,Y,X+15,Y+15,RGB(0,0,C*64+64)
  131. NEXT
  132. NEXT
  133. RETURN
  134.  
  135.  
  136. '--------------------- TITLE
  137. @INIT2
  138. CLS
  139. COLOR 15
  140. BGMSTOP
  141.  
  142. BGCLR
  143. SPCLR
  144. '
  145. LOGOSP=255:SPSET LOGOSP,3524:SPHIDE LOGOSP
  146. '
  147. SPSET AN,0
  148. X=GRW/2
  149. Y=GRH/2
  150. SPANIM AN,"I",8,0,8,1,8,2,0
  151. SPANIM AN,"XY",90,X,Y,-20,X,Y-48,-20,X,Y,0
  152. SPSCALE AN,4,4
  153.  
  154. BEEP 12
  155.  
  156. @TITLEDAT
  157. DATA " fancy JUMP KUN graphics"
  158. DATA " fancy JUMP KUN graphics"
  159. DATA " fancy JUMP KUN graphics"
  160. DATA " fancy JUMP KUN graphics"
  161. DATA ""
  162.  
  163. RESTORE @TITLEDAT
  164. FOR Y=5 TO 99
  165. READ A$
  166. IF A$=="" THEN BREAK
  167. GOSUB @PRTSUB
  168. NEXT
  169.  
  170. '
  171. SPOFS LOGOSP,200,172,-256:SPSHOW LOGOSP
  172.  
  173. '---------------------
  174.  
  175. DEBUG=0
  176. LVL=1
  177. WHILE 1
  178.  
  179. GOSUB @HITANY
  180. IF BTN AND &HFF0 THEN BREAK
  181.  
  182. IF BTN AND 1 THEN LVL=LVL-1
  183. IF BTN AND 2 THEN LVL=LVL+1
  184. IF BTN AND (4+8) THEN DEBUG=DEBUG XOR 1
  185. IF LVL<1 THEN LVL=1
  186. BEEP 2
  187. A$="[xx]STAGE ":STR$(LVL)
  188. Y=20
  189. GOSUB @PRTSUB
  190.  
  191. A$="[xx]"
  192. IF DEBUG THEN
  193. A$=A$+"DEBUG MODE"
  194. ELSE
  195. A$=A$+"NORMAL MODE"
  196. ENDIF
  197. Y=24
  198. GOSUB @PRTSUB
  199. WEND
  200.  
  201. 'SPHOME DN,SZ/2,SZ/2
  202. 'SPANIM DN,"UV",8,256,240,8,272,240,8,288,240,0
  203. 'SPANIM DN,"I",8,6,8,7,8,8,0
  204.  
  205. 'END
  206.  
  207. SCORE=0
  208.  
  209. OVR=0 'GAMEOVER
  210. GOAL=0 'GOAL
  211.  
  212. BXMAX=(BGW*16)-400-1
  213.  
  214. '---MAP
  215. 'W=BGW:H=BGH:PAT=0:TX=0:FY=0
  216. 'GOSUB @BGCOPY
  217.  
  218. GOSUB @READMAP
  219. '
  220. SPANIM LOGOSP,"XY",-15,336,40
  221. '
  222. RETURN
  223.  
  224. '---------MESSAGE
  225. @MSGCTR
  226. Y=14
  227. IF MSG$!="" THEN
  228. A$=MSG$
  229. GOSUB @PRTSUB
  230. MSGCNT=100
  231. MSG$=""
  232. ENDIF
  233.  
  234. IF MSGCNT THEN
  235. MSGCNT=MSGCNT-1
  236. IF MSGCNT<=0 THEN
  237. A$=" "*20
  238. GOSUB @PRTSUB
  239. ENDIF
  240. ENDIF
  241.  
  242. IF MAINCNT MOD 60 THEN RETURN
  243. IF TIMER>0 THEN DEC TIMER
  244.  
  245. GOSUB @PUTSCORE
  246.  
  247. IF (TIMER<=0) AND (GOAL==0) THEN OVR=1
  248. RETURN
  249. ;--------
  250. @PUTSCORE
  251. A$="SCORE:"+FORMAT$("%06D",SCORE)
  252. A$=A$+" TIME:"+FORMAT$("%03D",TIMER)
  253. Y=1
  254. GOSUB @PRTSUB
  255. RETURN
  256.  
  257. '--------
  258. @GOVER
  259. BGMPLAY 4
  260. A$="G A M E O V E R"
  261. Y=11
  262. GOSUB @PRTSUB
  263.  
  264. SPCHR AN,21
  265. AY1=-2
  266. WHILE AY<GRH+32
  267. AY=AY+AY1
  268. AY1=AY1+0.05
  269. SPOFS AN,AX,AY
  270. VSYNC 1
  271. WEND
  272.  
  273. GOSUB @HITANY
  274. RETURN
  275. '---------------------PLAYER
  276. @MYCTR
  277. IF GOAL THEN
  278.  
  279. IF TIMER>0 THEN
  280. DEC TIMER
  281. INC SCORE,10
  282. GOSUB @PUTSCORE
  283. ELSE
  284. GOAL=GOAL+1
  285. IF GOAL>4*60 THEN
  286. LVL=LVL+1
  287. GOSUB @READMAP
  288. ENDIF
  289. ENDIF
  290.  
  291. ENDIF
  292.  
  293. FOR I=0 TO 3
  294. FOR J=-SZH TO SZH STEP SZH
  295. X=AX+(HX[I]*(SZH+1))+(HY[I]*J)
  296. Y=AY+(HY[I]*(SZH+1))+(HX[I]*J)
  297. GOSUB @BGCHK
  298. IF CH>32 THEN
  299. AX=AX-HX[I]
  300. AY=AY-HY[I]
  301. IF I<=1 THEN AY1=0
  302. IF I>=2 THEN AX1=0
  303. ENDIF
  304. NEXT
  305. NEXT
  306. GOSUB @BTNCTR
  307. AY=AY+AY1
  308. AX=AX+AX1
  309. IF AX<SZH THEN AX=SZH
  310.  
  311. SPOFS AN,AX,AY,AZ
  312. IF AY>GRH THEN OVR=1 'GAMEOVER
  313.  
  314. IF BT AND 8 THEN SPCHR AN,FLOOR(AA)
  315. IF BT AND 4 THEN SPCHR AN,FLOOR(AA)+3
  316.  
  317. RETURN
  318. '-------------BUTTON CONTROL
  319. @BTNCTR
  320. 'PRINT "JUMP";JUMP
  321.  
  322. BT=STKANDBTN()
  323. X=AX:Y=AY:GOSUB @JMNCHK
  324. IF HIT>32 THEN @BTNCTR2
  325.  
  326. SPN=SPHITSP(AN)
  327. IF SPN!=-1 then
  328. IF SPVAR(SPN,0)>=6 THEN
  329. SPOFS SPN OUT X,Y
  330. IF AY<=((Y-SZ)+4) THEN @BTNCTR2
  331. ENDIF
  332. ENDIF
  333.  
  334. '---IN THE SKY
  335. G=0.25
  336. IF BT AND 16 THEN G=0.125
  337. AY1=AY1+G
  338. IF BT AND 4 THEN AX1=AX1-0.025
  339. IF BT AND 8 THEN AX1=AX1+0.025
  340. RETURN
  341. '---ON THE GROUND
  342. @BTNCTR2
  343. AY1=0
  344. AX1=AX1-(0.05*SGN(AX1))
  345.  
  346. IF BT AND 4 THEN AX1=AX1-0.1
  347. IF BT AND 8 THEN AX1=AX1+0.1
  348. IF ABS(AX1)<0.05 THEN AX1=0
  349. IF ABS(AX1)>2 THEN AX1=SGN(AX1)*2
  350.  
  351. IF BT AND 4+8 THEN
  352. AA=AA+0.3 'ANIME
  353. IF AA>=3 THEN AA=AA-1
  354. ENDIF
  355.  
  356. IF JUMP THEN
  357. IF (BT AND 16)==0 THEN JUMP=0
  358. ELSE
  359. IF (BT AND 16) THEN
  360. AY1=-4.5
  361. BEEP 8,-500
  362. JUMP=1
  363. ENDIF
  364. ENDIF
  365. RETURN
  366.  
  367. '-------------- JIMEN CHECK
  368. @JMNCHK
  369. Y=Y+SZH+2
  370. X=X-SZH:GOSUB @BGCHK
  371. HIT=CH
  372. X+X+SZH:GOSUB @BGCHK
  373. HIT=HIT OR CH
  374. RETURN
  375.  
  376. '----------------- BG CHECK
  377. @BGCHK
  378. TX=FLOOR((X+BX)/16)
  379. TY=FLOOR(Y/16)
  380. IF TX<0 THEN TX=0
  381. IF TY<0 THEN TY=0
  382. IF TX>=BGW THEN TX=BGW-1
  383. IF TY>=BGH THEN TY=BGH-1
  384.  
  385. CH=BGGET(LAY,TX,TY)
  386.  
  387. RETURN
  388. '----------------- BG SCROLL
  389. @BGSCR
  390. IF GOAL THEN
  391. IF AX>GRW-24 THEN AX=GRW-24
  392. RETURN
  393. ENDIF
  394.  
  395. WHILE 1
  396. IF AX<GRW/2 THEN BREAK
  397. AX=AX-1
  398.  
  399. 'SLIDE ENEMY
  400. FOR I=DN TO (DN+DMAX-1)
  401. SPOFS I OUT X,Y,Z
  402. IF Y==NONE THEN CONTINUE
  403. X=X-1
  404. SPOFS I,X,Y
  405. NEXT
  406.  
  407. IF (BX MOD 16)==0 THEN
  408. FOR Y=0 TO BGH-1
  409. X=(BX+400)/16
  410. IF X>=BXMAX THEN BREAK
  411. C=MAP[X,Y]-ASC("A")
  412. IF (X>=0) AND (C<CMAX) THEN
  413. NX=400+16
  414. NY=Y*16+16
  415. NZ=-63
  416. NC=C
  417. GOSUB @TEKIBORN
  418. ENDIF
  419. 'PRINT "MAP";MAP[X,Y]
  420. NEXT
  421. ENDIF
  422.  
  423. BX=BX+1
  424. IF BX>BXMAX THEN
  425. BX=BXMAX
  426. IF GOAL==0 THEN
  427. BGMPLAY 5
  428. MSG$="G O A L!!"
  429. GOAL=1
  430. ENDIF
  431. ENDIF
  432.  
  433. BGOFS LAY,BX,BY
  434.  
  435. 'BGOFS 0,BX*2,BY
  436. 'BGOFS 2,BX/2,BY
  437. 'BGOFS 3,BX/4,BY
  438. BGOFS 0,BX,BY
  439. BGOFS 2,BX,BY
  440. BGOFS 3,BX,BY
  441.  
  442. WEND
  443. RETURN
  444.  
  445. '-----------------------TEKI
  446. @TEKICTR
  447. FOR I=DN TO (DN+DMAX-1)
  448. SPOFS I OUT VX,VY
  449. IF VY==NONE THEN CONTINUE
  450. TN =SPVAR(I,0) 'TYPE NO.
  451. TIM=SPVAR(I,1) 'TIME
  452. X1 =SPVAR(I,2) 'X1
  453. Y1 =SPVAR(I,3) 'Y1
  454. TMP=SPVAR(I,4) 'TEMP
  455.  
  456. GOSUB JMPTBL$[TN]
  457.  
  458. IF (VX<-32) OR (VX>GRW+128) OR (VY>GRH+32) THEN
  459. VY=NONE
  460. ENDIF
  461. SPOFS I,VX,VY
  462.  
  463. ANI=FLOOR(TIM/8) MOD ANImax[TN]
  464. SPCHR I,ANInum[TN]+ANI
  465.  
  466. TIM=TIM+1
  467. SPVAR I,1,TIM
  468. SPVAR I,2,X1
  469. SPVAR I,3,Y1
  470. SPVAR I,4,TMP
  471.  
  472. 'CHECK HIT
  473. if SPHITSP(i)==AN then
  474. gosub HITPRG$[tn]
  475. ENIF
  476. NEXT
  477. RETURN
  478. '-------
  479. @ridebs
  480. SxA=SGN(AX-VX)
  481. SyA=SGN(ay-vy)
  482. DXA=ABS(AX-VX)
  483. DYA=ABS(AY-VY)
  484.  
  485. if AY<=((vY-SZ)+4) then
  486. ax=ax+x1
  487. endif
  488.  
  489. IF DYA>DXA THEN
  490. IF DYA<=(SZ-2) THEN
  491. AY=AY+((SZ-1)-DYA)*SYA
  492. ENDIF
  493. ELSE
  494. IF DXA<=(SZ-2) THEN
  495. AX=AX+(SZ-2)-DXA)*SXA
  496. AX1=0
  497. ENDIF
  498. ENDIF
  499. ENDIF
  500. return
  501. '----
  502. @getcoin
  503. VY=NONE
  504. SPOFS I,VX,VY
  505. BEEP 7
  506. SCORE=SCORE+100
  507. return
  508. '----
  509. @SETOVR
  510. IF DEBUG THEN RETURN
  511. OVR=1
  512. return
  513.  
  514. '-----------
  515. '0:(TYPE A)GHOST
  516. @ARG0
  517. IF TIM==0 THEN
  518. X1=-1
  519. ENDIF
  520. X=VX+X1*SZH:Y=VY
  521. GOSUB @BGCHK
  522. IF CH>32 THEN X1=-X1
  523.  
  524. X=VX:Y=VY+SZH
  525. GOSUB @BGCHK
  526. IF CH>32 THEN Y1=-4
  527.  
  528. Y1=Y1+0.1
  529. VX=VX+X1
  530. VY=VY+Y1
  531. RETURN
  532. '-----------
  533. '1:(TYPE B)COIN
  534. @ARG1
  535. RETURN
  536. '-----------
  537. '2:(TYPE C)ROBOT
  538. @ARG2
  539. IF TMP==0 THEN
  540. IF RND(20)==0 THEN X1=-1:TMP=64
  541. ELSE
  542. TMP=TMP-1
  543. IF TMP==0 THEN X1=0
  544. ENDIF
  545.  
  546. X=VX+SZH*X1
  547. Y=VY
  548. GOSUB @BGCHK
  549. IF CH>32 THEN X1=-X1
  550.  
  551. X=VX
  552. Y=VY+SZH
  553. GOSUB @BGCHK
  554. IF CH<=32 THEN Y1=Y1+0.1 ELSE Y1=0
  555.  
  556. VX=VX+X1
  557. VY=VY+Y1
  558.  
  559. RETURN
  560. '-----------
  561. '3:(TYPE D)INO
  562. @ARG3
  563. IF X1==0 THEN
  564. IF ABS(AX-VX)<128) THEN X1=-0.3
  565. ELSE
  566. X1=X1-0.03
  567. ENDIF
  568.  
  569. X=VX
  570. Y=VY+SZH
  571. GOSUB @BGCHK
  572. IF CH<=32 THEN Y1=Y1+0.1 ELSE Y1=0
  573.  
  574. VX=VX+X1
  575. VY=VY+Y1
  576.  
  577. RETURN
  578. '-----------
  579. '4:(TYPE E)TOGE
  580. @ARG4
  581. IF Y1==0 THEN
  582. IF ABS(AX-VX)<48 THEN Y1=1
  583. TMP=VY
  584. ELSE
  585. IF Y1<0 THEN
  586. IF TMP>=VY THEN Y1=0
  587. ELSE
  588. X=VX
  589. Y=VY+SZH
  590. GOSUB @BGCHK
  591. IF CH<=32 THEN
  592. Y1=Y1+0.1
  593. ELSE
  594. Y1=-1
  595. ENDIF
  596. ENDIF
  597. VY=VY+Y1
  598. ENDIF
  599. RETURN
  600. '-----------
  601. '5:(TYPE F)FIRE BALL
  602. @ARG5
  603. IF Y1>=0 THEN
  604. IF VY>GRH+16 THEN
  605. ' VY=GRH+16
  606. IF RND(60)==0 THEN Y1=-5
  607. RETURN
  608. ENDIF
  609. ENDIF
  610. VY=VY+Y1
  611. Y1=Y1+0.1
  612.  
  613. RETURN
  614. '-----------
  615. '6:(TYPE G)BASE
  616. @ARG6
  617. IF X1==0 THEN X1=-1
  618. GOSUB @ARGSLIDE
  619. RETURN
  620. '-----------
  621. '7:(TYPE H)BASE
  622. @ARG7
  623. IF X1==0 THEN X1=1
  624. GOSUB @ARGSLIDE
  625. RETURN
  626. '-----------
  627. @ARGSLIDE
  628. IF TMP==0 THEN X1=-X1
  629. TMP=(TMP+1) MOD 96
  630. VX=VX+X1
  631. 'if SPHITSP(i)==AN then
  632. ' if ay<vy then
  633. ' ax=ax+x1
  634. ' endif
  635. 'endif
  636. RETURN
  637.  
  638. '-----------
  639. '8:(TYPE I)
  640. @ARG8
  641. @ARG9
  642. RETURN
  643. '-----------
  644. '9:(TYPE J)
  645. RETURN
  646.  
  647.  
  648. '------------------TEKI BORN
  649. @TEKIBORN
  650. 'PRINT "BORN"
  651. FOR I=DN TO (DN+DMAX-1)
  652. SPOFS I OUT VX,VY,VZ
  653. 'PRINT "SPOF";VX,VY
  654. IF VY!=NONE THEN CONTINUE
  655. 'PRINT "SP";I,NX,NY
  656. SPCHR I,ANInum[NC]
  657. SPOFS I,NX,NY,NZ
  658. SPDEF ANInum[NC] OUT U,V,W,H
  659. SPCOL i,-W/2,-H/2,W,H,TRUE
  660.  
  661. SPVAR I,0,NC 'CHARA TYPE NO.
  662. SPVAR I,1,0 'TIME
  663. SPVAR I,2,0 'X1
  664. SPVAR I,3,0 'Y1
  665. SPVAR I,4,0 'TEMP
  666. BREAK
  667.  
  668. NEXT
  669. RETURN
  670.  
  671.  
  672. '------------------PRINT SUB
  673. @PRTSUB
  674. LOCATE 25-LEN(A$)/2,Y,-200
  675. PRINT A$
  676. RETURN
  677.  
  678. '-------------HIT ANY BUTTON
  679. @HITANY
  680. A$="HIT ANY BUTTON"
  681. Y=26
  682. GOSUB @PRTSUB
  683. VSYNC 20
  684. WHILE 1
  685. IF STKANDBTN()==0 THEN BREAK
  686. WEND
  687. WHILE 1
  688. BTN=STKANDBTN()
  689. IF BTN THEN BREAK
  690. WEND
  691.  
  692. RETURN
  693. '------
  694. @READMAP
  695.  
  696. BX=0:BY=0:BZ=0
  697. BGL=4 'BG LAYER MAX
  698. LAY=1
  699.  
  700. LOADSUB "DAT:GAME3"
  701.  
  702. BGOFS 0,BX,BY,-200
  703. BGOFS 1,BX,BY,-62
  704. BGOFS 2,BX,BY,128
  705. BGOFS 3,BX,BY,768
  706.  
  707. FOR Y=0 TO BGH-1
  708. FOR X=0 TO BGW-1
  709. MAP[X,Y]=0
  710. NEXT
  711. NEXT
  712.  
  713. FOR Y=0 TO BGH-1
  714. FOR X=0 TO BGW-1
  715. C=BGGET(LAY,X,Y)
  716. IF C>=ASC("A") AND C<=ASC("Z") THEN
  717. MAP[X,Y]=C
  718. BGPUT LAY,X,Y,0
  719. ENDIF
  720. IF C==32 THEN
  721. BGPUT LAY,X,Y,0
  722. ENDIF
  723. NEXT
  724. NEXT
  725.  
  726. SPDEF 0 OUT U,V,W,H
  727. AX=GRW*1/4:AY=100:AZ=-64
  728. AX1=0
  729. AY1=0
  730. SPSCALE AN,SCL,SCL
  731. SPCOL AN,-W/2,-H/2,W,H,TRUE
  732.  
  733. X=NONE
  734. Y=NONE
  735. Z=0
  736.  
  737. FOR I=DN TO (DN+DMAX-1)
  738. SPSET I,6
  739. SPSCALE I,SCL,SCL
  740. SPOFS I,X,Y,Z
  741. NEXT
  742.  
  743. MSGCNT=0
  744. MSG$="S T A G E "+STR$(LVL)
  745. BGMPLAY 3
  746.  
  747. GOAL=0
  748. CLS
  749. A$="[x x]MOVE [A]JUMP"
  750. Y=28
  751. GOSUB @PRTSUB
  752.  
  753. TIMER=300
  754. RETURN
  755.  
  756. '---
  757. DEF LOADSUB N$
  758. ID=(ASC("M")<<24)
  759. ID=(ASC("A")<<16) OR ID
  760. ID=(ASC("P")<<8) OR ID
  761. ID=(ASC(":")) OR ID
  762. H_ID=0:H_VR=1:H_R2=2:H_LY=3
  763. H_DW=4:H_DH=5:H_MX=6:H_MY=7
  764.  
  765. ATRMAX=32*32
  766. DIM ATR%[ATRMAX]
  767. HEADMAX=8
  768. MAPMAX=16383
  769.  
  770. ' IF CHKFILE(N$)==FALSE THEN RETURN
  771.  
  772. ATRSIZE=ATRMAX DIV 4
  773. WMAX=HEADMAX+ATRSIZE+(MAPMAX*4)
  774. DIM W%[WMAX]
  775.  
  776. '---
  777. SDLOAD N$,W%
  778. ' LOAD N$,W%
  779.  
  780. '-- HEADER
  781. IF W%[H_ID]!=ID THEN
  782. PRINT "ERROR< BAD ID >"
  783. RETURN
  784. ENDIF
  785. BGL=W%[H_LY]
  786. DW=W%[H_DW]:DH=W%[H_DH]
  787. MX=W%[H_MX]:MY=W%[H_MY]
  788.  
  789. BGW=DW*MX:BGH=DH*MY:MAX=BGW*BGH
  790. IF MAX>16383 THEN
  791. PRINT "BG CHIP OVER:";MAX
  792. RETURN
  793. ENDIF
  794. IF BGL<1 OR BGL>4 THEN RETURN
  795. '---
  796. DISPLAY 0
  797. FOR L=0 TO BGL-1
  798. ' BGCLR 1
  799. BGSCREEN L,BGW,BGH
  800. BGOFS L,0,0,0
  801. BGSCALE L,1,1
  802. BGSHOW L
  803. NEXT
  804.  
  805. '--- ATR[]
  806. TOP=HEADMAX
  807. FOR I=0 TO ATRMAX-1 STEP 4
  808. ATR%[I+0]=W%[TOP] AND &HFF
  809. ATR%[I+1]=(W%[TOP]>>8) AND &HFF
  810. ATR%[I+2]=(W%[TOP]>>16) AND &HFF
  811. ATR%[I+3]=(W%[TOP]>>24) AND &HFF
  812. TOP=TOP+1
  813. NEXT
  814.  
  815. '--- TMP0[]-TMP3[]
  816. ' DISPLAY 0
  817. BGCLR
  818. DIM TMP%[BGH*BGW]
  819. FOR I=0 TO BGL-1
  820. FOR Y=0 TO BGH-1
  821. FOR X=0 TO BGW-1 STEP 2
  822. O=X+Y*BGW
  823. TMP%[O+0]=W%[TOP] AND &HFFFF
  824. TMP%[O+1]=(W%[TOP]>>16) AND &HFFFF
  825. TOP=TOP+1
  826. NEXT
  827. NEXT
  828. BGLOAD I,TMP%
  829. NEXT
  830.  
  831. END
  832. '-----
  833. DEF STKANDBTN()
  834. SLV=0.2 'THRESHOLD
  835. BTN=BUTTON()
  836. STICK OUT SX,SY
  837. IF (SY>SLV) THEN BTN=BTN OR 1
  838. IF (SY<-SLV) THEN BTN=BTN OR 2
  839. IF (SX<-SLV) THEN BTN=BTN OR 4
  840. IF (SX>SLV) THEN BTN=BTN OR 8
  841. RETURN BTN
  842. END
  843. '----
  844. '
  845. '
  846. '
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement