check_tired: cmpi.w #0x0000,(0xFFFFF646).w beq.s locret_tired move.w (0xFFFFF646).w,%d0 subi.w #0x10,%d0 move.w 0xC(%a0),%d1 cmp %d0,%d1 bge.s Tired_Swimming_Anim_Set move.b #0x1F,0x1C(%a0) bra.w locret_tired Tired_Swimming_Anim_Set: move.b #0x21,0x1C(%a0) locret_tired: rts check_swimfly: cmpi.w #0x0000,(0xFFFFF646).w beq.s Fly2 move.w (0xFFFFF646).w,%d0 subi.w #0x10,%d0 move.w 0xC(%a0),%d1 cmp %d0,%d1 bge.s Swimming_Anim_Set move.b #0x22,0x1C(%a0) bra.w Fly2 Swimming_Anim_Set: move.b #0x20,0x1C(%a0) bra.w Fly2 Tails_Fly: cmpi.b #2,(0xFFFFFE57).w bge.s 1f jmp locret_134d2 1: cmpi.b #0x01,Current_Character bne.s exit_flying cmpi.b #0x20,0x1C(%a0) beq.s check_swimfly cmpi.b #0x22,0x1C(%a0) beq.s check_swimfly Fly2: cmpi.b #0x1F,0x1C(%a0) beq.w check_tired cmpi.b #0x21,0x1C(%a0) beq.w check_tired cmpi.b #0x40,(0xFFFFF605).w | has A been pressed? beq.s Tails_Fly_Continue cmpi.b #0x20,(0xFFFFF605).w | has C been pressed? beq.s Tails_Fly_Continue cmpi.b #0x10,(0xFFFFF605).w | has B been pressed? bne.s exit_flying | if not,stop jmp Tails_Fly_Continue exit_flying: rts Tails_Fly_Continue: cmpi.b #0x22,0x1C(%a0) beq.s Continue_flying cmpi.b #0x20,0x1C(%a0) beq.s Continue_flying move.b #1,(0xFFFFFFBE).w move.b #0,(0xFFFFFFAD).w move.w (0xFFFFF646).w,%d0 subi.w #0x10,%d0 move.w 0xC(%a0),%d1 cmp %d0,%d1 bge.s Swimming_Anim move.b #0x22,0x1C(%a0) bra.w Fly_Cont Swimming_Anim: move.b #0x22,0x1C(%a0) cmpi.w #0x0000,(0xFFFFF646).w beq.s Fly_Cont move.b #0x20,0x1C(%a0) Fly_Cont: move.w #-0x300,0x12(%a0) addi.w #0x300,0x14(%a0) addq.l #4,%sp rts Continue_flying: cmpi.b #1,(0xFFFFFFAD).w beq.s exit_flying addq.b #1,(0xFFFFFFBE).w cmpi.b #0xF,(0xFFFFFFBE).w beq.w too_tired move.w #-0x300,0x12(%a0) addq.l #4,%sp rts too_tired: move.b #1,(0xFFFFFFAD).w cmpi.w #0x0000,(0xFFFFF646).w | Is this a waterless level? beq.s tired_flying move.w (0xFFFFF646).w,%d0 subi.w #0x10,%d0 move.w 0xC(%a0),%d1 cmp %d0,%d1 bge.s tired_swimming jmp tired_flying tired_swimming: move.b #0x21,0x1C(%a0) jmp tired_end tired_flying: move.b #0x1F,0x1C(%a0) tired_end: rts set_flying_speed: move.w #0x300,%d5 btst #0,0x22(%a0) | looking left or right? beq.s flying_routine_2 neg.w %d5 |reverse speed flying_routine_2: move.w %d5,0x10(%a0) rts