Actions

SCHG

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

From Sonic Retro

(Converting byte_ and word_ to raw addresses)
(Invincibility duration time: Dammit I always miss something obvious)
Line 22: Line 22:
 
<asm>$A8F8:
 
<asm>$A8F8:
 
move.b #1,($FF151F).l ; Enable invicibility
 
move.b #1,($FF151F).l ; Enable invicibility
move.w #$4b0,($ffffd032).w ; Set the invincibility duration time to $4B0</asm>
+
move.w #$4B0,($FFFFD032).w ; Set the invincibility duration time to $4B0</asm>
  
 
==Super Sneakers duration time==
 
==Super Sneakers duration time==

Revision as of 09:37, 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 ($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,($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,($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,($FF1512).l ; Add 10 to the current number of rings</asm>

Invincibility duration time

<asm>$A8F8: move.b #1,($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,($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,($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