Advertisement
Guest User

Zniggy

a guest
Jun 5th, 2019
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Zniggy by Anonymous 2019
  2.  
  3. Zniggy_X:
  4. DB      32
  5. Zniggy_Y:
  6. DB      32
  7. Zniggy_YI: ; I stands for Inertia
  8. DB      0
  9. ZniggyTop:
  10. DB      10H,38H,74H,FEH,60H,38H,10H,38H
  11. ZniggyBottom:
  12. DB      7CH,FEH,7CH,38H,10H,10H,10H,1CH
  13.  
  14.  
  15.  
  16. Loop:
  17.  
  18. ; Draw Zniggy
  19. LD      A, (Zniggy_Y)
  20. LD      D, A
  21. LD      A, (Zniggy_X)
  22. LD      E, A
  23. LD      HL, ZniggyTop
  24. CALL    DrawSprite
  25. LD      A, (Zniggy_Y)
  26. ADD     A, 8
  27. LD      D, A
  28. LD      A, (Zniggy_X)
  29. LD      E, A
  30. LD      HL, ZniggyBottom
  31. CALL    DrawSprite
  32.  
  33. HALT
  34.  
  35. ; Clean up after Zniggy
  36. LD      A, (Zniggy_Y)
  37. LD      D, A
  38. LD      A, (Zniggy_X)
  39. LD      E, A
  40. Call    ClearSprite
  41. LD      A, (Zniggy_Y)
  42. ADD     A, 8
  43. LD      D, A
  44. LD      A, (Zniggy_X)
  45. LD      E, A
  46. Call    ClearSprite
  47.  
  48. ; Gravity
  49. LD      A, (Zniggy_YI)
  50. INC     A
  51. LD      (Zniggy_YI), A
  52. LD      B, A
  53. LD      A, (Zniggy_Y)
  54. ADD     A, B
  55. LD      (Zniggy_Y), A
  56. LD      B, 80H
  57. CP      B
  58. JP      M, NotOnGround
  59. LD      A, B
  60. LD      (Zniggy_Y), A
  61. XOR     A
  62. LD      (Zniggy_YI), A
  63.  
  64. KeyJump:
  65. ; Spacebar
  66. LD      A, 7FH
  67. IN      A, (FEH)
  68. AND     01H
  69. JR      NZ, KeyRight
  70. LD      A, -10
  71. LD      (Zniggy_YI), A
  72.  
  73. NotOnGround:
  74.  
  75. KeyRight:
  76. ; P
  77. LD      A, DFH
  78. IN      A, (FEH)
  79. AND     01H
  80. JR      NZ, KeyLeft
  81. LD      A, (Zniggy_X)
  82. INC     A
  83. INC     A
  84. AND     7FH
  85. LD      (Zniggy_X), A
  86.  
  87. KeyLeft:
  88. ; O
  89. LD      A, DFH
  90. IN      A, (FEH)
  91. AND     02H
  92. JR      NZ, Loop
  93. LD      A, (Zniggy_X)
  94. DEC     A
  95. DEC     A
  96. AND     7FH
  97. LD      (Zniggy_X), A
  98.  
  99. JP      Loop ; Beware of using JR here
  100.  
  101.  
  102.  
  103. ClearSprite:
  104. ; D = Y
  105. ; E = X
  106. LD      A, D
  107. AND     F8H
  108. LD      D, A
  109. LD      A, E
  110. AND     F8H
  111. LD      E, A
  112.  
  113. PUSH    DE
  114. CALL    ClearCell
  115.  
  116. POP     DE
  117. LD      A, D
  118. ADD     A, 8
  119. LD      D, A
  120. CALL    ClearCell
  121. RET
  122.  
  123.  
  124.  
  125. ClearCell:
  126. CALL    ConvertCoords
  127. LD      H, D
  128. LD      L, E
  129. INC     L
  130. XOR     A
  131. LD      B, 8
  132. ClearCellLine:
  133. LD      (DE), A
  134. LD      (HL), A
  135. INC     D
  136. INC     H
  137. DJNZ    ClearCellLine
  138. RET
  139.  
  140.  
  141.  
  142. DrawSprite:
  143. ; HL = Sprite
  144. ; D = Y
  145. ; E = X
  146. PUSH    DE
  147.  
  148. CALL    ConvertCoords
  149. LD      A, 8
  150. SUB     B
  151. LD      B, A
  152. CALL    DrawCell
  153.  
  154. POP     DE
  155. XOR     A
  156. OR      D
  157. AND     7
  158. RET     Z
  159.  
  160. LD      A, D
  161. ADD     A, 8
  162. LD      D, A
  163. CALL    ConvertCoords
  164. LD      A, F8H
  165. AND     D
  166. LD      D, A
  167. CALL    DrawCell
  168.  
  169. RET
  170.  
  171.  
  172.  
  173. ConvertCoords:
  174. ; Convert to this bullshit
  175. ; 0 1 0 y8 y7 y3 y2 y1   y6 y5 y4 x8 x7 x6 x5 x4
  176. LD      B, D
  177. LD      C, E
  178. ; convert X
  179. LD      A, C
  180. SRL     A
  181. SRL     A
  182. SRL     A
  183. LD      D, A
  184. LD      A, B
  185. RLA
  186. RLA
  187. LD      E, E0H
  188. AND     E
  189. OR      D
  190. LD      E, A
  191. ; convert Y
  192. LD      A, B
  193. RRA
  194. RRA
  195. RRA
  196. LD      D, 40H
  197. OR      D
  198. LD      D, 58H
  199. AND     D
  200. LD      D, A
  201. LD      A, 7
  202. AND     B
  203. OR      D
  204. LD      D, A
  205. ; B = Y 3 bit offset
  206. LD      A, 7
  207. AND     D
  208. LD      B, A
  209. ; C = X 3 bit offset
  210. LD      A, 7
  211. AND     C
  212. LD      C, A
  213. RET
  214.  
  215.  
  216. DrawCell:
  217. ; HL = Graphics
  218. ; DE = Cell address
  219. ; B = Number of lines to draw
  220. ; C = X 3 bit offset
  221. PUSH    BC
  222. PUSH    DE
  223. LD      D, (HL)
  224. LD      E, 0
  225. LD      B, C
  226. XOR     A
  227. OR      B
  228. JR      Z, NoShiftSprite
  229. ShiftSprite:
  230. SRL     D
  231. RR      E
  232. DJNZ    ShiftSprite
  233. NoShiftSprite:
  234. LD      B, D
  235. LD      C, E
  236. POP     DE
  237. LD      A, B
  238. LD      (DE), A
  239. ; todo check if at the edge of the screen
  240. INC     E
  241. LD      A, C
  242. LD      (DE), A
  243. DEC     E
  244. POP     BC
  245. INC     HL
  246. INC     D
  247. DJNZ    DrawCell
  248. RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement