Jump to content

Sound Mapping (from .pac to .pck)


CirclePete

Recommended Posts

[[NOTE :
The way I decided to write this post is kind of a "story". I don't really know what is common knowledge about this topic, but as it starts from scratch, it might be accessible for someone who is new to the game structure, like I was a few days ago.
Of course, if someone wants to suggest me interlocutors who have greater knowledge, I'd be glad to discuss with them and may be join a team of "analysts". My English is far from perfect, but I can also write tutorials or submit wiki entries to peer review.
]]

Hi,

I am a newcomer in this modding community (I've bought the game last week). I don't know how to build 3D-models and I wouldn't be able to code a modding tool (at least not with a GUI), but I like puzzles. I'm not pretending that I am good at solving them, I just love the challenge it gives me.

So the first mystery that tickled my curiosity is how does ring announcements work. I mean how does the game maps a superstar, a title, a weight to the corresponding sound in a .pck file.

The answer probably lies in the ./pac/audio/ folder and its .pac containers.

Most .pac files comes in different versions: the "Master version", which is the game as originally released and for which files have no suffix, and dlc versions with a suffix _p?? (where ?? is a number). For example:

_p10	NXT Generation Pack
_p30	Enduring Icons Pack

May be it will be easier at some point to to focus on the sounds from these patches as they include fewer superstars (5 each).

[What you are about to read is a work in progress. Please be indulgent. I will update it with my own findings and, hopefully, suggestions from some of you. I will also reformat it to make it easier to read, when the amount of content will be bigger.]

My first interesting finding was in sound[_p10/_p30].def files. As I understand it, this extension type contains information about how the game maps the .pac files to a virtual unpacked (repacked?) tree structure

  •         D:\Perforcework\WWE\WWE18\GameData\Master\...
  •         D:\Perforcework\WWE\WWE18\GameData\Patch10\...
  •         etc.

In particular, sound[_p10/_p30].def deals with the sound scripts.

cd D:\perforcework\WWE\WWE18\GameData\Master\Audio\Common\SFX
    100 _SFX_Script.pac
cd D:\perforcework\WWE\WWE18\GameData\Patch10\Audio\Common\RingAnnouncer
    200 _RA_Script.pac
cd D:\perforcework\WWE\WWE18\GameData\Master\Audio\Common\Commentary
     300 _Comm_Script.pac
cd D:\perforcework\WWE\WWE18\GameData\Master\Audio\Common\CrowdChants
    400 _Chants_Script.pac
cd D:\perforcework\WWE\WWE18\GameData\Master\Audio\Common\Crowds
    600 _Crowds_Script.pac
cd D:\perforcework\WWE\WWE18\GameData\Patch10\Audio\Common\Project
    777 _update.pac

Let's now convert the numbers in hexadecimal:

100	64
200	C8
300	12C
400	190
600	258
777	309

The corresponding sound[_p10/_p30].pac files are all the same size (it seems that most files inside these containers don't depend on version: just few of them have been updated) and are arranged this way:

        sound_pac.png

It seems encouraging: the secrets of Jojo's ring announcements might be in this 00C8 (ie 200) .pac subcontainer. Let's extract it.

There are 18 files inside, each with a different 4-character extension, but all starting by ra (Ring Announcement?). Here's the list.

000A.rade
000B.raag
000C.raea
000D.rasg
000E.rase
0014.rash
0015.rass
0016.racf
0017.raht
0018.rabt
0019.rasn
001A.rast
001B.ramt
001C.ratt
001D.rabn
001E.rarp
001F.racl
0020.racn

Now it's time to open these files with an hex editor. And I found some pattern in the their 16-byte header. Let's use 000A.rade as an example

       000_A.png

  • The first 4 bytes (00-03) are the extension, here .RADE. My guess is that RA stands for ring announcement, and that DE might also mean something;
  • The next 4 bytes (04-07) seem to  always be 31 30 30 31;
  • The 4 bytes from 08 to 0B are the hex value of the file length after the header. Here, 30 06 converts to 6*256 + 3*16 + 0 = 1584. Indeed, the file is 1584 + 16 (for the header) = 1600 bytes long;
  • The last 4 bytes (0C-0F) are the hex value of the number of entries. Here there are 6*16 +3 = 99 entries. This means that the length, in bytes, of each entry is 1584/99 = 16. The first entry is in the orange rectangle. My goal is to understand what these entries code for.

 

So now, let's analyze each of these 18 files separately. My current guess is that they are thematic. One file might be for custom nicknames, one for superstars' names, another for weights, origins, titles, etc... Everything that Jojo says.

 

*** 000A.rade ***
    number of entries: 99
    length of an entry: 16 bytes
    structure of an entry:
    4-byte ID, 8 null bytes, last 4 bytes are either 00 00 00 00, or 01 00 00 00, or 02 00 00 00.

*** 000B.raag ***
    number of entries: 368
    length of an entry: 4 bytes
    structure of an entry:
    [placeholder]

*** 000C.raea ***
    number of entries: 99
    length of an entry: 32
    structure of an entry:
    [placeholder]


*** 000D.rasg ***
    number of entries: 42?
    length of an entry: not constant: 42 8bytes entries, then 99 4-bytes entries
    structure of an entry:
    [placeholder]


*** 000E.rase ***
    number of entries: 42
    length of an entry: 4
    structure of an entry:
    all null!


*** 0014.rash ***
    number of entries: 11
    length of an entry: 116
    structure of an entry:
    [placeholder]


*** 0015.rass ***
    number of entries: 263
    length of an entry: 8
    structure of an entry:
    4 bytes for a superstar slot (from 64 00 00 00, aka the Rock, to CC 02 00 00, aka Ruby Riott), then 4 bytes which are probably a reference to a sound file
    my guess: superstars announced names

bytes 00-03	(Name)			bytes 04-07	dec conversion
64 00 00 00	(The Rock)		04 1C 89 CC	
64 00 00 00	(The Rock)		04 1C 89 CC	
...		...			...		...
16 01 00 00	(Drew McIntyre)_p10	78 37 B3 A5	2 779 985 784
...		...			...		...
60 02 00 00	(Elias)_p10		7E 37 B3 A5	2 779 985 790
...		...			...		...
C8 02 00 00	(TJP)			64 A7 DA E0	
C9 02 00 00	(Jack Gallagher)	96 E3 25 8B	
CA 02 00 00	(Aleister Black)_p10	7A 37 B3 A5	2 779 985 786
CB 02 00 00	(Lars Sullivan)_p10	7F 37 B3 A5	2 779 985 791
CC 02 00 00	(Ruby Riott)_p10	73 37 B3 A5	2 779 985 779


*** 0016.racf ***
    number of entries: 1470
    length of an entry: 8   
    structure of an entry:
    [placeholder]
    my guess: custom superstars first names?


*** 0017.raht ***
    number of entries: 668
    length of an entry: 8
    structure of an entry:
    [placeholder]


*** 0018.rabt ***
    number of entries: 195
    length of an entry: 12
    structure of an entry:
    [placeholder]


*** 0019.rasn ***
    number of entries: 228
    length of an entry: 8
    structure of an entry:
    [placeholder]


*** 001A.rast ***
    number of entries: 164
    length of an entry: 8
    structure of an entry:
    all null!


*** 001B.ramt ***
    number of entries: 121
    length of an entry: 4
    structure of an entry:
    [placeholder]


*** 001C.ratt ***
    number of entries: 422
    length of an entry: 8
    structure of an entry:
    [placeholder]


*** 001D.rabn ***
    number of entries: 87
    length of an entry: 12
    structure of an entry:
    [placeholder]


*** 001E.rarp ***
    number of entries: 64
    length of an entry: 2
    structure of an entry:
    [placeholder]


*** 001F.racl ***
    number of entries: 1470
    length of an entry: 8
    remark: apart from the extension, it's the same file as 0016.racf
    my guess: custom superstars last names?


*** 0020.racn ***
    number of entries: 1470
    length of an entry: 8
    remark: apart from the extension, it's the same file as 0016.racf
    my guess: custom superstars nicknames?

Edited by CirclePete
  • Thanks 1
Link to comment
Share on other sites

Thanks for this post! Great, that someone else wants to deal with that topic! Unfortunately, much of it is still a mystery and not many have bothered to solve it yet. Many of your observations coincide with mine.

As you've already determined, 15.rass is responsible for the assignments from slots to announcements. And it is correct, the other 4 bytes are a reference to an ID, namely the ID in one of the * .bnk files. They point to a random container / sequence container, which also holds the wem files.

That means, if you add an entry for a modded character slot and point that to an already existing id, the announcement will play during character selection, but unfortunately it does not work during entrance.

The problem is that the whole mapping happens through events. Each character has its own soundbank, which also contains the announcements. The banks are loaded during gameplay and the slot is used to play certain sound sequences. Nobody really knows how that all happens. Also, we do not know yet how the game matches the ids exactly.

If you feel like having time to get more involved with the topic, check out the structure of the * .bnk files. You can find more information here:

http://wiki.xentax.com/index.php/Wwise_SoundBank_(*.bnk)

What I can tell you is that the ids in the moveset are a combination. The first is the music ID (usually a connection to the slot), the others indicate whether it is a soundtrack in the menu or in the game and then there are variations of a single song, presumably for alternate attires, where:

%MusicID% _%VARIATION%_%MUSICMODE%

I think you're right, the pac files in the audio folder will have the main task. But there are others. In the folder pac / root the startup_audio for example. However, many of these are duplicates, where no one really knows what the game actually uses.

You can also find a lot of possible event names in the sound.pac. Something like:

Stop_All_Audio

Play_MUS_%MUSICID%_%VARIATION%_%MUSICMODE%

And a lot of entrance specific events.

Edited by TheVisitorX
  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...