Jump to content

Help, could lead to major break through!


Perfectplex

Recommended Posts

I really require help tracking down a files origin or the file which calls for the shdc ID I have been looking for.

All I know is that it relates to slot100 ch100 The Rock

I am looking for the file origin or which file calls for the shdc code 09 E5 40 D3 85 BF 9E C4

I am capable of finding the memory in cheat engine, I require help tracking down what file it belongs to or which file calls it.

If I can find the origins of this file I MIGHT be able to figure out adding renders for custom characters.

  • Like 7
Link to comment
Share on other sites

Man, I wish I knew... @squaredcirclefan has been coming up with some good discoveries, maybe he might know ? If you're able to add that might open up a whole can of worms to other possibilities. If that's the bytes you need.. I'll search through my mass extracted directories until I get sleepy

Edited by hovathagod32
  • Too Sweet 1
Link to comment
Share on other sites

They are found in the Chunk0.arc. All SHDC and HSPC ID's are found within that file. I've tried adding ch pac's to it before and got a third of the way through the match loading screen. Did a brief dig and this is what I got for the chunk itself.

 9writeup1.PNG

Since these were the only files I found referencing HSPC or SHDC pac ID's, I previously assumed this would be how we would add renders. Although there's another ID renders contain that I can't seem to crack: 

22.PNG

This from a zlib that you can find right at the bottom of hspc pac files. Hope this helps.

Edited by HanleysFramer
  • Too Sweet 1
Link to comment
Share on other sites

@HanleysFramer Chunk0.arc is a cache, thus it contains copies of the actual files (or at least parts). Besides that, changing anything in that file should break it's integrity and thus it's content should no longer be loaded (and when modding it needs to be changed/empty so the cache is no longer used). Maybe there are references to the actual files in there, though, although I doubt it.

We'll have to find the actual files that hold those entries.

  • Too Sweet 1
Link to comment
Share on other sites

I went through all the obvious files last night and couldn't find anything. I'll try again tonight. Surprisingly, it wasn't anything in the root folder if I'm not mistaken. I want to double check that.

  • Too Sweet 1
  • Thanks 1
Link to comment
Share on other sites

Thanks for the help, I don't want anybody going out of their way this is just a long shot through following telltale bytes on current renders in memory then trying to find related files to see if I can find a way to reassign a render to a different character slot then see if it generates its own SHDC code, this should in theory allow me to find the shdc codes that would force a slot to use its own render.

Sorry if that sounds confusing, it makes sense in my own head, basically long story short, if we can get a render to be attached to a different character ID then that should in theory force the game to generate an SHDC for that slot.

At the very least it would be good if we could just use renders on whichever character slot we wish, that would be .. something at least.

 

d300d05b1ddcdb8e981a701605fbfe23.png

Edited by Perfectplex
Link to comment
Share on other sites

I understand that part, mainly because that's kinda like adding arena stuff (nameplates/locators) but just different files included. They have the same type of file structure but with videos and images except just the render dds. I figured that the DLC additions would be key to figuring out how it all works, but they didn't add to those original files, they just made completely new files just to hold a handful of assets lol...

I've been kinda restricted, even more now with losing a lot of my arena project files.. but I'll keep a lookout. Common sense is telling me that file should be somewhere in pac/root or the pac/menu folders, but I didn't see it on my first run through. 

  • Too Sweet 1
Link to comment
Share on other sites

I haven't even got round to starting my universe mode on this years game and 2K19 is nearly out lol, I am trying to get things tied up with 2K18 and hopefully 2K19 wont prove to be a problem adapting all current findings to that game, for some reason 2K18 has been nothing but an experimentation when I'm in the mood, 2K should take a leaf out of Fire Pro's book and embrace the modding community, I only buy the games because of modding and I'm sure many follow that logic too so to keep throwing spanners in the works just deflates interest from people who just want to be able to do simple things like change names and add renders to mods.

Theres a reason games from years ago retain interest and a continuous stream of people buying old games, mods, even if we manage to mod the game to the absolute current day rosters and arenas, etc we would still buy the new games, I think they fear that with mods it makes a new game redundant, a bit silly really because sports games sell well every single year despite being practically identical to the last, all they need to do is change storylines and update rosters and such things and the most important thing for me is to keep building on the universe mode and adding stories to try and head that mode in a dynamic way which offers unpredictability and keeps players interests. That and offering more and more customisable options throughout will keep people coming back year in and year out and modding will only help them in the long run. Look at games like Skyrim, been out years, still able to repackage and sell the game because of the modding community keeping the game fresh and yet we fans of the Elder Scrolls games still thirst to buy the next game in the series.

Sorry to go off on a tangent, its just frustrating how something which should be so simple to do is locked behind these stupid SHDC scrambled ID's.

 

I'll be doing a lot of tests AGAIN focussing solely on renders for the next few hours so if I find anything of interest I will post in this thread. Don't hold your breath though, been through this torture far too many times.

Edited by Perfectplex
  • Like 2
Link to comment
Share on other sites

I'm going to now walk through how I came to the original SHDC ID that I am searching for.

If you want to try this you will need the game (durr) and cheat engine or dump the memory using task manager after the save has loaded (menu screen).

Using the render ID list which I will post a link to at the bottom of this post lets grab The Rocks type A ID which is 82FCE94DA870BEA0

Now using the settings shown here

e8aec1dd9c714e9fa91fce5b91673d33.png

We will find 2 entries, the first is when it loads in to the 'pool' when it reads all the data and the second is when it sorts it into memory allocations.

It is the second entry we will look at so right click and choose 'Browse this memory region'

You will find that the render ID is trailed by 00 00 00 00 4C 08 00 00 FF FF FF FF

Now we will do a New Scan and search for "00 00 00 00 4C 08 00 00 FF FF FF FF" instead

Now we find 4 entries. you can test this by browsing each entries memory region but you will find the first three entries are as so.

Highlight the first entry, 'Browse this memory region', scroll up to see what is before the "00 00 00 00 4C 08 00 00 FF FF FF FF" and you will find it is The Rocks type A render ID, the second entry is the Type B and the third entry is the type C entry.

The fourth is the anomaly however and this is where you will find it has the 09 E5 40 D3 85 BF 9E C4

f82bab802dc93283d4c352497c677ad7.png

 

By doing a new scan for "09 E5 40 D3 85 BF 9E C4" you will find it has two entries,

The second being the current linked to renders entry and the first being

09 E5 40 D3 85 BF 9E C4 04 2E 04 00 D4 9D 06 00 FF FF FF FF

Which is where it will be called in from whatever file or rule that streams it to the 'pool'.

If I can figure out what this file or call is then I could technically try and follow the entries of modded characters using this entry and see if I can realign renders from one character to another, and see if saving it to memory it creates a generated SHDC ID for the render, which would then be able to be used as a new render entry for the game to read and apply to that slot just as it works for replacing renders.

This is of course just a line of theory to go down and can't promise it will work but at this point I'm game to try it to at least eliminate that method from the tests.

 

This is the dynamic entry which displays the render

56b3dc5ec3a5084bd2f665b6ffc231a3.png

 

Also related is this entry, it also changes upon whichever character you are highlighting, I have also found that although the replaced renders end on CA 09 the default renders have C9 09, the first 2 bytes change for each character.

7b2ae7707c075dbf775d2f2f4995b6c6.png

 

 

 

Edited by Perfectplex
  • Like 1
Link to comment
Share on other sites

I feel the same.. I want this WCW/nWo project to be finished so bad because we haven't had a WCW game in a very long time and I just want to personally sit down and play it. WWF too, but on a lesser scale because we've had 2K16 and WWE '13. It's a heavy task because it's such an one man thing and each year most of the time is spent learning new things, which in turn helps you get better at your actual modding work (creators curse lmao).. and hell, we're still learning lol. It's a never ending cycle because when you get into a groove, a new game is right around the corner.

Again, excuse my ignorance, but would creating a new file in itself kinda similar to the DLC files be easier to do or would that still require the same process due to the fact that the game has to pull from somewhere?

Either way, that write up is definitely helpful. I'll try to mess around and search again when I get some free time. My hope is that more people get involved with experimenting with this because this is definitely something most modders want in their games. 

  • Too Sweet 1
Link to comment
Share on other sites

I've been through the root of looking at how the DLC renders are added, however apart from just been allocated separately into the memory there wasn't any distinct differences, its a case of trying to figure out the same process and trying to fiddle about keep tracking back to what calls things into active memory and hoping to find some clues along the way.

One of the issues I've run into is that all the characters without renders aren't showing many clues of changing from one to the next in the dynamic bytes I have been tracking for changes. Hard to explain what I mean, at the moment I am trying to at least get it so that I can reassign a render from one character to another, this would be a start because it means I don't have to inject characters into slots with renders if I want them to have renders.

Link to comment
Share on other sites

I've taken a different approach to figuring out how the renders are assigned. In previous games on the ps3 / 360, the renders were assigned to the wrestlers based on the ID of the wrestler referencing in a directory called SSFA / SSFB etc in a top level directory called MENU in the pac file. These directories were created in memory.

In 2k16 the directory being referenced is LTSA for menu's. Each of the wrestlers renders were assigned a name with a 8 byte value e.g. The Rock is F29A10A6. I assumed that this 8 byte value is a 32 bit hash containing the wrestler ID , which the game decrypts and assigns to the wrestler at run time. 

With 2k18, I ran the game and go to the wrestler selection screen. Once I have a wrestler render being displayed in game, I search for the LTSA string in memory view of cheat engine. The first instance I come up with is offset 0014F2E1. This lists the name of the render being displayed and changes as you scroll up and down. For example these are some values I've found:

The rock 
LTSA/1063FBD2

Stone Cold
LTSA/09870254

Triple H
LTSA/B98DBD28

Undertaker
LTSA/0B99B909

 

As you can see, even though an SHDC file is loaded, the naming of the render inside the SHDC uses an 8 byte hash just like 2k18. However the hash values are different i.e. The Rock is F29A10A6 in 2k16 and 1063FBD2 in 2k18, meaning that the formula for computing the hash is different between games. 

 

If you scroll down to offset 09470061, you will see the names being assigned to each of the LTSA files and which pac file contains this LTSA files. 

 

So my theory is that we need to figure out this 8 byte hash value is computed. If we can do that, all we need to do is create an EPK8 pac with an LTSA directory reference and the hash value corresponding to dlc slot and the game should assign the render to additional wrestlers.

 

To test this theory, I took the 2k16 renders file and renamed the files in the LTSA directory to names I found for Jeff and Matt hardy and the game loaded the EPK file with the LTSA names perfectly:

20180904135312_1.jpg

 

 

However figuring out the 8 byte hash value is easier said than done as I've tried many times over the years to figure out how the hash is computed without success. the fact that the hash value changes each year, also means that they are using a salt value in the computation of the hash which changes for each game. 

 

I've also tried de-compiling the exe to see if I could figure out how the hash is computed and it seems like a function called "CLTSingleAssetReader" is being called when the asset is loaded. Maybe the names are decrypted in this function. However this is as far as I got. 

 

 

  • Too Sweet 1
Link to comment
Share on other sites

Cheers Tekken, it gives me something else to look into (the LTSA codes) and I will remain cautiously optimistic, if nothing else its all a learning experience and helps narrow things down a little further.

Hopefully it will be one of those things I or someone else will find through trial by error, I'd settle for being able to just reassign the renders to other character slots even.

 

It could be related to this list of lines I'd been marking down too.

Aiden English
B467 CA09 000000000000000000000000 60CF0E454FD741FB B8A3 0400 B45F 0700 FFFFFFFF

AJ Styles
C067 CA09 000000000000000000000000 209F30A3A45AB2C7 C4A3 0400 C05F 0700 FFFFFFFF

Akam
CC67 CA09 000000000000000000000000 29D8C3DB639C25E7 D0A3 0400 CC5F 0700 FFFFFFFF

Akira Tozawa
D867 CA09 000000000000000000000000 BA41DF88D5B60579 DCA3 0400 D85F 0700 FFFFFFFF

Alberto Del Rio
4468 CA09 000000000000000000000000 557A6A89E9CBDF96 48A4 0400 4460 0700 FFFFFFFF

Aleister Black
1468 CA09 000000000000000000000000 ED1DA3B725BBCCC1 18A4 0400 1460 0700 FFFFFFFF

Might find something in the reference call from memory too?!

/LTSA/1063FBD2		The Rock Type b		9152AC893C8C7E3A
2F 4C 54 53 41 2F 30 31 30 32 38 31 37 38

