Total Annihilation and
Total Annihilation: Kingdoms
Reference Document

Technical Reference Document

By Arthur Keller

This version amended by Andrew L. Crystall

Portions Created by other individuals and used with permission

Version 2.5

Questions regarding this information can be directed to .

All work included herein is retained as the copyright of the original authors. Certain portions and technical data are Copyright © Cavedog Entertainment, GT Interactive, Humongous Entertainment and Infogrames, Inc., all rights reserved by copyright holders.

Revision History 7

Project Status Report 8

Team Members 9

Total Annihilation 10

Directory Structure and File Formats 10

Directory Structure 10

Totala1.hpi Contents 11

Totala2.hpi Contents 43

HPI File Format Documentation 45

FBI Commands 54

BOS Functions 60

BOS Script Tutorial – TA 62

static-var 63

#define 64

#include 65

Create() 65

StartMoving() 66

StopMoving() 67

AimPrimary(heading,pitch) 68

AimSecondary(heading,pitch) 68

AimTetriary(heading,pitch) 68

AimFromPrimary(piecenum) 70

AimFromSecondary(piecenum) 70

AimFromTetriary(piecenum) 70

QueryPrimary(piecenum) 70

QuerySecondary(piecenum) 70

QueryTetriary(piecenum) 70

FirePrimary(piecenum) 71

FireSecondary(piecenum) 71

FireTetriary(piecenum) 71

Activate() 72

Deactivate() 72

StartBuilding() 77

StopBuilding() 77

TargetHeading( heading ) 78

QueryNanoPiece(piecenum) 78

QueryBuildInfo(piecenum) 79

QueryTransport(piecenum) 79

BeginTransport(height) 80

EndTransport() 80

SweetSpot(piecenum) 80

Demo() 80

Killed(severity, corpsetype) 81

GUI File Format 82

Generic Infos about gui files : 82

COMMON Tag descriptions : 84

id : 84

Name : 85

width/height 86

xpos/ypos : Read, not so obvious detail inside. 86

active : 86

fontnumber : 87

attribs : 87

assoc : 87

UNCOMMON Tag descriptions : 87

Headers (ID 0) : 88

Buttons (ID 1) : 89

Listbox (ID 2) : 90

Textbox (ID 3) : 91

Scrollbar (ID 4) : 91

Labels (ID 5) : 93

Blank Surfaces (ID 6) : 93

Fonts (ID 7) : 94

Picture Box (ID 12) : 95

GAF Format 95

SCT Format 101

OTA Format 102

BugFix Information 104

Unit ID Number Changes: 104

3rd party units don't work with Bugfix? 106

Speed Benifit: 107

AI fixes: 107

Ai profile changes: 109

Single-player Mission changes: 109

New control options! 110

Category changes in unit FBI files: 111

COB script file changes: 112

Core Necro changes: 113

Antinuke silo changes: 114

Arm Stunner EMP silo changes: 115

Krogoth changes: 115

Landmines Changes: 116

LRPC Changes: 117

Bugfix for the Arm Pelican: 117

Bugfix for ALL Hovercraft: 118

Bugfix for Naval Defensive Structures: 118

Bugfix for the Naval Dragons Teeth: 118

Bugfix for the Arm Penetrator: 119

EMG weapon changes: 119

Core Pyro changes: 119

Crawling Bomb changes: 120

Arm Fibber changes: 120

Core Leviathan Super-Sub changes: 120

Cruiser and Destroyer Changes: 120

Missile Frigate Changes: 120

Advanced bomber changes: 121

Anti-Aircraft missiles changed: 121

Flakker changes: 121

Zero-tolerance bug: 122

Weapons Changes: 122

Accumulating scars bug: 123

Corpse Changes: 124

Build Menu Changes: 124

Unit Name Changes: 125

Unit Changes: 125

Mobility changes on units: 126

GAMEDATA dir (in REV31.GP3) file changes: 127

