CONEHIT.S 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. ; CONEHIT.S
  2. ; THIS ROUTINE TESTS TO SEE IF CHUCK HAS WON DUE TO HITTING THE CONE.
  3. GLBL CONEHIT
  4. GLBL STATDIEH
  5. GLBL XCLOSE,FXPOS,DXHERO,FYPOS,DYHERO,HWIN
  6. GLBL STATWON,BLOCK2,CHSTAMP,CFRAME,MUNCHPW
  7. GLBL CPALW,MUNCHLOW,CSTAMP,MUNCHHI,CACOUNT,CSPEED
  8. GLBL CARRYING,HELDFOOD,CTYPE,PL0CARRY,CDIR
  9. GLBL REJOYING,RETREAT,LEAVING,RUNNING
  10. GLBL CCRUNL
  11. GLBL CARRIED
  12. GLBL COLORS
  13. CONESTRT EQU $00
  14. FOODSTRT EQU $0F
  15. DRIPSTRT EQU $1F
  16. DXCONE EQU $03
  17. DYCONE EQU $07
  18. RAMDEF ; ZERO PAGE
  19. RSEG CODE1
  20. CONEHIT LDA STATUS don't test if he's dead
  21. CMP #STATDIEH
  22. BPL CBYE001
  23. LDA CXPOS ; HERO'S X
  24. CMP #XCLOSE ; IF HE'S NOT EVEN CLOSE, RETURN.
  25. BMI CHCONT00
  26. CBYE001 RTS
  27. CHCONT00 SEC
  28. SBC FXPOS+CONESTRT ; CONE'S X
  29. BCS CHXPOS ; X DIFF POSITIVE
  30. EOR #$FF ; ELSE, TWO'S COMPLEMENT
  31. ; CLC guaranteed clear
  32. ADC #1
  33. CHXPOS CMP #DXHERO+DXCONE
  34. ; BCC YCONETST
  35. BCS CBYE001 a jump
  36. YCONETST LDA CYPOS
  37. SEC
  38. SBC FYPOS+CONESTRT
  39. BCS CHYPOS ; Y DIFF POSITIVE
  40. EOR #$FF ; ELSE, TWO'S COMPLEMENT
  41. ; CLC guaranteed clear
  42. ADC #1
  43. CHYPOS CMP #DYHERO+DYCONE
  44. ; BCC HWIN
  45. BCS CBYE001 a jump
  46. HWIN LDA #STATWON
  47. STA STATUS
  48. LDA #1 ; SLOW DOWN FOR MUNCH
  49. STA MAXCYCLE
  50. ; POSITION HERO FOR MUNCH AND SET APPROPRIATE COUNTERS ETC.
  51. LDA FXPOS
  52. ; CLC clear from above
  53. ADC #9
  54. STA CXPOS
  55. STA CXPOS+1
  56. STA CXPOS+2
  57. LDA FYPOS
  58. SEC
  59. SBC #1
  60. STA CYPOS
  61. CLC
  62. ADC #16
  63. STA CYPOS+2 ; UPPER HALF OF HEAD
  64. SEC
  65. SBC #32
  66. STA CYPOS+1
  67. LDA #BLOCK2 ; THE TONGUE AND TWO HEAD HALVES
  68. STA CHSTAMP
  69. STA CHSTAMP+2
  70. STA CHSTAMP+DRIPSTRT
  71. LDA CCRUNL ; GIVE HIM A BODY, IF HE WAS CARRYING
  72. STA CSTAMP+1
  73. LDX #5
  74. STX CFRAME
  75. LDA MUNCHPW,X
  76. STA CPALW
  77. STA CPALW+2
  78. LDA MUNCHLOW,X
  79. STA CSTAMP
  80. LDA MUNCHHI,X
  81. STA CSTAMP+2
  82. STX CACOUNT X already has 5
  83. STX CSPEED
  84. ; SET UP PLCARRY: IF NO FOOD, SET IT TO ZERO
  85. LDY CURRENT
  86. LDA CSTATE
  87. CMP #CARRYING
  88. ; BEQ CHIT080
  89. BNE CHIT090 a jump
  90. CHIT080 LDX HELDFOOD ; HERO'S FOOD
  91. LDA #$80
  92. ORA CTYPE,X
  93. STA PL0CARRY,Y
  94. LDA #0 ; ERASE THE FOOD
  95. STA CYPOS,X
  96. BEQ CHIT091 a jump
  97. CHIT090 LDA #0
  98. STA PL0CARRY,Y
  99. ; NOW DEAL WITH ALL THE CHEFS SO THAT THEY RUN AWAY FROM THE CONE
  100. ; APPROPRIATELY
  101. CHIT091 LDX #$0C
  102. HWINLOOP LDA CSTATE,X if this chef is leaving due to
  103. CMP #LEAVING being hit, let him keep going
  104. BEQ HWINNXT
  105. LDA FYPOS
  106. CLC
  107. ADC #16
  108. CMP CYPOS,X
  109. BCS HWIN11
  110. HWIN10 LDA #1 ; UPPER RIGHT DIRECTION
  111. BNE HWIN20 A JUMP
  112. HWIN11
  113. ; SEC carry is set from BCS above
  114. SBC #48
  115. CMP CYPOS,X
  116. BCS HWIN12
  117. LDA #2 ; RUN RIGHT
  118. BNE HWIN20
  119. HWIN12 LDA #3 ; LOWER RIGHT
  120. HWIN20 STA CDIR,X
  121. LDA #$1 ; FASTER SPEED
  122. STA CSPEED,X
  123. ; GET RID OF ANY FOOD BEING CARRIED:
  124. LDA CSTATE,X
  125. CMP #CARRYING
  126. BNE HWIN30
  127. LDA HELDFOOD,X
  128. TAY
  129. LDA #0
  130. STA CYPOS,Y
  131. JMP HWIN31 ; OKAY TO MAKE RETREAT
  132. HWIN30 CMP #RUNNING ; MUST BE RUNNING OR CARRYING
  133. BEQ HWIN31
  134. ; OR REJOICING (ONLY HAPPENS IF
  135. ; "MKDIE" WAS CALLED SAME CYCLE)
  136. HWIN301 CMP #REJOYING
  137. BNE HWINNXT
  138. HWIN31 LDA #LEAVING ; CHEF SHOULDN'T CHANGE DIRECTION
  139. STA CSTATE,X
  140. HWINNXT DEX
  141. DEX
  142. DEX
  143. CPX #3 ; FIRST CHEF
  144. BPL HWINLOOP
  145. LDA #$60 ; MAKE THE CHEFS BLUE
  146. STA COLORS+6
  147. ; SET POSITION OF THE TONGUE STAMP (FOR THIS I USE THE CONE DROP STAMP)
  148. LDA CXPOS
  149. STA CXPOS+DRIPSTRT
  150. LDA CYPOS
  151. STA CYPOS+DRIPSTRT
  152. CONEHBYE RTS
  153. END