This page is about various things you can edit in the sonic.exe file.
Note: There are multiple versions of SADXPC. Some addresses may not work for your version. Make sure the values given match your exe before editing it! Addresses that only work for the US version will be marked with US. Addresses that only work for the European version will be marked with EU. These are not likely to work with the Japanese version.
Note: the cracked version is the same as the European version.
Note: to find these in RAM, add $400000.

Animation Swapping

This short section needs expansion. You can help Sonic Retro by adding to it.

Physics

Locations

Offsets

These are in the same locations as in RAM. These are all Floats except Hang Time, which is 4 Bytes, measured in frames.

Offset

Description

Sonic

Eggman

Tails

Knuckles

Tikal

Amy

Gamma

Big

0

Hang Time

60

60

60

60

60

60

60

60

4

Amount of grip on floor

2

3

1.5

2

2

1.5

2

2

8

Horizontal Speed Cap

16

16

16

16

16

16

16

5

C

Vertical Speed Cap

16

16

16

16

16

16

16

8

10

Something to do with the maximum speed Sonic can accelerate to on his own?

3

3

2

2.5

3

0.05

2.5

1

14

?

0.6

1

0.6

0.6

1

0.5

0.6

0.2

18

Initial Jump Speed

1.66

1.66

1.66

1.66

1.66

1.3

2

2

1C

Spring Control?

3

3

3

3

3

3

3

3

20

?

0.23

0.23

0.23

0.23

0.23

0.23

0.23

0.23

24

Rolling Cancel Speed

0.46

0.46

0.49

0.46

0.46

0.46

1

0.32

28

Rolling End Speed

1.39

1.39

1.39

1.39

1.39

1.39

2

1.39

2C

Running 1 Speed

2.3

2.3

2.8

3.1

2.3

2.3

2.5

2.3

30

Minimum speed to get knocked back when hitting a wall. Also affects pushing speed?

3.7

3.7

3.7

3.7

3.7

3.7

3.7

3.7

34

Running 2 Speed

5.09

5.09

5.09

5.09

5.09

5.09

5.09

5.09

38

While jump is held, add this to speed.

0.076

0.076

0.076

0.076

0.076

0.013

0.09

0.1

3C

Ground Acceleration?

0.05

0.06

0.06

0.05

0.06

0.045

0.06

0.08

40

Air Acceleration

0.031

0.031

0.031

0.031

0.031

0.031

0.031

0.031

44

Ground Deceleration

-0.06

-0.06

-0.06

-0.06

-0.06

-0.06

-0.06

-0.08

48

Brake Speed

-0.18

-0.18

-0.18

-0.18

-0.18

-0.18

-0.25

-0.18

4C

Air Brake Speed

-0.17

-0.17

-0.17

-0.17

-0.17

-0.17

-0.17

-0.17

50

Air Deceleration

-0.028

-0.028

-0.028

-0.028

-0.028

-0.028

-0.028

-0.028

54

Rolling Deceleration

-0.008

-0.008

-0.008

-0.008

-0.008

-0.008

-0.008

-0.04

58

Speed to add to normal gravity?

-0.01

-0.01

-0.01

-0.01

-0.01

-0.01

-0.01

-0.01

5C

Speed when Sonic hits something?

-0.4

-0.4

-0.4

-0.4

-0.4

-0.4

-0.4

-0.4

60

Minimum speed before stopping (affects spindash charging and braking)

-0.1

-0.1

-0.1

-0.1

-0.1

-0.1

-0.1

-0.1

64

Seems to affect movement on sloped surfaces

-0.6

-0.6

-0.6

-0.6

-0.6

-0.6

-0.6

-0.6

68

Something related to acceleration on ground? Increase it to accelerate faster.

-0.2825

-0.3375

-0.3375

-0.3375

-0.3375

-0.3375

-0.9

-0.2

6C

?

0.3

0.3

0.3

0.3

0.3

0.3

0.3

0.3

