2007-02-15 22:03:48 +00:00
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2004-11-19 22:59:31 +00:00
< html >
2007-02-15 22:03:48 +00:00
< head >
< meta name = "Author" content = "Marcin Grzegorczyk" >
< meta name = "Description" content = "Structure of OpenTTD (OTTD) landscape arrays" >
2010-08-27 10:42:48 +00:00
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" >
2007-02-15 22:03:48 +00:00
< title > OpenTTD Landscape Internals< / title >
2004-11-19 22:59:31 +00:00
< / head >
2007-02-15 22:03:48 +00:00
2004-11-19 22:59:31 +00:00
< body >
2007-02-15 22:03:48 +00:00
< h3 > < a name = "Landscape" > Landscape< / a > < / h3 >
2010-08-27 10:42:48 +00:00
< p >
For a graphical representation of the tile-layout have a look at
< a href = "landscape_grid.html" > Landscape grid< / a > page.
< / p >
2014-09-21 11:20:29 +00:00
< p > Nine attributes (counting " < span style = "font-weight: bold;" > type< / span > " and
" < span style = "font-weight: bold;" > height< / span > " ) hold the informations about a tile.< BR >
2007-02-15 22:03:48 +00:00
These attributes are referred to as
2014-09-21 11:20:29 +00:00
" < span style = "font-weight: bold;" > type< / span > ",
" < span style = "font-weight: bold;" > height< / span > ",
2010-08-27 10:42:48 +00:00
" < span style = "font-weight: bold;" > m1< / span > " , " < span style = "font-weight: bold;" > m2< / span > " ,
" < span style = "font-weight: bold;" > m3< / span > " , " < span style = "font-weight: bold;" > m4< / span > " ,
" < span style = "font-weight: bold;" > m5< / span > " , " < span style = "font-weight: bold;" > m6< / span > "
and "< span style = "font-weight: bold;" > m7< / span > ".< br >
2007-01-23 02:31:49 +00:00
The most important value is the class of a tile, stored in the upper 4 bits
2014-09-21 11:20:29 +00:00
of the < span style = "font-weight: bold;" > type< / span > attribute.
2007-03-01 20:10:49 +00:00
< / p >
2010-08-27 10:42:48 +00:00
Frequently repeating patterns:
2007-03-01 20:10:49 +00:00
< ul >
2014-09-21 11:20:29 +00:00
< li > < span style = "font-weight: bold;" > type< / span >
< ul >
< li >
< a name = "type" > < / a >
Bits 7..4:
< table border = "1" style = "width: 30em;" >
< tr bgcolor = "#CCCCCC" > < td colspan = "2" > The tile type.< / td > < / tr >
< tr > < td style = "width: 5em;" > < tt > 00< / tt > < / td > < td > Ground< / td > < / tr >
< tr > < td > < tt > 01< / tt > < / td > < td > Railway tracks< / td > < / tr >
< tr > < td > < tt > 02< / tt > < / td > < td > Roads< / td > < / tr >
< tr > < td > < tt > 03< / tt > < / td > < td > Town building< / td > < / tr >
< tr > < td > < tt > 04< / tt > < / td > < td > Trees< / td > < / tr >
< tr > < td > < tt > 05< / tt > < / td > < td > Station tiles< / td > < / tr >
< tr > < td > < tt > 06< / tt > < / td > < td > Water< / td > < / tr >
< tr > < td > < tt > 07< / tt > < / td > < td > Void< / td > < / tr >
< tr > < td > < tt > 08< / tt > < / td > < td > Industries< / td > < / tr >
< tr > < td > < tt > 09< / tt > < / td > < td > Tunnel / bridge< / td > < / tr >
< tr > < td > < tt > 0A< / tt > < / td > < td > Objects< / td > < / tr >
< / table >
< / li >
Bits 3..2:
< table border = "1" style = "width: 30em;" >
< tr bgcolor = "#CCCCCC" > < td colspan = "2" > Presence and direction of bridge above.< / td > < / tr >
< tr > < td style = "width: 5em;" > < tt > 00< / tt > < / td > < td > no bridge< / td > < / tr >
< tr > < td > < tt > 01< / tt > < / td > < td > Axis X (North-East)< / td > < / tr >
< tr > < td > < tt > 02< / tt > < / td > < td > Axis Y (South-West)< / td > < / tr >
< / table >
< li >
< a name = "tropic_zone" > < / a >
Bits 1..0:
< table border = "1" style = "width: 30em;" >
< tr bgcolor = "#CCCCCC" > < td colspan = "2" > Only meaningfull in tropic climate. It contains the definition of the available zones< / td > < / tr >
< tr > < td style = "width: 5em;" > < tt > 00< / tt > < / td > < td > normal< / td > < / tr >
< tr > < td > < tt > 01< / tt > < / td > < td > desert< / td > < / tr >
< tr > < td > < tt > 02< / tt > < / td > < td > rain forest< / td > < / tr >
< / table >
In any other climate these 2 bits are theoretically free of use, however using them does not seem useful.
< / li >
< / ul >
2010-08-27 10:42:48 +00:00
< li > < span style = "font-weight: bold;" > m1< / span >
< ul >
< li >
< a name = "WaterClass" > < / a >
Bits 6..5:
< table border = "1" style = "width: 30em;" >
< tr bgcolor = "#CCCCCC" > < td colspan = "2" > The type of water that is on a tile.
< tr > < td style = "width: 5em;" > < tt > 00< / tt > < / td > < td align = left > Sea< / td > < / tr >
< tr > < td > < tt > 01< / tt > < / td > < td align = left > Canal< / td > < / tr >
< tr > < td > < tt > 02< / tt > < / td > < td align = left > River< / td > < / tr >
< tr > < td > < tt > 03< / tt > < / td > < td align = left > Invalid, i.e. no water on this tile< / td > < / tr >
< / table >
Some tiles, such as houses, reuse these bits of other purposes.
< / li >
< li >
< a name = "OwnershipInfo" > < / a >
Bits 4..0:
< table border = "1" style = "width: 30em;" >
< tr bgcolor = "#CCCCCC" > < td colspan = "2" > The owner of a tile can be either companies (human or AI) or "Game entities".
< tr > < td style = "width: 5em;" > < tt > 00..0E< / tt > < / td > < td align = left > Normal companies< / td > < / tr >
< tr > < td > < tt > 0F< / tt > < / td > < td align = left > a town owns the tile< / td > < / tr >
< tr > < td > < tt > 10< / tt > < / td > < td align = left > nobody owns the tile< / td > < / tr >
< tr > < td > < tt > 11< / tt > < / td > < td align = left > "water" owns the tile< / td > < / tr >
< tr > < td > < tt > FF< / tt > < / td > < td align = left > spectator in MP or in scenario editor< / td > < / tr >
< / table >
Some tiles, such as houses and industries, reuse these bits of other purposes.
< / li >
< / ul >
< / li >
< li > < span style = "font-weight: bold;" > m7:< / span > < br >
Animation frame/state. Used for houses, industries, objects and stations.
2007-03-01 20:10:49 +00:00
< / li >
< / ul >
2007-01-23 02:31:49 +00:00
2007-02-15 22:03:48 +00:00
< p > OTTD's class-specific periodic tile processing routine is called once every +256 ticks for each tile.< / p >
2004-11-19 22:59:31 +00:00
2007-02-15 22:03:48 +00:00
< table border = 1 cellpadding = 3 >
2007-03-01 04:24:19 +00:00
< tr bgcolor = "#0099FF" >
< th align = left > < font color = "#FFFFFF" > Class< / font > < / th >
< th align = left > < font color = "#FFFFFF" > Meaning & details of encoding< / font > < / th >
< / tr >
< tr bgcolor = "#CCCCCC" >
< td align = left > < strong > < a name = "Class0" > < tt > 0 < / tt > < / a > < / strong > < / td >
2007-03-01 20:10:49 +00:00
< td align = left > < strong > Ground < / strong > < / td >
2007-03-01 04:24:19 +00:00
< / tr >
2007-02-15 22:03:48 +00:00
< tr >
2007-03-01 04:24:19 +00:00
< td valign = top nowrap > < / td >
2007-02-15 22:03:48 +00:00
< td >
< ul >
2010-08-11 14:14:06 +00:00
< li > m1 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of the tile (normally < tt > 10< / tt > )< / li >
2008-01-31 15:18:07 +00:00
< li > m2: see fields< / li >
2011-11-08 19:48:47 +00:00
< li > m3 bits 7..5: type of hedge on NE border of the tile< / li >
2008-01-31 15:18:07 +00:00
< li > m3 bits 3..0: see fields< / li >
2010-01-04 18:33:43 +00:00
< li > m3 bit 4: set if the tile is covered with snow< / li >
2007-03-01 04:24:19 +00:00
< li > m4 bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none)< / li >
< li > m4 bits 4..2: same as 7..5, but for the SE border< / li >
2007-02-15 22:03:48 +00:00
< li > m5 bits 7..5: update counter, incremented on every periodic processing for tile types,
other than < tt > 03< / tt > , < tt > 07< / tt > , < tt > 0B< / tt > , < tt > 10< / tt > and above.< BR >
on wraparound, the tile is updated (for fields, the type of fields in m3 is increased, for other types the tile type in m5 is increased).< BR >
2007-03-01 04:24:19 +00:00
For snow and desert, these bits are not used, tile is updated on every periodic processing.< / li >
2008-01-31 15:18:07 +00:00
< li > m5 bits 4..2: tile type:
2007-03-01 04:24:19 +00:00
< table >
< tr >
2008-01-31 15:18:07 +00:00
< td nowrap valign = top > < tt > 0< / tt > < / td >
< td align = left > bare land / grass< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td nowrap valign = top > < tt > 1< / tt > < / td >
< td align = left > rough land (density must be 3)< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td nowrap valign = top > < tt > 2< / tt > < / td >
< td align = left > rocks (density must be 3)< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td nowrap valign = top > < tt > 3< / tt > < / td >
< td align = left > fields (density must be 3)
< ul >
< li > m2: index into the array of industries (farms), INVALID_INDUSTRY (0xFFFF) if farm has been removed< / li >
< li > m3 bits 3..0: field type (legal values: 0 through 9)< / li >
< / ul >
< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td nowrap valign = top > < tt > 4< / tt > < / td >
< td align = left > snow< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td nowrap valign = top > < tt > 5< / tt > < / td >
< td align = left > desert (density must be 1 or 3)< / td >
2007-03-01 04:24:19 +00:00
< / tr >
2008-01-31 15:18:07 +00:00
< / table >
< / li >
< li > m5 bits 1..0: density:
< table >
2007-03-01 04:24:19 +00:00
< tr >
2008-01-31 15:18:07 +00:00
< td nowrap valign = top > < tt > 0< / tt > < / td >
< td > bare land< / td >
< td > < / td >
< td > < / td >
< td > < / td >
< td > 1/4 snow< / td >
< td > < / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td nowrap valign = top > < tt > 1< / tt > < / td >
< td > 1/3 grass< / td >
< td > < / td >
< td > < / td >
< td > < / td >
< td > 2/4 snow; < / td >
< td > 1/2 desert< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td nowrap valign = top > < tt > 2< / tt > < / td >
< td > 2/3 grass< / td >
< td > < / td >
< td > < / td >
< td > < / td >
< td > 3/4 snow< / td >
< td > < / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td nowrap valign = top > < tt > 3< / tt > < / td >
< td > full grass; < / td >
< td > rough land; < / td >
< td > rocks; < / td >
< td > fields; < / td >
< td > full snow; < / td >
< td > full desert< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< / table >
2007-02-15 22:03:48 +00:00
< / li >
2011-11-08 19:48:47 +00:00
< li > m6 bits 4..2: type of hedge on NW border of the tile< / li >
2007-02-15 22:03:48 +00:00
< / ul >
< / td >
< / tr >
2004-11-19 22:59:31 +00:00
2007-03-01 04:24:19 +00:00
< tr bgcolor = "#CCCCCC" >
< td valign = top nowrap > < strong > < a name = "Class1" > < tt > 1< / tt > < / a > < / strong > < / td >
< td > < strong > Railway tracks< / strong > < / td >
< / tr >
2007-02-15 22:03:48 +00:00
< tr >
2007-03-01 04:24:19 +00:00
< td valign = top nowrap > < / td >
2007-02-15 22:03:48 +00:00
< td >
< ul >
2010-08-11 14:14:06 +00:00
< li > m1 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of the tile< / li >
2009-07-22 09:21:48 +00:00
< li > m2: see signals< / li >
2008-01-31 15:18:07 +00:00
< li > m3 bits 7..4: see signals< / li >
< li > m3 bits 3..0 = < a name = "TrackType" > track type< / a > :
< table >
< tr >
< td > < tt > 0< / tt > < / td >
< td > conventional railway< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td > < tt > 1< / tt > < / td >
< td > electrified railway< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td > < tt > 2< / tt > < / td >
< td > monorail< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td > < tt > 3< / tt > < / td >
< td > maglev< / td >
< / tr >
< / table >
< / li >
< li > m4 bits 7..4: see signals< / li >
< li > m4 bits 3..0: Ground type (values with fences are not valid for depots and checkpoints)
< table >
< tr >
< td nowrap valign = top > < tt > 0< / tt > < / td >
< td align = left > on bare land< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > 1< / tt > < / td >
< td align = left > on grass, no fences< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > 2< / tt > < / td >
< td align = left > fence on the NW side< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > 3< / tt > < / td >
< td align = left > fence on the SE side< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > 4< / tt > < / td >
< td align = left > fences on the NW and SE sides< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > 5< / tt > < / td >
< td align = left > fence on the NE side< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > 6< / tt > < / td >
< td align = left > fence on the SW side< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > 7< / tt > < / td >
< td align = left > fences on the NE and SW sides< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > 8< / tt > < / td >
< td align = left > fence on the E side (track in the W corner)< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > 9< / tt > < / td >
< td align = left > fence on the W side (track in the E corner)< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > A< / tt > < / td >
< td align = left > fence on the S side (track in the N corner)< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > B< / tt > < / td >
< td align = left > fence on the N side (track in the S corner)< / td >
< / tr >
2007-03-01 04:24:19 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > C< / tt > < / td >
< td align = left > on snow or desert< / td >
< / tr >
2007-10-20 21:05:18 +00:00
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > D< / tt > < / td >
< td align = left > on grass with fence and shore or water on the free halftile< / td >
< / tr >
2008-02-10 12:01:14 +00:00
< tr >
< td nowrap valign = top > < tt > E< / tt > < / td >
< td align = left > higher part on foundation with snow, lower without snow< / td >
< / tr >
2008-01-31 15:18:07 +00:00
< / table >
< / li >
< li > m5 bit 7 clear: railway track
< ul >
2007-03-01 04:24:19 +00:00
< li > m5 bits 5..0: track layout: bit set = track present:
2007-02-15 22:03:48 +00:00
< table >
2007-03-01 04:24:19 +00:00
< tr >
< td nowrap valign = top > bit 0: < / td >
< td align = left > in the X direction< / td >
< / tr >
< tr >
< td nowrap valign = top > bit 1: < / td >
< td align = left > in the Y direction< / td >
< / tr >
< tr >
< td nowrap valign = top > bit 2: < / td >
< td align = left > in the north corner (direction W-E)< / td >
< / tr >
< tr >
< td nowrap valign = top > bit 3: < / td >
< td align = left > in the south corner (direction W-E)< / td >
< / tr >
< tr >
< td nowrap valign = top > bit 4: < / td >
< td align = left > in the west corner (direction N-S)< / td >
< / tr >
< tr >
< td nowrap valign = top > bit 5: < / td >
< td align = left > in the east corner (direction N-S)< / td >
< / tr >
2007-02-15 22:03:48 +00:00
< / table >
< / li >
2008-01-31 15:18:07 +00:00
< li > m5 bit 6 set = with signals:< BR >
There are at most 4 signals on a tile. The signals 0..3 belong to the directions:
2007-02-15 22:03:48 +00:00
< table >
2007-03-01 04:24:19 +00:00
< tr >
2008-01-31 15:18:07 +00:00
< td > < / td >
< td > Track < tt > 0< / tt > (X) < / td >
< td > Track < tt > 1< / tt > (Y) < / td >
< td > Track < tt > 2< / tt > (north) < / td >
< td > Track < tt > 3< / tt > (south) < / td >
< td > Track < tt > 4< / tt > (west) < / td >
< td > Track < tt > 5< / tt > (east)< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td align = left > Signal < tt > 0< / tt > < / td >
< td > < / td >
< td > < / td >
< td > < / td >
< td > west< / td >
< td > < / td >
< td > south< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td align = left > Signal < tt > 1< / tt > < / td >
< td > < / td >
< td > < / td >
< td > < / td >
< td > east< / td >
< td > < / td >
< td > north< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td align = left > Signal < tt > 2< / tt > < / td >
< td > south-west< / td >
< td > north-west< / td >
< td > west< / td >
< td > < / td >
< td > south< / td >
< td > < / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td align = left > Signal < tt > 3< / tt > < / td >
< td > north-east< / td >
< td > south-east< / td >
< td > east< / td >
< td > < / td >
< td > north< / td >
< td > < / td >
2007-03-01 04:24:19 +00:00
< / tr >
2007-02-15 22:03:48 +00:00
< / table >
2008-01-31 15:18:07 +00:00
< ul >
2008-08-02 22:48:43 +00:00
< li > m2 bit 7: Signal 0 and 1: set = semaphore signals, clear = light signals< / li >
< li > m2 bit 3: Signal 2 and 3: set = semaphore signals, clear = light signals< / li >
< li > m2 bits 6..4: type of signal 0 and 1 (same values as m2 bits 2..0)< / li >
< li > m2 bits 2..0: type of signal 2 and 3
2008-01-31 15:18:07 +00:00
< table >
< tr >
2008-08-02 22:48:43 +00:00
< td nowrap = "nowrap" valign = "top" > < tt > 000< / tt > : < / td >
2008-01-31 15:18:07 +00:00
< td align = "left" > normal signals< / td >
< / tr >
< tr >
2008-08-02 22:48:43 +00:00
< td nowrap = "nowrap" valign = "top" > < tt > 001< / tt > : < / td >
2008-01-31 15:18:07 +00:00
< td align = "left" > pre-signals< / td >
< / tr >
< tr >
2008-08-02 22:48:43 +00:00
< td nowrap = "nowrap" valign = "top" > < tt > 010< / tt > : < / td >
2008-01-31 15:18:07 +00:00
< td align = "left" > exit-signals< / td >
< / tr >
< tr >
2008-08-02 22:48:43 +00:00
< td nowrap = "nowrap" valign = "top" > < tt > 011< / tt > : < / td >
2008-01-31 15:18:07 +00:00
< td align = "left" > combo-signals< / td >
< / tr >
2008-08-02 22:48:43 +00:00
< tr >
< td nowrap = "nowrap" valign = "top" > < tt > 100< / tt > : < / td >
< td align = "left" > pbs signals< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > < tt > 101< / tt > : < / td >
< td align = "left" > no-entry signals< / td >
< / tr >
2008-01-31 15:18:07 +00:00
< / table >
< / li >
< li > m3 bits 7..4: bit set = signal 3..0 present< / li >
< li > m4 bits 7..4: bit clear = signal 3..0 shows red< / li >
< / ul >
2007-02-15 22:03:48 +00:00
< / li >
2008-08-02 22:47:20 +00:00
< li > m2 bits 8..10: track reserved for pbs
< table >
< tr >
< td > < tt > 0< / tt > < / td >
< td > not reserved< / td >
< / tr >
< tr >
< td > < tt > 1< / tt > < / td >
< td > X direction< / td >
< / tr >
< tr >
< td > < tt > 2< / tt > < / td >
< td > Y direction< / td >
< / tr >
< tr >
< td > < tt > 3< / tt > < / td >
< td > north corner (W-E)< / td >
< / tr >
< tr >
< td > < tt > 4< / tt > < / td >
< td > south corner (W-E)< / td >
< / tr >
< tr >
< td > < tt > 5< / tt > < / td >
< td > west corner (N-S)< / td >
< / tr >
< tr >
< td > < tt > 6< / tt > < / td >
< td > east corner (N-S)< / td >
< / tr >
< / table >
< / li >
< li > m2 bit 11: opposite track is reserved, too< / li >
2008-01-31 15:18:07 +00:00
< / ul >
< / li >
< li > m5 bit 7 set, bit 6 set: railway depot
< ul >
2009-09-10 14:33:07 +00:00
< li > m2: Depot index< / li >
2008-01-31 15:18:07 +00:00
< li > m5 bits 1..0: exit towards
< table >
2007-03-01 04:24:19 +00:00
< tr >
2008-01-31 15:18:07 +00:00
< td > < tt > 0< / tt > < / td >
< td > NE< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td > < tt > 1< / tt > < / td >
< td > SE< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td > < tt > 2< / tt > < / td >
< td > SW< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td > < tt > 3< / tt > < / td >
< td > NW< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< / table >
< / li >
2008-08-02 22:47:20 +00:00
< li > m5 bit 4: pbs reservation state< / li >
2007-02-15 22:03:48 +00:00
< / ul >
< / li >
< / ul >
< / td >
< / tr >
2004-11-19 22:59:31 +00:00
2007-03-01 04:24:19 +00:00
< tr bgcolor = "#CCCCCC" >
< td valign = top nowrap > < strong > < a name = "Class2" > < tt > 2< / tt > < / a > < / strong > < / td >
< td > < strong > Roads< / strong > < / td >
< / tr >
2007-02-15 22:03:48 +00:00
< tr >
2007-03-01 04:24:19 +00:00
< td valign = top nowrap > < / td >
2007-02-15 22:03:48 +00:00
< td >
2007-03-01 04:24:19 +00:00
< ul >
2008-11-18 22:43:59 +00:00
< li > m2: Index into the array of towns (owning town for town roads; closest town otherwise, INVALID_TOWN if there is no town or we are creating a town)< / li >
2009-03-02 22:57:47 +00:00
< li > m7 bit 5 set = on snow or desert< / li >
< li > m7 bits 7..6: present road types
2008-01-31 15:18:07 +00:00
< table >
< tr >
< td > bit 0 < / td >
< td > normal road< / td >
< / tr >
< tr >
< td > bit 1 < / td >
< td > tram< / td >
< / tr >
< / table >
< / li >
2014-10-04 19:23:43 +00:00
< li > m3 bits 7..4: < a href = "#OwnershipInfo" > owner< / a > of road type 1 (tram); OWNER_NONE (< tt > 10< / tt > ) is stored as OWNER_TOWN (< tt > 0F< / tt > )
2008-01-31 15:18:07 +00:00
< li > m5 bits 7 clear: road or level-crossing
2007-03-01 04:24:19 +00:00
< ul >
2009-03-02 22:57:47 +00:00
< li > m6 bits 5..3:
2007-03-01 04:24:19 +00:00
< table >
< tr >
< td > < tt > 0< / tt > < / td >
< td > on bare land< / td >
< / tr >
< tr >
< td > < tt > 1< / tt > < / td >
< td > on grass< / td >
< / tr >
< tr >
< td > < tt > 2< / tt > < / td >
< td > paved< / td >
< / tr >
< tr >
< td > < tt > 3< / tt > < / td >
< td > with streetlights< / td >
< / tr >
< tr >
< td > < tt > 5< / tt > < / td >
< td > tree-lined< / td >
< / tr >
< tr >
< td > < tt > 6< / tt > < / td >
< td > on grass with road works< / td >
< / tr >
< tr >
< td > < tt > 7< / tt > < / td >
< td > paved with road works< / td >
< / tr >
< / table >
< / li >
2008-01-31 15:18:07 +00:00
< li > m5 bit 6 clear: road
< ul >
2010-08-11 14:14:06 +00:00
< li > m1 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of the road type 0 (normal road)< / li >
2009-03-02 22:57:47 +00:00
< li > m7 bits 3..0: counter for the roadworks< / li >
< li > m5 bits 3..0: road layout road type 0 (normal road): bit set = road piece present:
2008-01-31 15:18:07 +00:00
< table >
< tr >
< td align = left > bit 0: < / td >
< td > NW piece< / td >
< / tr >
< tr >
< td align = left > bit 1: < / td >
< td > SW piece< / td >
< / tr >
< tr >
< td align = left > bit 2: < / td >
< td > SE piece< / td >
< / tr >
< tr >
< td align = left > bit 3: < / td >
< td > NE piece< / td >
< / tr >
< / table >
< / li >
2009-03-02 22:57:47 +00:00
< li > m3 bits 0..3: road layout road type 1 (tram)< / li >
2008-01-31 15:18:07 +00:00
< li > m5 bits 5..4: bits to disallow vehicles to go a specific direction
< table >
< tr >
< td align = left > bit 0: < / td >
< td > set = disallow driving in south-west or south-east direction< / td >
< / tr >
< tr >
< td align = left > bit 1: < / td >
< td > set = disallow driving in north-west or north-east direction< / td >
< / tr >
< / table >
< / li >
< / ul >
< / li >
< li > m5 bit 6 set: level crossing
< ul >
2010-08-11 14:14:06 +00:00
< li > m1 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of the railway track< / li >
2008-01-31 15:18:07 +00:00
< li > m3 bits 3..0: < a href = "#TrackType" > railway track type< / a > < / li >
2009-03-02 22:57:47 +00:00
< li > m5 bit 0: direction
2008-01-31 15:18:07 +00:00
< table >
< tr >
< td align = left > < tt > 0< / tt > < / td >
< td align = left > road in the X direction, rail in Y< / td >
< / tr >
< tr >
< td align = left > < tt > 1< / tt > < / td >
< td align = left > road in the Y direction, rail in X< / td >
< / tr >
< / table >
< / li >
2009-03-02 22:57:47 +00:00
< li > m5 bit 5: set if crossing lights are on< / li >
2009-12-27 21:45:27 +00:00
< li > m7 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of the road type 0 (normal road)< / li >
2008-08-02 22:47:20 +00:00
< li > m5 bit 4: pbs reservation state< / li >
2008-01-31 15:18:07 +00:00
< / ul >
< / li >
< / ul >
< / li >
< li > m5 bit 7 set, bit 6 clear: road depot
< ul >
2010-08-11 14:14:06 +00:00
< li > m1 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of the depot< / li >
2009-09-10 14:33:07 +00:00
< li > m2: Depot index< / li >
2013-04-05 19:35:56 +00:00
< li > m5 bits 1..0: exit towards:
2007-03-01 04:24:19 +00:00
< table >
< tr >
2008-01-31 15:18:07 +00:00
< td > < tt > 0< / tt > < / td >
< td > NE< / td >
2007-03-01 04:24:19 +00:00
< / tr >
2008-01-31 15:18:07 +00:00
2007-03-01 04:24:19 +00:00
< tr >
2008-01-31 15:18:07 +00:00
< td > < tt > 1< / tt > < / td >
< td > SE< / td >
2007-03-01 04:24:19 +00:00
< / tr >
2008-01-31 15:18:07 +00:00
2007-03-01 04:24:19 +00:00
< tr >
2008-01-31 15:18:07 +00:00
< td > < tt > 2< / tt > < / td >
< td > SW< / td >
2007-03-01 04:24:19 +00:00
< / tr >
2008-01-31 15:18:07 +00:00
2007-03-01 04:24:19 +00:00
< tr >
2008-01-31 15:18:07 +00:00
< td > < tt > 3< / tt > < / td >
< td > NW< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< / table >
< / li >
2014-10-04 19:23:43 +00:00
< li > m7 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of the road type 0 (normal road)< / li >
2007-02-15 22:03:48 +00:00
< / ul >
< / li >
< / ul >
< / td >
< / tr >
2004-11-19 22:59:31 +00:00
2007-03-01 04:24:19 +00:00
< tr bgcolor = "#CCCCCC" >
< td valign = top nowrap > < strong > < a name = "Class3" > < tt > 3< / tt > < / a > < / strong > < / td >
< td > < strong > Town building < / strong > < / td >
< / tr >
2007-02-15 22:03:48 +00:00
< tr >
2007-03-01 04:24:19 +00:00
< td valign = top nowrap > < / td >
< td >
2007-02-15 22:03:48 +00:00
< ul >
2007-03-19 11:27:30 +00:00
< li > m1 : Random bits < a href = "#newhouses" > (newhouses)< / a > < / li >
2008-01-31 15:18:07 +00:00
< li > m2 : index into the array of towns< / li >
2007-03-19 11:27:30 +00:00
< li > m3 bit 7 :
< ul >
< li > set : House is complete
< ul >
2008-11-23 14:17:41 +00:00
< li > m5 : Age of house in years, clamped at 255< / li >
2007-03-19 11:27:30 +00:00
< / ul >
< / li >
< li > clear : House is in construction
< ul >
< li > m5 bits 7..5 : free< / li >
< li > m5 bits 4..3 : construction stage< / li >
< li > m5 bits 2..0 : construction counter< / li >
< / ul >
< / li >
< / ul >
2008-01-31 15:18:07 +00:00
< li > m3 bit 6 : bit 8 of house type (m4), allowing 512 different types.< / li >
2010-08-26 14:36:00 +00:00
< li > m3 bit 5 : free< / li >
2008-01-31 15:18:07 +00:00
< li > m3 bits 4..0 : triggers activated < a href = "#newhouses" > (newhouses)< / a > < / li >
2007-03-19 11:27:30 +00:00
< li > m4 : < a href = "landscape_externals.html" > town building type< / a > (with m3[6] bit)< / li >
< li > m5 : see m3 bit 7< / li >
< li > m6 :
< ul >
< li > If < a href = "#newhouses" > newhouses< / a > is activated
< ul >
2010-08-26 14:36:00 +00:00
< li > bits 7..2 : Periodic processing time remaining< / li >
2007-03-19 11:27:30 +00:00
< / ul >
< / li >
< li > Standard behaviour
< ul >
< li > bits 7..2 : lift position (for houses type 04 and 05)< / li >
< / ul >
< / li >
< / ul >
2007-02-15 22:03:48 +00:00
< / li >
2007-03-19 11:27:30 +00:00
< li > m7 :
2007-02-15 22:03:48 +00:00
< ul >
2007-03-19 11:27:30 +00:00
< li > If < a href = "#newhouses" > newhouses< / a > is activated
< ul >
2010-08-26 14:36:00 +00:00
< li > Current animation frame< / li >
2007-03-19 11:27:30 +00:00
< / ul >
< / li >
< li > Standard behaviour (only for houses type 04 and 05)
< ul >
< li > bits 7..4 : free< / li >
< li > bits 3..1 : lift destination. Values can be 0..6, except 1.< br >
So the building has 6 effective floors. This is due to the fact that the first floor is 2 'normal' floors high.< br >
One 'normal' floor has a height of 6 lift positions.
< / li >
< li > bit 0 : Lift has destination when set< / li >
< / ul >
< / li >
2007-02-15 22:03:48 +00:00
< / ul >
< / li >
< / ul >
2010-08-27 10:42:48 +00:00
< small > < a name = "newhouses" > < / a > Newhouses is the name englobing a newGRF feature developped by TTDPatch devs (mainly Csaboka).< br >
2007-03-19 11:27:30 +00:00
It allows the replacement of the properties as well as the graphics of houses in the game.< br >
To distinguish between the standard behaviour and the newGRF one, HouseID (m4 + m3[6]) is tested for anything above 110.< br >
110 is the count of standard houses. So above 110 means there is a new definition of at least one house< / small >
2007-02-15 22:03:48 +00:00
< / td >
< / tr >
2004-11-19 22:59:31 +00:00
2007-03-01 04:24:19 +00:00
< tr bgcolor = "#CCCCCC" >
< td valign = top nowrap > < strong > < a name = "Class4" > < tt > 4 < / tt > < / a > < / strong > < / td >
< td > < strong > Trees < / strong > < / td >
< / tr >
2007-02-15 22:03:48 +00:00
< tr >
2007-03-01 04:24:19 +00:00
< td valign = top nowrap > < / td >
< td >
2007-02-15 22:03:48 +00:00
< ul >
2010-08-11 14:14:06 +00:00
< li > m1 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > (normally < tt > 10< / tt > )< / li >
2010-01-04 18:33:43 +00:00
< li > m2 bits 8..6: ground
2007-03-01 20:10:49 +00:00
< table >
< tr >
2008-01-31 17:54:13 +00:00
< td align = left > < tt > 0< / tt > < / td >
< td > on grass< / td >
2007-03-01 20:10:49 +00:00
< / tr >
< tr >
2008-01-31 17:54:13 +00:00
< td align = left > < tt > 1< / tt > < / td >
< td > on rough land (density must be 3)< / td >
2007-03-01 20:10:49 +00:00
< / tr >
< tr >
2008-01-31 17:54:13 +00:00
< td align = left > < tt > 2< / tt > < / td >
< td > on snow or desert< / td >
< / tr >
< tr >
< td align = left > < tt > 3< / tt > < / td >
< td > on shore (density must be 3)< / td >
2007-03-01 20:10:49 +00:00
< / tr >
2010-01-04 18:33:43 +00:00
< tr >
< td align = left > < tt > 4< / tt > < / td >
< td > on snow with rough land underneed< / td >
< / tr >
2007-03-01 20:10:49 +00:00
< / table >
< / li >
2010-01-04 18:33:43 +00:00
< li > m2 bits 5..4: ground density< / li >
2007-03-01 20:10:49 +00:00
< li > m2 bits 3..0: update counter, incremented on every periodic processing.< br >
on wraparound the growth status is updated (or, if it's < tt > 3< / tt > , a random action is taken)< / li >
< li > m3 bits 7..0: type of trees:
< table >
< tr >
< td nowrap valign = top > < tt > 00< / tt > ..< tt > 0B< / tt > < / td >
< td align = left > temperate climate trees< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 0C< / tt > ..< tt > 13< / tt > < / td >
< td align = left > sub-arctic climate trees< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 14< / tt > ..< tt > 1A< / tt > < / td >
< td align = left > rainforest trees< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 1B< / tt > < / td >
< td align = left > cactus plants< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 1C< / tt > ..< tt > 1F< / tt > < / td >
< td align = left > sub-tropical climate, non-rainforest, non-desert trees< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 20< / tt > ..< tt > 28< / tt > < / td >
< td align = left > toyland trees< / td >
< / tr >
< / table >
< small > Note: the actually displayed set of trees depends on both type and number of trees< / small >
< / li >
< li > m5 bits 7..6: number of trees minus one< / li >
< li > m5 bits 2..0: growth status:
< table border = "0" >
< tr >
< td > < tt > 0< / tt > ..< tt > 2< / tt > < / td >
< td > one of trees is growing < / td >
< / tr >
< tr >
< td > < tt > 3< / tt > < / td >
< td > all trees are fully grown < / td >
< / tr >
< tr >
< td > < tt > 4< / tt > ..< tt > 6< / tt > < / td >
< td > one of trees is withering < / td >
< / tr >
< / table >
< / li >
2007-02-15 22:03:48 +00:00
< / ul >
< / td >
< / tr >
2004-11-19 22:59:31 +00:00
2007-03-01 04:24:19 +00:00
< tr bgcolor = "#CCCCCC" >
< td valign = top nowrap > < strong > < a name = "Class5" > < tt > 5< / tt > < / a > < / strong > < / td >
< td > < strong > Station tiles< / strong > < / td >
< / tr >
< tr >
< td valign = top nowrap > < / td >
< td >
< ul >
2010-08-11 14:14:06 +00:00
< li > m1 bits 6..5: water class for buoys, water part of docks and for airport tiles< / li >
< li > m1 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of the station< / li >
2007-03-01 04:24:19 +00:00
< li > m2: index into the array of stations< / li >
2010-02-22 14:17:26 +00:00
< li > m3 bits 7..4: persistent random data for railway stations/waypoints and airports)< / li >
2009-03-02 22:57:47 +00:00
< li > m3 bits 7..4: < a href = "#OwnershipInfo" > owner< / a > of tram tracks (road stop)< / li >
2009-07-22 09:21:48 +00:00
< li > m3 bits 3..0: < a href = "#TrackType" > track type< / a > for railway stations/waypoints< / li >
2007-03-01 04:24:19 +00:00
< li > m4: custom station id; 0 means standard graphics< / li >
2007-07-16 23:55:22 +00:00
< li > m5: graphics index (range from 0..255 for each station type):
2007-03-01 04:24:19 +00:00
< table >
< tr >
< td nowrap valign = top > < tt > 00< / tt > ..< tt > 07< / tt > < / td >
< td align = left > railway station
< table >
< tr >
< td > < tt > 00< / tt > ..< tt > 01< / tt > < / td >
< td align = left > open platform< / td >
< / tr >
< tr >
< td > < tt > 02< / tt > ..< tt > 03< / tt > < / td >
< td align = left > open platform with station building< / td >
< / tr >
< tr >
< td > < tt > 04< / tt > ....< tt > 07< / tt > < / td >
< td align = left > roofed platform< / td >
< / tr >
< tr >
< td colspan = 2 > bit 0: clear = in X direction, set = in Y direction< / td >
< / tr >
< / table >
< / td >
< / tr >
2009-07-22 09:21:48 +00:00
< tr >
< td nowrap valign = top > < tt > 00< / tt > ..< tt > 01< / tt > < / td >
< td align = left > waypoints
< table >
< tr >
< td > < tt > 00< / tt > < / td >
< td align = left > in X direction< / td >
< / tr >
< tr >
< td > < tt > 01< / tt > < / td >
< td align = left > in Y direction< / td >
< / tr >
< / table >
< / td >
< / tr >
2007-03-01 04:24:19 +00:00
< tr >
2010-02-22 14:17:26 +00:00
< td nowrap valign = top > < tt > 00< / tt > ..< tt > FF< / tt > < / td >
2007-07-16 23:55:22 +00:00
< td align = left > all airports< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2008-01-31 15:18:07 +00:00
< td nowrap valign = top > < tt > 00< / tt > ..< tt > 05< / tt > < / td >
2009-07-22 09:21:48 +00:00
< td align = left > road stops
2007-03-01 04:24:19 +00:00
< table >
< tr >
2007-07-16 23:55:22 +00:00
< td > < tt > 00< / tt > < / td >
2008-01-31 15:18:07 +00:00
< td align = left > exit towards NE< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2007-07-16 23:55:22 +00:00
< td > < tt > 01< / tt > < / td >
2008-01-31 15:18:07 +00:00
< td align = left > exit towards SE< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2007-07-16 23:55:22 +00:00
< td > < tt > 02< / tt > < / td >
2008-01-31 15:18:07 +00:00
< td align = left > exit towards SW< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
2007-07-16 23:55:22 +00:00
< td > < tt > 03< / tt > < / td >
2008-01-31 15:18:07 +00:00
< td align = left > exit towards NW< / td >
< / tr >
< tr >
< td > < tt > 04< / tt > < / td >
< td align = left > drive through X< / td >
< / tr >
< tr >
< td > < tt > 05< / tt > < / td >
< td align = left > drive through Y< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< / table >
< / td >
< / tr >
< tr >
2007-07-16 23:55:22 +00:00
< td nowrap valign = top > < tt > 00< / tt > ..< tt > 05< / tt > < / td >
2007-03-01 04:24:19 +00:00
< td align = left > ship dock
< table >
< tr >
2007-07-16 23:55:22 +00:00
< td > < tt > 00< / tt > < / td >
2007-03-01 04:24:19 +00:00
< td align = left > SW coast part< / td >
< / tr >
< tr >
2007-07-16 23:55:22 +00:00
< td > < tt > 01< / tt > < / td >
2007-03-01 04:24:19 +00:00
< td align = left > NW coast part< / td >
< / tr >
< tr >
2007-07-16 23:55:22 +00:00
< td > < tt > 02< / tt > < / td >
2007-03-01 04:24:19 +00:00
< td align = left > NE coast part< / td >
< / tr >
< tr >
2007-07-16 23:55:22 +00:00
< td > < tt > 03< / tt > < / td >
2007-03-01 04:24:19 +00:00
< td align = left > SE coast part< / td >
< / tr >
< tr >
2007-07-16 23:55:22 +00:00
< td > < tt > 04< / tt > < / td >
2007-03-01 04:24:19 +00:00
< td align = left > X direction water part< / td >
< / tr >
< tr >
2007-07-16 23:55:22 +00:00
< td > < tt > 05< / tt > < / td >
2007-03-01 04:24:19 +00:00
< td align = left > Y direction water part< / td >
< / tr >
< / table >
< / td >
< / tr >
< / table >
< / li >
2009-07-22 09:21:48 +00:00
< li > m6 bits 5..3: the station type (rail, airport, truck, bus, oilrig, dock, buoy, waypoint)< / li >
< li > m6 bit 2: pbs reservation state for railway stations/waypoints< / li >
2009-03-02 22:57:47 +00:00
< li > m7 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of road (road stops)< / li >
< li > m7 bits 7..6: present road types (road stops)< / li >
2010-02-22 14:17:26 +00:00
< li > m7: animation frame (railway stations/waypoints, airports)< / li >
2007-03-01 04:24:19 +00:00
< / ul >
2007-02-15 22:03:48 +00:00
< / td >
< / tr >
2004-11-19 22:59:31 +00:00
2007-03-01 04:24:19 +00:00
< tr bgcolor = "#CCCCCC" >
< td valign = top nowrap > < strong > < a name = "Class6" > < tt > 6 < / tt > < / a > < / strong > < / td >
< td > < strong > Water< / strong > < / td >
< / tr >
2007-02-15 22:03:48 +00:00
< tr >
2007-03-01 04:24:19 +00:00
< td valign = top nowrap > < / td >
2007-02-15 22:03:48 +00:00
< td >
< ul >
2010-08-11 14:14:06 +00:00
< li > m1 bits 6..5 : Water class (sea, canal or river)
< li > m1 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > (for sea, rivers, and coasts normally < tt > 11< / tt > )< / li >
2009-09-10 14:33:07 +00:00
< li > m2: Depot index (for depots only)< / li >
2008-01-31 15:18:07 +00:00
< li > m4: Random data for canal or river tiles< / li >
2007-02-15 22:03:48 +00:00
< li > m5: tile type:
< table >
2007-03-01 04:24:19 +00:00
< tr >
< td nowrap valign = top > < tt > 00< / tt > < / td >
2008-02-02 09:28:43 +00:00
< td align = left > water, canal or river< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
< td nowrap valign = top > < tt > 01< / tt > < / td >
< td align = left > coast or riverbank< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 10< / tt > ..< tt > 1B< / tt > < / td >
< td align = left > canal locks
< table >
< tr >
< td nowrap valign = top > < tt > 10< / tt > < / td >
< td align = left > middle part, (SW-NE direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 11< / tt > < / td >
< td align = left > middle part, (NW-SE direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 12< / tt > < / td >
< td align = left > middle part, (NE-SW direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 13< / tt > < / td >
< td align = left > middle part, (SE-NW direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 14< / tt > < / td >
< td align = left > lower part, (SW-NE direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 15< / tt > < / td >
< td align = left > lower part, (NW-SE direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 16< / tt > < / td >
< td align = left > lower part, (NE-SW direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 17< / tt > < / td >
< td align = left > lower part, (SE-NW direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 18< / tt > < / td >
< td align = left > upper part, (SW-NE direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 19< / tt > < / td >
< td align = left > upper part, (NW-SE direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 1A< / tt > < / td >
< td align = left > upper part, (NE-SW direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 1B< / tt > < / td >
< td align = left > upper part, (SE-NW direction)< / td >
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 80< / tt > ..< tt > 83< / tt > < / td >
< td align = left > ship depots
< table >
< tr >
< td nowrap valign = top > < tt > 80< / tt > < / td >
< td align = left > ship depot, NE part (X direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 81< / tt > < / td >
< td align = left > ship depot, SW part (X direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 82< / tt > < / td >
< td align = left > ship depot, NW part (Y direction)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 83< / tt > < / td >
< td align = left > ship depot, SE part (Y direction)< / td >
< / tr >
< / table >
< / td >
< / tr >
2007-02-15 22:03:48 +00:00
< / table >
< / li >
< / ul >
< / td >
< / tr >
2004-11-19 22:59:31 +00:00
2007-03-01 04:24:19 +00:00
< tr bgcolor = "#CCCCCC" >
< td valign = top nowrap > < strong > < a name = "Class7" > < tt > 7 < / tt > < / a > < / strong > < / td >
< td > < strong > Void < / strong > < / td >
< / tr >
2007-02-15 22:03:48 +00:00
< tr >
2007-03-01 04:24:19 +00:00
< td valign = top nowrap > < / td >
< td > Tiles of this class form an invisible, one tile wide border at the south (bottom) edges of the map,< br >
2007-02-15 22:03:48 +00:00
so as to protect several algorithms from the consequences of a wraparound at the edges.
< / td >
< / tr >
2004-11-19 22:59:31 +00:00
2007-03-01 04:24:19 +00:00
< tr bgcolor = "#CCCCCC" >
< td valign = top nowrap > < strong > < a name = "Class8" > < tt > 8< / tt > < / a > < / strong > < / td >
2014-09-21 11:20:29 +00:00
< td > < strong > Industries < / strong > < / td >
2007-03-01 04:24:19 +00:00
< / tr >
2007-02-15 22:03:48 +00:00
< tr >
2007-03-01 04:24:19 +00:00
< td valign = top nowrap > < / td >
< td >
2007-02-15 22:03:48 +00:00
< ul >
< li > m1 bit 7: clear = under construction
< ul >
2008-07-26 16:14:10 +00:00
< li > m1 bits 6..5 : Water class (sea, canal, river or land)
2008-01-31 15:18:07 +00:00
< li > m1 bits 3..2: construction counter, for buildings under construction incremented on every periodic tile processing< / li >
2007-02-15 22:03:48 +00:00
< li > m1 bits 1..0: stage of construction (< tt > 3< / tt > = completed), incremented when the construction counter wraps around< br >
the meaning is different for some animated tiles which are never under construction (types < tt > 01< / tt > , < tt > 1E< / tt > ..< tt > 20< / tt > , < tt > 30< / tt > , < tt > 58< / tt > ; see above)< / li >
< / ul >
< / li >
2007-03-01 04:24:19 +00:00
< li > m2: index into the array of industries< / li >
2010-08-26 14:36:00 +00:00
< li > m3: random bits (NewGRF)< / li >
2008-01-31 15:18:07 +00:00
< li > m4: animation loop< / li >
2007-09-23 19:27:35 +00:00
< li > m5: type (plus m6 bit 2):< br >
2007-03-01 04:24:19 +00:00
< small > (note: this is not the same as the industry type, which is stored in the array of industries)< / small >
< table >
< tr >
< td nowrap valign = top > < tt > 00< / tt > ..< tt > 06< / tt > < / td >
< td align = left > coal mine
< table >
< tr >
< td nowrap valign = top > < tt > 00< / tt > < / td >
< td align = left > wheel tower when not animated< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 01< / tt > < / td >
< td align = left > wheel tower when animated< br >
2010-08-26 14:36:00 +00:00
animation state in m7 bits 5..0; m7 bit 6 set = sound already generated< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 07< / tt > ..< tt > 0A< / tt > < / td >
< td align = left > power station
< table >
< tr >
< td nowrap valign = top > < tt > 08< / tt > < / td >
< td align = left > chimney< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 0A< / tt > < / td >
2010-08-26 14:36:00 +00:00
< td align = left > transformer; animation progress in m7(valid range < tt > 0< / tt > ..< tt > 7< / tt > )< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 0B< / tt > ..< tt > 0F< / tt > < / td >
< td align = left > sawmill< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 10< / tt > ..< tt > 11< / tt > < / td >
< td align = left > forest
< table >
< tr >
< td nowrap valign = top > < tt > 11< / tt > < / td >
< td align = left > trees cut down< / td >
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 12< / tt > ..< tt > 17< / tt > < / td >
< td align = left > oil refinery< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 18< / tt > ..< tt > 1C< / tt > < / td >
< td align = left > oil rig< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 1D< / tt > ..< tt > 20< / tt > < / td >
< td align = left > oil wells
< table >
< tr >
< td nowrap valign = top > < tt > 1D< / tt > < / td >
< td align = left > not animated< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 1E< / tt > ..< tt > 20< / tt > < / td >
2010-08-26 14:36:00 +00:00
< td align = left > various stages of animation; progress of animation in m7< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 21< / tt > ..< tt > 26< / tt > < / td >
< td align = left > farm< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 27< / tt > ..< tt > 2A< / tt > < / td >
< td align = left > factory (temperate climate)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 2B< / tt > ..< tt > 2E< / tt > < / td >
< td align = left > printing works< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 2F< / tt > ..< tt > 33< / tt > < / td >
< td align = left > copper ore mine
< table >
< tr >
< td nowrap valign = top > < tt > 2F< / tt > < / td >
< td align = left > wheel tower when not animated< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 30< / tt > < / td >
2010-08-26 14:36:00 +00:00
< td align = left > wheel tower when animated; animation state in m7 bits 5..0; m7 bit 6 set = sound already generated< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< tr >
< td nowrap valign = top > < tt > 31< / tt > < / td >
< td align = left > chimney< / td >
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 34< / tt > ..< tt > 39< / tt > < / td >
< td align = left > steel mill< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 3A< / tt > ..< tt > 3B< / tt > < / td >
< td align = left > bank (temperate climate)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 3C< / tt > ..< tt > 3F< / tt > < / td >
< td align = left > food processing plant< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 40< / tt > ..< tt > 47< / tt > < / td >
< td align = left > paper mill< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 48< / tt > ..< tt > 58< / tt > < / td >
< td align = left > gold mine
< table >
< tr >
< td nowrap valign = top > < tt > 4F< / tt > < / td >
< td align = left > wheel tower when not animated< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 58< / tt > < / td >
2010-08-26 14:36:00 +00:00
< td align = left > wheel tower when animated; animation state in m7 bits 5..0; m7 bit 6 set = sound already generated< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< / table > < / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 59< / tt > ..< tt > 5A< / tt > < / td >
< td align = left > bank (sub-arctic or sub-tropical climate)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 5B< / tt > ..< tt > 63< / tt > < / td >
< td align = left > diamond mine< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 64< / tt > ..< tt > 73< / tt > < / td >
< td align = left > iron ore mine< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 74< / tt > < / td >
< td align = left > fruit plantation< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 75< / tt > < / td >
< td align = left > rubber plantation< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 76< / tt > ..< tt > 77< / tt > < / td >
< td align = left > water supply< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 78< / tt > < / td >
< td align = left > water tower< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 79< / tt > ..< tt > 7C< / tt > < / td >
< td align = left > factory (sub-tropical climate)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 7D< / tt > ..< tt > 80< / tt > < / td >
< td align = left > lumber mill< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 81< / tt > ..< tt > 82< / tt > < / td >
< td align = left > candyfloss forest
< table >
< tr >
< td nowrap valign = top > < tt > 82< / tt > < / td >
< td align = left > candyfloss 'trees' cut down< / td >
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 83< / tt > ..< tt > 86< / tt > < / td >
< td align = left > sweet factory< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 87< / tt > ..< tt > 88< / tt > < / td >
< td align = left > battery farm
< table >
< tr >
< td nowrap valign = top > < tt > 88< / tt > < / td >
< td align = left > batteries 'reaped'< / td >
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 89< / tt > < / td >
< td align = left > cola wells< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 8A< / tt > ..< tt > 8D< / tt > < / td >
< td align = left > toy shop< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 8E< / tt > ..< tt > 93< / tt > < / td >
< td align = left > toy factory
< table >
< tr >
< td nowrap valign = top > < tt > 8F< / tt > < / td >
2010-08-26 14:36:00 +00:00
< td align = left > Animated part; animation state in m7 (valid range < tt > 00< / tt > ..< tt > 31< / tt > )< br >
2007-03-01 04:24:19 +00:00
Tile animation is started (m4 zeroed) on the periodic processing.< br >
While the animation is in progress, m4 holds the number
of animation cycles that have already taken place.< br >
when this number reaches 8 the animation is stopped.< / td >
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 94< / tt > ..< tt > 9B< / tt > < / td >
< td align = left > plastic fountains (various stages of cyclic animation)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 9C< / tt > ..< tt > 9F< / tt > < / td >
< td align = left > fizzy drink factory< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > A0< / tt > ..< tt > A3< / tt > < / td >
< td align = left > bubble generator
< table >
< tr >
< td nowrap valign = top > < tt > A1< / tt > < / td >
< td align = left > generators< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > A2< / tt > < / td >
2010-08-26 14:36:00 +00:00
< td align = left > bubble capture facility; animation state in m7 (valid range < tt > 00< / tt > ..< tt > 27< / tt > )< / td >
2007-03-01 04:24:19 +00:00
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > A4< / tt > ..< tt > A6< / tt > < / td >
< td align = left > toffee quarry
< table >
< tr >
< td nowrap valign = top > < tt > A5< / tt > < / td >
< td align = left > animated part; animation state in m3 (valid range < tt > 00< / tt > ..< tt > 45< / tt > )< / td >
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > A7< / tt > ..< tt > AE< / tt > < / td >
< td align = left > sugar mine
< table >
< tr >
< td nowrap valign = top > < tt > AE< / tt > < / td >
< td align = left > animated part; animation state in m3 (valid range < tt > 00< / tt > ..< tt > 5F< / tt > )< / td >
< / tr >
< / table >
< / td >
< / tr >
2007-09-23 19:27:35 +00:00
< tr >
< td nowrap valign = top > < tt > AF< / tt > ..< tt > 1FF< / tt > < / td >
< td align = left > NewGRF industries industry< / td >
< / tr >
2007-03-01 04:24:19 +00:00
< / table >
< / li >
2008-01-31 15:18:07 +00:00
< li > m6 bits 5..3: random triggers (NewGRF)< / li >
< li > m6 bit 2: bit 8 of type (see m5)< / li >
2010-08-26 14:36:00 +00:00
< li > m7: animation frame< / li >
2007-02-15 22:03:48 +00:00
< / ul >
< / td >
< / tr >
2004-11-19 22:59:31 +00:00
2007-03-01 04:24:19 +00:00
< tr bgcolor = "#CCCCCC" >
< td valign = top nowrap > < strong > < a name = "Class9" > < tt > 9< / tt > < / a > < / strong > < / td >
< td > < strong > Tunnel / bridge< / strong > < / td >
< / tr >
2007-02-15 22:03:48 +00:00
< tr >
2007-03-01 20:10:49 +00:00
< td valign = top nowrap > < / td >
< td >
< ul >
2010-08-11 14:14:06 +00:00
< li > m1 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > < / li >
2009-03-02 22:57:47 +00:00
< li > m3 bits 7..4: < a href = "#OwnershipInfo" > owner< / a > of tram< / li >
2008-01-31 15:18:07 +00:00
< li > m3 bits 3..0: < a href = "#TrackType" > track type< / a > for railway< / li >
2008-08-02 22:47:20 +00:00
< li > m5 bit 4: pbs reservation state for railway< / li >
2008-01-31 15:18:07 +00:00
< li > m5 bits 7 clear: tunnel entrance/exit< / li >
2007-03-01 20:10:49 +00:00
< li > m5 bit 7 set: bridge ramp
< ul >
2009-03-02 22:57:47 +00:00
< li > m6 bits 5..2: < a name = "BridgeType" > bridge type< / a > :
2007-03-01 20:10:49 +00:00
< table >
< tr >
< th align = left > Type < / th >
< th align = left > Max. speed (mph) < / th >
< th align = left > Description< / th >
< / tr >
< tr >
< td nowrap valign = top > < tt > 0< / tt > < / td >
< td align = center > 20< / td >
< td align = left > wooden< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 1< / tt > < / td >
< td align = center > 30< / td >
< td align = left > concrete< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 2< / tt > < / td >
< td align = center > 40< / td >
< td align = left > girder, steel< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 3< / tt > < / td >
< td align = center > 50< / td >
< td align = left > suspension, concrete< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 4< / tt > < / td >
< td align = center > 60< / td >
< td align = left > suspension, steel< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 5< / tt > < / td >
< td align = center > 70< / td >
< td align = left > suspension, steel< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 6< / tt > < / td >
< td align = center > 100< / td >
< td align = left > cantilever, steel< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 7< / tt > < / td >
< td align = center > 130< / td >
< td align = left > cantilever, steel< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 8< / tt > < / td >
< td align = center > 150< / td >
< td align = left > cantilever, steel< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 9< / tt > < / td >
< td align = center > 160< / td >
< td align = left > girder, steel< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > A< / tt > < / td >
< td align = center > 200< / td >
< td align = left > tubular, steel< / td >
< / tr >
2008-01-31 15:18:07 +00:00
< tr >
< td nowrap valign = top > < tt > B< / tt > < / td >
< td align = center > 320< / td >
< td align = left > tubular, steel< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > C< / tt > < / td >
< td align = center > 380< / td >
< td align = left > tubular, silicon< / td >
< / tr >
2007-03-01 20:10:49 +00:00
< / table >
< / li >
< / ul >
< / li >
2008-01-31 15:18:07 +00:00
< li > m5 bits 3..2: transport type
< table >
< tr >
< td > < tt > 0< / tt > < / td >
< td > railway< / td >
< / tr >
< tr >
< td > < tt > 1< / tt > < / td >
< td > road< / td >
< / tr >
2008-09-15 18:50:48 +00:00
< tr >
< td > < tt > 2< / tt > < / td >
< td > water< / td >
< / tr >
2010-08-27 10:42:48 +00:00
< / table >
2008-01-31 15:18:07 +00:00
< / li >
< li > m5 bits 1..0: direction onto the bridge / out of the tunnel
< table >
< tr >
< td > < tt > 0< / tt > < / td >
< td > NE< / td >
< / tr >
< tr >
< td > < tt > 1< / tt > < / td >
< td > SE< / td >
< / tr >
< tr >
< td > < tt > 2< / tt > < / td >
< td > SW< / td >
< / tr >
< tr >
< td > < tt > 3< / tt > < / td >
< td > NW< / td >
< / tr >
< / table >
< / li >
2009-03-02 22:57:47 +00:00
< li > m7 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of road< / li >
< li > m7 bit 5 set = on snow or desert< / li >
< li > m7 bits 7..6: present road types for road< / li >
2007-02-15 22:03:48 +00:00
< / ul >
< / td >
< / tr >
2004-11-19 22:59:31 +00:00
2007-03-01 04:24:19 +00:00
< tr bgcolor = "#CCCCCC" >
< td valign = top nowrap > < strong > < a name = "ClassA" > < tt > A< / tt > < / a > < / strong > < / td >
2010-08-08 10:59:30 +00:00
< td > < strong > < tt > Objects< / tt > < / strong > < / td >
2007-03-01 04:24:19 +00:00
< / tr >
2007-02-15 22:03:48 +00:00
< tr >
2007-03-01 04:24:19 +00:00
< td valign = top nowrap > < / td >
2007-02-15 22:03:48 +00:00
< td >
< ul >
2013-10-12 16:35:50 +00:00
< li > m1 bits 6..5 : Water class (sea, canal, river or land)< / li >
2010-08-11 14:14:06 +00:00
< li > m1 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of the object (for lighthouses and transmitters normally < tt > 10< / tt > )< / li >
2013-10-12 16:35:50 +00:00
< li > m2: index into the array of objects, bits 0 to 15 (upper bits in m5)< / li >
< li > m3: random bits< / li >
< li > m5: index into the array of objects, bits 16 to 23 (lower bits in m2)< / li >
< li > m7: animation counter< / li >
2007-02-15 22:03:48 +00:00
< / ul >
< / td >
< / tr >
2007-03-01 04:24:19 +00:00
< tr >
< td colspan = 2 > Classes < tt > B< / tt > through < tt > F< / tt > are reserved. The presence
of a tile in one of the reserved classes will crash OTTD.< / td >
< / tr >
2007-02-15 22:03:48 +00:00
< / table >
2004-11-19 22:59:31 +00:00
2007-02-15 22:03:48 +00:00
< hr >
Original Copyright © 2003 by Marcin Grzegorczyk for TTDLX.< br >
Transport Tycoon and Transport Tycoon Deluxe are Copyright © by Chris Sawyer.< br >
All the other trademarks are the property of their respective owners.< br >
2004-11-19 22:59:31 +00:00
< / body >
2007-02-15 22:03:48 +00:00
2004-11-19 22:59:31 +00:00
< / html >