1 <!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
5 <meta name=
"Author" content=
"Marcin Grzegorczyk">
6 <meta name=
"Description" content=
"Structure of OpenTTD (OTTD) landscape arrays">
7 <meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8">
8 <title>OpenTTD Landscape Internals
</title>
13 <h3><a name=
"Landscape">Landscape
</a></h3>
15 For a graphical representation of the tile-layout have a look at
16 <a href=
"landscape_grid.html">Landscape grid
</a> page.
18 <p>Nine attributes (counting
"<span style=
"font-weight: bold;">type
</span>" and
19 "<span style=
"font-weight: bold;">height
</span>") hold the informations about a tile.
<BR>
20 These attributes are referred to as
21 "<span style=
"font-weight: bold;">type
</span>",
22 "<span style="font-weight: bold;
">height</span>",
23 "<span style=
"font-weight: bold;">m1
</span>",
"<span style=
"font-weight: bold;">m2
</span>",
24 "<span style=
"font-weight: bold;">m3
</span>",
"<span style=
"font-weight: bold;">m4
</span>",
25 "<span style=
"font-weight: bold;">m5
</span>",
"<span style=
"font-weight: bold;">m6
</span>"
26 and
"<span style="font-weight: bold;
">m7</span>".
<br>
27 The most important value is the class of a tile, stored in the upper
4 bits
28 of the
<span style=
"font-weight: bold;">type
</span> attribute.
31 Frequently repeating patterns:
33 <li><span style=
"font-weight: bold;">type
</span>
38 <table border=
"1" style=
"width: 30em;">
39 <tr bgcolor=
"#CCCCCC"><td colspan=
"2">The tile type.
</td></tr>
40 <tr><td style=
"width: 5em;"><tt>00</tt></td><td>Ground
</td></tr>
41 <tr><td><tt>01</tt></td><td>Railway tracks
</td></tr>
42 <tr><td><tt>02</tt></td><td>Roads
</td></tr>
43 <tr><td><tt>03</tt></td><td>Town building
</td></tr>
44 <tr><td><tt>04</tt></td><td>Trees
</td></tr>
45 <tr><td><tt>05</tt></td><td>Station tiles
</td></tr>
46 <tr><td><tt>06</tt></td><td>Water
</td></tr>
47 <tr><td><tt>07</tt></td><td>Void
</td></tr>
48 <tr><td><tt>08</tt></td><td>Industries
</td></tr>
49 <tr><td><tt>09</tt></td><td>Tunnel / bridge
</td></tr>
50 <tr><td><tt>0A
</tt></td><td>Objects
</td></tr>
54 <table border=
"1" style=
"width: 30em;">
55 <tr bgcolor=
"#CCCCCC"><td colspan=
"2">Presence and direction of bridge above.
</td></tr>
56 <tr><td style=
"width: 5em;"><tt>00</tt></td><td>no bridge
</td></tr>
57 <tr><td><tt>01</tt></td><td>Axis X (North-East)
</td></tr>
58 <tr><td><tt>02</tt></td><td>Axis Y (South-West)
</td></tr>
61 <a name=
"tropic_zone"></a>
63 <table border=
"1" style=
"width: 30em;">
64 <tr bgcolor=
"#CCCCCC"><td colspan=
"2">Only meaningfull in tropic climate. It contains the definition of the available zones
</td></tr>
65 <tr><td style=
"width: 5em;"><tt>00</tt></td><td>normal
</td></tr>
66 <tr><td><tt>01</tt></td><td>desert
</td></tr>
67 <tr><td><tt>02</tt></td><td>rain forest
</td></tr>
69 In any other climate these
2 bits are theoretically free of use, however using them does not seem useful.
72 <li><span style=
"font-weight: bold;">m1
</span>
75 <a name=
"WaterClass"></a>
77 <table border=
"1" style=
"width: 30em;">
78 <tr bgcolor=
"#CCCCCC"><td colspan=
"2">The type of water that is on a tile.
79 <tr><td style=
"width: 5em;"><tt>00</tt></td><td align=left
>Sea
</td></tr>
80 <tr><td><tt>01</tt></td><td align=left
>Canal
</td></tr>
81 <tr><td><tt>02</tt></td><td align=left
>River
</td></tr>
82 <tr><td><tt>03</tt></td><td align=left
>Invalid, i.e. no water on this tile
</td></tr>
84 Some tiles, such as houses, reuse these bits of other purposes.
87 <a name=
"OwnershipInfo"></a>
89 <table border=
"1" style=
"width: 30em;">
90 <tr bgcolor=
"#CCCCCC"><td colspan=
"2">The owner of a tile can be either companies (human or AI) or
"Game entities".
91 <tr><td style=
"width: 5em;"><tt>00.
.0E
</tt></td><td align=left
>Normal companies
</td></tr>
92 <tr><td><tt>0F
</tt></td><td align=left
>a town owns the tile
</td></tr>
93 <tr><td><tt>10</tt></td><td align=left
>nobody owns the tile
</td></tr>
94 <tr><td><tt>11</tt></td><td align=left
>"water" owns the tile
</td></tr>
95 <tr><td><tt>FF
</tt></td><td align=left
>spectator in MP or in scenario editor
</td></tr>
97 Some tiles, such as houses and industries, reuse these bits of other purposes.
101 <li><span style=
"font-weight: bold;">m3:
</span><br>
104 <a name=
"RailType"></a>
105 Bits
3.
.0: Railtype. Used for all tiles with rail (road, rail, station, tunnelbridge).
109 <li><span style=
"font-weight: bold;">m4:
</span><br>
110 <a name=
"RoadType"></a>
111 Road-(sub-)types. Used for all tiles with road (road, station, tunnelbridge).
114 Bits
7.
.4: Tram sub type,
0xF for no tram.
117 Bits
3.
.0: Road sub type,
0xF for no road.
121 <li><span style=
"font-weight: bold;">m7:
</span><br>
122 Animation frame/state. Used for houses, industries, objects and stations.
126 <p>OTTD's class-specific periodic tile processing routine is called once every +
256 ticks for each tile.
</p>
128 <table border=
1 cellpadding=
3>
129 <tr bgcolor=
"#0099FF">
130 <th align=left
><font color=
"#FFFFFF">Class
</font></th>
131 <th align=left
><font color=
"#FFFFFF">Meaning & details of encoding
</font></th>
133 <tr bgcolor=
"#CCCCCC">
134 <td align=left
><strong><a name=
"Class0"><tt> 0 </tt></a></strong></td>
135 <td align=left
> <strong>Ground
</strong></td>
138 <td valign=top nowrap
> </td>
141 <li>m1 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> of the tile (normally
<tt>10</tt>)
</li>
142 <li>m2: see fields
</li>
143 <li>m3 bits
7.
.5: type of hedge on NE border of the tile
</li>
144 <li>m3 bits
3.
.0: see fields
</li>
145 <li>m3 bit
4: set if the tile is covered with snow
</li>
146 <li>m4 bits
7.
.5: type of hedge on the SW border of the tile (
1 through
6, or
0=none)
</li>
147 <li>m4 bits
4.
.2: same as
7.
.5, but for the SE border
</li>
148 <li>m5 bits
7.
.5: update counter, incremented on every periodic processing for tile types,
149 other than
<tt>03</tt>,
<tt>07</tt>,
<tt>0B
</tt>,
<tt>10</tt> and above.
<BR>
150 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>
151 For snow and desert, these bits are not used, tile is updated on every periodic processing.
</li>
152 <li>m5 bits
4.
.2: tile type:
155 <td nowrap valign=top
><tt>0</tt> </td>
156 <td align=left
>bare land / grass
</td>
160 <td nowrap valign=top
><tt>1</tt> </td>
161 <td align=left
>rough land (density must be
3)
</td>
165 <td nowrap valign=top
><tt>2</tt> </td>
166 <td align=left
>rocks (density must be
3)
</td>
170 <td nowrap valign=top
><tt>3</tt> </td>
171 <td align=left
>fields (density must be
3)
173 <li>m2: index into the array of industries (farms), INVALID_INDUSTRY (
0xFFFF) if farm has been removed
</li>
174 <li>m3 bits
3.
.0: field type (legal values:
0 through
9)
</li>
180 <td nowrap valign=top
><tt>4</tt> </td>
181 <td align=left
>snow
</td>
185 <td nowrap valign=top
><tt>5</tt> </td>
186 <td align=left
>desert (density must be
1 or
3)
</td>
190 <li>m5 bits
1.
.0: density:
193 <td nowrap valign=top
><tt>0</tt> </td>
203 <td nowrap valign=top
><tt>1</tt> </td>
208 <td>2/
4 snow;
</td>
213 <td nowrap valign=top
><tt>2</tt> </td>
223 <td nowrap valign=top
><tt>3</tt> </td>
224 <td>full grass;
</td>
225 <td>rough land;
</td>
226 <td>rocks;
</td>
227 <td>fields;
</td>
228 <td>full snow;
</td>
233 <li>m6 bits
4.
.2: type of hedge on NW border of the tile
</li>
238 <tr bgcolor=
"#CCCCCC">
239 <td valign=top nowrap
><strong><a name=
"Class1"><tt> 1</tt></a></strong></td>
240 <td><strong>Railway tracks
</strong></td>
243 <td valign=top nowrap
> </td>
246 <li style=
"color: blue">m1 bit
7: bit
4 of track type (more rail types patch)
</li>
247 <li>m1 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> of the tile
</li>
248 <li>m2: see signals
</li>
249 <li>m3 bits
7.
.4: see signals
</li>
250 <li>m3 bits
3.
.0 =
<a href=
"#RailType">track type
</a></li>
251 <li>m4 bits
7.
.4: see signals
</li>
252 <li>m4 bits
3.
.0: Ground type (values with fences are not valid for depots and checkpoints)
255 <td nowrap valign=top
><tt>0</tt> </td>
256 <td align=left
>on bare land
</td>
260 <td nowrap valign=top
><tt>1</tt> </td>
261 <td align=left
>on grass, no fences
</td>
265 <td nowrap valign=top
><tt>2</tt> </td>
266 <td align=left
>fence on the NW side
</td>
270 <td nowrap valign=top
><tt>3</tt> </td>
271 <td align=left
>fence on the SE side
</td>
275 <td nowrap valign=top
><tt>4</tt> </td>
276 <td align=left
>fences on the NW and SE sides
</td>
280 <td nowrap valign=top
><tt>5</tt> </td>
281 <td align=left
>fence on the NE side
</td>
285 <td nowrap valign=top
><tt>6</tt> </td>
286 <td align=left
>fence on the SW side
</td>
290 <td nowrap valign=top
><tt>7</tt> </td>
291 <td align=left
>fences on the NE and SW sides
</td>
295 <td nowrap valign=top
><tt>8</tt> </td>
296 <td align=left
>fence on the E side (track in the W corner)
</td>
300 <td nowrap valign=top
><tt>9</tt> </td>
301 <td align=left
>fence on the W side (track in the E corner)
</td>
305 <td nowrap valign=top
><tt>A
</tt> </td>
306 <td align=left
>fence on the S side (track in the N corner)
</td>
310 <td nowrap valign=top
><tt>B
</tt> </td>
311 <td align=left
>fence on the N side (track in the S corner)
</td>
315 <td nowrap valign=top
><tt>C
</tt> </td>
316 <td align=left
>on snow or desert
</td>
320 <td nowrap valign=top
><tt>D
</tt> </td>
321 <td align=left
>on grass with fence and shore or water on the free halftile
</td>
325 <td nowrap valign=top
><tt>E
</tt> </td>
326 <td align=left
>higher part on foundation with snow, lower without snow
</td>
330 <li>m5 bit
7 clear: railway track
332 <li>m5 bits
5.
.0: track layout: bit set = track present:
335 <td nowrap valign=top
>bit
0:
</td>
336 <td align=left
>in the X direction
</td>
340 <td nowrap valign=top
>bit
1:
</td>
341 <td align=left
>in the Y direction
</td>
345 <td nowrap valign=top
>bit
2:
</td>
346 <td align=left
>in the north corner (direction W-E)
</td>
350 <td nowrap valign=top
>bit
3:
</td>
351 <td align=left
>in the south corner (direction W-E)
</td>
355 <td nowrap valign=top
>bit
4:
</td>
356 <td align=left
>in the west corner (direction N-S)
</td>
360 <td nowrap valign=top
>bit
5:
</td>
361 <td align=left
>in the east corner (direction N-S)
</td>
365 <li>m5 bit
6 set = with signals:
<BR>
366 There are at most
4 signals on a tile. The signals
0.
.3 belong to the directions:
370 <td>Track
<tt>0</tt> (X)
</td>
371 <td>Track
<tt>1</tt> (Y)
</td>
372 <td>Track
<tt>2</tt> (north)
</td>
373 <td>Track
<tt>3</tt> (south)
</td>
374 <td>Track
<tt>4</tt> (west)
</td>
375 <td>Track
<tt>5</tt> (east)
</td>
379 <td align=left
>Signal
<tt>0</tt> </td>
389 <td align=left
>Signal
<tt>1</tt> </td>
399 <td align=left
>Signal
<tt>2</tt> </td>
409 <td align=left
>Signal
<tt>3</tt> </td>
419 <li>m2 bit
7: Signal
0 and
1: set = semaphore signals, clear = light signals
</li>
420 <li>m2 bit
3: Signal
2 and
3: set = semaphore signals, clear = light signals
</li>
421 <li>m2 bits
6.
.4: type of signal
0 and
1 (same values as m2 bits
2.
.0)
</li>
422 <li>m2 bits
2.
.0: type of signal
2 and
3
425 <td nowrap=
"nowrap" valign=
"top"><tt>000</tt>:
</td>
426 <td align=
"left">normal signals
</td>
430 <td nowrap=
"nowrap" valign=
"top"><tt>001</tt>:
</td>
431 <td align=
"left">pre-signals
</td>
435 <td nowrap=
"nowrap" valign=
"top"><tt>010</tt>:
</td>
436 <td align=
"left">exit-signals
</td>
440 <td nowrap=
"nowrap" valign=
"top"><tt>011</tt>:
</td>
441 <td align=
"left">combo-signals
</td>
445 <td nowrap=
"nowrap" valign=
"top"><tt>100</tt>:
</td>
446 <td align=
"left">pbs signals
</td>
450 <td nowrap=
"nowrap" valign=
"top"><tt>101</tt>:
</td>
451 <td align=
"left">no-entry signals
</td>
455 <li style=
"color: blue">m2 bit
12: this signal tile has
1 or more restricted signals (tracerestrict patch)
</li>
457 <li>m3 bits
7.
.4: bit set = signal
3.
.0 present
</li>
458 <li>m4 bits
7.
.4: bit clear = signal
3.
.0 shows red
</li>
461 <li>m2 bits
8.
.10: track reserved for pbs
464 <td><tt>0</tt> </td>
465 <td>not reserved
</td>
468 <td><tt>1</tt> </td>
472 <td><tt>2</tt> </td>
476 <td><tt>3</tt> </td>
477 <td>north corner (W-E)
</td>
480 <td><tt>4</tt> </td>
481 <td>south corner (W-E)
</td>
484 <td><tt>5</tt> </td>
485 <td>west corner (N-S)
</td>
488 <td><tt>6</tt> </td>
489 <td>east corner (N-S)
</td>
493 <li>m2 bit
11: opposite track is reserved, too
</li>
496 <li>m5 bit
7 set, bit
6 set: railway depot
498 <li>m2: Depot index
</li>
499 <li>m5 bits
1.
.0: exit towards
502 <td><tt>0</tt> </td>
507 <td><tt>1</tt> </td>
512 <td><tt>2</tt> </td>
517 <td><tt>3</tt> </td>
522 <li>m5 bit
4: pbs reservation state
</li>
525 <li style=
"color: blue">m7: Track age used to show overgrowth (not used for depots)
</li>
530 <tr bgcolor=
"#CCCCCC">
531 <td valign=top nowrap
><strong><a name=
"Class2"><tt> 2</tt></a></strong></td>
532 <td><strong>Roads
</strong></td>
535 <td valign=top nowrap
> </td>
538 <li>m2: Index into the array of towns (owning town for town roads; closest town otherwise, INVALID_TOWN if there is no town or we are creating a town)
</li>
539 <li>m3 bits
7.
.4:
<a href=
"#OwnershipInfo">owner
</a> of road type
1 (tram); OWNER_NONE (
<tt>10</tt>) is stored as OWNER_TOWN (
<tt>0F
</tt>)
540 <li>m4:
<a href=
"#RoadType">Road-(sub-)types
</a></li>
541 <li>m7 bit
5 set = on snow or desert
</li>
542 <li>m5 bits
7 clear: road or level-crossing
547 <td><tt>0</tt> </td>
548 <td>on bare land
</td>
551 <td><tt>1</tt> </td>
555 <td><tt>2</tt> </td>
559 <td><tt>3</tt> </td>
560 <td>with streetlights
</td>
563 <td><tt>5</tt> </td>
567 <td><tt>6</tt> </td>
568 <td>on grass with road works
</td>
571 <td><tt>7</tt> </td>
572 <td>paved with road works
</td>
576 <li>m5 bit
6 clear: road
578 <li style=
"color: blue">m1 bit
7: bit
4 of track type (more rail types patch)
</li>
579 <li>m1 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> of the road type
0 (normal road)
</li>
580 <li>m7 bits
3.
.0: counter for the roadworks
</li>
581 <li>m5 bits
3.
.0: road layout road type
0 (normal road): bit set = road piece present:
584 <td align=left
>bit
0:
</td>
588 <td align=left
>bit
1:
</td>
592 <td align=left
>bit
2:
</td>
596 <td align=left
>bit
3:
</td>
601 <li>m3 bits
0.
.3: road layout road type
1 (tram)
</li>
602 <li>m5 bits
5.
.4: bits to disallow vehicles to go a specific direction
605 <td align=left
>bit
0:
</td>
606 <td>set = disallow driving in south-west or south-east direction
</td>
609 <td align=left
>bit
1:
</td>
610 <td>set = disallow driving in north-west or north-east direction
</td>
616 <li>m5 bit
6 set: level crossing
618 <li>m1 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> of the railway track
</li>
619 <li>m3 bits
3.
.0:
<a href=
"#RailType">railway track type
</a></li>
620 <li>m5 bit
0: direction
623 <td align=left
><tt>0</tt> </td>
624 <td align=left
>road in the X direction, rail in Y
</td>
627 <td align=left
><tt>1</tt> </td>
628 <td align=left
>road in the Y direction, rail in X
</td>
632 <li>m5 bit
5: set if crossing lights are on
</li>
633 <li>m7 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> of the road type
0 (normal road)
</li>
634 <li>m5 bit
4: pbs reservation state
</li>
639 <li>m5 bit
7 set, bit
6 clear: road depot
641 <li>m1 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> of the depot
</li>
642 <li>m2: Depot index
</li>
643 <li>m5 bits
1.
.0: exit towards:
646 <td><tt>0</tt> </td>
651 <td><tt>1</tt> </td>
656 <td><tt>2</tt> </td>
661 <td><tt>3</tt> </td>
666 <li>m7 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> of the road type
0 (normal road)
</li>
673 <tr bgcolor=
"#CCCCCC">
674 <td valign=top nowrap
><strong><a name=
"Class3"><tt> 3</tt></a></strong></td>
675 <td><strong>Town building
</strong></td>
678 <td valign=top nowrap
> </td>
681 <li>m1 : Random bits
<a href=
"#newhouses">(newhouses)
</a> </li>
682 <li>m2 : index into the array of towns
</li>
685 <li> set : House is complete
687 <li>m5 : Age of house in years, clamped at
255</li>
690 <li> clear : House is in construction
692 <li>m5 bits
7.
.5 : free
</li>
693 <li>m5 bits
4.
.3 : construction stage
</li>
694 <li>m5 bits
2.
.0 : construction counter
</li>
698 <li>m3 bit
6 : bit
8 of house type (m4), allowing
512 different types.
</li>
699 <li>m3 bit
5 : free
</li>
700 <li>m3 bits
4.
.0 : triggers activated
<a href=
"#newhouses">(newhouses)
</a></li>
701 <li>m4 :
<a href=
"landscape_externals.html">town building type
</a> (with m3[
6] bit)
</li>
702 <li>m5 : see m3 bit
7</li>
705 <li>If
<a href=
"#newhouses">newhouses
</a> is activated
707 <li>bits
7.
.2 : Periodic processing time remaining
</li>
710 <li>Standard behaviour
712 <li>bits
7.
.2 : lift position (for houses type
04 and
05)
</li>
719 <li>If
<a href=
"#newhouses">newhouses
</a> is activated
721 <li>Current animation frame
</li>
724 <li>Standard behaviour (only for houses type
04 and
05)
726 <li>bits
7.
.4 : free
</li>
727 <li>bits
3.
.1 : lift destination. Values can be
0.
.6, except
1.
<br>
728 So the building has
6 effective floors. This is due to the fact that the first floor is
2 'normal' floors high.
<br>
729 One 'normal' floor has a height of
6 lift positions.
731 <li>bit
0 : Lift has destination when set
</li>
737 <small><a name=
"newhouses"></a>Newhouses is the name englobing a newGRF feature developped by TTDPatch devs (mainly Csaboka).
<br>
738 It allows the replacement of the properties as well as the graphics of houses in the game.
<br>
739 To distinguish between the standard behaviour and the newGRF one, HouseID (m4 + m3[
6]) is tested for anything above
110.
<br>
740 110 is the count of standard houses. So above
110 means there is a new definition of at least one house
</small>
744 <tr bgcolor=
"#CCCCCC">
745 <td valign=top nowrap
><strong><a name=
"Class4"><tt> 4 </tt></a></strong></td>
746 <td><strong>Trees
</strong></td>
749 <td valign=top nowrap
> </td>
752 <li>m1 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> (normally
<tt>10</tt>)
</li>
753 <li>m2 bits
8.
.6: ground
757 <td align=left
><tt>0</tt> </td>
762 <td align=left
><tt>1</tt> </td>
763 <td>on rough land (density must be
3)
</td>
767 <td align=left
><tt>2</tt> </td>
768 <td>on snow or desert
</td>
772 <td align=left
><tt>3</tt> </td>
773 <td>on shore (density must be
3)
</td>
777 <td align=left
><tt>4</tt> </td>
778 <td>on snow with rough land underneed
</td>
782 <li>m2 bits
5.
.4: ground density
</li>
783 <li>m2 bits
3.
.0: update counter, incremented on every periodic processing.
<br>
784 on wraparound the growth status is updated (or, if it's
<tt>3</tt>, a random action is taken)
</li>
785 <li>m3 bits
7.
.0: type of trees:
788 <td nowrap valign=top
><tt>00</tt>..
<tt>0B
</tt> </td>
789 <td align=left
>temperate climate trees
</td>
793 <td nowrap valign=top
><tt>0C
</tt>..
<tt>13</tt> </td>
794 <td align=left
>sub-arctic climate trees
</td>
798 <td nowrap valign=top
><tt>14</tt>..
<tt>1A
</tt> </td>
799 <td align=left
>rainforest trees
</td>
803 <td nowrap valign=top
><tt>1B
</tt> </td>
804 <td align=left
>cactus plants
</td>
808 <td nowrap valign=top
><tt>1C
</tt>..
<tt>1F
</tt> </td>
809 <td align=left
>sub-tropical climate, non-rainforest, non-desert trees
</td>
813 <td nowrap valign=top
><tt>20</tt>..
<tt>28</tt> </td>
814 <td align=left
>toyland trees
</td>
817 <small>Note: the actually displayed set of trees depends on both type and number of trees
</small>
819 <li>m5 bits
7.
.6: number of trees minus one
</li>
820 <li>m5 bits
2.
.0: growth status:
823 <td><tt>0</tt>..
<tt>2</tt> </td>
824 <td>one of trees is growing
</td>
827 <td><tt>3</tt> </td>
828 <td>all trees are fully grown
</td>
831 <td><tt>4</tt>..
<tt>6</tt> </td>
832 <td>one of trees is withering
</td>
840 <tr bgcolor=
"#CCCCCC">
841 <td valign=top nowrap
><strong><a name=
"Class5"><tt> 5</tt></a></strong></td>
842 <td><strong>Station tiles
</strong></td>
845 <td valign=top nowrap
> </td>
848 <li style=
"color: blue">m1 bit
7: bit
4 of track type (more rail types patch)
</li>
849 <li>m1 bits
6.
.5: water class for buoys, water part of docks and for airport tiles
</li>
850 <li>m1 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> of the station
</li>
851 <li>m2: index into the array of stations
</li>
852 <li>m3 bits
7.
.4: persistent random data for railway stations/waypoints and airports)
</li>
853 <li>m3 bits
7.
.4:
<a href=
"#OwnershipInfo">owner
</a> of tram tracks (road stop)
</li>
854 <li>m3 bits
3.
.0:
<a href=
"#RailType">track type
</a> for railway stations/waypoints
</li>
855 <li>m4: custom station id;
0 means standard graphics
</li>
856 <li>m4:
<a href=
"#RoadType">Road-(sub-)types
</a> for road stops
</li>
857 <li>m5: graphics index (range from
0.
.255 for each station type):
860 <td nowrap valign=top
><tt>00</tt>..
<tt>07</tt> </td>
861 <td align=left
>railway station
864 <td><tt>00</tt>..
<tt>01</tt> </td>
865 <td align=left
>open platform
</td>
868 <td><tt>02</tt>..
<tt>03</tt> </td>
869 <td align=left
>open platform with station building
</td>
872 <td><tt>04</tt>....
<tt>07</tt> </td>
873 <td align=left
>roofed platform
</td>
876 <td colspan=
2>bit
0: clear = in X direction, set = in Y direction
</td>
883 <td nowrap valign=top
><tt>00</tt>..
<tt>01</tt></td>
884 <td align=left
>waypoints
887 <td><tt>00</tt> </td>
888 <td align=left
>in X direction
</td>
891 <td><tt>01</tt> </td>
892 <td align=left
>in Y direction
</td>
899 <td nowrap valign=top
><tt>00</tt>..
<tt>FF
</tt></td>
900 <td align=left
>all airports
</td>
904 <td nowrap valign=top
><tt>00</tt>..
<tt>05</tt> </td>
905 <td align=left
>road stops
908 <td><tt>00</tt> </td>
909 <td align=left
>exit towards NE
</td>
912 <td><tt>01</tt> </td>
913 <td align=left
>exit towards SE
</td>
916 <td><tt>02</tt> </td>
917 <td align=left
>exit towards SW
</td>
920 <td><tt>03</tt> </td>
921 <td align=left
>exit towards NW
</td>
924 <td><tt>04</tt> </td>
925 <td align=left
>drive through X
</td>
928 <td><tt>05</tt> </td>
929 <td align=left
>drive through Y
</td>
936 <td nowrap valign=top
><tt>00</tt>..
<tt>05</tt> </td>
937 <td align=left
>ship dock
940 <td><tt>00</tt> </td>
941 <td align=left
>SW coast part
</td>
944 <td><tt>01</tt> </td>
945 <td align=left
>NW coast part
</td>
948 <td><tt>02</tt> </td>
949 <td align=left
>NE coast part
</td>
952 <td><tt>03</tt> </td>
953 <td align=left
>SE coast part
</td>
956 <td><tt>04</tt> </td>
957 <td align=left
>X direction water part
</td>
960 <td><tt>05</tt> </td>
961 <td align=left
>Y direction water part
</td>
968 <li>m6 bits
5.
.3: the station type (rail, airport, truck, bus, oilrig, dock, buoy, waypoint)
</li>
969 <li>m6 bit
2: pbs reservation state for railway stations/waypoints
</li>
971 <li>m7 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> of road (road stops)
</li>
972 <li>m7: animation frame (railway stations/waypoints, airports)
</li>
977 <tr bgcolor=
"#CCCCCC">
978 <td valign=top nowrap
><strong><a name=
"Class6"><tt> 6 </tt></a></strong></td>
979 <td><strong>Water
</strong></td>
982 <td valign=top nowrap
> </td>
985 <li>m1 bits
6.
.5 : Water class (sea, canal or river)
986 <li>m1 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> (for sea, rivers, and coasts normally
<tt>11</tt>)
</li>
987 <li>m2: Depot index (for depots only)
</li>
988 <li>m4: Random data for canal or river tiles
</li>
992 <td nowrap valign=top
><tt>00</tt> </td>
993 <td align=left
>water, canal or river
</td>
997 <td nowrap valign=top
><tt>01</tt> </td>
998 <td align=left
>coast or riverbank
</td>
1002 <td nowrap valign=top
><tt>10</tt>..
<tt>1B
</tt> </td>
1003 <td align=left
>canal locks
1006 <td nowrap valign=top
><tt>10</tt> </td>
1007 <td align=left
>middle part, (SW-NE direction)
</td>
1010 <td nowrap valign=top
><tt>11</tt> </td>
1011 <td align=left
>middle part, (NW-SE direction)
</td>
1014 <td nowrap valign=top
><tt>12</tt> </td>
1015 <td align=left
>middle part, (NE-SW direction)
</td>
1018 <td nowrap valign=top
><tt>13</tt> </td>
1019 <td align=left
>middle part, (SE-NW direction)
</td>
1022 <td nowrap valign=top
><tt>14</tt> </td>
1023 <td align=left
>lower part, (SW-NE direction)
</td>
1026 <td nowrap valign=top
><tt>15</tt> </td>
1027 <td align=left
>lower part, (NW-SE direction)
</td>
1030 <td nowrap valign=top
><tt>16</tt> </td>
1031 <td align=left
>lower part, (NE-SW direction)
</td>
1034 <td nowrap valign=top
><tt>17</tt> </td>
1035 <td align=left
>lower part, (SE-NW direction)
</td>
1038 <td nowrap valign=top
><tt>18</tt> </td>
1039 <td align=left
>upper part, (SW-NE direction)
</td>
1042 <td nowrap valign=top
><tt>19</tt> </td>
1043 <td align=left
>upper part, (NW-SE direction)
</td>
1046 <td nowrap valign=top
><tt>1A
</tt> </td>
1047 <td align=left
>upper part, (NE-SW direction)
</td>
1050 <td nowrap valign=top
><tt>1B
</tt> </td>
1051 <td align=left
>upper part, (SE-NW direction)
</td>
1058 <td nowrap valign=top
><tt>80</tt>..
<tt>83</tt> </td>
1059 <td align=left
>ship depots
1062 <td nowrap valign=top
><tt>80</tt> </td>
1063 <td align=left
>ship depot, NE part (X direction)
</td>
1066 <td nowrap valign=top
><tt>81</tt> </td>
1067 <td align=left
>ship depot, SW part (X direction)
</td>
1070 <td nowrap valign=top
><tt>82</tt> </td>
1071 <td align=left
>ship depot, NW part (Y direction)
</td>
1074 <td nowrap valign=top
><tt>83</tt> </td>
1075 <td align=left
>ship depot, SE part (Y direction)
</td>
1086 <tr bgcolor=
"#CCCCCC">
1087 <td valign=top nowrap
><strong><a name=
"Class7"><tt> 7 </tt></a></strong></td>
1088 <td><strong>Void
</strong></td>
1091 <td valign=top nowrap
> </td>
1092 <td>Tiles of this class form an invisible, one tile wide border at the south (bottom) edges of the map,
<br>
1093 so as to protect several algorithms from the consequences of a wraparound at the edges.
1097 <tr bgcolor=
"#CCCCCC">
1098 <td valign=top nowrap
><strong><a name=
"Class8"><tt> 8</tt></a></strong></td>
1099 <td><strong>Industries
</strong></td>
1102 <td valign=top nowrap
> </td>
1105 <li>m1 bit
7: clear = under construction
1107 <li>m1 bits
6.
.5 : Water class (sea, canal, river or land)
1108 <li>m1 bits
3.
.2: construction counter, for buildings under construction incremented on every periodic tile processing
</li>
1109 <li>m1 bits
1.
.0: stage of construction (
<tt>3</tt> = completed), incremented when the construction counter wraps around
<br>
1110 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>
1113 <li>m2: index into the array of industries
</li>
1114 <li>m3: random bits (NewGRF)
</li>
1115 <li>m4: animation loop
</li>
1116 <li>m5: type (plus m6 bit
2):
<br>
1117 <small>(note: this is not the same as the industry type, which is stored in the array of industries)
</small>
1121 <td nowrap valign=top
><tt>00</tt>..
<tt>06</tt> </td>
1122 <td align=left
>coal mine
1125 <td nowrap valign=top
><tt>00</tt> </td>
1126 <td align=left
>wheel tower when not animated
</td>
1129 <td nowrap valign=top
><tt>01</tt> </td>
1130 <td align=left
>wheel tower when animated
<br>
1131 animation state in m7 bits
5.
.0; m7 bit
6 set = sound already generated
</td>
1138 <td nowrap valign=top
><tt>07</tt>..
<tt>0A
</tt> </td>
1139 <td align=left
>power station
1142 <td nowrap valign=top
><tt>08</tt> </td>
1143 <td align=left
>chimney
</td>
1146 <td nowrap valign=top
><tt>0A
</tt> </td>
1147 <td align=left
>transformer; animation progress in m7(valid range
<tt>0</tt>..
<tt>7</tt>)
</td>
1154 <td nowrap valign=top
><tt>0B
</tt>..
<tt>0F
</tt> </td>
1155 <td align=left
>sawmill
</td>
1159 <td nowrap valign=top
><tt>10</tt>..
<tt>11</tt> </td>
1160 <td align=left
>forest
1163 <td nowrap valign=top
><tt>11</tt> </td>
1164 <td align=left
>trees cut down
</td>
1171 <td nowrap valign=top
><tt>12</tt>..
<tt>17</tt> </td>
1172 <td align=left
>oil refinery
</td>
1176 <td nowrap valign=top
><tt>18</tt>..
<tt>1C
</tt> </td>
1177 <td align=left
>oil rig
</td>
1181 <td nowrap valign=top
><tt>1D
</tt>..
<tt>20</tt> </td>
1182 <td align=left
>oil wells
1185 <td nowrap valign=top
><tt>1D
</tt> </td>
1186 <td align=left
>not animated
</td>
1189 <td nowrap valign=top
><tt>1E
</tt>..
<tt>20</tt> </td>
1190 <td align=left
>various stages of animation; progress of animation in m7
</td>
1197 <td nowrap valign=top
><tt>21</tt>..
<tt>26</tt> </td>
1198 <td align=left
>farm
</td>
1202 <td nowrap valign=top
><tt>27</tt>..
<tt>2A
</tt> </td>
1203 <td align=left
>factory (temperate climate)
</td>
1207 <td nowrap valign=top
><tt>2B
</tt>..
<tt>2E
</tt> </td>
1208 <td align=left
>printing works
</td>
1212 <td nowrap valign=top
><tt>2F
</tt>..
<tt>33</tt> </td>
1213 <td align=left
>copper ore mine
1216 <td nowrap valign=top
><tt>2F
</tt> </td>
1217 <td align=left
>wheel tower when not animated
</td>
1220 <td nowrap valign=top
><tt>30</tt> </td>
1221 <td align=left
>wheel tower when animated; animation state in m7 bits
5.
.0; m7 bit
6 set = sound already generated
</td>
1224 <td nowrap valign=top
><tt>31</tt> </td>
1225 <td align=left
>chimney
</td>
1232 <td nowrap valign=top
><tt>34</tt>..
<tt>39</tt> </td>
1233 <td align=left
>steel mill
</td>
1237 <td nowrap valign=top
><tt>3A
</tt>..
<tt>3B
</tt> </td>
1238 <td align=left
>bank (temperate climate)
</td>
1242 <td nowrap valign=top
><tt>3C
</tt>..
<tt>3F
</tt> </td>
1243 <td align=left
>food processing plant
</td>
1247 <td nowrap valign=top
><tt>40</tt>..
<tt>47</tt> </td>
1248 <td align=left
>paper mill
</td>
1252 <td nowrap valign=top
><tt>48</tt>..
<tt>58</tt> </td>
1253 <td align=left
>gold mine
1256 <td nowrap valign=top
><tt>4F
</tt> </td>
1257 <td align=left
>wheel tower when not animated
</td>
1260 <td nowrap valign=top
><tt>58</tt> </td>
1261 <td align=left
>wheel tower when animated; animation state in m7 bits
5.
.0; m7 bit
6 set = sound already generated
</td>
1267 <td nowrap valign=top
><tt>59</tt>..
<tt>5A
</tt> </td>
1268 <td align=left
>bank (sub-arctic or sub-tropical climate)
</td>
1272 <td nowrap valign=top
><tt>5B
</tt>..
<tt>63</tt> </td>
1273 <td align=left
>diamond mine
</td>
1277 <td nowrap valign=top
><tt>64</tt>..
<tt>73</tt> </td>
1278 <td align=left
>iron ore mine
</td>
1282 <td nowrap valign=top
><tt>74</tt></td>
1283 <td align=left
>fruit plantation
</td>
1287 <td nowrap valign=top
><tt>75</tt></td>
1288 <td align=left
>rubber plantation
</td>
1292 <td nowrap valign=top
><tt>76</tt>..
<tt>77</tt> </td>
1293 <td align=left
>water supply
</td>
1297 <td nowrap valign=top
><tt>78</tt></td>
1298 <td align=left
>water tower
</td>
1302 <td nowrap valign=top
><tt>79</tt>..
<tt>7C
</tt> </td>
1303 <td align=left
>factory (sub-tropical climate)
</td>
1307 <td nowrap valign=top
><tt>7D
</tt>..
<tt>80</tt> </td>
1308 <td align=left
>lumber mill
</td>
1312 <td nowrap valign=top
><tt>81</tt>..
<tt>82</tt> </td>
1313 <td align=left
>candyfloss forest
1316 <td nowrap valign=top
><tt>82</tt> </td>
1317 <td align=left
>candyfloss 'trees' cut down
</td>
1324 <td nowrap valign=top
><tt>83</tt>..
<tt>86</tt> </td>
1325 <td align=left
>sweet factory
</td>
1329 <td nowrap valign=top
><tt>87</tt>..
<tt>88</tt> </td>
1330 <td align=left
>battery farm
1333 <td nowrap valign=top
><tt>88</tt> </td>
1334 <td align=left
>batteries 'reaped'
</td>
1341 <td nowrap valign=top
><tt>89</tt></td>
1342 <td align=left
>cola wells
</td>
1346 <td nowrap valign=top
><tt>8A
</tt>..
<tt>8D
</tt> </td>
1347 <td align=left
>toy shop
</td>
1351 <td nowrap valign=top
><tt>8E
</tt>..
<tt>93</tt> </td>
1352 <td align=left
>toy factory
1355 <td nowrap valign=top
><tt>8F
</tt> </td>
1356 <td align=left
>Animated part; animation state in m7 (valid range
<tt>00</tt>..
<tt>31</tt>)
<br>
1357 Tile animation is started (m4 zeroed) on the periodic processing.
<br>
1358 While the animation is in progress, m4 holds the number
1359 of animation cycles that have already taken place.
<br>
1360 when this number reaches
8 the animation is stopped.
</td>
1367 <td nowrap valign=top
><tt>94</tt>..
<tt>9B
</tt> </td>
1368 <td align=left
>plastic fountains (various stages of cyclic animation)
</td>
1372 <td nowrap valign=top
><tt>9C
</tt>..
<tt>9F
</tt> </td>
1373 <td align=left
>fizzy drink factory
</td>
1377 <td nowrap valign=top
><tt>A0
</tt>..
<tt>A3
</tt> </td>
1378 <td align=left
>bubble generator
1381 <td nowrap valign=top
><tt>A1
</tt> </td>
1382 <td align=left
>generators
</td>
1385 <td nowrap valign=top
><tt>A2
</tt> </td>
1386 <td align=left
>bubble capture facility; animation state in m7 (valid range
<tt>00</tt>..
<tt>27</tt>)
</td>
1393 <td nowrap valign=top
><tt>A4
</tt>..
<tt>A6
</tt> </td>
1394 <td align=left
>toffee quarry
1397 <td nowrap valign=top
><tt>A5
</tt> </td>
1398 <td align=left
>animated part; animation state in m3 (valid range
<tt>00</tt>..
<tt>45</tt>)
</td>
1405 <td nowrap valign=top
><tt>A7
</tt>..
<tt>AE
</tt> </td>
1406 <td align=left
>sugar mine
1409 <td nowrap valign=top
><tt>AE
</tt> </td>
1410 <td align=left
>animated part; animation state in m3 (valid range
<tt>00</tt>..
<tt>5F
</tt>)
</td>
1416 <td nowrap valign=top
><tt>AF
</tt>..
<tt>1FF
</tt> </td>
1417 <td align=left
>NewGRF industries industry
</td>
1421 <li>m6 bits
5.
.3: random triggers (NewGRF)
</li>
1422 <li>m6 bit
2: bit
8 of type (see m5)
</li>
1423 <li>m7: animation frame
</li>
1428 <tr bgcolor=
"#CCCCCC">
1429 <td valign=top nowrap
><strong><a name=
"Class9"><tt> 9</tt></a></strong></td>
1430 <td><strong>Tunnel / bridge
</strong></td>
1433 <td valign=top nowrap
> </td>
1436 <li style=
"color: blue">m1 bit
7: bit
4 of track type (more rail types patch)
</li>
1437 <li>m1 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a></li>
1438 <li style=
"color: blue">m2 bits
15.
.0: tunnel ID lookup (tunnel entrances only)
<br>
1439 <li style=
"color: blue">m2 bits
7.
.0: custom road bridge heads (flat bridge heads only)
<br>
1440 Road/tram bits below are XORed with the axial bridge direction road bits.
<br>
1441 A non-custom bridge head configuration will have a value of
0.
1443 <li>m2 bits
7.
.4: Road bits
<br>
1444 Valid only if m7 bit
6 is set
1446 <li>m2 bits
3.
.0: Tram bits
<br>
1447 Valid only if m7 bit
7 is set
1450 <table style=
"color: blue">
1452 <td align=left
>bit
0:
</td>
1456 <td align=left
>bit
1:
</td>
1460 <td align=left
>bit
2:
</td>
1464 <td align=left
>bit
3:
</td>
1469 <li>m3 bits
7.
.4:
<a href=
"#OwnershipInfo">owner
</a> of tram
</li>
1470 <li>m3 bits
3.
.0:
<a href=
"#RailType">track type
</a> for railway
</li>
1471 <li>m4:
<a href=
"#RoadType">Road-(sub-)types
</a></li>
1472 <li>m5 bit
4: pbs reservation state for railway
</li>
1473 <li>m5 bit
7 clear: tunnel entrance/exit
</li>
1474 <li>m5 bit
7 set: bridge ramp
1476 <li>m6 bits
5.
.2:
<a name=
"BridgeType">bridge type
</a>:
1479 <th align=left
>Type
</th>
1480 <th align=left
>Max. speed (mph)
</th>
1481 <th align=left
>Description
</th>
1485 <td nowrap valign=top
><tt>0</tt> </td>
1486 <td align=center
>20</td>
1487 <td align=left
>wooden
</td>
1491 <td nowrap valign=top
><tt>1</tt> </td>
1492 <td align=center
>30</td>
1493 <td align=left
>concrete
</td>
1497 <td nowrap valign=top
><tt>2</tt> </td>
1498 <td align=center
>40</td>
1499 <td align=left
>girder, steel
</td>
1503 <td nowrap valign=top
><tt>3</tt> </td>
1504 <td align=center
>50</td>
1505 <td align=left
>suspension, concrete
</td>
1509 <td nowrap valign=top
><tt>4</tt> </td>
1510 <td align=center
>60</td>
1511 <td align=left
>suspension, steel
</td>
1515 <td nowrap valign=top
><tt>5</tt> </td>
1516 <td align=center
>70</td>
1517 <td align=left
>suspension, steel
</td>
1521 <td nowrap valign=top
><tt>6</tt> </td>
1522 <td align=center
>100</td>
1523 <td align=left
>cantilever, steel
</td>
1527 <td nowrap valign=top
><tt>7</tt> </td>
1528 <td align=center
>130</td>
1529 <td align=left
>cantilever, steel
</td>
1533 <td nowrap valign=top
><tt>8</tt> </td>
1534 <td align=center
>150</td>
1535 <td align=left
>cantilever, steel
</td>
1539 <td nowrap valign=top
><tt>9</tt> </td>
1540 <td align=center
>160</td>
1541 <td align=left
>girder, steel
</td>
1545 <td nowrap valign=top
><tt>A
</tt> </td>
1546 <td align=center
>200</td>
1547 <td align=left
>tubular, steel
</td>
1551 <td nowrap valign=top
><tt>B
</tt> </td>
1552 <td align=center
>320</td>
1553 <td align=left
>tubular, steel
</td>
1557 <td nowrap valign=top
><tt>C
</tt> </td>
1558 <td align=center
>380</td>
1559 <td align=left
>tubular, silicon
</td>
1565 <li style=
"color: blue">m5 bits
6.
.5: signal simulation (signals on bridge/tunnels patch)
1566 <table style=
"color: blue">
1568 <td><tt>0</tt> </td>
1569 <td>no signal simulation
</td>
1573 <td><tt>1</tt> </td>
1574 <td>signal simulation entrance (bit
5 set)
</td>
1578 <td><tt>2</tt> </td>
1579 <td>signal simulation exit (bit
6 set)
</td>
1582 If signal simulation entrance or exit:
1584 <li>m6 bit
6: set = PBS signals, clear = block signals
</li>
1585 <li>m6 bit
1: set = semaphore signals, clear = light signals
</li>
1586 <li>m6 bit
0: set = signal shows green, clear = signal shows red
</li>
1587 <li>m2 bit
15: for bridge entrances only: storage for visual red/green state of signals starting from
15 is allocated outside the map array
</li>
1588 <li>m2 bits
14.
.0: for bridge entrances only: for signals
0.
.14 on bridge, signal is visually red if corresponding bit in
0.
.14 is set
</li>
1591 <li>m5 bits
3.
.2: transport type
1594 <td><tt>0</tt> </td>
1599 <td><tt>1</tt> </td>
1604 <td><tt>2</tt> </td>
1609 <li>m5 bits
1.
.0: direction onto the bridge / out of the tunnel
1612 <td><tt>0</tt> </td>
1617 <td><tt>1</tt> </td>
1622 <td><tt>2</tt> </td>
1627 <td><tt>3</tt> </td>
1632 <li>m7 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> of road
</li>
1633 <li>m7 bit
5 set = on snow or desert
</li>
1638 <tr bgcolor=
"#CCCCCC">
1639 <td valign=top nowrap
><strong><a name=
"ClassA"><tt> A
</tt></a></strong></td>
1640 <td><strong><tt>Objects
</tt></strong></td>
1643 <td valign=top nowrap
> </td>
1646 <li>m1 bits
6.
.5 : Water class (sea, canal, river or land)
</li>
1647 <li>m1 bits
4.
.0:
<a href=
"#OwnershipInfo">owner
</a> of the object (for lighthouses and transmitters normally
<tt>10</tt>)
</li>
1648 <li>m2: index into the array of objects, bits
0 to
15 (upper bits in m5)
</li>
1649 <li>m3: random bits
</li>
1650 <li>m5: index into the array of objects, bits
16 to
23 (lower bits in m2)
</li>
1651 <li>m7: animation counter
</li>
1656 <td colspan=
2>Classes
<tt>B
</tt> through
<tt>F
</tt> are reserved. The presence
1657 of a tile in one of the reserved classes will crash OTTD.
</td>
1663 Original Copyright
© 2003 by Marcin Grzegorczyk for TTDLX.
<br>
1664 Transport Tycoon and Transport Tycoon Deluxe are Copyright
© by Chris Sawyer.
<br>
1665 All the other trademarks are the property of their respective owners.
<br>