the cutting room mirror

WWF SmackDown! 2: Know Your Role

This article has a talk page!This article has a talk page!
view on tcrf.net

This page contains notes for the game WWF SmackDown! 2: Know Your Role.

Any mentioned file names in the first two sections refer to those files created by RRUnpack. All file data mentioned is little endian.

Cutscene Information#

Playing a Cutscene#

To play a cutscene, use the GameShark code 8009611e xxxx to play them at the next juncture. A list of valid IDs, as well as what they do, can be found here.

(Source: jakeypearce (cutscene IDs with descriptions))

How They Work#

Cutscene data is spread amongst many files. The first, /c2.dpac/CSN/emtb.ukn, houses the static information relating to setup. It is basically a flat array of records 28 bytes in size, terminated by a record filled with 0xff, layed out as such:

struct CutsceneData
{
    ushort unknown; // 2 bytes
    ushort cutsceneId; // 2 bytes
    ushort staggeredTextIds[6]; // 12 bytes
    byte staggeredAudioIds[6]; // 6 bytes
    uint flags; // 4 bytes
};

The first unknown field is an ever increasing index or offset, but for what, is unknown.

  • cutsceneID identifies this cutscene.
  • staggeredTextIds controls which text is rendered at various stages of the scene. The values are nothing more than line numbers for /c2.dpac/CSN/evtx.ukn which is a standard Windows text file, minus 1. A value of 999 (0x3e7) indicates no text.
  • staggeredAudioIds are the same as above except they control which sound to play from XA.pac. A value of 255 (0xff) indicates no sound. Values less than 0x64 are the various character quotes, 0x64-0x74 is match BGM/menu music and 0x75-0x78 is the theme music of the characters in the scene.
  • flags are seemingly unused, since changing them has no effect. Most are 0 anyway.

The 'staggered' values take effect at progressive points throughout the scene. The first entry indicates the start of the cutscene, and successive entries at predefined points further along. Audio can also be baked in to the cutscene definition. The Raw is Jericho scene on the Unused Text page does this for Jericho's voice clip.

Not defined in this data is which wrestlers are in the scenes. Since almost any wrestler can appear in any scene, this is determined at runtime instead.

When it's time to play a scene in season mode, the known bits of this structure are loaded into memory at 8009611e (for both EU and US games) with some interloping data inbetween like so:

struct LoadedCutsceneData
{
    ushort cutsceneId; // 8009611e
    byte cutsceneCharacters[4]; // 80096120-80096123
    ushort staggeredTextIds[6]; // 80096124-8009612f
    byte staggereAudioIds[6]; // 80096130-80096135
};

The new kid on the block, cutsceneCharacters, controls which wrestlers are inserted into the scene. Each can have up to 4 loaded, though how many are actually used depends on the cutscene. Note that Big Show and Ken Shamrock cannot be used in cutscenes; attempting to use them will revert to The Rock, the default wrestler.

Putting it all together, the Raw is Jericho scene can be triggered as the next scene with the following GameShark code:

8009611E 0814 or 0815 // cutscene id (there are two for this event)
30096120 0009 // first cutscene character id (Chris Jericho)
80096124 03e7 // disable first stage dialog line (in case the scene we hijacked was going to load one)
80096126 0238 // enable second stage to "MN is Jericho" which is line 569 (0x239 - 1)
30096130 00FF // disable first speech (just in case)
30096131 0011 // Enable Lawler's "Everybody loves this guy" quote

The guts of the cutscene data including camera and character movements, locations, and predefined audio is in the /ev.dpac/evmt/xxxx.pac/0000.ukn files. Working out which of the 104 pac directories a scene's info is in requires some maths.

  • CutsceneId * 0x66666667 = (a 64-bit result)
  • (High 32-bits of result / 8) + cutsceneIdSignBitValue (always 0) + 1 = pac file

Using the example scene again, with its id of 0x814:

  • 0x814 * 0x66666667 = 0x33B3333380c
  • High dword of 33B3333380c = 0x33b
  • 0x33b / 8 = 0x67
  • 0x67 + 0 + 1 = 0x68 (0104.pac)

The format of the 0000.ukn files is as follows:

struct CutDefFileHeader
{
    uint numEntries; // 0x0-0x3
    CutsceneDataEntry entries[numEntries]; // 0x4 - (0x4 + (numEntries * 8))
    // data follows
};

struct CutsceneDataEntry
{
    ushort entryType;
    byte unk1;
    byte unk2;
    ushort fileOffset;
    ushort unk3;
};
  • entryTypes takes only a couple of values. The first 10 entries seem to be special as they use ids 0x100, 0x200 upto 0xa00 that aren't used anywhere else.
  • fileOffset is actually stored as a 20-bit number, and unk3 as 12-bit. The bottom 4 bits of unk3 are the top 4 of the file offset, and need to be shifted out of unk3 to get its true value.

The data pointed at by the reconstituted file offset is a bytecode stream. The code which executes this lives in /(p)exe.dpac/exe/0011.bpe, the exe that displays cutscenes.

Other Stuff#

Entrances also use the cutscene bytecode format, and the definition files are situated in the /dent/ent folder. The subfolders contain assets for specific arena entrance nameplates.

The game executables live in /(p)exe.dpac/exe/. These, as well as all others with a BPE extension, are compressed with Yuke's BytePair Encoding. QuickBMS with the Yuke.bmsscript can decompress them.