Unfinished work: 127

Map Tutorials 129

Terragen Map Tutorial 129

WHAT YOU WILL NEED 129

PART ONE - SETTING UP TERRAGEN 129

PART TWO - DESIGNING YOUR MAP 130

PART THREE - MAKING IT A MAP 136

Creating Custom Tilesets 139

Create a concept 140

Design Your Texture and create a template. 140

Create the Terrain Features 141

Create A Pool of water 143

Create the acid 144

Create a River of Acid 145

Converting the sections to the TA color palette 147

Importing the bitmaps 147

Editing Height 149

Finishing Touches 151

Now its time to create a Terrain Archive and make your map! 152

Make your Map 153

AI TWEAKING GUIDE 156

What is the ai? 156

Cavedog's ai, and its problems: 156

General problems with all the ai's made by Cavedog: 157

But that can be changed! 159

What are ai's and Where do I put them? 159

How does the computer know which ai profile to use? 159

How do I change the ai? 160

Then what does make a good ai? 162

So, a good ai should build nothing but resources? 162

Obviously wasted resources are bad? 162

It's not supposed to do too much at one time, but is ALSO supposed to do everything? 162

So optimally, the ai should have 0 metal and 0 energy in storage? 163

How much resources should the ai be using to stay balanced? 163

It starts building lots of solars even though it has max energy! 164

Why is the ai slow building a fusion reactor? 164

How come the ai built 5 Advanced Aircraft Plants - I LIMITED it to just 3! 164

The difficult MATH side of ai profiles: 165

The ai's clockwork build patterns: 166

How come my ARM ai *SMOKES* my CORE ai? 167

Ok, I caught all of that. But my ai still seems slow to buildup! 167

testing, Testing, TESTING! 167

I'm doing a lot of testing, but what am I looking for to know what to change? 168

What kind of ai profile *DOES* a map need? 170

About MY ai... 171

TA Weapons Creation 172

Types of weapons 172

Important values and behaviour of the weapon. 173

Weapon Characteristics 173

Special weapon stuff 174

Looks of a weapon 174

The sounds it makes 174

Weapon Controls 174

Needed resources 175

Total Annihilation: Kingdoms 176

Directory Structure and File Formats 176

Directory Structure 176

V2 Rocket.hpi Contents 182

V3Rocket.hpi Contents 183

FBI Functions 203

FBI TABLE 203

HPI Format Documentation– TA:K 211

CHECKSUM CALCULATION 213

DECOMPRESSION OF BLOCKS AND FILES 214

TNT Format and Conversion 215

Using the Exporter: 215

Heightmap: 216

The Minimap: 216

The Voidmap: 217

The Roadmap: 217

The Jpeg Key 217

The Auto Functions: 217

The Terrain Reader 218

Hex Keys and Hex Values 218

Package and Deployment! 219

Conversion Tutorial 219

Units Editor Tutorial – TDF Edit 220

INTRODUCTION 220

HOW TO USE THIS TUTORIAL ? 221

HOW TO USE TDF EDIT 222

ANIMS 223

CANBUILD 224

FEATURES 227

Info 228

GAMEDATA 230

OBJECTS3D 233

SCRIPT 246

SOUNDS 248

TRANSLATE 248

UNITS 252

MISC 261

COMPILATION OF THE UNIT 261

INSTALLATION AND CONFIGURATION OF THE PROGRAMS 262

3DO BUILDER + 268

SHORT NAME LIST 276

Creating Build Pictures 277

Customizing TA:K to Allow Third Party Races without Iron Plague 279

Revision History

Version / Date / Changes
2.2 / 9/10/01 / Major Document revision, first public release
2.3 / 9/28/01 / Added map tutorial sections, tileset creation tutorial, corrected some FBI entries, added AI tweaking section, corrected some formatting.
2.4 / 9/30/01 / Added Weapons Creation, massive layout modifications, fixed BOS tutorial, added TA:K third party race installation instructions, reformatted TA FBI List and deleted the weapons section (redundant with newer weapons section),


Conversion Project Information

Project Status Report

Report Date: 10 Sep 2001

Task Description / Date
Added / Start
Date / Estimated Completion
Date / Percent
Complete
Recruitment of Staff / 10/1/00 / Ongoing
Research Activites
Investigation of 2nd Resource / 12/1/00 / 5/15/01 / 100%
Compilation of TA FBI Commands / 12/1/00 / 12/15/00 / 100%
Compilation of TA:K FBI Commands / 12/1/00 / 60%
Compilation of TA BOS Commands / 12/1/00 / 12/15/00 / 100%
Compilation of TA:K BOS Commands / 12/1/00 / 35%
Decoding/Implementation of .gui files / 3/1/01 / 55%
File/system layouts - TA / 5/1/01 / 5/2/01 / 100%
File/system layouts - TA:K / 5/1/01 / 5/2/01 / 100%
Compilation of Documents / 1/1/01 / Ongoing
Research of usability of demo / 6/15/01 / 0%
Application Development
GUI converter / 1/1/01 / 65%
TA - TA:K hpi converter / 1/1/01 / 10%
Map converter / 1/1/01 / 0%
Conversion
Tile Conversion / 6/1/01 / 20%
Unit Conversion / 9/15/01 / 0%
Map Conversion / 7/15/01 / 0%
GUI conversion / 6/15/01 / 40%
Creation
Create TA:K AI for TA Units / 7/15/01 / 0%
Creation of other packages / 8/1/01 / 0%
Create Install Package / 8/7/01 / 0%
Testing
Alpha testing / 9/30/01 / 0%
Beta Testing (closed) / 11/1/01 / 0%
Beta Testing (open) / 12/1/01 / 0%
Final Release / 1/1/02 / 0%

Team Members

(This list is incomplete… If your name is missing, let me know)

Name / Responsibilities / Email
Arthur “Aslan” Keller / Project Lead, Research /
Andrew “Dawn Falcon” Cyrstall / Map Conversion Lead /
Jerry20000 / Map Conversion, Tilesets /
HANSOLO / Unit Conversion Lead
GenghisKhanX / Unit Conversion
Dark Rain / GUI, Units, just about everything else /

Total Annihilation

Directory Structure and File Formats

Directory Structure

\CAVEDOG

└───TOTALA

├───BACKUP

└───CC

Directory PATH listing

Volume serial number is 0012FC94 00A3:DCB5

D:.

└───TOTALA

│ ccdata.ccx

│ ccmaps.ccx

│ mptaext.dll

│ online.dll

│ readme.doc

│ setup.exe

│ setup.ini

│ smackw32.dll

│ Taccread.doc

│ Taccread.txt

│ tadwngox.dll

│ taheatx.dll

│ takalix.dll

│ tamplayx.dll

│ tatenx.dll

│ tawirepx.dll

│ TotalA.exe

│ totala1.hpi

│ totala2.hpi

├───BACKUP

│ online.dll

│ tadwngox.dll

│ taheatx.dll

│ takalix.dll

│ tamplayx.dll

│ tatenx.dll

│ tawirepx.dll

│ TotalA.exe

└───CC

Ccquery.exe

INSTALL.LOG

UNCC.EXE

Totala1.hpi Contents

TOTALA1.HPI

├───ai

│ AirBattle.txt

│ DEFAULT.TXT

│ MISSIONS.TXT

│ SeaBattle.TXT

├───anims

│ ALLIES.GAF

│ ANYMSN.GAF

│ Archibrief.GAF

│ ArchiFoli.GAF

│ ArchiFronds.GAF

│ ArchiMetal.GAF

│ ArchiPalms.GAF

│ Archipelago.GAF

│ ArchiTrees.GAF

│ Archivents.GAF

│ ARMAAC1.GAF

│ ARMAAC2.GAF

│ ARMAAP1.GAF

│ ARMAAP2.GAF

│ ARMACA1.GAF

│ ARMACA2.GAF

│ ARMACK1.GAF

│ ARMACK2.GAF

│ ARMACS1.GAF

│ ARMACS2.GAF

│ ARMACV1.GAF

│ ARMACV2.GAF

│ ARMALAB.GAF

│ ARMALAB1.GAF

│ ARMALAB2.GAF

│ ARMAMD1.GAF

│ ARMAP1.GAF

│ ARMASY1.GAF

│ ARMASY2.GAF

│ ARMAVP1.GAF

│ ARMAVP2.GAF

│ ARMAVP3.GAF

│ ARMBLDG.GAF

│ ARMCA1.GAF

│ ARMCA2.GAF

│ ARMCA3.GAF

│ ARMCAMO.GAF

│ ARMCK1.GAF

│ ARMCK2.GAF

│ ARMCK3.GAF

│ ARMCK4.GAF

│ ARMCOM1.GAF

│ ARMCOM2.GAF

│ ARMCS1.GAF

│ ARMCV1.GAF

│ ARMCV2.GAF

│ ARMCV3.GAF

│ ARMCV4.GAF

│ ARMINT.GAF

│ ARMLAB1.GAF

│ ARMOPT.GAF

│ ARMSHARE.GAF

│ ARMSHIPS.GAF

│ ARMSILO1.GAF

│ ARMSY1.GAF

│ ARMVEHIC.GAF

│ ARMVP1.GAF

│ BRIEF.GAF

│ COMMBOOM.GAF

│ commongui.GAF

│ commongui_french.GAF

│ commongui_german.GAF

│ CORAAC1.GAF

│ CORAAC2.GAF

│ CORAAP1.GAF

│ CORAAP2.GAF

│ CORACA1.GAF

│ CORACA2.GAF

│ CORACK1.GAF

│ CORACK2.GAF

│ CORACV1.GAF

│ CORACV2.GAF

│ CORALAB1.GAF

│ CORALAB2.GAF

│ CORAP1.GAF

│ CORASY1.GAF

│ CORASY2.GAF

│ CORAVP1.GAF

│ CORAVP2.GAF

│ CORAVP3.GAF

│ CORBLDG.GAF

│ CORCA1.GAF

│ CORCA2.GAF

│ CORCA3.GAF

│ CORCAMO.GAF

│ CORCK1.GAF

│ CORCK2.GAF

│ CORCK3.GAF

│ CORCK4.GAF

│ CORCOM1.GAF

│ CORCOM2.GAF

│ CORCS1.GAF

│ CORCV1.GAF

│ CORCV2.GAF

│ CORCV3.GAF

│ CORCV4.GAF

│ COREBLDG.GAF

│ CORFMD1.GAF

│ CORINT.GAF

│ CORLAB1.GAF

│ CORMAIN.GAF

│ CORSHIPS.GAF

│ CORSILO1.GAF

│ CORSY1.GAF

│ CORVEHIC.GAF

│ CORVP1.GAF

│ CURSORS.GAF

│ Desertbrief.GAF

│ DRYCRUSH.GAF

│ DRYMETAL.GAF

│ DRYROCKS.GAF

│ DRYSCARS.GAF

│ DRYVENTS.GAF

│ ENDMSN.GAF

│ FOG.GAF

│ FOGTILES.GAF

│ FRONTEND.GAF

│ FX.GAF

│ GEOTHERM.GAF

│ Greenbrief.GAF

│ greenvents.GAF

│ grnventest.GAF

│ hattfont11.GAF

│ hattfont12.GAF

│ HOLES.GAF

│ HUMANS.GAF

│ IceChunks.GAF

│ ICEMETAL.GAF

│ ICESCARS.GAF

│ ICEVENTS.GAF

│ IGTITLES.GAF

│ Lavabrief.GAF

│ LavaRockA.GAF

│ LavaRockB.GAF

│ LavaRockC.GAF

│ LavaScars.GAF

│ LavaSpires.GAF

│ LavaStuff.GAF

│ LavaStuff2.GAF

│ LOADGAME.GAF

│ LOGOS.GAF

│ LOUNGE.GAF

│ LOUNGE2.GAF

│ Lunar2Brief.GAF

│ Lunarbrief.GAF

│ MAINMENU.GAF

│ Marsbrief.GAF

│ MarsGlyphs.GAF

│ MarsPlants.GAF

│ MarsPlants2.GAF

│ MarsPlants3.GAF

│ MarsRockGone.GAF

│ MarsRockGoneShad.GAF

│ MarsRockHit.GAF

│ MarsRockHitShad.GAF

│ MarsRocks.GAF

│ MarsRocks2.GAF

│ MarsRocks3.GAF

│ MarsVents.GAF

│ Metalbrief.GAF

│ MISCART.GAF

│ mooncraters.GAF

│ mooncrush.GAF

│ moonmetal.GAF

│ moonrocks.GAF

│ moonscars.GAF

│ MUSIC.GAF

│ MUSICRT.GAF

│ NEWGAME.GAF

│ OLDMAIN.GAF

│ PIPES.GAF

│ PREFS.GAF

│ ROCKREC.GAF

│ rockrecscars.GAF

│ ROCKS.GAF

│ rocksdead.GAF

│ rockshurt.GAF

│ rockshurt2.GAF

│ RUINS1.GAF

│ SCARS.GAF

│ SELGAME.GAF

│ SELPROV.GAF

│ SELSIDE.GAF

│ SHARE.GAF

│ SINGLE.GAF

│ SKIRMISH.GAF

│ TALK.GAF

│ TALK2.GAF

│ TERRAIN.GAF

│ TITLES.GAF

│ TOWERS.GAF

│ towerscars.GAF

│ TREES.GAF

│ VENT.GAF

│ VENTS.GAF

│ VISMASK.GAF

│ VISMASKS.GAF

│ WDesertbrief.GAF

│ WETCRUSH.GAF

│ WETMETAL.GAF

│ WETROCKS.GAF

│ WETSCARS.GAF

│ WETVENTS.GAF

│ WRECKAGE.GAF

├───bitmaps

│ ARMBKG.PCX

│ armguibottile.pcx

│ armguisidetile.pcx

│ armguitoptile.pcx

│ battleroom2.pcx

│ battlestart.pcx

│ BUTTONS2.PCX

│ CDLOG256.PCX

│ CONSOLE.PCX

│ COREBKG.PCX

│ corecamp0.PCX

│ corecamp1.pcx

│ corguibottile.pcx

│ corguisidetile.pcx

│ corguitoptile.pcx

│ createnew.pcx

│ DHELP.PCX

│ DLoadgame2.pcx

│ DLoadList.pcx

│ DRESTART.PCX

│ DSavegame2.pcx

│ DSaveList.pcx

│ DSelectmap2.pcx

│ DVIEWMAP.PCX

│ ENDCAMP.PCX

│ FAILURE.PCX

│ FRONTBG.PCX

│ Frontbgold.pcx

│ Frontend1F.PCX

│ FrontendX.pcx

│ GROMMETS.PCX

│ Hattfont10.PCX

│ Hattfont11.PCX

│ IGButtons.pcx

│ IGMBRIEF.PCX

│ IGOPT0X.PCX

│ IGOPT1X.PCX

│ Igoptintx.pcx

│ igoptionsTEMP.PCX

│ Igoptmusx.pcx

│ Igoptsoux.pcx

│ IgoptTEMP.pcx

│ Igoptvisx.pcx

│ IGPATCH.PCX

│ Installgame.pcx

│ InstallgameJ.pcx

│ Installglam.pcx

│ LOADBAR.PCX

│ Loadgame2bg.pcx

│ LOGOTEST.BMP

│ mbriefarm.pcx

│ mbriefcor.pcx

│ Mission02Win.PCX

│ Mission02Win2.PCX

│ Mission02WinBW.pcx

│ newcampaign4.pcx

│ newcampaign4x.pcx

│ newcamplogos.pcx

│ OptInterface4x.pcx

│ Options4x.pcx

│ Optmusic4x.pcx

│ OptSound4x.pcx

│ OptVisual4x.pcx

│ OUTCOME0.PCX

│ OUTCOME1.PCX

│ playanygame4.pcx

│ Playgame2.pcx

│ Playgame2J.pcx

│ pressedbone.PCX

│ PREVIEW.PIX

│ SAVEGAME.PCX

│ selconnect2.pcx

│ selectgame2x.pcx

│ SINGLEBG.PCX

│ Skirmsetup4x.pcx

│ SMALLDOG.BMP

│ small_cavedog_logo.pcx

│ stagebuttons.pcx

│ STAR.PCX

│ TEMP.PCX

│ temptrans.pcx

│ TITLSCRN.PCX

│ UnitRestrict.pcx

│ UnitRestrict4x.pcx

│ UnitRestrict5x.pcx

├───features

│ ├───all worlds

│ │ DragonsTeeth.tdf

│ │ scars.tdf

│ │

│ ├───archi

│ │ FOLIAGE.TDF

│ │ METAL.TDF

│ │ TREES.TDF

│ │ TREES2.TDF

│ │ VENTS.TDF

│ │

│ ├───corpses

│ │ arm_corpses.tdf

│ │ arm_heaps.tdf

│ │ core_corpses.tdf

│ │ core_heaps.tdf

│ │

│ ├───desert

│ │ METAL.TDF

│ │ ROCKS.TDF

│ │ RUIN.TDF

│ │ VENTS.TDF

│ │

│ ├───green

│ │ METAL.TDF

│ │ ROCKS.TDF

│ │ SHRUBS.TDF

│ │ SMUDGES.TDF

│ │ steamvents.tdf

│ │ TREES.TDF

│ │

│ ├───ice

│ │ CHUNKS.TDF

│ │ METAL.TDF

│ │ SCARS.TDF

│ │ VENTS.TDF

│ │

│ ├───lava

│ │ METAL.TDF

│ │ NODES.TDF

│ │ ROCKS.TDF

│ │ SPIRES.TDF

│ │ VENTS.TDF

│ │

│ ├───mars

│ │ GLYPHS.TDF

│ │ METAL.TDF

│ │ PLANTS.TDF

│ │ ROCKS.TDF

│ │ VENTS.TDF

│ │

│ ├───metal

│ │ buildings.tdf

│ │ PIPES.TDF

│ │ steamvents.tdf

│ │

│ ├───moon

│ │ CRATERS.TDF

│ │ METAL.TDF

│ │ ROCKS.TDF

│ │

│ └───wetdesert

│ metal.tdf

│ rocks.tdf

│ vents.tdf

├───fonts

│ ARMBUTT.FNT

│ ARMCONTR.FNT

│ ARMFONT.FNT

│ armfont827.FNT

│ BUTTONS.FNT

│ COMIX.FNT

│ CONSOLE.FNT

│ CORBUTT.FNT

│ CORBUTTX.FNT

│ CORCONTR.FNT

│ COREFONT.FNT

│ Corefont827.FNT

│ COURIER.FNT

│ HATT12.FNT

│ HATT14.FNT

│ MSCRIPT.FNT

│ ROMAN10.FNT

│ ROMAN12.FNT

│ SMLFONT.FNT

├───gamedata

│ ALLSOUND.TDF

│ BuildInfo.tdf