Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; ---------------------------------------------------------------------------
- ; Object 19 - Sled
- ; ---------------------------------------------------------------------------
- Obj19: ; XREF: Obj_Index
- moveq #0,d0
- move.b $24(a0),d0
- move.w Obj19_Index(pc,d0.w),d1
- jmp Obj19_Index(pc,d1.w)
- ; ===========================================================================
- Obj19_Index:
- O19 dc.w Obj19_Chk_Sonic-O19
- dc.w Obj19_Load_Sleds-O19
- dc.w Obj19_Sled-O19
- dc.w Obj19_Sled_Delay_Speed_Hidings-O19
- dc.w Obj19_Special_For_SpinDash-O19
- ; ===========================================================================
- Obj19_Load_Number_for_Delay:
- Chk_4_Byte ; копировать значение
- btst #4,$2B(a0) ; бит 4 включен?
- beq.s Chk_5_Byte ; перейти, если нет
- bset #6,$2B(a0) ; копировать бит
- Chk_5_Byte btst #5,$2B(a0) ; бит 5 включен?
- beq.s Brch_Next_Code ; перейти если нет
- bset #7,$2B(a0) ; копировать бит
- Brch_Next_Code rts
- Obj19_Chk_Sonic
- Obj19_Chk_HuperRun_Sonic:
- btst #1,($FFFFD03B).w
- beq.s Obj19_Chk_SpinDash_Sonic
- addq.b #2,$24(a0)
- bset #1,$2B(a0)
- rts
- Obj19_Chk_SpinDash_Sonic:
- tst.b ($FFFFD039).w ; Соник спиндашит?
- beq.s Obj19_Chk_JumpDash_Sonic; перейти, если нет
- move.b #$10,$2B(a0) ; задать задержу создании объектов (0-3)
- jsr Obj19_Load_Number_for_Delay
- move.b #8,$24(a0) ; => Obj19_Special_For_SpinDash
- rts
- Obj19_Chk_JumpDash_Sonic:
- btst #7,($FFFFD022).w ; Соник джампдашит?
- beq.s Obj19_Chk_Kruchenie_Sonic; перейти, если нет
- move.b #$10,$2B(a0) ; задать задержу создании объектов (0-3)
- jsr Obj19_Load_Number_for_Delay
- addq.b #2,$24(a0) ; => Obj19_Load_Sleds
- rts
- Obj19_Chk_Kruchenie_Sonic:
- btst #0,($FFFFD03B).w
- beq.s Out_Chk
- addq.b #2,$24(a0) ; => Obj19_Load_Sleds
- bset #2,$2B(a0)
- Out_Chk rts
- ;----------------------------------------------------------------------------
- Obj19_Load_Sleds:
- btst #4,$2B(a0) ; бит 4 включен?
- bne.w Obj19_No_Load ; перейти, если да
- btst #5,$2B(a0) ; бит 5 включен?
- bne.w Obj19_No_Load ; перейти, если да
- lea ($FFFFD000).l,a2 ; загрузить адрес Соника
- jsr SingleObjLoad
- bne.s Chk_6_Byte
- move.b #$19,0(a1) ; загрузить след
- move.b #6,$24(a1) ; => Obj19_Sled
- move.w 8(a2),8(a1)
- move.w $C(a2),$C(a1)
- move.l #Map_obj19,4(a1)
- move.w #($6AC0/$20),2(a1)
- move.b #4,1(a1)
- move.b #3,$18(a1)
- move.b #$14,$29(a1)
- move.b $29(a1),$2A(a1)
- andi.b #$F,$2A(a1)
- Chk_6_Byte ; перезагрузить значение
- btst #6,$2B(a0) ; бит 6 включен?
- beq.s Chk_7_Byte ; перейти, если нет
- bset #4,$2B(a0) ; копировать бит
- Chk_7_Byte btst #7,$2B(a0) ; бит 7 включен?
- beq.s No_Sub ; перейти если нет
- bset #5,$2B(a0) ; копировать бит
- bra.s No_Sub
- Obj19_No_Load sub.b #$10,$2B(a0) ; вычесть 1
- No_Sub btst #3,$2B(a0) ; переход из Obj19_Special_For_SpinDash?
- bne.w Obj19_Chk_SpinDash_Sonic1; перейти, если да
- btst #2,$2B(a0) ; это кручение?
- bne.w Obj19_Chk_Kruchenie_Sonic1
- btst #1,$2B(a0) ; это гипер бег?
- bne.w Obj19_Chk_HuperRun_Sonic1
- Obj19_Chk_JumpDash_Sonic1:
- btst #7,($FFFFD022).w ; Соник джампдашит?
- bne.s Out_Chk1 ; перейти, если да
- subq.b #2,$24(a0) ; => Obj19_Chk_Sonic
- Out_Chk1 rts
- Obj19_Chk_SpinDash_Sonic1:
- btst #2,$22(a2) ; Соник катится?
- bne.s Obj19_Chk_SpinDash_Sonic1rts; перейти, если да
- bclr #3,$2B(a0) ; очистить флаг
- subq.b #2,$24(a0) ; => Obj19_Chk_Sonic
- Obj19_Chk_SpinDash_Sonic1rts rts
- Obj19_Chk_Kruchenie_Sonic1:
- btst #2,$22(a2) ; Соник катится?
- bne.s Obj19_Chk_SpinDash_Sonic1rts; перейти, если да
- bclr #0,$3B(a2) ; Соник не крутится
- bclr #2,$2B(a0) ; очистить флаг
- subq.b #2,$24(a0) ; => Obj19_Chk_Sonic
- Obj19_Chk_Kruchenie_Sonic1rts rts
- Obj19_Chk_HuperRun_Sonic1:
- cmp.w #$C00,$14(a2)
- bpl.s Obj19_Chk_HuperRun_Sonic1rts
- bclr #1,$2B(a0) ; очистить флаг
- bclr #1,$3b(a2)
- subq.b #2,$24(a0) ; => Obj19_Chk_Sonic
- Obj19_Chk_HuperRun_Sonic1rts: rts
- ;----------------------------------------------------------------------------
- Obj19_Sled
- Obj19_Sled_Delay_Hiding:
- jsr DisplaySprite ; отобразить
- move.b $29(a0),d0
- andi.b #$F,d0
- subi.b #$10,$29(a0) ; вычесть 10
- cmp.b $29(a0),d0 ; мы дошли до "0?" ?
- bne.s Obj19_SlDHi_Rts ; перейти, если нет
- addq.b #2,$24(a0) ; => Obj19_Sled_Delay_Speed_Hidings
- Obj19_SlDHi_Rts:rts
- ;----------------------------------------------------------------------------
- Obj19_Sled_Delay_Speed_Hidings:
- jsr DisplaySprite ; отобразить
- tst.b $29(a0) ; есть задержка?
- beq.s No_Delay ; перейти, если нет
- subq.b #1,$29(a0) ; вычесть 1
- bne.s Obj19_Sled_Rts ; перейти, если не 0
- move.b $2A(a0),$29(a0) ; возобновить значение (#%0000????)
- No_Delay addq.b #1,$1A(a0) ; установить следующий кадр
- cmp.b #6,$1A(a0) ; кадров больше нет?
- beq DeleteObject ; перейти, если да
- Obj19_Sled_Rts rts
- ;----------------------------------------------------------------------------
- Obj19_Special_For_SpinDash:
- tst.b ($FFFFD039).w ; Соник спиндашит?
- bne.s Obj19_SpFSp_Rts ; перейти если, да
- move.b #2,$24(a0) ; => Obj19_Load_Sleds
- bset #3,$2B(a0) ; указать, что выполялась Obj19_Special_For_SpinDash
- Obj19_SpFSp_Rts:rts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement