Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

F1 2016

Featured Replies

  • Author
  • Localization

mario, posted Fri Aug 19, 2016 9:26 pm (16666)


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.
  • Author
  • Localization

aluigi, posted Fri Aug 19, 2016 9:54 pm (16667)


Yeah sure, post some samples.
  • Author
  • Localization

mario, posted Fri Aug 19, 2016 10:07 pm (16668)


Sent
  • Author
  • Localization

aluigi, posted Fri Aug 19, 2016 10:16 pm (16669)


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).
  • Author
  • Localization

Acewell, posted Sat Aug 20, 2016 2:18 am (16673)


these aren't models but headerless dxt5 textures :)
there might be a separate file in the game files with header info for the textures
  • Author
  • Localization

mario, posted Sat Aug 20, 2016 4:08 pm (16699)


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.
  • Author
  • Localization

Acewell, posted Sat Aug 20, 2016 5:08 pm (16701)


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.
  • Author
  • Localization

mario, posted Sat Aug 20, 2016 5:22 pm (16702)


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?
  • Author
  • Localization

Acewell, posted Sat Aug 20, 2016 6:05 pm (16705)


this is your samples with dds headers :D
  • Author
  • Localization

aluigi, posted Sat Aug 20, 2016 6:22 pm (16709)


moved in the correct section
  • Author
  • Localization

mario, posted Sat Aug 20, 2016 7:35 pm (16710)


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.
  • Author
  • Localization

Acewell, posted Sat Aug 20, 2016 9:35 pm (16712)


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 :D

i made a Noesis script that tries to detect the size and type based on the file size :D


edit
okay i improved the script to support all of your current samples :D

tex_F12016_mipmaps.zip

  • Author
  • Localization

mario, posted Sun Aug 21, 2016 3:06 am (16718)


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:
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
  • Author
  • Localization

shouldbethere, posted Sun Aug 21, 2016 11:23 pm (16731)


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? :?
  • Author
  • Localization

Acewell, posted Mon Aug 22, 2016 6:50 am (16735)


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
  • Author
  • Localization

CW17, posted Tue Aug 23, 2016 7:21 am (16775)


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:
Code:
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
  • Author
  • Localization

mario, posted Tue Aug 23, 2016 8:43 pm (16809)


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!
Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.