UTIL.S 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. * UTIL.S GENERAL UTILITY ROUTINES
  2. * MOVE A CREATURE HORIZONTALLY
  3. * INPUT: A - CURRENT HORIZONTAL POS, Y - DIRECTION CREATURE FACING
  4. * OUTPUT:A - NEW HORIZONTAL POS
  5. HPOSADJ CLC
  6. ADC PHPOSTAB,Y
  7. RTS
  8. * MOVE A CREATURE VERTICALLY
  9. * INPUT: A - CURRENT VERTICAL POS, Y - DIRECTION CREATURE FACING
  10. * X - CURRENT VERTICAL OFFSET
  11. * OUTPUT:A - NEW VERTICAL POS
  12. VPOSADJ CPY #DUP
  13. BEQ VPAUP
  14. CPY #DDOWN
  15. BNE VPAOUT
  16. CLC ;MOVE IT DOWN
  17. ADC DNADJUST,X
  18. RTS
  19. VPAUP SEC ;MOVE IT UP
  20. SBC UPADJUST,X
  21. VPAOUT RTS
  22. * BODY OF MACRO PFILL
  23. PFILLIT LDY #0
  24. PFLOOP STA (TEMP0),Y
  25. DEY
  26. BNE PFLOOP
  27. INC TEMP1
  28. DEX
  29. BNE PFLOOP
  30. RTS
  31. * BODY OF MACRO PLOAD
  32. PLOADIT LDY #0
  33. PLLOOP LDA (TEMP2),Y
  34. STA (TEMP0),Y
  35. DEY
  36. BNE PLLOOP
  37. INC TEMP1
  38. INC TEMP3
  39. DEX
  40. BNE PLLOOP
  41. RTS
  42. * CONVERT HORIZONTAL BIT COUNT TO COLUMN
  43. HTOC SEC
  44. SBC #LEFTSIDE ;SHIFT ORIGIN
  45. LSR A
  46. LSR A ;AND SCALE
  47. RTS
  48. * CONVERT COLUMN TO HORIZONTAL BIT COUNT
  49. CTOH ASL A ;SCALE
  50. ASL A
  51. CLC
  52. ADC #LEFTSIDE ;SHIFT ORIGIN
  53. RTS
  54. * CONVERT VERTICAL BIT TO ZONE AND OFFSET
  55. * OUTPUT: ZONE IN Y, OFFSET IN A
  56. * USES Y!
  57. VTOZO LDY #$00 ;BRUTE FORCE - SLOW
  58. VTZAGAIN CMP #$06 ;SEE IF ANYTHING TO DO
  59. BCS VTZDOIT
  60. RTS
  61. VTZDOIT INY ;INCREMENT ZONE
  62. SEC ;SUBTRACT 6
  63. SBC #$06
  64. JMP VTZAGAIN
  65. * CONVERT ZONE TO VERTICAL BIT
  66. * USES Y!
  67. ZTOV TAY
  68. LDA #$00
  69. ZVLOOP CPY #$00
  70. BEQ ZVOUT
  71. CLC
  72. ADC #$06
  73. DEY
  74. JMP ZVLOOP
  75. ZVOUT RTS
  76. * TABLES FOR EASY MOVEMENT
  77. PHPOSTAB DB $01,$00,$FF,$00
  78. DNADJUST DB $02,$01,$01,$02,$01,$01
  79. UPADJUST DB $01,$01,$02,$01,$01,$02