Advertisement
Guest User

Untitled

a guest
Nov 30th, 2019
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; ---------------------------------------------------------------------------
  2. ; Labyrinth Zone water slide subroutine
  3. ; ---------------------------------------------------------------------------
  4.  
  5. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  6.  
  7.  
  8. LZWaterSlides:
  9.         lea (v_player).w,a1
  10.         btst    #1,obStatus(a1) ; is Sonic jumping?
  11.         bne.s   loc_3F6A    ; if not, branch
  12.         move.w  obY(a1),d0
  13.         lsr.w   #1,d0
  14.         andi.w  #$380,d0
  15.         move.b  obX(a1),d1
  16.         andi.w  #$7F,d1
  17.         add.w   d1,d0
  18.         lea (v_lvllayout).w,a2
  19.         move.b  (a2,d0.w),d0
  20.         lea Slide_Chunks_End(pc),a2
  21.         moveq   #Slide_Chunks_End-Slide_Chunks-1,d1
  22.  
  23. loc_3F62:
  24.         cmp.b   -(a2),d0
  25.         dbeq    d1,loc_3F62
  26.         beq.s   LZSlide_Move
  27.  
  28. loc_3F6A:
  29.         tst.b   (f_jumponly).w
  30.         beq.s   locret_3F7A
  31.         move.w  #5,$3E(a1)
  32.         clr.b   (f_jumponly).w
  33.  
  34. locret_3F7A:
  35.         rts
  36. ; ===========================================================================
  37.  
  38. LZSlide_Move:
  39.         cmpi.w  #3,d1
  40.         bcc.s   loc_3F84
  41.         nop
  42.  
  43. loc_3F84:
  44.         bclr    #0,obStatus(a1)
  45.         move.b  Slide_Speeds(pc,d1.w),d0
  46.         move.b  d0,obInertia(a1)
  47.         bpl.s   loc_3F9A
  48.         bset    #0,obStatus(a1)
  49.  
  50. loc_3F9A:
  51.         clr.b   obInertia+1(a1)
  52.         move.b  #id_WaterSlide,obAnim(a1) ; use Sonic's "sliding" animation
  53.         move.b  #1,(f_jumponly).w ; lock controls (except jumping)
  54.         move.b  (v_vbla_byte).w,d0
  55.         andi.b  #$1F,d0
  56.         bne.s   locret_3FBE
  57.         sfx sfx_Waterfall,0,0,0 ; play water sound
  58.  
  59. locret_3FBE:
  60.         rts
  61. ; End of function LZWaterSlides
  62.  
  63. ; ===========================================================================
  64. ; byte_3FC0:
  65. Slide_Speeds:
  66.         dc.b $A, $F5, $A, $F6, $F5, $F4, $B
  67.         even
  68.  
  69. Slide_Chunks:
  70.         dc.b 2, 7, 3, $4C, $4B, 8, 4
  71. ; byte_3FCF
  72. Slide_Chunks_End
  73.         even
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement