Page 2 of 3

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Sun Jun 16, 2013 9:40 pm
by flarespire
Hmm, each file seems to have slightly different offsets, i wonder if finding a common offset for each part might be worth a try?

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Sun Jun 30, 2013 5:56 pm
by flarespire
well after repeated attempts, ive come up short... i know that the different sectors of the file are in roughly the same place, but i cant seem to find a common offset, can someone please tell me if the python script allows for multiple offsets or if theres a way to set it up to use a common offset?

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Sat Aug 31, 2013 12:48 am
by FurryFan
Here is a script that will convert the meshes from the .VBIN, and .BIN files (You can save time by running the script on the entire decompressed zipped file, so that the script converts all the meshes at once)
Here is an example of a character mesh (some type of car):
[img]ps23dformat.wikispaces.com/file/view/TransformersBot.jpg[/img]
New (August 2013) Script for Characters:
http://ps23dformat.wikispaces.com/file/ ... hTo3ds.bms

Code: Select all

log MEMORY_FILE 0 0 ;
log MEMORY_FILE2 0 0 ;
log MEMORY_FILE3 0 0 ;
log MEMORY_FILE4 0 0 ;
log MEMORY_FILE5 0 0 ;
log MEMORY_FILE6 0 0 ;
log MEMORY_FILE7 0 0 ;
log MEMORY_FILE8 0 0 ;
log MEMORY_FILE9 0 0 ;
log MEMORY_FILE10 0 0 ;
Get Q ASIZE 0 ;
Math number = 0 ;
For T = 0 < Q ;
Math number += 1 ;
findloc OFFSET string "\x7E\x50\x6F\x73\x69\x74\x69\x6F\x6E\x41\x72\x72\x61\x79\x00\x00" 0 0 ;
If OFFSET = 0 ;
Math T = Q ;
Math T += 1 ;
Math ttest = 0 ;
ELSE ;
GoTo OFFSET 0 ;
SavePos Start 0 ;
Put Start Long MEMORY_FILE4 ;
GoTo OFFSET 0 ;
GoTo 0x08 0 SEEK_CUR ;
Get size Long 0 ;
SavePos null 0 ;
EndIF ;
Next T ;
Put Q Long MEMORY_FILE4 ;


Get listf ASIZE MEMORY_FILE4 ;
If listf = 0 ;
CleanExit ;
EndIF ;
Math spyrodragon = listf ;
Math spyrodragon /= 4 ;
Math spyrodragon -= 1 ;
Math rubyfox = 0 ;
Math diafox = 0 ;
Math rfv = 0 ;
For Y = 1 To spyrodragon ;
log MEMORY_FILE7 0 0 ;
log MEMORY_FILE8 0 0 ;
log MEMORY_FILE1 0 0 ;
log MEMORY_FILE2 0 0 ;
log MEMORY_FILE3 0 0 ;
GoTo rubyfox MEMORY_FILE4 ;
Get start Long MEMORY_FILE4 ;
SavePos rubyfox MEMORY_FILE4 ;
Get size Long MEMORY_FILE4 ;
Math size -= start ;
Log MEMORY_FILE7 start size 0 ;
GoTo 0 MEMORY_FILE7 ;
Math count = 0 ;
Math gt = 0 ;
Math Qprime = 0 ;
Math red = 0 ;
SavePos found MEMORY_FILE7 ;
GoTo 0 MEMORY_FILE7 ;
GoTo 0x10 MEMORY_FILE7 SEEK_CUR ;
Get gee Long MEMORY_FILE7 ;
SavePos gvertex MEMORY_FILE7 ;
Math gee -= 4 ;
Math gee /= 12 ;
Math deedee = 0 ;
For dv = 1 To gee ;
GoTo gvertex MEMORY_FILE7 ;
Get Type1 Long MEMORY_FILE7 ;
Get Type2 Long MEMORY_FILE7 ;
Get Type3 Long MEMORY_FILE7 ;
SavePos gvertex MEMORY_FILE7 ;
GoTo deedee MEMORY_FILE2 ;
Put Type1 Long MEMORY_FILE2 ;
Put Type2 Long MEMORY_FILE2 ;
Put Type3 Long MEMORY_FILE2 ;
SavePos deedee MEMORY_FILE2 ;
Next dv ;





For T = 0 < size ;
GoTo found MEMORY_FILE7 ;
findloc OFFSETT string "\x7E\x49\x6E\x64\x65\x78\x41\x72\x72\x61\x79\x00\x00" MEMORY_FILE7 0 ;
If OFFSETT = 0 ;
Math T = size ;
Math twotest = 1 ;
EndIF ;
If OFFSETT != 0 ;
GoTo OFFSETT MEMORY_FILE7 ;
GoTo 13 MEMORY_FILE7 SEEK_CUR ;
SavePos found MEMORY_FILE7 ;
Put found Long MEMORY_FILE1 ;
EndIF ;
Next T ;
Get mqa ASIZE MEMORY_FILE1 ;
Math mqa /= 4 ;
Math greenfox = 0 ;
For jjj = 1 To mqa ;
GoTo gt MEMORY_FILE1 ;
Get found long MEMORY_FILE1 ;
SavePos gt MEMORY_FILE1 ;
GoTo found MEMORY_FILE7 ;
Get scope Long MEMORY_FILE7 ;
SavePos baseface MEMORY_FILE7 ;
Math foxskin = found ;
Math foxskin += scope ;
Math dragonfox = scope ;
Math dragonfox -= 4 ;
Math dragonfox /= 2 ;
Math dragonfox -= 2 ;
Do ;
GoTo baseface MEMORY_FILE7 ;
Get facecount Short MEMORY_FILE7 ;
SavePos basedeer MEMORY_FILE7 ;
Math redfox = facecount ;
Math redfox *= 2 ;
Math redfox += basedeer ;
Math baseface = redfox ;
Math rfc = facecount ;
Math rfc -= 2 ;
Math kin = rfc ;
Math gng = facecount ;
Math gng *= 2 ;
Math gng += basedeer ;
Math traptiger = 0 ;
Math nogo = 1 ;
If gng > foxskin ;
Math greenfox = 0 ;
log MEMORY_FILE3 0 0 ;
Math traptiger = 1 ;
Math rfc = 0 ;
Math baseface = foxskin ;
GoTo found MEMORY_FILE7 ;
Get null Long MEMORY_FILE7 ;
SavePos basedeer MEMORY_FILE7 ;



EndIF ;




For grayfox = 1 To traptiger ;
For extra = 1 To dragonfox ;
GoTo basedeer MEMORY_FILE7 ;
Get Type1 Short MEMORY_FILE7 ;
SavePos basedeer MEMORY_FILE7 ;
Get Type3 Short MEMORY_FILE7 ;
Get Type5 Short MEMORY_FILE7 ;

Math dragontest = 0 ;
If Type1 = Type3 ;
Math dragontest += 1 ;
EndIF ;

If Type1 = Type5 ;
Math dragontest += 1 ;
EndIF ;

If Type3 = Type5 ;
Math dragontest += 1 ;
EndIF ;


If dragontest = 0 ;
GoTo greenfox MEMORY_FILE3 ;
Put Type1 Short MEMORY_FILE3 ;
Put Type3 Short MEMORY_FILE3 ;
Put Type5 Short MEMORY_FILE3 ;
Put 0 Short MEMORY_FILE3 ;
SavePos greenfox MEMORY_FILE3 ;


GoTo greenfox MEMORY_FILE3 ;
Put Type1 Short MEMORY_FILE3 ;
Put Type5 Short MEMORY_FILE3 ;
Put Type3 Short MEMORY_FILE3 ;
Put 0 Short MEMORY_FILE3 ;
SavePos greenfox MEMORY_FILE3 ;
EndIF ;
Next extra ;
Next grayfox ;














For foxes = 1 To rfc ;
GoTo basedeer MEMORY_FILE7 ;
Get Type1 Short MEMORY_FILE7 ;
SavePos basedeer MEMORY_FILE7 ;
Get Type3 Short MEMORY_FILE7 ;
Get Type5 Short MEMORY_FILE7 ;

Math dragontest = 0 ;
If Type1 = Type3 ;
Math dragontest += 1 ;
EndIF ;

If Type1 = Type5 ;
Math dragontest += 1 ;
EndIF ;

If Type3 = Type5 ;
Math dragontest += 1 ;
EndIF ;


If dragontest = 0 ;
GoTo greenfox MEMORY_FILE3 ;
Put Type1 Short MEMORY_FILE3 ;
Put Type3 Short MEMORY_FILE3 ;
Put Type5 Short MEMORY_FILE3 ;
Put 0 Short MEMORY_FILE3 ;
SavePos greenfox MEMORY_FILE3 ;


