author | tron |
Mon, 20 Jun 2005 20:09:46 +0000 | |
changeset 1959 | c2c3a9850c2e |
parent 1487 | 4d76c7c82cfb |
child 1993 | 09205cf59fb4 |
permissions | -rw-r--r-- |
464 | 1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
2 |
<html> |
|
3 |
<head> |
|
4 |
<meta name="Author" content="Marcin Grzegorczyk"> |
|
1487
4d76c7c82cfb
(svn r1991) - Fix: Fix some of the gaping holes in the colouring, and added some additional info
Darkvater
parents:
1484
diff
changeset
|
5 |
<meta name="Description" content="Structure of OpenTTD (OTTD) landscape arrays"> |
464 | 6 |
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
1487
4d76c7c82cfb
(svn r1991) - Fix: Fix some of the gaping holes in the colouring, and added some additional info
Darkvater
parents:
1484
diff
changeset
|
7 |
<title>OpenTTD Landscape Internals</title> |
464 | 8 |
|
9 |
</head> |
|
10 |
<body> |
|
11 |
||
12 |
<h3><a name="Landscape">Landscape</a></h3> |
|
13 |
<p> |
|
1487
4d76c7c82cfb
(svn r1991) - Fix: Fix some of the gaping holes in the colouring, and added some additional info
Darkvater
parents:
1484
diff
changeset
|
14 |
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. |
464 | 15 |
</p> |
16 |
<p> |
|
1487
4d76c7c82cfb
(svn r1991) - Fix: Fix some of the gaping holes in the colouring, and added some additional info
Darkvater
parents:
1484
diff
changeset
|
17 |
OTTD's class-specific periodic tile processing routine is called once every +256 ticks for each tile. |
464 | 18 |
</p> |
19 |
||
20 |
<table border=1 cellpadding=3> |
|
21 |
<tr><th align=left>Class</th><th align=left>Meaning & details of encoding</th></tr> |
|
22 |
||
23 |
<tr><td valign=top nowrap><a name="Class0"><tt> 0 </tt></a></td><td> |
|
24 |
<ul> |
|
25 |
<li>map5 bits 4..0: tile type: |
|
26 |
<table> |
|
27 |
<tr><td nowrap valign=top><tt>00</tt> </td><td align=left>bare land</td></tr> |
|
28 |
<tr><td nowrap valign=top><tt>01</tt> </td><td align=left>1/3 grass</td></tr> |
|
29 |
<tr><td nowrap valign=top><tt>02</tt> </td><td align=left>2/3 grass</td></tr> |
|
30 |
<tr><td nowrap valign=top><tt>03</tt> </td><td align=left>full grass</td></tr> |
|
31 |
<tr><td nowrap valign=top><tt>07</tt> </td><td align=left>rough land</td></tr> |
|
32 |
<tr><td nowrap valign=top><tt>0B</tt> </td><td align=left>rocks</td></tr> |
|
33 |
<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> |
|
34 |
<tr><td nowrap valign=top><tt>10</tt> </td><td align=left>1/4 snow</td></tr> |
|
35 |
<tr><td nowrap valign=top><tt>11</tt> </td><td align=left>2/4 snow</td></tr> |
|
36 |
<tr><td nowrap valign=top><tt>12</tt> </td><td align=left>3/4 snow</td></tr> |
|
37 |
<tr><td nowrap valign=top><tt>13</tt> </td><td align=left>full snow</td></tr> |
|
38 |
<tr><td nowrap valign=top><tt>15</tt> </td><td align=left>partial desert</td></tr> |
|
39 |
<tr><td nowrap valign=top><tt>17</tt> </td><td align=left>full desert</td></tr> |
|
40 |
</table> |
|
41 |
</li> |
|
42 |
<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) |
|
43 |
<br>(for snow and desert, these bits are not used, tile is updated on every periodic processing) |
|
44 |
</li> |
|
45 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the tile (normally <tt>10</tt>) |
|
46 |
</li> |
|
47 |
<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 |
|
48 |
</li> |
|
49 |
</ul> |
|
50 |
</td></tr> |
|
51 |
||
52 |
<tr><td valign=top nowrap><a name="Class1"><tt> 1 </tt></a></td><td> |
|
53 |
map5 bit 7 clear: railway track |
|
54 |
<ul> |
|
55 |
<li>map5 bits 0..5: track layout: bit set = track present: |
|
56 |
<table> |
|
57 |
<tr><td nowrap valign=top>bit 0: </td><td align=left>in the X direction</td></tr> |
|
58 |
<tr><td nowrap valign=top>bit 1: </td><td align=left>in the Y direction</td></tr> |
|
59 |
<tr><td nowrap valign=top>bit 2: </td><td align=left>in the north corner (direction W-E)</td></tr> |
|
60 |
<tr><td nowrap valign=top>bit 3: </td><td align=left>in the south corner (direction W-E)</td></tr> |
|
61 |
<tr><td nowrap valign=top>bit 4: </td><td align=left>in the west corner (direction N-S)</td></tr> |
|
62 |
<tr><td nowrap valign=top>bit 5: </td><td align=left>in the east corner (direction N-S)</td></tr> |
|
63 |
</table></li> |
|
64 |
<li>map5 bit 6 set = with signals: |
|
65 |
<ul> |
|
66 |
<li>map3_lo bits 7..4: bit set = signal present: |
|
67 |
<ul> |
|
68 |
<li>For track in the X direction: |
|
69 |
<table> |
|
70 |
<tr><td nowrap valign=top>bit 6: </td><td align=left>signal in the SW direction</td></tr> |
|
71 |
<tr><td nowrap valign=top>bit 7: </td><td align=left>signal in the NE direction</td></tr> |
|
72 |
</table></li> |
|
73 |
<li>For track in the Y direction: |
|
74 |
<table> |
|
75 |
<tr><td nowrap valign=top>bit 6: </td><td align=left>signal in the NW direction</td></tr> |
|
76 |
<tr><td nowrap valign=top>bit 7: </td><td align=left>signal in the SE direction</td></tr> |
|
77 |
</table></li> |
|
78 |
<li>For tracks in the W-E direction: |
|
79 |
<table> |
|
80 |
<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> |
|
81 |
<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> |
|
82 |
<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> |
|
83 |
<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> |
|
84 |
</table></li> |
|
85 |
<li>For tracks in the N-S direction: |
|
86 |
<table> |
|
87 |
<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> |
|
88 |
<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> |
|
89 |
<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> |
|
90 |
<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> |
|
91 |
</table></li> |
|
92 |
</ul></li> |
|
93 |
<li>map2 bits 7..4: bit clear = signal shows red; same bits as in map3_lo</li> |
|
94 |
<li>OpenTTD bits in map3_hi: |
|
95 |
<table> |
|
96 |
<tr><td nowrap valign=top>bits 1..0: </td><td align=left>type of signal:</td></tr> |
|
97 |
<tr><td nowrap valign=top><tt>00</tt>: </td><td align=left>normal signals</td></tr> |
|
98 |
<tr><td nowrap valign=top><tt>01</tt>: </td><td align=left>pre-signals</td></tr> |
|
99 |
<tr><td nowrap valign=top><tt>10</tt>: </td><td align=left>exit-signals</td></tr> |
|
100 |
<tr><td nowrap valign=top><tt>11</tt>: </td><td align=left>combo-signals</td></tr> |
|
101 |
<tr><td nowrap valign=top>bit 2: </td><td align=left>set = semaphore signals, clear = light signals</td></tr> |
|
102 |
</table></li> |
|
103 |
</ul></li> |
|
104 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the track |
|
105 |
</li> |
|
106 |
<li>map2 bits 0..3: |
|
107 |
<table> |
|
108 |
<tr><td nowrap valign=top><tt>0</tt> </td><td align=left>on bare land</td></tr> |
|
109 |
<tr><td nowrap valign=top><tt>1</tt> </td><td align=left>on grass, no fences</td></tr> |
|
110 |
<tr><td nowrap valign=top><tt>2</tt> </td><td align=left>fence on the NW side</td></tr> |
|
111 |
<tr><td nowrap valign=top><tt>3</tt> </td><td align=left>fence on the SE side</td></tr> |
|
112 |
<tr><td nowrap valign=top><tt>4</tt> </td><td align=left>fences on the NW and SE sides</td></tr> |
|
113 |
<tr><td nowrap valign=top><tt>5</tt> </td><td align=left>fence on the NE side</td></tr> |
|
114 |
<tr><td nowrap valign=top><tt>6</tt> </td><td align=left>fence on the SW side</td></tr> |
|
115 |
<tr><td nowrap valign=top><tt>7</tt> </td><td align=left>fences on the NE and SW sides</td></tr> |
|
116 |
<tr><td nowrap valign=top><tt>8</tt> </td><td align=left>fence on the E side (track in the W corner)</td></tr> |
|
117 |
<tr><td nowrap valign=top><tt>9</tt> </td><td align=left>fence on the W side (track in the E corner)</td></tr> |
|
118 |
<tr><td nowrap valign=top><tt>A</tt> </td><td align=left>fence on the S side (track in the N corner)</td></tr> |
|
119 |
<tr><td nowrap valign=top><tt>B</tt> </td><td align=left>fence on the N side (track in the S corner)</td></tr> |
|
120 |
<tr><td nowrap valign=top><tt>C</tt> </td><td align=left>on snow or desert</td></tr> |
|
121 |
</table></li> |
|
122 |
<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 |
|
123 |
</li> |
|
124 |
</ul> |
|
125 |
map5 bits 7 and 6 set: railway depot / checkpoints |
|
126 |
<ul> |
|
127 |
<li>map5 value C0..C3: railway depot |
|
128 |
<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> |
|
129 |
<li>map5 value C4..C5: checkpoint |
|
130 |
<br>bit 0: clear = in X direction, set = in Y direction |
|
131 |
<br> |
|
132 |
<br> |
|
133 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the depot / checkpoint</li> |
|
134 |
<li>map3_lo bits 0..3 = <a href="#TrackType">track type</a></li> |
|
135 |
<li>map3_lo bit 4 = use custom sprite (valid only for the checkpoint)</li> |
|
136 |
<li>map3_hi = custom station id</li> |
|
137 |
</ul> |
|
138 |
</td></tr> |
|
139 |
||
140 |
<tr><td valign=top nowrap><a name="Class2"><tt> 2 </tt></a></td><td> |
|
141 |
map5 bits 7..4 clear: road |
|
142 |
<ul> |
|
143 |
<li>map5 bits 3..0: road layout: bit set = road piece present: |
|
144 |
<table> |
|
145 |
<tr><td nowrap valign=top>bit 0: </td><td align=left>NW piece</td></tr> |
|
146 |
<tr><td nowrap valign=top>bit 1: </td><td align=left>SW piece</td></tr> |
|
147 |
<tr><td nowrap valign=top>bit 2: </td><td align=left>SE piece</td></tr> |
|
148 |
<tr><td nowrap valign=top>bit 3: </td><td align=left>NE piece</td></tr> |
|
149 |
</table></li> |
|
150 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the road</li> |
|
1264
acebb2b01e32
(svn r1768) -Codechange: Store town index in _map2 of town tiles
celestar
parents:
464
diff
changeset
|
151 |
<li>map2: Index into the array of towns, 0 for non-town roads</li> |
acebb2b01e32
(svn r1768) -Codechange: Store town index in _map2 of town tiles
celestar
parents:
464
diff
changeset
|
152 |
<li>map3_hi bits 0..3: counter for the roadworks</li> |
acebb2b01e32
(svn r1768) -Codechange: Store town index in _map2 of town tiles
celestar
parents:
464
diff
changeset
|
153 |
<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> |
464 | 154 |
<li>map3_hi bit 7 set = on snow or desert</li> |
155 |
</ul> |
|
156 |
map5 bit 4 set, bits 7..5 clear: level crossing |
|
157 |
<ul> |
|
158 |
<li>map5 bit 3: clear - road in the X direction, set - road in the Y direction (railway track always perpendicular)</li> |
|
159 |
<li>map5 bit 2: set if crossing lights are on</li> |
|
160 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the railway track</li> |
|
1264
acebb2b01e32
(svn r1768) -Codechange: Store town index in _map2 of town tiles
celestar
parents:
464
diff
changeset
|
161 |
<li>map2: Index into the array of towns, 0 for non-town roads</li> |
464 | 162 |
<li>map3_lo bits 0..7: <a href="#OwnershipInfo">owner</a> of the road</li> |
163 |
<li>map3_hi bits 3..0: <a href="#TrackType">track type</a></li> |
|
1264
acebb2b01e32
(svn r1768) -Codechange: Store town index in _map2 of town tiles
celestar
parents:
464
diff
changeset
|
164 |
<li>map3_hi bits 4..6: <tt>0</tt> - on bare land, <tt>1</tt> - on grass, <tt>2</tt> or higher - paved</li> |
464 | 165 |
<li>map3_hi bit 7 set = on snow or desert</li> |
166 |
</ul> |
|
167 |
map5 bit 5 set: road depot |
|
168 |
<ul> |
|
169 |
<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> |
|
170 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the depot</li> |
|
171 |
<li>map3_hi bit 7 set = on snow or desert (not displayed, but set internally)</li> |
|
172 |
</ul> |
|
173 |
</td></tr> |
|
174 |
||
175 |
<tr><td valign=top nowrap><a name="Class3"><tt> 3 </tt></a></td><td> |
|
176 |
Town building |
|
177 |
<ul> |
|
1264
acebb2b01e32
(svn r1768) -Codechange: Store town index in _map2 of town tiles
celestar
parents:
464
diff
changeset
|
178 |
<li>map2: Index into the array of towns</li> |
acebb2b01e32
(svn r1768) -Codechange: Store town index in _map2 of town tiles
celestar
parents:
464
diff
changeset
|
179 |
<li>map3_hi: <a name="HouseTypes">town building type</a>: |
464 | 180 |
<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> |
181 |
<table> |
|
182 |
<tr><th align=left>Type </th><th align=left>Size </th><th align=left>Climates </th><th align=left>Description</th></tr> |
|
183 |
<tr><td nowrap valign=top><tt>00</tt> </td><td>1×1</td><td>temperate</td><td align=left>tall office block</td></tr> |
|
184 |
<tr><td nowrap valign=top><tt>01</tt> </td><td>1×1</td><td>temperate</td><td align=left>office block</td></tr> |
|
185 |
<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> |
|
186 |
<tr><td nowrap valign=top><tt>03</tt> </td><td>1×1</td><td>temperate</td><td align=left>church</td></tr> |
|
187 |
<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> |
|
188 |
<tr><td nowrap valign=top><tt>05</tt> </td><td>1×1</td><td>snow</td><td align=left>large office block</td></tr> |
|
189 |
<tr><td nowrap valign=top><tt>06</tt> </td><td>1×1</td><td>temperate</td><td align=left>town houses</td></tr> |
|
190 |
<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> |
|
191 |
<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> |
|
192 |
<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> |
|
193 |
<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> |
|
194 |
<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> |
|
195 |
<tr><td nowrap valign=top><tt>0D</tt> </td><td>1×1</td><td>temperate</td><td align=left>office block</td></tr> |
|
196 |
<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> |
|
197 |
<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> |
|
198 |
<tr><td nowrap valign=top><tt>12</tt> </td><td>1×1</td><td>temperate</td><td align=left>warehouse</td></tr> |
|
199 |
<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> |
|
200 |
<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> |
|
201 |
<tr><td nowrap valign=top><tt>18</tt> </td><td>1×1</td><td>temperate</td><td align=left>old houses</td></tr> |
|
202 |
<tr><td nowrap valign=top><tt>19</tt> </td><td>1×1</td><td>temperate</td><td align=left>cottages</td></tr> |
|
203 |
<tr><td nowrap valign=top><tt>1A</tt> </td><td>1×1</td><td>temperate</td><td align=left>houses</td></tr> |
|
204 |
<tr><td nowrap valign=top><tt>1B</tt> </td><td>1×1</td><td>temperate</td><td align=left>flats</td></tr> |
|
205 |
<tr><td nowrap valign=top><tt>1C</tt> </td><td>1×1</td><td>temperate</td><td align=left>tall office block</td></tr> |
|
206 |
<tr><td nowrap valign=top><tt>1D</tt> </td><td>1×1</td><td>temperate</td><td align=left>shops and offices</td></tr> |
|
207 |
<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> |
|
208 |
<tr><td nowrap valign=top><tt>1F</tt> </td><td>1×1</td><td>temperate</td><td align=left>theatre</td></tr> |
|
209 |
<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> |
|
210 |
<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> |
|
211 |
<tr><td nowrap valign=top><tt>25</tt> </td><td>1×1</td><td>sub-arctic</td><td align=left>houses</td></tr> |
|
212 |
<tr><td nowrap valign=top><tt>26</tt> </td><td>1×1</td><td>snow</td><td align=left>houses</td></tr> |
|
213 |
<tr><td nowrap valign=top><tt>27</tt> </td><td>1×1</td><td>temperate</td><td align=left>cinema</td></tr> |
|
214 |
<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> |
|
215 |
<tr><td nowrap valign=top><tt>2C</tt> </td><td>1×1</td><td>sub-arctic</td><td align=left>flats</td></tr> |
|
216 |
<tr><td nowrap valign=top><tt>2D</tt> </td><td>1×1</td><td>snow</td><td align=left>flats</td></tr> |
|
217 |
<tr><td nowrap valign=top><tt>2E</tt> </td><td>1×1</td><td>sub-arctic</td><td align=left>houses</td></tr> |
|
218 |
<tr><td nowrap valign=top><tt>2F</tt> </td><td>1×1</td><td>snow</td><td align=left>houses</td></tr> |
|
219 |
<tr><td nowrap valign=top><tt>30</tt> </td><td>1×1</td><td>sub-arctic</td><td align=left>houses</td></tr> |
|
220 |
<tr><td nowrap valign=top><tt>31</tt> </td><td>1×1</td><td>snow</td><td align=left>houses</td></tr> |
|
221 |
<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> |
|
222 |
<tr><td nowrap valign=top><tt>33</tt> </td><td>1×1</td><td>snow</td><td align=left>tall office block</td></tr> |
|
223 |
<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> |
|
224 |
<tr><td nowrap valign=top><tt>35</tt> </td><td>1×1</td><td>snow</td><td align=left>tall office block</td></tr> |
|
225 |
<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> |
|
226 |
<tr><td nowrap valign=top><tt>37</tt> </td><td>1×1</td><td>snow</td><td align=left>tall office block</td></tr> |
|
227 |
<tr><td nowrap valign=top><tt>38</tt> </td><td>1×1</td><td>sub-arctic</td><td align=left>houses</td></tr> |
|
228 |
<tr><td nowrap valign=top><tt>39</tt> </td><td>1×1</td><td>snow</td><td align=left>houses</td></tr> |
|
229 |
<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> |
|
230 |
<tr><td nowrap valign=top><tt>3B</tt> </td><td>1×1</td><td>snow</td><td align=left>shops and offices</td></tr> |
|
231 |
<tr><td nowrap valign=top><tt>3C</tt> </td><td>1×1</td><td>sub-arctic</td><td align=left>church</td></tr> |
|
232 |
<tr><td nowrap valign=top><tt>3D</tt> </td><td>1×1</td><td>snow</td><td align=left>church</td></tr> |
|
233 |
<tr><td nowrap valign=top><tt>3E</tt> </td><td>1×1</td><td>sub-arctic</td><td align=left>houses</td></tr> |
|
234 |
<tr><td nowrap valign=top><tt>3F</tt> </td><td>1×1</td><td>snow</td><td align=left>houses</td></tr> |
|
235 |
<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> |
|
236 |
<tr><td nowrap valign=top><tt>41</tt> </td><td>1×1</td><td>snow</td><td align=left>shops and offices</td></tr> |
|
237 |
<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> |
|
238 |
<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> |
|
239 |
<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> |
|
240 |
<tr><td nowrap valign=top><tt>47</tt> </td><td>1×1</td><td>snow</td><td align=left>shops and offices</td></tr> |
|
241 |
<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> |
|
242 |
<tr><td nowrap valign=top><tt>49</tt> </td><td>1×1</td><td>snow</td><td align=left>tall office block</td></tr> |
|
243 |
<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> |
|
244 |
<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> |
|
245 |
<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> |
|
246 |
<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> |
|
247 |
<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> |
|
248 |
<tr><td nowrap valign=top><tt>52</tt> </td><td>1×1</td><td>sub-tropical</td><td align=left>flats</td></tr> |
|
249 |
<tr><td nowrap valign=top><tt>53</tt> </td><td>1×1</td><td>sub-tropical</td><td align=left>church</td></tr> |
|
250 |
<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> |
|
251 |
<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> |
|
252 |
<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> |
|
253 |
<tr><td nowrap valign=top><tt>59</tt> </td><td>1×1</td><td>sub-tropical</td><td align=left>flats</td></tr> |
|
254 |
<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> |
|
255 |
<tr><td nowrap valign=top><tt>5B</tt> </td><td>1×1</td><td>toyland</td><td align=left>church</td></tr> |
|
256 |
<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> |
|
257 |
<tr><td nowrap valign=top><tt>62</tt> </td><td>1×1</td><td>toyland</td><td align=left>tall office block</td></tr> |
|
258 |
<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> |
|
259 |
<tr><td nowrap valign=top><tt>65</tt> </td><td>1×1</td><td>toyland</td><td align=left>tall office block</td></tr> |
|
260 |
<tr><td nowrap valign=top><tt>66</tt> </td><td>1×1</td><td>toyland</td><td align=left>igloo</td></tr> |
|
261 |
<tr><td nowrap valign=top><tt>67</tt> </td><td>1×1</td><td>toyland</td><td align=left>tepees</td></tr> |
|
262 |
<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> |
|
263 |
<tr><td nowrap valign=top><tt>6A</tt> </td><td>1×1</td><td>toyland</td><td align=left>tall office block</td></tr> |
|
264 |
<tr><td nowrap valign=top><tt>6B</tt> </td><td>1×1</td><td>toyland</td><td align=left>statue</td></tr> |
|
265 |
<tr><td nowrap valign=top><tt>6C</tt> </td><td>1×1</td><td>toyland</td><td align=left>teapot-house</td></tr> |
|
266 |
<tr><td nowrap valign=top><tt>6D</tt> </td><td>1×1</td><td>toyland</td><td align=left>piggy-bank</td></tr> |
|
267 |
<tr><td colspan=2></td></tr> <!-- spacer -- -- (and I don't mean a walk) --> |
|
268 |
</table></li> |
|
269 |
<li>map3_lo bits 7..6: stage of construction (<tt>3</tt> = completed)</li> |
|
270 |
<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> |
|
271 |
<li>for large office blocks (types <tt>04</tt> and <tt>05</tt>): |
|
272 |
<ul> |
|
273 |
<li>map_owner bits 6..0: position of the lift</li> |
|
274 |
<li>map_owner bit 7: if set the lift is moving</li> |
|
275 |
<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> |
|
276 |
</ul></li> |
|
277 |
</ul> |
|
278 |
</td></tr> |
|
279 |
||
280 |
<tr><td valign=top nowrap><a name="Class4"><tt> 4 </tt></a></td><td> |
|
281 |
Trees |
|
282 |
<ul> |
|
283 |
<li>map5 bits 7..6: number of trees minus one</li> |
|
284 |
<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> |
|
285 |
<li>map3_lo bits 7..0: type of trees: |
|
286 |
<table> |
|
287 |
<tr><td nowrap valign=top><tt>00</tt>..<tt>0B</tt> </td><td align=left>temperate climate trees</td></tr> |
|
288 |
<tr><td nowrap valign=top><tt>0C</tt>..<tt>13</tt> </td><td align=left>sub-arctic climate trees</td></tr> |
|
289 |
<tr><td nowrap valign=top><tt>14</tt>..<tt>1A</tt> </td><td align=left>rainforest trees</td></tr> |
|
290 |
<tr><td nowrap valign=top><tt>1B</tt> </td><td align=left>cactus plants</td></tr> |
|
291 |
<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> |
|
292 |
<tr><td nowrap valign=top><tt>20</tt>..<tt>28</tt> </td><td align=left>toyland trees</td></tr> |
|
293 |
</table> |
|
294 |
(note: the actually displayed set of trees depends on both type and number of trees) |
|
295 |
</li> |
|
296 |
<li>map3_hi bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none)</li> |
|
297 |
<li>map3_hi bits 4..2: type of hedge on the SE border of the tile (1 through 6, or 0=none)</li> |
|
298 |
<li>map2 bits 5..4: |
|
299 |
<table> |
|
300 |
<tr><td nowrap valign=top><tt>0</tt> </td><td align=left>on grass</td></tr> |
|
301 |
<tr><td nowrap valign=top><tt>1</tt> </td><td align=left>on rough land</td></tr> |
|
302 |
<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) |
|
303 |
</td></tr> |
|
304 |
</table></li> |
|
305 |
<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> |
|
306 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li> |
|
307 |
</ul> |
|
308 |
</td></tr> |
|
309 |
||
310 |
<tr><td valign=top nowrap><a name="Class5"><tt> 5 </tt></a></td><td> |
|
311 |
Station tile |
|
312 |
<ul> |
|
313 |
<li>map5: tile type: |
|
314 |
<table> |
|
315 |
<tr><td nowrap valign=top><tt>00</tt>..<tt>07</tt> </td><td align=left>railway station |
|
316 |
<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 |
|
317 |
<br>bit 0: clear = in X direction, set = in Y direction |
|
318 |
</td></tr> |
|
319 |
<tr><td nowrap valign=top><tt>08</tt>..<tt>33</tt> </td><td align=left>large airport |
|
320 |
<table> |
|
321 |
<tr><td nowrap valign=top><tt>0B</tt> </td><td align=left>pad 1</td></tr> |
|
322 |
<tr><td nowrap valign=top><tt>16</tt>..<tt>19</tt> </td><td align=left>runway middle</td></tr> |
|
323 |
<tr><td nowrap valign=top><tt>1A</tt> </td><td align=left>runway ending</td></tr> |
|
324 |
<tr><td nowrap valign=top><tt>1C</tt> </td><td align=left>control tower</td></tr> |
|
325 |
<tr><td nowrap valign=top><tt>20</tt> </td><td align=left>hangar</td></tr> |
|
326 |
<tr><td nowrap valign=top><tt>21</tt> </td><td align=left>pad 3</td></tr> |
|
327 |
<tr><td nowrap valign=top><tt>22</tt> </td><td align=left>pad 2</td></tr> |
|
328 |
<tr><td nowrap valign=top><tt>27</tt>..<tt>32</tt> </td><td align=left>radar (animated)</td></tr> |
|
329 |
<tr><td nowrap valign=top><tt>33</tt> </td><td align=left>transmitter</td></tr> |
|
330 |
</table> |
|
331 |
The initial layout of a large airport is (rows in Y direction, columns in X direction): |
|
332 |
<pre> |
|
333 |
1F 1B 1E 33 26 1A |
|
334 |
09 24 0B 0C 0D 16 |
|
335 |
21 1D 23 0E 0F 17 |
|
336 |
09 22 0D 11 10 18 |
|
337 |
09 08 14 13 12 19 |
|
338 |
20 0A 15 1C 27 1A |
|
339 |
</pre> |
|
340 |
</td></tr> |
|
341 |
<tr><td nowrap valign=top><tt>34</tt>..<tt>41</tt> </td><td align=left>small airport |
|
342 |
<table> |
|
343 |
<tr><td nowrap valign=top><tt>3A</tt>..<tt>3D</tt> </td><td align=left>field with the wind meter (animated)</td></tr> |
|
344 |
<tr><td nowrap valign=top><tt>3E</tt> </td><td align=left>runway south ending</td></tr> |
|
345 |
<tr><td nowrap valign=top><tt>3F</tt> </td><td align=left>runway middle</td></tr> |
|
346 |
<tr><td nowrap valign=top><tt>40</tt> </td><td align=left>runway north ending</td></tr> |
|
347 |
<tr><td nowrap valign=top><tt>41</tt> </td><td align=left>hangar</td></tr> |
|
348 |
</table> |
|
349 |
The initial layout of a small airport is (rows in Y direction, columns in X direction): |
|
350 |
<pre> |
|
351 |
36 3A 40 |
|
352 |
35 39 3F |
|
353 |
34 38 3F |
|
354 |
41 37 3E |
|
355 |
</pre> |
|
356 |
</td></tr> |
|
357 |
<tr><td nowrap valign=top><tt>42</tt> </td><td align=left>heliport</td></tr> |
|
358 |
<tr><td nowrap valign=top><tt>43</tt>..<tt>46</tt> </td><td align=left>lorry loading area; |
|
359 |
exit towards: <tt>43</tt> - NE, <tt>44</tt> - SE, <tt>45</tt> - SW, <tt>46</tt> - NW |
|
360 |
</td></tr> |
|
361 |
<tr><td nowrap valign=top><tt>47</tt>..<tt>4A</tt> </td><td align=left>bus station; |
|
362 |
exit towards: <tt>47</tt> - NE, <tt>48</tt> - SE, <tt>49</tt> - SW, <tt>4A</tt> - NW |
|
363 |
<tr><td nowrap valign=top><tt>4B</tt> </td><td align=left>oilfield</td></tr> |
|
364 |
<tr><td nowrap valign=top><tt>4C</tt>..<tt>51</tt> </td><td align=left>ship dock; |
|
365 |
<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 |
|
366 |
<tr><td nowrap valign=top><tt>52</tt> </td><td align=left>buoy</td></tr> |
|
367 |
</td></tr> |
|
368 |
<tr><td colspan=2></td></tr> <!-- spacer --> |
|
369 |
</table> |
|
370 |
</li> |
|
371 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the station</li> |
|
372 |
<li>map2: index into the <a href="#_StationArray">array of stations</a></li> |
|
373 |
<li>map3_lo bits 0..3: <a href="#TrackType">track type</a> for railway stations, must be 0 for all the other stations</li> |
|
374 |
<li>map3_lo bit 4 = use custom sprite (valid only railway stations FOR NOW)</li> |
|
375 |
<li>map3_hi = custom station id</li> |
|
376 |
</ul> |
|
377 |
</td></tr> |
|
378 |
||
379 |
<tr><td valign=top nowrap><a name="Class6"><tt> 6 </tt></a></td><td> |
|
380 |
<ul> |
|
381 |
<li>map5: tile type: |
|
382 |
<table> |
|
383 |
<tr><td nowrap valign=top><tt>00</tt> </td><td align=left>water</td></tr> |
|
384 |
<tr><td nowrap valign=top><tt>01</tt> </td><td align=left>coast or riverbank</td></tr> |
|
385 |
<tr><td nowrap valign=top><tt>10</tt>..<tt>1B</tt> </td><td align=left>canal locks |
|
386 |
<table> |
|
387 |
<tr><td nowrap valign=top><tt>10</tt> </td><td align=left>middle part, (SW-NE direction) |
|
388 |
<tr><td nowrap valign=top><tt>11</tt> </td><td align=left>middle part, (NW-SE direction) |
|
389 |
<tr><td nowrap valign=top><tt>12</tt> </td><td align=left>middle part, (NE-SW direction) |
|
390 |
<tr><td nowrap valign=top><tt>13</tt> </td><td align=left>middle part, (SE-NW direction) |
|
391 |
<tr><td nowrap valign=top><tt>14</tt> </td><td align=left>lower part, (SW-NE direction) |
|
392 |
<tr><td nowrap valign=top><tt>15</tt> </td><td align=left>lower part, (NW-SE direction) |
|
393 |
<tr><td nowrap valign=top><tt>16</tt> </td><td align=left>lower part, (NE-SW direction) |
|
394 |
<tr><td nowrap valign=top><tt>17</tt> </td><td align=left>lower part, (SE-NW direction) |
|
395 |
<tr><td nowrap valign=top><tt>18</tt> </td><td align=left>upper part, (SW-NE direction) |
|
396 |
<tr><td nowrap valign=top><tt>19</tt> </td><td align=left>upper part, (NW-SE direction) |
|
397 |
<tr><td nowrap valign=top><tt>1A</tt> </td><td align=left>upper part, (NE-SW direction) |
|
398 |
<tr><td nowrap valign=top><tt>1B</tt> </td><td align=left>upper part, (SE-NW direction) |
|
399 |
</table> |
|
400 |
<tr><td nowrap valign=top><tt>80</tt>..<tt>83</tt> </td><td align=left>ship depots |
|
401 |
<table> |
|
402 |
<tr><td nowrap valign=top><tt>80</tt> </td><td align=left>ship depot, NE part (X direction) |
|
403 |
<tr><td nowrap valign=top><tt>81</tt> </td><td align=left>ship depot, SW part (X direction) |
|
404 |
<tr><td nowrap valign=top><tt>82</tt> </td><td align=left>ship depot, NW part (Y direction) |
|
405 |
<tr><td nowrap valign=top><tt>83</tt> </td><td align=left>ship depot, SE part (Y direction) |
|
406 |
||
407 |
</td></tr> |
|
408 |
||
409 |
</table> |
|
410 |
</td></tr> |
|
411 |
</table></li> |
|
412 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> (for water and coasts normally <tt>11</tt>)</li> |
|
413 |
</ul> |
|
414 |
</td></tr> |
|
415 |
||
416 |
<tr><td valign=top nowrap><a name="Class7"><tt> 7 </tt></a></td><td> |
|
417 |
Void |
|
418 |
<p> |
|
419 |
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. |
|
420 |
</p> |
|
421 |
</td></tr> |
|
422 |
||
423 |
<tr><td valign=top nowrap><a name="Class8"><tt> 8 </tt></a></td><td> |
|
424 |
Industry tile |
|
425 |
<ul> |
|
426 |
<li>map5: type: |
|
427 |
<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> |
|
428 |
<table> |
|
429 |
<tr><td nowrap valign=top><tt>00</tt>..<tt>06</tt> </td><td align=left>coal mine |
|
430 |
<table> |
|
431 |
<tr><td nowrap valign=top><tt>00</tt> </td><td align=left>wheel tower when not animated</td></tr> |
|
432 |
<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> |
|
433 |
</table> |
|
434 |
</td></tr> |
|
435 |
<tr><td nowrap valign=top><tt>07</tt>..<tt>0A</tt> </td><td align=left>power station |
|
436 |
<table> |
|
437 |
<tr><td nowrap valign=top><tt>08</tt> </td><td align=left>chimney</td></tr> |
|
438 |
<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> |
|
439 |
</table> |
|
440 |
</td></tr> |
|
441 |
<tr><td nowrap valign=top><tt>0B</tt>..<tt>0F</tt> </td><td align=left>sawmill</td></tr> |
|
442 |
<tr><td nowrap valign=top><tt>10</tt>..<tt>11</tt> </td><td align=left>forest |
|
443 |
<table> |
|
444 |
<tr><td nowrap valign=top><tt>11</tt> </td><td align=left>trees cut down</td></tr> |
|
445 |
</table> |
|
446 |
</td></tr> |
|
447 |
<tr><td nowrap valign=top><tt>12</tt>..<tt>17</tt> </td><td align=left>oil refinery</td></tr> |
|
448 |
<tr><td nowrap valign=top><tt>18</tt>..<tt>1C</tt> </td><td align=left>oil rig</td></tr> |
|
449 |
<tr><td nowrap valign=top><tt>1D</tt>..<tt>20</tt> </td><td align=left>oil wells |
|
450 |
<table> |
|
451 |
<tr><td nowrap valign=top><tt>1D</tt> </td><td align=left>not animated</td></tr> |
|
452 |
<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> |
|
453 |
</table> |
|
454 |
</td></tr> |
|
455 |
<tr><td nowrap valign=top><tt>21</tt>..<tt>26</tt> </td><td align=left>farm</td></tr> |
|
456 |
<tr><td nowrap valign=top><tt>27</tt>..<tt>2A</tt> </td><td align=left>factory (temperate climate)</td></tr> |
|
457 |
<tr><td nowrap valign=top><tt>2B</tt>..<tt>2E</tt> </td><td align=left>printing works</td></tr> |
|
458 |
<tr><td nowrap valign=top><tt>2F</tt>..<tt>33</tt> </td><td align=left>copper ore mine |
|
459 |
<table> |
|
460 |
<tr><td nowrap valign=top><tt>2F</tt> </td><td align=left>wheel tower when not animated</td></tr> |
|
461 |
<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> |
|
462 |
<tr><td nowrap valign=top><tt>31</tt> </td><td align=left>chimney</td></tr> |
|
463 |
</table> |
|
464 |
</td></tr> |
|
465 |
<tr><td nowrap valign=top><tt>34</tt>..<tt>39</tt> </td><td align=left>steel mill</td></tr> |
|
466 |
<tr><td nowrap valign=top><tt>3A</tt>..<tt>3B</tt> </td><td align=left>bank (temperate climate)</td></tr> |
|
467 |
<tr><td nowrap valign=top><tt>3C</tt>..<tt>3F</tt> </td><td align=left>food processing plant</td></tr> |
|
468 |
<tr><td nowrap valign=top><tt>40</tt>..<tt>47</tt> </td><td align=left>paper mill</td></tr> |
|
469 |
<tr><td nowrap valign=top><tt>48</tt>..<tt>58</tt> </td><td align=left>gold mine |
|
470 |
<table> |
|
471 |
<tr><td nowrap valign=top><tt>4F</tt> </td><td align=left>wheel tower when not animated</td></tr> |
|
472 |
<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> |
|
473 |
</table> |
|
474 |
</td></tr> |
|
475 |
<tr><td nowrap valign=top><tt>59</tt>..<tt>5A</tt> </td><td align=left>bank (sub-arctic or sub-tropical climate)</td></tr> |
|
476 |
<tr><td nowrap valign=top><tt>5B</tt>..<tt>63</tt> </td><td align=left>diamond mine</td></tr> |
|
477 |
<tr><td nowrap valign=top><tt>64</tt>..<tt>73</tt> </td><td align=left>iron ore mine</td></tr> |
|
478 |
<tr><td nowrap valign=top><tt>74</tt></td><td align=left>fruit plantation</td></tr> |
|
479 |
<tr><td nowrap valign=top><tt>75</tt></td><td align=left>rubber plantation</td></tr> |
|
480 |
<tr><td nowrap valign=top><tt>76</tt>..<tt>77</tt> </td><td align=left>water supply</td></tr> |
|
481 |
<tr><td nowrap valign=top><tt>78</tt></td><td align=left>water tower</td></tr> |
|
482 |
<tr><td nowrap valign=top><tt>79</tt>..<tt>7C</tt> </td><td align=left>factory (sub-tropical climate)</td></tr> |
|
483 |
<tr><td nowrap valign=top><tt>7D</tt>..<tt>80</tt> </td><td align=left>lumber mill</td></tr> |
|
484 |
<tr><td nowrap valign=top><tt>81</tt>..<tt>82</tt> </td><td align=left>candyfloss forest |
|
485 |
<table> |
|
486 |
<tr><td nowrap valign=top><tt>82</tt> </td><td align=left>candyfloss 'trees' cut down</td></tr> |
|
487 |
</table> |
|
488 |
</td></tr> |
|
489 |
<tr><td nowrap valign=top><tt>83</tt>..<tt>86</tt> </td><td align=left>sweet factory</td></tr> |
|
490 |
<tr><td nowrap valign=top><tt>87</tt>..<tt>88</tt> </td><td align=left>battery farm |
|
491 |
<table> |
|
492 |
<tr><td nowrap valign=top><tt>88</tt> </td><td align=left>batteries 'reaped'</td></tr> |
|
493 |
</table> |
|
494 |
</td></tr> |
|
495 |
<tr><td nowrap valign=top><tt>89</tt></td><td align=left>cola wells</td></tr> |
|
496 |
<tr><td nowrap valign=top><tt>8A</tt>..<tt>8D</tt> </td><td align=left>toy shop</td></tr> |
|
497 |
<tr><td nowrap valign=top><tt>8E</tt>..<tt>93</tt> </td><td align=left>toy factory |
|
498 |
<table> |
|
499 |
<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> |
|
500 |
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> |
|
501 |
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> |
|
502 |
</table> |
|
503 |
</td></tr> |
|
504 |
<tr><td nowrap valign=top><tt>94</tt>..<tt>9B</tt> </td><td align=left>plastic fountains (various stages of cyclic animation)</td></tr> |
|
505 |
<tr><td nowrap valign=top><tt>9C</tt>..<tt>9F</tt> </td><td align=left>fizzy drink factory</td></tr> |
|
506 |
<tr><td nowrap valign=top><tt>A0</tt>..<tt>A3</tt> </td><td align=left>bubble generator |
|
507 |
<table> |
|
508 |
<tr><td nowrap valign=top><tt>A1</tt> </td><td align=left>generators</td></tr> |
|
509 |
<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> |
|
510 |
</table> |
|
511 |
</td></tr> |
|
512 |
<tr><td nowrap valign=top><tt>A4</tt>..<tt>A6</tt> </td><td align=left>toffee quarry |
|
513 |
<table> |
|
514 |
<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> |
|
515 |
</table> |
|
516 |
</td></tr> |
|
517 |
<tr><td nowrap valign=top><tt>A7</tt>..<tt>AE</tt> </td><td align=left>sugar mine |
|
518 |
<table> |
|
519 |
<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> |
|
520 |
</table> |
|
521 |
</td></tr> |
|
522 |
<tr><td colspan=2></td></tr> <!-- spacer --> |
|
523 |
</table></li> |
|
524 |
<li>map2: index into the <a href="#_IndustryArray">array of industries</a> |
|
525 |
</li> |
|
526 |
<li>map_owner bit 7: clear = under construction |
|
527 |
<ul> |
|
528 |
<li>map_owner bits 4..2: construction counter, for buildings under construction incremented on every periodic tile processing |
|
529 |
</li> |
|
530 |
</ul></li> |
|
531 |
<li>map_owner bits 1..0: stage of construction (<tt>3</tt> = completed), incremented when the construction counter wraps around |
|
532 |
<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) |
|
533 |
</li> |
|
534 |
</ul> |
|
535 |
</td></tr> |
|
536 |
||
537 |
<tr><td valign=top nowrap><a name="Class9"><tt> 9 </tt></a></td><td> |
|
538 |
map5 bits 7..4 clear: tunnel entrance/exit |
|
539 |
<ul> |
|
540 |
<li>map5 bits 3..2: <tt>0</tt> - railway tunnel, <tt>1</tt> - road tunnel</li> |
|
541 |
<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> |
|
542 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the tunnel</li> |
|
543 |
<li>map3_lo bits 3..0 = <a href="#TrackType">track type</a> for railway tunnel, must be 0 for road tunnel</li> |
|
544 |
<li>map3_hi bit 7 set = on snow or desert</li> |
|
545 |
</ul> |
|
546 |
map5 bit 7 set: bridge |
|
547 |
<ul><li> |
|
548 |
map5 bit 6 clear: bridge ending |
|
549 |
<ul> |
|
550 |
<li>map5 bit 5: clear - northern, set - southern ending</li> |
|
551 |
<li>map3_lo bits 3..0 = <a href="#TrackType">type of track</a> on the bridge, must be 0 for road bridge</li> |
|
552 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the bridge</li> |
|
553 |
</ul> |
|
554 |
map5 bit 6 set: bridge middle part |
|
555 |
<ul> |
|
556 |
<li>map5 bit 5 clear: |
|
557 |
<ul> |
|
558 |
<li>map5 bits 4..3: land under bridge: <tt>0</tt> - grass, snow or desert, <tt>1</tt> - water</li> |
|
559 |
</ul> |
|
560 |
map5 bit 5 set: |
|
561 |
<ul> |
|
562 |
<li>map5 bits 4..3: transport route under bridge: <tt>0</tt> - railway, <tt>1</tt> - road</li> |
|
563 |
</ul> |
|
564 |
<li>map3_lo bits 7..4 = <a href="#TrackType">type of track</a> on the bridge, must be 0 for road bridge</li> |
|
565 |
<li>map3_lo bits 3..0 = <a href="#TrackType">type of track</a> under the bridge, if any</li> |
|
566 |
<li>map2 bits 3..0: bridge piece (<tt>0</tt>..<tt>5</tt>) |
|
567 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the land under bridge</li> |
|
568 |
</ul></li> |
|
569 |
<li>map5 bits 2..1: <tt>0</tt> - railway bridge, <tt>1</tt> - road bridge</li> |
|
570 |
<li>map5 bit 0: clear - bridge in the X direction, set - bridge in the Y direction</li> |
|
571 |
<li>map2 bits 7..4: <a name="BridgeType">bridge type</a>: |
|
572 |
<table> |
|
573 |
<tr><th align=left>Type </th><th align=left>Max. speed (mph) </th><th align=left>Description</th></tr> |
|
574 |
<tr><td nowrap valign=top><tt>0</tt> </td><td align=center>20</td><td align=left>wooden</td></tr> |
|
575 |
<tr><td nowrap valign=top><tt>1</tt> </td><td align=center>30</td><td align=left>concrete</td></tr> |
|
576 |
<tr><td nowrap valign=top><tt>2</tt> </td><td align=center>40</td><td align=left>girder, steel</td></tr> |
|
577 |
<tr><td nowrap valign=top><tt>3</tt> </td><td align=center>50</td><td align=left>suspension, concrete</td></tr> |
|
578 |
<tr><td nowrap valign=top><tt>4</tt> </td><td align=center>60</td><td align=left>suspension, steel</td></tr> |
|
579 |
<tr><td nowrap valign=top><tt>5</tt> </td><td align=center>70</td><td align=left>suspension, steel</td></tr> |
|
580 |
<tr><td nowrap valign=top><tt>6</tt> </td><td align=center>100</td><td align=left>cantilever, steel</td></tr> |
|
581 |
<tr><td nowrap valign=top><tt>7</tt> </td><td align=center>130</td><td align=left>cantilever, steel</td></tr> |
|
582 |
<tr><td nowrap valign=top><tt>8</tt> </td><td align=center>150</td><td align=left>cantilever, steel</td></tr> |
|
583 |
<tr><td nowrap valign=top><tt>9</tt> </td><td align=center>160</td><td align=left>girder, steel</td></tr> |
|
584 |
<tr><td nowrap valign=top><tt>A</tt> </td><td align=center>200</td><td align=left>tubular, steel</td></tr> |
|
585 |
</table></li> |
|
586 |
<li>map3_hi bit 7 set = on snow or desert</li> |
|
587 |
</ul> |
|
588 |
</td></tr> |
|
589 |
||
590 |
<tr><td valign=top nowrap><a name="ClassA"><tt> A </tt></a></td><td> |
|
591 |
<ul> |
|
592 |
<li>map5: tile type: |
|
593 |
<table> |
|
594 |
<tr><td nowrap valign=top><tt>00</tt> </td><td align=left>transmitter</td></tr> |
|
595 |
<tr><td nowrap valign=top><tt>01</tt> </td><td align=left>lighthouse</td></tr> |
|
596 |
<tr><td nowrap valign=top><tt>02</tt> </td><td align=left>company statue</td></tr> |
|
597 |
<tr><td nowrap valign=top><tt>03</tt> </td><td align=left>company-owned land</td></tr> |
|
598 |
<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> |
|
599 |
</table> |
|
600 |
</li> |
|
601 |
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li> |
|
602 |
</ul> |
|
603 |
</td></tr> |
|
604 |
||
605 |
<tr><td colspan=2> |
|
1487
4d76c7c82cfb
(svn r1991) - Fix: Fix some of the gaping holes in the colouring, and added some additional info
Darkvater
parents:
1484
diff
changeset
|
606 |
Classes <tt>B</tt> through <tt>F</tt> are reserved. The presence of a tile in one of the reserved classes will crash OTTD. |
464 | 607 |
</td></tr> |
608 |
</table> |
|
609 |
||
610 |
||
611 |
<hr> |
|
1487
4d76c7c82cfb
(svn r1991) - Fix: Fix some of the gaping holes in the colouring, and added some additional info
Darkvater
parents:
1484
diff
changeset
|
612 |
Original Copyright © 2003 by Marcin Grzegorczyk for TTDLX.<br> |
464 | 613 |
Transport Tycoon and Transport Tycoon Deluxe are Copyright © by Chris Sawyer. All the other trademarks are the property of their respective owners.<br> |
614 |
||
615 |
</body> |
|
616 |
</html> |