Advertisement
Guest User

Peter

a guest
Aug 23rd, 2009
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; ---------------------------------------------------------------------------
  2. ; Object 50 - Yadrin enemy (SYZ)
  3. ; ---------------------------------------------------------------------------
  4.  
  5. Obj50:                  ; XREF: Obj_Index
  6.         moveq   #0,d0
  7.         move.$24(a0),d0
  8.         move.w  Obj50_Index(pc,d0.w),d1
  9.         jmp Obj50_Index(pc,d1.w)
  10. ; ===========================================================================
  11. Obj50_Index:    dc.w Obj50_Main-Obj50_Index
  12.         dc.w Obj50_Action-Obj50_Index
  13.         dc.w Obj50_BallMain-Obj50_Index
  14.         dc.w Obj50_BallMove-Obj50_Index
  15. ; ===========================================================================
  16.  
  17. Obj50_Main:             ; XREF: Obj50_Index
  18.         move.l  #Map_obj50,4(a0)
  19.         move.w  #$247B,2(a0)
  20.         move.b  #4,1(a0)
  21.         move.b  #4,$18(a0)
  22.         move.b  #$14,$19(a0)
  23.         move.b  #$11,$16(a0)
  24.         move.b  #8,$17(a0)
  25.         move.b  #$CC,$20(a0)
  26.         bsr.w   ObjectFall
  27.         bsr.w   ObjHitFloor
  28.         tst.w   d1
  29.         bpl.s   locret_F89E
  30.         add.w   d1,$C(a0)   ; match object's position with the floor
  31.         move.w  #0,$12(a0)
  32.         addq.b  #2,$24(a0)
  33.         bchg    #0,$22(a0)
  34.  
  35. locret_F89E:
  36.         rts
  37. ; ===========================================================================
  38.  
  39. Obj50_Action:               ; XREF: Obj50_Index
  40.         moveq   #0,d0
  41.         move.$25(a0),d0
  42.         move.w  Obj50_Index2(pc,d0.w),d1
  43.         jsr Obj50_Index2(pc,d1.w)
  44.         lea (Ani_obj50).l,a1
  45.         bsr.w   AnimateSprite
  46.         bra.w   MarkObjGone
  47. ; ===========================================================================
  48. Obj50_Index2:   dc.w Obj50_Move-Obj50_Index2
  49.         dc.w Obj50_FixToFloor-Obj50_Index2
  50.         dc.w Obj50_WaitFire-Obj50_Index2
  51. ; ===========================================================================
  52.  
  53. Obj50_Move:             ; XREF: Obj50_Index2
  54.         subq.w  #1,$30(a0)  ; subtract 1 from pause time
  55.         bpl.s   locret_F8E2 ; if time remains, branch
  56.         addq.b  #2,$25(a0)
  57.         move.w  #$150,$10(a0)   ; move object
  58.         move.b  #1,$1C(a0)
  59.         bchg    #0,$22(a0)
  60.         bne.s   locret_F8E2
  61.         neg.w   $10(a0)     ; change direction
  62.  
  63. locret_F8E2:
  64.         rts
  65. ; ===========================================================================
  66.  
  67. Obj50_FixToFloor:           ; XREF: Obj50_Index2
  68.         bsr.w   SpeedToPos
  69.         bsr.w   ObjHitFloor
  70.         cmpi.w  #-8,d1
  71.         blt.s   Obj50_Pause
  72.         cmpi.w  #$C,d1
  73.         bge.s   Obj50_Pause
  74.         add.w   d1,$C(a0)   ; match object's position to the floor
  75.         bsr.w   Obj50_ChkWall
  76.         bne.s   Obj50_Pause
  77.         rts
  78. ; ===========================================================================
  79.  
  80. Obj50_Pause:                ; XREF: Obj50_FixToFloor
  81.         subq.b  #2,$25(a0)
  82.         move.w  #30,$30(a0) ; set pause time to 1 second
  83.         bne.s   Obj50_MakeFire
  84.         move.w  #0,$10(a0)
  85.         move.b  #0,$1C(a0)
  86.         rts
  87. ; ===========================================================================
  88.  
  89. Obj50_WaitFire:             ; XREF: Obj50_Index2
  90.         subq.w  #1,$30(a0)  ; subtract 1 from time delay
  91.         tst.b   1(a0)
  92.         bpl.s   Obj50_Move
  93.         bchg    #1,$32(a0)
  94. ; ===========================================================================
  95. Obj50_MakeFire:             ; XREF: Obj50_WaitFire
  96.         move.w  #$3B,$30(a0)
  97.         bsr.w   SingleObjLoad
  98.         bne.s   Obj50_MakeFire2
  99.         move.b  #$1F,0(a1)  ; load left fireball
  100.         move.b  #6,$24(a1)
  101.         move.8(a0),8(a1)
  102.         subi.w  #$10,8(a1)
  103.         move.$C(a0),$C(a1)
  104.         move.w  #-$100,$10(a1)
  105.  
  106. Obj50_MakeFire2:
  107.         bsr.w   SingleObjLoad
  108.         bne.s   locret_9999
  109.         move.b  #$1F,0(a1)  ; load right fireball
  110.         move.b  #6,$24(a1)
  111.         move.8(a0),8(a1)
  112.         addi.w  #$10,8(a1)
  113.         move.$C(a0),$C(a1)
  114.         move.w  #$100,$10(a1)
  115.  
  116. locret_9999:
  117.         rts
  118. ; ===========================================================================
  119.  
  120.  
  121. Ani_obj50:
  122.     include "_anim\obj50.asm"
  123.  
  124. ; ---------------------------------------------------------------------------
  125. ; Sprite mappings - Yadrin enemy (SYZ)
  126. ; ---------------------------------------------------------------------------
  127. Map_obj50:
  128.     include "_maps\obj50.asm"
  129.  
  130. ; ---------------------------------------------------------------------------
  131. ; Sub-object - missile that the Crabmeat throws
  132. ; ---------------------------------------------------------------------------
  133.  
  134. Obj50_BallMain:             ; XREF: Obj50_Index
  135.         addq.b  #2,$24(a0)
  136.         move.l  #Map_obj50,4(a0)
  137.         move.w  #$400,2(a0)
  138.         move.b  #4,1(a0)
  139.         move.b  #3,$18(a0)
  140.         move.b  #$87,$20(a0)
  141.         move.b  #8,$19(a0)
  142.         move.w  #-$400,$12(a0)
  143.         move.b  #7,$1C(a0)
  144.  
  145. Obj50_BallMove:             ; XREF: Obj50_Index
  146.         lea (Ani_obj50).l,a1
  147.         bsr.w   AnimateSprite
  148.         bsr.w   ObjectFall
  149.         bsr.w   DisplaySprite
  150.         move.($FFFFF72E).w,d0
  151.         addi.w  #$E0,d0
  152.         rts
  153. ; ===========================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement