Actions

SCHG How-to

Difference between revisions of "Add final spindash to Sonic 2 Beta"

From Sonic Retro

(Fixing an error)
(Directly copying the object code)
Line 5: Line 5:
  
 
===Directly copying the object code===
 
===Directly copying the object code===
This will be very easy
+
First we'll have to get a slightly modified sonic 1 spindash code
here's the code
+
 
 +
Replace the entire routine with this
  
 
<syntaxhighlight lang="asm">
 
<syntaxhighlight lang="asm">

Revision as of 03:17, 8 September 2017

Hello everyone shadow05 here Have you playing sonic 2 beta and been annoyed about the incomplete spindash Well this guide is for people who can do basic asm editing inspired by the sonic 1 spindash guide I was using the super egg disassembly but this will work on the original esrael disassembly

Directly copying the object code

First we'll have to get a slightly modified sonic 1 spindash code

Replace the entire routine with this

Sonic_SpinDash:
		tst.b	$39(a0)
		bne.s	loc_1AC8E
		cmpi.b	#8,$1C(a0)
		bne.s	locret_1AC8C
		move.b	($FFFFF603).w,d0
		andi.b	#$70,d0
		beq.w	locret_1AC8C
		move.b	#9,$1C(a0)
		move.w	#$E0,d0
                jsr     (Play_Sfx)
		addq.l	#4,sp
		move.b	#1,$39(a0)
		move.w	#0,$3A(a0)
		cmpi.b	#$C,$28(a0)
		bcs.s	loc_1AC84
		move.b	#2,($FFFFD11C).w
loc_1AC84:
locret_1AC8C:
		rts	
; ---------------------------------------------------------------------------

loc_1AC8E:
		move.b	($FFFFF602).w,d0
		btst	#1,d0
		bne.w	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	Dash_Speeds(pc,d0.w),$14(a0)
		move.w	$14(a0),d0
		subi.w	#$800,d0
		add.w	d0,d0
		andi.w	#$1F00,d0
		neg.w	d0
		addi.w	#$2000,d0
		move.w	d0,($FFFFEED0).w
		btst	#0,$22(a0)
		beq.s	loc_1ACF4
		neg.w	$14(a0)

loc_1ACF4:
		bset	#2,$22(a0)
		move.b	#0,($FFFFD11C).w
		move.w	#$BC,d0
		jsr     (Play_Sfx)
		bra.s	loc_1AD78
; ===========================================================================
Dash_Speeds:	dc.w  $800		; 0
		dc.w  $880		; 1
		dc.w  $900		; 2
		dc.w  $980		; 3
		dc.w  $A00		; 4
		dc.w  $A80		; 5
		dc.w  $B00		; 6
		dc.w  $B80		; 7
		dc.w  $C00		; 8
; ===========================================================================

loc_1AD30:				; If still charging the dash...
		tst.w	$3A(a0)
		beq.s	loc_1AD48
		move.w	$3A(a0),d0
		lsr.w	#5,d0
		sub.w	d0,$3A(a0)
		bcc.s	loc_1AD48
		move.w	#0,$3A(a0)

loc_1AD48:
		move.b	($FFFFF603).w,d0
		andi.b	#$70,d0	; 'p'
		beq.w	loc_1AD78
		move.w	#$900,$1C(a0)
		move.w	#$E0,d0  ; changed from #$E0
                jsr     (Play_Sfx)
		addi.w	#$200,$3A(a0)
		cmpi.w	#$800,$3A(a0)
		bcs.s	loc_1AD78
		move.w	#$800,$3A(a0)

loc_1AD78:
		addq.l	#4,sp
		cmpi.w	#$60,($FFFFEED8).w
		beq.s	loc_1AD8C
		bcc.s	loc_1AD88
		addq.w	#4,($FFFFEED8).w

loc_1AD88:
		subq.w	#2,($FFFFEED8).w

loc_1AD8C:
		rts
; End of subroutine Sonic_SpinDash

Fixing an error

when you build it you most likely an error to fix this go to line 25863

        bra     loc_FBF4

See this line delete it!

Thank you for reading this guide and hopefully you'll be less annoyed

warning the spindash sound will be high pitched but you can just turn down the volume

Update!

I found away to port the beta spindash to sonic 2 i'll make a new guide soon!