October 19Oct 19 awhile back i asked for help on the texture format for the rid game@DKDave quickly figured it out so credits to him and did figure out the format for the model which was part of the examples ziphe posted how and i made it into a template for modelresearcherhoweverthe template only worked on ironhide as other models had issues when i looked into how the template worked for ironhide i found out somethingthe model format has no header and is unique in a way that a template wouldnt workand since i dont how to write a noesis script i am going to show you how to import the model in modelresearcherthe first 4 bytes are important very importantfor the verticesget the first 4 bytes which is in case for our example beeside is 41 0c 00 00 so set the offset by 0x4and make sure the end block ends before the 2nd instance of the magic 4 bytesand when you hit render you get the verticesfor the facesin faces set type to shortstart the offset at 00 00 02 00 it is usually the starting face offset and before it is 4 bytes which end with a single 00and end the end block before the final 4 bytes which are usually 00 00 00 00for the uvs get the byte that is after the 3rd instance of the magic 4 bytes and use the same count as the vertices which the end block ends at the start of the 00 00 00 00 that is before the 4th instance of the magic 4 bytesoptional but for normals from @DKDave 's researchsame count as the vertices and uvs the offset is of course the byte after the 2nd instance of the magic 4 bytesremember the uvs are upside down when exporteda way that i fixed it is insert a plane into the model and using the constrain image pixels fit S and Y and -1 and delete the planewithout custom normalswith custom normals Edited October 19Oct 19 by wedjklwkerfjgfkewgfh43ertg
October 20Oct 20 Localization Can you tell us how did you extract the .dat files from the .bin files?
October 20Oct 20 Author 5 minutes ago, Karpati said:Can you tell us how did you extract the .dat files from the .bin files?using quickbms https://aluigi.altervista.org/bms/transformers_89546412.bms
October 20Oct 20 Localization 2 hours ago, wedjklwkerfjgfkewgfh43ertg said:using quickbmshttps://aluigi.altervista.org/bms/transformers_89546412.bmsI did find it already, but it does not work on my .bin files:signature of 4 bytes at offset 0x00000000 doesn't match the one expected by the scriptI have a com-hasbro-tf360appstore-1009000-24499790-acfe611344909db62f9976c9660c6f58.apk file (about 45 MB)..apk\assets\database_bin\database\character\characters.bin
October 20Oct 20 Author 9 minutes ago, Karpati said:I did find it already, but it does not work on my .bin files:signature of 4 bytes at offset 0x00000000 doesn't match the one expected by the scriptI have a com-hasbro-tf360appstore-1009000-24499790-acfe611344909db62f9976c9660c6f58.apk file (about 45 MB)..apk\assets\database_bin\database\character\characters.bindont use the characters.bin from the apk instead use the bin files from the obbwhich is in main.1009000.com.hasbro.tf360appstore.obb\hydra\characters\
October 20Oct 20 Localization 56 minutes ago, wedjklwkerfjgfkewgfh43ertg said:dont use the characters.bin from the apk instead use the bin files from the obbwhich is in main.1009000.com.hasbro.tf360appstore.obb\hydra\characters\Thank you for your information. I did find the Transformers_+RobotsInDisguise_1.9.0_APKPure.xapk file on the Net and I have .dat files from the .obb / .bin files. Edited October 20Oct 20 by Karpati
October 21Oct 21 Supporter Well there's no need for header. Everything is here. The first uint32 is vertex count. After that is buffer which can be sometimes aligned on the end.//------------------------------------------------ //--- 010 Editor v14.0 Binary Template // // File: // Authors: // Version: // Purpose: // Category: // File Mask: // ID Bytes: // History: //------------------------------------------------ uint32 VertexCount; struct { float VPosX,VPosY,VPosZ; }Vertices[VertexCount]; uint32 NormalCount; struct { float VNPosX,VNPosY,VNPosZ; }Normals[NormalCount]; uint32 UVCount; struct { float UVPosX,UVPosY; }UV[UVCount]; uint32 Unknown_0; uint32 BoneIndexCount; struct { byte BIndX,BIndY,BIndZ,Reserved; }BoneIndices[BoneIndexCount]<optimize=false>; uint32 BoneWeightCount; struct { float BWeightX,BWeightY,BWeightZ,Reserved; }BoneWeights[BoneWeightCount]; uint32 Unknown_1; uint32 IndexCount; struct { uint16 F1,F2,F3; }Indices[IndexCount / 3];Send more samples if you want solve it. Edited October 21Oct 21 by h3x3r
October 21Oct 21 Author nice!i wonder if its possible to figure out the skeletal data there is an .ent file that is an animation database of some sorts that has names for the bonesinteresting in beeside using the highlight function in modelresearcher besides the 41 0c 00 00 and other bytes there is a whole chunk which starts at the 4th instance of the magic 4 bytes after the 00 00 00 00 at the end of the uv chunk (offset 0x18834) and end at the 4 bytes that presede the face chunk (offset 0x027d53)i wonder if this is the skeletal data?ironhide's casehere is beeside's mesh if anyone more skilled wants to investigate00000027.rar
October 21Oct 21 Localization This morning I added a new .dat loader module to my program, but I did not released it yet.
October 21Oct 21 Localization On 10/19/2026 at 5:24 PM, wedjklwkerfjgfkewgfh43ertg said:awhile back i asked for help on the texture format for the rid game@DKDave quickly figured it out so credits to him and did figure out the format for the model which was part of the examples zipyou get the verticesCan you tell us how did you extract the texture files?(I don't know which file contains the texture files.)
October 21Oct 21 Author 8 minutes ago, Karpati said:Can you tell us how did you extract the texture files?(I don't know which file contains the texture files.)i wonder what these 12 bytes contain looking at them they are like this04 00 00 00 XX XX XX XX XX XX XX 00the first 4 bytes and the last byte never changebut i tried making a noesis script which is a modified version of the script for the xgm texture for angry birds transformers by Acewellbut not know how code got error on line 12 tex_transformers_rid.py
October 21Oct 21 Supporter 1 hour ago, wedjklwkerfjgfkewgfh43ertg said:there is a whole chunk which starts at the 4th instance of the magic 4 bytes after the 00 00 00 00 at the end of the uv chunk (offset 0x18834) and end at the 4 bytes that presede the face chunk (offset 0x027d53)i wonder if this is the skeletal data?Could be. I checked values and they are to low to be vertex colors. So maybe these are bone indexes. But no idea where is skeleton or hpw to apply to the model.
October 21Oct 21 Supporter Yep that's definitely include skeleton data. But still no idea how to bind it to the model.I will check textures and try to write noesis if it support ETC algo.Also that align check looks like static based on another model.Here's struct for textures. Not sure how many pixel formats are there.uint32 PixelFormat; uint16 TextureWidth; uint16 TextureHeight; uint32 TextureDataSize; byte TextureData[TextureDataSize];Well this should work... If you encounter any other pixel format just let me know. I don't have game files so I can't check.from inc_noesis import * import noesis import rapi import os def registerNoesisTypes(): handle = noesis.register("Transformers - Robots in Disguise / Android - Texture", ".dat") 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): ctx = rapi.rpgCreateContext() bs = NoeBitStream(data) baseName = rapi.getExtensionlessName(rapi.getLocalFileName(rapi.getInputName())) PixelFormat = bs.readUInt() TextureWidth = bs.readUShort() TextureHeight = bs.readUShort() TextureDataSize = bs.readUInt() data = bs.read(TextureDataSize) if PixelFormat == 4: data = rapi.imageDecodeETC(data, TextureWidth, TextureHeight, "RGB") texFmt = noesis.NOESISTEX_RGBA32 else: print("Unknown Pixel Format > ", PixelFormat) texList.append(NoeTexture(rapi.getInputName(), TextureWidth, TextureHeight, data, texFmt)) return 1And here for model.from inc_noesis import * import noesis import rapi import os def registerNoesisTypes(): handle = noesis.register("Transformers - Robots in Disguise / Android - Model", ".dat") noesis.setHandlerTypeCheck(handle, noepyCheckType) noesis.setHandlerLoadModel(handle, noepyLoadModel) noesis.logPopup() return 1 def noepyCheckType(data): bs = NoeBitStream(data) if len(data) < 20: return 0 return 1 def noepyLoadModel(data, mdlList): bs = NoeBitStream(data) baseName = rapi.getExtensionlessName(rapi.getLocalFileName(rapi.getInputName())) ctx = rapi.rpgCreateContext() Underline = "_" # VertexCount = bs.readUInt() VertexBuffer = bs.read(VertexCount * 12) NormalCount = bs.readUInt() NormalBuffer = bs.read(NormalCount * 12) UVCount = bs.readUInt() UVBuffer = bs.read(UVCount * 8) bs.read(4) BoneIndexCount = bs.readUInt() BoneIndexBuffer = bs.read(BoneIndexCount * 4) BoneWeightCount = bs.readUInt() BoneWeightBuffer = bs.read(BoneWeightCount * 16) Unknown = bs.readUInt() IndexCount = bs.readUInt() // 3 IndexBuffer = bs.read(IndexCount * 6) rapi.rpgBindPositionBuffer(VertexBuffer, noesis.RPGEODATA_FLOAT, 12) rapi.rpgBindNormalBuffer(NormalBuffer, noesis.RPGEODATA_FLOAT, 12) rapi.rpgBindUV1Buffer(UVBuffer, noesis.RPGEODATA_FLOAT, 8) rapi.rpgBindBoneIndexBuffer(BoneIndexBuffer, noesis.RPGEODATA_BYTE, 4, 3) rapi.rpgBindBoneWeightBuffer(BoneWeightBuffer, noesis.RPGEODATA_FLOAT, 4, 3) rapi.rpgCommitTriangles(IndexBuffer, noesis.RPGEODATA_USHORT, IndexCount * 3, noesis.RPGEO_TRIANGLE) rapi.rpgSetOption(noesis.RPGOPT_TRIWINDBACKWARD, 1) mdl = rapi.rpgConstructModel() mdlList.append(mdl) return 1 Edited October 21Oct 21 by h3x3r
October 21Oct 21 Author 44 minutes ago, h3x3r said:Yep that's definitely include skeleton data. But still no idea how to bind it to the model.I will check textures and try to write noesis if it support ETC algo.Also that align check looks like static based on another model.Here's struct for textures. Not sure how many pixel formats are there.uint32 PixelFormat; uint16 TextureWidth; uint16 TextureHeight; uint32 TextureDataSize; byte TextureData[TextureDataSize];Well this should work... If you encounter any other pixel format just let me know. I don't have game files so I can't check.from inc_noesis import * import noesis import rapi import os def registerNoesisTypes(): handle = noesis.register("Transformers - Robots in Disguise / Android - Texture", ".dat") 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): ctx = rapi.rpgCreateContext() bs = NoeBitStream(data) baseName = rapi.getExtensionlessName(rapi.getLocalFileName(rapi.getInputName())) PixelFormat = bs.readUInt() TextureWidth = bs.readUShort() TextureHeight = bs.readUShort() TextureDataSize = bs.readUInt() data = bs.read(TextureDataSize) if PixelFormat == 4: data = rapi.imageDecodeETC(data, TextureWidth, TextureHeight, "RGB") texFmt = noesis.NOESISTEX_RGBA32 else: print("Unknown Pixel Format > ", PixelFormat) texList.append(NoeTexture(rapi.getInputName(), TextureWidth, TextureHeight, data, texFmt)) return 1works thanks
October 21Oct 21 Author heres the whole beeside folder there are vap files wonder what they could bee vis1.7z
October 22Oct 22 Author there is dc5 but they have seemingly nothing presumably just junk datamaybe they could be skeletal data
October 22Oct 22 Supporter Nah I already told you that skeleton is in ent file. As a plain text. You need to find a way how to read 4x3 matrix as a plain text and apply to the model. Same with bone names.Also those guessed extensions confuses noesis. Everything dat but content different. I believe it there are somewhere resource names. Since they are mentioned in ent files.Can you send the obb? Or even better whole folder? Can't get one... Edited October 22Oct 22 by h3x3r
October 22Oct 22 Author 1 hour ago, h3x3r said:Nah I already told you that skeleton is in ent file. As a plain text. You need to find a way how to read 4x3 matrix as a plain text and apply to the model. Same with bone names.Also those guessed extensions confuses noesis. Everything dat but content different. I believe it there are somewhere resource names. Since they are mentioned in ent files.Can you send the obb? Or even better whole folder? Can't get one...https://archive.org/details/transformers-robots-in-disguise-1.9.0-offline-sdk-24here
Create an account or sign in to comment