TA Demo 0.99b2
README | Recorder | Replayer | 3D TA | History

1. Recorder
2. Interface Upgrade
3. The Autoclick feature
4. The Whiteboard feature
5. Interface Upgrade options
6. Command reference
7. Hints and Tips
8. Tech jargon
9. Legalese

This file is also available online.

Recorder
We recommend that you switch on Record automatically in the Recorder settings (4.) of the control center. If you do not want to do so, you will have to manually start recording before or during a game using the .record filename command (see the command reference) issued from the chat console in either the Battle Room or the game.

This version of the recorder comes with an interface upgrade for TA. It implements various features that we always wished would make it into a TA 4.0 patch or something similar.

Interface Upgrade

Idle Const Finder
  Ctrl-B will now cycle through your idle Constrution units. (Moving does not count as idle.)
Queue 100 units
  Just like you hold Shift to queue/unqueue units in steps of 5 in factories, you can now hold Ctrl+Shift and will be able to queue/unqueue units in steps of 100.
Ally income display
  A box that displays the net income and storage of your allies. When replaying games, it shows the net income of all players. You can move this box by dragging it around with the left mouse button. Doubleclicking into it will bring up the interface upgrade options.
Autoclick
  Conveniently queue long rows or rings of structures. See Autoclick for details.
Whiteboard
  Use the main map display as a drawing board or set markers. All your allies will be able to see your drawings/markers. See Whiteboard for details.

Important note: The Interface Upgrafe will not work with the Boneyards version of TA. You can record games and everything else will work, but you cannot use these new interface features when using the Boneyards patch.

The Autoclick feature
The autoclick feature allows for easy queuing of rows of structures or rings of DT. It is activated by pressing the autoclick key - by default this is keycode 88 which is the X key.

Queueing rows of a structure:
  1. Select the structure to build, from any Construction unit's menu.
  2. Press and hold Shift, then press and hold the autoclick key.
  3. Click down the first structure to build.
  4. Now move the mouse around. If you have enabled Visualize DT rows (8.) in the Interface Upgrade options, the resulting row of structures will be previewed on-the-fly.
  5. If you like your row of structures, click again. Alternatively you can release the autoclick key to cancel the row queue.
Queuing DT rings:
  1. Select the structure to build, from any Construction unit's menu.
  2. Press and hold Shift.
  3. Click and hold the right mouse button at where you want the top left corner of your DT ring to be. You can drag the mouse around and if you have Visualize DT rows (8.) of the Interface Upgrade options, watch the ring follow your mouse pointer.
  4. Click left when you like what you see, or just let go of the right mouse button if you want to cancel the ring queue.

Note that you can change the autoclick key in the Interface Upgrade options to something that suits your tastes, if you don't like X.

The Whiteboard feature
The whiteboard feature allows for enhanced communcation of reconnaisance between allies. It is activated by pressing the whiteboard key. The factory default is keycode 220 which is the ^ key (above Tab and to the left of 1).

Setting markers:
  1. Press and hold the whiteboard key
  2. Left-doubeclick on a spot on the main game screen and release the whiteboard key.
  3. You will be prompted for a description text. Enter something and hit Return.
  4. Your allies will be notified of the addition of a marker.
Setting quick markers:
  1. Press and hold the whiteboard key.
  2. Click the middle mouse button on a spot on the main game screen.
  3. The marker will be added with no description. Again, your allies will be notified.
Scroll to newest ally marker:
  1. Press and hold Ctrl.
  2. Press the whiteboard key.
Editing marker descriptions:
  1. Press and hold the whiteboard key.
  2. Left-doubleclick on a marker.
  3. You will be prompted for a description text. Enter something and hit Return.
Moving markers:
  1. Press and hold the whiteboard key.
  2. Left-click on a marker and drag it anywhere you want.
Drawing:
  1. Press and hold the whiteboard key.
  2. Click left and drag to draw. Easy as pie :o)
Quick erasing:
  1. Press and hold the whiteboard key.
  2. Click and hold the right mouse button, then drag to erase. The eraser size is 100×100 pixel.
Selective erasing:
  1. Press and hold the whiteboard key.
  2. Right-doubleclick on a spot. You will erase a 20×20 pixel area.

Note that you can change the whiteboard key in the Interface Upgrade options to something that suits your tastes, if you don't like ^.

Interface Upgrade options
The Interface Upgrade options are accessible at any time while TA is running by pressing Ctrl-F2. Alternatively, you can bring the box up by doubleclicking the ally income display during a game/replay.

1. Select whether you want the income display box to be transparent, only have background beneath the text or have a fully solid background.
2. The interface upgrade adds tripple-buffering for TA's screen display. With this option, you can select whether it will synch to your screen's vertical retrace for shear-free images. You should not need to change this unless you are using a very slow computer or a pretty old graphics card.
3. The code for the key that controls the whiteboard features. To select a different key, click into the box, then hit the desired key.
4. The code for the key that controls the autoclick features. To select a different key, click into the box, then hit the desired key.
5. The delay between autoclicks, in units of 10ms.
6. The text to be "typed" when you hit F11. To change it, simply click into the box to edit it.
7. Use a different order for autoclick queues when the footprint is set to 2. Construction units will spend ever so slightly less time building lines of Dragon Teeth this way.
8. Enables on-the-fly preview of autoclick queues.

Command reference
TA Demo is largely controlled via commands issued from the TA chat console available in the Battle Room and, by pressing ENTER, during the game. Here is a list of available commands:

.3dta (battleroom)
  Enables the 3D version of the replayer.
.cmdwarp (battleroom host-only)
  Enables a singleshot Commander warp. The game will start out paused. You can click on any spot on the map and your Commander will instantly be placed there. Do this as often as you like. Once you have found a cozy spot for your Commander, click the Done button. Once everyone does so, the game will automatically unpause. Alternatively, you can unpause the game manually - this will terminate the warp sequence for everyone in the game. Useful for fixing the start positions for 2v2 games on the MSN Gaming Zone for example.
.crash (ingame)
  Mainly for debugging purposes: forces the recorder to actually crash if it is catching exceptions, so that you can get a full Errorlog.txt of the event. Usually you will want to use .panic.
.createtxt (battleroom ingame)
  Logs all game chat to a texfile with timestamped name in the Default TA Demo directory (3.) of the Control Center.
.ehaoff (battleroom ingame anyone)
  Disable the interface upgrade. This will disable all new functions like the Idle Const Finder, Queue 100 units etc.
.ehareport (battleroom ingame anyone)
  All recorders in game report the status of their interface upgrade component. Mainly for debugging purposes.
.fakewatch (battleroom)
  Gives you the ability to chat while watching. Join the game as a regular player for it to work. You will appear as a watcher to everyone else and will be unable to affect anything, except that you will be able to chat. Note that fake watchers occupy the first slots in the game, causing some disruption for the rest of the players' start positions. You may want to use .cmdwarp as a workaround.
.fixall (battleroom ingame)
  Enable both lag workarounds at once: .fixfacexps and .protectdt.
.fixfacexps (battleroom ingame)
  The recorder will protect new units for three seconds after they start building in a factory so that they are not killed by damage being dealt to an already dead unit, the cause for the annoying effect of "exploding build queues".
  NOTE: Because new units are invulnerable for 3 seconds, some aspects of the game change. This is most notable when a group of Skeeters attacks a shipyard producing units - the Skeeters deal most damage with their secondary weapon which you can't force fire at the Shipyard, so units produced by the Shipyyard will in this case soak up a lot of the damage, making it harder to kick people out of the water using Skeeters. If this concerns you, see .fixoff.
.fixoff (battleroom ingame anyone)
  Disables all fixes for everyone. The game must be rehosted in to reenable them.
.hookreport (battleroom ingame anyone)
  Reports the presence and version of each TA Hook in the game. All TA Demo 0.98b recorders will always reply with a positive respond to this query. Under Note that TA Hook is now obsolete - the functionality is built right into TA Demo itself.
.take (ingame)
  When a reject screen for a player appears, an ally can use .take to claim the dropping player's units and structures.
.takecmd (ingame)
  Same as .take, but includes the dropping player's Commander giving you two of them to worry about and utilize. With Commander Dies: Game Ends settings, loosing any Commander loses you the game. Ctrl-C will also select all Commanders.
.panic (ingame)
  If the recorder starts flooding you with Exception caught messages, use this command and pray that the recorder manages to process it.
.plfrom nick (ingame)
  Packet loss statistics for a certain player. Each value represents the time passed at a certain packet loss level. The first ten values represent 2% steps in the range from 0% to 20%, the last one represents the entire 20% to 100% range.
.plresults (battleroom)
  Prints info about how the packets in the last .pltest fared.
.pltest nick (battleroom)
  Sends a sharp spike of ping packets to a player. This does not show what the conditions will exactly be like in a game and requires some experience to judge. However, it does simulate the kind of activity that would tend to occur during a game. See also the .plfrom command.
.protectdt (battleroom ingame)
  Tries to make sure DTs aren't lost. Without this fix, sometimes an opponent will see holes in an actually solid DT line you built.
.randmap filename (battleroom)
  Proposes a map randomly picked out of a list from a file that follows the format of the supplied maps.txt. The filename is optional and defaults to maps.txt if omitted. If you create your own favorite list of maps to play on you can use it by specifying the filename.
.record filename (battleroom ingame)
  Records the game for later Perusing Pleasure™. By default the recorded game will end up in your TA directory, however this can be changed by the control panel's Default TA Demo directory (3.) setting. If a recording with the same name already exists, it will be overwritten.
.report (battleroom ingame anyone)
  All recorders in the game report their presence, version and status of the toggles:

  > (T--) shows the game is being recorded
  > (-T-) shows .fixfacexps is enabled
  > (--T) shows .protectdt is enabled

  Any combination of the above is possible. No answer from a player means they don't have TA Demo installed.
.sharelos (ingame)
  Makes allied units and any hostiles in their LOS visible, though covered by fog of war, and shares allied radar. .sharelos is mutual - a player will neither receive nor grant LOS and radar to/from allies as long as he/she does not issue this command.
.sharemappos (ingame)
  Allows your allies to see where you are looking on the main game screen, indicated by a rectangle in the respective player's color.
.syncon num num (battleroom host-only)
  Gamespeed is locked to the range between the first (low limit) and second (high limit) number (e.g. .syncon -3 +2). Useful to prevent speedjacking.
.status (battleroom ingame)
  Same as .report, except only your own recorder replies and noone else sees it. Useful to silently check if your recorder is turned on.
.stoplog (battleroom ingame)
  Halts the recorder.
.tahookoff (battleroom ingame anyone)
  This disables just the autoclick feature in every recorder in the game.
.time (ingame)
  Displays the game time for all players according to their +clock. Useful for spotting a lagging player.
.votego (battleroom)
  Signifies you're ready to go. If all players issue .votego, this will forcibly click in watchers. Useful if one of them left to take a shower or something without clicking in.

Hints and Tips
Make sure you have available hard disk space for the recording before you start - these puppies can swallow up your free space fast if you're fond of huge hour-long games. For best performance, remove or rename the dplayx.dll and ddraw.dll when you are not planning to use the recorder.

If you're worried about whether your game is being recorded, simply type .report when in the battleroom to check. The first T of the (TTT) indicates the game is being recorded (on/off in ancient versions). Why should you be worried though..?

If you don't want to allow any TA Demo lag fixes, typing .fixoff will disable all fixes for all players. The game must be rehosted in order to reenable them.

Restarting TA between recording games may improve stability. Restarting Windows is strongly recommended after replaying a game. Well, it always helps to restart Windows no matter what you're trying to do anyway :o)

Tech jargon

Why the interface upgrade requires a TOTALA.EXE patch under Win 9x/ME
  Under Win9x, DirectX installs a program called ddhelp.exe residently in memory as soon as it is used by any program. ddhelp.exe does not seem to affect or even be at all necessary to DirectX' operation; maybe it accelerates the subsequent loading of DirectX components by a few microseconds. Its only noticeable effect is that it disables the standard Windows DLL search/loading sequence for most DirectX DLLs (Microsoft being Microsoft don't need to follow any standards, you know) including ddraw.dll. In order to avoid the custom TA Demo ddraw.dll being ignored, it is necessary to call it differently, and patch TOTALA.EXE so that it will load it instead of ddraw.dll.
Why .sharelos works the way it does
  TA's LOS calculation routine relies, among others, on one variable that controls which player's units will be taken into account for the LOS map calculations and is the obvious starting point for sharing LOS. Unfortunately, this variable is accessed at about 30 locations in the code - a lot of work to write loops for them all.

  At the Cavedog development department

  - Joe: Hey Jack, lets add this cool +sharelos command!
  - Jack: Great idea Joe, let me see.
  - Joe: We only need to change the code here and here, and here and.. here and.. uh.. here and..
  - Jack: Forget it.
  The current .sharelos patch by SJ introduces loops around two of the LOS related functions. This suffices to see units in an ally's LOS and get his radar coverage but does not include lifting the fog of war or automatic targetting.
How .fixfacexps works
  The recorder will register the IDs of units that get killed and filter out packets dealing damage to them for the next three seconds, preventing that damage from killing a new unit that got assigned this just freed unit ID.
What .panic does
  Turns the recorder completly transparent. Any calls are passed thru to DirectPlay without any processing.
How .protectdt works
  Any packets that include the Dragon's Teeth code will be sent via TCP instead of UDP, thus making sure they do reach their destination. If the packet is misfortunately fragmented, it may not be recognized as such though.
What .unitsonly does
  Records only packets with class 2C. This shrinks demo files by about 50% but causes a lot of bad effects in replay, like invisible shots and misplaced units.

##### Unsupported features

.base filename (battleroom ingame)
  Gives every player the possibility of placing a ready-built base around their first structure. The actual layout of the base is defined by the hosts base.txt file. If no filename is given the standard 0.93 base will be used. Only the host needs TA Demo but there should be no 0.93 recorders in game or things might get messy. This command can only be issued by the host. See the accompanying base.txt for additional information. Note that base.txt uses net IDs to specify buildings, which change when adding units to the game, meaning that a base for OTA won't work with UH or 3d party units in game.
.baseoff (battleroom ingame anyone)
  Disables prebuilt bases. The game must be re-hosted to enable reactivation.
.dobase (ingame anyone)
  Places a predefined base around your first structure. This command has to be activated by the host by issuing .base in the Battle Room. Make sure there is flat ground to accomodate the base!
.dotake (ingame)
  Finishes the takeover ritual when continuing a recorded game after everyone has set claim on their loot using .take nick.
.take nick (battleroom)
  Lays claim on that player for a later .dotake when continuing a recorded game. See Continuing recorded games for more information.
.unitsonly (battleroom ingame)
  Experimental, do not use.
Deinterlacing the rendered movies
  This is disabled by default because the detection of when a movie is playing is not perfect; a deinterlaced ingame screen doesn't exactly look nice. If you want to enable it, the registry key HKEY_CURRENT_USER\Software\Yankspankers\Eye\DisableDeInterlaceMovie has to be set to 0.

Legalese
The Swedish Yankspankers are in no way affiliated with Cavedog Entertainment, Humongous Entertainment, GT Interactive, Infogrames or any other company that has rights to the Total Annihilation products and brand name. TA Demo may be freely distributed as long as it is provided as is, with the documentation included unchanged (readme.html, recorder.html, replayer.html, history.html). All rights reserved.