diff options
-rw-r--r-- | docs/landscape.html | 4 | ||||
-rw-r--r-- | docs/landscape_grid.html | 4 | ||||
-rw-r--r-- | src/openttd.cpp | 9 | ||||
-rw-r--r-- | src/saveload.cpp | 2 | ||||
-rw-r--r-- | src/town_map.h | 5 |
5 files changed, 17 insertions, 7 deletions
diff --git a/docs/landscape.html b/docs/landscape.html index 7a53106ad..32f91af71 100644 --- a/docs/landscape.html +++ b/docs/landscape.html @@ -646,6 +646,7 @@ </li> </ul> <li>m3 bit 6 : bit 8 of house type (m4), allowing 512 different types.</li> + <li>m3 bit 5 : bit 6 of current animation frame (see m6)</li> <li>m3 bits 4..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> @@ -653,8 +654,7 @@ <ul> <li>If <a href="#newhouses">newhouses</a> is activated <ul> - <li>bits 7..3 : Current animation frame</li> - <li>bit 2 : free</li> + <li>bits 7..2 : Current animation frame (bits 5..0); bit 6 in m3</li> </ul> </li> <li>Standard behaviour diff --git a/docs/landscape_grid.html b/docs/landscape_grid.html index 849676c03..123dcda6c 100644 --- a/docs/landscape_grid.html +++ b/docs/landscape_grid.html @@ -170,10 +170,10 @@ the array so you can quickly see what is used and what is not. <td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td> - <td class="bits">XX<span class="free">O</span><span class="option">~ ~~</span>XX</td> + <td class="bits">XXX<span class="option">~ ~~</span>XX</td> <td class="bits">XXXX XXXX</td> <td class="bits">XXX<span class="abuse">X XXXX</span></td> - <td class="bits"><span class="abuse">XXXX X</span>XXX</td> + <td class="bits"><span class="abuse">XXXX XX</span>XX</td> <td class="bits">XXXX <span class="abuse">XXXX</span></td> </tr> <tr> diff --git a/src/openttd.cpp b/src/openttd.cpp index 66dd0d3a5..98975a36d 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -2431,6 +2431,15 @@ bool AfterLoadGame() } } + if (CheckSavegameVersion(91)) { + /* Increase HouseAnimationFrame from 5 to 7 bits */ + for (TileIndex t = 0; t < map_size; t++) { + if (IsTileType(t, MP_HOUSE) && GetHouseType(t) >= NEW_HOUSE_OFFSET) { + SetHouseAnimationFrame(t, GB(_m[t].m6, 3, 5)); + } + } + } + return InitializeWindowsAndCaches(); } diff --git a/src/saveload.cpp b/src/saveload.cpp index 1e55d1e86..9726e8872 100644 --- a/src/saveload.cpp +++ b/src/saveload.cpp @@ -34,7 +34,7 @@ #include "table/strings.h" -extern const uint16 SAVEGAME_VERSION = 90; +extern const uint16 SAVEGAME_VERSION = 91; uint16 _sl_version; ///< the major savegame version identifier byte _sl_minor_version; ///< the minor savegame version, DO NOT USE! diff --git a/src/town_map.h b/src/town_map.h index 4960522ce..11fbb1318 100644 --- a/src/town_map.h +++ b/src/town_map.h @@ -145,7 +145,7 @@ static inline void SetLiftPosition(TileIndex t, byte pos) static inline byte GetHouseAnimationFrame(TileIndex t) { assert(IsTileType(t, MP_HOUSE)); - return GB(_m[t].m6, 3, 5); + return GB(_m[t].m6, 2, 6) | (GB(_m[t].m3, 5, 1) << 6); } /** @@ -157,7 +157,8 @@ static inline byte GetHouseAnimationFrame(TileIndex t) static inline void SetHouseAnimationFrame(TileIndex t, byte frame) { assert(IsTileType(t, MP_HOUSE)); - SB(_m[t].m6, 3, 5, frame); + SB(_m[t].m6, 2, 6, GB(frame, 0, 6)); + SB(_m[t].m3, 5, 1, GB(frame, 6, 1)); } /** |