Actions

SCHG

Difference between revisions of "Sonic Adventure 2/Cutscenes"

From Sonic Retro

m (Added information for main cutscene audio timings, preliminary documentation for mini-event audio timings)
m (MEXXXX_0-5 Information)
 
(5 intermediate revisions by the same user not shown)
Line 1,989: Line 1,989:
 
|}
 
|}
  
Information starting at 0x800 and continuing until the end of the file contains audio timings for voices and BGM for each language. Each chunk is 72 bytes in size.
+
The start of the file contains subtitle data. Each data set is 8 bytes long and is tied to the order in which subtitles are loaded in the scene.
 +
 
 +
{| class="prettytable" style="width:auto;"
 +
!Offset!!Type!!Description
 +
|-
 +
| 0
 +
| UINT32
 +
| Frame in which the subtitle is set to appear.
 +
|-
 +
| 4
 +
| UINT34
 +
| Number of frames in which the subtitle is to remain onscreen.
 +
|}
 +
 
 +
Information starting at 0x800 and continuing until the end of the file contains audio timings for voices and BGM for each language. Each chunk is 72 bytes in size. Voice clip numbers are relative to each scene, so the "first" entry in E0000 won't be the same entry as the one loaded in E0102, for example.
  
 
{| class="prettytable" style="width:auto;"
 
{| class="prettytable" style="width:auto;"
Line 2,000: Line 2,014:
 
| 4
 
| 4
 
| UINT32
 
| UINT32
| Number of the voice clip that's to be loaded if applicable, in multiples of 10. i.e, FF FF 0A 00 is 10, or the first clip in EVENT_ADX. FF FF FF FF denotes a null voice clip entry
+
| Number of the voice clip that's to be loaded if applicable, in multiples of 10. i.e, FF FF 0A 00 is 10, or the first clip applicable to the scene. FF FF FF FF denotes a null voice clip entry
 
|-
 
|-
 
| 8
 
| 8
Line 2,084: Line 2,098:
 
|}
 
|}
  
Much like the _1 to _J files for the main event cutscenes, MEXXXX_0 to _5 dictates audio and subtitle information for the mini-event scenes. These files are uncompressed. Information starting at 0x100 contains audio timings for each language. Each chunk is 76 bytes in size.
+
Much like the _1 to _J files for the main event cutscenes, MEXXXX_0 to _5 dictates audio and subtitle information for the mini-event scenes. These files are uncompressed.  
 +
 
 +
The start of the file contains subtitle timings and their duration. Each data set is 8 bytes in size and is tied to the order in which subtitles are loaded.
 +
{| class="prettytable" style="width:auto;"
 +
!Offset!!Type!!Description
 +
|-
 +
| 0
 +
| UINT32
 +
| Frame in which the subtitle is set to appear
 +
|-
 +
| 4
 +
| UINT32
 +
| Number of frames in which the subtitle remains onscreen after it has been loaded
 +
|}
 +
 
 +
Information starting at 0x100 contains timings for each language. Each chunk is 76 bytes in size. Note that voice clip entries are dependent on the scene, so the "first" entry of ME0001 isn't the same as the one found in ME0007, for example.
 +
{| class="prettytable" style="width:auto;"
 +
!Offset!!Type!!Description
 +
|-
 +
| 0
 +
| UINT32
 +
| Frame in which the instruction is set to begin
 +
|-
 +
| 4
 +
| Byte
 +
| Screen control. 1 is a normal fade-in, while 2 maintains the screen fade tint until the mini-event is finished.
 +
|-
 +
| 5
 +
| UINT16
 +
| Sound effect ID that is to be loaded, if applicable. FF FF is considered a null value. Usually written as ?? FF.
 +
|-
 +
| 7
 +
| Byte
 +
| Null (00)
 +
|-
 +
| 8
 +
| UINT16
 +
| Number of voice clip that is to be loaded, if applicable, in multiples of 10. Valid entries are written as 00 ??, while FF FF is a null value.
 +
|-
 +
| A
 +
| Byte
 +
| BGM control. Setting this value to 2D (45) will cause the level's music to play at the frame specified.
 +
|}
  
 
==References==
 
==References==

Latest revision as of 22:09, 27 June 2020

SCHG: Sonic Adventure 2
Dreamcast
GameCube
PC

Cutscenes

Depending on the version of SA2, the data for the event cutscenes can differ. EXXXX.PRS is the main file, while the _0 to _J files contain miscellaneous resources, such as audio timings and lighting/screen fade information. In the Dreamcast version, the models and animation data for a scene are all contained within the main file, while in SA2B, the animation data was split off into an uncompressed file labeled exxxxmotion.bin. With two exceptions in the DC version - those being E0203 and E0210 - the event files can only be interpreted by the game if the main file is compressed.

Main File Information

The base pointer for the DC version is 0xC600000
The base pointer for SA2B is 0x8125FE60

Offset Type Description
0 Pointer Scene geometry
4 Pointer Texture list
8 UINT32 Scene count
C Pointer Texture sizes
10 Pointer ARK character reflection control
14 Pointer Spinning disc slices in ARK control room (Only used in E0200)
18 Pointer Mech character parts (Usually contains pointers to their upgrades and weapons)
1C Pointer Tails' tails
20 Pointer Upgrade list
24 Pointer Models that use animated textures
28 Drop shadow control. A value of 01 allows the character drop shadows to be rendered over updated geometry. (SA2B only)

Upgrade list

The upgrade list is constant throughout the game. To work around a technical limitation with the character models in SA2B, Mech Tails and Mech Eggman were given an upgrade slot each for their windshields, as they would have problems rendering otherwise.

Number Description
1 Sonic's Light Shoes
2 Sonic's Flame Ring
3 Sonic's Bounce Bracelet
4 Sonic's Magic Gloves
5 Shadow's Air Shoes
6 Shadow's Flame Ring
7 Knuckles' Shovel Claw (Left)
8 Knuckles' Shovel Claw (Right)
9 Knuckles' Hammer Glove (Left)
10 Knuckles' Hammer Glove (Right)
11 Knuckles' Sunglasses
12 Knuckles' Air Necklace
13 Rouge's Pick Nails
14 Rouge's Treasure Scope
15 Rouge's Iron Boots
16 Rouge's Heart Plates
17 Mech Tails' cockpit window (SA2B only)
18 Mech Eggman's cockpit window (SA2B only)

Character Node Hierarchy

The node hierarchy for the characters in the cutscenes tends to be quite different from their main game counterparts. As a result, there isn't so much a common skeleton for the cutscene models so much as a different arrangement for the same nodes, with some alterations for what's included within the body's mesh. As a general rule of thumb, any part of the mesh that requires shape motions in the scene is not included with the main model.

Sonic

ID Description
0 Root node
1 Root node 2 (Main array for the body)
2 Body node (Parent)
3 Body node (Parent 2)
4 Legs + Tail node (Parent)
5 Legs + Tail node (Parent 2)
6 Left Leg (Parent)
7 Left Leg node (hip)
8 Left Leg node (thigh)
9 Left Leg node (knee)
10 Left Leg node (end)
11 Left Foot node (Parent)
12 Left Foot node (Heel)
13 Left Foot node (Toe)
14 Left Foot node (End)
15 Tail (Parent)
16 Tail node (base)
17 Tail node (2nd from base)
18 Tail node (2nd from end)
19 Tail node (end)
20 Right Leg (Parent)
21 Right Leg node (hip)
22 Right Leg node (thigh)
23 Right Leg node (knee)
24 Right Leg node (end)
25 Right Foot node (Parent)
26 Right Foot node (Heel)
27 Right Foot node (toe)
28 Right Foot node (end)
29 Chest node (Parent)
30 Chest node (middle)
31 Head + Arms node (Parent)
32 Head + Arms node (Parent 2)
33 Right Arm (Parent, contains arm array)
34 Right Arm (Parent 2)
35 Right Arm node (base)
36 Right Arm node (elbow)
37 Right Arm node (wrist)
38 Right hand (Parent)
39 Right hand (Parent 2)
40 Face node (Parent)
41 Face node (Parent 2)
42 Face node (Parent 3)
43 Muzzle (Parent)
44 Head (Parent)
45 Right eye (Parent)
46 Right eye
47 Left eye (Parent)
48 Left eye
49 Left Arm (Parent, contains arm array)
50 Left Arm (Parent 2)
51 Left Arm node (base)
52 Left Arm node (elbow)
53 Left Arm node (wrist)
54 Left hand (Parent)
55 Left Hand (Parent 2)

Shadow

ID Description
0 Root node
1 Root node 2 (Main array for the body)
2 Body node (Parent)
3 Body node (Parent 2)
4 Legs + Tail node (Parent)
5 Legs + Tail node (Parent 2)
6 Right Leg (Parent)
7 Right Leg node (hip)
8 Right Leg node (thigh)
9 Right Leg node (knee)
10 Right Leg node (end)
11 Right Foot node (Parent)
12 Right Foot node (Heel)
13 Right Foot node (Toe)
14 Right Foot node (End)
15 Tail (Parent)
16 Tail node (base)
17 Tail node (2nd from base)
18 Tail node (2nd from end)
19 Tail node (end)
20 Left Leg (Parent)
21 Left Leg node (hip)
22 Left Leg node (thigh)
23 Left Leg node (knee)
24 Left Leg node (end)
25 Left Foot node (Parent)
26 Left Foot node (Heel)
27 Left Foot node (toe)
28 Left Foot node (end)
29 Chest node (Parent)
30 Chest node (middle)
31 Head + Arms node (Parent)
32 Head + Arms node (Parent 2)
33 Right Arm (Parent, contains arm array)
34 Right Arm (Parent 2)
35 Right Arm node (base)
36 Right Arm node (elbow)
37 Right Arm node (wrist)
38 Right hand (Parent)
39 Face node (Parent)
40 Face node (Parent 2)
41 Face node (Parent 3)
42 Muzzle (Parent)
43 Head (Parent)
44 Right eye (Parent)
45 Right eye
46 Left eye (Parent)
47 Left eye
48 Left Arm (Parent, contains arm array)
49 Left Arm (Parent 2)
50 Left Arm node (base)
51 Left Arm node (elbow)
52 Left Arm node (wrist)
53 Left hand (Parent)

Knuckles

ID Description
0 Root node
1 Root node 2 (Main array for the body)
2 Body node (Parent)
3 Body node (Parent 2)
4 Legs + Tail node (Parent)
5 Legs + Tail node (Parent 2)
6 Right Leg (Parent)
7 Right Leg node (hip)
8 Right Leg node (thigh)
9 Right Leg node (knee)
10 Right Leg node (end)
11 Right Foot node (Parent, contains shoe array)
12 Right Foot node (Parent 2)
13 Right Foot node (Heel)
14 Right Foot node (Toe)
15 Right Foot node (End)
16 Left Leg (Parent)
17 Left Leg node (hip)
18 Left Leg node (thigh)
19 Left Leg node (knee)
20 Left Leg node (end)
21 Left Foot node (Parent, contains shoe array)
22 Left Foot node (Parent 2)
23 Left Foot node (Heel)
24 Left Foot node (toe)
25 Left Foot node (end)
26 Tail (Parent)
27 Tail node (base)
28 Tail node (2nd from base)
29 Tail node (2nd from end)
30 Tail node (end)
31 Chest node (Parent)
32 Chest node (middle)
33 Head + Arms node (Parent)
34 Head + Arms node (Parent 2)
35 Left Arm (Parent, contains arm array)
36 Left Arm (Parent 2)
37 Left Arm node (base)
38 Left Arm node (elbow)
39 Left Arm node (wrist)
40 Left hand (Parent)
41 Face node (Parent)
42 Face node (Parent 2)
43 Face node (Parent 3)
44 Muzzle (Parent)
45 Head (Parent)
46 Right eye (Parent)
47 Right eye
48 Left eye (Parent)
49 Left eye
50 Right Arm (Parent, contains arm array)
51 Right Arm (Parent 2)
52 Right Arm node (base)
53 Right Arm node (elbow)
54 Right Arm node (wrist)
55 Right hand (Parent)

Rouge

ID Description
0 Root node
1 Root node 2 (Main array for the body)
2 Body node (Parent)
3 Body node (Parent 2)
4 Legs + Tail node (Parent)
5 Legs + Tail node (Parent 2)
6 Right Leg (Parent)
7 Right Leg node (hip)
8 Right Leg node (thigh)
9 Right Leg node (knee)
10 Right Leg node (end)
11 Right Foot node (Parent, contains shoe array)
12 Right Foot node (Parent 2)
13 Right Foot node (Heel)
14 Right Foot node (Toe)
15 Right Foot node (End)
16 Left Leg (Parent)
17 Left Leg node (hip)
18 Left Leg node (thigh)
19 Left Leg node (knee)
20 Left Leg node (end)
21 Left Foot node (Parent, contains shoe array)
22 Left Foot node (Parent 2)
23 Left Foot node (Heel)
24 Left Foot node (toe)
25 Left Foot node (end)
26 Tail (Parent)
27 Tail node (base)
28 Tail node (2nd from base)
29 Tail node (2nd from end)
30 Tail node (end)
31 Chest node (Parent)
32 Chest node (middle)
33 Head + Arms node (Parent)
34 Head + Arms node (Parent 2)
35 Right Arm (Parent, contains arm array)
36 Right Arm (Parent 2)
37 Right Arm node (base)
38 Right Arm node (elbow)
39 Right Arm node (wrist)
40 Right hand (Parent)
41 Right hand (Parent 2)
42 Right thumb node (Parent)
43 Right thumb node (middle)
44 Right thumb node (tip)
45 Right fingers node (Parent)
46 Right fingers node (middle)
47 Right fingers node (tip)
48 Right pinkie node (Parent)
49 Right pinkie node (middle)
50 Right pinkie node (tip)
51 Right hand
52 Face node (Parent)
53 Face node (Parent 2)
54 Face node (Parent 3)
55 Muzzle (Parent)
56 Head (Parent)
57 Right eye (Parent)
58 Right eye
59 Left eye (Parent)
60 Left eye
61 Left Arm (Parent, contains arm array)
62 Left Arm (Parent 2)
63 Left Arm node (base)
64 Left Arm node (elbow)
65 Left Arm node (wrist)
66 Left hand (Parent)
67 Left Hand (Parent 2)
68 Left thumb node (Parent)
69 Left thumb node (middle)
70 Left thumb node (tip)
71 Left fingers node (Parent)
72 Left fingers node (middle)
73 Left fingers node (tip)
74 Left pinkie node (Parent)
75 Left pinkie node (middle)
76 Left pinkie node (tip)
77 Left hand

Mech Tails

ID Description
0 Mech's Root node
1 Mech's Legs node (Parent)
2 Mech's Chest node (Parent)
3 Vulcan Cannon
4 Vulcan Cannon node
5 Missile Blaster node (base)
6 Missile Blaster node (barrel)
7 Missile Blaster node (tip)
8 Laser Blaster node (base)
9 Laser Blaster node (barrel)
10 Laser Blaster node (tip)
11 Bazooka node (base)
12 Bazooka node (barrel)
13 Bazooka node (tip)
14 Cannon node
15 Pilot's root node
16 Pilot's Chest node
17 Pilot's Left Arm node (base, contains array for arm)
18 Pilot's Left Arm node (Parent)
19 Pilot's Left Arm node (Armpit)
20 Pilot's Left Arm node (elbow)
21 Pilot's Left Arm node (wrist)
22 Pilot's Right arm node (base, contains array for arm)
23 Pilot's Right arm node (Parent)
24 Pilot's Right arm node (armpit)
25 Pilot's Right arm node (elbow)
26 Pilot's Right arm node (wrist)
27 Pilot's Face node (Parent)
28 Pilot's Face node (Parent 2)
29 Pilot's Face node (Parent 3)
30 Pilot's Right eye
31 Pilot's Left eye
32 Pilot's face node (end)
33 Yoke node
34 Lock-on Laser node
35 Mech's Right foot node (Parent)
36 Mech's Right foot node (Parent 2)
37 Mech's Right foot node (base)
38 Mech's Right foot node (calf, Parent)
39 Mech's Right foot node (calf)
40 Booster (Right)
41 Mech's Right foot node (Foot, Parent 1)
42 Mech's Right foot node (Foot, Parent 2)
43 Mech's Right foot node (Foot, Parent 3)
44 Mech's Right foot node (Foot)
45 Mech's Right foot node (Foot, tip)
46 Mech's Left foot node (Parent)
47 Mech's Left foot node (Parent 2)
48 Mech's Left foot node (base)
49 Mech's Left foot node (calf, Parent)
50 Mech's Left foot node (calf)
51 Booster (Left)
52 Mech's Left foot node (Foot, Parent 1)
53 Mech's Left foot node (Foot, Parent 2)
54 Mech's Left foot node (Foot, Parent 3)
55 Mech's Left foot node (Foot)
56 Mech's Left foot node (Foot, tip)

Mech Eggman

ID Description
0 Root node
1 Mech's Legs node (Parent)
2 Mech's Right Leg node (base)
3 Mech's Right Leg node (calf)
4 Mech's Right Foot node (heel)
5 Mech's Right Foot node (toe)
6 Jet Engine (Right)
7 Mech's Left Leg node (base)
8 Mech's Left Leg node (calf)
9 Mech's Left Leg node (heel)
10 Mech's Left Leg node (toe)
11 Jet Engine (Left)
12 Mech's Chest node (Parent)
13 Blaster node
14 Lock-on Laser node
15 Accessories node? (Parent)
16 Protection Armor
17 Vulcan Cannon
18 Vulcan Cannon node
19 Missile Blaster node (base)
20 Missile Blaster node (barrel)
21 Missile Blaster node (tip)
22 Large Cannon
23 Large Cannon node
24 Laser Blaster node (base)
25 Laser Blaster node (barrel)
26 Laser Blaster node (tip)
27 Laser Blaster node (glow)
28 Pilot's root node
29 Pilot's chest node (Contains array for the body)
30 Pilot's Arms node (Parent)
31 Pilot's Left Arm node (Parent)
32 Pilot's Left Arm node (base)
33 Pilot's Left Arm node (elbow)
34 Pilot's Left Arm node (wrist)
35 Pilot's Left hand node (Parent)
36 Pilot's Right Arm node (Parent)
37 Pilot's Right arm node (base)
38 Pilot's Right arm node (elbow)
39 Pilot's Right arm node (wrist)
40 Pilot's Right hand node (Parent)
41 Pilot's Face node (Parent)
42 Pilot's Face node (Parent 2)
43 Pilot's Face node (Parent 3)

Tails

ID Description
0 Root node
1 Root node 2 (Main array for the body)
2 Body node (Parent)
3 Chest node (Parent)
4 Chest node (middle)
5 Head + Arms node (Parent)
6 Head + Arms node (Parent 2)
7 Left Arm (Parent, contains arm array)
8 Left Arm (Parent 2)
9 Left Arm node (base)
10 Left Arm node (elbow)
11 Left Arm node (wrist)
12 Left hand (Parent)
13 Left hand (Parent 2)
14 Right Arm (Parent, contains arm array)
15 Right Arm (Parent 2)
16 Right Arm node (base)
17 Right Arm node (elbow)
18 Right Arm node (wrist)
19 Right hand (Parent)
20 Right Hand (Parent 2)
21 Face node (Parent)
22 Face node (Parent 2)
23 Face node (Parent 3)
24 Eyes (Parent)
25 Left Eye
26 Right eye
27 Muzzle (Parent)
28 Head (Parent)
29 Body node (Parent 2)
30 Legs + Tail node (Parent)
31 Legs + Tail node (Parent 2)
32 Right Leg (Parent)
33 Right Leg node (hip)
34 Right Leg node (thigh)
35 Right Leg node (knee)
36 Right Leg node (end)
37 Right Foot node (Parent, contains shoe array)
38 Right Foot node (Parent 2)
39 Right Foot node (Heel)
40 Right Foot node (Toe)
41 Right Foot node (End)
42 Tails (Parent)
43 Right tail
44 Left tail
45 Left Leg (Parent)
46 Left Leg node (hip)
47 Left Leg node (thigh)
48 Left Leg node (knee)
49 Left Leg node (end)
50 Left Foot node (Parent, contains shoe array)
51 Left Foot node (Parent 2)
52 Left Foot node (Heel)
53 Left Foot node (toe)
54 Left Foot node (end)

Eggman

ID Description
0 Root node
1 Root node 2 (Main array for the body)
2 Body node (Parent)
3 Chest node (Parent)
4 Chest node (middle)
5 Head + Arms node (Parent)
6 Head + Arms node (Parent 2)
7 Left Arm (Parent)
8 Left Arm node (base)
9 Left Arm node (elbow)
10 Left Arm node (wrist)
11 Left Hand node (Parent)
12 Left Hand node (Parent 2)
13 Right Arm (Parent)
14 Right Arm node (base)
15 Right Arm node (elbow)
16 Right Arm node (wrist)
17 Right hand node (Parent)
18 Right hand node (Parent 2)
19 Face node (Parent)
20 Face node (Parent 2)
21 Face node (Parent 3)
22 Body node (Parent 2)
23 Legs node (Parent)
24 Legs node (Parent 2)
25 Right Leg node (Parent)
26 Right Leg node (hip)
27 Right Leg node (thigh)
28 Right Leg node (knee)
29 Right Leg node (End)
30 Right Foot node (Parent)
31 Right Foot node (calf)
32 Right Foot node (heel)
33 Right Foot node (toe)
34 Left Leg node (Parent)
35 Left Leg node (hip)
36 Left Leg node (thigh)
37 Left Leg node (knee)
38 Left Leg node (end)
39 Left Foot node (Parent)
40 Left Foot node (calf)
41 Left Foot node (heel)
42 Left Foot node (toe)

Amy

ID Description
0 Root node
1 Root node 2 (Main array for the body)
2 Body node (Parent)
3 Body node (Parent 2)
4 Legs + Tail node (Parent)
5 Legs + Tail node (Parent 2)
6 Right Leg (Parent)
7 Right Leg node (hip)
8 Right Leg node (thigh)
9 Right Leg node (knee)
10 Right Leg node (end)
11 Right Foot node (Parent)
12 Right Foot node (Heel)
13 Right Foot node (Toe)
14 Right Foot node (End)
15 Tail (Parent)
16 Tail node (base)
17 Tail node (2nd from base)
18 Tail node (2nd from end)
19 Tail node (end)
20 Left Leg (Parent)
21 Left Leg node (hip)
22 Left Leg node (thigh)
23 Left Leg node (knee)
24 Left Leg node (end)
25 Left Foot node (Parent)
26 Left Foot node (Heel)
27 Left Foot node (toe)
28 Left Foot node (end)
29 Chest node (Parent)
30 Chest node (middle)
31 Head + Arms node (Parent)
32 Head + Arms node (Parent 2)
33 Face node (Parent)
34 Face node (Parent 2)
35 Muzzle (Parent)
36 Eyes (Parent)
37 Right eye
38 Left eye
39 Face node (Parent 3)
40 Head (Parent)
41 Right Arm (Parent, contains arm array)
42 Right Arm (Parent 2)
43 Right Arm node (base)
44 Right Arm node (elbow)
45 Right Arm node (wrist)
46 Right hand (Parent)
47 Right hand (Parent 2)
48 Left Arm (Parent, contains arm array)
49 Left Arm (Parent 2)
50 Left Arm node (base)
51 Left Arm node (elbow)
52 Left Arm node (wrist)
53 Left hand (Parent)
54 Left Hand (Parent 2)

Super Sonic/Super Shadow

ID Description
0 Root node
1 Root node 2 (Main array for the body)
2 Body node (Parent)
3 Body node (Parent 2)
4 Legs + Tail node (Parent)
5 Legs + Tail node (Parent 2)
6 Right Leg (Parent)
7 Right Leg node (hip)
8 Right Leg node (thigh)
9 Right Leg node (knee)
10 Right Leg node (end)
11 Right Foot node (Parent, contains shoe array)
12 Right Foot node (Parent 2)
13 Right Foot node (Heel)
14 Right Foot node (Toe)
15 Right Foot node (End)
16 Left Leg (Parent)
17 Left Leg node (hip)
18 Left Leg node (thigh)
19 Left Leg node (knee)
20 Left Leg node (end)
21 Left Foot node (Parent, contains shoe array)
22 Left Foot node (Parent 2)
23 Left Foot node (Heel)
24 Left Foot node (toe)
25 Left Foot node (end)
26 Tail (Parent)
27 Tail node (base)
28 Tail node (2nd from base)
29 Tail node (2nd from end)
30 Tail node (end)
31 Chest node (Parent)
32 Chest node (middle)
33 Head + Arms node (Parent)
34 Head + Arms node (Parent 2)
35 Left Arm (Parent, contains arm array)
36 Left Arm (Parent 2)
37 Left Arm node (base)
38 Left Arm node (elbow)
39 Left Arm node (wrist)
40 Left hand (Parent)
41 Left hand (Parent 2)
42 Face node (Parent)
43 Face node (Parent 2)
44 Face node (Parent 3)
45 Muzzle (Parent)
46 Head (Parent)
47 Right eye (Parent)
48 Right eye
49 Left eye (Parent)
50 Left eye
51 Right Arm (Parent, contains arm array)
52 Right Arm (Parent 2)
53 Right Arm node (base)
54 Right Arm node (elbow)
55 Right Arm node (wrist)
56 Right hand (Parent)
57 Right Hand (Parent 2)

