+5
drumberboy1122
Kiki
Karate Cat
FRKPO
German15
9 posters
help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
German15- Mensagens : 51
Data de inscrição : 2011-05-29
Localização : Argentina
Current Project : Sonic the Hedgehog MegaRetro
- Post n°1
help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
hello friends. Does anyone know how to add the three shields in sonic 1?. and I try but it did not. thanks
FRKPO- Mensagens : 46
Data de inscrição : 2011-05-29
- Post n°2
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
EHBJDFSGBTH
Last edited by FRKPO on Fri Jul 29, 2011 12:24 am; edited 1 time in total
Karate Cat- Mensagens : 83
Data de inscrição : 2011-04-22
- Post n°3
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
There is a Sonic 1 Megamix disassembly, that has some of the sourcecode for the elemental shields. Theres also a tutorial on how to make rings come out of badniks instead of flickies.
FRKPO- Mensagens : 46
Data de inscrição : 2011-05-29
- Post n°4
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
EFWHPCOQIUWERCF
Last edited by FRKPO on Fri Jul 29, 2011 12:23 am; edited 1 time in total
Kiki- Mensagens : 21
Data de inscrição : 2011-05-21
- Post n°5
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
Adding the Elemental Shields is a pain to do. I can't even get it right.
German15- Mensagens : 51
Data de inscrição : 2011-05-29
Localização : Argentina
Current Project : Sonic the Hedgehog MegaRetro
- Post n°6
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
if someone makes the code please upload it
Karate Cat- Mensagens : 83
Data de inscrição : 2011-04-22
- Post n°7
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
Well, there's a quide to add the magnetic shield, you have to modify the original shield, it's simply replacing the normal shield. Here's the guide anyways.
Step 1:
Looking for Obj25_Animate and after that line insert the following:
Step 2:
Looking for...
and after it is inserted...
That's it! Compile and verify. Original guide by Tails-Doll, translated to english by me, Karate Cat.
Step 1:
Looking for Obj25_Animate and after that line insert the following:
- Code:
jsr Magnetize_Rings
Step 2:
Looking for...
- Code:
; End of function CollectRing
and after it is inserted...
- Code:
Magnetize_Rings:
tst.b ($FFFFF7AA).w
beq.s Magnet_Normal
bne.s Magnet_Start
Magnet_Normal:
cmpi.b #1,($FFFFFE2C).w ; check Sonic has The shield
bne Magnet_Ignore ; If yes goto magnetize_rings code
beq Magnet_Start
Magnet_Start:
move.w ($FFFFD008).w,d0 ; load sonic's X possision
sub.w $8(a0),d0 ; minus Ring's X possision
move.w ($FFFFD00C).w,d1 ; load sonic's Y possision
sub.w $C(a0),d1 ; minus Ring's Y possision
btst #0,$2F(a0) ; has Ring been magnetized?
bne.s MR_CheckRemove ; if so, branch
bra.w MR_CheckMagnet ; check ring's distance
Magnet_Ignore:
rts ; return
; ===========================================================================
; Check Ring For Magnetize
; ===========================================================================
MR_CheckMagnet:
cmp.w #$60,d0 ; is ring out of range by 60 pixels on the left?
bge.w MR_Resume_Rings ; if so, resume Ring's normal function
cmp.w #-$60,d0 ; is ring out of range by 60 pixels on the Right?
ble.w MR_Resume_Rings ; if so, resume Ring's normal function
cmp.w #$60,d1 ; is ring out of range by 60 pixels Below?
bge.w MR_Resume_Rings ; if so, resume Ring's normal function
cmp.w #-$60,d1 ; is ring out of range by 60 pixels Above?
ble.w MR_Resume_Rings ; if so, resume Ring's normal function
bset #0,$2F(a0) ; set Ring as magnetized
bclr #1,$2F(a0)
bra.s SetRing_MoveLR
; ===========================================================================
; Check Ring For Demagnetize
; ===========================================================================
MR_CheckRemove:
cmp.w #$C0,d0 ; is ring out of range by C0 pixels on the left?
bge.w MR_DemagetizeRing ; if so, spawn Ring
cmp.w #-$C0,d0 ; is ring out of range by C0 pixels on the Right?
ble.w MR_DemagetizeRing ; if so, spawn Ring
cmp.w #$C0,d1 ; is ring out of range by C0 pixels Below?
bge.w MR_DemagetizeRing ; if so, spawn Ring
cmp.w #-$C0,d1 ; is ring out of range by C0 pixels Above?
ble.w MR_DemagetizeRing ; if so, spawn Ring
bclr #1,$2F(a0)
bra.s SetRing_MoveLR
; ===========================================================================
; Set Ring Delete
; ===========================================================================
MR_DemagetizeRing:
jsr (DeleteObject).l ; delete Ring
bset #1,$2F(a0)
; ===========================================================================
; Magnetize Ring Left/Right
; ===========================================================================
SetRing_MoveLR:
move.w #$0080,d3 ; set ring speed increase
tst.w d0 ; is the ring to the left of sonic?
blt.s MoveRing_Right1 ; if so, branch
; ===========================================================================
; Left
MoveRing_Left1:
tst.w $10(a0) ; is ring moving left?
bgt.s MoveRing_Left2 ; if so, branch
move.w #$00A0,d3 ; if not, set new speed increase
MoveRing_Left2:
add.w d3,$10(a0) ; move ring left
bra.s SetRing_MoveUD ; start Up and Down functions
; ===========================================================================
; Right
MoveRing_Right1:
tst.w $10(a0) ; is ring moving right?
blt.s MoveRing_Right2 ; if so, branch
move.w #$00A0,d3 ; if not, set new speed increase
MoveRing_Right2:
sub.w d3,$10(a0) ; move ring Right
; ===========================================================================
; Magnetize Ring Up/Down
; ===========================================================================
SetRing_MoveUD:
move.w #$0080,d3 ; set ring speed increase
tst.w d1 ; is the ring above sonic?
blt.s MoveRing_Up1 ; if so, branch
; ===========================================================================
; Down
MoveRing_Down1:
tst.w $12(a0) ; is ring moving down?
bgt.s MoveRing_Down2 ; if so, branch
move.w #$00A0,d3 ; if not, set new speed increase
MoveRing_Down2:
add.w d3,$12(a0) ; move ring down
jmp SpeedToPos ; start Possision Update
; ===========================================================================
; Up
MoveRing_Up1:
tst.w $12(a0) ; is ring moving Up?
blt.s MoveRing_Up2 ; if so, branch
move.w #$00A0,d3 ; if not, set new speed increase
MoveRing_Up2:
sub.w d3,$12(a0) ; move ring Up
jmp SpeedToPos ; start Possision Update
; ===========================================================================
; Finish Ring
; ===========================================================================
MR_Resume_Rings:
btst #0,$2F(a0) ; has Ring been magnetized?
beq.s MR_FinishRing ; if not, branch
move.b #-1,($FFFFFEC6).w ; set ring frame rate
bset #1,$2F(a0)
bra.w Obj37_Bounce ; set ring to bounce
MR_FinishRing:
bset #1,$2F(a0)
rts
That's it! Compile and verify. Original guide by Tails-Doll, translated to english by me, Karate Cat.
German15- Mensagens : 51
Data de inscrição : 2011-05-29
Localização : Argentina
Current Project : Sonic the Hedgehog MegaRetro
- Post n°8
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
THANKS!
Karate Cat- Mensagens : 83
Data de inscrição : 2011-04-22
- Post n°9
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
YOU...ARE...WELCOME!
FRKPO- Mensagens : 46
Data de inscrição : 2011-05-29
- Post n°10
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
HTRSFG
drumberboy1122- Mensagens : 20
Data de inscrição : 2012-05-20
- Post n°11
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
Karate Cat wrote:Well, there's a quide to add the magnetic shield, you have to modify the original shield, it's simply replacing the normal shield. Here's the guide anyways.
Step 1:
Looking for Obj25_Animate and after that line insert the following:
- Code:
jsr Magnetize_Rings
Step 2:
Looking for...
- Code:
; End of function CollectRing
When I apply this I get two errors for bsr.w MvSonicOnPtfm
and after it is inserted...
- Code:
Magnetize_Rings:
tst.b ($FFFFF7AA).w
beq.s Magnet_Normal
bne.s Magnet_Start
Magnet_Normal:
cmpi.b #1,($FFFFFE2C).w ; check Sonic has The shield
bne Magnet_Ignore ; If yes goto magnetize_rings code
beq Magnet_Start
Magnet_Start:
move.w ($FFFFD008).w,d0 ; load sonic's X possision
sub.w $8(a0),d0 ; minus Ring's X possision
move.w ($FFFFD00C).w,d1 ; load sonic's Y possision
sub.w $C(a0),d1 ; minus Ring's Y possision
btst #0,$2F(a0) ; has Ring been magnetized?
bne.s MR_CheckRemove ; if so, branch
bra.w MR_CheckMagnet ; check ring's distance
Magnet_Ignore:
rts ; return
; ===========================================================================
; Check Ring For Magnetize
; ===========================================================================
MR_CheckMagnet:
cmp.w #$60,d0 ; is ring out of range by 60 pixels on the left?
bge.w MR_Resume_Rings ; if so, resume Ring's normal function
cmp.w #-$60,d0 ; is ring out of range by 60 pixels on the Right?
ble.w MR_Resume_Rings ; if so, resume Ring's normal function
cmp.w #$60,d1 ; is ring out of range by 60 pixels Below?
bge.w MR_Resume_Rings ; if so, resume Ring's normal function
cmp.w #-$60,d1 ; is ring out of range by 60 pixels Above?
ble.w MR_Resume_Rings ; if so, resume Ring's normal function
bset #0,$2F(a0) ; set Ring as magnetized
bclr #1,$2F(a0)
bra.s SetRing_MoveLR
; ===========================================================================
; Check Ring For Demagnetize
; ===========================================================================
MR_CheckRemove:
cmp.w #$C0,d0 ; is ring out of range by C0 pixels on the left?
bge.w MR_DemagetizeRing ; if so, spawn Ring
cmp.w #-$C0,d0 ; is ring out of range by C0 pixels on the Right?
ble.w MR_DemagetizeRing ; if so, spawn Ring
cmp.w #$C0,d1 ; is ring out of range by C0 pixels Below?
bge.w MR_DemagetizeRing ; if so, spawn Ring
cmp.w #-$C0,d1 ; is ring out of range by C0 pixels Above?
ble.w MR_DemagetizeRing ; if so, spawn Ring
bclr #1,$2F(a0)
bra.s SetRing_MoveLR
; ===========================================================================
; Set Ring Delete
; ===========================================================================
MR_DemagetizeRing:
jsr (DeleteObject).l ; delete Ring
bset #1,$2F(a0)
; ===========================================================================
; Magnetize Ring Left/Right
; ===========================================================================
SetRing_MoveLR:
move.w #$0080,d3 ; set ring speed increase
tst.w d0 ; is the ring to the left of sonic?
blt.s MoveRing_Right1 ; if so, branch
; ===========================================================================
; Left
MoveRing_Left1:
tst.w $10(a0) ; is ring moving left?
bgt.s MoveRing_Left2 ; if so, branch
move.w #$00A0,d3 ; if not, set new speed increase
MoveRing_Left2:
add.w d3,$10(a0) ; move ring left
bra.s SetRing_MoveUD ; start Up and Down functions
; ===========================================================================
; Right
MoveRing_Right1:
tst.w $10(a0) ; is ring moving right?
blt.s MoveRing_Right2 ; if so, branch
move.w #$00A0,d3 ; if not, set new speed increase
MoveRing_Right2:
sub.w d3,$10(a0) ; move ring Right
; ===========================================================================
; Magnetize Ring Up/Down
; ===========================================================================
SetRing_MoveUD:
move.w #$0080,d3 ; set ring speed increase
tst.w d1 ; is the ring above sonic?
blt.s MoveRing_Up1 ; if so, branch
; ===========================================================================
; Down
MoveRing_Down1:
tst.w $12(a0) ; is ring moving down?
bgt.s MoveRing_Down2 ; if so, branch
move.w #$00A0,d3 ; if not, set new speed increase
MoveRing_Down2:
add.w d3,$12(a0) ; move ring down
jmp SpeedToPos ; start Possision Update
; ===========================================================================
; Up
MoveRing_Up1:
tst.w $12(a0) ; is ring moving Up?
blt.s MoveRing_Up2 ; if so, branch
move.w #$00A0,d3 ; if not, set new speed increase
MoveRing_Up2:
sub.w d3,$12(a0) ; move ring Up
jmp SpeedToPos ; start Possision Update
; ===========================================================================
; Finish Ring
; ===========================================================================
MR_Resume_Rings:
btst #0,$2F(a0) ; has Ring been magnetized?
beq.s MR_FinishRing ; if not, branch
move.b #-1,($FFFFFEC6).w ; set ring frame rate
bset #1,$2F(a0)
bra.w Obj37_Bounce ; set ring to bounce
MR_FinishRing:
bset #1,$2F(a0)
rts
That's it! Compile and verify. Original guide by Tails-Doll, translated to english by me, Karate Cat.
Squidward Tentacles- Mensagens : 1320
Data de inscrição : 2013-09-17
Localização : Undisclosed.
Current Project : All is within.
- Post n°12
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
What was the point of editing your post? :sFRKPO wrote:EFWHPCOQIUWERCF
Squidward Tentacles- Mensagens : 1320
Data de inscrição : 2013-09-17
Localização : Undisclosed.
Current Project : All is within.
- Post n°13
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
You don'tGerman15 wrote:hello friends. Does anyone know how to add the three shields in sonic 1?. and I try but it did not. thanks
Green Snake- Mensagens : 2185
Data de inscrição : 2012-04-07
Localização : I do not even know
Current Project : nope
- Post n°14
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
I know! And I'm not sharing it!
Squidward Tentacles- Mensagens : 1320
Data de inscrição : 2013-09-17
Localização : Undisclosed.
Current Project : All is within.
- Post n°15
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
Green Snake wrote:I know! And I'm not sharing it!
hacker___- Mensagens : 1974
Data de inscrição : 2013-05-06
Localização : 41.383863, 108.866009
Current Project : Breathing nitrogen
- Post n°16
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
Port the shields from S3K it worked for me
Squidward Tentacles- Mensagens : 1320
Data de inscrição : 2013-09-17
Localização : Undisclosed.
Current Project : All is within.
- Post n°17
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
Yes the post above is the answer
JoshDP- Mensagens : 1682
Data de inscrição : 2014-10-05
- Post n°18
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
Just an annual year bump!
Sponsored content
- Post n°19
Re: help. How to add the three shield (bubble shield, fire shield and magnetic shield) in sonic 1?
» ASM to Sega Genesis Platform vs Sonic Stuff Research Group vs Sonic Retro vs Sonic Stadium vs Sonic Games Dimension vs Sonic the Hedgehog HD team
» Sonic and Tails Coop in Sonic 1 (Sonic 2 style)
» Sonic 1 Game Gear Disassembly Project originally started on May 13th, 2017 by Ravenfreak. Disclaimer: This is a work in progress split disassembly. Sonic is owned by SEGA. If you wish to help with this project send me a private message on Sonic Retro, SSR
» Homing Attack in Sonic 1 - Step 6 - Bounce Sonic upwards
» Sonic Open Source Project vs Sonic Green Snake
» Sonic and Tails Coop in Sonic 1 (Sonic 2 style)
» Sonic 1 Game Gear Disassembly Project originally started on May 13th, 2017 by Ravenfreak. Disclaimer: This is a work in progress split disassembly. Sonic is owned by SEGA. If you wish to help with this project send me a private message on Sonic Retro, SSR
» Homing Attack in Sonic 1 - Step 6 - Bounce Sonic upwards
» Sonic Open Source Project vs Sonic Green Snake