Advertisement
Romano338

Untitled

Oct 24th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.38 KB | None | 0 0
  1. ;============================================================
  2. ; Winged Thwomp
  3. ;
  4. ; Description: A thwomp with wings. Its behavior is basically
  5. ; like SMM's, but more customizable.
  6. ;
  7. ; Uses extra bits: YES
  8. ; If extra bit 3 is set, the Thwomp will go on flying forever
  9. ; instead of at a specified range.
  10. ;
  11. ; Uses extra bytes: YES
  12. ; Extra Byte 1: if this is set, when the thwomp stomps the
  13. ; ground its wings will fall. (This in turn will spawn the
  14. ; original thwomp sprite)
  15. ; Extra Byte 2: when this is set to anything non-zero, time
  16. ; to freeze the player in place if he's on ground.
  17. ;============================================================
  18.  
  19. !angry_tile = $CA
  20. tilemap:
  21. db $8E,$8E,$AE,$AE,$C8
  22. props:
  23. db $23,$63,$23,$63,$23
  24. wing_tilemap:
  25. db $5D,$C6
  26. wing_props:
  27. db $66,$66,$26,$26
  28.  
  29. thwomp_speed_add:
  30. db $FF,$01
  31. thwomp_target_x_speed:
  32. db $EC,$14
  33. thwomp_target_y_speed:
  34. db $F8,$08
  35.  
  36. thwomp_forever_x_speed:
  37. db $0C,$F4
  38.  
  39. print "INIT ",pc
  40. LDA !D8,x
  41. STA !151C,x
  42. LDA !E4,x
  43. CLC
  44. ADC #$08
  45. STA !E4,x
  46. JSL $01acf9
  47. STA !1570,x
  48. %SubHorzPos()
  49. TYA
  50. STA !157C,x
  51. RTL
  52.  
  53. print "MAIN ",pc
  54. PHB
  55. PHK
  56. PLB
  57. JSR winged_thwomp_main
  58. PLB
  59. RTL
  60.  
  61. winged_thwomp_main:
  62. JSR draw_sprite
  63. LDA !14C8,x
  64. EOR #$08
  65. ORA $9D
  66. BNE .return
  67. %SubOffScreen()
  68. JSL $01a7dc
  69. INC !1570,x
  70. LDA !1570,x
  71. LSR #3
  72. AND #$01
  73. STA !1602,x
  74. LDA !C2,x
  75. ASL
  76. TAX
  77. JSR.w (thwomp_states,x)
  78. JSL $01801a
  79. LDA !C2,x
  80. BNE .return
  81. LDA $14
  82. LSR
  83. BCS .no_y_speed
  84. LDA !1534,x
  85. AND #$01
  86. TAY
  87. LDA !AA,x
  88. CLC
  89. ADC thwomp_speed_add,y
  90. STA !AA,x
  91. CMP thwomp_target_y_speed,y
  92. BNE .no_y_speed
  93. INC !1534,x
  94. .no_y_speed
  95. LDA !7FAB10,x
  96. AND #$04
  97. BEQ .x_speed
  98. LDY !157C,x
  99. LDA thwomp_forever_x_speed,y
  100. STA !B6,x
  101. JSL $018022
  102. .return
  103. RTS
  104. .x_speed
  105. LDA !1540,x
  106. BNE .update_speeds
  107. LDA $14
  108. AND #$03
  109. BNE .update_speeds
  110. LDA !1594,x
  111. AND #$01
  112. TAY
  113. LDA !B6,x
  114. CLC
  115. ADC thwomp_speed_add,y
  116. STA !B6,x
  117. CMP thwomp_target_x_speed,y
  118. BNE .update_speeds
  119. INC !1594,x
  120. LDA #$20
  121. STA !1540,x
  122. .update_speeds
  123. JSL $018022
  124. RTS
  125.  
  126. thwomp_states:
  127. dw waiting
  128. dw falling
  129. dw rising
  130.  
  131. waiting:
  132. LDX $15E9|
  133. LDA !186C,x
  134. ORA !15A0,x
  135. BNE .return
  136. JSL SubHorzPos
  137. TYA
  138. STA !157C,x
  139. STZ !1528,x
  140. LDA $0E
  141. CLC
  142. ADC #$40
  143. CMP #$80
  144. BCS +
  145. LDA #$01
  146. STA !1528,x
  147. + LDA $0E
  148. CLC
  149. ADC #$24
  150. CMP #$50
  151. BCS .return
  152. LDA #$02
  153. STA !1528,x
  154. INC !C2,x
  155. STZ !AA,x
  156. .return
  157. RTS
  158.  
  159. falling:
  160. LDX $15E9|
  161. LDA !AA,x
  162. CMP #$3E
  163. BCS +
  164. ADC #$04
  165. STA !AA,x
  166. + JSL $019138
  167. LDA !1588,x
  168. AND #$04
  169. BEQ .return
  170.  
  171. LDA !1588,x
  172. BMI +
  173. LDA #$00
  174. LDY !15B8,x
  175. BEQ ++
  176. + LDA #$18
  177. ++ STA !AA,x
  178.  
  179. LDA #$18
  180. STA $1887|
  181. LDA !7FAB4C,x
  182. BEQ .no_stun
  183. LDA $77
  184. AND #$04
  185. BEQ +
  186. LDA !7FAB4C,x
  187. STA $18BD|
  188. + LDA #$18
  189. BRA .common
  190. .no_stun
  191. LDA #$09
  192. .common
  193. STA $1DFC|
  194. LDA !7FAB40,x
  195. BEQ .set_c2
  196. LDA #$26
  197. JSR SpawnVanillaSprite
  198. BCS .return
  199. LDA #$02
  200. STA.w !C2,y
  201. STA !1528,y
  202. STA !14C8,x
  203. STA !1FD6,x
  204. LDA #$40
  205. STA !1540,y
  206. LDA #$D0
  207. STA !AA,x
  208. LDA !E4,x
  209. STA.w !E4,y
  210. LDA !D8,x
  211. STA.w !D8,y
  212. LDA !14E0,x
  213. STA !14E0,y
  214. LDA !14D4,x
  215. STA !14D4,y
  216. LDA !151C,x
  217. STA !151C,y
  218. .return
  219. RTS
  220. .set_c2
  221. LDA #$40
  222. STA !1558,x
  223. INC !C2,x
  224. RTS
  225.  
  226. rising:
  227. LDX $15E9|
  228. LDA !1558,x
  229. BNE .return
  230. STZ !1528,x
  231. LDA !D8,x
  232. CMP !151C,x
  233. BNE .not_done_rising
  234. STZ !C2,x
  235. STZ !AA,x
  236. STZ !1534,x
  237. RTS
  238. .not_done_rising
  239. LDA #$F0
  240. STA !AA,x
  241. .return
  242. RTS
  243.  
  244. draw_sprite:
  245. %GetDrawInfo()
  246. ; wings
  247. LDA !1602,x
  248. STA $02
  249. LDX #$01
  250. .wing_loop
  251. PHX
  252. TXA
  253. ASL
  254. CLC
  255. ADC $02
  256. TAX
  257. LDA $00
  258. CLC
  259. ADC wing_x_disp,x
  260. STA $0300|
  261. LDA $01
  262. CLC
  263. ADC wing_y_disp,x
  264. STA $0301|
  265. PHX
  266. LDX $02
  267. LDA wing_tilemap,x
  268. PLX
  269. STA $0302|
  270. LDA wing_props,x
  271. STA $0303|
  272. PHY
  273. TYA
  274. LSR #2
  275. TAY
  276. LDA wing_size,x
  277. STA $0460|
  278. PLY
  279. INY #4
  280. PLX
  281. DEX
  282. BPL .wing_loop
  283. ; thwomp
  284. LDX $15E9|
  285. LDA !1FD6,x
  286. BNE .done
  287. LDA !1528,x
  288. STA $02
  289. LDX #$03
  290. CMP #$00
  291. BEQ .thwomp_loop
  292. INX
  293. .thwomp_loop
  294. LDA $00
  295. CLC
  296. ADC x_disp,x
  297. STA $0300|
  298. LDA $01
  299. CLC
  300. ADC y_disp,x
  301. STA $0301|
  302. LDA props,x
  303. STA $0303|
  304. LDA tilemap,x
  305. CPX #$04
  306. BNE .store_tile
  307. PHX
  308. LDX $02
  309. CPX #$02
  310. BNE +
  311. LDA #!angry_tile
  312. + PLX
  313. .store_tile
  314. STA $0302|
  315. PHY
  316. TYA
  317. LSR #2
  318. TAY
  319. LDA #$02
  320. STA $0460|
  321. PLY
  322. INY #4
  323. DEX
  324. BPL .thwomp_loop
  325. .done
  326. LDA #$06
  327. LDY #$FF
  328. LDX $15E9|
  329. JSL $01b7b3
  330. RTS
  331.  
  332. x_disp:
  333. db $FC,$04,$FC,$04,$00
  334. y_disp:
  335. db $00,$00,$10,$10,$08
  336. wing_x_disp:
  337. db $F8,$F0,$10,$10
  338. wing_y_disp:
  339. db $08,$00,$08,$00
  340. wing_size:
  341. db $00,$02,$00,$02
  342.  
  343. SpawnVanillaSprite:
  344. XBA
  345. LDX.b #!SprSize-1
  346. - LDA !14C8,x
  347. BEQ +
  348. DEX
  349. BPL -
  350. SEC
  351. BRA no_slot
  352.  
  353. + XBA
  354. STA !9E,x
  355. JSL $07F7D2|
  356.  
  357. LDA #$08
  358. STA !14C8,x
  359. CLC
  360. no_slot:
  361. TXY
  362. LDX $15E9|
  363. RTS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement