Remove costly recalculation of a date format we already have.
[openttd-joker.git] / docs / landscape.html
blobab63b3c290e4d51c61fc8915b330210312ea6f6b
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
4 <head>
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>
9 </head>
11 <body>
13 <h3><a name="Landscape">Landscape</a></h3>
14 <p>
15 For a graphical representation of the tile-layout have a look at
16 <a href="landscape_grid.html">Landscape grid</a> page.
17 </p>
18 <p>Nine attributes (counting &quot;<span style="font-weight: bold;">type</span>&quot; and
19 &quot;<span style="font-weight: bold;">height</span>&quot;) hold the informations about a tile.<BR>
20 These attributes are referred to as
21 &quot;<span style="font-weight: bold;">type</span>",
22 &quot;<span style="font-weight: bold;">height</span>",
23 &quot;<span style="font-weight: bold;">m1</span>&quot;, &quot;<span style="font-weight: bold;">m2</span>&quot;,
24 &quot;<span style="font-weight: bold;">m3</span>&quot;, &quot;<span style="font-weight: bold;">m4</span>&quot;,
25 &quot;<span style="font-weight: bold;">m5</span>&quot;, &quot;<span style="font-weight: bold;">m6</span>&quot;
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.
29 </p>
31 Frequently repeating patterns:
32 <ul>
33 <li><span style="font-weight: bold;">type</span>
34 <ul>
35 <li>
36 <a name="type"></a>
37 Bits 7..4:
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>
51 </table>
52 </li>
53 Bits 3..2:
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>
59 </table>
60 <li>
61 <a name="tropic_zone"></a>
62 Bits 1..0:
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>
68 </table>
69 In any other climate these 2 bits are theoretically free of use, however using them does not seem useful.
70 </li>
71 </ul>
72 <li><span style="font-weight: bold;">m1</span>
73 <ul>
74 <li>
75 <a name="WaterClass"></a>
76 Bits 6..5:
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>
83 </table>
84 Some tiles, such as houses, reuse these bits of other purposes.
85 </li>
86 <li>
87 <a name="OwnershipInfo"></a>
88 Bits 4..0:
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>
96 </table>
97 Some tiles, such as houses and industries, reuse these bits of other purposes.
98 </li>
99 </ul>
100 </li>
101 <li><span style="font-weight: bold;">m7:</span><br>
102 Animation frame/state. Used for houses, industries, objects and stations.
103 </li>
104 </ul>
106 <p>OTTD's class-specific periodic tile processing routine is called once every +256 ticks for each tile.</p>
108 <table border=1 cellpadding=3>
109 <tr bgcolor="#0099FF">
110 <th align=left><font color="#FFFFFF">Class</font></th>
111 <th align=left><font color="#FFFFFF">Meaning & details of encoding</font></th>
112 </tr>
113 <tr bgcolor="#CCCCCC">
114 <td align=left><strong><a name="Class0"><tt> 0 </tt></a></strong></td>
115 <td align=left>&nbsp;<strong>Ground </strong></td>
116 </tr>
117 <tr>
118 <td valign=top nowrap>&nbsp;</td>
119 <td>
120 <ul>
121 <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the tile (normally <tt>10</tt>)</li>
122 <li>m2: see fields</li>
123 <li>m3 bits 7..5: type of hedge on NE border of the tile</li>
124 <li>m3 bits 3..0: see fields</li>
125 <li>m3 bit 4: set if the tile is covered with snow</li>
126 <li>m4 bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none)</li>
127 <li>m4 bits 4..2: same as 7..5, but for the SE border</li>
128 <li>m5 bits 7..5: update counter, incremented on every periodic processing for tile types,
129 other than <tt>03</tt>, <tt>07</tt>, <tt>0B</tt>, <tt>10</tt> and above.<BR>
130 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>
131 For snow and desert, these bits are not used, tile is updated on every periodic processing.</li>
132 <li>m5 bits 4..2: tile type:
133 <table>
134 <tr>
135 <td nowrap valign=top><tt>0</tt>&nbsp; </td>
136 <td align=left>bare land / grass</td>
137 </tr>
139 <tr>
140 <td nowrap valign=top><tt>1</tt>&nbsp; </td>
141 <td align=left>rough land (density must be 3)</td>
142 </tr>
144 <tr>
145 <td nowrap valign=top><tt>2</tt>&nbsp; </td>
146 <td align=left>rocks (density must be 3)</td>
147 </tr>
149 <tr>
150 <td nowrap valign=top><tt>3</tt>&nbsp; </td>
151 <td align=left>fields (density must be 3)
152 <ul>
153 <li>m2: index into the array of industries (farms), INVALID_INDUSTRY (0xFFFF) if farm has been removed</li>
154 <li>m3 bits 3..0: field type (legal values: 0 through 9)</li>
155 </ul>
156 </td>
157 </tr>
159 <tr>
160 <td nowrap valign=top><tt>4</tt>&nbsp; </td>
161 <td align=left>snow</td>
162 </tr>
164 <tr>
165 <td nowrap valign=top><tt>5</tt>&nbsp; </td>
166 <td align=left>desert (density must be 1 or 3)</td>
167 </tr>
168 </table>
169 </li>
170 <li>m5 bits 1..0: density:
171 <table>
172 <tr>
173 <td nowrap valign=top><tt>0</tt>&nbsp; </td>
174 <td>bare land</td>
175 <td></td>
176 <td></td>
177 <td></td>
178 <td>1/4 snow</td>
179 <td></td>
180 </tr>
182 <tr>
183 <td nowrap valign=top><tt>1</tt>&nbsp; </td>
184 <td>1/3 grass</td>
185 <td></td>
186 <td></td>
187 <td></td>
188 <td>2/4 snow;&nbsp;</td>
189 <td>1/2 desert</td>
190 </tr>
192 <tr>
193 <td nowrap valign=top><tt>2</tt>&nbsp; </td>
194 <td>2/3 grass</td>
195 <td></td>
196 <td></td>
197 <td></td>
198 <td>3/4 snow</td>
199 <td></td>
200 </tr>
202 <tr>
203 <td nowrap valign=top><tt>3</tt>&nbsp; </td>
204 <td>full grass;&nbsp;</td>
205 <td>rough land;&nbsp;</td>
206 <td>rocks;&nbsp;</td>
207 <td>fields;&nbsp;</td>
208 <td>full snow;&nbsp;</td>
209 <td>full desert</td>
210 </tr>
211 </table>
212 </li>
213 <li>m6 bits 4..2: type of hedge on NW border of the tile</li>
214 </ul>
215 </td>
216 </tr>
218 <tr bgcolor="#CCCCCC">
219 <td valign=top nowrap><strong><a name="Class1"><tt> 1</tt></a></strong></td>
220 <td><strong>Railway tracks</strong></td>
221 </tr>
222 <tr>
223 <td valign=top nowrap>&nbsp;</td>
224 <td>
225 <ul>
226 <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the tile</li>
227 <li>m2: see signals</li>
228 <li>m3 bits 7..4: see signals</li>
229 <li>m3 bits 3..0 = <a name="TrackType">track type</a>:
230 <table>
231 <tr>
232 <td><tt>0</tt>&nbsp; </td>
233 <td>conventional railway</td>
234 </tr>
236 <tr>
237 <td><tt>1</tt>&nbsp; </td>
238 <td>electrified railway</td>
239 </tr>
241 <tr>
242 <td><tt>2</tt>&nbsp; </td>
243 <td>monorail</td>
244 </tr>
246 <tr>
247 <td><tt>3</tt>&nbsp; </td>
248 <td>maglev</td>
249 </tr>
250 </table>
251 </li>
252 <li>m4 bits 7..4: see signals</li>
253 <li>m4 bits 3..0: Ground type (values with fences are not valid for depots and checkpoints)
254 <table>
255 <tr>
256 <td nowrap valign=top><tt>0</tt>&nbsp; </td>
257 <td align=left>on bare land</td>
258 </tr>
260 <tr>
261 <td nowrap valign=top><tt>1</tt>&nbsp; </td>
262 <td align=left>on grass, no fences</td>
263 </tr>
265 <tr>
266 <td nowrap valign=top><tt>2</tt>&nbsp; </td>
267 <td align=left>fence on the NW side</td>
268 </tr>
270 <tr>
271 <td nowrap valign=top><tt>3</tt>&nbsp; </td>
272 <td align=left>fence on the SE side</td>
273 </tr>
275 <tr>
276 <td nowrap valign=top><tt>4</tt>&nbsp; </td>
277 <td align=left>fences on the NW and SE sides</td>
278 </tr>
280 <tr>
281 <td nowrap valign=top><tt>5</tt>&nbsp; </td>
282 <td align=left>fence on the NE side</td>
283 </tr>
285 <tr>
286 <td nowrap valign=top><tt>6</tt>&nbsp; </td>
287 <td align=left>fence on the SW side</td>
288 </tr>
290 <tr>
291 <td nowrap valign=top><tt>7</tt>&nbsp; </td>
292 <td align=left>fences on the NE and SW sides</td>
293 </tr>
295 <tr>
296 <td nowrap valign=top><tt>8</tt>&nbsp; </td>
297 <td align=left>fence on the E side (track in the W corner)</td>
298 </tr>
300 <tr>
301 <td nowrap valign=top><tt>9</tt>&nbsp; </td>
302 <td align=left>fence on the W side (track in the E corner)</td>
303 </tr>
305 <tr>
306 <td nowrap valign=top><tt>A</tt>&nbsp; </td>
307 <td align=left>fence on the S side (track in the N corner)</td>
308 </tr>
310 <tr>
311 <td nowrap valign=top><tt>B</tt>&nbsp; </td>
312 <td align=left>fence on the N side (track in the S corner)</td>
313 </tr>
315 <tr>
316 <td nowrap valign=top><tt>C</tt>&nbsp; </td>
317 <td align=left>on snow or desert</td>
318 </tr>
320 <tr>
321 <td nowrap valign=top><tt>D</tt>&nbsp; </td>
322 <td align=left>on grass with fence and shore or water on the free halftile</td>
323 </tr>
325 <tr>
326 <td nowrap valign=top><tt>E</tt>&nbsp; </td>
327 <td align=left>higher part on foundation with snow, lower without snow</td>
328 </tr>
329 </table>
330 </li>
331 <li>m5 bit 7 clear: railway track
332 <ul>
333 <li>m5 bits 5..0: track layout: bit set = track present:
334 <table>
335 <tr>
336 <td nowrap valign=top>bit 0: </td>
337 <td align=left>in the X direction</td>
338 </tr>
340 <tr>
341 <td nowrap valign=top>bit 1: </td>
342 <td align=left>in the Y direction</td>
343 </tr>
345 <tr>
346 <td nowrap valign=top>bit 2: </td>
347 <td align=left>in the north corner (direction W-E)</td>
348 </tr>
350 <tr>
351 <td nowrap valign=top>bit 3: </td>
352 <td align=left>in the south corner (direction W-E)</td>
353 </tr>
355 <tr>
356 <td nowrap valign=top>bit 4: </td>
357 <td align=left>in the west corner (direction N-S)</td>
358 </tr>
360 <tr>
361 <td nowrap valign=top>bit 5: </td>
362 <td align=left>in the east corner (direction N-S)</td>
363 </tr>
364 </table>
365 </li>
366 <li>m5 bit 6 set = with signals:<BR>
367 There are at most 4 signals on a tile. The signals 0..3 belong to the directions:
368 <table>
369 <tr>
370 <td></td>
371 <td>Track <tt>0</tt> (X)&nbsp;</td>
372 <td>Track <tt>1</tt> (Y)&nbsp;</td>
373 <td>Track <tt>2</tt> (north)&nbsp;</td>
374 <td>Track <tt>3</tt> (south)&nbsp;</td>
375 <td>Track <tt>4</tt> (west)&nbsp;</td>
376 <td>Track <tt>5</tt> (east)</td>
377 </tr>
379 <tr>
380 <td align=left>Signal <tt>0</tt>&nbsp;</td>
381 <td></td>
382 <td></td>
383 <td></td>
384 <td>west</td>
385 <td></td>
386 <td>south</td>
387 </tr>
389 <tr>
390 <td align=left>Signal <tt>1</tt>&nbsp;</td>
391 <td></td>
392 <td></td>
393 <td></td>
394 <td>east</td>
395 <td></td>
396 <td>north</td>
397 </tr>
399 <tr>
400 <td align=left>Signal <tt>2</tt>&nbsp;</td>
401 <td>south-west</td>
402 <td>north-west</td>
403 <td>west</td>
404 <td></td>
405 <td>south</td>
406 <td></td>
407 </tr>
409 <tr>
410 <td align=left>Signal <tt>3</tt>&nbsp;</td>
411 <td>north-east</td>
412 <td>south-east</td>
413 <td>east</td>
414 <td></td>
415 <td>north</td>
416 <td></td>
417 </tr>
418 </table>
419 <ul>
420 <li>m2 bit 7: Signal 0 and 1: set = semaphore signals, clear = light signals</li>
421 <li>m2 bit 3: Signal 2 and 3: set = semaphore signals, clear = light signals</li>
422 <li>m2 bits 6..4: type of signal 0 and 1 (same values as m2 bits 2..0)</li>
423 <li>m2 bits 2..0: type of signal 2 and 3
424 <table>
425 <tr>
426 <td nowrap="nowrap" valign="top"><tt>000</tt>: </td>
427 <td align="left">normal signals</td>
428 </tr>
430 <tr>
431 <td nowrap="nowrap" valign="top"><tt>001</tt>: </td>
432 <td align="left">pre-signals</td>
433 </tr>
435 <tr>
436 <td nowrap="nowrap" valign="top"><tt>010</tt>: </td>
437 <td align="left">exit-signals</td>
438 </tr>
440 <tr>
441 <td nowrap="nowrap" valign="top"><tt>011</tt>: </td>
442 <td align="left">combo-signals</td>
443 </tr>
445 <tr>
446 <td nowrap="nowrap" valign="top"><tt>100</tt>: </td>
447 <td align="left">pbs signals</td>
448 </tr>
450 <tr>
451 <td nowrap="nowrap" valign="top"><tt>101</tt>: </td>
452 <td align="left">no-entry signals</td>
453 </tr>
454 </table>
455 </li>
456 <li style="color: blue">m2 bit 12: this signal tile has 1 or more restricted signals (tracerestrict patch)</li>
458 <li>m3 bits 7..4: bit set = signal 3..0 present</li>
459 <li>m4 bits 7..4: bit clear = signal 3..0 shows red</li>
460 </ul>
461 </li>
462 <li>m2 bits 8..10: track reserved for pbs
463 <table>
464 <tr>
465 <td><tt>0</tt>&nbsp; </td>
466 <td>not reserved</td>
467 </tr>
468 <tr>
469 <td><tt>1</tt>&nbsp; </td>
470 <td>X direction</td>
471 </tr>
472 <tr>
473 <td><tt>2</tt>&nbsp; </td>
474 <td>Y direction</td>
475 </tr>
476 <tr>
477 <td><tt>3</tt>&nbsp; </td>
478 <td>north corner (W-E)</td>
479 </tr>
480 <tr>
481 <td><tt>4</tt>&nbsp; </td>
482 <td>south corner (W-E)</td>
483 </tr>
484 <tr>
485 <td><tt>5</tt>&nbsp; </td>
486 <td>west corner (N-S)</td>
487 </tr>
488 <tr>
489 <td><tt>6</tt>&nbsp; </td>
490 <td>east corner (N-S)</td>
491 </tr>
492 </table>
493 </li>
494 <li>m2 bit 11: opposite track is reserved, too</li>
495 </ul>
496 </li>
497 <li>m5 bit 7 set, bit 6 set: railway depot
498 <ul>
499 <li>m2: Depot index</li>
500 <li>m5 bits 1..0: exit towards
501 <table>
502 <tr>
503 <td><tt>0</tt>&nbsp; </td>
504 <td>NE</td>
505 </tr>
507 <tr>
508 <td><tt>1</tt>&nbsp; </td>
509 <td>SE</td>
510 </tr>
512 <tr>
513 <td><tt>2</tt>&nbsp; </td>
514 <td>SW</td>
515 </tr>
517 <tr>
518 <td><tt>3</tt>&nbsp; </td>
519 <td>NW</td>
520 </tr>
521 </table>
522 </li>
523 <li>m5 bit 4: pbs reservation state</li>
524 </ul>
525 </li>
526 </ul>
527 </td>
528 </tr>
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>
533 </tr>
534 <tr>
535 <td valign=top nowrap>&nbsp;</td>
536 <td>
537 <ul>
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>m7 bit 5 set = on snow or desert</li>
540 <li>m7 bits 7..6: present road types
541 <table>
542 <tr>
543 <td>bit 0&nbsp; </td>
544 <td>normal road</td>
545 </tr>
547 <tr>
548 <td>bit 1&nbsp; </td>
549 <td>tram</td>
550 </tr>
551 </table>
552 </li>
553 <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>)
554 <li>m5 bits 7 clear: road or level-crossing
555 <ul>
556 <li>m6 bits 5..3:
557 <table>
558 <tr>
559 <td><tt>0</tt>&nbsp; </td>
560 <td>on bare land</td>
561 </tr>
562 <tr>
563 <td><tt>1</tt>&nbsp; </td>
564 <td>on grass</td>
565 </tr>
566 <tr>
567 <td><tt>2</tt>&nbsp; </td>
568 <td>paved</td>
569 </tr>
570 <tr>
571 <td><tt>3</tt>&nbsp; </td>
572 <td>with streetlights</td>
573 </tr>
574 <tr>
575 <td><tt>5</tt>&nbsp; </td>
576 <td>tree-lined</td>
577 </tr>
578 <tr>
579 <td><tt>6</tt>&nbsp; </td>
580 <td>on grass with road works</td>
581 </tr>
582 <tr>
583 <td><tt>7</tt>&nbsp; </td>
584 <td>paved with road works</td>
585 </tr>
586 </table>
587 </li>
588 <li>m5 bit 6 clear: road
589 <ul>
590 <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
591 <li>m7 bits 3..0: counter for the roadworks</li>
592 <li>m5 bits 3..0: road layout road type 0 (normal road): bit set = road piece present:
593 <table>
594 <tr>
595 <td align=left>bit 0: </td>
596 <td>NW piece</td>
597 </tr>
598 <tr>
599 <td align=left>bit 1: </td>
600 <td>SW piece</td>
601 </tr>
602 <tr>
603 <td align=left>bit 2: </td>
604 <td>SE piece</td>
605 </tr>
606 <tr>
607 <td align=left>bit 3: </td>
608 <td>NE piece</td>
609 </tr>
610 </table>
611 </li>
612 <li>m3 bits 0..3: road layout road type 1 (tram)</li>
613 <li>m5 bits 5..4: bits to disallow vehicles to go a specific direction
614 <table>
615 <tr>
616 <td align=left>bit 0: </td>
617 <td>set = disallow driving in south-west or south-east direction</td>
618 </tr>
619 <tr>
620 <td align=left>bit 1: </td>
621 <td>set = disallow driving in north-west or north-east direction</td>
622 </tr>
623 </table>
624 </li>
625 </ul>
626 </li>
627 <li>m5 bit 6 set: level crossing
628 <ul>
629 <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the railway track</li>
630 <li>m3 bits 3..0: <a href="#TrackType">railway track type</a></li>
631 <li>m5 bit 0: direction
632 <table>
633 <tr>
634 <td align=left><tt>0</tt>&nbsp; </td>
635 <td align=left>road in the X direction, rail in Y</td>
636 </tr>
637 <tr>
638 <td align=left><tt>1</tt>&nbsp; </td>
639 <td align=left>road in the Y direction, rail in X</td>
640 </tr>
641 </table>
642 </li>
643 <li>m5 bit 5: set if crossing lights are on</li>
644 <li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
645 <li>m5 bit 4: pbs reservation state</li>
646 </ul>
647 </li>
648 </ul>
649 </li>
650 <li>m5 bit 7 set, bit 6 clear: road depot
651 <ul>
652 <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the depot</li>
653 <li>m2: Depot index</li>
654 <li>m5 bits 1..0: exit towards:
655 <table>
656 <tr>
657 <td><tt>0</tt>&nbsp; </td>
658 <td>NE</td>
659 </tr>
661 <tr>
662 <td><tt>1</tt>&nbsp; </td>
663 <td>SE</td>
664 </tr>
666 <tr>
667 <td><tt>2</tt>&nbsp; </td>
668 <td>SW</td>
669 </tr>
671 <tr>
672 <td><tt>3</tt>&nbsp; </td>
673 <td>NW</td>
674 </tr>
675 </table>
676 </li>
677 <li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
678 </ul>
679 </li>
680 </ul>
681 </td>
682 </tr>
684 <tr bgcolor="#CCCCCC">
685 <td valign=top nowrap><strong><a name="Class3"><tt> 3</tt></a></strong></td>
686 <td><strong>Town building </strong></td>
687 </tr>
688 <tr>
689 <td valign=top nowrap>&nbsp;</td>
690 <td>
691 <ul>
692 <li>m1 : Random bits <a href="#newhouses">(newhouses)</a> </li>
693 <li>m2 : index into the array of towns</li>
694 <li>m3 bit 7 :
695 <ul>
696 <li> set : House is complete
697 <ul>
698 <li>m5 : Age of house in years, clamped at 255</li>
699 </ul>
700 </li>
701 <li> clear : House is in construction
702 <ul>
703 <li>m5 bits 7..5 : free</li>
704 <li>m5 bits 4..3 : construction stage</li>
705 <li>m5 bits 2..0 : construction counter</li>
706 </ul>
707 </li>
708 </ul>
709 <li>m3 bit 6 : bit 8 of house type (m4), allowing 512 different types.</li>
710 <li>m3 bit 5 : free</li>
711 <li>m3 bits 4..0 : triggers activated <a href="#newhouses">(newhouses)</a></li>
712 <li>m4 : <a href="landscape_externals.html">town building type</a> (with m3[6] bit)</li>
713 <li>m5 : see m3 bit 7</li>
714 <li>m6 :
715 <ul>
716 <li>If <a href="#newhouses">newhouses</a> is activated
717 <ul>
718 <li>bits 7..2 : Periodic processing time remaining</li>
719 </ul>
720 </li>
721 <li>Standard behaviour
722 <ul>
723 <li>bits 7..2 : lift position (for houses type 04 and 05)</li>
724 </ul>
725 </li>
726 </ul>
727 </li>
728 <li>m7 :
729 <ul>
730 <li>If <a href="#newhouses">newhouses</a> is activated
731 <ul>
732 <li>Current animation frame</li>
733 </ul>
734 </li>
735 <li>Standard behaviour (only for houses type 04 and 05)
736 <ul>
737 <li>bits 7..4 : free</li>
738 <li>bits 3..1 : lift destination. Values can be 0..6, except 1.<br>
739 So the building has 6 effective floors. This is due to the fact that the first floor is 2 'normal' floors high.<br>
740 One 'normal' floor has a height of 6 lift positions.
741 </li>
742 <li>bit 0 : Lift has destination when set</li>
743 </ul>
744 </li>
745 </ul>
746 </li>
747 </ul>
748 <small><a name="newhouses"></a>Newhouses is the name englobing a newGRF feature developped by TTDPatch devs (mainly Csaboka).<br>
749 It allows the replacement of the properties as well as the graphics of houses in the game.<br>
750 To distinguish between the standard behaviour and the newGRF one, HouseID (m4 + m3[6]) is tested for anything above 110.<br>
751 110 is the count of standard houses. So above 110 means there is a new definition of at least one house</small>
752 </td>
753 </tr>
755 <tr bgcolor="#CCCCCC">
756 <td valign=top nowrap><strong><a name="Class4"><tt> 4 </tt></a></strong></td>
757 <td><strong>Trees </strong></td>
758 </tr>
759 <tr>
760 <td valign=top nowrap>&nbsp;</td>
761 <td>
762 <ul>
763 <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li>
764 <li>m2 bits 8..6: ground
765 <table>
767 <tr>
768 <td align=left><tt>0</tt>&nbsp; </td>
769 <td>on grass</td>
770 </tr>
772 <tr>
773 <td align=left><tt>1</tt>&nbsp; </td>
774 <td>on rough land (density must be 3)</td>
775 </tr>
777 <tr>
778 <td align=left><tt>2</tt>&nbsp; </td>
779 <td>on snow or desert</td>
780 </tr>
782 <tr>
783 <td align=left><tt>3</tt>&nbsp; </td>
784 <td>on shore (density must be 3)</td>
785 </tr>
787 <tr>
788 <td align=left><tt>4</tt>&nbsp; </td>
789 <td>on snow with rough land underneed</td>
790 </tr>
791 </table>
792 </li>
793 <li>m2 bits 5..4: ground density</li>
794 <li>m2 bits 3..0: update counter, incremented on every periodic processing.<br>
795 on wraparound the growth status is updated (or, if it's <tt>3</tt>, a random action is taken)</li>
796 <li>m3 bits 7..0: type of trees:
797 <table>
798 <tr>
799 <td nowrap valign=top><tt>00</tt>..<tt>0B</tt>&nbsp; </td>
800 <td align=left>temperate climate trees</td>
801 </tr>
803 <tr>
804 <td nowrap valign=top><tt>0C</tt>..<tt>13</tt>&nbsp; </td>
805 <td align=left>sub-arctic climate trees</td>
806 </tr>
808 <tr>
809 <td nowrap valign=top><tt>14</tt>..<tt>1A</tt>&nbsp; </td>
810 <td align=left>rainforest trees</td>
811 </tr>
813 <tr>
814 <td nowrap valign=top><tt>1B</tt> </td>
815 <td align=left>cactus plants</td>
816 </tr>
818 <tr>
819 <td nowrap valign=top><tt>1C</tt>..<tt>1F</tt>&nbsp; </td>
820 <td align=left>sub-tropical climate, non-rainforest, non-desert trees</td>
821 </tr>
823 <tr>
824 <td nowrap valign=top><tt>20</tt>..<tt>28</tt>&nbsp; </td>
825 <td align=left>toyland trees</td>
826 </tr>
827 </table>
828 <small>Note: the actually displayed set of trees depends on both type and number of trees</small>
829 </li>
830 <li>m5 bits 7..6: number of trees minus one</li>
831 <li>m5 bits 2..0: growth status:
832 <table border="0">
833 <tr>
834 <td><tt>0</tt>..<tt>2</tt>&nbsp;</td>
835 <td>one of trees is growing&nbsp;</td>
836 </tr>
837 <tr>
838 <td><tt>3</tt>&nbsp;</td>
839 <td>all trees are fully grown&nbsp;</td>
840 </tr>
841 <tr>
842 <td><tt>4</tt>..<tt>6</tt>&nbsp;</td>
843 <td>one of trees is withering&nbsp;</td>
844 </tr>
845 </table>
846 </li>
847 </ul>
848 </td>
849 </tr>
851 <tr bgcolor="#CCCCCC">
852 <td valign=top nowrap><strong><a name="Class5"><tt> 5</tt></a></strong></td>
853 <td><strong>Station tiles</strong></td>
854 </tr>
855 <tr>
856 <td valign=top nowrap>&nbsp;</td>
857 <td>
858 <ul>
859 <li>m1 bits 6..5: water class for buoys, water part of docks and for airport tiles</li>
860 <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the station</li>
861 <li>m2: index into the array of stations</li>
862 <li>m3 bits 7..4: persistent random data for railway stations/waypoints and airports)</li>
863 <li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of tram tracks (road stop)</li>
864 <li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway stations/waypoints</li>
865 <li>m4: custom station id; 0 means standard graphics</li>
866 <li>m5: graphics index (range from 0..255 for each station type):
867 <table>
868 <tr>
869 <td nowrap valign=top><tt>00</tt>..<tt>07</tt>&nbsp; </td>
870 <td align=left>railway station
871 <table>
872 <tr>
873 <td><tt>00</tt>..<tt>01</tt>&nbsp; </td>
874 <td align=left>open platform</td>
875 </tr>
876 <tr>
877 <td><tt>02</tt>..<tt>03</tt>&nbsp; </td>
878 <td align=left>open platform with station building</td>
879 </tr>
880 <tr>
881 <td><tt>04</tt>....<tt>07</tt>&nbsp; </td>
882 <td align=left>roofed platform</td>
883 </tr>
884 <tr>
885 <td colspan=2>bit 0: clear = in X direction, set = in Y direction</td>
886 </tr>
887 </table>
888 </td>
889 </tr>
891 <tr>
892 <td nowrap valign=top><tt>00</tt>..<tt>01</tt></td>
893 <td align=left>waypoints
894 <table>
895 <tr>
896 <td><tt>00</tt>&nbsp; </td>
897 <td align=left>in X direction</td>
898 </tr>
899 <tr>
900 <td><tt>01</tt>&nbsp; </td>
901 <td align=left>in Y direction</td>
902 </tr>
903 </table>
904 </td>
905 </tr>
907 <tr>
908 <td nowrap valign=top><tt>00</tt>..<tt>FF</tt></td>
909 <td align=left>all airports</td>
910 </tr>
912 <tr>
913 <td nowrap valign=top><tt>00</tt>..<tt>05</tt>&nbsp; </td>
914 <td align=left>road stops
915 <table>
916 <tr>
917 <td><tt>00</tt>&nbsp; </td>
918 <td align=left>exit towards NE</td>
919 </tr>
920 <tr>
921 <td><tt>01</tt>&nbsp; </td>
922 <td align=left>exit towards SE</td>
923 </tr>
924 <tr>
925 <td><tt>02</tt>&nbsp; </td>
926 <td align=left>exit towards SW</td>
927 </tr>
928 <tr>
929 <td><tt>03</tt>&nbsp; </td>
930 <td align=left>exit towards NW</td>
931 </tr>
932 <tr>
933 <td><tt>04</tt>&nbsp; </td>
934 <td align=left>drive through X</td>
935 </tr>
936 <tr>
937 <td><tt>05</tt>&nbsp; </td>
938 <td align=left>drive through Y</td>
939 </tr>
940 </table>
941 </td>
942 </tr>
944 <tr>
945 <td nowrap valign=top><tt>00</tt>..<tt>05</tt>&nbsp; </td>
946 <td align=left>ship dock
947 <table>
948 <tr>
949 <td><tt>00</tt>&nbsp; </td>
950 <td align=left>SW coast part</td>
951 </tr>
952 <tr>
953 <td><tt>01</tt>&nbsp; </td>
954 <td align=left>NW coast part</td>
955 </tr>
956 <tr>
957 <td><tt>02</tt>&nbsp; </td>
958 <td align=left>NE coast part</td>
959 </tr>
960 <tr>
961 <td><tt>03</tt>&nbsp; </td>
962 <td align=left>SE coast part</td>
963 </tr>
964 <tr>
965 <td><tt>04</tt>&nbsp; </td>
966 <td align=left>X direction water part</td>
967 </tr>
968 <tr>
969 <td><tt>05</tt>&nbsp; </td>
970 <td align=left>Y direction water part</td>
971 </tr>
972 </table>
973 </td>
974 </tr>
975 </table>
976 </li>
977 <li>m6 bits 5..3: the station type (rail, airport, truck, bus, oilrig, dock, buoy, waypoint)</li>
978 <li>m6 bit 2: pbs reservation state for railway stations/waypoints</li>
980 <li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road (road stops)</li>
981 <li>m7 bits 7..6: present road types (road stops)</li>
982 <li>m7: animation frame (railway stations/waypoints, airports)</li>
983 </ul>
984 </td>
985 </tr>
987 <tr bgcolor="#CCCCCC">
988 <td valign=top nowrap><strong><a name="Class6"><tt> 6 </tt></a></strong></td>
989 <td><strong>Water</strong></td>
990 </tr>
991 <tr>
992 <td valign=top nowrap>&nbsp;</td>
993 <td>
994 <ul>
995 <li>m1 bits 6..5 : Water class (sea, canal or river)
996 <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> (for sea, rivers, and coasts normally <tt>11</tt>)</li>
997 <li>m2: Depot index (for depots only)</li>
998 <li>m4: Random data for canal or river tiles</li>
999 <li>m5: tile type:
1000 <table>
1001 <tr>
1002 <td nowrap valign=top><tt>00</tt>&nbsp; </td>
1003 <td align=left>water, canal or river</td>
1004 </tr>
1006 <tr>
1007 <td nowrap valign=top><tt>01</tt>&nbsp; </td>
1008 <td align=left>coast or riverbank</td>
1009 </tr>
1011 <tr>
1012 <td nowrap valign=top><tt>10</tt>..<tt>1B</tt>&nbsp; </td>
1013 <td align=left>canal locks
1014 <table>
1015 <tr>
1016 <td nowrap valign=top><tt>10</tt>&nbsp; </td>
1017 <td align=left>middle part, (SW-NE direction)</td>
1018 </tr>
1019 <tr>
1020 <td nowrap valign=top><tt>11</tt>&nbsp; </td>
1021 <td align=left>middle part, (NW-SE direction)</td>
1022 </tr>
1023 <tr>
1024 <td nowrap valign=top><tt>12</tt>&nbsp; </td>
1025 <td align=left>middle part, (NE-SW direction)</td>
1026 </tr>
1027 <tr>
1028 <td nowrap valign=top><tt>13</tt>&nbsp; </td>
1029 <td align=left>middle part, (SE-NW direction)</td>
1030 </tr>
1031 <tr>
1032 <td nowrap valign=top><tt>14</tt>&nbsp; </td>
1033 <td align=left>lower part, (SW-NE direction)</td>
1034 </tr>
1035 <tr>
1036 <td nowrap valign=top><tt>15</tt>&nbsp; </td>
1037 <td align=left>lower part, (NW-SE direction)</td>
1038 </tr>
1039 <tr>
1040 <td nowrap valign=top><tt>16</tt>&nbsp; </td>
1041 <td align=left>lower part, (NE-SW direction)</td>
1042 </tr>
1043 <tr>
1044 <td nowrap valign=top><tt>17</tt>&nbsp; </td>
1045 <td align=left>lower part, (SE-NW direction)</td>
1046 </tr>
1047 <tr>
1048 <td nowrap valign=top><tt>18</tt>&nbsp; </td>
1049 <td align=left>upper part, (SW-NE direction)</td>
1050 </tr>
1051 <tr>
1052 <td nowrap valign=top><tt>19</tt>&nbsp; </td>
1053 <td align=left>upper part, (NW-SE direction)</td>
1054 </tr>
1055 <tr>
1056 <td nowrap valign=top><tt>1A</tt>&nbsp; </td>
1057 <td align=left>upper part, (NE-SW direction)</td>
1058 </tr>
1059 <tr>
1060 <td nowrap valign=top><tt>1B</tt>&nbsp; </td>
1061 <td align=left>upper part, (SE-NW direction)</td>
1062 </tr>
1063 </table>
1064 </td>
1065 </tr>
1067 <tr>
1068 <td nowrap valign=top><tt>80</tt>..<tt>83</tt>&nbsp; </td>
1069 <td align=left>ship depots
1070 <table>
1071 <tr>
1072 <td nowrap valign=top><tt>80</tt>&nbsp; </td>
1073 <td align=left>ship depot, NE part (X direction)</td>
1074 </tr>
1075 <tr>
1076 <td nowrap valign=top><tt>81</tt>&nbsp; </td>
1077 <td align=left>ship depot, SW part (X direction)</td>
1078 </tr>
1079 <tr>
1080 <td nowrap valign=top><tt>82</tt>&nbsp; </td>
1081 <td align=left>ship depot, NW part (Y direction)</td>
1082 </tr>
1083 <tr>
1084 <td nowrap valign=top><tt>83</tt>&nbsp; </td>
1085 <td align=left>ship depot, SE part (Y direction)</td>
1086 </tr>
1087 </table>
1088 </td>
1089 </tr>
1090 </table>
1091 </li>
1092 </ul>
1093 </td>
1094 </tr>
1096 <tr bgcolor="#CCCCCC">
1097 <td valign=top nowrap><strong><a name="Class7"><tt> 7 </tt></a></strong></td>
1098 <td><strong>Void </strong></td>
1099 </tr>
1100 <tr>
1101 <td valign=top nowrap>&nbsp;</td>
1102 <td>Tiles of this class form an invisible, one tile wide border at the south (bottom) edges of the map,<br>
1103 so as to protect several algorithms from the consequences of a wraparound at the edges.
1104 </td>
1105 </tr>
1107 <tr bgcolor="#CCCCCC">
1108 <td valign=top nowrap><strong><a name="Class8"><tt> 8</tt></a></strong></td>
1109 <td><strong>Industries </strong></td>
1110 </tr>
1111 <tr>
1112 <td valign=top nowrap>&nbsp;</td>
1113 <td>
1114 <ul>
1115 <li>m1 bit 7: clear = under construction
1116 <ul>
1117 <li>m1 bits 6..5 : Water class (sea, canal, river or land)
1118 <li>m1 bits 3..2: construction counter, for buildings under construction incremented on every periodic tile processing</li>
1119 <li>m1 bits 1..0: stage of construction (<tt>3</tt> = completed), incremented when the construction counter wraps around<br>
1120 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>
1121 </ul>
1122 </li>
1123 <li>m2: index into the array of industries</li>
1124 <li>m3: random bits (NewGRF)</li>
1125 <li>m4: animation loop</li>
1126 <li>m5: type (plus m6 bit 2):<br>
1127 <small>(note: this is not the same as the industry type, which is stored in the array of industries)</small>
1129 <table>
1130 <tr>
1131 <td nowrap valign=top><tt>00</tt>..<tt>06</tt>&nbsp; </td>
1132 <td align=left>coal mine
1133 <table>
1134 <tr>
1135 <td nowrap valign=top><tt>00</tt>&nbsp; </td>
1136 <td align=left>wheel tower when not animated</td>
1137 </tr>
1138 <tr>
1139 <td nowrap valign=top><tt>01</tt>&nbsp; </td>
1140 <td align=left>wheel tower when animated<br>
1141 animation state in m7 bits 5..0; m7 bit 6 set = sound already generated</td>
1142 </tr>
1143 </table>
1144 </td>
1145 </tr>
1147 <tr>
1148 <td nowrap valign=top><tt>07</tt>..<tt>0A</tt>&nbsp; </td>
1149 <td align=left>power station
1150 <table>
1151 <tr>
1152 <td nowrap valign=top><tt>08</tt>&nbsp; </td>
1153 <td align=left>chimney</td>
1154 </tr>
1155 <tr>
1156 <td nowrap valign=top><tt>0A</tt>&nbsp; </td>
1157 <td align=left>transformer; animation progress in m7(valid range <tt>0</tt>..<tt>7</tt>)</td>
1158 </tr>
1159 </table>
1160 </td>
1161 </tr>
1163 <tr>
1164 <td nowrap valign=top><tt>0B</tt>..<tt>0F</tt>&nbsp; </td>
1165 <td align=left>sawmill</td>
1166 </tr>
1168 <tr>
1169 <td nowrap valign=top><tt>10</tt>..<tt>11</tt>&nbsp; </td>
1170 <td align=left>forest
1171 <table>
1172 <tr>
1173 <td nowrap valign=top><tt>11</tt>&nbsp; </td>
1174 <td align=left>trees cut down</td>
1175 </tr>
1176 </table>
1177 </td>
1178 </tr>
1180 <tr>
1181 <td nowrap valign=top><tt>12</tt>..<tt>17</tt>&nbsp; </td>
1182 <td align=left>oil refinery</td>
1183 </tr>
1185 <tr>
1186 <td nowrap valign=top><tt>18</tt>..<tt>1C</tt>&nbsp; </td>
1187 <td align=left>oil rig</td>
1188 </tr>
1190 <tr>
1191 <td nowrap valign=top><tt>1D</tt>..<tt>20</tt>&nbsp; </td>
1192 <td align=left>oil wells
1193 <table>
1194 <tr>
1195 <td nowrap valign=top><tt>1D</tt>&nbsp; </td>
1196 <td align=left>not animated</td>
1197 </tr>
1198 <tr>
1199 <td nowrap valign=top><tt>1E</tt>..<tt>20</tt>&nbsp; </td>
1200 <td align=left>various stages of animation; progress of animation in m7</td>
1201 </tr>
1202 </table>
1203 </td>
1204 </tr>
1206 <tr>
1207 <td nowrap valign=top><tt>21</tt>..<tt>26</tt>&nbsp; </td>
1208 <td align=left>farm</td>
1209 </tr>
1211 <tr>
1212 <td nowrap valign=top><tt>27</tt>..<tt>2A</tt>&nbsp; </td>
1213 <td align=left>factory (temperate climate)</td>
1214 </tr>
1216 <tr>
1217 <td nowrap valign=top><tt>2B</tt>..<tt>2E</tt>&nbsp; </td>
1218 <td align=left>printing works</td>
1219 </tr>
1221 <tr>
1222 <td nowrap valign=top><tt>2F</tt>..<tt>33</tt>&nbsp; </td>
1223 <td align=left>copper ore mine
1224 <table>
1225 <tr>
1226 <td nowrap valign=top><tt>2F</tt>&nbsp; </td>
1227 <td align=left>wheel tower when not animated</td>
1228 </tr>
1229 <tr>
1230 <td nowrap valign=top><tt>30</tt>&nbsp; </td>
1231 <td align=left>wheel tower when animated; animation state in m7 bits 5..0; m7 bit 6 set = sound already generated</td>
1232 </tr>
1233 <tr>
1234 <td nowrap valign=top><tt>31</tt>&nbsp; </td>
1235 <td align=left>chimney</td>
1236 </tr>
1237 </table>
1238 </td>
1239 </tr>
1241 <tr>
1242 <td nowrap valign=top><tt>34</tt>..<tt>39</tt>&nbsp; </td>
1243 <td align=left>steel mill</td>
1244 </tr>
1246 <tr>
1247 <td nowrap valign=top><tt>3A</tt>..<tt>3B</tt>&nbsp; </td>
1248 <td align=left>bank (temperate climate)</td>
1249 </tr>
1251 <tr>
1252 <td nowrap valign=top><tt>3C</tt>..<tt>3F</tt>&nbsp; </td>
1253 <td align=left>food processing plant</td>
1254 </tr>
1256 <tr>
1257 <td nowrap valign=top><tt>40</tt>..<tt>47</tt>&nbsp; </td>
1258 <td align=left>paper mill</td>
1259 </tr>
1261 <tr>
1262 <td nowrap valign=top><tt>48</tt>..<tt>58</tt>&nbsp; </td>
1263 <td align=left>gold mine
1264 <table>
1265 <tr>
1266 <td nowrap valign=top><tt>4F</tt>&nbsp; </td>
1267 <td align=left>wheel tower when not animated</td>
1268 </tr>
1269 <tr>
1270 <td nowrap valign=top><tt>58</tt>&nbsp; </td>
1271 <td align=left>wheel tower when animated; animation state in m7 bits 5..0; m7 bit 6 set = sound already generated</td>
1272 </tr>
1273 </table></td>
1274 </tr>
1276 <tr>
1277 <td nowrap valign=top><tt>59</tt>..<tt>5A</tt>&nbsp; </td>
1278 <td align=left>bank (sub-arctic or sub-tropical climate)</td>
1279 </tr>
1281 <tr>
1282 <td nowrap valign=top><tt>5B</tt>..<tt>63</tt>&nbsp; </td>
1283 <td align=left>diamond mine</td>
1284 </tr>
1286 <tr>
1287 <td nowrap valign=top><tt>64</tt>..<tt>73</tt>&nbsp; </td>
1288 <td align=left>iron ore mine</td>
1289 </tr>
1291 <tr>
1292 <td nowrap valign=top><tt>74</tt></td>
1293 <td align=left>fruit plantation</td>
1294 </tr>
1296 <tr>
1297 <td nowrap valign=top><tt>75</tt></td>
1298 <td align=left>rubber plantation</td>
1299 </tr>
1301 <tr>
1302 <td nowrap valign=top><tt>76</tt>..<tt>77</tt>&nbsp; </td>
1303 <td align=left>water supply</td>
1304 </tr>
1306 <tr>
1307 <td nowrap valign=top><tt>78</tt></td>
1308 <td align=left>water tower</td>
1309 </tr>
1311 <tr>
1312 <td nowrap valign=top><tt>79</tt>..<tt>7C</tt>&nbsp; </td>
1313 <td align=left>factory (sub-tropical climate)</td>
1314 </tr>
1316 <tr>
1317 <td nowrap valign=top><tt>7D</tt>..<tt>80</tt>&nbsp; </td>
1318 <td align=left>lumber mill</td>
1319 </tr>
1321 <tr>
1322 <td nowrap valign=top><tt>81</tt>..<tt>82</tt>&nbsp; </td>
1323 <td align=left>candyfloss forest
1324 <table>
1325 <tr>
1326 <td nowrap valign=top><tt>82</tt>&nbsp; </td>
1327 <td align=left>candyfloss 'trees' cut down</td>
1328 </tr>
1329 </table>
1330 </td>
1331 </tr>
1333 <tr>
1334 <td nowrap valign=top><tt>83</tt>..<tt>86</tt>&nbsp; </td>
1335 <td align=left>sweet factory</td>
1336 </tr>
1338 <tr>
1339 <td nowrap valign=top><tt>87</tt>..<tt>88</tt>&nbsp; </td>
1340 <td align=left>battery farm
1341 <table>
1342 <tr>
1343 <td nowrap valign=top><tt>88</tt>&nbsp; </td>
1344 <td align=left>batteries 'reaped'</td>
1345 </tr>
1346 </table>
1347 </td>
1348 </tr>
1350 <tr>
1351 <td nowrap valign=top><tt>89</tt></td>
1352 <td align=left>cola wells</td>
1353 </tr>
1355 <tr>
1356 <td nowrap valign=top><tt>8A</tt>..<tt>8D</tt>&nbsp; </td>
1357 <td align=left>toy shop</td>
1358 </tr>
1360 <tr>
1361 <td nowrap valign=top><tt>8E</tt>..<tt>93</tt>&nbsp; </td>
1362 <td align=left>toy factory
1363 <table>
1364 <tr>
1365 <td nowrap valign=top><tt>8F</tt>&nbsp; </td>
1366 <td align=left>Animated part; animation state in m7 (valid range <tt>00</tt>..<tt>31</tt>)<br>
1367 Tile animation is started (m4 zeroed) on the periodic processing.<br>
1368 While the animation is in progress, m4 holds the number
1369 of animation cycles that have already taken place.<br>
1370 when this number reaches 8 the animation is stopped.</td>
1371 </tr>
1372 </table>
1373 </td>
1374 </tr>
1376 <tr>
1377 <td nowrap valign=top><tt>94</tt>..<tt>9B</tt>&nbsp; </td>
1378 <td align=left>plastic fountains (various stages of cyclic animation)</td>
1379 </tr>
1381 <tr>
1382 <td nowrap valign=top><tt>9C</tt>..<tt>9F</tt>&nbsp; </td>
1383 <td align=left>fizzy drink factory</td>
1384 </tr>
1386 <tr>
1387 <td nowrap valign=top><tt>A0</tt>..<tt>A3</tt>&nbsp; </td>
1388 <td align=left>bubble generator
1389 <table>
1390 <tr>
1391 <td nowrap valign=top><tt>A1</tt>&nbsp; </td>
1392 <td align=left>generators</td>
1393 </tr>
1394 <tr>
1395 <td nowrap valign=top><tt>A2</tt>&nbsp; </td>
1396 <td align=left>bubble capture facility; animation state in m7 (valid range <tt>00</tt>..<tt>27</tt>)</td>
1397 </tr>
1398 </table>
1399 </td>
1400 </tr>
1402 <tr>
1403 <td nowrap valign=top><tt>A4</tt>..<tt>A6</tt>&nbsp; </td>
1404 <td align=left>toffee quarry
1405 <table>
1406 <tr>
1407 <td nowrap valign=top><tt>A5</tt>&nbsp; </td>
1408 <td align=left>animated part; animation state in m3 (valid range <tt>00</tt>..<tt>45</tt>)</td>
1409 </tr>
1410 </table>
1411 </td>
1412 </tr>
1414 <tr>
1415 <td nowrap valign=top><tt>A7</tt>..<tt>AE</tt>&nbsp; </td>
1416 <td align=left>sugar mine
1417 <table>
1418 <tr>
1419 <td nowrap valign=top><tt>AE</tt>&nbsp; </td>
1420 <td align=left>animated part; animation state in m3 (valid range <tt>00</tt>..<tt>5F</tt>)</td>
1421 </tr>
1422 </table>
1423 </td>
1424 </tr>
1425 <tr>
1426 <td nowrap valign=top><tt>AF</tt>..<tt>1FF</tt>&nbsp; </td>
1427 <td align=left>NewGRF industries industry</td>
1428 </tr>
1429 </table>
1430 </li>
1431 <li>m6 bits 5..3: random triggers (NewGRF)</li>
1432 <li>m6 bit 2: bit 8 of type (see m5)</li>
1433 <li>m7: animation frame</li>
1434 </ul>
1435 </td>
1436 </tr>
1438 <tr bgcolor="#CCCCCC">
1439 <td valign=top nowrap><strong><a name="Class9"><tt> 9</tt></a></strong></td>
1440 <td><strong>Tunnel / bridge</strong></td>
1441 </tr>
1442 <tr>
1443 <td valign=top nowrap>&nbsp;</td>
1444 <td>
1445 <ul>
1446 <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a></li>
1447 <li style="color: blue">m2 bits 7..0: custom road bridge heads (flat bridge heads only)<br>
1448 Road/tram bits below are XORed with the axial bridge direction road bits.<br>
1449 A non-custom bridge head configuration will have a value of 0.
1450 <ul>
1451 <li>m2 bits 7..4: Road bits<br>
1452 Valid only if m7 bit 6 is set
1453 </li>
1454 <li>m2 bits 3..0: Tram bits<br>
1455 Valid only if m7 bit 7 is set
1456 </li>
1457 </ul>
1458 <table style="color: blue">
1459 <tr>
1460 <td align=left>bit 0: </td>
1461 <td>NW piece</td>
1462 </tr>
1463 <tr>
1464 <td align=left>bit 1: </td>
1465 <td>SW piece</td>
1466 </tr>
1467 <tr>
1468 <td align=left>bit 2: </td>
1469 <td>SE piece</td>
1470 </tr>
1471 <tr>
1472 <td align=left>bit 3: </td>
1473 <td>NE piece</td>
1474 </tr>
1475 </table>
1476 </li>
1477 <li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of tram</li>
1478 <li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway</li>
1479 <li>m5 bit 4: pbs reservation state for railway</li>
1480 <li>m5 bit 7 clear: tunnel entrance/exit</li>
1481 <li>m5 bit 7 set: bridge ramp
1482 <ul>
1483 <li>m6 bits 5..2: <a name="BridgeType">bridge type</a>:
1484 <table>
1485 <tr>
1486 <th align=left>Type&nbsp;</th>
1487 <th align=left>Max. speed (mph)&nbsp;</th>
1488 <th align=left>Description</th>
1489 </tr>
1491 <tr>
1492 <td nowrap valign=top><tt>0</tt>&nbsp; </td>
1493 <td align=center>20</td>
1494 <td align=left>wooden</td>
1495 </tr>
1497 <tr>
1498 <td nowrap valign=top><tt>1</tt>&nbsp; </td>
1499 <td align=center>30</td>
1500 <td align=left>concrete</td>
1501 </tr>
1503 <tr>
1504 <td nowrap valign=top><tt>2</tt>&nbsp; </td>
1505 <td align=center>40</td>
1506 <td align=left>girder, steel</td>
1507 </tr>
1509 <tr>
1510 <td nowrap valign=top><tt>3</tt>&nbsp; </td>
1511 <td align=center>50</td>
1512 <td align=left>suspension, concrete</td>
1513 </tr>
1515 <tr>
1516 <td nowrap valign=top><tt>4</tt>&nbsp; </td>
1517 <td align=center>60</td>
1518 <td align=left>suspension, steel</td>
1519 </tr>
1521 <tr>
1522 <td nowrap valign=top><tt>5</tt>&nbsp; </td>
1523 <td align=center>70</td>
1524 <td align=left>suspension, steel</td>
1525 </tr>
1527 <tr>
1528 <td nowrap valign=top><tt>6</tt>&nbsp; </td>
1529 <td align=center>100</td>
1530 <td align=left>cantilever, steel</td>
1531 </tr>
1533 <tr>
1534 <td nowrap valign=top><tt>7</tt>&nbsp; </td>
1535 <td align=center>130</td>
1536 <td align=left>cantilever, steel</td>
1537 </tr>
1539 <tr>
1540 <td nowrap valign=top><tt>8</tt>&nbsp; </td>
1541 <td align=center>150</td>
1542 <td align=left>cantilever, steel</td>
1543 </tr>
1545 <tr>
1546 <td nowrap valign=top><tt>9</tt>&nbsp; </td>
1547 <td align=center>160</td>
1548 <td align=left>girder, steel</td>
1549 </tr>
1551 <tr>
1552 <td nowrap valign=top><tt>A</tt>&nbsp; </td>
1553 <td align=center>200</td>
1554 <td align=left>tubular, steel</td>
1555 </tr>
1557 <tr>
1558 <td nowrap valign=top><tt>B</tt>&nbsp; </td>
1559 <td align=center>320</td>
1560 <td align=left>tubular, steel</td>
1561 </tr>
1563 <tr>
1564 <td nowrap valign=top><tt>C</tt>&nbsp; </td>
1565 <td align=center>380</td>
1566 <td align=left>tubular, silicon</td>
1567 </tr>
1568 </table>
1569 </li>
1570 </ul>
1571 </li>
1572 <li style="color: blue">m5 bits 6..5: signal simulation (signals on bridge/tunnels patch)
1573 <table style="color: blue">
1574 <tr>
1575 <td><tt>0</tt>&nbsp;</td>
1576 <td>no signal simulation</td>
1577 </tr>
1579 <tr>
1580 <td><tt>1</tt>&nbsp;</td>
1581 <td>signal simulation entrance (bit 5 set)</td>
1582 </tr>
1584 <tr>
1585 <td><tt>2</tt>&nbsp;</td>
1586 <td>signal simulation exit (bit 6 set)</td>
1587 </tr>
1588 </table>
1589 If signal simulation entrance or exit:
1590 <ul>
1591 <li>m6 bit 6: set = PBS signals, clear = block signals</li>
1592 <li>m6 bit 1: set = semaphore signals, clear = light signals</li>
1593 <li>m6 bit 0: set = signal shows green, clear = signal shows red</li>
1594 <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>
1595 <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>
1596 </ul>
1597 </li>
1598 <li>m5 bits 3..2: transport type
1599 <table>
1600 <tr>
1601 <td><tt>0</tt>&nbsp;</td>
1602 <td>railway</td>
1603 </tr>
1605 <tr>
1606 <td><tt>1</tt>&nbsp;</td>
1607 <td>road</td>
1608 </tr>
1610 <tr>
1611 <td><tt>2</tt>&nbsp;</td>
1612 <td>water</td>
1613 </tr>
1614 </table>
1615 </li>
1616 <li>m5 bits 1..0: direction onto the bridge / out of the tunnel
1617 <table>
1618 <tr>
1619 <td><tt>0</tt>&nbsp; </td>
1620 <td>NE</td>
1621 </tr>
1623 <tr>
1624 <td><tt>1</tt>&nbsp; </td>
1625 <td>SE</td>
1626 </tr>
1628 <tr>
1629 <td><tt>2</tt>&nbsp; </td>
1630 <td>SW</td>
1631 </tr>
1633 <tr>
1634 <td><tt>3</tt>&nbsp; </td>
1635 <td>NW</td>
1636 </tr>
1637 </table>
1638 </li>
1639 <li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road</li>
1640 <li>m7 bit 5 set = on snow or desert</li>
1641 <li>m7 bits 7..6: present road types for road</li>
1642 </ul>
1643 </td>
1644 </tr>
1646 <tr bgcolor="#CCCCCC">
1647 <td valign=top nowrap><strong><a name="ClassA"><tt> A</tt></a></strong></td>
1648 <td><strong><tt>Objects</tt></strong></td>
1649 </tr>
1650 <tr>
1651 <td valign=top nowrap>&nbsp;</td>
1652 <td>
1653 <ul>
1654 <li>m1 bits 6..5 : Water class (sea, canal, river or land)</li>
1655 <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li>
1656 <li>m2: index into the array of objects, bits 0 to 15 (upper bits in m5)</li>
1657 <li>m3: random bits</li>
1658 <li>m5: index into the array of objects, bits 16 to 23 (lower bits in m2)</li>
1659 <li>m7: animation counter</li>
1660 </ul>
1661 </td>
1662 </tr>
1663 <tr>
1664 <td colspan=2>Classes <tt>B</tt> through <tt>F</tt> are reserved. The presence
1665 of a tile in one of the reserved classes will crash OTTD.</td>
1666 </tr>
1667 </table>
1670 <hr>
1671 Original Copyright &copy; 2003 by Marcin Grzegorczyk for TTDLX.<br>
1672 Transport Tycoon and Transport Tycoon Deluxe are Copyright &copy; by Chris Sawyer.<br>
1673 All the other trademarks are the property of their respective owners.<br>
1674 </body>
1676 </html>