1 /*
2  * This file is part of OpenTTD.
3  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6  */
7 
8 /** @file station_land.h Sprites to use and how to display them for station tiles. */
9 
10 /**
11  * Constructor macro for an image without a palette in a DrawTileSeqStruct array.
12  * @param dx  Offset in x direction
13  * @param dy  Offset in y direction
14  * @param dz  Offset in z direction
15  * @param sx  Size in x direction
16  * @param sy  Size in y direction
17  * @param sz  Size in z direction
18  * @param img Sprite to draw
19  */
20 #define TILE_SEQ_LINE(dx, dy, dz, sx, sy, sz, img) TILE_SEQ_LINE_PAL(dx, dy, dz, sx, sy, sz, img, PAL_NONE)
21 
22 /**
23  * Constructor macro for an image with a palette in a DrawTileSeqStruct array.
24  * @param dx  Offset in x direction
25  * @param dy  Offset in y direction
26  * @param dz  Offset in z direction
27  * @param sx  Size in x direction
28  * @param sy  Size in y direction
29  * @param sz  Size in z direction
30  * @param img Sprite to draw
31  * @param pal Palette sprite
32  */
33 #define TILE_SEQ_LINE_PAL(dx, dy, dz, sx, sy, sz, img, pal) { dx, dy, dz, sx, sy, sz, {img, pal} },
34 
35 /**
36  * Constructor macro for an image without bounding box.
37  * @param dx  Screen X offset from parent sprite
38  * @param dy  Screen Y offset from parent sprite
39  * @param img Sprite to draw
40  * @param pal Palette sprite
41  */
42 #define TILE_SEQ_CHILD(dx, dy, img, pal) TILE_SEQ_LINE_PAL(dx, dy, (int8)0x80, 0, 0, 0, img, pal)
43 
44 /**
45  * Constructor macro for additional ground sprites.
46  * These need to be at the front of a DrawTileSeqStruct sequence.
47  * @param dx  Offset in x direction
48  * @param dy  Offset in y direction
49  * @param dz  Offset in z direction
50  * @param img Sprite to draw
51  */
52 #define TILE_SEQ_GROUND(dx, dy, dz, img) TILE_SEQ_CHILD(2 * (dy - dx), dx + dy - dz, img, PAL_NONE)
53 
54 /** Constructor macro for a terminating DrawTileSeqStruct entry in an array */
55 #define TILE_SEQ_END() { (int8)0x80, 0, 0, 0, 0, 0, {0, 0} }
56 
57 static const DrawTileSeqStruct _station_display_nothing[] = {
58 	TILE_SEQ_END()
59 };
60 
61 static const DrawTileSeqStruct _station_display_datas_0[] = {
62 	TILE_SEQ_LINE( 0,  0,  0, 16,  5,  2, SPR_RAIL_PLATFORM_X_REAR  | (1U << PALETTE_MODIFIER_COLOUR))
63 	TILE_SEQ_LINE( 0, 11,  0, 16,  5,  2, SPR_RAIL_PLATFORM_X_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
64 	TILE_SEQ_END()
65 };
66 
67 static const DrawTileSeqStruct _station_display_datas_1[] = {
68 	TILE_SEQ_LINE( 0,  0,  0,  5, 16,  2, SPR_RAIL_PLATFORM_Y_REAR  | (1U << PALETTE_MODIFIER_COLOUR))
69 	TILE_SEQ_LINE(11,  0,  0,  5, 16,  2, SPR_RAIL_PLATFORM_Y_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
70 	TILE_SEQ_END()
71 };
72 
73 static const DrawTileSeqStruct _station_display_datas_2[] = {
74 	TILE_SEQ_LINE( 0,  0,  0, 16,  5, 15, SPR_RAIL_PLATFORM_BUILDING_X | (1U << PALETTE_MODIFIER_COLOUR))
75 	TILE_SEQ_LINE( 0, 11,  0, 16,  5,  2, SPR_RAIL_PLATFORM_X_FRONT    | (1U << PALETTE_MODIFIER_COLOUR))
76 	TILE_SEQ_END()
77 };
78 
79 static const DrawTileSeqStruct _station_display_datas_3[] = {
80 	TILE_SEQ_LINE( 0,  0,  0,  5, 16, 15, SPR_RAIL_PLATFORM_BUILDING_Y | (1U << PALETTE_MODIFIER_COLOUR))
81 	TILE_SEQ_LINE(11,  0,  0,  5, 16,  2, SPR_RAIL_PLATFORM_Y_FRONT    | (1U << PALETTE_MODIFIER_COLOUR))
82 	TILE_SEQ_END()
83 };
84 
85 static const DrawTileSeqStruct _station_display_datas_4[] = {
86 	TILE_SEQ_LINE( 0,  0,  0, 16,  5,  7, SPR_RAIL_PLATFORM_PILLARS_X_REAR | (1U << PALETTE_MODIFIER_COLOUR))
87 	TILE_SEQ_LINE( 0, 11,  0, 16,  5,  2, SPR_RAIL_PLATFORM_X_FRONT        | (1U << PALETTE_MODIFIER_COLOUR))
88 	TILE_SEQ_LINE( 0,  0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_X_TILE_A | (1U << PALETTE_MODIFIER_COLOUR))
89 	TILE_SEQ_CHILD( 0,  0,                SPR_RAIL_ROOF_GLASS_X_TILE_A     | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT)
90 	TILE_SEQ_END()
91 };
92 
93 static const DrawTileSeqStruct _station_display_datas_5[] = {
94 	TILE_SEQ_LINE( 0,  0,  0,  5, 16,  2, SPR_RAIL_PLATFORM_PILLARS_Y_REAR | (1U << PALETTE_MODIFIER_COLOUR))
95 	TILE_SEQ_LINE(11,  0,  0,  5, 16,  2, SPR_RAIL_PLATFORM_Y_FRONT        | (1U << PALETTE_MODIFIER_COLOUR))
96 	TILE_SEQ_LINE( 0,  0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_Y_TILE_A | (1U << PALETTE_MODIFIER_COLOUR))
97 	TILE_SEQ_CHILD( 0,  0,                SPR_RAIL_ROOF_GLASS_Y_TILE_A     | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT)
98 	TILE_SEQ_END()
99 };
100 
101 static const DrawTileSeqStruct _station_display_datas_6[] = {
102 	TILE_SEQ_LINE( 0,  0,  0, 16,  5,  2, SPR_RAIL_PLATFORM_X_REAR          | (1U << PALETTE_MODIFIER_COLOUR))
103 	TILE_SEQ_LINE( 0, 11,  0, 16,  5,  2, SPR_RAIL_PLATFORM_PILLARS_X_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
104 	TILE_SEQ_LINE( 0,  0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_X_TILE_B  | (1U << PALETTE_MODIFIER_COLOUR))
105 	TILE_SEQ_CHILD( 0,  0,                SPR_RAIL_ROOF_GLASS_X_TILE_B      | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT)
106 	TILE_SEQ_END()
107 };
108 
109 static const DrawTileSeqStruct _station_display_datas_7[] = {
110 	TILE_SEQ_LINE( 0,  0,  0,  5, 16,  2, SPR_RAIL_PLATFORM_Y_REAR          | (1U << PALETTE_MODIFIER_COLOUR))
111 	TILE_SEQ_LINE(11,  0,  0,  5, 16,  2, SPR_RAIL_PLATFORM_PILLARS_Y_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
112 	TILE_SEQ_LINE( 0,  0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_Y_TILE_B  | (1U << PALETTE_MODIFIER_COLOUR))
113 	TILE_SEQ_CHILD( 0,  0,                SPR_RAIL_ROOF_GLASS_Y_TILE_B      | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT)
114 	TILE_SEQ_END()
115 };
116 
117 static const DrawTileSeqStruct _station_display_fence_nw[] = {
118 	TILE_SEQ_GROUND( 0,  0,  0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
119 	TILE_SEQ_END()
120 };
121 
122 static const DrawTileSeqStruct _station_display_fence_ne[] = {
123 	TILE_SEQ_GROUND( 0,  0,  0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
124 	TILE_SEQ_END()
125 };
126 
127 static const DrawTileSeqStruct _station_display_fence_sw[] = {
128 	TILE_SEQ_GROUND(15,  0,  0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
129 	TILE_SEQ_END()
130 };
131 
132 static const DrawTileSeqStruct _station_display_fence_se[] = {
133 	TILE_SEQ_GROUND( 0, 15,  0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR))
134 	TILE_SEQ_END()
135 };
136 
137 static const DrawTileSeqStruct _station_display_terminal_a[] = {
138 	TILE_SEQ_LINE( 2,  0,  0, 11, 16, 40, SPR_AIRPORT_TERMINAL_A | (1U << PALETTE_MODIFIER_COLOUR))
139 	TILE_SEQ_END()
140 };
141 
142 static const DrawTileSeqStruct _station_display_tower_fence_sw[] = {
143 	TILE_SEQ_LINE( 3,  3,  0, 10, 10, 60, SPR_AIRPORT_TOWER | (1U << PALETTE_MODIFIER_COLOUR))
144 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
145 	TILE_SEQ_END()
146 };
147 
148 static const DrawTileSeqStruct _station_display_concourse[] = {
149 	TILE_SEQ_LINE( 0,  1,  0, 14, 14, 30, SPR_AIRPORT_CONCOURSE | (1U << PALETTE_MODIFIER_COLOUR))
150 	TILE_SEQ_END()
151 };
152 
153 static const DrawTileSeqStruct _station_display_datas_terminal_b[] = {
154 	TILE_SEQ_LINE( 3,  3,  0, 10, 11, 35, SPR_AIRPORT_TERMINAL_B | (1U << PALETTE_MODIFIER_COLOUR))
155 	TILE_SEQ_END()
156 };
157 
158 static const DrawTileSeqStruct _station_display_datas_terminal_c[] = {
159 	TILE_SEQ_LINE( 0,  3,  0, 16, 11, 40, SPR_AIRPORT_TERMINAL_C | (1U << PALETTE_MODIFIER_COLOUR))
160 	TILE_SEQ_END()
161 };
162 
163 static const DrawTileSeqStruct _station_display_hangar_se[] = {
164 	TILE_SEQ_LINE(14,  0,  0,  2, 17, 28, SPR_AIRPORT_HANGAR_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
165 	TILE_SEQ_LINE( 0,  0,  0,  2, 17, 28, SPR_AIRPORT_HANGAR_REAR | (1U << PALETTE_MODIFIER_COLOUR))
166 	TILE_SEQ_END()
167 };
168 
169 static const DrawTileSeqStruct _station_display_jetway_1[] = {
170 	TILE_SEQ_LINE( 7, 11,  0,  3,  3, 14, SPR_AIRPORT_JETWAY_1 | (1U << PALETTE_MODIFIER_COLOUR))
171 	TILE_SEQ_LINE( 0,  0,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR))
172 	TILE_SEQ_END()
173 };
174 
175 static const DrawTileSeqStruct _station_display_jetway_2[] = {
176 	TILE_SEQ_LINE( 2,  7,  0,  3,  3, 14, SPR_AIRPORT_JETWAY_2 | (1U << PALETTE_MODIFIER_COLOUR))
177 	TILE_SEQ_END()
178 };
179 
180 static const DrawTileSeqStruct _station_display_jetway_3[] = {
181 	TILE_SEQ_LINE( 3,  2,  0,  3,  3, 14, SPR_AIRPORT_JETWAY_3 | (1U << PALETTE_MODIFIER_COLOUR))
182 	TILE_SEQ_END()
183 };
184 
185 static const DrawTileSeqStruct _station_display_passenger_tunnel[] = {
186 	TILE_SEQ_LINE( 0,  8,  0, 14,  3, 14, SPR_AIRPORT_PASSENGER_TUNNEL | (1U << PALETTE_MODIFIER_COLOUR))
187 	TILE_SEQ_END()
188 };
189 
190 static const DrawTileSeqStruct _station_display_radar_1_fence_sw[] = {
191 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_1)
192 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
193 	TILE_SEQ_END()
194 };
195 
196 static const DrawTileSeqStruct _station_display_radar_2_fence_sw[] = {
197 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_2)
198 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
199 	TILE_SEQ_END()
200 };
201 
202 static const DrawTileSeqStruct _station_display_radar_3_fence_sw[] = {
203 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_3)
204 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
205 	TILE_SEQ_END()
206 };
207 
208 static const DrawTileSeqStruct _station_display_radar_4_fence_sw[] = {
209 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_4)
210 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
211 	TILE_SEQ_END()
212 };
213 
214 static const DrawTileSeqStruct _station_display_radar_5_fence_sw[] = {
215 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_5)
216 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
217 	TILE_SEQ_END()
218 };
219 
220 static const DrawTileSeqStruct _station_display_radar_6_fence_sw[] = {
221 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_6)
222 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
223 	TILE_SEQ_END()
224 };
225 
226 static const DrawTileSeqStruct _station_display_radar_7_fence_sw[] = {
227 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_7)
228 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
229 	TILE_SEQ_END()
230 };
231 
232 static const DrawTileSeqStruct _station_display_radar_8_fence_sw[] = {
233 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_8)
234 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
235 	TILE_SEQ_END()
236 };
237 
238 static const DrawTileSeqStruct _station_display_radar_9_fence_sw[] = {
239 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_9)
240 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
241 	TILE_SEQ_END()
242 };
243 
244 static const DrawTileSeqStruct _station_display_radar_10_fence_sw[] = {
245 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_A)
246 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
247 	TILE_SEQ_END()
248 };
249 
250 static const DrawTileSeqStruct _station_display_radar_11_fence_sw[] = {
251 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_B)
252 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
253 	TILE_SEQ_END()
254 };
255 
256 static const DrawTileSeqStruct _station_display_radar_12_fence_sw[] = {
257 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_C)
258 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
259 	TILE_SEQ_END()
260 };
261 
262 static const DrawTileSeqStruct _station_display_transmitter_fence_ne[] = {
263 	TILE_SEQ_LINE( 7,  7,  0,  2,  2, 70, SPR_TRANSMITTER)
264 	TILE_SEQ_LINE( 0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
265 	TILE_SEQ_END()
266 };
267 
268 static const DrawTileSeqStruct _station_display_datas_terminal_c_2[] = {
269 	TILE_SEQ_LINE( 0,  0,  0, 15, 15, 30, SPR_AIRFIELD_TERM_C_BUILD | (1U << PALETTE_MODIFIER_COLOUR))
270 	TILE_SEQ_END()
271 };
272 
273 static const DrawTileSeqStruct _station_display_flag_1_fence_ne[] = {
274 	TILE_SEQ_LINE( 0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
275 	TILE_SEQ_LINE( 4, 11,  0,  1,  1, 20, SPR_AIRFIELD_WIND_1 | (1U << PALETTE_MODIFIER_COLOUR))
276 	TILE_SEQ_END()
277 };
278 
279 static const DrawTileSeqStruct _station_display_flag_2_fence_ne[] = {
280 	TILE_SEQ_LINE( 0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
281 	TILE_SEQ_LINE( 4, 11,  0,  1,  1, 20, SPR_AIRFIELD_WIND_2 | (1U << PALETTE_MODIFIER_COLOUR))
282 	TILE_SEQ_END()
283 };
284 
285 static const DrawTileSeqStruct _station_display_flag_3_fence_ne[] = {
286 	TILE_SEQ_LINE( 0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
287 	TILE_SEQ_LINE( 4, 11,  0,  1,  1, 20, SPR_AIRFIELD_WIND_3 | (1U << PALETTE_MODIFIER_COLOUR))
288 	TILE_SEQ_END()
289 };
290 
291 static const DrawTileSeqStruct _station_display_flag_4_fence_ne[] = {
292 	TILE_SEQ_LINE( 0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
293 	TILE_SEQ_LINE( 4, 11,  0,  1,  1, 20, SPR_AIRFIELD_WIND_4 | (1U << PALETTE_MODIFIER_COLOUR))
294 	TILE_SEQ_END()
295 };
296 
297 static const DrawTileSeqStruct _station_display_small_depot_se[] = {
298 	TILE_SEQ_LINE(14,  0,  0,  2, 17, 28, SPR_AIRFIELD_HANGAR_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
299 	TILE_SEQ_LINE( 0,  0,  0,  2, 17, 28, SPR_AIRFIELD_HANGAR_REAR | (1U << PALETTE_MODIFIER_COLOUR))
300 	TILE_SEQ_END()
301 };
302 
303 static const DrawTileSeqStruct _station_display_heliport[] = {
304 	TILE_SEQ_LINE( 0,  0,  0, 16, 16, 60, SPR_HELIPORT | (1U << PALETTE_MODIFIER_COLOUR))
305 	TILE_SEQ_END()
306 };
307 
308 static const DrawTileSeqStruct _station_display_datas_67[] = {
309 	TILE_SEQ_LINE( 0, 15,  0, 13,  1, 10, SPR_TRUCK_STOP_NE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
310 	TILE_SEQ_LINE(13,  0,  0,  3, 16, 10, SPR_TRUCK_STOP_NE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
311 	TILE_SEQ_LINE( 2,  0,  0, 11,  1, 10, SPR_TRUCK_STOP_NE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
312 	TILE_SEQ_END()
313 };
314 
315 static const DrawTileSeqStruct _station_display_datas_68[] = {
316 	TILE_SEQ_LINE(15,  3,  0,  1, 13, 10, SPR_TRUCK_STOP_SE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
317 	TILE_SEQ_LINE( 0,  0,  0, 16,  3, 10, SPR_TRUCK_STOP_SE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
318 	TILE_SEQ_LINE( 0,  3,  0,  1, 11, 10, SPR_TRUCK_STOP_SE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
319 	TILE_SEQ_END()
320 };
321 
322 static const DrawTileSeqStruct _station_display_datas_69[] = {
323 	TILE_SEQ_LINE( 3,  0,  0, 13,  1, 10, SPR_TRUCK_STOP_SW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
324 	TILE_SEQ_LINE( 0,  0,  0,  3, 16, 10, SPR_TRUCK_STOP_SW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
325 	TILE_SEQ_LINE( 3, 15,  0, 11,  1, 10, SPR_TRUCK_STOP_SW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
326 	TILE_SEQ_END()
327 };
328 
329 static const DrawTileSeqStruct _station_display_datas_70[] = {
330 	TILE_SEQ_LINE( 0,  0,  0,  1, 13, 10, SPR_TRUCK_STOP_NW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
331 	TILE_SEQ_LINE( 0, 13,  0, 16,  3, 10, SPR_TRUCK_STOP_NW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
332 	TILE_SEQ_LINE(15,  2,  0,  1, 11, 10, SPR_TRUCK_STOP_NW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
333 	TILE_SEQ_END()
334 };
335 
336 static const DrawTileSeqStruct _station_display_datas_71[] = {
337 	TILE_SEQ_LINE( 2,  0,  0, 11,  1, 10, SPR_BUS_STOP_NE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
338 	TILE_SEQ_LINE(13,  0,  0,  3, 16, 10, SPR_BUS_STOP_NE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
339 	TILE_SEQ_LINE( 0, 13,  0, 13,  3, 10, SPR_BUS_STOP_NE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
340 	TILE_SEQ_END()
341 };
342 
343 static const DrawTileSeqStruct _station_display_datas_72[] = {
344 	TILE_SEQ_LINE( 0,  3,  0,  1, 11, 10, SPR_BUS_STOP_SE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
345 	TILE_SEQ_LINE( 0,  0,  0, 16,  3, 10, SPR_BUS_STOP_SE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
346 	TILE_SEQ_LINE(13,  3,  0,  3, 13, 10, SPR_BUS_STOP_SE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
347 	TILE_SEQ_END()
348 };
349 
350 static const DrawTileSeqStruct _station_display_datas_73[] = {
351 	TILE_SEQ_LINE( 3, 15,  0, 11,  1, 10, SPR_BUS_STOP_SW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
352 	TILE_SEQ_LINE( 0,  0,  0,  3, 16, 10, SPR_BUS_STOP_SW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
353 	TILE_SEQ_LINE( 3,  0,  0, 13,  3, 10, SPR_BUS_STOP_SW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
354 	TILE_SEQ_END()
355 };
356 
357 static const DrawTileSeqStruct _station_display_datas_74[] = {
358 	TILE_SEQ_LINE(15,  2,  0,  1, 11, 10, SPR_BUS_STOP_NW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
359 	TILE_SEQ_LINE( 0, 13,  0, 16,  3, 10, SPR_BUS_STOP_NW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
360 	TILE_SEQ_LINE( 0,  0,  0,  3, 13, 10, SPR_BUS_STOP_NW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
361 	TILE_SEQ_END()
362 };
363 
364 static const DrawTileSeqStruct _station_display_datas_76[] = {
365 	TILE_SEQ_LINE( 0,  4,  0, 16,  8,  8, SPR_DOCK_SLOPE_NE | (1U << PALETTE_MODIFIER_COLOUR))
366 	TILE_SEQ_END()
367 };
368 
369 static const DrawTileSeqStruct _station_display_datas_77[] = {
370 	TILE_SEQ_LINE( 4,  0,  0,  8, 16,  8, SPR_DOCK_SLOPE_SE | (1U << PALETTE_MODIFIER_COLOUR))
371 	TILE_SEQ_END()
372 };
373 
374 static const DrawTileSeqStruct _station_display_datas_78[] = {
375 	TILE_SEQ_LINE( 0,  4,  0, 16,  8,  8, SPR_DOCK_SLOPE_SW | (1U << PALETTE_MODIFIER_COLOUR))
376 	TILE_SEQ_END()
377 };
378 
379 static const DrawTileSeqStruct _station_display_datas_79[] = {
380 	TILE_SEQ_LINE( 4,  0,  0,  8, 16,  8, SPR_DOCK_SLOPE_NW | (1U << PALETTE_MODIFIER_COLOUR))
381 	TILE_SEQ_END()
382 };
383 
384 static const DrawTileSeqStruct _station_display_datas_80[] = {
385 	TILE_SEQ_LINE( 0,  4,  0, 16,  8,  8, SPR_DOCK_FLAT_X | (1U << PALETTE_MODIFIER_COLOUR))
386 	TILE_SEQ_END()
387 };
388 
389 static const DrawTileSeqStruct _station_display_datas_81[] = {
390 	TILE_SEQ_LINE( 4,  0,  0,  8, 16,  8, SPR_DOCK_FLAT_Y | (1U << PALETTE_MODIFIER_COLOUR))
391 	TILE_SEQ_END()
392 };
393 
394 /* Buoy, which will _always_ drown under the ship */
395 static const DrawTileSeqStruct _station_display_datas_82[] = {
396 	TILE_SEQ_LINE( 4,  -1,  0,  0,  0,  0, SPR_IMG_BUOY)
397 	TILE_SEQ_END()
398 };
399 
400 /* control tower without fence */
401 static const DrawTileSeqStruct _station_display_tower[] = {
402 	TILE_SEQ_LINE( 3,  3,  0, 10, 10, 60, SPR_AIRPORT_TOWER | (1U << PALETTE_MODIFIER_COLOUR))  // control tower
403 	TILE_SEQ_END()
404 };
405 
406 /* turning radar with fences on north -- needs 12 tiles
407  *BEGIN */
408 static const DrawTileSeqStruct _station_display_radar_1_fence_ne[] = {
409 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_1)   // turning radar
410 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
411 	TILE_SEQ_END()
412 };
413 
414 static const DrawTileSeqStruct _station_display_radar_2_fence_ne[] = {
415 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_2)
416 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
417 	TILE_SEQ_END()
418 };
419 
420 static const DrawTileSeqStruct _station_display_radar_3_fence_ne[] = {
421 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_3)
422 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
423 	TILE_SEQ_END()
424 };
425 
426 static const DrawTileSeqStruct _station_display_radar_4_fence_ne[] = {
427 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_4)
428 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
429 	TILE_SEQ_END()
430 };
431 
432 static const DrawTileSeqStruct _station_display_radar_5_fence_ne[] = {
433 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_5)
434 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
435 	TILE_SEQ_END()
436 };
437 
438 static const DrawTileSeqStruct _station_display_radar_6_fence_ne[] = {
439 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_6)
440 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
441 	TILE_SEQ_END()
442 };
443 
444 static const DrawTileSeqStruct _station_display_radar_7_fence_ne[] = {
445 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_7)
446 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
447 	TILE_SEQ_END()
448 };
449 
450 static const DrawTileSeqStruct _station_display_radar_8_fence_ne[] = {
451 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_8)
452 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
453 	TILE_SEQ_END()
454 };
455 
456 static const DrawTileSeqStruct _station_display_radar_9_fence_ne[] = {
457 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_9)
458 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
459 	TILE_SEQ_END()
460 };
461 
462 static const DrawTileSeqStruct _station_display_radar_10_fence_ne[] = {
463 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_A)
464 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
465 	TILE_SEQ_END()
466 };
467 
468 static const DrawTileSeqStruct _station_display_radar_11_fence_ne[] = {
469 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_B)
470 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
471 	TILE_SEQ_END()
472 };
473 
474 static const DrawTileSeqStruct _station_display_radar_12_fence_ne[] = {
475 	TILE_SEQ_LINE(7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_C)
476 	TILE_SEQ_LINE(0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
477 	TILE_SEQ_END()
478 };
479 /* END */
480 
481 /* helipad for international airport */
482 static const DrawTileSeqStruct _station_display_helipad_fence_sw[] = {
483 	TILE_SEQ_LINE(10,  6,  0,  0,  0,  0, SPR_AIRPORT_HELIPAD)
484 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences bottom
485 	TILE_SEQ_END()
486 };
487 
488 /* helipad for commuter airport */
489 static const DrawTileSeqStruct _station_display_helipad_fence_nw[] = {
490 	TILE_SEQ_LINE(10,  6,  0,  0,  0,  0, SPR_AIRPORT_HELIPAD)
491 	TILE_SEQ_LINE( 0,  0,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences left
492 	TILE_SEQ_END()
493 };
494 
495 /* helipad for continental airport */
496 static const DrawTileSeqStruct _station_display_helipad[] = {
497 	TILE_SEQ_LINE(10,  6,  0,  0,  0,  0, SPR_AIRPORT_HELIPAD)
498 	TILE_SEQ_END()
499 };
500 
501 /* asphalt tile with fences in north and south */
502 static const DrawTileSeqStruct _station_display_fence_ne_sw[] = {
503 	TILE_SEQ_GROUND( 0,  0,  0,  SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
504 	TILE_SEQ_GROUND(15,  0,  0,  SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
505 	TILE_SEQ_END()
506 };
507 
508 /* runway tiles with 2 corner fences */
509 static const DrawTileSeqStruct _station_display_fence_nw_sw[] = {
510 	TILE_SEQ_GROUND( 0,  0,  0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
511 	TILE_SEQ_GROUND(15,  0,  0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
512 	TILE_SEQ_END()
513 };
514 
515 /* runway tiles with 2 corner fences */
516 static const DrawTileSeqStruct _station_display_fence_se_sw[] = {
517 	TILE_SEQ_GROUND(15,  0,  0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
518 	TILE_SEQ_GROUND( 0, 15,  0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
519 	TILE_SEQ_END()
520 };
521 
522 /* runway tiles with 2 corner fences */
523 static const DrawTileSeqStruct _station_display_fence_ne_nw[] = {
524 	TILE_SEQ_GROUND( 0,  0,  0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
525 	TILE_SEQ_GROUND( 0,  0,  0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east
526 	TILE_SEQ_END()
527 };
528 
529 /* runway tiles with 2 corner fences */
530 static const DrawTileSeqStruct _station_display_fence_ne_se[] = {
531 	TILE_SEQ_GROUND( 0,  0,  0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east
532 	TILE_SEQ_GROUND( 0, 15,  0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
533 	TILE_SEQ_END()
534 };
535 
536 /* helipad tiles with 2 corner fences top+right */
537 static const DrawTileSeqStruct _station_display_helipad_fence_NE_SE[] = {
538 	TILE_SEQ_LINE(10,  6,  0,  0,  0,  0, SPR_AIRPORT_HELIPAD)
539 	TILE_SEQ_LINE( 0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east
540 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
541 	TILE_SEQ_END()
542 };
543 
544 /* helidepot office with fences top + left */
545 static const DrawTileSeqStruct _station_display_low_building_fence_ne_nw[] = {
546 	TILE_SEQ_LINE( 0,  0,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences left
547 	TILE_SEQ_LINE( 0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east
548 	TILE_SEQ_LINE( 3,  3,  0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR))  // helidepot office
549 	TILE_SEQ_END()
550 };
551 
552 /* West facing hangar */
553 static const DrawTileSeqStruct _station_display_hangar_sw[] = {
554 	TILE_SEQ_LINE(14,  0,  0,  2, 17, 28, SPR_NEWHANGAR_W | (1U << PALETTE_MODIFIER_COLOUR))
555 	TILE_SEQ_LINE( 0,  0,  0,  2, 17, 28, SPR_NEWHANGAR_W_WALL | (1U << PALETTE_MODIFIER_COLOUR))
556 	TILE_SEQ_END()
557 };
558 
559 /* North facing hangar */
560 static const DrawTileSeqStruct _station_display_hangar_nw[] = {
561 	TILE_SEQ_LINE(14,  0,  0,  2, 16, 28, SPR_NEWHANGAR_N | (1U << PALETTE_MODIFIER_COLOUR))
562 	TILE_SEQ_END()
563 };
564 
565 /* East facing hangar */
566 static const DrawTileSeqStruct _station_display_hangar_ne[] = {
567 	TILE_SEQ_LINE(14,  0,  0,  2, 16, 28, SPR_NEWHANGAR_E | (1U << PALETTE_MODIFIER_COLOUR))
568 	TILE_SEQ_END()
569 };
570 
571 /* helipad for district airport NS */
572 static const DrawTileSeqStruct _station_display_helipad_fence_se_sw[] = {
573 	TILE_SEQ_LINE(10,  6,  0,  0,  0,  0, SPR_AIRPORT_HELIPAD)
574 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences bottom
575 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences right
576 	TILE_SEQ_END()
577 };
578 
579 /* helipad for district airport NS */
580 static const DrawTileSeqStruct _station_display_helipad_fence_se[] = {
581 	TILE_SEQ_LINE(10,  6,  0,  0,  0,  0, SPR_AIRPORT_HELIPAD)
582 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
583 	TILE_SEQ_END()
584 };
585 
586 /* helidepot office with fence north */
587 static const DrawTileSeqStruct _station_display_low_building_fence_nw[] = {
588 	TILE_SEQ_LINE( 0,  0,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
589 	TILE_SEQ_LINE( 3,  3,  0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR))  // helidepot office
590 	TILE_SEQ_END()
591 };
592 
593 /* helidepot office with fence east */
594 static const DrawTileSeqStruct _station_display_low_building_fence_ne[] = {
595 	TILE_SEQ_LINE( 0,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east
596 	TILE_SEQ_LINE( 3,  3,  0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR))  // helidepot office
597 	TILE_SEQ_END()
598 };
599 
600 /* helidepot office with fence west */
601 static const DrawTileSeqStruct _station_display_low_building_fence_sw[] = {
602 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
603 	TILE_SEQ_LINE( 3,  3,  0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR))  // helidepot office
604 	TILE_SEQ_END()
605 };
606 
607 /* helidepot office with fence south */
608 static const DrawTileSeqStruct _station_display_low_building_fence_se[] = {
609 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
610 	TILE_SEQ_LINE( 3,  3,  0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR))  // helidepot office
611 	TILE_SEQ_END()
612 };
613 
614 /* helipad for district airport EW*/
615 static const DrawTileSeqStruct _station_display_helipad_fence_nw_sw[] = {
616 	TILE_SEQ_LINE(10,  6,  0,  0,  0,  0, SPR_AIRPORT_HELIPAD)
617 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
618 	TILE_SEQ_LINE( 0,  0,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
619 	TILE_SEQ_END()
620 };
621 
622 /* turning radar with fences on south -- needs 12 tiles
623  *BEGIN */
624 static const DrawTileSeqStruct _station_display_radar_1_fence_se[] = {
625 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_1)   // turning radar
626 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
627 	TILE_SEQ_END()
628 };
629 
630 static const DrawTileSeqStruct _station_display_radar_2_fence_se[] = {
631 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_2)
632 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
633 	TILE_SEQ_END()
634 };
635 
636 static const DrawTileSeqStruct _station_display_radar_3_fence_se[] = {
637 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_3)
638 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
639 	TILE_SEQ_END()
640 };
641 
642 static const DrawTileSeqStruct _station_display_radar_4_fence_se[] = {
643 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_4)
644 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
645 	TILE_SEQ_END()
646 };
647 
648 static const DrawTileSeqStruct _station_display_radar_5_fence_se[] = {
649 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_5)
650 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
651 	TILE_SEQ_END()
652 };
653 
654 static const DrawTileSeqStruct _station_display_radar_6_fence_se[] = {
655 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_6)
656 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
657 	TILE_SEQ_END()
658 };
659 
660 static const DrawTileSeqStruct _station_display_radar_7_fence_se[] = {
661 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_7)
662 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
663 	TILE_SEQ_END()
664 };
665 
666 static const DrawTileSeqStruct _station_display_radar_8_fence_se[] = {
667 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_8)
668 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
669 	TILE_SEQ_END()
670 };
671 
672 static const DrawTileSeqStruct _station_display_radar_9_fence_se[] = {
673 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_9)
674 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
675 	TILE_SEQ_END()
676 };
677 
678 static const DrawTileSeqStruct _station_display_radar_10_fence_se[] = {
679 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_A)
680 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
681 	TILE_SEQ_END()
682 };
683 
684 static const DrawTileSeqStruct _station_display_radar_11_fence_se[] = {
685 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_B)
686 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
687 	TILE_SEQ_END()
688 };
689 
690 static const DrawTileSeqStruct _station_display_radar_12_fence_se[] = {
691 	TILE_SEQ_LINE( 7,  7,  0,  2,  2,  8, SPR_AIRPORT_RADAR_C)
692 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
693 	TILE_SEQ_END()
694 };
695 /* END */
696 
697 /* helipad for helistation */
698 static const DrawTileSeqStruct _station_display_newhelipad_fence_se_sw[] = {
699 	TILE_SEQ_LINE( 0,  1,  2,  0,  0,  0, SPR_NEWHELIPAD)
700 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
701 	TILE_SEQ_LINE( 0, 15,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
702 	TILE_SEQ_END()
703 };
704 
705 /* helipad for helistation */
706 static const DrawTileSeqStruct _station_display_newhelipad_fence_nw_sw[] = {
707 	TILE_SEQ_LINE( 0,  1,  2,  0,  0,  0, SPR_NEWHELIPAD)
708 	TILE_SEQ_LINE(15,  0,  0,  1, 16,  6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
709 	TILE_SEQ_LINE( 0,  0,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
710 	TILE_SEQ_END()
711 };
712 
713 /* helipad for helistation */
714 static const DrawTileSeqStruct _station_display_newhelipad_fence_nw[] = {
715 	TILE_SEQ_LINE( 0,  1,  2,  0,  0,  0, SPR_NEWHELIPAD)
716 	TILE_SEQ_LINE( 0,  0,  0, 16,  1,  6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
717 	TILE_SEQ_END()
718 };
719 
720 /* helidepot office without fence */
721 static const DrawTileSeqStruct _station_display_low_building[] = {
722 	TILE_SEQ_LINE( 3,  3,  0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR))  // helidepot office
723 	TILE_SEQ_END()
724 };
725 
726 /* half grass half SPR_AIRPORT_APRON */
727 static const DrawTileSeqStruct _station_display_grass_west[] = {
728 	TILE_SEQ_LINE(0,  0,  0,  0,  0,  0, SPR_GRASS_LEFT)
729 	TILE_SEQ_END()
730 };
731 
732 /* half grass half SPR_AIRPORT_APRON */
733 static const DrawTileSeqStruct _station_display_grass_east[] = {
734 	TILE_SEQ_LINE(0,  0,  0,  0,  0,  0, SPR_GRASS_RIGHT)
735 	TILE_SEQ_END()
736 };
737 
738 /* drive-through truck stop X */
739 static const DrawTileSeqStruct _station_display_datas_0168[] = {
740 	TILE_SEQ_LINE( 0,  0,  0,  16,  3, 16, SPR_TRUCK_STOP_DT_X_W | (1U << PALETTE_MODIFIER_COLOUR))
741 	TILE_SEQ_LINE( 0, 13,  0,  16,  3, 16, SPR_TRUCK_STOP_DT_X_E | (1U << PALETTE_MODIFIER_COLOUR))
742 	TILE_SEQ_END()
743 };
744 
745 /* drive-through truck stop Y */
746 static const DrawTileSeqStruct _station_display_datas_0169[] = {
747 	TILE_SEQ_LINE(13,  0,  0,  3, 16, 16, SPR_TRUCK_STOP_DT_Y_W | (1U << PALETTE_MODIFIER_COLOUR))
748 	TILE_SEQ_LINE( 0,  0,  0,  3, 16, 16, SPR_TRUCK_STOP_DT_Y_E | (1U << PALETTE_MODIFIER_COLOUR))
749 	TILE_SEQ_END()
750 };
751 
752 /* drive-through bus stop X */
753 static const DrawTileSeqStruct _station_display_datas_0170[] = {
754 	TILE_SEQ_LINE( 0,  0,  0,  16,  3, 16, SPR_BUS_STOP_DT_X_W | (1U << PALETTE_MODIFIER_COLOUR))
755 	TILE_SEQ_LINE( 0, 13,  0,  16,  3, 16, SPR_BUS_STOP_DT_X_E | (1U << PALETTE_MODIFIER_COLOUR))
756 	TILE_SEQ_END()
757 };
758 
759 /* drive-through bus stop Y */
760 static const DrawTileSeqStruct _station_display_datas_0171[] = {
761 	TILE_SEQ_LINE(13,  0,  0,  3,  16, 16, SPR_BUS_STOP_DT_Y_W | (1U << PALETTE_MODIFIER_COLOUR))
762 	TILE_SEQ_LINE( 0,  0,  0,  3,  16, 16, SPR_BUS_STOP_DT_Y_E | (1U << PALETTE_MODIFIER_COLOUR))
763 	TILE_SEQ_END()
764 };
765 
766 static const DrawTileSeqStruct _station_display_datas_waypoint_X[] = {
767 	TILE_SEQ_LINE( 0,  0,  0, 16,  5, 23, SPR_WAYPOINT_X_1 | (1U << PALETTE_MODIFIER_COLOUR))
768 	TILE_SEQ_LINE( 0, 11,  0, 16,  5, 23, SPR_WAYPOINT_X_2 | (1U << PALETTE_MODIFIER_COLOUR))
769 	TILE_SEQ_END()
770 };
771 
772 static const DrawTileSeqStruct _station_display_datas_waypoint_Y[] = {
773 	TILE_SEQ_LINE( 0,  0,  0,  5, 16, 23, SPR_WAYPOINT_Y_1 | (1U << PALETTE_MODIFIER_COLOUR))
774 	TILE_SEQ_LINE(11,  0,  0,  5, 16, 23, SPR_WAYPOINT_Y_2 | (1U << PALETTE_MODIFIER_COLOUR))
775 	TILE_SEQ_END()
776 };
777 
778 #undef TILE_SEQ_END
779 #undef TILE_SEQ_LINE
780 #undef TILE_SEQ_LINE_PAL
781 #undef TILE_SEQ_CHILD
782 #undef TILE_SEQ_GROUND
783 
784 /**
785  * Constructor macro of a DrawTileSprites structure
786  * @param img   Ground sprite without palette of the tile
787  * @param dtss  Sequence child sprites of the tile
788  */
789 #define TILE_SPRITE_LINE(img, dtss) { {img, PAL_NONE}, dtss },
790 #define TILE_SPRITE_NULL() { {0, 0}, nullptr },
791 
792 extern const DrawTileSprites _station_display_datas_rail[] = {
793 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_X,               _station_display_datas_0)
794 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y,               _station_display_datas_1)
795 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_X,               _station_display_datas_2)
796 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y,               _station_display_datas_3)
797 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_X,               _station_display_datas_4)
798 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y,               _station_display_datas_5)
799 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_X,               _station_display_datas_6)
800 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y,               _station_display_datas_7)
801 };
802 
803 static const DrawTileSprites _station_display_datas_airport[] = {
804 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_nothing)  // APT_APRON
805 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_fence_nw) // APT_APRON_FENCE_NW
806 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_fence_sw) // APT_APRON_FENCE_SW
807 	TILE_SPRITE_LINE(SPR_AIRPORT_AIRCRAFT_STAND,     _station_display_nothing)  // APT_STAND
808 	TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_NS_WEST,    _station_display_nothing)  // APT_APRON_W
809 	TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_EW_SOUTH,   _station_display_nothing)  // APT_APRON_S
810 	TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_XING_SOUTH, _station_display_nothing)  // APT_APRON_VER_CROSSING_S
811 	TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_XING_WEST,  _station_display_nothing)  // APT_APRON_HOR_CROSSING_W
812 	TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_NS_CTR,     _station_display_nothing)  // APT_APRON_VER_CROSSING_N
813 	TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_XING_EAST,  _station_display_nothing)  // APT_APRON_HOR_CROSSING_E
814 	TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_NS_EAST,    _station_display_nothing)  // APT_APRON_E
815 	TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_EW_NORTH,   _station_display_nothing)  // APT_ARPON_N
816 	TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_EW_CTR,     _station_display_nothing)  // APT_APRON_HOR
817 	TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_EW_NORTH,   _station_display_fence_sw) // APT_APRON_N_FENCE_SW
818 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_A,      _station_display_fence_se) // APT_RUNWAY_1
819 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_B,      _station_display_fence_se) // APT_RUNWAY_2
820 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_C,      _station_display_fence_se) // APT_RUNWAY_3
821 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_D,      _station_display_fence_se) // APT_RUNWAY_4
822 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END,         _station_display_fence_se) // APT_RUNWAY_END_FENCE_SE
823 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_terminal_a) // APT_BUILDING_2
824 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_tower_fence_sw) // APT_TOWER_FENCE_SW
825 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_concourse) // APT_ROUND_TERMINAL
826 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_datas_terminal_b) // APT_BUILDING_3
827 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_datas_terminal_c) // APT_BUILDING_1
828 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_hangar_se) // APT_DEPOT_SE
829 	TILE_SPRITE_LINE(SPR_AIRPORT_AIRCRAFT_STAND,     _station_display_jetway_1)  // APT_STAND_1
830 	TILE_SPRITE_LINE(SPR_AIRPORT_AIRCRAFT_STAND,     _station_display_jetway_2)  // APT_STAND_PIER_NE
831 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_jetway_3)  // APT_PIER_NW_NE
832 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_passenger_tunnel) // APT_PIER
833 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_nothing)   // APT_EMPTY
834 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_fence_ne)  // APT_EMPTY_FENCE_NE
835 	TILE_SPRITE_NULL() // APT_RADAR_GRASS_FENCE_SW
836 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_transmitter_fence_ne) // APT_RADIO_TOWER_FENCE_NE
837 	TILE_SPRITE_LINE(SPR_AIRFIELD_TERM_A,            _station_display_nothing)   // APT_SMALL_BUILDING_3
838 	TILE_SPRITE_LINE(SPR_AIRFIELD_TERM_B,            _station_display_nothing)   // APT_SMALL_BUILDING_2
839 	TILE_SPRITE_LINE(SPR_AIRFIELD_TERM_C_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_terminal_c_2) // APT_SMALL_BUILDING_1
840 	TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_A,           _station_display_fence_sw)  // APT_GRASS_FENCE_SW
841 	TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_B,           _station_display_nothing)   // APT_GRASS_2
842 	TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_C,           _station_display_nothing)   // APT_GRASS_1
843 	TILE_SPRITE_NULL() // APT_GRASS_FENCE_NE_FLAG
844 	TILE_SPRITE_LINE(SPR_AIRFIELD_RUNWAY_NEAR_END,   _station_display_fence_se)  // APT_RUNWAY_SMALL_NEAR_END
845 	TILE_SPRITE_LINE(SPR_AIRFIELD_RUNWAY_MIDDLE,     _station_display_fence_se)  // APT_RUNWAY_SMALL_MIDDLE
846 	TILE_SPRITE_LINE(SPR_AIRFIELD_RUNWAY_FAR_END,    _station_display_fence_se)  // APT_RUNWAY_SMALL_FAR_END
847 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_small_depot_se) // APT_SMALL_DEPOT_SE
848 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_heliport)  // APT_HELIPORT
849 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END,         _station_display_nothing)   // APT_RUNWAY_END
850 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_B,      _station_display_nothing)   // APT_RUNWAY_5
851 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_tower)     // APT_TOWER
852 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_fence_ne)  // APT_APRON_FENCE_NE
853 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END,         _station_display_fence_nw)  // APT_RUNWAY_END_FENCE_NW
854 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_B,      _station_display_fence_nw)  // APT_RUNWAY_FENCE_NW
855 	TILE_SPRITE_NULL() // APT_RADAR_FENCE_SW
856 	TILE_SPRITE_NULL() // APT_RADAR_FENCE_NE
857 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_helipad_fence_sw) // APT_HELIPAD_1
858 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_helipad_fence_nw) // APT_HELIPAD_2_FENCE_NW
859 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_helipad)     // APT_HELIPAD_2
860 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_fence_ne_sw) // APT_APRON_FENCE_NE_SW
861 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END,         _station_display_fence_nw_sw) // APT_RUNWAY_END_FENCE_NW_SW
862 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END,         _station_display_fence_se_sw) // APT_RUNWAY_END_FENCE_SE_SW
863 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END,         _station_display_fence_ne_nw) // APT_RUNWAY_END_FENCE_NE_NW
864 	TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END,         _station_display_fence_ne_se) // APT_RUNWAY_END_FENCE_NE_SE
865 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_helipad_fence_NE_SE) // APT_HELIPAD_2_FENCE_NE_SE
866 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_fence_se_sw) // APT_APRON_FENCE_SE_SW
867 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_low_building_fence_ne_nw) // APT_LOW_BUILDING_FENCE_N
868 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_low_building_fence_nw) // APT_LOW_BUILDING_FENCE_NW
869 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_fence_se) // APT_APRON_FENCE_SE
870 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_newhelipad_fence_se_sw) // APT_HELIPAD_3_FENCE_SE_SW
871 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_newhelipad_fence_nw_sw) // APT_HELIPAD_3_FENCE_NW_SW
872 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_newhelipad_fence_nw) // APT_HELIPAD_3_FENCE_NW
873 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_low_building) // APT_LOW_BUILDING
874 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_fence_ne_se) // APT_APRON_FENCE_NE_SE
875 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_grass_west) // APT_APRON_HALF_EAST
876 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_grass_east) // APT_APRON_HALF_WEST
877 	TILE_SPRITE_NULL() // APT_GRASS_FENCE_NE_FLAG_2
878 };
879 
880 static const DrawTileSprites _station_display_datas_airport_radar_grass_fence_sw[] = {
881 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_1_fence_sw) // APT_RADAR_GRASS_FENCE_SW
882 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_2_fence_sw)
883 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_3_fence_sw)
884 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_4_fence_sw)
885 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_5_fence_sw)
886 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_6_fence_sw)
887 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_7_fence_sw)
888 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_8_fence_sw)
889 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_9_fence_sw)
890 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_10_fence_sw)
891 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_11_fence_sw)
892 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_radar_12_fence_sw)
893 };
894 
895 static const DrawTileSprites _station_display_datas_airport_flag_grass_fence_ne[] = {
896 	TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D,           _station_display_flag_1_fence_ne) // APT_GRASS_FENCE_NE_FLAG
897 	TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D,           _station_display_flag_2_fence_ne)
898 	TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D,           _station_display_flag_3_fence_ne)
899 	TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D,           _station_display_flag_4_fence_ne)
900 };
901 
902 static const DrawTileSprites _station_display_datas_airport_radar_fence_sw[] = {
903 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_1_fence_sw) // APT_RADAR_FENCE_SW
904 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_2_fence_sw)
905 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_3_fence_sw)
906 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_4_fence_sw)
907 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_5_fence_sw)
908 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_6_fence_sw)
909 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_7_fence_sw)
910 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_8_fence_sw)
911 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_9_fence_sw)
912 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_10_fence_sw)
913 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_11_fence_sw)
914 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_12_fence_sw)
915 };
916 
917 static const DrawTileSprites _station_display_datas_airport_radar_fence_ne[] = {
918 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_1_fence_ne) // APT_RADAR_FENCE_NE
919 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_2_fence_ne)
920 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_3_fence_ne)
921 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_4_fence_ne)
922 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_5_fence_ne)
923 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_6_fence_ne)
924 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_7_fence_ne)
925 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_8_fence_ne)
926 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_9_fence_ne)
927 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_10_fence_ne)
928 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_11_fence_ne)
929 	TILE_SPRITE_LINE(SPR_AIRPORT_APRON,              _station_display_radar_12_fence_ne)
930 };
931 
932 static const DrawTileSprites _station_display_datas_airport_flag_grass_fence_ne_2[] = {
933 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_flag_1_fence_ne) // APT_GRASS_FENCE_NE_FLAG_2
934 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_flag_2_fence_ne)
935 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_flag_3_fence_ne)
936 	TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE,            _station_display_flag_4_fence_ne)
937 };
938 
939 
940 static const DrawTileSprites _station_display_datas_truck[] = {
941 	TILE_SPRITE_LINE(SPR_TRUCK_STOP_NE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_67)
942 	TILE_SPRITE_LINE(SPR_TRUCK_STOP_SE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_68)
943 	TILE_SPRITE_LINE(SPR_TRUCK_STOP_SW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_69)
944 	TILE_SPRITE_LINE(SPR_TRUCK_STOP_NW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_70)
945 	TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X,      _station_display_datas_0168)
946 	TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y,      _station_display_datas_0169)
947 };
948 
949 static const DrawTileSprites _station_display_datas_bus[] = {
950 	TILE_SPRITE_LINE(SPR_BUS_STOP_NE_GROUND   | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_71)
951 	TILE_SPRITE_LINE(SPR_BUS_STOP_SE_GROUND   | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_72)
952 	TILE_SPRITE_LINE(SPR_BUS_STOP_SW_GROUND   | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_73)
953 	TILE_SPRITE_LINE(SPR_BUS_STOP_NW_GROUND   | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_74)
954 	TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X,      _station_display_datas_0170)
955 	TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y,      _station_display_datas_0171)
956 };
957 
958 static const DrawTileSprites _station_display_datas_oilrig[] = {
959 	TILE_SPRITE_LINE(SPR_FLAT_WATER_TILE,            _station_display_nothing)
960 };
961 
962 static const DrawTileSprites _station_display_datas_dock[] = {
963 	TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_SW,      _station_display_datas_76)
964 	TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_NW,      _station_display_datas_77)
965 	TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_NE,      _station_display_datas_78)
966 	TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_SE,      _station_display_datas_79)
967 	TILE_SPRITE_LINE(SPR_FLAT_WATER_TILE,            _station_display_datas_80)
968 	TILE_SPRITE_LINE(SPR_FLAT_WATER_TILE,            _station_display_datas_81)
969 };
970 
971 static const DrawTileSprites _station_display_datas_buoy[] = {
972 	TILE_SPRITE_LINE(SPR_FLAT_WATER_TILE,            _station_display_datas_82)
973 };
974 
975 static const DrawTileSprites _station_display_datas_waypoint[] = {
976 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_X,               _station_display_datas_waypoint_X)
977 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y,               _station_display_datas_waypoint_Y)
978 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_X,               _station_display_datas_waypoint_X)
979 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y,               _station_display_datas_waypoint_Y)
980 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_X,               _station_display_datas_waypoint_X)
981 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y,               _station_display_datas_waypoint_Y)
982 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_X,               _station_display_datas_waypoint_X)
983 	TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y,               _station_display_datas_waypoint_Y)
984 };
985 
986 #undef TILE_SPRITE_LINE
987 #undef TILE_SPRITE_NULL
988 
989 /* Default waypoint is also drawn as fallback for NewGRF waypoints.
990  * As these are drawn/build like stations, they may use the same number of layouts. */
991 static_assert(lengthof(_station_display_datas_rail) == lengthof(_station_display_datas_waypoint));
992 
993 static const DrawTileSprites * const _station_display_datas[] = {
994 	_station_display_datas_rail,
995 	_station_display_datas_airport,
996 	_station_display_datas_truck,
997 	_station_display_datas_bus,
998 	_station_display_datas_oilrig,
999 	_station_display_datas_dock,
1000 	_station_display_datas_buoy,
1001 	_station_display_datas_waypoint,
1002 };
1003