Myself, Corey Sanders, and Chris Davenport, in order of helping out.
This is a set of utilities to translate the data files found on the Squaresoft game Final Fantasy Tactics for Sony Playstation into a format a common computer can read.
Still working on it.
Ever see something that is just so awesome that you have to know how it works? Well, that's how Final Fantasy Tactics is to me. So I'm figuring out how all of the data files on the CD work.
Well, I stare at strange hex values from 'od' or look for patterns with 'mapblock'. Then I make wild guesses as to what the numbers mean in relation to the game. Sometimes I'm right, often I'm clueless. Other times I dump files as images with 'dumpbw' and see if it's an image.
Firstly, there's a few you won't need:
And there's the important ones you will need:
And some secondary programs you may find useful:
But you probably want to know what they do, so here's a short description of each:
spr2pc Originally designed to render the paletteized sprites in the battle/
directory, now it's used to display anything with a palette. This is the main program that is useful.
dumpbw I designed this as a debugging aid to display the files as a 256
grayscale image based on byte values but it turns out there's some files that are raw 16-bit color (no palette) and this program was naturally extended to handle those as well.
Post-processes the sprite files to pull out the portaits.
An ugly hack to display the files in the effect/ directory. It works on everything except the smaller of the files.
opnbk2pc.pl & opntex2pc.pl
They process 'opnbk.bin' and 'opntex.bin' found in open/. opntex2pc.pl uses hard-coded offset but it could be trivially adapted to actually interpret 'opntex.bin' and display with that.
./spr2pc ramuza.spr -r 0:0:16
Takes the 'ramuza.spr' file, renders it as a color sprite, and outputs ramuza.spr.gif in the same directory. The palette is not shifted, assumed to be standard length (512 bytes), and is limited to 16 colors.
./spr2pc -o ramuza.gif ramuza.spr -b -h
Renders 'ramuza.spr' as 'ramuza.gif' in black & white and uses an alternate palette for the portrait.
./spr2pc -o e511.gif e511.bin -j -65536 -a -$[65536+1028] -l 256
Starts rendering 64kB from the end of the file, using the palette found (using Bash 2 math) 65536+1028 bytes from the end of the file, and assume the width is 256 bytes.
./spr2pc -o hyou2.gif hyou.sp2 -p hyou.spr -P hyou.pal -z 2:1:1
Render 'hyou.sp2' using the palette from 'hyou.spr' and write a palette 'hyou.pal' in GIMP format. It's displayed at twice normal size without the 2:1 X/Y ratio normally used by spr2pc.
./spr2pc -o hyou.gif hyou.spr -r 16:0:16
Renders 'hyou.spr' with the second "uniform". (Offsets the palette by 16 entries and limits it to 16 entries.)
dumpbw supports -c, -l, -j, and -o just like spr2pc.
Find a Tactics CD, it's not easy to buy now. I will not send data files to people. Send any patches, ideas, specifications, formats, suggestions, etc. to one of the addresses at the bottom of this file. I also frequent a few Final Fantasy Tactics boards:
However, they're mostly useless for any technical sort of help. One of the creators of the Gigabee board would like to eventually make a two-player networked Tactics though.
If you have a Net Yaroze account and/or access to technical Playstation or Final Fantasy Tactics information, I'd appreciate documents pertaining to the game. I suspect I'll need to play with a MIPS disassembler to gleen some of the information I'm trying to find out about th data files.
I'm doing this "just because" and not for any commercial usage. I'm not distributing the files from the CD, nor am I giving access to all of the data files I have created. I am showing off bits and pieces to demonstrate what my programs can do, but I have nothing even close to what typical fan sites use.
All of the files included herein are under the GNU General Public License. A file called 'COPYING' has more information.
Corey Sanders For actually helping on such an odd project. Chris Davenport For the initial idea to render the maps as graphics.