Callback: Animation control
From GRFSpecs
Jump to navigationJump to searchAnimation control (1B/1C/25/140/148/152/159)
These callbacks are called, when an animation trigger happens.
| Callback | Feature | Mask property | Trigger | Variable 10 | Variable 18 | 
|---|---|---|---|---|---|
| 1B | Houses | Property 14 bit 2 | Periodic, see property 16 [1] |    2.5 Random bits [2] | Reserved for future use | 
| 1C | Houses | Property 14 bit 3 | Construction stage changes [3] |  15  Random bits |  15  First call [4] | 
| 25 | Industry tiles | Property 11 | All triggers, see variable 18 |    2.5 Random bits [5] | Trigger and more, see property 11 | 
| 140 | Stations, road stops | Station property 18, road stop property 10 | All triggers, see variable 18 |    2.5 Random bits [5] | Trigger and more, see station property 18 | 
| 148 | Houses | Property 1E | Watched cargo accepted [6] | Reserved for future use | See property 1E | 
| 154 | Airport tiles | Property 11 | All triggers, see variable 18 | Random bits [7] | Trigger and more, see property 11 | 
| 159 | Objects | Property 13 | All triggers, see variable 18 | Random bits [7] | Trigger and more, see property 13 | 
- ↑ For multi-tile houses property 19 bit 2 controls, whether the trigger is synchronised across all house tiles. See details there.
- ↑ Lower 16 bits are random per tile. Upper 16 bits are the same for all tiles, if property 19 bit 2 is set.
- ↑ During normal gameplay called 4 times per tile. During map generation called 1 time. For the first call to happen, you also have to set property 9 bit 5. For the first call to happen, you also have to set property 9 bit 5.
- ↑ Var 18 bit 0 is set, if the callback is called the first time for a new house. In-game the construction stage will be zero, at map generation and in scenario editor, it will be 3.
 Other bits of var 18 are reserved, and must be masked.
- ↑ 5.0 5.1 Lower 16 bits are random per tile. Upper 16 bits are the same for all tiles, if the trigger applies to multiple tiles.
- ↑ Due to implementation details, up to 250 game ticks can pass between the actual acceptance and triggering this callback.
- ↑ 7.0 7.1  15 15 Lower 16 bits are random per tile. Upper 16 bits are the same for all tiles, if the trigger applies to multiple tiles. Lower 16 bits are random per tile. Upper 16 bits are the same for all tiles, if the trigger applies to multiple tiles.
The return value has the format SSFF:
- FF: One of the following values:
- Value - Meaning - 00 - FC - Jump to this animation frame. - FD - leave the animation in its current state (do nothing) - FE - start animation with its current frame - FF - stop animation in its current frame 
- SS: Sound effect: If non-zero, the sound effect number to play at the tile.
Note: Every time the animation frame is changed the map tile will be refreshed, even if the selected graphics stay the same. Therefore using the animation frame as a timer should be avoided, and animation triggers should be preferred instead.