EXXXX_0 Information

Screen Effects

Information starting at 0x9800 denotes any screen effects that occur within the scene, such as fades or color changes. Each chunk of this information is 64 bytes long, with the last 52 bytes acting as a buffer.

Offset Type Description
0 UINT32 Frame in which the screen information takes effect
4 UINT32 Fade control. 1 is a fade, while 2 is a hard cut
8 Char Array [4] ASCII color (ARGB)

Stage Lighting Information

Information starting at 0xA800 pertains to any scene lighting present in the cutscene. Each piece of data is 56 bytes long, with the last 32 bytes acting as a buffer. These parameters are seemingly unused in SA2B.

Offset Type Description
0 UINT32 Frame in which the lighting information takes effect
4 UINT32 Fade control. 1 is a fade, while 2 is a hard cut
8 Float Red
C Float Green
10 Float Blue
14 Float Light Intensity

Object Lighting Information

Starting at 0x26800 are 68-byte chunks that dictate the object lighting information for the corresponding cutscene. The last 20 bytes can be considered a buffer for now.

Offset Type Description
0 UINT32 Frame in which the lighting information takes effect
4 UINT32 Fade control. 1 is a hard cut, while 2 is a fade-in from the previous set of instructions
8 Float Light Direction Vector (X-Component)
C Float Light Direction Vector (Y-Component)
10 Float Light Direction Vector (Z-Component)
14 Float Red
18 Float Green
1C Float Blue
20 Float Light intensity
24 Float Ambient R
28 Float Ambient G
2C Float Ambient B

Video Overlay Information

Information starting at 0x39800 determines whether or not an FMV overlay is meant to be loaded in a scene. Depending on the settings, the video can either be superimposed over the screen, or a mesh that's in the cutscene. The chunks are 48 bytes long, with the last 16 acting as a buffer. In the Dreamcast and GameCube versions, .m1v files are loaded for these cases. The 2012 re-release checks for and loads the .sfd equivalents of the video overlays.

Offset Type Description
0 UINT32 Frame in which the video begins to play
4 Char Array [4] Video tint settings, in ARGB format
8 Float Depth value. A higher value means the video overlay will be pushed further away from the screen
C Overlay control. A value of 01 FF represents a screen overlay, while 02 00 places the video over a mesh in the scene
10 Text Name of the video file that's to be loaded

EXXXX_1-J Information

Suffix Language
1 English
2 French
3 Spanish
4 German
5 Italian (2012 port only)
J Japanese

The start of the file contains subtitle data. Each data set is 8 bytes long and is tied to the order in which subtitles are loaded in the scene.

Offset Type Description
0 UINT32 Frame in which the subtitle is set to appear.
4 UINT34 Number of frames in which the subtitle is to remain onscreen.

Information starting at 0x800 and continuing until the end of the file contains audio timings for voices and BGM for each language. Each chunk is 72 bytes in size. Voice clip numbers are relative to each scene, so the "first" entry in E0000 won't be the same entry as the one loaded in E0102, for example.

Offset Type Description
0 UINT32 Frame in which the audio clip begins to play
4 UINT32 Number of the voice clip that's to be loaded if applicable, in multiples of 10. i.e, FF FF 0A 00 is 10, or the first clip applicable to the scene. FF FF FF FF denotes a null voice clip entry
8 Text Name of audio track that's to be loaded, if applicable

Mini-Event Scenes

Scenes that are labeled as MEXXXX.PRS in the event files are cutscenes that occur within a game state, such as before certain boss fights like Big Foot and Flying Dog. The contents of these files are not as robust as those of the main cutscenes, often only containing animation and shape motion data for the designated characters. As these scenes rely on the player models, specific parts of their body are omitted and replaced with cutscene-specific variants for the duration of the scene, with the exception of Mech Eggman as he only requires animation data. The contents of these files can be broken down as follows:

Offset Type Description
0 UINT32 An indicator of the characters in the scene. Can be 01 (Sonic), 02 (Shadow), 03 (Sonic and Shadow), 10 (Knuckles), 20 (Rouge), 30 (Knuckles and Rouge), 80 (Mech Eggman)
4 Pointer Camera information
8 Pointer Sonic's pointer array (if applicable)
C Pointer Shadow's pointer array (if applicable)
10 Pointer Mechless Tails' pointer array (unused)
14 Pointer Mechless Eggman's pointer array (unused)
18 Pointer Knuckles' pointer array (if applicable)
1C Pointer Rouge's pointer array (if applicable)
20 Pointer Mech Tails' pointer array (unused)
24 Pointer Mech Eggman's pointer array (if applicable)

For Sonic, Shadow, and Knuckles' player models, any models attached to nodes 42 (Left Hand), 47 (Mouth), 49 (Head), and 61 (Right Hand) will be omitted for the duration of the scene. Rouge only omits models attached to nodes 47 and 49.

The order for each character's pointer array always begins with the player model's animations, followed by the model -> animation -> shape motion data sets for each cutscene model. The head's data goes first, followed by the mouth, then the left hand, and finally the right hand.

The DC base pointer for these scenes is 0xCB00000
The base pointer for these scenes in SA2B is 0x816DFE60

MEXXXX_0-5 Information

Suffix Language
0 Japanese
1 English
2 French
3 Spanish
4 German
5 Italian (2012 port only)

Much like the _1 to _J files for the main event cutscenes, MEXXXX_0 to _5 dictates audio and subtitle information for the mini-event scenes. These files are uncompressed.

The start of the file contains subtitle timings and their duration. Each data set is 8 bytes in size and is tied to the order in which subtitles are loaded.

Offset Type Description
0 UINT32 Frame in which the subtitle is set to appear
4 UINT32 Number of frames in which the subtitle remains onscreen after it has been loaded

Information starting at 0x100 contains timings for each language. Each chunk is 76 bytes in size. Note that voice clip entries are dependent on the scene, so the "first" entry of ME0001 isn't the same as the one found in ME0007, for example.

Offset Type Description
0 UINT32 Frame in which the instruction is set to begin
4 Byte Screen control. 1 is a normal fade-in, while 2 maintains the screen fade tint until the mini-event is finished.
5 UINT16 Sound effect ID that is to be loaded, if applicable. FF FF is considered a null value. Usually written as ?? FF.
7 Byte Null (00)
8 UINT16 Number of voice clip that is to be loaded, if applicable, in multiples of 10. Valid entries are written as 00 ??, while FF FF is a null value.
A Byte BGM control. Setting this value to 2D (45) will cause the level's music to play at the frame specified.

References


Sonic Community Hacking Guide
General
Sonic Music Hacking Guide | SonED2 Manual
Game-Specific
Sonic the Hedgehog (16-bit) | Sonic the Hedgehog (8-bit) | Sonic Eraser | Sonic CD (prototype 510) | Sonic CD | Sonic CD (PC) | Sonic CD (2011) | Sonic 2 (Nick Arcade prototype) | Sonic 2 (Simon Wai prototype) | Sonic 2 (16-bit) | Sonic 2 (8-bit) | Sonic 2 & Knuckles | Dr. Robotnik's Mean Bean Machine | Sonic Triple Trouble | Sonic 3 | Sonic & Knuckles | Sonic the Hedgehog 3 & Knuckles | Sonic & Knuckles Collection | Sonic Crackers | Sonic 3D: Flickies' Island | Chaotix | Sonic R PC | Sonic Jam 6 | Sonic Advance | Sonic Advance 2 | Sonic Advance 3 | Sonic Battle | Sonic Adventure | Sonic Adventure DX: Director's Cut | Sonic Adventure DX: PC | Sonic Adventure (2010) | Sonic Shuffle | Sonic Adventure 2 | Sonic Adventure 2: Battle | Sonic Adventure 2 (PC) | Sonic Heroes | Shadow the Hedgehog | Sonic Riders | Sonic the Hedgehog (2006) | Sonic & Sega All-Stars Racing | Sonic Unleashed (Xbox 360/PS3) | Sonic Colours | Sonic Generations | Sonic Lost World | Sonic Forces
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 | Subroutine Equivalency List | 68000 Instruction Set | 68000 ASM-to-Hex Code Reference | VDP Documentation | Official Sega 32X Documentation | Official Mega-CD Documentation | Official Sega Mega Drive Documentation