
  TTDPatch - The Transport Tycoon Deluxe Patcher
==================================================

Table of Contents
*****************


1 Introduction
  1.1 Copyright and Copying
  1.2 Cheat Disclaimer
  1.3 Version History
  1.4 Other Languages

2 Obtaining, Installing, Running
  2.1 Where to get it
  2.2 Installation
  2.3 Running it
  2.4 The Configuration File
  2.5 Command Line Parameters
  2.6 Summary of the Patches

3 The Patches
  3.1 Train Refitting
  3.2 New Default Service Interval
  3.3 New Non-stop Handling
  3.4 Sign Cheats
  3.5 Increased Number of Vehicles
  3.6 New Curve and Mountain Handling
  3.7 More Trains etc.
  3.8 Large Station Spread
  3.9 Longer Stations/More Platforms
  3.10 New load/unload time calculation
  3.11 Mammoth Trains
  3.12 Pre-signals for Stations
  3.13 Turn off inflation
  3.14 Borrow/Repay maximum with Ctrl
  3.15 Persistent Engines
  3.16 Full load for any type of cargo
  3.17 Selectable station goods
  3.18 Office towers accept food

4 Troubleshooting
  4.1 Version Trouble
  4.2 What if it still doesn't work?
  4.3 Error Messages

5 Other Important Things
  5.1 Contact Information
  5.2 Future Plans
  5.3 Impossible Changes
  5.4 Real Maglevs
  5.5 Acknowledgements
  5.6 Closing Words


1 Introduction
**************

1.1 Copyright and Copying
=========================

   This program and the accompanying documentation are Copyright (C)
1999 by Josef Drexler.  You are allowed to redistribute it, provided
that all the files in the original archive are distributed together and
no changes are made to any file in the distribution.  You can't charge
for the program, only for distribing it.  You have to clearly identify
me (Josef Drexler) as the author.

   Please understand that I am in no way affiliated with Microprose or
Chris Sawyer, so please don't contact their support with problems or
questions about this program.  You can email me instead, at the address
given in *Note Contact::.

Also, the standard warranty disclaimer applies:
BECAUSE THE PROGRAM IS SUPPLIED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

The same things in english:
   - I own it.  It's mine.  Muahahaha!  (But I let you use it too.)

   - I can't garantuee that it works, or that it works correctly.

   - If it breaks, it's your fault.  But you do get to keep both pieces.

   - If it breaks something else, it's your fault too.

   - If you copy it, don't claim that you've made it yourself, or
     change it in any way; and copy both program and documentation.

   - Don't complain to Microprose about any of this.  They can't help
     you.

1.2 Cheat Disclaimer
====================

   This program is a cheat program.  It will enable you to do things
that are not possible in the standard Transport Tycoon Deluxe.

   If you think your enjoyment of the game might be reduced by using
cheats, you should not use this program.  Personally, I like TTD much
more with some of the more annoying things removed, and the missing
things added.

   Any use of the sign cheat will mark your savegame permanently.  If
you intend to participate in a competition, you should not use them
(unless they are permitted), as this can easily be found out.  The rest
is obvious to find out anyway.

1.3 Version History
===================

Version  Date      Changes
V1.5.1   10/16/99  Configuration file support
                   Convert source code to C
                   Convert docs to Texinfo
                   Framework for multiple language support
V1.5     09/04/99  Turn off inflation
                   Office towers in Tropic/Arctic accept food too
                   Longer stations (up to 7 squares)
                   Borrow/Repay maximum amount by holding `Ctrl' key
                   The default service interval is selectable
                   `Cht: DumpMemory' for saving uncompressed
                   Pre-signals no longer experimental
                   Persistent engines won't become obsolete if in use
                   Full load for any cargo type, not the whole train
                   Selectable station goods
                   Fixed `Cht: OwnCrossing' (I think...)
V1.4.3   08/16/99  This was just a bug fix beta version, no real release
                   Fixed `-trpb' and `-x', they were broken (except when
                   using `-a') since V1.4
V1.4.2   08/12/99  Three new versions supported: German, French and
                   Spanish
V1.4.1   07/31/99  `-w' switch for pre-signals now actually works   (no
                   need to use `-a' anymore)
V1.4     07/29/99  More multiplayer support (now also for `-l')
                   Improved algorithm to calculate load/unload times
                   Mammoth trains up to 127 cars
                   `Cht: Renew' and `Cht: Owncrossing'
                   Pre-signals supported but still experimental
                   All switches must be entered in lowercase letters
                   now, to allow for future switches.  Sorry for the
                   inconvience but I'm running out of letters...
V1.3     07/16/99  Fixed "ghost train" bug
                   Added multiplayer support
V1.2     06/06/99  Enable CD-only version of TTD by passing the CD
                   drive parameter to TTDPatch
                   Stations extensible to up to 7 equal platforms
V1.1     06/03/99  Now also supports version V2.01.119 with a file size
                   of 496601 bytes.
V1.0     05/30/99  First version, supports TTD V2.01.119, with an
                   executable file size of 496543 bytes.

1.4 Other Languages
===================

   Currently, TTDPatch is only available in english, but I have included
functions to deal with multiple languages.  I just need people who are
willing to translate both the program texts and the documentation.

   For translating the program texts, it would help if you know a bit
about C++, because the file with the strings has to have a valid C++
syntax.

   I'm using Texinfo for the documentation, which makes it possible to
have only file that can easily be converted into a pretty-print file
(Postscript or PDF) as well as HTML for online documentation and a nice
plain text file.  It would help if you know Texinfo, but it's pretty
easy to figure out, so you shouldn't have a problem translating it.

   If you have any questions about this or would like to help translate
it, please feel free to <email me at jdrexler@julian.uwo.ca.>

2 Obtaining, Installing, Running
********************************

2.1 Where to get it
===================

   The newest version of TTDPatch should always be available from here:
`http://publish.uwo.ca/~jdrexler/ttdpatch/'

If it isn't, my page has probably moved.  You should still be able to
find it in the Transport Tycoon Webring at
`http://www.webring.org/cgi-bin/webring?ring=ttweb;id=114'

2.2 Installation
================

   Simply uncompress the `zip' file into your TTD directory, this will
create two files: `ttdpatch.exe' and `ttdpatch.txt', the executable and
(this) documentation. After this, you can delete the `zip' file again.
To uncompress it, you can use the Info-Zip suite, Winzip, PKZIP or any
other program that knows how to handle `zip' files.

   Note that TTDPatch does not change any files that are in your
directory.  You can write-protect `tycoon.exe' to be sure.  Instead, it
will copy the old executable (either `tycoon.exe' or `ttdx.exe') to
`ttdload.exe', and modify this copy only.

   However, savegames that are saved while certain switches are
activated may be incompatible with versions not running this patch.
This also applies to scenarios created with the scenario editor.  For
more information please read *Note MoreVehicles::.

2.3 Running it
==============

   To start TTD with the patches enabled, simply run `ttdpatch.exe'.
