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.

Pet Racer files help

Featured Replies

  • Localization

Does anyone have any idea how to extract/convert old Techland's Chrome Engine 1 files, namely .3DA and .TEX? but .MAP and .CMP and possibly others would be good to have too.

 

This game is now abandonware and the download is at the bottom of the page (I did not link the url fragment directly) -> https://www.myabandonware.com/game/pet-racer-dxr

 

The game was written in Java, it comes with bundled JRE and i also see that it has "ChromeEngine.dll" library (which i assume stores c++ data about the said formats and how to read/write them)

I did decompile some java class files with online decompiler and i have found many interesting references for loading/reading said formats, but nothing crucial, my guess is that everything else resides in the "ChromeEngine.dll"

I have tried with python and searching online for a Blender importer or pretty much anything, even the specification for the format itself, but with no luck, from what i did extract via python struct was garbage...

  • Supporter

zolw_sam.3da, face indices don't fit/need some fiddling and this 3da is rather low poly:

 

 

zolw_sam.png

Edited by shak-otay
picture update

  • Supporter

Here's Noesis python script for *.tex. They are identical to the png ones.

from inc_noesis import *
import noesis
import rapi
import os

def registerNoesisTypes():
   handle = noesis.register("Pet Racer PC - Texture", ".tex")
   noesis.setHandlerTypeCheck(handle, noepyCheckType)
   noesis.setHandlerLoadRGBA(handle, noepyLoadRGBA)
   noesis.logPopup()
   return 1
        
def noepyCheckType(data):
   bs = NoeBitStream(data)
   if len(data) < 20:
      return 0
   return 1
   
def noepyLoadRGBA(data, texList):
    bs = NoeBitStream(data)
    baseName = rapi.getExtensionlessName(rapi.getLocalFileName(rapi.getInputName()))
    bs.read(4)
    PixelFormat = bs.readUInt()
    TextureWidth = bs.readUInt()
    TextureHeight = bs.readUInt()
    bs.read(4)
    BufferSize = bs.readUInt()
    data = bs.readBytes(BufferSize)
    
    if PixelFormat == 1:
        print("Pixel Format > DXT1 ", PixelFormat)
    elif PixelFormat == 4:
        print("Pixel Format > DXT5 ", PixelFormat)
    else:
        print("Unknown Pixel Format > ", PixelFormat)
    

    if PixelFormat == 1:
        texFmt = noesis.NOESISTEX_DXT1
    elif PixelFormat == 4:
        texFmt = noesis.NOESISTEX_DXT5
    texList.append(NoeTexture(rapi.getInputName(), TextureWidth, TextureHeight, data, texFmt))
    return 1

EDiT: About *.map

It seems meshless. Only info about individual 3d parts. But can't see any transform info like matrix or simple 3 axis pos/rot. Need further RE.

Edited by h3x3r

  • Author
  • Localization

@h3x3r Thank you very much for the script, you solution worked for the .TEX files! Now i need to get the 3DA files too.

  • Author
  • Localization
14 hours ago, shak-otay said:

zolw_sam.3da, face indices don't fit/need some fiddling and this 3da is rather low poly:

 

 

zolw_sam.png

Nice tool you wrote there 🙂 , i see that it has some quick tutorial also i opened some files in it, but they were garbled, thanks to their offsets being unknown to me, but do you know of any, and i mean ANY other way, either a script, blender importer plugin or something else that can open/import/extract .3DA files?

  • Supporter
1 hour ago, anderlli0053 said:

but do you know of any, and i mean ANY other way, either a script, blender importer plugin or something else that can open/import/extract .3DA files?

Nope. Creating a script is the second step and volunteers are scarce, lately.:classic_sad:

  • Author
  • Localization
10 hours ago, shak-otay said:

Nope. Creating a script is the second step and volunteers are scarce, lately.:classic_sad:

Yes, sadly 😞 

 

  • Author
  • Localization
5 hours ago, jmancoder said:

I've updated the script so that it can read UVs properly and skip unknown sections. It should work on most of the meshes now.

fmt_pet_racer_3da.py 3.33 kB · 3 downloads

I've tried multiple times, with Python too, created twice as much code, used "struct" module extensively and the only thing out was garbage - garbled meshes, other times invalid files :3 

  • Author
  • Localization

Well the Noesis and their respective Python scripts were the answers to this, .TEX was fully solved and these .3DA meshes around 90-95%, but still.. very very good work you guys.

Thank you very much for all of your help!

Should this be closed then?

Create an account or sign in to comment

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.