Guest User

Untitled

a guest
May 24th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  2.  
  3.  
  4. Obj48_Move:             ; XREF: Obj48_Display2
  5.         move.w  d7,-(sp)
  6.         lea ($FFFFFFFF).w,a1
  7.         movea.w $34(a0),a1  ; загрузить главный объект (Эггмобиль)
  8.         tst.b   $36(a1)     ; крутить шар во круг босса?
  9.         bne.s   Obj48_Move_Looping ; крутить, если да
  10.         move.w  #$100,d7    ; загрузить X-горизонтальный радиус
  11.         tst.b   $3D(a0)     ; качать шар влево?
  12.         bne.s   loc_7B9C    ; перейти, если да
  13.         move.w  $3E(a0),d0  ; заргузить относительную градусную меру цепочки
  14.         addq.w  #8,d0       ; прибавить 8 к градусной мере
  15.         move.w  d0,$3E(a0)  ; сохранить текущую относительную градусную меру
  16.         add.w   d0,$26(a0)  ; переместить шар вправо
  17.         cmpi.w  #$200,d0    ; шар дошел до $200 градусов?
  18.         bne.s   loc_7BB6    ; перейти, если нет
  19.         move.b  #1,$3D(a0)  ; указать, что качать шар влево
  20.         bra.s   loc_7BB6    ; качать шар
  21. ; ===========================================================================
  22.  
  23. loc_7B9C:
  24.         move.w  $3E(a0),d0  ; заргузить относительную градусную меру цепочки
  25.         subq.w  #8,d0       ; вычесть 8 к градусной мере
  26.         move.w  d0,$3E(a0)  ; сохранить текущую относительную градусную меру
  27.         add.w   d0,$26(a0)  ; переместить шар влево
  28.         cmpi.w  #-$200,d0   ; шар дошел до -$200 градусов?
  29.         bne.s   loc_7BB6    ; перейти, если нет
  30.         move.b  #0,$3D(a0)  ; указать, что качать шар вправо
  31.         bra.s   loc_7BB6
  32. ; ===========================================================================
  33.  
  34. Obj48_Move_Looping:
  35.         move.b  $36(a1),d0  ; заргузить скорость перемещения
  36.         move.b  $26(a0),d1  ; загрузить градус наклона
  37.         sub.b   d0,d1       ; переместить шар по кругу
  38.         move.b  d1,$26(a0)  ; задать градус наклона
  39.         subi.b  #1,$37(a1)  ; вычесть из X-горизонтального радиуса отдаления от босса
  40.         move.b  $37(a1),d7  ; загрузить X-горизонтальный радиус
  41.         moveq   #0,d1
  42. loc_7BB6:
  43.         move.b  $26(a0),d0  ; загрузить градусную меру
  44. ; End of function Obj48_Move
  45.  
  46.  
  47. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  48.  
  49.  
  50. Obj15_Move2:                ; XREF: Obj15_Move; Obj48_Display
  51.         bsr.w   CalcSine    ; получить синус, косинус в d0 и в d1
  52.         move.w  $38(a0),d2  ; загрузить Y-поз штучки в d2
  53.         move.w  $3A(a0),d3  ; загрузить X-поз штучки в d3
  54.         lea $28(a0),a2  ; загрузить таблицу адресов объектов в a2
  55.         moveq   #0,d6
  56.         move.b  (a2)+,d6    ; загрузить количество объектов
  57.  
  58. loc_7BCE:
  59.         ; получаем адрес объекта в цепочке
  60.         moveq   #0,d4
  61.         move.b  (a2)+,d4    ; загрузить адрес объекта в цепочке
  62.         lsl.w   #6,d4       ; умножить на $40
  63.         addi.l  #$FFD000,d4 ; прибавить $FFD000, чтобы получить полный адрес объекта
  64.         movea.l d4,a1       ; загрузить адрес объекта
  65.         ; перемещаем объект на X градусов вперед\назад
  66.         moveq   #0,d4
  67.         move.b  $3C(a1),d4  ; Y-поз объекта
  68.         move.l  d4,d5       ; переместить Y-поз объекта, очистить от мусора d5
  69.         muls.w  d0,d4       ; умножить синус с Y-поз объекта
  70.         lsr.l   #8,d4       ; поделить на 100
  71.         muls.w  d1,d5       ; умножить косинус с копией Y-поз объекта
  72.         divs.w  d7,d5       ; поделить на X
  73.         ; объект относителен штучке
  74.         add.w   d2,d4       ; относительно штучки
  75.         add.w   d3,d5       ; относительно штучки
  76.         move.w  d4,$C(a1)   ; переместить Y-поз объекта
  77.         move.w  d5,8(a1)    ; переместить X-поз объекта
  78.         dbf d6,loc_7BCE ; перемещать все объекты в цепочке
  79.         move.w  (sp)+,d7
  80.         rts
  81. ; End of function Obj15_Move2
  82.  
  83. ; ===========================================================================
Add Comment
Please, Sign In to add comment