If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Notes:WWF SmackDown! 2: Know Your Role

From The Cutting Room Floor
Jump to navigation Jump to search

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