GoTo greenfox MEMORY_FILE3 ;
Put Type1 Short MEMORY_FILE3 ;
Put Type5 Short MEMORY_FILE3 ;
Put Type3 Short MEMORY_FILE3 ;
Put 0 Short MEMORY_FILE3 ;
SavePos greenfox MEMORY_FILE3 ;
EndIF ;
Next foxes ;
While baseface < foxskin ;




Next jjj ;














Get Zw3 ASIZE MEMORY_FILE3 ;
Math Zf3 = Zw3 ;
Math Zf3 /= 8 ;
Get Zw2 ASIZE MEMORY_FILE2 ;
Math Zf2 = Zw2 ;
Math Zf2 /= 12 ;
Math FaceNumber = Zf3 ;
Math VertexNumber = Zf2 ;
Math Snake = VertexNumber ;
Math Snake *= 12 ;
Math Dragon = FaceNumber ;
Math Dragon *= 8 ;
Math Sum = Dragon ;
Math Sum += Snake ;
Math QQQ = 60 ;
Math QQQ += Snake ;
Math QQ = 52 ;
Math qaz = 0 ;
Math wsx = 0 ;
Math hqw = Sum ;
Math hqw += 60 ;
Math bearit = 0 ;
Log MEMORY_FILE8 0 0 ;
For bear = 1 To hqw ;
GoTo bearit MEMORY_FILE8 ;
Put 0 Byte MEMORY_FILE8 ;
SavePos bearit MEMORY_FILE8 ;
Next bear ;


For Vertex = 0 < Zw2 ;
GoTo qaz MEMORY_FILE2 ;
Get D byte MEMORY_FILE2 ;
SavePos qaz MEMORY_FILE2 ;
GoTo QQ MEMORY_FILE8 ;
Put D Byte MEMORY_FILE8 ;
SavePos QQ MEMORY_FILE8 ;
Next Vertex ;
For Face = 0 < Zw3 ;
GoTo wsx MEMORY_FILE3 ;
Get D byte MEMORY_FILE3 ;
SavePos wsx MEMORY_FILE3 ;
GoTo QQQ MEMORY_FILE8 ;
Put D Byte MEMORY_FILE8 ;
SavePos QQQ MEMORY_FILE8 ;
Next Face ;
GoTo 0 MEMORY_FILE8 ;
set M Byte 0x4D ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x4D ;
Put M Byte MEMORY_FILE8 ;
Math M = Sum ;
Math M += 60 ;
Put M Long MEMORY_FILE8 ;
set M Byte 0x02 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x00 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x0A ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x00 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x00 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x00 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x03 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x00 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x00 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x00 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x3D ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x3D ;
Put M Byte MEMORY_FILE8 ;
Math M = Sum 
Math M += 44 ;
Put M Long MEMORY_FILE8 ;
set M Byte 0x00 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x40 ;
Put M Byte MEMORY_FILE8 ;
Math M = Sum 
Math M += 38 ;
Put M Long MEMORY_FILE8 ;
set M Byte 0x64 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x72 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x61 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x67 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x6F ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x6E ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x6A ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x61 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x6E ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x00 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x00 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x41 ;
Put M Byte MEMORY_FILE8 ;
Math M = Sum 
Math M += 22 ;
Put M Long MEMORY_FILE8 ;
Set M Byte 0x10 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x41 ;
Put M Byte MEMORY_FILE8 ;
Math M = Snake ;
Math M += 8 ;
Put M Long MEMORY_FILE8 ;
Math M = VertexNumber ;
Put M Short MEMORY_FILE8 ;
Math JumpJump = Snake ;
Math JumpJump += 52 ;
GoTo JumpJump MEMORY_FILE8 ;
set M Byte 0x20 ;
Put M Byte MEMORY_FILE8 ;
set M Byte 0x41 ;
Put M Byte MEMORY_FILE8 ;
Math M = FaceNumber ;
Math M *= 8 ;
Math M += 8 ;
Put M Long MEMORY_FILE8 ;
Math M = FaceNumber ;
Put M Short MEMORY_FILE8 ;
Get purpledragon ASIZE MEMORY_FILE8 ;
Get name FILENAME 0 ;
string name += . ;
string name += Y ;
string name += .3ds ;
Log name 0 purpledragon MEMORY_FILE8 ;
Next Y ;

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Sat Aug 31, 2013 12:58 am
by flarespire
Thx for the new script, the version of this i had only did level geometry, now if only we could convert the ITF files....

I've done some tests and they really need to adjust that script so that it gets the models in t-pose and doesnt split it into seperate .3ds files which all default to pos 0, 0, 0.

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Sat Jul 01, 2017 8:23 pm
by Kiriller12
Did someone understand how to convert .itf texture file?

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Mon Feb 19, 2018 7:32 pm
by SickAlice
Anyone got the other bms for extract the main bin files. Ty. Also not convert persay but you can get at the textures using Textool fairly easy then apply them to the converted models all the same.

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Sun Feb 25, 2018 3:23 am
by Acewell
JETS_WING_ITF.png
:D

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Sun Feb 25, 2018 4:01 pm
by flarespire
Now, mind providing a mirror to that program? it doesn't seem to be available anywhere

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Sun Feb 25, 2018 4:38 pm
by Acewell
i remember posting this here before but here is link to the link :D
viewtopic.php?p=127912#p127912

if you post more samples i might could make a Noesis python script to automate the process. (:

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Mon Feb 26, 2018 4:15 pm
by SickAlice
Another method is the Texmod way. That way you can select and see exactly what textures go where and it automatically converts them to more flexible format.

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Tue Feb 27, 2018 4:45 am
by flarespire
oh nice, I still have the ENTIRE disc extractedif you need ITF samples I can make you a package of em, also, any chance of combining it with whats in the BMS script earlier in the thread to make it so Noesis can view the models with the textures?

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Fri Mar 02, 2018 6:19 am
by SickAlice
Say it before and will again this is such an awesome community, people behave the way community members should and with equal mindfulness. TY to anyone who has and will help me with requests. Side note someone should try and put together a depot of the lost files from the PS2 site. I dunno about anyone else but it was sudden on my end, I was on the site then went on a vacation trip and came back to the empty stub bookmark. There were way too many useful things there to lose spontaneously.

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Sat Mar 10, 2018 8:20 pm
by flarespire
ok I have a full file repo .zip for this game set up if anyone wants to take a better look at the formats and maybe write a plugin, ill post the link here, however, if this post does get chopped by the mod axe, please send me a PM for the link: https://drive.google.com/open?id=124xZq ... 7cLNiv3rrC

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Tue Jul 31, 2018 3:05 pm
by bullettrain
Hi guys, new member here, and slight bump to the thread!

Editing my previous post, I've been able to use Console Texture Explorer to recreate a good chunk of the background files from the retail game and a recently uncovered early version, which are stored as ITF Texture files.

There's a few that I'm stuck on, and it'd be great to get a better understanding of how CTE actually reads the files for reconstruction.

So, using file size as a starting point, I recognise that I can't recreate data outside of the file size limit, instead using the Graphics Offset to make up the limit, as well altering the BPP. All the files so far have fallen under Palette Offset of 60, as noted earlier in the thread. There's two file sets so far that seem to be exceptions to the rule.

The First has a file size of 786492, which using CTE, seems to be outside of workable range to achieve the correct dimensions. Secondly the Palette offset for this and another file are not the standard 60. So, how would I be able to determine the appropriate offset in these case? Would Notepad++ or a Hex Editor help to determine the offset?

Re: [REQUEST] Transformers 2004 .VBIN and . ITF (PS2)

Posted: Sat Mar 06, 2021 8:18 am
by lpriefer01
chrrox wrote: Sun Jun 09, 2013 7:52 pm try this

Code: Select all

from inc_noesis import *
import noesis
import rapi

def registerNoesisTypes():
   handle = noesis.register("Transformers 2004 PS2", ".VBIN")
   noesis.setHandlerTypeCheck(handle, t2004CheckType)
   noesis.setHandlerLoadModel(handle, t2004LoadModel) #see also noepyLoadModelRPG
   noesis.logPopup()
   return 1

NOEPY_HEADER = "FISH"

#check if it's this type based on the data
def t2004CheckType(data):
   bs = NoeBitStream(data)
   if len(data) < 16:
      return 0
   if bs.readBytes(4).decode("ASCII").rstrip("\0") != NOEPY_HEADER:
      return 0
   return 1       

#load the model
def t2004LoadModel(data, mdlList):
   ctx = rapi.rpgCreateContext()
   bs = NoeBitStream(data)
   rapi.rpgClearBufferBinds()   
   return 1

so this for me only makes noesis display the files in the in program explorer they wont preview or export