Actions

SCHG How-to Talk

Difference between revisions of "Add Spin Dash to Sonic 1/Part 1"

From Sonic Retro

 
Line 55: Line 55:
  
  
You could try defining the undefined symbols
+
:You could try defining the undefined symbols
 
[[User:Lilggamegenuis|Lilggamegenuis]] ([[User talk:Lilggamegenuis|talk]]) 16:24, 20 October 2017 (CDT)
 
[[User:Lilggamegenuis|Lilggamegenuis]] ([[User talk:Lilggamegenuis|talk]]) 16:24, 20 October 2017 (CDT)
 +
 +
::Fixed,I was using the Sonic 2 GitHub disassembly and Sonic 1 GitHub disassembly. I'm now using the Sonic 2 Aurochs disassembly and Sonic 1 GitHub disassembly. Homewer, I have these problems and bugs:
 +
*Tile Molester uses the default palette, making imposibble to add the Spindashing sprites.
 +
*If I do a Spindash to the left, I'll go to the right instead.
 +
 +
Animated GIF of the problem:
 +
 +
[[File:S1SDB.GIF]]
 +
 +
My code:
 +
 +
<pre>
 +
; Start of subroutine Sonic_SpinDash
 +
 +
Sonic_SpinDash:
 +
tst.b $39(a0)
 +
bne.s loc_1AC8E
 +
cmpi.b #id_Duck,obAnim(a0)
 +
bne.s locret_1AC8C
 +
move.b ($FFFFF603).w,d0
 +
andi.b #$70,d0
 +
beq.w locret_1AC8C
 +
move.b #id_Roll,obAnim(a0)
 +
move.w #$BE,d0
 +
jsr (PlaySound_Special).l
 +
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:
 +
bsr.w Sonic_LevelBound
 +
bsr.w Sonic_AnglePos
 +
 +
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 #id_Roll,obAnim(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),obInertia(a0)
 +
 +
loc_1ACF4:
 +
bset #2,$22(a0)
 +
move.b #0,($FFFFD11C).w
 +
move.w #$BC,d0
 +
jsr (PlaySound_Special).l
 +
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,obAnim(a0)
 +
move.w #$BE,d0 ; 'à'
 +
jsr (PlaySound_Special).l
 +
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:
 +
bsr.w Sonic_LevelBound
 +
bsr.w Sonic_AnglePos
 +
move.w #$60,(v_lookshift).w
 +
rts
 +
; End of subroutine Sonic_SpinDash
 +
</pre>
 +
 +
If you have a fix, give it to me. --[[User:MarioMario456|MarioMario456]] ([[User talk:MarioMario456|talk]]) 16:03, 4 November 2017 (CDT)

Latest revision as of 15:03, 4 November 2017

HELP!!!!!

I can't get S1Built.bin. Here's my Errors.txt:

SN 68k version 2.53

F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(9) : Error : Symbol 'spindash_flag' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(11) : Error : Symbol 'aniidsonani_duck' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(13) : Error : Symbol 'ctrl_1_press_logical' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(14) : Error : Symbol 'button_a_mask' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(14) : Error : Symbol 'button_c_mask' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(14) : Error : Symbol 'button_b_mask' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(16) : Error : Symbol 'aniidsonani_spindash' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(17) : Error : Symbol 'sndid_spindashrev' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(20) : Error : Symbol 'spindash_flag' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(21) : Error : Symbol 'spindash_counter' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(22) : Error : Symbol 'air_left' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(23) : Error : Symbol 'sonic_dust' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(25) : Error : Symbol 'anglepos' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(40) : Error : Symbol 'ctrl_1_held_logical' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(41) : Error : Symbol 'button_down' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(47) : Error : Symbol 'aniidsonani_roll' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(49) : Error : Symbol 'spindash_flag' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(51) : Error : Symbol 'spindash_counter' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(53) : Error : Symbol 'inertia' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(54) : Error : Symbol 'super_sonic_flag' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(56) : Error : Symbol 'inertia' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(58) : Error : Symbol 'inertia' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(64) : Error : Symbol 'horiz_scroll_delay_val' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(67) : Error : Symbol 'inertia' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(70) : Error : Symbol 'sonic_dust' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(71) : Error : Symbol 'sndid_spindashrelease' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(100) : Error : Symbol 'spindash_counter' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(102) : Error : Symbol 'spindash_counter' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(104) : Error : Symbol 'spindash_counter' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(106) : Error : Symbol 'spindash_counter' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(108) : Error : Symbol 'ctrl_1_press_logical' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(109) : Error : Symbol 'button_a_mask' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(109) : Error : Symbol 'button_c_mask' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(109) : Error : Symbol 'button_b_mask' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(111) : Error : Symbol 'aniidsonani_spindash' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(112) : Error : Symbol 'sndid_spindashrev' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(114) : Error : Symbol 'spindash_counter' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(115) : Error : Symbol 'spindash_counter' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(117) : Error : Symbol 'spindash_counter' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(122) : Error : Symbol 'camera_y_pos_bias' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(125) : Error : Symbol 'camera_y_pos_bias' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(126) : Error : Symbol 'camera_y_pos_bias' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SONIC SPINDASH.ASM(130) : Error : Symbol 'anglepos' not defined
F:\SRC\SONIC4\SONED2\S1S\_INCOBJ\SUB REACTTOITEM.ASM(170) : Error : Symbol 'id_spindash' not defined

Assembly completed.
44 error(s) from 53468 lines in 0.75 seconds
--MarioMario456 (talk) 14:47, 13 October 2017 (CDT)


You could try defining the undefined symbols

Lilggamegenuis (talk) 16:24, 20 October 2017 (CDT)

Fixed,I was using the Sonic 2 GitHub disassembly and Sonic 1 GitHub disassembly. I'm now using the Sonic 2 Aurochs disassembly and Sonic 1 GitHub disassembly. Homewer, I have these problems and bugs:
  • Tile Molester uses the default palette, making imposibble to add the Spindashing sprites.
  • If I do a Spindash to the left, I'll go to the right instead.

Animated GIF of the problem:

S1SDB.GIF

My code:

; Start of subroutine Sonic_SpinDash

Sonic_SpinDash:
		tst.b	$39(a0)
		bne.s	loc_1AC8E
		cmpi.b	#id_Duck,obAnim(a0)
		bne.s	locret_1AC8C
		move.b	($FFFFF603).w,d0
		andi.b	#$70,d0
		beq.w	locret_1AC8C
		move.b	#id_Roll,obAnim(a0)
		move.w	#$BE,d0
		jsr	(PlaySound_Special).l
		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:
		bsr.w	Sonic_LevelBound
		bsr.w	Sonic_AnglePos

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	#id_Roll,obAnim(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),obInertia(a0)

loc_1ACF4:
		bset	#2,$22(a0)
		move.b	#0,($FFFFD11C).w
		move.w	#$BC,d0
		jsr	(PlaySound_Special).l
		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,obAnim(a0)
		move.w	#$BE,d0	; 'à'
		jsr	(PlaySound_Special).l
		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:
		bsr.w	Sonic_LevelBound
		bsr.w	Sonic_AnglePos
		move.w #$60,(v_lookshift).w
		rts
; End of subroutine Sonic_SpinDash

If you have a fix, give it to me. --MarioMario456 (talk) 16:03, 4 November 2017 (CDT)