changeset 14254:f5df417a8b3d draft

(svn r18805) -Codechange: move airport_movement.h to table/
author rubidium <rubidium@openttd.org>
date Fri, 15 Jan 2010 10:55:43 +0000
parents 52da94a85dc4
children 6c9e788a2c57
files projects/openttd_vs80.vcproj projects/openttd_vs90.vcproj source.list src/airport.cpp src/airport_movement.h src/table/airport_movement.h
diffstat 6 files changed, 835 insertions(+), 835 deletions(-) [+]
line wrap: on
line diff
--- a/projects/openttd_vs80.vcproj
+++ b/projects/openttd_vs80.vcproj
@@ -756,10 +756,6 @@
 				>
 			</File>
 			<File
-				RelativePath=".\..\src\airport_movement.h"
-				>
-			</File>
-			<File
 				RelativePath=".\..\src\animated_tile_func.h"
 				>
 			</File>
@@ -2172,6 +2168,10 @@
 			Name="Tables"
 			>
 			<File
+				RelativePath=".\..\src\table\airport_movement.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\table\animcursors.h"
 				>
 			</File>
--- a/projects/openttd_vs90.vcproj
+++ b/projects/openttd_vs90.vcproj
@@ -753,10 +753,6 @@
 				>
 			</File>
 			<File
-				RelativePath=".\..\src\airport_movement.h"
-				>
-			</File>
-			<File
 				RelativePath=".\..\src\animated_tile_func.h"
 				>
 			</File>
@@ -2169,6 +2165,10 @@
 			Name="Tables"
 			>
 			<File
+				RelativePath=".\..\src\table\airport_movement.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\table\animcursors.h"
 				>
 			</File>
--- a/source.list
+++ b/source.list
@@ -98,7 +98,6 @@
 #end
 aircraft.h
 airport.h
-airport_movement.h
 animated_tile_func.h
 articulated_vehicles.h
 autoreplace_base.h
@@ -473,6 +472,7 @@
 saveload/waypoint_sl.cpp
 
 # Tables
+table/airport_movement.h
 table/animcursors.h
 table/autorail.h
 table/bridge_land.h
--- a/src/airport.cpp
+++ b/src/airport.cpp
@@ -12,7 +12,7 @@
 #include "stdafx.h"
 #include "debug.h"
 #include "airport.h"
-#include "airport_movement.h"
+#include "table/airport_movement.h"
 #include "core/alloc_func.hpp"
 #include "date_func.h"
 #include "settings_type.h"
deleted file mode 100644
--- a/src/airport_movement.h
+++ /dev/null
@@ -1,825 +0,0 @@
-/* $Id$ */
-
-/*
- * This file is part of OpenTTD.
- * 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.
- * 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.
- * 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/>.
- */
-
-/** @file airport_movement.h Heart of the airports and their finite state machines */
-
-#ifndef AIRPORT_MOVEMENT_H
-#define AIRPORT_MOVEMENT_H
-
-
-/* state machine input struct (from external file, etc.)
- * Finite sTate mAchine --> FTA */
-struct AirportFTAbuildup {
-	byte position; // the position that an airplane is at
-	byte heading;  // the current orders (eg. TAKEOFF, HANGAR, ENDLANDING, etc.)
-	uint64 block;  // the block this position is on on the airport (st->airport_flags)
-	byte next;     // next position from this position
-};
-
-///////////////////////////////////////////////////////////////////////
-/////*********Movement Positions on Airports********************///////
-
-#define AMD(x, y, flags, dir) { x, y, flags, {dir} }
-
-static const AirportMovingData _airport_moving_data_dummy[] = {
-	AMD(    0,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN,     DIR_N ),
-	AMD(    0,   96, AMED_NOSPDCLAMP | AMED_SLOWTURN,     DIR_N ),
-	AMD(   96,   96, AMED_NOSPDCLAMP | AMED_SLOWTURN,     DIR_N ),
-	AMD(   96,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN,     DIR_N ),
-};
-
-/* Country Airfield (small) 4x3 */
-static const AirportMovingData _airport_moving_data_country[22] = {
-	AMD(   53,    3, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar
-	AMD(   53,   27, 0,                               DIR_N ), // 01 Taxi to right outside depot
-	AMD(   32,   23, AMED_EXACTPOS,                   DIR_NW), // 02 Terminal 1
-	AMD(   10,   23, AMED_EXACTPOS,                   DIR_NW), // 03 Terminal 2
-	AMD(   43,   37, 0,                               DIR_N ), // 04 Going towards terminal 2
-	AMD(   24,   37, 0,                               DIR_N ), // 05 Going towards terminal 2
-	AMD(   53,   37, 0,                               DIR_N ), // 06 Going for takeoff
-	AMD(   61,   40, AMED_EXACTPOS,                   DIR_NE), // 07 Taxi to start of runway (takeoff)
-	AMD(    3,   40, AMED_NOSPDCLAMP,                 DIR_N ), // 08 Accelerate to end of runway
-	AMD(  -79,   40, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 09 Take off
-	AMD(  177,   40, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 10 Fly to landing position in air
-	AMD(   56,   40, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 11 Going down for land
-	AMD(    3,   40, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 12 Just landed, brake until end of runway
-	AMD(    7,   40, 0,                               DIR_N ), // 13 Just landed, turn around and taxi 1 square
-	AMD(   53,   40, 0,                               DIR_N ), // 14 Taxi from runway to crossing
-	AMD(    1,  193, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 15 Fly around waiting for a landing spot (north-east)
-	AMD(    1,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Fly around waiting for a landing spot (north-west)
-	AMD(  257,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 17 Fly around waiting for a landing spot (south-west)
-	AMD(  273,   47, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 18 Fly around waiting for a landing spot (south)
-	AMD(   44,   37, AMED_HELI_RAISE,                 DIR_N ), // 19 Helicopter takeoff
-	AMD(   44,   40, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 20 In position above landing spot helicopter
-	AMD(   44,   40, AMED_HELI_LOWER,                 DIR_N ), // 21 Helicopter landing
-};
-
-/* Commuter Airfield (small) 5x4 */
-static const AirportMovingData _airport_moving_data_commuter[37] = {
-	AMD(   69,    3, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar
-	AMD(   72,   22, 0,                               DIR_N ), // 01 Taxi to right outside depot
-	AMD(    8,   22, AMED_EXACTPOS,                   DIR_SW), // 01 Taxi to right outside depot
-	AMD(   24,   36, AMED_EXACTPOS,                   DIR_SE), // 03 Terminal 1
-	AMD(   40,   36, AMED_EXACTPOS,                   DIR_SE), // 04 Terminal 2
-	AMD(   56,   36, AMED_EXACTPOS,                   DIR_SE), // 05 Terminal 3
-	AMD(   40,    8, AMED_EXACTPOS,                   DIR_NE), // 06 Helipad 1
-	AMD(   56,    8, AMED_EXACTPOS,                   DIR_NE), // 07 Helipad 2
-	AMD(   24,   22, 0,                               DIR_SW), // 08 Taxiing
-	AMD(   40,   22, 0,                               DIR_SW), // 09 Taxiing
-	AMD(   56,   22, 0,                               DIR_SW), // 10 Taxiing
-	AMD(   72,   40, 0,                               DIR_SE), // 11 Airport OUTWAY
-	AMD(   72,   54, AMED_EXACTPOS,                   DIR_NE), // 12 Accelerate to end of runway
-	AMD(    7,   54, AMED_NOSPDCLAMP,                 DIR_N ), // 13 Release control of runway, for smoother movement
-	AMD(    5,   54, AMED_NOSPDCLAMP,                 DIR_N ), // 14 End of runway
-	AMD(  -79,   54, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 15 Take off
-	AMD(  145,   54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Fly to landing position in air
-	AMD(   73,   54, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 17 Going down for land
-	AMD(    3,   54, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 18 Just landed, brake until end of runway
-	AMD(   12,   54, AMED_SLOWTURN,                   DIR_NW), // 19 Just landed, turn around and taxi
-	AMD(    8,   32, 0,                               DIR_NW), // 20 Taxi from runway to crossing
-	AMD(    1,  149, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (north-east)
-	AMD(    1,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 22 Fly around waiting for a landing spot (north-west)
-	AMD(  193,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 Fly around waiting for a landing spot (south-west)
-	AMD(  225,   62, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 24 Fly around waiting for a landing spot (south)
-	/* Helicopter */
-	AMD(   80,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Bufferspace before helipad
-	AMD(   80,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Bufferspace before helipad
-	AMD(   32,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Get in position for Helipad1
-	AMD(   48,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Get in position for Helipad2
-	AMD(   32,    8, AMED_HELI_LOWER,                 DIR_N ), // 29 Land at Helipad1
-	AMD(   48,    8, AMED_HELI_LOWER,                 DIR_N ), // 30 Land at Helipad2
-	AMD(   32,    8, AMED_HELI_RAISE,                 DIR_N ), // 31 Takeoff Helipad1
-	AMD(   48,    8, AMED_HELI_RAISE,                 DIR_N ), // 32 Takeoff Helipad2
-	AMD(   64,   22, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 33 Go to position for Hangarentrance in air
-	AMD(   64,   22, AMED_HELI_LOWER,                 DIR_N ), // 34 Land in front of hangar
-	AMD(   40,    8, AMED_EXACTPOS,                   DIR_N ), // pre-helitakeoff helipad 1
-	AMD(   56,    8, AMED_EXACTPOS,                   DIR_N ), // pre-helitakeoff helipad 2
-};
-
-/* City Airport (large) 6x6 */
-static const AirportMovingData _airport_moving_data_town[] = {
-	AMD(   85,    3, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar
-	AMD(   85,   22, 0,                               DIR_N ), // 01 Taxi to right outside depot
-	AMD(   26,   41, AMED_EXACTPOS,                   DIR_SW), // 02 Terminal 1
-	AMD(   56,   22, AMED_EXACTPOS,                   DIR_SE), // 03 Terminal 2
-	AMD(   38,    8, AMED_EXACTPOS,                   DIR_SW), // 04 Terminal 3
-	AMD(   65,    6, 0,                               DIR_N ), // 05 Taxi to right in infront of terminal 2/3
-	AMD(   80,   27, 0,                               DIR_N ), // 06 Taxiway terminals 2-3
-	AMD(   44,   63, 0,                               DIR_N ), // 07 Taxi to Airport center
-	AMD(   58,   71, 0,                               DIR_N ), // 08 Towards takeoff
-	AMD(   72,   85, 0,                               DIR_N ), // 09 Taxi to runway (takeoff)
-	AMD(   89,   85, AMED_EXACTPOS,                   DIR_NE), // 10 Taxi to start of runway (takeoff)
-	AMD(    3,   85, AMED_NOSPDCLAMP,                 DIR_N ), // 11 Accelerate to end of runway
-	AMD(  -79,   85, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 12 Take off
-	AMD(  177,   87, AMED_HOLD       | AMED_SLOWTURN, DIR_N ), // 13 Fly to landing position in air
-	AMD(   89,   87, AMED_HOLD       | AMED_LAND,     DIR_N ), // 14 Going down for land
-	AMD(   20,   87, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 15 Just landed, brake until end of runway
-	AMD(   20,   87, 0,                               DIR_N ), // 16 Just landed, turn around and taxi 1 square // NOT USED
-	AMD(   36,   71, 0,                               DIR_N ), // 17 Taxi from runway to crossing
-	AMD(  160,   87, AMED_HOLD       | AMED_SLOWTURN, DIR_N ), // 18 Fly around waiting for a landing spot (north-east)
-	AMD(  140,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 19 Final approach fix
-	AMD(  257,    1, AMED_HOLD       | AMED_SLOWTURN, DIR_N ), // 20 Fly around waiting for a landing spot (south-west)
-	AMD(  273,   49, AMED_HOLD       | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (south)
-	AMD(   44,   63, AMED_HELI_RAISE,                 DIR_N ), // 22 Helicopter takeoff
-	AMD(   28,   74, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 In position above landing spot helicopter
-	AMD(   28,   74, AMED_HELI_LOWER,                 DIR_N ), // 24 Helicopter landing
-	AMD(  145,    1, AMED_HOLD       | AMED_SLOWTURN, DIR_N ), // 25 Fly around waiting for a landing spot (north-west)
-	AMD(  -32,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Initial approach fix (north)
-	AMD(  300,  -48, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Initial approach fix (south)
-	AMD(  140,  -48, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Intermediadate Approach fix (south), IAF (west)
-	AMD(  -32,  120, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 29 Initial approach fix (east)
-};
-
-/* Metropolitan Airport (metropolitan) - 2 runways */
-static const AirportMovingData _airport_moving_data_metropolitan[28] = {
-	AMD(   85,    3, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar
-	AMD(   85,   22, 0,                               DIR_N ), // 01 Taxi to right outside depot
-	AMD(   26,   41, AMED_EXACTPOS,                   DIR_SW), // 02 Terminal 1
-	AMD(   56,   22, AMED_EXACTPOS,                   DIR_SE), // 03 Terminal 2
-	AMD(   38,    8, AMED_EXACTPOS,                   DIR_SW), // 04 Terminal 3
-	AMD(   65,    6, 0,                               DIR_N ), // 05 Taxi to right in infront of terminal 2/3
-	AMD(   80,   27, 0,                               DIR_N ), // 06 Taxiway terminals 2-3
-	AMD(   49,   58, 0,                               DIR_N ), // 07 Taxi to Airport center
-	AMD(   72,   58, 0,                               DIR_N ), // 08 Towards takeoff
-	AMD(   72,   69, 0,                               DIR_N ), // 09 Taxi to runway (takeoff)
-	AMD(   89,   69, AMED_EXACTPOS,                   DIR_NE), // 10 Taxi to start of runway (takeoff)
-	AMD(    3,   69, AMED_NOSPDCLAMP,                 DIR_N ), // 11 Accelerate to end of runway
-	AMD(  -79,   69, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 12 Take off
-	AMD(  177,   85, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 13 Fly to landing position in air
-	AMD(   89,   85, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 14 Going down for land
-	AMD(    3,   85, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 15 Just landed, brake until end of runway
-	AMD(   21,   85, 0,                               DIR_N ), // 16 Just landed, turn around and taxi 1 square
-	AMD(   21,   69, 0,                               DIR_N ), // 17 On Runway-out taxiing to In-Way
-	AMD(   21,   58, AMED_EXACTPOS,                   DIR_SW), // 18 Taxi from runway to crossing
-	AMD(    1,  193, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 19 Fly around waiting for a landing spot (north-east)
-	AMD(    1,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 20 Fly around waiting for a landing spot (north-west)
-	AMD(  257,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (south-west)
-	AMD(  273,   49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 22 Fly around waiting for a landing spot (south)
-	AMD(   44,   58, 0,                               DIR_N ), // 23 Helicopter takeoff spot on ground (to clear airport sooner)
-	AMD(   44,   63, AMED_HELI_RAISE,                 DIR_N ), // 24 Helicopter takeoff
-	AMD(   15,   54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Get in position above landing spot helicopter
-	AMD(   15,   54, AMED_HELI_LOWER,                 DIR_N ), // 26 Helicopter landing
-	AMD(   21,   58, AMED_EXACTPOS,                   DIR_SW), // 27 Transitions after landing to on-ground movement
-};
-
-/* International Airport (international) - 2 runways, 6 terminals, dedicated helipod */
-static const AirportMovingData _airport_moving_data_international[51] = {
-	AMD(    7,   55, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar 1
-	AMD(  100,   21, AMED_EXACTPOS,                   DIR_SE), // 01 In Hangar 2
-	AMD(    7,   70, 0,                               DIR_N ), // 02 Taxi to right outside depot
-	AMD(  100,   36, 0,                               DIR_N ), // 03 Taxi to right outside depot
-	AMD(   38,   70, AMED_EXACTPOS,                   DIR_SW), // 04 Terminal 1
-	AMD(   38,   54, AMED_EXACTPOS,                   DIR_SW), // 05 Terminal 2
-	AMD(   38,   38, AMED_EXACTPOS,                   DIR_SW), // 06 Terminal 3
-	AMD(   70,   70, AMED_EXACTPOS,                   DIR_NE), // 07 Terminal 4
-	AMD(   70,   54, AMED_EXACTPOS,                   DIR_NE), // 08 Terminal 5
-	AMD(   70,   38, AMED_EXACTPOS,                   DIR_NE), // 09 Terminal 6
-	AMD(  104,   71, AMED_EXACTPOS,                   DIR_NE), // 10 Helipad 1
-	AMD(  104,   55, AMED_EXACTPOS,                   DIR_NE), // 11 Helipad 2
-	AMD(   22,   87, 0,                               DIR_N ), // 12 Towards Terminals 4/5/6, Helipad 1/2
-	AMD(   60,   87, 0,                               DIR_N ), // 13 Towards Terminals 4/5/6, Helipad 1/2
-	AMD(   66,   87, 0,                               DIR_N ), // 14 Towards Terminals 4/5/6, Helipad 1/2
-	AMD(   86,   87, AMED_EXACTPOS,                   DIR_NW), // 15 Towards Terminals 4/5/6, Helipad 1/2
-	AMD(   86,   70, 0,                               DIR_N ), // 16 In Front of Terminal 4 / Helipad 1
-	AMD(   86,   54, 0,                               DIR_N ), // 17 In Front of Terminal 5 / Helipad 2
-	AMD(   86,   38, 0,                               DIR_N ), // 18 In Front of Terminal 6
-	AMD(   86,   22, 0,                               DIR_N ), // 19 Towards Terminals Takeoff (Taxiway)
-	AMD(   66,   22, 0,                               DIR_N ), // 20 Towards Terminals Takeoff (Taxiway)
-	AMD(   60,   22, 0,                               DIR_N ), // 21 Towards Terminals Takeoff (Taxiway)
-	AMD(   38,   22, 0,                               DIR_N ), // 22 Towards Terminals Takeoff (Taxiway)
-	AMD(   22,   70, 0,                               DIR_N ), // 23 In Front of Terminal 1
-	AMD(   22,   58, 0,                               DIR_N ), // 24 In Front of Terminal 2
-	AMD(   22,   38, 0,                               DIR_N ), // 25 In Front of Terminal 3
-	AMD(   22,   22, AMED_EXACTPOS,                   DIR_NW), // 26 Going for Takeoff
-	AMD(   22,    6, 0,                               DIR_N ), // 27 On Runway-out, prepare for takeoff
-	AMD(    3,    6, AMED_EXACTPOS,                   DIR_SW), // 28 Accelerate to end of runway
-	AMD(   60,    6, AMED_NOSPDCLAMP,                 DIR_N ), // 29 Release control of runway, for smoother movement
-	AMD(  105,    6, AMED_NOSPDCLAMP,                 DIR_N ), // 30 End of runway
-	AMD(  190,    6, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 31 Take off
-	AMD(  193,  104, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 32 Fly to landing position in air
-	AMD(  105,  104, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 33 Going down for land
-	AMD(    3,  104, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 34 Just landed, brake until end of runway
-	AMD(   12,  104, AMED_SLOWTURN,                   DIR_N ), // 35 Just landed, turn around and taxi 1 square
-	AMD(    7,   84, 0,                               DIR_N ), // 36 Taxi from runway to crossing
-	AMD(    1,  209, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 37 Fly around waiting for a landing spot (north-east)
-	AMD(    1,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 38 Fly around waiting for a landing spot (north-west)
-	AMD(  273,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 39 Fly around waiting for a landing spot (south-west)
-	AMD(  305,   81, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 40 Fly around waiting for a landing spot (south)
-	/* Helicopter */
-	AMD(  128,   80, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 41 Bufferspace before helipad
-	AMD(  128,   80, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 42 Bufferspace before helipad
-	AMD(   96,   71, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 43 Get in position for Helipad1
-	AMD(   96,   55, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 44 Get in position for Helipad2
-	AMD(   96,   71, AMED_HELI_LOWER,                 DIR_N ), // 45 Land at Helipad1
-	AMD(   96,   55, AMED_HELI_LOWER,                 DIR_N ), // 46 Land at Helipad2
-	AMD(  104,   71, AMED_HELI_RAISE,                 DIR_N ), // 47 Takeoff Helipad1
-	AMD(  104,   55, AMED_HELI_RAISE,                 DIR_N ), // 48 Takeoff Helipad2
-	AMD(  104,   32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 49 Go to position for Hangarentrance in air
-	AMD(  104,   32, AMED_HELI_LOWER,                 DIR_N ), // 50 Land in HANGAR2_AREA to go to hangar
-};
-
-/* Intercontinental Airport - 4 runways, 8 terminals, 2 dedicated helipads */
-static const AirportMovingData _airport_moving_data_intercontinental[77] = {
-	AMD(    8,   87, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar 1
-	AMD(  136,   72, AMED_EXACTPOS,                   DIR_SE), // 01 In Hangar 2
-	AMD(    8,  104, 0,                               DIR_N ), // 02 Taxi to right outside depot 1
-	AMD(  136,   88, 0,                               DIR_N ), // 03 Taxi to right outside depot 2
-	AMD(   56,  120, AMED_EXACTPOS,                   DIR_W ), // 04 Terminal 1
-	AMD(   56,  104, AMED_EXACTPOS,                   DIR_SW), // 05 Terminal 2
-	AMD(   56,   88, AMED_EXACTPOS,                   DIR_SW), // 06 Terminal 3
-	AMD(   56,   72, AMED_EXACTPOS,                   DIR_SW), // 07 Terminal 4
-	AMD(   88,  120, AMED_EXACTPOS,                   DIR_N ), // 08 Terminal 5
-	AMD(   88,  104, AMED_EXACTPOS,                   DIR_NE), // 09 Terminal 6
-	AMD(   88,   88, AMED_EXACTPOS,                   DIR_NE), // 10 Terminal 7
-	AMD(   88,   72, AMED_EXACTPOS,                   DIR_NE), // 11 Terminal 8
-	AMD(   88,   56, AMED_EXACTPOS,                   DIR_SE), // 12 Helipad 1
-	AMD(   72,   56, AMED_EXACTPOS,                   DIR_NE), // 13 Helipad 2
-	AMD(   40,  136, 0,                               DIR_N ), // 14 Term group 2 enter 1 a
-	AMD(   56,  136, 0,                               DIR_N ), // 15 Term group 2 enter 1 b
-	AMD(   88,  136, 0,                               DIR_N ), // 16 Term group 2 enter 2 a
-	AMD(  104,  136, 0,                               DIR_N ), // 17 Term group 2 enter 2 b
-	AMD(  104,  120, 0,                               DIR_N ), // 18 Term group 2 - opp term 5
-	AMD(  104,  104, 0,                               DIR_N ), // 19 Term group 2 - opp term 6 & exit2
-	AMD(  104,   88, 0,                               DIR_N ), // 20 Term group 2 - opp term 7 & hangar area 2
-	AMD(  104,   72, 0,                               DIR_N ), // 21 Term group 2 - opp term 8
-	AMD(  104,   56, 0,                               DIR_N ), // 22 Taxi Term group 2 exit a
-	AMD(  104,   40, 0,                               DIR_N ), // 23 Taxi Term group 2 exit b
-	AMD(   56,   40, 0,                               DIR_N ), // 24 Term group 2 exit 2a
-	AMD(   40,   40, 0,                               DIR_N ), // 25 Term group 2 exit 2b
-	AMD(   40,  120, 0,                               DIR_N ), // 26 Term group 1 - opp term 1
-	AMD(   40,  104, 0,                               DIR_N ), // 27 Term group 1 - opp term 2 & hangar area 1
-	AMD(   40,   88, 0,                               DIR_N ), // 28 Term group 1 - opp term 3
-	AMD(   40,   72, 0,                               DIR_N ), // 29 Term group 1 - opp term 4
-	AMD(   18,   72, 0,                               DIR_NW), // 30 Outway 1
-	AMD(    8,   40, 0,                               DIR_NW), // 31 Airport OUTWAY
-	AMD(    8,   24, AMED_EXACTPOS,                   DIR_SW), // 32 Accelerate to end of runway
-	AMD(  119,   24, AMED_NOSPDCLAMP,                 DIR_N ), // 33 Release control of runway, for smoother movement
-	AMD(  117,   24, AMED_NOSPDCLAMP,                 DIR_N ), // 34 End of runway
-	AMD(  197,   24, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 35 Take off
-	AMD(  254,   84, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 36 Flying to landing position in air
-	AMD(  117,  168, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 37 Going down for land
-	AMD(    8,  168, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 38 Just landed, brake until end of runway
-	AMD(    8,  168, 0,                               DIR_N ), // 39 Just landed, turn around and taxi
-	AMD(    8,  144, 0,                               DIR_NW), // 40 Taxi from runway
-	AMD(    8,  128, 0,                               DIR_NW), // 41 Taxi from runway
-	AMD(    8,  120, AMED_EXACTPOS,                   DIR_NW), // 42 Airport entrance
-	AMD(   56,  344, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 43 Fly around waiting for a landing spot (north-east)
-	AMD( -200,   88, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 44 Fly around waiting for a landing spot (north-west)
-	AMD(   56, -168, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 45 Fly around waiting for a landing spot (south-west)
-	AMD(  312,   88, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 46 Fly around waiting for a landing spot (south)
-	/* Helicopter */
-	AMD(   96,   40, AMED_NOSPDCLAMP,                 DIR_N ), // 47 Bufferspace before helipad
-	AMD(   96,   40, AMED_NOSPDCLAMP,                 DIR_N ), // 48 Bufferspace before helipad
-	AMD(   82,   54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 49 Get in position for Helipad1
-	AMD(   64,   56, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 50 Get in position for Helipad2
-	AMD(   81,   55, AMED_HELI_LOWER,                 DIR_N ), // 51 Land at Helipad1
-	AMD(   64,   56, AMED_HELI_LOWER,                 DIR_N ), // 52 Land at Helipad2
-	AMD(   80,   56, AMED_HELI_RAISE,                 DIR_N ), // 53 Takeoff Helipad1
-	AMD(   64,   56, AMED_HELI_RAISE,                 DIR_N ), // 54 Takeoff Helipad2
-	AMD(  136,   96, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 55 Go to position for Hangarentrance in air
-	AMD(  136,   96, AMED_HELI_LOWER,                 DIR_N ), // 56 Land in front of hangar2
-	AMD(  126,  104, 0,                               DIR_SE), // 57 Outway 2
-	AMD(  136,  136, 0,                               DIR_NE), // 58 Airport OUTWAY 2
-	AMD(  136,  152, AMED_EXACTPOS,                   DIR_NE), // 59 Accelerate to end of runway2
-	AMD(   16,  152, AMED_NOSPDCLAMP,                 DIR_N ), // 60 Release control of runway2, for smoother movement
-	AMD(   20,  152, AMED_NOSPDCLAMP,                 DIR_N ), // 61 End of runway2
-	AMD(  -56,  152, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 62 Take off2
-	AMD(   24,    8, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 63 Going down for land2
-	AMD(  136,    8, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 64 Just landed, brake until end of runway2in
-	AMD(  136,    8, 0,                               DIR_N ), // 65 Just landed, turn around and taxi
-	AMD(  136,   24, 0,                               DIR_SE), // 66 Taxi from runway 2in
-	AMD(  136,   40, 0,                               DIR_SE), // 67 Taxi from runway 2in
-	AMD(  136,   56, AMED_EXACTPOS,                   DIR_NE), // 68 Airport entrance2
-	AMD(  -56,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 69 Fly to landing position in air2
-	AMD(   88,   40, 0,                               DIR_N ), // 70 Taxi Term group 2 exit - opp heli1
-	AMD(   72,   40, 0,                               DIR_N ), // 71 Taxi Term group 2 exit - opp heli2
-	AMD(   88,   57, AMED_EXACTPOS,                   DIR_SE), // 72 pre-helitakeoff helipad 1
-	AMD(   71,   56, AMED_EXACTPOS,                   DIR_NE), // 73 pre-helitakeoff helipad 2
-	AMD(    8,  120, AMED_HELI_RAISE,                 DIR_N ), // 74 Helitakeoff outside depot 1
-	AMD(  136,  104, AMED_HELI_RAISE,                 DIR_N ), // 75 Helitakeoff outside depot 2
-	AMD(  197,  168, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 76 Fly to landing position in air1
-};
-
-
-/* Heliport (heliport) */
-static const AirportMovingData _airport_moving_data_heliport[9] = {
-	AMD(    5,    9, AMED_EXACTPOS,                   DIR_NE), // 0 - At heliport terminal
-	AMD(    2,    9, AMED_HELI_RAISE,                 DIR_N ), // 1 - Take off (play sound)
-	AMD(   -3,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 - In position above landing spot helicopter
-	AMD(   -3,    9, AMED_HELI_LOWER,                 DIR_N ), // 3 - Land
-	AMD(    2,    9, 0,                               DIR_N ), // 4 - Goto terminal on ground
-	AMD(  -31,   59, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - Circle #1 (north-east)
-	AMD(  -31,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - Circle #2 (north-west)
-	AMD(   49,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 7 - Circle #3 (south-west)
-	AMD(   70,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 8 - Circle #4 (south)
-};
-
-/* HeliDepot 2x2 (heliport) */
-static const AirportMovingData _airport_moving_data_helidepot[18] = {
-	AMD(   24,    4, AMED_EXACTPOS,                   DIR_NE), // 0 - At depot
-	AMD(   24,   28, 0,                               DIR_N ), // 1 Taxi to right outside depot
-	AMD(    5,   38, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 Flying
-	AMD(  -15,  -15, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 3 - Circle #1 (north-east)
-	AMD(  -15,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 4 - Circle #2 (north-west)
-	AMD(   49,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - Circle #3 (south-west)
-	AMD(   49,  -15, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - Circle #4 (south-east)
-	AMD(    8,   32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 7 - PreHelipad
-	AMD(    8,   32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 8 - Helipad
-	AMD(    8,   16, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 9 - Land
-	AMD(    8,   16, AMED_HELI_LOWER,                 DIR_NW), // 10 - Land
-	AMD(    8,   24, AMED_HELI_RAISE,                 DIR_N ), // 11 - Take off (play sound)
-	AMD(   32,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 12 Air to above hangar area
-	AMD(   32,   24, AMED_HELI_LOWER,                 DIR_NW), // 13 Taxi to right outside depot
-	AMD(    8,   24, AMED_EXACTPOS,                   DIR_NW), // 14 - on helipad1
-	AMD(   24,   28, AMED_HELI_RAISE,                 DIR_N ), // 15 Takeoff right outside depot
-	AMD(    8,   24, AMED_HELI_RAISE,                 DIR_SW), // 16 - Take off (play sound)
-	AMD(    8,   24, AMED_SLOWTURN | AMED_EXACTPOS,   DIR_E ), // 17 - turn on helipad1 for takeoff
-};
-
-/* HeliDepot 2x2 (heliport) */
-static const AirportMovingData _airport_moving_data_helistation[33] = {
-	AMD(    8,    3, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar2
-	AMD(    8,   22, 0,                               DIR_N ), // 01 outside hangar 2
-	AMD(  116,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 02 Fly to landing position in air
-	AMD(   14,   22, AMED_HELI_RAISE,                 DIR_N ), // 03 Helitakeoff outside hangar1(play sound)
-	AMD(   24,   22, 0,                               DIR_N ), // 04 taxiing
-	AMD(   40,   22, 0,                               DIR_N ), // 05 taxiing
-	AMD(   40,    8, AMED_EXACTPOS,                   DIR_NE), // 06 Helipad 1
-	AMD(   56,    8, AMED_EXACTPOS,                   DIR_NE), // 07 Helipad 2
-	AMD(   56,   24, AMED_EXACTPOS,                   DIR_NE), // 08 Helipad 3
-	AMD(   40,    8, AMED_EXACTPOS,                   DIR_N ), // 09 pre-helitakeoff helipad 1
-	AMD(   56,    8, AMED_EXACTPOS,                   DIR_N ), // 10 pre-helitakeoff helipad 2
-	AMD(   56,   24, AMED_EXACTPOS,                   DIR_N ), // 11 pre-helitakeoff helipad 3
-	AMD(   32,    8, AMED_HELI_RAISE,                 DIR_N ), // 12 Takeoff Helipad1
-	AMD(   48,    8, AMED_HELI_RAISE,                 DIR_N ), // 13 Takeoff Helipad2
-	AMD(   48,   24, AMED_HELI_RAISE,                 DIR_N ), // 14 Takeoff Helipad3
-	AMD(   84,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 15 Bufferspace before helipad
-	AMD(   68,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Bufferspace before helipad
-	AMD(   32,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 17 Get in position for Helipad1
-	AMD(   48,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 18 Get in position for Helipad2
-	AMD(   48,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NE), // 19 Get in position for Helipad3
-	AMD(   40,    8, AMED_HELI_LOWER,                 DIR_N ), // 20 Land at Helipad1
-	AMD(   48,    8, AMED_HELI_LOWER,                 DIR_N ), // 21 Land at Helipad2
-	AMD(   48,   24, AMED_HELI_LOWER,                 DIR_N ), // 22 Land at Helipad3
-	AMD(    0,   22, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 Go to position for Hangarentrance in air
-	AMD(    0,   22, AMED_HELI_LOWER,                 DIR_N ), // 24 Land in front of hangar
-	AMD(  148,   -8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Fly around waiting for a landing spot (south-east)
-	AMD(  148,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Fly around waiting for a landing spot (south-west)
-	AMD(  132,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Fly around waiting for a landing spot (south-west)
-	AMD(  100,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Fly around waiting for a landing spot (north-east)
-	AMD(   84,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 29 Fly around waiting for a landing spot (south-east)
-	AMD(   84,   -8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 30 Fly around waiting for a landing spot (south-west)
-	AMD(  100,  -24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 31 Fly around waiting for a landing spot (north-west)
-	AMD(  132,  -24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 32 Fly around waiting for a landing spot (north-east)
-};
-
-/* Oilrig */
-static const AirportMovingData _airport_moving_data_oilrig[9] = {
-	AMD(   31,    9, AMED_EXACTPOS,                   DIR_NE), // 0 - At oilrig terminal
-	AMD(   28,    9, AMED_HELI_RAISE,                 DIR_N ), // 1 - Take off (play sound)
-	AMD(   23,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 - In position above landing spot helicopter
-	AMD(   23,    9, AMED_HELI_LOWER,                 DIR_N ), // 3 - Land
-	AMD(   28,    9, 0,                               DIR_N ), // 4 - Goto terminal on ground
-	AMD(  -31,   69, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - circle #1 (north-east)
-	AMD(  -31,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - circle #2 (north-west)
-	AMD(   69,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 7 - circle #3 (south-west)
-	AMD(   69,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 8 - circle #4 (south)
-};
-
-#undef AMD
-
-///////////////////////////////////////////////////////////////////////
-/////**********Movement Machine on Airports*********************///////
-static const byte _airport_entries_dummy[] = {0, 1, 2, 3};
-static const AirportFTAbuildup _airport_fta_dummy[] = {
-	{ 0, 0, 0, 3},
-	{ 1, 0, 0, 0},
-	{ 2, 0, 0, 1},
-	{ 3, 0, 0, 2},
-	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
-};
-
-/* First element of terminals array tells us how many depots there are (to know size of array)
- * this may be changed later when airports are moved to external file  */
-static const TileIndexDiffC _airport_depots_country[] = {{3, 0}};
-static const byte _airport_terminal_country[] = {1, 2};
-static const byte _airport_entries_country[] = {16, 15, 18, 17};
-static const AirportFTAbuildup _airport_fta_country[] = {
-	{  0, HANGAR, NOTHING_block, 1 },
-	{  1, 255, AIRPORT_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM1, TERM1_block, 2 }, { 1, TERM2, 0, 4 }, { 1, HELITAKEOFF, 0, 19 }, { 1, 0, 0, 6 },
-	{  2, TERM1, TERM1_block, 1 },
-	{  3, TERM2, TERM2_block, 5 },
-	{  4, 255, AIRPORT_BUSY_block, 0 }, { 4, TERM2, 0, 5 }, { 4, HANGAR, 0, 1 }, { 4, TAKEOFF, 0, 6 }, { 4, HELITAKEOFF, 0, 1 },
-	{  5, 255, AIRPORT_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, 0, 0, 4 },
-	{  6, 0, AIRPORT_BUSY_block, 7 },
-	/* takeoff */
-	{  7, TAKEOFF, AIRPORT_BUSY_block, 8 },
-	{  8, STARTTAKEOFF, NOTHING_block, 9 },
-	{  9, ENDTAKEOFF, NOTHING_block, 0 },
-	/* landing */
-	{ 10, FLYING, NOTHING_block, 15 }, { 10, LANDING, 0, 11 }, { 10, HELILANDING, 0, 20 },
-	{ 11, LANDING, AIRPORT_BUSY_block, 12 },
-	{ 12, 0, AIRPORT_BUSY_block, 13 },
-	{ 13, ENDLANDING, AIRPORT_BUSY_block, 14 }, { 13, TERM2, 0, 5 }, { 13, 0, 0, 14 },
-	{ 14, 0, AIRPORT_BUSY_block, 1 },
-	/* In air */
-	{ 15, 0, NOTHING_block, 16 },
-	{ 16, 0, NOTHING_block, 17 },
-	{ 17, 0, NOTHING_block, 18 },
-	{ 18, 0, NOTHING_block, 10 },
-	{ 19, HELITAKEOFF, NOTHING_block, 0 },
-	{ 20, HELILANDING, AIRPORT_BUSY_block, 21 },
-	{ 21, HELIENDLANDING, AIRPORT_BUSY_block, 1 },
-	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
-};
-
-static const TileIndexDiffC _airport_depots_commuter[] = { { 4, 0 } };
-static const byte _airport_terminal_commuter[] = { 1, 3 };
-static const byte _airport_helipad_commuter[] = { 1, 2 };
-static const byte _airport_entries_commuter[] = {22, 21, 24, 23};
-static const AirportFTAbuildup _airport_fta_commuter[] = {
-	{  0, HANGAR, NOTHING_block, 1 }, { 0, HELITAKEOFF, HELIPAD2_block, 1 }, { 0, 0, 0, 1 },
-	{  1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TAKEOFF, 0, 11 }, { 1, TERM1, TAXIWAY_BUSY_block, 10 }, { 1, TERM2, TAXIWAY_BUSY_block, 10 }, { 1, TERM3, TAXIWAY_BUSY_block, 10 }, { 1, HELIPAD1, TAXIWAY_BUSY_block, 10 }, { 1, HELIPAD2, TAXIWAY_BUSY_block, 10 }, { 1, HELITAKEOFF, TAXIWAY_BUSY_block, 10 }, { 1, 0, 0, 0 },
-	{  2, 255, AIRPORT_ENTRANCE_block, 2 }, { 2, HANGAR, 0, 8 }, { 2, TERM1, 0, 8 }, { 2, TERM2, 0, 8 }, { 2, TERM3, 0, 8 }, { 2, HELIPAD1, 0, 8 }, { 2, HELIPAD2, 0, 8 }, { 2, HELITAKEOFF, 0, 8 }, { 2, 0, 0, 2 },
-	{  3, TERM1, TERM1_block, 8 }, { 3, HANGAR, 0, 8 }, { 3, TAKEOFF, 0, 8 }, { 3, 0, 0, 3 },
-	{  4, TERM2, TERM2_block, 9 }, { 4, HANGAR, 0, 9 }, { 4, TAKEOFF, 0, 9 }, { 4, 0, 0, 4 },
-	{  5, TERM3, TERM3_block, 10 }, { 5, HANGAR, 0, 10 }, { 5, TAKEOFF, 0, 10 }, { 5, 0, 0, 5 },
-	{  6, HELIPAD1, HELIPAD1_block, 6 }, { 6, HANGAR, TAXIWAY_BUSY_block, 9 }, { 6, HELITAKEOFF, 0, 35 },
-	{  7, HELIPAD2, HELIPAD2_block, 7 }, { 7, HANGAR, TAXIWAY_BUSY_block, 10 }, { 7, HELITAKEOFF, 0, 36 },
-	{  8, 255, TAXIWAY_BUSY_block, 8 }, { 8, TAKEOFF, TAXIWAY_BUSY_block, 9 }, { 8, HANGAR, TAXIWAY_BUSY_block, 9 }, { 8, TERM1, TERM1_block, 3 }, { 8, 0, TAXIWAY_BUSY_block, 9 },
-	{  9, 255, TAXIWAY_BUSY_block, 9 }, { 9, TAKEOFF, TAXIWAY_BUSY_block, 10 }, { 9, HANGAR, TAXIWAY_BUSY_block, 10 }, { 9, TERM2, TERM2_block, 4 }, { 9, HELIPAD1, HELIPAD1_block, 6 }, { 9, HELITAKEOFF, HELIPAD1_block, 6 }, { 9, TERM1, TAXIWAY_BUSY_block, 8 }, { 9, 0, TAXIWAY_BUSY_block, 10 },
-	{ 10, 255, TAXIWAY_BUSY_block, 10 }, { 10, TERM3, TERM3_block, 5 }, { 10, HELIPAD1, 0, 9 }, { 10, HELIPAD2, HELIPAD2_block, 7 }, { 10, HELITAKEOFF, HELIPAD2_block, 7 }, { 10, TAKEOFF, TAXIWAY_BUSY_block, 1 }, { 10, HANGAR, TAXIWAY_BUSY_block, 1 }, { 10, 0, TAXIWAY_BUSY_block, 9 },
-	{ 11, 0, OUT_WAY_block, 12 },
-	/* takeoff */
-	{ 12, TAKEOFF, RUNWAY_IN_OUT_block, 13 },
-	{ 13, 0, RUNWAY_IN_OUT_block, 14 },
-	{ 14, STARTTAKEOFF, RUNWAY_IN_OUT_block, 15 },
-	{ 15, ENDTAKEOFF, NOTHING_block, 0 },
-	/* landing */
-	{ 16, FLYING, NOTHING_block, 21 }, { 16, LANDING, IN_WAY_block, 17 }, { 16, HELILANDING, 0, 25 },
-	{ 17, LANDING, RUNWAY_IN_OUT_block, 18 },
-	{ 18, 0, RUNWAY_IN_OUT_block, 19 },
-	{ 19, 0, RUNWAY_IN_OUT_block, 20 },
-	{ 20, ENDLANDING, IN_WAY_block, 2 },
-	/* In Air */
-	{ 21, 0, NOTHING_block, 22 },
-	{ 22, 0, NOTHING_block, 23 },
-	{ 23, 0, NOTHING_block, 24 },
-	{ 24, 0, NOTHING_block, 16 },
-	/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
-	{ 25, HELILANDING, PRE_HELIPAD_block, 26 },
-	{ 26, HELIENDLANDING, PRE_HELIPAD_block, 26 }, { 26, HELIPAD1, 0, 27 }, { 26, HELIPAD2, 0, 28 }, { 26, HANGAR, 0, 33 },
-	{ 27, 0, NOTHING_block, 29 }, // helipad1 approach
-	{ 28, 0, NOTHING_block, 30 },
-	/* landing */
-	{ 29, 255, NOTHING_block, 0 }, { 29, HELIPAD1, HELIPAD1_block, 6 },
-	{ 30, 255, NOTHING_block, 0 }, { 30, HELIPAD2, HELIPAD2_block, 7 },
-	/* Helicopter -- takeoff */
-	{ 31, HELITAKEOFF, NOTHING_block, 0 },
-	{ 32, HELITAKEOFF, NOTHING_block, 0 },
-	{ 33, 0, TAXIWAY_BUSY_block, 34 }, // need to go to hangar when waiting in air
-	{ 34, 0, TAXIWAY_BUSY_block, 1 },
-	{ 35, 0, HELIPAD1_block, 31 },
-	{ 36, 0, HELIPAD2_block, 32 },
-	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
-};
-
-static const TileIndexDiffC _airport_depots_city[] = { { 5, 0 } };
-static const byte _airport_terminal_city[] = { 1, 3 };
-static const byte _airport_entries_city[] = {26, 29, 27, 28};
-static const AirportFTAbuildup _airport_fta_city[] = {
-	{  0, HANGAR, NOTHING_block, 1 }, { 0, TAKEOFF, OUT_WAY_block, 1 }, { 0, 0, 0, 1 },
-	{  1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM2, 0, 6 }, { 1, TERM3, 0, 6 }, { 1, 0, 0, 7 }, // for all else, go to 7
-	{  2, TERM1, TERM1_block, 7 }, { 2, TAKEOFF, OUT_WAY_block, 7 }, { 2, 0, 0, 7 },
-	{  3, TERM2, TERM2_block, 5 }, { 3, TAKEOFF, OUT_WAY_block, 6 }, { 3, 0, 0, 6 },
-	{  4, TERM3, TERM3_block, 5 }, { 4, TAKEOFF, OUT_WAY_block, 5 }, { 4, 0, 0, 5 },
-	{  5, 255, TAXIWAY_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, TERM3, TERM3_block, 4 }, { 5, 0, 0, 6 },
-	{  6, 255, TAXIWAY_BUSY_block, 0 }, { 6, TERM2, TERM2_block, 3 }, { 6, TERM3, 0, 5 }, { 6, HANGAR, 0, 1 }, { 6, 0, 0, 7 },
-	{  7, 255, TAXIWAY_BUSY_block, 0 }, { 7, TERM1, TERM1_block, 2 }, { 7, TAKEOFF, OUT_WAY_block, 8 }, { 7, HELITAKEOFF, 0, 22 }, { 7, HANGAR, 0, 1 }, { 7, 0, 0, 6 },
-	{  8, 0, OUT_WAY_block, 9 },
-	{  9, 0, RUNWAY_IN_OUT_block, 10 },
-	/* takeoff */
-	{ 10, TAKEOFF, RUNWAY_IN_OUT_block, 11 },
-	{ 11, STARTTAKEOFF, NOTHING_block, 12 },
-	{ 12, ENDTAKEOFF, NOTHING_block, 0 },
-	/* landing */
-	{ 13, FLYING, NOTHING_block, 18 }, { 13, LANDING, 0, 14 }, { 13, HELILANDING, 0, 23 },
-	{ 14, LANDING, RUNWAY_IN_OUT_block, 15 },
-	{ 15, 0, RUNWAY_IN_OUT_block, 17 },
-	{ 16, 0, RUNWAY_IN_OUT_block, 17 }, // not used, left for compatibility
-	{ 17, ENDLANDING, IN_WAY_block, 7 },
-	/* In Air */
-	{ 18, 0, NOTHING_block, 25 },
-	{ 19, 0, NOTHING_block, 20 },
-	{ 20, 0, NOTHING_block, 21 },
-	{ 21, 0, NOTHING_block, 13 },
-	/* helicopter */
-	{ 22, HELITAKEOFF, NOTHING_block, 0 },
-	{ 23, HELILANDING, IN_WAY_block, 24 },
-	{ 24, HELIENDLANDING, IN_WAY_block, 17 },
-	{ 25, 0, NOTHING_block, 20},
-	{ 26, 0, NOTHING_block, 19},
-	{ 27, 0, NOTHING_block, 28},
-	{ 28, 0, NOTHING_block, 19},
-	{ 29, 0, NOTHING_block, 26},
-	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
-};
-
-static const TileIndexDiffC _airport_depots_metropolitan[] = { { 5, 0 } };
-static const byte _airport_terminal_metropolitan[] = { 1, 3 };
-static const byte _airport_entries_metropolitan[] = {20, 19, 22, 21};
-static const AirportFTAbuildup _airport_fta_metropolitan[] = {
-	{  0, HANGAR, NOTHING_block, 1 },
-	{  1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM2, 0, 6 }, { 1, TERM3, 0, 6 }, { 1, 0, 0, 7 }, // for all else, go to 7
-	{  2, TERM1, TERM1_block, 7 },
-	{  3, TERM2, TERM2_block, 6 },
-	{  4, TERM3, TERM3_block, 5 },
-	{  5, 255, TAXIWAY_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, TERM3, TERM3_block, 4 }, { 5, 0, 0, 6 },
-	{  6, 255, TAXIWAY_BUSY_block, 0 }, { 6, TERM2, TERM2_block, 3 }, { 6, TERM3, 0, 5 }, { 6, HANGAR, 0, 1 }, { 6, 0, 0, 7 },
-	{  7, 255, TAXIWAY_BUSY_block, 0 }, { 7, TERM1, TERM1_block, 2 }, { 7, TAKEOFF, 0, 8 }, { 7, HELITAKEOFF, 0, 23 }, { 7, HANGAR, 0, 1 }, { 7, 0, 0, 6 },
-	{  8, 0, OUT_WAY_block, 9 },
-	{  9, 0, RUNWAY_OUT_block, 10 },
-	/* takeoff */
-	{ 10, TAKEOFF, RUNWAY_OUT_block, 11 },
-	{ 11, STARTTAKEOFF, NOTHING_block, 12 },
-	{ 12, ENDTAKEOFF, NOTHING_block, 0 },
-	/* landing */
-	{ 13, FLYING, NOTHING_block, 19 }, { 13, LANDING, 0, 14 }, { 13, HELILANDING, 0, 25 },
-	{ 14, LANDING, RUNWAY_IN_block, 15 },
-	{ 15, 0, RUNWAY_IN_block, 16 },
-	{ 16, 255, RUNWAY_IN_block, 0 }, { 16, ENDLANDING, IN_WAY_block, 17 },
-	{ 17, 255, RUNWAY_OUT_block, 0 }, { 17, ENDLANDING, IN_WAY_block, 18 },
-	{ 18, ENDLANDING, IN_WAY_block, 27 },
-	/* In Air */
-	{ 19, 0, NOTHING_block, 20 },
-	{ 20, 0, NOTHING_block, 21 },
-	{ 21, 0, NOTHING_block, 22 },
-	{ 22, 0, NOTHING_block, 13 },
-	/* helicopter */
-	{ 23, 0, NOTHING_block, 24 },
-	{ 24, HELITAKEOFF, NOTHING_block, 0 },
-	{ 25, HELILANDING, IN_WAY_block, 26 },
-	{ 26, HELIENDLANDING, IN_WAY_block, 18 },
-	{ 27, 255, TAXIWAY_BUSY_block, 27 }, { 27, TERM1, TERM1_block, 2 }, { 27, 0, 0, 7 },
-	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
-};
-
-static const TileIndexDiffC _airport_depots_international[] = { { 0, 3 }, { 6, 1 } };
-static const byte _airport_terminal_international[] = { 2, 3, 3 };
-static const byte _airport_helipad_international[] = { 1, 2 };
-static const byte _airport_entries_international[] = { 38, 37, 40, 39 };
-static const AirportFTAbuildup _airport_fta_international[] = {
-	{  0, HANGAR, NOTHING_block, 2 }, { 0, 255, TERM_GROUP1_block, 0 }, { 0, 255, TERM_GROUP2_ENTER1_block, 1 }, { 0, HELITAKEOFF, HELIPAD1_block, 2 }, { 0, 0, 0, 2 },
-	{  1, HANGAR, NOTHING_block, 3 }, { 1, 255, HANGAR2_AREA_block, 1 }, { 1, HELITAKEOFF, HELIPAD2_block, 3 }, { 1, 0, 0, 3 },
-	{  2, 255, AIRPORT_ENTRANCE_block, 0 }, { 2, HANGAR, 0, 0 }, { 2, TERM4, 0, 12 }, { 2, TERM5, 0, 12 }, { 2, TERM6, 0, 12 }, { 2, HELIPAD1, 0, 12 }, { 2, HELIPAD2, 0, 12 }, { 2, HELITAKEOFF, 0, 12 }, { 2, 0, 0, 23 },
-	{  3, 255, HANGAR2_AREA_block, 0 }, { 3, HANGAR, 0, 1 }, { 3, 0, 0, 18 },
-	{  4, TERM1, TERM1_block, 23 }, { 4, HANGAR, AIRPORT_ENTRANCE_block, 23 }, { 4, 0, 0, 23 },
-	{  5, TERM2, TERM2_block, 24 }, { 5, HANGAR, AIRPORT_ENTRANCE_block, 24 }, { 5, 0, 0, 24 },
-	{  6, TERM3, TERM3_block, 25 }, { 6, HANGAR, AIRPORT_ENTRANCE_block, 25 }, { 6, 0, 0, 25 },
-	{  7, TERM4, TERM4_block, 16 }, { 7, HANGAR, HANGAR2_AREA_block, 16 }, { 7, 0, 0, 16 },
-	{  8, TERM5, TERM5_block, 17 }, { 8, HANGAR, HANGAR2_AREA_block, 17 }, { 8, 0, 0, 17 },
-	{  9, TERM6, TERM6_block, 18 }, { 9, HANGAR, HANGAR2_AREA_block, 18 }, { 9, 0, 0, 18 },
-	{ 10, HELIPAD1, HELIPAD1_block, 10 }, { 10, HANGAR, HANGAR2_AREA_block, 16 }, { 10, HELITAKEOFF, 0, 47 },
-	{ 11, HELIPAD2, HELIPAD2_block, 11 }, { 11, HANGAR, HANGAR2_AREA_block, 17 }, { 11, HELITAKEOFF, 0, 48 },
-	{ 12, 0, TERM_GROUP2_ENTER1_block, 13 },
-	{ 13, 0, TERM_GROUP2_ENTER1_block, 14 },
-	{ 14, 0, TERM_GROUP2_ENTER2_block, 15 },
-	{ 15, 0, TERM_GROUP2_ENTER2_block, 16 },
-	{ 16, 255, TERM_GROUP2_block, 0 }, { 16, TERM4, TERM4_block, 7 }, { 16, HELIPAD1, HELIPAD1_block, 10 }, { 16, HELITAKEOFF, HELIPAD1_block, 10 }, { 16, 0, 0, 17 },
-	{ 17, 255, TERM_GROUP2_block, 0 }, { 17, TERM5, TERM5_block, 8 }, { 17, TERM4, 0, 16 }, { 17, HELIPAD1, 0, 16 }, { 17, HELIPAD2, HELIPAD2_block, 11 }, { 17, HELITAKEOFF, HELIPAD2_block, 11 }, { 17, 0, 0, 18 },
-	{ 18, 255, TERM_GROUP2_block, 0 }, { 18, TERM6, TERM6_block, 9 }, { 18, TAKEOFF, 0, 19 }, { 18, HANGAR, HANGAR2_AREA_block, 3 }, { 18, 0, 0, 17 },
-	{ 19, 0, TERM_GROUP2_EXIT1_block, 20 },
-	{ 20, 0, TERM_GROUP2_EXIT1_block, 21 },
-	{ 21, 0, TERM_GROUP2_EXIT2_block, 22 },
-	{ 22, 0, TERM_GROUP2_EXIT2_block, 26 },
-	{ 23, 255, TERM_GROUP1_block, 0 }, { 23, TERM1, TERM1_block, 4 }, { 23, HANGAR, AIRPORT_ENTRANCE_block, 2 }, { 23, 0, 0, 24 },
-	{ 24, 255, TERM_GROUP1_block, 0 }, { 24, TERM2, TERM2_block, 5 }, { 24, TERM1, 0, 23 }, { 24, HANGAR, 0, 23 }, { 24, 0, 0, 25 },
-	{ 25, 255, TERM_GROUP1_block, 0 }, { 25, TERM3, TERM3_block, 6 }, { 25, TAKEOFF, 0, 26 }, { 25, 0, 0, 24 },
-	{ 26, 255, TAXIWAY_BUSY_block, 0 }, { 26, TAKEOFF, 0, 27 }, { 26, 0, 0, 25 },
-	{ 27, 0, OUT_WAY_block, 28 },
-	/* takeoff */
-	{ 28, TAKEOFF, OUT_WAY_block, 29 },
-	{ 29, 0, RUNWAY_OUT_block, 30 },
-	{ 30, STARTTAKEOFF, NOTHING_block, 31 },
-	{ 31, ENDTAKEOFF, NOTHING_block, 0 },
-	/* landing */
-	{ 32, FLYING, NOTHING_block, 37 }, { 32, LANDING, 0, 33 }, { 32, HELILANDING, 0, 41 },
-	{ 33, LANDING, RUNWAY_IN_block, 34 },
-	{ 34, 0, RUNWAY_IN_block, 35 },
-	{ 35, 0, RUNWAY_IN_block, 36 },
-	{ 36, ENDLANDING, IN_WAY_block, 36 }, { 36, 255, TERM_GROUP1_block, 0 }, { 36, 255, TERM_GROUP2_ENTER1_block, 1 }, { 36, TERM4, 0, 12 }, { 36, TERM5, 0, 12 }, { 36, TERM6, 0, 12 }, { 36, 0, 0, 2 },
-	/* In Air */
-	{ 37, 0, NOTHING_block, 38 },
-	{ 38, 0, NOTHING_block, 39 },
-	{ 39, 0, NOTHING_block, 40 },
-	{ 40, 0, NOTHING_block, 32 },
-	/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
-	{ 41, HELILANDING, PRE_HELIPAD_block, 42 },
-	{ 42, HELIENDLANDING, PRE_HELIPAD_block, 42 }, { 42, HELIPAD1, 0, 43 }, { 42, HELIPAD2, 0, 44 }, { 42, HANGAR, 0, 49 },
-	{ 43, 0, NOTHING_block, 45 },
-	{ 44, 0, NOTHING_block, 46 },
-	/* landing */
-	{ 45, 255, NOTHING_block, 0 }, { 45, HELIPAD1, HELIPAD1_block, 10 },
-	{ 46, 255, NOTHING_block, 0 }, { 46, HELIPAD2, HELIPAD2_block, 11 },
-	/* Helicopter -- takeoff */
-	{ 47, HELITAKEOFF, NOTHING_block, 0 },
-	{ 48, HELITAKEOFF, NOTHING_block, 0 },
-	{ 49, 0, HANGAR2_AREA_block, 50 }, // need to go to hangar when waiting in air
-	{ 50, 0, HANGAR2_AREA_block, 3 },
-	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
-};
-
-/* intercontinental */
-static const TileIndexDiffC _airport_depots_intercontinental[] = { { 0, 5 }, { 8, 4 } };
-static const byte _airport_terminal_intercontinental[] = { 2, 4, 4 };
-static const byte _airport_helipad_intercontinental[] = { 1, 2 };
-static const byte _airport_entries_intercontinental[] = { 44, 43, 46, 45 };
-static const AirportFTAbuildup _airport_fta_intercontinental[] = {
-	{  0, HANGAR, NOTHING_block, 2 }, { 0, 255, HANGAR1_AREA_block | TERM_GROUP1_block, 0 }, { 0, 255, HANGAR1_AREA_block | TERM_GROUP1_block, 1 }, { 0, TAKEOFF, HANGAR1_AREA_block | TERM_GROUP1_block, 2 }, { 0, 0, 0, 2 },
-	{  1, HANGAR, NOTHING_block, 3 }, { 1, 255, HANGAR2_AREA_block, 1 }, { 1, 255, HANGAR2_AREA_block, 0 }, { 1, 0, 0, 3 },
-	{  2, 255, HANGAR1_AREA_block, 0 }, { 2, 255, TERM_GROUP1_block, 0 }, { 2, 255, TERM_GROUP1_block, 1 }, { 2, HANGAR, 0, 0 }, { 2, TAKEOFF, TERM_GROUP1_block, 27 }, { 2, TERM5, 0, 26 }, { 2, TERM6, 0, 26 }, { 2, TERM7, 0, 26 }, { 2, TERM8, 0, 26 }, { 2, HELIPAD1, 0, 26 }, { 2, HELIPAD2, 0, 26 }, { 2, HELITAKEOFF, 0, 74 }, { 2, 0, 0, 27 },
-	{  3, 255, HANGAR2_AREA_block, 0 }, { 3, HANGAR, 0, 1 }, { 3, HELITAKEOFF, 0, 75 }, {3, TAKEOFF, 0, 59}, { 3, 0, 0, 20 },
-	{  4, TERM1, TERM1_block, 26 }, { 4, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 26 }, { 4, 0, 0, 26 },
-	{  5, TERM2, TERM2_block, 27 }, { 5, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 27 }, { 5, 0, 0, 27 },
-	{  6, TERM3, TERM3_block, 28 }, { 6, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 28 }, { 6, 0, 0, 28 },
-	{  7, TERM4, TERM4_block, 29 }, { 7, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 7, 0, 0, 29 },
-	{  8, TERM5, TERM5_block, 18 }, { 8, HANGAR, HANGAR2_AREA_block, 18 }, { 8, 0, 0, 18 },
-	{  9, TERM6, TERM6_block, 19 }, { 9, HANGAR, HANGAR2_AREA_block, 19 }, { 9, 0, 0, 19 },
-	{ 10, TERM7, TERM7_block, 20 }, { 10, HANGAR, HANGAR2_AREA_block, 20 }, { 10, 0, 0, 20 },
-	{ 11, TERM8, TERM8_block, 21 }, { 11, HANGAR, HANGAR2_AREA_block, 21 }, { 11, 0, 0, 21 },
-	{ 12, HELIPAD1, HELIPAD1_block, 12 }, { 12, HANGAR, 0, 70 }, { 12, HELITAKEOFF, 0, 72 },
-	{ 13, HELIPAD2, HELIPAD2_block, 13 }, { 13, HANGAR, 0, 71 }, { 13, HELITAKEOFF, 0, 73 },
-	{ 14, 0, TERM_GROUP2_ENTER1_block, 15 },
-	{ 15, 0, TERM_GROUP2_ENTER1_block, 16 },
-	{ 16, 0, TERM_GROUP2_ENTER2_block, 17 },
-	{ 17, 0, TERM_GROUP2_ENTER2_block, 18 },
-	{ 18, 255, TERM_GROUP2_block, 0 }, { 18, TERM5, TERM5_block, 8 }, { 18, TAKEOFF, 0, 19 }, { 18, HELITAKEOFF, HELIPAD1_block, 19 }, { 18, 0, TERM_GROUP2_EXIT1_block, 19 },
-	{ 19, 255, TERM_GROUP2_block, 0 }, { 19, TERM6, TERM6_block, 9 }, { 19, TERM5, 0, 18 }, { 19, TAKEOFF, 0, 57 }, { 19, HELITAKEOFF, HELIPAD1_block, 20 }, { 19, 0, TERM_GROUP2_EXIT1_block, 20 }, // add exit to runway out 2
-	{ 20, 255, TERM_GROUP2_block, 0 }, { 20, TERM7, TERM7_block, 10 }, { 20, TERM5, 0, 19 }, { 20, TERM6, 0, 19 }, { 20, HANGAR, HANGAR2_AREA_block, 3 }, { 20, TAKEOFF, 0, 19 }, { 20, 0, TERM_GROUP2_EXIT1_block, 21 },
-	{ 21, 255, TERM_GROUP2_block, 0 }, { 21, TERM8, TERM8_block, 11 }, { 21, HANGAR, HANGAR2_AREA_block, 20 }, { 21, TERM5, 0, 20 }, { 21, TERM6, 0, 20 }, { 21, TERM7, 0, 20 }, { 21, TAKEOFF, 0, 20 }, { 21, 0, TERM_GROUP2_EXIT1_block, 22 },
-	{ 22, 255, TERM_GROUP2_block, 0 }, { 22, HANGAR, 0, 21 }, { 22, TERM5, 0, 21 }, { 22, TERM6, 0, 21 }, { 22, TERM7, 0, 21 }, { 22, TERM8, 0, 21 }, { 22, TAKEOFF, 0, 21 }, { 22, 0, 0, 23 },
-	{ 23, 0, TERM_GROUP2_EXIT1_block, 70 },
-	{ 24, 0, TERM_GROUP2_EXIT2_block, 25 },
-	{ 25, 255, TERM_GROUP2_EXIT2_block, 0 }, { 25, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 25, 0, 0, 29 },
-	{ 26, 255, TERM_GROUP1_block, 0 }, { 26, TERM1, TERM1_block, 4 }, { 26, HANGAR, HANGAR1_AREA_block, 27 }, { 26, TERM5, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM6, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM7, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM8, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELIPAD1, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELIPAD2, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELITAKEOFF, TERM_GROUP2_ENTER1_block, 14 }, { 26, 0, 0, 27 },
-	{ 27, 255, TERM_GROUP1_block, 0 }, { 27, TERM2, TERM2_block, 5 }, { 27, HANGAR, HANGAR1_AREA_block, 2 }, { 27, TERM1, 0, 26 }, { 27, TERM5, 0, 26 }, { 27, TERM6, 0, 26 }, { 27, TERM7, 0, 26 }, { 27, TERM8, 0, 26 }, { 27, HELIPAD1, 0, 14 }, { 27, HELIPAD2, 0, 14 }, { 27, 0, 0, 28 },
-	{ 28, 255, TERM_GROUP1_block, 0 }, { 28, TERM3, TERM3_block, 6 }, { 28, HANGAR, HANGAR1_AREA_block, 27 }, { 28, TERM1, 0, 27 }, { 28, TERM2, 0, 27 }, { 28, TERM4, 0, 29 }, { 28, TERM5, 0, 14 }, { 28, TERM6, 0, 14 }, { 28, TERM7, 0, 14 }, { 28, TERM8, 0, 14 }, { 28, HELIPAD1, 0, 14 }, { 28, HELIPAD2, 0, 14 }, { 28, 0, 0, 29 },
-	{ 29, 255, TERM_GROUP1_block, 0 }, { 29, TERM4, TERM4_block, 7 }, { 29, HANGAR, HANGAR1_AREA_block, 27 }, { 29, TAKEOFF, 0, 30 }, { 29, 0, 0, 28 },
-	{ 30, 0, OUT_WAY_block2, 31 },
-	{ 31, 0, OUT_WAY_block, 32 },
-	/* takeoff */
-	{ 32, TAKEOFF, RUNWAY_OUT_block, 33 },
-	{ 33, 0, RUNWAY_OUT_block, 34 },
-	{ 34, STARTTAKEOFF, NOTHING_block, 35 },
-	{ 35, ENDTAKEOFF, NOTHING_block, 0 },
-	/* landing */
-	{ 36, 0, 0, 0 },
-	{ 37, LANDING, RUNWAY_IN_block, 38 },
-	{ 38, 0, RUNWAY_IN_block, 39 },
-	{ 39, 0, RUNWAY_IN_block, 40 },
-	{ 40, ENDLANDING, RUNWAY_IN_block, 41 },
-	{ 41, 0, IN_WAY_block, 42 },
-	{ 42, 255, IN_WAY_block, 0 }, { 42, 255, TERM_GROUP1_block, 0 }, { 42, 255, TERM_GROUP1_block, 1 }, { 42, HANGAR, 0, 2 }, { 42, 0, 0, 26 },
-	/* In Air */
-	{ 43, 0, 0, 44 },
-	{ 44, FLYING, 0, 45 }, { 44, HELILANDING, 0, 47 }, { 44, LANDING, 0, 69 }, { 44, 0, 0, 45 },
-	{ 45, 0, 0, 46 },
-	{ 46, FLYING, 0, 43 }, { 46, LANDING, 0, 76 }, { 46, 0, 0, 43 },
-	/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
-	{ 47, HELILANDING, PRE_HELIPAD_block, 48 },
-	{ 48, HELIENDLANDING, PRE_HELIPAD_block, 48 }, { 48, HELIPAD1, 0, 49 }, { 48, HELIPAD2, 0, 50 }, { 48, HANGAR, 0, 55 },
-	{ 49, 0, NOTHING_block, 51 },
-	{ 50, 0, NOTHING_block, 52 },
-	/* landing */
-	{ 51, 255, NOTHING_block, 0 }, { 51, HELIPAD1, HELIPAD1_block, 12 }, { 51, HANGAR, 0, 55 }, { 51, 0, 0, 12 },
-	{ 52, 255, NOTHING_block, 0 }, { 52, HELIPAD2, HELIPAD2_block, 13 }, { 52, HANGAR, 0, 55 }, { 52, 0, 0, 13 },
-	/* Helicopter -- takeoff */
-	{ 53, HELITAKEOFF, NOTHING_block, 0 },
-	{ 54, HELITAKEOFF, NOTHING_block, 0 },
-	{ 55, 0, HANGAR2_AREA_block, 56 }, // need to go to hangar when waiting in air
-	{ 56, 0, HANGAR2_AREA_block, 3 },
-	/* runway 2 out support */
-	{ 57, 255, OUT_WAY2_block, 0 }, { 57, TAKEOFF, 0, 58 }, { 57, 0, 0, 58 },
-	{ 58, 0, OUT_WAY2_block, 59 },
-	{ 59, TAKEOFF, RUNWAY_OUT2_block, 60 }, // takeoff
-	{ 60, 0, RUNWAY_OUT2_block, 61 },
-	{ 61, STARTTAKEOFF, NOTHING_block, 62 },
-	{ 62, ENDTAKEOFF, NOTHING_block, 0 },
-	/* runway 2 in support */
-	{ 63, LANDING, RUNWAY_IN2_block, 64 },
-	{ 64, 0, RUNWAY_IN2_block, 65 },
-	{ 65, 0, RUNWAY_IN2_block, 66 },
-	{ 66, ENDLANDING, RUNWAY_IN2_block, 0 }, { 66, 255, 0, 1 }, { 66, 255, 0, 0 }, { 66, 0, 0, 67 },
-	{ 67, 0, IN_WAY2_block, 68 },
-	{ 68, 255, IN_WAY2_block, 0 }, { 68, 255, TERM_GROUP2_block, 1 }, { 68, 255, TERM_GROUP1_block, 0 }, { 68, HANGAR, HANGAR2_AREA_block, 22 }, { 68, 0, 0, 22 },
-	{ 69, 255, RUNWAY_IN2_block, 0 }, { 69, 0, RUNWAY_IN2_block, 63 },
-	{ 70, 255, TERM_GROUP2_EXIT1_block, 0 }, { 70, HELIPAD1, HELIPAD1_block, 12 }, { 70, HELITAKEOFF, HELIPAD1_block, 12 }, { 70, 0, 0, 71 },
-	{ 71, 255, TERM_GROUP2_EXIT1_block, 0 }, { 71, HELIPAD2, HELIPAD2_block, 13 }, { 71, HELITAKEOFF, HELIPAD1_block, 12 }, { 71, 0, 0, 24 },
-	{ 72, 0, HELIPAD1_block, 53 },
-	{ 73, 0, HELIPAD2_block, 54 },
-	{ 74, HELITAKEOFF, NOTHING_block, 0 },
-	{ 75, HELITAKEOFF, NOTHING_block, 0 },
-	{ 76, 255, RUNWAY_IN_block, 0 }, { 76, 0, RUNWAY_IN_block, 37 },
-	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
-};
-
-
-/* heliports, oilrigs don't have depots */
-static const byte _airport_helipad_heliport_oilrig[] = { 1, 1 };
-static const byte _airport_entries_heliport_oilrig[] = { 7, 7, 7, 7 };
-static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = {
-	{ 0, HELIPAD1, HELIPAD1_block, 1 },
-	{ 1, HELITAKEOFF, NOTHING_block, 0 }, // takeoff
-	{ 2, 255, AIRPORT_BUSY_block, 0 }, { 2, HELILANDING, 0, 3 }, { 2, HELITAKEOFF, 0, 1 },
-	{ 3, HELILANDING, AIRPORT_BUSY_block, 4 },
-	{ 4, HELIENDLANDING, AIRPORT_BUSY_block, 4 }, { 4, HELIPAD1, HELIPAD1_block, 0 }, { 4, HELITAKEOFF, 0, 2 },
-	/* In Air */
-	{ 5, 0, NOTHING_block, 6 },
-	{ 6, 0, NOTHING_block, 7 },
-	{ 7, 0, NOTHING_block, 8 },
-	{ 8, FLYING, NOTHING_block, 5 }, { 8, HELILANDING, HELIPAD1_block, 2 }, // landing
-	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
-};
-
-/* helidepots */
-static const TileIndexDiffC _airport_depots_helidepot[] = { { 1, 0 } };
-static const byte _airport_helipad_helidepot[] = { 1, 1 };
-static const byte _airport_entries_helidepot[] = { 4, 4, 4, 4 };
-static const AirportFTAbuildup _airport_fta_helidepot[] = {
-	{  0, HANGAR, NOTHING_block, 1 },
-	{  1, 255, HANGAR2_AREA_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, HELIPAD1, HELIPAD1_block, 14 }, { 1, HELITAKEOFF, 0, 15 }, { 1, 0, 0, 0 },
-	{  2, FLYING, NOTHING_block, 3 }, { 2, HELILANDING, PRE_HELIPAD_block, 7 }, { 2, HANGAR, 0, 12 }, { 2, HELITAKEOFF, NOTHING_block, 16 },
-	/* In Air */
-	{  3, 0, NOTHING_block, 4 },
-	{  4, 0, NOTHING_block, 5 },
-	{  5, 0, NOTHING_block, 6 },
-	{  6, 0, NOTHING_block, 2 },
-	/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
-	{  7, HELILANDING, PRE_HELIPAD_block, 8 },
-	{  8, HELIENDLANDING, PRE_HELIPAD_block, 8 }, { 8, HELIPAD1, 0, 9 }, { 8, HANGAR, 0, 12 }, { 8, 0, 0, 2 },
-	{  9, 0, NOTHING_block, 10 },
-	/* landing */
-	{ 10, 255, NOTHING_block, 10 }, { 10, HELIPAD1, HELIPAD1_block, 14 }, { 10, HANGAR, 0, 1 }, { 10, 0, 0, 14 },
-	/* Helicopter -- takeoff */
-	{ 11, HELITAKEOFF, NOTHING_block, 0 },
-	{ 12, 0, HANGAR2_AREA_block, 13 }, // need to go to hangar when waiting in air
-	{ 13, 0, HANGAR2_AREA_block, 1 },
-	{ 14, HELIPAD1, HELIPAD1_block, 14 }, { 14, HANGAR, 0, 1 }, { 14, HELITAKEOFF, 0, 17 },
-	{ 15, HELITAKEOFF, NOTHING_block, 0 }, // takeoff outside depot
-	{ 16, HELITAKEOFF, 0, 14 },
-	{ 17, 0, NOTHING_block, 11 },
-	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
-};
-
-/* helistation */
-static const TileIndexDiffC _airport_depots_helistation[] = { { 0, 0 } };
-static const byte _airport_helipad_helistation[] = { 1, 3 };
-static const byte _airport_entries_helistation[] = { 25, 25, 25, 25 };
-static const AirportFTAbuildup _airport_fta_helistation[] = {
-	{  0, HANGAR, NOTHING_block, 8 },    { 0, HELIPAD1, 0, 1 }, { 0, HELIPAD2, 0, 1 }, { 0, HELIPAD3, 0, 1 }, { 0, HELITAKEOFF, 0, 1 }, { 0, 0, 0, 0 },
-	{  1, 255, HANGAR2_AREA_block, 0 },  { 1, HANGAR, 0, 0 }, { 1, HELITAKEOFF, 0, 3 }, { 1, 0, 0, 4 },
-	/* landing */
-	{  2, FLYING, NOTHING_block, 28 },   { 2, HELILANDING, 0, 15 }, { 2, 0, 0, 28 },
-	/* helicopter side */
-	{  3, HELITAKEOFF, NOTHING_block, 0 }, // helitakeoff outside hangar2
-	{  4, 255, TAXIWAY_BUSY_block, 0 },  { 4, HANGAR, HANGAR2_AREA_block, 1 }, { 4, HELITAKEOFF, 0, 1 }, { 4, 0, 0, 5 },
-	{  5, 255, TAXIWAY_BUSY_block, 0 },  { 5, HELIPAD1, HELIPAD1_block, 6 }, { 5, HELIPAD2, HELIPAD2_block, 7 }, { 5, HELIPAD3, HELIPAD3_block, 8 }, { 5, 0, 0, 4 },
-	{  6, HELIPAD1, HELIPAD1_block, 5 }, { 6, HANGAR, HANGAR2_AREA_block, 5 }, { 6, HELITAKEOFF, 0, 9 }, { 6, 0, 0, 6 },
-	{  7, HELIPAD2, HELIPAD2_block, 5 }, { 7, HANGAR, HANGAR2_AREA_block, 5 }, { 7, HELITAKEOFF, 0, 10 }, { 7, 0, 0, 7 },
-	{  8, HELIPAD3, HELIPAD3_block, 5 }, { 8, HANGAR, HANGAR2_AREA_block, 5 }, { 8, HELITAKEOFF, 0, 11 }, { 8, 0, 0, 8 },
-	{  9, 0, HELIPAD1_block, 12 },
-	{ 10, 0, HELIPAD2_block, 13 },
-	{ 11, 0, HELIPAD3_block, 14 },
-	{ 12, HELITAKEOFF, NOTHING_block, 0 },
-	{ 13, HELITAKEOFF, NOTHING_block, 0 },
-	{ 14, HELITAKEOFF, NOTHING_block, 0 },
-	/* heli - in flight moves */
-	{ 15, HELILANDING, PRE_HELIPAD_block, 16 },
-	{ 16, HELIENDLANDING, PRE_HELIPAD_block, 16 }, { 16, HELIPAD1, 0, 17 }, { 16, HELIPAD2, 0, 18 }, { 16, HELIPAD3, 0, 19 }, { 16, HANGAR, 0, 23 },
-	{ 17, 0, NOTHING_block, 20 },
-	{ 18, 0, NOTHING_block, 21 },
-	{ 19, 0, NOTHING_block, 22 },
-	/* heli landing */
-	{ 20, 255, NOTHING_block, 0 }, { 20, HELIPAD1, HELIPAD1_block, 6 }, { 20, HANGAR, 0, 23 }, { 20, 0, 0, 6 },
-	{ 21, 255, NOTHING_block, 0 }, { 21, HELIPAD2, HELIPAD2_block, 7 }, { 21, HANGAR, 0, 23 }, { 21, 0, 0, 7 },
-	{ 22, 255, NOTHING_block, 0 }, { 22, HELIPAD3, HELIPAD3_block, 8 }, { 22, HANGAR, 0, 23 }, { 22, 0, 0, 8 },
-	{ 23, 0, HANGAR2_AREA_block, 24 }, // need to go to helihangar when waiting in air
-	{ 24, 0, HANGAR2_AREA_block, 1 },
-	{ 25, 0, NOTHING_block, 26 },
-	{ 26, 0, NOTHING_block, 27 },
-	{ 27, 0, NOTHING_block, 2 },
-	{ 28, 0, NOTHING_block, 29 },
-	{ 29, 0, NOTHING_block, 30 },
-	{ 30, 0, NOTHING_block, 31 },
-	{ 31, 0, NOTHING_block, 32 },
-	{ 32, 0, NOTHING_block, 25 },
-	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
-};
-
-#endif /* AIRPORT_MOVEMENT_H */
new file mode 100644
--- /dev/null
+++ b/src/table/airport_movement.h
@@ -0,0 +1,825 @@
+/* $Id$ */
+
+/*
+ * This file is part of OpenTTD.
+ * 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.
+ * 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.
+ * 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/>.
+ */
+
+/** @file airport_movement.h Heart of the airports and their finite state machines */
+
+#ifndef AIRPORT_MOVEMENT_H
+#define AIRPORT_MOVEMENT_H
+
+
+/* state machine input struct (from external file, etc.)
+ * Finite sTate mAchine --> FTA */
+struct AirportFTAbuildup {
+	byte position; // the position that an airplane is at
+	byte heading;  // the current orders (eg. TAKEOFF, HANGAR, ENDLANDING, etc.)
+	uint64 block;  // the block this position is on on the airport (st->airport_flags)
+	byte next;     // next position from this position
+};
+
+///////////////////////////////////////////////////////////////////////
+/////*********Movement Positions on Airports********************///////
+
+#define AMD(x, y, flags, dir) { x, y, flags, {dir} }
+
+static const AirportMovingData _airport_moving_data_dummy[] = {
+	AMD(    0,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN,     DIR_N ),
+	AMD(    0,   96, AMED_NOSPDCLAMP | AMED_SLOWTURN,     DIR_N ),
+	AMD(   96,   96, AMED_NOSPDCLAMP | AMED_SLOWTURN,     DIR_N ),
+	AMD(   96,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN,     DIR_N ),
+};
+
+/* Country Airfield (small) 4x3 */
+static const AirportMovingData _airport_moving_data_country[22] = {
+	AMD(   53,    3, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar
+	AMD(   53,   27, 0,                               DIR_N ), // 01 Taxi to right outside depot
+	AMD(   32,   23, AMED_EXACTPOS,                   DIR_NW), // 02 Terminal 1
+	AMD(   10,   23, AMED_EXACTPOS,                   DIR_NW), // 03 Terminal 2
+	AMD(   43,   37, 0,                               DIR_N ), // 04 Going towards terminal 2
+	AMD(   24,   37, 0,                               DIR_N ), // 05 Going towards terminal 2
+	AMD(   53,   37, 0,                               DIR_N ), // 06 Going for takeoff
+	AMD(   61,   40, AMED_EXACTPOS,                   DIR_NE), // 07 Taxi to start of runway (takeoff)
+	AMD(    3,   40, AMED_NOSPDCLAMP,                 DIR_N ), // 08 Accelerate to end of runway
+	AMD(  -79,   40, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 09 Take off
+	AMD(  177,   40, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 10 Fly to landing position in air
+	AMD(   56,   40, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 11 Going down for land
+	AMD(    3,   40, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 12 Just landed, brake until end of runway
+	AMD(    7,   40, 0,                               DIR_N ), // 13 Just landed, turn around and taxi 1 square
+	AMD(   53,   40, 0,                               DIR_N ), // 14 Taxi from runway to crossing
+	AMD(    1,  193, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 15 Fly around waiting for a landing spot (north-east)
+	AMD(    1,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Fly around waiting for a landing spot (north-west)
+	AMD(  257,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 17 Fly around waiting for a landing spot (south-west)
+	AMD(  273,   47, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 18 Fly around waiting for a landing spot (south)
+	AMD(   44,   37, AMED_HELI_RAISE,                 DIR_N ), // 19 Helicopter takeoff
+	AMD(   44,   40, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 20 In position above landing spot helicopter
+	AMD(   44,   40, AMED_HELI_LOWER,                 DIR_N ), // 21 Helicopter landing
+};
+
+/* Commuter Airfield (small) 5x4 */
+static const AirportMovingData _airport_moving_data_commuter[37] = {
+	AMD(   69,    3, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar
+	AMD(   72,   22, 0,                               DIR_N ), // 01 Taxi to right outside depot
+	AMD(    8,   22, AMED_EXACTPOS,                   DIR_SW), // 01 Taxi to right outside depot
+	AMD(   24,   36, AMED_EXACTPOS,                   DIR_SE), // 03 Terminal 1
+	AMD(   40,   36, AMED_EXACTPOS,                   DIR_SE), // 04 Terminal 2
+	AMD(   56,   36, AMED_EXACTPOS,                   DIR_SE), // 05 Terminal 3
+	AMD(   40,    8, AMED_EXACTPOS,                   DIR_NE), // 06 Helipad 1
+	AMD(   56,    8, AMED_EXACTPOS,                   DIR_NE), // 07 Helipad 2
+	AMD(   24,   22, 0,                               DIR_SW), // 08 Taxiing
+	AMD(   40,   22, 0,                               DIR_SW), // 09 Taxiing
+	AMD(   56,   22, 0,                               DIR_SW), // 10 Taxiing
+	AMD(   72,   40, 0,                               DIR_SE), // 11 Airport OUTWAY
+	AMD(   72,   54, AMED_EXACTPOS,                   DIR_NE), // 12 Accelerate to end of runway
+	AMD(    7,   54, AMED_NOSPDCLAMP,                 DIR_N ), // 13 Release control of runway, for smoother movement
+	AMD(    5,   54, AMED_NOSPDCLAMP,                 DIR_N ), // 14 End of runway
+	AMD(  -79,   54, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 15 Take off
+	AMD(  145,   54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Fly to landing position in air
+	AMD(   73,   54, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 17 Going down for land
+	AMD(    3,   54, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 18 Just landed, brake until end of runway
+	AMD(   12,   54, AMED_SLOWTURN,                   DIR_NW), // 19 Just landed, turn around and taxi
+	AMD(    8,   32, 0,                               DIR_NW), // 20 Taxi from runway to crossing
+	AMD(    1,  149, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (north-east)
+	AMD(    1,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 22 Fly around waiting for a landing spot (north-west)
+	AMD(  193,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 Fly around waiting for a landing spot (south-west)
+	AMD(  225,   62, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 24 Fly around waiting for a landing spot (south)
+	/* Helicopter */
+	AMD(   80,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Bufferspace before helipad
+	AMD(   80,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Bufferspace before helipad
+	AMD(   32,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Get in position for Helipad1
+	AMD(   48,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Get in position for Helipad2
+	AMD(   32,    8, AMED_HELI_LOWER,                 DIR_N ), // 29 Land at Helipad1
+	AMD(   48,    8, AMED_HELI_LOWER,                 DIR_N ), // 30 Land at Helipad2
+	AMD(   32,    8, AMED_HELI_RAISE,                 DIR_N ), // 31 Takeoff Helipad1
+	AMD(   48,    8, AMED_HELI_RAISE,                 DIR_N ), // 32 Takeoff Helipad2
+	AMD(   64,   22, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 33 Go to position for Hangarentrance in air
+	AMD(   64,   22, AMED_HELI_LOWER,                 DIR_N ), // 34 Land in front of hangar
+	AMD(   40,    8, AMED_EXACTPOS,                   DIR_N ), // pre-helitakeoff helipad 1
+	AMD(   56,    8, AMED_EXACTPOS,                   DIR_N ), // pre-helitakeoff helipad 2
+};
+
+/* City Airport (large) 6x6 */
+static const AirportMovingData _airport_moving_data_town[] = {
+	AMD(   85,    3, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar
+	AMD(   85,   22, 0,                               DIR_N ), // 01 Taxi to right outside depot
+	AMD(   26,   41, AMED_EXACTPOS,                   DIR_SW), // 02 Terminal 1
+	AMD(   56,   22, AMED_EXACTPOS,                   DIR_SE), // 03 Terminal 2
+	AMD(   38,    8, AMED_EXACTPOS,                   DIR_SW), // 04 Terminal 3
+	AMD(   65,    6, 0,                               DIR_N ), // 05 Taxi to right in infront of terminal 2/3
+	AMD(   80,   27, 0,                               DIR_N ), // 06 Taxiway terminals 2-3
+	AMD(   44,   63, 0,                               DIR_N ), // 07 Taxi to Airport center
+	AMD(   58,   71, 0,                               DIR_N ), // 08 Towards takeoff
+	AMD(   72,   85, 0,                               DIR_N ), // 09 Taxi to runway (takeoff)
+	AMD(   89,   85, AMED_EXACTPOS,                   DIR_NE), // 10 Taxi to start of runway (takeoff)
+	AMD(    3,   85, AMED_NOSPDCLAMP,                 DIR_N ), // 11 Accelerate to end of runway
+	AMD(  -79,   85, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 12 Take off
+	AMD(  177,   87, AMED_HOLD       | AMED_SLOWTURN, DIR_N ), // 13 Fly to landing position in air
+	AMD(   89,   87, AMED_HOLD       | AMED_LAND,     DIR_N ), // 14 Going down for land
+	AMD(   20,   87, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 15 Just landed, brake until end of runway
+	AMD(   20,   87, 0,                               DIR_N ), // 16 Just landed, turn around and taxi 1 square // NOT USED
+	AMD(   36,   71, 0,                               DIR_N ), // 17 Taxi from runway to crossing
+	AMD(  160,   87, AMED_HOLD       | AMED_SLOWTURN, DIR_N ), // 18 Fly around waiting for a landing spot (north-east)
+	AMD(  140,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 19 Final approach fix
+	AMD(  257,    1, AMED_HOLD       | AMED_SLOWTURN, DIR_N ), // 20 Fly around waiting for a landing spot (south-west)
+	AMD(  273,   49, AMED_HOLD       | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (south)
+	AMD(   44,   63, AMED_HELI_RAISE,                 DIR_N ), // 22 Helicopter takeoff
+	AMD(   28,   74, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 In position above landing spot helicopter
+	AMD(   28,   74, AMED_HELI_LOWER,                 DIR_N ), // 24 Helicopter landing
+	AMD(  145,    1, AMED_HOLD       | AMED_SLOWTURN, DIR_N ), // 25 Fly around waiting for a landing spot (north-west)
+	AMD(  -32,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Initial approach fix (north)
+	AMD(  300,  -48, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Initial approach fix (south)
+	AMD(  140,  -48, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Intermediadate Approach fix (south), IAF (west)
+	AMD(  -32,  120, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 29 Initial approach fix (east)
+};
+
+/* Metropolitan Airport (metropolitan) - 2 runways */
+static const AirportMovingData _airport_moving_data_metropolitan[28] = {
+	AMD(   85,    3, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar
+	AMD(   85,   22, 0,                               DIR_N ), // 01 Taxi to right outside depot
+	AMD(   26,   41, AMED_EXACTPOS,                   DIR_SW), // 02 Terminal 1
+	AMD(   56,   22, AMED_EXACTPOS,                   DIR_SE), // 03 Terminal 2
+	AMD(   38,    8, AMED_EXACTPOS,                   DIR_SW), // 04 Terminal 3
+	AMD(   65,    6, 0,                               DIR_N ), // 05 Taxi to right in infront of terminal 2/3
+	AMD(   80,   27, 0,                               DIR_N ), // 06 Taxiway terminals 2-3
+	AMD(   49,   58, 0,                               DIR_N ), // 07 Taxi to Airport center
+	AMD(   72,   58, 0,                               DIR_N ), // 08 Towards takeoff
+	AMD(   72,   69, 0,                               DIR_N ), // 09 Taxi to runway (takeoff)
+	AMD(   89,   69, AMED_EXACTPOS,                   DIR_NE), // 10 Taxi to start of runway (takeoff)
+	AMD(    3,   69, AMED_NOSPDCLAMP,                 DIR_N ), // 11 Accelerate to end of runway
+	AMD(  -79,   69, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 12 Take off
+	AMD(  177,   85, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 13 Fly to landing position in air
+	AMD(   89,   85, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 14 Going down for land
+	AMD(    3,   85, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 15 Just landed, brake until end of runway
+	AMD(   21,   85, 0,                               DIR_N ), // 16 Just landed, turn around and taxi 1 square
+	AMD(   21,   69, 0,                               DIR_N ), // 17 On Runway-out taxiing to In-Way
+	AMD(   21,   58, AMED_EXACTPOS,                   DIR_SW), // 18 Taxi from runway to crossing
+	AMD(    1,  193, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 19 Fly around waiting for a landing spot (north-east)
+	AMD(    1,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 20 Fly around waiting for a landing spot (north-west)
+	AMD(  257,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 21 Fly around waiting for a landing spot (south-west)
+	AMD(  273,   49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 22 Fly around waiting for a landing spot (south)
+	AMD(   44,   58, 0,                               DIR_N ), // 23 Helicopter takeoff spot on ground (to clear airport sooner)
+	AMD(   44,   63, AMED_HELI_RAISE,                 DIR_N ), // 24 Helicopter takeoff
+	AMD(   15,   54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Get in position above landing spot helicopter
+	AMD(   15,   54, AMED_HELI_LOWER,                 DIR_N ), // 26 Helicopter landing
+	AMD(   21,   58, AMED_EXACTPOS,                   DIR_SW), // 27 Transitions after landing to on-ground movement
+};
+
+/* International Airport (international) - 2 runways, 6 terminals, dedicated helipod */
+static const AirportMovingData _airport_moving_data_international[51] = {
+	AMD(    7,   55, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar 1
+	AMD(  100,   21, AMED_EXACTPOS,                   DIR_SE), // 01 In Hangar 2
+	AMD(    7,   70, 0,                               DIR_N ), // 02 Taxi to right outside depot
+	AMD(  100,   36, 0,                               DIR_N ), // 03 Taxi to right outside depot
+	AMD(   38,   70, AMED_EXACTPOS,                   DIR_SW), // 04 Terminal 1
+	AMD(   38,   54, AMED_EXACTPOS,                   DIR_SW), // 05 Terminal 2
+	AMD(   38,   38, AMED_EXACTPOS,                   DIR_SW), // 06 Terminal 3
+	AMD(   70,   70, AMED_EXACTPOS,                   DIR_NE), // 07 Terminal 4
+	AMD(   70,   54, AMED_EXACTPOS,                   DIR_NE), // 08 Terminal 5
+	AMD(   70,   38, AMED_EXACTPOS,                   DIR_NE), // 09 Terminal 6
+	AMD(  104,   71, AMED_EXACTPOS,                   DIR_NE), // 10 Helipad 1
+	AMD(  104,   55, AMED_EXACTPOS,                   DIR_NE), // 11 Helipad 2
+	AMD(   22,   87, 0,                               DIR_N ), // 12 Towards Terminals 4/5/6, Helipad 1/2
+	AMD(   60,   87, 0,                               DIR_N ), // 13 Towards Terminals 4/5/6, Helipad 1/2
+	AMD(   66,   87, 0,                               DIR_N ), // 14 Towards Terminals 4/5/6, Helipad 1/2
+	AMD(   86,   87, AMED_EXACTPOS,                   DIR_NW), // 15 Towards Terminals 4/5/6, Helipad 1/2
+	AMD(   86,   70, 0,                               DIR_N ), // 16 In Front of Terminal 4 / Helipad 1
+	AMD(   86,   54, 0,                               DIR_N ), // 17 In Front of Terminal 5 / Helipad 2
+	AMD(   86,   38, 0,                               DIR_N ), // 18 In Front of Terminal 6
+	AMD(   86,   22, 0,                               DIR_N ), // 19 Towards Terminals Takeoff (Taxiway)
+	AMD(   66,   22, 0,                               DIR_N ), // 20 Towards Terminals Takeoff (Taxiway)
+	AMD(   60,   22, 0,                               DIR_N ), // 21 Towards Terminals Takeoff (Taxiway)
+	AMD(   38,   22, 0,                               DIR_N ), // 22 Towards Terminals Takeoff (Taxiway)
+	AMD(   22,   70, 0,                               DIR_N ), // 23 In Front of Terminal 1
+	AMD(   22,   58, 0,                               DIR_N ), // 24 In Front of Terminal 2
+	AMD(   22,   38, 0,                               DIR_N ), // 25 In Front of Terminal 3
+	AMD(   22,   22, AMED_EXACTPOS,                   DIR_NW), // 26 Going for Takeoff
+	AMD(   22,    6, 0,                               DIR_N ), // 27 On Runway-out, prepare for takeoff
+	AMD(    3,    6, AMED_EXACTPOS,                   DIR_SW), // 28 Accelerate to end of runway
+	AMD(   60,    6, AMED_NOSPDCLAMP,                 DIR_N ), // 29 Release control of runway, for smoother movement
+	AMD(  105,    6, AMED_NOSPDCLAMP,                 DIR_N ), // 30 End of runway
+	AMD(  190,    6, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 31 Take off
+	AMD(  193,  104, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 32 Fly to landing position in air
+	AMD(  105,  104, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 33 Going down for land
+	AMD(    3,  104, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 34 Just landed, brake until end of runway
+	AMD(   12,  104, AMED_SLOWTURN,                   DIR_N ), // 35 Just landed, turn around and taxi 1 square
+	AMD(    7,   84, 0,                               DIR_N ), // 36 Taxi from runway to crossing
+	AMD(    1,  209, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 37 Fly around waiting for a landing spot (north-east)
+	AMD(    1,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 38 Fly around waiting for a landing spot (north-west)
+	AMD(  273,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 39 Fly around waiting for a landing spot (south-west)
+	AMD(  305,   81, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 40 Fly around waiting for a landing spot (south)
+	/* Helicopter */
+	AMD(  128,   80, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 41 Bufferspace before helipad
+	AMD(  128,   80, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 42 Bufferspace before helipad
+	AMD(   96,   71, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 43 Get in position for Helipad1
+	AMD(   96,   55, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 44 Get in position for Helipad2
+	AMD(   96,   71, AMED_HELI_LOWER,                 DIR_N ), // 45 Land at Helipad1
+	AMD(   96,   55, AMED_HELI_LOWER,                 DIR_N ), // 46 Land at Helipad2
+	AMD(  104,   71, AMED_HELI_RAISE,                 DIR_N ), // 47 Takeoff Helipad1
+	AMD(  104,   55, AMED_HELI_RAISE,                 DIR_N ), // 48 Takeoff Helipad2
+	AMD(  104,   32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 49 Go to position for Hangarentrance in air
+	AMD(  104,   32, AMED_HELI_LOWER,                 DIR_N ), // 50 Land in HANGAR2_AREA to go to hangar
+};
+
+/* Intercontinental Airport - 4 runways, 8 terminals, 2 dedicated helipads */
+static const AirportMovingData _airport_moving_data_intercontinental[77] = {
+	AMD(    8,   87, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar 1
+	AMD(  136,   72, AMED_EXACTPOS,                   DIR_SE), // 01 In Hangar 2
+	AMD(    8,  104, 0,                               DIR_N ), // 02 Taxi to right outside depot 1
+	AMD(  136,   88, 0,                               DIR_N ), // 03 Taxi to right outside depot 2
+	AMD(   56,  120, AMED_EXACTPOS,                   DIR_W ), // 04 Terminal 1
+	AMD(   56,  104, AMED_EXACTPOS,                   DIR_SW), // 05 Terminal 2
+	AMD(   56,   88, AMED_EXACTPOS,                   DIR_SW), // 06 Terminal 3
+	AMD(   56,   72, AMED_EXACTPOS,                   DIR_SW), // 07 Terminal 4
+	AMD(   88,  120, AMED_EXACTPOS,                   DIR_N ), // 08 Terminal 5
+	AMD(   88,  104, AMED_EXACTPOS,                   DIR_NE), // 09 Terminal 6
+	AMD(   88,   88, AMED_EXACTPOS,                   DIR_NE), // 10 Terminal 7
+	AMD(   88,   72, AMED_EXACTPOS,                   DIR_NE), // 11 Terminal 8
+	AMD(   88,   56, AMED_EXACTPOS,                   DIR_SE), // 12 Helipad 1
+	AMD(   72,   56, AMED_EXACTPOS,                   DIR_NE), // 13 Helipad 2
+	AMD(   40,  136, 0,                               DIR_N ), // 14 Term group 2 enter 1 a
+	AMD(   56,  136, 0,                               DIR_N ), // 15 Term group 2 enter 1 b
+	AMD(   88,  136, 0,                               DIR_N ), // 16 Term group 2 enter 2 a
+	AMD(  104,  136, 0,                               DIR_N ), // 17 Term group 2 enter 2 b
+	AMD(  104,  120, 0,                               DIR_N ), // 18 Term group 2 - opp term 5
+	AMD(  104,  104, 0,                               DIR_N ), // 19 Term group 2 - opp term 6 & exit2
+	AMD(  104,   88, 0,                               DIR_N ), // 20 Term group 2 - opp term 7 & hangar area 2
+	AMD(  104,   72, 0,                               DIR_N ), // 21 Term group 2 - opp term 8
+	AMD(  104,   56, 0,                               DIR_N ), // 22 Taxi Term group 2 exit a
+	AMD(  104,   40, 0,                               DIR_N ), // 23 Taxi Term group 2 exit b
+	AMD(   56,   40, 0,                               DIR_N ), // 24 Term group 2 exit 2a
+	AMD(   40,   40, 0,                               DIR_N ), // 25 Term group 2 exit 2b
+	AMD(   40,  120, 0,                               DIR_N ), // 26 Term group 1 - opp term 1
+	AMD(   40,  104, 0,                               DIR_N ), // 27 Term group 1 - opp term 2 & hangar area 1
+	AMD(   40,   88, 0,                               DIR_N ), // 28 Term group 1 - opp term 3
+	AMD(   40,   72, 0,                               DIR_N ), // 29 Term group 1 - opp term 4
+	AMD(   18,   72, 0,                               DIR_NW), // 30 Outway 1
+	AMD(    8,   40, 0,                               DIR_NW), // 31 Airport OUTWAY
+	AMD(    8,   24, AMED_EXACTPOS,                   DIR_SW), // 32 Accelerate to end of runway
+	AMD(  119,   24, AMED_NOSPDCLAMP,                 DIR_N ), // 33 Release control of runway, for smoother movement
+	AMD(  117,   24, AMED_NOSPDCLAMP,                 DIR_N ), // 34 End of runway
+	AMD(  197,   24, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 35 Take off
+	AMD(  254,   84, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 36 Flying to landing position in air
+	AMD(  117,  168, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 37 Going down for land
+	AMD(    8,  168, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 38 Just landed, brake until end of runway
+	AMD(    8,  168, 0,                               DIR_N ), // 39 Just landed, turn around and taxi
+	AMD(    8,  144, 0,                               DIR_NW), // 40 Taxi from runway
+	AMD(    8,  128, 0,                               DIR_NW), // 41 Taxi from runway
+	AMD(    8,  120, AMED_EXACTPOS,                   DIR_NW), // 42 Airport entrance
+	AMD(   56,  344, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 43 Fly around waiting for a landing spot (north-east)
+	AMD( -200,   88, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 44 Fly around waiting for a landing spot (north-west)
+	AMD(   56, -168, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 45 Fly around waiting for a landing spot (south-west)
+	AMD(  312,   88, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 46 Fly around waiting for a landing spot (south)
+	/* Helicopter */
+	AMD(   96,   40, AMED_NOSPDCLAMP,                 DIR_N ), // 47 Bufferspace before helipad
+	AMD(   96,   40, AMED_NOSPDCLAMP,                 DIR_N ), // 48 Bufferspace before helipad
+	AMD(   82,   54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 49 Get in position for Helipad1
+	AMD(   64,   56, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 50 Get in position for Helipad2
+	AMD(   81,   55, AMED_HELI_LOWER,                 DIR_N ), // 51 Land at Helipad1
+	AMD(   64,   56, AMED_HELI_LOWER,                 DIR_N ), // 52 Land at Helipad2
+	AMD(   80,   56, AMED_HELI_RAISE,                 DIR_N ), // 53 Takeoff Helipad1
+	AMD(   64,   56, AMED_HELI_RAISE,                 DIR_N ), // 54 Takeoff Helipad2
+	AMD(  136,   96, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 55 Go to position for Hangarentrance in air
+	AMD(  136,   96, AMED_HELI_LOWER,                 DIR_N ), // 56 Land in front of hangar2
+	AMD(  126,  104, 0,                               DIR_SE), // 57 Outway 2
+	AMD(  136,  136, 0,                               DIR_NE), // 58 Airport OUTWAY 2
+	AMD(  136,  152, AMED_EXACTPOS,                   DIR_NE), // 59 Accelerate to end of runway2
+	AMD(   16,  152, AMED_NOSPDCLAMP,                 DIR_N ), // 60 Release control of runway2, for smoother movement
+	AMD(   20,  152, AMED_NOSPDCLAMP,                 DIR_N ), // 61 End of runway2
+	AMD(  -56,  152, AMED_NOSPDCLAMP | AMED_TAKEOFF,  DIR_N ), // 62 Take off2
+	AMD(   24,    8, AMED_NOSPDCLAMP | AMED_LAND,     DIR_N ), // 63 Going down for land2
+	AMD(  136,    8, AMED_NOSPDCLAMP | AMED_BRAKE,    DIR_N ), // 64 Just landed, brake until end of runway2in
+	AMD(  136,    8, 0,                               DIR_N ), // 65 Just landed, turn around and taxi
+	AMD(  136,   24, 0,                               DIR_SE), // 66 Taxi from runway 2in
+	AMD(  136,   40, 0,                               DIR_SE), // 67 Taxi from runway 2in
+	AMD(  136,   56, AMED_EXACTPOS,                   DIR_NE), // 68 Airport entrance2
+	AMD(  -56,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 69 Fly to landing position in air2
+	AMD(   88,   40, 0,                               DIR_N ), // 70 Taxi Term group 2 exit - opp heli1
+	AMD(   72,   40, 0,                               DIR_N ), // 71 Taxi Term group 2 exit - opp heli2
+	AMD(   88,   57, AMED_EXACTPOS,                   DIR_SE), // 72 pre-helitakeoff helipad 1
+	AMD(   71,   56, AMED_EXACTPOS,                   DIR_NE), // 73 pre-helitakeoff helipad 2
+	AMD(    8,  120, AMED_HELI_RAISE,                 DIR_N ), // 74 Helitakeoff outside depot 1
+	AMD(  136,  104, AMED_HELI_RAISE,                 DIR_N ), // 75 Helitakeoff outside depot 2
+	AMD(  197,  168, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 76 Fly to landing position in air1
+};
+
+
+/* Heliport (heliport) */
+static const AirportMovingData _airport_moving_data_heliport[9] = {
+	AMD(    5,    9, AMED_EXACTPOS,                   DIR_NE), // 0 - At heliport terminal
+	AMD(    2,    9, AMED_HELI_RAISE,                 DIR_N ), // 1 - Take off (play sound)
+	AMD(   -3,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 - In position above landing spot helicopter
+	AMD(   -3,    9, AMED_HELI_LOWER,                 DIR_N ), // 3 - Land
+	AMD(    2,    9, 0,                               DIR_N ), // 4 - Goto terminal on ground
+	AMD(  -31,   59, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - Circle #1 (north-east)
+	AMD(  -31,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - Circle #2 (north-west)
+	AMD(   49,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 7 - Circle #3 (south-west)
+	AMD(   70,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 8 - Circle #4 (south)
+};
+
+/* HeliDepot 2x2 (heliport) */
+static const AirportMovingData _airport_moving_data_helidepot[18] = {
+	AMD(   24,    4, AMED_EXACTPOS,                   DIR_NE), // 0 - At depot
+	AMD(   24,   28, 0,                               DIR_N ), // 1 Taxi to right outside depot
+	AMD(    5,   38, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 Flying
+	AMD(  -15,  -15, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 3 - Circle #1 (north-east)
+	AMD(  -15,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 4 - Circle #2 (north-west)
+	AMD(   49,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - Circle #3 (south-west)
+	AMD(   49,  -15, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - Circle #4 (south-east)
+	AMD(    8,   32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 7 - PreHelipad
+	AMD(    8,   32, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 8 - Helipad
+	AMD(    8,   16, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 9 - Land
+	AMD(    8,   16, AMED_HELI_LOWER,                 DIR_NW), // 10 - Land
+	AMD(    8,   24, AMED_HELI_RAISE,                 DIR_N ), // 11 - Take off (play sound)
+	AMD(   32,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NW), // 12 Air to above hangar area
+	AMD(   32,   24, AMED_HELI_LOWER,                 DIR_NW), // 13 Taxi to right outside depot
+	AMD(    8,   24, AMED_EXACTPOS,                   DIR_NW), // 14 - on helipad1
+	AMD(   24,   28, AMED_HELI_RAISE,                 DIR_N ), // 15 Takeoff right outside depot
+	AMD(    8,   24, AMED_HELI_RAISE,                 DIR_SW), // 16 - Take off (play sound)
+	AMD(    8,   24, AMED_SLOWTURN | AMED_EXACTPOS,   DIR_E ), // 17 - turn on helipad1 for takeoff
+};
+
+/* HeliDepot 2x2 (heliport) */
+static const AirportMovingData _airport_moving_data_helistation[33] = {
+	AMD(    8,    3, AMED_EXACTPOS,                   DIR_SE), // 00 In Hangar2
+	AMD(    8,   22, 0,                               DIR_N ), // 01 outside hangar 2
+	AMD(  116,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 02 Fly to landing position in air
+	AMD(   14,   22, AMED_HELI_RAISE,                 DIR_N ), // 03 Helitakeoff outside hangar1(play sound)
+	AMD(   24,   22, 0,                               DIR_N ), // 04 taxiing
+	AMD(   40,   22, 0,                               DIR_N ), // 05 taxiing
+	AMD(   40,    8, AMED_EXACTPOS,                   DIR_NE), // 06 Helipad 1
+	AMD(   56,    8, AMED_EXACTPOS,                   DIR_NE), // 07 Helipad 2
+	AMD(   56,   24, AMED_EXACTPOS,                   DIR_NE), // 08 Helipad 3
+	AMD(   40,    8, AMED_EXACTPOS,                   DIR_N ), // 09 pre-helitakeoff helipad 1
+	AMD(   56,    8, AMED_EXACTPOS,                   DIR_N ), // 10 pre-helitakeoff helipad 2
+	AMD(   56,   24, AMED_EXACTPOS,                   DIR_N ), // 11 pre-helitakeoff helipad 3
+	AMD(   32,    8, AMED_HELI_RAISE,                 DIR_N ), // 12 Takeoff Helipad1
+	AMD(   48,    8, AMED_HELI_RAISE,                 DIR_N ), // 13 Takeoff Helipad2
+	AMD(   48,   24, AMED_HELI_RAISE,                 DIR_N ), // 14 Takeoff Helipad3
+	AMD(   84,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 15 Bufferspace before helipad
+	AMD(   68,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 16 Bufferspace before helipad
+	AMD(   32,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 17 Get in position for Helipad1
+	AMD(   48,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 18 Get in position for Helipad2
+	AMD(   48,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_NE), // 19 Get in position for Helipad3
+	AMD(   40,    8, AMED_HELI_LOWER,                 DIR_N ), // 20 Land at Helipad1
+	AMD(   48,    8, AMED_HELI_LOWER,                 DIR_N ), // 21 Land at Helipad2
+	AMD(   48,   24, AMED_HELI_LOWER,                 DIR_N ), // 22 Land at Helipad3
+	AMD(    0,   22, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 23 Go to position for Hangarentrance in air
+	AMD(    0,   22, AMED_HELI_LOWER,                 DIR_N ), // 24 Land in front of hangar
+	AMD(  148,   -8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Fly around waiting for a landing spot (south-east)
+	AMD(  148,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 26 Fly around waiting for a landing spot (south-west)
+	AMD(  132,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 27 Fly around waiting for a landing spot (south-west)
+	AMD(  100,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 28 Fly around waiting for a landing spot (north-east)
+	AMD(   84,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 29 Fly around waiting for a landing spot (south-east)
+	AMD(   84,   -8, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 30 Fly around waiting for a landing spot (south-west)
+	AMD(  100,  -24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 31 Fly around waiting for a landing spot (north-west)
+	AMD(  132,  -24, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 32 Fly around waiting for a landing spot (north-east)
+};
+
+/* Oilrig */
+static const AirportMovingData _airport_moving_data_oilrig[9] = {
+	AMD(   31,    9, AMED_EXACTPOS,                   DIR_NE), // 0 - At oilrig terminal
+	AMD(   28,    9, AMED_HELI_RAISE,                 DIR_N ), // 1 - Take off (play sound)
+	AMD(   23,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 2 - In position above landing spot helicopter
+	AMD(   23,    9, AMED_HELI_LOWER,                 DIR_N ), // 3 - Land
+	AMD(   28,    9, 0,                               DIR_N ), // 4 - Goto terminal on ground
+	AMD(  -31,   69, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 5 - circle #1 (north-east)
+	AMD(  -31,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 6 - circle #2 (north-west)
+	AMD(   69,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 7 - circle #3 (south-west)
+	AMD(   69,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 8 - circle #4 (south)
+};
+
+#undef AMD
+
+///////////////////////////////////////////////////////////////////////
+/////**********Movement Machine on Airports*********************///////
+static const byte _airport_entries_dummy[] = {0, 1, 2, 3};
+static const AirportFTAbuildup _airport_fta_dummy[] = {
+	{ 0, 0, 0, 3},
+	{ 1, 0, 0, 0},
+	{ 2, 0, 0, 1},
+	{ 3, 0, 0, 2},
+	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
+};
+
+/* First element of terminals array tells us how many depots there are (to know size of array)
+ * this may be changed later when airports are moved to external file  */
+static const TileIndexDiffC _airport_depots_country[] = {{3, 0}};
+static const byte _airport_terminal_country[] = {1, 2};
+static const byte _airport_entries_country[] = {16, 15, 18, 17};
+static const AirportFTAbuildup _airport_fta_country[] = {
+	{  0, HANGAR, NOTHING_block, 1 },
+	{  1, 255, AIRPORT_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM1, TERM1_block, 2 }, { 1, TERM2, 0, 4 }, { 1, HELITAKEOFF, 0, 19 }, { 1, 0, 0, 6 },
+	{  2, TERM1, TERM1_block, 1 },
+	{  3, TERM2, TERM2_block, 5 },
+	{  4, 255, AIRPORT_BUSY_block, 0 }, { 4, TERM2, 0, 5 }, { 4, HANGAR, 0, 1 }, { 4, TAKEOFF, 0, 6 }, { 4, HELITAKEOFF, 0, 1 },
+	{  5, 255, AIRPORT_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, 0, 0, 4 },
+	{  6, 0, AIRPORT_BUSY_block, 7 },
+	/* takeoff */
+	{  7, TAKEOFF, AIRPORT_BUSY_block, 8 },
+	{  8, STARTTAKEOFF, NOTHING_block, 9 },
+	{  9, ENDTAKEOFF, NOTHING_block, 0 },
+	/* landing */
+	{ 10, FLYING, NOTHING_block, 15 }, { 10, LANDING, 0, 11 }, { 10, HELILANDING, 0, 20 },
+	{ 11, LANDING, AIRPORT_BUSY_block, 12 },
+	{ 12, 0, AIRPORT_BUSY_block, 13 },
+	{ 13, ENDLANDING, AIRPORT_BUSY_block, 14 }, { 13, TERM2, 0, 5 }, { 13, 0, 0, 14 },
+	{ 14, 0, AIRPORT_BUSY_block, 1 },
+	/* In air */
+	{ 15, 0, NOTHING_block, 16 },
+	{ 16, 0, NOTHING_block, 17 },
+	{ 17, 0, NOTHING_block, 18 },
+	{ 18, 0, NOTHING_block, 10 },
+	{ 19, HELITAKEOFF, NOTHING_block, 0 },
+	{ 20, HELILANDING, AIRPORT_BUSY_block, 21 },
+	{ 21, HELIENDLANDING, AIRPORT_BUSY_block, 1 },
+	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
+};
+
+static const TileIndexDiffC _airport_depots_commuter[] = { { 4, 0 } };
+static const byte _airport_terminal_commuter[] = { 1, 3 };
+static const byte _airport_helipad_commuter[] = { 1, 2 };
+static const byte _airport_entries_commuter[] = {22, 21, 24, 23};
+static const AirportFTAbuildup _airport_fta_commuter[] = {
+	{  0, HANGAR, NOTHING_block, 1 }, { 0, HELITAKEOFF, HELIPAD2_block, 1 }, { 0, 0, 0, 1 },
+	{  1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TAKEOFF, 0, 11 }, { 1, TERM1, TAXIWAY_BUSY_block, 10 }, { 1, TERM2, TAXIWAY_BUSY_block, 10 }, { 1, TERM3, TAXIWAY_BUSY_block, 10 }, { 1, HELIPAD1, TAXIWAY_BUSY_block, 10 }, { 1, HELIPAD2, TAXIWAY_BUSY_block, 10 }, { 1, HELITAKEOFF, TAXIWAY_BUSY_block, 10 }, { 1, 0, 0, 0 },
+	{  2, 255, AIRPORT_ENTRANCE_block, 2 }, { 2, HANGAR, 0, 8 }, { 2, TERM1, 0, 8 }, { 2, TERM2, 0, 8 }, { 2, TERM3, 0, 8 }, { 2, HELIPAD1, 0, 8 }, { 2, HELIPAD2, 0, 8 }, { 2, HELITAKEOFF, 0, 8 }, { 2, 0, 0, 2 },
+	{  3, TERM1, TERM1_block, 8 }, { 3, HANGAR, 0, 8 }, { 3, TAKEOFF, 0, 8 }, { 3, 0, 0, 3 },
+	{  4, TERM2, TERM2_block, 9 }, { 4, HANGAR, 0, 9 }, { 4, TAKEOFF, 0, 9 }, { 4, 0, 0, 4 },
+	{  5, TERM3, TERM3_block, 10 }, { 5, HANGAR, 0, 10 }, { 5, TAKEOFF, 0, 10 }, { 5, 0, 0, 5 },
+	{  6, HELIPAD1, HELIPAD1_block, 6 }, { 6, HANGAR, TAXIWAY_BUSY_block, 9 }, { 6, HELITAKEOFF, 0, 35 },
+	{  7, HELIPAD2, HELIPAD2_block, 7 }, { 7, HANGAR, TAXIWAY_BUSY_block, 10 }, { 7, HELITAKEOFF, 0, 36 },
+	{  8, 255, TAXIWAY_BUSY_block, 8 }, { 8, TAKEOFF, TAXIWAY_BUSY_block, 9 }, { 8, HANGAR, TAXIWAY_BUSY_block, 9 }, { 8, TERM1, TERM1_block, 3 }, { 8, 0, TAXIWAY_BUSY_block, 9 },
+	{  9, 255, TAXIWAY_BUSY_block, 9 }, { 9, TAKEOFF, TAXIWAY_BUSY_block, 10 }, { 9, HANGAR, TAXIWAY_BUSY_block, 10 }, { 9, TERM2, TERM2_block, 4 }, { 9, HELIPAD1, HELIPAD1_block, 6 }, { 9, HELITAKEOFF, HELIPAD1_block, 6 }, { 9, TERM1, TAXIWAY_BUSY_block, 8 }, { 9, 0, TAXIWAY_BUSY_block, 10 },
+	{ 10, 255, TAXIWAY_BUSY_block, 10 }, { 10, TERM3, TERM3_block, 5 }, { 10, HELIPAD1, 0, 9 }, { 10, HELIPAD2, HELIPAD2_block, 7 }, { 10, HELITAKEOFF, HELIPAD2_block, 7 }, { 10, TAKEOFF, TAXIWAY_BUSY_block, 1 }, { 10, HANGAR, TAXIWAY_BUSY_block, 1 }, { 10, 0, TAXIWAY_BUSY_block, 9 },
+	{ 11, 0, OUT_WAY_block, 12 },
+	/* takeoff */
+	{ 12, TAKEOFF, RUNWAY_IN_OUT_block, 13 },
+	{ 13, 0, RUNWAY_IN_OUT_block, 14 },
+	{ 14, STARTTAKEOFF, RUNWAY_IN_OUT_block, 15 },
+	{ 15, ENDTAKEOFF, NOTHING_block, 0 },
+	/* landing */
+	{ 16, FLYING, NOTHING_block, 21 }, { 16, LANDING, IN_WAY_block, 17 }, { 16, HELILANDING, 0, 25 },
+	{ 17, LANDING, RUNWAY_IN_OUT_block, 18 },
+	{ 18, 0, RUNWAY_IN_OUT_block, 19 },
+	{ 19, 0, RUNWAY_IN_OUT_block, 20 },
+	{ 20, ENDLANDING, IN_WAY_block, 2 },
+	/* In Air */
+	{ 21, 0, NOTHING_block, 22 },
+	{ 22, 0, NOTHING_block, 23 },
+	{ 23, 0, NOTHING_block, 24 },
+	{ 24, 0, NOTHING_block, 16 },
+	/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
+	{ 25, HELILANDING, PRE_HELIPAD_block, 26 },
+	{ 26, HELIENDLANDING, PRE_HELIPAD_block, 26 }, { 26, HELIPAD1, 0, 27 }, { 26, HELIPAD2, 0, 28 }, { 26, HANGAR, 0, 33 },
+	{ 27, 0, NOTHING_block, 29 }, // helipad1 approach
+	{ 28, 0, NOTHING_block, 30 },
+	/* landing */
+	{ 29, 255, NOTHING_block, 0 }, { 29, HELIPAD1, HELIPAD1_block, 6 },
+	{ 30, 255, NOTHING_block, 0 }, { 30, HELIPAD2, HELIPAD2_block, 7 },
+	/* Helicopter -- takeoff */
+	{ 31, HELITAKEOFF, NOTHING_block, 0 },
+	{ 32, HELITAKEOFF, NOTHING_block, 0 },
+	{ 33, 0, TAXIWAY_BUSY_block, 34 }, // need to go to hangar when waiting in air
+	{ 34, 0, TAXIWAY_BUSY_block, 1 },
+	{ 35, 0, HELIPAD1_block, 31 },
+	{ 36, 0, HELIPAD2_block, 32 },
+	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
+};
+
+static const TileIndexDiffC _airport_depots_city[] = { { 5, 0 } };
+static const byte _airport_terminal_city[] = { 1, 3 };
+static const byte _airport_entries_city[] = {26, 29, 27, 28};
+static const AirportFTAbuildup _airport_fta_city[] = {
+	{  0, HANGAR, NOTHING_block, 1 }, { 0, TAKEOFF, OUT_WAY_block, 1 }, { 0, 0, 0, 1 },
+	{  1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM2, 0, 6 }, { 1, TERM3, 0, 6 }, { 1, 0, 0, 7 }, // for all else, go to 7
+	{  2, TERM1, TERM1_block, 7 }, { 2, TAKEOFF, OUT_WAY_block, 7 }, { 2, 0, 0, 7 },
+	{  3, TERM2, TERM2_block, 5 }, { 3, TAKEOFF, OUT_WAY_block, 6 }, { 3, 0, 0, 6 },
+	{  4, TERM3, TERM3_block, 5 }, { 4, TAKEOFF, OUT_WAY_block, 5 }, { 4, 0, 0, 5 },
+	{  5, 255, TAXIWAY_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, TERM3, TERM3_block, 4 }, { 5, 0, 0, 6 },
+	{  6, 255, TAXIWAY_BUSY_block, 0 }, { 6, TERM2, TERM2_block, 3 }, { 6, TERM3, 0, 5 }, { 6, HANGAR, 0, 1 }, { 6, 0, 0, 7 },
+	{  7, 255, TAXIWAY_BUSY_block, 0 }, { 7, TERM1, TERM1_block, 2 }, { 7, TAKEOFF, OUT_WAY_block, 8 }, { 7, HELITAKEOFF, 0, 22 }, { 7, HANGAR, 0, 1 }, { 7, 0, 0, 6 },
+	{  8, 0, OUT_WAY_block, 9 },
+	{  9, 0, RUNWAY_IN_OUT_block, 10 },
+	/* takeoff */
+	{ 10, TAKEOFF, RUNWAY_IN_OUT_block, 11 },
+	{ 11, STARTTAKEOFF, NOTHING_block, 12 },
+	{ 12, ENDTAKEOFF, NOTHING_block, 0 },
+	/* landing */
+	{ 13, FLYING, NOTHING_block, 18 }, { 13, LANDING, 0, 14 }, { 13, HELILANDING, 0, 23 },
+	{ 14, LANDING, RUNWAY_IN_OUT_block, 15 },
+	{ 15, 0, RUNWAY_IN_OUT_block, 17 },
+	{ 16, 0, RUNWAY_IN_OUT_block, 17 }, // not used, left for compatibility
+	{ 17, ENDLANDING, IN_WAY_block, 7 },
+	/* In Air */
+	{ 18, 0, NOTHING_block, 25 },
+	{ 19, 0, NOTHING_block, 20 },
+	{ 20, 0, NOTHING_block, 21 },
+	{ 21, 0, NOTHING_block, 13 },
+	/* helicopter */
+	{ 22, HELITAKEOFF, NOTHING_block, 0 },
+	{ 23, HELILANDING, IN_WAY_block, 24 },
+	{ 24, HELIENDLANDING, IN_WAY_block, 17 },
+	{ 25, 0, NOTHING_block, 20},
+	{ 26, 0, NOTHING_block, 19},
+	{ 27, 0, NOTHING_block, 28},
+	{ 28, 0, NOTHING_block, 19},
+	{ 29, 0, NOTHING_block, 26},
+	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
+};
+
+static const TileIndexDiffC _airport_depots_metropolitan[] = { { 5, 0 } };
+static const byte _airport_terminal_metropolitan[] = { 1, 3 };
+static const byte _airport_entries_metropolitan[] = {20, 19, 22, 21};
+static const AirportFTAbuildup _airport_fta_metropolitan[] = {
+	{  0, HANGAR, NOTHING_block, 1 },
+	{  1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM2, 0, 6 }, { 1, TERM3, 0, 6 }, { 1, 0, 0, 7 }, // for all else, go to 7
+	{  2, TERM1, TERM1_block, 7 },
+	{  3, TERM2, TERM2_block, 6 },
+	{  4, TERM3, TERM3_block, 5 },
+	{  5, 255, TAXIWAY_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, TERM3, TERM3_block, 4 }, { 5, 0, 0, 6 },
+	{  6, 255, TAXIWAY_BUSY_block, 0 }, { 6, TERM2, TERM2_block, 3 }, { 6, TERM3, 0, 5 }, { 6, HANGAR, 0, 1 }, { 6, 0, 0, 7 },
+	{  7, 255, TAXIWAY_BUSY_block, 0 }, { 7, TERM1, TERM1_block, 2 }, { 7, TAKEOFF, 0, 8 }, { 7, HELITAKEOFF, 0, 23 }, { 7, HANGAR, 0, 1 }, { 7, 0, 0, 6 },
+	{  8, 0, OUT_WAY_block, 9 },
+	{  9, 0, RUNWAY_OUT_block, 10 },
+	/* takeoff */
+	{ 10, TAKEOFF, RUNWAY_OUT_block, 11 },
+	{ 11, STARTTAKEOFF, NOTHING_block, 12 },
+	{ 12, ENDTAKEOFF, NOTHING_block, 0 },
+	/* landing */
+	{ 13, FLYING, NOTHING_block, 19 }, { 13, LANDING, 0, 14 }, { 13, HELILANDING, 0, 25 },
+	{ 14, LANDING, RUNWAY_IN_block, 15 },
+	{ 15, 0, RUNWAY_IN_block, 16 },
+	{ 16, 255, RUNWAY_IN_block, 0 }, { 16, ENDLANDING, IN_WAY_block, 17 },
+	{ 17, 255, RUNWAY_OUT_block, 0 }, { 17, ENDLANDING, IN_WAY_block, 18 },
+	{ 18, ENDLANDING, IN_WAY_block, 27 },
+	/* In Air */
+	{ 19, 0, NOTHING_block, 20 },
+	{ 20, 0, NOTHING_block, 21 },
+	{ 21, 0, NOTHING_block, 22 },
+	{ 22, 0, NOTHING_block, 13 },
+	/* helicopter */
+	{ 23, 0, NOTHING_block, 24 },
+	{ 24, HELITAKEOFF, NOTHING_block, 0 },
+	{ 25, HELILANDING, IN_WAY_block, 26 },
+	{ 26, HELIENDLANDING, IN_WAY_block, 18 },
+	{ 27, 255, TAXIWAY_BUSY_block, 27 }, { 27, TERM1, TERM1_block, 2 }, { 27, 0, 0, 7 },
+	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
+};
+
+static const TileIndexDiffC _airport_depots_international[] = { { 0, 3 }, { 6, 1 } };
+static const byte _airport_terminal_international[] = { 2, 3, 3 };
+static const byte _airport_helipad_international[] = { 1, 2 };
+static const byte _airport_entries_international[] = { 38, 37, 40, 39 };
+static const AirportFTAbuildup _airport_fta_international[] = {
+	{  0, HANGAR, NOTHING_block, 2 }, { 0, 255, TERM_GROUP1_block, 0 }, { 0, 255, TERM_GROUP2_ENTER1_block, 1 }, { 0, HELITAKEOFF, HELIPAD1_block, 2 }, { 0, 0, 0, 2 },
+	{  1, HANGAR, NOTHING_block, 3 }, { 1, 255, HANGAR2_AREA_block, 1 }, { 1, HELITAKEOFF, HELIPAD2_block, 3 }, { 1, 0, 0, 3 },
+	{  2, 255, AIRPORT_ENTRANCE_block, 0 }, { 2, HANGAR, 0, 0 }, { 2, TERM4, 0, 12 }, { 2, TERM5, 0, 12 }, { 2, TERM6, 0, 12 }, { 2, HELIPAD1, 0, 12 }, { 2, HELIPAD2, 0, 12 }, { 2, HELITAKEOFF, 0, 12 }, { 2, 0, 0, 23 },
+	{  3, 255, HANGAR2_AREA_block, 0 }, { 3, HANGAR, 0, 1 }, { 3, 0, 0, 18 },
+	{  4, TERM1, TERM1_block, 23 }, { 4, HANGAR, AIRPORT_ENTRANCE_block, 23 }, { 4, 0, 0, 23 },
+	{  5, TERM2, TERM2_block, 24 }, { 5, HANGAR, AIRPORT_ENTRANCE_block, 24 }, { 5, 0, 0, 24 },
+	{  6, TERM3, TERM3_block, 25 }, { 6, HANGAR, AIRPORT_ENTRANCE_block, 25 }, { 6, 0, 0, 25 },
+	{  7, TERM4, TERM4_block, 16 }, { 7, HANGAR, HANGAR2_AREA_block, 16 }, { 7, 0, 0, 16 },
+	{  8, TERM5, TERM5_block, 17 }, { 8, HANGAR, HANGAR2_AREA_block, 17 }, { 8, 0, 0, 17 },
+	{  9, TERM6, TERM6_block, 18 }, { 9, HANGAR, HANGAR2_AREA_block, 18 }, { 9, 0, 0, 18 },
+	{ 10, HELIPAD1, HELIPAD1_block, 10 }, { 10, HANGAR, HANGAR2_AREA_block, 16 }, { 10, HELITAKEOFF, 0, 47 },
+	{ 11, HELIPAD2, HELIPAD2_block, 11 }, { 11, HANGAR, HANGAR2_AREA_block, 17 }, { 11, HELITAKEOFF, 0, 48 },
+	{ 12, 0, TERM_GROUP2_ENTER1_block, 13 },
+	{ 13, 0, TERM_GROUP2_ENTER1_block, 14 },
+	{ 14, 0, TERM_GROUP2_ENTER2_block, 15 },
+	{ 15, 0, TERM_GROUP2_ENTER2_block, 16 },
+	{ 16, 255, TERM_GROUP2_block, 0 }, { 16, TERM4, TERM4_block, 7 }, { 16, HELIPAD1, HELIPAD1_block, 10 }, { 16, HELITAKEOFF, HELIPAD1_block, 10 }, { 16, 0, 0, 17 },
+	{ 17, 255, TERM_GROUP2_block, 0 }, { 17, TERM5, TERM5_block, 8 }, { 17, TERM4, 0, 16 }, { 17, HELIPAD1, 0, 16 }, { 17, HELIPAD2, HELIPAD2_block, 11 }, { 17, HELITAKEOFF, HELIPAD2_block, 11 }, { 17, 0, 0, 18 },
+	{ 18, 255, TERM_GROUP2_block, 0 }, { 18, TERM6, TERM6_block, 9 }, { 18, TAKEOFF, 0, 19 }, { 18, HANGAR, HANGAR2_AREA_block, 3 }, { 18, 0, 0, 17 },
+	{ 19, 0, TERM_GROUP2_EXIT1_block, 20 },
+	{ 20, 0, TERM_GROUP2_EXIT1_block, 21 },
+	{ 21, 0, TERM_GROUP2_EXIT2_block, 22 },
+	{ 22, 0, TERM_GROUP2_EXIT2_block, 26 },
+	{ 23, 255, TERM_GROUP1_block, 0 }, { 23, TERM1, TERM1_block, 4 }, { 23, HANGAR, AIRPORT_ENTRANCE_block, 2 }, { 23, 0, 0, 24 },
+	{ 24, 255, TERM_GROUP1_block, 0 }, { 24, TERM2, TERM2_block, 5 }, { 24, TERM1, 0, 23 }, { 24, HANGAR, 0, 23 }, { 24, 0, 0, 25 },
+	{ 25, 255, TERM_GROUP1_block, 0 }, { 25, TERM3, TERM3_block, 6 }, { 25, TAKEOFF, 0, 26 }, { 25, 0, 0, 24 },
+	{ 26, 255, TAXIWAY_BUSY_block, 0 }, { 26, TAKEOFF, 0, 27 }, { 26, 0, 0, 25 },
+	{ 27, 0, OUT_WAY_block, 28 },
+	/* takeoff */
+	{ 28, TAKEOFF, OUT_WAY_block, 29 },
+	{ 29, 0, RUNWAY_OUT_block, 30 },
+	{ 30, STARTTAKEOFF, NOTHING_block, 31 },
+	{ 31, ENDTAKEOFF, NOTHING_block, 0 },
+	/* landing */
+	{ 32, FLYING, NOTHING_block, 37 }, { 32, LANDING, 0, 33 }, { 32, HELILANDING, 0, 41 },
+	{ 33, LANDING, RUNWAY_IN_block, 34 },
+	{ 34, 0, RUNWAY_IN_block, 35 },
+	{ 35, 0, RUNWAY_IN_block, 36 },
+	{ 36, ENDLANDING, IN_WAY_block, 36 }, { 36, 255, TERM_GROUP1_block, 0 }, { 36, 255, TERM_GROUP2_ENTER1_block, 1 }, { 36, TERM4, 0, 12 }, { 36, TERM5, 0, 12 }, { 36, TERM6, 0, 12 }, { 36, 0, 0, 2 },
+	/* In Air */
+	{ 37, 0, NOTHING_block, 38 },
+	{ 38, 0, NOTHING_block, 39 },
+	{ 39, 0, NOTHING_block, 40 },
+	{ 40, 0, NOTHING_block, 32 },
+	/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
+	{ 41, HELILANDING, PRE_HELIPAD_block, 42 },
+	{ 42, HELIENDLANDING, PRE_HELIPAD_block, 42 }, { 42, HELIPAD1, 0, 43 }, { 42, HELIPAD2, 0, 44 }, { 42, HANGAR, 0, 49 },
+	{ 43, 0, NOTHING_block, 45 },
+	{ 44, 0, NOTHING_block, 46 },
+	/* landing */
+	{ 45, 255, NOTHING_block, 0 }, { 45, HELIPAD1, HELIPAD1_block, 10 },
+	{ 46, 255, NOTHING_block, 0 }, { 46, HELIPAD2, HELIPAD2_block, 11 },
+	/* Helicopter -- takeoff */
+	{ 47, HELITAKEOFF, NOTHING_block, 0 },
+	{ 48, HELITAKEOFF, NOTHING_block, 0 },
+	{ 49, 0, HANGAR2_AREA_block, 50 }, // need to go to hangar when waiting in air
+	{ 50, 0, HANGAR2_AREA_block, 3 },
+	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
+};
+
+/* intercontinental */
+static const TileIndexDiffC _airport_depots_intercontinental[] = { { 0, 5 }, { 8, 4 } };
+static const byte _airport_terminal_intercontinental[] = { 2, 4, 4 };
+static const byte _airport_helipad_intercontinental[] = { 1, 2 };
+static const byte _airport_entries_intercontinental[] = { 44, 43, 46, 45 };
+static const AirportFTAbuildup _airport_fta_intercontinental[] = {
+	{  0, HANGAR, NOTHING_block, 2 }, { 0, 255, HANGAR1_AREA_block | TERM_GROUP1_block, 0 }, { 0, 255, HANGAR1_AREA_block | TERM_GROUP1_block, 1 }, { 0, TAKEOFF, HANGAR1_AREA_block | TERM_GROUP1_block, 2 }, { 0, 0, 0, 2 },
+	{  1, HANGAR, NOTHING_block, 3 }, { 1, 255, HANGAR2_AREA_block, 1 }, { 1, 255, HANGAR2_AREA_block, 0 }, { 1, 0, 0, 3 },
+	{  2, 255, HANGAR1_AREA_block, 0 }, { 2, 255, TERM_GROUP1_block, 0 }, { 2, 255, TERM_GROUP1_block, 1 }, { 2, HANGAR, 0, 0 }, { 2, TAKEOFF, TERM_GROUP1_block, 27 }, { 2, TERM5, 0, 26 }, { 2, TERM6, 0, 26 }, { 2, TERM7, 0, 26 }, { 2, TERM8, 0, 26 }, { 2, HELIPAD1, 0, 26 }, { 2, HELIPAD2, 0, 26 }, { 2, HELITAKEOFF, 0, 74 }, { 2, 0, 0, 27 },
+	{  3, 255, HANGAR2_AREA_block, 0 }, { 3, HANGAR, 0, 1 }, { 3, HELITAKEOFF, 0, 75 }, {3, TAKEOFF, 0, 59}, { 3, 0, 0, 20 },
+	{  4, TERM1, TERM1_block, 26 }, { 4, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 26 }, { 4, 0, 0, 26 },
+	{  5, TERM2, TERM2_block, 27 }, { 5, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 27 }, { 5, 0, 0, 27 },
+	{  6, TERM3, TERM3_block, 28 }, { 6, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 28 }, { 6, 0, 0, 28 },
+	{  7, TERM4, TERM4_block, 29 }, { 7, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 7, 0, 0, 29 },
+	{  8, TERM5, TERM5_block, 18 }, { 8, HANGAR, HANGAR2_AREA_block, 18 }, { 8, 0, 0, 18 },
+	{  9, TERM6, TERM6_block, 19 }, { 9, HANGAR, HANGAR2_AREA_block, 19 }, { 9, 0, 0, 19 },
+	{ 10, TERM7, TERM7_block, 20 }, { 10, HANGAR, HANGAR2_AREA_block, 20 }, { 10, 0, 0, 20 },
+	{ 11, TERM8, TERM8_block, 21 }, { 11, HANGAR, HANGAR2_AREA_block, 21 }, { 11, 0, 0, 21 },
+	{ 12, HELIPAD1, HELIPAD1_block, 12 }, { 12, HANGAR, 0, 70 }, { 12, HELITAKEOFF, 0, 72 },
+	{ 13, HELIPAD2, HELIPAD2_block, 13 }, { 13, HANGAR, 0, 71 }, { 13, HELITAKEOFF, 0, 73 },
+	{ 14, 0, TERM_GROUP2_ENTER1_block, 15 },
+	{ 15, 0, TERM_GROUP2_ENTER1_block, 16 },
+	{ 16, 0, TERM_GROUP2_ENTER2_block, 17 },
+	{ 17, 0, TERM_GROUP2_ENTER2_block, 18 },
+	{ 18, 255, TERM_GROUP2_block, 0 }, { 18, TERM5, TERM5_block, 8 }, { 18, TAKEOFF, 0, 19 }, { 18, HELITAKEOFF, HELIPAD1_block, 19 }, { 18, 0, TERM_GROUP2_EXIT1_block, 19 },
+	{ 19, 255, TERM_GROUP2_block, 0 }, { 19, TERM6, TERM6_block, 9 }, { 19, TERM5, 0, 18 }, { 19, TAKEOFF, 0, 57 }, { 19, HELITAKEOFF, HELIPAD1_block, 20 }, { 19, 0, TERM_GROUP2_EXIT1_block, 20 }, // add exit to runway out 2
+	{ 20, 255, TERM_GROUP2_block, 0 }, { 20, TERM7, TERM7_block, 10 }, { 20, TERM5, 0, 19 }, { 20, TERM6, 0, 19 }, { 20, HANGAR, HANGAR2_AREA_block, 3 }, { 20, TAKEOFF, 0, 19 }, { 20, 0, TERM_GROUP2_EXIT1_block, 21 },
+	{ 21, 255, TERM_GROUP2_block, 0 }, { 21, TERM8, TERM8_block, 11 }, { 21, HANGAR, HANGAR2_AREA_block, 20 }, { 21, TERM5, 0, 20 }, { 21, TERM6, 0, 20 }, { 21, TERM7, 0, 20 }, { 21, TAKEOFF, 0, 20 }, { 21, 0, TERM_GROUP2_EXIT1_block, 22 },
+	{ 22, 255, TERM_GROUP2_block, 0 }, { 22, HANGAR, 0, 21 }, { 22, TERM5, 0, 21 }, { 22, TERM6, 0, 21 }, { 22, TERM7, 0, 21 }, { 22, TERM8, 0, 21 }, { 22, TAKEOFF, 0, 21 }, { 22, 0, 0, 23 },
+	{ 23, 0, TERM_GROUP2_EXIT1_block, 70 },
+	{ 24, 0, TERM_GROUP2_EXIT2_block, 25 },
+	{ 25, 255, TERM_GROUP2_EXIT2_block, 0 }, { 25, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 25, 0, 0, 29 },
+	{ 26, 255, TERM_GROUP1_block, 0 }, { 26, TERM1, TERM1_block, 4 }, { 26, HANGAR, HANGAR1_AREA_block, 27 }, { 26, TERM5, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM6, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM7, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM8, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELIPAD1, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELIPAD2, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELITAKEOFF, TERM_GROUP2_ENTER1_block, 14 }, { 26, 0, 0, 27 },
+	{ 27, 255, TERM_GROUP1_block, 0 }, { 27, TERM2, TERM2_block, 5 }, { 27, HANGAR, HANGAR1_AREA_block, 2 }, { 27, TERM1, 0, 26 }, { 27, TERM5, 0, 26 }, { 27, TERM6, 0, 26 }, { 27, TERM7, 0, 26 }, { 27, TERM8, 0, 26 }, { 27, HELIPAD1, 0, 14 }, { 27, HELIPAD2, 0, 14 }, { 27, 0, 0, 28 },
+	{ 28, 255, TERM_GROUP1_block, 0 }, { 28, TERM3, TERM3_block, 6 }, { 28, HANGAR, HANGAR1_AREA_block, 27 }, { 28, TERM1, 0, 27 }, { 28, TERM2, 0, 27 }, { 28, TERM4, 0, 29 }, { 28, TERM5, 0, 14 }, { 28, TERM6, 0, 14 }, { 28, TERM7, 0, 14 }, { 28, TERM8, 0, 14 }, { 28, HELIPAD1, 0, 14 }, { 28, HELIPAD2, 0, 14 }, { 28, 0, 0, 29 },
+	{ 29, 255, TERM_GROUP1_block, 0 }, { 29, TERM4, TERM4_block, 7 }, { 29, HANGAR, HANGAR1_AREA_block, 27 }, { 29, TAKEOFF, 0, 30 }, { 29, 0, 0, 28 },
+	{ 30, 0, OUT_WAY_block2, 31 },
+	{ 31, 0, OUT_WAY_block, 32 },
+	/* takeoff */
+	{ 32, TAKEOFF, RUNWAY_OUT_block, 33 },
+	{ 33, 0, RUNWAY_OUT_block, 34 },
+	{ 34, STARTTAKEOFF, NOTHING_block, 35 },
+	{ 35, ENDTAKEOFF, NOTHING_block, 0 },
+	/* landing */
+	{ 36, 0, 0, 0 },
+	{ 37, LANDING, RUNWAY_IN_block, 38 },
+	{ 38, 0, RUNWAY_IN_block, 39 },
+	{ 39, 0, RUNWAY_IN_block, 40 },
+	{ 40, ENDLANDING, RUNWAY_IN_block, 41 },
+	{ 41, 0, IN_WAY_block, 42 },
+	{ 42, 255, IN_WAY_block, 0 }, { 42, 255, TERM_GROUP1_block, 0 }, { 42, 255, TERM_GROUP1_block, 1 }, { 42, HANGAR, 0, 2 }, { 42, 0, 0, 26 },
+	/* In Air */
+	{ 43, 0, 0, 44 },
+	{ 44, FLYING, 0, 45 }, { 44, HELILANDING, 0, 47 }, { 44, LANDING, 0, 69 }, { 44, 0, 0, 45 },
+	{ 45, 0, 0, 46 },
+	{ 46, FLYING, 0, 43 }, { 46, LANDING, 0, 76 }, { 46, 0, 0, 43 },
+	/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
+	{ 47, HELILANDING, PRE_HELIPAD_block, 48 },
+	{ 48, HELIENDLANDING, PRE_HELIPAD_block, 48 }, { 48, HELIPAD1, 0, 49 }, { 48, HELIPAD2, 0, 50 }, { 48, HANGAR, 0, 55 },
+	{ 49, 0, NOTHING_block, 51 },
+	{ 50, 0, NOTHING_block, 52 },
+	/* landing */
+	{ 51, 255, NOTHING_block, 0 }, { 51, HELIPAD1, HELIPAD1_block, 12 }, { 51, HANGAR, 0, 55 }, { 51, 0, 0, 12 },
+	{ 52, 255, NOTHING_block, 0 }, { 52, HELIPAD2, HELIPAD2_block, 13 }, { 52, HANGAR, 0, 55 }, { 52, 0, 0, 13 },
+	/* Helicopter -- takeoff */
+	{ 53, HELITAKEOFF, NOTHING_block, 0 },
+	{ 54, HELITAKEOFF, NOTHING_block, 0 },
+	{ 55, 0, HANGAR2_AREA_block, 56 }, // need to go to hangar when waiting in air
+	{ 56, 0, HANGAR2_AREA_block, 3 },
+	/* runway 2 out support */
+	{ 57, 255, OUT_WAY2_block, 0 }, { 57, TAKEOFF, 0, 58 }, { 57, 0, 0, 58 },
+	{ 58, 0, OUT_WAY2_block, 59 },
+	{ 59, TAKEOFF, RUNWAY_OUT2_block, 60 }, // takeoff
+	{ 60, 0, RUNWAY_OUT2_block, 61 },
+	{ 61, STARTTAKEOFF, NOTHING_block, 62 },
+	{ 62, ENDTAKEOFF, NOTHING_block, 0 },
+	/* runway 2 in support */
+	{ 63, LANDING, RUNWAY_IN2_block, 64 },
+	{ 64, 0, RUNWAY_IN2_block, 65 },
+	{ 65, 0, RUNWAY_IN2_block, 66 },
+	{ 66, ENDLANDING, RUNWAY_IN2_block, 0 }, { 66, 255, 0, 1 }, { 66, 255, 0, 0 }, { 66, 0, 0, 67 },
+	{ 67, 0, IN_WAY2_block, 68 },
+	{ 68, 255, IN_WAY2_block, 0 }, { 68, 255, TERM_GROUP2_block, 1 }, { 68, 255, TERM_GROUP1_block, 0 }, { 68, HANGAR, HANGAR2_AREA_block, 22 }, { 68, 0, 0, 22 },
+	{ 69, 255, RUNWAY_IN2_block, 0 }, { 69, 0, RUNWAY_IN2_block, 63 },
+	{ 70, 255, TERM_GROUP2_EXIT1_block, 0 }, { 70, HELIPAD1, HELIPAD1_block, 12 }, { 70, HELITAKEOFF, HELIPAD1_block, 12 }, { 70, 0, 0, 71 },
+	{ 71, 255, TERM_GROUP2_EXIT1_block, 0 }, { 71, HELIPAD2, HELIPAD2_block, 13 }, { 71, HELITAKEOFF, HELIPAD1_block, 12 }, { 71, 0, 0, 24 },
+	{ 72, 0, HELIPAD1_block, 53 },
+	{ 73, 0, HELIPAD2_block, 54 },
+	{ 74, HELITAKEOFF, NOTHING_block, 0 },
+	{ 75, HELITAKEOFF, NOTHING_block, 0 },
+	{ 76, 255, RUNWAY_IN_block, 0 }, { 76, 0, RUNWAY_IN_block, 37 },
+	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
+};
+
+
+/* heliports, oilrigs don't have depots */
+static const byte _airport_helipad_heliport_oilrig[] = { 1, 1 };
+static const byte _airport_entries_heliport_oilrig[] = { 7, 7, 7, 7 };
+static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = {
+	{ 0, HELIPAD1, HELIPAD1_block, 1 },
+	{ 1, HELITAKEOFF, NOTHING_block, 0 }, // takeoff
+	{ 2, 255, AIRPORT_BUSY_block, 0 }, { 2, HELILANDING, 0, 3 }, { 2, HELITAKEOFF, 0, 1 },
+	{ 3, HELILANDING, AIRPORT_BUSY_block, 4 },
+	{ 4, HELIENDLANDING, AIRPORT_BUSY_block, 4 }, { 4, HELIPAD1, HELIPAD1_block, 0 }, { 4, HELITAKEOFF, 0, 2 },
+	/* In Air */
+	{ 5, 0, NOTHING_block, 6 },
+	{ 6, 0, NOTHING_block, 7 },
+	{ 7, 0, NOTHING_block, 8 },
+	{ 8, FLYING, NOTHING_block, 5 }, { 8, HELILANDING, HELIPAD1_block, 2 }, // landing
+	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
+};
+
+/* helidepots */
+static const TileIndexDiffC _airport_depots_helidepot[] = { { 1, 0 } };
+static const byte _airport_helipad_helidepot[] = { 1, 1 };
+static const byte _airport_entries_helidepot[] = { 4, 4, 4, 4 };
+static const AirportFTAbuildup _airport_fta_helidepot[] = {
+	{  0, HANGAR, NOTHING_block, 1 },
+	{  1, 255, HANGAR2_AREA_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, HELIPAD1, HELIPAD1_block, 14 }, { 1, HELITAKEOFF, 0, 15 }, { 1, 0, 0, 0 },
+	{  2, FLYING, NOTHING_block, 3 }, { 2, HELILANDING, PRE_HELIPAD_block, 7 }, { 2, HANGAR, 0, 12 }, { 2, HELITAKEOFF, NOTHING_block, 16 },
+	/* In Air */
+	{  3, 0, NOTHING_block, 4 },
+	{  4, 0, NOTHING_block, 5 },
+	{  5, 0, NOTHING_block, 6 },
+	{  6, 0, NOTHING_block, 2 },
+	/* Helicopter -- stay in air in special place as a buffer to choose from helipads */
+	{  7, HELILANDING, PRE_HELIPAD_block, 8 },
+	{  8, HELIENDLANDING, PRE_HELIPAD_block, 8 }, { 8, HELIPAD1, 0, 9 }, { 8, HANGAR, 0, 12 }, { 8, 0, 0, 2 },
+	{  9, 0, NOTHING_block, 10 },
+	/* landing */
+	{ 10, 255, NOTHING_block, 10 }, { 10, HELIPAD1, HELIPAD1_block, 14 }, { 10, HANGAR, 0, 1 }, { 10, 0, 0, 14 },
+	/* Helicopter -- takeoff */
+	{ 11, HELITAKEOFF, NOTHING_block, 0 },
+	{ 12, 0, HANGAR2_AREA_block, 13 }, // need to go to hangar when waiting in air
+	{ 13, 0, HANGAR2_AREA_block, 1 },
+	{ 14, HELIPAD1, HELIPAD1_block, 14 }, { 14, HANGAR, 0, 1 }, { 14, HELITAKEOFF, 0, 17 },
+	{ 15, HELITAKEOFF, NOTHING_block, 0 }, // takeoff outside depot
+	{ 16, HELITAKEOFF, 0, 14 },
+	{ 17, 0, NOTHING_block, 11 },
+	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
+};
+
+/* helistation */
+static const TileIndexDiffC _airport_depots_helistation[] = { { 0, 0 } };
+static const byte _airport_helipad_helistation[] = { 1, 3 };
+static const byte _airport_entries_helistation[] = { 25, 25, 25, 25 };
+static const AirportFTAbuildup _airport_fta_helistation[] = {
+	{  0, HANGAR, NOTHING_block, 8 },    { 0, HELIPAD1, 0, 1 }, { 0, HELIPAD2, 0, 1 }, { 0, HELIPAD3, 0, 1 }, { 0, HELITAKEOFF, 0, 1 }, { 0, 0, 0, 0 },
+	{  1, 255, HANGAR2_AREA_block, 0 },  { 1, HANGAR, 0, 0 }, { 1, HELITAKEOFF, 0, 3 }, { 1, 0, 0, 4 },
+	/* landing */
+	{  2, FLYING, NOTHING_block, 28 },   { 2, HELILANDING, 0, 15 }, { 2, 0, 0, 28 },
+	/* helicopter side */
+	{  3, HELITAKEOFF, NOTHING_block, 0 }, // helitakeoff outside hangar2
+	{  4, 255, TAXIWAY_BUSY_block, 0 },  { 4, HANGAR, HANGAR2_AREA_block, 1 }, { 4, HELITAKEOFF, 0, 1 }, { 4, 0, 0, 5 },
+	{  5, 255, TAXIWAY_BUSY_block, 0 },  { 5, HELIPAD1, HELIPAD1_block, 6 }, { 5, HELIPAD2, HELIPAD2_block, 7 }, { 5, HELIPAD3, HELIPAD3_block, 8 }, { 5, 0, 0, 4 },
+	{  6, HELIPAD1, HELIPAD1_block, 5 }, { 6, HANGAR, HANGAR2_AREA_block, 5 }, { 6, HELITAKEOFF, 0, 9 }, { 6, 0, 0, 6 },
+	{  7, HELIPAD2, HELIPAD2_block, 5 }, { 7, HANGAR, HANGAR2_AREA_block, 5 }, { 7, HELITAKEOFF, 0, 10 }, { 7, 0, 0, 7 },
+	{  8, HELIPAD3, HELIPAD3_block, 5 }, { 8, HANGAR, HANGAR2_AREA_block, 5 }, { 8, HELITAKEOFF, 0, 11 }, { 8, 0, 0, 8 },
+	{  9, 0, HELIPAD1_block, 12 },
+	{ 10, 0, HELIPAD2_block, 13 },
+	{ 11, 0, HELIPAD3_block, 14 },
+	{ 12, HELITAKEOFF, NOTHING_block, 0 },
+	{ 13, HELITAKEOFF, NOTHING_block, 0 },
+	{ 14, HELITAKEOFF, NOTHING_block, 0 },
+	/* heli - in flight moves */
+	{ 15, HELILANDING, PRE_HELIPAD_block, 16 },
+	{ 16, HELIENDLANDING, PRE_HELIPAD_block, 16 }, { 16, HELIPAD1, 0, 17 }, { 16, HELIPAD2, 0, 18 }, { 16, HELIPAD3, 0, 19 }, { 16, HANGAR, 0, 23 },
+	{ 17, 0, NOTHING_block, 20 },
+	{ 18, 0, NOTHING_block, 21 },
+	{ 19, 0, NOTHING_block, 22 },
+	/* heli landing */
+	{ 20, 255, NOTHING_block, 0 }, { 20, HELIPAD1, HELIPAD1_block, 6 }, { 20, HANGAR, 0, 23 }, { 20, 0, 0, 6 },
+	{ 21, 255, NOTHING_block, 0 }, { 21, HELIPAD2, HELIPAD2_block, 7 }, { 21, HANGAR, 0, 23 }, { 21, 0, 0, 7 },
+	{ 22, 255, NOTHING_block, 0 }, { 22, HELIPAD3, HELIPAD3_block, 8 }, { 22, HANGAR, 0, 23 }, { 22, 0, 0, 8 },
+	{ 23, 0, HANGAR2_AREA_block, 24 }, // need to go to helihangar when waiting in air
+	{ 24, 0, HANGAR2_AREA_block, 1 },
+	{ 25, 0, NOTHING_block, 26 },
+	{ 26, 0, NOTHING_block, 27 },
+	{ 27, 0, NOTHING_block, 2 },
+	{ 28, 0, NOTHING_block, 29 },
+	{ 29, 0, NOTHING_block, 30 },
+	{ 30, 0, NOTHING_block, 31 },
+	{ 31, 0, NOTHING_block, 32 },
+	{ 32, 0, NOTHING_block, 25 },
+	{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
+};
+
+#endif /* AIRPORT_MOVEMENT_H */