Their responsibilities are:

  • 0000 - Entrances
  • 0001 - Main Menu
  • 0002 - Season (Menu Parts)
  • 0003 - Create A PPV
  • 0004 - Belt Records
  • 0005 - Rankings
  • 0006 - Title Sequence
  • 0007 - Create A Superstar (Appearance)
  • 0008 - Create a Taunt
  • 0009 - Create a Stable / Manager
  • 0010 - Options Menu
  • 0011 - Season (Cutscenes)
  • 0013 - Create A Superstar (Moves)

Loading screens are compressed TIMs in /LD/Load.

The exe files still has a fair amount of debug spew in them, which can be viewed with pcsx's console output.

IDs#

Characters#

ID

Character

00

The Rock

01

Stone Cold

02

The Undertaker

03

Triple H

04

X-Pac

05

Road Dogg

06

Billy Gunn

07

Big Show

08

Kane

09

Chris Jericho

0A

Kurt Angle

0B

Chris Benoit

0C

Eddie Guerrero

0D

Dean Malenko

0E

Perry Saturn

0F

Tazz

10

The Goodfather

11

D'Lo Brown

12

Rikishi

13

Grand Master Sexay

14

Scotty Too Hotty

15

Edge

16

Christian

17

Faarooq

18

Bradshaw

19

Buh Buh Ray Dudley

1A

D-Von Dudley

1B

Matt Hardy

1C

Jeff Hardy

1D

Hardcore Holly

1E

Crash

1F

Test

20

Albert

21

Big Boss Man

22

Ken Shamrock

23

Val Venis

24

Al Snow

25

Mark Henry

26

Viscera

27

Gangrel

28

Steve Blackman

29

Essa Rios

2A

Chyna

2B

Tori

2C

Ivory

2D

Jacqueline

2E

Trish Stratus

2F

The Kat

30

Lita

31

Vince McMahon

32

Shane McMahon

33

Stephanie McMahon

34

Paul Bearer

35

Michael Cole

36

Mankind

37

Bull Buchanan

38

TAKA Michinoku

39

Funaki

3A

Pat Patterson

3B

Gerald Brisco

3C

Pete Gas

3D

Rodney

3E

Joey Abs

3F

Shawn Michaels

40

Mick Foley

41

Cactus Jack

42

Steven Richards

43

Debra

44

Unknown

45

Unknown

46

Unknown

47

Unknown

48

AVERAGE

49

POWERFUL

4A

SPEEDY

4B

TECHNICAL

4C

ROUGH

4D

Unknown A

4E

Unknown B

4F

Unknown C

50

Unknown D

51

Unknown E

52

Unknown F

53

Unknown G

54

Unknown H

55

Unknown I

56

Unknown J

57

Unknown K

58

Unknown L

59

Unknown M

5A

Unknown N

5B

Unknown O

5C

Unknown P

5D

Unknown Q

5E

Unknown R

5F

Unknown S

60

Unknown T

61

Unknown U

62

Unknown V

63

Unknown W

64

Unknown X

65

Unknown Y

66

Vince McMahon (cutscene)

67

The Undertaker (cutscene?)

68

Stone Cold (cutscene)

69

Police 1 (who30)

6A

Police 2 (who31)

6B

Police 3 (who32)

6C

Staff 1 (who33)

6D

Staff 2 (who34)

6E

Staff 3 (who35)

C8

CAW Slot #1

C9

CAW Slot #2

CA

CAW Slot #3

CB

CAW Slot #4

CC

CAW Slot #5

CD

CAW Slot #6

CE

CAW Slot #7

CF

CAW Slot #8

D0

CAW Slot #9

D1

CAW Slot #10

  • 44 to 47 all appear with Right to Censor uniform that Steven Richards and Bull Buchanan use, plus a riot gear helmet (Original Head Model 15).
  • 48 to 4C are all Create-A-Superstar moveset templates; all of them use Stone Cold Steve Austin's model.

Arenas#

Use 30096344 to select an arena. With regards to cutscene usage, most cutscenes should work in any arena; however, some cutscenes may only work in certain arenas (for instance, the Undertaker motorcycle cutscenes only work on specially marked versions of the SmackDown!/Raw entrance ramps).

ID

Arena

00

Arena 1 (SmackDown!)

01

Arena 2 (RAW is WAR)

02

Arena 3 (PPV)

03

Entrance 1 (SmackDown!)

04

Entrance 2 (RAW is WAR)

05

Lobby

06

2nd Floor

07

1st Basement

08

Restaurant 1 (Lobby)

09

Plaza

0A

Diner

0B

VIP Room

0C

Dressing Room

0D

Locker Room

0E

Shower Room

0F

Parking Lot

10

Kitchen

11

Boiler Room

12

Restaurant 2 (WWF New York)

13

Entrance 1 (SmackDown!)
for Undertaker motorcycle cutscene

14

Entrance 2 (RAW is WAR)
for Undertaker motorcycle cutscene

15

Plaza for Backlash 2000 cutscene

16

Diner for cutscene

17

Parking for cutscene

18

Voidness
for unlocks/WrestleMania promo

Mats#

Use 30096346 to select a ring mat. To use the neutral mat, the code must be on at all times, as it is otherwise used for the random slot.

ID

Arena

00

Normal 1 (SmackDown!, apron only)

01

Normal 2 (RAW is WAR, apron only)

02

SmackDown!

03

RAW is WAR

04

WrestleMania 2000

05

Backlash

06

Judgment Day

07

King of the Ring

08

Fully Loaded

09

SummerSlam

0A

Unforgiven

0B

No Mercy

0C

Survivor Series

0D

Armageddon

0E

Royal Rumble

0F

No Way Out

10

Heat

11

Neutral mat