From Sonic Retro
Note: All values are signed.
Global Variables
Main Locations
| Address (hex) | Type | Description
|
| 0091268C
| 4 Bytes
| Music Toggle
|
| 00912698
| 4 Bytes
| Currently playing music
|
| 0091269C
| 4 Bytes
| Music Copy
|
| 03B0EF34
| Byte
| Lives
|
| 03B0EF35
| Byte
| Time in frames. Max 60.
|
| 03B0EF38
| Byte
| Voice Language
|
| 03B0EF40
| Byte
| Setting this to -1 will hide the HUD. However, it is constantly being written to by code at 00413D9E. It will have no effect unless you disable that code.
|
| 03B0EF48
| Byte
| Time in minutes
|
| 03B0F0E4
| 2 Bytes
| Rings. Allowing this to reach a negative value (over 32767) will crash the game.
|
| 03B0F0E8
| Byte
| Text Language
- 0 Japanese
- 1 English
- 2 French
- 3 Spanish
- 4 German
|
| 03B0F0EC
| Byte
| Debug. Setting this to a non-negative value displays collision spheres around both characters when on the ground and highlights bottomless pits in white.
|
| 03B0F0F8
| Float
| X Gravity
|
| 03B0F0FC
| Float
| Y Gravity
|
| 03B0F100
| Float
| Z Gravity
|
| 03B0F104
| 4 Bytes
| Enemy Bonus
|
| 03B0F104
| 4 Bytes
| Level Frame Counter
|
| 03B0F128
| Byte
| Time in seconds.
|
| 03B0F13C
| 4 Bytes
| Frame Counter
|
| Save Data
|
| 03B18849
| Byte
| Sonic Unlocked in Adventure
|
| 03B1884A
| Byte
| Tails Unlocked in Adventure
|
| 03B1884B
| Byte
| Knuckles Unlocked in Adventure
|
| 03B1884C
| Byte
| Amy Unlocked in Adventure
|
| 03B1884D
| Byte
| Gamma Unlocked in Adventure
|
| 03B1884E
| Byte
| Big Unlocked in Adventure
|
| 03B1884F
| Byte
| Super Sonic Unlocked in Adventure
|
| 03B18850
| Byte
| Sonic Unlocked in Mission
|
| 03B18851
| Byte
| Tails Unlocked in Mission
|
| 03B18852
| Byte
| Knuckles Unlocked in Mission
|
| 03B18853
| Byte
| Amy Unlocked in Mission
|
| 03B18854
| Byte
| Gamma Unlocked in Mission
|
| 03B18855
| Byte
| Big Unlocked in Mission
|
| Sonic
|
| 03B1888F
| Byte
| Casinopolis open
|
| 03B18895
| Byte
| Light Speed Shoes obtained
|
| 03B18896
| Byte
| Crystal Ring obtained
|
| 03B1889C
| Byte
| Wind Stone in place
|
| 03B1889F
| Byte
| Ice Stone in place
|
| 03B188AE
| Byte
| Emerald Coast Clear
|
| 03B188AF
| Byte
| Windy Valley clear
|
| 03B188B0
| Byte
| Casinopolis clear
|
| 03B188B4
| Byte
| Ice Cap clear
|
| Tails
|
| 03B188D5
| Byte
| Jet Anklet obtained
|
| End Save Data
|
| 03B18DB4
| Byte
| Last Story. Set this to 1 to use the Last Story's data for objects and events.
|
| 03B18DB5
| Byte
| Metal Sonic. Set this to 1 to replace Sonic with Metal Sonic. May crash if you set this during a level.
|
| 03B18DB8
| Byte
| Selection on Pause Menu
- 0 Conitinue
- 1 Restart
- 2 Set Up Pad
- 3 Quit
- 4 Map
- 5 Camera
|
| 03B22DC0
| Byte
| Current Character
- 0 Sonic
- 2 Tails
- 3 Knuckles
- 5 Amy
- 6 E-102 Gamma
- 7 Big
|
| 03B22DC4
| Byte
| Level Copy. Doesn't appear to do anything.
|
| 03B22DC8
| Byte
| Entrance Number. Only applies to Adventure Fields.
|
| 03B22DCC
| Byte
| Current Level
|
| 03B22DD0
| 4 Bytes
| Set this to any non-zero value to speed up level transitions.
|
| 03B22DD4
| Byte
| Adventure Field Act
|
| 03B22DD8
| Byte
| Adventure Field Level
|
| 03B22DE4
| Byte
| Game Status. (Bad Textures) means that the level will load incorrect textures. This has no effect on the menu.
- 0 Reset Level (Bad Textures)
- 1 Clear Screen, disable movement
- 2 Crash if used directly (Used when dying/restarting)
- 3 Clear Screen, disable movement
- 4 Show Level, enable movement
- 5 Load Adventure Field
- 6 Die
- 7 Restart
- 8 Crash
- 9 Transition w/ fadeout
- 10 Clear Screen, disable movement
- 11 Restart Copy
- 12 Restart Copy
- 13 Crash
- 14 Credits
- 15 Normal
- 16 Paused
- 17 Load Level w/ Loading Screen
- 18 Crash
- 19 Return to Title Screen Copy
- 20 Return to Title Screen
- 21 Loading Screen (Bad Textures)/Menu
- 22 Restart Level (Bad Textures)
- 23 Return to Title Screen Copy
- 24 Load Level w/ Loading Screen
|
| 03B22DEC
| Byte
| Current Act
|
| 03B22DF0
| Byte
| Next Level. Change this while the screen is fading out.
|
| 03B22E18
| Byte
| Next Act. Change this while the screen is fading out.
|
| 03B29D08
| 2 Bytes
| Debug. Setting this to 1 displays collision spheres around objects and activates free movement mode. (Except for Tails.)
|
| 03B2A2F2
| Byte
| Menu voice
- 0 Default
- 1 Sonic
- 2 Tails
- 3 Knuckles
- 4 Amy
- 5 Gamma
- 6 Big
- 7 Eggman
- 8 Tikal
|
| 03B2A2FD
| Byte
| Selected character in character select
- 0 Sonic
- 1 Tails
- 2 Knuckles
- 3 Amy
- 4 Big
- 5 Gamma
- 6 Super/Metal Sonic
|
| 03B2B3B0
| 4 Bytes
| High Score - Emerald Coast as Sonic
|
| 03B2B690
| Byte
| Sonic Adventure Time of Day
|
| 03B2B6C0
| Byte
| Super Sonic Adventure Time of Day
|
| 03B2B6C6
| Byte
| Super Sonic Adventure Start Entrance
|
| 03B2B6C8
| Byte
| Super Sonic Adventure Start Act
|
| 03B2B6C9
| Byte
| Super Sonic Adventure Start Level
|
| 03B2C3FC
| 4 Bytes
| Rings in Black Market
|
| 03B2CAB0
| Float
| Main Character X Position Copy
|
| 03B2CAB4
| Float
| Main Character Y Position Copy
|
| 03B2CAB8
| Float
| Main Character Z Position Copy
|
| 03B42F8C
| Float
| Restart X Position
|
| 03B42F90
| Float
| Restart Y Position
|
| 03B42F94
| Float
| Restart Z Position
|
| 03C74880
| 4 Bytes
| Rings in vault in Casinopolis
|
| 03C82304
| Float
| Health in Sky Chase
Max 5, decreases by .5 when hit.
|
Emblems
One bit for each emblem, starting at 03B2B5F0.
| Offset | Bit | Description
|
| 0
| 0
| Emerald Coast Level C as Sonic
|
| 0
| 1
| Windy Valley Level C as Sonic
|
| 0
| 2
| Twinkle Park Level C as Sonic
|
| 0
| 3
| Speed Highway Level C as Sonic
|
| 0
| 4
| Red Mountain Level C as Sonic
|
| 0
| 5
| Sky Deck Level C as Sonic
|
| 0
| 6
| Lost World Level C as Sonic
|
| 0
| 7
| Ice Cap Level C as Sonic
|
| 1
| 0
| Casinopolis Level C as Sonic
|
| 1
| 1
| Final Egg Level C as Sonic
|
| 1
| 2
| Windy Valley Level C as Tails
|
| 1
| 3
| Speed Highway Level C as Tails
|
| 1
| 4
| Sky Deck Level C as Tails
|
| 1
| 5
| Ice Cap Level C as Tails
|
| 1
| 6
| Casinopolis Level C as Tails
|
| 1
| 7
| Speed Highway Level C as Knuckles
|
| 2
| 0
| Red Mountain Level C as Knuckles
|
| 2
| 1
| Sky Deck Level C as Knuckles
|
| 2
| 2
| Lost World Level C as Knuckles
|
| 2
| 3
| Casinopolis Level C as Knuckles
|
| 2
| 4
| Twinkle Park Level C as Amy
|
| 2
| 5
| Final Egg Level C as Amy
|
| 2
| 6
| Hot Shelter Level C as Amy
|
| 2
| 7
| Emerald Coast Level C as Gamma
|
| 3
| 0
| Windy Valley Level C as Gamma
|
| 3
| 1
| Red Mountain Level C as Gamma
|
| 3
| 2
| Final Egg Level C as Gamma
|
| 3
| 3
| Hot Shelter Level C as Gamma
|
| 3
| 4
| Emerald Coast Level C as Big
|
| 3
| 5
| Twinkle Park Level C as Big
|
| 3
| 6
| Ice Cap Level C as Big
|
| 3
| 7
| Hot Shelter Level C as Big
|
| 4
| 0
| Twinkle Circuit Emblem 2
|
| 4
| 1
| Sky Chase Act 1 Emblem 2
|
| 4
| 2
| Sky Chase Act 2 Emblem 2
|
| 4
| 3
| Sand Hill Emblem 2
|
| 4
| 4
| Hedgehog Hammer Emblem 2
|
| 4
| 5
| Twinkle Circuit Emblem 1
|
| 4
| 6
| Sky Chase Act 1 Emblem 1
|
| 4
| 7
| Sky Chase Act 2 Emblem 1
|
| 5
| 0
| Sand Hill Emblem 1
|
| 5
| 1
| Hedgehog Hammer Emblem 1
|
| 5
| 2-6
| Chao Race
|
| 5
| 7
| Sonic's Ending
|
| 6
| 0
| Tails' Ending
|
| 6
| 1
| Knuckles' Ending
|
| 6
| 2
| Amy's Ending
|
| 6
| 3
| Gamma's Ending
|
| 6
| 4
| Big's Ending
|
| 6
| 5
| Super Sonic's Ending
|
| 6
| 6-7
| Field Emblems
|
| 7
| 0-7
| Field Emblems
|
| 8
| 0-1
| Field Emblems
|
Chao Data
These only work while you are in a garden. They are $800 bytes long, starting at 03C8888A.
Thanks to GerbilSoft for his memory editor and Artichao for the Chao Genome
Animation Data
These control the model used as well.
Locations
| Address | Character
|
| 03C49D90
| Tails
|
| 03C532A0
| Knuckles
|
| 03C53FA8
| Gamma
|
| 03C54880
| Amy
|
| 03C556A0
| Big
|
| 03C56210
| Sonic
|
Format
Each entry is $10 bytes long and is sorted by Animation number.
| Offset | Type | Description
|
| 0
| 4 Bytes
| Pointer to animation in CHRMODELS.DLL
|
| 4
| Byte
| Unknown. Don't change this.
|
| 5
| Byte
| Property
| Value | Description
|
| 0
| Display first frame
|
| 1
| Display first frame
|
| 2
| Default pose
|
| 3
| Loop continuously
|
| 4
| Jump to animation in next byte after 1 cycle
|
| 5
| Play once, stop
|
| 6
| Jump to animation in next byte after 1 cycle
|
| 7
| Play once, stop
|
| 8
| Transition to animation in next byte after 1 cycle
|
| 9
| Current Speed -> Animation Speed
|
| A
| Current Speed -> Animation Speed
|
| B
| Display first frame
|
| C
| Display first frame
|
|
| 6
| Byte
| Next Animation
|
| 8
| Float
| Transition Speed
|
| C
| Float
| Animation Speed
|
Pointer Area
The data here changes its location when the level is restarted. Use pointers to find them.
Master Object Struct
A pointer to this for P1 is at 03B42E30, for P2, 03B42E34.
These are all pointers.
| Offset (hex) | Description
|
| 10
| Character's Main routine
|
| 20
| Character Object 1
|
Character Object 1
A pointer to this data for player 1 is at 03B42E10. A pointer for player 2 is at 03B42E14. Length: $180
| Offset (hex) | Type | Description
|
| 0
| Byte
| Action. Varies by character.
|
| 1
| Byte
| Next Action
- 0 Nothing
- 1 Running on wind path
- 2 ???
- 3 Vertical Spring
- 4 Spring
- 5 Launched
- 6 Trampoline Bounce 1
- 7 Trampoline Bounce 2
- 8 Trampoline Bounce 3
- 9 Something Trampoline Related
- 10 Something Trampoline Related
- 11 Floating on air current
- 12 Object Control
- 13 Object Control with spin
- 14 Running in air? (Possibly related to above)
- 15 Pushing in air?
- 16 Zipline/Helicopter
- 17 Falling without falling?
- 18 Bumper Car
- 19 Victory
- 20 Grabbing Rocket
- 21 Horizontal Rocket
- 22 Vertical Rocket
- 23 Waterslide
- 24 Return to normal
- 25 Bouncy Spring/Bowling
- 26 Loop
- 27 ???
- 28 Exit Bumper Car
- 29 Monkey Bars
- 30 Hanging on icicle
- 31 Ladder
- 32 Clinging to cylinder in Sky Deck
- 33 Trapped by Final Egg robot
- 34 Look around
- 35 Hit something
- 36 Breathe Bubble
- 37 ???
- 38 Frozen
- 39 Drown
- 40 Shower
- 41 ???
- 42 Shake off garbage
- 43 Run down building
- 44 Snowboard
- 45 Pinball Mode
- 46 Super Sonic
- 47 Unsuper Sonic
- 48 Makes Tails start flying
- 49 Tails' Character Select Pose
- 50 Die
|
| 4
| Bitfield
| Status 1
| Bit | Value | Description
|
| 0
| 1
| On Ground
|
| 2
| 4
| Hurt
|
|
| 5
| Bitfield
| Status 2
| Bit | Value | Description
|
| 0
| 1
| Ball mode
|
| 1
| 2
| Light Speed Dash charged (Sonic only)
|
| 2
| 4
| Attacking
|
| 3
| 8
| Holding object
|
| 4
| 16
| Makes the character perform the action specified in $01.
|
|
| 6
| 2 Bytes
| Invulnerable timer
|
| 8
| Bitfield
| Unknown
| Bit | Value | Description
|
| 0
| 1
| CPU controlled
|
|
| 9
| Byte
| Character properties. Set this to a character ID.
|
| 10
| 4 Bytes
| Pointer to path data (loop/wind)
|
| 14
| 2 Bytes
| X Rotation
|
| 18
| 2 Bytes
| Y Rotation
|
| 1C
| 2 Bytes
| Z Rotation
|
| 20
| Float
| X Position
|
| 24
| Float
| Y Position
|
| 28
| Float
| Z Position
|
| 2C
| Float
| Shield Scale/Big X Scale
|
| 30
| Float
| Big Y Scale
|
| 34
| Float
| Big Z Scale
|
| 38
| 4 Bytes
| Pointer 3
|
| 3C
| 4 Bytes
| Pointer
|
| 40
| 4 Bytes
| Set this to -1 and exit the level to crash the game.
|
| 44
| 4 Bytes
| Same as $40.
|
| 48
| 4 Bytes
| Pointer
|
| 4C
| 4 Bytes
| Pointer
|
| A8
| 4 Bytes
| Pointer
|
| AC
| 4 Bytes
| Pointer
|
| C0
| 4 Bytes
| Pointer 2
|
| C4
| Float
| Something with X speed
|
| C8
| Float
| Something with Y speed
|
| CC
| Float
| Something with Z speed
|
| D0
| Float
| Something with X speed
|
| D4
| Float
| Something with Y speed
|
| D8
| Float
| Something with Z speed
|
| DC
| 2 Bytes
| X Rotation Last Time On Ground
|
| E0
| 2 Bytes
| Y Rotation Last Time On Ground
|
| E4
| 2 Bytes
| Z Rotation Last Time On Ground
|
| FC
| Float
| Physics Multiplier?
|
| 100
| 4 Bytes
| Pointer. Keeps changing. Sometimes 0.
|
| 104
| 4 Bytes
| Same as 100
|
| 108
| 4 Bytes
| Pointer
|
Character Object 2
A pointer to this data for player 1 is at 03B3CDF0. A pointer for player 2 is at 3B3CDF4. Another pointer is at offset $C0 in data 1.
| Offset (hex) | Type | Description
|
| 0
| Float
| Holding Area for Running/Spindash Speed
|
| 4
| Bitfield
| Upgrades 1
| Bit | Value | Description
|
| 0
| 1
| Crystal Ring
|
| 1
| 2
| Light Shoes
|
| 2
| 4
| Ancient Light
|
| 3
| 8
| Jet Anklet
|
| 4
| 16
| Rhythym Badge
|
| 5
| 32
| Fighting Gloves
|
| 6
| 64
| Shovel Claw
|
| 7
| 128
| Long Hammer
|
|
| 5
| Bitfield
| Upgrades 2
| Bit | Value | Description
|
| 0
| 1
| Warrior Feather
|
| 1
| 2
| Laser Blaster
|
| 2
| 4
| Jet Booster
|
| 3
| 8
| Power Rod
|
| 4
| 16
| Life Ring
|
| 7
| 128
| Super Sonic
|
|
| 6
| Bitfield
| Powerups 1
| Bit | Value | Description
|
| 0
| 1
| Shield
|
| 1
| 2
| Magnetic Shield (also protects you)
|
|
| 7
| Bitfield
| Powerups 2
| Bit | Value | Description
|
| 6
| 64
| Rings don't add to total
|
| 7
| 128
| Invincible
|
|
| C
| 2 Bytes
| Underwater Time. Countdown at 1068. Drown at 1831.
|
| E
| 2 Bytes
| Idle Time. Max 1800.
|
| 38
| Float
| Horizontal Speed
|
| 3C
| Float
| Vertical Speed
|
| 68
| 4 Bytes
| Pointer to Master Struct for Object being held
|
| 9C
| 4 Bytes
| Hang Time
|
| A0
| Float
| Amount of grip on floor
|
| A4
| Float
| Horizontal Speed Cap
|
| A8
| Float
| Vertical Speed Cap
|
| AC
| Float
| Something to do with the maximum speed Sonic can accelerate to on his own?
|
| B4
| Float
| Initial Jump Speed
|
| C0
| Float
| Rolling Cancel Speed
|
| C4
| Float
| Rolling End Speed
|
| C8
| Float
| Running 1 Speed
|
| D0
| Float
| Running 2 Speed
|
| D4
| Float
| While holding jump, add this to speed.
|
| D8
| Float
| Ground Acceleration
|
| DC
| Float
| Air Acceleration
|
| E0
| Float
| Ground Deceleration
|
| E4
| Float
| Brake Speed
|
| E8
| Float
| Air Brake Speed
|
| EC
| Float
| Air Deceleration
|
| F0
| Float
| Rolling Deceleration
|
| F4
| Float
| Something Gravity Related?
|
| 110
| Float
| Collision Size
|
| 114
| Float
| Gravity
|
| 11C
| Float
| Y Offset
|
| 124
| Byte
| Animation
|
| 140
| 4 Bytes
| Animation Address
- 0x03C49D90 Tails
- 0x03C532A0 Knuckles
- 0x03C53FA8 Gamma
- 0x03C54880 Amy
- 0x03C556A0 Big
- 0x03C56210 Sonic
|
| 1E4
| Bitfield
| Unknown
| Bit | Value | Description
|
| 1
| 2
| Underwater
|
|
Character Object 3
A pointer to this data is at offset $38 in data 1.
| Offset (hex) | Type | Description
|
| 2
| 2 Bytes
| Touching Object
|
| 6
| 2 Bytes
| Interact with objects
|
| 8
| Float? ( or 4 Bytes)
| 10 when standing. Changes when you move. Does nothing?
|
| C
| 4 Bytes
| Pointer
|
| 14
| 4 Bytes
| Address of touching object
|
| 1C
| 4 Bytes
| Address of 2nd touching object
|
| 24
| 4 Bytes
| Probably address of 3rd touching object
|
| 2C
| 4 Bytes
| Probably address of 4th touching object
|
| Repeat until 90
|
| 90
| Float
| Something with object collision. Never read from.
|
| 98
| Float
| Something with object collision in the air. Never read from.
|
| 9C
| 4 Bytes
| Pointer
|
| 1A8
| 4 Bytes
| Pointer
|
| 1AC
| 4 Bytes
| Pointer
|