rendered paste bodySonic_Spindash:
cmpi.b #1,($FFFFFFFF)
bne @rts
tst.b $39(a0)
bne loc_10396
cmpi.b #8,$1C(a0)
bne @rts
move.b ($FFFFF603).w,d0
andi.b #$70,d0
beq @rts
subi.w #1,($FFFFd008).w
btst #0,$22(a0)
beq @lookingleft
addi.w #2,($FFFFd008).w
@lookingleft:
; move.b #$F,$16(a0)
move.b #9,$1C(a0)
move.w #$D2,d0
jsr (PlaySound_Special).l
move.b #2,($FFFFD1DC).w
jsr Sonic_LevelBound
jsr SpeedToPos
jsr Sonic_AnglePos
jsr Sonic_SlopeRepel
addq.l #4,sp
move.b #1,$39(a0)
@rts:
rts
loc_10396:
move.b ($FFFFF602).w,d0
btst #1,d0
bne loc_1Ad30
move.b #$E,$16(a0)
move.b #7,$17(a0)
move.b #2,$1C(a0)
; addq.w #5,$C(a0)
move.b #0,$39(a0)
moveq #0,d0
move.b $3A(a0),d0
add.w d0,d0
move.w Normal_Spindash_Speeds(pc,d0.w),$14(a0)
tst.b Super_Sonic_flag
beq loc_1ACd0
move.w Super_Spindash_Speeds(pc,d0.w),$14(a0)
loc_1ACd0:
move.w $14(a0),d0
subi.w #$800,d0
add.w d0,d0
andi.w #$1F00,d0
neg.w d0
subi.w #1,$8(a0)
btst #0,$22(a0)
beq loc_1ACF4
neg.w $14(a0)
addi.w #2,$8(a0)
loc_1ACF4:
bset #2,$22(a0)
move.b #0,($FFFFd11C).w
move.w #$BC,d0
jsr (PlaySound).l
jmp loc_1Ad78
Normal_Spindash_Speeds:
dc.w $800
dc.w $880
dc.w $900
dc.w $980
dc.w $a00
dc.w $a80
dc.w $B00
dc.w $B80
dc.w $C00
Super_Spindash_Speeds:
dc.w $B00
dc.w $B80
dc.w $C00
dc.w $C80
dc.w $D00
dc.w $D80
dc.w $E00
dc.w $E80
dc.w $F00
loc_1Ad30: ; If still charging the dash...
tst.w $3A(a0)
beq loc_1Ad48
move.w $3A(a0),d0
lsr.w #5,d0
sub.w d0,$3A(a0)
bcc loc_1Ad48
move.w #0,$3A(a0)
loc_1Ad48:
move.b ($FFFFF603).w,d0
andi.b #$70,d0 ; "p"
beq loc_1Ad78
move.w #$900,$1C(a0)
move.w #$D2,d0 ; ""
jsr (PlaySound).l
addi.w #$200,$3A(a0)
cmpi.w #$800,$3A(a0)
bcs.s loc_1Ad78
move.w #$800,$3A(a0)
loc_1Ad78:
move.b #2,($FFFFD1DC).w
jsr Sonic_LevelBound
jsr SpeedToPos
jsr Sonic_AnglePos
jsr Sonic_SlopeRepel
addq.l #4,sp
cmpi.w #$60,($FFFFEEd8).w
beq loc_1Ad8C
bcc loc_1Ad88
addq.w #4,($FFFFEEd8).w
loc_1Ad88:
subq.w #2,($FFFFEEd8).w
loc_1Ad8C:
; jsr loc_1a974
; jsr loc_1E234
move.w #$60,($FFFFF73E).w; reset looking up/down
rts
loc_103d4: ; CODE XREF: Sonic_Spindash+6Cj
bset #2,$22(a0)
rts
;
loc_103DC: ; CODE XREF: Sonic_Spindash+3Cj
move.b ($FFFFF603).w,d0
andi.b #$70,d0 ; "p"
beq loc_103EA
nop
loc_103EA: ; CODE XREF: Sonic_Spindash+82j
jsr Sonic_LevelBound
jsr SpeedToPos
jsr Sonic_AnglePos
jsr Sonic_SlopeRepel
addq.l #4,sp
move.w #$60,($FFFFF73E).w; reset looking up/down
; jsr LoadSonicDynPLC
rts
; End of function Sonic_Spindash