Advertisement
TheBlad768

Boss - Cerberus

Jan 11th, 2019
410
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; ---------------------------------------------------------------------------
  2. ; Босс-Cerberus
  3. ; ---------------------------------------------------------------------------
  4.  
  5. ; Hits
  6. BossCerberus_Hits       = 8
  7.  
  8. ; Attributes
  9. _Setup1                 = 2
  10. _Setup2                 = 4
  11. _Setup3                 = 6
  12.  
  13. ; Dynamic object variables
  14. obBCerberus_PSave       = $38   ; .w
  15.  
  16. ; =============== S U B R O U T I N E =======================================
  17.  
  18. Obj_Cerberus:
  19.         move.l  #Obj_Wait,address(a0)
  20.         move.w  #$77,$2E(a0)
  21.         move.l  #Obj_Cerberus_FireWait,$34(a0)
  22.         rts
  23. ; ---------------------------------------------------------------------------
  24.  
  25. Obj_Cerberus_FireWait:
  26.         move.w  #$17,$2E(a0)
  27.         move.l  #Obj_Cerberus_Start,$34(a0)
  28.         lea ChildObjDat_Cerberus_FireShow(pc),a2
  29.         jmp (CreateChild6_Simple).l
  30. ; ---------------------------------------------------------------------------
  31.  
  32. Obj_Cerberus_Start:
  33.         move.l  #Obj_Cerberus_Main,address(a0)
  34.  
  35. Obj_Cerberus_Main:
  36.         moveq   #0,d0
  37.         move.b  routine(a0),d0
  38.         move.w  Cerberus_Index(pc,d0.w),d0
  39.         jsr Cerberus_Index(pc,d0.w)
  40.         bsr.w   BossCerberus_CheckTouch
  41.         bsr.w   BossCerberus_CheckFrame
  42.         bsr.s   BossCerberus_CheckPos
  43.         jmp (Draw_And_Touch_Sprite).l
  44. ; ---------------------------------------------------------------------------
  45.  
  46. Cerberus_Index: offsetTable
  47.         offsetTableEntry.w BossCerberus_Init    ; 0
  48.         offsetTableEntry.w BossCerberus_Setup   ; 2
  49.         offsetTableEntry.w BossCerberus_Setup2  ; 4
  50.         offsetTableEntry.w BossCerberus_Setup3  ; 6
  51. ; ---------------------------------------------------------------------------
  52.  
  53. BossCerberus_Init:
  54.         lea ObjDat3_BossCerberus(pc),a1
  55.         jsr (SetUp_ObjAttributes).l
  56.         st  (Boss_flag).w
  57.         move.b  #46/2,y_radius(a0)
  58.         move.b  #BossCerberus_Hits,collision_property(a0)
  59.         move.l  #BossCerberus_Startup,$34(a0)
  60.         move.l  #AniRaw_CerberusWait,$30(a0)
  61.         rts
  62. ; ---------------------------------------------------------------------------
  63.  
  64. BossCerberus_Setup3:
  65.         bsr.w   Obj_Cerberus_SendPos
  66.  
  67. BossCerberus_Setup:
  68.         jsr (Animate_Raw).l
  69.         jsr (MoveSprite2).l
  70.         jmp (Obj_Wait).l
  71. ; ---------------------------------------------------------------------------
  72.  
  73. BossCerberus_Setup2:
  74.         move.b  (Level_frame_counter+1).w,d0
  75.         andi.w  #$F,d0
  76.         bne.s   +
  77.         lea ChildObjDat_Cerberus_FireFallBall(pc),a2
  78.         jsr (CreateChild1_Normal).l
  79. +       bsr.w   Obj_Cerberus_SendPos
  80.         jsr (Animate_Raw).l
  81.         jsr (MoveSprite).l
  82.         jmp (ObjHitFloor_DoRoutine).l
  83. ; ---------------------------------------------------------------------------
  84. ; Проверка позиции босса
  85. ; ---------------------------------------------------------------------------
  86.  
  87. ; =============== S U B R O U T I N E =======================================
  88.  
  89. BossCerberus_CheckPos:
  90.         move.w  (Camera_min_X_pos).w,d0
  91.         move.w  x_pos(a0),d1
  92.         addi.w  #$10,d0
  93.         cmp.w   d0,d1
  94.         bgt.s   +
  95.         bra.s   ++
  96. +       move.w  (Camera_max_X_pos).w,d0
  97.         addi.w  #$130,d0
  98.         cmp.w   d0,d1
  99.         blt.s       ++
  100. +       move.w  d0,x_pos(a0)
  101.         neg.w   x_vel(a0)
  102.         bchg    #0,render_flags(a0)
  103. +       rts
  104. ; ---------------------------------------------------------------------------
  105. ; Начало и выбор атаки
  106. ; ---------------------------------------------------------------------------
  107.  
  108. ; =============== S U B R O U T I N E =======================================
  109.  
  110. BossCerberus_Startup:
  111.         move.l  BossCerberus_Movement(pc),d0
  112.         bra.s   BossCerberus_SetSubroutine
  113. ; ---------------------------------------------------------------------------
  114.  
  115. BossCerberus_CheckSubroutine:
  116.         jsr (Random_Number).l
  117.         andi.w  #%1100,d0
  118.         move.l  BossCerberus_Movement(pc,d0.w),d0
  119.         cmp.l   obBCerberus_PSave(a0),d0
  120.         beq.s   BossCerberus_Startup_Return
  121.  
  122. BossCerberus_SetSubroutine:
  123.         move.l  d0,$34(a0)
  124.         move.l  d0,obBCerberus_PSave(a0)
  125.  
  126. BossCerberus_Startup_Return:
  127.         rts
  128. ; ---------------------------------------------------------------------------
  129.  
  130. BossCerberus_Movement:
  131.         dc.l BossCerberus_MoveAttack_Start      ; 0
  132.         dc.l BossCerberus_JumpAttack_Start  ; 4
  133.         dc.l BossCerberus_FlightAttack_Start    ; 8
  134.         dc.l BossCerberus_ShotAttack_Start      ; C
  135. ; ---------------------------------------------------------------------------
  136. ; Босс атакует с помощью нападения
  137. ; ---------------------------------------------------------------------------
  138.  
  139. ; =============== S U B R O U T I N E =======================================
  140.  
  141. BossCerberus_MoveAttack_Start:
  142.         jsr (Find_SonicTails).l
  143.         jsr (Change_FlipX).l
  144.         move.w  #-$100,d0
  145.         jsr (Change_VelocityWithFlipX).l
  146.         move.w  #$4F,$2E(a0)
  147.         move.l  #BossCerberus_MoveAttack_Stop,$34(a0)
  148.         lea AniRaw_CerberusWalk(pc),a1
  149.         jmp (Set_Raw_Animation).l
  150. ; ---------------------------------------------------------------------------
  151.  
  152. BossCerberus_MoveAttack_Stop:
  153.         clr.w   x_vel(a0)
  154.         move.l  #BossCerberus_CheckSubroutine,$34(a0)
  155.         lea AniRaw_CerberusWait(pc),a1
  156.         jmp (Set_Raw_Animation).l
  157. ; ---------------------------------------------------------------------------
  158. ; Босс атакует с помощью прыжка
  159. ; ---------------------------------------------------------------------------
  160.  
  161. ; =============== S U B R O U T I N E =======================================
  162.  
  163. BossCerberus_JumpAttack_Start:
  164.         clearRAM Pos_objtable_Start, Pos_objtable_End
  165.         move.b  #_Setup2,routine(a0)
  166.         jsr (Find_SonicTails).l
  167.         jsr (Change_FlipX).l
  168.         move.w  #-$300,d0
  169.         jsr (Change_VelocityWithFlipX).l
  170.         move.w  #-$780,y_vel(a0)
  171.         move.l  #BossCerberus_JumpAttack_Stop,$34(a0)
  172.         lea AniRaw_CerberusJump(pc),a1
  173.         jsr (Set_Raw_Animation).l
  174.         lea ChildObjDat_Cerberus_FireShow(pc),a2
  175.         jsr (CreateChild6_Simple).l
  176.         lea ChildObjDat_Cerberus_Trail(pc),a2
  177.         jmp (CreateChild6_Simple).l
  178. ; ---------------------------------------------------------------------------
  179.  
  180. BossCerberus_JumpAttack_Stop:
  181.         clr.l   x_vel(a0)
  182.         move.b  #_Setup3,routine(a0)
  183.         move.w  #$17,$2E(a0)
  184.         move.l  #BossCerberus_JumpAttack_Return,$34(a0)
  185.         lea ChildObjDat_Cerberus_FireShow(pc),a2
  186.         jmp (CreateChild6_Simple).l
  187. ; ---------------------------------------------------------------------------
  188.  
  189. BossCerberus_JumpAttack_Return:
  190.         move.b  #_Setup1,routine(a0)
  191.         move.l  #BossCerberus_CheckSubroutine,$34(a0)
  192.         lea AniRaw_CerberusWait(pc),a1
  193.         jmp (Set_Raw_Animation).l
  194. ; ---------------------------------------------------------------------------
  195. ; Босс атакует с помощью перелета
  196. ; ---------------------------------------------------------------------------
  197.  
  198. ; =============== S U B R O U T I N E =======================================
  199.  
  200. BossCerberus_FlightAttack_Start:
  201.         clearRAM Pos_objtable_Start, Pos_objtable_End
  202.         move.b  #_Setup3,routine(a0)
  203.         jsr (Find_SonicTails).l
  204.         jsr (Change_FlipX).l
  205.         move.w  #-$400,d0
  206.         jsr (Change_VelocityWithFlipX).l
  207.         move.w  #-$480,y_vel(a0)
  208.         move.w  #9,$2E(a0)
  209.         move.l  #BossCerberus_FlightAttack_MoveStop,$34(a0)
  210.         lea AniRaw_CerberusJump(pc),a1
  211.         jsr (Set_Raw_Animation).l
  212.         lea ChildObjDat_Cerberus_FireShow(pc),a2
  213.         jsr (CreateChild6_Simple).l
  214.         lea ChildObjDat_Cerberus_Trail(pc),a2
  215.         jmp (CreateChild6_Simple).l
  216. ; ---------------------------------------------------------------------------
  217.  
  218. BossCerberus_FlightAttack_MoveStop:
  219.         clr.w   y_vel(a0)
  220.         move.w  #$27,$2E(a0)
  221.         move.l  #BossCerberus_FlightAttack_Fall,$34(a0)
  222.  
  223. BossCerberus_FlightAttack_Return:
  224.         rts
  225. ; ---------------------------------------------------------------------------
  226.  
  227. BossCerberus_FlightAttack_Fall:
  228.         move.b  #_Setup2,routine(a0)
  229.         move.l  #BossCerberus_JumpAttack_Stop,$34(a0)
  230.         rts
  231. ; ---------------------------------------------------------------------------
  232. ; Босс атакует с помощью выстрела огненного шара
  233. ; ---------------------------------------------------------------------------
  234.  
  235. ; =============== S U B R O U T I N E =======================================
  236.  
  237. BossCerberus_ShotAttack_Start:
  238.         jsr (Find_SonicTails).l
  239.         jsr (Change_FlipX).l
  240.         move.w  #$100,d0
  241.         jsr (Change_VelocityWithFlipX).l
  242.         move.w  #$2F,$2E(a0)
  243.         move.l  #BossCerberus_ShotAttack_MoveStop,$34(a0)
  244.         lea AniRaw_CerberusWalk(pc),a1
  245.         jmp (Set_Raw_Animation).l
  246. ; ---------------------------------------------------------------------------
  247.  
  248. BossCerberus_ShotAttack_MoveStop:
  249.         clr.w   x_vel(a0)
  250.         move.w  #$17,$2E(a0)
  251.         move.l  #BossCerberus_CheckSubroutine,$34(a0)
  252.         lea AniRaw_CerberusWait(pc),a1
  253.         jsr (Set_Raw_Animation).l
  254.         sfx sfx_FireShot,0,0,0
  255.         lea ChildObjDat_Cerberus_FireBall(pc),a2
  256.         jmp (CreateChild6_Simple).l
  257. ; ---------------------------------------------------------------------------
  258. ; Проверка кадра для выбора коллизии
  259. ; ---------------------------------------------------------------------------
  260.  
  261. ; =============== S U B R O U T I N E =======================================
  262.  
  263. BossCerberus_CheckFrame:
  264.         btst    #6,status(a0)
  265.         bne.s   +
  266.         moveq   #0,d0
  267.         move.b  mapping_frame(a0),d0
  268.         move.b  CheckFrame_Index(pc,d0.w),collision_flags(a0)
  269. +       rts
  270. ; ---------------------------------------------------------------------------
  271.  
  272. CheckFrame_Index:
  273.         dc.b $39
  274.         dc.b $39
  275.         dc.b $39|$80
  276.         dc.b $39|$80
  277. ; ---------------------------------------------------------------------------
  278. ; Проверка урона
  279. ; ---------------------------------------------------------------------------
  280.  
  281. ; =============== S U B R O U T I N E =======================================
  282.  
  283. BossCerberus_CheckTouch:
  284.         tst.b   collision_flags(a0)
  285.         bne.s   BossCerberus_CheckTouch_Return
  286.         tst.b   collision_property(a0)
  287.         beq.s   BossCerberus_CheckTouch_WaitExplosive
  288.         tst.b   $1C(a0)
  289.         bne.s   +
  290.         move.b  #$40,$1C(a0)
  291.         sfx sfx_HurtFire,0,0,0
  292.         bset    #6,status(a0)
  293. +       moveq   #0,d0
  294.         btst    #0,$1C(a0)
  295.         bne.s   +
  296.         addi.w  #8*2,d0
  297. +       bsr.w   BossCerberus_PalFlash
  298.         subq.b  #1,$1C(a0)
  299.         bne.s   BossCerberus_CheckTouch_Return
  300.         bclr    #6,status(a0)
  301.         move.b  collision_restore_flags(a0),collision_flags(a0)
  302.  
  303. BossCerberus_CheckTouch_Return:
  304.         rts
  305. ; ---------------------------------------------------------------------------
  306.  
  307. BossCerberus_CheckTouch_WaitExplosive:
  308.         move.l  #BossCerberus_CheckTouch_WaitPlayerExplosive,address(a0)
  309.         bset    #6,status(a0)
  310.         bset    #7,status(a0)
  311.         clr.l   x_vel(a0)
  312.         jmp (BossDefeated_StopTimer).l
  313. ; ---------------------------------------------------------------------------
  314.  
  315. BossCerberus_CheckTouch_WaitPlayerExplosive:
  316.         bsr.w   BossCerberus_CreateFire
  317.         move.b  (Level_frame_counter+1).w,d0
  318.         andi.w  #7,d0
  319.         bne.s   +
  320.         sfx sfx_BreakBridge,0,0,0
  321. +       moveq   #0,d0
  322.         btst    #0,(Level_frame_counter+1).w
  323.         bne.s   +
  324.         addi.w  #8*2,d0
  325. +       bsr.w   BossCerberus_PalFlash
  326.         jsr (Draw_Sprite).l
  327.         subq.w  #1,$2E(a0)
  328.         bne.s   BossCerberus_CheckTouch_Return
  329.         addq.b  #2,(Dynamic_resize_routine).w
  330.         move.l  #Go_Delete_Sprite,address(a0)
  331.         lea (Pal_BossCerberus).l,a1
  332.         jmp (PalLoad_Line1).l
  333.  
  334. ; =============== S U B R O U T I N E =======================================
  335.  
  336. BossCerberus_CreateFire:
  337.         btst    #1,(Level_frame_counter+1).w
  338.         beq.s   +
  339.         lea ChildObjDat_BossCerberus_Fire(pc),a2
  340.         jsr (CreateChild6_Simple).l
  341.         bne.s   +
  342.         move.b  #48/2,$3A(a1)
  343.         move.b  #48/2,$3B(a1)
  344.         move.w  #$100,$3C(a1)
  345. +       rts
  346. ; ---------------------------------------------------------------------------
  347. ; Пламя перед появлением босса
  348. ; ---------------------------------------------------------------------------
  349.  
  350. ; =============== S U B R O U T I N E =======================================
  351.  
  352. Obj_Cerberus_FireShow:
  353.         sfx sfx_FireShow,0,0,0
  354.         lea ObjDat3_BossCerberusFireShow(pc),a1
  355.         jsr (SetUp_ObjAttributes).l
  356.         move.l  #Go_Delete_Sprite,$34(a0)
  357.         move.l  #Cerberus_FireShow_Main,address(a0)
  358.         move.l  #AniRaw_Cerberus_FireShow,$30(a0)
  359.  
  360. Cerberus_FireShow_Main:
  361.         jsr (Animate_Raw).l
  362.         jmp (Child_Draw_Sprite).l
  363. ; ---------------------------------------------------------------------------
  364. ; Тень босса
  365. ; ---------------------------------------------------------------------------
  366.  
  367. ; =============== S U B R O U T I N E =======================================
  368.  
  369. Obj_Cerberus_Trail:
  370.         moveq   #0,d0
  371.         move.b  subtype(a0),d0
  372.         lsl.b   #3,d0
  373.         addi.b  #16,d0
  374.         move.b  d0,subtype(a0)
  375.         lea ObjDat3_BossCerberus_Trail(pc),a1
  376.         jsr (SetUp_ObjAttributes3).l
  377.         move.l  #+,address(a0)
  378.         move.l  #AniRaw_Cerberus_FireTail,$30(a0)
  379. +       bsr.w   Obj_Cerberus_CopyPos
  380.         bsr.s   Cerberus_Trail_Remove
  381.         jsr (Animate_Raw).l
  382.         jmp (Child_DrawTouch_Sprite).l
  383. ; ---------------------------------------------------------------------------
  384.  
  385. Cerberus_Trail_Remove:
  386.         movea.w parent3(a0),a1
  387.         cmpi.l  #BossCerberus_CheckSubroutine,$34(a1)
  388.         bne.s   +
  389.         move.l  #Go_Delete_Sprite,address(a0)
  390. +       rts
  391. ; ---------------------------------------------------------------------------
  392. ; Огненный шар
  393. ; ---------------------------------------------------------------------------
  394.  
  395. ; =============== S U B R O U T I N E =======================================
  396.  
  397. Obj_Cerberus_FireBall:
  398.         moveq   #0,d0
  399.         move.b  routine(a0),d0
  400.         move.w  Cerberus_FireBall_Index(pc,d0.w),d0
  401.         jsr Cerberus_FireBall_Index(pc,d0.w)
  402.         jmp (Sprite_ChildCheckDeleteTouchXY).l
  403. ; ---------------------------------------------------------------------------
  404.  
  405. Cerberus_FireBall_Index: offsetTable
  406.         offsetTableEntry.w Cerberus_FireBall_Init   ; 0
  407.         offsetTableEntry.w Cerberus_FireBall_Setup  ; 2
  408. ; ---------------------------------------------------------------------------
  409.  
  410. Cerberus_FireBall_Init:
  411.         lea ObjDat3_BossCerberus_FireBall(pc),a1
  412.         jsr (SetUp_ObjAttributes3).l
  413.         move.l  #Cerberus_FireBall_Shot,$34(a0)
  414.         move.l  #AniRaw_Cerberus_FireBall,$30(a0)
  415.  
  416. Cerberus_FireBall_Setup:
  417.         jsr (Animate_RawMultiDelay).l
  418.         jsr (MoveSprite2).l
  419.         jmp (Obj_Wait).l
  420. ; ---------------------------------------------------------------------------
  421.  
  422. Cerberus_FireBall_Shot:
  423.         move.l  #Cerberus_FireBall_Check,$34(a0)
  424.         move.w  #-$400,d0
  425.         jsr (Change_VelocityWithFlipXUseParent).l
  426.         move.w  #-$780,y_vel(a0)
  427.  
  428. Cerberus_FireBall_Check:
  429.         move.w  (Camera_Y_pos).w,d0
  430.         addi.w  #$20,d0
  431.         cmp.w   y_pos(a0),d0
  432.         blo.s       Cerberus_FireFallBall_Return
  433.         move.l  #Cerberus_FireBall_Create,$34(a0)
  434.         clr.w   y_vel(a0)
  435.  
  436. Cerberus_FireBall_Create:
  437.         move.w  #$F,$2E(a0)
  438.         lea ChildObjDat_Cerberus_FireFallBall(pc),a2
  439.         jmp (CreateChild1_Normal).l
  440. ; ---------------------------------------------------------------------------
  441. ; Падающие огненные шары
  442. ; ---------------------------------------------------------------------------
  443.  
  444. ; =============== S U B R O U T I N E =======================================
  445.  
  446. Obj_Cerberus_FireFallBall:
  447.         moveq   #0,d0
  448.         move.b  routine(a0),d0
  449.         move.w  Cerberus_FireFallBall_Index(pc,d0.w),d0
  450.         jsr Cerberus_FireFallBall_Index(pc,d0.w)
  451.         jmp (Sprite_CheckDeleteTouchXY).l
  452. ; ---------------------------------------------------------------------------
  453.  
  454. Cerberus_FireFallBall_Index: offsetTable
  455.         offsetTableEntry.w Cerberus_FireFallBall_Init       ; 0
  456.         offsetTableEntry.w Cerberus_FireFallBall_Setup  ; 2
  457. ; ---------------------------------------------------------------------------
  458.  
  459. Cerberus_FireFallBall_Init:
  460.         lea ObjDat3_BossCerberus_FireFallBall(pc),a1
  461.         jsr (SetUp_ObjAttributes3).l
  462.         ori.b   #$A0,art_tile(a0)
  463.         move.l  #Cerberus_FireFallBall_Fall,$34(a0)
  464.         move.l  #AniRaw_Cerberus_FireFallBall,$30(a0)
  465.  
  466. Cerberus_FireFallBall_Setup:
  467.         jsr (Animate_RawMultiDelay).l
  468.         jsr (MoveSprite2).l
  469.         jmp (Obj_Wait).l
  470. ; ---------------------------------------------------------------------------
  471.  
  472. Cerberus_FireFallBall_Fall:
  473.         move.l  #Cerberus_FireFallBall_Return,$34(a0)
  474.         move.w  #$180,y_vel(a0)
  475.  
  476. Cerberus_FireFallBall_Return:
  477.         rts
  478.  
  479. ; =============== S U B R O U T I N E =======================================
  480.  
  481. Obj_Cerberus_SendPos:
  482.         move.w  (Pos_objTable_index).w,d0
  483.         lea (Pos_objTable).w,a1
  484.         lea (a1,d0.w),a1
  485.         move.w  x_pos(a0),(a1)+
  486.         move.w  y_pos(a0),(a1)+
  487.         addq.b  #4,(Pos_objTable_byte).w
  488.         rts
  489. ; ---------------------------------------------------------------------------
  490.  
  491. Obj_Cerberus_CopyPos:
  492.         move.w  (Pos_objTable_index).w,d0
  493.         lea (Pos_objTable).w,a1
  494.         sub.b   subtype(a0),d0
  495.         lea (a1,d0.w),a1
  496.         move.w  (a1)+,x_pos(a0)
  497.         move.w  (a1)+,y_pos(a0)
  498.         rts
  499. ; ---------------------------------------------------------------------------
  500. ; Дым из босса
  501. ; ---------------------------------------------------------------------------
  502.  
  503. ; =============== S U B R O U T I N E =======================================
  504.  
  505. Obj_BossCerberus_Fire:
  506.         move.w  #1-1,d6
  507.  
  508. -       jsr (Create_New_Sprite3).l
  509.         bne.w   ++
  510.         move.l  #Obj_BossCerberus_Fire_Anim,address(a1)
  511.         move.l  #Map_BossDEZExplosion,mappings(a1)
  512.         move.w  #$530,art_tile(a1)
  513.         move.b  #4,render_flags(a1)
  514.         move.w  $3C(a0),priority(a1)
  515.         move.b  #24/2,width_pixels(a1)
  516.         move.b  #24/2,height_pixels(a1)
  517.         move.w  x_pos(a0),x_pos(a1)
  518.         move.w  y_pos(a0),y_pos(a1)
  519.         jsr (loc_83E90).l
  520.         jsr (Random_Number).l
  521.         andi.w  #$FF,d0
  522.         addi.w  #$200,d0
  523.         movea.w parent3(a0),a2
  524.         tst.w   x_vel(a2)
  525.         bmi.s   +
  526.         neg.w   d0
  527. +       move.w  d0,x_vel(a1)
  528.         jsr (Random_Number).l
  529.         andi.w  #$FF,d0
  530.         addi.w  #$200,d0
  531.         neg.w   d0
  532.         move.w  d0,y_vel(a1)
  533.         move.b  #3,anim_frame_timer(a1)
  534.         dbf d6,-
  535. +       bra.s   Obj_BossCerberus_Fire_Remove
  536. ; ---------------------------------------------------------------------------
  537.  
  538. Obj_BossCerberus_Fire_Anim:
  539.         subq.b  #1,anim_frame_timer(a0)
  540.         bpl.s   +
  541.         move.b  #3,anim_frame_timer(a0)
  542.         addq.b  #1,mapping_frame(a0)
  543.         cmpi.b  #7,mapping_frame(a0)
  544.         beq.s   Obj_BossCerberus_Fire_Remove
  545. +       jsr (MoveSprite2).l
  546.         jmp (Draw_Sprite).l
  547. ; ---------------------------------------------------------------------------
  548.  
  549. Obj_BossCerberus_Fire_Remove:
  550.         jmp (Delete_Current_Sprite).l
  551.  
  552. ; =============== S U B R O U T I N E =======================================
  553.  
  554. BossCerberus_PalFlash:
  555.         lea LoadBossCerberus_PalRAM(pc),a1
  556.         lea LoadBossCerberus_PalCycle(pc,d0.w),a2
  557.         jmp (CopyWordData_8).l
  558. ; ---------------------------------------------------------------------------
  559.  
  560. LoadBossCerberus_PalRAM:
  561.         dc.w Normal_palette_line_2+6
  562.         dc.w Normal_palette_line_2+8
  563.         dc.w Normal_palette_line_2+$10
  564.         dc.w Normal_palette_line_2+$12
  565.         dc.w Normal_palette_line_2+$14
  566.         dc.w Normal_palette_line_2+$16
  567.         dc.w Normal_palette_line_2+$18
  568.         dc.w Normal_palette_line_2+$1A
  569. LoadBossCerberus_PalCycle:
  570.         dc.w $6E, $8E, 8, $A, $C, $E, $6CE, $8EE
  571.         dc.w $E60, $E80, $800, $A00, $C00, $E00, $CCC, $EEE
  572.  
  573. ; =============== S U B R O U T I N E =======================================
  574.  
  575. ObjDat3_BossCerberus:
  576.         dc.l Map_Cerberus
  577.         dc.w $22C0
  578.         dc.w $200
  579.         dc.b 96/2
  580.         dc.b 64/2
  581.         dc.b 0
  582.         dc.b $39
  583. ObjDat3_BossCerberus_Trail:
  584.         dc.w $280
  585.         dc.b 80/2
  586.         dc.b 56/2
  587.         dc.b 7
  588.         dc.b $39|$80
  589. ObjDat3_BossCerberusFireShow:
  590.         dc.l Map_Cerberus
  591.         dc.w $22C0
  592.         dc.w $180
  593.         dc.b 112/2
  594.         dc.b 56/2
  595.         dc.b 4
  596.         dc.b 0
  597. ObjDat3_BossCerberus_FireBall:
  598.         dc.w $280
  599.         dc.b 24/2
  600.         dc.b 24/2
  601.         dc.b 9
  602.         dc.b $1A|$80
  603. ObjDat3_BossCerberus_FireFallBall:
  604.         dc.w $280
  605.         dc.b 24/2
  606.         dc.b 32/2
  607.         dc.b $B
  608.         dc.b $B|$80
  609. AniRaw_CerberusWait:
  610.         dc.b $F, 0, $FC, 0
  611. AniRaw_CerberusWalk:
  612.         dc.b $F, 0, 1, $FC
  613. AniRaw_CerberusJump:
  614.         dc.b 4, 2, 3, $FC
  615. AniRaw_Cerberus_FireShow:
  616.         dc.b 9, 4, 5, 6, 5, $F4
  617. AniRaw_Cerberus_FireTail:
  618.         dc.b 9, 7, 8, $FC
  619. AniRaw_Cerberus_FireBall:
  620.         dc.b 9, 1
  621.         dc.b $A, 3
  622.         dc.b $FC, 0
  623. AniRaw_Cerberus_FireFallBall:
  624.         dc.b $B, 9
  625.         dc.b $C, 4
  626.         dc.b $FC, 0
  627. ChildObjDat_Cerberus_FireShow:
  628.         dc.w 1-1
  629.         dc.l Obj_Cerberus_FireShow
  630. ChildObjDat_Cerberus_Trail:
  631.         dc.w 4-1
  632.         dc.l Obj_Cerberus_Trail
  633. ChildObjDat_Cerberus_FireBall:
  634.         dc.w 1-1
  635.         dc.l Obj_Cerberus_FireBall
  636. ChildObjDat_Cerberus_FireFallBall:
  637.         dc.w 1-1
  638.         dc.l Obj_Cerberus_FireFallBall
  639.         dc.b 0, 16
  640. ChildObjDat_BossCerberus_Fire:
  641.         dc.w 1-1
  642.         dc.l Obj_BossCerberus_Fire
  643. PLC_BossCerberus: plrlistheader
  644.         plreq $2C0, ArtKosM_BossCerberus
  645.         plreq $530, ArtKosM_DEZExplosion
  646. PLC_BossCerberus_End
  647. ; ---------------------------------------------------------------------------
  648.  
  649.         include "Objects/Bosses/Cerberus/Object Data/Map - Cerberus.asm"
  650.         include "Objects/Bosses/Cerberus/Object Data/Map - Explosion.asm"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement