mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-17 21:25:40 +00:00
1579 lines
49 KiB
HTML
1579 lines
49 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
|
|
<head>
|
|
<meta name="Author" content="Marcin Grzegorczyk">
|
|
<meta name="Description" content="Structure of OpenTTD (OTTD) landscape arrays">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<title>OpenTTD Landscape Internals</title>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h3><a name="Landscape">Landscape</a></h3>
|
|
<p>Seven attributes (counting "<span style="font-weight: bold;">type_height</span>") hold the informations about a tile.<BR>
|
|
These attributes are referred to as
|
|
"<span style="font-weight: bold;">type_height</span>",
|
|
"<span style="font-weight: bold;">m1</span>", "<span style="font-weight: bold;">m2</span>",
|
|
"<span style="font-weight: bold;">m3</span>", "<span style="font-weight: bold;">m4</span>",
|
|
"<span style="font-weight: bold;">m5</span>" and "<span style="font-weight: bold;">m6</span>".<BR>
|
|
The most important value is the class of a tile, stored in the upper 4 bits
|
|
of the <span style="font-weight: bold;">type_height</span> attribute. The lower 4 bits are used to encode the height and
|
|
slope data.
|
|
</p>
|
|
|
|
Special Attribute : <span style="font-weight: bold;">m6</span>. There are 4 bits of it that are used accross multiple tile classes<br>
|
|
<ul>
|
|
<li>
|
|
<a name = "bridge_direction">
|
|
Bits 7..6 :
|
|
<table border="1">
|
|
<tr bgcolor="#CCCCCC"><td colspan="2">Presence and direction of bridge above,<br>for tiles that support this.</td></tr>
|
|
<tr><td><tt>00</tt> </td><td>no bridge</td></tr>
|
|
<tr><td><tt>01</tt> </td><td>Axis X (North-East)</td></tr>
|
|
<tr><td><tt>02</tt> </td><td>Axis Y (South-West)</td></tr>
|
|
</table>
|
|
</li>
|
|
<li>
|
|
<a name = "tropic_zone">
|
|
Bits 1..0 :
|
|
<table border="1">
|
|
<tr bgcolor="#CCCCCC"><td colspan="2">Only meaningfull in tropic climate.<br>It contains the definition of the two available zones</td></tr>
|
|
<tr><td><tt>00</tt> </td><td>invalid zone</td></tr>
|
|
<tr><td><tt>01</tt> </td><td>desert</td></tr>
|
|
<tr><td><tt>02</tt> </td><td>rain forest</td></tr>
|
|
</table>
|
|
In any other climate, those 2 bits are free of use.
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
For a graphical representation of the tile-layout have a look at
|
|
<a href="landscape_grid.html">Landscape grid</a> page.
|
|
</p>
|
|
|
|
The <a name="OwnershipInfo">owner of a tile</a>, as frequently associated with attribute m1,
|
|
can be either players (human or AI) or "Game entities".
|
|
They are identified using:
|
|
<table border="1">
|
|
<tr><td><tt>00</tt> </td><td align=left>current player</td></tr>
|
|
<tr><td><tt>01..08</tt> </td><td align=left>AI or network players</td></tr>
|
|
<tr><td><tt>0F</tt> </td><td align=left>a town owns the tile</td></tr>
|
|
<tr><td><tt>10</tt> </td><td align=left>nobody owns the tile</td></tr>
|
|
<tr><td><tt>11</tt> </td><td align=left>"water" owns the tile</td></tr>
|
|
<tr><td><tt>FF</tt> </td><td align=left>spectator in MP or in scenario editor</td></tr>
|
|
</table>
|
|
|
|
<p>OTTD's class-specific periodic tile processing routine is called once every +256 ticks for each tile.</p>
|
|
|
|
<table border=1 cellpadding=3>
|
|
<tr bgcolor="#0099FF">
|
|
<th align=left><font color="#FFFFFF">Class</font></th>
|
|
<th align=left><font color="#FFFFFF">Meaning & details of encoding</font></th>
|
|
</tr>
|
|
<tr bgcolor="#CCCCCC">
|
|
<td align=left><strong><a name="Class0"><tt> 0 </tt></a></strong></td>
|
|
<td align=left> <strong>Ground </strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign=top nowrap> </td>
|
|
<td>
|
|
<ul>
|
|
<li>m1: <a href="#OwnershipInfo">owner</a> of the tile (normally <tt>10</tt>)</li>
|
|
<li>m4 bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none)</li>
|
|
<li>m4 bits 4..2: same as 7..5, but for the SE border</li>
|
|
<li>m5 bits 7..5: update counter, incremented on every periodic processing for tile types,
|
|
other than <tt>03</tt>, <tt>07</tt>, <tt>0B</tt>, <tt>10</tt> and above.<BR>
|
|
on wraparound, the tile is updated (for fields, the type of fields in m3 is increased, for other types the tile type in m5 is increased).<BR>
|
|
For snow and desert, these bits are not used, tile is updated on every periodic processing.</li>
|
|
<li>m5 bits 4..0: tile type:
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>00</tt> </td>
|
|
<td align=left>bare land</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>01</tt> </td>
|
|
<td align=left>1/3 grass</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>02</tt> </td>
|
|
<td align=left>2/3 grass</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>03</tt> </td>
|
|
<td align=left>full grass</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>07</tt> </td>
|
|
<td align=left>rough land</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>0B</tt> </td>
|
|
<td align=left>rocks</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>0F</tt> </td>
|
|
<td align=left>fields; type of fields in m3 bits 3..0 (legal values: 0 through 9)<br>
|
|
m2: Index into the array of industries (farms), INVALID_INDUSTRY (0xFFFF) if farm has been removed</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>10</tt> </td>
|
|
<td align=left>1/4 snow</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>11</tt> </td>
|
|
<td align=left>2/4 snow</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>12</tt> </td>
|
|
<td align=left>3/4 snow</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>13</tt> </td>
|
|
<td align=left>full snow</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>15</tt> </td>
|
|
<td align=left>partial desert</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>17</tt> </td>
|
|
<td align=left>full desert</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
|
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr bgcolor="#CCCCCC">
|
|
<td valign=top nowrap><strong><a name="Class1"><tt> 1</tt></a></strong></td>
|
|
<td><strong>Railway tracks</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign=top nowrap> </td>
|
|
<td>
|
|
<ul>
|
|
<li>m5 bit 7 clear: railway track
|
|
<ul>
|
|
<li>m1: <a href="#OwnershipInfo">owner</a> of the track</li>
|
|
<li>m3 bits 3..0 = <a name="TrackType">track type</a>:
|
|
<table>
|
|
<tr>
|
|
<td><tt>0</tt> </td>
|
|
<td>conventional railway</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><tt>1</tt> </td>
|
|
<td>electrified railway</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><tt>2</tt> </td>
|
|
<td>monorail</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><tt>3</tt> </td>
|
|
<td>maglev</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m4 bits 3..0:
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>0</tt> </td>
|
|
<td align=left>on bare land</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>1</tt> </td>
|
|
<td align=left>on grass, no fences</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>2</tt> </td>
|
|
<td align=left>fence on the NW side</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>3</tt> </td>
|
|
<td align=left>fence on the SE side</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>4</tt> </td>
|
|
<td align=left>fences on the NW and SE sides</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>5</tt> </td>
|
|
<td align=left>fence on the NE side</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>6</tt> </td>
|
|
<td align=left>fence on the SW side</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>7</tt> </td>
|
|
<td align=left>fences on the NE and SW sides</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>8</tt> </td>
|
|
<td align=left>fence on the E side (track in the W corner)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>9</tt> </td>
|
|
<td align=left>fence on the W side (track in the E corner)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>A</tt> </td>
|
|
<td align=left>fence on the S side (track in the N corner)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>B</tt> </td>
|
|
<td align=left>fence on the N side (track in the S corner)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>C</tt> </td>
|
|
<td align=left>on snow or desert</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m5 bits 5..0: track layout: bit set = track present:
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top>bit 0: </td>
|
|
<td align=left>in the X direction</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top>bit 1: </td>
|
|
<td align=left>in the Y direction</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top>bit 2: </td>
|
|
<td align=left>in the north corner (direction W-E)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top>bit 3: </td>
|
|
<td align=left>in the south corner (direction W-E)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top>bit 4: </td>
|
|
<td align=left>in the west corner (direction N-S)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top>bit 5: </td>
|
|
<td align=left>in the east corner (direction N-S)</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>m5 bit 7 set: railway depot / checkpoints
|
|
<ul>
|
|
<li>m1: <a href="#OwnershipInfo">owner</a> of the depot / checkpoint</li>
|
|
<li>m2: For waypoints, index into the array of waypoints.</li>
|
|
<li>m3 bits 3..0 = <a href="#TrackType">track type</a></li>
|
|
<li>m4 bits 3..0 = ground type, as per m4 bits 3..0 for railway tiles.</li>
|
|
<li>m5 value C0..C3: railway depot
|
|
<table>
|
|
<tr>
|
|
<td colspan=2>m5 bits 1..0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td colspan=2>direction: exit towards:</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><tt>00</tt> </td>
|
|
<td>NE</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><tt>01</tt> </td>
|
|
<td>SE</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><tt>02</tt> </td>
|
|
<td>SW</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><tt>03</tt> </td>
|
|
<td>NW</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m5 value 80..81: checkpoint
|
|
<table>
|
|
<tr>
|
|
<td colspan=2>bit 0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>clear</td>
|
|
<td>in X direction</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>set</td>
|
|
<td>in Y direction</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>m5 bit 6 set = with signals:
|
|
<ul>
|
|
<li>m4 bits 7..4: bit clear = signal shows red; same bits as in m3</li>
|
|
<li>m2 bit 2 <i>(6)</i>: set = semaphore signals, clear = light signals <i>(lower and right tracks)</i></li>
|
|
<li>m2 bits 1..0 <i>(5..4)</i>: type of signal <i>(lower and right tracks)</i>
|
|
<table>
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top"><tt>00</tt>: </td>
|
|
<td align="left">normal signals</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top"><tt>01</tt>: </td>
|
|
<td align="left">pre-signals</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top"><tt>10</tt>: </td>
|
|
<td align="left">exit-signals</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top"><tt>11</tt>: </td>
|
|
<td align="left">combo-signals</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
|
|
<li>m3 bits 7..4: bit set = signal present:
|
|
<ul>
|
|
<li>For track in the X direction:
|
|
<table>
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 6: </td>
|
|
<td align="left">signal in the SW direction</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 7: </td>
|
|
<td align="left">signal in the NE direction</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
|
|
<li>For track in the Y direction:
|
|
<table>
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 6: </td>
|
|
<td align="left">signal in the NW direction</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 7: </td>
|
|
<td align="left">signal in the SE direction</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
|
|
<li>For tracks in the W-E direction:
|
|
<table>
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 4: </td>
|
|
<td align="left">signal in the W direction on the track in the S corner</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 5: </td>
|
|
<td align="left">signal in the E direction on the track in the S corner</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 6: </td>
|
|
<td align="left">signal in the W direction on the track in the N corner</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 7: </td>
|
|
<td align="left">signal in the E direction on the track in the N corner</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
|
|
<li>For tracks in the N-S direction:
|
|
<table>
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 4: </td>
|
|
<td align="left">signal in the S direction on the track in the E corner</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 5: </td>
|
|
<td align="left">signal in the N direction on the track in the E corner</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 6: </td>
|
|
<td align="left">signal in the S direction on the track in the W corner</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap="nowrap" valign="top">bit 7: </td>
|
|
<td align="left">signal in the N direction on the track in the W corner</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
|
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr bgcolor="#CCCCCC">
|
|
<td valign=top nowrap><strong><a name="Class2"><tt> 2</tt></a></strong></td>
|
|
<td><strong>Roads</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign=top nowrap> </td>
|
|
<td>
|
|
<ul>
|
|
<li>m5 bits 7..6 clear: road
|
|
<ul>
|
|
<li>m1: <a href="#OwnershipInfo">owner</a> of the road type #1</li>
|
|
<li>m2: Index into the array of towns, 0 for non-town roads</li>
|
|
<li>m3 bit 7 set = on snow or desert</li>
|
|
<li>m3 bits 6..4:
|
|
<table>
|
|
<tr>
|
|
<td><tt>0</tt> </td>
|
|
<td>on bare land</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>1</tt> </td>
|
|
<td>on grass</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>2</tt> </td>
|
|
<td>paved</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>3</tt> </td>
|
|
<td>with streetlights</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>5</tt> </td>
|
|
<td>tree-lined</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>6</tt> </td>
|
|
<td>on grass with road works</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>7</tt> </td>
|
|
<td>paved with road works</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m3 bits 3..0: counter for the roadworks</li>
|
|
<li>m4 bits 3..0: road layout road type #1: bit set = road piece present:
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top>bit 0: </td>
|
|
<td align=left>NW piece</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top>bit 1: </td>
|
|
<td align=left>SW piece</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top>bit 2: </td>
|
|
<td align=left>SE piece</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top>bit 3: </td>
|
|
<td align=left>NE piece</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m4 bits 7..4: road layout road type #2
|
|
<li>m5 bits 5..4: bits to disallow vehicles to go a specific direction
|
|
<li>m5 bits 3..0: owner of road type #2
|
|
<li>m6 bits 5..2: road layout road type #3
|
|
<li>m7 bits 7..5: road types
|
|
<li>m7 bits 4..0: owner of road type #3
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>m5 bit 7 set, bit 6 clear: road depot
|
|
<ul>
|
|
<li>m1: <a href="#OwnershipInfo">owner</a> of the depot</li>
|
|
<li>m3 bit 7 set = on snow or desert (not displayed, but set internally)</li>
|
|
<li>m5 bits 3..0 - direction: exit towards: <tt>0</tt> = NE, <tt>1</tt> = SE, <tt>2</tt> = SW, <tt>3</tt> = NW</li>
|
|
<li>m7 bits 7..5: road types
|
|
</ul>
|
|
</li>
|
|
<li>m5 bit 6 set, bit 7 clear: level crossing
|
|
<ul>
|
|
<li>m1: <a href="#OwnershipInfo">owner</a> of the railway track</li>
|
|
<li>m2: Index into the array of towns, 0 for non-town roads</li>
|
|
<li>m3 bit 7 set = on snow or desert</li>
|
|
<li>m3 bits 6..4: <tt>0</tt> - on bare land, <tt>1</tt> - on grass, <tt>2</tt> or higher - paved</li>
|
|
<li>m3 bits 3..0: <a href="#TrackType">track type</a></li>
|
|
<li>m4 bit 6: clear - road in the X direction, set - road in the Y direction (railway track always perpendicular)</li>
|
|
<li>m4 bit 5: set if crossing lights are on</li>
|
|
<li>m4 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type #1</li>
|
|
<li>m5 bits 3..0: owner of road type #2
|
|
<li>m7 bits 7..5: road types
|
|
<li>m7 bits 4..0: owner of road type #3
|
|
</ul>
|
|
</li>
|
|
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
|
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr bgcolor="#CCCCCC">
|
|
<td valign=top nowrap><strong><a name="Class3"><tt> 3</tt></a></strong></td>
|
|
<td><strong>Town building </strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign=top nowrap> </td>
|
|
<td>
|
|
<ul>
|
|
<li>m1 : Random bits <a href="#newhouses">(newhouses)</a> </li>
|
|
<li>m2 : index into the array of industries</li>
|
|
<li>m3 bit 7 :
|
|
<ul>
|
|
<li> set : House is complete
|
|
<ul>
|
|
<li>m5 : age of House. Maximum been 255, which means 255 years and more</li>
|
|
</ul>
|
|
</li>
|
|
<li> clear : House is in construction
|
|
<ul>
|
|
<li>m5 bits 7..5 : free</li>
|
|
<li>m5 bits 4..3 : construction stage</li>
|
|
<li>m5 bits 2..0 : construction counter</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<li>m3 bit 6 : 9th bit of house type (m4), allowing 512 different types.</li>
|
|
<li>m3 bits 5..0 : triggers activated <a href="#newhouses">(newhouses)</a></li>
|
|
<li>m4 : <a href="landscape_externals.html">town building type</a> (with m3[6] bit)</li>
|
|
<li>m5 : see m3 bit 7</li>
|
|
<li>m6 :
|
|
<ul>
|
|
<li>If <a href="#newhouses">newhouses</a> is activated
|
|
<ul>
|
|
<li>bits 7..3 : Current animation frame</li>
|
|
<li>bit 2 : free</li>
|
|
</ul>
|
|
</li>
|
|
<li>Standard behaviour
|
|
<ul>
|
|
<li>bits 7..2 : lift position (for houses type 04 and 05)</li>
|
|
</ul>
|
|
</li>
|
|
<li>bits 1..0 : tropic zone specifier</li>
|
|
</ul>
|
|
</li>
|
|
<li>m7 :
|
|
<ul>
|
|
<li>If <a href="#newhouses">newhouses</a> is activated
|
|
<ul>
|
|
<li>Periodic processing time remaining</li>
|
|
</ul>
|
|
</li>
|
|
<li>Standard behaviour (only for houses type 04 and 05)
|
|
<ul>
|
|
<li>bits 7..4 : free</li>
|
|
<li>bits 3..1 : lift destination. Values can be 0..6, except 1.<br>
|
|
So the building has 6 effective floors. This is due to the fact that the first floor is 2 'normal' floors high.<br>
|
|
One 'normal' floor has a height of 6 lift positions.
|
|
</li>
|
|
<li>bit 0 : Lift has destination when set</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<small><a name="newhouses">Newhouses is the name englobing a newGRF feature developped by TTDPatch devs (mainly Csaboka).<br>
|
|
It allows the replacement of the properties as well as the graphics of houses in the game.<br>
|
|
To distinguish between the standard behaviour and the newGRF one, HouseID (m4 + m3[6]) is tested for anything above 110.<br>
|
|
110 is the count of standard houses. So above 110 means there is a new definition of at least one house</small>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr bgcolor="#CCCCCC">
|
|
<td valign=top nowrap><strong><a name="Class4"><tt> 4 </tt></a></strong></td>
|
|
<td><strong>Trees </strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign=top nowrap> </td>
|
|
<td>
|
|
<ul>
|
|
<li>m1: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li>
|
|
<li>m2 bits 5..4:
|
|
<table>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>0</tt> </td>
|
|
<td align=left>on grass</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>1</tt> </td>
|
|
<td align=left>on rough land</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>2</tt> </td>
|
|
<td align=left>on snow or desert; m2 bits 7..6 - amount of snow or desert (for desert always set to 3 in TTD)</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m2 bits 3..0: update counter, incremented on every periodic processing.<br>
|
|
on wraparound the growth status is updated (or, if it's <tt>3</tt>, a random action is taken)</li>
|
|
<li>m3 bits 7..0: type of trees:
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>00</tt>..<tt>0B</tt> </td>
|
|
<td align=left>temperate climate trees</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>0C</tt>..<tt>13</tt> </td>
|
|
<td align=left>sub-arctic climate trees</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>14</tt>..<tt>1A</tt> </td>
|
|
<td align=left>rainforest trees</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>1B</tt> </td>
|
|
<td align=left>cactus plants</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>1C</tt>..<tt>1F</tt> </td>
|
|
<td align=left>sub-tropical climate, non-rainforest, non-desert trees</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>20</tt>..<tt>28</tt> </td>
|
|
<td align=left>toyland trees</td>
|
|
</tr>
|
|
</table>
|
|
<small>Note: the actually displayed set of trees depends on both type and number of trees</small>
|
|
</li>
|
|
<li>m4 bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none)</li>
|
|
<li>m4 bits 4..2: type of hedge on the SE border of the tile (1 through 6, or 0=none)</li>
|
|
<li>m5 bits 7..6: number of trees minus one</li>
|
|
<li>m5 bits 2..0: growth status:
|
|
<table border="0">
|
|
<tr>
|
|
<td><tt>0</tt>..<tt>2</tt> </td>
|
|
<td>one of trees is growing </td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>3</tt> </td>
|
|
<td>all trees are fully grown </td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>4</tt>..<tt>6</tt> </td>
|
|
<td>one of trees is withering </td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr bgcolor="#CCCCCC">
|
|
<td valign=top nowrap><strong><a name="Class5"><tt> 5</tt></a></strong></td>
|
|
<td><strong>Station tiles</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign=top nowrap> </td>
|
|
<td>
|
|
<ul>
|
|
<li>m1: <a href="#OwnershipInfo">owner</a> of the station</li>
|
|
<li>m2: index into the array of stations</li>
|
|
<li>m3 bits 7..4: persistent random data for newstations</li>
|
|
<li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway stations, must be 0 for all the other stations</li>
|
|
<li>m4: custom station id; 0 means standard graphics</li>
|
|
<li>m5: tile type:
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>00</tt>..<tt>07</tt> </td>
|
|
<td align=left>railway station
|
|
<table>
|
|
<tr>
|
|
<td><tt>00</tt>..<tt>01</tt> </td>
|
|
<td align=left>open platform</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>02</tt>..<tt>03</tt> </td>
|
|
<td align=left>open platform with station building</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>04</tt>....<tt>07</tt> </td>
|
|
<td align=left>roofed platform</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan=2>bit 0: clear = in X direction, set = in Y direction</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>08</tt>..<tt>33</tt> </td>
|
|
<td align=left>large airport
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>0B</tt> </td>
|
|
<td align=left>pad 1</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>16</tt>..<tt>19</tt> </td>
|
|
<td align=left>runway middle</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>1A</tt> </td>
|
|
<td align=left>runway ending</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>1C</tt> </td>
|
|
<td align=left>control tower</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>20</tt> </td>
|
|
<td align=left>hangar</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>21</tt> </td>
|
|
<td align=left>pad 3</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>22</tt> </td>
|
|
<td align=left>pad 2</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>27</tt>..<tt>32</tt> </td>
|
|
<td align=left>radar (animated)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>33</tt> </td>
|
|
<td align=left>transmitter</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan=2>The initial layout of a large airport is (rows in Y direction, columns in X direction):
|
|
<pre>
|
|
1F 1B 1E 33 26 1A
|
|
09 24 0B 0C 0D 16
|
|
21 1D 23 0E 0F 17
|
|
09 22 0D 11 10 18
|
|
09 08 14 13 12 19
|
|
20 0A 15 1C 27 1A
|
|
</pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>34</tt>..<tt>41</tt> </td>
|
|
<td align=left>small airport
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>3A</tt>..<tt>3D</tt> </td>
|
|
<td align=left>field with the wind meter (animated)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>3E</tt> </td>
|
|
<td align=left>runway south ending</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>3F</tt> </td>
|
|
<td align=left>runway middle</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>40</tt> </td>
|
|
<td align=left>runway north ending</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>41</tt> </td>
|
|
<td align=left>hangar</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan=2>The initial layout of a small airport is (rows in Y direction, columns in X direction):
|
|
<pre>
|
|
36 3A 40
|
|
35 39 3F
|
|
34 38 3F
|
|
41 37 3E
|
|
</pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>42</tt> </td>
|
|
<td align=left>heliport</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>43</tt>..<tt>46</tt> </td>
|
|
<td align=left>lorry loading area : exit towards:
|
|
<table>
|
|
<tr>
|
|
<td><tt>43</tt> </td>
|
|
<td align=left>NE</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>44</tt> </td>
|
|
<td align=left>SE</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>45</tt> </td>
|
|
<td align=left>SW</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>46</tt> </td>
|
|
<td align=left>NW</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>47</tt>..<tt>4A</tt> </td>
|
|
<td align=left>bus station : exit towards:
|
|
<table>
|
|
<tr>
|
|
<td><tt>47</tt> </td>
|
|
<td align=left>NE</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>48</tt> </td>
|
|
<td align=left>SE</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>49</tt> </td>
|
|
<td align=left>SW</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>4A</tt> </td>
|
|
<td align=left>NW</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>4B</tt> </td>
|
|
<td align=left>oilfield</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>4C</tt>..<tt>51</tt> </td>
|
|
<td align=left>ship dock
|
|
<table>
|
|
<tr>
|
|
<td><tt>4C</tt> </td>
|
|
<td align=left>SW coast part</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>4D</tt> </td>
|
|
<td align=left>NW coast part</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>4E</tt> </td>
|
|
<td align=left>NE coast part</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>4F</tt> </td>
|
|
<td align=left>SE coast part</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>50</tt> </td>
|
|
<td align=left>X direction water part</td>
|
|
</tr>
|
|
<tr>
|
|
<td><tt>51</tt> </td>
|
|
<td align=left>Y direction water part</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>52</tt> </td>
|
|
<td align=left>buoy</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>53</tt>..<tt>A7</tt> </td>
|
|
<td align=left>used by RichK's larger airports</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m6 bit 3: 1 when a drive through road stop is built over a town owned road, otherwise 0</li>
|
|
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr bgcolor="#CCCCCC">
|
|
<td valign=top nowrap><strong><a name="Class6"><tt> 6 </tt></a></strong></td>
|
|
<td><strong>Water</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign=top nowrap> </td>
|
|
<td>
|
|
<ul>
|
|
<li>m1: <a href="#OwnershipInfo">owner</a> (for water and coasts normally <tt>11</tt>)</li>
|
|
<li>m5: tile type:
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>00</tt> </td>
|
|
<td align=left>water</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>01</tt> </td>
|
|
<td align=left>coast or riverbank</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>10</tt>..<tt>1B</tt> </td>
|
|
<td align=left>canal locks
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>10</tt> </td>
|
|
<td align=left>middle part, (SW-NE direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>11</tt> </td>
|
|
<td align=left>middle part, (NW-SE direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>12</tt> </td>
|
|
<td align=left>middle part, (NE-SW direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>13</tt> </td>
|
|
<td align=left>middle part, (SE-NW direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>14</tt> </td>
|
|
<td align=left>lower part, (SW-NE direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>15</tt> </td>
|
|
<td align=left>lower part, (NW-SE direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>16</tt> </td>
|
|
<td align=left>lower part, (NE-SW direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>17</tt> </td>
|
|
<td align=left>lower part, (SE-NW direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>18</tt> </td>
|
|
<td align=left>upper part, (SW-NE direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>19</tt> </td>
|
|
<td align=left>upper part, (NW-SE direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>1A</tt> </td>
|
|
<td align=left>upper part, (NE-SW direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>1B</tt> </td>
|
|
<td align=left>upper part, (SE-NW direction)</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>80</tt>..<tt>83</tt> </td>
|
|
<td align=left>ship depots
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>80</tt> </td>
|
|
<td align=left>ship depot, NE part (X direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>81</tt> </td>
|
|
<td align=left>ship depot, SW part (X direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>82</tt> </td>
|
|
<td align=left>ship depot, NW part (Y direction)</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>83</tt> </td>
|
|
<td align=left>ship depot, SE part (Y direction)</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
|
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr bgcolor="#CCCCCC">
|
|
<td valign=top nowrap><strong><a name="Class7"><tt> 7 </tt></a></strong></td>
|
|
<td><strong>Void </strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign=top nowrap> </td>
|
|
<td>Tiles of this class form an invisible, one tile wide border at the south (bottom) edges of the map,<br>
|
|
so as to protect several algorithms from the consequences of a wraparound at the edges.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr bgcolor="#CCCCCC">
|
|
<td valign=top nowrap><strong><a name="Class8"><tt> 8</tt></a></strong></td>
|
|
<td><strong>Industry tile </strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign=top nowrap> </td>
|
|
<td>
|
|
<ul>
|
|
<li>m1 bit 7: clear = under construction
|
|
<ul>
|
|
<li>m1 bits 4..2: construction counter, for buildings under construction incremented on every periodic tile processing</li>
|
|
<li>m1 bits 1..0: stage of construction (<tt>3</tt> = completed), incremented when the construction counter wraps around<br>
|
|
the meaning is different for some animated tiles which are never under construction (types <tt>01</tt>, <tt>1E</tt>..<tt>20</tt>, <tt>30</tt>, <tt>58</tt>; see above)</li>
|
|
</ul>
|
|
</li>
|
|
<li>m2: index into the array of industries</li>
|
|
<li>m5: type:<br>
|
|
<small>(note: this is not the same as the industry type, which is stored in the array of industries)</small>
|
|
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>00</tt>..<tt>06</tt> </td>
|
|
<td align=left>coal mine
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>00</tt> </td>
|
|
<td align=left>wheel tower when not animated</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>01</tt> </td>
|
|
<td align=left>wheel tower when animated<br>
|
|
animation state in m3 bits 5..0; m3 bit 6 set = sound already generated</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>07</tt>..<tt>0A</tt> </td>
|
|
<td align=left>power station
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>08</tt> </td>
|
|
<td align=left>chimney</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>0A</tt> </td>
|
|
<td align=left>transformer; animation progress in m3(valid range <tt>0</tt>..<tt>7</tt>)</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>0B</tt>..<tt>0F</tt> </td>
|
|
<td align=left>sawmill</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>10</tt>..<tt>11</tt> </td>
|
|
<td align=left>forest
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>11</tt> </td>
|
|
<td align=left>trees cut down</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>12</tt>..<tt>17</tt> </td>
|
|
<td align=left>oil refinery</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>18</tt>..<tt>1C</tt> </td>
|
|
<td align=left>oil rig</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>1D</tt>..<tt>20</tt> </td>
|
|
<td align=left>oil wells
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>1D</tt> </td>
|
|
<td align=left>not animated</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>1E</tt>..<tt>20</tt> </td>
|
|
<td align=left>various stages of animation; progress of animation in m3</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>21</tt>..<tt>26</tt> </td>
|
|
<td align=left>farm</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>27</tt>..<tt>2A</tt> </td>
|
|
<td align=left>factory (temperate climate)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>2B</tt>..<tt>2E</tt> </td>
|
|
<td align=left>printing works</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>2F</tt>..<tt>33</tt> </td>
|
|
<td align=left>copper ore mine
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>2F</tt> </td>
|
|
<td align=left>wheel tower when not animated</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>30</tt> </td>
|
|
<td align=left>wheel tower when animated; animation state in m3 bits 5..0; m3 bit 6 set = sound already generated</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>31</tt> </td>
|
|
<td align=left>chimney</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>34</tt>..<tt>39</tt> </td>
|
|
<td align=left>steel mill</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>3A</tt>..<tt>3B</tt> </td>
|
|
<td align=left>bank (temperate climate)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>3C</tt>..<tt>3F</tt> </td>
|
|
<td align=left>food processing plant</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>40</tt>..<tt>47</tt> </td>
|
|
<td align=left>paper mill</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>48</tt>..<tt>58</tt> </td>
|
|
<td align=left>gold mine
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>4F</tt> </td>
|
|
<td align=left>wheel tower when not animated</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>58</tt> </td>
|
|
<td align=left>wheel tower when animated; animation state in m3 bits 5..0; m3 bit 6 set = sound already generated</td>
|
|
</tr>
|
|
</table></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>59</tt>..<tt>5A</tt> </td>
|
|
<td align=left>bank (sub-arctic or sub-tropical climate)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>5B</tt>..<tt>63</tt> </td>
|
|
<td align=left>diamond mine</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>64</tt>..<tt>73</tt> </td>
|
|
<td align=left>iron ore mine</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>74</tt></td>
|
|
<td align=left>fruit plantation</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>75</tt></td>
|
|
<td align=left>rubber plantation</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>76</tt>..<tt>77</tt> </td>
|
|
<td align=left>water supply</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>78</tt></td>
|
|
<td align=left>water tower</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>79</tt>..<tt>7C</tt> </td>
|
|
<td align=left>factory (sub-tropical climate)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>7D</tt>..<tt>80</tt> </td>
|
|
<td align=left>lumber mill</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>81</tt>..<tt>82</tt> </td>
|
|
<td align=left>candyfloss forest
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>82</tt> </td>
|
|
<td align=left>candyfloss 'trees' cut down</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>83</tt>..<tt>86</tt> </td>
|
|
<td align=left>sweet factory</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>87</tt>..<tt>88</tt> </td>
|
|
<td align=left>battery farm
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>88</tt> </td>
|
|
<td align=left>batteries 'reaped'</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>89</tt></td>
|
|
<td align=left>cola wells</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>8A</tt>..<tt>8D</tt> </td>
|
|
<td align=left>toy shop</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>8E</tt>..<tt>93</tt> </td>
|
|
<td align=left>toy factory
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>8F</tt> </td>
|
|
<td align=left>Animated part; animation state in m3 (valid range <tt>00</tt>..<tt>31</tt>)<br>
|
|
Tile animation is started (m4 zeroed) on the periodic processing.<br>
|
|
While the animation is in progress, m4 holds the number
|
|
of animation cycles that have already taken place.<br>
|
|
when this number reaches 8 the animation is stopped.</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>94</tt>..<tt>9B</tt> </td>
|
|
<td align=left>plastic fountains (various stages of cyclic animation)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>9C</tt>..<tt>9F</tt> </td>
|
|
<td align=left>fizzy drink factory</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>A0</tt>..<tt>A3</tt> </td>
|
|
<td align=left>bubble generator
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>A1</tt> </td>
|
|
<td align=left>generators</td>
|
|
</tr>
|
|
<tr>
|
|
<td nowrap valign=top><tt>A2</tt> </td>
|
|
<td align=left>bubble capture facility; animation state in m3 (valid range <tt>00</tt>..<tt>27</tt>)</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>A4</tt>..<tt>A6</tt> </td>
|
|
<td align=left>toffee quarry
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>A5</tt> </td>
|
|
<td align=left>animated part; animation state in m3 (valid range <tt>00</tt>..<tt>45</tt>)</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>A7</tt>..<tt>AE</tt> </td>
|
|
<td align=left>sugar mine
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>AE</tt> </td>
|
|
<td align=left>animated part; animation state in m3 (valid range <tt>00</tt>..<tt>5F</tt>)</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr bgcolor="#CCCCCC">
|
|
<td valign=top nowrap><strong><a name="Class9"><tt> 9</tt></a></strong></td>
|
|
<td><strong>Tunnel / bridge</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign=top nowrap> </td>
|
|
<td>
|
|
<ul>
|
|
<li>m5 bits 7..4 clear: tunnel entrance/exit
|
|
<ul>
|
|
<li>m1: <a href="#OwnershipInfo">owner</a> of the tunnel</li>
|
|
<li>m3 bits 3..0 = <a href="#TrackType">track type</a> for railway tunnel, must be 0 for road tunnel</li>
|
|
<li>m4 bit 7 set = on snow or desert</li>
|
|
<li>m5 bits 3..2: <tt>0</tt> - railway tunnel, <tt>1</tt> - road tunnel</li>
|
|
<li>m5 bits 1..0 - direction: entrance towards: <tt>0</tt> = NE, <tt>1</tt> = SE, <tt>2</tt> = SW, <tt>3</tt> = NW</li>
|
|
</ul>
|
|
</li>
|
|
<li>m5 bit 7 set: bridge ramp
|
|
<ul>
|
|
<li>m1: <a href="#OwnershipInfo">owner</a> of the bridge</li>
|
|
<li>m2 bits 7..4: <a name="BridgeType">bridge type</a>:
|
|
<table>
|
|
<tr>
|
|
<th align=left>Type </th>
|
|
<th align=left>Max. speed (mph) </th>
|
|
<th align=left>Description</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>0</tt> </td>
|
|
<td align=center>20</td>
|
|
<td align=left>wooden</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>1</tt> </td>
|
|
<td align=center>30</td>
|
|
<td align=left>concrete</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>2</tt> </td>
|
|
<td align=center>40</td>
|
|
<td align=left>girder, steel</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>3</tt> </td>
|
|
<td align=center>50</td>
|
|
<td align=left>suspension, concrete</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>4</tt> </td>
|
|
<td align=center>60</td>
|
|
<td align=left>suspension, steel</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>5</tt> </td>
|
|
<td align=center>70</td>
|
|
<td align=left>suspension, steel</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>6</tt> </td>
|
|
<td align=center>100</td>
|
|
<td align=left>cantilever, steel</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>7</tt> </td>
|
|
<td align=center>130</td>
|
|
<td align=left>cantilever, steel</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>8</tt> </td>
|
|
<td align=center>150</td>
|
|
<td align=left>cantilever, steel</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>9</tt> </td>
|
|
<td align=center>160</td>
|
|
<td align=left>girder, steel</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>A</tt> </td>
|
|
<td align=center>200</td>
|
|
<td align=left>tubular, steel</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m3 bits 3..0 = <a href="#TrackType">type of track</a> on the bridge, must be 0 for road bridge</li>
|
|
<li>m4 bit 7 set = on snow or desert</li>
|
|
<li>m5 bits 3..2: <tt>0</tt> - railway bridge, <tt>1</tt> - road bridge</li>
|
|
<li>m5 bits 1..0: DiagDirection onto the bridge</li>
|
|
</ul>
|
|
</li>
|
|
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
|
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr bgcolor="#CCCCCC">
|
|
<td valign=top nowrap><strong><a name="ClassA"><tt> A</tt></a></strong></td>
|
|
<td><strong><tt>Unmovables</tt></strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td valign=top nowrap> </td>
|
|
<td>
|
|
<ul>
|
|
<li>m1 : <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li>
|
|
<li>m2 :
|
|
<ul>
|
|
<li>for company statue (m5 = 02), TownID on which the statue is built in</li>
|
|
</ul>
|
|
</li>
|
|
<li>m5 : tile type:
|
|
<table>
|
|
<tr>
|
|
<td nowrap valign=top><tt>00</tt> </td>
|
|
<td align=left>transmitter</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>01</tt> </td>
|
|
<td align=left>lighthouse</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>02</tt> </td>
|
|
<td align=left>company statue</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>03</tt> </td>
|
|
<td align=left>company-owned land</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td nowrap valign=top><tt>80</tt>..<tt>93</tt> </td>
|
|
<td align=left>company headquarters (5 sets of 4 tiles each, updated quarterly depending on the company performance)</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
|
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan=2>Classes <tt>B</tt> through <tt>F</tt> are reserved. The presence
|
|
of a tile in one of the reserved classes will crash OTTD.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
<hr>
|
|
Original Copyright © 2003 by Marcin Grzegorczyk for TTDLX.<br>
|
|
Transport Tycoon and Transport Tycoon Deluxe are Copyright © by Chris Sawyer.<br>
|
|
All the other trademarks are the property of their respective owners.<br>
|
|
</body>
|
|
|
|
</html>
|