fire.z80 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. FireCycle:
  2. dec a \ jr nz,FireCycle2
  3. ld a,e
  4. ld de,12
  5. ex de,hl
  6. add hl,de
  7. ld bc,2F4h
  8. or a
  9. jr z,BlackFireLoop
  10. FireLoop:
  11. call Random
  12. cpl
  13. and (hl)
  14. ld (de),a
  15. inc de
  16. cpi
  17. jp pe,FireLoop
  18. ret
  19. BlackFireLoop:
  20. call Random
  21. or (hl)
  22. ld (de),a
  23. inc de
  24. cpi
  25. jp pe,BlackFireLoop
  26. ret
  27. FireCycle2:
  28. dec a
  29. ret nz
  30. push de
  31. push hl
  32. call ParseNextFullArg
  33. ;Y,X
  34. ld h,b
  35. ld l,c
  36. add hl,hl
  37. add hl,bc
  38. add hl,hl
  39. add hl,hl
  40. pop bc
  41. add hl,bc
  42. push hl
  43. call ParseNextFullArg
  44. pop hl
  45. add hl,bc
  46. push hl
  47. ;HL is now the start location
  48. ;Width,Height:
  49. call ParseNextFullArg
  50. ld a,c
  51. push af
  52. call ParseNextFullArg
  53. pop af
  54. ld b,a
  55. pop hl
  56. pop de
  57. ;b is width
  58. ;c is height
  59. ;e is the particle type
  60. ld d,c
  61. ld a,12
  62. sub b
  63. ld c,a
  64. ld a,e \ or a
  65. ld a,d
  66. ld de,12
  67. ex de,hl
  68. add hl,de
  69. ;a=height
  70. ;b is width
  71. ;c=12-b
  72. jr z,BlackFireLoop2
  73. FireLoop2:
  74. push af
  75. push bc
  76. call Random
  77. cpl
  78. and (hl)
  79. ld (de),a
  80. inc de
  81. inc hl
  82. djnz FireLoop2+2
  83. add hl,bc
  84. ex de,hl
  85. add hl,bc
  86. ex de,hl
  87. pop bc
  88. pop af
  89. dec a
  90. jr nz,FireLoop2
  91. ret
  92. BlackFireLoop2:
  93. push af
  94. push bc
  95. call Random
  96. or (hl)
  97. ld (de),a
  98. inc de
  99. inc hl
  100. djnz BlackFireLoop2+2
  101. add hl,bc
  102. ex de,hl
  103. add hl,bc
  104. ex de,hl
  105. pop bc
  106. pop af
  107. dec a
  108. jr nz,BlackFireLoop2
  109. ret
  110. Random:
  111. ;preserve HL,DE,BC
  112. push hl
  113. push de
  114. push bc
  115. call prng16
  116. ld a,h
  117. and l
  118. and b
  119. pop bc
  120. pop de
  121. pop hl
  122. ret