--------------------------------TYPE------------------------------------------Yes=Y, No=N, Limited=X - AAI Dune image(*.AAI) READ[Y] WRITE[N] - Windows Bitmap(*.BMP) READ[Y] WRITE[Y] - Dr.Halo Image(*.CUT) READ[Y] WRITE[N] - Direct Draw Surface(*.DDS) READ[Y] WRITE[Y] - Graphics Interchange Format(*.GIF) READ[Y] WRITE[Y] - Radiance Image Format(*.HDR) READ[Y] WRITE[Y] - Microsoft Icon(*.ICO) READ[Y] WRITE[N] - Joint Photographic Group(*.JPG) READ[Y] WRITE[Y] - Multiple-image Network Graphic(*.MNG) READ[Y] WRITE[Y] - Portable Float Map(*.PFM)|*.PFM READ[Y] WRITE[Y] - Adobe Photoshop Document(*.PSD) READ[Y] WRITE[Y] - Truevision Targa(*.TGA) READ[Y] WRITE[Y] - Alias/Wavefront Image(*.RLA) READ[Y] WRITE[N] - Seattle File Works(*.SFW) READ[Y] WRITE[N] - Sony Playstation Image(*.TIM) READ[Y] WRITE[X] - From Software TIM(*.FSTIM) READ[Y] WRITE[X] - Sword of Moonlight TXR(*.TXR) READ[X] WRITE[N] |
- Import, edit and add simple effects to all the supported file formats, including .FSTim! - Seek .FSTim and .Tim from bigger files, combining usability with multiple tools! - Convert an entire directory of images to any of the support write formats! |
- Save as - Editing files - Seeking files - Applying filter effects to images of all different types, and saving them. |
- Seeking, converting and viewing of many more different game and games console specific formats.. |
Quite honestly, I have no idea how to make file seekers, I actually meant to ask you exactly how you did it for the KFtool.It's a bit difficult with the KFTIMs as I don't think they have a tag, but since data in PSX games is "aligned" in 4 byte chunks. You'll notice KFTIMs repeat bytes 0x0-3 at 0x8-B. So my tool reads the file being scanned into an array of 4 byte chunks, then compares each 4 byte chunk with the chunk that starts 4 bytes later to see if they're the same.
if(checkByte1 = checkByte4) (I read an int for both of these, so it took the entire 4 bytes.) This is that junk data which is on the 4th row...
{
if(checkByte2 = checkByte5) (These were both shorts ) //Compares the first width value, and tries to compare it with the second...
{
if(checkByte3 = checkByte6) (These were both shorts too) //Compares the first height value, and tries to compare it with the second.
{
if(checkbyte1 != 0 ... ... ... ) //it checks if all the bytes don't = 0, this stops it seeing the 'padding' bytes as FS/KFTims in the archives... This part isn't needed, but stops junk files...
{
//Sets file start: File position - 64
//sets the file End: fileStart + ((width*4)*height)/2
//SLOW RIPPING CODE!
}
}
}
}
I had actually been following your posts, but it seems that you have discontinued your original project. If you are making a much better one though, huzzah!- I was continuing the original project still. I just found I'd ran out of stuff I liked to do with it. So I've decided to start this, which should be much better.
What files will it be able to open, and will it be more centric around game assets, or 3D program files (.blend, .mqo, etc)- I'm not 100% sure, it's going to open these for sure though.
I'm also curious as to what prompted this, will you be spreading the programs funtionality out across multiple platforms?- Well, I just feel like there's no one creating a tool like Photoshop or 3DSMax for game hacking. I figured it'd be something very good to have.
An animated TMD maker. Or even a non-animated OBJ to TMD converter so that people can use their favorite modeler.- If I can find a reference for Animated TMDs, I'd do it. But from what I found, TMDs don't hold animations, TOD files hold that data. And I'll be supporting that. :)
A generic file inserter/extractor (ie insert file A into file B at given location) which saves/loads a list of file locations for the current project so you don't have to re-enter the insert/extract location every time.- How about archive profiles? It would work by letting you create a loader for the header of a file which is an archive. I'd also include a basic inserter/extractor.
A PS2 raw image de-swizzler and viewer.- Not sure what that is exactly. If you explain more? Haven't worked much with PS2 formats yet.
A raw image <=> BMP converter that also inserts/extracts and has support for palette location input.- Again, explain. Does it let you choose separate data to turn into a BMP? like separate palette and image data files?
For translating, I think a feature that auto-generates a file to insert translated text and edits pointers to match would be helpful. I would probably be impossible to make a tool that supports every game's text, but just supporting SJIS format games could be quite useful.- I can agree with that, but it would be nice to have more information. Since you've done a lot of translating games, It'd be nice to get given some design ideas when I create the translating tools.
How about archive profiles?That would be perfect!
Not sure what that is exactly. If you explain more? Haven't worked much with PS2 formats yet.Attached is a simple description of Swizzling. I haven't dealt with it much myself.
Again, explain. Does it let you choose separate data to turn into a BMP? like separate palette and image data files?I meant for graphics like the KF textures, something that let you scan a raw file using an interface something like NANA, and when you find a graphic, let you scan for the location of the palette data (if applicable), and lastly extract the graphic+palette as a BMP. And also it would remember the location of of the palette/image for later reinsertion after editing.
I can agree with that, but it would be nice to have more information. Since you've done a lot of translating games, It'd be nice to get given some design ideas when I create the translating tools.When you get there I can tell you my thoughts about it. I've had to make several such tools for the Brigandine project; they all operate similarly, but are customized to a specific file format. I should have taken the time to make a configurable tool that would work for all files, but really can't justify spending the time with my schedule. Basically, the user provides the text begin and end locations, the pointer block begin/end locations, the offset (ie if text at 0x10 in file, pointer value is 0x2010, offset is 0x2000), and lastly, the text end-byte.