Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; ---------------------------------------------------------------------------
- ; Object 50 - Yadrin enemy (SYZ)
- ; ---------------------------------------------------------------------------
- Obj50: ; XREF: Obj_Index
- moveq #0,d0
- move.b $24(a0),d0
- move.w Obj50_Index(pc,d0.w),d1
- jmp Obj50_Index(pc,d1.w)
- ; ===========================================================================
- Obj50_Index: dc.w Obj50_Main-Obj50_Index
- dc.w Obj50_Action-Obj50_Index
- dc.w Obj50_BallMain-Obj50_Index
- dc.w Obj50_BallMove-Obj50_Index
- ; ===========================================================================
- Obj50_Main: ; XREF: Obj50_Index
- move.l #Map_obj50,4(a0)
- move.w #$247B,2(a0)
- move.b #4,1(a0)
- move.b #4,$18(a0)
- move.b #$14,$19(a0)
- move.b #$11,$16(a0)
- move.b #8,$17(a0)
- move.b #$CC,$20(a0)
- bsr.w ObjectFall
- bsr.w ObjHitFloor
- tst.w d1
- bpl.s locret_F89E
- add.w d1,$C(a0) ; match object's position with the floor
- move.w #0,$12(a0)
- addq.b #2,$24(a0)
- bchg #0,$22(a0)
- locret_F89E:
- rts
- ; ===========================================================================
- Obj50_Action: ; XREF: Obj50_Index
- moveq #0,d0
- move.b $25(a0),d0
- move.w Obj50_Index2(pc,d0.w),d1
- jsr Obj50_Index2(pc,d1.w)
- lea (Ani_obj50).l,a1
- bsr.w AnimateSprite
- bra.w MarkObjGone
- ; ===========================================================================
- Obj50_Index2: dc.w Obj50_Move-Obj50_Index2
- dc.w Obj50_FixToFloor-Obj50_Index2
- dc.w Obj50_WaitFire-Obj50_Index2
- ; ===========================================================================
- Obj50_Move: ; XREF: Obj50_Index2
- subq.w #1,$30(a0) ; subtract 1 from pause time
- bpl.s locret_F8E2 ; if time remains, branch
- addq.b #2,$25(a0)
- move.w #$150,$10(a0) ; move object
- move.b #1,$1C(a0)
- bchg #0,$22(a0)
- bne.s locret_F8E2
- neg.w $10(a0) ; change direction
- locret_F8E2:
- rts
- ; ===========================================================================
- Obj50_FixToFloor: ; XREF: Obj50_Index2
- bsr.w SpeedToPos
- bsr.w ObjHitFloor
- cmpi.w #-8,d1
- blt.s Obj50_Pause
- cmpi.w #$C,d1
- bge.s Obj50_Pause
- add.w d1,$C(a0) ; match object's position to the floor
- bsr.w Obj50_ChkWall
- bne.s Obj50_Pause
- rts
- ; ===========================================================================
- Obj50_Pause: ; XREF: Obj50_FixToFloor
- subq.b #2,$25(a0)
- move.w #30,$30(a0) ; set pause time to 1 second
- bne.s Obj50_MakeFire
- move.w #0,$10(a0)
- move.b #0,$1C(a0)
- rts
- ; ===========================================================================
- Obj50_WaitFire: ; XREF: Obj50_Index2
- subq.w #1,$30(a0) ; subtract 1 from time delay
- tst.b 1(a0)
- bpl.s Obj50_Move
- bchg #1,$32(a0)
- ; ===========================================================================
- Obj50_MakeFire: ; XREF: Obj50_WaitFire
- move.w #$3B,$30(a0)
- bsr.w SingleObjLoad
- bne.s Obj50_MakeFire2
- move.b #$1F,0(a1) ; load left fireball
- move.b #6,$24(a1)
- move.w 8(a0),8(a1)
- subi.w #$10,8(a1)
- move.w $C(a0),$C(a1)
- move.w #-$100,$10(a1)
- Obj50_MakeFire2:
- bsr.w SingleObjLoad
- bne.s locret_9999
- move.b #$1F,0(a1) ; load right fireball
- move.b #6,$24(a1)
- move.w 8(a0),8(a1)
- addi.w #$10,8(a1)
- move.w $C(a0),$C(a1)
- move.w #$100,$10(a1)
- locret_9999:
- rts
- ; ===========================================================================
- Ani_obj50:
- include "_anim\obj50.asm"
- ; ---------------------------------------------------------------------------
- ; Sprite mappings - Yadrin enemy (SYZ)
- ; ---------------------------------------------------------------------------
- Map_obj50:
- include "_maps\obj50.asm"
- ; ---------------------------------------------------------------------------
- ; Sub-object - missile that the Crabmeat throws
- ; ---------------------------------------------------------------------------
- Obj50_BallMain: ; XREF: Obj50_Index
- addq.b #2,$24(a0)
- move.l #Map_obj50,4(a0)
- move.w #$400,2(a0)
- move.b #4,1(a0)
- move.b #3,$18(a0)
- move.b #$87,$20(a0)
- move.b #8,$19(a0)
- move.w #-$400,$12(a0)
- move.b #7,$1C(a0)
- Obj50_BallMove: ; XREF: Obj50_Index
- lea (Ani_obj50).l,a1
- bsr.w AnimateSprite
- bsr.w ObjectFall
- bsr.w DisplaySprite
- move.w ($FFFFF72E).w,d0
- addi.w #$E0,d0
- rts
- ; ===========================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement