ulvis.paste.net

Paste Search Dynamic
Recent pastes
wind tunnels
  1. ; ---------------------------------------------------------------------------
  2. ; Labyrinth Zone "wind tunnels" subroutine
  3. ; ---------------------------------------------------------------------------
  4.  
  5. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  6.  
  7.  
  8. LZWindTunnels:                          ; XREF: LZWaterEffects
  9.                 tst.w   ($FFFFFE08).w   ; is debug mode being used?
  10.                 bne.w   LZWind_donothing        ; if yes, branch
  11.                 lea     (LZWind_Data).l,a2      ; get wind data
  12.                 moveq   #0,d0                   ; clear d0
  13.                 move.b  ($FFFFFE11).w,d0        ; get act id
  14.                 lsl.w   #3,d0                   ; mulitply by 8
  15.                 adda.w  d0,a2                   ; add to address
  16.                 moveq   #0,d1                   ; clear d1
  17.                 tst.b   ($FFFFFE11).w           ; check act
  18.                 bne.s   loc_3E56                ; branch if 0
  19.                 moveq   #1,d1                   ; move 1 to d1
  20.                 subq.w  #8,a2                   ; subtra- wait, you fucking wot m8?
  21.  
  22. loc_3E56:
  23.                 lea     ($FFFFD000).w,a1        ; get sonic's SST
  24.  
  25. LZWind_Loop:
  26.                 move.w  8(a1),d0                ; get Sonic'c X
  27.                 cmp.w   (a2),d0                 ; has sonic passed beyond this point?
  28.                 bcs.w   loc_3EF4                ; branch if not
  29.                 cmp.w   4(a2),d0                ; has sonic passed beyond this point?
  30.                 bcc.w   loc_3EF4                ; branch if so
  31.                 move.w  $C(a1),d2               ; basically do the same shit for Y
  32.                 cmp.w   2(a2),d2                ;
  33.                 bcs.s   loc_3EF4                ;
  34.                 cmp.w   6(a2),d2                ;
  35.                 bcc.s   loc_3EF4                ;
  36.                 move.b  ($FFFFFE0F).w,d0        ; move V-Int counter
  37.                 andi.b  #$3F,d0                 ; mask out some bits
  38.                 bne.s   loc_3E90                ; branch if not zero
  39.                 move.w  #$D0,d0                
  40.                 jsr     (PlaySound_Special).l ; play rushing water sound
  41.  
  42. loc_3E90:
  43.                 tst.b   ($FFFFF7C9).w           ; test if flag for moving in tunnel is set
  44.                 bne.w   LZWind_donothing                ; if not, branch
  45.                 cmpi.b  #4,$24(a1)              ; check if Sonic's Hurt
  46.                 bcc.s   loc_3F06                ; if yes, branch
  47.                 move.b  #1,($FFFFF7C7).w        ; Flag to prevent Sonic from using the normal
  48.                                                 ; walking animation in wind tunnels and to make
  49.                                                 ; air bubbles move horizontally in the wind tunnels
  50.                 subi.w  #$80,d0                 ; excuse me what?
  51.                 cmp.w   (a2),d0                 ; uuuuuhhh
  52.                 bcc.s   LZWind_Move             ; branch if lower
  53.                 moveq   #2,d0                   ; clear and move 2 to d0
  54.                 cmpi.b  #1,($FFFFFE11).w        ; is act 2?
  55.                 bne.s   loc_3EBA                ; branch if not
  56.                 neg.w   d0                      ; negate
  57.  
  58. loc_3EBA:
  59.                 add.w   d0,$C(a1)               ; add to Y position.....????
  60.  
  61. LZWind_Move:
  62.                 addq.w  #4,8(a1)        ;
  63.                 move.w  #$400,$10(a1)   ; move Sonic horizontally
  64.                 move.w  #0,$12(a1)      ; clear vertical velocity
  65.                 move.b  #$F,$1C(a1)     ; use floating animation
  66.                 bset    #1,$22(a1)      ; set orientation to left
  67.                 btst    #0,($FFFFF602).w ; is up pressed?
  68.                 beq.s   LZWind_MoveDown ; if not, branch
  69.                 subq.w  #1,$C(a1)       ; move Sonic up
  70.  
  71. LZWind_MoveDown:
  72.                 btst    #1,($FFFFF602).w ; is down being pressed?
  73.                 beq.s   locret_3EF2     ; if not, branch
  74.                 addq.w  #1,$C(a1)       ; move Sonic down
  75.  
  76. locret_3EF2:
  77.                 rts     
  78. ; ===========================================================================
  79.  
  80. loc_3EF4:                               ; XREF: LZWindTunnels
  81.                 addq.w  #8,a2
  82.                 dbf     d1,LZWind_Loop
  83.                 tst.b   ($FFFFF7C7).w
  84.                 beq.s   LZWind_donothing
  85.                 move.b  #0,$1C(a1)
  86.  
  87. loc_3F06:
  88.                 clr.b   ($FFFFF7C7).w
  89.  
  90. LZWind_donothing:
  91.                 rts     
  92. ; End of function LZWindTunnels
  93.  
  94. ; ===========================================================================
  95.  
  96.                 ; x left, Y top, X right, Y bottom
  97.  
  98.                 dc.w $A80, $300, $C10,  $380    ; act 1
  99. LZWind_Data:    dc.w $F80, $100, $1410, $180    ; gets two
  100.                 dc.w $460, $400, $710,  $480    ; act 2
  101.                 dc.w $A20, $600, $1610, $6E0    ; act 3
  102.                 dc.w $C80, $600, $13D0, $680    ; act 4 (SBZ3)
  103.                                         ; XREF: LZWindTunnels
  104.                 even
Parsed in 0.008 seconds