January 17Jan 17 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...
January 17Jan 17 Supporter zolw_sam.3da, face indices don't fit/need some fiddling and this 3da is rather low poly: Edited January 17Jan 17 by shak-otay picture update
January 17Jan 17 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 January 17Jan 17 by h3x3r
January 17Jan 17 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.
January 17Jan 17 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: 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?
January 18Jan 18 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.
January 18Jan 18 Localization I've attached a Noesis Python plugin for the 3DA files. It's still a work in progress, but it works on the first sections at least. fmt_pet_racer_3da.py
January 18Jan 18 Supporter Haha, cool, I just wanted to add a link to the format description (see html file).
January 18Jan 18 Localization 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
January 18Jan 18 Supporter "Manually bind buffers"? Great! (I didn't know about rapi immediate mode...)
January 18Jan 18 Author Localization 10 hours ago, shak-otay said: Nope. Creating a script is the second step and volunteers are scarce, lately. Yes, sadly 😞
January 18Jan 18 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
January 21Jan 21 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