Difference between revisions of "Add Spin Dash to Sonic 1/Part 1"
From Sonic Retro
(→HELP!!!!!: new section) |
m |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
SN 68k version 2.53 | SN 68k version 2.53 | ||
− | F:\SRC\SONIC4\SONED2\S1S\ | + | 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\ | + | 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\ | + | 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\ | + | 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. | Assembly completed. | ||
− | + | 44 error(s) from 53468 lines in 0.75 seconds | |
</pre> --[[User:MarioMario456|MarioMario456]] ([[User talk:MarioMario456|talk]]) 14:47, 13 October 2017 (CDT) | </pre> --[[User:MarioMario456|MarioMario456]] ([[User talk:MarioMario456|talk]]) 14:47, 13 October 2017 (CDT) | ||
+ | |||
+ | |||
+ | :You could try defining the undefined symbols | ||
+ | [[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) | ||
+ | |||
+ | ==The fix== | ||
+ | |||
+ | Try this: | ||
+ | <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) | ||
+ | move.w $14(a0),d0 ; get inertia | ||
+ | subi.w #$800,d0 ; subtract $800 | ||
+ | add.w d0,d0 ; double it | ||
+ | andi.w #$1F00,d0 ; mask it against $1F00 | ||
+ | neg.w d0 ; negate it | ||
+ | addi.w #$2000,d0 ; add $2000 | ||
+ | move.w d0,($FFFFC904).w ; move to $C904 | ||
+ | btst #0,$22(a0) ; is sonic facing right? | ||
+ | beq.s loc_1ACF4 ; if not, branch | ||
+ | neg.w $14(a0) ; negate inertia | ||
+ | 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> | ||
+ | |||
+ | ==The bug explained== | ||
+ | The problem here is that there's some missing code after: | ||
+ | <pre> | ||
+ | move.w Dash_Speeds(pc,d0.w),obInertia(a0) | ||
+ | </pre> | ||
+ | When the code is not there, that's what makes Sonic go right when he's supposed to be going left, but | ||
+ | when the code ''is'' there, then ''boom!'' the code is fixed! | ||
+ | |||
+ | There you have it, the fix to the "Sonic spindashing right when he's supposed to be going left" bug! --[[User:Pmowery|pmowery]] ([[User talk:Pmowery|talk]]) 16:56, 6 August 2020 (EDT) |
Latest revision as of 16:56, 6 August 2020
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:
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)
The fix
Try this:
; 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) move.w $14(a0),d0 ; get inertia subi.w #$800,d0 ; subtract $800 add.w d0,d0 ; double it andi.w #$1F00,d0 ; mask it against $1F00 neg.w d0 ; negate it addi.w #$2000,d0 ; add $2000 move.w d0,($FFFFC904).w ; move to $C904 btst #0,$22(a0) ; is sonic facing right? beq.s loc_1ACF4 ; if not, branch neg.w $14(a0) ; negate inertia 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
The bug explained
The problem here is that there's some missing code after:
move.w Dash_Speeds(pc,d0.w),obInertia(a0)
When the code is not there, that's what makes Sonic go right when he's supposed to be going left, but when the code is there, then boom! the code is fixed!
There you have it, the fix to the "Sonic spindashing right when he's supposed to be going left" bug! --pmowery (talk) 16:56, 6 August 2020 (EDT)