Games That Use The Engine

This sound engine isn't specific to only the Sonic games - many other games use this sound engine as well. The "official" name for this sound system is called SMPS, or the Sample Music Playback System.

There are two derivatives of the system - one is the driver that runs on the Z80 processor, and the other runs on the 68k. 68k games will use relative pointers internally (with absolute music pointers), while the Z80 games will use Z80 bank addressing. Keep this in mind when searching for music data within games.

Music Locations

Now that you know all the basics, you can start editing music. Here are some locations for various games that will help. You can use the music pointers to locate the music data for now, but I may document the locations of each individual track in the future.

Crayon Shin-Chan

Dynamite Headdy

Music Pointers (32-bit): $05E536

Alien Soldier

Music Pointers (32-bit): $084E78

Phantasy Star 3

Music Pointers (These add to $07000): $070376

Phantasy Star 4

Music Pointers (32-bit): $0D1C40

The sound test's pointer table is located at $2AFCDE. Each track is formatted as a 2-byte entry: the first byte uses the internal ID listed below, the second byte designates the composer (00 = IPPO, 01 = GAKI CHAN).

Sound ID

ROM Pointer

Sound Test (decimal)

Title

81

0D1D8E

12

TONOE DE PON

82

0D2386

04

INN

83

0D2494

08

MOTABIA VILLAGE

84

0D294E

02

MOTABIA TOWN

85

0D2DA0

20

ORGANIC BEAT

86

0D31E0

31

DEZORIS TOWN 1

87

0D3568

09

NOW ON SALE

88

0D38A2

16

BEHIND THE CIRCUIT

89

0D3D92

23

MACHINE CENTER

8A

0D409C

13

IN THE CAVE

8B

0D42D8

07

WINNERS!

8C

0D43CA

05

FIELD MOTABIA

8D

0D48C4

24

LAND MASTER AVX-25

8E

0D4D8C

35

REQUIEM FOR LUTZ

8F

0D505A

06

MEET THEM HEAD-ON!

90

0D583C

39

RYUCROSS FIELD

91

0D59E2

21

PS1 DUNGEON ARRANGE 1

92

0D5F0E

17

FAL

93

0D61D4

37

TEMPLE NGANGBIUS

94

0D64F4

12

THRAY

95

0D6C86

14

DEFEAT AT A BLOW!

96

0D7142

25

CYBERNETIC CARNIVAL

97

0D7590

10

TERRIBLE SIGHT

98

0D79D2

42

EDGE OF DARKNESS

99

0D7D0C

30

DEZORIS FIELD 1

9A

0D7FA0

40

TOWER

9B

0D8424

28

TAKE OFF! LANDEEL

9C

0D8A14

34

DEZORIS TOWN 2

9D

0D8E40

33

DEZORIS FIELD 2

9E

0D912E

15

A HAPPY SETTLEMENT

9F

0D9530

03

SUSPICION

A0

0D97F4

38

THE KING OF TERRORS

A1

0D9DB0

41

THE AGE OF FABLES

A2

0DA100

43

ABYSS

A3

0DA3F2

--

sound effect

A4

0DA48E

19

HER LAST BREATH

A5

0DA660

18

PAIN

A6

0DA78C

32

JIJY NO RAG

A7

0DAE46

--

PS1 DUNGEON ARRANGE 2 (post-battle fade-in version)

A8

0DB322

26

THE BLACK BLOOD

A9

0DB48E

29

RED ALART

AA

0DB676

27

LAUGHTER

AB

0DBC78

--

sound effect (plays when Chaz reaches the top room of the Anger Tower)

AC

0DBD08

01

THE END OF THE MILLENNIUM

AD

0DC306

--

sound effect (big explosion, tower crumbling, etc)

AE

0DC344

47

STAFF ROLL

AF

0DCAB8

45

THE PROMISSING FUTURE 1

B0

0DCDC2

48

PAO-PAO!

B1

0DD220

22

PS1 DUNGEON ARRANGE 2

B2

0DD5AC

46

THE PROMISSING FUTURE 2

B3

0DDC1E

36

DEZORIS DE DON

B4

0DDD4E

44

OOZE

Pulseman

Music Pointers (32-bit): $0601A6

The Hybrid Front

Note: The GoodGen name of the ROM is "Hybrid Front, The (J) [a1].bin". The ROM marked with [!] is a prototype.

Streets of Rage/Bare Knuckle

Quackshot (REV01)

Music pointers (These add to $130000): $13011B

Music 8C's pointer points to Z80 RAM since the song is loaded into RAM. Its location in the ROM is $13A0CA

Sound pointers: $1392A6

All these pointers point to Z80 RAM as the sound data is loaded into RAM starting at $0DD0. To get the location of a sound in the ROM, put the pointer in big-endian order, subtract $0DD0 from it and add $1392A6 to it.

Columns III

Music Pointers (These add to $070000): $070255

Mega Man: Wily Wars (E)

