Advertisement
MolSno

super_wiz graphics

Apr 3rd, 2015
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.39 KB | None | 0 0
  1. ;===========================================================================================
  2. ; GRAPHICS CODE
  3. ;----------------------------------------------------
  4. ; $00 = X position.
  5. ; $01 = Y position.
  6. ; $02 = Output of SUB_HORZ_POS
  7. ; $04 = Graphics tile.
  8. ; $07 = Loop counter when X is not available.
  9. ; $08 = Tile counter.
  10. ; $0F = Overlay tile.
  11. ;===========================================================================================
  12. Properties:
  13. db $23,$63
  14. Body_X_Offsets:
  15. db $00,$10,$00,$10
  16. db $10,$00,$10,$00
  17. Body_Y_Offsets:
  18. db $00,$00,$10,$10
  19.  
  20. Attack_GFX:
  21. Float_GFX:
  22. LDA $9D : BNE +
  23. INC !GFXFrame,x
  24. +
  25. Dead_GFX:
  26. JSR GET_DRAW_INFO
  27.  
  28. LDA !XFlip,x : STA $02
  29. ASL : ASL : STA $03
  30.  
  31. LDA #$06 : STA $04
  32. JSR Body_Draw
  33.  
  34. LDY #$02 : LDA $08 : JSL $01B7B3
  35. No_GFX:
  36. RTS
  37.  
  38. Body_Draw:
  39. PHX
  40. LDX #$03
  41. .Loop
  42. LDA $04 : STA $0302,y ; Tile to draw.
  43. PHX : LDX $02 : LDA Properties,x : STA $0303,y : PLX ; YXPPCCCT properties.
  44. PHX : TXA : CLC : ADC $03 : TAX ;\ X position.
  45. LDA $00 : CLC : ADC Body_X_Offsets,x : STA $0300,y : PLX ;/
  46. JSR FrameSine : LSR #5
  47. CLC : ADC $01 : CLC : ADC Body_Y_Offsets,x : STA $0301,y ; Y position.
  48. DEC $04 : DEC $04 ; Tiles to draw: #$06, then #$04, then #$02, then #$00.
  49. INC $08
  50. INY #4
  51. DEX : BPL .Loop
  52. PLX
  53. JSR Feet_Draw
  54. JSR Hand_Draw
  55. JSR Overlay
  56. RTS
  57.  
  58. Feet_Draw:
  59. LDA $00 : STA $0300,y
  60. CLC : ADC #$0D : STA $0304,y
  61. LDA $02 : ASL : STA $03
  62. LDA #$44 : CLC : ADC $03 : STA $0302,y : STA $0306,y ; Draw tile 46 twice.
  63. LDA #$23 : STA $0303,y : STA $0307,y ; Set YXPPCCCT properties for them both. (00100011)
  64.  
  65. ; Move them both vertically on a sine thing.
  66. JSR FrameSine : LSR #4
  67. CLC : ADC $01
  68. CLC : ADC #$22
  69. STA $0301,y : STA $0305,y
  70.  
  71. INC $08 : INC $08
  72. TYA : CLC : ADC #$08 : TAY
  73. RTS
  74.  
  75. Hand_Draw:
  76. JSR FrameSine : LSR #5 : EOR #$FF ;\ Left hand X pos = Body X pos - #$08 - FrameSine
  77. SEC : SBC #$06 : SEC : ADC $00 : STA $0300,y ;/
  78. JSR FrameSine : LSR #5 ;\ Right hand X pos = Body X pos + #$30 + FrameSine
  79. CLC : ADC $00 : CLC : ADC #$18 : STA $0304,y ;/
  80. LDA $02 : ASL #5 : STA $03
  81. LDA #$08 : CLC : ADC $03 : STA $0302,y ; Left hand
  82. LDA #$0A : CLC : ADC $03 : STA $0306,y ; Right hand
  83. LDA #$23 : STA $0303,y : STA $0307,y ; YXPPCCCT.
  84.  
  85. ; Move them both vertically on a sine thing.
  86. JSR FrameSine : LSR #4
  87. CLC : ADC $01
  88. CLC : ADC #$18
  89. STA $0301,y : STA $0305,y
  90.  
  91. INC $08 : INC $08
  92. TYA : CLC : ADC #$08 : TAY
  93. RTS
  94.  
  95. Overlay:
  96. ; Used once all the other graphics are done to (partially) hide the boss.
  97.  
  98. ; Select overlay tile/whether to even draw overlay.
  99. LDA !Visibility,x : BEQ .Ret
  100. ASL : CLC : ADC #$60 : STA $0F
  101. PHX
  102.  
  103. ; Draw overlay.
  104. LDA $08 : STA $09 : INC : ASL #2 : STA $0A
  105. TYA : SEC : SBC $0A : TAX
  106. .Loop
  107. LDA $0300,x : STA $0300,y
  108. LDA $0301,x : STA $0301,y
  109. LDA $0302,x : STA $0302,y
  110. LDA $0303,x : STA $0303,y
  111. LDA $0F : STA $0302,x
  112. LDA $0303,x : AND #$CF : STA $0303,x
  113. INX #4 : INY #4
  114. DEC $09 : BPL .Loop
  115. .End
  116. ASL $08
  117. PLX
  118. .Ret
  119. RTS
  120.  
  121. ;===========================================================================================
  122. ; MISC ROUTINES
  123. ;===========================================================================================
  124. FrameSine:
  125. ; Fetch the sine of the current frame number>>1. Used for floating.
  126. PHX : REP #$30
  127. LDA !GFXFrame,x : AND #$00FF : ASL : TAX : LDA $07F7DB,x
  128. LSR
  129. SEP #$30 : PLX
  130. RTS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement