WALLDRAW.S 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. ; WALLDRAW.S
  2. ; THIS FILE CONTAINS THE ROUTINE WHICH PUTS UP THE WALL AT GAME STARTUP.
  3. ;
  4. GLBL AWOLDRAW
  5. GLBL DLIST10,DLIST0
  6. GLBL ULCORNER,URCORNER,LLCORNER,LRCORNER,LWALL,RWALL,WHORIZ
  7. GLBL CORNPALW,WALLPALW,SIDEPALW,XRIGHT,XLEFT,TOPWHGH,BOTWHGH
  8. GLBL BLOCK2
  9. GLBL LISTTABL,LISTTABH
  10. RAMDEF
  11. RSEG CODE3
  12. AWOLDRAW
  13. LDA #L(DLIST10) ; TOP WALL IN DLIST10
  14. STA LISTPTR
  15. LDA #H(DLIST10)
  16. STA LISTPTR+1
  17. LDY #0 ; DISPLAY UPPER RIGHT CORNER
  18. LDA #ULCORNER
  19. STA (LISTPTR),Y
  20. INY
  21. LDA #CORNPALW
  22. STA (LISTPTR),Y
  23. INY
  24. LDA #BLOCK2
  25. STA (LISTPTR),Y
  26. INY
  27. LDA #XLEFT
  28. STA (LISTPTR),Y
  29. INY
  30. LDA #TOPWHGH ; HIGH BYTE FOR TOP WALL
  31. STA TEMP3
  32. JSR DOVERT ; DRAWS THE TOP WALL
  33. ; REGISTER Y IS ALREADY SET TO POINT TO THE 5TH HEADER, WHICH WILL BE URCORNER.
  34. LDA #URCORNER
  35. STA (LISTPTR),Y
  36. INY
  37. LDA #CORNPALW
  38. STA (LISTPTR),Y
  39. INY
  40. LDA #BLOCK2
  41. STA (LISTPTR),Y
  42. INY
  43. LDA #XRIGHT-8
  44. STA (LISTPTR),Y
  45. INY
  46. STY LISTSTRT+10 ; EVERYBODY ELSE STARTS HERE
  47. ; NOW FOR THE SIDE WALLS: FOR EACH DLIST, 9 THROUGH 1, PUT A VERTICAL
  48. ; WALL STAMP ON THE RIGHT AND THE LEFT.
  49. LDX #9
  50. ZWALL01 LDA LISTTABL,X
  51. STA LISTPTR
  52. LDA LISTTABH,X
  53. STA LISTPTR+1 ; SET DLIST POINTER
  54. LDY #0
  55. LDA #LWALL
  56. STA (LISTPTR),Y
  57. INY
  58. LDA #SIDEPALW
  59. STA (LISTPTR),Y
  60. INY
  61. LDA #BLOCK2
  62. STA (LISTPTR),Y
  63. INY
  64. LDA #XLEFT
  65. STA (LISTPTR),Y
  66. INY
  67. ; NOW FOR THE RIGHT SIDE:
  68. LDA #RWALL
  69. STA (LISTPTR),Y
  70. INY
  71. LDA #SIDEPALW
  72. STA (LISTPTR),Y
  73. INY
  74. LDA #BLOCK2
  75. STA (LISTPTR),Y
  76. INY
  77. LDA #XRIGHT-4
  78. STA (LISTPTR),Y
  79. INY
  80. STY LISTSTRT,X
  81. DEX
  82. TXA
  83. BNE ZWALL01
  84. ; NOW, DO THE LAST ZONE, ZONE 0, WITH THE LLCORNER, LRCORNER, AND THE BOTTOM
  85. ; WALL.
  86. LDA #L(DLIST0)
  87. STA LISTPTR
  88. LDA #H(DLIST0)
  89. STA LISTPTR+1
  90. LDY #0
  91. LDA #LLCORNER
  92. STA (LISTPTR),Y
  93. INY
  94. LDA #CORNPALW
  95. STA (LISTPTR),Y
  96. INY
  97. LDA #BLOCK2
  98. STA (LISTPTR),Y
  99. INY
  100. LDA #XLEFT
  101. STA (LISTPTR),Y
  102. INY
  103. LDA #BOTWHGH
  104. STA TEMP3 ; IF BOTTOM WALL, HIGH BYTE IS
  105. ; "BOTWHGH"
  106. JSR DOVERT
  107. ; NOW DO THE LAST CORNER, THE LOWER RIGHT CORNER.
  108. LDA #LRCORNER
  109. STA (LISTPTR),Y
  110. INY
  111. LDA #CORNPALW
  112. STA (LISTPTR),Y
  113. INY
  114. LDA #BLOCK2
  115. STA (LISTPTR),Y
  116. INY
  117. LDA #XRIGHT-8
  118. STA (LISTPTR),Y
  119. INY
  120. STY LISTSTRT
  121. RTS ; END OF WALL DRAWING ROUTINE
  122. ; THIS SUBROUTINE DRAWS THE TOP AND BOTTOM WALLS. IT REQUIRES THAT
  123. ; REGISTER Y POINT TO THE NEXT HEADER, AND THAT LISTPTR BE SET.
  124. DOVERT LDX #2
  125. ZWALL00 LDA #WHORIZ ; LOW BYTE OF STAMP
  126. STA (LISTPTR),Y
  127. INY
  128. LDA #WALLPALW
  129. STA (LISTPTR),Y
  130. INY
  131. LDA TEMP3 ; CONTAINS THE HIGH BYTE VALUE
  132. STA (LISTPTR),Y
  133. INY
  134. ; SKIP HPOS BYTE
  135. INY
  136. DEX
  137. BPL ZWALL00
  138. ; NOW TOUCH UP THOSE HEADERS (HPOS MUST CHANGE; WIDTH OF LAST MUST CHANGE)
  139. STY TEMPY ; SAVE DLIST INDEX
  140. LDA #8 ; HPOS OF FIRST WALL
  141. LDY #7
  142. STA (LISTPTR),Y
  143. LDA #72 ; HPOS-- 8 + 64
  144. LDY #11
  145. STA (LISTPTR),Y
  146. LDA #136 ; HPOS-- 8 + 64 + 64
  147. LDY #15
  148. STA (LISTPTR),Y
  149. LDA #1C ; PALW FOR LAST HEADER (WIDTH = 4)
  150. LDY #13
  151. STA (LISTPTR),Y
  152. LDY TEMPY ; RESTORE DLIST INDEX
  153. RTS
  154. END