Notes:WWF SmackDown! 2: Know Your Role
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.
Contents
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.
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 |