70

Ripple Size?

4

8.5

3.5

4

4

3.5

4

9.5

74

Collision Size

10

18

9

11.4

10

10

21

17

78

Gravity (Multiplied by Gravity values)

0.08

0.08

0.08

0.08

0.08

0.04

0.1

0.135

7C

Y Offset for camera

7

7

6

9

7

7

20

15

80

Y Offset

5.4

5.3

4.5

5.7

5

5

14

8

Other Values

Address (US)

Address (EU)

Description

Default

92FEB

9303B

Light Speed Attack V Speed

8

9306A

930BA

Light Speed Dash H Speed

8

9439D

943ED

Super Sonic's Rolling Deceleration

-0.001

943A7

943F7

Super Sonic's Air Deceleration

-0.002

943B1

94401

Super Sonic's Air Acceleration

0.05

943BB

9440B

Super Sonic's Y Offset

6.4

94C2F

94C7F

Jump Dash H Speed

5

96F23

96F73

Initial Spindash Speed

2

3DCB34

3DCB3C

Max Spindash Speed

10

3DCCFC

3DCD04

Free Movement Speed

5

3DD550

3DD540

Spindash Speed Increment

0.4

3E007C

3E006C

Water Multiplication

0.65

Object Lists

A pointer list is at 574AF8, containing eight entries per level. To find the pointer you want, take $574AF8 + (((level * 8) + act) * 4). Remember to subtract $400000 from all pointers!

Now you will be at the list header, which is actually at the end of the list.
The header is simple: the first 4 Bytes are the number of objects, and the next 4 bytes are a pointer to the start of the list.

The list consists of $14 bytes for each object, in the following format:

Offset

Type

Description

0

Byte

First argument passed to ObjLoad

1

Byte

Second argument passed to ObjLoad

2

2 Bytes

Some setting related to the distance at which the object appears. The next value will only take effect if this is 1, otherwise the game will provide a value.

4

Float

The distance from the player at which the object appears/disappears.

8

4 Bytes

Unknown. Usually 0.

C

4 Bytes

A pointer to the main subroutine for the object.

10

4 Bytes

A pointer to the name of the object in ASCII text. Unused in the final, but used in the preview's SET Editor.

You should avoid editing these values unless you are absolutely sure of what you're doing, as incorrect arguments or pointers will likely crash the game. Instead, you should simply copy an entry from another level's list, and it will work as long as the proper textures are loaded.

Character Select

Characters

The characters are stored as an array of 2 byte values at 3EF6B4 (3EF6A4 in the EU version), in the order Sonic, Tails, Knuckles, Amy, Big, Gamma, (Super/Metal) Sonic.

Objects

The objects to load for each character at the character select screen are at 3F0788 (3F0778 in EU).
All the data are pointers.

Offset

Description

0

The address of the code for the object.

4

The address of the texture list to use for the object.

8

A pointer to some area in RAM. Function unknown.

C

A pointer to four bytes worth of data. Function unknown.

Trial Mode Levels

Starting at 3EF5EC/3EF5DC for Action Stages and 3EF624/3EF614 for Sub Games, it lists a pointer to a list of levels followed a by 4 byte count of the levels in the list.
The lists themselves are simply a byte for the level and a byte for the act.

Level Start Arrays

Character

Address

# of entries

Sonic

50A5C8

72

Tails

50AB68

41

Knuckles

50AEA0

39

Big

50B1B0

35

Amy

50B470

41

Gamma

50B7A8

43

The end of the array is signaled by an entry with a level value of 0x2B.

Each entry is $14 bytes long, in the following format:

Offset

Type

Description

0

2 Bytes

Level ID

2

2 Bytes

Act ID

4

Float

X Position

8

Float

Y Position

C

Float

Z Position

10

4 Bytes

Y Rotation

Misc. Code

This section is for code that doesn't fit into any of the above sections. To disable code, replace it with nop instructions ($90)x86 Instruction Set Reference