Did you know? Xentax started the Unepic SID Channel, that brings the latest music composed for the SID chip! Support us by listening and subscribing! Over 50.000 songs already there!

Matrix Game Files (.ftx and .btx_28)

The Original Forum. Game archives, full of resources. How to open them? Get help here.
Post Reply
emrekumas61
n00b
Posts: 10
Joined: Wed Feb 01, 2012 7:46 pm
Has thanked: 3 times

Matrix Game Files (.ftx and .btx_28)

Post by emrekumas61 » Sat Jan 18, 2014 2:27 pm

Hi. I want to edit The Matrix: Path of Neo. I want to know how to open these files.

The .btx_28 files are the localization files of the game. I can open them in a hex editor and edit them as I like. I also can add more characters and the game shows them perfectly with no error.

The .ftx files are the font files of the game. I tried to open these with too many programs but none of them opened. Please help me to open these font files.
You do not have the required permissions to view the files attached to this post.

herbert3000
veteran
Posts: 134
Joined: Wed Jun 02, 2010 4:53 am
Has thanked: 18 times
Been thanked: 143 times
Contact:

Re: Matrix Game Files (.ftx and .btx_28)

Post by herbert3000 » Mon Jan 20, 2014 1:37 am

I guess you'll have to write your own ex-/importer for these files.
The good news is, the file format is pretty simple. I'll post the format here soon.

Here are some characters from the file (just to proof that I'm not bullshitting you):
output.bmp
You do not have the required permissions to view the files attached to this post.

herbert3000
veteran
Posts: 134
Joined: Wed Jun 02, 2010 4:53 am
Has thanked: 18 times
Been thanked: 143 times
Contact:

Re: Matrix Game Files (.ftx and .btx_28)

Post by herbert3000 » Wed Jan 22, 2014 1:02 am

Here are my findings on the file format:

0x44 and 0x48 is probably the global height of each character block

0x158-0x447 (length: 0x2F0)
here we have the character information (8 bytes per character)

struct char_info {
uint8 char_offset;
unit8 unknown0; // always 0x00
uint16 block_offset;
uint8 char_width;
uint8 char_height;
uint8 unknown1; // most times 0x00, sometimes 0xFF
uint8 unknown2; // most times equals to width
};

add 0x850 to each block_offset to get the correct address of the block.
byte char_block[char_height*256]

each byte represents one pixel
I don't know how the font looks in-game but I think that this block is the alpha channel.
So 0x00 is fully transparent, 0xFF is opaque and every value in between is partly transparent.

Each block is a bitmap which is 256 pixels wide, the height is always 0x1B.
Inside this block the char_offset tells us where the actual character starts.

Here's the full character set:
MATRIX.FTX.bmp
You do not have the required permissions to view the files attached to this post.

Post Reply