Advertisement
Guest User

Untitled

a guest
Oct 12th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; ---------------------------------------------------------------------------
  2. ; Object 19 - Sled
  3. ; ---------------------------------------------------------------------------
  4.  
  5. Obj19:                      ; XREF: Obj_Index
  6.         moveq   #0,d0
  7.         move.b  $24(a0),d0
  8.         move.w  Obj19_Index(pc,d0.w),d1
  9.         jmp Obj19_Index(pc,d1.w)
  10. ; ===========================================================================
  11. Obj19_Index:
  12. O19     dc.w Obj19_Chk_Sonic-O19
  13.         dc.w Obj19_Load_Sleds-O19
  14.         dc.w Obj19_Sled-O19
  15.         dc.w Obj19_Sled_Delay_Speed_Hidings-O19
  16.         dc.w Obj19_Special_For_SpinDash-O19
  17. ; ===========================================================================
  18.  
  19. Obj19_Load_Number_for_Delay:
  20. Chk_4_Byte  ; копировать значение
  21.         btst    #4,$2B(a0)      ; бит 4 включен?
  22.         beq.s   Chk_5_Byte      ; перейти, если нет
  23.         bset    #6,$2B(a0)      ; копировать бит
  24. Chk_5_Byte  btst    #5,$2B(a0)      ; бит 5 включен?
  25.         beq.s   Brch_Next_Code      ; перейти если нет
  26.         bset    #7,$2B(a0)      ; копировать бит
  27. Brch_Next_Code  rts
  28.  
  29. Obj19_Chk_Sonic
  30. Obj19_Chk_HuperRun_Sonic:
  31.         btst    #1,($FFFFD03B).w
  32.         beq.s   Obj19_Chk_SpinDash_Sonic
  33.         addq.b  #2,$24(a0)
  34.         bset    #1,$2B(a0)
  35.         rts
  36. Obj19_Chk_SpinDash_Sonic:
  37.         tst.b   ($FFFFD039).w       ; Соник спиндашит?
  38.         beq.s   Obj19_Chk_JumpDash_Sonic; перейти, если нет
  39.         move.b  #$10,$2B(a0)        ; задать задержу создании объектов (0-3)
  40.         jsr Obj19_Load_Number_for_Delay
  41.         move.b  #8,$24(a0)      ; => Obj19_Special_For_SpinDash
  42.         rts
  43. Obj19_Chk_JumpDash_Sonic:
  44.         btst    #7,($FFFFD022).w    ; Соник джампдашит?
  45.         beq.s   Obj19_Chk_Kruchenie_Sonic; перейти, если нет
  46.         move.b  #$10,$2B(a0)        ; задать задержу создании объектов (0-3)
  47.         jsr Obj19_Load_Number_for_Delay
  48.         addq.b  #2,$24(a0)      ; => Obj19_Load_Sleds
  49.         rts
  50. Obj19_Chk_Kruchenie_Sonic:
  51.         btst    #0,($FFFFD03B).w
  52.         beq.s   Out_Chk
  53.         addq.b  #2,$24(a0)      ; => Obj19_Load_Sleds
  54.         bset    #2,$2B(a0)
  55. Out_Chk     rts
  56. ;----------------------------------------------------------------------------
  57. Obj19_Load_Sleds:
  58.         btst    #4,$2B(a0)      ; бит 4 включен?
  59.         bne.w   Obj19_No_Load       ; перейти, если да
  60.         btst    #5,$2B(a0)      ; бит 5 включен?
  61.         bne.w   Obj19_No_Load       ; перейти, если да
  62.         lea ($FFFFD000).l,a2    ; загрузить адрес Соника
  63.         jsr SingleObjLoad
  64.         bne.s   Chk_6_Byte
  65.         move.b  #$19,0(a1)      ; загрузить след
  66.         move.b  #6,$24(a1)      ; => Obj19_Sled
  67.         move.w  8(a2),8(a1)
  68.         move.w  $C(a2),$C(a1)
  69.         move.l  #Map_obj19,4(a1)
  70.         move.w  #($6AC0/$20),2(a1)
  71.         move.b  #4,1(a1)
  72.         move.b  #3,$18(a1)
  73.         move.b  #$14,$29(a1)
  74.         move.b  $29(a1),$2A(a1)
  75.         andi.b  #$F,$2A(a1)
  76. Chk_6_Byte  ; перезагрузить значение
  77.         btst    #6,$2B(a0)      ; бит 6 включен?
  78.         beq.s   Chk_7_Byte      ; перейти, если нет
  79.         bset    #4,$2B(a0)      ; копировать бит
  80. Chk_7_Byte  btst    #7,$2B(a0)      ; бит 7 включен?
  81.         beq.s   No_Sub          ; перейти если нет
  82.         bset    #5,$2B(a0)      ; копировать бит
  83.         bra.s   No_Sub
  84. Obj19_No_Load   sub.b   #$10,$2B(a0)        ; вычесть 1
  85. No_Sub      btst    #3,$2B(a0)      ; переход из Obj19_Special_For_SpinDash?
  86.         bne.w   Obj19_Chk_SpinDash_Sonic1; перейти, если да
  87.         btst    #2,$2B(a0)      ; это кручение?
  88.         bne.w   Obj19_Chk_Kruchenie_Sonic1
  89.         btst    #1,$2B(a0)      ; это гипер бег?
  90.         bne.w   Obj19_Chk_HuperRun_Sonic1
  91. Obj19_Chk_JumpDash_Sonic1:
  92.         btst    #7,($FFFFD022).w    ; Соник джампдашит?
  93.         bne.s   Out_Chk1        ; перейти, если да
  94.         subq.b  #2,$24(a0)      ; => Obj19_Chk_Sonic
  95. Out_Chk1    rts
  96.  
  97. Obj19_Chk_SpinDash_Sonic1:
  98.         btst    #2,$22(a2)      ; Соник катится?
  99.         bne.s   Obj19_Chk_SpinDash_Sonic1rts; перейти, если да
  100.         bclr    #3,$2B(a0)      ; очистить флаг
  101.         subq.b  #2,$24(a0)      ; => Obj19_Chk_Sonic
  102. Obj19_Chk_SpinDash_Sonic1rts    rts
  103.  
  104. Obj19_Chk_Kruchenie_Sonic1:
  105.         btst    #2,$22(a2)      ; Соник катится?
  106.         bne.s   Obj19_Chk_SpinDash_Sonic1rts; перейти, если да
  107.         bclr    #0,$3B(a2)      ; Соник не крутится
  108.         bclr    #2,$2B(a0)      ; очистить флаг
  109.         subq.b  #2,$24(a0)      ; => Obj19_Chk_Sonic
  110. Obj19_Chk_Kruchenie_Sonic1rts   rts
  111.  
  112. Obj19_Chk_HuperRun_Sonic1:
  113.         cmp.w   #$C00,$14(a2)
  114.         bpl.s   Obj19_Chk_HuperRun_Sonic1rts
  115.         bclr    #1,$2B(a0)      ; очистить флаг
  116.         bclr    #1,$3b(a2)
  117.         subq.b  #2,$24(a0)      ; => Obj19_Chk_Sonic
  118. Obj19_Chk_HuperRun_Sonic1rts:   rts
  119.  
  120. ;----------------------------------------------------------------------------
  121. Obj19_Sled
  122. Obj19_Sled_Delay_Hiding:
  123.         jsr DisplaySprite       ; отобразить
  124.         move.b  $29(a0),d0
  125.         andi.b  #$F,d0
  126.         subi.b  #$10,$29(a0)        ; вычесть 10
  127.         cmp.b   $29(a0),d0      ; мы дошли до "0?" ?
  128.         bne.s   Obj19_SlDHi_Rts     ; перейти, если нет
  129.         addq.b  #2,$24(a0)      ; => Obj19_Sled_Delay_Speed_Hidings
  130. Obj19_SlDHi_Rts:rts
  131. ;----------------------------------------------------------------------------
  132. Obj19_Sled_Delay_Speed_Hidings:
  133.         jsr DisplaySprite       ; отобразить
  134.         tst.b   $29(a0)         ; есть задержка?
  135.         beq.s   No_Delay        ; перейти, если нет
  136.         subq.b  #1,$29(a0)      ; вычесть 1
  137.         bne.s   Obj19_Sled_Rts      ; перейти, если не 0
  138.         move.b  $2A(a0),$29(a0)     ; возобновить значение (#%0000????)
  139. No_Delay    addq.b  #1,$1A(a0)      ; установить следующий кадр
  140.         cmp.b   #6,$1A(a0)      ; кадров больше нет?
  141.         beq DeleteObject        ; перейти, если да
  142. Obj19_Sled_Rts  rts
  143. ;----------------------------------------------------------------------------
  144. Obj19_Special_For_SpinDash:
  145.         tst.b   ($FFFFD039).w       ; Соник спиндашит?
  146.         bne.s   Obj19_SpFSp_Rts     ; перейти если, да
  147.         move.b  #2,$24(a0)      ; => Obj19_Load_Sleds
  148.         bset    #3,$2B(a0)      ; указать, что выполялась Obj19_Special_For_SpinDash
  149. Obj19_SpFSp_Rts:rts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement