Did you know that there was i guide for restoring the S monitor? Well, This is sort of like it. Instead of inserting an entire new monitor, without level editing, you can restore it, but you have to replace an old monitor.
Ill show you how i did it.
First, I Opened My sonic1.asm and i went to the invincible monitor subroutine (Obj2E_ChkInvinc:)
I Saw this:
and i also looked at the Sonic Speed Shoes Monitor Subroutine:Obj2E_ChkShoes:
i Saw that in the Speed shoes Subroutine, the top speed. What i did was copy it, and paste it under this line in Obj2E_ChkInvinc:
That way, when i break the monitor, it will also make sonic speed up to the Shoes Speed. But, THe S Monitor requires Higher Speed. Super Sonic Speeds
So, i edited this line:
to the Super Sonic Speed from Sonic 2 (around 900)
And as Expected, I Built, and it worked. However, I Did not like how the acceleration/deceleration (how fast you start out) Worked, So, I Went to Sonic's main subroutine, Obj01_Main:
The Acceleration/Deceleration stayed the same when i open the Invincible monitor. SO, I Copied/Pasted These:
into the invincible monitor subroutine, Obj2E_ChkInvinc
I edited the Acceleration/Deceleration to 1E (Acceleration) and 30 (Deceleration)
I saved my Sonic1.asm and compiled it, having perfect results.
Enjoy Your S Monitor!
Don't ask me how to change the Monitor image to the S monitor image, because i don't yet.
When i Figure it out, Ill be sure to share it!
EDIT: Ive Decided to make this a copy/paste thing so here.
Go to Obj2E_ChkInvinc and replace the entire thing with this:
Man, that was boring to do. That's why i started doing it to where you learn something, but if you dont want to, use the code above.
Ill show you how i did it.
First, I Opened My sonic1.asm and i went to the invincible monitor subroutine (Obj2E_ChkInvinc:)
I Saw this:
- Code:
Obj2E_ChkInvinc:
cmpi.b #5,d0 ; does monitor contain invincibility?
bne.s Obj2E_ChkRings
move.b #1,($FFFFFE2D).w ; make Sonic invincible
move.w #$4B0,($FFFFD032).w ; time limit for the power-up
move.b #$38,($FFFFD200).w ; load stars object ($3801)
move.b #1,($FFFFD21C).w
move.b #$38,($FFFFD240).w ; load stars object ($3802)
move.b #2,($FFFFD25C).w
move.b #$38,($FFFFD280).w ; load stars object ($3803)
move.b #3,($FFFFD29C).w
move.b #$38,($FFFFD2C0).w ; load stars object ($3804)
move.b #4,($FFFFD2DC).w
tst.b ($FFFFF7AA).w ; is boss mode on?
bne.s Obj2E_NoMusic ; if yes, branch
move.w #$87,d0
jmp (PlaySound).l ; play invincibility music
and i also looked at the Sonic Speed Shoes Monitor Subroutine:Obj2E_ChkShoes:
- Code:
Obj2E_ChkShoes:
cmpi.b #3,d0 ; does monitor contain speed shoes?
bne.s Obj2E_ChkShield
move.b #1,($FFFFFE2E).w ; speed up the BG music
move.w #$4B0,($FFFFD034).w ; time limit for the power-up
move.w #$C00,($FFFFF760).w ; change Sonic's top speed
move.w #$18,($FFFFF762).w
move.w #$80,($FFFFF764).w
move.w #$E2,d0
jmp (PlaySound).l ; Speed up the music
i Saw that in the Speed shoes Subroutine, the top speed. What i did was copy it, and paste it under this line in Obj2E_ChkInvinc:
- Code:
move.b #4,($FFFFD2DC).w
That way, when i break the monitor, it will also make sonic speed up to the Shoes Speed. But, THe S Monitor requires Higher Speed. Super Sonic Speeds
So, i edited this line:
- Code:
move.w #$C00,($FFFFF760).w ; change Sonic's top speed
to the Super Sonic Speed from Sonic 2 (around 900)
And as Expected, I Built, and it worked. However, I Did not like how the acceleration/deceleration (how fast you start out) Worked, So, I Went to Sonic's main subroutine, Obj01_Main:
- Code:
Obj01_Main: ; XREF: Obj01_Index
addq.b #2,$24(a0)
move.b #$13,$16(a0)
move.b #9,$17(a0)
move.l #Map_Sonic,4(a0)
move.w #$780,2(a0)
move.b #2,$18(a0)
move.b #$18,$19(a0)
move.b #4,1(a0)
move.w #$600,($FFFFF760).w ; Sonic's top speed
move.w #$C,($FFFFF762).w ; Sonic's acceleration
move.w #$80,($FFFFF764).w ; Sonic's deceleration
The Acceleration/Deceleration stayed the same when i open the Invincible monitor. SO, I Copied/Pasted These:
- Code:
move.w #$C,($FFFFF762).w ; Sonic's acceleration
move.w #$80,($FFFFF764).w ; Sonic's deceleration
into the invincible monitor subroutine, Obj2E_ChkInvinc
- Code:
Obj2E_ChkInvinc:
cmpi.b #5,d0 ; does monitor contain invincibility?
bne.s Obj2E_ChkRings
move.b #1,($FFFFFE2D).w ; make Sonic invincible
move.w #$4B0,($FFFFD032).w ; time limit for the power-up
move.b #$38,($FFFFD200).w ; load stars object ($3801)
move.b #1,($FFFFD21C).w
move.b #$38,($FFFFD240).w ; load stars object ($3802)
move.b #2,($FFFFD25C).w
move.b #$38,($FFFFD280).w ; load stars object ($3803)
move.b #3,($FFFFD29C).w
move.b #$38,($FFFFD2C0).w ; load stars object ($3804)
move.b #4,($FFFFD2DC).w
move.w #$930,($FFFFF760).w ; change Sonic's top speed
move.w #$C,($FFFFF762).w ; Sonic's acceleration
move.w #$80,($FFFFF764).w ; Sonic's deceleration
tst.b ($FFFFF7AA).w ; is boss mode on?
bne.s Obj2E_NoMusic ; if yes, branch
move.w #$87,d0
jmp (PlaySound).l ; play invincibility music
I edited the Acceleration/Deceleration to 1E (Acceleration) and 30 (Deceleration)
I saved my Sonic1.asm and compiled it, having perfect results.
Enjoy Your S Monitor!
Don't ask me how to change the Monitor image to the S monitor image, because i don't yet.
When i Figure it out, Ill be sure to share it!
EDIT: Ive Decided to make this a copy/paste thing so here.
Go to Obj2E_ChkInvinc and replace the entire thing with this:
- Code:
Obj2E_ChkInvinc:
cmpi.b #5,d0 ; does monitor contain invincibility?
bne.s Obj2E_ChkRings
move.b #1,($FFFFFE2D).w ; make Sonic invincible
move.w #$4B0,($FFFFD032).w ; time limit for the power-up
move.b #$38,($FFFFD200).w ; load stars object ($3801)
move.b #1,($FFFFD21C).w
move.b #$38,($FFFFD240).w ; load stars object ($3802)
move.b #2,($FFFFD25C).w
move.b #$38,($FFFFD280).w ; load stars object ($3803)
move.b #3,($FFFFD29C).w
move.b #$38,($FFFFD2C0).w ; load stars object ($3804)
move.b #4,($FFFFD2DC).w
move.w #$A00,($FFFFF760).w ; change Sonic's top speed
move.w #$30,($FFFFF762).w ; Sonic's acceleration
move.w #$100,($FFFFF764).w ; Sonic's deceleration
tst.b ($FFFFF7AA).w ; is boss mode on?
bne.s Obj2E_NoMusic ; if yes, branch
move.w #$87,d0
jmp (PlaySound).l ; play invincibility music
Man, that was boring to do. That's why i started doing it to where you learn something, but if you dont want to, use the code above.
Last edited by calebjhuhlu on Tue Jul 19, 2011 7:48 am; edited 1 time in total