F1 2016
-
- Posts: 16
- Joined: Tue Aug 16, 2016 7:21 pm
F1 2016
luigi -- you interested in some files from the new game? looks like formats have changed a bit.
Car skins (and it looks like track adverts and textures) are now someTeam_decal.tga.mipmaps files (around 16MB) -- tried scanning them with Ravioli and Dragon but no luck. I'm sure they have some kind of compression or something on them.
Game is looking gorgeous, but will be nice to add some proper liveries with alcohol adverts, etc. if you're able to open these!
PM me if you would like a sample file or two to test.
Car skins (and it looks like track adverts and textures) are now someTeam_decal.tga.mipmaps files (around 16MB) -- tried scanning them with Ravioli and Dragon but no luck. I'm sure they have some kind of compression or something on them.
Game is looking gorgeous, but will be nice to add some proper liveries with alcohol adverts, etc. if you're able to open these!
PM me if you would like a sample file or two to test.
-
- Site Admin
- Posts: 12984
- Joined: Wed Jul 30, 2014 9:32 pm
Re: F1 2016
Yeah sure, post some samples.
-
- Site Admin
- Posts: 12984
- Joined: Wed Jul 30, 2014 9:32 pm
Re: F1 2016
There is no compression. They are just raw data.
I suggest you to post the samples here in the forum so that other users can check it (graphics is not my field).
I suggest you to post the samples here in the forum so that other users can check it (graphics is not my field).
-
- Posts: 16
- Joined: Tue Aug 16, 2016 7:21 pm
-
- Posts: 706
- Joined: Fri Aug 08, 2014 1:06 am
Re: F1 2016
these aren't models but headerless dxt5 textures
there might be a separate file in the game files with header info for the textures
there might be a separate file in the game files with header info for the textures
-
- Posts: 16
- Joined: Tue Aug 16, 2016 7:21 pm
Re: F1 2016
Acewell wrote:these aren't models but headerless dxt5 textures
there might be a separate file in the game files with header info for the textures
Not looking for models -- want to update liveries to add proper sponsors that are missing.
I can buy someone experienced a copy of the game if they want to take a look around.
-
- Posts: 706
- Joined: Fri Aug 08, 2014 1:06 am
Re: F1 2016
mario wrote:Not looking for models
this thread should be in "Graphic file formats" instead of "3D/2D models" where it gets proper attention then
don't have to buy the game again, look through your files for a possible text file that list header info, it
might be next to the images or else there isn't much you can do except for guessing the size and format.
-
- Posts: 16
- Joined: Tue Aug 16, 2016 7:21 pm
Re: F1 2016
Acewell wrote:mario wrote:Not looking for models
this thread should be in "Graphic file formats" instead of "3D/2D models" where it gets proper attention then
don't have to buy the game again, look through your files for a possible text file that list header info, it
might be next to the images or else there isn't much you can do except for guessing the size and format.
luigi, can you move this to the proper forum then?
-
- Posts: 706
- Joined: Fri Aug 08, 2014 1:06 am
Re: F1 2016
this is your samples with dds headers
-
- Site Admin
- Posts: 12984
- Joined: Wed Jul 30, 2014 9:32 pm
Re: F1 2016
moved in the correct section
-
- Posts: 16
- Joined: Tue Aug 16, 2016 7:21 pm
Re: F1 2016
Wow! That is awesome Acewell!
Is there a way to convert back?
Do you just need to add some code with a hex editor to be able to open the mipmaps files by telling it that it is a DDS DXT5?
Curious about this one especially. Would like to add the Martini logos that are not in the game because of ESRB.
I suspect the ERP files must contain the models.
There is an assetgroup file for each team that seems to have the code for which meshes to display for each car. I uploaded a sample. Maybe that needs to go back in the 3D forum.
Is there a way to convert back?
Do you just need to add some code with a hex editor to be able to open the mipmaps files by telling it that it is a DDS DXT5?
Curious about this one especially. Would like to add the Martini logos that are not in the game because of ESRB.
I suspect the ERP files must contain the models.
There is an assetgroup file for each team that seems to have the code for which meshes to display for each car. I uploaded a sample. Maybe that needs to go back in the 3D forum.
-
- Posts: 706
- Joined: Fri Aug 08, 2014 1:06 am
Re: F1 2016
mario wrote:Is there a way to convert back?
there was really no conversion, the data was dxt anyway, i just add dds headers with Noesis
this way you can open them with Gimp or whatever and edit then save it out and remove the 128 byte
header and then rename the file to what it originally was and inject back into the game if want
i made a Noesis script that tries to detect the size and type based on the file size
edit
okay i improved the script to support all of your current samples
-
- Posts: 16
- Joined: Tue Aug 16, 2016 7:21 pm
Re: F1 2016
Thanks for making the code easy to follow. I've updated it additionally to support even more discovered texture sizes. I'll let you know what else I find. There are still several I haven't tried yet but I can guess pretty well now that I read through your code!
Code: Select all
from inc_noesis import *
import os
def registerNoesisTypes():
handle = noesis.register("F1 2016 (headerless textures)", ".mipmaps")
noesis.setHandlerTypeCheck(handle, noeCheckGeneric)
noesis.setHandlerLoadRGBA(handle, F1LoadRGBA)
#noesis.logPopup()
return 1
def F1LoadRGBA(data, texList):
datasize = len(data)
print(datasize, "datasize")
bs = NoeBitStream(data)
data = bs.readBytes(datasize)
fileName = os.path.basename(rapi.getInputName()) #get file name + ext without path
if datasize == 688128:
imgWidth = 1024
imgHeight = 1024
texFmt = noesis.NOESISTEX_DXT1
elif datasize == 2785280:
imgWidth = 2048
imgHeight = 2048
texFmt = noesis.NOESISTEX_DXT1
elif datasize == 699008:
imgWidth = 1024
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 349504:
imgWidth = 512
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 327680:
imgWidth = 512
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
#ATI2 normal maps
elif "_nm" in fileName:
imgWidth = 1024
imgHeight = 1024
data = rapi.imageDecodeDXT(data, imgWidth, imgHeight, noesis.FOURCC_ATI2)
texFmt = noesis.NOESISTEX_RGBA32
elif datasize == 1376256:
imgWidth = 1024
imgHeight = 1024
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 5570560:
imgWidth = 2048
imgHeight = 2048
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 16777216:
imgWidth = 4096
imgHeight = 4096
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 11173888:
imgWidth = 4096
imgHeight = 2048
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 655360:
imgWidth = 1024
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 1310720:
imgWidth = 2048
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 2621440:
imgWidth = 4096
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 5242880:
imgWidth = 5120
imgHeight = 1024
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 2752512:
imgWidth = 2048
imgHeight = 1024
texFmt = noesis.NOESISTEX_DXT5
#unknown, not handled
else:
print("WARNING: Unhandled image format")
return None
texList.append(NoeTexture(rapi.getInputName(), imgWidth, imgHeight, data, texFmt))
return 1
-
- Posts: 1
- Joined: Sun Aug 21, 2016 11:16 pm
Re: F1 2016
Thank you so much for the script Acewell!
I have been able to open all the files I wanted to however when removing the header, renaming, and loading my edited mipmaps in game they aren't what they should be.
I've only edited the helmet, but as you can see it doesn't look right.
I've used Gimp and dxtbmp saving it in dxt5
Any suggestions?
Or am I just doing something obvious wrong?
I have been able to open all the files I wanted to however when removing the header, renaming, and loading my edited mipmaps in game they aren't what they should be.
I've only edited the helmet, but as you can see it doesn't look right.
I've used Gimp and dxtbmp saving it in dxt5
Any suggestions?
Or am I just doing something obvious wrong?
-
- Posts: 706
- Joined: Fri Aug 08, 2014 1:06 am
Re: F1 2016
i couldn't tell you, modding games is not my area.
i would at least make sure the modified texture is the same file size as the original
and that you retain any alpha channels, mipmaps etc
i would at least make sure the modified texture is the same file size as the original
and that you retain any alpha channels, mipmaps etc
-
- Posts: 1
- Joined: Tue Aug 23, 2016 7:14 am
Re: F1 2016
Any chance anyone can update the code to include helmets, when I try to export with Noesis It goes to the unknown format warning and doesn't export.
The helmet files are 10,912 KB
Here is one of the helmet files http://www.filedropper.com/jensonbuttonhelmetdtga
Cheers for the Help
*EDIT*
I think I figured it out, here's the updated script:
The helmet files are 10,912 KB
Here is one of the helmet files http://www.filedropper.com/jensonbuttonhelmetdtga
Cheers for the Help
*EDIT*
I think I figured it out, here's the updated script:
Code: Select all
from inc_noesis import *
import os
def registerNoesisTypes():
handle = noesis.register("F1 2016 (headerless textures)", ".mipmaps")
noesis.setHandlerTypeCheck(handle, noeCheckGeneric)
noesis.setHandlerLoadRGBA(handle, F1LoadRGBA)
#noesis.logPopup()
return 1
def F1LoadRGBA(data, texList):
datasize = len(data)
print(datasize, "datasize")
bs = NoeBitStream(data)
data = bs.readBytes(datasize)
fileName = os.path.basename(rapi.getInputName()) #get file name + ext without path
if datasize == 688128:
imgWidth = 1024
imgHeight = 1024
texFmt = noesis.NOESISTEX_DXT1
elif datasize == 2785280:
imgWidth = 2048
imgHeight = 2048
texFmt = noesis.NOESISTEX_DXT1
elif datasize == 699008:
imgWidth = 1024
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 349504:
imgWidth = 512
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 327680:
imgWidth = 512
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
#ATI2 normal maps
elif "_nm" in fileName:
imgWidth = 1024
imgHeight = 1024
data = rapi.imageDecodeDXT(data, imgWidth, imgHeight, noesis.FOURCC_ATI2)
texFmt = noesis.NOESISTEX_RGBA32
elif datasize == 1376256:
imgWidth = 1024
imgHeight = 1024
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 5570560:
imgWidth = 2048
imgHeight = 2048
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 16777216:
imgWidth = 4096
imgHeight = 4096
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 11173888:
imgWidth = 4096
imgHeight = 4096
texFmt = noesis.NOESISTEX_DXT1
elif datasize == 655360:
imgWidth = 1024
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 1310720:
imgWidth = 2048
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 2621440:
imgWidth = 4096
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 5242880:
imgWidth = 5120
imgHeight = 1024
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 2752512:
imgWidth = 2048
imgHeight = 1024
texFmt = noesis.NOESISTEX_DXT5
elif datasize == 348160:
imgWidth = 512
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT1
elif datasize == 2795520:
imgWidth = 2048
imgHeight = 2048
texFmt = noesis.NOESISTEX_DXT1
elif datasize == 5591040:
imgWidth = 2048
imgHeight = 2048
texFmt = noesis.NOESISTEX_DXT1
elif datasize == 698368:
imgWidth = 512
imgHeight = 512
texFmt = noesis.NOESISTEX_DXT1
#unknown, not handled
else:
print("WARNING: Unhandled image format")
return None
texList.append(NoeTexture(rapi.getInputName(), imgWidth, imgHeight, data, texFmt))
return 1
-
- Posts: 16
- Joined: Tue Aug 16, 2016 7:21 pm
Re: F1 2016
great job, CW17! Like Acewell said, his formats were reasonable guesses, as are mine. Glad we can work together to improve upon the great plugin he has provided us!