Music:

The 68000 copies music data to Z80 RAM location $1000, starting with a pointer to the song data (see below). The 32-bit pointers to the list of songs is at $06E348 (E) / $06E842 (J). (The song pointers are the same in the E and J version.) Each pointer in the list points to data of the form

dc.w length ; 68000 endian
dc.w $0210 ; in Z80 endian, this is $1002, the pointer to the song data
dc.b (song data)

So to extract the song, start at 4 + the pointer.

Music ID

ROM Pointer

Song name

00

1E5FCC

Mega Man 1: Cutman Stage

01

1E74E4

Mega Man 1: Gutsman Stage

02

1E7EF4

Mega Man 1: Iceman Stage

03

1E6C00

Mega Man 1: Bombman Stage

04

1E79A0

Mega Man 1: Fireman Stage

05

1E652A

Mega Man 1: Elecman Stage

06

1E9128

Mega Man 1: Dr. Wily Stage 1

07

1E95F4

Mega Man 1: Dr. Wily Stage 2

08

1E84E8

Mega Man 1: Stage Select

09

1E87DC

Mega Man 1: Game Start

10

1E8A9E

Mega Man 1: Boss Theme

11

1E8DCA

Mega Man 1: Stage Clear

12

1E8FAE

Mega Man 1: Game Over

13

1E982C

Mega Man 1: Dr. Wily Stage Boss

14

1E9A0C

Mega Man 1: Ending Theme

15

1ED3AA

Mega Man 2: Opening Theme

16

1ED946

Mega Man 2: Title Theme

17

1EAE92

Mega Man 2: Password

18

1EB120

Mega Man 2: Game Start

19

1EB4AA

Mega Man 2: Stage Clear

20

1EDE98

Mega Man 2: Bubbleman Stage

21

1EE4AA

Mega Man 2: Airman Stage

22

1EEB52

Mega Man 2: Quickman Stage

23

1EF1F4

Mega Man 2: Heatman Stage

24

1EF71A

Mega Man 2: Woodman Stage

25

1EFD86

Mega Man 2: Metalman Stage

26

1F038E

Mega Man 2: Flashman Stage

27

1F0A84

Mega Man 2: Crashman Stage

28

1EA2BE

Mega Man 2: Dr. Wily Stage 1

29

1EAB90

Mega Man 2: Dr. Wily Stage 2

30

1EB72A

Mega Man 2: Stage Select

31

1EB990

Mega Man 2: Game Over

32

1EBBC0

Mega Man 2: Dr. Wily Map

33

1EBEB6

Mega Man 2: Boss Theme

34

1EC37C

Mega Man 2: All Stages Clear

35

1EC5CE

Mega Man 2: New Weapon

36

1EC7A2

Mega Man 2: Ending Theme

37

1ECC2E

Mega Man 2: Staff Roll

38

1F5C90

Mega Man 3: Title Theme

39

1F4A72

Mega Man 3: Protoman's Whistle

40

1F114A

Mega Man 3: Sparkman Stage

41

1F1776

Mega Man 3: Snakeman Stage

42

1F1F9A

Mega Man 3: Needleman Stage

43

1F2880

Mega Man 3: Hardman Stage

44

1F300C

Mega Man 3: Topman Stage

45

1F371E

Mega Man 3: Geminiman Stage

46

1F3B1C

Mega Man 3: Magnetman Stage

47

1F43DA

Mega Man 3: Shadowman Stage

48

1F6DFA

Mega Man 3: Dr. Wily Stage 1

49

1F72BE

Mega Man 3: Dr. Wily Stage 2

50

1F7738

Mega Man 3: Dr. Wily Stage 3

51

1F4AB8

Mega Man 3: Stage Select

52

1F4D1C

Mega Man 3: Game Start

53

1F502C

Mega Man 3: Password

54

1F52E2

Mega Man 3: New Weapon

55

1F56C0

Mega Man 3: Boss Theme

56

1F5B5A

Mega Man 3: Stage Clear

57

1F64CA

Mega Man 3: Ending Theme

58

1F6C42

Mega Man 3: Dr. Wily Map

59

1F7B8C

Mega Man 3: Dr. Wily Boss Theme

60

1F8000

Mega Man 3: Staff Roll

61

1FD788

Introduction

62

1FDC64

Title Theme

63

1F9BA8

Game Select

64

1F9E04

Wily's Tower: Buster Rod-G Stage

65

1FA4BC

Wily's Tower: Mega Water-S Stage

66

1FAAB6

Wily's Tower: Hyper Storm-H Stage

67

1FB218

Wily's Tower: Wily's Tower Stage 1

68

1FB85E

Wily's Tower: Wily's Tower Stage 2

69

1FBFFE

Wily's Tower: Wily's Tower Stage 3

70

1F8B66

Wily's Tower: All Stages Clear

71

1FD03A

Wily's Tower: Boss Theme

72

1F95F0

Wily's Tower: New Weapon

73

1FD4EE

Wily's Tower: Game Start

74

1F88FE

Wily's Tower: Game Over

75

1F8EBE

Wily's Tower: Stage Clear

76

1F9878

Wily's Tower: Light Lab

77

1F941E

Wily's Tower: Stage Select

78

1F912E

Wily's Tower: Wily's Tower Map

79

1FC8F0

Wily's Tower: Wily's Tower Stage 4

80

1FE448

Wily's Tower: Ending Theme

81

1FED40

(not in sound test) Capcom Logo

82

1FEDE4

(not in sound test) ??

Sound Effects:

These, on the other hand, are read from the ROM bank, like with most other SMPS/Z80s. The pointer list is at ROM $1E4000, and each pointer value adds to $1E0000.

Outrunners

bank is either 0 or 1. A value of 0 means add the offset to $1E8000; a value of 1 means add to $1F0000. For example, the first entry reads

db 0
dw $9EBC

0 means add $9EBC to $1E8000 to get $1F1EBC.

Sega CD

Sonic CD

Each file has only one song. The sound effect list is a list of 32-bit pointers. For the sound effects and PCM pointers, each file is loaded to Sub 68000 address $40000, so simply bitwise AND $3FFFF to each address from the list to get the ROM address. For each file, the music is placed immediately before the first sound effect and the last sound effect is placed immediately before the PCM table, so if you want to split out the music, start at the given address and end at the address of the first sound effect in the sound effect list.

File

Description

Music Start Address

Sound Effects List Address

PCM Table Address

SNCBNK1B.BIN

Palmtree Panic Past

$1324

$12DE

$1D94

SNCBNK3B.BIN

Collision Chaos Past

$133A

$12DE

$19F6

SNCBNK4B.BIN

Tidal Tempest Past

$1322

$12DE

$1906

SNCBNK5B.BIN

Quartz Quadrant Past

$1336

$12DE

$1C82

SNCBNK6B.BIN

Wacky Workbench Past

$1326

$12DE

$1976

SNCBNK7B.BIN

Stardust Speedway Past

$1336

$12DE

$1A7A

SNCBNK8B.BIN

Metallic Madness Past

$1322

$12DE

$1AA4

SNCBNKB1.BIN

Unknown

$1326

$12E2

$1414

SNCBNKB2.BIN

Unknown

$1326

$12E2

$1414

32X

Cosmic Carnage

Music Pointers (32-bit): $082AAC

NOTE: Cosmic Carnage is 32x, so $900000 is added to each pointer.

Knuckles' Chaotix

Music Pointers (These add to $040000): $076AE9

Music Pointers (These add to $048000): $076B05

Music Pointers (These add to $050000): $076B33

Address

Song

$40000

Door Into Summer

$40D61

Electoria

$41904

Speed of Sound

$428a6

Seascape

$4349a

Midnight Greenhouse

$44220

New Moon

$4509c

Labyrinth

$4536b

Trial and Error

$45DEE

Walkin'

$461be

Hyper-Hyper

$468e5

Evening Star

$46Fe8

Moonrise

$474e3

Overture

$477f0

This Horizon

$48000

Take Off

$4836a

Combination

$48a39

Take a Nap

$48c96

Surging Power

$4915d

Mechanical Dance

$4951d

Tube Panic

$49fb0

Crystal Nightmare

$4a58c

Child's Song

$4ac3c

Soda Pop

$4b082

Pendulum

$4b6f5

Silver Screen

$4bBFF

Tachy Touch

$4c44e

Chaotic World

$4c8fa

Surprise!

$4cd0d

Nice Meeting You

$4d0ef

Have a Happy Day

$4d34c

Reach the Goal

$4d53f

High Five

$4d67a

Decision

$4d81d

From Party to Party

$4d9f4

Have Some Fun

$4dc41

Oriental Legend

$4e33d

Steel Heart

$50000

Tribute

$509ac

Destructive Power

$50c6a

Just Another Day

$5400b

Decision 2nd

Sound Effect Pointers (These add to $050000): $076B3B

PWM Table: $058000

Stellar Assault (Shadow Squadron)

Music Pointers (32-bit): $0C2868

NOTE: Shadow Squadron is 32x, so $900000 is added to each pointer.

Tempo

Music:

You will need to consult two lists: a bank list and a pointer list. The bank list is at ROM address $1F0921; the pointer list at ROM $1F11EB. For the nth song (starting with 0), the nth byte in the bank list correspond to bits 22-15 of the final address (clear the upper bit of the final address); the nth word (Z80 endian) in the pointer list correspond to bits 14-0 (drop the upper bit). For example, the first song has a bank value of $38 and a pointer value of $9B8B. Shifting $38 left 15 bits to fill it in bits 22-15 yields $1C0000. Drop the highest bit from the pointer to get $1B8B, which you then add to $1C0000 to get $1C1B8B.