91 52 AC 89 3C 8C 7E 3A		E4 96 00 00	F0 BF 01 00	FF FF FF FF

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 4C 54 53 41 2F 31 30 36 33 46 42 44 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70 61 63 2F 6D 65 6E 75 2F 77 69 6E 2F 61 73 73 65 74 73 2F 77 77 65 31 38 5F 73 69 6E 67 6C 65 72 65 61 64 2F 74 65 78 74 75 72 65 2F 73 73 66 61 63 65 2F 6C 74 61 67 5F 74 79 70 65 62 5F 77 69 6E 2E 70 61 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FE 60 00 00 6C 74 61 67 EA 04 00 00 65 62 5F 77 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F0 C7 51 0A 00 00 00 00 E4 9E 44 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 AF 2B 05 00 00 00 00 C0 AF 2B 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 FD 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 00 00 00 00 00 00 00 19 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF

 

Another update Edit:

I tested the EPK8 file thing and indeed found using the correct LTSA ID lets that file load as a render, but as you said @tekken57 the problem then remains trying to figure out how to decypher the LTSA ID tags.

I removed all render files except one modded LTSA entry for The Rock which loads fine, however highlighting the others shows no telltale signs of any ID that it is looking for, this is a similar problem using the default render files whereby all the slots without renders use the blank character, they all have the same LTSA tag ID, I was hoping it would have some difference but just load the blank character by default because it can't find an image to use.

I will continue experimenting, I will follow this LTSA lead though, hopefully by somehow realigning the LTSA Id of The Rocks render to another slot it will either work as a 'reaimed' render (another slot can use an available render) or better yet it somehow generates another LTSA when realigned.

Wish I could be of help dismantling the source code but that is way out of my league, i fiddle with hex code and files and hope for the best 😛

5f16ae23b9c3193a859fbc1a2f7739fd.png

Edited by Perfectplex
Link to comment
Share on other sites

Deciphering compiler code is also new to me, hence I'm stuck. 

I spent a bit more time looking at the CLTSingleAssetReader function and there was return value for texture name listed. I assumed that this was the decrypted ltsa sting name, but after examining the memory a bit closer, it seems to return the name of the dds file contain in the 0000 file of the render archive i.e  0112_jeff_hardy.dds, etc. 

So I'm now thinking that the LTSA code is not a string hash but rather a reference to a file somewhere much like how the names in the wrestler info are a reference to names in the string file. 

Also looking at the values for each of the wrestlers, the value don't seem to be going up as the slots increase or the texture name increases i.e 

the rock is slot 100 and stone cold is slot 101. Comparing the name "The rock" and the name "Steve Austin", Steve austin should produce a larger checksum value due to the increase number of characters. similarly 101 should produce a higher checksum value than 100. However, the Rocks LTSA value is greater than Stone Colds (LTSA/1063FBD2 > LTSA/09870254). 

 

Hence my checksum theory doesn't seem to be correct. 

 

there must be a list somewhere assigning the values to a wrestler. It is not contained in memory, so it must be in a pac file somewhere. Have you examined the ltst_lt_wwe18_win.pac file? It seems to list the menu files to be loaded. Maybe it also assigns a slot id to a LTSA id? Looking through it though, I can't seem to find the LTSA id's for each wrestler. 

  • Too Sweet 1
Link to comment
Share on other sites

On 9/6/2018 at 8:03 AM, tekken57 said:

there must be a list somewhere assigning the values to a wrestler. It is not contained in memory, so it must be in a pac file somewhere. Have you examined the ltst_lt_wwe18_win.pac file? It seems to list the menu files to be loaded. Maybe it also assigns a slot id to a LTSA id? Looking through it though, I can't seem to find the LTSA id's for each wrestler. 

While the ltst_lt_wwe18_win.pac file doesn't contain LTSA IDs, it does contain references to the ssface directories. 00ing out the typeb string made no difference unfortunately.

There was something else I was looking at that I think might help. Basically, some files have an 0000 file that has listings for the other files within (normally DDS iirc). Well, that file has a couple of IDs and offset references. From what I've seen, any of the files in pac\menu\win\Assets\wwe18_texture have an 0000 file like this with DDS images following immediately after. 

  • Too Sweet 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...