Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; ---------------------------------------------------------------------------
- ; Subroutine Sonic_HomingAttack
- ; ---------------------------------------------------------------------------
- ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
- Sonic_HomingAttack:
- btst #2,$22(a0) ; Соник совершил прыжок?
- beq.w Sonic_HA_Rts ; перейти, если нет
- tpress B+C,(SonicControl|Held) ; нажата кнопка B/C?
- beq.w Sonic_HA_Rts ; перейти, если нет
- lea ($FFFFD7C0).w,a1 ; начало данных объектов
- Sonic_HA_ChkList:
- lea $40(a1),a1 ; перейти к следующему объекту
- cmpa.l #$FFFFF000,a1 ; мы проверели все объекты?
- bpl.s Sonic_HA_Rts ; перейти, если да
- cmpi.b #$26,$28(a1) ; это монитор?
- beq.w Sonic_HA_ChkDistanse ; если да, проверить растояние между Соником и определённым объектом
- bra.s Sonic_HA_ChkList ; если нет, проверять следующий объект
- ; ===========================================================================
- Sonic_HA_ChkDistanse:
- move.w 8(a1),d0 ; переместить X-координату объекта $200
- move.w $C(a1),d1 ; переместить Y-координату объекта $200
- sub.w 8(a0),d0 ; вычесть X-координату объекта на X-координату Соника $250-$200=$50
- sub.w $C(a0),d1 ; вычесть Y-координату объекта на Y-координату Соника $250-$200=$50
- add.w d0,d1 ; сложить их $50+$50=$100
- bpl.s IsNoNeg ; если число полжительное, перейти
- neg.w d1 ; сделать положительным
- IsNoNeg cmp.w #$100,d1 ; Соник зашёл в границу обьекта?
- bpl.s Sonic_HA_Rts ; перейти, если нет
- jmp * ; сообщить, что Соник перемещается к объекту
- ; ===========================================================================
- Sonic_HA_Rts:
- rts
- ; End of subroutine Sonic_HomingAttack
Add Comment
Please, Sign In to add comment