home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 4: Phase Four / 17Bit_Phase_Four.iso / files / 3121.dms / 3121.adf / Source_Code.AMOS / Source_Code.amosSourceCode
Encoding:
AMOS Source Code  |  1978-05-13  |  7.3 KB  |  557 lines

  1. '
  2. '                                   Gunfighter 
  3. '
  4. Global C1,C2,SPEED,L$,CX1,CX2,CY1,CY2,LOD,X1,X2,Y1,Y2,WIN1,WIN2
  5. ' Delete these variables when finished...
  6. Global C1,C2,I1,I2,A
  7. '
  8. Amos Lock 
  9. Bob Update Off 
  10.  Extension_5_003A 
  11. Hide 
  12. '
  13. _INTRO
  14. '
  15. C1=1
  16. C2=1
  17. '
  18. CX1=57 : CY1=62
  19. '
  20. CX2=57 : CY2=159
  21. '
  22. Do 
  23. '
  24. Bob Update Off 
  25. '
  26. _OPTIONS
  27. '
  28. LOD=0
  29. '
  30. For GAMES=1 To 5
  31. '
  32. _DUEL
  33. '
  34. LOD=1
  35. '
  36. Next GAMES
  37. '
  38. If WIN1>WIN2 Then Load "PL_2_WIN",1
  39. If WIN2>WIN1 Then Load "PL_1_WIN",1
  40. '
  41. Unpack 1 To 0
  42. '
  43. Wait 300
  44. '
  45. Fade 1
  46. '
  47. Loop 
  48. '
  49. Procedure _INTRO
  50. '
  51. Load "Title.abk",9
  52. Load "Hank_The_Hat_Background",10
  53. Load "Logo.abk",11
  54. Load "Present.abk",12
  55. Load "Samples.abk",5
  56. Load "Hank.abk"
  57. '
  58. Dim X(Length(1))
  59. Dim Y(Length(1))
  60. '
  61. A=1
  62. '
  63. Open In 1,"Hank.txt"
  64. '
  65. For I=1 To Length(1)
  66. Input #1,X(I)
  67. Input #1,Y(I)
  68. Hot Spot I,X(I),Y(I)
  69. Next I
  70. '
  71. Close 1
  72. '
  73. A=13
  74. '
  75. For I=11 To 12
  76. '
  77. Unpack I To 0
  78. Erase I
  79. Wait 100
  80. Fade 1
  81. Wait 15
  82. '
  83. Next I
  84. '
  85. Unpack 9 To 1
  86. Erase 9
  87. Unpack 10 To 0
  88. Erase 10
  89. Double Buffer 
  90. Bob 1,190,55,1 : A=1
  91. Bob 2,130,55,13+$8000 : B=13
  92. Update 
  93. Fade 1 To -1
  94. Wait 15
  95. Wait 20
  96. Sam Play 15,4,19000
  97. Wait 20
  98. '
  99. T=0
  100. '
  101. Do 
  102. '
  103. Bob 1,190,55,A
  104. Bob 2,130,55,B+$8000
  105. '
  106. Inc A : Inc B
  107. If A=14 Then A=13
  108. If B=15 Then Sam Play 9,1,8000
  109. If A=5 Then Sam Play 6,1,8000
  110. If B=28 and T=15 Then Sam Play 9,2,9000
  111. If B=28 and T<60 Then Inc T : B=27
  112. If B=35 Then Sam Play 9,3,8000
  113. Update 
  114. If B=36 Then Goto _END
  115. Wait Vbl 
  116. '
  117. Loop 
  118. '
  119. _END:
  120. '
  121. Wait 50
  122. '
  123. Fade 1
  124. '
  125. Wait 15
  126. '
  127. Screen 1
  128. '
  129. Fade 1
  130. '
  131. Wait 15
  132. '
  133. Screen Close 1
  134. Screen Close 0
  135. '
  136. Erase 1
  137. Erase 5
  138. '
  139. Load "Control_1.abk",2
  140. Load "Control_2.abk",3
  141. '
  142. Auto View Off 
  143. '
  144. Repeat 
  145. '
  146. Inc TIMMYTIMER
  147. '
  148. Unpack 2 To 0
  149. Screen Show 0
  150. View 
  151. Wait Vbl 
  152. Unpack 3 To 1
  153. Screen Show 1
  154. View 
  155. Wait Vbl 
  156. '
  157. Until TIMMYTIMER=4
  158. '
  159. Auto View On 
  160. View 
  161. Fade 1
  162. Wait 15
  163. Screen Close 0
  164. Screen Close 1
  165. Erase 2
  166. Erase 3
  167. '  
  168. End Proc
  169. '
  170. Procedure _OPTIONS
  171. '
  172. Randomize Timer
  173. '
  174. Load "Options.abk",10
  175. Load "Boxes.abk"
  176. '
  177. Unpack 10 To 0
  178. Erase 10
  179. Double Buffer 
  180. '
  181. TIMMYTIMER=0
  182. '
  183. Repeat 
  184. '
  185. Inc TIMMYTIMER
  186. '
  187. If Key State(64)=-1 Then Gosub MOV1
  188. If Key State(68)=-1 Then Gosub MOV2
  189. '
  190. Bob 1,CX1,CY1,1
  191. Bob 2,CX2,CY2,2
  192. Update 
  193. '
  194. Wait 5
  195. '
  196. Until TIMMYTIMER=50
  197. '
  198. Goto _END
  199. '
  200. MOV1:
  201. '
  202. If CX1=57 Then CX1=129 : C2=2 : Return 
  203. If CX1=129 Then CX1=201 : C2=3 : Return 
  204. If CX1=201 Then CX1=57 : C2=1
  205. '
  206. Return 
  207. '
  208. MOV2:
  209. '
  210. If CX2=57 Then CX2=129 : C1=2 : Return 
  211. If CX2=129 Then CX2=201 : C1=3 : Return 
  212. If CX2=201 Then CX2=57 : C1=1
  213. '
  214. Return 
  215. '
  216. _END:
  217. '
  218. Fade 1
  219. Wait 15
  220. Screen Close 0
  221. '
  222. If CX1=201 Then C2=Rnd(1)+1
  223. If CX2=201 Then C1=Rnd(1)+1
  224. '
  225. End Proc
  226. '
  227. Procedure _DUEL
  228. '
  229. If LOD=1 Then Goto LOD
  230. '
  231. '  Load Background 
  232. '
  233. RAN=Rnd(1)
  234. '
  235. If RAN=0 Then Load "Hank_The_Hat_Background",10
  236. If RAN=1 Then Load "Indian_Background",10
  237. '
  238. '  Load Sound FX 
  239. '
  240. Load "Samples.abk",5
  241. '
  242. '  Load Player 1 Character 
  243. '
  244. If C1=1 Then L$="Hank.abk" : Y1=55
  245. If C1=2 Then L$="Joe.abk" : Y1=49
  246. '
  247. Load L$
  248. '
  249. Dim X1(Length(1))
  250. Dim Y1(Length(1))
  251. '
  252. L$=L$-".abk"
  253. '
  254. Open In 1,L$+".txt"
  255. '
  256. For I=1 To Length(1)
  257. Input #1,X1(I)
  258. Input #1,Y1(I)
  259. Hot Spot I,X1(I),Y1(I)
  260. Next I
  261. '
  262. Close 1
  263. '
  264. '  Load Player 2 Character 
  265. '
  266. A=Length(1)
  267. '
  268. If C2=1 Then L$="Hank.abk" : Y2=55
  269. If C2=2 Then L$="Joe.abk" : Y2=49
  270. '
  271. Load L$,1
  272. '
  273. Dim X2(Length(1))
  274. Dim Y2(Length(1))
  275. '
  276. L$=L$-".abk"
  277. '
  278. Open In 1,L$+".txt"
  279. '
  280. For I=A+1 To Length(1)
  281. Input #1,X2(I)
  282. Input #1,Y2(I)
  283. Hot Spot I,X2(I),Y2(I)
  284. Next I
  285. '
  286. Close 1
  287. '
  288. Unpack 10 To 0
  289. Erase 10
  290. Screen Display 0,,100,,
  291. Double Buffer 
  292. Make Mask 
  293. '
  294. LOD:
  295. '
  296. '  Set Up Background 
  297. '
  298. Bob Update On 
  299. Autoback 2
  300. '
  301. '  Play Mini - Tune
  302. '
  303. ' tune code goes here!!! 
  304. '
  305. '  Set Up Gunfight Variables   
  306. '
  307. I1=1 : Rem Player 1 Start Image 
  308. I2=A+1 : Rem Player 2 Start Image 
  309. '
  310. LOCK1=0 : Rem Player 1 Cheat lock  
  311. LOCK2=0 : Rem Player 2 Cheat lock
  312. '
  313. _FREE1=1 : Rem Player 1 Shoot lock (stops player holding down fire)   
  314. _FREE2=1 : Rem Player 2 Shoot lock  
  315. '
  316. _FIRE_1=0 : Rem Is player 1 firing?  
  317. _FIRE_2=0 : Rem As above for player 2  
  318. '
  319. DIE_1=0 : Rem Is player 1 dieing?  
  320. DIE_2=0 : Rem As above for player 2  
  321. '
  322. '
  323. '  Draw! 
  324. '
  325. Bob 1,190,Y1,I1
  326. Bob 2,130,Y2,I2+$8000
  327. '
  328. Wait Vbl 
  329. '
  330. Fade 1 To -1
  331. Wait 15
  332. Gosub _UPDATE
  333. '
  334. For I=0 To Rnd(200)
  335. Wait 1
  336. If Key State(68)=-1 Then LOCK1=1
  337. If Key State(64)=-1 Then LOCK2=1
  338. Next I
  339. '
  340. Sam Play 15,4,19000
  341. '
  342. If LOCK1=1 and LOCK2=1 Then Wait 40 : Sam Play 15,2,9000 : Goto _END
  343. '
  344. Do 
  345. '
  346. Gosub _FREE
  347. '
  348. If DIE_1=0 Then Gosub DEATH_1
  349. '
  350. If DIE_2=0 Then Gosub DEATH_2
  351. '
  352. Gosub _ANIMATE_1
  353. '
  354. Gosub _ANIMATE_2
  355. '
  356. If LOCK1=0 and _FREE1=1 and Key State(68)=-1 and DIE_1=0 Then Gosub _SHOOT_1
  357. '
  358. If LOCK2=0 and _FREE2=1 and Key State(64)=-1 and DIE_2=0 Then Gosub _SHOOT_2
  359. '
  360. Gosub _UPDATE
  361. '
  362. Gosub SOUND_1
  363. '
  364. Gosub SOUND_2
  365. '
  366. Loop 
  367. '
  368. _FREE:
  369. '
  370. If Key State(68)=0 Then _FREE1=1
  371. If Key State(64)=0 Then _FREE2=1
  372. '
  373. Return 
  374. '
  375. _SHOOT_1:
  376. '
  377. If C1=1 Then If I1=1 or I1=4 or I1=13 or I1=14 Then _FIRE_1=1 : _FREE1=0 : Inc I1
  378. If C1=2 Then If I1=1 or I1=5 Then _FIRE_1=1 : _FREE1=0 : Inc I1
  379. '
  380. Return 
  381. '
  382. _SHOOT_2:
  383. '
  384. If C2=1 Then If I2=A+1 or I2=A+4 or I2=A+13 or I2=A+14 Then _FIRE_2=1 : _FREE2=0 : Inc I2
  385. If C2=2 Then If I2=A+1 or I2=A+5 Then _FIRE_2=1 : _FREE2=0 : Inc I2
  386. '
  387. Return 
  388. '
  389. DEATH_1:
  390. '
  391. If C2=2 Then Goto _C2
  392. '
  393. If I2<>A+7 and I2<>A+17 Then Return 
  394. '
  395. If C1=1 Then Gosub DHANK_1
  396. If C1=2 Then Gosub DJOE_1
  397. '
  398. Return 
  399. '
  400. _C2:
  401. '
  402. If I2<>A+6 Then Return 
  403. '
  404. If C1=1 Then Gosub DHANK_1
  405. If C1=2 Then Gosub DJOE_1
  406. '
  407. Return 
  408. '
  409. DHANK_1:
  410. '
  411. If I1<10 Then I1=10 : DIE_1=1
  412. If I1>12 Then I1=18 : DIE_1=1
  413. '
  414. Return 
  415. '
  416. DJOE_1:
  417. '
  418. I1=9 : DIE_1=1
  419. '
  420. Return 
  421. '
  422. DEATH_2:
  423. '
  424. If C1=2 Then Goto _C22
  425. '
  426. If I1<>7 and I1<>17 Then Return 
  427. '  
  428. If C2=1 Then Gosub DHANK_2
  429. If C2=2 Then Gosub DJOE_2
  430. '
  431. Return 
  432. '
  433. _C22:
  434. '
  435. If I1<>6 Then Return 
  436. '
  437. If C2=1 Then Gosub DHANK_2
  438. If C2=2 Then Gosub DJOE_2
  439. '
  440. Return 
  441. '
  442. DHANK_2:
  443. '
  444. If I2<A+10 Then I2=A+10 : DIE_2=1
  445. If I2>A+12 Then I2=A+18 : DIE_2=1
  446. '
  447. Return 
  448. '
  449. DJOE_2:
  450. '
  451. I2=A+9 : DIE_2=1
  452. '
  453. Return 
  454. '
  455. _ANIMATE_1:
  456. '
  457. If C1=1 Then Gosub HANK_1
  458. If C1=2 Then Gosub JOE_1
  459. '
  460. Return 
  461. '
  462. HANK_1:
  463. '
  464. If I1>9 and I1<13 Then Inc I1 : If I1=13 Then DIE_1=0
  465. If I1>17 and I1<35 Then Inc I1 : If I1=35 Then DIE_1=0
  466. '
  467. If _FIRE_1=1 and I1>1 and I1<8 Then Inc I1 : If I1=8 Then I1=4 : _FIRE_1=0
  468. If _FIRE_1=1 and I1>13 and I1<18 Then Inc I1 : If I1=18 Then I1=14 : _FIRE_1=0
  469. '
  470. Return 
  471. '
  472. JOE_1:
  473. '
  474. If I1>8 and I1<25 Then Inc I1
  475. '
  476. If _FIRE_1=1 and I1>1 and I1<9 Then Inc I1 : If I1=9 Then I1=5 : _FIRE_1=0
  477. '
  478. Return 
  479. '
  480. _ANIMATE_2:
  481. '
  482. If C2=1 Then Gosub HANK_2
  483. If C2=2 Then Gosub JOE_2
  484. '
  485. Return 
  486. '
  487. HANK_2:
  488. '
  489. If I2>A+9 and I2<A+13 Then Inc I2 : If I2=A+13 Then DIE_2=0
  490. If I2>A+17 and I2<A+35 Then Inc I2 : If I2=A+35 Then DIE_2=0
  491. '
  492. If _FIRE_2=1 and I2>A+1 and I2<A+8 Then Inc I2 : If I2=A+8 Then I2=A+4 : _FIRE_2=0
  493. If _FIRE_2=1 and I2>A+13 and I2<A+18 Then Inc I2 : If I2=A+18 Then I2=A+14 : _FIRE_2=0
  494. '
  495. Return 
  496. '
  497. JOE_2:
  498. '
  499. If I2>A+8 and I2<A+25 Then Inc I2
  500. '
  501. If _FIRE_2=1 and I2>A+1 and I2<A+9 Then Inc I2 : If I2=A+9 Then I2=A+5 : _FIRE_2=0
  502. '
  503. Return 
  504. '
  505. _UPDATE:
  506. '
  507. Bob 1,190,Y1,I1
  508. Bob 2,130,Y2,I2+$8000
  509. '
  510. Wait Vbl 
  511. '
  512. SOUND_1:
  513. '
  514. If C1=2 Then Goto _C222
  515. '
  516. If I1=7 or I1=17 Then Sam Play 4,1,8000
  517. If I1=27 Then Sam Play 4,2,9000
  518. If I1=35 Then Inc WIN2 : Sam Play 2,3,8000 : Goto _END
  519. '
  520. Return 
  521. '
  522. _C222:
  523. '
  524. If I1=6 Then Sam Play 4,1,8000
  525. If I1=22 Then Sam Play 2,3,8000
  526. If I1=25 Then Inc WIN2 : Goto _END
  527. '
  528. Return 
  529. '
  530. SOUND_2:
  531. '
  532. If C2=2 Then Goto _C2222
  533. '
  534. If I2=A+7 or I2=A+17 Then Sam Play 8,1,8000
  535. If I2=A+27 Then Sam Play 8,2,9000
  536. If I2=A+35 Then Sam Play 1,3,8000 : Inc WIN1 : Goto _END
  537. '
  538. Return 
  539. '
  540. _C2222:
  541. '
  542. If I2=A+6 Then Sam Play 8,1,8000
  543. If I2=A+22 Then Sam Play 1,3,8000
  544. If I2=A+25 Then Inc WIN1 : Goto _END
  545. '
  546. Return 
  547. '
  548. _END:
  549. '
  550. Wait 50
  551. '
  552. Fade 1
  553. '
  554. Wait 13
  555. '
  556. End Proc
  557. '