Andrew's Random Tribes Projects

Quick Links

Fonts

Tribes uses Phoenix Font? files (.pft) to render ingame fonts. The font file consists of a bitmap and an associated index for each character, telling Tribes where each character is located in the bitmap and the character attributes (width, height, vertical offset). As far as I know, I am the only one with a working editor for them since Sierra seems rather content with letting the original code and utilities stagnate. I will get around to uploading the amazing fonts random (Kris) has done later.

Here is a small collection of custom fonts. To use one, download it, rename to whichever font you would like to use (e.g. if_g_10b.pft for teamchat), and place it in tribes\base\skins.

If you would like shadows or different colors: Download Tribes Font Editor and do it yourself! The Shadowize function is a no brainer for one click shadows and the Colorize function will color the font to whatever color you have selected.

(Mouseover to view, Click to download)

Palettes

Tribes uses Phoenix Palette? files (.ppl) to keep track of the various palettes that all the bitmaps in the game use. The palette file consists of the number of palettes, unknown header information, all the palettes one after another (each palette with it's own unique id), and unknown footer information. This utility is mostly here as an oddity, as nobody will have any use for it due to the issues you run in to from my lack of understanding of the format.

Bitmaps

Tribes uses Phoenix Bitmap files (.bmp) to for it's bitmaps and Phoenix Bitmap Arrays (.pba) for it's bitmap compilations. Phoenix Bitmaps are just like standard Windows Bitmaps except for a few slight differences.

  1. Phoenix Bitmaps have no palette information
  2. Phoenix Bitmaps have a byte in the header to indicate various effects (standard, additive, subtractive, translucent, and transparent (index 0 is not rendered). The alpha values in the palettes are taken into consideration for all but standard and transparent.
  3. Phoenix Bitmaps have a field at the end of the file indicating which palette they use. Each palette in a .ppl file has a unique ID, which is what is referenced by this field

Phoenix Bitmap Arrays are merely containers for multiple Phoenix Bitmaps. The few uses I have found are containers for gui controls, containers for animation, and font bitmap containers (only one font is large enough to need more than one bitmap, and it is not used in Tribes).

My utility was originally intended to view Phoenix Bitmap Arrays, but I later expanded it to view Phoenix Bitmaps as well. The palette detection is almost perfect, save for one palette (I think). You may also export individual frames or bitmaps to Phoenix Bitmap format or Windows Bitmap format.

Note: Mousewheel scrolls through the PBA frames (if more than 1), and the up/down/left/right keys zoom in/out and cycle left/right respectively.

Custom GUI Colors

Tribes retardedly uses a unique .ppl (palette compilation file) for each landscape type (lush, mud, ice, desert, etc). What this means is if you want to edit the palette the GUI uses to get some new color (say, pink shaded HUD backgrounds instead of gray), you need to edit around 12 .ppl files to do a freakin single color. This is obviously more pain than it's worth if you do it by hand. After I saw enough people actually doing it by hand, I decided to make a quick program to automate the process. (Please don't ask why I chose to use PHP to patch the palettes, break the test .vol into it's constituent .ppl files, and finally .zip them all up). The web page even has a test interface so you can see exactly what changes you're making.

(I think this only works in IE, I have no idea how I made the javascript work)

Note: You can not use sky and/or terrain that uses custom palettes with these. One or the other..

Tribes Configs

I'll put some explanations later. Until then, here are the pages for my two Tribes configs

Timestamping

It has been a longstanding issue that there is no way to get a current timestamp in Tribes without using an external program (which is a huge pain). After MUCH nagging from Random (and some help with the file and code offsets for stuff to hijack), I broke down and made a small asm patch to give Tribes native timestamping support. Now I can finally get rid of the godawful timestamping programs on Heaven and Hell that like to randomly stop working.

Included in the .zip is a thorough explanation of how I managed this, the source code for the patch, an example tribes script utilizing the new function, and a compiled executable for the patch.

Tribes Terrains

These are the 100% original tribes heightmaps (ripped by me) in various formats for you to steal for your own game that will suck if it isn't Tribes. Technically I should get around to finishing the rest of the original T1 maps and maybe do the expansion maps (if I'm not lazy).

HudBot

You have to see it to believe it

Scriptless Skiing

Makes it so you can bind your jump key to "turn left" and have built-in skiing

mem.dll - Even more useless extra functionality for Tribes

mem.dll adds random functionality to Tribes so the last 15 people can use winamp from in-game (actually 3rd person IFFs).

mem.dll(nude) is the source for a stripped down version of mem.dll which only allows you to interact with Tribes functions and variables. Probably only useful for server owners who want to make weird server add-ons like database plugins.