Guest User

Untitled

a guest
Dec 25th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; ---------------------------------------------------------------------------
  2. ; Subroutine Sonic_HomingAttack
  3. ; ---------------------------------------------------------------------------
  4.  
  5. ; ||||||||||||||| S U B   R O U T   I N E |||||||||||||||||||||||||||||||||||||||
  6.  
  7. Sonic_HomingAttack:
  8.         btst    #2,$22(a0)      ; Соник совершил прыжок?
  9.         beq.w   Sonic_HA_Rts        ; перейти, если нет
  10.         tpress  B+C,(SonicControl|Held) ; нажата кнопка B/C?
  11.         beq.w   Sonic_HA_Rts        ; перейти, если нет
  12.         lea ($FFFFD7C0).w,a1    ; начало данных объектов
  13.  
  14. Sonic_HA_ChkList:
  15.         lea $40(a1),a1      ; перейти к следующему объекту
  16.         cmpa.l  #$FFFFF000,a1       ; мы проверели все объекты?
  17.         bpl.s   Sonic_HA_Rts        ; перейти, если да
  18.         cmpi.b  #$26,$28(a1)        ; это монитор?
  19.         beq.w   Sonic_HA_ChkDistanse    ; если да, проверить растояние между Соником и определённым объектом
  20.         bra.s   Sonic_HA_ChkList    ; если нет, проверять следующий объект
  21. ; ===========================================================================
  22.  
  23. Sonic_HA_ChkDistanse:
  24.         move.w  8(a1),d0    ; переместить X-координату объекта          $200
  25.         move.w  $C(a1),d1   ; переместить Y-координату объекта          $200
  26.         sub.w   8(a0),d0    ; вычесть X-координату объекта на X-координату Соника $250-$200=$50
  27.         sub.w   $C(a0),d1   ; вычесть Y-координату объекта на Y-координату Соника $250-$200=$50
  28.         add.w   d0,d1       ; сложить их                                            $50+$50=$100
  29.         bpl.s   IsNoNeg     ; если число полжительное, перейти
  30.         neg.w   d1      ; сделать положительным
  31. IsNoNeg     cmp.w   #$100,d1    ; Соник зашёл в границу обьекта?
  32.         bpl.s   Sonic_HA_Rts    ; перейти, если нет
  33.         jmp *       ; сообщить, что Соник перемещается к объекту
  34. ; ===========================================================================
  35.  
  36. Sonic_HA_Rts:
  37.         rts
  38. ; End of subroutine Sonic_HomingAttack
Add Comment
Please, Sign In to add comment