rendered paste bodycheck_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