2004-11-19 22:59:31 +00:00
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
< html >
< head >
< meta name = "Author" content = "Marcin Grzegorczyk" >
2005-03-11 18:31:56 +00:00
< meta name = "Description" content = "Structure of OpenTTD (OTTD) landscape arrays" >
2004-11-19 22:59:31 +00:00
< meta http-equiv = "Content-Type" content = "text/html; charset=iso-8859-1" >
2005-03-11 18:31:56 +00:00
< title > OpenTTD Landscape Internals< / title >
2004-11-19 22:59:31 +00:00
< / head >
< body >
< h3 > < a name = "Landscape" > Landscape< / a > < / h3 >
< p >
2005-03-11 18:31:56 +00:00
Five arrays are used to encode the information of the contents of each tile. These arrays are referred to as "< span style = "font-weight: bold;" > map_owner< / span > ", "< span style = "font-weight: bold;" > map2< / span > ", "< span style = "font-weight: bold;" > map3_lo|_hi< / span > ", "< span style = "font-weight: bold;" > map_type_and_height< / span > " and "< span style = "font-weight: bold;" > map5< / span > ". The known encodings are listed in the table below. The most important value is the class of a tile, stored in the upper 4 bits of the type_and_height array. The lower 4 bits are used to encode the height and slope data. For a graphical represenation of the tile-layout have a look at < a href = "landscape_grid.html" > Landscape grid< / a > page.
2004-11-19 22:59:31 +00:00
< / p >
< p >
2005-03-11 18:31:56 +00:00
OTTD's class-specific periodic tile processing routine is called once every +256 ticks for each tile.
2004-11-19 22:59:31 +00:00
< / p >
< table border = 1 cellpadding = 3 >
< tr > < th align = left > Class< / th > < th align = left > Meaning & details of encoding< / th > < / tr >
< tr > < td valign = top nowrap > < a name = "Class0" > < tt > 0 < / tt > < / a > < / td > < td >
< ul >
< li > map5 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 map3_lo bits 3..0 (legal values: 0 through 9)< / 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 >
< / li >
< li > map5 bits 7..6: update counter, incremented on every periodic processing for tile types other than < tt > 03< / tt > , < tt > 07< / tt > , < tt > 0B< / tt > and < tt > 10< / tt > and above, on wraparound the tile is updated (for fields, the type of fields in map3_lo is increased, for other types the tile type in map5 is increased)
< br > (for snow and desert, these bits are not used, tile is updated on every periodic processing)
< / li >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > of the tile (normally < tt > 10< / tt > )
< / li >
< li > map3_hi bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none); bits 4..2: same for the SE border
< / li >
< / ul >
< / td > < / tr >
< tr > < td valign = top nowrap > < a name = "Class1" > < tt > 1 < / tt > < / a > < / td > < td >
map5 bit 7 clear: railway track
< ul >
< li > map5 bits 0..5: track layout: bit set = track present:
< table >
< 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 >
< / table > < / li >
< li > map5 bit 6 set = with signals:
< ul >
< li > map3_lo bits 7..4: bit set = signal present:
< ul >
< li > For track in the X direction:
< table >
< tr > < td nowrap valign = top > bit 6: < / td > < td align = left > signal in the SW direction< / td > < / tr >
< tr > < td 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 valign = top > bit 6: < / td > < td align = left > signal in the NW direction< / td > < / tr >
< tr > < td 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 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 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 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 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 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 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 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 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 >
< li > map2 bits 7..4: bit clear = signal shows red; same bits as in map3_lo< / li >
< li > OpenTTD bits in map3_hi:
< table >
< tr > < td nowrap valign = top > bits 1..0: < / td > < td align = left > type of signal:< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 00< / tt > : < / td > < td align = left > normal signals< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 01< / tt > : < / td > < td align = left > pre-signals< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 10< / tt > : < / td > < td align = left > exit-signals< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 11< / tt > : < / td > < td align = left > combo-signals< / td > < / tr >
2005-06-30 13:24:17 +00:00
< tr > < td nowrap valign = top > bit 3: < / td > < td align = left > set = semaphore signals, clear = light signals< / td > < / tr >
2004-11-19 22:59:31 +00:00
< / table > < / li >
< / ul > < / li >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > of the track
< / li >
< li > map2 bits 0..3:
< table >
< 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 >
< / table > < / li >
< li > map3_lo bits 0..3 = < a name = "TrackType" > track type< / a > : < tt > 0< / tt > - conventional railway, < tt > 1< / tt > - monorail, < tt > 2< / tt > - maglev
< / li >
< / ul >
map5 bits 7 and 6 set: railway depot / checkpoints
< ul >
< li > map5 value C0..C3: railway depot
< br > map5 bits 1..0 - direction: exit towards: < tt > 00< / tt > = NE, < tt > 01< / tt > = SE, < tt > 02< / tt > = SW, < tt > 03< / tt > = NW< / li >
< li > map5 value C4..C5: checkpoint
< br > bit 0: clear = in X direction, set = in Y direction
< br >
< br >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > of the depot / checkpoint< / li >
< li > map3_lo bits 0..3 = < a href = "#TrackType" > track type< / a > < / li >
< li > map3_lo bit 4 = use custom sprite (valid only for the checkpoint)< / li >
< li > map3_hi = custom station id< / li >
< / ul >
< / td > < / tr >
< tr > < td valign = top nowrap > < a name = "Class2" > < tt > 2 < / tt > < / a > < / td > < td >
map5 bits 7..4 clear: road
< ul >
< li > map5 bits 3..0: road layout: bit set = road piece present:
< 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 >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > of the road< / li >
2005-02-02 14:17:13 +00:00
< li > map2: Index into the array of towns, 0 for non-town roads< / li >
< li > map3_hi bits 0..3: counter for the roadworks< / li >
< li > map3_hi bits 4..6: < tt > 0< / tt > - on bare land, < tt > 1< / tt > - on grass, < tt > 2< / tt > - paved, < tt > 3< / tt > - with streetlights, < tt > 5< / tt > - tree-lined, < tt > 6< / tt > - on grass with road works, < tt > 7< / tt > - paved with road works< / li >
2004-11-19 22:59:31 +00:00
< li > map3_hi bit 7 set = on snow or desert< / li >
< / ul >
map5 bit 4 set, bits 7..5 clear: level crossing
< ul >
< li > map5 bit 3: clear - road in the X direction, set - road in the Y direction (railway track always perpendicular)< / li >
< li > map5 bit 2: set if crossing lights are on< / li >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > of the railway track< / li >
2005-02-02 14:17:13 +00:00
< li > map2: Index into the array of towns, 0 for non-town roads< / li >
2004-11-19 22:59:31 +00:00
< li > map3_lo bits 0..7: < a href = "#OwnershipInfo" > owner< / a > of the road< / li >
< li > map3_hi bits 3..0: < a href = "#TrackType" > track type< / a > < / li >
2005-02-02 14:17:13 +00:00
< li > map3_hi bits 4..6: < tt > 0< / tt > - on bare land, < tt > 1< / tt > - on grass, < tt > 2< / tt > or higher - paved< / li >
2004-11-19 22:59:31 +00:00
< li > map3_hi bit 7 set = on snow or desert< / li >
< / ul >
map5 bit 5 set: road depot
< ul >
< li > map5 bits 3..0 - direction: exit towards: < tt > 0< / tt > = NE, < tt > 1< / tt > = SE, < tt > 2< / tt > = SW, < tt > 3< / tt > = NW< / li >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > of the depot< / li >
< li > map3_hi bit 7 set = on snow or desert (not displayed, but set internally)< / li >
< / ul >
< / td > < / tr >
< tr > < td valign = top nowrap > < a name = "Class3" > < tt > 3 < / tt > < / a > < / td > < td >
Town building
< ul >
2005-02-02 14:17:13 +00:00
< li > map2: Index into the array of towns< / li >
< li > map3_hi: < a name = "HouseTypes" > town building type< / a > :
2004-11-19 22:59:31 +00:00
< p > < small > Note: In the climate list, 'sub-arctic' means below the < a href = "#_snowline" > snow line< / a > , and 'snow' means above the snow line in the sub-arctic climate.< / small > < / p >
< table >
< tr > < th align = left > Type < / th > < th align = left > Size < / th > < th align = left > Climates < / th > < th align = left > Description< / th > < / tr >
< tr > < td nowrap valign = top > < tt > 00< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 01< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 02< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > small block of flats< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 03< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > church< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 04< / tt > < / td > < td > 1× 1< / td > < td > temperate, sub-arctic, sub-tropical< / td > < td align = left > large office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 05< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > large office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 06< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > town houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 07< / tt > ..< tt > 08< / tt > < / td > < td > 1× 2< / td > < td > temperate< / td > < td align = left > hotel< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 09< / tt > < / td > < td > 1× 1< / td > < td > temperate, sub-arctic, sub-tropical < / td > < td align = left > statue< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 0A< / tt > < / td > < td > 1× 1< / td > < td > temperate, sub-arctic, sub-tropical< / td > < td align = left > fountain< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 0B< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > park (with a pond)< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 0C< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > park (with an alley)< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 0D< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 0E< / tt > ..< tt > 10< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > various types of shops and offices< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 11< / tt > < / td > < td > 1× 1< / td > < td > temperate, sub-arctic, sub-tropical< / td > < td align = left > modern office building< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 12< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > warehouse< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 13< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > office block (with spiral stairway on the side)< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 14< / tt > ..< tt > 17< / tt > < / td > < td > 2× 2< / td > < td > temperate< / td > < td align = left > stadium< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 18< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > old houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 19< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > cottages< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 1A< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 1B< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > flats< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 1C< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 1D< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > shops and offices< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 1E< / tt > < / td > < td > 1× 1< / td > < td > temperate, sub-tropical< / td > < td align = left > shops and offices< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 1F< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > theatre< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 20< / tt > ..< tt > 23< / tt > < / td > < td > 2× 2< / td > < td > temperate, sub-arctic, sub-tropical< / td > < td align = left > stadium (modern style)< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 24< / tt > < / td > < td > 1× 1< / td > < td > temperate, sub-arctic, sub-tropical< / td > < td align = left > offices (the modern 'vertical tube' style)< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 25< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 26< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 27< / tt > < / td > < td > 1× 1< / td > < td > temperate< / td > < td align = left > cinema< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 28< / tt > ..< tt > 2B< / tt > < / td > < td > 2× 2< / td > < td > temperate< / td > < td align = left > shopping mall< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 2C< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic< / td > < td align = left > flats< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 2D< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > flats< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 2E< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 2F< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 30< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 31< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 32< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic, sub-tropical< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 33< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 34< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 35< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 36< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic, sub-tropical< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 37< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 38< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 39< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 3A< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic< / td > < td align = left > shops and offices< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 3B< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > shops and offices< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 3C< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic< / td > < td align = left > church< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 3D< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > church< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 3E< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 3F< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 40< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic< / td > < td align = left > shops and offices< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 41< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > shops and offices< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 42< / tt > ..< tt > 43< / tt > < / td > < td > 1× 2< / td > < td > sub-arctic< / td > < td align = left > hotel< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 44< / tt > ..< tt > 45< / tt > < / td > < td > 1× 2< / td > < td > snow< / td > < td align = left > hotel< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 46< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic, sub-tropical< / td > < td align = left > shops and offices< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 47< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > shops and offices< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 48< / tt > < / td > < td > 1× 1< / td > < td > sub-arctic< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 49< / tt > < / td > < td > 1× 1< / td > < td > snow< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 4A< / tt > ..< tt > 4B< / tt > < / td > < td > 2× 1< / td > < td > sub-arctic< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 4C< / tt > ..< tt > 4D< / tt > < / td > < td > 2× 1< / td > < td > snow< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 4E< / tt > < / td > < td > 1× 1< / td > < td > sub-tropical< / td > < td align = left > houses (with a tree in a corner)< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 4F< / tt > , < tt > 50< / tt > < / td > < td > 1× 1< / td > < td > sub-tropical< / td > < td align = left > houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 51< / tt > < / td > < td > 1× 1< / td > < td > sub-tropical< / td > < td align = left > houses (suburb-type)< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 52< / tt > < / td > < td > 1× 1< / td > < td > sub-tropical< / td > < td align = left > flats< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 53< / tt > < / td > < td > 1× 1< / td > < td > sub-tropical< / td > < td align = left > church< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 54< / tt > < / td > < td > 1× 1< / td > < td > sub-tropical< / td > < td align = left > houses (with two trees in front)< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 55< / tt > , < tt > 56< / tt > < / td > < td > 1× 1< / td > < td > sub-tropical< / td > < td align = left > flats< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 57< / tt > ..< tt > 58< / tt > < / td > < td > 2× 1< / td > < td > sub-tropical< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 59< / tt > < / td > < td > 1× 1< / td > < td > sub-tropical< / td > < td align = left > flats< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 5A< / tt > < / td > < td > 1× 1< / td > < td > sub-tropical< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 5B< / tt > < / td > < td > 1× 1< / td > < td > toyland< / td > < td align = left > church< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 5C< / tt > ..< tt > 61< / tt > < / td > < td > 1× 1< / td > < td > toyland< / td > < td align = left > various types of toyland houses< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 62< / tt > < / td > < td > 1× 1< / td > < td > toyland< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 63< / tt > ..< tt > 64< / tt > < / td > < td > 1× 2< / td > < td > toyland< / td > < td align = left > houses ('shoe' style)< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 65< / tt > < / td > < td > 1× 1< / td > < td > toyland< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 66< / tt > < / td > < td > 1× 1< / td > < td > toyland< / td > < td align = left > igloo< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 67< / tt > < / td > < td > 1× 1< / td > < td > toyland< / td > < td align = left > tepees< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 68< / tt > , < tt > 69< / tt > < / td > < td > 1× 1< / td > < td > toyland< / td > < td align = left > shops and offices< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 6A< / tt > < / td > < td > 1× 1< / td > < td > toyland< / td > < td align = left > tall office block< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 6B< / tt > < / td > < td > 1× 1< / td > < td > toyland< / td > < td align = left > statue< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 6C< / tt > < / td > < td > 1× 1< / td > < td > toyland< / td > < td align = left > teapot-house< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 6D< / tt > < / td > < td > 1× 1< / td > < td > toyland< / td > < td align = left > piggy-bank< / td > < / tr >
< tr > < td colspan = 2 > < / td > < / tr > <!-- spacer - - - - (and I don't mean a walk) -->
< / table > < / li >
< li > map3_lo bits 7..6: stage of construction (< tt > 3< / tt > = completed)< / li >
< li > map5 bits 2..0: construction counter, for buildings under construction incremented on every periodic tile processing, on wraparound the stage of construction in map3_lo is increased< / li >
< li > for large office blocks (types < tt > 04< / tt > and < tt > 05< / tt > ):
< ul >
< li > map_owner bits 6..0: position of the lift< / li >
< li > map_owner bit 7: if set the lift is moving< / li >
< li > map5 bit 7: if set then map5 bits 5..0 hold the final position of the lift divided by 6 (valid values 0..6 except 1)< / li >
< / ul > < / li >
< / ul >
< / td > < / tr >
< tr > < td valign = top nowrap > < a name = "Class4" > < tt > 4 < / tt > < / a > < / td > < td >
Trees
< ul >
< li > map5 bits 7..6: number of trees minus one< / li >
< li > map5 bits 2..0: growth status: < tt > 0< / tt > ..< tt > 2< / tt > - one of trees is growing, < tt > 3< / tt > - all trees are fully grown, < tt > 4< / tt > ..< tt > 6< / tt > - one of trees is withering< / li >
< li > map3_lo 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 >
(note: the actually displayed set of trees depends on both type and number of trees)
< / li >
< li > map3_hi bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none)< / li >
< li > map3_hi bits 4..2: type of hedge on the SE border of the tile (1 through 6, or 0=none)< / li >
< li > map2 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; map2 bits 7..6 - amount of snow or desert (for desert always set to 3 in TTD)
< / td > < / tr >
< / table > < / li >
< li > map2 bits 3..0: update counter, incremented on every periodic processing, on wraparound the growth status is updated (or, if it's < tt > 3< / tt > , a random action is taken)< / li >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > (normally < tt > 10< / tt > )< / li >
< / ul >
< / td > < / tr >
< tr > < td valign = top nowrap > < a name = "Class5" > < tt > 5 < / tt > < / a > < / td > < td >
Station tile
< ul >
< li > map5: tile type:
< table >
< tr > < td nowrap valign = top > < tt > 00< / tt > ..< tt > 07< / tt > < / td > < td align = left > railway station
< br > < tt > 00< / tt > ..< tt > 01< / tt > - open platform, < tt > 02< / tt > ..< tt > 03< / tt > - open platform with station building, < tt > 04< / tt > ....< tt > 07< / tt > - roofed platform
< br > bit 0: clear = in X direction, set = in Y direction
< / 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 >
< / table >
The initial layout of a large airport is (rows in Y direction, columns in X direction):
< 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 >
< / td > < / tr >
< 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 >
< / table >
The initial layout of a small airport is (rows in Y direction, columns in X direction):
< pre >
36 3A 40
35 39 3F
34 38 3F
41 37 3E
< / pre >
< / td > < / tr >
< 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: < tt > 43< / tt > - NE, < tt > 44< / tt > - SE, < tt > 45< / tt > - SW, < tt > 46< / tt > - NW
< / td > < / tr >
< tr > < td nowrap valign = top > < tt > 47< / tt > ..< tt > 4A< / tt > < / td > < td align = left > bus station;
exit towards: < tt > 47< / tt > - NE, < tt > 48< / tt > - SE, < tt > 49< / tt > - SW, < tt > 4A< / tt > - NW
< 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;
< tt > 4C< / tt > - SW coast part, < tt > 4D< / tt > - NW coast part, < tt > 4E< / tt > - NE coast part, < tt > 4F< / tt > - SE coast part, < tt > 50< / tt > - X direction water part, < tt > 51< / tt > - Y direction water part
< tr > < td nowrap valign = top > < tt > 52< / tt > < / td > < td align = left > buoy< / td > < / tr >
< / td > < / tr >
< tr > < td colspan = 2 > < / td > < / tr > <!-- spacer -->
< / table >
< / li >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > of the station< / li >
< li > map2: index into the < a href = "#_StationArray" > array of stations< / a > < / li >
< li > map3_lo bits 0..3: < a href = "#TrackType" > track type< / a > for railway stations, must be 0 for all the other stations< / li >
< li > map3_lo bit 4 = use custom sprite (valid only railway stations FOR NOW)< / li >
< li > map3_hi = custom station id< / li >
< / ul >
< / td > < / tr >
< tr > < td valign = top nowrap > < a name = "Class6" > < tt > 6 < / tt > < / a > < / td > < td >
< ul >
< li > map5: tile type:
< table >
< 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)
< tr > < td nowrap valign = top > < tt > 11< / tt > < / td > < td align = left > middle part, (NW-SE direction)
< tr > < td nowrap valign = top > < tt > 12< / tt > < / td > < td align = left > middle part, (NE-SW direction)
< tr > < td nowrap valign = top > < tt > 13< / tt > < / td > < td align = left > middle part, (SE-NW direction)
< tr > < td nowrap valign = top > < tt > 14< / tt > < / td > < td align = left > lower part, (SW-NE direction)
< tr > < td nowrap valign = top > < tt > 15< / tt > < / td > < td align = left > lower part, (NW-SE direction)
< tr > < td nowrap valign = top > < tt > 16< / tt > < / td > < td align = left > lower part, (NE-SW direction)
< tr > < td nowrap valign = top > < tt > 17< / tt > < / td > < td align = left > lower part, (SE-NW direction)
< tr > < td nowrap valign = top > < tt > 18< / tt > < / td > < td align = left > upper part, (SW-NE direction)
< tr > < td nowrap valign = top > < tt > 19< / tt > < / td > < td align = left > upper part, (NW-SE direction)
< tr > < td nowrap valign = top > < tt > 1A< / tt > < / td > < td align = left > upper part, (NE-SW direction)
< tr > < td nowrap valign = top > < tt > 1B< / tt > < / td > < td align = left > upper part, (SE-NW direction)
< / table >
< 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)
< tr > < td nowrap valign = top > < tt > 81< / tt > < / td > < td align = left > ship depot, SW part (X direction)
< tr > < td nowrap valign = top > < tt > 82< / tt > < / td > < td align = left > ship depot, NW part (Y direction)
< tr > < td nowrap valign = top > < tt > 83< / tt > < / td > < td align = left > ship depot, SE part (Y direction)
< / td > < / tr >
< / table >
< / td > < / tr >
< / table > < / li >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > (for water and coasts normally < tt > 11< / tt > )< / li >
< / ul >
< / td > < / tr >
< tr > < td valign = top nowrap > < a name = "Class7" > < tt > 7 < / tt > < / a > < / td > < td >
Void
< p >
Tiles of this class form an invisible, one tile wide border at the south (bottom) edges of the map, so as to protect several algorithms from the consequences of a wraparound at the edges.
< / p >
< / td > < / tr >
< tr > < td valign = top nowrap > < a name = "Class8" > < tt > 8 < / tt > < / a > < / td > < td >
Industry tile
< ul >
< li > map5: type:
< br > < small > (note: this is not the same as the < a href = "#industry.type" > industry type< / a > stored in the < a href = "#_IndustryArray" > array of industries< / a > )< / 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; animation state in map_owner bits 5..0; map_owner 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 map_owner bits 5..2 (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 map_owner bits 1..0< / 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 map_owner bits 5..0; map_owner 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 map_owner bits 5..0; map_owner 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 map3_lo (valid range < tt > 00< / tt > ..< tt > 31< / tt > )< br >
tile animation is started (map3_hi zeroed) on the periodic processing if < a href = "#industry.didtransform" > field < tt > 2C< / tt > < / a > in the corresponding industry array entry is nonzero< br >
while the animation is in progress (see the < a href = "#_AnimatedTilesList" > array at < tt > 04328< / tt > < / a > ) map3_hi holds the number of animation cycles that have already taken place; 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 map3_lo (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 map3_lo (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 map3_lo (valid range < tt > 00< / tt > ..< tt > 5F< / tt > )< / td > < / tr >
< / table >
< / td > < / tr >
< tr > < td colspan = 2 > < / td > < / tr > <!-- spacer -->
< / table > < / li >
< li > map2: index into the < a href = "#_IndustryArray" > array of industries< / a >
< / li >
< li > map_owner bit 7: clear = under construction
< ul >
< li > map_owner bits 4..2: construction counter, for buildings under construction incremented on every periodic tile processing
< / li >
< / ul > < / li >
< li > map_owner 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 >
< / td > < / tr >
< tr > < td valign = top nowrap > < a name = "Class9" > < tt > 9 < / tt > < / a > < / td > < td >
map5 bits 7..4 clear: tunnel entrance/exit
< ul >
< li > map5 bits 3..2: < tt > 0< / tt > - railway tunnel, < tt > 1< / tt > - road tunnel< / li >
< li > map5 bits 1..0 - direction: entrance towards: < tt > 0< / tt > = NE, < tt > 1< / tt > = SE, < tt > 2< / tt > = SW, < tt > 3< / tt > = NW< / li >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > of the tunnel< / li >
< li > map3_lo bits 3..0 = < a href = "#TrackType" > track type< / a > for railway tunnel, must be 0 for road tunnel< / li >
< li > map3_hi bit 7 set = on snow or desert< / li >
< / ul >
map5 bit 7 set: bridge
< ul > < li >
map5 bit 6 clear: bridge ending
< ul >
< li > map5 bit 5: clear - northern, set - southern ending< / li >
< li > map3_lo bits 3..0 = < a href = "#TrackType" > type of track< / a > on the bridge, must be 0 for road bridge< / li >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > of the bridge< / li >
< / ul >
map5 bit 6 set: bridge middle part
< ul >
< li > map5 bit 5 clear:
< ul >
< li > map5 bits 4..3: land under bridge: < tt > 0< / tt > - grass, snow or desert, < tt > 1< / tt > - water< / li >
< / ul >
map5 bit 5 set:
< ul >
< li > map5 bits 4..3: transport route under bridge: < tt > 0< / tt > - railway, < tt > 1< / tt > - road< / li >
< / ul >
< li > map3_lo bits 7..4 = < a href = "#TrackType" > type of track< / a > on the bridge, must be 0 for road bridge< / li >
< li > map3_lo bits 3..0 = < a href = "#TrackType" > type of track< / a > under the bridge, if any< / li >
< li > map2 bits 3..0: bridge piece (< tt > 0< / tt > ..< tt > 5< / tt > )
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > of the land under bridge< / li >
< / ul > < / li >
< li > map5 bits 2..1: < tt > 0< / tt > - railway bridge, < tt > 1< / tt > - road bridge< / li >
< li > map5 bit 0: clear - bridge in the X direction, set - bridge in the Y direction< / li >
< li > map2 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 > map3_hi bit 7 set = on snow or desert< / li >
< / ul >
< / td > < / tr >
< tr > < td valign = top nowrap > < a name = "ClassA" > < tt > A < / tt > < / a > < / td > < td >
< ul >
< li > map5: tile type:
< table >
< 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 >
< / table >
< / li >
< li > map_owner: < a href = "#OwnershipInfo" > owner< / a > of the object (for lighthouses and transmitters normally < tt > 10< / tt > )< / li >
< / ul >
< / td > < / tr >
< tr > < td colspan = 2 >
2005-03-11 18:31:56 +00:00
Classes < tt > B< / tt > through < tt > F< / tt > are reserved. The presence of a tile in one of the reserved classes will crash OTTD.
2004-11-19 22:59:31 +00:00
< / td > < / tr >
< / table >
< hr >
2005-03-11 18:31:56 +00:00
Original Copyright © 2003 by Marcin Grzegorczyk for TTDLX.< br >
2004-11-19 22:59:31 +00:00
Transport Tycoon and Transport Tycoon Deluxe are Copyright © by Chris Sawyer. All the other trademarks are the property of their respective owners.< br >
< / body >
< / html >