Actions

SCHG

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

From Sonic Retro

(Major cleanup)
(On second thought ...)
Line 1: Line 1:
 
Here are some locations in an European Sonic CD level MMD which contain tweakable code (in 68k assembly).
 
Here are some locations in an European Sonic CD level MMD which contain tweakable code (in 68k assembly).
  
*'''Maximum rings allowed:'''
+
==Maximum rings allowed==
 
  $AEFA:
 
  $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
Line 9: Line 9:
 
  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
  
*'''Lowest number of rings required to access the special stage:'''
+
==Lowest number of rings required to access the special stage==
 
  $D50C:
 
  $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
Line 15: Line 15:
 
  jmp    sub_20788C      ; Otherwise jump here
 
  jmp    sub_20788C      ; Otherwise jump here
  
*'''Number of rings you get when you break the ring monitor:'''
+
==Number of rings you get when you break the ring monitor==
 
  $A88E:
 
  $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

Revision as of 09:09, 7 August 2008

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

Maximum rings allowed

$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

Lowest number of rings required to access the special stage

$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

Number of rings you get when you break the ring monitor

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


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