Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; ---------------------------------------------------------------------------
- ; Labyrinth Zone water slide subroutine
- ; ---------------------------------------------------------------------------
- ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
- LZWaterSlides:
- lea (v_player).w,a1
- btst #1,obStatus(a1) ; is Sonic jumping?
- bne.s loc_3F6A ; if not, branch
- move.w obY(a1),d0
- lsr.w #1,d0
- andi.w #$380,d0
- move.b obX(a1),d1
- andi.w #$7F,d1
- add.w d1,d0
- lea (v_lvllayout).w,a2
- move.b (a2,d0.w),d0
- lea Slide_Chunks_End(pc),a2
- moveq #Slide_Chunks_End-Slide_Chunks-1,d1
- loc_3F62:
- cmp.b -(a2),d0
- dbeq d1,loc_3F62
- beq.s LZSlide_Move
- loc_3F6A:
- tst.b (f_jumponly).w
- beq.s locret_3F7A
- move.w #5,$3E(a1)
- clr.b (f_jumponly).w
- locret_3F7A:
- rts
- ; ===========================================================================
- LZSlide_Move:
- cmpi.w #3,d1
- bcc.s loc_3F84
- nop
- loc_3F84:
- bclr #0,obStatus(a1)
- move.b Slide_Speeds(pc,d1.w),d0
- move.b d0,obInertia(a1)
- bpl.s loc_3F9A
- bset #0,obStatus(a1)
- loc_3F9A:
- clr.b obInertia+1(a1)
- move.b #id_WaterSlide,obAnim(a1) ; use Sonic's "sliding" animation
- move.b #1,(f_jumponly).w ; lock controls (except jumping)
- move.b (v_vbla_byte).w,d0
- andi.b #$1F,d0
- bne.s locret_3FBE
- sfx sfx_Waterfall,0,0,0 ; play water sound
- locret_3FBE:
- rts
- ; End of function LZWaterSlides
- ; ===========================================================================
- ; byte_3FC0:
- Slide_Speeds:
- dc.b $A, $F5, $A, $F6, $F5, $F4, $B
- even
- Slide_Chunks:
- dc.b 2, 7, 3, $4C, $4B, 8, 4
- ; byte_3FCF
- Slide_Chunks_End
- even
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement