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" >
< meta http-equiv = "Content-Type" content = "text/html; charset=iso-8859-1" >
< 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 >
2007-03-01 20:10:49 +00:00
< p > Seven attributes (counting " < span style = "font-weight: bold;" > type_height< / span > " ) hold the informations about a tile.< BR >
2007-02-15 22:03:48 +00:00
These attributes are referred to as
"< span style = "font-weight: bold;" > type_height< / span > ",
2007-01-23 02:31:49 +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 > ",
2007-02-15 22:03:48 +00:00
"< span style = "font-weight: bold;" > m5< / span > " and "< span style = "font-weight: bold;" > m6< / 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
2007-03-01 20:10:49 +00:00
of the < span style = "font-weight: bold;" > type_height< / span > attribute. The lower 4 bits are used to encode the height and
slope data.
< / p >
Special Attribute : < span style = "font-weight: bold;" > m6< / span > . There are 4 bits of it that are used accross multiple tile classes< br >
< ul >
< li >
< a name = "bridge_direction" >
Bits 7..6 :
< table border = "1" >
< tr bgcolor = "#CCCCCC" > < td colspan = "2" > Presence and direction of bridge above,< br > for tiles that support this.< / td > < / tr >
< tr > < td > < 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 >
< li >
< a name = "tropic_zone" >
Bits 1..0 :
< table border = "1" >
< tr bgcolor = "#CCCCCC" > < td colspan = "2" > Only meaningfull in tropic climate.< br > It contains the definition of the two available zones< / td > < / tr >
< tr > < td > < tt > 00< / tt > < / td > < td > invalid zone< / 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, those 2 bits are free of use.
< / li >
< / ul >
< p >
2007-02-15 22:03:48 +00:00
For a graphical representation of the tile-layout have a look at
< a href = "landscape_grid.html" > Landscape grid< / a > page.
< / p >
2007-01-23 02:31:49 +00:00
2007-03-01 04:24:19 +00:00
The < a name = "OwnershipInfo" > owner of a tile< / a > , as frequently associated with attribute m1,
2007-02-15 22:03:48 +00:00
can be either players (human or AI) or "Game entities".
They are identified using:
2007-03-01 20:10:49 +00:00
< table border = "1" >
2007-02-15 22:03:48 +00:00
< tr > < td > < tt > 00< / tt > < / td > < td align = left > current player< / td > < / tr >
< tr > < td > < tt > 01..08< / tt > < / td > < td align = left > AI or network players< / 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 >
2007-03-01 04:24:19 +00:00
< / table >
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 >
2007-03-01 04:24:19 +00:00
< li > m1: < a href = "#OwnershipInfo" > owner< / a > of the tile (normally < tt > 10< / tt > )< / li >
< 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 >
< li > m5 bits 4..0: tile type:
< table >
< tr >
< td nowrap valign = top > < tt > 00< / tt > < / td >
< td align = left > bare land< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 01< / tt > < / td >
< td align = left > 1/3 grass< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 02< / tt > < / td >
< td align = left > 2/3 grass< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 03< / tt > < / td >
< td align = left > full grass< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 07< / tt > < / td >
< td align = left > rough land< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 0B< / tt > < / td >
< td align = left > rocks< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 0F< / tt > < / td >
< td align = left > fields; type of fields in m3 bits 3..0 (legal values: 0 through 9)< br >
m2: Index into the array of industries (farms), INVALID_INDUSTRY (0xFFFF) if farm has been removed< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 10< / tt > < / td >
< td align = left > 1/4 snow< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 11< / tt > < / td >
< td align = left > 2/4 snow< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 12< / tt > < / td >
< td align = left > 3/4 snow< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 13< / tt > < / td >
< td align = left > full snow< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 15< / tt > < / td >
< td align = left > partial desert< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 17< / tt > < / td >
< td align = left > full desert< / td >
< / tr >
< / table >
2007-02-15 22:03:48 +00:00
< / li >
2007-03-01 20:10:49 +00:00
< li > m6 bits 7..6 : Possibility of a bridge above, in the < a href = "#bridge_direction" > direction specified< / a > < / li >
< li > m6 bits 1..0 : < a href = "#tropic_zone" > Tropic zone definition< / a > < / 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 >
< li > m5 bit 7 clear: railway track
< ul >
2007-03-01 04:24:19 +00:00
< li > m1: < a href = "#OwnershipInfo" > owner< / a > of the track< / li >
< li > m3 bits 3..0 = < a name = "TrackType" > track type< / a > :
2007-02-15 22:03:48 +00:00
< table >
2007-03-01 04:24:19 +00:00
< tr >
< td > < tt > 0< / tt > < / td >
< td > conventional railway< / td >
< / tr >
< tr >
< td > < tt > 1< / tt > < / td >
< td > electrified railway< / td >
< / tr >
< tr >
< td > < tt > 2< / tt > < / td >
< td > monorail< / td >
< / tr >
< tr >
< td > < tt > 3< / tt > < / td >
< td > maglev< / td >
< / tr >
2007-02-15 22:03:48 +00:00
< / table >
< / li >
2007-03-01 04:24:19 +00:00
< li > m4 bits 3..0:
2007-02-15 22:03:48 +00:00
< table >
2007-03-01 04:24:19 +00:00
< tr >
< td nowrap valign = top > < tt > 0< / tt > < / td >
< td align = left > on bare land< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 1< / tt > < / td >
< td align = left > on grass, no fences< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 2< / tt > < / td >
< td align = left > fence on the NW side< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 3< / tt > < / td >
< td align = left > fence on the SE side< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 4< / tt > < / td >
< td align = left > fences on the NW and SE sides< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 5< / tt > < / td >
< td align = left > fence on the NE side< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 6< / tt > < / td >
< td align = left > fence on the SW side< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 7< / tt > < / td >
< td align = left > fences on the NE and SW sides< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 8< / tt > < / td >
< td align = left > fence on the E side (track in the W corner)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 9< / tt > < / td >
< td align = left > fence on the W side (track in the E corner)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > A< / tt > < / td >
< td align = left > fence on the S side (track in the N corner)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > B< / tt > < / td >
< td align = left > fence on the N side (track in the S corner)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > C< / tt > < / td >
< td align = left > on snow or desert< / td >
< / tr >
2007-02-15 22:03:48 +00:00
< / table >
< / li >
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 >
< / ul >
< / li >
2007-02-27 23:36:28 +00:00
< li > m5 bit 7 set: railway depot / checkpoints
2007-02-15 22:03:48 +00:00
< ul >
2007-03-01 04:24:19 +00:00
< li > m1: < a href = "#OwnershipInfo" > owner< / a > of the depot / checkpoint< / li >
< li > m2: For waypoints, index into the array of waypoints.< / li >
< li > m3 bits 3..0 = < a href = "#TrackType" > track type< / a > < / li >
< li > m4 bits 3..0 = ground type, as per m4 bits 3..0 for railway tiles.< / li >
2007-02-15 22:03:48 +00:00
< li > m5 value C0..C3: railway depot
< table >
2007-03-01 04:24:19 +00:00
< tr >
< td colspan = 2 > m5 bits 1..0< / td >
< / tr >
< tr >
< td colspan = 2 > direction: exit towards:< / td >
< / tr >
< tr >
< td > < tt > 00< / tt > < / td >
< td > NE< / td >
< / tr >
< tr >
< td > < tt > 01< / tt > < / td >
< td > SE< / td >
< / tr >
< tr >
< td > < tt > 02< / tt > < / td >
< td > SW< / td >
< / tr >
< tr >
< td > < tt > 03< / tt > < / td >
< td > NW< / td >
< / tr >
2007-02-15 22:03:48 +00:00
< / table >
< / li >
2007-02-27 23:36:28 +00:00
< li > m5 value 80..81: checkpoint
2007-02-15 22:03:48 +00:00
< table >
2007-03-01 04:24:19 +00:00
< tr >
< td colspan = 2 > bit 0< / td >
< / tr >
< tr >
< td > clear< / td >
< td > in X direction< / td >
< / tr >
< tr >
< td > set< / td >
< td > in Y direction< / td >
< / tr >
2007-02-15 22:03:48 +00:00
< / table >
< / li >
2007-03-01 04:24:19 +00:00
< / ul >
< / li >
< li > m5 bit 6 set = with signals:
< ul >
2007-05-31 21:21:04 +00:00
< li > m4 bits 7..4: bit clear = signal shows red; same bits as in m3< / li >
< li > m2 bit 2 < i > (6)< / i > : set = semaphore signals, clear = light signals < i > (lower and right tracks)< / i > < / li >
< li > m2 bits 1..0 < i > (5..4)< / i > : type of signal < i > (lower and right tracks)< / i >
2007-03-01 04:24:19 +00:00
< table >
< tr >
< td nowrap = "nowrap" valign = "top" > < tt > 00< / tt > : < / td >
< td align = "left" > normal signals< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > < tt > 01< / tt > : < / td >
< td align = "left" > pre-signals< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > < tt > 10< / tt > : < / td >
< td align = "left" > exit-signals< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > < tt > 11< / tt > : < / td >
< td align = "left" > combo-signals< / td >
< / tr >
< / table >
< / li >
< li > m3 bits 7..4: bit set = signal present:
< ul >
< li > For track in the X direction:
< table >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 6: < / td >
< td align = "left" > signal in the SW direction< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 7: < / td >
< td align = "left" > signal in the NE direction< / td >
< / tr >
< / table >
< / li >
< li > For track in the Y direction:
< table >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 6: < / td >
< td align = "left" > signal in the NW direction< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 7: < / td >
< td align = "left" > signal in the SE direction< / td >
< / tr >
< / table >
< / li >
< li > For tracks in the W-E direction:
< table >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 4: < / td >
< td align = "left" > signal in the W direction on the track in the S corner< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 5: < / td >
< td align = "left" > signal in the E direction on the track in the S corner< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 6: < / td >
< td align = "left" > signal in the W direction on the track in the N corner< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 7: < / td >
< td align = "left" > signal in the E direction on the track in the N corner< / td >
< / tr >
< / table >
< / li >
< li > For tracks in the N-S direction:
< table >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 4: < / td >
< td align = "left" > signal in the S direction on the track in the E corner< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 5: < / td >
< td align = "left" > signal in the N direction on the track in the E corner< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 6: < / td >
< td align = "left" > signal in the S direction on the track in the W corner< / td >
< / tr >
< tr >
< td nowrap = "nowrap" valign = "top" > bit 7: < / td >
< td align = "left" > signal in the N direction on the track in the W corner< / td >
< / tr >
< / table >
< / li >
< / ul >
< / li >
2007-02-15 22:03:48 +00:00
< / ul >
< / li >
2007-03-01 20:10:49 +00:00
< li > m6 bits 7..6 : Possibility of a bridge above, in the < a href = "#bridge_direction" > direction specified< / a > < / li >
< li > m6 bits 1..0 : < a href = "#tropic_zone" > Tropic zone definition< / a > < / 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 = "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 >
2007-05-24 21:59:12 +00:00
< li > m5 bits 7..6 clear: road
2007-03-01 04:24:19 +00:00
< ul >
2007-05-24 21:59:12 +00:00
< li > m1: < a href = "#OwnershipInfo" > owner< / a > of the road type #1< / li >
2007-03-01 04:24:19 +00:00
< li > m2: Index into the array of towns, 0 for non-town roads< / li >
< li > m3 bit 7 set = on snow or desert< / li >
< li > m3 bits 6..4:
< 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 >
< li > m3 bits 3..0: counter for the roadworks< / li >
2007-05-24 21:59:12 +00:00
< li > m4 bits 3..0: road layout road type #1: bit set = road piece present:
2007-03-01 04:24:19 +00:00
< table >
< tr >
< td nowrap valign = top > bit 0: < / td >
< td align = left > NW piece< / td >
< / tr >
< tr >
< td nowrap valign = top > bit 1: < / td >
< td align = left > SW piece< / td >
< / tr >
< tr >
< td nowrap valign = top > bit 2: < / td >
< td align = left > SE piece< / td >
< / tr >
< tr >
< td nowrap valign = top > bit 3: < / td >
< td align = left > NE piece< / td >
< / tr >
< / table >
< / li >
2007-05-24 21:59:12 +00:00
< li > m4 bits 7..4: road layout road type #2
2007-05-31 15:15:00 +00:00
< li > m5 bits 5..4: bits to disallow vehicles to go a specific direction
< li > m5 bits 3..0: owner of road type #2
2007-05-24 21:59:12 +00:00
< li > m6 bits 5..2: road layout road type #3
< li > m7 bits 7..5: road types
< li > m7 bits 4..0: owner of road type #3
< / li >
2007-03-01 04:24:19 +00:00
< / ul >
< / li >
2007-05-24 21:59:12 +00:00
< li > m5 bit 7 set, bit 6 clear: road depot
2007-02-15 22:03:48 +00:00
< ul >
< li > m1: < a href = "#OwnershipInfo" > owner< / a > of the depot< / li >
2007-02-27 23:36:28 +00:00
< li > m3 bit 7 set = on snow or desert (not displayed, but set internally)< / li >
2007-03-01 04:24:19 +00:00
< li > m5 bits 3..0 - direction: exit towards: < tt > 0< / tt > = NE, < tt > 1< / tt > = SE, < tt > 2< / tt > = SW, < tt > 3< / tt > = NW< / li >
2007-05-24 21:59:12 +00:00
< li > m7 bits 7..5: road types
2007-03-01 04:24:19 +00:00
< / ul >
< / li >
2007-05-24 21:59:12 +00:00
< li > m5 bit 6 set, bit 7 clear: level crossing
2007-03-01 04:24:19 +00:00
< ul >
< li > m1: < a href = "#OwnershipInfo" > owner< / a > of the railway track< / li >
< li > m2: Index into the array of towns, 0 for non-town roads< / li >
< li > m3 bit 7 set = on snow or desert< / li >
< li > m3 bits 6..4: < tt > 0< / tt > - on bare land, < tt > 1< / tt > - on grass, < tt > 2< / tt > or higher - paved< / li >
< li > m3 bits 3..0: < a href = "#TrackType" > track type< / a > < / li >
2007-05-24 21:59:12 +00:00
< li > m4 bit 6: clear - road in the X direction, set - road in the Y direction (railway track always perpendicular)< / li >
< li > m4 bit 5: set if crossing lights are on< / li >
< li > m4 bits 4..0: < a href = "#OwnershipInfo" > owner< / a > of the road type #1< / li >
2007-05-31 15:15:00 +00:00
< li > m5 bits 3..0: owner of road type #2
2007-05-24 21:59:12 +00:00
< li > m7 bits 7..5: road types
< li > m7 bits 4..0: owner of road type #3
2007-02-15 22:03:48 +00:00
< / ul >
< / li >
2007-03-01 20:10:49 +00:00
< li > m6 bits 7..6 : Possibility of a bridge above, in the < a href = "#bridge_direction" > direction specified< / a > < / li >
< li > m6 bits 1..0 : < a href = "#tropic_zone" > Tropic zone definition< / a > < / 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 = "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 >
< li > m2 : index into the array of industries< / li >
< li > m3 bit 7 :
< ul >
< li > set : House is complete
< ul >
< li > m5 : age of House. Maximum been 255, which means 255 years and more< / li >
< / 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 >
< li > m3 bit 6 : 9th bit of house type (m4), allowing 512 different types.< / li >
< li > m3 bits 5..0 : triggers activated < a href = "#newhouses" > (newhouses)< / a > < / li >
< 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 >
< li > bits 7..3 : Current animation frame< / li >
< li > bit 2 : free< / li >
< / ul >
< / li >
< li > Standard behaviour
< ul >
< li > bits 7..2 : lift position (for houses type 04 and 05)< / li >
< / ul >
< / li >
< li > bits 1..0 : tropic zone specifier< / 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 >
< li > Periodic processing time remaining< / li >
< / 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 >
2007-03-19 11:27:30 +00:00
< small > < a name = "newhouses" > Newhouses is the name englobing a newGRF feature developped by TTDPatch devs (mainly Csaboka).< br >
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 >
2007-03-01 20:10:49 +00:00
< li > m1: < a href = "#OwnershipInfo" > owner< / a > (normally < tt > 10< / tt > )< / li >
< li > m2 bits 5..4:
< table >
< tr >
< td nowrap valign = top > < tt > 0< / tt > < / td >
< td align = left > on grass< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 1< / tt > < / td >
< td align = left > on rough land< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 2< / tt > < / td >
< td align = left > on snow or desert; m2 bits 7..6 - amount of snow or desert (for desert always set to 3 in TTD)< / td >
< / tr >
< / table >
< / li >
< 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 > 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: type of hedge on the SE border of the tile (1 through 6, or 0=none)< / 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 >
< li > m6 bits 1..0 : < a href = "#tropic_zone" > Tropic zone definition< / a > < / 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 >
< li > m1: < a href = "#OwnershipInfo" > owner< / a > of the station< / li >
< li > m2: index into the array of stations< / li >
< li > m3 bits 7..4: persistent random data for newstations< / li >
< li > m3 bits 3..0: < a href = "#TrackType" > track type< / a > for railway stations, must be 0 for all the other stations< / li >
< li > m4: custom station id; 0 means standard graphics< / li >
< li > m5: tile type:
< 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 >
< tr >
< td nowrap valign = top > < tt > 08< / tt > ..< tt > 33< / tt > < / td >
< td align = left > large airport
< table >
< tr >
< td nowrap valign = top > < tt > 0B< / tt > < / td >
< td align = left > pad 1< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 16< / tt > ..< tt > 19< / tt > < / td >
< td align = left > runway middle< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 1A< / tt > < / td >
< td align = left > runway ending< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 1C< / tt > < / td >
< td align = left > control tower< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 20< / tt > < / td >
< td align = left > hangar< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 21< / tt > < / td >
< td align = left > pad 3< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 22< / tt > < / td >
< td align = left > pad 2< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 27< / tt > ..< tt > 32< / tt > < / td >
< td align = left > radar (animated)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 33< / tt > < / td >
< td align = left > transmitter< / td >
< / tr >
< tr >
< td colspan = 2 > The initial layout of a large airport is (rows in Y direction, columns in X direction):
2004-11-19 22:59:31 +00:00
< pre >
1F 1B 1E 33 26 1A
09 24 0B 0C 0D 16
21 1D 23 0E 0F 17
09 22 0D 11 10 18
09 08 14 13 12 19
20 0A 15 1C 27 1A
< / pre >
2007-03-01 04:24:19 +00:00
< / td >
< / tr >
< / table >
< / td >
< / tr >
2007-02-15 22:03:48 +00:00
2007-03-01 04:24:19 +00:00
< tr >
< td nowrap valign = top > < tt > 34< / tt > ..< tt > 41< / tt > < / td >
< td align = left > small airport
< table >
< tr >
< td nowrap valign = top > < tt > 3A< / tt > ..< tt > 3D< / tt > < / td >
< td align = left > field with the wind meter (animated)< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 3E< / tt > < / td >
< td align = left > runway south ending< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 3F< / tt > < / td >
< td align = left > runway middle< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 40< / tt > < / td >
< td align = left > runway north ending< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 41< / tt > < / td >
< td align = left > hangar< / td >
< / tr >
< tr >
< td colspan = 2 > The initial layout of a small airport is (rows in Y direction, columns in X direction):
2004-11-19 22:59:31 +00:00
< pre >
36 3A 40
35 39 3F
34 38 3F
41 37 3E
< / pre >
2007-03-01 04:24:19 +00:00
< / td >
< / tr >
< / table >
< / td >
< / tr >
2004-11-19 22:59:31 +00:00
2007-03-01 04:24:19 +00:00
< tr >
< td nowrap valign = top > < tt > 42< / tt > < / td >
< td align = left > heliport< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 43< / tt > ..< tt > 46< / tt > < / td >
< td align = left > lorry loading area : exit towards:
< table >
< tr >
< td > < tt > 43< / tt > < / td >
< td align = left > NE< / td >
< / tr >
< tr >
< td > < tt > 44< / tt > < / td >
< td align = left > SE< / td >
< / tr >
< tr >
< td > < tt > 45< / tt > < / td >
< td align = left > SW< / td >
< / tr >
< tr >
< td > < tt > 46< / tt > < / td >
< td align = left > NW< / td >
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 47< / tt > ..< tt > 4A< / tt > < / td >
< td align = left > bus station : exit towards:
< table >
< tr >
< td > < tt > 47< / tt > < / td >
< td align = left > NE< / td >
< / tr >
< tr >
< td > < tt > 48< / tt > < / td >
< td align = left > SE< / td >
< / tr >
< tr >
< td > < tt > 49< / tt > < / td >
< td align = left > SW< / td >
< / tr >
< tr >
< td > < tt > 4A< / tt > < / td >
< td align = left > NW< / td >
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 4B< / tt > < / td >
< td align = left > oilfield< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 4C< / tt > ..< tt > 51< / tt > < / td >
< td align = left > ship dock
< table >
< tr >
< td > < tt > 4C< / tt > < / td >
< td align = left > SW coast part< / td >
< / tr >
< tr >
< td > < tt > 4D< / tt > < / td >
< td align = left > NW coast part< / td >
< / tr >
< tr >
< td > < tt > 4E< / tt > < / td >
< td align = left > NE coast part< / td >
< / tr >
< tr >
< td > < tt > 4F< / tt > < / td >
< td align = left > SE coast part< / td >
< / tr >
< tr >
< td > < tt > 50< / tt > < / td >
< td align = left > X direction water part< / td >
< / tr >
< tr >
< td > < tt > 51< / tt > < / td >
< td align = left > Y direction water part< / td >
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 52< / tt > < / td >
< td align = left > buoy< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 53< / tt > ..< tt > A7< / tt > < / td >
< td align = left > used by RichK's larger airports< / td >
< / tr >
< / table >
< / li >
< li > m6 bit 3: 1 when a drive through road stop is built over a town owned road, otherwise 0< / li >
2007-03-01 20:10:49 +00:00
< li > m6 bits 1..0 : < a href = "#tropic_zone" > Tropic zone definition< / a > < / 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 >
2007-03-01 04:24:19 +00:00
< li > m1: < a href = "#OwnershipInfo" > owner< / a > (for water and coasts normally < tt > 11< / tt > )< / 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 >
< td align = left > water< / td >
< / 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 >
2007-03-01 20:10:49 +00:00
< li > m6 bits 7..6 : Possibility of a bridge above, in the < a href = "#bridge_direction" > direction specified< / a > < / li >
< li > m6 bits 1..0 : < a href = "#tropic_zone" > Tropic zone definition< / a > < / 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 = "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 >
< td > < strong > Industry tile < / 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 >
< li > m1 bit 7: clear = under construction
< ul >
< li > m1 bits 4..2: construction counter, for buildings under construction incremented on every periodic tile processing< / li >
< 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 >
< li > m5: type:< br >
< 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 >
animation state in m3 bits 5..0; m3 bit 6 set = sound already generated< / td >
< / 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 >
< td align = left > transformer; animation progress in m3(valid range < tt > 0< / tt > ..< tt > 7< / tt > )< / td >
< / 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 >
< td align = left > various stages of animation; progress of animation in m3< / td >
< / 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 >
< td align = left > wheel tower when animated; animation state in m3 bits 5..0; m3 bit 6 set = sound already generated< / td >
< / 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 >
< td align = left > wheel tower when animated; animation state in m3 bits 5..0; m3 bit 6 set = sound already generated< / td >
< / 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 >
< td align = left > Animated part; animation state in m3 (valid range < tt > 00< / tt > ..< tt > 31< / tt > )< br >
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 >
< td align = left > bubble capture facility; animation state in m3 (valid range < tt > 00< / tt > ..< tt > 27< / tt > )< / td >
< / 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 >
< / table >
< / li >
2007-03-01 20:10:49 +00:00
< li > m6 bits 1..0 : < a href = "#tropic_zone" > Tropic zone definition< / a > < / 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 >
< li > m5 bits 7..4 clear: tunnel entrance/exit
< ul >
< li > m1: < a href = "#OwnershipInfo" > owner< / a > of the tunnel< / li >
< li > m3 bits 3..0 = < a href = "#TrackType" > track type< / a > for railway tunnel, must be 0 for road tunnel< / li >
< li > m4 bit 7 set = on snow or desert< / li >
< li > m5 bits 3..2: < tt > 0< / tt > - railway tunnel, < tt > 1< / tt > - road tunnel< / li >
< li > m5 bits 1..0 - direction: entrance towards: < tt > 0< / tt > = NE, < tt > 1< / tt > = SE, < tt > 2< / tt > = SW, < tt > 3< / tt > = NW< / li >
< / ul >
< / li >
< li > m5 bit 7 set: bridge ramp
< ul >
< li > m1: < a href = "#OwnershipInfo" > owner< / a > of the bridge< / li >
< li > m2 bits 7..4: < a name = "BridgeType" > bridge type< / a > :
< 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 >
< / table >
< / li >
< li > m3 bits 3..0 = < a href = "#TrackType" > type of track< / a > on the bridge, must be 0 for road bridge< / li >
< li > m4 bit 7 set = on snow or desert< / li >
< li > m5 bits 3..2: < tt > 0< / tt > - railway bridge, < tt > 1< / tt > - road bridge< / li >
< li > m5 bits 1..0: DiagDirection onto the bridge< / li >
< / ul >
< / li >
< li > m6 bits 7..6 : Possibility of a bridge above, in the < a href = "#bridge_direction" > direction specified< / a > < / li >
< li > m6 bits 1..0 : < a href = "#tropic_zone" > Tropic zone definition< / a > < / 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 >
< td > < strong > < tt > Unmovables< / tt > < / 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 >
2007-03-11 01:22:21 +00:00
< li > m1 : < a href = "#OwnershipInfo" > owner< / a > of the object (for lighthouses and transmitters normally < tt > 10< / tt > )< / li >
< li > m2 :
< ul >
< li > for company statue (m5 = 02), TownID on which the statue is built in< / li >
< / ul >
< / li >
< li > m5 : tile type:
2007-02-15 22:03:48 +00:00
< table >
2007-03-01 04:24:19 +00:00
< tr >
< td nowrap valign = top > < tt > 00< / tt > < / td >
< td align = left > transmitter< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 01< / tt > < / td >
< td align = left > lighthouse< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 02< / tt > < / td >
< td align = left > company statue< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 03< / tt > < / td >
< td align = left > company-owned land< / td >
< / tr >
< tr >
< td nowrap valign = top > < tt > 80< / tt > ..< tt > 93< / tt > < / td >
< td align = left > company headquarters (5 sets of 4 tiles each, updated quarterly depending on the company performance)< / td >
< / tr >
2007-02-15 22:03:48 +00:00
< / table >
< / li >
2007-03-01 20:10:49 +00:00
< li > m6 bits 7..6 : Possibility of a bridge above, in the < a href = "#bridge_direction" > direction specified< / a > < / li >
< li > m6 bits 1..0 : < a href = "#tropic_zone" > Tropic zone definition< / a > < / 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 >