Advertisement
jdubin

Dragonfire 2600 Source

Dec 25th, 2016
513
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 46.53 KB | None | 0 0
  1. ; Retrieved on 2016-12-25 from http://www.atariage.com/2600/archives/source/Dragonfire_source/
  2. ;
  3. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4. ;
  5. ; DRAGONFIRE
  6. ; AKA
  7. ; CHEESE
  8. ;
  9. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  10. ;
  11. ; MAY 21, 1982
  12. ; COPYRIGHT 1982 BY IMAGIC
  13. ; ROBERT GRAVES SMITH III
  14. ;
  15.  
  16. processor 6502
  17.  
  18. RELEASE EQU 1
  19. PAL EQU 0 ;(PAL COLORS NOT IN THIS LISTING, OTHER PAL SHOULD WORK)
  20.  
  21. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  22. ;
  23. ; STELLA EQUATES
  24. ;
  25. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  26.  
  27.  
  28. VSYNC EQU $00 ; VERT SYNC
  29. VBLNK EQU $01 ;
  30. HSYNC EQU $02 ; STROBE
  31. MCRES EQU $03 ; MASTER COUNTER RESET
  32. P0SIZE EQU $04 ; SIZE, NUMBER OF COPIES
  33. P1SIZE EQU $05 ;
  34. P0CLR EQU $06 ; COLOR
  35. P1CLR EQU $07 ;
  36. PFCLR EQU $08 ;
  37. BKCLR EQU $09
  38. PFCTRL EQU $0A ; PLAYFIELD CONTROL
  39.  
  40. P0REF EQU $0B ; REFLECT
  41. P1REF EQU $0C ;
  42.  
  43. PF0 EQU $0D ; PLAYFIELD REGISTERS
  44. PF1 EQU $0E ;
  45. PF2 EQU $0F ;
  46.  
  47. P0RES EQU $10 ; RESETS
  48. P1RES EQU $11 ;
  49. M0RES EQU $12 ;
  50. M1RES EQU $13 ;
  51. BRES EQU $14 ;
  52.  
  53. SNDC0 EQU $15 ; SOUND CONTROL
  54. SNDC1 EQU $16 ;
  55. SNDF0 EQU $17 ; FREQUENCY
  56. SNDF1 EQU $18 ;
  57. SNDV0 EQU $19 ; VOLUME
  58. SNDV1 EQU $1A ;
  59.  
  60. P0GR EQU $1B ; GRAPHICS REGISTERS
  61. P1GR EQU $1C ;
  62. M0GR EQU $1D ;
  63. M1GR EQU $1E ;
  64. BGR EQU $1F ;
  65.  
  66. P0HM EQU $20 ; HMOVES
  67. P1HM EQU $21
  68. M0HM EQU $22
  69. M1HM EQU $23
  70. BHM EQU $24 ;
  71.  
  72. P0VDEL EQU $25 ; VERTICAL DELAYS
  73. P1VDEL EQU $26 ;
  74. BVDEL EQU $27 ;
  75.  
  76. MP0RES EQU $28 ; MISSILE TRACKING
  77. MP1RES EQU $29 ;
  78. HMOV EQU $2A ; HORIZ MOVEMENT STROBE
  79. CLRHM EQU $2B ; CLEAR HMOVE STROBE
  80. CCLR EQU $2C ; CX REGISTER RESET STROBE
  81.  
  82. ;READ ADDRESSES
  83.  
  84. M0PPCX EQU $00 ; M0 PLAYER CX
  85. M1PPCX EQU $01 ; M1 PLAYER
  86. P0BPCX EQU $02 ; P0 BALL/PLAYFIELD CX
  87. P1BPCX EQU $03 ;
  88. M0BPCX EQU $04 ; M0 BALL/PLAYFIELD CX
  89. M1BPCX EQU $05 ;
  90. BPCX EQU $06 ; BALL PLAYFIELD CX
  91. PPMMCX EQU $07 ; P0/P1 MISSILE CX
  92. POT0A EQU $08 ; POT IN, LEFT
  93. POT0B EQU $09 ; POT IN, LEFT
  94. POT1A EQU $0A ; POT IN, RIGHT
  95. POT1B EQU $0B ; POT IN, RIGHT
  96. TRIG0 EQU $0C ; SCHMIDT TRIGGER LEFT
  97. TRIG1 EQU $0D ; RIGHT
  98.  
  99. ; PIA ADDRESSES
  100.  
  101. PLRCTL EQU $280 ; PORT A (CONTROLLERS)
  102. DDRA EQU $281 ; DATA DIRECTION A
  103. FPCTL EQU $282 ; FRONT PANEL SWITCHES
  104. DDRB EQU $283 ; DATA DRIECTION B
  105. TIMER EQU $284 ; PIA TIMER
  106. TIMOUT EQU $285 ; PIA TIMER FLAG
  107. TIMD1 EQU $294 ; CLOCK / 1
  108. TIMD8 EQU $295 ; CLOCK / 8
  109. TIMD64 EQU $296 ; CLOCK / 64
  110. TIMD1K EQU $297 ; CLOCK / 1024
  111.  
  112. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  113. ;
  114. ; GAME EQUATES
  115. ;
  116. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  117.  
  118. TOP EQU $A0
  119.  
  120. IF PAL
  121. NUP1S EQU 10 ; NUMBER OF PLAYER 1'S
  122. ELSE
  123. NUP1S EQU 9
  124. ENDIF
  125. NUP0S EQU 5 ; NUMBER OF PLAYER 0'S
  126.  
  127. DEAD EQU $D0
  128. SUPRESS EQU $FF
  129. FBSPEED EQU 2 ;FIREBALL SPEED
  130. WINDOW EQU 20
  131. CAVECLR EQU $0A
  132.  
  133. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  134. ;
  135. ; SOUND EQUATES
  136. ;
  137. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  138. FIRES EQU 0 ;FIRE FIREBALL
  139. BONSND EQU 1 ;BONUS
  140. JUMPS EQU 2 ;JUMP SOUND
  141. EXSND EQU 3 ;EXPLOSION
  142. DEATHS EQU 4 ;DEATH
  143. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  144. ;
  145. ; RAM ALOCATION
  146. ;
  147. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  148. ; CODE
  149. SEG.U RAM
  150. ORG $80
  151.  
  152. RAND DS 1 ;
  153. RANDH DS 1
  154. FLAGS DS 1 ; D7=0=LOGO, D6=1, SHOW VERSION NUM
  155. ; D0 = RESET SWITCH
  156.  
  157. EYETOP DS 1 ; UPPER LIMIT OF EYE
  158. EYEBOT DS 1 ; LOWER LIMIT OF EYE
  159. NEWCNT DS 1 ; COUNTER FOR NEW BOARD SETUP
  160. ATTRACT DS 1 ;
  161. GAMESTAT DS 1 ; D7 RESET=CASTLE SCREEN, D6 RESET=ATTR
  162. PLYRSTAT DS 1 ; D7 SET=PLAYER INIT
  163. DRAGSTAT DS 1 ; D6 SET=FLAMING
  164. REFSHAD DS 1 ; REFLECT FOR PLAYER
  165. GSEL DS 1 ; SELECT TIMER
  166. GAMNUM DS 1 ; GAME NUMBER
  167. T0 DS 1 ;
  168. T1 DS 1 ;
  169. T2 DS 1 ;
  170. T3 DS 1 ;
  171. CX DS 1 ; COLLISION POINTER
  172. LIVES DS 2 ; LIFE COUNTERS
  173. P1POINT DS 1 ;
  174. P0POINT DS 1 ;
  175. COUNT DS 1 ;
  176.  
  177. ZSTART
  178. XSTART
  179.  
  180. P0XS DS NUP0S
  181. DRAGONX DS 1 ;
  182. EYEX DS 1 ; EYE XPOS
  183. PLAYERX DS 1 ;
  184. XEND
  185.  
  186. PLAYERY DS 1 ;
  187. PLAYNO DS 1 ; PLAYER UP
  188. WAVENO DS 1 ; WAVE NUM
  189. FRAME DS 2 ; 16 BIT FRAME COUNTER
  190. DEATH DS 1 ; DEATH FLAG
  191. ;
  192. PLAYERLX DS 1 ;
  193. PLAYERLY DS 1 ;
  194. PLAYERDX DS 1 ;
  195. PLAYERDY DS 1 ;
  196. ;
  197. DRAGONDX DS 1 ;DRAGON DELTA
  198. ;
  199. SCOREL0 DS 2 ; LO SCORE
  200. SCOREM0 DS 2 ;
  201. SCOREH0 DS 2 ;
  202.  
  203. ZEND
  204. ; HMOVE VALUES
  205. P1HMS DS NUP1S ;LIST OF HMOVES FOR P1'S
  206. P0HMS DS NUP0S ;
  207. DRAGONHM DS 1 ;
  208. EYEHM DS 1 ;
  209. PLAYERHM DS 1 ;
  210.  
  211. P0YS DS NUP0S ;
  212. P0Y DS 1 ;
  213. P1ID DS NUP1S ;
  214. P0ID DS NUP0S ;
  215.  
  216. ;MAP THE RAT & ARROW RAM OVER THE P0 ID LIST
  217. RATTIME EQU *-4 ; RAT TIMER
  218. ARROWTIM EQU *-3 ; ARROW TIMER
  219. RATHM EQU *-2 ; RAT HMOVE
  220. ARROWHM EQU *-1 ; ARROW HMOVE
  221.  
  222. PLAYERID DS 1 ;
  223. P1INDCLR DS 2 ;
  224. P0INDCLR DS 2 ;
  225. P1IND DS 2 ;
  226. P0IND DS 2 ;
  227.  
  228. DRAGTIME DS 1 ; DRAGON FLAMING TIMER
  229. DRAGONAN DS 1 ;
  230.  
  231. ; DRAGON AND SIXCHAR INDIRECTION
  232. ARRWIND ; ARROW INDIRECTION
  233. SIXIND0
  234. DRAGH0 DS 2
  235. ;
  236. ARRWINDC ; ARROW COLOR INDIRECTION
  237. SIXIND1
  238. DRAGH1 DS 2
  239. ;
  240. SIXIND2
  241. DRAGH2 DS 2 ;
  242. ;
  243. SIXIND3
  244. DRAGH3 DS 2
  245. ;
  246. SIXIND4
  247. DELAY DS 2 ; INDIRECT JUMP INTO KERNEL
  248.  
  249. SIXIND5 DS 2 ;
  250.  
  251. CAVESHAD DS 1 ; SHADOW CAVE COLOR
  252.  
  253. SND1 DS 1 ; SOUND ID
  254. SND1TIME DS 1 ; SOUND TIMER
  255. JUMPTIME DS 1 ;
  256. SELTIME DS 1 ; SELECT SWITCH TIMER
  257. SEA DS 1 ;
  258.  
  259. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  260. ;
  261. ; MAIN PROGRAM
  262. ;
  263. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  264. SEG CODE
  265. ORG $1000,0
  266.  
  267. START SEI
  268. CLD ; NO DECIMAL
  269. LDX #$00
  270. TXA
  271. CLP STA $0,X ; CLEAR STELLA & RAM
  272. TXS
  273. INX
  274. BNE CLP
  275. ;
  276. ; INITS
  277. ;
  278. DEC ATTRACT
  279. LDA #$11
  280. STA PFCTRL
  281. STA RANDH
  282. JSR SETUPCA ; SET UP CASTELE SCREEN
  283. LDA #150
  284. STA PLAYERX
  285. STA PLAYERY
  286. STA RAND
  287. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  288. ;
  289. ; SYNC FOR NEW FRAME
  290. ;
  291. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  292. SCRNTOP LDA #2 ; VBLANK ON
  293. STA VBLNK
  294. STA HSYNC ; VSYNC FOR 3 SCAN LINES
  295. STA VSYNC
  296.  
  297. ; SET UP HIGH BYTES FOR INDIRECTION
  298. LDA #(ATREAS >>8 )
  299. STA P1IND+1
  300. LDA #MAN0 >>8
  301. STA P0IND+1
  302. LDA #TREASCLR >>8
  303. STA P1INDCLR+1
  304. LDA #MAN0C >> 8
  305. STA P0INDCLR+1
  306.  
  307. ; SET UP DRAGONS EYE OR FLAME
  308. ; 30 MC
  309. ;
  310. LDA DRAGSTAT
  311. ASL
  312. ASL
  313. LDA DRAGONDX
  314. ROL
  315. ROL
  316. AND #$3
  317. TAX
  318. LDA DRAGONX
  319. CLC
  320. ADC OFFSETS,X
  321. STA EYEX
  322. ; RANDOM NUMBER GENERATOR
  323. RANDOM LDA RAND
  324. ROR
  325. ROR
  326. ROR
  327. EOR RANDH
  328. ASL
  329. ASL
  330. ROL RAND
  331. ROL RANDH
  332. LDA RAND
  333. ;
  334. STA HSYNC
  335. LDA CAVESHAD ; SETUP PLAYFIELD COLOR
  336. EOR #$C ; DROP 2 LUMES
  337. AND ATTRACT
  338. STA PFCLR
  339. LDA #$0
  340. STA HSYNC
  341. STA VSYNC ; OFF GOES VSYNC
  342.  
  343. IF PAL
  344. LDA #$42
  345. ELSE
  346. LDA #$2C
  347. ENDIF
  348. STA TIMD64
  349. ;
  350. ; SOMEONE DIE THIS FRAME?
  351. ;
  352. LDX PLAYNO
  353. LDA LIVES,X
  354. BPL OUT23
  355. ; START DEATH, SOMEONE DEAD!
  356. IF PAL
  357. LDA #150+15
  358. STA PLAYERY
  359. LDA #150
  360. STA PLAYERX
  361. ELSE
  362. LDA #150
  363. STA PLAYERY
  364. STA PLAYERX
  365. ENDIF
  366.  
  367. LDY SND1TIME
  368. DEY
  369. BEQ SKIP39
  370. LDX #DEATHS
  371. CPX SND1
  372. BEQ OUT23
  373. JSR STARTSND
  374. JMP OUT23
  375. SKIP39
  376. ;
  377. LDA GAMNUM
  378. LSR
  379. BCS PLAY2 ; TWO PLAYER
  380.  
  381. ; END GAME
  382. ENDGAME JSR SETUPCA
  383. STA LIVES ;(A = 0)
  384. STA LIVES+1
  385. STA GAMESTAT
  386. LDA #150
  387. STA PLAYERY
  388. STA PLAYERX
  389. BNE OUT23
  390. ; 2 PLAYER VERSION
  391. PLAY2 LDA LIVES
  392. BPL ALIVE0
  393. LDA LIVES+1
  394. BMI ENDGAME ; BOTH DEAD
  395. ; O DEAD, 1 ALIVE
  396. ALIVE1 LDA PLAYNO
  397. EOR #$1
  398. STA PLAYNO
  399. JSR SETUPCA
  400. BEQ OUT23
  401. ALIVE0 LDY WAVENO
  402. INY
  403. CPY #9
  404. BCS ALIVE1
  405. STY WAVENO
  406. BCC ALIVE1 ; START NEW WAVE
  407. OUT23
  408. ;
  409. ; ANIMATE MAN
  410. ;
  411. LDA FRAME
  412. AND #$7
  413. TAY
  414. AND #$1
  415. BNE OUT16
  416. ; SPECIAL CASE, EXPLODING MAN
  417. LDA PLAYERID
  418. CMP #(SUPINE & $FF)
  419. BCC SKIP40
  420. ;EXPLODING MAN
  421. CPY #0
  422. BNE OUT16
  423. ADC #$F
  424. CMP #(SUPINE2+1) & $FF
  425. BCC WRID
  426. ;EXPLOSION OVER
  427. LDA #$8C
  428. STA PLAYERX
  429. LDA #0
  430. STA PLAYERY
  431. STA PLAYERDY
  432. LDA #$80
  433. STA PLYRSTAT
  434. LDX PLAYNO
  435. DEC LIVES,X
  436. LDA #MAN0 & $FF
  437. WRID STA PLAYERID
  438. JMP OUT16
  439. SKIP40
  440. ; FORCE KNEELING MAN IF CASTLE AND DOWN STICK
  441. BIT GAMESTAT
  442. BMI SKIP07 ; DOING DRAGON SCREEN
  443. LDA PLRCTL ; LOAD STICK
  444. LDX PLAYNO
  445. BEQ SKIP09
  446. ASL
  447. ASL
  448. ASL
  449. ASL
  450. SKIP09 AND #$20
  451. BNE SKIP23
  452. STA PLAYERDX ;KNEELING MAN CAN'T MOVE
  453. LDA #MAN4 & $FF
  454. BNE SKIP75
  455. SKIP23
  456. SKIP07
  457. LDA PLAYERDX
  458. ORA PLAYERDY
  459. BNE SKIP76
  460. DOMAN0 LDA #(MAN0 & $FF) ;FORCE STILL PICTURE
  461. BEQ SKIP75
  462. SKIP76 LDA PLAYERID
  463. CMP #(MAN2 & $FF)
  464. BCS DOMAN0
  465. ADC #$10
  466. SKIP75 STA PLAYERID
  467. OUT16
  468. ; SET UP SCORE FOR VERSION NUMBER
  469. BIT FLAGS
  470. ; SET UP VERSION NUMBER
  471. NOLOGO BVC OUT03
  472. LDA GAMNUM
  473. AND #$1
  474. LSR
  475. STA SCOREM0
  476. ADC #1
  477. STA SCOREL0
  478. LDA GAMNUM
  479. LSR
  480. TAX
  481. INX
  482. STX SCOREH0
  483. OUT03
  484.  
  485.  
  486.  
  487. ;
  488. ; REMOVE ONE EMPTY SLOT IN LIST OF P0'S
  489. ;
  490. LDX #0
  491. STX T0
  492. ;
  493. LOOP2 LDY P0YS,X
  494. CPY #DEAD
  495. BNE SKIP08
  496. INC T0
  497. LOOP3 INX ; BUMP LOOP COUNT
  498. CPX #NUP0S
  499. BNE LOOP2
  500. BEQ OUT06
  501. SKIP08 LDA T0
  502. BEQ LOOP3
  503. ;READING VLID ENTRY
  504. LOOP4 LDA P0ID,X ; GET ID
  505. PHA
  506. LDA P0XS,X
  507. DEX
  508. STA P0XS,X
  509. PLA
  510. STA P0ID,X
  511. STY P0YS,X
  512. INX ; POINT TO OLD ENTRY
  513. INX ; POINT OVER
  514. LDY P0YS,X
  515. CPX #NUP0S ; CHECK FOR MAX
  516. BNE LOOP4
  517. OUT06
  518. ;
  519. ; ROOM CLEAR?
  520. ;
  521. LDX #NUP1S-1
  522. LDA #(SPACE10 & $FF)
  523. ENDLOOP CMP P1ID,X
  524. BNE OUT11
  525. DEX
  526. BNE ENDLOOP
  527. ;
  528. LDA #(ODOOR & $FF)
  529. STA P1ID+NUP1S-1
  530. STX P1HMS+NUP1S-1 ; X = 0
  531. OUT11
  532. ;
  533. ; FIREBALL BIRTH
  534. ;
  535. BIT GAMESTAT ;DON'T DO IF CASTLE SCREEN
  536. BPL OUT10
  537.  
  538. LDX #$FF
  539. LDA PLAYERY ; IF PLAYER HIDDEN, QUIT
  540. BEQ OUT10
  541. ;SCAN LIST TO FIND AVAILABLE SLOT
  542. SERCHLP INX
  543. CPX #NUP0S-1
  544. BCS OUT10
  545. LDA P0YS,X
  546. CMP #DEAD
  547. BNE SERCHLP
  548.  
  549. ;FOUND A SLOT
  550. GOTONE CPX #0 ;ALREADY TOP OF LIST?
  551. BEQ SKIP17
  552. DEX ;SEE IF ROOM
  553. LDA P0YS,X
  554. CMP #42 ;MIN SEPARATION
  555. BCC OUT10
  556. INX ;ROOM TO SPARE
  557. SKIP17 LDA DRAGONX
  558. ADC #$14 ;OFFSET TO DRAGON HEAD
  559. BIT DRAGONDX ;TRAVEL LEFT OR RIGHT
  560. BPL SKIP16 ;RIGHT
  561. SBC #$12
  562. SKIP16 STA T0 ;CHECK FOR PRESENSE IN FLAME WINDOW
  563. CMP PLAYERX
  564. BCC SUBT0
  565. SBC PLAYERX
  566. BCS SKIP29 ;ALWAYS TAKEN
  567. ;
  568. SUBT0 LDA PLAYERX
  569. SEC
  570. SBC T0
  571. SKIP29 CMP #WINDOW
  572. BCS OUT10
  573. LDA T0
  574. STA P0XS,X
  575. LDA #$10 ;START FLAME TIMER
  576. STA DRAGTIME
  577. LDA #$40
  578. STA DRAGSTAT ;ENABLE GRAPHICS
  579. STX T1
  580. LDX #FIRES ;START SOUND
  581. JSR STARTSND
  582. LDX T1
  583. LDA #17 ;SET UP FLAME
  584. STA EYETOP
  585. LDA #10
  586. STA EYEBOT
  587. LDA #0
  588. STA P0YS,X
  589. LDA #(FB0 & $FF)
  590. STA P0ID,X
  591. OUT10
  592. INC FRAME
  593. BNE NOINC
  594. ; CHANGE PLAYER NUMBER IF 2 PLAYER AND GAME OVER
  595. BIT FLAGS
  596. BVS OUT21
  597. BIT GAMESTAT
  598. BVS OUT21
  599. LDA GAMNUM
  600. LSR
  601. BCC OUT21
  602. LDA PLAYNO
  603. EOR #1
  604. STA PLAYNO
  605. OUT21
  606. ;
  607. INC FRAME+1
  608. BNE NOINC
  609. LDA #$F3
  610. STA ATTRACT
  611. LDA #$0
  612. STA GAMESTAT
  613. NOINC
  614. ;
  615. ; PLAYER/ FIRE BALL COLLISIONS
  616. ;
  617. LDA #0
  618. STA T0
  619. BIT GAMESTAT
  620. BPL OUT04
  621. LDA PLAYERID ;DONT CX WITH EXPLODING MAN
  622. CMP #(SUPINE & $FF)
  623. BCS OUT04
  624. LDA PLAYERY ;CHECK FOR Y CX FIRST
  625. BEQ OUT04
  626. SEC
  627. SBC #16
  628. BCC NEGNUM
  629. STA T0
  630. NEGNUM CLC
  631. ADC #32
  632. STA T1
  633. ;CHECK IN Y
  634. LDX #NUP0S-1
  635. PCXLOOP LDA P0YS,X
  636. CMP #DEAD
  637. BEQ NEXT07
  638. CMP T0
  639. BCC NEXT07
  640. CMP T1
  641. BCC MAYBE
  642. NEXT07 DEX
  643. BPL PCXLOOP
  644. BMI OUT04
  645. ;CHECK IN X
  646. MAYBE LDA PLAYERX
  647. SBC #6
  648. BCC NEGNUM1
  649. CMP P0XS,X
  650. BCS NEXT07 ;NO CX
  651. NEGNUM1
  652. ADC #12
  653. CMP P0XS,X
  654. BCC NEXT07
  655. ;COLLISION!!
  656. LDA #(DOOR & $FF)
  657. STA P1ID
  658. LDA #DEAD ;EXPLODE FIREBALL
  659. STA P0YS,X
  660. LDA #SUPINE & $FF
  661. STA PLAYERID
  662. LDX #EXSND ;SOUND
  663. JSR STARTSND
  664. OUT04
  665. ;
  666. ; DERIVE HMOVE AND DELAY VALUES FOR OBJECTS
  667. ;
  668. DOHMS LDX #XEND-XSTART-1 ;LOAD NUMBER OF OBJECTS
  669. DOHMOVES LDA P0XS,X ;LOAD XPOS
  670. LSR ;/16
  671. LSR
  672. LSR
  673. LSR
  674. SEC
  675. ADC P0XS,X
  676. LSR
  677. LSR
  678. LSR
  679. LSR
  680. STA T0 ;DELAY VALUE
  681. CLC
  682. ADC P0XS,X
  683. AND #$F ;GET HMOVE VALUE 0-E
  684. SEC
  685. SBC #$7 ;MAKE 0-E FORMAT INTO SIGNED FOR HMOV
  686. EOR #$FF
  687. ASL
  688. ASL
  689. ASL
  690. ASL ;60 = CLOCK 0
  691. ORA T0
  692. STA P0HMS,X
  693. DEX
  694. BPL DOHMOVES
  695. ; RESET EYE OR FLAME
  696. STA HSYNC
  697. LDA EYEHM
  698. STA BHM
  699. AND #$F
  700. TAY
  701. NOP
  702. NOP
  703. NOP
  704. EYELOOP DEY
  705. BPL EYELOOP
  706. STA BRES
  707.  
  708.  
  709.  
  710. ; SET UP INDIRECT JUMP FOR MOVING FOUR CHAR
  711. LDA DRAGONHM
  712. LSR
  713. LSR
  714. LSR
  715. LSR
  716. TAY
  717. LDA DELAYS,Y
  718. STA DELAY ;SET UP INDIRECT JUMP
  719. LDA #(W11 >> 8)
  720. STA DELAY+1
  721. ;
  722. ; RESET TOP OF LIST P0
  723. LDA FRAME
  724. LSR
  725. BCS DOPLYR1
  726. LDA P0HMS
  727. LDX #1
  728. STX P0POINT
  729. LDX P0ID
  730. LDY P0YS
  731. CPY #DEAD
  732. BNE SKIP11
  733. DOPLYR1 LDA PLAYERHM
  734. LDX #NUP0S
  735. STX P0POINT
  736. LDX PLAYERID
  737. LDY PLAYERY
  738. SKIP11 STA HSYNC
  739. STX P0IND
  740. STX P0INDCLR
  741. STY P0Y
  742. STA P0HM
  743. AND #$F ;GET DELAY
  744. TAY
  745. RLOOPP0 DEY
  746. BPL RLOOPP0
  747. STA P0RES
  748. STA HSYNC
  749. STA HMOV
  750. STY CX ;PUT FF INTO CX
  751. INY
  752. STY P1SIZE
  753. STY P0SIZE
  754. ;
  755. ; LAST LINES BEFORE KERNEL
  756. ;
  757. LDY #NUP1S ;NUMBER OF BANDS
  758. STY P1POINT
  759. IF PAL
  760. LDX #$A5
  761. ELSE
  762. LDX #$A5-15 ;SETUP LINE COUNT
  763. ENDIF
  764.  
  765. LDY #0
  766. STY COUNT
  767. LDA REFSHAD ;REFLECT PLAYER 1
  768. STA P0REF
  769. STA CLRHM
  770. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  771. ;
  772. ; END OF VERTICAL BLANK
  773. ;
  774. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  775. VBOUT BIT TIMOUT ;WAIT FOR VERTICAL BLANK OVER
  776. BPL VBOUT
  777. STA HSYNC
  778. STY VBLNK ;ENABLE ELECTRON BEAM
  779.  
  780. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  781. ;
  782. ; KERNELS BGINS HERE
  783. ;
  784. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  785. STY BKCLR
  786. BIT GAMESTAT
  787. BMI DOCAVE
  788. STY PF0
  789. STY PF1
  790. STY PF2
  791. IF PAL
  792. LDA #$DA
  793. ELSE
  794. LDA #$C8
  795. ENDIF
  796. STA TIMD64
  797. BNE DOCASTLE
  798. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  799. ;
  800. ;CAVE TOP KERNEL
  801. ;
  802. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  803. DOCAVE LDY #$03
  804. CAVELOOP STA HSYNC
  805. STA HSYNC
  806. STA HSYNC
  807. LDA CAVE0,Y
  808. STA PF0
  809. LDA CAVE1,Y
  810. STA PF1
  811. LDA CAVE2,Y
  812.  
  813. DC $8D ; STA PF2 (ABSOLUTE)
  814. DC.W PF2
  815.  
  816. DEY
  817. BPL CAVELOOP
  818. NOP
  819. NOP
  820. JMP KENTRY ;MC 33
  821. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  822. ;
  823. ; CASTLE KERNALS
  824. ;
  825. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  826. DOCASTLE
  827. LDA #$15
  828. STA PFCTRL
  829. ;
  830. LDA #(HFB0 >>8)
  831. STA ARRWIND+1
  832. LDX #(HFB0 & $FF) ;HORIZONTAL FIREBALL
  833. LDA FRAME
  834.  
  835. AND #4
  836. BNE SKIP41
  837. LDX #(HFB1 & $FF)
  838. SKIP41 STX ARRWIND
  839. LDX #14
  840. STX T0 ;COUNT FOR ARROW
  841. ;
  842. LDY #$0A
  843. CASLOOP LDX #7
  844. CASLOOP0 STA HSYNC
  845. LDA CASTLE0,Y
  846. STA PF0
  847. LDA CASTLE1,Y
  848. STA PF1
  849. DEX
  850. BPL CASLOOP0
  851. DEY
  852. BPL CASLOOP
  853. INY
  854. STA T1
  855. ;
  856. LDA RATHM
  857. STA T2 ;SAVE HMOVE VALUE
  858. AND #$F
  859. STA T3 ;HOLD RAT DELAY
  860. STA HSYNC
  861. NOP
  862. NOP
  863. LDa ARROWHM
  864. LDX #25 ;LINE COUNT
  865. STA P1HM
  866. AND #$F
  867. TAY
  868. RESLOOP0 DEY
  869. BPL RESLOOP0
  870. STA P1RES
  871. STA HSYNC
  872. STA HMOV
  873. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  874. ;
  875. ;ARROW/RAT/MAN KERNAL
  876. ;
  877. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  878. WALKLOOP STA HSYNC
  879. STA P0CLR ;MC 3
  880. LDA T1 ;MC 6
  881. STA P0GR ;MC 9
  882. LDY T0 ;MC 12
  883. LDA (ARRWIND),Y ;MC 17
  884. STA P1GR ;MC 20
  885. LDA #$44 ;MC 22 LOAD RED COLOR
  886. STA P1CLR ;MC 25
  887. ;
  888. LDA T2
  889. STA P1HM ;MC 31
  890. MKERNEL TXA
  891. SEC
  892. SBC P0Y
  893. TAY
  894. AND #$F0
  895. BNE SKIP95
  896. LDA (P0IND),Y
  897. STA T1
  898. LDA (P0INDCLR),Y
  899. SKIP95 DEX
  900. BMI SHIELDK
  901. DEC T0
  902. BPL WALKLOOP
  903. ;
  904. RESET STA HSYNC
  905. STA P0CLR
  906. LDA T1
  907. STA P0GR
  908. LDY T3
  909. ;
  910. TXA
  911. SEC
  912. ;
  913. RATLOOP DEY
  914. BPL RATLOOP
  915. STA P1RES
  916. STA HSYNC
  917. STA HMOV
  918. SBC P0Y
  919. TAY
  920. LDA (P0IND),Y
  921. STA P0GR
  922. LDA (P0INDCLR),Y
  923. STA P0CLR
  924. SKIP04 DEX
  925. LDY #$9
  926. STY T0
  927. JMP MKERNEL
  928. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  929. ;
  930. ; SHIELD KERNAL
  931. ;
  932. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  933. SHIELDK
  934. LDA P0BPCX ;PLAYER/WALL CX
  935. STA HSYNC
  936. STA CX
  937. LDA #0
  938. STA P1GR
  939. STA P0GR
  940. STX P0REF
  941. STX PF0
  942. STX PF1
  943. STX PF2
  944. LDY #$11
  945. NOP
  946. STA P1RES ;MC 30
  947. STY PFCTRL
  948. LDA #3
  949. STA P1SIZE
  950. STA P0SIZE
  951. LDX WAVENO
  952. LDA DRAGCLR,X
  953. STA P0RES ;MC 51
  954. AND ATTRACT
  955. STA P1CLR
  956. STA P0CLR
  957. LDX #9
  958. STA HSYNC
  959. LDA CAVESHAD
  960. EOR #$2
  961. AND ATTRACT
  962. STA PFCLR
  963. STA HSYNC
  964. SHIELDLP STA HSYNC
  965. LDA SHIELD,X
  966. STA P1GR
  967. STA P0GR
  968. DEX
  969. BPL SHIELDLP
  970. ;
  971. ;
  972. STA HSYNC
  973. LDY #$80
  974. STY PF1
  975. STY PF2
  976.  
  977. IF PAL
  978. LDY #30
  979. ELSE
  980. LDY #20
  981. ENDIF
  982. MOATLOOP STA HSYNC
  983. DEY
  984. BPL MOATLOOP
  985. LDA SEA
  986. STA BKCLR
  987. STA HSYNC
  988.  
  989. IF PAL
  990. LDA #$B4
  991. ELSE
  992. LDA #$84
  993. ENDIF
  994.  
  995. AND ATTRACT
  996. STA BKCLR
  997. ;
  998. ; RETURN TO MAIN SCREEN
  999. ;
  1000. JMP TIMLOOP1
  1001. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1002. ;
  1003. ; CASTLE SCREEN ROUTINES
  1004. ;
  1005. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1006. MOVERAT LDA PLAYERID
  1007. CMP #(SUPINE & $FF)
  1008. BCS SKIP06
  1009. LDA PLAYERX
  1010. CMP #12
  1011. BCS SKIP06
  1012. JMP SETUPDR
  1013. SKIP06
  1014. ;
  1015. ; MOVE RATS AND ARROWS
  1016. ;
  1017. LDX #1
  1018. MRATLOOP LDY RATTIME,X
  1019. BEQ MOVE
  1020. DEC RATTIME,X
  1021. BNE NEXT08
  1022. STX T1
  1023. LDX #FIRES
  1024. JSR STARTSND
  1025. LDX T1
  1026. MOVE TXA
  1027. TAY
  1028. LDA RATHM,X
  1029. MOVELOOP SEC
  1030. SBC #$10
  1031. BVC NOWRAP
  1032. SEC
  1033. SBC #$F
  1034. NOWRAP CMP #$CA
  1035. BNE SKIP02
  1036. LDA #$60
  1037. SKIP02
  1038. CMP #$40
  1039. BNE SKIP03
  1040. LDA RAND
  1041. AND #$1F
  1042. ADC WAVENO
  1043. EOR #$3F
  1044. ASL
  1045. STA RATTIME,X
  1046. LDA #$40
  1047. BNE NEXT09
  1048. SKIP03 DEY
  1049. BPL MOVELOOP
  1050. NEXT09 STA RATHM,X
  1051. NEXT08 DEX
  1052. BPL MRATLOOP
  1053. ;
  1054. ; JUMP
  1055. ;
  1056. J BIT GAMESTAT
  1057. BVC OUT18
  1058. LDA PLAYERDY
  1059. BNE SKIP24
  1060. LDY PLAYERID
  1061. CPY #(SUPINE & $FF)
  1062. BCS OUT18
  1063. LDX PLAYNO
  1064. LDY TRIG0,X
  1065. BMI SKIP24
  1066. LDX #JUMPS
  1067. JSR STARTSND
  1068. LDA #12
  1069. STA JUMPTIME
  1070. LDA #1
  1071. STA PLAYERDY
  1072. ;
  1073. SKIP24
  1074. CLC
  1075. ADC PLAYERY
  1076. STA PLAYERY
  1077. BNE SKIP27
  1078. STA PLAYERDY
  1079. SKIP27
  1080. CMP #$9
  1081. BCC OUT18
  1082. ; AT TOP OF JUMP
  1083. DEC PLAYERY
  1084. DEC JUMPTIME
  1085. BNE OUT18
  1086. LDY #$FF
  1087. STY PLAYERDY
  1088. OUT18
  1089. ;
  1090. ; CX
  1091. ;
  1092. LDA PLAYERID ;DONT CX WITH EXPLODING MAN
  1093. CMP #(SUPINE & $FF)
  1094. BCS OUT19
  1095. BIT PPMMCX
  1096. BPL OUT19
  1097. BIT CX
  1098. BMI OUT19 ;LEAVE IF TOUCHING WALL
  1099. LDA #(SUPINE & $FF)
  1100. STA PLAYERID
  1101. LDX #EXSND ;TURN ON EXPLOSION
  1102. JSR STARTSND
  1103. LDA #$4A
  1104. STA ARROWHM ;START FIREBALLS AGAIN
  1105. STA RATHM
  1106. LDA #0
  1107. STA RATTIME
  1108. STA ARROWTIM
  1109. OUT19 STA CCLR
  1110. RTS
  1111. ;
  1112. ; MORE SUBROUTINES
  1113. ;
  1114. SETUPCA
  1115. ROL GAMESTAT
  1116. CLC
  1117. ROR GAMESTAT
  1118. LDA #$60
  1119. STA ARROWHM
  1120. STA RATHM
  1121. LDA #$8C
  1122. STA PLAYERX
  1123. LDA #NUP1S-1
  1124. STA NEWCNT
  1125. ;
  1126. ; CLEAR P0 LISR
  1127. ;
  1128. LDX #NUP0S-1
  1129. LDA #DEAD
  1130. KILLLOOP STA P0YS,X
  1131. DEX
  1132. BPL KILLLOOP
  1133. LDA #0
  1134. STA ARROWTIM
  1135. STA RATTIME
  1136. STA PLAYERDX
  1137. STA PLAYERDY
  1138. STA PLAYERY
  1139. STA DRAGSTAT
  1140. RTS
  1141.  
  1142. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1143. ;
  1144. ; MAIN KERNEL
  1145. ;
  1146. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1147. ORG $1500
  1148.  
  1149. LDZERO0 NOP ;MC 49
  1150. NOP ;MC 51
  1151. LDA #0 ;MC 53
  1152. STA T1 ;MC 56
  1153. BEQ SKIP10 ;MC 59
  1154. TOENDK JMP ENDK
  1155. LOOP1 STA P0CLR ;MC 73
  1156. LDA T1 ;MC 76
  1157. ;
  1158. KERNEL STA P0GR ;MC 3
  1159. LDA (P1IND),Y ;MC 8
  1160. STA P1GR ;MC 11
  1161. LDA (P1INDCLR),Y ;MC 16
  1162. STA P1CLR ;MC 19
  1163. ;
  1164. JSR WASTE12
  1165. DEX
  1166. KENTRY TXA ;MC 35
  1167. SEC ;MC 37
  1168. SBC P0Y ;MC 40
  1169. TAY ;MC 42
  1170. AND #$F0 ;MC 44
  1171. BNE LDZERO0 ;MC 46/47
  1172. LDA (P0IND),Y ;MC 51
  1173. STA T1 ;MC 54
  1174. LDA (P0INDCLR),Y ;MC 59
  1175. SKIP10
  1176. DEC COUNT ;MC 64
  1177. LDY COUNT ;MC 67
  1178. BPL LOOP1 ;MC 69/70
  1179. ;
  1180. ; LINE 11 SETUP P1
  1181. ;
  1182. DEC P1POINT ;MC 74
  1183. BMI TOENDK ;END KERNEL
  1184. STA P0CLR ;MC 3
  1185. LDA T1 ;MC 6
  1186. STA P0GR ;MC 9
  1187. ;SETUP P1
  1188. LDY P1POINT ;MC 12
  1189. LDA PPMMCX ;MC 15 P1/P0 CX
  1190. BPL EQUTIME ;MC 17/18
  1191. STY CX ;MC 20 SAVE LINE NUM OF CX
  1192. EQUTIME STY CCLR ;MC 23 CLEAR CX
  1193. LDA P1ID,Y ;MC 27
  1194. STA P1IND ;MC 30
  1195. STA P1INDCLR ;MC 33
  1196. LDA P1HMS,Y ;MC 37
  1197. STA P1HM ;MC 40 SET UP HMOVE
  1198. DEX ;MC 42
  1199. AND #$F ;MC 44 GET DELAY VALUE
  1200. STA T0 ;MC 47
  1201. JMP SKIP05 ;MC 50
  1202. ;
  1203. ;
  1204. ;
  1205. LDZERO2 LDA #0
  1206. TAY
  1207. BEQ SKIP12
  1208. LDZERO4 LDA #0
  1209. BEQ SKIP13
  1210. ;
  1211. ;
  1212. SKIP05 TXA ;MC 52
  1213. SEC ;MC 54
  1214. SBC P0Y ;MC 57
  1215. TAY ;MC 59
  1216. AND #$F0 ;MC 61
  1217. BNE LDZERO2 ;MC 63/64
  1218. LDA (P0IND),Y ;MC 68
  1219. STA P0GR ;MC 71
  1220. SKIP12
  1221. ;
  1222. ; LINE 12 RESET P1 KERNEL
  1223. ;
  1224. STA HSYNC
  1225. LDA (P0INDCLR),Y ;MC 5
  1226. STA P0CLR ;MC 8
  1227. DEX ;MC 10
  1228. SEC ;MC 12 ;PREPARE FOR P0
  1229. TXA ;MC 14
  1230. LDY T0 ;MC 17
  1231. RESETLP DEY ;MC 19
  1232. BPL RESETLP ;MC 21/22
  1233. STA P1RES ;MC 24
  1234. ;
  1235. SBC P0Y ;MC 73
  1236. STA HSYNC ;MC 76
  1237. ;
  1238. ; LINE 13 CHECK FOR P0 RESET
  1239. ;
  1240. TAY ;MC 2
  1241. AND #$F0 ;MC 4
  1242. BNE LDZERO4 ;MC 6/7
  1243. LDA (P0INDCLR),Y ;MC 11
  1244. STA P0CLR ;MC 14
  1245. LDA (P0IND),Y ;MC 19
  1246. STA P0GR ;MC 22
  1247. SKIP13 STA T1 ;MC 25 (15 IF NO P0)
  1248. TXA ;MC 27
  1249. ;
  1250. LDY P0POINT ;MC 42
  1251. DEX ;MC 44
  1252. CMP P0Y ;MC 48
  1253. BCS NORESET ;MC 50/51
  1254. ; IF THIS PATH IS TAKEN, NO P0, SO MAX COUNT IS 39
  1255. CPY #NUP0S ;MC
  1256. BEQ DOPLYR ;MC
  1257. LDA P0YS,Y ;MC 43
  1258. ;
  1259. CMP #DEAD ;MC
  1260. BNE SKIP99 ;MC
  1261. ;PUT PLAYER ON SCREEN
  1262. DOPLYR LDA PLAYERHM ;MC
  1263. STA P0HM ;MC
  1264. AND #$F ;MC
  1265. STA T2 ;MC
  1266. LDA PLAYERY ;MC
  1267. STA P0Y ;MC
  1268. LDA PLAYERID ;MC
  1269. JMP CONT0 ;MC
  1270. SKIP99
  1271. STA P0Y ;MC 56
  1272. LDA P0HMS,Y ;MC
  1273. STA P0HM ;MC 46
  1274. AND #$F ;MC
  1275. STA T2 ;MC 49
  1276. LDA P0ID,Y ;MC 66
  1277. INY ;MC
  1278. CONT0 STA HSYNC ;MC 74
  1279. ;
  1280. ; LINE 14 RESET P0
  1281. ;
  1282. STA P0IND ;MC
  1283. STA P0INDCLR ;MC
  1284. STY P0POINT ;WASTE 3
  1285. LDY T2 ;MC
  1286. NOP ;MC
  1287. DEX ;MC 17
  1288. RP0LP DEY ;MC 19
  1289. BPL RP0LP ;MC 21/22
  1290. STA P0RES ;MC 24/?
  1291. ;
  1292. ; LINE 15 SETUP TO RETURN TO MAIN KERNEL
  1293. ;
  1294. STA HSYNC ;MC
  1295. STA HMOV ;MC 3
  1296. NOP ;MC 5
  1297. NOP ;MC 7
  1298. NOP ;MC 9
  1299. JMP AENTRY ;MC 12
  1300. ;
  1301. TOENDK1 JMP ENDK
  1302. ;
  1303. ; LINE 13 NO P0 RESET, RUN INSTEAD OF P0 RESET
  1304. ;
  1305. NORESET TXA ;MC 53
  1306. SEC ;MC 55
  1307. SBC P0Y ;MC 58
  1308. TAY ;MC 60
  1309. AND #$F0 ;MC 62
  1310. BNE SKIP14 ;MC 64/65
  1311. LDA (P0IND),Y ;MC 69
  1312. STA T1 ;MC 72
  1313. SKIP14
  1314. ;
  1315. ; LINE 14 MAPS TO P0 RESET LINE
  1316. ;
  1317. STA HSYNC ;MC 75 MAX
  1318. LDA T1 ;MC 3
  1319. STA P0GR ;MC 6
  1320. LDA (P0INDCLR),Y ;MC 11
  1321. STA P0CLR ;MC 14
  1322. DEX ;MC 16
  1323. TXA ;MC 18
  1324. SEC ;MC 20
  1325. SBC P0Y ;MC 23
  1326. TAY ;MC 25
  1327. AND #$F0 ;MC 27
  1328. BNE LDZERO3 ;MC 29/30
  1329. LDA (P0IND),Y ;MC 44
  1330. STA T1 ;MC 47
  1331. SKIP15
  1332. LDA (P0INDCLR),Y ;MC 52
  1333. STA HSYNC ;MC 55
  1334. ;
  1335. ; LINE 15 MAPS TO P1 SETUP LINE
  1336. ;
  1337. STA HMOV ;MC 3
  1338. STA P0CLR ;MC 6
  1339. LDA T1 ;MC 9
  1340. STA P0GR ;MC 12
  1341. AENTRY DEX ;MC 14
  1342. NOP ;MC 16
  1343. NOP ;MC 18
  1344. NOP ;MC 20
  1345. NOP ;MC 22
  1346. LDA #10 ;MC 24 SET UP LINE COUNT FOR KERNEL
  1347. STA COUNT ;MC 27
  1348. STA CLRHM ;MC 30
  1349. JMP KENTRY ;MC 33
  1350. ;
  1351. LDZERO3 LDY #0
  1352. BEQ SKIP15
  1353.  
  1354. ENDK
  1355. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1356. ;
  1357. ; DRAGON KERNEL
  1358. ;
  1359. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1360. LDA DRAGSTAT ; TURN ON FLAME?
  1361. ROL
  1362. ROL
  1363. ROL
  1364. ROL
  1365. STA BGR
  1366. ;
  1367. LDX WAVENO
  1368. LDA #$4C ; FLAME COLOR
  1369. STA PFCLR
  1370. ;
  1371. LDY #0
  1372. STY P0GR
  1373.  
  1374. IF PAL
  1375. LDA #$C0
  1376. ELSE
  1377. LDA #$C0
  1378. ENDIF
  1379.  
  1380. STA TIMD8
  1381.  
  1382. ; RESET PLAYERS FOR DRAGON
  1383. INY
  1384. STY P1SIZE
  1385. STY P0SIZE
  1386. LDA DRAGONHM
  1387. STA HSYNC
  1388. STA P1HM
  1389. CLC
  1390. ADC #$10
  1391. STA P0HM
  1392. NOP
  1393. AND #$0F
  1394. TAY
  1395. DRLOOP DEY
  1396. BPL DRLOOP
  1397. STA P1RES ; POSITION PLAYERS
  1398. STA P0RES
  1399. ;LAST LINE BEFORE KERNEL
  1400. STA HSYNC
  1401. STA HMOV
  1402. TAY
  1403. DELLOOP DEY
  1404. BPL DELLOOP
  1405. JMP (DELAY) ;MC 14 JUMP TO PROPER TIME WASTER
  1406.  
  1407. ;
  1408. ; KERNEL ENTRY POINTS
  1409. ; WASTE 5-11 CYCLES (INCLUDING INDIRECT JUMP)
  1410. ;
  1411. W11 DC $A9 ; LDA IMMED (LDA #A9,LDA #A9,LDA $EAA5 = 8)
  1412. W10 DC $A9 ; (LDA #A9, LDA #AD, LDA $EA = 7)
  1413. W9 DC $A9 ; (LDA #A9, LDA $EAA5 = 6)
  1414. W8 DC $A9 ; (LDA #AD, LDA $EA = 5)
  1415. W7 DC $AD ; LDA ABS (LDA $EAA5 = 4)
  1416. W6 DC $A5 ; LDA ZP (LDA $EA = 3)
  1417. W5 DC $EA ; NOP (NOP= 2)
  1418.  
  1419. DKERNEL
  1420. LDA DRAGCLR,X
  1421. AND ATTRACT
  1422. STA P1CLR
  1423. STA P0CLR
  1424. NOP
  1425. LDY #15
  1426. KERLOOP CPY EYETOP
  1427. BCS OFF
  1428. CPY EYEBOT
  1429. ROL
  1430. ROL
  1431. NOP
  1432. SKIP25 STA BGR
  1433. JMP SKIP26
  1434. OFF LDA ATTRACT ;WASTE 3 MC
  1435. LDA #0
  1436. BEQ SKIP25
  1437. SKIP26 LDA DRAGONDX
  1438. STA P1REF
  1439. STA P0REF
  1440. NOP
  1441. NOP
  1442. NOP
  1443. NOP
  1444. ;
  1445. ;
  1446. LDA (DRAGH3),Y ;MC 42
  1447. STA P1GR ;MC 45
  1448. LDA (DRAGH2),Y ;MC 50
  1449. STA P0GR ;MC 53
  1450. LDA (DRAGH1),Y ;MC 58
  1451. TAX ;MC 60
  1452. LDA (DRAGH0),Y ;MC 65
  1453.  
  1454. STX P1GR ;MC 68
  1455. STA P0GR ;MC 71
  1456. ;
  1457. DEY ;MC 73
  1458. BPL KERLOOP ;MC 75/76
  1459. INY
  1460. STY P1GR
  1461. STY P0GR
  1462. ;
  1463. TIMLOOP1 LDA TIMER
  1464. BNE TIMLOOP1
  1465. STA HSYNC
  1466. LDA CAVESHAD ; HOLD COLOR
  1467. STA PFCLR
  1468. LDX #$FF
  1469. STX PF1
  1470. STX PF0
  1471. STX PF2
  1472. LDA #4 ; WHICH SCORE?
  1473. CLC
  1474. ADC PLAYNO
  1475. TAY
  1476. LDA #(SPACE & $FF)
  1477. STA T2 ; STORE SPACE FOR ZERO SUPRESSION
  1478.  
  1479. LDA #(NUMBERS >>8 )
  1480. STA SIXIND0+1
  1481. STA SIXIND0+3
  1482. STA SIXIND0+5
  1483. STA SIXIND0+7
  1484. STA SIXIND0+9
  1485. STA SIXIND0+11
  1486.  
  1487. STA CLRHM
  1488.  
  1489. ;
  1490. ; WRITE SCORE INDIRECTION
  1491. ;
  1492. LDX #11
  1493. SIXILOOP DEX
  1494. LDA SCOREL0,Y
  1495. STY T0 ; HOLD INDEX
  1496. PHA ; SAVE SCORE BYTE
  1497. AND #$F0
  1498. LSR
  1499. ADC #(N0 & $FF)
  1500. CMP #(N0 & $FF)
  1501. BNE SKIP89 ; NON ZERO
  1502. ;
  1503. LDA T2
  1504. BNE SKIP88
  1505. SKIP89 LDY #(N0 & $FF)
  1506. STY T2 ; MAKE T2 "ZERO"
  1507. SKIP88 STA SIXIND0,X
  1508. DEX
  1509. PLA ; GET SCORE BYTE
  1510. DEX
  1511. AND #$F
  1512. ASL
  1513. ASL
  1514. ASL
  1515. ADC #(N0 & $FF) ; CARRY WAS ALWAYS CLEAR
  1516. CMP #(N0 & $FF)
  1517. BNE SKIP86
  1518. ;
  1519. LDA T2
  1520. BNE SKIP85
  1521. SKIP86 BIT FLAGS
  1522. BVS SKIP85
  1523. LDY #(N0 & $FF)
  1524. STY T2
  1525. SKIP85
  1526. STA SIXIND0,X
  1527. DEX
  1528. CPX #4 ; ALWAYS STOP ZPRESS
  1529. BCS SKIP84
  1530. BIT FLAGS ; DONT SSTOP ZPRESS IF VERSION SHOWN
  1531. BVS SKIP84
  1532. LDY #(N0 & $FF)
  1533. STY T2
  1534. SKIP84
  1535. LDY T0
  1536. DEY
  1537. DEY
  1538. BPL SIXILOOP
  1539. ;
  1540. STA HSYNC
  1541. LDY #1
  1542. LDX PLAYNO ; POINT TO PLAYER UP
  1543. LDA SCORECLR,X
  1544. AND ATTRACT
  1545. STA P0CLR
  1546. STA P1CLR
  1547. LDA #0
  1548. STA P1REF
  1549. STA P0REF
  1550. LDA #3 ; DO SCORE RESET
  1551. STA P1SIZE ; TRIPLE COPIES CLOSE
  1552. STA P0SIZE
  1553. LDA #$F0
  1554. STA P1RES
  1555. STA P0RES
  1556. STA P1HM
  1557. STA HSYNC
  1558. STA HMOV
  1559. STY P1VDEL
  1560. STY P0VDEL
  1561. ;
  1562. ; DO SIX CHAR TWICE
  1563. ;
  1564. LDY #$07
  1565. JSR SIXCHAR
  1566. ;
  1567. LDX PLAYNO
  1568. LDY LIVES,X
  1569. LDX #10 ; POINT INTO INDIRECTION
  1570. LDA #(MAN & $FF)
  1571. LIFELOOP DEY
  1572. BPL WSPACE
  1573. LDA #(SPACE & $FF)
  1574. WSPACE STA SIXIND0,X
  1575. NEXT04 DEX
  1576. DEX
  1577. BPL LIFELOOP
  1578. LDY #4
  1579. JSR SIXCHAR
  1580.  
  1581. STY P1VDEL
  1582. STY P0VDEL
  1583.  
  1584.  
  1585. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1586. ;
  1587. ; OVERSCAN
  1588. ;
  1589. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1590. OVSCAN
  1591. IF PAL
  1592. LDA #$37
  1593. ELSE
  1594. LDA #$23
  1595. ENDIF
  1596.  
  1597. STA TIMD64
  1598. LDA #2
  1599. STA VBLNK
  1600. ;
  1601. ; WRITE CASTLE COLR
  1602. ;
  1603. LDY WAVENO
  1604. LDA COLORS,Y
  1605. AND ATTRACT
  1606. STA CAVESHAD
  1607. ;
  1608. ; COUNT DOWN SELECT TIMER
  1609. ;
  1610. LDA SELTIME
  1611. BEQ SKIP44
  1612. DEC SELTIME
  1613. SKIP44
  1614. ;
  1615. ; SKIP CX IF CASTLE SCREEN
  1616. ;
  1617. BIT GAMESTAT
  1618. BMI DRAGCX
  1619. JSR MOVERAT
  1620. JMP NOCX
  1621. ;
  1622. ; P0/P1 CX DETECT
  1623. ;
  1624. DRAGCX LDA FRAME
  1625. LSR
  1626. BCC NOCX
  1627. LDX #$FF
  1628. BIT PPMMCX
  1629. BMI SKIP20
  1630. LDX CX
  1631. BMI NOCX
  1632. SKIP20 INX
  1633. STX CX ; CX POINTS TO HIT P1
  1634. LDA CX
  1635. BNE SKIP21 ; NOT BOTTOM DOOR
  1636. ; COLLISION WITH BOTTOM DOOR
  1637. LDA PLAYERDX ; PLAYER MOVING RIGHT?
  1638. BMI NOCX ; NO
  1639. BEQ NOCX ;NO
  1640. HIDE LDA #0
  1641. STA PLAYERY ; HIDE PLAYER
  1642. STA PLAYERDY
  1643. LDA #$80
  1644. STA PLYRSTAT
  1645. LDA #(DOOR & $FF) ; CLOSE DOOR
  1646. STA P1ID
  1647. BNE NOCX ; LEAVE
  1648. ; TOP DOOR CX
  1649. SKIP21
  1650. LDA P1ID,X
  1651. CMP #(ODOOR & $FF) ; OPEN DOOR?
  1652. BNE SKIP22 ;NO
  1653. LDA #1
  1654. JSR SCORE
  1655. LDX #7 ;START SCORE SOUND
  1656. JSR STARTSND
  1657. ; END WAVE HERE
  1658. LDA GAMNUM
  1659. LSR
  1660. BCC NEWWAVE ; ONE PLAYER VERSION
  1661. ; 2 PLAYER
  1662. LDA PLAYNO
  1663. EOR #1
  1664. TAX
  1665. LDY LIVES,X ;OTHER PLAYER DEAD?
  1666. BMI SKIP36
  1667. TAX ; PLAYER NUM
  1668. STA PLAYNO
  1669. BNE OUT22
  1670. NEWWAVE
  1671. SKIP36 LDY WAVENO
  1672. INY
  1673. CPY #9
  1674. BCS SKIP37
  1675. STY WAVENO
  1676. SKIP37
  1677. OUT22
  1678. JSR SETUPCA
  1679. BEQ NOCX
  1680. SKIP22
  1681. ;
  1682. ; SCORING VALUES
  1683. ;
  1684. LDY #$FF
  1685. LDA P1ID,X
  1686. SCLOOP INY
  1687. CMP BRKS,Y
  1688. BCS SCLOOP
  1689. SCONE LDA #(SPACE & $FF)
  1690. STA P1ID,X
  1691. LDX SCORESND,Y ; START SCORING SOUND
  1692. JSR STARTSND
  1693. LDA SCORES,Y
  1694. ASL
  1695. JSR SCORE
  1696. NOCX
  1697. OUT05 STA CCLR
  1698.  
  1699. ;
  1700. ; TURN OFF FLAMING IF TIMED OUT
  1701. ;
  1702. LDY DRAGTIME
  1703. BEQ STOPFL
  1704. DEC DRAGTIME
  1705. BNE OUT17
  1706. ; TURN OFF FALAMING BIT OF DRAGSTAT
  1707. STOPFL LDA #0
  1708. STA DRAGSTAT
  1709. LDY #6
  1710. STY EYETOP
  1711. DEY
  1712. STY EYEBOT
  1713. OUT17
  1714. ;
  1715. ; DELTA FIREBALLS
  1716. ;
  1717. LDA FPCTL ; DO FIREBALL SPEED WITH WAVENO E DIFF
  1718. ASL ; SHIFT DIFFICULTY TO CARRY
  1719. LDX PLAYNO
  1720. BNE SKIP34
  1721. ASL
  1722. SKIP34
  1723. LDY WAVENO
  1724. LDA #0
  1725. ADC FBSPEEDS,Y
  1726. STA T0
  1727. LDX #NUP0S-1
  1728. DEFBLOOP LDA P0YS,X
  1729. CMP #DEAD
  1730. BEQ NEXT05
  1731. ADC T0 ; FIREBALL SPEED
  1732.  
  1733. IF PAL
  1734. CMP #$95+15
  1735. ELSE
  1736. CMP #$95
  1737. ENDIF
  1738.  
  1739. BCC OKXX
  1740. LDA #DEAD
  1741. OKXX
  1742. SKIP18 STA P0YS,X
  1743. NEXT05 DEX
  1744. BPL DEFBLOOP
  1745. ;
  1746. ; GAME RESET AND GAME SELECT
  1747. ;
  1748. BIT GAMESTAT ; RESET GAME ON TRIGGER IF GAME OVER
  1749. BVS SKIP46
  1750. BIT TRIG0
  1751. BPL NWGAME
  1752. SKIP46
  1753. LDA FPCTL
  1754. LSR
  1755. BCC NWGAME
  1756. LSR
  1757. BCS CONTVB
  1758. ;SELECT SWITCH PRESSED
  1759. LDA SELTIME
  1760. BNE GMCONT
  1761. LDA #$1F
  1762. STA SELTIME
  1763. LDA #0
  1764. STA PLAYNO
  1765. STA GAMESTAT
  1766. LDA #150
  1767. STA PLAYERX
  1768. STA PLAYERY
  1769. LDA #$C0 ; SET D6-D7 OF FLAGS
  1770. STA FLAGS
  1771. INC GAMNUM
  1772. LDA GAMNUM
  1773. AND #7 ; VERSIONS 0-7 ONLY
  1774. STA GAMNUM
  1775. BPL GMCONT
  1776. NWGAME LDA #$81 ; GAME RESET BRINGS YOU HERE
  1777. STA FLAGS ; TURN OFF LOGO (SET D7)
  1778. ;
  1779. ; START NEW GAME
  1780. ;
  1781. LDX #ZEND-ZSTART-1
  1782. LDA #0
  1783. ZEROLOOP STA ZSTART,X
  1784. DEX
  1785. BPL ZEROLOOP
  1786. LDA #6
  1787. STA LIVES
  1788. STA LIVES+1
  1789. JSR SETUPCA ; SET UP CASTLE SCREEN
  1790. LDA #$40 ; YOU HERE
  1791. STA GAMESTAT ; TURN OFF SOFT ATTRACT
  1792. LDA GAMNUM
  1793. AND #$FE
  1794. STA WAVENO ; SKIP WAVES ACCORDING TO GAME NUMBER
  1795. GMCONT
  1796. LDA #$FF ; SELECT SWITCH BRINGS YOU HERE
  1797. STA ATTRACT
  1798.  
  1799. CONTVB ; NO SWITCHES BRINGS YOU HERE
  1800.  
  1801. ;
  1802. ; DRAGON INTELLIGENCE
  1803. ;
  1804. ; WRITE MAX DRAGON SPEED
  1805. LDA WAVENO
  1806. LSR
  1807. TAX
  1808. INX
  1809. INX
  1810. STX T2 ; MAX SPEED
  1811. LDA FRAME
  1812. AND #$3
  1813. BNE OUT12
  1814.  
  1815. LDX PLAYERX
  1816. LDA PLAYERY
  1817. BNE SKIP35
  1818. LDX #80 ; IF PLAYER HIDDEN, USE CENTER
  1819. SKIP35 STX T1
  1820.  
  1821. LDA DRAGONX
  1822. LDX DRAGONDX
  1823. BMI GOLEFT
  1824. ADC #$19
  1825. GOLEFT
  1826. ;
  1827. ; DRAGON IGNORANVE WINDOW
  1828. ;
  1829. LDY WAVENO
  1830. CMP T1
  1831. BCS NORIGHT
  1832. ; DRGON < PLAYERX
  1833. STA T0 ; STORE DRAGON POSITION
  1834. LDA T1
  1835. SEC
  1836. SBC T0 ; GET DIFFERENCE
  1837. CMP MINDMAX,Y ; TABLE OF IGNORANCE WIDTHS
  1838. BCC OUT12 ; IN WINDOW, DO NOTHING
  1839. GORIGHT INX
  1840. BEQ GORIGHT
  1841. BNE WRITEDX
  1842. ; DRAGON > PlAYERX
  1843. NORIGHT SEC
  1844. SBC T1
  1845. CMP MINDMAX,Y
  1846. BCC OUT12
  1847. NOZERO0 DEX
  1848. BEQ NOZERO0
  1849. WRITEDX TXA
  1850. BPL WRMAX ; CHECK ABS VALUE AGAINST DRAGMAX
  1851. EOR #$FF
  1852. ADC #0 ; CARRY ALWAYS SET
  1853. WRMAX CMP T2
  1854. BCS NOWRITE
  1855. STX DRAGONDX
  1856. NOWRITE
  1857. OUT12
  1858. ;
  1859. ; DELTA DRAGON
  1860. ;
  1861. LDA DRAGONDX
  1862. CLC
  1863. ADC DRAGONX
  1864. CMP #129
  1865. BCS WRAP ;IF 0>A>130 THEN IT WRAPPED
  1866. STA DRAGONX
  1867. BCC OUT01
  1868. ;COMPLEMENT DELTA
  1869. WRAP LDX #1
  1870. BIT DRAGONDX
  1871. BMI STOP
  1872. LDX #$FF
  1873. STOP ; TURN ON HOMING ONLY IF D1 SET
  1874. OUT13 STX DRAGONDX
  1875. OUT01
  1876. ;
  1877. ; WRITE LO INDIRECTION FOR DRAGON
  1878. LDA DRAGONAN ;DRAGON ANIMATION COUNTER
  1879. ROR
  1880. ROR
  1881. ROR
  1882. AND #$C0 ;PUT ANIM NUMBER INTO D6-D7
  1883. LDX #$10
  1884. BIT DRAGSTAT
  1885. BVC SKIP31
  1886. LDA #$C0 ;FLAMING GRX
  1887. LDY DRAGONDX
  1888. BVS SKIP92
  1889. SKIP31
  1890. LDY DRAGONDX
  1891. BNE SKIP92
  1892. LDA #$80 ;STILL GRX
  1893. BMI SKIP93
  1894. SKIP92 BPL SKIP93
  1895. CLC
  1896. ADC #$30
  1897. LDX #$F0
  1898. SKIP93 STX T0
  1899. LDX #7 ;POINT TO INDIRECTION
  1900. LDY #(DRAGON0 >> 8)
  1901. INDLOOP STY DRAGH0,X
  1902. DEX
  1903. STA DRAGH0,X
  1904. CLC
  1905. ADC T0
  1906. DEX
  1907. BPL INDLOOP
  1908. ;
  1909. ; ANIMATE DRAGON
  1910. ;
  1911. LDA FRAME
  1912. AND #3
  1913. BNE OUT02
  1914. DEC DRAGONAN
  1915. BPL SKIP91
  1916. LDA #2
  1917. STA DRAGONAN
  1918. SKIP91
  1919. OUT02
  1920. ;
  1921. ; ALTER SIGNED DELTAS ACCORDING TO STICK
  1922. ;
  1923. LDA PLRCTL ;GET STICK
  1924. LDX PLAYNO ;TWO PLAYER?
  1925. BEQ SKIP90
  1926. ASL
  1927. ASL
  1928. ASL
  1929. ASL
  1930. SKIP90
  1931. LDX #0
  1932. LDY #0
  1933. BIT GAMESTAT ;SOFT ATTRACT ON?
  1934. BVC OUT07 ; GO IF SO
  1935. PHA
  1936. LDA SND1
  1937. CMP #EXSND
  1938. PLA
  1939. BCS OUT07
  1940. PHA
  1941. LDA PLAYERID ;EXPLODING MAN
  1942. CMP #(SUPINE & $FF)
  1943. PLA
  1944. BCS OUT07
  1945. ;
  1946. ; SEE IF PLAYER WAITING OUTSIDE
  1947. ; LEFT STICK STARTS GAME
  1948. ;
  1949. BIT GAMESTAT
  1950. BPL OUT08
  1951. BIT PLYRSTAT
  1952. BPL OUT08
  1953. ;
  1954. ; WAITING FOR INPUT
  1955. ;
  1956. AND #$F0 ;GET TOP NIBBLE
  1957. CMP #$B0 ;LEFT STICK?
  1958. BNE OUT07 ;NO STICK
  1959. ;
  1960. ;LEFT STICK
  1961. LDA #(ODOOR & $FF)
  1962. STA P1ID
  1963. LDA #16
  1964. STA PLAYERY
  1965. LDA #$88
  1966. STA PLAYERX
  1967. LDA #0 ;RESET D7 OF PLYRSTAT
  1968. STA PLYRSTAT
  1969. ;
  1970. OUT08
  1971. ASL ;GET RIGHT
  1972. BCS NR
  1973. INX ;MARK RIGHT
  1974. NR ASL
  1975. BCS NL
  1976. DEX ;MARK LEFT
  1977. NL ASL
  1978. BCS ND
  1979. DEY ;MARK DOWN
  1980. ND ASL
  1981. BCS NU
  1982. INY ;MARK UP
  1983. NU
  1984. OUT07
  1985. ;
  1986. ; ALTER DELTAS ACCORDING TO X AND Y
  1987. ;
  1988. BIT GAMESTAT
  1989. BMI SKIP32
  1990. LDA P0IND
  1991. CMP #(MAN4 & $FF) ;KNEELING MAN?
  1992. BEQ OUT20
  1993. LDA PLAYERY
  1994. BNE OUT20 ;DONT CHANGE DELTA IF IN AIR
  1995. SKIP32
  1996. TXA
  1997. PHP
  1998. BEQ SKIP28
  1999. LSR FRAME+1
  2000. SKIP28
  2001. TYA
  2002. PHP
  2003. LDX #1
  2004. BIT GAMESTAT
  2005. BMI SKIP96
  2006. PLP ;DONT DO Y'S IF CASTLE
  2007. DEX
  2008. SKIP96
  2009. ALTLOOP LDA PLAYERDX,X
  2010. PLP ;GET SIGN OF DELTADELTA
  2011. BNE SKIP94 ;GO IF STICK PRESSED
  2012. ;DECAY DELTA
  2013. ORA #0 ;DELTA ZERO ?
  2014. BEQ ABORT0 ;DONT CHANGE IF SO
  2015. BPL NEGDELT ;POS, DECREASE
  2016. BMI POSDELT ;NEG, INCREASE
  2017. SKIP94 PHP
  2018. CPX #0 ;DOING X?
  2019. BNE SKIP77
  2020. STA REFSHAD
  2021. SKIP77 PLP
  2022. BMI NEGDELT
  2023. ; POS DELTA, ADD
  2024. POSDELT CLC
  2025. ADC #$7F/4
  2026. BCS OK00 ;GO TO POSITIVE IS OK
  2027. BVS ABORT0 ;DONT OVERFLOW TO NEGATIVE
  2028. BVC OK00
  2029. ;NEGATIVE DELTA
  2030. NEGDELT SEC
  2031. SBC #$7F/4
  2032. BCC OK00 ;WRAP TO NEGATIVE OK
  2033. BVS ABORT0
  2034. OK00 STA PLAYERDX,X
  2035. ABORT0 DEX
  2036. BPL ALTLOOP
  2037. OUT20
  2038. ;
  2039. ; APPLY DELTAS TO 16 BIT POSITION
  2040. ; X=0 DELTA X, X=1 DELTAY
  2041. ;
  2042. LDX #1
  2043. DELTLOOP LDY #0 ;SPEED FOR CASTLE
  2044. BIT GAMESTAT ;WHICH SCREEEN?
  2045. BPL SKIP33
  2046. INY
  2047. LDA WAVENO
  2048. CMP #4
  2049. BCC SKIP33
  2050. INY
  2051. SKIP33
  2052. LDA PLAYERDX,X ;LOAD DELTA
  2053. ASL
  2054. BCS SUBDELTA
  2055. ;ADD DELTA
  2056. ADDDELT CLC
  2057. PHA
  2058. ADC PLAYERLX,X
  2059. STA PLAYERLX,X
  2060. BCC NOCARRY0
  2061. LDA PLAYERX,X
  2062. ADC #0
  2063. CMP MAXLIMS,X ;CHECK AGAINST MAX VALUE
  2064. BCS NOCARRY0
  2065. STA PLAYERX,X
  2066. NOCARRY0 PLA
  2067. DEY
  2068. BPL ADDDELT
  2069. BMI CONT01
  2070. ;SUBTRACT DELTA
  2071. SUBDELTA ROR ;RESTORE SIGN
  2072. CMP #$80 ;FUCKING SPECIAL CASE
  2073. BNE SKIP97
  2074. LDA #$81
  2075. SKIP97
  2076. EOR #$FF ;COMPLEMENT
  2077. CLC
  2078. ADC #1
  2079. ASL ;*2
  2080. STA T0
  2081. SUBLOOP LDA PLAYERLX,X
  2082. SEC
  2083. SBC T0
  2084. STA PLAYERLX,X
  2085. BCS CARRY0
  2086. LDA PLAYERX,X
  2087. SBC #0
  2088. BCC CARRY0 ;BOTTOM LIMIT
  2089. CMP MINLIMS,X
  2090. BCC CARRY0
  2091. STA PLAYERX,X
  2092. CARRY0
  2093. DEY
  2094. BPL SUBLOOP
  2095.  
  2096. CONT01 DEX
  2097. BPL DELTLOOP
  2098. ;
  2099. ; SET UP PLAYER 0
  2100. ;
  2101. NEWBOARD LDX NEWCNT
  2102. BEQ OUT09
  2103. LDA RAND
  2104. AND #$7
  2105. CLC
  2106. ADC WAVENO
  2107. TAY
  2108. LDA TREATABL,Y
  2109. STA P1ID,X
  2110. ;DRIVE XPOS
  2111. LDA RANDH
  2112. AND #$F
  2113. TAY
  2114. LDA RANDH
  2115. CPY #$A ;RIGHT MAX
  2116. BCC INRANGE
  2117. AND #$F7 ;ZERO D3
  2118. ADC #1
  2119. INRANGE AND #$EF ;DISALLOW ODD HMOVE VALUES
  2120. STA P1HMS,X
  2121. DEC NEWCNT
  2122. ;SET UP LOWER DOOR
  2123. DODOORS LDA #(DOOR & $FF)
  2124. STA P1ID
  2125. LDA #$88
  2126. STA P1HMS
  2127. ;
  2128. OUT09
  2129. ;
  2130. JSR SOUND
  2131. ;
  2132. ; SET UP SEA COLOR
  2133. ;
  2134. LDA FRAME
  2135. AND #$7
  2136. BNE OUT100
  2137. LDA RAND
  2138. AND #$7
  2139.  
  2140. IF PAL
  2141. ORA #$B0
  2142. ELSE
  2143. ORA #$80
  2144. ENDIF
  2145.  
  2146. STA SEA
  2147. OUT100
  2148. ;
  2149. ; ANIMATE FIREBALLS
  2150. ;
  2151. BIT GAMESTAT
  2152. BPL OUT15
  2153. LDA FRAME
  2154. AND #$3 ;FASTEST RATE
  2155. BNE OUT15
  2156. LDX #NUP0S-1
  2157. ALOOP1 LDA P0YS,X
  2158. CMP #DEAD
  2159. BEQ NEXT01
  2160. LDA P0ID,X
  2161. ;MOVING FIREBALL
  2162. EOR #$10
  2163. SKIP00 STA P0ID,X
  2164. NEXT01 DEX
  2165. BPL ALOOP1
  2166. OUT14
  2167. ;
  2168. ; ANIMATE TREASURES
  2169. ;
  2170. LDX #NUP1S-1
  2171. ALOOP0 LDA P1ID,X
  2172. CMP #(TREAS & $FF)
  2173. BCS NEXT02
  2174. ;ANIMATED TREASURES
  2175. ATR LDY #6
  2176. ALOOP2 DEY
  2177. CMP ATABLE,Y
  2178. BNE ALOOP2
  2179. TYA
  2180. EOR #1
  2181. TAY
  2182. LDA ATABLE,Y
  2183. STA P1ID,X
  2184. NEXT02 DEX
  2185. BPL ALOOP0
  2186. OUT15
  2187. ;
  2188. OVOUT BIT TIMOUT ;WAIT FOR OVERSCAN TIMEOUT
  2189. BPL OVOUT
  2190. JMP SCRNTOP ; NEW FRAME !
  2191.  
  2192. ;
  2193. ;
  2194. ; SUBROUTINES
  2195. ;
  2196. ; SETUP DRAGON SCREEN
  2197. ;
  2198. SETUPDR LDA #$C0
  2199. STA GAMESTAT
  2200. LDA #0
  2201. STA BKCLR
  2202. STA PLAYERDY
  2203. STA PLAYERY
  2204. STA DRAGONX
  2205. LDA #1
  2206. STA DRAGONDX
  2207. LDA #$80
  2208. STA PLYRSTAT
  2209. RTS
  2210. ;
  2211. ; START SOUND, HIGHTEST NUBER GET PRIOITIY
  2212. ; X HAS SOUND NUMBER
  2213. ; Z FLAG RESET ON RETURN
  2214. STARTSND
  2215. LDA SNDNOS,X
  2216. CMP SND1
  2217. BCC OUT25
  2218. STA SND1
  2219. LDA SNDTIMS,X
  2220. STA SND1TIME
  2221. OUT25 RTS
  2222. ;
  2223. ; SCORING VALUES
  2224. ;
  2225. SCORES DC $82
  2226. DC $81
  2227. DC $30
  2228. DC $08
  2229.  
  2230. ; TOP OF DRAGONS CAVE GRAPHICS
  2231. CAVE0 DC $00,$60,$FF,$FF
  2232. CAVE1 DC $00,$DB,$FF,$FF
  2233. CAVE2 DC $00,$B6,$FF,$FF
  2234. ;
  2235. ; CASTLE COLORS
  2236. ;
  2237. IF PAL
  2238. COLORS DC $0A,$7A,$2A,$3A,$7A,$BA,$5A,$AA,$8A
  2239. ELSE
  2240. COLORS DC $0A,$BA,$1A,$DA,$BA,$7A,$CA,$6A,$5A
  2241. ENDIF
  2242.  
  2243. ;FIREBALL SPEEDS
  2244. FBSPEEDS DC 2,2,2,2,2,3,3,3,4
  2245.  
  2246.  
  2247. ;SKIP TO PAGE BOUNDRY
  2248. ORG $1B00
  2249.  
  2250. ; DRAGON 3
  2251. DRAGON8
  2252. DC $2E, $6C, $F9, $FF, $BF, $3F, $7F, $FF
  2253. DC $F7, $E0, $E0, $60, $30, $19, $1F, $0E
  2254. DRAGON9
  2255. DC $00, $F0, $FC, $FF, $FF, $FF, $FF, $8F
  2256. DC $07, $03, $81, $4F, $C3, $9E, $02, $3E
  2257. DRAGON10
  2258. DC $70, $61, $F9, $F1, $FF, $FF, $FC, $F8
  2259. DC $F1, $E0, $80, $00, $00, $02, $00, $10
  2260. DRAGON11
  2261. DC $00, $20, $90, $F8, $FF, $EF, $F8, $70
  2262. DC $E0, $00, $00, $00, $40, $00, $00, $00
  2263.  
  2264. ; DRAGON 2
  2265. DRAGON4
  2266. DC $38, $70, $F8, $7F, $3F, $3F, $FF, $FF
  2267. DC $F3, $E0, $60, $30, $11, $1F, $0E, $00
  2268. DRAGON5
  2269. DC $00, $78, $FE, $FF, $FF, $FF, $FF, $CF
  2270. DC $87, $C3, $47, $C1, $8F, $02, $1E, $00
  2271. DRAGON6
  2272. DC $EC, $D9, $F9, $F1, $FF, $FF, $FC, $F8
  2273. DC $F1, $E0, $80, $00, $00, $00, $00, $00
  2274. DRAGON7
  2275. DC $00, $20, $90, $F8, $FF, $EF, $F9, $70
  2276. DC $E0, $00, $04, $08, $10, $40, $00, $00
  2277.  
  2278. ; DRAGON 1
  2279. DRAGON0
  2280. DC $7E, $30, $71, $7B, $7F, $3F, $7F, $FF
  2281. DC $F7, $E0, $E0, $60, $30, $19, $1F, $0E
  2282. DRAGON1
  2283. DC $00, $F0, $FC, $FF, $FF, $FF, $FF, $8F
  2284. DC $07, $03, $87, $41, $CF, $82, $1E, $21
  2285. DRAGON2
  2286. DC $38, $61, $E1, $F1, $FF, $FF, $F8, $F0
  2287. DC $E1, $C0, $80, $00, $00, $00, $00, $00
  2288. DRAGON3
  2289. DC $00, $20, $90, $F8, $FF, $EF, $F9, $70
  2290. DC $E1, $02, $04, $04, $08, $00, $00, $00
  2291. ;FLAMING DRAGON
  2292. DRAGON12
  2293. DC $7E, $30, $71, $7B, $7F, $3F, $7F, $FF
  2294. DC $F7, $E0, $E0, $60, $30, $19, $1F, $0E
  2295. DRAGON13
  2296. DC $00, $F0, $FC, $FF, $FF, $FF, $FF, $8F
  2297. DC $07, $03, $87, $41, $CF, $82, $1E, $21
  2298. DRAGON14
  2299. DC $70, $6E, $F8, $FC, $FF, $FF, $FB, $F1
  2300. DC $EB, $CB, $8F, $06, $03, $03, $07, $0E
  2301. DRAGON15
  2302. DC $00, $00, $00, $00, $00, $80, $C0, $C0
  2303. DC $F0, $E0, $E8, $F0, $E0, $30, $10, $18
  2304.  
  2305.  
  2306.  
  2307. MAN0
  2308. DC $00, $C2, $42, $4E, $58, $50, $70, $30
  2309. DC $30, $70, $78, $3C, $38, $60, $60, $60
  2310. MAN1
  2311. DC $00, $60, $20, $24, $3C, $38, $30, $30
  2312. DC $30, $30, $70, $38, $30, $60, $60, $60
  2313. MAN2
  2314. DC $00, $18, $28, $18, $38, $70, $70, $30
  2315. DC $30, $30, $F4, $B4, $38, $60, $60, $60
  2316. MAN4
  2317. DC $00, $7C, $60, $3C, $0E, $0E, $7E, $04
  2318. DC $0C, $0C, $00, $00, $00, $00, $00, $00
  2319. FB0
  2320. DC $00, $10, $5A, $1A, $48, $42, $1A, $3C
  2321. DC $6E, $FE, $3F, $6E, $3A, $3C, $18, $00
  2322. FB1
  2323. DC $52, $08, $40, $12, $02, $48, $00, $98
  2324. DC $3D, $7A, $5E, $FE, $74, $19, $24, $08
  2325.  
  2326. SUPINE
  2327. DC $00, $00, $00, $00, $C2, $4E, $48, $7C
  2328. DC $3E, $06, $06, $07, $3F, $03, $06, $06
  2329. SUPINE1
  2330. DC $00, $00, $00, $30, $31, $99, $FF, $38
  2331. DC $38, $78, $4C, $4F, $61, $20, $00, $00
  2332. SUPINE2
  2333. DC $00, $00, $20, $3B, $0A, $0A, $0E, $9C
  2334. DC $B8, $F0, $FC, $E4, $C4, $C0, $00, $00
  2335. HFB0
  2336. DC $00, $00, $04, $AA, $1F, $4A, $14, $00
  2337. DC $00, $00, $00, $00, $00, $00, $00
  2338. HFB1
  2339. DC $00
  2340. DC $00, $08, $5E, $07, $2F, $8A, $00, $00
  2341. DC $00, $00, $00, $00, $00, $00
  2342.  
  2343. ;
  2344. ; SIX CHAR ROUTINE
  2345. ;
  2346. SIXCHAR
  2347. SCKRNL STY T1 ;MC 64
  2348. LDA (SIXIND5),Y ;MC 69
  2349. STA P1GR ;MC 72
  2350. STA HSYNC ;MC 75 (76)
  2351. LDA (SIXIND4),Y ;MC 5
  2352. STA P0GR ;MC 8
  2353. LDA (SIXIND3),Y ;MC 13
  2354. STA P1GR ;MC 16
  2355. LDA (SIXIND2),Y ;MC 21
  2356. STA T2 ;MC 24
  2357. LDA (SIXIND1),Y ;MC 29
  2358. TAX ;MC 31
  2359. LDA (SIXIND0),Y ;MC 36
  2360. TAY ;MC 38
  2361. LDA T2 ;MC 41
  2362. STA P0GR ;MC 44
  2363. STX P1GR ;MC 47
  2364. STY P0GR ;MC 50
  2365. STY P1GR ;MC 53
  2366. LDY T1 ;MC 56
  2367. DEY ;MC 58
  2368. BPL SCKRNL ;MC 60/61
  2369. INY ; MAKE Y=0
  2370. STY P1GR
  2371. STY P0GR
  2372. STY P1GR
  2373. STY P0GR
  2374. WASTE12 RTS
  2375. ;
  2376. ;SCORE
  2377. ; A HAS BYTE CARRY CLEAR=ADD TO LO, CARRY SET=ADD TO MID SCORE
  2378. ;
  2379. SCORE SED
  2380. LDX PLAYNO ;PLAYER UP
  2381. BCC SKIP78 ;ADD TO LO BYTE
  2382. INX ;POINT TO MID BYTE
  2383. INX
  2384. SKIP78 CLC
  2385. SCORLOOP ADC SCOREL0,X
  2386. STA SCOREL0,X
  2387. BCC OK01
  2388. INX
  2389. INX
  2390. LDA #1
  2391. CPX #6
  2392. BCC SCORLOOP
  2393. OK01 CLD
  2394. RTS
  2395.  
  2396. ;
  2397. ; TREASURE SCORING DIVISIONS
  2398.  
  2399. BRKS DC (BRK1 & $FF),(BRK2 & $FF),(BRK3 & $FF),$FF
  2400.  
  2401.  
  2402. ;PAD TO NEXT PAGE BOUNDRY
  2403. DC $00, $00, $00
  2404.  
  2405. ATREAS
  2406. DIAMD0
  2407. DC $00, $10, $28, $28, $54, $54, $BA, $54
  2408. DC $28, $10
  2409. DIAMD1
  2410. DC $00, $10, $28, $28, $54, $54
  2411. DC $BA, $54, $28, $10
  2412. CROWN0
  2413. DC $00, $7E, $7E, $5A
  2414. DC $5A, $00, $81, $00, $24, $00
  2415. CROWN1
  2416. DC $00, $7E
  2417. DC $7E, $5A, $5A, $00, $00, $42, $18, $00
  2418. BRK1
  2419. HARPL0
  2420. DC $00, $7E, $95, $95, $95, $95, $56, $56
  2421. DC $42, $81
  2422. HARPL1
  2423. DC $00, $7E, $A9, $A9, $A9, $A9
  2424. DC $6A, $6A, $42, $81
  2425. TREAS
  2426. CHEST
  2427. DC $00, $7E, $7E, $7E
  2428. DC $66, $FF, $54, $28, $00, $00
  2429. BRK2
  2430. HELMET
  2431. DC $00, $42
  2432. DC $66, $66, $42, $E7, $BD, $BD, $99, $42
  2433. CHEST1
  2434. DC $00, $7C, $38, $10, $38, $10, $38, $6C
  2435. DC $AA, $AA
  2436. BRK3
  2437. LAMP
  2438. DC $00, $3C, $18, $FE, $BF, $AD
  2439. DC $E1, $00, $00, $00
  2440. URN
  2441. DC $00, $7C, $38, $10
  2442. DC $38, $10, $38, $7C, $FE, $FE
  2443. JUG
  2444. DC $00, $3C
  2445. DC $7E, $FF, $BF, $DF, $7E, $3C, $3C, $7E
  2446. DOOR
  2447. DC $00, $FF, $FE, $FF, $DF, $FF, $FE, $FF
  2448. DC $FF, $7E
  2449. ODOOR
  2450. DC $00, $8F, $8E, $8F, $8B, $8F
  2451. DC $8E, $8F, $C7, $7E
  2452. SPACE
  2453. SPACE10
  2454. DC $00, $00, $00, $00
  2455. DC $00, $00, $00, $00, $00, $00
  2456. NUMBERS
  2457. N0
  2458. DC $38, $6C
  2459. DC $C6, $86, $86, $C6, $6C, $38
  2460. N1
  2461. DC $08, $1C
  2462. DC $18, $18, $18, $18, $38, $10
  2463. N2
  2464. DC $FC, $FE
  2465. DC $62, $30, $18, $8C, $CC, $78
  2466. N3
  2467. DC $3C, $6E
  2468. DC $66, $C6, $1C, $0E, $66, $3C
  2469. N4
  2470. DC $08, $1C
  2471. DC $0C, $FE, $CC, $6C, $3C, $1C
  2472. N5
  2473. DC $FC, $8E
  2474. DC $0E, $EE, $BC, $80, $FC, $FC
  2475. N6
  2476. DC $7C, $C6
  2477. DC $C6, $FC, $C0, $C0, $FC, $78
  2478. N7
  2479. DC $E0, $E0
  2480. DC $70, $30, $18, $8C, $FE, $7E
  2481. N8
  2482. DC $3C, $66
  2483. DC $CE, $7C, $64, $C6, $7C, $38
  2484. N9
  2485. DC $78, $CC
  2486. DC $0E, $7E, $CE, $CE, $CC, $78
  2487. MAN
  2488. DC $00, $A0
  2489. DC $40, $E0, $40
  2490.  
  2491. DELAYS
  2492. DC W8 & $FF
  2493. DC W8 & $FF
  2494. DC W8 & $FF
  2495. DC W7 & $FF
  2496. DC W7 & $FF
  2497. DC W7 & $FF
  2498. DC W6 & $FF
  2499. DC W6 & $FF
  2500. DC W11 & $FF
  2501. DC W11 & $FF
  2502. DC W10 & $FF
  2503. DC W10 & $FF
  2504. DC W10 & $FF
  2505. DC W9 & $FF
  2506. DC W9 & $FF
  2507. DC W9 & $FF
  2508.  
  2509.  
  2510. ;PAD TO NEXT PAGE BOUNDRY
  2511. DC $00, $00, $00, $00, $00
  2512.  
  2513. ;
  2514. ; COLORS FOR 16 LINE GRAPHICS
  2515. MAN0C
  2516. DC $00, $C8, $C8, $C8, $C8, $C8, $44, $00
  2517. DC $44, $44, $44, $44, $44, $18, $18, $12
  2518. MAN1C
  2519. DC $00, $C8, $C8, $C8, $C8, $C8, $44, $00
  2520. DC $44, $44, $44, $44, $44, $18, $18, $12
  2521. MAN2C
  2522. DC $00, $C8, $C8, $C8, $C8, $C8, $44, $00
  2523. DC $44, $44, $44, $44, $44, $18, $18, $12
  2524. MAN4C
  2525. DC $00, $C8, $C8, $C8, $44, $44, $44, $44
  2526. DC $18, $18, $00, $00
  2527. SCORESND
  2528. DC $05, $06, $07, $08
  2529. FB0C
  2530. DC $00, $44, $44, $F6, $44, $44, $44, $44
  2531. DC $44, $44, $44, $44, $44, $44, $44, $42
  2532. FB1C
  2533. DC $00, $44, $44, $F6, $44, $44, $44, $44
  2534. DC $44, $44, $44, $44, $44, $44, $44, $42
  2535. SUPINEC
  2536. DC $00, $C8, $C8, $C8, $C8, $C8, $C8, $C8
  2537. DC $44, $00, $44, $44, $44, $44, $18, $12
  2538. SUPINE1C
  2539. DC $00, $12, $18, $18, $18, $44, $44, $44
  2540. DC $44, $C8, $C8, $C8, $C8, $18, $18, $12
  2541. SUPINE2C
  2542. DC $00, $C8, $C8, $C8, $C8, $C8, $44, $00
  2543. DC $44, $44, $44, $44, $18, $18, $18, $12
  2544. SHIELD
  2545. DC $00, $38, $44, $6C, $D6, $FE, $C6, $82
  2546. DC $82, $00
  2547.  
  2548. ;
  2549. ; RUNTIME SOUND
  2550. ;
  2551. SOUND
  2552. LDA GAMESTAT
  2553. BEQ TURNOFF ; DISALLOW SOUND DURING ATTRACT
  2554. LDA SND1TIME
  2555. BNE SKIP43
  2556. STA SND1 ; TUN OFF SOUND ID
  2557. BEQ TURNOFF
  2558. SKIP43 DEC SND1TIME
  2559. ; A HAS SOUND COUNTDOWN TIMER
  2560. LDX SND1
  2561. LDY CTLS,X
  2562. STY SNDC1
  2563. LDY FREQS,X
  2564. DEX
  2565. BPL NOT0
  2566. ;FIRE SOUND
  2567. ; TIMER/8 INTO VOLUME
  2568. LSR
  2569. LSR
  2570. LSR
  2571. JMP TURNOFF
  2572. NOT0 DEX
  2573. ;BONUS SOUND
  2574. BMI TURNOFF
  2575. NOT1 DEX
  2576. ;JUMP SOUND
  2577. BMI TURNOFF
  2578. NOT2 DEX
  2579. BPL NOT3
  2580. ;EXPLOSION
  2581. ; RANDOM D4 INTO FREQ, 8 INTO VOL
  2582. LDA RAND
  2583. ORA #$10
  2584. TAY
  2585. LDA #$8
  2586. BNE TURNOFF
  2587. NOT3
  2588. ;DEATH SOUND
  2589. ; 32-TIMER/2 INTO FREQ, TIMER/4 INTO VOL
  2590. LSR
  2591. EOR #$1F
  2592. TAY
  2593. EOR #$1F
  2594. LSR
  2595. STA CAVESHAD
  2596. TURNOFF STY SNDF1
  2597. STA SNDV1
  2598. OUT24
  2599. ;
  2600. ; RUNNING SOUND
  2601. ;
  2602. LDY #0
  2603. LDA PLAYERDX
  2604. ORA PLAYERDY
  2605. BEQ OUT42
  2606. LDA FRAME
  2607. AND #7
  2608. BNE OUT42
  2609. ;HERE IF MOVING & EVERY EIGHTH FRAME
  2610. BIT GAMESTAT
  2611. BVC OUT42 ;SOFT ATTRACT ON
  2612. BMI SKIP42
  2613. LDA PLAYERY
  2614. BNE OUT43
  2615. SKIP42
  2616. ;SET FREQ & VOLUME OF STEP
  2617. LDA #$1C
  2618. STA SNDF0
  2619. LDY #$A
  2620. OUT42 STY SNDV0
  2621. STY SNDC0
  2622. OUT43
  2623. RTS
  2624.  
  2625.  
  2626. ;PAD TO PAGE BOUNDRY
  2627. DC $00, $00, $00
  2628.  
  2629. ;
  2630. ; TREASURE COLORS
  2631. ;
  2632. TREASCLR
  2633.  
  2634. DIAMD0C
  2635. DC $00, $FF, $FF, $FF, $FF, $88, $88, $88
  2636. DC $FF, $FF
  2637. DIAMD1C
  2638. DC $00, $FA, $FA, $FA, $FA, $88
  2639. DC $FF, $88, $FA, $FA
  2640. CROWN0C
  2641. DC $00, $28, $44, $28
  2642. DC $28, $28, $28, $00, $78, $00
  2643. CROWN1C
  2644. DC $00, $28
  2645. DC $44, $28, $28, $28, $28, $00, $78, $00
  2646. HARPL0C
  2647. DC $00, $D8, $88, $88, $88, $88, $88, $88
  2648. DC $88, $FF
  2649. HARPL1C
  2650. DC $00, $D8, $88, $88, $88, $88
  2651. DC $88, $88, $88, $FF
  2652. CHESTC
  2653. DC $00, $14, $14, $14
  2654. DC $14, $12, $FC, $FC, $00, $00
  2655. HELMETC
  2656. DC $00, $88
  2657. DC $88, $88, $18, $18, $18, $18, $18, $18
  2658. CHEST1C
  2659. DC $00, $16, $44, $16, $44, $16, $16, $16
  2660. DC $FF, $FF
  2661. LAMPC
  2662. DC $00, $88, $14, $14, $14, $14
  2663. DC $14, $00, $00, $00
  2664. URNC
  2665. DC $44, $44, $14, $44
  2666. DC $14, $44, $44, $44, $44, $14
  2667. JUGC
  2668. DC $00, $18
  2669. DC $88, $18, $18, $18, $18, $88, $88, $18
  2670. DOORC
  2671. DC $00, $12, $12, $16, $12, $12, $12, $16
  2672. DC $12, $12
  2673. ODOORC
  2674. DC $00, $12, $12, $16, $12, $12
  2675. DC $12, $16, $12, $12
  2676. MAXLIMS
  2677. DC $94, $87
  2678. MINLIMS
  2679. DC $01, $10
  2680. SCORECLR
  2681. DC $00, $44
  2682. LINES
  2683. DC $00, $10, $1F, $2E, $3D, $4C
  2684. DC $5B, $6A, $79, $88
  2685. OFFSETS
  2686. DC $1C, $05, $19, $07
  2687.  
  2688.  
  2689. DRAGCLR
  2690. DC $D6, $18, $86, $64, $46, $18, $F6, $02
  2691. DC $0F
  2692. MINDMAX
  2693. DC $50, $40, $30, $28, $20, $18, $18
  2694. DC $18, $18, $20
  2695. ATABLE
  2696. DC $28, $32, $14, $1E, $00
  2697. DC $0A
  2698. CASTLE0
  2699. DC $70, $70, $F0, $D0, $D0, $D0, $F0
  2700. DC $F0, $50, $00, $00
  2701. CASTLE1
  2702. DC $00, $00, $00, $00
  2703. DC $00, $00, $80, $80, $80, $00, $00
  2704. CTLS
  2705. DC $08
  2706. DC $05, $01, $04, $0C
  2707. FREQS
  2708. DC $1A, $0A, $15, $0A
  2709. DC $10
  2710. ;
  2711. ; SOUND TO USE
  2712. ;
  2713. SNDNOS
  2714. DC FIRES, BONSND, JUMPS, EXSND, DEATHS, BONSND, BONSND, BONSND, BONSND
  2715. ;
  2716. ; DURATION OF SOUNDS
  2717. SNDTIMS
  2718. DC $1F, $1F, $0F, $0F, $3F, $3F, $2F, $1F, $0F
  2719. ; TREASURES TABLE
  2720. ; USED FOR WEIGHTED RAMDOM SELECTION
  2721. TREATABL
  2722. DC URN & $FF
  2723. DC LAMP & $FF
  2724. DC JUG & $FF
  2725. DC CHEST1 & $FF
  2726. DC JUG & $FF
  2727. DC HELMET & $FF
  2728. DC CHEST1 & $FF
  2729. DC URN & $FF
  2730. DC LAMP & $FF
  2731. DC CHEST & $FF
  2732. DC HELMET & $FF
  2733. DC HARPL0 & $FF
  2734. DC LAMP & $FF
  2735. DC DIAMD1 & $FF
  2736. DC CROWN0 & $FF
  2737. DC JUG & $FF
  2738.  
  2739. DC $F7 ; TO MATCH RELEASE EPROM
  2740. VECTORS
  2741. DC.W START
  2742. DC.W START
  2743.  
  2744. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement