Actions

SCHG

Difference between revisions of "Sonic the Hedgehog CD/MMD Tweaking"

From Sonic Retro

m
(Formatting)
Line 2: Line 2:
  
 
==Maximum rings allowed==
 
==Maximum rings allowed==
$AEFA:
+
<asm>$AEFA:
move.w (word_FF1512).l,d1 ; Move number of rings into d1
+
move.w (word_FF1512).l,d1 ; Move number of rings into d1
cmpi.w #$3E8,d1       ; Compare $3E8 (1000) with d1 (number of rings)
+
cmpi.w #$3E8,d1 ; Compare $3E8 (1000) with d1 (number of rings)
bcs.s   loc_20AF10     ; If the number of rings is < 1000, branch
+
bcs.s loc_20AF10 ; If the number of rings is < 1000, branch
move.w #$3E7,d1       ; Move $3E7 (999) into d1
+
move.w #$3E7,d1 ; Move $3E7 (999) into d1
move.w d1,(word_FF1512).l ; Move d1 back to the address where the number of rings is at
+
move.w d1,(word_FF1512).l ; Move d1 back to the address where the number of rings is at</asm>
  
 
==Lowest number of rings required to access the special stage==
 
==Lowest number of rings required to access the special stage==
$D50C:
+
<asm>$D50C:
cmpi.w #$32,(word_FF1512).l ; Compare 50 with the number of rings
+
cmpi.w #$32,(word_FF1512).l ; Compare 50 with the number of rings
bcc.s   loc_20D51C     ; If number of rings >= 50, allow entrance to the special stage.
+
bcc.s loc_20D51C ; If number of rings >= 50, allow entrance to the special stage.
jmp     sub_20788C     ; Otherwise jump here
+
jmp sub_20788C ; Otherwise jump here</asm>
  
 
==Number of rings you get when you break the ring monitor==
 
==Number of rings you get when you break the ring monitor==
$A88E:
+
<asm>$A88E:
addi.w #$A,(word_FF1512).l ; Add 10 to the current number of rings
+
addi.w #$A,(word_FF1512).l ; Add 10 to the current number of rings</asm>
  
 
==Invincibility duration time==
 
==Invincibility duration time==
$A8F8:
+
<asm>$A8F8:
        move.b #1,(byte_FF151F).l ; Enable invicibility
+
move.b #1,(byte_FF151F).l ; Enable invicibility
        move.w #$4b0,($ffffd032).w ; Set the invincibility duration time to $4B0
+
move.w #$4b0,($ffffd032).w ; Set the invincibility duration time to $4B0</asm>
  
 
==Super Sneakers duration time==
 
==Super Sneakers duration time==
$A95A:
+
<asm>$A95A:
        move.b #1,(byte_FF1520).l ; Enable super sneakers
+
move.b #1,(byte_FF1520).l ; Enable super sneakers
        move.w #$4B0,($FFFFD034).w ; Set the super sneakers duration time to $4B0
+
move.w #$4B0,($FFFFD034).w ; Set the super sneakers duration time to $4B0</asm>
  
 
==Maximum velocity and accelleration==
 
==Maximum velocity and accelleration==
$4082:
+
<asm>$4082:
        move.w #$600,($FFFFF760).w ; Maximum velocity
+
move.w #$600,($FFFFF760).w ; Maximum velocity
        move.w #$C,($FFFFF762).w ; Maximum accelleration
+
move.w #$C,($FFFFF762).w ; Maximum accelleration</asm>
  
 
==Maximum velocity and accelleration (with Super sneakers)==
 
==Maximum velocity and accelleration (with Super sneakers)==
$A968:
+
<asm>$A968:
        move.w #$C00,($FFFFF760).w ; Set maximum velocity to $C00
+
move.w #$C00,($FFFFF760).w ; Set maximum velocity to $C00
        move.w #$18,($FFFFF762).w ; Set maximum accelleration to $18
+
move.w #$18,($FFFFF762).w ; Set maximum accelleration to $18</asm>
  
 
==Number of rings you get when you get a ring==
 
==Number of rings you get when you get a ring==
$9F1A:
+
<asm>$9F1A:
        addq.w #1,(word_FF1512).l ; Add 1 to number of rings
+
addq.w #1,(word_FF1512).l ; Add 1 to number of rings</asm>
 
 
  
  
 
{{SCHGuides}}
 
{{SCHGuides}}
 
