diff options
-rw-r--r-- | docs/landscape.html | 240 | ||||
-rw-r--r-- | docs/landscape_grid.html | 24 |
2 files changed, 137 insertions, 127 deletions
diff --git a/docs/landscape.html b/docs/landscape.html index b2e307888..930be700f 100644 --- a/docs/landscape.html +++ b/docs/landscape.html @@ -11,7 +11,17 @@ <h3><a name="Landscape">Landscape</a></h3> <p> -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. +Five attributes hold the information about a tile. +These attributes are referred to as + "<span style="font-weight: bold;">type_height</span>", + "<span style="font-weight: bold;">owner</span>", + "<span style="font-weight: bold;">m2</span>", + "<span style="font-weight: bold;">m3</span>", + "<span style="font-weight: bold;">m4</span>" and + "<span style="font-weight: bold;">m5</span>". +The most important value is the class of a tile, stored in the upper 4 bits of the type_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. </p> <p> OTTD's class-specific periodic tile processing routine is called once every +256 ticks for each tile. @@ -22,7 +32,7 @@ OTTD's class-specific periodic tile processing routine is called once every +256 <tr><td valign=top nowrap><a name="Class0"><tt> 0 </tt></a></td><td> <ul> -<li>map5 bits 4..0: tile type: +<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> @@ -30,7 +40,7 @@ OTTD's class-specific periodic tile processing routine is called once every +256 <tr><td nowrap valign=top><tt>03</tt> </td><td align=left>full grass</td></tr> <tr><td nowrap valign=top><tt>07</tt> </td><td align=left>rough land</td></tr> <tr><td nowrap valign=top><tt>0B</tt> </td><td align=left>rocks</td></tr> -<tr><td nowrap valign=top><tt>0F</tt> </td><td align=left>fields; type of fields in map3_lo bits 3..0 (legal values: 0 through 9)</td></tr> +<tr><td nowrap valign=top><tt>0F</tt> </td><td align=left>fields; type of fields in m3 bits 3..0 (legal values: 0 through 9)</td></tr> <tr><td nowrap valign=top><tt>10</tt> </td><td align=left>1/4 snow</td></tr> <tr><td nowrap valign=top><tt>11</tt> </td><td align=left>2/4 snow</td></tr> <tr><td nowrap valign=top><tt>12</tt> </td><td align=left>3/4 snow</td></tr> @@ -39,20 +49,20 @@ OTTD's class-specific periodic tile processing routine is called once every +256 <tr><td nowrap valign=top><tt>17</tt> </td><td align=left>full desert</td></tr> </table> </li> -<li>map5 bits 7..6: update counter, incremented on every periodic processing for tile types other than <tt>03</tt>, <tt>07</tt>, <tt>0B</tt> and <tt>10</tt> and above, on wraparound the tile is updated (for fields, the type of fields in map3_lo is increased, for other types the tile type in map5 is increased) +<li>m5 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 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>map_owner: <a href="#OwnershipInfo">owner</a> of the tile (normally <tt>10</tt>) +<li>owner: <a href="#OwnershipInfo">owner</a> of the tile (normally <tt>10</tt>) </li> -<li>map3_hi bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none); bits 4..2: same for the SE border +<li>m4 bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none); bits 4..2: same for the SE border </li> </ul> </td></tr> <tr><td valign=top nowrap><a name="Class1"><tt> 1 </tt></a></td><td> -map5 bit 7 clear: railway track +m5 bit 7 clear: railway track <ul> -<li>map5 bits 0..5: track layout: bit set = track present: +<li>m5 bits 0..5: track layout: bit set = track present: <table> <tr><td nowrap valign=top>bit 0: </td><td align=left>in the X direction</td></tr> <tr><td nowrap valign=top>bit 1: </td><td align=left>in the Y direction</td></tr> @@ -61,9 +71,9 @@ map5 bit 7 clear: railway track <tr><td nowrap valign=top>bit 4: </td><td align=left>in the west corner (direction N-S)</td></tr> <tr><td nowrap valign=top>bit 5: </td><td align=left>in the east corner (direction N-S)</td></tr> </table></li> -<li>map5 bit 6 set = with signals: +<li>m5 bit 6 set = with signals: <ul> -<li>map3_lo bits 7..4: bit set = signal present: +<li>m3 bits 7..4: bit set = signal present: <ul> <li>For track in the X direction: <table> @@ -90,8 +100,8 @@ map5 bit 7 clear: railway track <tr><td nowrap valign=top>bit 7: </td><td align=left>signal in the N direction on the track in the W corner</td></tr> </table></li> </ul></li> -<li>map2 bits 7..4: bit clear = signal shows red; same bits as in map3_lo</li> -<li>OpenTTD bits in map3_hi: +<li>m2 bits 7..4: bit clear = signal shows red; same bits as in m3</li> +<li>OpenTTD bits in m4: <table> <tr><td nowrap valign=top>bits 2..0: </td><td align=left>type of signal:</td></tr> <tr><td nowrap valign=top><tt>000</tt>: </td><td align=left>normal signals</td></tr> @@ -102,9 +112,9 @@ map5 bit 7 clear: railway track <tr><td nowrap valign=top>bit 3: </td><td align=left>set = semaphore signals, clear = light signals</td></tr> </table></li> </ul></li> -<li>map_owner: <a href="#OwnershipInfo">owner</a> of the track +<li>owner: <a href="#OwnershipInfo">owner</a> of the track </li> -<li>map2 bits 0..3: +<li>m2 bits 0..3: <table> <tr><td nowrap valign=top><tt>0</tt> </td><td align=left>on bare land</td></tr> <tr><td nowrap valign=top><tt>1</tt> </td><td align=left>on grass, no fences</td></tr> @@ -120,70 +130,70 @@ map5 bit 7 clear: railway track <tr><td nowrap valign=top><tt>B</tt> </td><td align=left>fence on the N side (track in the S corner)</td></tr> <tr><td nowrap valign=top><tt>C</tt> </td><td align=left>on snow or desert</td></tr> </table></li> -<li>map3_hi bits 0..3 = <a name="TrackType">track type</a>: <tt>0</tt> - conventional railway, <tt>1</tt> - monorail, <tt>2</tt> - maglev -<li>map3_hi bits 4..7 = Pbs reserved status: +<li>m4 bits 0..3 = <a name="TrackType">track type</a>: <tt>0</tt> - conventional railway, <tt>1</tt> - monorail, <tt>2</tt> - maglev +<li>m4 bits 4..7 = Pbs reserved status: <table> <tr><td nowrap valign=top><tt>bits 4..6</tt> </td><td align=left>'Track'number of reserved track + 1, if this is zero it means nothing is reserved on this tile</td></tr> <tr><td nowrap valign=top><tt>bit 7</tt> </td><td align=left>If this is set, then the opposite track ('Track'number^1) is also reserved</td></tr> </table></li> </ul> -map5 bits 7 and 6 set: railway depot / checkpoints +m5 bits 7 and 6 set: railway depot / checkpoints <ul> -<li>map5 value C0..C3: railway depot -<br>map5 bits 1..0 - direction: exit towards: <tt>00</tt> = NE, <tt>01</tt> = SE, <tt>02</tt> = SW, <tt>03</tt> = NW</li> -<li>map5 value C4..C5: checkpoint +<li>m5 value C0..C3: railway depot +<br>m5 bits 1..0 - direction: exit towards: <tt>00</tt> = NE, <tt>01</tt> = SE, <tt>02</tt> = SW, <tt>03</tt> = NW</li> +<li>m5 value C4..C5: checkpoint <br>bit 0: clear = in X direction, set = in Y direction <br> <br> -<li>map_owner: <a href="#OwnershipInfo">owner</a> of the depot / checkpoint</li> -<li>map3_lo bits 0..3 = <a href="#TrackType">track type</a></li> -<li>map3_lo bit 4 = use custom sprite (valid only for the checkpoint)</li> -<li>map3_lo bit 6 = track on this tile is reserved by pbs</li> -<li>map3_hi = custom station id</li> +<li>owner: <a href="#OwnershipInfo">owner</a> of the depot / checkpoint</li> +<li>m3 bits 0..3 = <a href="#TrackType">track type</a></li> +<li>m3 bit 4 = use custom sprite (valid only for the checkpoint)</li> +<li>m3 bit 6 = track on this tile is reserved by pbs</li> +<li>m4 = custom station id</li> </ul> </td></tr> <tr><td valign=top nowrap><a name="Class2"><tt> 2 </tt></a></td><td> -map5 bits 7..4 clear: road +m5 bits 7..4 clear: road <ul> -<li>map5 bits 3..0: road layout: bit set = road piece present: +<li>m5 bits 3..0: road layout: bit set = road piece present: <table> <tr><td nowrap valign=top>bit 0: </td><td align=left>NW piece</td></tr> <tr><td nowrap valign=top>bit 1: </td><td align=left>SW piece</td></tr> <tr><td nowrap valign=top>bit 2: </td><td align=left>SE piece</td></tr> <tr><td nowrap valign=top>bit 3: </td><td align=left>NE piece</td></tr> </table></li> -<li>map_owner: <a href="#OwnershipInfo">owner</a> of the road</li> -<li>map2: Index into the array of towns, 0 for non-town roads</li> -<li>map3_hi bits 0..3: counter for the roadworks</li> -<li>map3_hi bits 4..6: <tt>0</tt> - on bare land, <tt>1</tt> - on grass, <tt>2</tt> - paved, <tt>3</tt> - with streetlights, <tt>5</tt> - tree-lined, <tt>6</tt> - on grass with road works, <tt>7</tt> - paved with road works</li> -<li>map3_hi bit 7 set = on snow or desert</li> +<li>owner: <a href="#OwnershipInfo">owner</a> of the road</li> +<li>m2: Index into the array of towns, 0 for non-town roads</li> +<li>m4 bits 0..3: counter for the roadworks</li> +<li>m4 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> +<li>m4 bit 7 set = on snow or desert</li> </ul> -map5 bit 4 set, bits 7..5 clear: level crossing +m5 bit 4 set, bits 7..5 clear: level crossing <ul> -<li>map5 bit 3: clear - road in the X direction, set - road in the Y direction (railway track always perpendicular)</li> -<li>map5 bit 2: set if crossing lights are on</li> -<li>map5 bit 0: set if rail track is reserved by pbs</li> -<li>map_owner: <a href="#OwnershipInfo">owner</a> of the railway track</li> -<li>map2: Index into the array of towns, 0 for non-town roads</li> -<li>map3_lo bits 0..7: <a href="#OwnershipInfo">owner</a> of the road</li> -<li>map3_hi bits 3..0: <a href="#TrackType">track type</a></li> -<li>map3_hi bits 4..6: <tt>0</tt> - on bare land, <tt>1</tt> - on grass, <tt>2</tt> or higher - paved</li> -<li>map3_hi bit 7 set = on snow or desert</li> +<li>m5 bit 3: clear - road in the X direction, set - road in the Y direction (railway track always perpendicular)</li> +<li>m5 bit 2: set if crossing lights are on</li> +<li>m5 bit 0: set if rail track is reserved by pbs</li> +<li>owner: <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 bits 0..7: <a href="#OwnershipInfo">owner</a> of the road</li> +<li>m4 bits 3..0: <a href="#TrackType">track type</a></li> +<li>m4 bits 4..6: <tt>0</tt> - on bare land, <tt>1</tt> - on grass, <tt>2</tt> or higher - paved</li> +<li>m4 bit 7 set = on snow or desert</li> </ul> -map5 bit 5 set: road depot +m5 bit 5 set: road depot <ul> -<li>map5 bits 3..0 - direction: exit towards: <tt>0</tt> = NE, <tt>1</tt> = SE, <tt>2</tt> = SW, <tt>3</tt> = NW</li> -<li>map_owner: <a href="#OwnershipInfo">owner</a> of the depot</li> -<li>map3_hi bit 7 set = on snow or desert (not displayed, but set internally)</li> +<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>owner: <a href="#OwnershipInfo">owner</a> of the depot</li> +<li>m4 bit 7 set = on snow or desert (not displayed, but set internally)</li> </ul> </td></tr> <tr><td valign=top nowrap><a name="Class3"><tt> 3 </tt></a></td><td> Town building <ul> -<li>map2: Index into the array of towns</li> -<li>map3_hi: <a name="HouseTypes">town building type</a>: +<li>m2: Index into the array of towns</li> +<li>m4: <a name="HouseTypes">town building type</a>: <p><small>Note: In the climate list, 'sub-arctic' means below the <a href="#_snowline">snow line</a>, and 'snow' means above the snow line in the sub-arctic climate.</small></p> <table> <tr><th align=left>Type </th><th align=left>Size </th><th align=left>Climates </th><th align=left>Description</th></tr> @@ -273,13 +283,13 @@ Town building <tr><td nowrap valign=top><tt>6D</tt> </td><td>1×1</td><td>toyland</td><td align=left>piggy-bank</td></tr> <tr><td colspan=2></td></tr> <!-- spacer -- -- (and I don't mean a walk) --> </table></li> -<li>map3_lo bits 7..6: stage of construction (<tt>3</tt> = completed)</li> -<li>map5 bits 2..0: construction counter, for buildings under construction incremented on every periodic tile processing, on wraparound the stage of construction in map3_lo is increased</li> +<li>m3 bits 7..6: stage of construction (<tt>3</tt> = completed)</li> +<li>m5 bits 2..0: construction counter, for buildings under construction incremented on every periodic tile processing, on wraparound the stage of construction in m3 is increased</li> <li>for large office blocks (types <tt>04</tt> and <tt>05</tt>): <ul> -<li>map_owner bits 6..0: position of the lift</li> -<li>map_owner bit 7: if set the lift is moving</li> -<li>map5 bit 7: if set then map5 bits 5..0 hold the final position of the lift divided by 6 (valid values 0..6 except 1)</li> +<li>owner bits 6..0: position of the lift</li> +<li>owner bit 7: if set the lift is moving</li> +<li>m5 bit 7: if set then m5 bits 5..0 hold the final position of the lift divided by 6 (valid values 0..6 except 1)</li> </ul></li> </ul> </td></tr> @@ -287,9 +297,9 @@ Town building <tr><td valign=top nowrap><a name="Class4"><tt> 4 </tt></a></td><td> Trees <ul> -<li>map5 bits 7..6: number of trees minus one</li> -<li>map5 bits 2..0: growth status: <tt>0</tt>..<tt>2</tt> - one of trees is growing, <tt>3</tt> - all trees are fully grown, <tt>4</tt>..<tt>6</tt> - one of trees is withering</li> -<li>map3_lo bits 7..0: type of trees: +<li>m5 bits 7..6: number of trees minus one</li> +<li>m5 bits 2..0: growth status: <tt>0</tt>..<tt>2</tt> - one of trees is growing, <tt>3</tt> - all trees are fully grown, <tt>4</tt>..<tt>6</tt> - one of trees is withering</li> +<li>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> @@ -300,24 +310,24 @@ Trees </table> (note: the actually displayed set of trees depends on both type and number of trees) </li> -<li>map3_hi bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none)</li> -<li>map3_hi bits 4..2: type of hedge on the SE border of the tile (1 through 6, or 0=none)</li> -<li>map2 bits 5..4: +<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>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; map2 bits 7..6 - amount of snow or desert (for desert always set to 3 in TTD) +<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>map2 bits 3..0: update counter, incremented on every periodic processing, on wraparound the growth status is updated (or, if it's <tt>3</tt>, a random action is taken)</li> -<li>map_owner: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li> +<li>m2 bits 3..0: update counter, incremented on every periodic processing, on wraparound the growth status is updated (or, if it's <tt>3</tt>, a random action is taken)</li> +<li>owner: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li> </ul> </td></tr> <tr><td valign=top nowrap><a name="Class5"><tt> 5 </tt></a></td><td> Station tile <ul> -<li>map5: tile type: +<li>m5: tile type: <table> <tr><td nowrap valign=top><tt>00</tt>..<tt>07</tt> </td><td align=left>railway station <br><tt>00</tt>..<tt>01</tt> - open platform, <tt>02</tt>..<tt>03</tt> - open platform with station building, <tt>04</tt>....<tt>07</tt> - roofed platform @@ -375,18 +385,18 @@ exit towards: <tt>47</tt> - NE, <tt>48</tt> - SE, <tt>49</tt> - SW, <tt>4A</tt> <tr><td colspan=2></td></tr> <!-- spacer --> </table> </li> -<li>map_owner: <a href="#OwnershipInfo">owner</a> of the station</li> -<li>map2: index into the <a href="#_StationArray">array of stations</a></li> -<li>map3_lo bits 0..3: <a href="#TrackType">track type</a> for railway stations, must be 0 for all the other stations</li> -<li>map3_lo bit 4 = use custom sprite (valid only railway stations FOR NOW)</li> -<li>map3lo bit 6 set = track is reserved by pbs (railway stations only)</li> -<li>map3_hi = custom station id</li> +<li>owner: <a href="#OwnershipInfo">owner</a> of the station</li> +<li>m2: index into the <a href="#_StationArray">array of stations</a></li> +<li>m3 bits 0..3: <a href="#TrackType">track type</a> for railway stations, must be 0 for all the other stations</li> +<li>m3 bit 4 = use custom sprite (valid only railway stations FOR NOW)</li> +<li>m3 bit 6 set = track is reserved by pbs (railway stations only)</li> +<li>m4 = custom station id</li> </ul> </td></tr> <tr><td valign=top nowrap><a name="Class6"><tt> 6 </tt></a></td><td> <ul> -<li>map5: tile type: +<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> @@ -417,7 +427,7 @@ exit towards: <tt>47</tt> - NE, <tt>48</tt> - SE, <tt>49</tt> - SW, <tt>4A</tt> </table> </td></tr> </table></li> -<li>map_owner: <a href="#OwnershipInfo">owner</a> (for water and coasts normally <tt>11</tt>)</li> +<li>owner: <a href="#OwnershipInfo">owner</a> (for water and coasts normally <tt>11</tt>)</li> </ul> </td></tr> @@ -431,19 +441,19 @@ Tiles of this class form an invisible, one tile wide border at the south (bottom <tr><td valign=top nowrap><a name="Class8"><tt> 8 </tt></a></td><td> Industry tile <ul> -<li>map5: type: +<li>m5: type: <br><small>(note: this is not the same as the <a href="#industry.type">industry type</a> stored in the <a href="#_IndustryArray">array of industries</a>)</small> <table> <tr><td nowrap valign=top><tt>00</tt>..<tt>06</tt> </td><td align=left>coal mine <table> <tr><td nowrap valign=top><tt>00</tt> </td><td align=left>wheel tower when not animated</td></tr> -<tr><td nowrap valign=top><tt>01</tt> </td><td align=left>wheel tower when animated; animation state in map_owner bits 5..0; map_owner bit 6 set = sound already generated</td></tr> +<tr><td nowrap valign=top><tt>01</tt> </td><td align=left>wheel tower when animated; animation state in owner bits 5..0; owner bit 6 set = sound already generated</td></tr> </table> </td></tr> <tr><td nowrap valign=top><tt>07</tt>..<tt>0A</tt> </td><td align=left>power station <table> <tr><td nowrap valign=top><tt>08</tt> </td><td align=left>chimney</td></tr> -<tr><td nowrap valign=top><tt>0A</tt> </td><td align=left>transformer; animation progress in map_owner bits 5..2 (valid range <tt>0</tt>..<tt>7</tt>)</td></tr> +<tr><td nowrap valign=top><tt>0A</tt> </td><td align=left>transformer; animation progress in owner bits 5..2 (valid range <tt>0</tt>..<tt>7</tt>)</td></tr> </table> </td></tr> <tr><td nowrap valign=top><tt>0B</tt>..<tt>0F</tt> </td><td align=left>sawmill</td></tr> @@ -457,7 +467,7 @@ Industry tile <tr><td nowrap valign=top><tt>1D</tt>..<tt>20</tt> </td><td align=left>oil wells <table> <tr><td nowrap valign=top><tt>1D</tt> </td><td align=left>not animated</td></tr> -<tr><td nowrap valign=top><tt>1E</tt>..<tt>20</tt> </td><td align=left>various stages of animation; progress of animation in map_owner bits 1..0</td></tr> +<tr><td nowrap valign=top><tt>1E</tt>..<tt>20</tt> </td><td align=left>various stages of animation; progress of animation in owner bits 1..0</td></tr> </table> </td></tr> <tr><td nowrap valign=top><tt>21</tt>..<tt>26</tt> </td><td align=left>farm</td></tr> @@ -466,7 +476,7 @@ Industry tile <tr><td nowrap valign=top><tt>2F</tt>..<tt>33</tt> </td><td align=left>copper ore mine <table> <tr><td nowrap valign=top><tt>2F</tt> </td><td align=left>wheel tower when not animated</td></tr> -<tr><td nowrap valign=top><tt>30</tt> </td><td align=left>wheel tower when animated; animation state in map_owner bits 5..0; map_owner bit 6 set = sound already generated</td></tr> +<tr><td nowrap valign=top><tt>30</tt> </td><td align=left>wheel tower when animated; animation state in owner bits 5..0; owner bit 6 set = sound already generated</td></tr> <tr><td nowrap valign=top><tt>31</tt> </td><td align=left>chimney</td></tr> </table> </td></tr> @@ -477,7 +487,7 @@ Industry tile <tr><td nowrap valign=top><tt>48</tt>..<tt>58</tt> </td><td align=left>gold mine <table> <tr><td nowrap valign=top><tt>4F</tt> </td><td align=left>wheel tower when not animated</td></tr> -<tr><td nowrap valign=top><tt>58</tt> </td><td align=left>wheel tower when animated; animation state in map_owner bits 5..0; map_owner bit 6 set = sound already generated</td></tr> +<tr><td nowrap valign=top><tt>58</tt> </td><td align=left>wheel tower when animated; animation state in owner bits 5..0; owner bit 6 set = sound already generated</td></tr> </table> </td></tr> <tr><td nowrap valign=top><tt>59</tt>..<tt>5A</tt> </td><td align=left>bank (sub-arctic or sub-tropical climate)</td></tr> @@ -504,9 +514,9 @@ Industry tile <tr><td nowrap valign=top><tt>8A</tt>..<tt>8D</tt> </td><td align=left>toy shop</td></tr> <tr><td nowrap valign=top><tt>8E</tt>..<tt>93</tt> </td><td align=left>toy factory <table> -<tr><td nowrap valign=top><tt>8F</tt> </td><td align=left>animated part; animation state in map3_lo (valid range <tt>00</tt>..<tt>31</tt>)<br> -tile animation is started (map3_hi zeroed) on the periodic processing if <a href="#industry.didtransform">field <tt>2C</tt></a> in the corresponding industry array entry is nonzero<br> -while the animation is in progress (see the <a href="#_AnimatedTilesList">array at <tt>04328</tt></a>) map3_hi holds the number of animation cycles that have already taken place; when this number reaches 8 the animation is stopped</td></tr> +<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 if <a href="#industry.didtransform">field <tt>2C</tt></a> in the corresponding industry array entry is nonzero<br> +while the animation is in progress (see the <a href="#_AnimatedTilesList">array at <tt>04328</tt></a>) m4 holds the number of animation cycles that have already taken place; when this number reaches 8 the animation is stopped</td></tr> </table> </td></tr> <tr><td nowrap valign=top><tt>94</tt>..<tt>9B</tt> </td><td align=left>plastic fountains (various stages of cyclic animation)</td></tr> @@ -514,71 +524,71 @@ while the animation is in progress (see the <a href="#_AnimatedTilesList">array <tr><td nowrap valign=top><tt>A0</tt>..<tt>A3</tt> </td><td align=left>bubble generator <table> <tr><td nowrap valign=top><tt>A1</tt> </td><td align=left>generators</td></tr> -<tr><td nowrap valign=top><tt>A2</tt> </td><td align=left>bubble capture facility; animation state in map3_lo (valid range <tt>00</tt>..<tt>27</tt>)</td></tr> +<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 map3_lo (valid range <tt>00</tt>..<tt>45</tt>)</td></tr> +<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 map3_lo (valid range <tt>00</tt>..<tt>5F</tt>)</td></tr> +<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> <tr><td colspan=2></td></tr> <!-- spacer --> </table></li> -<li>map2: index into the <a href="#_IndustryArray">array of industries</a> +<li>m2: index into the <a href="#_IndustryArray">array of industries</a> </li> -<li>map_owner bit 7: clear = under construction +<li>owner bit 7: clear = under construction <ul> -<li>map_owner bits 4..2: construction counter, for buildings under construction incremented on every periodic tile processing +<li>owner bits 4..2: construction counter, for buildings under construction incremented on every periodic tile processing </li> </ul></li> -<li>map_owner bits 1..0: stage of construction (<tt>3</tt> = completed), incremented when the construction counter wraps around +<li>owner bits 1..0: stage of construction (<tt>3</tt> = completed), incremented when the construction counter wraps around <br>the meaning is different for some animated tiles which are never under construction (types <tt>01</tt>, <tt>1E</tt>..<tt>20</tt>, <tt>30</tt>, <tt>58</tt>; see above) </li> </ul> </td></tr> <tr><td valign=top nowrap><a name="Class9"><tt> 9 </tt></a></td><td> -map5 bits 7..4 clear: tunnel entrance/exit +m5 bits 7..4 clear: tunnel entrance/exit <ul> -<li>map5 bits 3..2: <tt>0</tt> - railway tunnel, <tt>1</tt> - road tunnel</li> -<li>map5 bits 1..0 - direction: entrance towards: <tt>0</tt> = NE, <tt>1</tt> = SE, <tt>2</tt> = SW, <tt>3</tt> = NW</li> -<li>map_owner: <a href="#OwnershipInfo">owner</a> of the tunnel</li> -<li>map3_lo bits 3..0 = <a href="#TrackType">track type</a> for railway tunnel, must be 0 for road tunnel</li> -<li>map3_hi bit 7 set = on snow or desert</li> -<li>map3hi bit 0 set = track with 'Track'number 0 is reserved by pbs</li> -<li>map3hi bit 1 set = track with 'Track'number 1 is reserved by pbs</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> +<li>owner: <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>m4 bit 0 set = track with 'Track'number 0 is reserved by pbs</li> +<li>m4 bit 1 set = track with 'Track'number 1 is reserved by pbs</li> </ul> -map5 bit 7 set: bridge +m5 bit 7 set: bridge <ul><li> -map5 bit 6 clear: bridge ending +m5 bit 6 clear: bridge ending <ul> -<li>map5 bit 5: clear - northern, set - southern ending</li> -<li>map3_lo bits 3..0 = <a href="#TrackType">type of track</a> on the bridge, must be 0 for road bridge</li> -<li>map_owner: <a href="#OwnershipInfo">owner</a> of the bridge</li> +<li>m5 bit 5: clear - northern, set - southern ending</li> +<li>m3 bits 3..0 = <a href="#TrackType">type of track</a> on the bridge, must be 0 for road bridge</li> +<li>owner: <a href="#OwnershipInfo">owner</a> of the bridge</li> </ul> -map5 bit 6 set: bridge middle part +m5 bit 6 set: bridge middle part <ul> -<li>map5 bit 5 clear: +<li>m5 bit 5 clear: <ul> -<li>map5 bits 4..3: land under bridge: <tt>0</tt> - grass, snow or desert, <tt>1</tt> - water</li> +<li>m5 bits 4..3: land under bridge: <tt>0</tt> - grass, snow or desert, <tt>1</tt> - water</li> </ul> -map5 bit 5 set: +m5 bit 5 set: <ul> -<li>map5 bits 4..3: transport route under bridge: <tt>0</tt> - railway, <tt>1</tt> - road</li> +<li>m5 bits 4..3: transport route under bridge: <tt>0</tt> - railway, <tt>1</tt> - road</li> </ul> -<li>map3_lo bits 7..4 = <a href="#TrackType">type of track</a> on the bridge, must be 0 for road bridge</li> -<li>map3_lo bits 3..0 = <a href="#TrackType">type of track</a> under the bridge, if any</li> -<li>map2 bits 3..0: bridge piece (<tt>0</tt>..<tt>5</tt>) -<li>map_owner: <a href="#OwnershipInfo">owner</a> of the land under bridge</li> +<li>m3 bits 7..4 = <a href="#TrackType">type of track</a> on the bridge, must be 0 for road bridge</li> +<li>m3 bits 3..0 = <a href="#TrackType">type of track</a> under the bridge, if any</li> +<li>m2 bits 3..0: bridge piece (<tt>0</tt>..<tt>5</tt>) +<li>owner: <a href="#OwnershipInfo">owner</a> of the land under bridge</li> </ul></li> -<li>map5 bits 2..1: <tt>0</tt> - railway bridge, <tt>1</tt> - road bridge</li> -<li>map5 bit 0: clear - bridge in the X direction, set - bridge in the Y direction</li> -<li>map2 bits 7..4: <a name="BridgeType">bridge type</a>: +<li>m5 bits 2..1: <tt>0</tt> - railway bridge, <tt>1</tt> - road bridge</li> +<li>m5 bit 0: clear - bridge in the X direction, set - bridge in the Y direction</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> @@ -593,13 +603,13 @@ map5 bit 5 set: <tr><td nowrap valign=top><tt>9</tt> </td><td align=center>160</td><td align=left>girder, steel</td></tr> <tr><td nowrap valign=top><tt>A</tt> </td><td align=center>200</td><td align=left>tubular, steel</td></tr> </table></li> -<li>map3_hi bit 7 set = on snow or desert</li> +<li>m4 bit 7 set = on snow or desert</li> </ul> </td></tr> <tr><td valign=top nowrap><a name="ClassA"><tt> A </tt></a></td><td> <ul> -<li>map5: tile type: +<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> @@ -608,7 +618,7 @@ map5 bit 5 set: <tr><td nowrap valign=top><tt>80</tt>..<tt>93</tt> </td><td align=left>company headquarters (5 sets of 4 tiles each, updated quarterly depending on the company performance)</td></tr> </table> </li> -<li>map_owner: <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li> +<li>owner: <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li> </ul> </td></tr> diff --git a/docs/landscape_grid.html b/docs/landscape_grid.html index fd0a3d238..b8c615e08 100644 --- a/docs/landscape_grid.html +++ b/docs/landscape_grid.html @@ -14,22 +14,22 @@ </head> <body style="direction: ltr;"> <h3 style="font-weight: bold;">Landscape</h3> -<span style="font-weight: bold;"></span>Five arrays are used to encode the information of the contents of the tile. +<span style="font-weight: bold;"></span>Five attributes hold the information about a tile. This can be seen in the <a href="landscape.html">Landscape</a> document. This page tries to give an overview of used and free bits of the array so you can quickly see what is used and what is not. <ul> <li><span style="font-weight: bold;"><span class="freebits">O</span></span> - bit is free</li> <li><span style="font-weight: bold;">X</span> - bit is used</li> - <li><span style="font-weight: bold;"><span class="abuse"> </span></span> - bit of _map_* is abused for different purposes</li> + <li><span style="font-weight: bold;"><span class="abuse"> </span></span> - bit of attribute is abused for different purposes</li> <li><b>NOTE: </b>counting the bits starts with bit0 in the most left position (eg. a bit screwed LE format; BIT by BIT) </li> </ul> <p> <ul> - <li><span style="font-weight: bold;">_map_owner[]</span> - 8 bits in size, used to identify the owner of that tile (eg piece of rail, bridge, etc.).</li> - <li><span style="font-weight: bold;">_map2[]</span> - 16 bits in size, used to identify the index of the given tile (object) in the (object-)array.</li> - <li><span style="font-weight: bold;">_map3[]</span> - 16 bits in size, which is split up into _map3lo[] and _map3hi[] is used for general storage.</li> - <li><span style="font-weight: bold;">_map_type_and_height[]</span> - 8 bits in size, stores tile height (lower 4 bits) and tile class (upper 4 bits).</li> - <li><span style="font-weight: bold;">_map5[]</span> - 8 bits in size, is used for general storage.</li> + <li><span style="font-weight: bold;">type_height</span> - 8 bits in size, stores tile height (lower 4 bits) and tile class (upper 4 bits)</li> + <li><span style="font-weight: bold;">owner</span> - 8 bits in size, used to identify the owner of that tile (eg piece of rail, bridge, etc.)</li> + <li><span style="font-weight: bold;">m2</span> - 16 bits in size, used to identify the index of the given tile (object) in the (object-)array</li> + <li><span style="font-weight: bold;">m3/m4</span> - 16 bits in size, which is split up into m3 and m4 is used for general storage</li> + <li><span style="font-weight: bold;">m5</span> - 8 bits in size, is used for general storage</li> </ul> <table style="text-align: left;" border="1" cellpadding="2" @@ -37,11 +37,11 @@ the array so you can quickly see what is used and what is not. <tbody> <tr> <th style="white-space: nowrap; text-align: left;">class</th> - <th style="white-space: nowrap; text-align: center;">_map_owner[L1] (8)</th> - <th style="white-space: nowrap; text-align: center;">_map2[L2] (16)</th> - <th style="white-space: nowrap; text-align: center;">_map3[lo& hi,L3] (16)</th> - <th style="white-space: nowrap; text-align: center;">_map_type_and_height[L4] (8)</th> - <th style="white-space: nowrap; text-align: center;">_map5[L5] (8)</th> + <th style="white-space: nowrap; text-align: center;">owner[L1] (8)</th> + <th style="white-space: nowrap; text-align: center;">m2[L2] (16)</th> + <th style="white-space: nowrap; text-align: center;">m3/m4[L3] (16)</th> + <th style="white-space: nowrap; text-align: center;">type_height[L4] (8)</th> + <th style="white-space: nowrap; text-align: center;">m5[L5] (8)</th> </tr> <tr> <td style="white-space: nowrap; text-align: left;">bits</td> |