At the first start, it will copy the old executable to `ttdload.exe',
patch it, and then run it.  The copying and patching will be omitted
after the first start, unless `ttdload.exe' cannot be found.

   Please note even once `ttdload.exe' is created and patched, you
still have to run `ttdpatch.exe' and not `ttdload.exe', or you will get
a general protection fault.  This is because TTDPatch still has to
activate or deactivate all of the patches as given in the configuration
file or on the command line.  Otherwise they'll be in an undefined
state.

   You now need to have 8MB of free memory to run TTD, because of the
possibly larger number of vehicles.  This is true even if you don't use
the `morevehicles' switch.

   If you are starting TTD from Windows 95, just change the shortcut
command line to run `ttdpatch.exe' instead of `tycoon.exe' or
`ttdx.exe', and append any of the options you would like to have.

   And if you used to pass any parameters to the old executable, just
add them at the end of the ttdpatch command line.  This will in most
cases be the path to the CD drive, if your TTD runs only with the CD in
the drive.

Example:

     D:\Games\TTD> ttdpatch -av E:\

will run ttdpatch will all switches enabled, and tell TTD to look for
the CD in drive E:.

2.4 The Configuration File
==========================

   The configuration file tells TTDPatch which of the patches you want
to be enabled, and how.  It is simply a list of the patches, followed
by what you want it to do with this switch.

   If no configuration file is specified at the command line, that is if
there is no `-C' option, TTDPatch will read `ttdpatch.cfg'.  You can
specify several configuration files, and they will be read in the order
you give them, but if you want TTDPatch to read `ttdpatch.cfg' _and_
your file, you have to specify _both_.

   You can also have TTDPatch write a customized configuration file
with the `-W' switch.

   The syntax of the configuration file is simple: all lines starting
with a letter define the value of an option, all others are ignored.
The line defining the option should have one of the following formats:

     servint 16000
     servint = 16000
     servint: 16000

You can add more spaces, or in the second and third case take them out.

   There are two kinds of switches, those that can only be on or off,
and those that can have a value.  For on/off switches (for example
`trainrefit', you can set them to any of `on, yes, y, 1' to turn them
on, or `off, no, n, 0' to turn them off.  Just writing the switch
without any parameter will turn it on.

   Switches with values, for example `servint', can be set to a value
within the allowable range, or any of the above on/off values.  If a
switch should have a value but doesn't, the value is set to the default
for that switch, which also happens if the given value is out of range.

2.5 Command Line Parameters
===========================

The format of the command line is

     TTDPatch [-C cfg-file] [switches] [CD Path] [-W cfg-file]

   If the `-C' option is given, the specified configuration file will be
read instead of the default `ttdpatch.cfg'.  You can use several
configuration files by having multiple `-C' switches, they will be read
in the order you supply them.

   The switches are starting with a `-' or `/', followed by the list of
switches.  All switches can have another `-' after them to turn them
off, and if there's a switch that takes values, the next option will be
used as that value.

   If you have a CD Path, if will be passed to TTD and tell it where it
should go looking for the CD.

   And finally, after you have set all your switches the way you like
them, you can tell TTDPatch to write them to your own configuration
file (or `ttdpatch.cfg' for that matter) by using the `-W' switch.  With
this, TTDPatch will create a commented file that has all the switches
set as they are when the `-W' is encountered on the command line.

   If you need a short reminder of an option, run `ttdpatch -h' which
will show a short summary of all command line switches.

   Note that, different to previous versions, `-a' is no longer selected
automatically, that can be done by the configuration file if you like.

A few examples to explain how the command line works:

     ttdpatch -an- -i 90 -v
    will start TTDPatch will all switches enabled (`-a') except for the
new non-stop handling (`-n-') which is turned off.  The default service
interval is set to 90 days (`-i 90'), and before running TTD, all
switches will be displayed to verify they are correct (`-v').

     ttdpatch -C mycfg.cfg
 will use the file `mycfg.cfg' to set the patches.

     ttdpatch -C mycfg.cfg -f- -W mycfg.cfg
 This will read `mycfg.cfg', disable train refitting, and write the new
configuration back to `mycfg.cfg' and then run TTD.

2.6 Summary of the Patches
==========================

This here is a list of all switches that can be set in the command line
and the configuration file.  First it gives the configuration file
option, then the corresponding command line switch, and a short
description of what the patch does.  For a more thorough description
please see *Note Patches::.

   The on/off switches are:

`all, -a'
     All reversable switches; turns everything on, except the larger
     vehicle array, because that is not easily reversible.

`debtmax, -L'
     Borrow/repay maximum amount with `Ctrl'.  When you hold the `Ctrl'
     key down while borrowing or repaying a loan, the maximum amount
     possible will be borrowed or repaid.

`enginespersist, -P'
     Persistent engines.  Any engine type that is currently in use will
     not become obsolete.  Neither will it lose reliability.

`fullloadany, -F'
     Full load for any cargo type.  When this is set, a loading train
     will be considered "full", if any type of cargo is full.  This
     means that a passenger/mail train will leave the station when
     either passengers or mail are full.  Planes work the same way.

`largestations, -l'
     Allow station extensions and additional platforms.  This means that
     you can add platforms to an existing station, and even have up to 7
     equal platforms.

     The length of a station can also be extended to up to 7 squares.
     Note that extending both length and the number of platforms in a
     single station is not possible yet.

`loadtime, -q'
     Improved load/unloading time calculation.

`mammothtrains, -z'
     Mammoth trains.  Trains can have a total of 127 cars.

`noinflation, -I'
     Turn off inflation.  Prices will no longer increase, but this
     doesn't undo any prior inflation.  It just stops it.  You still
     have to pay interest on your loans, though.

`nonstop, -n'
     New non-stop handling.  This makes _all_ stops behave as if
     non-stop were set, and instead the trains will not stop at any
     stop where the non-stop flag is set.  This is to make "waypoints"
     more useful.

`officefood, -O'
     Office towers accept food.  In the arctic and tropic climates, all
     office towers will accept food and goods, but this will not show up
     in the "Info" window.

`presignals, -w'
     Enable pre-signals.

`selectgoods, -G'
     Goods won't appear at a station until the relevant service has
     already been inaugurated, to be able to select what is too appear
     and what now.

`signcheats, -s'
     Enable the sign cheats.

`trainrefit, -f'
     Enable the refitting of trains in depots.  To use this, open the
     train window when the train is in a depot, and the "Reverse Train"
     button will be replaced with a "Refit Train" button.

`verbose, -v'
     Show all switches and wait for a key before starting the program

`-y'
     Always run TTD, even if it is an unknown version.  You should not
     use this switch unless you are sure that it will work.  It can
     only be specified on the command line.

These are the switches with a value:

`curves, -c'
     Use new curve handling for the given types.  In the first step,
     trains will pass "wide" curves at 88% of their speed as opposed to
     75% previously. In the second step, they will not slow down at
     all.  This does not apply to "tight" curves.

`mountains, -m'
     Use new mountain handling for the given type.  In the first step of
     acceleration, trains will climb mountains much faster than
     previously, and in the second steps, they will not slow down at
     all.

     The digits for `mountains' and `curves' are bitcoded.  Possible
     values for each: 0=Trains, 1=Monorail, 3=Maglev.  The first digit
     is for faster speed, and the second for full speed, i.e. 13 means
     that Monorail (1) trains are accelerated, and Maglevs (3) run at
     full speed.  Default is 13 (Monorail faster, MagLev full speed)

`morevehicles, -x'
     Extend the vehicles array from 850 to value*850.  Note that 160 of
     these vehicles appear to be reserved, though I don't know for what.
     Maybe for the UFO's and XCom craft.

     The factor for `reducedsave' and `morevehicles' can range from 1
     and 50.  Note that large arrays will slow down the game
     considerably, and you should only increase it when you run out of
     vehicles.  Default is 1.

`reducedsave, -o'
     If `morevehicles' is set, save only value*850 vehicles for
     compatibility.

     *WARNING:* This will remove all vehicles and trains that are not
     completely within that limit _from the running game_.  Please see
     *Note MoreVehicles:: for more information.  Default is the -x
     factor.

`players, -u'
     Set which of the eight players are to be affected by the cheats.
     Format of the value is `Player1[Player2...]'.  In multiplayer mode
     this would usually be `players 01' to enable the cheats for both
     parties.  Default is 0, meaning only the first player.

     You can also use this for a scenario where you are not the first
     player.

     This is likely to become obsolete in the next version.

`planes, -p'
`roadvehs, -r'
`ships, -b'
`trains, -t'
     Increase the allowable number of trains, road vehicles, planes, or
     ships, respectively.  The number must be between 10 and 240.
     Default is 80.

`servint, -i'
     Set default service interval to the given number of days.  It only
     applies to new engines.  Default is 16000 (50 years), for use with
     "Vehicle Breakdowns" turned turned off

`spread, -e'
     Set the possible station spread to the given number, up to 255
     squares.  Use this to get rid of the "Station too spread out"
     message.  Default is 20, 66% more than the original value.

3 The Patches
*************

3.1 Train Refitting
===================

   `trainrefit, -f'

   Since a few of the train engines come with a passenger or mail
compartment, they are not very useful for other types of cargo because
the "Full Load" switch cannot be used.

   By enabling Train Refitting, you can now refit those engines just
like planes to carry whatever cargo you choose.  Only mail and oil are
not an option yet, just like with the planes.  (This might change in
the future)

   If enabled, it replaces the "Reverse Train" button with a "Refit
Train" button whenever the train window is opened while the train is in
a depot.  To reverse the direction of a train, just open the window
while the train is not in a depot (where the direction cannot be
reversed anyway).  The status of this button does not change until the
window is closed and opened again, even if the train is not in a depot
anymore.

   Refitting is permanent, and stays even after the option is disabled,
until the engine is sold or refitted again.

   This patch is somewhat obsolete, the "Full load" patch works around
this problem as well.

3.2 New Default Service Interval
================================

   `servint, -i'

   If you think that the train behaviour is annoying when it comes to
service, just set "Vehicle Breakdowns" to none, and enable this option.
This will set the default service interval to 50 years, and no train
will ever try to enter a depot again.

   You can also give a different number to set all intervals to 90 days
for example, if you'd rather have them go to the depot more often.

   Note that this only works for new engines that are bought while the
switch is enabled.

3.3 New Non-stop Handling
=========================

   `nonstop, -n'

   In order to get around the problem of trains not finding their
correct routes, it is useful to give them various "waypoints" or
"checkpoints" along the route, which are dummy stations that are then
put on the train's schedule.

   The disadvantage is that normally these checkpoints have to be as
long as the train, and the train stops at them, which introduces an
unnecessary delay.

   By using this switch, you can now include these checkpoints in the
route, and set them to non-stop.  That way, the train will travel to
them, but never stop and instead continue at its full speed.  This even
works if the checkpoint is only a single square large.

   All stations without "non-stop" will behave as if they had the
original "non-stop" set, i.e. the train will stop only at stations on
its command list and none it encounters along the way.

   If this were different, every train would stop at the waypoints
lying along their way, with no way to stop them.  If you do want a
particular train to stop at all stations, I'm afraid that you have to
give it orders to do so.  (I thought this would be the most useful
behaviour, but if somebody would like them to behave as if non-stop
were unset, just tell me.)

   This will apply for all trains, so do not use this if you have many
routes which make use of the "non-stop" flag, because you will have to
remove that flag from all those trains, or if you want your trains to
stop at intermediate stations as well and don't want to change all the
commands.

3.4 Sign Cheats
===============

   `signcheats, -s'

   These are a number of new in-game cheats which are activated by
placing a sign and naming it `Cht: <name of the cheat>'.  If the cheat
was successful, the sign name will change to `OK: <cheat code>',
otherwise it will say `BAD: <cheat code>'.

   Once a sign has been placed and activated (it changed to `OK:' or
`Bad:'), you can immediately remove or rename it again, the cheat will
still remain active.

   The available cheats are:

`MONEY number'
     Sets your cash to the number, in British pounds.  For example, with
     `Cht: Money 1000000' as a sign name you will have one million
     pounds.

`YEAR number'
     Changes the current year, and this works in both directions.  Now
     you can start your game in the year 2030 with all the Maglevs
     available, or change it back from 2070 when time stops.  The year
     can be anything from 1920 to 2098, although years after 2072 or so
     won't work correctly because time stops somewhere around then.
     Also, this really sets the date to one or two days before that
     year, so that the year change can be processed properly.

     There is currently another bug if you use the large service
     intervals, which causes trains to continuously enter depots after
     2048 or so.  This is because there is a kind of Y2K bug, where the
     game adds the service interval to the current date, and then
     thinks it's been more than a hundred years since the train was
     serviced.  This will be addressed in the next version.

     In this version, it also updates the age and service intervals of
     all vehicles, lest all of your vehicles go to the depot after
     increasing the year.

     Also it's a good idea to activate the "persistent engines" patch,
     or you might run out of engines to buy, because their lifetimes are
     too short by default.

     You might use this to get your score once you are bored with the
     current game and don't want to go on till 2050.

`TRACKS to [from]'
     This will change all the tracks that are currently the `from' type
     (or all if `from' is not given) to the new type set by `to'.  The
     types are 0=Railroad, 1=Monorail, 2=Maglev.

     So, for example `Cht: Tracks 2 1' will change all your monorail
     tracks to maglevs, or `Cht: Tracks 1' would convert everything to
     monorail.

     Also, all the trains of that type will be converted as well,
     otherwise they would blow up because they are on the wrong track.
     (Guess how long it took me to figure that out...)

     In a future version, the track conversion might actually cost the
     money it should, and abort when you run out of money, for those
     who really want to play fair.

`USED'
     Use this to show which of the sign cheats have been used in the
     current game.  It is intended for competitions where the use of
     some of the sign cheats is not allowed.  The value is a
     hexadecimal bit mask of the following hexadecimal bit values:

     Bit Value  Cheat
     0   1      Money
     1   2      Year
     2   4      Tracks
     3   8      Used
     4   10     OwnCrossing
     5   20     Renew
     6   40     DumpMemory

     The value 8 for the "used" cheat will always be present because
     you have to use the cheat to see it, after all.

`OWNCROSSING'
     There's a bug in TTD that causes road/railroad crossing to be taken
     over by the local authorities, I think when they build a road over
     your railroad tracks.  This also occurs when you import a savegame
     to the scenario editor.

     If this bug is activated, you'll be able to remove the road
     instead of the tracks.  The tracks will belong to the city and
     can't be removed.  The road will belong to the city as well.

     Using this cheat, all these crossings will be given back to you, so
     that you can remove the tracks, but not the road (unless that
     really was yours, which shouldn't have triggered the bug).

     If you've already removed the road, you have to put it back there
     for this to work.  This cheat only affects crossings, nothing else.

     The tracks will always be owned by the first human player as set
     by the `players' switch, because ownership information is lost
     completely and the correct owner can't be determined.  A future
     version of the patch will fix this.

`RENEW'
     It would be a good idea to frequently renew the rolling stock,
     mostly train cars, because the age of them affects station
     ratings.  (It's the difference between the year they are built and
     the current year that counts).  Problem is that, like upgrading
     all tracks, it is a very tedious process.  This cheat will make
     this easier.  It changes the age of all carriages to zero, sets
     the "year built" to the current year and updates their value to
     the current price.

     In one of the next versions, this will actually cost the money it
     takes to buy all the carriages.

`DUMPMEMORY'
     This is intended for those curious TTD'ers that want to know
     something about TTD's internals.  When you use this, the game
     memory is written into the file `TTDMEM.DMP' in the current
     directory (same as for save games).  This is basically like saving
     uncompressed, except that the games can't be loaded anymore.  It
     is just to find out more about your games.  Also, two of the
     (many!) landscape arrays can't be saved because they live in a
     different memory space.  These determine the height and the object
     type of each square.  So don't go looking for that information in
     `TTDMEM.DMP'.

     If desired, I could write a list of the locations I found so far in
     the file, but that would go beyond the scope of this document.

International users:
     The english versions of TTD use a `QWERTY' keyboard even if your
     local keyboard layout is different.  If you have trouble finding
     the ":" key, it's to the right of the "L" key.  Press shift and
     the key right to the "L", and there you go!

     It will also swap some keys, most importantly `y' and `z' might be
     swapped.  So please check if what you've typed is what appears in
     the sign name.

3.5 Increased Number of Vehicles
================================

   `morevehicles, -x'

   `reducedsave, -o'

   In many games, it is easy to reach the maximum number of vehicles at
850.  And 160 of these are reserved, so that the remaining 690 vehicles
have to be shared by both human and computer players.  And planes even
count twice, because they carry both passengers and mail.

   This switch enables you to increase that maximum number, to more
than 40,000 if you like.  If you consider that there are only 65536
squares in the map, it's obvious that this is more than enough.

   Note that this switch is not easily reversible, as opposed to all
the other switches.  Once a game has been saved with this switch set to
a particular number, it can only be loaded with this switch set to the
same (or a higher) number.

   The other disadvantage is that it tends to make a game slower, and
quite a bit with a factor greater ten or so.

   It is always possible to load a smaller number of vehicles, so your
old savegames can still be loaded.  The program will simply fill the
array with unused slots.

   However, the program will crash if you try to load more vehicles
than set by this switch.  And whenever you save, the complete array
will be saved, so you cannot use this savegame on a non-patched version
of TTD.  This is especially important for the scenario editor, which is
basically using the same savegames, so anything created with the editor
while the total number is increased will not work on a non-patched TTD.

   The only way around this is to reduce the array again by using the
`reducedsave' switch.  However, this often results in loss of trains
and other vehicles that are beyond the original limit.  Even trains
that are only partly beyond the limit--i.e. some of the waggons are and
some aren't--will be completely lost.  And this is true _not only_ for
the savegame, but _for the running game as well_.  This means that the
trains will be deleted from the current game while the save is in
progress.  Only use this if you don't really care that all the vehicles
make it into the savegame, and you should not overwrite older savegames
while this switch is activated, to be able to go back to the full
number of trains.

   All in all, this switch is pretty powerful, but also quite tricky to
use.  Experiment at your own risk, and keep backup copies of the
original games if they are important to you.

3.6 New Curve and Mountain Handling
===================================

   `curves, -c'

   `mountains, -m'

   TTD does not take into account the differences in the various train
technologies.  For example, the current Maglev trains do not have the
same problems in curves and on hills as the traditional trains do; they
can have a much smaller curve radius or pass the same curve at much
higher speed.  And on hills, they can have more power than on flat
land, so that their speed decrease is often negligible.  This is why I
created this switch, which allows to correct that.

   It also circumvents another bug, namely that there can be no signals
inside tunnels.  This makes larger tunnels pretty useless, because it
interrupts the flow of trains that have to wait until a train has
completely left a tunnel.  Thus, one has to either level the mountain
(if there's no way around) which is ugly and costly, or lay the tracks
on top of the mountain, which considerably slows down the trains as
well.  Until now that is.

   The `mountain' and `curve' switches allow to select which type of
trains will use a higher speed on mountains and in curves.  There are
two steps of acceleration; the first one being simply higher speed and
the second one doesn't slow down the train at all.  This can be
especially useful if you have many "clover-leaf" type crossings, where
you have to have a few bridges.

   The argument to `mountain' and `curve' is a bitcoded, two-digit
number, where the first digit selects the trains with higher speed, and
the second one those with full speed on curves or mountains.

   The coding is this:

   * 1 = Doesn't apply to normal trains

   * 2 = Doesn't apply to monorail trains

   * 4 = Doesn't apply to maglevs

   Just add the numbers to get the bitcoded values.  Thus, the digits
used as parameter can be for example

   * 0 = it applies to all types of trains

   * 1 = monorail and maglev only

   * 3 = only for maglevs (3 = 1+2)

   * 7 = no trains at all (7 = 1+2+4)

   Other combinations are possible, if you should want to use them.

   "Full speed" overrides "Faster Speed", if both are enabled for a
particular type of train.

   For example, 13 would then make monorails take curves or mountains
faster, and maglevs don't slow down at all except in tight curves.

3.7 More Trains etc.
====================

   `planes, -p'

   `roadvehs, -r'

   `ships, -b'

   `trains, -t'

   The total number of trains and road vehicles allowed among all
players in one game is arbitrarily limited to 80, ships to 50 and
planes to 40.  These limits are soft limits, meaning that they are
enforced by counting the trains and making sure you don't have too many.
The "hard" limit is 255-15=240, which cannot be exceeded because of the
way trains are numbered.  The soft limit is probably only there for
performance reasons, or maybe a silly design decision.

   With this switch, it is now possible to have up to 240 trains,
plane, ships and road vehicles among all players.

   Note that the total number of commands is not increased, nor is the
total number of customized train names.  There can in total only be
5000 commands, which in the default configuration translates to 25
commands per train etc.  However, if you set all limits to 240, you can
on average only have about 5 commands per train.  An individual train
can have up to 25, but then some have to have less than 5. The game
will not allow to have more, so that you might run out of commands
instead of trains.

   The limit on the train names is not so serious, unless you can't
live without your trains all having their own name, and I don't know
the exact number of names possible either.

   This switch is reversible, and only applies to new engines.  If you
turn it off while you have 150 trains, you will still be able to keep
those, but you won't be able to buy any.

3.8 Large Station Spread
========================

   `spread, -e'

   Use this to get rid of that pesky "Station too spread out" message.
Usually the maximum distance between any part of a station is 11
squares, which can be too small if you try to combine a large airport
with a large train station (especially an extended one).  A more useful
number is 20 for example, and the upper limit is 255, which is the size
of the world (just like in TT original).

3.9 Longer Stations/More Platforms
==================================

   `largestations, -l'

   When you use this, you don't have to bulldoze stations anymore to
add extra tracks.  Just select the same platform length, place the new
platforms next to the old station, and place them.  That way you can
even get up to 7 platforms.

   The length can also be increased, to up to 7 squares length.
However, you can either increase length _or_ number of platforms beyond
the original limit, so that the maximum size is either 7x5 or 4x7
(platforms x length).

   Because the added parts will look like they were placed alone, the
station design is up to you.  You can have a two-platform station that
looks like two one-platform stations, or alternate roofed and
non-roofed sections, if you like that.  Just alternate between adding 1
and 2 platforms to the station to get this.

   And most importantly, this allows you to have different kinds of
trains in one station.  Just add a platform of a different type to have
railroad, monorail and maglev platforms in a single station.

   Note that if either the platform length is different, or the total
number of tracks would be greater 7, or the position doesn't match then
you will see the old message "Too close to train station", not a more
appropriate message.  This is also why you have to decide between
adding more tracks or making it longer, because either the length or
the number of tracks wouldn't fit.

3.10 New load/unload time calculation
=====================================

   `loadtime, -q'

   In the original algorithm used to calculate how much time a trains
spends in getting loaded/unloaded, there are two major bugs.

   First, while loading time depends only on the _amount_ of cargo,
unloading depends on the _type_ of cargo as well.  Passengers will be
unloaded instantly, while valuables will take forever.  This does not
make sense, it must be a bug.

   Second, this time is multiplied by the number of cars sticking out
of the station.  If there's four cars sticking out, you'd have to wait
five times as long.

   In this improved calculation, unloading time is again based on the
amount of cargo and takes the same time as loading it.  The bigger
change though, is that the program assumes that for example a length
four station can serve up to eight cars at the same time.  This would
mean that the time it takes to load/unload two cars is the same as for
four or eight cars.  This makes sense, because why would you want to
build a large station if it can't effectively handle more than one car
at the same time?

   Also, the problem with cars sticking out is alleviated in two ways.
The reasonable assumption behind them is the following: the train
enters the station and gets as many cars loaded/unloaded as possible.
The engine will in most cases not be a part of this and can be ignored.
If not all cars were able to fit in the station, the train will move
the next set of cars in and have those unloaded.  This will continue
until the trains is empty/full.

   Unfortunately, you won't be able to see this (TTD just can't do
it--however much I tried!), but at least the waiting time is a bit more
reasonable now.

   A short summary:

   - Engines don't count if they can't carry any cargo

   - First part of cargo gets loaded, and the time is independent of
     number of cars involved

   - If more cars than station can handle, the second part is loaded,
     and takes the same time

   - If there's still some cars left, those get loaded, and so on until
     everything is loaded.

   To make it even more clear, here is a list for a length three
station which can handle up to six cars at the same time.  The engine
is assumed not to be a cargo-carrying engine:

Train length   Load/unload time (arbitrary units)
Eng.+1 car     1
Eng.+5 cars    1
Eng.+6 cars    1
Eng.+7 cars    2
Eng.+11 cars   2
Eng.+12 cars   2
Eng.+13 cars   3
Eng.+18 cars   3
Eng.+19 cars   4
and so on...   

   I find this to be a very reasonable calculation that makes sense and
is realistic.  If you don't, then you can always turn it off.

   The unit time depends only on the average amount of cargo in each
car.  For example, if all cars are only half full (on average), it will
only take half as much time.

   However, the time it takes now for one single car is longer than
previously.  This switch was not meant to speed up loading/unloading but
rather make it more sensible.  "1" load time is approximately the time
it previously took to load six to eight cars.

3.11 Mammoth Trains
===================

   `mammothtrains, -z'

   If you use this switch, there is no real limit to how many cars your
trains can have.  Well, there is a limit, but 127 cars is just so much
that it won't matter.  Really.  Trust me.

   This is meant to be able to fully use length five stations with the
above switch.  Now you can have a double-headed engine _and_ ten cars
and still load it without penalty.

   You still won't see more than ten cars in the depot, but they'll be
visible once the train leaves the depot.  This means that if you want
to rearrange your train, you'll have to work in reverse, adding cars at
the front of the trains.

   The depot also behaves slightly different, because when a new train
only used to attach at most nine cars to it, now it will take all that
are available (up to 127).  This means that you shouldn't try to
upgrade two trains at the same time, because one of them might get all
the cars.

   Another thing is that this can make the layout process of a station
very challenging.  Even though you may not get a penalty (or at least
not as much) for a bit of train sticking out of the station, the cars
will still be there and block tracks and cause signals to remain red.
If you don't leave enough space at the entrance of a station, there
will be a major traffic jam.

   And, most importantly, if you have a _really_ long train, try not to
make it go atop any mountains.  Although, surprisingly, even a fully
loaded 126 car train, at a total weight of around 7000 tons, made it.
It was only moving with a few mph, but it's still amazing that it made
it eventually.

   So, I suggest you don't go over about 20 cars or so, except maybe
for a bit of fun.  You can even make a train go through itself without
crashing...

3.12 Pre-signals for Stations
=============================

   `presignals, -w'

   Usually, making an efficient station where all trains can go to all
platforms is very difficult, because if all platforms are in use, the
trains randomly chooses one and waits till the train in it leaves.  One
workaround is to have "overflow" tracks, where the train goes if
everything is full.  While this works, it makes the train run all the
time while waiting for a platform which is costly (running costs are
higher if the train is running), and it takes up a lot of space which
might be an issue for a city station.

How does this switch work?
--------------------------

   With this, any one-way signal that leads to several two-way signals
will act as a pre-signal, and only be green if any of the two-way exits
is green.  These two-ways must then lead to either a cul-de-sac or
another one-way signal to make this work.  If they don't (for example
have a two-way at the end), the one-way will stay red forever.

   This is probably the most useful addition to TTD since `Cht:
Tracks', but it is also quite complicated to use and, thus, explain.  I
hope I can get it across.

   The main idea is that the signal leading to the platform multiplexer
of a station should only be green if any platform is free.  Thus, the
train would wait behind that signal until a platform becomes available.
You don't need any more overflow tracks, and trains wait instead of
running all the time.  It also improves station efficiency, because as
soon as possible, the train can enter the station, instead of having to
complete its overflow loop.

What you have to do to make it work
-----------------------------------

   These are the two possible setups that make use of pre-signals for a
station:

a) The through station
......................

   (sometimes called roro or roll on/roll off station)

   This should be built like this:

   (View the pretty-print or HTML versions for nicer graphics)

                 --<>-========->--
                /--<>-========->--\
      In ---->-----<>-========->----->----  Out
             1  \--<>-========->--/  4
                 --<>-========->--
                   2           3
     
     Legend: -- / \  Tracks;
             <>      Two-way signal
             >       One-way signal to the right
             =       Station platforms
             1..4    Signal labels

   There are four sets of signals involved, labelled 1 to 4.  Signal 1
would be the pre-signal, and only go green if any of signals 2 are
green.  Signals 3 are those letting the trains out of the station.

   The following conditions have to be met for this to work:

   - Signal 1 must be a one-way signal leading into the station

   - All of signals 2 must be two-way signals.  There have to be at
     least two   of these.  (Otherwise pre-signals are unnecessary and
     will not be used)

   - All of signals 3 must be one-way signals leading out of the station

   Also, even though not shown in the figure,

   - There can be more than one of signal 1

   - There can be more than one of signal 4 (or none, or a two-way)

   - You don't have to follow the actual track layout, it can go in all
      directions you like.  It doesn't even have to be at a station.

   If conditions two and three are only met for part of the signals, it
will work neither as it should, nor as it did before pre-signals.  It
will probably block the platform in question forever, or even the whole
station.  If this is the case, check that all of your signals are the
right type.

   To repair the red signal, you'll have to remove the offending
signal.  Make sure you stop any trains waiting at it or a crash would
be likely.

   Note that pre-signals look exactly like other signals, but they
behave differently.  I can't (yet?) add any graphics to the game which
would show pre-signals maybe with orange instead of green, or some such.

b) The terminal station
.......................

              3  -<>-=========
      Out ----<-X-<>-=========
       In ---->-X-<>-=========
              1  -<>-=========
                  2
     
     Legend: X       Crossover track layout (from everywhere to everywhere)
             Rest as above

   Here, the same conditions apply as in the previous case, and there
can also be more than one of signals 1 and 3.

   You can even combine both types of stations, i.e. have some of the
platforms go through and others end.

What if the train line up is too long?
--------------------------------------

   If this is the case, you can either add more platforms to speed up
the process if possible, or make one or more additional lines with the
following setup along the "In" line:

                   (a)
       In -----<>----------->-
             \-<>-.   .->-/ 1
               5  |   | 6
                  |   |
                  |   |
                  `---'
                   (b)

   Here, (a) is the usual way to the station, used if there's no line.
Make sure that your longest train will fit entirely on (a) to make this
work.  If there is already a train waiting, other trains will take
route (b) and line up at signal 6.  You can make (b) as long as you
like.  It should have a few one-way signals along the way to allow
several trains to line up.

   A few important points:

   - Signal 1 is the pre-signal leading into the station

   - Signals 5 have to be two-way, or all trains want to use route (a)

   - Route (b) can either cut into route (a) before signal 1, or lead
     directly   into the station.  I recommend the above setup
     (connecting before signal 1)   because that way all trains will
     use the overflow if it is in use.    Otherwise trains will be able
     to take the shortcut even though they should   line up at the end
     of route (b).

   - Signal 6 has to be a one-way signal, as does signal 1.

   - If you put a one-way signal before signal 5, it will be a
     pre-signal

"But this is just like the overflow loop!"
------------------------------------------

   No, it isn't.  First, the trains only have to use it once before
lining up at signal 6 and don't continue to loop until a platform is
available.  Also, even if the station is full, at least one more train
will not have to use it, only if two or more trains are waiting will it
be used.  Third, one of the waiting trains will enter the station as
soon as a platform is free, without having to complete a loop because
it already is waiting at the station entrance.  And lastly, the trains
will be served in the order that they arrive in.  In an overflow loop,
there is no guarantee that a train will not loop indefinitely at a very
busy station, just because newly arriving trains steal into the
platforms.

   And because this is all very confusing, there is a savegame
available at my homepage which demonstrates all this, at
`http://publish.uwo.ca/~jdrexler/ttdpatch/presig.zip' (21KB) After
downloading and before unzipping it, please make sure that it won't
overwrite one of your savegames.  The save file is `trt56.sv1', so if
you already have that file, make a copy of it.  It features both a
through station and a terminal station, and has extra line up loops.

   I encourage you to test this savegame with the pre-signal switch
disabled, too, so you can see the difference it makes, and try
different numbers of trains (as low as 7 maybe) by sending them to the
depot, and more or fewer platforms at both stations.

   And if you still can't figure it out, it might of course be because
of a bug.  Please tell me what you think of it, and more importantly,
whether it works as intended.

   (By the way, is there an official name for pre-signals?  I just made
this one up, but it might be less confusing if I use the correct
terminology.)

3.13 Turn off inflation
=======================

   `noinflation, -I'

   This switch turns off inflation.  However, it only works from now
the point it was turned on into the future, and doesn't undo any
previous inflation.  Prices stay at their current amount, but they
won't increase anymore.  This affects everything, both income,
purchases and maintenance/running costs.

   Use this if you frequently have too much money which causes the
amount of cash to go to negative values, because this way you'll get
much less money.

   Note that you still pay the same amount of interest, so now interest
is much more important than if inflation is turned on.

3.14 Borrow/Repay maximum with Ctrl
===================================

   `debtmax, -L'

   When borrowin or repaying a loan, you can hold down the `Ctrl' key
to borrow/ repay the maximum amount possible.  This is only limited by
the amount of cash you have or the maximum loan possible.

3.15 Persistent Engines
=======================

   `enginespersist, -P'

   There a some problems with engines becoming obsolete.  For example,
there are no more helicopters after about 2050 so heliports become
obsolete too, or you might want to have a particular engine even though
there are newer ones, maybe because it is relatively cheap but
sufficient.

   Or you want to be able to buy steam engines in 2000, which would
cruise along scenic mountain ranges... (thanks to Wolfgang Preiss for
that idea!)

   What this patch does is not to let any engines in use become
obsolete.  Any engine that has any commands (i.e. is in use) can always
be purchased.  With this, you can basically continue playing forever.

   Also, the reliability remains at the peak, with the reasonable
assumption that if you still have it, you'll also have some engineers
that know how to repair it.  An engine doesn't just get less reliable
because it has been designed a hundred years ago.  It might not be up
to par in all the specifications, but why should it suddenly start to
deteriorate even if you just bought it?

   Only after the last of its kind have been sold will it start to
deteriorate, and eventually disappear, because nobody knows how to
build and repair them properly anymore.  If you really want to hang on
to some engine, make sure you always have one in stock with at least on
command on its schedule. It doesn't necessarily have to run at all,
though.  But it really needs to have at least one command in the
schedule.

   This patch will also re-enable the purchases of engines that you
still have but can't buy anymore.

   In one of the next versions, it will also allow you to build small
airports after 1980, if you still have planes that can land there.

3.16 Full load for any type of cargo
====================================

   `fullloadany, -F'

   Basically fixing the same bug as the train refit option does, this
makes full load behave a bit differently.  Instead of waiting for every
car to be full, now if there's any type of cargo that's full will mean
the train leaves the station.

   So, if you have a train that transports passengers, mail and
valuables, you can set it to full load and it will leave when any of
those reach their capacities.  This also works for planes, so that they
leave when either mail or passenger compartments are full.

   However, it is no longer possible to enforce a complete full load
for mixed cargo trains.

3.17 Selectable station goods
=============================

   `selectgoods, -G'

   Sometimes you may want to build two stations at a busy factory, one
for deliveries of steel etc. and one to pick up the goods.  The problem
is that normally goods will appear at both of the stations, making this
setup useless.

   With this patch, no goods will appear until that particular type of
cargo has already seen a train in the station.

   Think of the factory manager being very mistrusting.  He won't send
any cargo to your station until he's sure it'll be picked up.

   So, if you just make sure that no goods trains ever enter your
delivery station, you'll never see any goods there, and you won't get
bad ratings for not picking them up.  Tthis is easier with the new
non-stop handling, because that way no train will stop at the station
if it isn't on the schedule.  On the other hand, the pickup station
will only ever see goods, even if there's a coal mine nearby.

   However, if only a single train tries to pick up goods at the
delivery, or coal at the goods station, they'll continue to appear
forever, so be careful.  The only way to reset this is to let the
station disappear completely, just letting it go grey isn't enough.
Then build it again.  You'll have to remove it from the trains'
schedules and put it back in.

   Maybe in the future it will be possible to reset it simply be
renaming it or removing it without waiting for it to disappear, but at
the moment it isn't.

   Note that this also affects road vehicles, planes and ships the
same.  I just wrote only about trains for brevity.

3.18 Office towers accept food
==============================

   `officefood, -O'

   In the tropic and arctic climates, the office towers by default
accept passengers, mail and goods.  This sometimes prevents a city from
growing further, because it doesn't accept food at all.

   With this switch, all the office towers accept an amount of food
that is calculated by (passengers+goods)/4, rounded down.  So an office
tower accepting 4/8 passengers and 1/8 goods would accept 1/8 food too.

   Note that this doesn't show up in the "Info" window, but it is taken
into account when determining what a station will accept.

4 Troubleshooting
*****************

4.1 Version Trouble
===================

   TTDPatch will have to know the locations of code that has to be
patched.  This will usually be a table that has to be compiled into the
program to make it work.

   If the version of TTD you are using is not known to TTDPatch, it
will tell you so and offer the option to try and start anyway.  That
way, TTDPatch will attempt to find those locations with an internal
search mechanism, and if it is successful it will write them into a
file that can then be integrated into the program by the maintainer.

   However, trying to find those locations can be a bit tricky, and if
it can't find all of them, it will receive a protection violation
before you even get to the main menu.  Depending on how well (or rather
how badly) your operating system handles these, your computer may lock
up and you might lose data.

   Please only run TTDPatch with an unknown version if you aren't
running other programs that might lose important data.

   From my personal experience, DOS tends to lock up, and Windows 95
sometimes continues to work, although it is definitely wise to reboot.

   If TTDPatch can in fact find all necessary locations, it will create
a file containing the version information.  Please send this file to
the maintainer, listed in *Note Contact::.  Until it is integrated into
TTDPatch, you can then use the `-y' command line switch to bypass the
version warning.  This will introduce a small delay while TTD is
loading, and also always turn on _all_ the switches.

4.2 What if it still doesn't work?
==================================

   If TTDPatch can't find all the memory locations, it will abort and
print an error message.  This will look something like this:

     Abnormal program termination: Memory protection fault
     CS:EIP = 000Fh:0020014Ah

   Please write down the last number, `20014Ah' in this case.  This can
be used to find out what it was that caused a problem.

   If this address is around 136xxxh, then you probably started
`ttdload.exe' instead of `ttdpatch.exe'.  Even after `ttdload' is
created, you still have to run `ttdpatch' which will then execute
`ttdload' and set the switches accordingly.

   If everything fails you should first look at the homepage,
`http://publish.uwo.ca/~jdrexler/ttdpatch/' to find out if any new
versions have been posted.  Yours might just have been added, and if
not you can contact the maintainer, who will probably ask you to send
him your `tycoon.exe' or `ttdx.exe', so that he can incorporate the
necessary information into `ttdpatch.exe'.

   Sorry, there is no other way around this at the moment.

4.3 Error Messages
==================

`Can't write to TTDLOAD.EXE, is it read-only?'
     This happens after copying the TTD executable to `ttdload.exe',
     when TTDPatch tries to patch this copy.  Most likely it is set to
     read-only.

`Copy error - file doesn't exist.'
     When TTDPatch tried to copy the old executable to `ttdload.exe',
     something went wrong and nothing was copied.  You can try to copy
     it yourself and run TTDPatch again.  It will then try to work with
     this copy instead, and not copy the file itself.

`Could find neither TYCOON.EXE nor TTDX.EXE.'
     You probably started TTDPatch from the wrong directory.  The
     original executable has to be in the current directory.

`Could not determine program version.'
     This means that TTDPatch couldn't find out what version of TTD you
     are using, and thus cannot patch it.  This can only be fixed by
     sending your executable to the maintainer of TTDPatch.  It's most
     likely that it actually isn't TTD but something else.

`Couldn't install code loader - try to delete TTDLOAD.EXE.'
     TTDPatch found some problem in `ttdload.exe' and couldn't patch it.
     You can try to delete `ttdload.exe' so that TTDPatch creates it
     again, hopefully correct this time.  Otherwise there is some
     problem with your TTD executable.

`Invalid original segment length.'
     The original TTD had a data segment length that is not recognized
     by TTDPatch.  This seems to be a problem with the version, and can
     only be fixed by sending your executable to the maintainer of
     TTDPatch.

`This is not Transport Tycoon Deluxe.'
     TTDPatch noticed that you don't have TTD, but rather something
     else.  The standard Transport Tycoon maybe.  TTDPatch will only
     work with versions of Transport Tycoon Deluxe.

`Unrecognized .EXE format.'
     `tycoon.exe' is not an executable file.  This should not happen,
     unless you copied or renamed something else to `tycoon.exe'.

`Version has too many numbers!'
     While trying to find out version of TTD, the program got confused
     because it found more than the usual three numbers.  This can only
     be fixed by sending your executable to the maintainer of TTDPatch.

5 Other Important Things
************************

5.1 Contact Information
=======================

   Please do not hesitate to email me your opinion about this program,
or any bugs or typos you may find, or suggestions about what to put
into the next version of the program.  If you have trouble getting it
to run please tell me the version number of your TTD (as shown in the
"About" box) and of TTDPatch.  The output of TTDPatch would also be
helpful.

   My preferred email address is <jdrexler@julian.uwo.ca>.  This should
remain active until at least 2002.  If I don't reply at that address,
you could try <Josef_Drexler@hotmail.com>, though I don't check that
very often at the moment.

   I can also sometimes be found in the newsgroups
<alt.games.microprose.transport-tyc> or
<comp.sys.ibm.pc.games.strategic>.

   And if you still can't get a hold on me, just try to scream very
loudly, I might just hear it...

   Then again, maybe not.

5.2 Future Plans
================

   Some things I am considering to include in future versions, in no
particular order:

   First those that are likely to be in the next version:

   - Refittable hovercrafts, make mail and oil an refit option for
     trains and planes.  Make the tanker be refittable for fluid goods,
     and the goods ship for all dry goods, including food.

   - Somehow restrict cheats in multiplayer games to the player placing
     the sign, which is difficult because signs don't have owners.
     Maybe use the company name instead of signs.

   - Allow all city road and bridges to be bulldozed, but with a large
     penalty on city ratings and only if it was outstanding.  Same for
     AI roads, but they get the money.

   - Allow the HQ to be bulldozed so it can be relocated

   - Improved bus and truck station handling.  Maybe there is some way
     to have busses and trucks wait out side of busy stations to avoid
     traffic jams.  The easiest way would probably be to turn off
     collision detection, so that any number of busses/trucks can
     enter/leave the station at the same time, and be in it.

   - Small airports after 1975 if compatible aircraft exist

   - Fix "Y2K" bug with long service intervals.

   - Build larger stations without having to extend them, to enable 7x7
     stations

   - Max loan should depend on company value too


   The following are a bit harder to do, maybe I get around to do them
though:

   - Cht: Engine to change all train engines into a specific type, or
     maybe for planes etc. as well.  Maybe only change a specific
     engine?  Maybe not at all, because it seems to be rather difficult.

   - Even larger stations; maybe there is a way to have even more than 7
     platforms and be longer than 7 squares

   - restrict full speed at mountains to at most one height level?

   - Allow more graphics, so that every engine and plane can have its
     own design

   - Anything you wish? Tell me, and maybe you're lucky and it's
     possible to do.

   Please tell me how much you would like to see one thing or the
other, it's very hard to guess what other people think is important.

5.3 Impossible Changes
======================

   This is a list of things I'm regularly asked to do, but which are
either impossible to do, or at least an awful lot of work:

   - Higher bridges.  Complication: TTD has no provision to store the
     height of a bridge, it is always implicitly one, nor can the
     graphics engine display them

   - Larger airports (more runways).  It's possible, but would involve
     recoding the whole aircraft movement scheme of an airport.  It's
     too much work right now.  Maybe if enough people bug me about it I
     might do it though.  If/when I do it, I'd add another runway at
     the other side of the airport, and separate them into
     landing/departing runways.  This should work nicely.

   - Larger scenarios.  This is all but impossible, because the whole
     program assumes a coordinate has 8 bits for each direction,
     totalling a 256x256 grid

5.4 Real Maglevs
================

   And for some excellent information on real maglevs you may want to
visit `http://www.maglev.com/english/'

   Although this is more geared towards people who would actually buy
one (Transport Tycoons?), it covers the technical details of the Maglev
that is hopefully going to run between Hamburg and Berlin by the year
2005.  It also shows that Maglevs really are faster in curves and on
hills, among other things.  (So I didn't lie to you.  How could I...)

   Note that I'm not in any way affiliated with Thyssen (one of the
manufacturers), but I honestly think that Maglevs are going to be a
Really Good Thing.

   And this page is actually what made me start to write this patch,
because it made me annoyed at how slow Chimeras are at hills and in
curves...

5.5 Acknowledgements
====================

   This is a list of people who have helped me improve TTDPatch.  In
order of appearance:

Maurie Daly
     Bug reports: CD drive parameter

3iff
     Bug reports

Paul van Eijden
     European mirror

Chris Locke
     Bug reports: Ghost trains, switches not working

Cecilie Irgens
     Many suggestions,

Anne-Marie Adamson
     Multiplayer suggestions and testing

Wolfgang Pausch
     Many bug reports and suggestions

Wolfgang Preiss
     Many bug reports and suggestions, diligent testing

Jacopo D'Aurizio
     Many suggestions

Peter Burstow
     Bug reports, testing

Boudewijn Dijkstra
     Finding many typos and improving the docs

Apologies if I've forgotten somebody, please tell me and I'll add you
to the list.

5.6 Closing Words
=================

   Can you imagine that I just typed 21K of documentation for a 17K
program?  Funny.

And you even read it all...

Update: Now we have almost 25K of docs for an 18K program...

Update: Docs grow faster than program.  50K vs 19K now.

Update: 1.5 is 59K vs. still 19K.

   And I'm still amazed at how small the patch is.  Considering that
most of it is just command line parsing and other preliminary work.
The actual patch is still less than 7KB.  It would appear that the
usability of any program is inversely proportional to its size...