[[Category:Sonic Community Hacking Guide]]
 
[[Category:Sonic Community Hacking Guide]]

Revision as of 05:30, 31 August 2008

Here are some locations in an European Sonic CD level MMD which contain tweakable code (in 68k assembly).

Maximum rings allowed

<asm>$AEFA: move.w (word_FF1512).l,d1 ; Move number of rings into d1 cmpi.w #$3E8,d1 ; Compare $3E8 (1000) with d1 (number of rings) bcs.s loc_20AF10 ; If the number of rings is < 1000, branch move.w #$3E7,d1 ; Move $3E7 (999) into d1 move.w d1,(word_FF1512).l ; Move d1 back to the address where the number of rings is at</asm>

Lowest number of rings required to access the special stage

<asm>$D50C: cmpi.w #$32,(word_FF1512).l ; Compare 50 with the number of rings bcc.s loc_20D51C ; If number of rings >= 50, allow entrance to the special stage. jmp sub_20788C ; Otherwise jump here</asm>

Number of rings you get when you break the ring monitor

<asm>$A88E: addi.w #$A,(word_FF1512).l ; Add 10 to the current number of rings</asm>

Invincibility duration time

<asm>$A8F8: move.b #1,(byte_FF151F).l ; Enable invicibility move.w #$4b0,($ffffd032).w ; Set the invincibility duration time to $4B0</asm>

Super Sneakers duration time

<asm>$A95A: move.b #1,(byte_FF1520).l ; Enable super sneakers move.w #$4B0,($FFFFD034).w ; Set the super sneakers duration time to $4B0</asm>

Maximum velocity and accelleration

<asm>$4082: move.w #$600,($FFFFF760).w ; Maximum velocity move.w #$C,($FFFFF762).w ; Maximum accelleration</asm>

Maximum velocity and accelleration (with Super sneakers)

<asm>$A968: move.w #$C00,($FFFFF760).w ; Set maximum velocity to $C00 move.w #$18,($FFFFF762).w ; Set maximum accelleration to $18</asm>

Number of rings you get when you get a ring

<asm>$9F1A: addq.w #1,(word_FF1512).l ; Add 1 to number of rings</asm>


Sonic Community Hacking Guide
General
SonED2 Manual | Subroutine Equivalency List
Game-Specific
Sonic the Hedgehog (16-bit) | Sonic the Hedgehog (8-bit) | Sonic CD (prototype 510) | Sonic CD | Sonic CD (PC) | Sonic CD (2011) | Sonic 2 (Simon Wai prototype) | Sonic 2 (16-bit) | Sonic 2 (Master System) | Sonic 3 | Sonic 3 & Knuckles | Chaotix | Sonic Jam | Sonic Jam 6 | Sonic Adventure | Sonic Adventure DX: Director's Cut | Sonic Adventure DX: PC | Sonic Adventure (2010) | Sonic Adventure 2 | Sonic Adventure 2: Battle | Sonic Adventure 2 (PC) | Sonic Heroes | Sonic Riders | Sonic the Hedgehog (2006) | Sonic & Sega All-Stars Racing | Sonic Unleashed (Xbox 360/PS3) | Sonic Colours | Sonic Generations | Sonic Forces
Technical information
Sonic Eraser | Sonic 2 (Nick Arcade prototype) | Sonic CD (prototype; 1992-12-04) | Dr. Robotnik's Mean Bean Machine | Sonic Triple Trouble | Tails Adventures | Sonic Crackers | Sonic 3D: Flickies' Island | Sonic & Knuckles Collection | Sonic R | Sonic Shuffle | Sonic Advance | Sonic Advance 3 | Sonic Battle | Shadow the Hedgehog | Sonic Rush | Sonic Classic Collection | Sonic Free Riders | Sonic Lost World
Legacy Guides
The Nemesis Hacking Guides The Esrael Hacking Guides
ROM: Sonic 1 | Sonic 2 | Sonic 2 Beta | Sonic 3

Savestate: Sonic 1 | Sonic 2 Beta/Final | Sonic 3

Sonic 1 (English / Portuguese) | Sonic 2 Beta (English / Portuguese) | Sonic 2 and Knuckles (English / Portuguese)
Move to Sega Retro
Number Systems (or scrap) | Assembly Hacking Guide | 68000 Instruction Set | 68000 ASM-to-Hex Code Reference | SMPS Music Hacking Guide | Mega Drive technical information