summaryrefslogtreecommitdiff
path: root/src/table
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-01-02 19:19:48 +0000
committerrubidium <rubidium@openttd.org>2007-01-02 19:19:48 +0000
commit66bbf336c6af7353ef0aeed58002c46543b30635 (patch)
treead4a63860df2626b22f77e7dac712e958bea54cb /src/table
parentccc0a3f4dbf58c005b22341ac8874252924690cd (diff)
downloadopenttd-66bbf336c6af7353ef0aeed58002c46543b30635.tar.xz
(svn r7759) -Merge: makefile rewrite. This merge features:
- A proper ./configure, so everything needs to be configured only once, not for every make. - Usage of makedepend when available. This greatly reduces the time needed for generating the dependencies. - A generator for all project files. There is a single file with sources, which is used to generate Makefiles and the project files for MSVC. - Proper support for OSX universal binaries. - Object files for non-MSVC compiles are also placed in separate directories, making is faster to switch between debug and release compiles and it does not touch the directory with the source files. - Functionality to make a bundle of all needed files for for example a nightly or distribution of a binary with all needed GRFs and language files. Note: as this merge moves almost all files, it is recommended to make a backup of your working copy before updating your working copy.
Diffstat (limited to 'src/table')
-rw-r--r--src/table/ai_rail.h480
-rw-r--r--src/table/animcursors.h79
-rw-r--r--src/table/autorail.h72
-rw-r--r--src/table/bridge_land.h521
-rw-r--r--src/table/build_industry.h1600
-rw-r--r--src/table/clear_land.h62
-rw-r--r--src/table/control_codes.h105
-rw-r--r--src/table/elrail_data.h445
-rw-r--r--src/table/engines.h689
-rw-r--r--src/table/files.h64
-rw-r--r--src/table/genland.h159
-rw-r--r--src/table/industry_land.h1022
-rw-r--r--src/table/landscape_const.h257
-rw-r--r--src/table/landscape_sprite.h167
-rw-r--r--src/table/namegen.h3302
-rw-r--r--src/table/palettes.h199
-rw-r--r--src/table/road_land.h281
-rw-r--r--src/table/roadveh.h1077
-rw-r--r--src/table/sprites.h1397
-rw-r--r--src/table/station_land.h1203
-rw-r--r--src/table/town_land.h2226
-rw-r--r--src/table/track_land.h52
-rw-r--r--src/table/train_cmd.h57
-rw-r--r--src/table/tree_land.h228
-rw-r--r--src/table/unicode.h21
-rw-r--r--src/table/unmovable_land.h131
-rw-r--r--src/table/water_land.h151
27 files changed, 16047 insertions, 0 deletions
diff --git a/src/table/ai_rail.h b/src/table/ai_rail.h
new file mode 100644
index 000000000..8e6a49c50
--- /dev/null
+++ b/src/table/ai_rail.h
@@ -0,0 +1,480 @@
+/* $Id$ */
+
+typedef struct {
+ byte mode;
+ byte attr;
+ TileIndexDiffC tileoffs;
+} AiDefaultBlockData;
+
+typedef struct {
+ byte p0;
+ byte p1;
+ byte p2;
+ byte p3;
+ byte dir;
+ AiDefaultBlockData data[VARARRAY_SIZE];
+} AiDefaultRailBlock;
+
+typedef struct {
+ byte dir;
+ AiDefaultBlockData data[VARARRAY_SIZE];
+} AiDefaultRoadBlock;
+
+
+#define MKHDR(a,b,c,d,e) a,b,c,d,e,{
+#define MKDEPOT(a, b, c) {0, a, {b, c}}
+#define MKSTATION(a, b, c) {1, a, {b, c}}
+#define MKRAIL(a, b, c) {2, a, {b, c}}
+#define MKCLRRAIL(a, b, c) {3, a, {b, c}}
+#define MKEND {4, 0, {0, 0}}}
+
+static const AiDefaultRailBlock _raildata_ai_0 = {
+ MKHDR(1, 2, 1, 0, 1)
+ MKDEPOT(2, -1, 1),
+ MKSTATION(0x15, 0, -1),
+ MKRAIL(0x26, 0, 1),
+ MKCLRRAIL(1, 0, 2),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_1 = {
+ MKHDR(1, 2, 1, 0, 3)
+ MKDEPOT(2, -1, -1),
+ MKRAIL(0x26, 0, -1),
+ MKSTATION(0x15, 0, 0),
+ MKCLRRAIL(3, 0, -2),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_2 = {
+ MKHDR(1, 2, 1, 0, 0)
+ MKDEPOT(1, -1, -1),
+ MKRAIL(0x15, -1, 0),
+ MKSTATION(0x14, 0, 0),
+ MKCLRRAIL(0, -2, 0),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_3 = {
+ MKHDR(1, 2, 1, 0, 2)
+ MKDEPOT(1, 1, -1),
+ MKRAIL(0x15, 1, 0),
+ MKSTATION(0x14, -1, 0),
+ MKCLRRAIL(2, 2, 0),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_4 = {
+ MKHDR(1, 2, 2, 0, 255)
+ MKSTATION(0x15, 0, 0),
+ MKCLRRAIL(3, 0, -1),
+ MKCLRRAIL(1, 0, 2),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_5 = {
+ MKHDR(1, 2, 2, 0, 255)
+ MKSTATION(0x14, 0, 0),
+ MKCLRRAIL(0, -1, 0),
+ MKCLRRAIL(2, 2, 0),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_6 = {
+ MKHDR(2, 3, 1, 0, 1)
+ MKSTATION(0x27, 0, -2),
+ MKRAIL(0xC2, 0, 1),
+ MKRAIL(0xC2, 1, 1),
+ MKRAIL(0x1A, 0, 2),
+ MKRAIL(0x26, 1, 2),
+ MKDEPOT(3, 1, 3),
+ MKCLRRAIL(1, 0, 3),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_7 = {
+ MKHDR(2, 3, 1, 0, 3)
+ MKDEPOT(1, 0, -3),
+ MKRAIL(0x1A, 0, -2),
+ MKRAIL(0x26, 1, -2),
+ MKRAIL(0xC2, 0, -1),
+ MKRAIL(0xC2, 1, -1),
+ MKSTATION(0x27, 0, 0),
+ MKCLRRAIL(3, 1, -3),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_8 = {
+ MKHDR(2, 3, 1, 0, 2)
+ MKSTATION(0x26, -2, 0),
+ MKRAIL(0xC1, 1, 0),
+ MKRAIL(0xC1, 1, 1),
+ MKRAIL(0x29, 2, 0),
+ MKRAIL(0x15, 2, 1),
+ MKDEPOT(0, 3, 0),
+ MKCLRRAIL(2, 3, 1),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_9 = {
+ MKHDR(2, 3, 1, 0, 0)
+ MKDEPOT(2, -3, -1),
+ MKRAIL(0x29, -2, -1),
+ MKRAIL(0x15, -2, 0),
+ MKRAIL(0xC1, -1, -1),
+ MKRAIL(0xC1, -1, 0),
+ MKSTATION(0x26, 0, -1),
+ MKCLRRAIL(0, -3, 0),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_10 = {
+ MKHDR(2, 3, 2, 0, 255)
+ MKRAIL(0x1A, 0, -3),
+ MKRAIL(0x20, 1, -3),
+ MKRAIL(0xC2, 0, -2),
+ MKRAIL(0xC2, 1, -2),
+ MKSTATION(0x27, 0, -1),
+ MKRAIL(0xC2, 0, 2),
+ MKRAIL(0xC2, 1, 2),
+ MKRAIL(0x1A, 0, 3),
+ MKRAIL(0x4, 1, 3),
+ MKCLRRAIL(3, 0, -4),
+ MKCLRRAIL(1, 0, 4),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_11 = {
+ MKHDR(2, 3, 2, 0, 255)
+ MKRAIL(0x29, -3, 0),
+ MKRAIL(0x10, -3, 1),
+ MKRAIL(0xC1, -2, 0),
+ MKRAIL(0xC1, -2, 1),
+ MKSTATION(0x26, -1, 0),
+ MKRAIL(0xC1, 2, 0),
+ MKRAIL(0xC1, 2, 1),
+ MKRAIL(0x29, 3, 0),
+ MKRAIL(0x4, 3, 1),
+ MKCLRRAIL(0, -4, 0),
+ MKCLRRAIL(2, 4, 0),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_12 = {
+ MKHDR(2, 3, 2, 1, 3)
+ MKRAIL(0x88, -1, -3),
+ MKRAIL(0x6, 0, -3),
+ MKRAIL(0x2, -1, -2),
+ MKRAIL(0x42, 0, -2),
+ MKRAIL(0x2, -1, -1),
+ MKRAIL(0x2, 0, -1),
+ MKRAIL(0x2, -1, 0),
+ MKRAIL(0x2, 0, 0),
+ MKRAIL(0x82, -1, 1),
+ MKRAIL(0x2, 0, 1),
+ MKRAIL(0xA, -1, 2),
+ MKRAIL(0x44, 0, 2),
+ MKCLRRAIL(3, 0, -4),
+ MKCLRRAIL(1, -1, 3),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_13 = {
+ MKHDR(2, 3, 2, 1, 0)
+ MKRAIL(0x21, -3, 0),
+ MKRAIL(0x50, -3, 1),
+ MKRAIL(0x81, -2, 0),
+ MKRAIL(0x1, -2, 1),
+ MKRAIL(0x1, -1, 0),
+ MKRAIL(0x1, -1, 1),
+ MKRAIL(0x1, 0, 0),
+ MKRAIL(0x1, 0, 1),
+ MKRAIL(0x1, 1, 0),
+ MKRAIL(0x41, 1, 1),
+ MKRAIL(0xA0, 2, 0),
+ MKRAIL(0x11, 2, 1),
+ MKCLRRAIL(0, -4, 0),
+ MKCLRRAIL(2, 3, 1),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_14 = {
+ MKHDR(2, 3, 2, 1, 1)
+ MKRAIL(0x88, -1, -3),
+ MKRAIL(0x6, 0, -3),
+ MKRAIL(0x2, -1, -2),
+ MKRAIL(0x42, 0, -2),
+ MKRAIL(0x2, -1, -1),
+ MKRAIL(0x2, 0, -1),
+ MKRAIL(0x2, -1, 0),
+ MKRAIL(0x2, 0, 0),
+ MKRAIL(0x82, -1, 1),
+ MKRAIL(0x2, 0, 1),
+ MKRAIL(0xA, -1, 2),
+ MKRAIL(0x44, 0, 2),
+ MKCLRRAIL(1, -1, 3),
+ MKCLRRAIL(3, 0, -4),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_15 = {
+ MKHDR(2, 3, 2, 1, 2)
+ MKRAIL(0x21, -3, 0),
+ MKRAIL(0x50, -3, 1),
+ MKRAIL(0x81, -2, 0),
+ MKRAIL(0x1, -2, 1),
+ MKRAIL(0x1, -1, 0),
+ MKRAIL(0x1, -1, 1),
+ MKRAIL(0x1, 0, 0),
+ MKRAIL(0x1, 0, 1),
+ MKRAIL(0x1, 1, 0),
+ MKRAIL(0x41, 1, 1),
+ MKRAIL(0xA0, 2, 0),
+ MKRAIL(0x11, 2, 1),
+ MKCLRRAIL(2, 3, 1),
+ MKCLRRAIL(0, -4, 0),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_16 = {
+ MKHDR(1, 3, 1, 0, 1)
+ MKSTATION(0x17, 0, -2),
+ MKRAIL(0x1A, 0, 1),
+ MKCLRRAIL(1, 0, 2),
+ MKDEPOT(0, 1, 1),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_17 = {
+ MKHDR(1, 3, 1, 0, 3)
+ MKCLRRAIL(3, 0, -2),
+ MKRAIL(0x26, 0, -1),
+ MKDEPOT(2, -1, -1),
+ MKSTATION(0x17, 0, 0),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_18 = {
+ MKHDR(1, 3, 1, 0, 0)
+ MKCLRRAIL(0, -2, 0),
+ MKRAIL(0x29, -1, 0),
+ MKDEPOT(3, -1, 1),
+ MKSTATION(0x16, 0, 0),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_19 = {
+ MKHDR(1, 3, 1, 0, 2)
+ MKSTATION(0x16, -2, 0),
+ MKDEPOT(2, 0, -1),
+ MKRAIL(0x20, 1, -1),
+ MKRAIL(0x15, 1, 0),
+ MKCLRRAIL(2, 2, 0),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_20 = {
+ MKHDR(2, 3, 1, 0, 1)
+ MKSTATION(0x26, -2, 0),
+ MKRAIL(0xC1, 1, 0),
+ MKRAIL(0xC1, 1, 1),
+ MKRAIL(0x26, 2, 0),
+ MKRAIL(0x26, 2, 1),
+ MKDEPOT(1, 2, -1),
+ MKCLRRAIL(1, 2, 2),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_21 = {
+ MKHDR(2, 3, 1, 0, 3)
+ MKDEPOT(2, -3, -1),
+ MKRAIL(0x3F, -2, -1),
+ MKRAIL(0x10, -2, 0),
+ MKRAIL(0xC1, -1, -1),
+ MKRAIL(0xC1, -1, 0),
+ MKSTATION(0x26, 0, -1),
+ MKCLRRAIL(3, -2, -2),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_22 = {
+ MKHDR(2, 3, 1, 0, 0)
+ MKSTATION(0x27, 0, -2),
+ MKRAIL(0xC2, 0, 1),
+ MKRAIL(0xC2, 1, 1),
+ MKRAIL(0x15, 0, 2),
+ MKRAIL(0x4, 1, 2),
+ MKRAIL(0x15, -1, 2),
+ MKDEPOT(1, -1, 1),
+ MKCLRRAIL(0, -2, 2),
+ MKEND
+};
+
+static const AiDefaultRailBlock _raildata_ai_23 = {
+ MKHDR(2, 3, 1, 0, 2)
+ MKDEPOT(1, 0, -3),
+ MKRAIL(0x1A, 0, -2),
+ MKRAIL(0x29, 1, -2),
+ MKRAIL(0xC2, 0, -1),
+ MKRAIL(0xC2, 1, -1),
+ MKSTATION(0x27, 0, 0),
+ MKCLRRAIL(2, 2, -2),
+ MKEND
+};
+
+
+
+static const AiDefaultRailBlock * const _default_rail_track_data[] = {
+ &_raildata_ai_0,
+ &_raildata_ai_1,
+ &_raildata_ai_2,
+ &_raildata_ai_3,
+ &_raildata_ai_4,
+ &_raildata_ai_5,
+ &_raildata_ai_6,
+ &_raildata_ai_7,
+ &_raildata_ai_8,
+ &_raildata_ai_9,
+ &_raildata_ai_10,
+ &_raildata_ai_11,
+ &_raildata_ai_12,
+ &_raildata_ai_13,
+ &_raildata_ai_14,
+ &_raildata_ai_15,
+ &_raildata_ai_16,
+ &_raildata_ai_17,
+ &_raildata_ai_18,
+ &_raildata_ai_19,
+ &_raildata_ai_20,
+ &_raildata_ai_21,
+ &_raildata_ai_22,
+ &_raildata_ai_23,
+ NULL
+};
+
+#undef MKHDR
+
+#define MKHDR(a) a,{
+
+static const AiDefaultRoadBlock _roaddata_ai_0 = {
+ MKHDR(0)
+ MKDEPOT(2, -1,1),
+ MKSTATION(0x2, -1,0),
+ MKRAIL(0xC, 0,0),
+ MKRAIL(0x9, 0,1),
+ MKCLRRAIL(0, 0,-1),
+ MKCLRRAIL(0, 1,0),
+ MKCLRRAIL(0, 1,1),
+ MKCLRRAIL(0, 0,2),
+ MKEND
+};
+
+static const AiDefaultRoadBlock _roaddata_ai_1 = {
+ MKHDR(0)
+ MKDEPOT(1, 0,-1),
+ MKSTATION(0x1, 1,-1),
+ MKRAIL(0x3, 0,0),
+ MKRAIL(0x9, 1,0),
+ MKCLRRAIL(0, -1,0),
+ MKCLRRAIL(0, 0,1),
+ MKCLRRAIL(0, 1,1),
+ MKCLRRAIL(0, 2,0),
+ MKEND
+};
+
+static const AiDefaultRoadBlock _roaddata_ai_2 = {
+ MKHDR(0)
+ MKDEPOT(3, 1,1),
+ MKSTATION(0x3, 0,1),
+ MKRAIL(0x6, 0,0),
+ MKRAIL(0xC, 1,0),
+ MKCLRRAIL(0, -1,0),
+ MKCLRRAIL(0, 0,-1),
+ MKCLRRAIL(0, 1,-1),
+ MKCLRRAIL(0, 2,0),
+ MKEND
+};
+
+static const AiDefaultRoadBlock _roaddata_ai_3 = {
+ MKHDR(0)
+ MKDEPOT(0, 1,0),
+ MKSTATION(0x0, 1,1),
+ MKRAIL(0x6, 0,0),
+ MKRAIL(0x3, 0,1),
+ MKCLRRAIL(0, 0,-1),
+ MKCLRRAIL(0, -1,0),
+ MKCLRRAIL(0, -1,1),
+ MKCLRRAIL(0, 0,2),
+ MKEND
+};
+
+static const AiDefaultRoadBlock _roaddata_ai_4 = {
+ MKHDR(1)
+ MKSTATION(0x2, -1,0),
+ MKRAIL(0x8, 0,0),
+ MKCLRRAIL(0, 0,-1),
+ MKCLRRAIL(0, 1,0),
+ MKCLRRAIL(0, 0,1),
+ MKEND
+};
+
+static const AiDefaultRoadBlock _roaddata_ai_5 = {
+ MKHDR(1)
+ MKSTATION(0x3, 0,1),
+ MKRAIL(0x4, 0,0),
+ MKCLRRAIL(0, -1,0),
+ MKCLRRAIL(0, 0,-1),
+ MKCLRRAIL(0, 1,0),
+ MKEND
+};
+
+static const AiDefaultRoadBlock _roaddata_ai_6 = {
+ MKHDR(1)
+ MKSTATION(0x0, 1,1),
+ MKRAIL(0x2, 0,1),
+ MKCLRRAIL(0, 0,0),
+ MKCLRRAIL(0, -1,0),
+ MKCLRRAIL(0, 0,2),
+ MKEND
+};
+
+static const AiDefaultRoadBlock _roaddata_ai_7 = {
+ MKHDR(1)
+ MKSTATION(0x1, 1,-1),
+ MKRAIL(0x1, 1,0),
+ MKCLRRAIL(0, 0,0),
+ MKCLRRAIL(0, 1,1),
+ MKCLRRAIL(0, 2,0),
+ MKEND
+};
+
+
+static const AiDefaultRoadBlock * const _road_default_block_data[] = {
+ &_roaddata_ai_0,
+ &_roaddata_ai_1,
+ &_roaddata_ai_2,
+ &_roaddata_ai_3,
+ &_roaddata_ai_4,
+ &_roaddata_ai_5,
+ &_roaddata_ai_6,
+ &_roaddata_ai_7,
+ NULL
+};
+
+#define MKAIR(a, b, c) {0, a, {b, c}}
+
+static const AiDefaultBlockData _airportdata_ai_0[] = {
+ MKAIR(1, 0, 0),
+ {1, 0, {0, 0}},
+};
+
+static const AiDefaultBlockData _airportdata_ai_1[] = {
+ MKAIR(0, 0, 0),
+ {1, 0, {0, 0}}
+};
+
+static const AiDefaultBlockData * const _airport_default_block_data[] = {
+ _airportdata_ai_0, // city airport
+ _airportdata_ai_1, // country airport
+ NULL
+};
diff --git a/src/table/animcursors.h b/src/table/animcursors.h
new file mode 100644
index 000000000..856527f93
--- /dev/null
+++ b/src/table/animcursors.h
@@ -0,0 +1,79 @@
+/* $Id$ */
+
+/** @file animcursors.h
+ * This file defines all the the animated cursors.
+ * Animated cursors consist of the number of sprites that are
+ * displayed in a round-robin manner. Each sprite also has a time
+ * associated that indicates how many ticks the corresponding sprite
+ * is to be displayed. Currently all this information is recorded in a single
+ * array. @todo This should be converted into an array of structs on the long run
+ * All these arrays end up in an array of pointers called _animcursors.
+ */
+
+/** Creates two array entries that define one
+ * status of the cursor.
+ * @param Sprite The Sprite to be displayed
+ * @param display_time The Number of ticks to display the sprite
+ */
+#define ANIM_CURSOR_LINE(Sprite, display_time) Sprite, display_time,
+
+/** This indicates the termination of the cursor list
+ */
+#define ANIM_CURSOR_END() 0xFFFF
+
+/** Animated cursor elements for demolishion
+ */
+static const CursorID _demolish_animcursor[] = {
+ ANIM_CURSOR_LINE(0x2C0, 8)
+ ANIM_CURSOR_LINE(0x2C1, 8)
+ ANIM_CURSOR_LINE(0x2C2, 8)
+ ANIM_CURSOR_LINE(0x2C3, 8)
+ ANIM_CURSOR_END()
+};
+
+/** Animated cursor elements for lower land
+ */
+static const CursorID _lower_land_animcursor[] = {
+ ANIM_CURSOR_LINE(0x2BB, 10)
+ ANIM_CURSOR_LINE(0x2BC, 10)
+ ANIM_CURSOR_LINE(0x2BD, 29)
+ ANIM_CURSOR_END()
+};
+
+/** Animated cursor elements for raise land
+ */
+static const CursorID _raise_land_animcursor[] = {
+ ANIM_CURSOR_LINE(0x2B8, 10)
+ ANIM_CURSOR_LINE(0x2B9, 10)
+ ANIM_CURSOR_LINE(0x2BA, 29)
+ ANIM_CURSOR_END()
+};
+
+/** Animated cursor elements for the goto icon
+ */
+static const CursorID _order_goto_animcursor[] = {
+ ANIM_CURSOR_LINE(0x2CC, 10)
+ ANIM_CURSOR_LINE(0x2CD, 10)
+ ANIM_CURSOR_LINE(0x2CE, 29)
+ ANIM_CURSOR_END()
+};
+
+/** Animated cursor elements for the build signal icon
+ */
+static const CursorID _build_signals_animcursor[] = {
+ ANIM_CURSOR_LINE(0x50C, 20)
+ ANIM_CURSOR_LINE(0x50D, 20)
+ ANIM_CURSOR_END()
+};
+
+/** This is an array of pointers to all the animated cursor
+ * definitions we have above. This is the only thing that is
+ * accessed directly from other files
+ */
+static const CursorID * const _animcursors[] = {
+ _demolish_animcursor,
+ _lower_land_animcursor,
+ _raise_land_animcursor,
+ _order_goto_animcursor,
+ _build_signals_animcursor
+};
diff --git a/src/table/autorail.h b/src/table/autorail.h
new file mode 100644
index 000000000..d94747ec1
--- /dev/null
+++ b/src/table/autorail.h
@@ -0,0 +1,72 @@
+/* $Id$ */
+
+/* Rail selection types (directions):
+ * / \ / \ / \ / \ / \ / \
+ * / /\ /\ \ /===\ / \ /| \ / |\
+ * \/ / \ \/ \ / \===/ \| / \ |/
+ * \ / \ / \ / \ / \ / \ /
+ * 0 1 2 3 4 5
+ */
+
+// mark invalid tiles red
+#define RED(c) c | PALETTE_SEL_TILE_RED
+
+// table maps each of the six rail directions and tileh combinations to a sprite
+// invalid entries are required to make sure that this array can be quickly accessed
+static const int _AutorailTilehSprite[][6] = {
+// type 0 1 2 3 4 5
+ { 0, 8, 16, 25, 34, 42 }, // tileh = 0
+ { 5, 13, RED(22), RED(31), 35, 42 }, // tileh = 1
+ { 5, 10, 16, 26, RED(38), RED(46) }, // tileh = 2
+ { 5, 9, RED(23), 26, 35, RED(46) }, // tileh = 3
+ { 2, 10, RED(19), RED(28), 34, 43 }, // tileh = 4
+ { 1, 9, 17, 26, 35, 43 }, // tileh = 5
+ { 1, 10, RED(20), 26, RED(38), 43 }, // tileh = 6
+ { 1, 9, 17, 26, 35, 43 }, // tileh = 7
+ { 2, 13, 17, 25, RED(40), RED(48) }, // tileh = 8
+ { 1, 13, 17, RED(32), 35, RED(48) }, // tileh = 9
+ { 1, 9, 17, 26, 35, 43 }, // tileh = 10
+ { 1, 9, 17, 26, 35, 43 }, // tileh = 11
+ { 2, 9, 17, RED(29), RED(40), 43 }, // tileh = 12
+ { 1, 9, 17, 26, 35, 43 }, // tileh = 13
+ { 1, 9, 17, 26, 35, 43 }, // tileh = 14
+ { 0, 1, 2, 3, 4, 5 }, // invalid (15)
+ { 0, 1, 2, 3, 4, 5 }, // invalid (16)
+ { 0, 1, 2, 3, 4, 5 }, // invalid (17)
+ { 0, 1, 2, 3, 4, 5 }, // invalid (18)
+ { 0, 1, 2, 3, 4, 5 }, // invalid (19)
+ { 0, 1, 2, 3, 4, 5 }, // invalid (20)
+ { 0, 1, 2, 3, 4, 5 }, // invalid (21)
+ { 0, 1, 2, 3, 4, 5 }, // invalid (22)
+ { 6, 11, 17, 27, RED(39), RED(47) }, // tileh = 23
+ { 0, 1, 2, 3, 4, 5 }, // invalid (24)
+ { 0, 1, 2, 3, 4, 5 }, // invalid (25)
+ { 0, 1, 2, 3, 4, 5 }, // invalid (26)
+ { 7, 15, RED(24), RED(33), 36, 44 }, // tileh = 27
+ { 0, 1, 2, 3, 4, 5 }, // invalid (28)
+ { 3, 14, 18, 26, RED(41), RED(49) }, // tileh = 29
+ { 4, 12, RED(21), RED(30), 37, 45 } // tileh = 30
+};
+#undef RED
+
+
+// maps each pixel of a tile (16x16) to a selection type
+// (0,0) is the top corner, (16,16) the bottom corner
+static const byte _AutorailPiece[][16] = {
+ { 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5 },
+ { 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5 },
+ { 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5 },
+ { 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5 },
+ { 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5 },
+ { 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5 },
+ { 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 },
+ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1 },
+ { 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1 },
+ { 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1 },
+ { 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3 },
+ { 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3 },
+ { 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3 },
+ { 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3 },
+ { 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3 },
+ { 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3 }
+};
diff --git a/src/table/bridge_land.h b/src/table/bridge_land.h
new file mode 100644
index 000000000..8589c6e20
--- /dev/null
+++ b/src/table/bridge_land.h
@@ -0,0 +1,521 @@
+/* $Id$ */
+
+/** @file bridge_land.h This file contains all the sprites for bridges
+ * It consists of a number of arrays.
+ * <ul><li>_bridge_sprite_table_n_m. Defines all the sprites of a bridge besides the pylons.
+ * n defines the number of the bridge type, m the number of the section. the highest m for
+ * each bridge set defines the heads.<br>
+ * Sprites for middle secionts are arranged in groups of four, the elements are:
+ * <ol><li>Element containing the track. This element is logically behind the vehicle.</li>
+ * <li>Element containing the structure that is logically between the vehicle and the camera</li>
+ * <li>Element containing the pylons.</li></ol>
+ * First group is for railway in X direction, second for railway in Y direction, two groups each follow for road, monorail and maglev<p>
+ * <br>Elements for heads are arranged in groups of eight:
+ * <ol><li>X direction, north end, flat</li>
+ * <li>Y direction, north end, flat</li>
+ * <li>X direction, south end, flat</li>
+ * <li>Y direction, south end, flat</li>
+ * <li>X direction, north end, sloped</li>
+ * <li>Y direction, north end, sloped</li>
+ * <li>X direction, south end, sloped</li>
+ * <li>Y direction, south end, sloped</li></ol>
+ * This is repeated 4 times, for rail, road, monorail, maglev</li>
+ * </ul>
+ */
+
+static const PalSpriteID _bridge_sprite_table_2_0[] = {
+ 0x9C3, 0x9C7, 0x9C9, 0x0, 0x9C4, 0x9C8, 0x9CA, 0x0,
+ 0x9C5, 0x9C7, 0x9C9, 0x0, 0x9C6, 0x9C8, 0x9CA, 0x0,
+ 0x10E4, 0x9C7, 0x9C9, 0x0, 0x10E5, 0x9C8, 0x9CA, 0x0,
+ 0x110C, 0x9C7, 0x9C9, 0x0, 0x110D, 0x9C8, 0x9CA, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_2_1[] = {
+ 0x986, 0x988, 0x985, 0x987, 0x98A, 0x98C, 0x989, 0x98B,
+ 0x98E | PALETTE_TO_STRUCT_WHITE, 0x990 | PALETTE_TO_STRUCT_WHITE, 0x98D | PALETTE_TO_STRUCT_WHITE, 0x98F | PALETTE_TO_STRUCT_WHITE, 0x992 | PALETTE_TO_STRUCT_WHITE, 0x994 | PALETTE_TO_STRUCT_WHITE, 0x991 | PALETTE_TO_STRUCT_WHITE, 0x993 | PALETTE_TO_STRUCT_WHITE,
+ 0x10E7 | PALETTE_TO_STRUCT_WHITE, 0x10E9 | PALETTE_TO_STRUCT_WHITE, 0x10E6 | PALETTE_TO_STRUCT_WHITE, 0x10E8 | PALETTE_TO_STRUCT_WHITE, 0x10EB | PALETTE_TO_STRUCT_WHITE, 0x10ED | PALETTE_TO_STRUCT_WHITE, 0x10EA | PALETTE_TO_STRUCT_WHITE, 0x10EC | PALETTE_TO_STRUCT_WHITE,
+ 0x110F | PALETTE_TO_STRUCT_WHITE, 0x1111 | PALETTE_TO_STRUCT_WHITE, 0x110E | PALETTE_TO_STRUCT_WHITE, 0x1110 | PALETTE_TO_STRUCT_WHITE, 0x1113 | PALETTE_TO_STRUCT_WHITE, 0x1115 | PALETTE_TO_STRUCT_WHITE, 0x1112 | PALETTE_TO_STRUCT_WHITE, 0x1114 | PALETTE_TO_STRUCT_WHITE,
+};
+
+static const PalSpriteID _bridge_sprite_table_4_0[] = {
+ 0x9A9, 0x99F, 0x9B1, 0x0, 0x9A5, 0x997, 0x9AD, 0x0,
+ 0x99D, 0x99F, 0x9B1, 0x0, 0x995, 0x997, 0x9AD, 0x0,
+ 0x10F2, 0x99F, 0x9B1, 0x0, 0x10EE, 0x997, 0x9AD, 0x0,
+ 0x111A, 0x99F, 0x9B1, 0x0, 0x1116, 0x997, 0x9AD, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_4_1[] = {
+ 0x9AA, 0x9A0, 0x9B2, 0x0, 0x9A6, 0x998, 0x9AE, 0x0,
+ 0x99E, 0x9A0, 0x9B2, 0x0, 0x996, 0x998, 0x9AE, 0x0,
+ 0x10F3, 0x9A0, 0x9B2, 0x0, 0x10EF, 0x998, 0x9AE, 0x0,
+ 0x111B, 0x9A0, 0x9B2, 0x0, 0x1117, 0x998, 0x9AE, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_4_2[] = {
+ 0x9AC, 0x9A4, 0x9B4, 0x0, 0x9A8, 0x99C, 0x9B0, 0x0,
+ 0x9A2, 0x9A4, 0x9B4, 0x0, 0x99A, 0x99C, 0x9B0, 0x0,
+ 0x10F5, 0x9A4, 0x9B4, 0x0, 0x10F1, 0x99C, 0x9B0, 0x0,
+ 0x111D, 0x9A4, 0x9B4, 0x0, 0x1119, 0x99C, 0x9B0, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_4_3[] = {
+ 0x9AB, 0x9A3, 0x9B3, 0x0, 0x9A7, 0x99B, 0x9AF, 0x0,
+ 0x9A1, 0x9A3, 0x9B3, 0x0, 0x999, 0x99B, 0x9AF, 0x0,
+ 0x10F4, 0x9A3, 0x9B3, 0x0, 0x10F0, 0x99B, 0x9AF, 0x0,
+ 0x111C, 0x9A3, 0x9B3, 0x0, 0x1118, 0x99B, 0x9AF, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_4_4[] = {
+ 0x9B6, 0x9BA, 0x9BC, 0x0, 0x9B5, 0x9B9, 0x9BB, 0x0,
+ 0x9B8, 0x9BA, 0x9BC, 0x0, 0x9B7, 0x9B9, 0x9BB, 0x0,
+ 0x10F7, 0x9BA, 0x9BC, 0x0, 0x10F6, 0x9B9, 0x9BB, 0x0,
+ 0x111F, 0x9BA, 0x9BC, 0x0, 0x111E, 0x9B9, 0x9BB, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_4_5[] = {
+ 0x9BD, 0x9C1, 0x0, 0x0, 0x9BE, 0x9C2, 0x0, 0x0,
+ 0x9BF, 0x9C1, 0x0, 0x0, 0x9C0, 0x9C2, 0x0, 0x0,
+ 0x10F8, 0x9C1, 0x0, 0x0, 0x10F9, 0x9C2, 0x0, 0x0,
+ 0x1120, 0x9C1, 0x0, 0x0, 0x1121, 0x9C2, 0x0, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_4_6[] = {
+ 0x986, 0x988, 0x985, 0x987, 0x98A, 0x98C, 0x989, 0x98B,
+ 0x98E, 0x990, 0x98D, 0x98F, 0x992, 0x994, 0x991, 0x993,
+ 0x10E7, 0x10E9, 0x10E6, 0x10E8, 0x10EB, 0x10ED, 0x10EA, 0x10EC,
+ 0x110F, 0x1111, 0x110E, 0x1110, 0x1113, 0x1115, 0x1112, 0x1114,
+};
+
+static const PalSpriteID _bridge_sprite_table_5_0[] = {
+ 0x9A9 | PALETTE_TO_STRUCT_YELLOW, 0x99F | PALETTE_TO_STRUCT_YELLOW, 0x9B1 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x9A5 | PALETTE_TO_STRUCT_YELLOW, 0x997 | PALETTE_TO_STRUCT_YELLOW, 0x9AD | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x99D | PALETTE_TO_STRUCT_YELLOW, 0x99F | PALETTE_TO_STRUCT_YELLOW, 0x9B1 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x995 | PALETTE_TO_STRUCT_YELLOW, 0x997 | PALETTE_TO_STRUCT_YELLOW, 0x9AD | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x10F2 | PALETTE_TO_STRUCT_YELLOW, 0x99F | PALETTE_TO_STRUCT_YELLOW, 0x9B1 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x10EE | PALETTE_TO_STRUCT_YELLOW, 0x997 | PALETTE_TO_STRUCT_YELLOW, 0x9AD | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x111A | PALETTE_TO_STRUCT_YELLOW, 0x99F | PALETTE_TO_STRUCT_YELLOW, 0x9B1 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x1116 | PALETTE_TO_STRUCT_YELLOW, 0x997 | PALETTE_TO_STRUCT_YELLOW, 0x9AD | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ SPR_PILLARS_BASE + 2
+};
+
+static const PalSpriteID _bridge_sprite_table_5_1[] = {
+ 0x9AA | PALETTE_TO_STRUCT_YELLOW, 0x9A0 | PALETTE_TO_STRUCT_YELLOW, 0x9B2 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x9A6 | PALETTE_TO_STRUCT_YELLOW, 0x998 | PALETTE_TO_STRUCT_YELLOW, 0x9AE | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x99E | PALETTE_TO_STRUCT_YELLOW, 0x9A0 | PALETTE_TO_STRUCT_YELLOW, 0x9B2 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x996 | PALETTE_TO_STRUCT_YELLOW, 0x998 | PALETTE_TO_STRUCT_YELLOW, 0x9AE | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x10F3 | PALETTE_TO_STRUCT_YELLOW, 0x9A0 | PALETTE_TO_STRUCT_YELLOW, 0x9B2 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x10EF | PALETTE_TO_STRUCT_YELLOW, 0x998 | PALETTE_TO_STRUCT_YELLOW, 0x9AE | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x111B | PALETTE_TO_STRUCT_YELLOW, 0x9A0 | PALETTE_TO_STRUCT_YELLOW, 0x9B2 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x1117 | PALETTE_TO_STRUCT_YELLOW, 0x998 | PALETTE_TO_STRUCT_YELLOW, 0x9AE | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ SPR_PILLARS_BASE + 3
+};
+
+static const PalSpriteID _bridge_sprite_table_5_2[] = {
+ 0x9AC | PALETTE_TO_STRUCT_YELLOW, 0x9A4 | PALETTE_TO_STRUCT_YELLOW, 0x9B4 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x9A8 | PALETTE_TO_STRUCT_YELLOW, 0x99C | PALETTE_TO_STRUCT_YELLOW, 0x9B0 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x9A2 | PALETTE_TO_STRUCT_YELLOW, 0x9A4 | PALETTE_TO_STRUCT_YELLOW, 0x9B4 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x99A | PALETTE_TO_STRUCT_YELLOW, 0x99C | PALETTE_TO_STRUCT_YELLOW, 0x9B0 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x10F5 | PALETTE_TO_STRUCT_YELLOW, 0x9A4 | PALETTE_TO_STRUCT_YELLOW, 0x9B4 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x10F1 | PALETTE_TO_STRUCT_YELLOW, 0x99C | PALETTE_TO_STRUCT_YELLOW, 0x9B0 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x111D | PALETTE_TO_STRUCT_YELLOW, 0x9A4 | PALETTE_TO_STRUCT_YELLOW, 0x9B4 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x1119 | PALETTE_TO_STRUCT_YELLOW, 0x99C | PALETTE_TO_STRUCT_YELLOW, 0x9B0 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ SPR_PILLARS_BASE + 3
+};
+
+static const PalSpriteID _bridge_sprite_table_5_3[] = {
+ 0x9AB | PALETTE_TO_STRUCT_YELLOW, 0x9A3 | PALETTE_TO_STRUCT_YELLOW, 0x9B3 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x9A7 | PALETTE_TO_STRUCT_YELLOW, 0x99B | PALETTE_TO_STRUCT_YELLOW, 0x9AF | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x9A1 | PALETTE_TO_STRUCT_YELLOW, 0x9A3 | PALETTE_TO_STRUCT_YELLOW, 0x9B3 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x999 | PALETTE_TO_STRUCT_YELLOW, 0x99B | PALETTE_TO_STRUCT_YELLOW, 0x9AF | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x10F4 | PALETTE_TO_STRUCT_YELLOW, 0x9A3 | PALETTE_TO_STRUCT_YELLOW, 0x9B3 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x10F0 | PALETTE_TO_STRUCT_YELLOW, 0x99B | PALETTE_TO_STRUCT_YELLOW, 0x9AF | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x111C | PALETTE_TO_STRUCT_YELLOW, 0x9A3 | PALETTE_TO_STRUCT_YELLOW, 0x9B3 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x1118 | PALETTE_TO_STRUCT_YELLOW, 0x99B | PALETTE_TO_STRUCT_YELLOW, 0x9AF | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ SPR_PILLARS_BASE + 2
+};
+
+static const PalSpriteID _bridge_sprite_table_5_4[] = {
+ 0x9B6 | PALETTE_TO_STRUCT_YELLOW, 0x9BA | PALETTE_TO_STRUCT_YELLOW, 0x9BC | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x9B5 | PALETTE_TO_STRUCT_YELLOW, 0x9B9 | PALETTE_TO_STRUCT_YELLOW, 0x9BB | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x9B8 | PALETTE_TO_STRUCT_YELLOW, 0x9BA | PALETTE_TO_STRUCT_YELLOW, 0x9BC | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x9B7 | PALETTE_TO_STRUCT_YELLOW, 0x9B9 | PALETTE_TO_STRUCT_YELLOW, 0x9BB | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x10F7 | PALETTE_TO_STRUCT_YELLOW, 0x9BA | PALETTE_TO_STRUCT_YELLOW, 0x9BC | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x10F6 | PALETTE_TO_STRUCT_YELLOW, 0x9B9 | PALETTE_TO_STRUCT_YELLOW, 0x9BB | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0x111F | PALETTE_TO_STRUCT_YELLOW, 0x9BA | PALETTE_TO_STRUCT_YELLOW, 0x9BC | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x111E | PALETTE_TO_STRUCT_YELLOW, 0x9B9 | PALETTE_TO_STRUCT_YELLOW, 0x9BB | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ SPR_PILLARS_BASE + 5, 0x0, 0x0, 0x0, SPR_PILLARS_BASE + 4
+};
+
+static const PalSpriteID _bridge_sprite_table_5_5[] = {
+ 0x9BD | PALETTE_TO_STRUCT_YELLOW, 0x9C1 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0, 0x9BE | PALETTE_TO_STRUCT_YELLOW, 0x9C2 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0,
+ 0x9BF | PALETTE_TO_STRUCT_YELLOW, 0x9C1 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0, 0x9C0 | PALETTE_TO_STRUCT_YELLOW, 0x9C2 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0,
+ 0x10F8 | PALETTE_TO_STRUCT_YELLOW, 0x9C1 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0, 0x10F9 | PALETTE_TO_STRUCT_YELLOW, 0x9C2 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0,
+ 0x1120 | PALETTE_TO_STRUCT_YELLOW, 0x9C1 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0, 0x1121 | PALETTE_TO_STRUCT_YELLOW, 0x9C2 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0,
+ 0x0, SPR_PILLARS_BASE + 2
+};
+
+static const PalSpriteID _bridge_sprite_table_5_6[] = {
+ 0x986, 0x988, 0x985, 0x987, 0x98A, 0x98C, 0x989, 0x98B,
+ 0x98E | PALETTE_TO_STRUCT_YELLOW, 0x990 | PALETTE_TO_STRUCT_YELLOW, 0x98D | PALETTE_TO_STRUCT_YELLOW, 0x98F | PALETTE_TO_STRUCT_YELLOW, 0x992 | PALETTE_TO_STRUCT_YELLOW, 0x994 | PALETTE_TO_STRUCT_YELLOW, 0x991 | PALETTE_TO_STRUCT_YELLOW, 0x993 | PALETTE_TO_STRUCT_YELLOW,
+ 0x10E7 | PALETTE_TO_STRUCT_YELLOW, 0x10E9 | PALETTE_TO_STRUCT_YELLOW, 0x10E6 | PALETTE_TO_STRUCT_YELLOW, 0x10E8 | PALETTE_TO_STRUCT_YELLOW, 0x10EB | PALETTE_TO_STRUCT_YELLOW, 0x10ED | PALETTE_TO_STRUCT_YELLOW, 0x10EA | PALETTE_TO_STRUCT_YELLOW, 0x10EC | PALETTE_TO_STRUCT_YELLOW,
+ 0x110F | PALETTE_TO_STRUCT_YELLOW, 0x1111 | PALETTE_TO_STRUCT_YELLOW, 0x110E | PALETTE_TO_STRUCT_YELLOW, 0x1110 | PALETTE_TO_STRUCT_YELLOW, 0x1113 | PALETTE_TO_STRUCT_YELLOW, 0x1115 | PALETTE_TO_STRUCT_YELLOW, 0x1112 | PALETTE_TO_STRUCT_YELLOW, 0x1114 | PALETTE_TO_STRUCT_YELLOW,
+ 0x0, SPR_PILLARS_BASE + 2,
+};
+
+static const PalSpriteID _bridge_sprite_table_3_0[] = {
+ 0x9A9 | PALETTE_TO_STRUCT_CONCRETE, 0x99F | PALETTE_TO_STRUCT_CONCRETE, 0x9B1 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x9A5 | PALETTE_TO_STRUCT_CONCRETE, 0x997 | PALETTE_TO_STRUCT_CONCRETE, 0x9AD | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x99D | PALETTE_TO_STRUCT_CONCRETE, 0x99F | PALETTE_TO_STRUCT_CONCRETE, 0x9B1 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x995 | PALETTE_TO_STRUCT_CONCRETE, 0x997 | PALETTE_TO_STRUCT_CONCRETE, 0x9AD | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x10F2 | PALETTE_TO_STRUCT_CONCRETE, 0x99F | PALETTE_TO_STRUCT_CONCRETE, 0x9B1 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x10EE | PALETTE_TO_STRUCT_CONCRETE, 0x997 | PALETTE_TO_STRUCT_CONCRETE, 0x9AD | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x111A | PALETTE_TO_STRUCT_CONCRETE, 0x99F | PALETTE_TO_STRUCT_CONCRETE, 0x9B1 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x1116 | PALETTE_TO_STRUCT_CONCRETE, 0x997 | PALETTE_TO_STRUCT_CONCRETE, 0x9AD | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_3_1[] = {
+ 0x9AA | PALETTE_TO_STRUCT_CONCRETE, 0x9A0 | PALETTE_TO_STRUCT_CONCRETE, 0x9B2 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x9A6 | PALETTE_TO_STRUCT_CONCRETE, 0x998 | PALETTE_TO_STRUCT_CONCRETE, 0x9AE | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x99E | PALETTE_TO_STRUCT_CONCRETE, 0x9A0 | PALETTE_TO_STRUCT_CONCRETE, 0x9B2 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x996 | PALETTE_TO_STRUCT_CONCRETE, 0x998 | PALETTE_TO_STRUCT_CONCRETE, 0x9AE | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x10F3 | PALETTE_TO_STRUCT_CONCRETE, 0x9A0 | PALETTE_TO_STRUCT_CONCRETE, 0x9B2 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x10EF | PALETTE_TO_STRUCT_CONCRETE, 0x998 | PALETTE_TO_STRUCT_CONCRETE, 0x9AE | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x111B | PALETTE_TO_STRUCT_CONCRETE, 0x9A0 | PALETTE_TO_STRUCT_CONCRETE, 0x9B2 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x1117 | PALETTE_TO_STRUCT_CONCRETE, 0x998 | PALETTE_TO_STRUCT_CONCRETE, 0x9AE | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_3_2[] = {
+ 0x9AC | PALETTE_TO_STRUCT_CONCRETE, 0x9A4 | PALETTE_TO_STRUCT_CONCRETE, 0x9B4 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x9A8 | PALETTE_TO_STRUCT_CONCRETE, 0x99C | PALETTE_TO_STRUCT_CONCRETE, 0x9B0 | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x9A2 | PALETTE_TO_STRUCT_CONCRETE, 0x9A4 | PALETTE_TO_STRUCT_CONCRETE, 0x9B4 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x99A | PALETTE_TO_STRUCT_CONCRETE, 0x99C | PALETTE_TO_STRUCT_CONCRETE, 0x9B0 | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x10F5 | PALETTE_TO_STRUCT_CONCRETE, 0x9A4 | PALETTE_TO_STRUCT_CONCRETE, 0x9B4 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x10F1 | PALETTE_TO_STRUCT_CONCRETE, 0x99C | PALETTE_TO_STRUCT_CONCRETE, 0x9B0 | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x111D | PALETTE_TO_STRUCT_CONCRETE, 0x9A4 | PALETTE_TO_STRUCT_CONCRETE, 0x9B4 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x1119 | PALETTE_TO_STRUCT_CONCRETE, 0x99C | PALETTE_TO_STRUCT_CONCRETE, 0x9B0 | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_3_3[] = {
+ 0x9AB | PALETTE_TO_STRUCT_CONCRETE, 0x9A3 | PALETTE_TO_STRUCT_CONCRETE, 0x9B3 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x9A7 | PALETTE_TO_STRUCT_CONCRETE, 0x99B | PALETTE_TO_STRUCT_CONCRETE, 0x9AF | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x9A1 | PALETTE_TO_STRUCT_CONCRETE, 0x9A3 | PALETTE_TO_STRUCT_CONCRETE, 0x9B3 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x999 | PALETTE_TO_STRUCT_CONCRETE, 0x99B | PALETTE_TO_STRUCT_CONCRETE, 0x9AF | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x10F4 | PALETTE_TO_STRUCT_CONCRETE, 0x9A3 | PALETTE_TO_STRUCT_CONCRETE, 0x9B3 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x10F0 | PALETTE_TO_STRUCT_CONCRETE, 0x99B | PALETTE_TO_STRUCT_CONCRETE, 0x9AF | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x111C | PALETTE_TO_STRUCT_CONCRETE, 0x9A3 | PALETTE_TO_STRUCT_CONCRETE, 0x9B3 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x1118 | PALETTE_TO_STRUCT_CONCRETE, 0x99B | PALETTE_TO_STRUCT_CONCRETE, 0x9AF | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_3_4[] = {
+ 0x9B6 | PALETTE_TO_STRUCT_CONCRETE, 0x9BA | PALETTE_TO_STRUCT_CONCRETE, 0x9BC | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x9B5 | PALETTE_TO_STRUCT_CONCRETE, 0x9B9 | PALETTE_TO_STRUCT_CONCRETE, 0x9BB | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x9B8 | PALETTE_TO_STRUCT_CONCRETE, 0x9BA | PALETTE_TO_STRUCT_CONCRETE, 0x9BC | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x9B7 | PALETTE_TO_STRUCT_CONCRETE, 0x9B9 | PALETTE_TO_STRUCT_CONCRETE, 0x9BB | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x10F7 | PALETTE_TO_STRUCT_CONCRETE, 0x9BA | PALETTE_TO_STRUCT_CONCRETE, 0x9BC | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x10F6 | PALETTE_TO_STRUCT_CONCRETE, 0x9B9 | PALETTE_TO_STRUCT_CONCRETE, 0x9BB | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+ 0x111F | PALETTE_TO_STRUCT_CONCRETE, 0x9BA | PALETTE_TO_STRUCT_CONCRETE, 0x9BC | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x111E | PALETTE_TO_STRUCT_CONCRETE, 0x9B9 | PALETTE_TO_STRUCT_CONCRETE, 0x9BB | PALETTE_TO_STRUCT_CONCRETE, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_3_5[] = {
+ 0x9BD | PALETTE_TO_STRUCT_CONCRETE, 0x9C1 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x0, 0x9BE | PALETTE_TO_STRUCT_CONCRETE, 0x9C2 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x0,
+ 0x9BF | PALETTE_TO_STRUCT_CONCRETE, 0x9C1 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x0, 0x9C0 | PALETTE_TO_STRUCT_CONCRETE, 0x9C2 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x0,
+ 0x10F8 | PALETTE_TO_STRUCT_CONCRETE, 0x9C1 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x0, 0x10F9 | PALETTE_TO_STRUCT_CONCRETE, 0x9C2 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x0,
+ 0x1120 | PALETTE_TO_STRUCT_CONCRETE, 0x9C1 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x0, 0x1121 | PALETTE_TO_STRUCT_CONCRETE, 0x9C2 | PALETTE_TO_STRUCT_CONCRETE, 0x0, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_3_6[] = {
+ 0x986, 0x988, 0x985, 0x987, 0x98A, 0x98C, 0x989, 0x98B,
+ 0x98E | PALETTE_TO_STRUCT_CONCRETE, 0x990 | PALETTE_TO_STRUCT_CONCRETE, 0x98D | PALETTE_TO_STRUCT_CONCRETE, 0x98F | PALETTE_TO_STRUCT_CONCRETE, 0x992 | PALETTE_TO_STRUCT_CONCRETE, 0x994 | PALETTE_TO_STRUCT_CONCRETE, 0x991 | PALETTE_TO_STRUCT_CONCRETE, 0x993 | PALETTE_TO_STRUCT_CONCRETE,
+ 0x10E7 | PALETTE_TO_STRUCT_CONCRETE, 0x10E9 | PALETTE_TO_STRUCT_CONCRETE, 0x10E6 | PALETTE_TO_STRUCT_CONCRETE, 0x10E8 | PALETTE_TO_STRUCT_CONCRETE, 0x10EB | PALETTE_TO_STRUCT_CONCRETE, 0x10ED | PALETTE_TO_STRUCT_CONCRETE, 0x10EA | PALETTE_TO_STRUCT_CONCRETE, 0x10EC | PALETTE_TO_STRUCT_CONCRETE,
+ 0x110F | PALETTE_TO_STRUCT_CONCRETE, 0x1111 | PALETTE_TO_STRUCT_CONCRETE, 0x110E | PALETTE_TO_STRUCT_CONCRETE, 0x1110 | PALETTE_TO_STRUCT_CONCRETE, 0x1113 | PALETTE_TO_STRUCT_CONCRETE, 0x1115 | PALETTE_TO_STRUCT_CONCRETE, 0x1112 | PALETTE_TO_STRUCT_CONCRETE, 0x1114 | PALETTE_TO_STRUCT_CONCRETE,
+ 0x0, SPR_PILLARS_BASE + 2,
+};
+
+static const PalSpriteID _bridge_sprite_table_1_1[] = {
+ 0x986, 0x988, 0x985, 0x987, 0x98A, 0x98C, 0x989, 0x98B,
+ 0x98E | PALETTE_TO_STRUCT_RED, 0x990 | PALETTE_TO_STRUCT_RED, 0x98D | PALETTE_TO_STRUCT_RED, 0x98F | PALETTE_TO_STRUCT_RED, 0x992 | PALETTE_TO_STRUCT_RED, 0x994 | PALETTE_TO_STRUCT_RED, 0x991 | PALETTE_TO_STRUCT_RED, 0x993 | PALETTE_TO_STRUCT_RED,
+ 0x10E7 | PALETTE_TO_STRUCT_RED, 0x10E9 | PALETTE_TO_STRUCT_RED, 0x10E6 | PALETTE_TO_STRUCT_RED, 0x10E8 | PALETTE_TO_STRUCT_RED, 0x10EB | PALETTE_TO_STRUCT_RED, 0x10ED | PALETTE_TO_STRUCT_RED, 0x10EA | PALETTE_TO_STRUCT_RED, 0x10EC | PALETTE_TO_STRUCT_RED,
+ 0x110F | PALETTE_TO_STRUCT_RED, 0x1111 | PALETTE_TO_STRUCT_RED, 0x110E | PALETTE_TO_STRUCT_RED, 0x1110 | PALETTE_TO_STRUCT_RED, 0x1113 | PALETTE_TO_STRUCT_RED, 0x1115 | PALETTE_TO_STRUCT_RED, 0x1112 | PALETTE_TO_STRUCT_RED, 0x1114 | PALETTE_TO_STRUCT_RED,
+};
+
+static const PalSpriteID _bridge_sprite_table_6_0[] = {
+ 0x9CD, 0x9D9, 0x0, 0x0, 0x9CE, 0x9DA, 0x0, 0x0,
+ 0x9D3, 0x9D9, 0x0, 0x0, 0x9D4, 0x9DA, 0x0, 0x0,
+ 0x10FC, 0x9D9, 0x0, 0x0, 0x10FD, 0x9DA, 0x0, 0x0,
+ 0x1124, 0x9D9, 0x0, 0x0, 0x1125, 0x9DA, 0x0, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_6_1[] = {
+ 0x9CB, 0x9D7, 0x9DD, 0x0, 0x9D0, 0x9DC, 0x9E0, 0x0,
+ 0x9D1, 0x9D7, 0x9DD, 0x0, 0x9D6, 0x9DC, 0x9E0, 0x0,
+ 0x10FA, 0x9D7, 0x9DD, 0x0, 0x10FF, 0x9DC, 0x9E0, 0x0,
+ 0x1122, 0x9D7, 0x9DD, 0x0, 0x1127, 0x9DC, 0x9E0, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_6_2[] = {
+ 0x9CC, 0x9D8, 0x9DE, 0x0, 0x9CF, 0x9DB, 0x9DF, 0x0,
+ 0x9D2, 0x9D8, 0x9DE, 0x0, 0x9D5, 0x9DB, 0x9DF, 0x0,
+ 0x10FB, 0x9D8, 0x9DE, 0x0, 0x10FE, 0x9DB, 0x9DF, 0x0,
+ 0x1123, 0x9D8, 0x9DE, 0x0, 0x1126, 0x9DB, 0x9DF, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_6_3[] = {
+ 0x986, 0x988, 0x985, 0x987, 0x98A, 0x98C, 0x989, 0x98B,
+ 0x98E, 0x990, 0x98D, 0x98F, 0x992, 0x994, 0x991, 0x993,
+ 0x10E7, 0x10E9, 0x10E6, 0x10E8, 0x10EB, 0x10ED, 0x10EA, 0x10EC,
+ 0x110F, 0x1111, 0x110E, 0x1110, 0x1113, 0x1115, 0x1112, 0x1114,
+};
+
+static const PalSpriteID _bridge_sprite_table_7_0[] = {
+ 0x9CD | PALETTE_TO_STRUCT_BROWN, 0x9D9 | PALETTE_TO_STRUCT_BROWN, 0x0, 0x0, 0x9CE | PALETTE_TO_STRUCT_BROWN, 0x9DA | PALETTE_TO_STRUCT_BROWN, 0x0, 0x0,
+ 0x9D3 | PALETTE_TO_STRUCT_BROWN, 0x9D9 | PALETTE_TO_STRUCT_BROWN, 0x0, 0x0, 0x9D4 | PALETTE_TO_STRUCT_BROWN, 0x9DA | PALETTE_TO_STRUCT_BROWN, 0x0, 0x0,
+ 0x10FC | PALETTE_TO_STRUCT_BROWN, 0x9D9 | PALETTE_TO_STRUCT_BROWN, 0x0, 0x0, 0x10FD | PALETTE_TO_STRUCT_BROWN, 0x9DA | PALETTE_TO_STRUCT_BROWN, 0x0, 0x0,
+ 0x1124 | PALETTE_TO_STRUCT_BROWN, 0x9D9 | PALETTE_TO_STRUCT_BROWN, 0x0, 0x0, 0x1125 | PALETTE_TO_STRUCT_BROWN, 0x9DA | PALETTE_TO_STRUCT_BROWN, 0x0, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_7_1[] = {
+ 0x9CB | PALETTE_TO_STRUCT_BROWN, 0x9D7 | PALETTE_TO_STRUCT_BROWN, 0x9DD | PALETTE_TO_STRUCT_BROWN, 0x0, 0x9D0 | PALETTE_TO_STRUCT_BROWN, 0x9DC | PALETTE_TO_STRUCT_BROWN, 0x9E0 | PALETTE_TO_STRUCT_BROWN, 0x0,
+ 0x9D1 | PALETTE_TO_STRUCT_BROWN, 0x9D7 | PALETTE_TO_STRUCT_BROWN, 0x9DD | PALETTE_TO_STRUCT_BROWN, 0x0, 0x9D6 | PALETTE_TO_STRUCT_BROWN, 0x9DC | PALETTE_TO_STRUCT_BROWN, 0x9E0 | PALETTE_TO_STRUCT_BROWN, 0x0,
+ 0x10FA | PALETTE_TO_STRUCT_BROWN, 0x9D7 | PALETTE_TO_STRUCT_BROWN, 0x9DD | PALETTE_TO_STRUCT_BROWN, 0x0, 0x10FF | PALETTE_TO_STRUCT_BROWN, 0x9DC | PALETTE_TO_STRUCT_BROWN, 0x9E0 | PALETTE_TO_STRUCT_BROWN, 0x0,
+ 0x1122 | PALETTE_TO_STRUCT_BROWN, 0x9D7 | PALETTE_TO_STRUCT_BROWN, 0x9DD | PALETTE_TO_STRUCT_BROWN, 0x0, 0x1127 | PALETTE_TO_STRUCT_BROWN, 0x9DC | PALETTE_TO_STRUCT_BROWN, 0x9E0 | PALETTE_TO_STRUCT_BROWN, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_7_2[] = {
+ 0x9CC | PALETTE_TO_STRUCT_BROWN, 0x9D8 | PALETTE_TO_STRUCT_BROWN, 0x9DE | PALETTE_TO_STRUCT_BROWN, 0x0, 0x9CF | PALETTE_TO_STRUCT_BROWN, 0x9DB | PALETTE_TO_STRUCT_BROWN, 0x9DF | PALETTE_TO_STRUCT_BROWN, 0x0,
+ 0x9D2 | PALETTE_TO_STRUCT_BROWN, 0x9D8 | PALETTE_TO_STRUCT_BROWN, 0x9DE | PALETTE_TO_STRUCT_BROWN, 0x0, 0x9D5 | PALETTE_TO_STRUCT_BROWN, 0x9DB | PALETTE_TO_STRUCT_BROWN, 0x9DF | PALETTE_TO_STRUCT_BROWN, 0x0,
+ 0x10FB | PALETTE_TO_STRUCT_BROWN, 0x9D8 | PALETTE_TO_STRUCT_BROWN, 0x9DE | PALETTE_TO_STRUCT_BROWN, 0x0, 0x10FE | PALETTE_TO_STRUCT_BROWN, 0x9DB | PALETTE_TO_STRUCT_BROWN, 0x9DF | PALETTE_TO_STRUCT_BROWN, 0x0,
+ 0x1123 | PALETTE_TO_STRUCT_BROWN, 0x9D8 | PALETTE_TO_STRUCT_BROWN, 0x9DE | PALETTE_TO_STRUCT_BROWN, 0x0, 0x1126 | PALETTE_TO_STRUCT_BROWN, 0x9DB | PALETTE_TO_STRUCT_BROWN, 0x9DF | PALETTE_TO_STRUCT_BROWN, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_7_3[] = {
+ 0x986, 0x988, 0x985, 0x987, 0x98A, 0x98C, 0x989, 0x98B,
+ 0x98E | PALETTE_TO_STRUCT_BROWN, 0x990 | PALETTE_TO_STRUCT_BROWN, 0x98D | PALETTE_TO_STRUCT_BROWN, 0x98F | PALETTE_TO_STRUCT_BROWN, 0x992 | PALETTE_TO_STRUCT_BROWN, 0x994 | PALETTE_TO_STRUCT_BROWN, 0x991 | PALETTE_TO_STRUCT_BROWN, 0x993 | PALETTE_TO_STRUCT_BROWN,
+ 0x10E7 | PALETTE_TO_STRUCT_BROWN, 0x10E9 | PALETTE_TO_STRUCT_BROWN, 0x10E6 | PALETTE_TO_STRUCT_BROWN, 0x10E8 | PALETTE_TO_STRUCT_BROWN, 0x10EB | PALETTE_TO_STRUCT_BROWN, 0x10ED | PALETTE_TO_STRUCT_BROWN, 0x10EA | PALETTE_TO_STRUCT_BROWN, 0x10EC | PALETTE_TO_STRUCT_BROWN,
+ 0x110F | PALETTE_TO_STRUCT_BROWN, 0x1111 | PALETTE_TO_STRUCT_BROWN, 0x110E | PALETTE_TO_STRUCT_BROWN, 0x1110 | PALETTE_TO_STRUCT_BROWN, 0x1113 | PALETTE_TO_STRUCT_BROWN, 0x1115 | PALETTE_TO_STRUCT_BROWN, 0x1112 | PALETTE_TO_STRUCT_BROWN, 0x1114 | PALETTE_TO_STRUCT_BROWN,
+};
+
+static const PalSpriteID _bridge_sprite_table_8_0[] = {
+ 0x9CD | PALETTE_TO_STRUCT_RED, 0x9D9 | PALETTE_TO_STRUCT_RED, 0x0, 0x0, 0x9CE | PALETTE_TO_STRUCT_RED, 0x9DA | PALETTE_TO_STRUCT_RED, 0x0, 0x0,
+ 0x9D3 | PALETTE_TO_STRUCT_RED, 0x9D9 | PALETTE_TO_STRUCT_RED, 0x0, 0x0, 0x9D4 | PALETTE_TO_STRUCT_RED, 0x9DA | PALETTE_TO_STRUCT_RED, 0x0, 0x0,
+ 0x10FC | PALETTE_TO_STRUCT_RED, 0x9D9 | PALETTE_TO_STRUCT_RED, 0x0, 0x0, 0x10FD | PALETTE_TO_STRUCT_RED, 0x9DA | PALETTE_TO_STRUCT_RED, 0x0, 0x0,
+ 0x1124 | PALETTE_TO_STRUCT_RED, 0x9D9 | PALETTE_TO_STRUCT_RED, 0x0, 0x0, 0x1125 | PALETTE_TO_STRUCT_RED, 0x9DA | PALETTE_TO_STRUCT_RED, 0x0, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_8_1[] = {
+ 0x9CB | PALETTE_TO_STRUCT_RED, 0x9D7 | PALETTE_TO_STRUCT_RED, 0x9DD | PALETTE_TO_STRUCT_RED, 0x0, 0x9D0 | PALETTE_TO_STRUCT_RED, 0x9DC | PALETTE_TO_STRUCT_RED, 0x9E0 | PALETTE_TO_STRUCT_RED, 0x0,
+ 0x9D1 | PALETTE_TO_STRUCT_RED, 0x9D7 | PALETTE_TO_STRUCT_RED, 0x9DD | PALETTE_TO_STRUCT_RED, 0x0, 0x9D6 | PALETTE_TO_STRUCT_RED, 0x9DC | PALETTE_TO_STRUCT_RED, 0x9E0 | PALETTE_TO_STRUCT_RED, 0x0,
+ 0x10FA | PALETTE_TO_STRUCT_RED, 0x9D7 | PALETTE_TO_STRUCT_RED, 0x9DD | PALETTE_TO_STRUCT_RED, 0x0, 0x10FF | PALETTE_TO_STRUCT_RED, 0x9DC | PALETTE_TO_STRUCT_RED, 0x9E0 | PALETTE_TO_STRUCT_RED, 0x0,
+ 0x1122 | PALETTE_TO_STRUCT_RED, 0x9D7 | PALETTE_TO_STRUCT_RED, 0x9DD | PALETTE_TO_STRUCT_RED, 0x0, 0x1127 | PALETTE_TO_STRUCT_RED, 0x9DC | PALETTE_TO_STRUCT_RED, 0x9E0 | PALETTE_TO_STRUCT_RED, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_8_2[] = {
+ 0x9CC | PALETTE_TO_STRUCT_RED, 0x9D8 | PALETTE_TO_STRUCT_RED, 0x9DE | PALETTE_TO_STRUCT_RED, 0x0, 0x9CF | PALETTE_TO_STRUCT_RED, 0x9DB | PALETTE_TO_STRUCT_RED, 0x9DF | PALETTE_TO_STRUCT_RED, 0x0,
+ 0x9D2 | PALETTE_TO_STRUCT_RED, 0x9D8 | PALETTE_TO_STRUCT_RED, 0x9DE | PALETTE_TO_STRUCT_RED, 0x0, 0x9D5 | PALETTE_TO_STRUCT_RED, 0x9DB | PALETTE_TO_STRUCT_RED, 0x9DF | PALETTE_TO_STRUCT_RED, 0x0,
+ 0x10FB | PALETTE_TO_STRUCT_RED, 0x9D8 | PALETTE_TO_STRUCT_RED, 0x9DE | PALETTE_TO_STRUCT_RED, 0x0, 0x10FE | PALETTE_TO_STRUCT_RED, 0x9DB | PALETTE_TO_STRUCT_RED, 0x9DF | PALETTE_TO_STRUCT_RED, 0x0,
+ 0x1123 | PALETTE_TO_STRUCT_RED, 0x9D8 | PALETTE_TO_STRUCT_RED, 0x9DE | PALETTE_TO_STRUCT_RED, 0x0, 0x1126 | PALETTE_TO_STRUCT_RED, 0x9DB | PALETTE_TO_STRUCT_RED, 0x9DF | PALETTE_TO_STRUCT_RED, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_8_3[] = {
+ 0x986, 0x988, 0x985, 0x987, 0x98A, 0x98C, 0x989, 0x98B,
+ 0x98E | PALETTE_TO_STRUCT_RED, 0x990 | PALETTE_TO_STRUCT_RED, 0x98D | PALETTE_TO_STRUCT_RED, 0x98F | PALETTE_TO_STRUCT_RED, 0x992 | PALETTE_TO_STRUCT_RED, 0x994 | PALETTE_TO_STRUCT_RED, 0x991 | PALETTE_TO_STRUCT_RED, 0x993 | PALETTE_TO_STRUCT_RED,
+ 0x10E7 | PALETTE_TO_STRUCT_RED, 0x10E9 | PALETTE_TO_STRUCT_RED, 0x10E6 | PALETTE_TO_STRUCT_RED, 0x10E8 | PALETTE_TO_STRUCT_RED, 0x10EB | PALETTE_TO_STRUCT_RED, 0x10ED | PALETTE_TO_STRUCT_RED, 0x10EA | PALETTE_TO_STRUCT_RED, 0x10EC | PALETTE_TO_STRUCT_RED,
+ 0x110F | PALETTE_TO_STRUCT_RED, 0x1111 | PALETTE_TO_STRUCT_RED, 0x110E | PALETTE_TO_STRUCT_RED, 0x1110 | PALETTE_TO_STRUCT_RED, 0x1113 | PALETTE_TO_STRUCT_RED, 0x1115 | PALETTE_TO_STRUCT_RED, 0x1112 | PALETTE_TO_STRUCT_RED, 0x1114 | PALETTE_TO_STRUCT_RED,
+};
+
+static const PalSpriteID _bridge_sprite_table_0_0[] = {
+ 0x9F2, 0x9F6, 0x9F8, 0x0, 0x9F1, 0x9F5, 0x9F7, 0x0,
+ 0x9F4, 0x9F6, 0x9F8, 0x0, 0x9F3, 0x9F5, 0x9F7, 0x0,
+ 0x1109, 0x9F6, 0x9F8, 0x0, 0x1108, 0x9F5, 0x9F7, 0x0,
+ 0x1131, 0x9F6, 0x9F8, 0x0, 0x1130, 0x9F5, 0x9F7, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_0_1[] = {
+ 0x9EE, 0x9ED, 0x9F0, 0x9EF, 0x9EA, 0x9E9, 0x9EB, 0x9EC,
+ 0x9E6, 0x9E5, 0x9E8, 0x9E7, 0x9E2, 0x9E1, 0x9E3, 0x9E4,
+ 0x1105, 0x1104, 0x1107, 0x1106, 0x1101, 0x1100, 0x1102, 0x1103,
+ 0x112D, 0x112C, 0x112F, 0x112E, 0x1129, 0x1128, 0x112A, 0x112B,
+};
+
+static const PalSpriteID _bridge_sprite_table_1_0[] = {
+ 0x9BD | PALETTE_TO_STRUCT_RED, 0x9C1 | PALETTE_TO_STRUCT_RED, 0x9C9, 0x0, 0x9BE | PALETTE_TO_STRUCT_RED, 0x9C2 | PALETTE_TO_STRUCT_RED, 0x9CA, 0x0,
+ 0x9BF | PALETTE_TO_STRUCT_RED, 0x9C1 | PALETTE_TO_STRUCT_RED, 0x9C9, 0x0, 0x9C0 | PALETTE_TO_STRUCT_RED, 0x9C2 | PALETTE_TO_STRUCT_RED, 0x9CA, 0x0,
+ 0x10F8 | PALETTE_TO_STRUCT_RED, 0x9C1 | PALETTE_TO_STRUCT_RED, 0x9C9, 0x0, 0x10F9 | PALETTE_TO_STRUCT_RED, 0x9C2 | PALETTE_TO_STRUCT_RED, 0x9CA, 0x0,
+ 0x1120 | PALETTE_TO_STRUCT_RED, 0x9C1 | PALETTE_TO_STRUCT_RED, 0x9C9, 0x0, 0x1121 | PALETTE_TO_STRUCT_RED, 0x9C2 | PALETTE_TO_STRUCT_RED, 0x9CA, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_9_0[] = {
+ 0x9F9, 0x9FD, 0x9C9, 0x0, 0x9FA, 0x9FE, 0x9CA, 0x0,
+ 0x9FB, 0x9FD, 0x9C9, 0x0, 0x9FC, 0x9FE, 0x9CA, 0x0,
+ 0x110A, 0x9FD, 0x9C9, 0x0, 0x110B, 0x9FE, 0x9CA, 0x0,
+ 0x1132, 0x9FD, 0x9C9, 0x0, 0x1133, 0x9FE, 0x9CA, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_10_0[] = {
+ 0xA0B, 0xA01, 0x0, 0x0, 0xA0C, 0xA02, 0x0, 0x0,
+ 0xA11, 0xA01, 0x0, 0x0, 0xA12, 0xA02, 0x0, 0x0,
+ 0xA17, 0xA01, 0x0, 0x0, 0xA18, 0xA02, 0x0, 0x0,
+ 0xA1D, 0xA01, 0x0, 0x0, 0xA1E, 0xA02, 0x0, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_10_1[] = {
+ 0xA09, 0x9FF, 0xA05, 0x0, 0xA0E, 0xA04, 0xA08, 0x0,
+ 0xA0F, 0x9FF, 0xA05, 0x0, 0xA14, 0xA04, 0xA08, 0x0,
+ 0xA15, 0x9FF, 0xA05, 0x0, 0xA1A, 0xA04, 0xA08, 0x0,
+ 0xA1B, 0x9FF, 0xA05, 0x0, 0xA20, 0xA04, 0xA08, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_10_2[] = {
+ 0xA0A, 0xA00, 0xA06, 0x0, 0xA0D, 0xA03, 0xA07, 0x0,
+ 0xA10, 0xA00, 0xA06, 0x0, 0xA13, 0xA03, 0xA07, 0x0,
+ 0xA16, 0xA00, 0xA06, 0x0, 0xA19, 0xA03, 0xA07, 0x0,
+ 0xA1C, 0xA00, 0xA06, 0x0, 0xA1F, 0xA03, 0xA07, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_11_0[] = {
+ 0xA0B | PALETTE_TO_STRUCT_YELLOW, 0xA01 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0, 0xA0C | PALETTE_TO_STRUCT_YELLOW, 0xA02 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0,
+ 0xA11 | PALETTE_TO_STRUCT_YELLOW, 0xA01 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0, 0xA12 | PALETTE_TO_STRUCT_YELLOW, 0xA02 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0,
+ 0xA17 | PALETTE_TO_STRUCT_YELLOW, 0xA01 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0, 0xA18 | PALETTE_TO_STRUCT_YELLOW, 0xA02 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0,
+ 0xA1D | PALETTE_TO_STRUCT_YELLOW, 0xA01 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0, 0xA1E | PALETTE_TO_STRUCT_YELLOW, 0xA02 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_11_1[] = {
+ 0xA09 | PALETTE_TO_STRUCT_YELLOW, 0x9FF | PALETTE_TO_STRUCT_YELLOW, 0xA05 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0xA0E | PALETTE_TO_STRUCT_YELLOW, 0xA04 | PALETTE_TO_STRUCT_YELLOW, 0xA08 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0xA0F | PALETTE_TO_STRUCT_YELLOW, 0x9FF | PALETTE_TO_STRUCT_YELLOW, 0xA05 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0xA14 | PALETTE_TO_STRUCT_YELLOW, 0xA04 | PALETTE_TO_STRUCT_YELLOW, 0xA08 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0xA15 | PALETTE_TO_STRUCT_YELLOW, 0x9FF | PALETTE_TO_STRUCT_YELLOW, 0xA05 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0xA1A | PALETTE_TO_STRUCT_YELLOW, 0xA04 | PALETTE_TO_STRUCT_YELLOW, 0xA08 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0xA1B | PALETTE_TO_STRUCT_YELLOW, 0x9FF | PALETTE_TO_STRUCT_YELLOW, 0xA05 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0xA20 | PALETTE_TO_STRUCT_YELLOW, 0xA04 | PALETTE_TO_STRUCT_YELLOW, 0xA08 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_11_2[] = {
+ 0xA0A | PALETTE_TO_STRUCT_YELLOW, 0xA00 | PALETTE_TO_STRUCT_YELLOW, 0xA06 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0xA0D | PALETTE_TO_STRUCT_YELLOW, 0xA03 | PALETTE_TO_STRUCT_YELLOW, 0xA07 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0xA10 | PALETTE_TO_STRUCT_YELLOW, 0xA00 | PALETTE_TO_STRUCT_YELLOW, 0xA06 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0xA13 | PALETTE_TO_STRUCT_YELLOW, 0xA03 | PALETTE_TO_STRUCT_YELLOW, 0xA07 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0xA16 | PALETTE_TO_STRUCT_YELLOW, 0xA00 | PALETTE_TO_STRUCT_YELLOW, 0xA06 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0xA19 | PALETTE_TO_STRUCT_YELLOW, 0xA03 | PALETTE_TO_STRUCT_YELLOW, 0xA07 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+ 0xA1C | PALETTE_TO_STRUCT_YELLOW, 0xA00 | PALETTE_TO_STRUCT_YELLOW, 0xA06 | PALETTE_TO_STRUCT_YELLOW, 0x0, 0xA1F | PALETTE_TO_STRUCT_YELLOW, 0xA03 | PALETTE_TO_STRUCT_YELLOW, 0xA07 | PALETTE_TO_STRUCT_YELLOW, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_12_0[] = {
+ 0xA0B | PALETTE_TO_STRUCT_GREY, 0xA01 | PALETTE_TO_STRUCT_GREY, 0x0, 0x0, 0xA0C | PALETTE_TO_STRUCT_GREY, 0xA02 | PALETTE_TO_STRUCT_GREY, 0x0, 0x0,
+ 0xA11 | PALETTE_TO_STRUCT_GREY, 0xA01 | PALETTE_TO_STRUCT_GREY, 0x0, 0x0, 0xA12 | PALETTE_TO_STRUCT_GREY, 0xA02 | PALETTE_TO_STRUCT_GREY, 0x0, 0x0,
+ 0xA17 | PALETTE_TO_STRUCT_GREY, 0xA01 | PALETTE_TO_STRUCT_GREY, 0x0, 0x0, 0xA18 | PALETTE_TO_STRUCT_GREY, 0xA02 | PALETTE_TO_STRUCT_GREY, 0x0, 0x0,
+ 0xA1D | PALETTE_TO_STRUCT_GREY, 0xA01 | PALETTE_TO_STRUCT_GREY, 0x0, 0x0, 0xA1E | PALETTE_TO_STRUCT_GREY, 0xA02 | PALETTE_TO_STRUCT_GREY, 0x0, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_12_1[] = {
+ 0xA09 | PALETTE_TO_STRUCT_GREY, 0x9FF | PALETTE_TO_STRUCT_GREY, 0xA05 | PALETTE_TO_STRUCT_GREY, 0x0, 0xA0E | PALETTE_TO_STRUCT_GREY, 0xA04 | PALETTE_TO_STRUCT_GREY, 0xA08 | PALETTE_TO_STRUCT_GREY, 0x0,
+ 0xA0F | PALETTE_TO_STRUCT_GREY, 0x9FF | PALETTE_TO_STRUCT_GREY, 0xA05 | PALETTE_TO_STRUCT_GREY, 0x0, 0xA14 | PALETTE_TO_STRUCT_GREY, 0xA04 | PALETTE_TO_STRUCT_GREY, 0xA08 | PALETTE_TO_STRUCT_GREY, 0x0,
+ 0xA15 | PALETTE_TO_STRUCT_GREY, 0x9FF | PALETTE_TO_STRUCT_GREY, 0xA05 | PALETTE_TO_STRUCT_GREY, 0x0, 0xA1A | PALETTE_TO_STRUCT_GREY, 0xA04 | PALETTE_TO_STRUCT_GREY, 0xA08 | PALETTE_TO_STRUCT_GREY, 0x0,
+ 0xA1B | PALETTE_TO_STRUCT_GREY, 0x9FF | PALETTE_TO_STRUCT_GREY, 0xA05 | PALETTE_TO_STRUCT_GREY, 0x0, 0xA20 | PALETTE_TO_STRUCT_GREY, 0xA04 | PALETTE_TO_STRUCT_GREY, 0xA08 | PALETTE_TO_STRUCT_GREY, 0x0,
+};
+
+static const PalSpriteID _bridge_sprite_table_12_2[] = {
+ 0xA0A | PALETTE_TO_STRUCT_GREY, 0xA00 | PALETTE_TO_STRUCT_GREY, 0xA06 | PALETTE_TO_STRUCT_GREY, 0x0, 0xA0D | PALETTE_TO_STRUCT_GREY, 0xA03 | PALETTE_TO_STRUCT_GREY, 0xA07 | PALETTE_TO_STRUCT_GREY, 0x0,
+ 0xA10 | PALETTE_TO_STRUCT_GREY, 0xA00 | PALETTE_TO_STRUCT_GREY, 0xA06 | PALETTE_TO_STRUCT_GREY, 0x0, 0xA13 | PALETTE_TO_STRUCT_GREY, 0xA03 | PALETTE_TO_STRUCT_GREY, 0xA07 | PALETTE_TO_STRUCT_GREY, 0x0,
+ 0xA16 | PALETTE_TO_STRUCT_GREY, 0xA00 | PALETTE_TO_STRUCT_GREY, 0xA06 | PALETTE_TO_STRUCT_GREY, 0x0, 0xA19 | PALETTE_TO_STRUCT_GREY, 0xA03 | PALETTE_TO_STRUCT_GREY, 0xA07 | PALETTE_TO_STRUCT_GREY, 0x0,
+ 0xA1C | PALETTE_TO_STRUCT_GREY, 0xA00 | PALETTE_TO_STRUCT_GREY, 0xA06 | PALETTE_TO_STRUCT_GREY, 0x0, 0xA1F | PALETTE_TO_STRUCT_GREY, 0xA03 | PALETTE_TO_STRUCT_GREY, 0xA07 | PALETTE_TO_STRUCT_GREY, 0x0,
+};
+
+static const uint32 * const _bridge_sprite_table_2[] = {
+ _bridge_sprite_table_2_0,
+ _bridge_sprite_table_2_0,
+ _bridge_sprite_table_2_0,
+ _bridge_sprite_table_2_0,
+ _bridge_sprite_table_2_0,
+ _bridge_sprite_table_2_0,
+ _bridge_sprite_table_2_1,
+};
+
+static const uint32 * const _bridge_sprite_table_4[] = {
+ _bridge_sprite_table_4_0,
+ _bridge_sprite_table_4_1,
+ _bridge_sprite_table_4_2,
+ _bridge_sprite_table_4_3,
+ _bridge_sprite_table_4_4,
+ _bridge_sprite_table_4_5,
+ _bridge_sprite_table_4_6,
+};
+
+static const uint32 * const _bridge_sprite_table_5[] = {
+ _bridge_sprite_table_5_0,
+ _bridge_sprite_table_5_1,
+ _bridge_sprite_table_5_2,
+ _bridge_sprite_table_5_3,
+ _bridge_sprite_table_5_4,
+ _bridge_sprite_table_5_5,
+ _bridge_sprite_table_5_6,
+};
+
+static const uint32 * const _bridge_sprite_table_3[] = {
+ _bridge_sprite_table_3_0,
+ _bridge_sprite_table_3_1,
+ _bridge_sprite_table_3_2,
+ _bridge_sprite_table_3_3,
+ _bridge_sprite_table_3_4,
+ _bridge_sprite_table_3_5,
+ _bridge_sprite_table_3_6,
+};
+
+static const uint32 * const _bridge_sprite_table_6[] = {
+ _bridge_sprite_table_6_0,
+ _bridge_sprite_table_6_1,
+ _bridge_sprite_table_6_2,
+ _bridge_sprite_table_6_2,
+ _bridge_sprite_table_6_2,
+ _bridge_sprite_table_6_2,
+ _bridge_sprite_table_6_3,
+};
+
+static const uint32 * const _bridge_sprite_table_7[] = {
+ _bridge_sprite_table_7_0,
+ _bridge_sprite_table_7_1,
+ _bridge_sprite_table_7_2,
+ _bridge_sprite_table_7_2,
+ _bridge_sprite_table_7_2,
+ _bridge_sprite_table_7_2,
+ _bridge_sprite_table_7_3,
+};
+
+static const uint32 * const _bridge_sprite_table_8[] = {
+ _bridge_sprite_table_8_0,
+ _bridge_sprite_table_8_1,
+ _bridge_sprite_table_8_2,
+ _bridge_sprite_table_8_2,
+ _bridge_sprite_table_8_2,
+ _bridge_sprite_table_8_2,
+ _bridge_sprite_table_8_3,
+};
+
+static const uint32 * const _bridge_sprite_table_0[] = {
+ _bridge_sprite_table_0_0,
+ _bridge_sprite_table_0_0,
+ _bridge_sprite_table_0_0,
+ _bridge_sprite_table_0_0,
+ _bridge_sprite_table_0_0,
+ _bridge_sprite_table_0_0,
+ _bridge_sprite_table_0_1,
+};
+
+static const uint32 * const _bridge_sprite_table_1[] = {
+ _bridge_sprite_table_1_0,
+ _bridge_sprite_table_1_0,
+ _bridge_sprite_table_1_0,
+ _bridge_sprite_table_1_0,
+ _bridge_sprite_table_1_0,
+ _bridge_sprite_table_1_0,
+ _bridge_sprite_table_1_1,
+};
+
+static const uint32 * const _bridge_sprite_table_9[] = {
+ _bridge_sprite_table_9_0,
+ _bridge_sprite_table_9_0,
+ _bridge_sprite_table_9_0,
+ _bridge_sprite_table_9_0,
+ _bridge_sprite_table_9_0,
+ _bridge_sprite_table_9_0,
+ _bridge_sprite_table_4_6,
+};
+
+static const uint32 * const _bridge_sprite_table_10[] = {
+ _bridge_sprite_table_10_0,
+ _bridge_sprite_table_10_1,
+ _bridge_sprite_table_10_2,
+ _bridge_sprite_table_10_2,
+ _bridge_sprite_table_10_2,
+ _bridge_sprite_table_10_2,
+ _bridge_sprite_table_4_6,
+};
+
+static const uint32 * const _bridge_sprite_table_11[] = {
+ _bridge_sprite_table_11_0,
+ _bridge_sprite_table_11_1,
+ _bridge_sprite_table_11_2,
+ _bridge_sprite_table_11_2,
+ _bridge_sprite_table_11_2,
+ _bridge_sprite_table_11_2,
+ _bridge_sprite_table_5_6,
+};
+
+static const uint32 * const _bridge_sprite_table_12[] = {
+ _bridge_sprite_table_12_0,
+ _bridge_sprite_table_12_1,
+ _bridge_sprite_table_12_2,
+ _bridge_sprite_table_12_2,
+ _bridge_sprite_table_12_2,
+ _bridge_sprite_table_12_2,
+ _bridge_sprite_table_3_6,
+};
+
+static const uint32 * const * const _bridge_sprite_table[MAX_BRIDGES] = {
+ _bridge_sprite_table_0,
+ _bridge_sprite_table_1,
+ _bridge_sprite_table_2,
+ _bridge_sprite_table_3,
+ _bridge_sprite_table_4,
+ _bridge_sprite_table_5,
+ _bridge_sprite_table_6,
+ _bridge_sprite_table_7,
+ _bridge_sprite_table_8,
+ _bridge_sprite_table_9,
+ _bridge_sprite_table_10,
+ _bridge_sprite_table_11,
+ _bridge_sprite_table_12
+};
diff --git a/src/table/build_industry.h b/src/table/build_industry.h
new file mode 100644
index 000000000..c05cbe32d
--- /dev/null
+++ b/src/table/build_industry.h
@@ -0,0 +1,1600 @@
+/* $Id$ */
+
+
+
+#define MK(x,y, m) {{x, y}, m}
+
+#define MKEND {{-0x80, 0}, 0}
+
+static const IndustryTileTable _tile_table_coal_mine_0[] = {
+ MK(1,1, 0),
+ MK(1,2, 2),
+ MK(0,0, 5),
+ MK(1,0, 6),
+ MK(2,0, 3),
+ MK(2,2, 3),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_coal_mine_1[] = {
+ MK(1,1, 0),
+ MK(1,2, 2),
+ MK(2,0, 0),
+ MK(2,1, 2),
+ MK(1,0, 3),
+ MK(0,0, 3),
+ MK(0,1, 4),
+ MK(0,2, 4),
+ MK(2,2, 4),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_coal_mine_2[] = {
+ MK(0,0, 0),
+ MK(0,1, 2),
+ MK(0,2, 5),
+ MK(1,0, 3),
+ MK(1,1, 3),
+ MK(1,2, 6),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_coal_mine_3[] = {
+ MK(0,1, 0),
+ MK(0,2, 2),
+ MK(0,3, 4),
+ MK(1,0, 5),
+ MK(1,1, 0),
+ MK(1,2, 2),
+ MK(1,3, 3),
+ MK(2,0, 6),
+ MK(2,1, 4),
+ MK(2,2, 3),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_coal_mine[] = {
+ _tile_table_coal_mine_0,
+ _tile_table_coal_mine_1,
+ _tile_table_coal_mine_2,
+ _tile_table_coal_mine_3,
+};
+
+static const IndustryTileTable _tile_table_power_station_0[] = {
+ MK(0,0, 7),
+ MK(0,1, 9),
+ MK(1,0, 7),
+ MK(1,1, 8),
+ MK(2,0, 7),
+ MK(2,1, 8),
+ MK(3,0, 10),
+ MK(3,1, 10),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_power_station_1[] = {
+ MK(0,1, 7),
+ MK(0,2, 7),
+ MK(1,0, 8),
+ MK(1,1, 8),
+ MK(1,2, 7),
+ MK(2,0, 9),
+ MK(2,1, 10),
+ MK(2,2, 9),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_power_station_2[] = {
+ MK(0,0, 7),
+ MK(0,1, 7),
+ MK(1,0, 9),
+ MK(1,1, 8),
+ MK(2,0, 10),
+ MK(2,1, 9),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_power_station[] = {
+ _tile_table_power_station_0,
+ _tile_table_power_station_1,
+ _tile_table_power_station_2,
+};
+
+static const IndustryTileTable _tile_table_sawmill_0[] = {
+ MK(1,0, 14),
+ MK(1,1, 12),
+ MK(1,2, 11),
+ MK(2,0, 14),
+ MK(2,1, 13),
+ MK(0,0, 15),
+ MK(0,1, 15),
+ MK(0,2, 12),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_sawmill_1[] = {
+ MK(0,0, 15),
+ MK(0,1, 11),
+ MK(0,2, 14),
+ MK(1,0, 15),
+ MK(1,1, 13),
+ MK(1,2, 12),
+ MK(2,0, 11),
+ MK(2,1, 13),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_sawmill[] = {
+ _tile_table_sawmill_0,
+ _tile_table_sawmill_1,
+};
+
+static const IndustryTileTable _tile_table_forest_0[] = {
+ MK(0,0, 16),
+ MK(0,1, 16),
+ MK(0,2, 16),
+ MK(0,3, 16),
+ MK(1,0, 16),
+ MK(1,1, 16),
+ MK(1,2, 16),
+ MK(1,3, 16),
+ MK(2,0, 16),
+ MK(2,1, 16),
+ MK(2,2, 16),
+ MK(2,3, 16),
+ MK(3,0, 16),
+ MK(3,1, 16),
+ MK(3,2, 16),
+ MK(3,3, 16),
+ MK(1,4, 16),
+ MK(2,4, 16),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_forest_1[] = {
+ MK(0,0, 16),
+ MK(1,0, 16),
+ MK(2,0, 16),
+ MK(3,0, 16),
+ MK(4,0, 16),
+ MK(0,1, 16),
+ MK(1,1, 16),
+ MK(2,1, 16),
+ MK(3,1, 16),
+ MK(4,1, 16),
+ MK(0,2, 16),
+ MK(1,2, 16),
+ MK(2,2, 16),
+ MK(3,2, 16),
+ MK(4,2, 16),
+ MK(0,3, 16),
+ MK(1,3, 16),
+ MK(2,3, 16),
+ MK(3,3, 16),
+ MK(4,3, 16),
+ MK(1,4, 16),
+ MK(2,4, 16),
+ MK(3,4, 16),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_forest[] = {
+ _tile_table_forest_0,
+ _tile_table_forest_1,
+};
+
+static const IndustryTileTable _tile_table_oil_refinery_0[] = {
+ MK(0,0, 20),
+ MK(0,1, 21),
+ MK(0,2, 22),
+ MK(0,3, 21),
+ MK(1,0, 20),
+ MK(1,1, 19),
+ MK(1,2, 22),
+ MK(1,3, 20),
+ MK(2,1, 18),
+ MK(2,2, 18),
+ MK(2,3, 18),
+ MK(3,2, 18),
+ MK(3,3, 18),
+ MK(2,0, 23),
+ MK(3,1, 23),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_oil_refinery_1[] = {
+ MK(0,0, 18),
+ MK(0,1, 18),
+ MK(0,2, 21),
+ MK(0,3, 22),
+ MK(0,4, 20),
+ MK(1,0, 18),
+ MK(1,1, 18),
+ MK(1,2, 19),
+ MK(1,3, 20),
+ MK(2,0, 18),
+ MK(2,1, 18),
+ MK(2,2, 19),
+ MK(2,3, 22),
+ MK(1,4, 23),
+ MK(2,4, 23),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_oil_refinery[] = {
+ _tile_table_oil_refinery_0,
+ _tile_table_oil_refinery_1,
+};
+
+static const IndustryTileTable _tile_table_oil_rig_0[] = {
+ MK(0,0, 24),
+ MK(0,1, 24),
+ MK(0,2, 25),
+ MK(1,0, 26),
+ MK(1,1, 27),
+ MK(1,2, 28),
+ MK(-4,-5, 255),
+ MK(-4,-4, 255),
+ MK(-4,-3, 255),
+ MK(-4,-2, 255),
+ MK(-4,-1, 255),
+ MK(-4,0, 255),
+ MK(-4,1, 255),
+ MK(-4,2, 255),
+ MK(-4,3, 255),
+ MK(-4,4, 255),
+ MK(-4,5, 255),
+ MK(-3,5, 255),
+ MK(-2,5, 255),
+ MK(-1,5, 255),
+ MK(0,6, 255),
+ MK(1,6, 255),
+ MK(2,6, 255),
+ MK(3,6, 255),
+ MK(4,6, 255),
+ MK(5,6, 255),
+ MK(5,5, 255),
+ MK(5,4, 255),
+ MK(5,3, 255),
+ MK(5,2, 255),
+ MK(5,1, 255),
+ MK(5,0, 255),
+ MK(5,-1, 255),
+ MK(5,-2, 255),
+ MK(5,-3, 255),
+ MK(5,-4, 255),
+ MK(4,-4, 255),
+ MK(3,-4, 255),
+ MK(2,-4, 255),
+ MK(1,-4, 255),
+ MK(0,-4, 255),
+ MK(-1,-5, 255),
+ MK(-2,-5, 255),
+ MK(-3,-5, 255),
+ MK(2,0, 255),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_oil_rig[] = {
+ _tile_table_oil_rig_0,
+};
+
+static const IndustryTileTable _tile_table_factory_0[] = {
+ MK(0,0, 39),
+ MK(0,1, 40),
+ MK(1,0, 41),
+ MK(1,1, 42),
+ MK(0,2, 39),
+ MK(0,3, 40),
+ MK(1,2, 41),
+ MK(1,3, 42),
+ MK(2,1, 39),
+ MK(2,2, 40),
+ MK(3,1, 41),
+ MK(3,2, 42),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_factory_1[] = {
+ MK(0,0, 39),
+ MK(0,1, 40),
+ MK(1,0, 41),
+ MK(1,1, 42),
+ MK(2,0, 39),
+ MK(2,1, 40),
+ MK(3,0, 41),
+ MK(3,1, 42),
+ MK(1,2, 39),
+ MK(1,3, 40),
+ MK(2,2, 41),
+ MK(2,3, 42),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_factory[] = {
+ _tile_table_factory_0,
+ _tile_table_factory_1,
+};
+
+static const IndustryTileTable _tile_table_printing_works_0[] = {
+ MK(0,0, 43),
+ MK(0,1, 44),
+ MK(1,0, 45),
+ MK(1,1, 46),
+ MK(0,2, 43),
+ MK(0,3, 44),
+ MK(1,2, 45),
+ MK(1,3, 46),
+ MK(2,1, 43),
+ MK(2,2, 44),
+ MK(3,1, 45),
+ MK(3,2, 46),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_printing_works_1[] = {
+ MK(0,0, 43),
+ MK(0,1, 44),
+ MK(1,0, 45),
+ MK(1,1, 46),
+ MK(2,0, 43),
+ MK(2,1, 44),
+ MK(3,0, 45),
+ MK(3,1, 46),
+ MK(1,2, 43),
+ MK(1,3, 44),
+ MK(2,2, 45),
+ MK(2,3, 46),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_printing_works[] = {
+ _tile_table_printing_works_0,
+ _tile_table_printing_works_1,
+};
+
+static const IndustryTileTable _tile_table_steel_mill_0[] = {
+ MK(2,1, 52),
+ MK(2,2, 53),
+ MK(3,1, 54),
+ MK(3,2, 55),
+ MK(0,0, 56),
+ MK(1,0, 57),
+ MK(0,1, 56),
+ MK(1,1, 57),
+ MK(0,2, 56),
+ MK(1,2, 57),
+ MK(2,0, 56),
+ MK(3,0, 57),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_steel_mill_1[] = {
+ MK(0,0, 52),
+ MK(0,1, 53),
+ MK(1,0, 54),
+ MK(1,1, 55),
+ MK(2,0, 52),
+ MK(2,1, 53),
+ MK(3,0, 54),
+ MK(3,1, 55),
+ MK(0,2, 56),
+ MK(1,2, 57),
+ MK(2,2, 56),
+ MK(3,2, 57),
+ MK(1,3, 56),
+ MK(2,3, 57),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_steel_mill[] = {
+ _tile_table_steel_mill_0,
+ _tile_table_steel_mill_1,
+};
+
+static const IndustryTileTable _tile_table_farm_0[] = {
+ MK(1,0, 33),
+ MK(1,1, 34),
+ MK(1,2, 36),
+ MK(0,0, 37),
+ MK(0,1, 37),
+ MK(0,2, 36),
+ MK(2,0, 35),
+ MK(2,1, 38),
+ MK(2,2, 38),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_farm_1[] = {
+ MK(1,1, 33),
+ MK(1,2, 34),
+ MK(0,0, 35),
+ MK(0,1, 36),
+ MK(0,2, 36),
+ MK(0,3, 35),
+ MK(1,0, 37),
+ MK(1,3, 38),
+ MK(2,0, 37),
+ MK(2,1, 37),
+ MK(2,2, 38),
+ MK(2,3, 38),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_farm_2[] = {
+ MK(2,0, 33),
+ MK(2,1, 34),
+ MK(0,0, 36),
+ MK(0,1, 36),
+ MK(0,2, 37),
+ MK(0,3, 37),
+ MK(1,0, 35),
+ MK(1,1, 38),
+ MK(1,2, 38),
+ MK(1,3, 37),
+ MK(2,2, 37),
+ MK(2,3, 35),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_farm[] = {
+ _tile_table_farm_0,
+ _tile_table_farm_1,
+ _tile_table_farm_2,
+};
+
+static const IndustryTileTable _tile_table_copper_mine_0[] = {
+ MK(0,0, 47),
+ MK(0,1, 49),
+ MK(0,2, 51),
+ MK(1,0, 47),
+ MK(1,1, 49),
+ MK(1,2, 50),
+ MK(2,0, 51),
+ MK(2,1, 51),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_copper_mine_1[] = {
+ MK(0,0, 50),
+ MK(0,1, 47),
+ MK(0,2, 49),
+ MK(1,0, 47),
+ MK(1,1, 49),
+ MK(1,2, 51),
+ MK(2,0, 51),
+ MK(2,1, 47),
+ MK(2,2, 49),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_copper_mine[] = {
+ _tile_table_copper_mine_0,
+ _tile_table_copper_mine_1,
+};
+
+static const IndustryTileTable _tile_table_oil_well_0[] = {
+ MK(0,0, 29),
+ MK(1,0, 29),
+ MK(2,0, 29),
+ MK(0,1, 29),
+ MK(0,2, 29),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_oil_well_1[] = {
+ MK(0,0, 29),
+ MK(1,0, 29),
+ MK(1,1, 29),
+ MK(2,2, 29),
+ MK(2,3, 29),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_oil_well[] = {
+ _tile_table_oil_well_0,
+ _tile_table_oil_well_1,
+};
+
+static const IndustryTileTable _tile_table_bank_0[] = {
+ MK(0,0, 58),
+ MK(1,0, 59),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_bank[] = {
+ _tile_table_bank_0,
+};
+
+static const IndustryTileTable _tile_table_food_process_0[] = {
+ MK(0,0, 60),
+ MK(1,0, 60),
+ MK(2,0, 60),
+ MK(0,1, 60),
+ MK(1,1, 60),
+ MK(2,1, 60),
+ MK(0,2, 61),
+ MK(1,2, 61),
+ MK(2,2, 63),
+ MK(0,3, 62),
+ MK(1,3, 62),
+ MK(2,3, 63),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_food_process_1[] = {
+ MK(0,0, 61),
+ MK(1,0, 60),
+ MK(2,0, 61),
+ MK(3,0, 61),
+ MK(0,1, 62),
+ MK(1,1, 63),
+ MK(2,1, 63),
+ MK(3,1, 63),
+ MK(0,2, 60),
+ MK(1,2, 60),
+ MK(2,2, 60),
+ MK(3,2, 60),
+ MK(0,3, 62),
+ MK(1,3, 62),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_food_process[] = {
+ _tile_table_food_process_0,
+ _tile_table_food_process_1,
+};
+
+static const IndustryTileTable _tile_table_paper_mill_0[] = {
+ MK(0,0, 64),
+ MK(1,0, 65),
+ MK(2,0, 66),
+ MK(3,0, 67),
+ MK(0,1, 68),
+ MK(1,1, 69),
+ MK(2,1, 67),
+ MK(3,1, 67),
+ MK(0,2, 66),
+ MK(1,2, 71),
+ MK(2,2, 71),
+ MK(3,2, 70),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_paper_mill[] = {
+ _tile_table_paper_mill_0,
+};
+
+static const IndustryTileTable _tile_table_gold_mine_0[] = {
+ MK(0,0, 72),
+ MK(0,1, 73),
+ MK(0,2, 74),
+ MK(0,3, 75),
+ MK(1,0, 76),
+ MK(1,1, 77),
+ MK(1,2, 78),
+ MK(1,3, 79),
+ MK(2,0, 80),
+ MK(2,1, 81),
+ MK(2,2, 82),
+ MK(2,3, 83),
+ MK(3,0, 84),
+ MK(3,1, 85),
+ MK(3,2, 86),
+ MK(3,3, 87),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_gold_mine[] = {
+ _tile_table_gold_mine_0,
+};
+
+static const IndustryTileTable _tile_table_bank2_0[] = {
+ MK(0,0, 89),
+ MK(1,0, 90),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_bank2[] = {
+ _tile_table_bank2_0,
+};
+
+static const IndustryTileTable _tile_table_diamond_mine_0[] = {
+ MK(0,0, 91),
+ MK(0,1, 92),
+ MK(0,2, 93),
+ MK(1,0, 94),
+ MK(1,1, 95),
+ MK(1,2, 96),
+ MK(2,0, 97),
+ MK(2,1, 98),
+ MK(2,2, 99),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_diamond_mine[] = {
+ _tile_table_diamond_mine_0,
+};
+
+static const IndustryTileTable _tile_table_iron_mine_0[] = {
+ MK(0,0, 100),
+ MK(0,1, 101),
+ MK(0,2, 102),
+ MK(0,3, 103),
+ MK(1,0, 104),
+ MK(1,1, 105),
+ MK(1,2, 106),
+ MK(1,3, 107),
+ MK(2,0, 108),
+ MK(2,1, 109),
+ MK(2,2, 110),
+ MK(2,3, 111),
+ MK(3,0, 112),
+ MK(3,1, 113),
+ MK(3,2, 114),
+ MK(3,3, 115),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_iron_mine[] = {
+ _tile_table_iron_mine_0,
+};
+
+static const IndustryTileTable _tile_table_fruit_plantation_0[] = {
+ MK(0,0, 116),
+ MK(0,1, 116),
+ MK(0,2, 116),
+ MK(0,3, 116),
+ MK(1,0, 116),
+ MK(1,1, 116),
+ MK(1,2, 116),
+ MK(1,3, 116),
+ MK(2,0, 116),
+ MK(2,1, 116),
+ MK(2,2, 116),
+ MK(2,3, 116),
+ MK(3,0, 116),
+ MK(3,1, 116),
+ MK(3,2, 116),
+ MK(3,3, 116),
+ MK(4,0, 116),
+ MK(4,1, 116),
+ MK(4,2, 116),
+ MK(4,3, 116),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_fruit_plantation[] = {
+ _tile_table_fruit_plantation_0,
+};
+
+static const IndustryTileTable _tile_table_rubber_plantation_0[] = {
+ MK(0,0, 117),
+ MK(0,1, 117),
+ MK(0,2, 117),
+ MK(0,3, 117),
+ MK(1,0, 117),
+ MK(1,1, 117),
+ MK(1,2, 117),
+ MK(1,3, 117),
+ MK(2,0, 117),
+ MK(2,1, 117),
+ MK(2,2, 117),
+ MK(2,3, 117),
+ MK(3,0, 117),
+ MK(3,1, 117),
+ MK(3,2, 117),
+ MK(3,3, 117),
+ MK(4,0, 117),
+ MK(4,1, 117),
+ MK(4,2, 117),
+ MK(4,3, 117),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_rubber_plantation[] = {
+ _tile_table_rubber_plantation_0,
+};
+
+static const IndustryTileTable _tile_table_water_supply_0[] = {
+ MK(0,0, 118),
+ MK(0,1, 119),
+ MK(1,0, 118),
+ MK(1,1, 119),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_water_supply[] = {
+ _tile_table_water_supply_0,
+};
+
+static const IndustryTileTable _tile_table_water_tower_0[] = {
+ MK(0,0, 120),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_water_tower[] = {
+ _tile_table_water_tower_0,
+};
+
+static const IndustryTileTable _tile_table_factory2_0[] = {
+ MK(0,0, 121),
+ MK(0,1, 122),
+ MK(1,0, 123),
+ MK(1,1, 124),
+ MK(0,2, 121),
+ MK(0,3, 122),
+ MK(1,2, 123),
+ MK(1,3, 124),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_factory2_1[] = {
+ MK(0,0, 121),
+ MK(0,1, 122),
+ MK(1,0, 123),
+ MK(1,1, 124),
+ MK(2,0, 121),
+ MK(2,1, 122),
+ MK(3,0, 123),
+ MK(3,1, 124),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_factory2[] = {
+ _tile_table_factory2_0,
+ _tile_table_factory2_1,
+};
+
+static const IndustryTileTable _tile_table_farm2_0[] = {
+ MK(1,0, 33),
+ MK(1,1, 34),
+ MK(1,2, 36),
+ MK(0,0, 37),
+ MK(0,1, 37),
+ MK(0,2, 36),
+ MK(2,0, 35),
+ MK(2,1, 38),
+ MK(2,2, 38),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_farm2_1[] = {
+ MK(1,1, 33),
+ MK(1,2, 34),
+ MK(0,0, 35),
+ MK(0,1, 36),
+ MK(0,2, 36),
+ MK(0,3, 35),
+ MK(1,0, 37),
+ MK(1,3, 38),
+ MK(2,0, 37),
+ MK(2,1, 37),
+ MK(2,2, 38),
+ MK(2,3, 38),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_farm2_2[] = {
+ MK(2,0, 33),
+ MK(2,1, 34),
+ MK(0,0, 36),
+ MK(0,1, 36),
+ MK(0,2, 37),
+ MK(0,3, 37),
+ MK(1,0, 35),
+ MK(1,1, 38),
+ MK(1,2, 38),
+ MK(1,3, 37),
+ MK(2,2, 37),
+ MK(2,3, 35),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_farm2[] = {
+ _tile_table_farm2_0,
+ _tile_table_farm2_1,
+ _tile_table_farm2_2,
+};
+
+static const IndustryTileTable _tile_table_lumber_mill_0[] = {
+ MK(0,0, 125),
+ MK(0,1, 126),
+ MK(1,0, 127),
+ MK(1,1, 128),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_lumber_mill[] = {
+ _tile_table_lumber_mill_0,
+};
+
+static const IndustryTileTable _tile_table_cotton_candy_0[] = {
+ MK(0,0, 129),
+ MK(0,1, 129),
+ MK(0,2, 129),
+ MK(0,3, 129),
+ MK(1,0, 129),
+ MK(1,1, 129),
+ MK(1,2, 129),
+ MK(1,3, 129),
+ MK(2,0, 129),
+ MK(2,1, 129),
+ MK(2,2, 129),
+ MK(2,3, 129),
+ MK(3,0, 129),
+ MK(3,1, 129),
+ MK(3,2, 129),
+ MK(3,3, 129),
+ MK(1,4, 129),
+ MK(2,4, 129),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_cotton_candy_1[] = {
+ MK(0,0, 129),
+ MK(1,0, 129),
+ MK(2,0, 129),
+ MK(3,0, 129),
+ MK(4,0, 129),
+ MK(0,1, 129),
+ MK(1,1, 129),
+ MK(2,1, 129),
+ MK(3,1, 129),
+ MK(4,1, 129),
+ MK(0,2, 129),
+ MK(1,2, 129),
+ MK(2,2, 129),
+ MK(3,2, 129),
+ MK(4,2, 129),
+ MK(0,3, 129),
+ MK(1,3, 129),
+ MK(2,3, 129),
+ MK(3,3, 129),
+ MK(4,3, 129),
+ MK(1,4, 129),
+ MK(2,4, 129),
+ MK(3,4, 129),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_cotton_candy[] = {
+ _tile_table_cotton_candy_0,
+ _tile_table_cotton_candy_1,
+};
+
+static const IndustryTileTable _tile_table_candy_factory_0[] = {
+ MK(0,0, 131),
+ MK(0,1, 132),
+ MK(1,0, 133),
+ MK(1,1, 134),
+ MK(0,2, 131),
+ MK(0,3, 132),
+ MK(1,2, 133),
+ MK(1,3, 134),
+ MK(2,1, 131),
+ MK(2,2, 132),
+ MK(3,1, 133),
+ MK(3,2, 134),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_candy_factory_1[] = {
+ MK(0,0, 131),
+ MK(0,1, 132),
+ MK(1,0, 133),
+ MK(1,1, 134),
+ MK(2,0, 131),
+ MK(2,1, 132),
+ MK(3,0, 133),
+ MK(3,1, 134),
+ MK(1,2, 131),
+ MK(1,3, 132),
+ MK(2,2, 133),
+ MK(2,3, 134),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_candy_factory[] = {
+ _tile_table_candy_factory_0,
+ _tile_table_candy_factory_1,
+};
+
+static const IndustryTileTable _tile_table_battery_farm_0[] = {
+ MK(0,0, 135),
+ MK(0,1, 135),
+ MK(0,2, 135),
+ MK(0,3, 135),
+ MK(1,0, 135),
+ MK(1,1, 135),
+ MK(1,2, 135),
+ MK(1,3, 135),
+ MK(2,0, 135),
+ MK(2,1, 135),
+ MK(2,2, 135),
+ MK(2,3, 135),
+ MK(3,0, 135),
+ MK(3,1, 135),
+ MK(3,2, 135),
+ MK(3,3, 135),
+ MK(4,0, 135),
+ MK(4,1, 135),
+ MK(4,2, 135),
+ MK(4,3, 135),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_battery_farm[] = {
+ _tile_table_battery_farm_0,
+};
+
+static const IndustryTileTable _tile_table_cola_wells_0[] = {
+ MK(0,0, 137),
+ MK(0,1, 137),
+ MK(0,2, 137),
+ MK(1,0, 137),
+ MK(1,1, 137),
+ MK(1,2, 137),
+ MK(2,1, 137),
+ MK(2,2, 137),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_cola_wells_1[] = {
+ MK(0,1, 137),
+ MK(0,2, 137),
+ MK(0,3, 137),
+ MK(1,0, 137),
+ MK(1,1, 137),
+ MK(1,2, 137),
+ MK(2,1, 137),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_cola_wells[] = {
+ _tile_table_cola_wells_0,
+ _tile_table_cola_wells_1,
+};
+
+static const IndustryTileTable _tile_table_toy_shop_0[] = {
+ MK(0,0, 138),
+ MK(0,1, 139),
+ MK(1,0, 140),
+ MK(1,1, 141),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_toy_shop[] = {
+ _tile_table_toy_shop_0,
+};
+
+static const IndustryTileTable _tile_table_toy_factory_0[] = {
+ MK(0,0, 147),
+ MK(0,1, 142),
+ MK(1,0, 147),
+ MK(1,1, 143),
+ MK(2,0, 147),
+ MK(2,1, 144),
+ MK(3,0, 146),
+ MK(3,1, 145),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_toy_factory[] = {
+ _tile_table_toy_factory_0,
+};
+
+static const IndustryTileTable _tile_table_plastic_fountain_0[] = {
+ MK(0,0, 148),
+ MK(0,1, 151),
+ MK(0,2, 154),
+ MKEND
+};
+
+static const IndustryTileTable _tile_table_plastic_fountain_1[] = {
+ MK(0,0, 148),
+ MK(1,0, 151),
+ MK(2,0, 154),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_plastic_fountain[] = {
+ _tile_table_plastic_fountain_0,
+ _tile_table_plastic_fountain_1,
+};
+
+static const IndustryTileTable _tile_table_fizzy_drink_0[] = {
+ MK(0,0, 156),
+ MK(0,1, 157),
+ MK(1,0, 158),
+ MK(1,1, 159),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_fizzy_drink[] = {
+ _tile_table_fizzy_drink_0,
+};
+
+static const IndustryTileTable _tile_table_bubble_generator_0[] = {
+ MK(0,0, 163),
+ MK(0,1, 160),
+ MK(1,0, 163),
+ MK(1,1, 161),
+ MK(2,0, 163),
+ MK(2,1, 162),
+ MK(0,2, 163),
+ MK(0,3, 160),
+ MK(1,2, 163),
+ MK(1,3, 161),
+ MK(2,2, 163),
+ MK(2,3, 162),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_bubble_generator[] = {
+ _tile_table_bubble_generator_0,
+};
+
+static const IndustryTileTable _tile_table_toffee_quarry_0[] = {
+ MK(0,0, 164),
+ MK(1,0, 165),
+ MK(2,0, 166),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_toffee_quarry[] = {
+ _tile_table_toffee_quarry_0,
+};
+
+static const IndustryTileTable _tile_table_sugar_mine_0[] = {
+ MK(0,0, 167),
+ MK(0,1, 168),
+ MK(1,0, 169),
+ MK(1,1, 170),
+ MK(2,0, 171),
+ MK(2,1, 172),
+ MK(3,0, 173),
+ MK(3,1, 174),
+ MKEND
+};
+
+static const IndustryTileTable * const _tile_table_sugar_mine[] = {
+ _tile_table_sugar_mine_0,
+};
+
+#undef MK
+#undef MKEND
+
+/* Procedures that can be run to check whether an industry may
+ * build at location the given to the procedure */
+typedef enum CheckProcs {
+ CHECK_NOTHING = 0,
+ CHECK_FOREST = 1,
+ CHECK_REFINERY = 2,
+ CHECK_FARM = 3,
+ CHECK_PLANTATION = 4,
+ CHECK_WATER = 5,
+ CHECK_LUMBERMILL = 6,
+ CHECK_BUBBLEGEN = 7,
+ CHECK_OIL_RIG = 8,
+ CHECK_END,
+} CheckProc;
+
+#define MK(tbl, d, c1, c2, c3, proc, p1, r1, p2, r2, m, a1, a2, a3, pr, clim, in, s1, s2, s3) \
+ {tbl, lengthof(tbl), d, {c1, c2, c3}, proc, {p1, p2}, {r1, r2}, m, \
+ {a1, a2, a3}, pr, clim, in, s1, s2, s3}
+
+static const IndustrySpec _industry_specs[] = {
+ /* Format:
+ tile table cost multiplier
+ cannot be close to these industries (3 times) check proc
+ (produced cargo + rate) (twice) minimum cargo moved to station
+ 3 accepted cargo
+ industry life climate availability
+ industry name
+ messages : Closure production up production down */
+ MK(_tile_table_coal_mine, 210,
+ IT_POWER_STATION, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_COAL, 15, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_NORMAL | 1 << LT_HILLY,
+ STR_4802_COAL_MINE,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4836_NEW_COAL_SEAM_FOUND_AT, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_power_station, 30,
+ IT_COAL_MINE, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_INVALID, 0, CT_INVALID, 0, 5,
+ CT_COAL, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_NOT_CLOSABLE, 1 << LT_NORMAL | 1 << LT_HILLY,
+ STR_4803_POWER_STATION,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_sawmill, 28,
+ IT_FOREST, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_GOODS, 0, CT_INVALID, 0, 5,
+ CT_WOOD, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_NORMAL,
+ STR_4804_SAWMILL,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_forest, 200,
+ IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, CHECK_FOREST,
+ CT_WOOD, 13, CT_INVALID, 0, 30,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_NORMAL | 1 << LT_HILLY,
+ STR_4805_FOREST,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_483A_INSECT_INFESTATION_CAUSES),
+
+ MK(_tile_table_oil_refinery, 31,
+ IT_OIL_RIG, IT_INVALID, IT_INVALID, CHECK_REFINERY,
+ CT_GOODS, 0, CT_INVALID, 0, 5,
+ CT_OIL, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_NORMAL | 1 << LT_HILLY | 1 << LT_DESERT,
+ STR_4806_OIL_REFINERY,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_oil_rig, 240,
+ IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_OIL_RIG,
+ CT_OIL, 15, CT_PASSENGERS, 2, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_NORMAL,
+ STR_4807_OIL_RIG,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4837_NEW_OIL_RESERVES_FOUND, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_factory, 26,
+ IT_FARM, IT_STEEL_MILL, IT_INVALID, CHECK_NOTHING,
+ CT_GOODS, 0, CT_INVALID, 0, 5,
+ CT_LIVESTOCK, CT_GRAIN, CT_STEEL,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_NORMAL,
+ STR_4808_FACTORY,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_printing_works, 26,
+ IT_PAPER_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_GOODS, 0, CT_INVALID, 0, 5,
+ CT_PAPER, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_HILLY,
+ STR_4809_PRINTING_WORKS,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_steel_mill, 27,
+ IT_IRON_MINE, IT_FACTORY, IT_INVALID, CHECK_NOTHING,
+ CT_STEEL, 0, CT_INVALID, 0, 5,
+ CT_IRON_ORE, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_NORMAL,
+ STR_480A_STEEL_MILL,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_farm, 250,
+ IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, CHECK_FARM,
+ CT_GRAIN, 10, CT_LIVESTOCK, 10, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_NORMAL | 1 << LT_HILLY,
+ STR_480B_FARM,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
+
+ MK(_tile_table_copper_mine, 205,
+ IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_COPPER_ORE, 10, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_DESERT,
+ STR_480C_COPPER_ORE_MINE,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_oil_well, 220,
+ IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_OIL, 12, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_NORMAL | 1 << LT_HILLY | 1 << LT_DESERT,
+ STR_480D_OIL_WELLS,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4837_NEW_OIL_RESERVES_FOUND, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_bank, 193,
+ IT_BANK_TEMP, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_VALUABLES, 6, CT_INVALID, 0, 5,
+ CT_VALUABLES, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_NOT_CLOSABLE, 1 << LT_NORMAL,
+ STR_480E_BANK,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_food_process, 26,
+ IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, CHECK_NOTHING,
+ CT_FOOD, 0, CT_INVALID, 0, 5,
+ CT_FRUIT, CT_MAIZE, CT_INVALID,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_HILLY | 1 << LT_DESERT,
+ STR_480F_FOOD_PROCESSING_PLANT,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_paper_mill, 28,
+ IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, CHECK_NOTHING,
+ CT_PAPER, 0, CT_INVALID, 0, 5,
+ CT_WOOD, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_HILLY,
+ STR_4810_PAPER_MILL,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_gold_mine, 208,
+ IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_GOLD, 7, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_DESERT,
+ STR_4811_GOLD_MINE,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_bank2, 19,
+ IT_GOLD_MINE, IT_DIAMOND_MINE, IT_INVALID, CHECK_NOTHING,
+ CT_INVALID, 0, CT_INVALID, 0, 5,
+ CT_GOLD, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_NOT_CLOSABLE, 1 << LT_HILLY | 1 << LT_DESERT,
+ STR_4812_BANK,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_diamond_mine, 213,
+ IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_DIAMONDS, 7, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_DESERT,
+ STR_4813_DIAMOND_MINE,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_iron_mine, 220,
+ IT_STEEL_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_IRON_ORE, 10, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_NORMAL,
+ STR_4814_IRON_ORE_MINE,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_fruit_plantation, 225,
+ IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
+ CT_FRUIT, 10, CT_INVALID, 0, 15,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_DESERT,
+ STR_4815_FRUIT_PLANTATION,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
+
+ MK(_tile_table_rubber_plantation, 218,
+ IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
+ CT_RUBBER, 10, CT_INVALID, 0, 15,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_DESERT,
+ STR_4816_RUBBER_PLANTATION,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
+
+ MK(_tile_table_water_supply, 199,
+ IT_WATER_TOWER, IT_INVALID, IT_INVALID, CHECK_WATER,
+ CT_WATER, 12, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_DESERT,
+ STR_4817_WATER_SUPPLY,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_water_tower, 14,
+ IT_WATER_SUPPLY, IT_INVALID, IT_INVALID, CHECK_WATER,
+ CT_INVALID, 0, CT_INVALID, 0, 5,
+ CT_WATER, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_NOT_CLOSABLE, 1 << LT_DESERT,
+ STR_4818_WATER_TOWER,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_factory2, 26,
+ IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, CHECK_PLANTATION,
+ CT_GOODS, 0, CT_INVALID, 0, 5,
+ CT_RUBBER, CT_COPPER_ORE, CT_WOOD,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_DESERT,
+ STR_4819_FACTORY,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_farm2, 250,
+ IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
+ CT_MAIZE, 11, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_DESERT,
+ STR_481A_FARM,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
+
+ MK(_tile_table_lumber_mill, 17,
+ IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_LUMBERMILL,
+ CT_WOOD, 0, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_DESERT,
+ STR_481B_LUMBER_MILL,
+ STR_4834_LACK_OF_NEARBY_TREES_CAUSES, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_cotton_candy, 195,
+ IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_COTTON_CANDY, 13, CT_INVALID, 0, 30,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_CANDY,
+ STR_481C_COTTON_CANDY_FOREST,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_candy_factory, 26,
+ IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, CHECK_NOTHING,
+ CT_CANDY, 0, CT_INVALID, 0, 5,
+ CT_SUGAR, CT_TOFFEE, CT_COTTON_CANDY,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_CANDY,
+ STR_481D_CANDY_FACTORY,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_battery_farm, 187,
+ IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_BATTERIES, 11, CT_INVALID, 0, 30,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_CANDY,
+ STR_481E_BATTERY_FARM,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
+
+ MK(_tile_table_cola_wells, 193,
+ IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_COLA, 12, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_CANDY,
+ STR_481F_COLA_WELLS,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_toy_shop, 17,
+ IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_INVALID, 0, CT_INVALID, 0, 5,
+ CT_TOYS, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_NOT_CLOSABLE, 1 << LT_CANDY,
+ STR_4820_TOY_SHOP,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_toy_factory, 20,
+ IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, CHECK_NOTHING,
+ CT_TOYS, 0, CT_INVALID, 0, 5,
+ CT_PLASTIC, CT_BATTERIES, CT_INVALID,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_CANDY,
+ STR_4821_TOY_FACTORY,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_plastic_fountain, 192,
+ IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_PLASTIC, 14, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_CANDY,
+ STR_4822_PLASTIC_FOUNTAINS,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_fizzy_drink, 22,
+ IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, CHECK_NOTHING,
+ CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5,
+ CT_COLA, CT_BUBBLES, CT_INVALID,
+ INDUSTRYLIFE_CLOSABLE, 1 << LT_CANDY,
+ STR_4823_FIZZY_DRINK_FACTORY,
+ STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_bubble_generator, 203,
+ IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_BUBBLEGEN,
+ CT_BUBBLES, 13, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_CANDY,
+ STR_4824_BUBBLE_GENERATOR,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_toffee_quarry, 213,
+ IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_TOFFEE, 10, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_CANDY,
+ STR_4825_TOFFEE_QUARRY,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+
+ MK(_tile_table_sugar_mine, 210,
+ IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
+ CT_SUGAR, 11, CT_INVALID, 0, 5,
+ CT_INVALID, CT_INVALID, CT_INVALID,
+ INDUSTRYLIFE_PRODUCTION, 1 << LT_CANDY,
+ STR_4826_SUGAR_MINE,
+ STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
+};
+#undef MK
+
+
+static const byte _industry_create_table_0[] = {
+ 4, 4,
+ 5, 3,
+ 5, 2,
+ 8, 0,
+ 5, 1,
+ 4, 11,
+ 5, 18,
+ 9, 9,
+ 5, 8,
+ 5, 6,
+ 0
+};
+
+static const byte _industry_create_table_1[] = {
+ 4, 4,
+ 5, 3,
+ 5, 14,
+ 8, 0,
+ 5, 1,
+ 5, 11,
+ 5, 13,
+ 9, 9,
+ 4, 15,
+ 5, 7,
+ 6, 16,
+ 0
+};
+
+static const byte _industry_create_table_2[] = {
+ 4, 4,
+ 5, 11,
+ 5, 16,
+ 4, 13,
+ 4, 17,
+ 4, 10,
+ 4, 19,
+ 4, 20,
+ 4, 21,
+ 8, 22,
+ 4, 13,
+ 4, 23,
+ 2, 24,
+ 0
+};
+
+static const byte _industry_create_table_3[] = {
+ 5, 26,
+ 5, 27,
+ 4, 28,
+ 5, 29,
+ 4, 30,
+ 5, 31,
+ 5, 32,
+ 4, 33,
+ 5, 34,
+ 5, 35,
+ 4, 36,
+ 0
+};
+
+static const byte * const _industry_create_table[4] = {
+ _industry_create_table_0,
+ _industry_create_table_1,
+ _industry_create_table_2,
+ _industry_create_table_3,
+};
+
+
+#define PAS CT_PASSENGERS
+
+#define COL CT_COAL
+#define RUB CT_RUBBER
+#define SUG CT_SUGAR
+
+#define MAL CT_MAIL
+
+#define OIL CT_OIL
+#define TOY CT_TOYS
+
+#define LIV CT_LIVESTOCK // Fruit too
+#define BAT CT_BATTERIES
+
+#define GRA CT_GRAIN
+#define WHT CT_WHEAT // Maize too
+#define TOF CT_TOFFEE
+
+#define WOD CT_WOOD
+#define CLA CT_COLA
+
+#define IRN CT_IRON_ORE
+#define COP CT_COPPER_ORE
+#define CCY CT_COTTON_CANDY
+
+#define STL CT_STEEL
+#define PAP CT_PAPER
+#define WAT CT_WATER
+#define BBL CT_BUBBLES
+
+#define VAL CT_VALUABLES
+#define GLD CT_GOLD // Diamonds too
+#define PLC CT_PLASTIC
+
+#define INV CT_INVALID
+
+static const CargoID _industry_section_accepts_1[] = {
+ INV, INV, INV, PAS, INV, INV, INV, INV,
+ PAS, INV, INV, PAS, PAS, PAS, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, PAS,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, PAS, PAS, INV, INV, INV, INV, GRA,
+ GRA, GRA, GRA, INV, INV, INV, INV, INV,
+ INV, INV, PAS, PAS, PAS, PAS, PAS, PAS,
+ PAS, PAS, PAS, PAS, WHT, WHT, WHT, WHT,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, COP, COP, COP, COP, INV, INV, INV,
+ INV, INV, INV, CCY, CCY, CCY, CCY, INV,
+ INV, INV, INV, INV, INV, INV, BAT, BAT,
+ BAT, BAT, BAT, BAT, INV, INV, INV, INV,
+ INV, INV, INV, INV, BBL, BBL, BBL, BBL,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV
+};
+
+
+static const CargoID _industry_section_accepts_2[] = {
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, STL,
+ STL, STL, STL, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, WOD, WOD, WOD, WOD, INV, INV, INV,
+ INV, INV, INV, TOF, TOF, TOF, TOF, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV
+};
+
+static const CargoID _industry_section_accepts_3[] = {
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ COL, INV, INV, INV, INV, WOD, INV, INV,
+ INV, INV, INV, INV, OIL, INV, INV, INV,
+ PAS, MAL, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, LIV,
+ LIV, LIV, LIV, PAP, PAP, PAP, PAP, INV,
+ INV, INV, INV, INV, IRN, IRN, IRN, IRN,
+ IRN, IRN, VAL, VAL, LIV, LIV, LIV, LIV,
+ WOD, WOD, WOD, WOD, WOD, WOD, WOD, WOD,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, GLD, GLD, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ WAT, RUB, RUB, RUB, RUB, INV, INV, INV,
+ INV, INV, INV, SUG, SUG, SUG, SUG, INV,
+ INV, INV, TOY, TOY, TOY, TOY, PLC, PLC,
+ PLC, PLC, PLC, PLC, INV, INV, INV, INV,
+ INV, INV, INV, INV, CLA, CLA, CLA, CLA,
+ INV, INV, INV, INV, INV, INV, INV, INV,
+ INV, INV, INV, INV, INV, INV, INV
+};
+
+#undef PAS
+#undef COL
+#undef RUB
+#undef SUG
+#undef MAL
+#undef OIL
+#undef TOY
+#undef LIV
+#undef BAT
+#undef GRA
+#undef WHT
+#undef TOF
+#undef WOD
+#undef CLA
+#undef IRN
+#undef COP
+#undef CCY
+#undef STL
+#undef PAP
+#undef WAT
+#undef BBL
+#undef VAL
+#undef GLD
+#undef PLC
+#undef INV
diff --git a/src/table/clear_land.h b/src/table/clear_land.h
new file mode 100644
index 000000000..581c86855
--- /dev/null
+++ b/src/table/clear_land.h
@@ -0,0 +1,62 @@
+/* $Id$ */
+
+static const SpriteID _landscape_clear_sprites[8] = {
+ 0xFA0,
+ 0xFB3,
+ 0xFB4,
+ 0xFB5,
+ 0xFB6,
+ 0xFA0,
+ 0xFB3,
+ 0xFB4,
+};
+
+static const byte _fence_mod_by_tileh[32] = {
+ 0, 2, 4, 0, 0, 2, 4, 0,
+ 0, 2, 4, 0, 0, 2, 4, 0,
+ 0, 2, 4, 0, 0, 2, 4, 4,
+ 0, 2, 4, 2, 0, 2, 4, 0,
+};
+
+static const byte _fence_mod_by_tileh_2[32] = {
+ 1, 1, 5, 5, 3, 3, 1, 1,
+ 1, 1, 5, 5, 3, 3, 1, 1,
+ 1, 1, 5, 5, 3, 3, 1, 5,
+ 1, 1, 5, 5, 3, 3, 3, 1,
+};
+
+
+static const SpriteID _clear_land_fence_sprites_1[7] = {
+ 0xFFA,
+ 0x1000,
+ 0x1006,
+ 0x100C,
+ 0x1012,
+ 0x1018,
+};
+
+static const SpriteID _clear_land_sprites_1[16] = {
+ 0x101E,
+ 0x1031,
+ 0x1044,
+ 0x1057,
+ 0x106A,
+ 0x107D,
+ 0x1090,
+ 0x10A3,
+ 0x10B6,
+};
+
+static const SpriteID _clear_land_sprites_2[8] = {
+ 0x118D,
+ 0x11A0,
+ 0x11B3,
+ 0x11C6,
+};
+
+static const SpriteID _clear_land_sprites_3[8] = {
+ 0x118D,
+ 0x11A0,
+ 0x11B3,
+ 0x11C6,
+};
diff --git a/src/table/control_codes.h b/src/table/control_codes.h
new file mode 100644
index 000000000..a1ff42a89
--- /dev/null
+++ b/src/table/control_codes.h
@@ -0,0 +1,105 @@
+/* $Id$ */
+
+#ifndef CONTROL_CODES_H
+#define CONTROL_CODES_H
+
+/* List of string control codes used for string formatting, displaying, and
+ * by strgen to generate the language files. */
+
+enum {
+ SCC_CONTROL_START = 0xE000,
+ SCC_CONTROL_END = 0xE1FF,
+
+ SCC_SPRITE_START = 0xE200,
+ SCC_SPRITE_END = SCC_SPRITE_START + 0xFF,
+
+ /* Display control codes */
+ SCC_SETX = SCC_CONTROL_START,
+ SCC_SETXY,
+ SCC_TINYFONT,
+ SCC_BIGFONT,
+
+ /* Formatting control codes */
+ SCC_REVISION,
+ SCC_STATION_FEATURES,
+ SCC_INDUSTRY_NAME,
+ SCC_WAYPOINT_NAME,
+ SCC_STATION_NAME,
+ SCC_TOWN_NAME,
+
+ SCC_CURRENCY_COMPACT,
+ SCC_CURRENCY_COMPACT_64,
+ SCC_CURRENCY,
+ SCC_CURRENCY_64,
+
+ SCC_CARGO,
+ SCC_CARGO_SHORT,
+ SCC_POWER,
+ SCC_VOLUME,
+ SCC_VOLUME_SHORT,
+ SCC_WEIGHT,
+ SCC_WEIGHT_SHORT,
+ SCC_FORCE,
+ SCC_VELOCITY,
+
+ SCC_DATE_TINY,
+ SCC_DATE_SHORT,
+ SCC_DATE_LONG,
+
+ SCC_STRING1,
+ SCC_STRING2,
+ SCC_STRING3,
+ SCC_STRING4,
+ SCC_STRING5,
+
+ SCC_SKIP,
+ SCC_STRING,
+ SCC_COMMA,
+ SCC_NUM,
+
+ SCC_STRING_ID,
+ SCC_PLURAL_LIST,
+ SCC_GENDER_LIST,
+ SCC_GENDER_INDEX,
+ SCC_ARG_INDEX,
+ SCC_SETCASE,
+ SCC_SWITCH_CASE,
+
+ /* Colour codes */
+ SCC_BLUE,
+ SCC_SILVER,
+ SCC_GOLD,
+ SCC_RED,
+ SCC_PURPLE,
+ SCC_LTBROWN,
+ SCC_ORANGE,
+ SCC_GREEN,
+ SCC_YELLOW,
+ SCC_DKGREEN,
+ SCC_CREAM,
+ SCC_BROWN,
+ SCC_WHITE,
+ SCC_LTBLUE,
+ SCC_GRAY,
+ SCC_DKBLUE,
+ SCC_BLACK,
+
+ /* Special printable symbols.
+ * These are mapped to the original glyphs */
+ SCC_LESSTHAN = SCC_SPRITE_START + 0x3C,
+ SCC_GREATERTHAN = SCC_SPRITE_START + 0x3E,
+ SCC_UPARROW = SCC_SPRITE_START + 0x80,
+ SCC_SMALLUPARROW = SCC_SPRITE_START + 0x90,
+ SCC_SMALLDOWNARROW = SCC_SPRITE_START + 0x91,
+ SCC_TRAIN = SCC_SPRITE_START + 0x94,
+ SCC_LORRY = SCC_SPRITE_START + 0x95,
+ SCC_BUS = SCC_SPRITE_START + 0x96,
+ SCC_PLANE = SCC_SPRITE_START + 0x97,
+ SCC_SHIP = SCC_SPRITE_START + 0x98,
+ SCC_DOWNARROW = SCC_SPRITE_START + 0xAA,
+ SCC_CHECKMARK = SCC_SPRITE_START + 0xAC,
+ SCC_CROSS = SCC_SPRITE_START + 0xAD,
+ SCC_RIGHTARROW = SCC_SPRITE_START + 0xAF,
+};
+
+#endif /* CONTROL_CODES_H */
diff --git a/src/table/elrail_data.h b/src/table/elrail_data.h
new file mode 100644
index 000000000..1ed5751b4
--- /dev/null
+++ b/src/table/elrail_data.h
@@ -0,0 +1,445 @@
+/* $Id$ */
+/** @file elrail_data.h Stores all the data for overhead wire and pylon drawing.
+ * @see elrail.c */
+
+#ifndef ELRAIL_DATA_H
+#define ELRAIL_DATA_H
+
+/** Tile Location group.
+ * This defines whether the X and or Y coordinate of a tile is even */
+typedef enum TLG {
+ XEVEN_YEVEN = 0,
+ XEVEN_YODD = 1,
+ XODD_YEVEN = 2,
+ XODD_YODD = 3,
+ TLG_END
+} TLG;
+
+/** When determining the pylon configuration on the edge, two tiles are taken
+ * into account: the tile being drawn itself (the home tile, the one in
+ * ti->tile), and the neighbouring tile */
+typedef enum {
+ TS_HOME = 0,
+ TS_NEIGHBOUR = 1,
+
+ TS_END
+} TileSource;
+
+enum {
+ NUM_TRACKS_AT_PCP = 6
+};
+
+/** Which PPPs are possible at all on a given PCP */
+static byte AllowedPPPonPCP[DIAGDIR_END] = {
+ 1 << DIR_N | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W | 1 << DIR_NW,
+ 1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
+ 1 << DIR_N | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W | 1 << DIR_NW,
+ 1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
+};
+
+/** Which of the PPPs are inside the tile. For the two PPPs on the tile border
+ * the following system is used: if you rotate the PCP so that it is in the
+ * north, the eastern PPP belongs to the tile. */
+static byte OwnedPPPonPCP[DIAGDIR_END] = {
+ 1 << DIR_SE | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
+ 1 << DIR_N | 1 << DIR_SW | 1 << DIR_W | 1 << DIR_NW,
+ 1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_NW,
+ 1 << DIR_NE | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S
+};
+
+/** Maps a track bit onto two PCP positions */
+static const DiagDirection PCPpositions[TRACK_END][2] = {
+ {DIAGDIR_NE, DIAGDIR_SW}, /* X */
+ {DIAGDIR_SE, DIAGDIR_NW}, /* Y */
+ {DIAGDIR_NW, DIAGDIR_NE}, /* UPPER */
+ {DIAGDIR_SE, DIAGDIR_SW}, /* LOWER */
+ {DIAGDIR_SW, DIAGDIR_NW}, /* LEFT */
+ {DIAGDIR_NE, DIAGDIR_SE}, /* RIGHT */
+};
+
+#define PCP_NOT_ON_TRACK 0xFF
+/** Preferred points of each trackbit. Those are the ones perpendicular to the
+ * track, plus the point in extension of the track (to mark end-of-track). PCPs
+ * which are not on either end of the track are fully preferred.
+ * @see PCPpositions */
+static byte PreferredPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = {
+ { /* X */
+ 1 << DIR_NE | 1 << DIR_SE | 1 << DIR_NW, /* NE */
+ PCP_NOT_ON_TRACK, /* SE */
+ 1 << DIR_SE | 1 << DIR_SW | 1 << DIR_NW, /* SW */
+ PCP_NOT_ON_TRACK /* NE */
+ }, { /* Y */
+ PCP_NOT_ON_TRACK,
+ 1 << DIR_NE | 1 << DIR_SE | 1 << DIR_SW,
+ PCP_NOT_ON_TRACK,
+ 1 << DIR_SW | 1 << DIR_NW | 1 << DIR_NE
+ }, { /* UPPER */
+ 1 << DIR_E | 1 << DIR_N | 1 << DIR_S,
+ PCP_NOT_ON_TRACK,
+ PCP_NOT_ON_TRACK,
+ 1 << DIR_W | 1 << DIR_N | 1 << DIR_S
+ }, { /* LOWER */
+ PCP_NOT_ON_TRACK,
+ 1 << DIR_E | 1 << DIR_N | 1 << DIR_S,
+ 1 << DIR_W | 1 << DIR_N | 1 << DIR_S,
+ PCP_NOT_ON_TRACK
+ }, { /* LEFT */
+ PCP_NOT_ON_TRACK,
+ PCP_NOT_ON_TRACK,
+ 1 << DIR_S | 1 << DIR_E | 1 << DIR_W,
+ 1 << DIR_N | 1 << DIR_E | 1 << DIR_W
+ }, { /* RIGHT */
+ 1 << DIR_N | 1 << DIR_E | 1 << DIR_W,
+ 1 << DIR_S | 1 << DIR_E | 1 << DIR_W,
+ PCP_NOT_ON_TRACK,
+ PCP_NOT_ON_TRACK
+ }
+};
+#undef PCP_NOT_ON_TRACK
+
+
+#define NUM_IGNORE_GROUPS 3
+#define IGNORE_NONE 0xFF
+/** In case we have a staight line, we place pylon only every two tiles,
+ * so there are certain tiles which we ignore. A straight line is found if
+ * we have exactly two PPPs. */
+static byte IgnoredPCP[NUM_IGNORE_GROUPS][TLG_END][DIAGDIR_END] = {
+ { /* Ignore group 1, X and Y tracks */
+ { /* X even, Y even */
+ IGNORE_NONE,
+ 1 << DIR_NE | 1 << DIR_SW,
+ 1 << DIR_NW | 1 << DIR_SE,
+ IGNORE_NONE
+ }, { /* X even, Y odd */
+ IGNORE_NONE,
+ IGNORE_NONE,
+ 1 << DIR_NW | 1 << DIR_SE,
+ 1 << DIR_NE | 1 << DIR_SW
+ }, { /* X odd, Y even */
+ 1 << DIR_NW | 1 << DIR_SE,
+ 1 << DIR_NE | 1 << DIR_SW,
+ IGNORE_NONE,
+ IGNORE_NONE
+ }, { /* X odd, Y odd */
+ 1 << DIR_NW | 1 << DIR_SE,
+ IGNORE_NONE,
+ IGNORE_NONE,
+ 1 << DIR_NE | 1 << DIR_SW
+ }
+ },
+ { /* Ignore group 2, LEFT and RIGHT tracks */
+ {
+ 1 << DIR_E | 1 << DIR_W,
+ IGNORE_NONE,
+ IGNORE_NONE,
+ 1 << DIR_E | 1 << DIR_W
+ }, {
+ IGNORE_NONE,
+ 1 << DIR_E | 1 << DIR_W,
+ 1 << DIR_E | 1 << DIR_W,
+ IGNORE_NONE
+ }, {
+ IGNORE_NONE,
+ 1 << DIR_E | 1 << DIR_W,
+ 1 << DIR_E | 1 << DIR_W,
+ IGNORE_NONE
+ }, {
+ 1 << DIR_E | 1 << DIR_W,
+ IGNORE_NONE,
+ IGNORE_NONE,
+ 1 << DIR_E | 1 << DIR_W
+ }
+ },
+ { /* Ignore group 3, UPPER and LOWER tracks */
+ {
+ 1 << DIR_N | 1 << DIR_S,
+ 1 << DIR_N | 1 << DIR_S,
+ IGNORE_NONE,
+ IGNORE_NONE
+ }, {
+ IGNORE_NONE,
+ IGNORE_NONE,
+ 1 << DIR_N | 1 << DIR_S,
+ 1 << DIR_N | 1 << DIR_S
+ }, {
+ IGNORE_NONE,
+ IGNORE_NONE,
+ 1 << DIR_N | 1 << DIR_S ,
+ 1 << DIR_N | 1 << DIR_S
+ }, {
+ 1 << DIR_N | 1 << DIR_S,
+ 1 << DIR_N | 1 << DIR_S,
+ IGNORE_NONE,
+ IGNORE_NONE
+ }
+ }
+};
+
+#undef NO_IGNORE
+
+/** Which pylons can definately NOT be built */
+static byte DisallowedPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = {
+ {1 << DIR_SW | 1 << DIR_NE, 0, 1 << DIR_SW | 1 << DIR_NE, 0 }, /* X */
+ {0, 1 << DIR_NW | 1 << DIR_SE, 0, 1 << DIR_NW | 1 << DIR_SE}, /* Y */
+ {1 << DIR_W | 1 << DIR_E, 0, 0, 1 << DIR_W | 1 << DIR_E }, /* UPPER */
+ {0, 1 << DIR_W | 1 << DIR_E, 1 << DIR_W | 1 << DIR_E, 0 }, /* LOWER */
+ {0, 0, 1 << DIR_S | 1 << DIR_N, 1 << DIR_N | 1 << DIR_S }, /* LEFT */
+ {1 << DIR_S | 1 << DIR_N, 1 << DIR_S | 1 << DIR_N, 0, 0, }, /* RIGHT */
+};
+
+/* This array stores which track bits can meet at a tile edge */
+static const Track TracksAtPCP[DIAGDIR_END][NUM_TRACKS_AT_PCP] = {
+ {TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
+ {TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
+ {TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
+ {TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
+};
+
+/* takes each of the 6 track bits from the array above and
+ * assigns it to the home tile or neighbour tile */
+static const TileSource TrackSourceTile[DIAGDIR_END][NUM_TRACKS_AT_PCP] = {
+ {TS_HOME, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME },
+ {TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_HOME },
+ {TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME , TS_HOME , TS_NEIGHBOUR},
+ {TS_HOME, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR},
+};
+
+/* Several PPPs maybe exist, here they are sorted in order of preference. */
+static const Direction PPPorder[DIAGDIR_END][TLG_END][DIR_END] = { /* X - Y */
+ { /* PCP 0 */
+ {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_E, DIR_S, DIR_W}, /* evn - evn */
+ {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E}, /* evn - odd */
+ {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_W, DIR_N, DIR_E}, /* odd - evn */
+ {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W}, /* odd - odd */
+ }, {/* PCP 1 */
+ {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_E, DIR_N, DIR_W}, /* evn - evn */
+ {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E}, /* evn - odd */
+ {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_W, DIR_S, DIR_E}, /* odd - evn */
+ {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W}, /* odd - odd */
+ }, {/* PCP 2 */
+ {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_W, DIR_N, DIR_E}, /* evn - evn */
+ {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W}, /* evn - odd */
+ {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_E, DIR_S, DIR_W}, /* odd - evn */
+ {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E}, /* odd - odd */
+ }, {/* PCP 3 */
+ {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_W, DIR_S, DIR_E}, /* evn - evn */
+ {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W}, /* evn - odd */
+ {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_E, DIR_N, DIR_W}, /* odd - evn */
+ {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E}, /* odd - odd */
+ }
+};
+/* Geometric placement of the PCP relative to the tile origin */
+static const int8 x_pcp_offsets[DIAGDIR_END] = {0, 8, 15, 8};
+static const int8 y_pcp_offsets[DIAGDIR_END] = {8, 15, 8, 0};
+/* Geometric placement of the PPP relative to the PCP*/
+static const int8 x_ppp_offsets[DIR_END] = {-3, -4, -3, 0, 3, 4, 3, 0};
+static const int8 y_ppp_offsets[DIR_END] = {-3, 0, 3, 4, 3, 0, -3, -4};
+/* The type of pylon to draw at each PPP */
+static const SpriteID pylons_normal[] = {
+ SPR_PYLON_EW_N,
+ SPR_PYLON_Y_NE,
+ SPR_PYLON_NS_E,
+ SPR_PYLON_X_SE,
+ SPR_PYLON_EW_S,
+ SPR_PYLON_Y_SW,
+ SPR_PYLON_NS_W,
+ SPR_PYLON_X_NW
+};
+
+static const SpriteID pylons_bridge[] = {
+ SPR_PYLON_X_NW,
+ SPR_PYLON_X_SE,
+ SPR_PYLON_Y_NE,
+ SPR_PYLON_Y_SW
+};
+
+typedef struct {
+ SpriteID image;
+ int8 x_offset;
+ int8 y_offset;
+ int8 x_size;
+ int8 y_size;
+ int8 z_size;
+ int8 z_offset;
+} SortableSpriteStruct;
+
+enum {
+ /** Distance between wire and rail */
+ ELRAIL_ELEVATION = 8,
+ /** Corrects an off-by-one error in some places (tileh 12 and 9) (TODO -- find source of error) */
+ ELRAIL_ELEV_CORR = ELRAIL_ELEVATION + 1,
+ /** Wires that a draw one level higher than the north corner. */
+ ELRAIL_ELEVRAISE = ELRAIL_ELEVATION + TILE_HEIGHT
+};
+
+static const SortableSpriteStruct CatenarySpriteData[] = {
+/* X direction */
+ /* Flat tiles: */
+ /* Wires */
+ { SPR_WIRE_X_SW, 0, 8, 16, 1, 1, ELRAIL_ELEVATION }, //! 0: Wire in X direction, pylon on the SW end only
+ { SPR_WIRE_X_NE, 0, 8, 16, 1, 1, ELRAIL_ELEVATION }, //! 1: Wire in X direction, pylon on the NE end
+ { SPR_WIRE_X_SHORT, 0, 8, 16, 1, 1, ELRAIL_ELEVATION }, //! 2: Wire in X direction, pylon on both ends
+
+ /* "up" tiles */
+ /* Wires */
+ { SPR_WIRE_X_SW_UP, 0, 8, 16, 8, 1, ELRAIL_ELEVRAISE }, //! 3: Wire in X pitch up, pylon on the SW end only
+ { SPR_WIRE_X_NE_UP, 0, 8, 16, 8, 1, ELRAIL_ELEVRAISE }, //! 4: Wire in X pitch up, pylon on the NE end
+ { SPR_WIRE_X_SHORT_UP, 0, 8, 16, 8, 1, ELRAIL_ELEVRAISE }, //! 5: Wire in X pitch up, pylon on both ends
+
+ /* "down" tiles */
+ /* Wires */
+ { SPR_WIRE_X_SW_DOWN, 0, 8, 16, 8, 1, ELRAIL_ELEV_CORR }, //! 6: Wire in X pitch down, pylon on the SW end
+ { SPR_WIRE_X_NE_DOWN, 0, 8, 16, 8, 1, ELRAIL_ELEV_CORR }, //! 7: Wire in X pitch down, pylon on the NE end
+ { SPR_WIRE_X_SHORT_DOWN, 0, 8, 16, 8, 1, ELRAIL_ELEV_CORR }, //! 8: Wire in X pitch down, pylon on both ends
+
+
+/* Y direction */
+ /* Flat tiles: */
+ /* Wires */
+ { SPR_WIRE_Y_SE, 8, 0, 1, 16, 1, ELRAIL_ELEVATION }, //! 9: Wire in Y direction, pylon on the SE end only
+ { SPR_WIRE_Y_NW, 8, 0, 1, 16, 1, ELRAIL_ELEVATION }, //!10: Wire in Y direction, pylon on the NW end
+ { SPR_WIRE_Y_SHORT, 8, 0, 1, 16, 1, ELRAIL_ELEVATION }, //!11: Wire in Y direction, pylon on both ends
+
+ /* "up" tiles */
+ /* Wires */
+ { SPR_WIRE_Y_SE_UP, 8, 0, 8, 16, 1, ELRAIL_ELEVRAISE }, //!12: Wire in Y pitch up, pylon on the SE end only
+ { SPR_WIRE_Y_NW_UP, 8, 0, 8, 16, 1, ELRAIL_ELEVRAISE }, //!13: Wire in Y pitch up, pylon on the NW end
+ { SPR_WIRE_Y_SHORT_UP, 8, 0, 8, 16, 1, ELRAIL_ELEVRAISE }, //!14: Wire in Y pitch up, pylon on both ends
+
+ /* "down" tiles */
+ /* Wires */
+ { SPR_WIRE_Y_SE_DOWN, 8, 0, 8, 16, 1, ELRAIL_ELEV_CORR }, //!15: Wire in Y pitch down, pylon on the SE end
+ { SPR_WIRE_Y_NW_DOWN, 8, 0, 8, 16, 1, ELRAIL_ELEV_CORR }, //!16: Wire in Y pitch down, pylon on the NW end
+ { SPR_WIRE_Y_SHORT_DOWN, 8, 0, 8, 16, 1, ELRAIL_ELEV_CORR }, //!17: Wire in Y pitch down, pylon on both ends
+
+/* NS Direction */
+ { SPR_WIRE_NS_SHORT, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!18: LEFT trackbit wire, pylon on both ends
+ { SPR_WIRE_NS_SHORT, 0, 8, 8, 8, 1, ELRAIL_ELEVATION }, //!19: RIGHT trackbit wire, pylon on both ends
+
+ { SPR_WIRE_NS_N, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!20: LEFT trackbit wire, pylon on N end
+ { SPR_WIRE_NS_N, 0, 8, 8, 8, 1, ELRAIL_ELEVATION }, //!21: RIGHT trackbit wire, pylon on N end
+
+ { SPR_WIRE_NS_S, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!22: LEFT trackbit wire, pylon on S end
+ { SPR_WIRE_NS_S, 0, 8, 8, 8, 1, ELRAIL_ELEVATION }, //!23: RIGHT trackbit wire, pylon on S end
+
+/* EW Direction */
+ { SPR_WIRE_EW_SHORT, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!24: UPPER trackbit wire, pylon on both ends
+ { SPR_WIRE_EW_SHORT, 16, 8, 8, 8, 1, ELRAIL_ELEVATION }, //!25: LOWER trackbit wire, pylon on both ends
+
+ { SPR_WIRE_EW_W, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!28: UPPER trackbit wire, pylon on both ends
+ { SPR_WIRE_EW_W, 16, 8, 8, 8, 1, ELRAIL_ELEVATION }, //!29: LOWER trackbit wire, pylon on both ends
+
+ { SPR_WIRE_EW_E, 8, 0, 8, 8, 1, ELRAIL_ELEVATION }, //!32: UPPER trackbit wire, pylon on both ends
+ { SPR_WIRE_EW_E, 16, 8, 8, 8, 1, ELRAIL_ELEVATION } //!33: LOWER trackbit wire, pylon on both ends
+};
+
+static const SortableSpriteStruct CatenarySpriteData_Depot[] = {
+ { SPR_WIRE_DEPOT_NE, 0, 8, 8, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE depot exit
+ { SPR_WIRE_DEPOT_SE, 8, 0, 1, 8, 1, ELRAIL_ELEVATION }, //! Wire for SE depot exit
+ { SPR_WIRE_DEPOT_SW, 0, 8, 8, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW depot exit
+ { SPR_WIRE_DEPOT_NW, 8, 0, 1, 8, 1, ELRAIL_ELEVATION } //! Wire for NW depot exit
+};
+
+/** Refers to a certain element of the catenary.
+ * Identifiers for Wires:
+ * <ol><li>Direction of the wire</li>
+ * <li>Slope of the tile for diagonals, placement inside the track for horiz/vertical pieces</li>
+ * <li>Place where a pylon shoule be</li></ol>
+ * Identifiers for Pylons:
+ * <ol><li>Direction of the wire</li>
+ * <li>Slope of the tile</li>
+ * <li>Position of the Pylon relative to the track</li>
+ * <li>Position of the Pylon inside the tile</li></ol>
+ */
+typedef enum {
+ WIRE_X_FLAT_SW,
+ WIRE_X_FLAT_NE,
+ WIRE_X_FLAT_BOTH,
+
+ WIRE_X_UP_SW,
+ WIRE_X_UP_NE,
+ WIRE_X_UP_BOTH,
+
+ WIRE_X_DOWN_SW,
+ WIRE_X_DOWN_NE,
+ WIRE_X_DOWN_BOTH,
+
+ WIRE_Y_FLAT_SE,
+ WIRE_Y_FLAT_NW,
+ WIRE_Y_FLAT_BOTH,
+
+ WIRE_Y_UP_SE,
+ WIRE_Y_UP_NW,
+ WIRE_Y_UP_BOTH,
+
+ WIRE_Y_DOWN_SE,
+ WIRE_Y_DOWN_NW,
+ WIRE_Y_DOWN_BOTH,
+
+ WIRE_NS_W_BOTH,
+ WIRE_NS_E_BOTH,
+
+ WIRE_NS_W_N,
+ WIRE_NS_E_N,
+
+ WIRE_NS_W_S,
+ WIRE_NS_E_S,
+
+ WIRE_EW_N_BOTH,
+ WIRE_EW_S_BOTH,
+
+ WIRE_EW_N_W,
+ WIRE_EW_S_W,
+
+ WIRE_EW_N_E,
+ WIRE_EW_S_E,
+
+ INVALID_CATENARY = 0xFF
+} CatenarySprite;
+
+/* Selects a Wire (with white and grey ends) depending on whether:
+ * a) none (should never happen)
+ * b) the first
+ * c) the second
+ * d) both
+ * PCP exists.*/
+static const CatenarySprite Wires[5][TRACK_END][4] = {
+ { /* Tileh == 0 */
+ {INVALID_CATENARY, WIRE_X_FLAT_NE, WIRE_X_FLAT_SW, WIRE_X_FLAT_BOTH},
+ {INVALID_CATENARY, WIRE_Y_FLAT_SE, WIRE_Y_FLAT_NW, WIRE_Y_FLAT_BOTH},
+ {INVALID_CATENARY, WIRE_EW_N_W, WIRE_EW_N_E, WIRE_EW_N_BOTH},
+ {INVALID_CATENARY, WIRE_EW_S_E, WIRE_EW_S_W, WIRE_EW_S_BOTH},
+ {INVALID_CATENARY, WIRE_NS_W_S, WIRE_NS_W_N, WIRE_NS_W_BOTH},
+ {INVALID_CATENARY, WIRE_NS_E_N, WIRE_NS_E_S, WIRE_NS_E_BOTH},
+ }, { /* Tileh == 3 */
+ {INVALID_CATENARY, WIRE_X_UP_NE, WIRE_X_UP_SW, WIRE_X_UP_BOTH},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ }, { /* Tileh == 6 */
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, WIRE_Y_UP_SE, WIRE_Y_UP_NW, WIRE_Y_UP_BOTH},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ }, { /* Tileh == 9 */
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, WIRE_Y_DOWN_SE, WIRE_Y_DOWN_NW, WIRE_Y_DOWN_BOTH},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ }, { /* Tileh == 12 */
+ {INVALID_CATENARY, WIRE_X_DOWN_NE, WIRE_X_DOWN_SW, WIRE_X_DOWN_BOTH},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
+ }
+};
+
+#endif /* ELRAIL_DATA_H */
diff --git a/src/table/engines.h b/src/table/engines.h
new file mode 100644
index 000000000..08c4cea00
--- /dev/null
+++ b/src/table/engines.h
@@ -0,0 +1,689 @@
+/* $Id$ */
+
+#ifndef ENGINES_H
+#define ENGINES_H
+
+/** @file table/engines.h
+ * This file contains all the data for vehicles
+ */
+
+#include "../sound.h"
+
+/** Writes the properties of a train or road vehicle into the EngineInfo struct.
+ * @see EngineInfo
+ * @param a Introduction date
+ * @param e Rail Type of the vehicle
+ * @param f Bitmask of the climates
+ * @note the 5 between d and e is the load amount
+ */
+#define MK(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, b, c, d, 5, e, f, 0, 8, 0, 0 }
+/** Writes the properties of a train carriage into the EngineInfo struct.
+ * @see EngineInfo
+ * @param a Introduction date
+ * @param e Rail Type of the vehicle
+ * @param f Bitmask of the climates
+ * @note the 0x80 in parameter b sets the "is carriage bit"
+ * @note the 5 between d and e is the load amount
+ */
+#define MW(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, b | 0x80, c, d, 5, e, f, 0, 8, 0, 0 }
+
+/** Writes the properties of a ship into the EngineInfo struct.
+ * @see MK
+ * @note the 10 between d and e is the load amount
+ */
+#define MS(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, b, c, d, 10, e, f, 0, 8, 0, 0 }
+
+/** Writes the properties of an aeroplane into the EngineInfo struct.
+ * @see MK
+ * @note the 20 between d and e is the load amount
+ */
+#define MA(a, b, c, d, e, f) { DAYS_TILL_ORIGINAL_BASE_YEAR + a, b, c, d, 20, e, f, 0, 8, 0, 0 }
+
+// Rail types
+// R = Conventional railway
+// E = Electrified railway
+// M = Monorail
+// L = MagLev
+#define R 0
+#define E 1
+#define M 2
+#define L 3
+// Climates
+// T = Temperate
+// A = Arctic
+// S = Sub-Tropic
+// Y = Toyland
+#define T 1
+#define A 2
+#define S 4
+#define Y 8
+const EngineInfo orig_engine_info[] = {
+ MK( 1827, 20, 15, 30, R, T ), /* 0 Kirby Paul Tank (Steam) */
+ MK( 12784, 20, 22, 30, R, A|S ), /* 1 MJS 250 (Diesel) */
+ MK( 9497, 20, 20, 50, R, Y), /* 2 Ploddyphut Choo-Choo */
+ MK( 11688, 20, 20, 30, R, Y), /* 3 Powernaut Choo-Choo */
+ MK( 16802, 20, 20, 30, R, Y), /* 4 Mightymover Choo-Choo */
+ MK( 18993, 20, 20, 30, R, Y), /* 5 Ploddyphut Diesel */
+ MK( 20820, 20, 20, 30, R, Y), /* 6 Powernaut Diesel */
+ MK( 8766, 20, 20, 30, R, A|S ), /* 7 Wills 2-8-0 (Steam) */
+ MK( 5114, 20, 21, 30, R, T ), /* 8 Chaney 'Jubilee' (Steam) */
+ MK( 5479, 20, 20, 30, R, T ), /* 9 Ginzu 'A4' (Steam) */
+ MK( 12419, 20, 23, 25, R, T ), /* 10 SH '8P' (Steam) */
+ MK( 13149, 20, 12, 30, R, T ), /* 11 Manley-Morel DMU (Diesel) */
+ MK( 23376, 20, 15, 35, R, T ), /* 12 'Dash' (Diesel) */
+ MK( 14976, 20, 18, 28, R, T ), /* 13 SH/Hendry '25' (Diesel) */
+ MK( 14245, 20, 20, 30, R, T ), /* 14 UU '37' (Diesel) */
+ MK( 15341, 20, 22, 33, R, T ), /* 15 Floss '47' (Diesel) */
+ MK( 14976, 20, 20, 25, R, A|S ), /* 16 CS 4000 (Diesel) */
+ MK( 16437, 20, 20, 30, R, A|S ), /* 17 CS 2400 (Diesel) */
+ MK( 18993, 20, 22, 30, R, A|S ), /* 18 Centennial (Diesel) */
+ MK( 13880, 20, 22, 30, R, A|S ), /* 19 Kelling 3100 (Diesel) */
+ MK( 20454, 20, 22, 30, R, A|S ), /* 20 Turner Turbo (Diesel) */
+ MK( 16071, 20, 22, 30, R, A|S ), /* 21 MJS 1000 (Diesel) */
+ MK( 20820, 20, 20, 25, R, T ), /* 22 SH '125' (Diesel) */
+ MK( 16437, 20, 23, 30, E, T ), /* 23 SH '30' (Electric) */
+ MK( 19359, 20, 23, 80, E, T ), /* 24 SH '40' (Electric) */
+ MK( 23376, 20, 25, 30, E, T ), /* 25 'T.I.M.' (Electric) */
+ MK( 26298, 20, 25, 50, E, T ), /* 26 'AsiaStar' (Electric) */
+ MW( 1827, 20, 20, 50, R, T|A|S|Y), /* 27 Passenger Carriage */
+ MW( 1827, 20, 20, 50, R, T|A|S|Y), /* 28 Mail Van */
+ MW( 1827, 20, 20, 50, R, T|A ), /* 29 Coal Truck */
+ MW( 1827, 20, 20, 50, R, T|A|S ), /* 30 Oil Tanker */
+ MW( 1827, 20, 20, 50, R, T|A ), /* 31 Livestock Van */
+ MW( 1827, 20, 20, 50, R, T|A|S ), /* 32 Goods Van */
+ MW( 1827, 20, 20, 50, R, T|A|S ), /* 33 Grain Hopper */
+ MW( 1827, 20, 20, 50, R, T|A|S ), /* 34 Wood Truck */
+ MW( 1827, 20, 20, 50, R, T ), /* 35 Iron Ore Hopper */
+ MW( 1827, 20, 20, 50, R, T ), /* 36 Steel Truck */
+ MW( 1827, 20, 20, 50, R, T|A|S ), /* 37 Armoured Van */
+ MW( 1827, 20, 20, 50, R, A|S ), /* 38 Food Van */
+ MW( 1827, 20, 20, 50, R, A ), /* 39 Paper Truck */
+ MW( 1827, 20, 20, 50, R, S ), /* 40 Copper Ore Hopper */
+ MW( 1827, 20, 20, 50, R, S ), /* 41 Water Tanker */
+ MW( 1827, 20, 20, 50, R, S ), /* 42 Fruit Truck */
+ MW( 1827, 20, 20, 50, R, S ), /* 43 Rubber Truck */
+ MW( 1827, 20, 20, 50, R, Y), /* 44 Sugar Truck */
+ MW( 1827, 20, 20, 50, R, Y), /* 45 Candyfloss Hopper */
+ MW( 1827, 20, 20, 50, R, Y), /* 46 Toffee Hopper */
+ MW( 1827, 20, 20, 50, R, Y), /* 47 Bubble Van */
+ MW( 1827, 20, 20, 50, R, Y), /* 48 Cola Tanker */
+ MW( 1827, 20, 20, 50, R, Y), /* 49 Sweet Van */
+ MW( 1827, 20, 20, 50, R, Y), /* 50 Toy Van */
+ MW( 1827, 20, 20, 50, R, Y), /* 51 Battery Truck */
+ MW( 1827, 20, 20, 50, R, Y), /* 52 Fizzy Drink Truck */
+ MW( 1827, 20, 20, 50, R, Y), /* 53 Plastic Truck */
+ MK( 28490, 20, 20, 50, M, T|A|S ), /* 54 'X2001' (Electric) */
+ MK( 31047, 20, 20, 50, M, T|A|S ), /* 55 'Millennium Z1' (Electric) */
+ MK( 28855, 20, 20, 50, M, Y), /* 56 Wizzowow Z99 */
+ MW( 1827, 20, 20, 50, M, T|A|S|Y), /* 57 Passenger Carriage */
+ MW( 1827, 20, 20, 50, M, T|A|S|Y), /* 58 Mail Van */
+ MW( 1827, 20, 20, 50, M, T|A ), /* 59 Coal Truck */
+ MW( 1827, 20, 20, 50, M, T|A|S ), /* 60 Oil Tanker */
+ MW( 1827, 20, 20, 50, M, T|A ), /* 61 Livestock Van */
+ MW( 1827, 20, 20, 50, M, T|A|S ), /* 62 Goods Van */
+ MW( 1827, 20, 20, 50, M, T|A|S ), /* 63 Grain Hopper */
+ MW( 1827, 20, 20, 50, M, T|A|S ), /* 64 Wood Truck */
+ MW( 1827, 20, 20, 50, M, T ), /* 65 Iron Ore Hopper */
+ MW( 1827, 20, 20, 50, M, T ), /* 66 Steel Truck */
+ MW( 1827, 20, 20, 50, M, T|A|S ), /* 67 Armoured Van */
+ MW( 1827, 20, 20, 50, M, A|S ), /* 68 Food Van */
+ MW( 1827, 20, 20, 50, M, A ), /* 69 Paper Truck */
+ MW( 1827, 20, 20, 50, M, S ), /* 70 Copper Ore Hopper */
+ MW( 1827, 20, 20, 50, M, S ), /* 71 Water Tanker */
+ MW( 1827, 20, 20, 50, M, S ), /* 72 Fruit Truck */
+ MW( 1827, 20, 20, 50, M, S ), /* 73 Rubber Truck */
+ MW( 1827, 20, 20, 50, M, Y), /* 74 Sugar Truck */
+ MW( 1827, 20, 20, 50, M, Y), /* 75 Candyfloss Hopper */
+ MW( 1827, 20, 20, 50, M, Y), /* 76 Toffee Hopper */
+ MW( 1827, 20, 20, 50, M, Y), /* 77 Bubble Van */
+ MW( 1827, 20, 20, 50, M, Y), /* 78 Cola Tanker */
+ MW( 1827, 20, 20, 50, M, Y), /* 79 Sweet Van */
+ MW( 1827, 20, 20, 50, M, Y), /* 80 Toy Van */
+ MW( 1827, 20, 20, 50, M, Y), /* 81 Battery Truck */
+ MW( 1827, 20, 20, 50, M, Y), /* 82 Fizzy Drink Truck */
+ MW( 1827, 20, 20, 50, M, Y), /* 83 Plastic Truck */
+ MK( 36525, 20, 20, 50, L, T|A|S ), /* 84 Lev1 'Leviathan' (Electric) */
+ MK( 39447, 20, 20, 50, L, T|A|S ), /* 85 Lev2 'Cyclops' (Electric) */
+ MK( 42004, 20, 20, 50, L, T|A|S ), /* 86 Lev3 'Pegasus' (Electric) */
+ MK( 42735, 20, 20, 50, L, T|A|S ), /* 87 Lev4 'Chimaera' (Electric) */
+ MK( 36891, 20, 20, 60, L, Y), /* 88 Wizzowow Rocketeer */
+ MW( 1827, 20, 20, 50, L, T|A|S|Y), /* 89 Passenger Carriage */
+ MW( 1827, 20, 20, 50, L, T|A|S|Y), /* 90 Mail Van */
+ MW( 1827, 20, 20, 50, L, T|A ), /* 91 Coal Truck */
+ MW( 1827, 20, 20, 50, L, T|A|S ), /* 92 Oil Tanker */
+ MW( 1827, 20, 20, 50, L, T|A ), /* 93 Livestock Van */
+ MW( 1827, 20, 20, 50, L, T|A|S ), /* 94 Goods Van */
+ MW( 1827, 20, 20, 50, L, T|A|S ), /* 95 Grain Hopper */
+ MW( 1827, 20, 20, 50, L, T|A|S ), /* 96 Wood Truck */
+ MW( 1827, 20, 20, 50, L, T ), /* 97 Iron Ore Hopper */
+ MW( 1827, 20, 20, 50, L, T ), /* 98 Steel Truck */
+ MW( 1827, 20, 20, 50, L, T|A|S ), /* 99 Armoured Van */
+ MW( 1827, 20, 20, 50, L, A|S ), /* 100 Food Van */
+ MW( 1827, 20, 20, 50, L, A ), /* 101 Paper Truck */
+ MW( 1827, 20, 20, 50, L, S ), /* 102 Copper Ore Hopper */
+ MW( 1827, 20, 20, 50, L, S ), /* 103 Water Tanker */
+ MW( 1827, 20, 20, 50, L, S ), /* 104 Fruit Truck */
+ MW( 1827, 20, 20, 50, L, S ), /* 105 Rubber Truck */
+ MW( 1827, 20, 20, 50, L, Y), /* 106 Sugar Truck */
+ MW( 1827, 20, 20, 50, L, Y), /* 107 Candyfloss Hopper */
+ MW( 1827, 20, 20, 50, L, Y), /* 108 Toffee Hopper */
+ MW( 1827, 20, 20, 50, L, Y), /* 109 Bubble Van */
+ MW( 1827, 20, 20, 50, L, Y), /* 110 Cola Tanker */
+ MW( 1827, 20, 20, 50, L, Y), /* 111 Sweet Van */
+ MW( 1827, 20, 20, 50, L, Y), /* 112 Toy Van */
+ MW( 1827, 20, 20, 50, L, Y), /* 113 Battery Truck */
+ MW( 1827, 20, 20, 50, L, Y), /* 114 Fizzy Drink Truck */
+ MW( 1827, 20, 20, 50, L, Y), /* 115 Plastic Truck */
+ MK( 3378, 20, 12, 40, 0, T|A|S ), /* 116 MPS Regal Bus */
+ MK( 16071, 20, 15, 30, 0, T|A|S ), /* 117 Hereford Leopard Bus */
+ MK( 24107, 20, 15, 40, 0, T|A|S ), /* 118 Foster Bus */
+ MK( 32142, 20, 15, 80, 0, T|A|S ), /* 119 Foster MkII Superbus */
+ MK( 9132, 20, 15, 40, 0, Y), /* 120 Ploddyphut MkI Bus */
+ MK( 18993, 20, 15, 40, 0, Y), /* 121 Ploddyphut MkII Bus */
+ MK( 32873, 20, 15, 80, 0, Y), /* 122 Ploddyphut MkIII Bus */
+ MK( 5479, 20, 15, 55, 0, T|A ), /* 123 Balogh Coal Truck */
+ MK( 20089, 20, 15, 55, 0, T|A ), /* 124 Uhl Coal Truck */
+ MK( 33969, 20, 15, 85, 0, T|A ), /* 125 DW Coal Truck */
+ MK( 5479, 20, 15, 55, 0, T|A|S ), /* 126 MPS Mail Truck */
+ MK( 21550, 20, 15, 55, 0, T|A|S ), /* 127 Reynard Mail Truck */
+ MK( 35795, 20, 15, 85, 0, T|A|S ), /* 128 Perry Mail Truck */
+ MK( 5479, 20, 15, 55, 0, Y), /* 129 MightyMover Mail Truck */
+ MK( 21550, 20, 15, 55, 0, Y), /* 130 Powernaught Mail Truck */
+ MK( 35795, 20, 15, 85, 0, Y), /* 131 Wizzowow Mail Truck */
+ MK( 5479, 20, 15, 55, 0, T|A|S ), /* 132 Witcombe Oil Tanker */
+ MK( 19359, 20, 15, 55, 0, T|A|S ), /* 133 Foster Oil Tanker */
+ MK( 31047, 20, 15, 85, 0, T|A|S ), /* 134 Perry Oil Tanker */
+ MK( 5479, 20, 15, 55, 0, T|A ), /* 135 Talbott Livestock Van */
+ MK( 21915, 20, 15, 55, 0, T|A ), /* 136 Uhl Livestock Van */
+ MK( 37256, 20, 15, 85, 0, T|A ), /* 137 Foster Livestock Van */
+ MK( 5479, 20, 15, 55, 0, T|A|S ), /* 138 Balogh Goods Truck */
+ MK( 19724, 20, 15, 55, 0, T|A|S ), /* 139 Craighead Goods Truck */
+ MK( 31047, 20, 15, 85, 0, T|A|S ), /* 140 Goss Goods Truck */
+ MK( 5479, 20, 15, 55, 0, T|A|S ), /* 141 Hereford Grain Truck */
+ MK( 21185, 20, 15, 55, 0, T|A|S ), /* 142 Thomas Grain Truck */
+ MK( 32873, 20, 15, 85, 0, T|A|S ), /* 143 Goss Grain Truck */
+ MK( 5479, 20, 15, 55, 0, T|A|S ), /* 144 Witcombe Wood Truck */
+ MK( 19724, 20, 15, 55, 0, T|A|S ), /* 145 Foster Wood Truck */
+ MK( 35430, 20, 15, 85, 0, T|A|S ), /* 146 Moreland Wood Truck */
+ MK( 5479, 20, 15, 55, 0, T ), /* 147 MPS Iron Ore Truck */
+ MK( 20820, 20, 15, 55, 0, T ), /* 148 Uhl Iron Ore Truck */
+ MK( 33238, 20, 15, 85, 0, T ), /* 149 Chippy Iron Ore Truck */
+ MK( 5479, 20, 15, 55, 0, T ), /* 150 Balogh Steel Truck */
+ MK( 21185, 20, 15, 55, 0, T ), /* 151 Uhl Steel Truck */
+ MK( 31777, 20, 15, 85, 0, T ), /* 152 Kelling Steel Truck */
+ MK( 5479, 20, 15, 55, 0, T|A|S ), /* 153 Balogh Armoured Truck */
+ MK( 22281, 20, 15, 55, 0, T|A|S ), /* 154 Uhl Armoured Truck */
+ MK( 33603, 20, 15, 85, 0, T|A|S ), /* 155 Foster Armoured Truck */
+ MK( 5479, 20, 15, 55, 0, A|S ), /* 156 Foster Food Van */
+ MK( 18628, 20, 15, 55, 0, A|S ), /* 157 Perry Food Van */
+ MK( 30681, 20, 15, 85, 0, A|S ), /* 158 Chippy Food Van */
+ MK( 5479, 20, 15, 55, 0, A ), /* 159 Uhl Paper Truck */
+ MK( 21185, 20, 15, 55, 0, A ), /* 160 Balogh Paper Truck */
+ MK( 31777, 20, 15, 85, 0, A ), /* 161 MPS Paper Truck */
+ MK( 5479, 20, 15, 55, 0, S ), /* 162 MPS Copper Ore Truck */
+ MK( 20820, 20, 15, 55, 0, S ), /* 163 Uhl Copper Ore Truck */
+ MK( 33238, 20, 15, 85, 0, S ), /* 164 Goss Copper Ore Truck */
+ MK( 5479, 20, 15, 55, 0, S ), /* 165 Uhl Water Tanker */
+ MK( 20970, 20, 15, 55, 0, S ), /* 166 Balogh Water Tanker */
+ MK( 33388, 20, 15, 85, 0, S ), /* 167 MPS Water Tanker */
+ MK( 5479, 20, 15, 55, 0, S ), /* 168 Balogh Fruit Truck */
+ MK( 21335, 20, 15, 55, 0, S ), /* 169 Uhl Fruit Truck */
+ MK( 33753, 20, 15, 85, 0, S ), /* 170 Kelling Fruit Truck */
+ MK( 5479, 20, 15, 55, 0, S ), /* 171 Balogh Rubber Truck */
+ MK( 20604, 20, 15, 55, 0, S ), /* 172 Uhl Rubber Truck */
+ MK( 33023, 20, 15, 85, 0, S ), /* 173 RMT Rubber Truck */
+ MK( 5479, 20, 15, 55, 0, Y), /* 174 MightyMover Sugar Truck */
+ MK( 19724, 20, 15, 55, 0, Y), /* 175 Powernaught Sugar Truck */
+ MK( 33238, 20, 15, 85, 0, Y), /* 176 Wizzowow Sugar Truck */
+ MK( 5479, 20, 15, 55, 0, Y), /* 177 MightyMover Cola Truck */
+ MK( 20089, 20, 15, 55, 0, Y), /* 178 Powernaught Cola Truck */
+ MK( 33603, 20, 15, 85, 0, Y), /* 179 Wizzowow Cola Truck */
+ MK( 5479, 20, 15, 55, 0, Y), /* 180 MightyMover Candyfloss Truck */
+ MK( 20454, 20, 15, 55, 0, Y), /* 181 Powernaught Candyfloss Truck */
+ MK( 33969, 20, 15, 85, 0, Y), /* 182 Wizzowow Candyfloss Truck */
+ MK( 5479, 20, 15, 55, 0, Y), /* 183 MightyMover Toffee Truck */
+ MK( 20820, 20, 15, 55, 0, Y), /* 184 Powernaught Toffee Truck */
+ MK( 34334, 20, 15, 85, 0, Y), /* 185 Wizzowow Toffee Truck */
+ MK( 5479, 20, 15, 55, 0, Y), /* 186 MightyMover Toy Van */
+ MK( 21185, 20, 15, 55, 0, Y), /* 187 Powernaught Toy Van */
+ MK( 34699, 20, 15, 85, 0, Y), /* 188 Wizzowow Toy Van */
+ MK( 5479, 20, 15, 55, 0, Y), /* 189 MightyMover Sweet Truck */
+ MK( 21550, 20, 15, 55, 0, Y), /* 190 Powernaught Sweet Truck */
+ MK( 35064, 20, 15, 85, 0, Y), /* 191 Wizzowow Sweet Truck */
+ MK( 5479, 20, 15, 55, 0, Y), /* 192 MightyMover Battery Truck */
+ MK( 19874, 20, 15, 55, 0, Y), /* 193 Powernaught Battery Truck */
+ MK( 35430, 20, 15, 85, 0, Y), /* 194 Wizzowow Battery Truck */
+ MK( 5479, 20, 15, 55, 0, Y), /* 195 MightyMover Fizzy Drink Truck */
+ MK( 20239, 20, 15, 55, 0, Y), /* 196 Powernaught Fizzy Drink Truck */
+ MK( 35795, 20, 15, 85, 0, Y), /* 197 Wizzowow Fizzy Drink Truck */
+ MK( 5479, 20, 15, 55, 0, Y), /* 198 MightyMover Plastic Truck */
+ MK( 20604, 20, 15, 55, 0, Y), /* 199 Powernaught Plastic Truck */
+ MK( 32873, 20, 15, 85, 0, Y), /* 200 Wizzowow Plastic Truck */
+ MK( 5479, 20, 15, 55, 0, Y), /* 201 MightyMover Bubble Truck */
+ MK( 20970, 20, 15, 55, 0, Y), /* 202 Powernaught Bubble Truck */
+ MK( 33023, 20, 15, 85, 0, Y), /* 203 Wizzowow Bubble Truck */
+ MS( 2922, 5, 30, 50, 0, T|A|S ), /* 204 MPS Oil Tanker */
+ MS( 17167, 5, 30, 90, 0, T|A|S ), /* 205 CS-Inc. Oil Tanker */
+ MS( 2192, 5, 30, 55, 0, T|A|S ), /* 206 MPS Passenger Ferry */
+ MS( 18628, 5, 30, 90, 0, T|A|S ), /* 207 FFP Passenger Ferry */
+ MS( 17257, 10, 25, 90, 0, T|A|S ), /* 208 Bakewell 300 Hovercraft */
+ MS( 9587, 5, 30, 40, 0, Y), /* 209 Chugger-Chug Passenger Ferry */
+ MS( 20544, 5, 30, 90, 0, Y), /* 210 Shivershake Passenger Ferry */
+ MS( 2557, 5, 30, 55, 0, T|A|S ), /* 211 Yate Cargo ship */
+ MS( 19724, 5, 30, 98, 0, T|A|S ), /* 212 Bakewell Cargo ship */
+ MS( 9587, 5, 30, 45, 0, Y), /* 213 Mightymover Cargo ship */
+ MS( 22371, 5, 30, 90, 0, Y), /* 214 Powernaut Cargo ship */
+ MA( 2922, 20, 20, 20, 0, T|A|S ), /* 215 Sampson U52 */
+ MA( 9922, 20, 24, 20, 0, T|A|S ), /* 216 Coleman Count */
+ MA( 12659, 20, 18, 20, 0, T|A|S ), /* 217 FFP Dart */
+ MA( 17652, 20, 25, 35, 0, T|A|S ), /* 218 Yate Haugan */
+ MA( 4929, 20, 30, 30, 0, T|A|S ), /* 219 Bakewell Cotswald LB-3 */
+ MA( 13695, 20, 23, 25, 0, T|A|S ), /* 220 Bakewell Luckett LB-8 */
+ MA( 16341, 20, 26, 30, 0, T|A|S ), /* 221 Bakewell Luckett LB-9 */
+ MA( 21395, 20, 25, 30, 0, T|A|S ), /* 222 Bakewell Luckett LB80 */
+ MA( 18263, 20, 20, 30, 0, T|A|S ), /* 223 Bakewell Luckett LB-10 */
+ MA( 25233, 20, 25, 30, 0, T|A|S ), /* 224 Bakewell Luckett LB-11 */
+ MA( 15371, 20, 22, 25, 0, T|A|S ), /* 225 Yate Aerospace YAC 1-11 */
+ MA( 15461, 20, 25, 25, 0, T|A|S ), /* 226 Darwin 100 */
+ MA( 16952, 20, 22, 25, 0, T|A|S ), /* 227 Darwin 200 */
+ MA( 17227, 20, 25, 30, 0, T|A|S ), /* 228 Darwin 300 */
+ MA( 22371, 20, 25, 35, 0, T|A|S ), /* 229 Darwin 400 */
+ MA( 22341, 20, 25, 30, 0, T|A|S ), /* 230 Darwin 500 */
+ MA( 27209, 20, 25, 30, 0, T|A|S ), /* 231 Darwin 600 */
+ MA( 17988, 20, 20, 30, 0, T|A|S ), /* 232 Guru Galaxy */
+ MA( 18993, 20, 24, 35, 0, T|A|S ), /* 233 Airtaxi A21 */
+ MA( 22401, 20, 24, 30, 0, T|A|S ), /* 234 Airtaxi A31 */
+ MA( 24472, 20, 24, 30, 0, T|A|S ), /* 235 Airtaxi A32 */
+ MA( 26724, 20, 24, 30, 0, T|A|S ), /* 236 Airtaxi A33 */
+ MA( 22005, 20, 25, 30, 0, T|A|S ), /* 237 Yate Aerospace YAe46 */
+ MA( 24107, 20, 20, 35, 0, T|A|S ), /* 238 Dinger 100 */
+ MA( 29310, 20, 25, 60, 0, T|A|S ), /* 239 AirTaxi A34-1000 */
+ MA( 35520, 20, 22, 30, 0, T|A|S ), /* 240 Yate Z-Shuttle */
+ MA( 36981, 20, 22, 30, 0, T|A|S ), /* 241 Kelling K1 */
+ MA( 38807, 20, 22, 50, 0, T|A|S ), /* 242 Kelling K6 */
+ MA( 42094, 20, 25, 30, 0, T|A|S ), /* 243 Kelling K7 */
+ MA( 44651, 20, 23, 30, 0, T|A|S ), /* 244 Darwin 700 */
+ MA( 40268, 20, 25, 30, 0, T|A|S ), /* 245 FFP Hyperdart 2 */
+ MA( 33693, 20, 25, 50, 0, T|A|S ), /* 246 Dinger 200 */
+ MA( 32963, 20, 20, 60, 0, T|A|S ), /* 247 Dinger 1000 */
+ MA( 9222, 20, 20, 35, 0, Y), /* 248 Ploddyphut 100 */
+ MA( 12874, 20, 20, 35, 0, Y), /* 249 Ploddyphut 500 */
+ MA( 16892, 20, 20, 35, 0, Y), /* 250 Flashbang X1 */
+ MA( 21275, 20, 20, 99, 0, Y), /* 251 Juggerplane M1 */
+ MA( 23832, 20, 20, 99, 0, Y), /* 252 Flashbang Wizzer */
+ MA( 13575, 20, 20, 40, 0, T|A|S ), /* 253 Tricario Helicopter */
+ MA( 28215, 20, 20, 30, 0, T|A|S ), /* 254 Guru X2 Helicopter */
+ MK( 13575, 20, 20, 99, 0, Y), /* 255 */
+};
+#undef Y
+#undef S
+#undef A
+#undef T
+#undef L
+#undef M
+#undef R
+#undef E
+#undef MK
+#undef MW
+#undef MS
+#undef MA
+
+/** Writes the properties of a rail vehicle into the RailVehicleInfo struct.
+ * @see RailVehicleInfo
+ * @param a image_index
+ * @param b flags
+ * @param c base_cost
+ * @param d max_speed (kph)
+ * @param e power (hp)
+ * @param f weight
+ * @param g running_cost_base
+ * @param h running_cost_class / engclass
+ * @param i capacity
+ * @param j cargo_type
+ * @param k ai_rank
+ * Tractive effort coefficient by default is the same as TTDPatch, 0.30*256=76
+ */
+#define RVI(a, b, c, d, e, f, g, h, i, j, k) { a, b, c, d, e, f, g, h, h, i, j, k, 0, 0, 0, 0, 76, 0 }
+#define M RVI_MULTIHEAD
+#define W RVI_WAGON
+#define S 0
+#define D 1
+#define E 2
+const RailVehicleInfo orig_rail_vehicle_info[NUM_TRAIN_ENGINES] = {
+ // image_index max_speed (kph) running_cost_base
+ // | flags | power (hp) | running_cost_class & engclass
+ // | | base_cost | weight | | capacity
+ // | | | | | | | | | cargo_type
+ // | | | | | | | | | |
+ RVI( 2, 0, 7, 64, 300, 47, 50, S, 0, 0 , 1 ), /* 0 */
+ RVI( 19, 0, 8, 80, 600, 65, 65, D, 0, 0 , 4 ), /* 1 */
+ RVI( 2, 0, 10, 72, 400, 85, 90, S, 0, 0 , 7 ), /* 2 */
+ RVI( 0, 0, 15, 96, 900, 130, 130, S, 0, 0 , 19 ), /* 3 */
+ RVI( 1, 0, 19, 112, 1000, 140, 145, S, 0, 0 , 20 ), /* 4 */
+ RVI( 12, 0, 16, 120, 1400, 95, 125, D, 0, 0 , 30 ), /* 5 */
+ RVI( 14, 0, 20, 152, 2000, 120, 135, D, 0, 0 , 31 ), /* 6 */
+ RVI( 3, 0, 14, 88, 1100, 145, 130, S, 0, 0 , 19 ), /* 7 */
+ RVI( 0, 0, 13, 112, 1000, 131, 120, S, 0, 0 , 20 ), /* 8 */
+ RVI( 1, 0, 19, 128, 1200, 162, 140, S, 0, 0 , 21 ), /* 9 */
+ RVI( 0, 0, 22, 144, 1600, 170, 130, S, 0, 0 , 22 ), /* 10 */
+ RVI( 8, M, 11, 112, 600/2,32/2, 85/2, D, 38, CT_PASSENGERS , 10 ), /* 11 */
+ RVI( 10, M, 14, 120, 700/2,38/2, 70/2, D, 40, CT_PASSENGERS , 11 ), /* 12 */
+ RVI( 4, 0, 15, 128, 1250, 72, 95, D, 0, 0 , 30 ), /* 13 */
+ RVI( 5, 0, 17, 144, 1750, 101, 120, D, 0, 0 , 31 ), /* 14 */
+ RVI( 4, 0, 18, 160, 2580, 112, 140, D, 0, 0 , 32 ), /* 15 */
+ RVI( 14, 0, 23, 96, 4000, 150, 135, D, 0, 0 , 33 ), /* 16 */
+ RVI( 12, 0, 16, 112, 2400, 120, 105, D, 0, 0 , 34 ), /* 17 */
+ RVI( 13, 0, 30, 112, 6600, 207, 155, D, 0, 0 , 35 ), /* 18 */
+ RVI( 15, 0, 18, 104, 1500, 110, 105, D, 0, 0 , 29 ), /* 19 */
+ RVI( 16, M, 35, 160, 3500/2,95/2, 205/2, D, 0, 0 , 45 ), /* 20 */
+ RVI( 18, 0, 21, 104, 2200, 120, 145, D, 0, 0 , 32 ), /* 21 */
+ RVI( 6, M, 20, 200, 4500/2,70/2, 190/2, D, 4, CT_MAIL , 50 ), /* 22 */
+ RVI( 20, 0, 26, 160, 3600, 84, 180, E, 0, 0 , 40 ), /* 23 */
+ RVI( 20, 0, 30, 176, 5000, 82, 205, E, 0, 0 , 41 ), /* 24 */
+ RVI( 21, M, 40, 240, 7000/2,90/2, 240/2, E, 0, 0 , 51 ), /* 25 */
+ RVI( 23, M, 43, 264, 8000/2,95/2, 250/2, E, 0, 0 , 52 ), /* 26 */
+ RVI( 33, W, 247, 0, 0, 25, 0, 0, 40, CT_PASSENGERS , 0 ), /* 27 */
+ RVI( 35, W, 228, 0, 0, 21, 0, 0, 30, CT_MAIL , 0 ), /* 28 */
+ RVI( 34, W, 176, 0, 0, 18, 0, 0, 30, CT_COAL , 0 ), /* 29 */
+ RVI( 36, W, 200, 0, 0, 24, 0, 0, 30, CT_OIL , 0 ), /* 30 */
+ RVI( 37, W, 192, 0, 0, 20, 0, 0, 25, CT_LIVESTOCK , 0 ), /* 31 */
+ RVI( 38, W, 190, 0, 0, 21, 0, 0, 25, CT_GOODS , 0 ), /* 32 */
+ RVI( 39, W, 182, 0, 0, 19, 0, 0, 30, CT_GRAIN , 0 ), /* 33 */
+ RVI( 40, W, 181, 0, 0, 16, 0, 0, 30, CT_WOOD , 0 ), /* 34 */
+ RVI( 41, W, 179, 0, 0, 19, 0, 0, 30, CT_IRON_ORE , 0 ), /* 35 */
+ RVI( 42, W, 196, 0, 0, 18, 0, 0, 20, CT_STEEL , 0 ), /* 36 */
+ RVI( 43, W, 255, 0, 0, 30, 0, 0, 20, CT_VALUABLES , 0 ), /* 37 */
+ RVI( 44, W, 191, 0, 0, 22, 0, 0, 25, CT_FOOD , 0 ), /* 38 */
+ RVI( 45, W, 196, 0, 0, 18, 0, 0, 20, CT_PAPER , 0 ), /* 39 */
+ RVI( 46, W, 179, 0, 0, 19, 0, 0, 30, CT_COPPER_ORE , 0 ), /* 40 */
+ RVI( 47, W, 199, 0, 0, 25, 0, 0, 25, CT_WATER , 0 ), /* 41 */
+ RVI( 48, W, 182, 0, 0, 18, 0, 0, 25, CT_FRUIT , 0 ), /* 42 */
+ RVI( 49, W, 185, 0, 0, 19, 0, 0, 21, CT_RUBBER , 0 ), /* 43 */
+ RVI( 50, W, 176, 0, 0, 19, 0, 0, 30, CT_SUGAR , 0 ), /* 44 */
+ RVI( 51, W, 178, 0, 0, 20, 0, 0, 30, CT_COTTON_CANDY, 0 ), /* 45 */
+ RVI( 52, W, 192, 0, 0, 20, 0, 0, 30, CT_TOFFEE , 0 ), /* 46 */
+ RVI( 53, W, 190, 0, 0, 21, 0, 0, 20, CT_BUBBLES , 0 ), /* 47 */
+ RVI( 54, W, 182, 0, 0, 24, 0, 0, 25, CT_COLA , 0 ), /* 48 */
+ RVI( 55, W, 181, 0, 0, 21, 0, 0, 25, CT_CANDY , 0 ), /* 49 */
+ RVI( 56, W, 183, 0, 0, 21, 0, 0, 20, CT_TOYS , 0 ), /* 50 */
+ RVI( 57, W, 196, 0, 0, 18, 0, 0, 22, CT_BATTERIES , 0 ), /* 51 */
+ RVI( 58, W, 193, 0, 0, 18, 0, 0, 25, CT_FIZZY_DRINKS, 0 ), /* 52 */
+ RVI( 59, W, 191, 0, 0, 18, 0, 0, 30, CT_PLASTIC , 0 ), /* 53 */
+ RVI( 25, 0, 52, 304, 9000, 95, 230, E, 0, 0 , 60 ), /* 54 */
+ RVI( 26, M, 60, 336, 10000/2,85/2, 240/2, E, 25, CT_PASSENGERS , 62 ), /* 55 */
+ RVI( 26, 0, 53, 320, 5000, 95, 230, E, 0, 0 , 63 ), /* 56 */
+ RVI( 60, W, 247, 0, 0, 25, 0, 0, 45, CT_PASSENGERS , 0 ), /* 57 */
+ RVI( 62, W, 228, 0, 0, 21, 0, 0, 35, CT_MAIL , 0 ), /* 58 */
+ RVI( 61, W, 176, 0, 0, 18, 0, 0, 35, CT_COAL , 0 ), /* 59 */
+ RVI( 63, W, 200, 0, 0, 24, 0, 0, 35, CT_OIL , 0 ), /* 60 */
+ RVI( 64, W, 192, 0, 0, 20, 0, 0, 30, CT_LIVESTOCK , 0 ), /* 61 */
+ RVI( 65, W, 190, 0, 0, 21, 0, 0, 30, CT_GOODS , 0 ), /* 62 */
+ RVI( 66, W, 182, 0, 0, 19, 0, 0, 35, CT_GRAIN , 0 ), /* 63 */
+ RVI( 67, W, 181, 0, 0, 16, 0, 0, 35, CT_WOOD , 0 ), /* 64 */
+ RVI( 68, W, 179, 0, 0, 19, 0, 0, 35, CT_IRON_ORE , 0 ), /* 65 */
+ RVI( 69, W, 196, 0, 0, 18, 0, 0, 25, CT_STEEL , 0 ), /* 66 */
+ RVI( 70, W, 255, 0, 0, 30, 0, 0, 25, CT_VALUABLES , 0 ), /* 67 */
+ RVI( 71, W, 191, 0, 0, 22, 0, 0, 30, CT_FOOD , 0 ), /* 68 */
+ RVI( 72, W, 196, 0, 0, 18, 0, 0, 25, CT_PAPER , 0 ), /* 69 */
+ RVI( 73, W, 179, 0, 0, 19, 0, 0, 35, CT_COPPER_ORE , 0 ), /* 70 */
+ RVI( 47, W, 199, 0, 0, 25, 0, 0, 30, CT_WATER , 0 ), /* 71 */
+ RVI( 48, W, 182, 0, 0, 18, 0, 0, 30, CT_FRUIT , 0 ), /* 72 */
+ RVI( 49, W, 185, 0, 0, 19, 0, 0, 26, CT_RUBBER , 0 ), /* 73 */
+ RVI( 50, W, 176, 0, 0, 19, 0, 0, 35, CT_SUGAR , 0 ), /* 74 */
+ RVI( 51, W, 178, 0, 0, 20, 0, 0, 35, CT_COTTON_CANDY, 0 ), /* 75 */
+ RVI( 52, W, 192, 0, 0, 20, 0, 0, 35, CT_TOFFEE , 0 ), /* 76 */
+ RVI( 53, W, 190, 0, 0, 21, 0, 0, 25, CT_BUBBLES , 0 ), /* 77 */
+ RVI( 54, W, 182, 0, 0, 24, 0, 0, 30, CT_COLA , 0 ), /* 78 */
+ RVI( 55, W, 181, 0, 0, 21, 0, 0, 30, CT_CANDY , 0 ), /* 79 */
+ RVI( 56, W, 183, 0, 0, 21, 0, 0, 25, CT_TOYS , 0 ), /* 80 */
+ RVI( 57, W, 196, 0, 0, 18, 0, 0, 27, CT_BATTERIES , 0 ), /* 81 */
+ RVI( 58, W, 193, 0, 0, 18, 0, 0, 30, CT_FIZZY_DRINKS, 0 ), /* 82 */
+ RVI( 59, W, 191, 0, 0, 18, 0, 0, 35, CT_PLASTIC , 0 ), /* 83 */
+ RVI( 28, 0, 70, 400, 10000, 105, 250, E, 0, 0 , 70 ), /* 84 */
+ RVI( 29, 0, 74, 448, 12000, 120, 253, E, 0, 0 , 71 ), /* 85 */
+ RVI( 30, 0, 82, 480, 15000, 130, 254, E, 0, 0 , 72 ), /* 86 */
+ RVI( 31, M, 95, 640, 20000/2,150/2,255/2, E, 0, 0 , 73 ), /* 87 */
+ RVI( 28, 0, 70, 480, 10000, 120, 250, E, 0, 0 , 74 ), /* 88 */
+ RVI( 60, W, 247, 0, 0, 25, 0, 0, 47, CT_PASSENGERS , 0 ), /* 89 */
+ RVI( 62, W, 228, 0, 0, 21, 0, 0, 37, CT_MAIL , 0 ), /* 90 */
+ RVI( 61, W, 176, 0, 0, 18, 0, 0, 37, CT_COAL , 0 ), /* 91 */
+ RVI( 63, W, 200, 0, 0, 24, 0, 0, 37, CT_OIL , 0 ), /* 92 */
+ RVI( 64, W, 192, 0, 0, 20, 0, 0, 32, CT_LIVESTOCK , 0 ), /* 93 */
+ RVI( 65, W, 190, 0, 0, 21, 0, 0, 32, CT_GOODS , 0 ), /* 94 */
+ RVI( 66, W, 182, 0, 0, 19, 0, 0, 37, CT_GRAIN , 0 ), /* 95 */
+ RVI( 67, W, 181, 0, 0, 16, 0, 0, 37, CT_WOOD , 0 ), /* 96 */
+ RVI( 68, W, 179, 0, 0, 19, 0, 0, 37, CT_IRON_ORE , 0 ), /* 97 */
+ RVI( 69, W, 196, 0, 0, 18, 0, 0, 27, CT_STEEL , 0 ), /* 98 */
+ RVI( 70, W, 255, 0, 0, 30, 0, 0, 27, CT_VALUABLES , 0 ), /* 99 */
+ RVI( 71, W, 191, 0, 0, 22, 0, 0, 32, CT_FOOD , 0 ), /* 100 */
+ RVI( 72, W, 196, 0, 0, 18, 0, 0, 27, CT_PAPER , 0 ), /* 101 */
+ RVI( 73, W, 179, 0, 0, 19, 0, 0, 37, CT_COPPER_ORE , 0 ), /* 102 */
+ RVI( 47, W, 199, 0, 0, 25, 0, 0, 32, CT_WATER , 0 ), /* 103 */
+ RVI( 48, W, 182, 0, 0, 18, 0, 0, 32, CT_FRUIT , 0 ), /* 104 */
+ RVI( 49, W, 185, 0, 0, 19, 0, 0, 28, CT_RUBBER , 0 ), /* 105 */
+ RVI( 50, W, 176, 0, 0, 19, 0, 0, 37, CT_SUGAR , 0 ), /* 106 */
+ RVI( 51, W, 178, 0, 0, 20, 0, 0, 37, CT_COTTON_CANDY, 0 ), /* 107 */
+ RVI( 52, W, 192, 0, 0, 20, 0, 0, 37, CT_TOFFEE , 0 ), /* 108 */
+ RVI( 53, W, 190, 0, 0, 21, 0, 0, 27, CT_BUBBLES , 0 ), /* 109 */
+ RVI( 54, W, 182, 0, 0, 24, 0, 0, 32, CT_COLA , 0 ), /* 110 */
+ RVI( 55, W, 181, 0, 0, 21, 0, 0, 32, CT_CANDY , 0 ), /* 111 */
+ RVI( 56, W, 183, 0, 0, 21, 0, 0, 27, CT_TOYS , 0 ), /* 112 */
+ RVI( 57, W, 196, 0, 0, 18, 0, 0, 29, CT_BATTERIES , 0 ), /* 113 */
+ RVI( 58, W, 193, 0, 0, 18, 0, 0, 32, CT_FIZZY_DRINKS, 0 ), /* 114 */
+ RVI( 59, W, 191, 0, 0, 18, 0, 0, 37, CT_PLASTIC , 0 ), /* 115 */
+};
+#undef E
+#undef D
+#undef S
+#undef W
+#undef M
+#undef RVI
+
+/** Writes the properties of a ship into the ShipVehicleInfo struct.
+ * @see ShipVehicleInfo
+ * @param a image_index
+ * @param b base_cost
+ * @param c max_speed
+ * @param d cargo_type
+ * @param e cargo_amount
+ * @param f running_cost
+ * @param g sound effect
+ * @param h refittable
+ */
+#define SVI(a, b, c, d, e, f, g, h) { a, b, c, d, e, f, g, h }
+const ShipVehicleInfo orig_ship_vehicle_info[NUM_SHIP_ENGINES] = {
+ // image_index cargo_type cargo_amount refittable
+ // | base_cost | | running_cost |
+ // | | max_speed | | sfx |
+ // | | | | | | | |
+ SVI( 1, 160, 48, CT_OIL, 220, 140, SND_06_SHIP_HORN, 0 ), /* 0 */
+ SVI( 1, 176, 80, CT_OIL, 350, 125, SND_06_SHIP_HORN, 0 ), /* 1 */
+ SVI( 2, 96, 64, CT_PASSENGERS, 100, 90, SND_07_FERRY_HORN, 0 ), /* 2 */
+ SVI( 2, 112, 128, CT_PASSENGERS, 130, 80, SND_07_FERRY_HORN, 0 ), /* 3 */
+ SVI( 3, 148, 224, CT_PASSENGERS, 100, 190, SND_07_FERRY_HORN, 0 ), /* 4 */
+ SVI( 2, 96, 64, CT_PASSENGERS, 100, 90, SND_07_FERRY_HORN, 0 ), /* 5 */
+ SVI( 2, 112, 128, CT_PASSENGERS, 130, 80, SND_07_FERRY_HORN, 0 ), /* 6 */
+ SVI( 0, 128, 48, CT_GOODS, 160, 150, SND_06_SHIP_HORN, 1 ), /* 7 */
+ SVI( 0, 144, 80, CT_GOODS, 190, 113, SND_06_SHIP_HORN, 1 ), /* 8 */
+ SVI( 0, 128, 48, CT_GOODS, 160, 150, SND_06_SHIP_HORN, 1 ), /* 9 */
+ SVI( 0, 144, 80, CT_GOODS, 190, 113, SND_06_SHIP_HORN, 1 ), /* 10 */
+};
+#undef SVI
+
+/** Writes the properties of an aircraft into the AircraftVehicleInfo struct.
+ * @see AircraftVehicleInfo
+ * @param a image_index
+ * @param b base_cost
+ * @param c running_Cost
+ * @param d subtype (bit 0 - plane, bit 1 - large plane)
+ * @param e sound effect
+ * @param f acceleration
+ * @param g max_speed
+ * @param h mail_capacity
+ * @param i passenger_capacity
+ */
+#define AVI(a, b, c, d, e, f, g, h, i) { a, b, c, d, e, f, g, h, i }
+#define H 0
+#define P AIR_CTOL
+#define J AIR_CTOL | AIR_FAST
+const AircraftVehicleInfo orig_aircraft_vehicle_info[NUM_AIRCRAFT_ENGINES] = {
+ // image_index sfx acceleration
+ // | base_cost | | max_speed
+ // | | running_cost | | mail_capacity
+ // | | | subtype | | | | passenger_capacity
+ // | | | | | | | | |
+ AVI( 1, 14, 85, P, SND_08_PLANE_TAKE_OFF, 18, 37, 4, 25 ), /* 0 */
+ AVI( 0, 15, 100, P, SND_08_PLANE_TAKE_OFF, 20, 37, 8, 65 ), /* 1 */
+ AVI( 2, 16, 130, J, SND_09_JET, 35, 74, 10, 90 ), /* 2 */
+ AVI( 8, 75, 250, J, SND_3B_JET_OVERHEAD, 50, 181, 20, 100 ), /* 3 */
+ AVI( 5, 15, 98, P, SND_08_PLANE_TAKE_OFF, 20, 37, 6, 30 ), /* 4 */
+ AVI( 6, 18, 240, J, SND_09_JET, 40, 74, 30, 200 ), /* 5 */
+ AVI( 2, 17, 150, P, SND_09_JET, 35, 74, 15, 100 ), /* 6 */
+ AVI( 2, 18, 245, J, SND_09_JET, 40, 74, 30, 150 ), /* 7 */
+ AVI( 3, 19, 192, J, SND_09_JET, 40, 74, 40, 220 ), /* 8 */
+ AVI( 3, 20, 190, J, SND_09_JET, 40, 74, 25, 230 ), /* 9 */
+ AVI( 2, 16, 135, J, SND_09_JET, 35, 74, 10, 95 ), /* 10 */
+ AVI( 2, 18, 240, J, SND_09_JET, 40, 74, 35, 170 ), /* 11 */
+ AVI( 4, 17, 155, J, SND_09_JET, 40, 74, 15, 110 ), /* 12 */
+ AVI( 7, 30, 253, J, SND_3D_ANOTHER_JET_OVERHEAD, 40, 74, 50, 300 ), /* 13 */
+ AVI( 4, 18, 210, J, SND_09_JET, 40, 74, 25, 200 ), /* 14 */
+ AVI( 4, 19, 220, J, SND_09_JET, 40, 74, 25, 240 ), /* 15 */
+ AVI( 4, 27, 230, J, SND_09_JET, 40, 74, 40, 260 ), /* 16 */
+ AVI( 3, 25, 225, J, SND_09_JET, 40, 74, 35, 240 ), /* 17 */
+ AVI( 4, 20, 235, J, SND_09_JET, 40, 74, 30, 260 ), /* 18 */
+ AVI( 4, 19, 220, J, SND_09_JET, 40, 74, 25, 210 ), /* 19 */
+ AVI( 4, 18, 170, J, SND_09_JET, 40, 74, 20, 160 ), /* 20 */
+ AVI( 4, 26, 210, J, SND_09_JET, 40, 74, 20, 220 ), /* 21 */
+ AVI( 6, 16, 125, P, SND_09_JET, 50, 74, 10, 80 ), /* 22 */
+ AVI( 2, 17, 145, P, SND_09_JET, 40, 74, 10, 85 ), /* 23 */
+ AVI( 11, 16, 130, J, SND_09_JET, 40, 74, 10, 75 ), /* 24 */
+ AVI( 10, 16, 149, J, SND_09_JET, 40, 74, 10, 85 ), /* 25 */
+ AVI( 15, 17, 170, J, SND_09_JET, 40, 74, 18, 65 ), /* 26 */
+ AVI( 12, 18, 210, J, SND_09_JET, 40, 74, 25, 110 ), /* 27 */
+ AVI( 13, 20, 230, J, SND_09_JET, 40, 74, 60, 180 ), /* 28 */
+ AVI( 14, 21, 220, J, SND_09_JET, 40, 74, 65, 150 ), /* 29 */
+ AVI( 16, 19, 160, J, SND_09_JET, 40, 181, 45, 85 ), /* 30 */
+ AVI( 17, 24, 248, J, SND_3D_ANOTHER_JET_OVERHEAD, 40, 74, 80, 400 ), /* 31 */
+ AVI( 18, 80, 251, J, SND_3B_JET_OVERHEAD, 50, 181, 45, 130 ), /* 32 */
+ AVI( 20, 13, 85, P, SND_45_PLANE_CRASHING, 18, 37, 5, 25 ), /* 33 */
+ AVI( 21, 18, 100, P, SND_46_PLANE_ENGINE_SPUTTERING, 20, 37, 9, 60 ), /* 34 */
+ AVI( 22, 25, 140, P, SND_09_JET, 40, 74, 12, 90 ), /* 35 */
+ AVI( 23, 32, 220, J, SND_3D_ANOTHER_JET_OVERHEAD, 40, 74, 40, 200 ), /* 36 */
+ AVI( 24, 80, 255, J, SND_3B_JET_OVERHEAD, 50, 181, 30, 100 ), /* 37 */
+ AVI( 9, 15, 81, H, SND_09_JET, 20, 25, 15, 40 ), /* 38 */
+ AVI( 19, 17, 77, H, SND_09_JET, 20, 40, 20, 55 ), /* 39 */
+ AVI( 25, 15, 80, H, SND_09_JET, 20, 25, 10, 40 ), /* 40 */
+};
+#undef J
+#undef P
+#undef H
+#undef AVI
+
+/** Writes the properties of a road vehicle into the RoadVehicleInfo struct.
+ * @see RoadVehicleInfo
+ * @param a image_index
+ * @param b base_cost
+ * @param c running_cost
+ * @param d sound effect
+ * @param e max_speed
+ * @param f capacity
+ * @param g cargo_type
+ */
+#define RVI(a, b, c, d, e, f, g) { a, b, c, d, e, f, g }
+const RoadVehicleInfo orig_road_vehicle_info[NUM_ROAD_ENGINES] = {
+ // image_index sfx max_speed
+ // | base_cost | | capacity
+ // | | running_cost | | cargo_type
+ // | | | | | | |
+ RVI( 0, 120, 91, SND_19_BUS_START_PULL_AWAY, 112, 31, CT_PASSENGERS ), /* 0 */
+ RVI( 17, 140, 128, SND_1C_TRUCK_START_2, 176, 35, CT_PASSENGERS ), /* 1 */
+ RVI( 17, 150, 178, SND_1B_TRUCK_START, 224, 37, CT_PASSENGERS ), /* 2 */
+ RVI( 34, 160, 240, SND_1B_TRUCK_START, 255, 40, CT_PASSENGERS ), /* 3 */
+ RVI( 51, 120, 91, SND_3C_COMEDY_CAR, 112, 30, CT_PASSENGERS ), /* 4 */
+ RVI( 51, 140, 171, SND_3E_COMEDY_CAR_2, 192, 35, CT_PASSENGERS ), /* 5 */
+ RVI( 51, 160, 240, SND_3C_COMEDY_CAR, 240, 38, CT_PASSENGERS ), /* 6 */
+ RVI( 1, 108, 90, SND_19_BUS_START_PULL_AWAY, 96, 20, CT_COAL ), /* 7 */
+ RVI( 18, 128, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, CT_COAL ), /* 8 */
+ RVI( 35, 138, 240, SND_19_BUS_START_PULL_AWAY, 224, 28, CT_COAL ), /* 9 */
+ RVI( 2, 115, 90, SND_19_BUS_START_PULL_AWAY, 96, 22, CT_MAIL ), /* 10 */
+ RVI( 19, 135, 168, SND_19_BUS_START_PULL_AWAY, 176, 28, CT_MAIL ), /* 11 */
+ RVI( 36, 145, 240, SND_19_BUS_START_PULL_AWAY, 224, 30, CT_MAIL ), /* 12 */
+ RVI( 57, 115, 90, SND_3E_COMEDY_CAR_2, 96, 22, CT_MAIL ), /* 13 */
+ RVI( 57, 135, 168, SND_3C_COMEDY_CAR, 176, 28, CT_MAIL ), /* 14 */
+ RVI( 57, 145, 240, SND_3E_COMEDY_CAR_2, 224, 30, CT_MAIL ), /* 15 */
+ RVI( 3, 110, 90, SND_19_BUS_START_PULL_AWAY, 96, 21, CT_OIL ), /* 16 */
+ RVI( 20, 140, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, CT_OIL ), /* 17 */
+ RVI( 37, 150, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, CT_OIL ), /* 18 */
+ RVI( 4, 105, 90, SND_19_BUS_START_PULL_AWAY, 96, 14, CT_LIVESTOCK ), /* 19 */
+ RVI( 21, 130, 168, SND_19_BUS_START_PULL_AWAY, 176, 16, CT_LIVESTOCK ), /* 20 */
+ RVI( 38, 140, 240, SND_19_BUS_START_PULL_AWAY, 224, 18, CT_LIVESTOCK ), /* 21 */
+ RVI( 5, 107, 90, SND_19_BUS_START_PULL_AWAY, 96, 14, CT_GOODS ), /* 22 */
+ RVI( 22, 130, 168, SND_19_BUS_START_PULL_AWAY, 176, 16, CT_GOODS ), /* 23 */
+ RVI( 39, 140, 240, SND_19_BUS_START_PULL_AWAY, 224, 18, CT_GOODS ), /* 24 */
+ RVI( 6, 114, 90, SND_19_BUS_START_PULL_AWAY, 96, 20, CT_GRAIN ), /* 25 */
+ RVI( 23, 133, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, CT_GRAIN ), /* 26 */
+ RVI( 40, 143, 240, SND_19_BUS_START_PULL_AWAY, 224, 30, CT_GRAIN ), /* 27 */
+ RVI( 7, 118, 90, SND_19_BUS_START_PULL_AWAY, 96, 20, CT_WOOD ), /* 28 */
+ RVI( 24, 137, 168, SND_19_BUS_START_PULL_AWAY, 176, 22, CT_WOOD ), /* 29 */
+ RVI( 41, 147, 240, SND_19_BUS_START_PULL_AWAY, 224, 24, CT_WOOD ), /* 30 */
+ RVI( 8, 121, 90, SND_19_BUS_START_PULL_AWAY, 96, 22, CT_IRON_ORE ), /* 31 */
+ RVI( 25, 140, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, CT_IRON_ORE ), /* 32 */
+ RVI( 42, 150, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, CT_IRON_ORE ), /* 33 */
+ RVI( 9, 112, 90, SND_19_BUS_START_PULL_AWAY, 96, 15, CT_STEEL ), /* 34 */
+ RVI( 26, 135, 168, SND_19_BUS_START_PULL_AWAY, 176, 18, CT_STEEL ), /* 35 */
+ RVI( 43, 145, 240, SND_19_BUS_START_PULL_AWAY, 224, 20, CT_STEEL ), /* 36 */
+ RVI( 10, 145, 90, SND_19_BUS_START_PULL_AWAY, 96, 12, CT_VALUABLES ), /* 37 */
+ RVI( 27, 170, 168, SND_19_BUS_START_PULL_AWAY, 176, 15, CT_VALUABLES ), /* 38 */
+ RVI( 44, 180, 240, SND_19_BUS_START_PULL_AWAY, 224, 16, CT_VALUABLES ), /* 39 */
+ RVI( 11, 112, 90, SND_19_BUS_START_PULL_AWAY, 96, 17, CT_FOOD ), /* 40 */
+ RVI( 28, 134, 168, SND_19_BUS_START_PULL_AWAY, 176, 20, CT_FOOD ), /* 41 */
+ RVI( 45, 144, 240, SND_19_BUS_START_PULL_AWAY, 224, 22, CT_FOOD ), /* 42 */
+ RVI( 12, 112, 90, SND_19_BUS_START_PULL_AWAY, 96, 15, CT_PAPER ), /* 43 */
+ RVI( 29, 135, 168, SND_19_BUS_START_PULL_AWAY, 176, 18, CT_PAPER ), /* 44 */
+ RVI( 46, 145, 240, SND_19_BUS_START_PULL_AWAY, 224, 20, CT_PAPER ), /* 45 */
+ RVI( 13, 121, 90, SND_19_BUS_START_PULL_AWAY, 96, 22, CT_COPPER_ORE ), /* 46 */
+ RVI( 30, 140, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, CT_COPPER_ORE ), /* 47 */
+ RVI( 47, 150, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, CT_COPPER_ORE ), /* 48 */
+ RVI( 14, 111, 90, SND_19_BUS_START_PULL_AWAY, 96, 21, CT_WATER ), /* 49 */
+ RVI( 31, 141, 168, SND_19_BUS_START_PULL_AWAY, 176, 25, CT_WATER ), /* 50 */
+ RVI( 48, 151, 240, SND_19_BUS_START_PULL_AWAY, 224, 27, CT_WATER ), /* 51 */
+ RVI( 15, 118, 90, SND_19_BUS_START_PULL_AWAY, 96, 18, CT_FRUIT ), /* 52 */
+ RVI( 32, 148, 168, SND_19_BUS_START_PULL_AWAY, 176, 20, CT_FRUIT ), /* 53 */
+ RVI( 49, 158, 240, SND_19_BUS_START_PULL_AWAY, 224, 23, CT_FRUIT ), /* 54 */
+ RVI( 16, 117, 90, SND_19_BUS_START_PULL_AWAY, 96, 17, CT_RUBBER ), /* 55 */
+ RVI( 33, 147, 168, SND_19_BUS_START_PULL_AWAY, 176, 19, CT_RUBBER ), /* 56 */
+ RVI( 50, 157, 240, SND_19_BUS_START_PULL_AWAY, 224, 22, CT_RUBBER ), /* 57 */
+ RVI( 52, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, CT_SUGAR ), /* 58 */
+ RVI( 52, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, CT_SUGAR ), /* 59 */
+ RVI( 52, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, CT_SUGAR ), /* 60 */
+ RVI( 53, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, CT_COLA ), /* 61 */
+ RVI( 53, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, CT_COLA ), /* 62 */
+ RVI( 53, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, CT_COLA ), /* 63 */
+ RVI( 54, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, CT_COTTON_CANDY ), /* 64 */
+ RVI( 54, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, CT_COTTON_CANDY ), /* 65 */
+ RVI( 54, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, CT_COTTON_CANDY ), /* 66 */
+ RVI( 55, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, CT_TOFFEE ), /* 67 */
+ RVI( 55, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, CT_TOFFEE ), /* 68 */
+ RVI( 55, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, CT_TOFFEE ), /* 69 */
+ RVI( 56, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, CT_TOYS ), /* 70 */
+ RVI( 56, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, CT_TOYS ), /* 71 */
+ RVI( 56, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, CT_TOYS ), /* 72 */
+ RVI( 58, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, CT_CANDY ), /* 73 */
+ RVI( 58, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, CT_CANDY ), /* 74 */
+ RVI( 58, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, CT_CANDY ), /* 75 */
+ RVI( 59, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, CT_BATTERIES ), /* 76 */
+ RVI( 59, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, CT_BATTERIES ), /* 77 */
+ RVI( 59, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, CT_BATTERIES ), /* 78 */
+ RVI( 60, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, CT_FIZZY_DRINKS ), /* 79 */
+ RVI( 60, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, CT_FIZZY_DRINKS ), /* 80 */
+ RVI( 60, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, CT_FIZZY_DRINKS ), /* 81 */
+ RVI( 61, 117, 90, SND_3F_COMEDY_CAR_3, 96, 17, CT_PLASTIC ), /* 82 */
+ RVI( 61, 147, 168, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 176, 19, CT_PLASTIC ), /* 83 */
+ RVI( 61, 157, 240, SND_3F_COMEDY_CAR_3, 224, 22, CT_PLASTIC ), /* 84 */
+ RVI( 62, 117, 90, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 96, 17, CT_BUBBLES ), /* 85 */
+ RVI( 62, 147, 168, SND_3F_COMEDY_CAR_3, 176, 19, CT_BUBBLES ), /* 86 */
+ RVI( 62, 157, 240, SND_40_COMEDY_CAR_START_AND_PULL_AWAY, 224, 22, CT_BUBBLES ), /* 87 */
+};
+#undef RVI
+
+#endif /* ENGINES_H */
diff --git a/src/table/files.h b/src/table/files.h
new file mode 100644
index 000000000..4dfdfebb6
--- /dev/null
+++ b/src/table/files.h
@@ -0,0 +1,64 @@
+/* $Id$ */
+
+/*
+ MD5 sums of graphics files
+
+ DOS -
+
+ TRG1.GRF 9311676280e5b14077a8ee41c1b42192
+ TRGC.GRF ed446637e034104c5559b32c18afe78d
+ TRGH.GRF ee6616fb0e6ef6b24892c58c93d86fc9
+ TRGI.GRF da6a6c9dcc451eec88d79211437b76a8
+ TRGT.GRF fcde1d7e8a74197d72a62695884b909e
+ SAMPLE.CAT 422ea3dd074d2859bb51639a6e0e85da
+
+ WINDOWS -
+
+ TRG1R.GRF b04ce593d8c5016e07473a743d7d3358
+ TRGCR.GRF 3668f410c761a050b5e7095a2b14879b
+ TRGHR.GRF 06bf2b7a31766f048baac2ebe43457b1
+ TRGIR.GRF 0c2484ff6be49fc63a83be6ab5c38f32
+ TRGTR.GRF de53650517fe661ceaa3138c6edb0eb8
+ SAMPLE.CAT 9212e81e72badd4bbe1eaeae66458e10
+*/
+
+
+static FileList files_dos = {
+ {
+ { "TRG1.GRF", {0x93, 0x11, 0x67, 0x62, 0x80, 0xe5, 0xb1, 0x40, 0x77, 0xa8, 0xee, 0x41, 0xc1, 0xb4, 0x21, 0x92} }, // 0 - 4792 inclusive
+ { "TRGI.GRF", {0xda, 0x6a, 0x6c, 0x9d, 0xcc, 0x45, 0x1e, 0xec, 0x88, 0xd7, 0x92, 0x11, 0x43, 0x7b, 0x76, 0xa8} }, // 4793 - 4889 inclusive
+ { "dosdummy.grf", {0x07, 0x01, 0xe6, 0xc4, 0x07, 0x6a, 0x5b, 0xc3, 0xf4, 0x9f, 0x01, 0xad, 0x21, 0x6c, 0xa0, 0xc2} }, // 4890 - 4895 inclusive
+ { NULL, { 0 } }
+ }, {
+ { "TRGC.GRF", {0xed, 0x44, 0x66, 0x37, 0xe0, 0x34, 0x10, 0x4c, 0x55, 0x59, 0xb3, 0x2c, 0x18, 0xaf, 0xe7, 0x8d} },
+ { "TRGH.GRF", {0xee, 0x66, 0x16, 0xfb, 0x0e, 0x6e, 0xf6, 0xb2, 0x48, 0x92, 0xc5, 0x8c, 0x93, 0xd8, 0x6f, 0xc9} },
+ { "TRGT.GRF", {0xfc, 0xde, 0x1d, 0x7e, 0x8a, 0x74, 0x19, 0x7d, 0x72, 0xa6, 0x26, 0x95, 0x88, 0x4b, 0x90, 0x9e} }
+ }
+};
+
+static FileList files_win = {
+ {
+ { "TRG1R.GRF", {0xb0, 0x4c, 0xe5, 0x93, 0xd8, 0xc5, 0x01, 0x6e, 0x07, 0x47, 0x3a, 0x74, 0x3d, 0x7d, 0x33, 0x58} }, // 0 - 4792 inclusive
+ { "TRGIR.GRF", {0x0c, 0x24, 0x84, 0xff, 0x6b, 0xe4, 0x9f, 0xc6, 0x3a, 0x83, 0xbe, 0x6a, 0xb5, 0xc3, 0x8f, 0x32} }, // 4793 - 4895 inclusive
+ { NULL, { 0 } },
+ { NULL, { 0 } }
+ }, {
+ { "TRGCR.GRF", {0x36, 0x68, 0xf4, 0x10, 0xc7, 0x61, 0xa0, 0x50, 0xb5, 0xe7, 0x09, 0x5a, 0x2b, 0x14, 0x87, 0x9b} },
+ { "TRGHR.GRF", {0x06, 0xbf, 0x2b, 0x7a, 0x31, 0x76, 0x6f, 0x04, 0x8b, 0xaa, 0xc2, 0xeb, 0xe4, 0x34, 0x57, 0xb1} },
+ { "TRGTR.GRF", {0xde, 0x53, 0x65, 0x05, 0x17, 0xfe, 0x66, 0x1c, 0xea, 0xa3, 0x13, 0x8c, 0x6e, 0xdb, 0x0e, 0xb8} }
+ }
+};
+
+static MD5File sample_cat_win = { "SAMPLE.CAT", {0x92, 0x12, 0xe8, 0x1e, 0x72, 0xba, 0xdd, 0x4b, 0xbe, 0x1e, 0xae, 0xae, 0x66, 0x45, 0x8e, 0x10} };
+static MD5File sample_cat_dos = { "SAMPLE.CAT", {0x42, 0x2e, 0xa3, 0xdd, 0x07, 0x4d, 0x28, 0x59, 0xbb, 0x51, 0x63, 0x9a, 0x6e, 0x0e, 0x85, 0xda} };
+
+static MD5File files_openttd[] = {
+ { "nsignalsw.grf", { 0x65, 0xb9, 0xd7, 0x30, 0x56, 0x06, 0xcc, 0x9e, 0x27, 0x57, 0xc8, 0xe4, 0x9b, 0xb3, 0x66, 0x81 } },
+ { "2ccmap.grf", { 0x20, 0x03, 0x32, 0x1a, 0x43, 0x6c, 0xc1, 0x05, 0x80, 0xbd, 0x43, 0xeb, 0xe1, 0xfd, 0x0c, 0x62 } },
+ { "airports.grf", { 0xfd, 0xa4, 0x38, 0xd6, 0x9c, 0x81, 0x74, 0xfe, 0xa0, 0x98, 0xa2, 0x14, 0x4b, 0x15, 0xb8, 0x4b } },
+ { "autorail.grf", { 0xed, 0x44, 0x7f, 0xbb, 0x19, 0x44, 0x48, 0x4c, 0x07, 0x8a, 0xb1, 0xc1, 0x5c, 0x12, 0x3a, 0x60 } },
+ { "canalsw.grf", { 0x13, 0x9c, 0x98, 0xcf, 0xb8, 0x7c, 0xd7, 0x1f, 0xca, 0x34, 0xa5, 0x6b, 0x65, 0x31, 0xec, 0x0f } },
+ { "elrailsw.grf", { 0x4f, 0xf9, 0xac, 0x79, 0x50, 0x28, 0x9b, 0xe2, 0x15, 0x30, 0xa8, 0x1e, 0xd5, 0xfd, 0xe1, 0xda } },
+ { "openttd.grf", { 0x59, 0x22, 0x19, 0xe0, 0x6e, 0xe7, 0xb6, 0xa3, 0x55, 0x53, 0xcc, 0x9e, 0xbc, 0xaf, 0xcc, 0x83 } },
+ { "trkfoundw.grf", { 0x12, 0x33, 0x3f, 0xa3, 0xd1, 0x86, 0x8b, 0x04, 0x53, 0x18, 0x9c, 0xee, 0xf9, 0x2d, 0xf5, 0x95 } },
+};
diff --git a/src/table/genland.h b/src/table/genland.h
new file mode 100644
index 000000000..4007f8db3
--- /dev/null
+++ b/src/table/genland.h
@@ -0,0 +1,159 @@
+/* $Id$ */
+
+#define M(x, y) {x, y}
+
+static const TileIndexDiffC _make_desert_or_rainforest_data[] = {
+ M(-5, -6),
+ M(-4, -6),
+ M(-3, -6),
+ M(-2, -6),
+ M(-1, -6),
+ M( 0, -5),
+ M( 1, -5),
+ M( 2, -5),
+ M( 3, -5),
+ M( 4, -5),
+ M( 5, -5),
+ M(-5, -5),
+ M(-4, -5),
+ M(-3, -5),
+ M(-2, -5),
+ M(-1, -5),
+ M( 0, -4),
+ M( 1, -4),
+ M( 2, -4),
+ M( 3, -4),
+ M( 4, -4),
+ M( 5, -4),
+ M(-5, -4),
+ M(-4, -4),
+ M(-3, -4),
+ M(-2, -4),
+ M(-1, -4),
+ M( 0, -3),
+ M( 1, -3),
+ M( 2, -3),
+ M( 3, -3),
+ M( 4, -3),
+ M( 5, -3),
+ M(-5, -3),
+ M(-4, -3),
+ M(-3, -3),
+ M(-2, -3),
+ M(-1, -3),
+ M( 0, -2),
+ M( 1, -2),
+ M( 2, -2),
+ M( 3, -2),
+ M( 4, -2),
+ M( 5, -2),
+ M(-5, -2),
+ M(-4, -2),
+ M(-3, -2),
+ M(-2, -2),
+ M(-1, -2),
+ M( 0, -1),
+ M( 1, -1),
+ M( 2, -1),
+ M( 3, -1),
+ M( 4, -1),
+ M( 5, -1),
+ M(-5, -1),
+ M(-4, -1),
+ M(-3, -1),
+ M(-2, -1),
+ M(-1, -1),
+ M( 0, 0),
+ M( 1, 0),
+ M( 2, 0),
+ M( 3, 0),
+ M( 4, 0),
+ M( 5, 0),
+ M(-5, 0),
+ M(-4, 0),
+ M(-3, 0),
+ M(-2, 0),
+ M(-1, 0),
+ M( 0, 1),
+ M( 1, 1),
+ M( 2, 1),
+ M( 3, 1),
+ M( 4, 1),
+ M( 5, 1),
+ M(-5, 1),
+ M(-4, 1),
+ M(-3, 1),
+ M(-2, 1),
+ M(-1, 1),
+ M( 0, 2),
+ M( 1, 2),
+ M( 2, 2),
+ M( 3, 2),
+ M( 4, 2),
+ M( 5, 2),
+ M(-5, 2),
+ M(-4, 2),
+ M(-3, 2),
+ M(-2, 2),
+ M(-1, 2),
+ M( 0, 3),
+ M( 1, 3),
+ M( 2, 3),
+ M( 3, 3),
+ M( 4, 3),
+ M( 5, 3),
+ M(-5, 3),
+ M(-4, 3),
+ M(-3, 3),
+ M(-2, 3),
+ M(-1, 3),
+ M( 0, 4),
+ M( 1, 4),
+ M( 2, 4),
+ M( 3, 4),
+ M( 4, 4),
+ M( 5, 4),
+ M(-5, 4),
+ M(-4, 4),
+ M(-3, 4),
+ M(-2, 4),
+ M(-1, 4),
+ M( 0, 5),
+ M( 1, 5),
+ M( 2, 5),
+ M( 3, 5),
+ M( 4, 5),
+ M( 5, 5),
+ M( 6, -3),
+ M(-6, -4),
+ M(-3, 5),
+ M(-3, -7),
+ M( 6, -2),
+ M(-6, -3),
+ M(-2, 5),
+ M(-2, -7),
+ M( 6, -1),
+ M(-6, -2),
+ M(-1, 5),
+ M(-1, -7),
+ M( 6, 0),
+ M(-6, -1),
+ M( 0, 6),
+ M( 0, -6),
+ M( 6, 1),
+ M(-6, 0),
+ M( 1, 6),
+ M( 1, -6),
+ M( 6, 2),
+ M(-6, 1),
+ M( 2, 6),
+ M( 2, -6),
+ M( 6, 3),
+ M(-6, 2),
+ M( 3, 6),
+ M( 3, -6)
+};
+
+
+
+#undef M
diff --git a/src/table/industry_land.h b/src/table/industry_land.h
new file mode 100644
index 000000000..60beb74fb
--- /dev/null
+++ b/src/table/industry_land.h
@@ -0,0 +1,1022 @@
+/* $Id$ */
+
+typedef struct DrawIndustrySpec1Struct {
+ byte x;
+ byte image_1;
+ byte image_2;
+ byte image_3;
+} DrawIndustrySpec1Struct;
+
+typedef struct DrawIndustrySpec4Struct {
+ byte image_1;
+ byte image_2;
+ byte image_3;
+} DrawIndustrySpec4Struct;
+
+#define M(s1, s2, sx, sy, w, h, dz, p) { s1, s2, sx, sy, w - 1, h - 1, dz, p }
+
+static const DrawBuildingsTileStruct _industry_draw_tile_data[NUM_INDUSTRY_GFXES * 4] = {
+ M( 0xf54, 0x7db, 7, 0, 9, 9, 10, 0),
+ M( 0xf54, 0x7dc, 7, 0, 9, 9, 30, 0),
+ M( 0xf54, 0x7dd, 7, 0, 9, 9, 30, 0),
+ M( 0x7e6, 0x7dd, 7, 0, 9, 9, 30, 0),
+ M( 0x7e6, 0x7dd, 7, 0, 9, 9, 30, 0),
+ M( 0x7e6, 0x7de, 7, 0, 9, 9, 30, 0),
+ M( 0x7e6, 0x7df, 7, 0, 9, 9, 30, 0),
+ M( 0x7e6, 0x7df, 7, 0, 9, 9, 30, 0),
+ M( 0xf54, 0x7e0, 1, 2, 15, 9, 30, 0),
+ M( 0xf54, 0x7e1, 1, 2, 15, 9, 30, 0),
+ M( 0xf54, 0x7e2, 1, 2, 15, 9, 30, 0),
+ M( 0x7e6, 0x7e2, 1, 2, 15, 9, 30, 0),
+ M( 0xf54, 0x7e3, 4, 4, 9, 9, 30, 0),
+ M( 0xf54, 0x7e4, 4, 4, 9, 9, 30, 0),
+ M( 0xf54, 0x7e5, 4, 4, 9, 9, 30, 0),
+ M( 0x7e6, 0x7e5, 4, 4, 9, 9, 30, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x7e6, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x7e9, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x7e6, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x7e7, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x7e6, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x7e8, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x7fd, 1, 1, 14, 14, 5, 0),
+ M( 0xf54, 0x7fe, 1, 1, 14, 14, 44, 0),
+ M( 0xf54, 0x7ff, 1, 1, 14, 14, 44, 0),
+ M( 0xf54, 0x7ff, 1, 1, 14, 14, 44, 0),
+ M( 0xf54, 0x800, 0, 2, 16, 12, 6, 0),
+ M( 0xf54, 0x801, 0, 2, 16, 12, 47, 0),
+ M( 0xf54, 0x802, 0, 2, 16, 12, 50, 0),
+ M( 0xf54, 0x802, 0, 2, 16, 12, 50, 0),
+ M( 0xf54, 0x803, 1, 0, 14, 15, 5, 0),
+ M( 0xf54, 0x804, 1, 0, 14, 15, 19, 0),
+ M( 0xf54, 0x805, 1, 0, 14, 15, 21, 0),
+ M( 0xf54, 0x805, 1, 0, 14, 15, 21, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x806, 1, 2, 14, 11, 32, 5),
+ M( 0xf54, 0x80d, 1, 0, 13, 16, 8, 0),
+ M( 0xf54, 0x80e, 1, 0, 13, 16, 20, 0),
+ M( 0xf54, 0x80f, 1, 0, 13, 16, 20, 0),
+ M( 0xf54, 0x80f, 1, 0, 13, 16, 20, 0),
+ M( 0xf54, 0x810, 0, 1, 16, 14, 8, 0),
+ M( 0xf54, 0x811, 0, 1, 16, 14, 21, 0),
+ M( 0xf54, 0x812, 0, 1, 16, 14, 21, 0),
+ M( 0xf54, 0x812, 0, 1, 16, 14, 21, 0),
+ M( 0xf54, 0x813, 1, 1, 14, 14, 12, 0),
+ M( 0xf54, 0x814, 1, 1, 14, 14, 15, 0),
+ M( 0xf54, 0x815, 1, 1, 14, 14, 22, 0),
+ M( 0xf54, 0x815, 1, 1, 14, 14, 22, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x816, 0, 0, 16, 15, 20, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x817, 0, 1, 16, 13, 19, 0),
+ M( 0x81d, 0x818, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x819, 0, 0, 16, 16, 15, 0),
+ M( 0x81d, 0x81a, 0, 0, 16, 16, 31, 0),
+ M( 0x81d, 0x81b, 0, 0, 16, 16, 39, 0),
+ M( 0x81d, 0x81c, 0, 0, 16, 16, 7, 0),
+ M( 0x81d, 0x81c, 0, 0, 16, 16, 7, 0),
+ M( 0x81d, 0x81c, 0, 0, 16, 16, 7, 0),
+ M( 0x81d, 0x81c, 0, 0, 16, 16, 7, 0),
+ M( 0xf54, 0x81e | PALETTE_MODIFIER_COLOR, 1, 1, 14, 14, 4, 0),
+ M( 0xf54, 0x81f | PALETTE_MODIFIER_COLOR, 1, 1, 14, 14, 24, 0),
+ M( 0xf54, 0x820 | PALETTE_MODIFIER_COLOR, 1, 1, 14, 14, 27, 0),
+ M( 0x58c, 0x820 | PALETTE_MODIFIER_COLOR, 1, 1, 14, 14, 27, 0),
+ M( 0xf54, 0x821 | PALETTE_MODIFIER_COLOR, 3, 3, 10, 9, 3, 0),
+ M( 0xf54, 0x822 | PALETTE_MODIFIER_COLOR, 3, 3, 10, 9, 63, 0),
+ M( 0xf54, 0x823 | PALETTE_MODIFIER_COLOR, 3, 3, 10, 9, 62, 0),
+ M( 0x58c, 0x823 | PALETTE_MODIFIER_COLOR, 3, 3, 10, 9, 62, 0),
+ M( 0xf54, 0x824 | PALETTE_MODIFIER_COLOR, 4, 4, 7, 7, 3, 0),
+ M( 0xf54, 0x825 | PALETTE_MODIFIER_COLOR, 4, 4, 7, 7, 72, 0),
+ M( 0xf54, 0x825 | PALETTE_MODIFIER_COLOR, 4, 4, 7, 7, 72, 0),
+ M( 0x58c, 0x826 | PALETTE_MODIFIER_COLOR, 4, 4, 7, 7, 80, 0),
+ M( 0xf54, 0x827 | PALETTE_MODIFIER_COLOR, 2, 0, 12, 16, 51, 0),
+ M( 0xf54, 0x828 | PALETTE_MODIFIER_COLOR, 2, 0, 12, 16, 51, 0),
+ M( 0xf54, 0x829 | PALETTE_MODIFIER_COLOR, 2, 0, 12, 16, 51, 0),
+ M( 0x58c, 0x829 | PALETTE_MODIFIER_COLOR, 2, 0, 12, 16, 51, 0),
+ M( 0xf54, 0x82a | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 26, 0),
+ M( 0xf54, 0x82b | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 44, 0),
+ M( 0xf54, 0x82c | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 46, 0),
+ M( 0x58c, 0x82c | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 46, 0),
+ M( 0xf54, 0x82d, 3, 1, 10, 13, 2, 0),
+ M( 0xf54, 0x82e, 3, 1, 10, 13, 11, 0),
+ M( 0xf54, 0x82f, 3, 1, 10, 13, 11, 0),
+ M( 0x58c, 0x82f, 3, 1, 10, 13, 11, 0),
+ M( 0xfdd, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xfdd, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xfdd, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xfdd, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xfdd, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xfdd, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xfdd, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xfdd, 0x833, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x837, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x834, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x834, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x830, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x838, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x835, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x835, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x831, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x839, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x836, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x836, 0, 0, 16, 16, 20, 0),
+ M( 0xfdd, 0x832, 0, 0, 16, 16, 20, 0),
+ M( 0x7e6, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x87d, 0x87e, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x87e, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x87e, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x87e, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x87f, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x880, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x881, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x882, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x883, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x883, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x882, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x881, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x880, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x87f, 0, 0, 16, 16, 20, 0),
+ M( 0x87d, 0x87e, 0, 0, 16, 16, 20, 0),
+ M( 0x83a, 0x83c | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 18, 0),
+ M( 0x83a, 0x83c | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 18, 0),
+ M( 0x83a, 0x83c | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 18, 0),
+ M( 0x83a, 0x83c | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 18, 0),
+ M( 0x83b, 0x83d | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 18, 0),
+ M( 0x83b, 0x83d | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 18, 0),
+ M( 0x83b, 0x83d | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 18, 0),
+ M( 0x83b, 0x83d | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 18, 0),
+ M( 0x7e6, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x83e, 0x83f | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 18, 0),
+ M( 0x83e, 0x83f | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 18, 0),
+ M( 0x83e, 0x83f | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 18, 0),
+ M( 0x7e6, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x840, 0x841, 0, 0, 16, 16, 18, 0),
+ M( 0x840, 0x841, 0, 0, 16, 16, 18, 0),
+ M( 0x840, 0x841, 0, 0, 16, 16, 18, 0),
+ M( 0x7e6, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x842, 0x843, 0, 0, 16, 16, 30, 0),
+ M( 0x842, 0x843, 0, 0, 16, 16, 30, 0),
+ M( 0x842, 0x843, 0, 0, 16, 16, 30, 0),
+ M( 0x7e6, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x844, 0x845, 0, 0, 16, 16, 16, 0),
+ M( 0x844, 0x845, 0, 0, 16, 16, 16, 0),
+ M( 0x844, 0x845, 0, 0, 16, 16, 16, 0),
+ M( 0x7e6, 0x869, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86d, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86d, 0, 0, 16, 16, 50, 0),
+ M( 0x862 | PALETTE_MODIFIER_COLOR, 0x866 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86a, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86e, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86e, 0, 0, 16, 16, 50, 0),
+ M( 0x863 | PALETTE_MODIFIER_COLOR, 0x867 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86b, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86f, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86f, 0, 0, 16, 16, 50, 0),
+ M( 0x864 | PALETTE_MODIFIER_COLOR, 0x868 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86c, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x870, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x870, 0, 0, 16, 16, 50, 0),
+ M( 0x865 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0xf54, 0x871 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x875 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x875 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x879 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x872 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x876 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x876 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x87a | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x873 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x877 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x877 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x87b | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x874 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x878 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x878 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x87c | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x7ea, 3, 2, 8, 8, 18, 0),
+ M( 0xf54, 0x7eb, 3, 2, 8, 8, 37, 0),
+ M( 0xf54, 0x7ec, 3, 2, 8, 8, 49, 0),
+ M( 0x7e6, 0x7ec, 3, 2, 8, 8, 49, 0),
+ M( 0x7e6, 0x7ec, 3, 2, 8, 8, 49, 0),
+ M( 0x7e6, 0x7ed, 3, 2, 8, 8, 49, 0),
+ M( 0x7e6, 0x7ee, 3, 2, 8, 8, 49, 0),
+ M( 0x7e6, 0x7ee, 3, 2, 8, 8, 49, 0),
+ M( 0xf54, 0x7ef, 3, 2, 10, 7, 20, 0),
+ M( 0xf54, 0x7f0, 3, 2, 10, 7, 40, 0),
+ M( 0xf54, 0x7f1, 3, 2, 10, 7, 40, 0),
+ M( 0x7e6, 0x7f1, 3, 2, 10, 7, 40, 0),
+ M( 0xf54, 0x7f2, 4, 4, 7, 8, 22, 0),
+ M( 0xf54, 0x7f3, 4, 4, 7, 8, 22, 0),
+ M( 0xf54, 0x7f4, 4, 4, 7, 8, 22, 0),
+ M( 0x7e6, 0x7f4, 4, 4, 7, 8, 22, 0),
+ M( 0xf54, 0x7f5, 2, 1, 11, 13, 12, 0),
+ M( 0xf54, 0x7f6, 2, 1, 11, 13, 12, 0),
+ M( 0xf54, 0x7f7, 2, 1, 11, 13, 12, 0),
+ M( 0x7e6, 0x7f7, 2, 1, 11, 13, 12, 0),
+ M( 0x7e6, 0x85c, 0, 0, 1, 1, 1, 0),
+ M( 0x851, 0x852, 0, 0, 16, 16, 20, 0),
+ M( 0x851, 0x852, 0, 0, 16, 16, 20, 0),
+ M( 0x846 | PALETTE_MODIFIER_COLOR, 0x847 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 20, 0),
+ M( 0x7e6, 0x85d, 0, 0, 1, 1, 1, 0),
+ M( 0x853, 0x854, 0, 0, 16, 16, 20, 0),
+ M( 0x853, 0x854, 0, 0, 16, 16, 20, 0),
+ M( 0x848 | PALETTE_MODIFIER_COLOR, 0x849 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 20, 0),
+ M( 0x7e6, 0x85e, 0, 0, 1, 1, 1, 0),
+ M( 0x855, 0x856, 0, 0, 16, 16, 20, 0),
+ M( 0x855, 0x856, 0, 0, 16, 16, 20, 0),
+ M( 0x84a | PALETTE_MODIFIER_COLOR, 0x84b | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 20, 0),
+ M( 0x7e6, 0x85f, 0, 0, 1, 1, 1, 0),
+ M( 0x857, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x857, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x84c | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x7e6, 0x860, 0, 0, 1, 1, 1, 0),
+ M( 0x858, 0x859, 0, 0, 16, 16, 20, 0),
+ M( 0x858, 0x859, 0, 0, 16, 16, 20, 0),
+ M( 0x84d | PALETTE_MODIFIER_COLOR, 0x84e | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 20, 0),
+ M( 0x7e6, 0x861, 0, 0, 1, 1, 1, 0),
+ M( 0x85a, 0x85b, 0, 0, 16, 16, 20, 0),
+ M( 0x85a, 0x85b, 0, 0, 16, 16, 20, 0),
+ M( 0x84f | PALETTE_MODIFIER_COLOR, 0x850 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 20, 0),
+ M( 0x7e6, 0x884, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x884, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x884, 0, 0, 16, 16, 25, 0),
+ M( 0x886, 0x884, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x885, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x885, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x885, 0, 0, 16, 16, 25, 0),
+ M( 0x887, 0x885, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x88c | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x88d | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x88d | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x88e | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x88f | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x890 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x890 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x891 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x892 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x893 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x893 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x894 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x895 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x896 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x896 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x897 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x898, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x899, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x899, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x89a, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8a6, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x89b, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x89c, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x89c, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x89d, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x89e, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x89f, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8a0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8a0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x89f, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8a0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8a1, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8a2, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8a3, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8a4, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8a2, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8a3, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8a5, 0, 0, 16, 16, 25, 0),
+ M( 0x8a7, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8b7, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8b7, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8c7, 0, 0, 16, 16, 25, 0),
+ M( 0x8a8, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8b8, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8b8, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c8, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8a9, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8b9, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8b9, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8c9, 0, 0, 16, 16, 25, 0),
+ M( 0x8aa, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8ba, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8ba, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8ca, 0, 0, 16, 16, 25, 0),
+ M( 0x8ab, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8bb, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8bb, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8cb, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8ac, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8bc, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8bc, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8cc, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8ad, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8bd, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8bd, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8cd, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8ae, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8be, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8be, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8ce, 0x8d7, 0, 0, 16, 16, 35, 0),
+ M( 0x8af, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8bf, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8bf, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8cf, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8b0, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c0, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c0, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8d0, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8b1, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c1, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c1, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8d1, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8b2, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c2, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c2, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8d2, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8b3, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c3, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c3, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8d3, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8b4, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c4, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c4, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8d4, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8b5, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c5, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c5, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8d5, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8b6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8c6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8d6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8ce, 0x8d7, 0, 0, 16, 16, 35, 0),
+ M( 0x8ce, 0x8d8, 0, 0, 16, 16, 35, 0),
+ M( 0x8ce, 0x8d9, 0, 0, 16, 16, 35, 0),
+ M( 0x8ce, 0x8d9, 0, 0, 16, 16, 35, 0),
+ M( 0x7e6, 0x88a, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x88a, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x88a, 0, 0, 16, 16, 25, 0),
+ M( 0x888, 0x88a, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x88b, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x88b, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x88b, 0, 0, 16, 16, 25, 0),
+ M( 0x889, 0x88b, 0, 0, 16, 16, 25, 0),
+ M( 0x8da, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8e3, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8e3, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8ec, 0, 0, 16, 16, 25, 0),
+ M( 0x8db, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8e4, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8e4, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8ed, 0, 0, 16, 16, 25, 0),
+ M( 0x8dc, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8e5, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8e5, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8ee, 0, 0, 16, 16, 25, 0),
+ M( 0x8dd, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8e6, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8e6, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8ef, 0, 0, 16, 16, 25, 0),
+ M( 0x8de, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8e7, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8e7, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8f0, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8df, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8e8, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8e8, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8f1, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8e0, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8e9, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8e9, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x8f2, 0, 0, 16, 16, 25, 0),
+ M( 0x8e1, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8ea, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8ea, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8f3, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8e2, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8eb, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8eb, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8f4, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8f5, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x905, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x905, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x915, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8f6, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x906, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x906, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x916, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8f7, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x907, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x907, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x917, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8f8, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x908, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x908, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x918, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8f9, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x909, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x909, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x919, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8fa, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90a, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90a, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x91a, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8fb, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90b, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90b, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x91b, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8fc, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90c, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90c, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x91c, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8fd, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90d, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90d, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x91d, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8fe, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90e, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90e, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x91e, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x8ff, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90f, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x90f, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x91f, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x900, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x910, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x910, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x920, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x901, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x911, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x911, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x921, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x902, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x912, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x912, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x922, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x903, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x913, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x913, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x923, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x904, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x914, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x914, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x924, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x925, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x925, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x925, 0x926, 0, 0, 16, 16, 30, 0),
+ M( 0x925, 0x926, 0, 0, 16, 16, 30, 0),
+ M( 0x925, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x925, 0x0, 0, 0, 16, 16, 25, 0),
+ M( 0x925, 0x927, 0, 0, 16, 16, 30, 0),
+ M( 0x925, 0x927, 0, 0, 16, 16, 30, 0),
+ M( 0x11c6, 0x92b | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x11c6, 0x92c | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x11c6, 0x92c | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x11c6, 0x92d | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x11c6, 0x92e | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x11c6, 0x92f | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x11c6, 0x92f | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x11c6, 0x930 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x11c6, 0x928 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x11c6, 0x929 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x11c6, 0x929 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x11c6, 0x92a | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 25, 0),
+ M( 0x7e6, 0x869, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86d, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86d, 0, 0, 16, 16, 50, 0),
+ M( 0x862 | PALETTE_MODIFIER_COLOR, 0x866 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86a, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86e, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86e, 0, 0, 16, 16, 50, 0),
+ M( 0x863 | PALETTE_MODIFIER_COLOR, 0x867 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86b, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86f, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86f, 0, 0, 16, 16, 50, 0),
+ M( 0x864 | PALETTE_MODIFIER_COLOR, 0x868 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x86c, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x870, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x870, 0, 0, 16, 16, 50, 0),
+ M( 0x865 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 1, 1, 0, 0),
+ M( 0x7e6, 0x931, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x935, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x935, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x939, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x932, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x936, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x936, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x93a, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x933, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x937, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x937, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x93b, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x934, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x938, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x938, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x93c, 0, 0, 16, 16, 50, 0),
+ M( 0x81d, 0x818, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x819, 0, 0, 16, 16, 15, 0),
+ M( 0x81d, 0x81a, 0, 0, 16, 16, 31, 0),
+ M( 0x81d, 0x81b, 0, 0, 16, 16, 39, 0),
+ M( 0x81d, 0x81c, 0, 0, 16, 16, 7, 0),
+ M( 0x81d, 0x81c, 0, 0, 16, 16, 7, 0),
+ M( 0x81d, 0x81c, 0, 0, 16, 16, 7, 0),
+ M( 0x81d, 0x81c, 0, 0, 16, 16, 7, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1245 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1248 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1248 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x124b | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1247 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x124a | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x124a | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x124d | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1246 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1249 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1249 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x124c | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x81d, 0x124e, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x124f, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x1250, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x1251, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x1252, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x1252, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x1252, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x1252, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x1253, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x1254, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x1254, 0, 0, 16, 16, 10, 0),
+ M( 0x81d, 0x1255, 0, 0, 16, 16, 10, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x125b, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x125e, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x125e, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1261, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x125c, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x125f, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x125f, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1262, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x125d, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1260, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1260, 0, 0, 16, 16, 50, 0),
+ M( 0x7e6, 0x1263, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1264, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1264, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1268, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1265, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1265, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1269, 0, 0, 16, 16, 50, 4),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1266, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1266, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x126a, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1267, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1267, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x126b, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x126c, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1271, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1271, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1271, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1271, 0x1279, 0, 0, 16, 16, 50, 0),
+ M( 0x1272, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1272, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1272, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1272, 0x127a, 0, 0, 16, 16, 50, 0),
+ M( 0x1273, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1273, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1273, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1273, 0x127b, 0, 0, 16, 16, 50, 0),
+ M( 0x1274, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1274, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1274, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1274, 0x127c, 0, 0, 16, 16, 50, 0),
+ M( 0x1275, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1275, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1275, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1275, 0x127d, 0, 0, 16, 16, 50, 0),
+ M( 0x1276, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1276, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1276, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1276, 0x127e, 0, 0, 16, 16, 50, 0),
+ M( 0x1277, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1277, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1277, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1277, 0x127f, 0, 0, 16, 16, 50, 0),
+ M( 0x1278, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1278, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1278, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1278, 0x1280, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x1284 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x1283 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x1283 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x1286 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x1281 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x1282 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x1282 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x1285 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1287 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1287 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1287 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x1288 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x1288 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x1288 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1243, 0x1289 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 3),
+ M( 0x1243, 0x1289 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 3),
+ M( 0x1243, 0x1289 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 3),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x129b, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x129b, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x129b, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x129b, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x129c, 0, 0, 16, 16, 50, 2),
+ M( 0xf8d, 0x129c, 0, 0, 16, 16, 50, 2),
+ M( 0xf8d, 0x129c, 0, 0, 16, 16, 50, 2),
+ M( 0xf8d, 0x129c, 0, 0, 16, 16, 50, 2),
+ M( 0xf8d, 0x129d, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x129d, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x129d, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x129d, 0, 0, 16, 16, 50, 0),
+ M( 0x12a0 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a0 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a0 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a0 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a1 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a1 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a1 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a1 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a2 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a2 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a2 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a2 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a3 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a3 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a3 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0x12a3 | PALETTE_MODIFIER_COLOR, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x0, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x12a4 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x12a4 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x12a4 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x12a4 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x12a6 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x12a6 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x12a6 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x12a6 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 0),
+ M( 0xf8d, 0x12a5 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 1),
+ M( 0xf8d, 0x12a5 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 1),
+ M( 0xf8d, 0x12a5 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 1),
+ M( 0xf8d, 0x12a5 | PALETTE_MODIFIER_COLOR, 0, 0, 16, 16, 50, 1),
+};
+
+static const DrawIndustrySpec1Struct _draw_industry_spec1[96] = {
+ { 8, 4, 0, 0},
+ { 6, 0, 1, 0},
+ { 4, 0, 2, 0},
+ { 6, 0, 3, 0},
+ { 8, 0, 4, 0},
+ { 10, 0, 5, 0},
+ { 12, 0, 6, 0},
+ { 10, 0, 1, 0},
+ { 8, 0, 2, 0},
+ { 6, 0, 3, 0},
+ { 4, 0, 4, 0},
+ { 6, 0, 5, 1},
+ { 8, 0, 6, 1},
+ { 10, 0, 1, 1},
+ { 12, 0, 2, 1},
+ { 10, 0, 3, 1},
+ { 8, 1, 4, 1},
+ { 6, 1, 5, 1},
+ { 4, 1, 6, 1},
+ { 6, 1, 1, 1},
+ { 8, 1, 2, 1},
+ { 10, 1, 3, 1},
+ { 12, 1, 4, 1},
+ { 10, 1, 5, 2},
+ { 8, 1, 6, 2},
+ { 6, 1, 1, 2},
+ { 4, 1, 2, 2},
+ { 6, 1, 3, 2},
+ { 8, 1, 4, 2},
+ { 10, 1, 5, 2},
+ { 12, 1, 6, 2},
+ { 10, 1, 1, 2},
+ { 8, 2, 2, 2},
+ { 6, 2, 3, 2},
+ { 4, 2, 4, 3},
+ { 6, 2, 5, 3},
+ { 8, 2, 6, 3},
+ { 10, 2, 1, 3},
+ { 12, 2, 2, 3},
+ { 10, 2, 3, 3},
+ { 8, 2, 4, 3},
+ { 6, 2, 5, 3},
+ { 4, 2, 6, 3},
+ { 6, 2, 1, 3},
+ { 8, 2, 2, 3},
+ { 10, 2, 3, 4},
+ { 12, 2, 4, 4},
+ { 10, 2, 5, 4},
+ { 8, 3, 6, 4},
+ { 6, 3, 1, 4},
+ { 4, 3, 2, 4},
+ { 6, 3, 3, 4},
+ { 8, 3, 4, 4},
+ { 10, 3, 5, 4},
+ { 12, 3, 6, 4},
+ { 10, 3, 1, 4},
+ { 8, 3, 2, 4},
+ { 6, 3, 3, 4},
+ { 4, 3, 4, 4},
+ { 6, 3, 5, 4},
+ { 8, 3, 6, 4},
+ { 10, 3, 1, 4},
+ { 12, 3, 2, 4},
+ { 10, 3, 3, 4},
+ { 8, 4, 4, 4},
+ { 6, 4, 5, 4},
+ { 4, 4, 6, 4},
+ { 6, 4, 0, 4},
+ { 8, 4, 0, 4},
+ { 10, 4, 0, 4},
+ { 12, 4, 0, 4},
+ { 10, 4, 0, 4},
+ { 8, 4, 0, 4},
+ { 6, 4, 0, 4},
+ { 4, 4, 0, 4},
+ { 6, 4, 0, 4},
+ { 8, 4, 0, 4},
+ { 10, 4, 0, 4},
+ { 12, 4, 0, 4},
+ { 10, 4, 0, 4},
+ { 8, 4, 0, 4},
+ { 6, 4, 0, 4},
+ { 4, 4, 0, 4},
+ { 6, 4, 0, 4},
+ { 8, 4, 0, 4},
+ { 10, 4, 0, 4},
+ { 12, 4, 0, 4},
+ { 10, 4, 0, 4},
+ { 8, 4, 0, 4},
+ { 6, 4, 0, 4},
+ { 4, 4, 0, 4},
+ { 6, 4, 0, 4},
+ { 8, 4, 0, 4},
+ { 10, 4, 0, 4},
+ { 12, 4, 0, 4},
+ { 10, 4, 0, 4},
+};
+
+static const byte _drawtile_proc1_x[5] = {
+ 22, 17, 14, 10, 8
+};
+
+static const byte _drawtile_proc1_y[5] = {
+ 73, 70, 69, 66, 41
+};
+
+static const DrawIndustrySpec4Struct _industry_anim_offs_3[] = {
+ {255, 255, 0},
+ { 0, 255, 0},
+ { 1, 255, 0},
+ { 2, 255, 0},
+ { 3, 255, 0},
+ { 4, 255, 0},
+ { 5, 255, 0},
+ { 6, 255, 0},
+ { 7, 255, 0},
+ { 8, 255, 0},
+ { 9, 255, 0},
+ { 10, 255, 0},
+ { 11, 255, 0},
+ { 12, 255, 0},
+ { 13, 255, 0},
+ { 14, 255, 0},
+ { 15, 255, 0},
+ { 16, 255, 0},
+ { 17, 255, 0},
+ { 18, 255, 0},
+ { 18, 255, 1},
+ { 18, 255, 2},
+ { 18, 255, 4},
+ { 18, 255, 6},
+ { 18, 255, 8},
+ { 18, 255, 11},
+ { 18, 255, 14},
+ { 18, 255, 17},
+ { 18, 255, 20},
+ { 18, 255, 24},
+ {255, 0, 29},
+ {255, 0, 24},
+ {255, 0, 20},
+ {255, 0, 17},
+ {255, 0, 14},
+ {255, 0, 11},
+ {255, 0, 8},
+ {255, 0, 6},
+ {255, 0, 4},
+ {255, 0, 2},
+ {255, 0, 1},
+ {255, 1, 0},
+ {255, 2, 0},
+ {255, 3, 0},
+ {255, 4, 0},
+ {255, 5, 0},
+ {255, 6, 0},
+ {255, 7, 0},
+ {255, 8, 0},
+ {255, 255, 0},
+};
+
+static const byte _industry_anim_offs[] = {
+ 255, 0, 0, 0, 2, 4, 6, 8, 10, 9,
+ 7, 5, 3, 1, 255, 0, 0, 0, 2, 4,
+ 6, 8, 10, 9, 7, 5, 3, 1, 255, 0,
+ 0, 0, 2, 4, 6, 8, 10, 9, 7, 5,
+ 3, 1, 255, 0, 0, 0, 2, 4, 6, 8,
+ 10, 9, 7, 5, 3, 1, 255, 0, 0, 0,
+ 2, 4, 6, 8, 10, 9, 7, 5, 3, 1
+};
+
+static const byte _industry_anim_offs_2[] = {
+ 68, 69, 71, 74, 77, 80, 83, 85, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 85, 84, 83, 82, 81, 80, 79, 78,
+ 77, 76, 75, 74, 73, 72, 71, 70, 69, 68,
+};
+
+static const byte _coal_plant_sparks_x[] = {11, 11, 14, 13, 18, 15};
+static const byte _coal_plant_sparks_y[] = {23, 11, 6, 3, 1, 0};
+
+#define N 255
+/**
+ * Next frame in an animation
+ * The indices into this table are the ones as described by
+ * the enum with GFX_*s in industry_map.h.
+ */
+static const byte _industry_section_animation_next[NUM_INDUSTRY_GFXES] = {
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, 16, N, N, N, N, N, N, // <- growing forest
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, 129, N, N, N, N, N, // <- growing candyfloss
+135, N, N, N, N, N, N, N, // <- 'growing' batteries
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N,
+};
+
+/**
+ * Animation to start when goods is produced
+ * The indices into this table are the ones as described by
+ * the enum with GFX_*s in industry_map.h.
+ */
+static const byte _industry_produce_section[NUM_INDUSTRY_GFXES] = {
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+17, N, N, N, N, N, N, N, // <- chopping forest
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, 130, N, N, N, N, N, 136, // <- chopping candyfloss and reaping batteries
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N, N,
+N, N, N, N, N, N, N,
+};
+
+#undef N
+
+/**
+ * The indices into this table are the ones as described by
+ * the enum with GFX_*s in industry_map.h.
+ */
+static const byte _industry_section_bits[NUM_INDUSTRY_GFXES] = {
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 4, 2, 16, 16, 16, 16, // <- temperate bank
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 4, 2, 16, 16, 16, 16, 16, // <- sub-arctic/sub-tropical bank
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16,
+};
+
+/**
+ * When true, the tile has to be drawn using the animation
+ * state instead of the construction state.
+ * The indices into this table are the ones as described by
+ * the enum with GFX_*s in industry_map.h.
+ */
+static const bool _industry_section_draw_animation_state[NUM_INDUSTRY_GFXES] = {
+ false, true, false, false, false, false, false, false, // <- animated wheel tower of coal mine
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, true, true, // <- animated oil well
+ true, false, false, false, false, false, false, false, // <- animated oil well
+ false, false, false, false, false, false, false, false,
+ true, false, false, false, false, false, false, false, // <- animated wheel tower of copper mine
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ true, false, false, false, false, false, false, false, // <- animated wheel tower of gold mine
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false,
+};
diff --git a/src/table/landscape_const.h b/src/table/landscape_const.h
new file mode 100644
index 000000000..518a48047
--- /dev/null
+++ b/src/table/landscape_const.h
@@ -0,0 +1,257 @@
+/* $Id$ */
+
+#include "sprites.h"
+
+typedef struct CargoTypesValues {
+ StringID names[NUM_CARGO];
+ StringID units_volume[NUM_CARGO];
+ byte weights[NUM_CARGO];
+ SpriteID sprites[NUM_CARGO];
+
+ uint16 initial_cargo_payment[NUM_CARGO];
+ byte transit_days_table_1[NUM_CARGO];
+ byte transit_days_table_2[NUM_CARGO];
+} CargoTypesValues;
+
+
+static const CargoTypesValues _cargo_types_base_values[4] = {
+ {
+ /* normal names */
+ {
+ STR_000F_PASSENGERS,
+ STR_0010_COAL,
+ STR_0011_MAIL,
+ STR_0012_OIL,
+ STR_0013_LIVESTOCK,
+ STR_0014_GOODS,
+ STR_0015_GRAIN,
+ STR_0016_WOOD,
+ STR_0017_IRON_ORE,
+ STR_0018_STEEL,
+ STR_0019_VALUABLES,
+ STR_000E,
+ },
+
+ { /* normal units of volume */
+ STR_PASSENGERS,
+ STR_TONS,
+ STR_BAGS,
+ STR_LITERS,
+ STR_ITEMS,
+ STR_CRATES,
+ STR_TONS,
+ STR_TONS,
+ STR_TONS,
+ STR_TONS,
+ STR_BAGS,
+ STR_RES_OTHER
+ },
+
+ /* normal weights */
+ {
+ 1, 16, 4, 16, 3, 8, 16, 16, 16, 16, 2, 0,
+ },
+
+ /* normal sprites */
+ {
+ SPR_CARGO_PASSENGER, SPR_CARGO_COAL, SPR_CARGO_MAIL, SPR_CARGO_OIL, SPR_CARGO_LIVESTOCK,
+ SPR_CARGO_GOODS, SPR_CARGO_GRAIN, SPR_CARGO_WOOD, SPR_CARGO_IRON_ORE, SPR_CARGO_STEEL,
+ SPR_CARGO_VALUES_GOLD, SPR_ASCII_SPACE
+ },
+
+ /* normal initial cargo payment */
+ {
+ 3185, 5916, 4550, 4437, 4322, 6144, 4778, 5005, 5120, 5688, 7509, 5688
+ },
+
+ /* normal transit days table 1 */
+ {
+ 0, 7, 20, 25, 4, 5, 4, 15, 9, 7, 1, 0,
+ },
+
+ /* normal transit days table 2 */
+ {
+ 24, 255, 90, 255, 18, 28, 40, 255, 255, 255, 32, 30,
+ },
+ },
+
+ {
+ /* hilly names */
+ {
+ STR_000F_PASSENGERS,
+ STR_0010_COAL,
+ STR_0011_MAIL,
+ STR_0012_OIL,
+ STR_0013_LIVESTOCK,
+ STR_0014_GOODS,
+ STR_0022_WHEAT,
+ STR_0016_WOOD,
+ STR_000E,
+ STR_001F_PAPER,
+ STR_0020_GOLD,
+ STR_001E_FOOD,
+ },
+
+ { /* hilly units of volume */
+ STR_PASSENGERS,
+ STR_TONS,
+ STR_BAGS,
+ STR_LITERS,
+ STR_ITEMS,
+ STR_CRATES,
+ STR_TONS,
+ STR_TONS,
+ STR_RES_OTHER,
+ STR_TONS,
+ STR_BAGS,
+ STR_TONS
+ },
+
+ /* hilly weights */
+ {
+ 1, 16, 4, 16, 3, 8, 16, 16, 0, 16, 8, 16
+ },
+
+ /* hilly sprites */
+ {
+ SPR_CARGO_PASSENGER, SPR_CARGO_COAL, SPR_CARGO_MAIL, SPR_CARGO_OIL, SPR_CARGO_LIVESTOCK,
+ SPR_CARGO_GOODS, SPR_CARGO_GRAIN, SPR_CARGO_WOOD, SPR_ASCII_SPACE, SPR_CARGO_PAPER,
+ SPR_CARGO_VALUES_GOLD, SPR_CARGO_FOOD
+ },
+
+ /* hilly initial cargo payment */
+ {
+ 3185, 5916, 4550, 4437, 4322, 6144, 4778, 5005, 5120, 5461, 5802, 5688
+ },
+
+ /* hilly transit days table 1 */
+ {
+ 0, 7, 20, 25, 4, 5, 4, 15, 9, 7, 10, 0,
+ },
+
+ /* hilly transit days table 2 */
+ {
+ 24, 255, 90, 255, 18, 28, 40, 255, 255, 60, 40, 30
+ },
+ },
+
+ {
+ /* desert names */
+ {
+ STR_000F_PASSENGERS,
+ STR_0023_RUBBER,
+ STR_0011_MAIL,
+ STR_0012_OIL,
+ STR_001C_FRUIT,
+ STR_0014_GOODS,
+ STR_001B_MAIZE,
+ STR_0016_WOOD,
+ STR_001A_COPPER_ORE,
+ STR_0021_WATER,
+ STR_001D_DIAMONDS,
+ STR_001E_FOOD
+ },
+
+ { /* desert units of volume */
+ STR_PASSENGERS,
+ STR_LITERS,
+ STR_BAGS,
+ STR_LITERS,
+ STR_TONS,
+ STR_CRATES,
+ STR_TONS,
+ STR_TONS,
+ STR_TONS,
+ STR_LITERS,
+ STR_BAGS,
+ STR_TONS
+ },
+
+ /* desert weights */
+ {
+ 1, 16, 4, 16, 16, 8, 16, 16, 16, 16, 2, 16,
+ },
+
+ /* desert sprites */
+ {
+ SPR_CARGO_PASSENGER, SPR_CARGO_RUBBER, SPR_CARGO_MAIL, SPR_CARGO_OIL, SPR_CARGO_FRUIT,
+ SPR_CARGO_GOODS, SPR_CARGO_GRAIN, SPR_CARGO_WOOD, SPR_CARGO_COPPER_ORE, SPR_CARGO_WATERCOLA,
+ SPR_CARGO_DIAMONDS, SPR_CARGO_FOOD
+ },
+
+ /* desert initial cargo payment */
+ {
+ 3185, 4437, 4550, 4892, 4209, 6144, 4322, 7964, 4892, 4664, 5802, 5688
+ },
+
+ /* desert transit days table 1 */
+ {
+ 0, 2, 20, 25, 0, 5, 4, 15, 12, 20, 10, 0
+ },
+
+ /* desert transit days table 2 */
+ {
+ 24, 20, 90, 255, 15, 28, 40, 255, 255, 80, 255, 30
+ },
+ },
+
+ {
+ /* candy names */
+ {
+ STR_000F_PASSENGERS,
+ STR_0024_SUGAR,
+ STR_0011_MAIL,
+ STR_0025_TOYS,
+ STR_002B_BATTERIES,
+ STR_0026_CANDY,
+ STR_002A_TOFFEE,
+ STR_0027_COLA,
+ STR_0028_COTTON_CANDY,
+ STR_0029_BUBBLES,
+ STR_002C_PLASTIC,
+ STR_002D_FIZZY_DRINKS,
+ },
+
+ { /* candy unitrs of volume */
+ STR_PASSENGERS,
+ STR_TONS,
+ STR_BAGS,
+ STR_NOTHING,
+ STR_NOTHING,
+ STR_TONS,
+ STR_TONS,
+ STR_LITERS,
+ STR_TONS,
+ STR_NOTHING,
+ STR_LITERS,
+ STR_NOTHING
+ },
+
+ /* candy weights */
+ {
+ 1, 16, 4, 2, 4, 5, 16, 16, 16, 1, 16, 2
+ },
+
+ /* candy sprites */
+ {
+ SPR_CARGO_PASSENGER, SPR_CARGO_SUGAR, SPR_CARGO_MAIL, SPR_CARGO_TOYS, SPR_CARGO_BATTERIES,
+ SPR_CARGO_CANDY, SPR_CARGO_TOFFEE, SPR_CARGO_WATERCOLA, SPR_CARGO_COTTONCANDY, SPR_CARGO_BUBBLES,
+ SPR_CARGO_PLASTIC, SPR_CARGO_FIZZYDRINK
+ },
+
+ /* candy initial cargo payment */
+ {
+ 3185, 4437, 4550, 5574, 4322, 6144, 4778, 4892, 5005, 5077, 4664, 6250
+ },
+
+ /* candy transit days table 1 */
+ {
+ 0, 20, 20, 25, 2, 8, 14, 5, 10, 20, 30, 30,
+ },
+
+ /* candy transit days table 2 */
+ {
+ 24, 255, 90, 255, 30, 40, 60, 75, 25, 80, 255, 50
+ },
+ }
+};
diff --git a/src/table/landscape_sprite.h b/src/table/landscape_sprite.h
new file mode 100644
index 000000000..88f5f48b1
--- /dev/null
+++ b/src/table/landscape_sprite.h
@@ -0,0 +1,167 @@
+/* $Id$ */
+
+static const SpriteID _landscape_spriteindexes_1[] = {
+ 0xF67, 0xF9F,
+ 0xAAD, 0xAB0,
+ 0x83A, 0x845,
+ 0xFA0, 0xFC9,
+ 0x43F, 0x45E,
+ 0x566, 0x56D,
+ 0x945, 0x94C,
+ 0x3ED, 0x40C,
+ 0x515, 0x51C,
+ 0x55A, 0x561,
+ 0x534, 0x546,
+ 0x93D, 0x944,
+ 0x955, 0x95C,
+ 0xFDD, 0xFEC,
+ 0x87D, 0x883,
+ 0xA2B, 0xA39,
+ 0x497, 0x4B0,
+ 0x572, 0x575,
+ 0x94D, 0x954,
+ 0x818, 0x81D,
+ 0x3DE, 0x3EB,
+0x1212, 0x1212,
+END
+};
+
+static const SpriteID _landscape_spriteindexes_2[] = {
+ 0xF67, 0xF9F,
+ 0xAAD, 0xAB0,
+ 0xFA0, 0xFC9,
+ 0x43F, 0x45E,
+ 0x566, 0x56D,
+ 0x945, 0x94C,
+ 0x3ED, 0x40C,
+ 0x515, 0x51C,
+ 0x55A, 0x561,
+ 0x547, 0x559,
+ 0x93D, 0x944,
+ 0x955, 0x95C,
+ 0xFDD, 0xFEC,
+ 0x87D, 0x883,
+ 0xA2B, 0xA39,
+ 0x497, 0x4B0,
+ 0x572, 0x575,
+ 0x94D, 0x954,
+ 0x5AE, 0x5AF,
+0x118D, 0x11D8,
+ 0x534, 0x546,
+ 0x40D, 0x426,
+ 0x45F, 0x478,
+ 0x4B1, 0x4CA,
+ 0x95D, 0x97C,
+ 0x3DE, 0x3EB,
+ 0x562, 0x565,
+ 0x56E, 0x571,
+ 0x57A, 0x57D,
+ 0x83A, 0x845,
+ 0xFF5, 0xFF5,
+ 0xFF8, 0xFF8,
+0x1212, 0x1212,
+END
+};
+
+static const SpriteID _landscape_spriteindexes_3[] = {
+ 0xF54, 0xF9F,
+ 0xFDD, 0xFE5,
+ 0xFEC, 0xFEC,
+ 0xFA0, 0xFC9,
+ 0x818, 0x81D,
+ 0x521, 0x546,
+ 0x57E, 0x57F,
+ 0x3ED, 0x40C,
+ 0x43F, 0x45E,
+ 0x491, 0x4B0,
+ 0xA48, 0xA48,
+ 0x4FB, 0x50A,
+ 0x55A, 0x561,
+ 0x566, 0x56D,
+ 0x572, 0x579,
+ 0x427, 0x42C,
+ 0x479, 0x47E,
+ 0x4CB, 0x4D0,
+ 0x4EF, 0x4FA,
+ 0xE9D, 0xECC,
+ 0xF3D, 0xF40,
+ 0xB59, 0xB60,
+ 0xE5D, 0xE6C,
+ 0xA49, 0xA59,
+ 0xA63, 0xA68,
+ 0xA5A, 0xA62,
+ 0xA78, 0xA83,
+ 0xA69, 0xA77,
+ 0xA84, 0xAA3,
+ 0xAA7, 0xAAC,
+ 0xA2B, 0xA47,
+ 0x3DE, 0x3EB,
+ 0x47F, 0x488,
+ 0x4D1, 0x4DA,
+ 0x42D, 0x436,
+ 0x515, 0x51C,
+ 0x580, 0x585,
+ 0xC14, 0xCB3,
+ 0xAAD, 0xAB0,
+ 0xAB5, 0xB00,
+ 0xB69, 0xB70,
+ 0xB61, 0xB68,
+ 0xBC9, 0xBD0,
+ 0xBD9, 0xBE0,
+ 0xBA9, 0xBB0,
+ 0xBC1, 0xBC4,
+ 0x2D0, 0x2D0,
+ 0xAA5, 0xAA6,
+ 0x50F, 0x50F,
+ 0x2EA, 0x2EA,
+ 0x2ED, 0x2EE,
+ 0x512, 0x513,
+ 0x4EB, 0x4EE,
+ 0x4E7, 0x4EA,
+ 0x985, 0xA28,
+0x10E4, 0x1133,
+ 0x93D, 0x95C,
+ 0x97D, 0x984,
+ 0x7DA, 0x7DA,
+ 0x2E6, 0x2E6,
+ 0x1, 0x1,
+ 0xE54, 0xE54,
+ 0x51F, 0x520,
+ 0x514, 0x514,
+ 0x511, 0x511,
+ 0x322, 0x322,
+END
+};
+
+
+/* Slope graphics indexes temperate climate
+Skip first 3 sprites and only load the proper set */
+static const SpriteID _slopes_spriteindexes_0[] = {
+ SKIP, 3,
+ SPR_SLOPES_BASE, SPR_SLOPES_BASE + 73,
+ END
+};
+
+/* Slope graphics indexes arctic climate
+Skip first 79 sprites and only load the proper set */
+static const SpriteID _slopes_spriteindexes_1[] = {
+ SKIP, 79,
+ SPR_SLOPES_BASE, SPR_SLOPES_BASE + 73,
+ END
+};
+
+/* Slope graphics indexes tropical climate
+Skip first 155 sprites and only load the proper set */
+static const SpriteID _slopes_spriteindexes_2[] = {
+ SKIP, 155,
+ SPR_SLOPES_BASE, SPR_SLOPES_BASE + 73,
+ END
+};
+
+/* Slope graphics indexes toyland climate
+Skip first 231 sprites and only load the proper set */
+static const SpriteID _slopes_spriteindexes_3[] = {
+ SKIP, 231,
+ SPR_SLOPES_BASE, SPR_SLOPES_BASE + 73,
+ END
+};
diff --git a/src/table/namegen.h b/src/table/namegen.h
new file mode 100644
index 000000000..a5d9974d6
--- /dev/null
+++ b/src/table/namegen.h
@@ -0,0 +1,3302 @@
+/* $Id$ */
+
+#include "../stdafx.h"
+#include "../openttd.h"
+
+static const char *name_original_english_1[] = {
+ "Great ",
+ "Little ",
+ "New ",
+ "Fort ",
+};
+
+static const char *name_original_english_2[] = {
+ "Wr",
+ "B",
+ "C",
+ "Ch",
+ "Br",
+ "D",
+ "Dr",
+ "F",
+ "Fr",
+ "Fl",
+ "G",
+ "Gr",
+ "H",
+ "L",
+ "M",
+ "N",
+ "P",
+ "Pr",
+ "Pl",
+ "R",
+ "S",
+ "S",
+ "Sl",
+ "T",
+ "Tr",
+ "W"
+};
+
+static const char *name_original_english_3[] = {
+ "ar",
+ "a",
+ "e",
+ "in",
+ "on",
+ "u",
+ "un",
+ "en"
+};
+
+static const char *name_original_english_4[] = {
+ "n",
+ "ning",
+ "ding",
+ "d",
+ "",
+ "t"
+ "fing"
+};
+
+static const char *name_original_english_5[] = {
+ "ville",
+ "ham",
+ "field",
+ "ton",
+ "town",
+ "bridge",
+ "bury",
+ "wood",
+ "ford",
+ "hall",
+ "ston",
+ "way",
+ "stone",
+ "borough",
+ "ley",
+ "head",
+ "bourne",
+ "pool",
+ "worth",
+ "hill",
+ "well",
+ "hattan",
+ "burg",
+};
+
+static const char *name_original_english_6[] = {
+ "-on-sea",
+ " Bay",
+ " Market",
+ " Cross",
+ " Bridge",
+ " Falls",
+ " City",
+ " Ridge",
+ " Springs"
+};
+
+static const char *name_additional_english_prefix[] = {
+ "Great ",
+ "Little ",
+ "New ",
+ "Fort ",
+ "St. ",
+ "Old "
+};
+
+static const char *name_additional_english_1a[] = {
+ "Pen",
+ "Lough",
+ "Stam",
+ "Aber",
+ "Acc",
+ "Ex",
+ "Ax",
+ "Bre",
+ "Cum",
+ "Dun",
+ "Fin",
+ "Inver",
+ "Kin",
+ "Mon",
+ "Nan",
+ "Nant",
+ "Pit",
+ "Pol",
+ "Pont",
+ "Strath",
+ "Tre",
+ "Tilly",
+ "Beck",
+ "Canter",
+ "Bath",
+ "Liver",
+ "Mal",
+ "Ox",
+ "Bletch",
+ "Maccles",
+ "Grim",
+ "Wind",
+ "Sher",
+ "Gates",
+ "Orp",
+ "Brom",
+ "Lewis",
+ "Whit",
+ "White",
+ "Worm",
+ "Tyne",
+ "Avon",
+ "Stan"
+};
+
+static const char *name_additional_english_1b1[] = {
+ "Wr",
+ "B",
+ "C",
+ "Ch",
+ "Br",
+ "D",
+ "Dr",
+ "F",
+ "Fr",
+ "Fl",
+ "G",
+ "Gr",
+ "H",
+ "L",
+ "M",
+ "N",
+ "P",
+ "Pr",
+ "Pl",
+ "R",
+ "S",
+ "S",
+ "Sl",
+ "T",
+ "Tr",
+ "W"
+};
+
+static const char *name_additional_english_1b2[] = {
+ "ar",
+ "a",
+ "e",
+ "in",
+ "on",
+ "u",
+ "o",
+ "ee",
+ "es",
+ "ea",
+ "un",
+ "en"
+};
+
+static const char *name_additional_english_1b3a[] = {
+ "n",
+ "d",
+ "",
+ "t",
+ "",
+ ""
+};
+
+static const char *name_additional_english_1b3b[] = {
+ "ning",
+ "ding",
+ "fing"
+};
+
+static const char *name_additional_english_2[] = {
+ "ville",
+ "ham",
+ "field",
+ "ton",
+ "town",
+ "borough",
+ "bridge",
+ "bury",
+ "wood",
+ "ditch",
+ "ford",
+ "hall",
+ "dean",
+ "leigh",
+ "dore",
+ "ston",
+ "stow",
+ "church",
+ "wich",
+ "low",
+ "way",
+ "stone",
+ "minster",
+ "ley",
+ "head",
+ "bourne",
+ "pool",
+ "worth",
+ "hill",
+ "well",
+ "hattan",
+ "burg",
+ "berg",
+ "burgh",
+ "port",
+ "stoke",
+ "haven",
+ "stable",
+ "stock",
+ "side",
+ "brook",
+ "don",
+ "den",
+ "down",
+ "nor",
+ "grove",
+ "combe",
+ "by",
+ "say",
+ "ney",
+ "chester",
+ "dale",
+ "ness",
+ "shaw",
+ "thwaite"
+};
+
+static const char *name_additional_english_3[] = {
+ "-on-sea",
+ " Bay",
+ " Market",
+ " Beeches",
+ " Common",
+ " Park",
+ " Heath",
+ " Marsh",
+ " Green",
+ " Castle",
+ " End",
+ " Rivers",
+ " Cross",
+ " Bridge",
+ " Falls",
+ " City",
+ " Ridge",
+ " Springs"
+};
+
+static const char *name_austrian_a1[] = {
+ "Bad ",
+ "Deutsch ",
+ "Gross ",
+ "Klein ",
+ "Markt ",
+ "Maria "
+};
+
+static const char *name_austrian_a2[] = {
+ "Aus",
+ "Alten",
+ "Braun",
+ "Vösl",
+ "Mittern",
+ "Nuss",
+ "Neu",
+ "Walters",
+ "Breiten",
+ "Eisen",
+ "Feld",
+ "Mittern",
+ "Gall",
+ "Obern",
+ "Grat",
+ "Heiligen",
+ "Hof",
+ "Holla",
+ "Stein",
+ "Eber",
+ "Eggen",
+ "Enzers",
+ "Frauen",
+ "Herren",
+ "Hof",
+ "Hütt",
+ "Kaisers",
+ "Königs",
+ "Knittel",
+ "Lang",
+ "Ober",
+ "Ollers",
+ "Pfaffen",
+ "Potten",
+ "Salz",
+ "Schwarz",
+ "Stocker",
+ "Unter",
+ "Utten",
+ "Vösen",
+ "Vill",
+ "Weissen"
+};
+
+static const char *name_austrian_a3[] = {
+ "see",
+ "bach",
+ "dorf",
+ "ach",
+ "stein",
+ "hofen",
+ "au",
+ "ach",
+ "kirch",
+ "kirchen",
+ "kreuz",
+ "brunn",
+ "siedl",
+ "markt",
+ "wang",
+ "haag"
+};
+
+static const char *name_austrian_a4[] = {
+ "Bruck",
+ "Brunn",
+ "Gams",
+ "Grein",
+ "Ried",
+ "Faak",
+ "Zell",
+ "Spital",
+ "Kirchberg",
+ "Saal",
+ "Taferl",
+ "Wald"
+};
+
+static const char *name_austrian_a5[] = {
+ "St. ",
+ "Sankt "
+};
+
+static const char *name_austrian_a6[] = {
+ "Aegyd",
+ "Andrä",
+ "Georgen",
+ "Jakob",
+ "Johann",
+ "Leonhard",
+ "Marein",
+ "Lorenzen",
+ "Margarethen",
+ "Martin",
+ "Michael",
+ "Nikolai",
+ "Oswald",
+ "Peter",
+ "Pölten",
+ "Stefan",
+ "Stephan",
+ "Thomas",
+ "Veit",
+ "Wolfgang"
+};
+
+static const char *name_austrian_f1[] = {
+ " an der ",
+ " ob der "
+};
+
+static const char *name_austrian_f2[] = {
+ "Donau",
+ "Steyr",
+ "Lafnitz",
+ "Leitha",
+ "Thaya",
+ "Gail",
+ "Drau",
+ "Salzach",
+ "Ybbs",
+ "Traisen",
+ "Enns",
+ "Mur",
+ "Ill"
+};
+
+static const char *name_austrian_b1[] = {
+ " am "
+};
+
+static const char *name_austrian_b2[] = {
+ "Brenner",
+ "Dachstein",
+ "Gebirge",
+ "Grossglockner",
+ "Hausruck",
+ "Semmering",
+ "Wagram",
+ "Wechsel",
+ "Wilden Kaiser",
+ "Ziller"
+};
+
+static const char *name_german_real[] = {
+ "Berlin",
+ "Bonn",
+ "Bremen",
+ "Cottbus",
+ "Chemnitz",
+ "Dortmund",
+ "Dresden",
+ "Erfurt",
+ "Erlangen",
+ "Essen",
+ "Fulda",
+ "Gera",
+ "Kassel",
+ "Kiel",
+ "Köln",
+ "Lübeck",
+ "Magdeburg",
+ "München",
+ "Potsdam",
+ "Stuttgart",
+ "Wiesbaden"
+};
+
+static const char *name_german_pre[] = {
+ "Bad ",
+ "Klein ",
+ "Neu "
+};
+
+static const char *name_german_1[] = {
+ "Alb",
+ "Als",
+ "Ander",
+ "Arns",
+ "Bruns",
+ "Bam",
+ "Biele",
+ "Cloppen",
+ "Co",
+ "Duis",
+ "Düssel",
+ "Dannen",
+ "Elb",
+ "Els",
+ "Elster",
+ "Eichen",
+ "Ems",
+ "Fahr",
+ "Falken",
+ "Flens",
+ "Frank",
+ "Frei",
+ "Freuden",
+ "Fried",
+ "Fürsten",
+ "Hahn",
+ "Ham",
+ "Harz",
+ "Heidel",
+ "Hers",
+ "Herz",
+ "Holz",
+ "Hildes",
+ "Inns",
+ "Ilsen",
+ "Ingols",
+ "Kel",
+ "Kies",
+ "Korn",
+ "Kor",
+ "Kreuz",
+ "Kulm",
+ "Langen",
+ "Lim",
+ "Lohr",
+ "Lüne",
+ "Mel",
+ "Michels",
+ "Mühl",
+ "Naum",
+ "Nest",
+ "Nord",
+ "Nort",
+ "Nien",
+ "Nidda",
+ "Nieder",
+ "Nürn",
+ "Ober",
+ "Offen",
+ "Osna",
+ "Olden",
+ "Ols",
+ "Oranien",
+ "Pader",
+ "Quedlin",
+ "Quer",
+ "Ravens",
+ "Regens",
+ "Rott",
+ "Ros",
+ "Rüssels",
+ "Saal",
+ "Saar",
+ "Salz",
+ "Schöne",
+ "Schwein",
+ "Sonder",
+ "Sonnen",
+ "Stein",
+ "Strals",
+ "Straus",
+ "Süd",
+ "Ton",
+ "Unter",
+ "Ur",
+ "Vor",
+ "Wald",
+ "War",
+ "Wert",
+ "Wester",
+ "Witten",
+ "Wolfs",
+ "Würz"
+};
+
+static const char *name_german_2[] = {
+ "bach",
+ "berg",
+ "brück",
+ "brücken",
+ "burg",
+ "dorf",
+ "feld",
+ "furt",
+ "hausen",
+ "haven",
+ "heim",
+ "horst",
+ "mund",
+ "münster",
+ "stadt",
+ "wald"
+};
+
+static const char *name_german_3_an_der[] = {
+ " an der "
+};
+
+static const char *name_german_3_am[] = {
+ " am "
+};
+
+static const char *name_german_4_an_der[] = {
+ "Oder",
+ "Spree",
+ "Donau",
+ "Saale",
+ "Elbe"
+};
+
+static const char *name_german_4_am[] = {
+ "Main"
+};
+
+static const char *name_spanish_real[] = {
+ "Caracas",
+ "Maracay",
+ "Maracaibo",
+ "Velencia",
+ "El Dorado",
+ "Morrocoy",
+ "Cata",
+ "Cataito",
+ "Ciudad Bolivar",
+ "Barquisimeto",
+ "Merida",
+ "Puerto Ordaz",
+ "Santa Elena",
+ "San Juan",
+ "San Luis",
+ "San Rafael",
+ "Santiago",
+ "Barcelona",
+ "Barinas",
+ "San Cristobal",
+ "San Fransisco",
+ "San Martin",
+ "Guayana",
+ "San Carlos",
+ "El Limon",
+ "Coro",
+ "Corocoro",
+ "Puerto Ayacucho",
+ "Elorza",
+ "Arismendi",
+ "Trujillo",
+ "Carupano",
+ "Anaco",
+ "Lima",
+ "Cuzco",
+ "Iquitos",
+ "Callao",
+ "Huacho",
+ "Camana",
+ "Puerto Chala",
+ "Santa Cruz",
+ "Quito",
+ "Cuenca",
+ "Huacho",
+ "Tulcan",
+ "Esmereldas",
+ "Ibarra",
+ "San Lorenzo",
+ "Macas",
+ "Morana",
+ "Machala",
+ "Zamora",
+ "Latacunga",
+ "Tena",
+ "Cochabamba",
+ "Ascencion",
+ "Magdalena",
+ "Santa Ana",
+ "Manoa",
+ "Sucre",
+ "Oruro",
+ "Uyuni",
+ "Potosi",
+ "Tupiza",
+ "La Quiaca",
+ "Yacuiba",
+ "San Borja",
+ "Fuerte Olimpio",
+ "Fortin Esteros",
+ "Campo Grande",
+ "Bogota",
+ "El Banco",
+ "Zaragosa",
+ "Neiva",
+ "Mariano",
+ "Cali",
+ "La Palma",
+ "Andoas",
+ "Barranca",
+ "Montevideo",
+ "Valdivia",
+ "Arica",
+ "Temuco",
+ "Tocopilla",
+ "Mendoza",
+ "Santa Rosa"
+};
+
+static const char *name_french_real[] = {
+ "Agincourt",
+ "Lille",
+ "Dinan",
+ "Aubusson",
+ "Rodez",
+ "Bergerac",
+ "Bordeaux",
+ "Bayonne",
+ "Montpellier",
+ "Montelimar",
+ "Valence",
+ "Digne",
+ "Nice",
+ "Cannes",
+ "St. Tropez",
+ "Marseilles",
+ "Narbonne",
+ "Sète",
+ "Aurillac",
+ "Gueret",
+ "Le Creusot",
+ "Nevers",
+ "Auxerre",
+ "Versailles",
+ "Meaux",
+ "Châlons",
+ "Compiègne",
+ "Metz",
+ "Chaumont",
+ "Langres",
+ "Bourg",
+ "Lyons",
+ "Vienne",
+ "Grenoble",
+ "Toulon",
+ "Rennes",
+ "Le Mans",
+ "Angers",
+ "Nantes",
+ "Châteauroux",
+ "Orléans",
+ "Lisieux",
+ "Cherbourg",
+ "Morlaix",
+ "Cognac",
+ "Agen",
+ "Tulle",
+ "Blois",
+ "Troyes",
+ "Charolles",
+ "Grenoble",
+ "Chambéry",
+ "Tours",
+ "St. Brieuc",
+ "St. Malo",
+ "La Rochelle",
+ "St. Flour",
+ "Le Puy",
+ "Vichy",
+ "St. Valery",
+ "Beaujolais",
+ "Narbonne",
+ "Albi",
+ "St. Valery",
+ "Biarritz",
+ "Béziers",
+ "Nîmes",
+ "Chamonix",
+ "Angoulème",
+ "Alençon"
+};
+
+static const char *name_silly_1[] = {
+ "Binky",
+ "Blubber",
+ "Bumble",
+ "Crinkle",
+ "Crusty",
+ "Dangle",
+ "Dribble",
+ "Flippety",
+ "Google",
+ "Muffin",
+ "Nosey",
+ "Pinker",
+ "Quack",
+ "Rumble",
+ "Sleepy",
+ "Sliggles",
+ "Snooze",
+ "Teddy",
+ "Tinkle",
+ "Twister",
+ "Pinker",
+ "Hippo",
+ "Itchy",
+ "Jelly",
+ "Jingle",
+ "Jolly",
+ "Kipper",
+ "Lazy",
+ "Frogs",
+ "Mouse",
+ "Quack",
+ "Cheeky",
+ "Lumpy",
+ "Grumpy",
+ "Mangle",
+ "Fiddle",
+ "Slugs",
+ "Noodles",
+ "Poodles",
+ "Shiver",
+ "Rumble",
+ "Pixie",
+ "Puddle",
+ "Riddle",
+ "Rattle",
+ "Rickety",
+ "Waffle",
+ "Sagging",
+ "Sausage",
+ "Egg",
+ "Sleepy",
+ "Scatter",
+ "Scramble",
+ "Silly",
+ "Simple",
+ "Trickle",
+ "Slippery",
+ "Slimey",
+ "Slumber",
+ "Soggy",
+ "Sliggles",
+ "Splutter",
+ "Sulky",
+ "Swindle",
+ "Swivel",
+ "Tasty",
+ "Tangle",
+ "Toggle",
+ "Trotting",
+ "Tumble",
+ "Snooze",
+ "Water",
+ "Windy",
+ "Amble",
+ "Bubble",
+ "Cheery",
+ "Cheese",
+ "Cockle",
+ "Cracker",
+ "Crumple",
+ "Teddy",
+ "Evil",
+ "Fairy",
+ "Falling",
+ "Fishy",
+ "Fizzle",
+ "Frosty",
+ "Griddle"
+};
+
+static const char *name_silly_2[] = {
+ "ton",
+ "bury",
+ "bottom",
+ "ville",
+ "well",
+ "weed",
+ "worth",
+ "wig",
+ "wick",
+ "wood",
+ "pool",
+ "head",
+ "burg",
+ "gate",
+ "bridge"
+};
+
+static const char *name_swedish_1[] = {
+ "Gamla ",
+ "Lilla ",
+ "Nya ",
+ "Stora "
+};
+
+static const char *name_swedish_2[] = {
+ "Boll",
+ "Bor",
+ "Ed",
+ "En",
+ "Erik",
+ "Es",
+ "Fin",
+ "Fisk",
+ "Grön",
+ "Hag",
+ "Halm",
+ "Karl",
+ "Kram",
+ "Kung",
+ "Land",
+ "Lid",
+ "Lin",
+ "Mal",
+ "Malm",
+ "Marie",
+ "Ner",
+ "Norr",
+ "Oskar",
+ "Sand",
+ "Skog",
+ "Stock",
+ "Stor",
+ "Ström",
+ "Sund",
+ "Söder",
+ "Tall",
+ "Tratt",
+ "Troll",
+ "Upp",
+ "Var",
+ "Väster",
+ "Ängel",
+ "Öster"
+};
+
+static const char *name_swedish_2a[] = {
+ "B",
+ "Br",
+ "D",
+ "Dr",
+ "Dv",
+ "F",
+ "Fj",
+ "Fl",
+ "Fr",
+ "G",
+ "Gl",
+ "Gn",
+ "Gr",
+ "H",
+ "J",
+ "K",
+ "Kl",
+ "Kn",
+ "Kr",
+ "Kv",
+ "L",
+ "M",
+ "N",
+ "P",
+ "Pl",
+ "Pr",
+ "R",
+ "S",
+ "Sk",
+ "Skr",
+ "Sl",
+ "Sn",
+ "Sp",
+ "Spr",
+ "St",
+ "Str",
+ "Sv",
+ "T",
+ "Tr",
+ "Tv",
+ "V",
+ "Vr"
+};
+
+static const char *name_swedish_2b[] = {
+ "a",
+ "e",
+ "i",
+ "o",
+ "u",
+ "y",
+ "å",
+ "ä",
+ "ö"
+};
+
+static const char *name_swedish_2c[] = {
+ "ck",
+ "d",
+ "dd",
+ "g",
+ "gg",
+ "l",
+ "ld",
+ "m",
+ "n",
+ "nd",
+ "ng",
+ "nn",
+ "p",
+ "pp",
+ "r",
+ "rd",
+ "rk",
+ "rp",
+ "rr",
+ "rt",
+ "s",
+ "sk",
+ "st",
+ "t",
+ "tt",
+ "v"
+};
+
+static const char *name_swedish_3[] = {
+ "arp",
+ "berg",
+ "boda",
+ "borg",
+ "bro",
+ "bukten",
+ "by",
+ "byn",
+ "fors",
+ "hammar",
+ "hamn",
+ "holm",
+ "hus",
+ "hättan",
+ "kulle",
+ "köping",
+ "lund",
+ "löv",
+ "sala",
+ "skrona",
+ "slätt",
+ "spång",
+ "stad",
+ "sund",
+ "svall",
+ "svik",
+ "såker",
+ "udde",
+ "valla",
+ "viken",
+ "älv",
+ "ås"
+};
+
+static const char *name_dutch_1[] = {
+ "Nieuw ",
+ "Oud ",
+ "Groot ",
+ "Zuid ",
+ "Noord ",
+ "Oost ",
+ "West ",
+ "Klein "
+};
+
+static const char *name_dutch_2[] = {
+ "Hoog",
+ "Laag",
+ "Zuider",
+ "Zuid",
+ "Ooster",
+ "Oost",
+ "Wester",
+ "West",
+ "Hoofd",
+ "Midden",
+ "Eind",
+ "Amster",
+ "Amstel",
+ "Dord",
+ "Rotter",
+ "Haar",
+ "Til",
+ "Enk",
+ "Dok",
+ "Veen",
+ "Leidsch",
+ "Lely",
+ "En",
+ "Kaats",
+ "U",
+ "Maas",
+ "Mar",
+ "Bla",
+ "Al",
+ "Alk",
+ "Eer",
+ "Drie",
+ "Ter",
+ "Groes",
+ "Goes",
+ "Soest",
+ "Coe",
+ "Uit",
+ "Zwaag",
+ "Hellen",
+ "Slie",
+ "IJ",
+ "Grubben",
+ "Groen",
+ "Lek",
+ "Ridder",
+ "Schie",
+ "Olde",
+ "Roose",
+ "Haar",
+ "Til",
+ "Loos",
+ "Hil"
+};
+
+static const char *name_dutch_3[] = {
+ "Drog",
+ "Nat",
+ "Valk",
+ "Bob",
+ "Dedem",
+ "Kollum",
+ "Best",
+ "Hoend",
+ "Leeuw",
+ "Graaf",
+ "Uithuis",
+ "Purm",
+ "Hard",
+ "Hell",
+ "Werk",
+ "Spijk",
+ "Vink",
+ "Wams",
+ "Heerhug",
+ "Koning"
+};
+
+static const char *name_dutch_4[] = {
+ "e",
+ "er",
+ "el",
+ "en",
+ "o",
+ "s"
+};
+
+static const char *name_dutch_5[] = {
+ "stad",
+ "vorst",
+ "dorp",
+ "dam",
+ "beek",
+ "doorn",
+ "zijl",
+ "zijlen",
+ "lo",
+ "muiden",
+ "meden",
+ "vliet",
+ "nisse",
+ "daal",
+ "vorden",
+ "vaart",
+ "mond",
+ "zaal",
+ "water",
+ "duinen",
+ "heuvel",
+ "geest",
+ "kerk",
+ "meer",
+ "maar",
+ "hoorn",
+ "rade",
+ "wijk",
+ "berg",
+ "heim",
+ "sum",
+ "richt",
+ "burg",
+ "recht",
+ "drecht",
+ "trecht",
+ "tricht",
+ "dricht",
+ "lum",
+ "rum",
+ "halen",
+ "oever",
+ "wolde",
+ "veen",
+ "hoven",
+ "gast",
+ "kum",
+ "hage",
+ "dijk",
+ "zwaag",
+ "pomp",
+ "huizen",
+ "bergen",
+ "schede",
+ "mere",
+ "end"
+};
+
+static const char *name_finnish_real[] = {
+ "Aijala",
+ "Kisko",
+ "Espoo",
+ "Helsinki",
+ "Tapiola",
+ "Järvelä",
+ "Lahti",
+ "Kotka",
+ "Hamina",
+ "Loviisa",
+ "Kouvola",
+ "Tampere",
+ "Oulu",
+ "Salo",
+ "Malmi",
+ "Pelto",
+ "Koski",
+ "Iisalmi",
+ "Raisio",
+ "Taavetti",
+ "Joensuu",
+ "Imatra",
+ "Tapanila",
+ "Pasila",
+ "Turku",
+ "Kupittaa",
+ "Vaasa",
+ "Pori",
+ "Rauma",
+ "Kolari",
+ "Lieksa"
+};
+
+static const char *name_finnish_1[] = {
+ "Hiekka",
+ "Haapa",
+ "Mylly",
+ "Sauna",
+ "Uusi",
+ "Vanha",
+ "Kesä",
+ "Kuusi",
+ "Pelto",
+ "Tuomi",
+ "Terva",
+ "Olki",
+ "Heinä",
+ "Seinä",
+ "Rova",
+ "Koivu",
+ "Kokko",
+ "Mänty",
+ "Pihlaja",
+ "Petäjä",
+ "Kielo",
+ "Kauha",
+ "Viita",
+ "Kivi",
+ "Riihi",
+ "Ääne",
+ "Niini"
+};
+
+static const char *name_finnish_2[] = {
+ "Lappeen",
+ "Lohjan",
+ "Savon",
+ "Lapin",
+ "Pitäjän",
+ "Martin",
+ "Kuusan",
+ "Kemi",
+ "Keri",
+ "Hämeen",
+ "Kangas"
+};
+
+static const char *name_finnish_3[] = {
+ "harju",
+ "linna",
+ "järvi",
+ "kallio",
+ "mäki",
+ "nummi",
+ "joki",
+ "kylä",
+ "lampi",
+ "lahti",
+ "metsä",
+ "suo",
+ "laakso",
+ "niitty",
+ "luoto",
+ "hovi",
+ "ranta",
+ "koski",
+ "salo"
+};
+
+static const char *name_polish_1_m[] = {
+ "Wielki ",
+ "Mały ",
+ "Zły ",
+ "Dobry ",
+ "Nowy ",
+ "Stary ",
+ "Złoty ",
+ "Zielony ",
+ "Biały ",
+ "Modry ",
+ "Dębowy "
+};
+
+static const char *name_polish_1_f[] = {
+ "Wielka ",
+ "Mała ",
+ "Zła ",
+ "Dobra ",
+ "Nowa ",
+ "Stara ",
+ "Złota ",
+ "Zielona ",
+ "Biała ",
+ "Modra ",
+ "Dębowa "
+};
+
+static const char *name_polish_1_n[] = {
+ "Wielkie ",
+ "Małe ",
+ "Złe ",
+ "Dobre ",
+ "Nowe ",
+ "Stare ",
+ "Złote ",
+ "Zielone ",
+ "Białe ",
+ "Modre ",
+ "Dębowe "
+};
+
+static const char *name_polish_2_o[] = {
+ "Frombork",
+ "Gniezno",
+ "Olsztyn",
+ "Toruń",
+ "Bydgoszcz",
+ "Terespol",
+ "Kraków",
+ "Poznań",
+ "Wrocław",
+ "Katowice",
+ "Cieszyn",
+ "Bytom",
+ "Frombork",
+ "Hel",
+ "Konin",
+ "Lublin",
+ "Malbork",
+ "Sopot",
+ "Sosnowiec",
+ "Gdańsk",
+ "Gdynia",
+ "Sieradz",
+ "Sandomierz",
+ "Szczyrk",
+ "Szczytno",
+ "Szczecin",
+ "Zakopane",
+ "Szklarska Poręba",
+ "Bochnia",
+ "Golub-Dobrzyn",
+ "Chojnice",
+ "Ostrowiec",
+ "Otwock",
+ "Wolsztyn"
+};
+
+static const char *name_polish_2_m[] = {
+ "Jarocin",
+ "Gogolin",
+ "Tomaszów",
+ "Piotrków",
+ "Lidzbark",
+ "Rypin",
+ "Radzymin",
+ "Wołomin",
+ "Pruszków",
+ "Olsztynek",
+ "Rypin",
+ "Cisek",
+ "Krotoszyn",
+ "Stoczek",
+ "Lubin",
+ "Lubicz",
+ "Milicz",
+ "Targ",
+ "Ostrów",
+ "Ozimek",
+ "Puck",
+ "Rzepin",
+ "Siewierz",
+ "Stargard",
+ "Starogard",
+ "Turek",
+ "Tymbark",
+ "Wolsztyn",
+ "Strzepcz",
+ "Strzebielin",
+ "Sochaczew",
+ "Grębocin",
+ "Gniew",
+ "Lubliniec",
+ "Lubasz",
+ "Lutomiersk",
+ "Niemodlin",
+ "Przeworsk",
+ "Ursus",
+ "Tyczyn",
+ "Sztum",
+ "Szczebrzeszyn",
+ "Wolin",
+ "Wrzeszcz",
+ "Zgierz",
+ "Zieleniec",
+ "Drobin",
+ "Garwolin"
+};
+
+static const char *name_polish_2_f[] = {
+ "Szprotawa",
+ "Pogorzelica",
+ "Motława",
+ "Lubawa",
+ "Nidzica",
+ "Kruszwica",
+ "Bierawa",
+ "Brodnica",
+ "Chojna",
+ "Krzepica",
+ "Ruda",
+ "Rumia",
+ "Tuchola",
+ "Trzebinia",
+ "Ustka",
+ "Warszawa",
+ "Bobowa",
+ "Dukla",
+ "Krynica",
+ "Murowana",
+ "Niemcza",
+ "Zaspa",
+ "Zawoja",
+ "Wola",
+ "Limanowa",
+ "Rabka",
+ "Skawina",
+ "Pilawa"
+};
+
+static const char *name_polish_2_n[] = {
+ "Lipsko",
+ "Pilzno",
+ "Przodkowo",
+ "Strzelno",
+ "Susz",
+ "Jaworzno",
+ "Choszczno",
+ "Mogilno",
+ "Luzino",
+ "Miasto",
+ "Dziadowo",
+ "Kowalewo",
+ "Legionowo",
+ "Miastko",
+ "Zabrze",
+ "Zawiercie",
+ "Kochanowo",
+ "Miechucino",
+ "Mirachowo",
+ "Robakowo",
+ "Kosakowo",
+ "Borne",
+ "Braniewo",
+ "Sulinowo",
+ "Chmielno",
+ "Jastrzębie",
+ "Gryfino",
+ "Koronowo",
+ "Lubichowo",
+ "Opoczno"
+};
+
+static const char *name_polish_3_m[] = {
+ " Wybudowanie",
+ " Świętokrzyski",
+ " Górski",
+ " Morski",
+ " Zdrój",
+ " Wody",
+ " Bajoro",
+ " Krajeński",
+ " Śląski",
+ " Mazowiecki",
+ " Pomorski",
+ " Wielki",
+ " Maly",
+ " Warmiński",
+ " Mazurski",
+ " Mniejszy",
+ " Większy",
+ " Górny",
+ " Dolny",
+ " Wielki",
+ " Stary",
+ " Nowy",
+ " Wielkopolski",
+ " Wzgórze",
+ " Mosty",
+ " Kujawski",
+ " Małopolski",
+ " Podlaski",
+ " Lesny"
+};
+
+static const char *name_polish_3_f[] = {
+ " Wybudowanie",
+ " Świętokrzyska",
+ " Górska",
+ " Morska",
+ " Zdrój",
+ " Woda",
+ " Bajoro",
+ " Krajeńska",
+ " Śląska",
+ " Mazowiecka",
+ " Pomorska",
+ " Wielka",
+ " Mała",
+ " Warmińska",
+ " Mazurska",
+ " Mniejsza",
+ " Większa",
+ " Górna",
+ " Dolna",
+ " Wielka",
+ " Stara",
+ " Nowa",
+ " Wielkopolska",
+ " Wzgórza",
+ " Mosty",
+ " Kujawska",
+ " Malopolska",
+ " Podlaska",
+ " Leśna"
+};
+
+static const char *name_polish_3_n[] = {
+ " Wybudowanie",
+ " Świetokrzyskie",
+ " Górskie",
+ " Morskie",
+ " Zdrój",
+ " Wody",
+ " Bajoro",
+ " Krajeńskie",
+ " Śląskie",
+ " Mazowieckie",
+ " Pomorskie",
+ " Wielkie",
+ " Małe",
+ " Warmińskie ",
+ " Mazurskie ",
+ " Mniejsze",
+ " Większe",
+ " Górne",
+ " Dolne",
+ " Wielkie",
+ " Stare",
+ " Nowe",
+ " Wielkopolskie",
+ " Wzgórze",
+ " Mosty",
+ " Kujawskie",
+ " Małopolskie",
+ " Podlaskie",
+ " Leśne"
+};
+
+static const char *name_czech_real[] = {
+ "Aš",
+ "Benešov",
+ "Beroun",
+ "Bezdružice",
+ "Blansko",
+ "Břeclav",
+ "Brno",
+ "Bruntál",
+ "Česká Lípa",
+ "České Budějovice",
+ "Český Krumlov",
+ "Děčín",
+ "Domažlice",
+ "Dubí",
+ "Frýdek-Místek",
+ "Havlíčkův Brod",
+ "Hodonín",
+ "Hradec Králové",
+ "Humpolec",
+ "Cheb",
+ "Chomutov",
+ "Chrudim",
+ "Jablonec nad Nisou",
+ "Jeseník",
+ "Jičín",
+ "Jihlava",
+ "Jindřichův Hradec",
+ "Karlovy Vary",
+ "Karviná",
+ "Kladno",
+ "Klatovy",
+ "Kolín",
+ "Kosmonosy",
+ "Kroměříž",
+ "Kutná Hora",
+ "Liberec",
+ "Litoměřice",
+ "Louny",
+ "Manětín",
+ "Mělník",
+ "Mladá Boleslav",
+ "Most",
+ "Náchod",
+ "Nový Jičín",
+ "Nymburk",
+ "Olomouc",
+ "Opava",
+ "Oráčov",
+ "Ostrava",
+ "Pardubice",
+ "Pelhřimov",
+ "Polžice",
+ "Písek",
+ "Plzeň",
+ "Praha",
+ "Prachatice",
+ "Přerov",
+ "Příbram",
+ "Prostějov",
+ "Rakovník",
+ "Rokycany",
+ "Rudná",
+ "Rychnov nad Kněžnou",
+ "Semily",
+ "Sokolov",
+ "Strakonice",
+ "Středokluky",
+ "Šumperk",
+ "Svitavy",
+ "Tábor",
+ "Tachov",
+ "Teplice",
+ "Třebíč",
+ "Trutnov",
+ "Uherské Hradiště",
+ "Ústí nad Labem",
+ "Ústí nad Orlicí",
+ "Vsetín",
+ "Vyškov",
+ "Žďár nad Sázavou",
+ "Zlín",
+ "Znojmo"
+};
+
+
+/* The advanced hyperintelligent Czech town names generator! */
+/* The tables and MakeCzechTownName() is (c) Petr Baudis 2005 (GPL'd)
+ * Feel free to ask me about anything unclear or if you need help
+ * with cloning this for your own language. */
+
+// Sing., pl.
+typedef enum CzechGender {
+ CZG_SMASC,
+ CZG_SFEM,
+ CZG_SNEUT,
+ CZG_PMASC,
+ CZG_PFEM,
+ CZG_PNEUT,
+ // Special for substantive stems - the ending chooses the gender.
+ CZG_FREE,
+ // Like CZG_FREE, but disallow CZG_SNEUT.
+ CZG_NFREE
+} CzechGender;
+typedef enum CzechPattern {
+ CZP_JARNI,
+ CZP_MLADY,
+ CZP_PRIVL
+} CzechPattern;
+/* [CzechGender][CzechPattern] - replaces the last character of the adjective
+ * by this. */
+// XXX: [CZG_SMASC][CZP_PRIVL] needs special handling: -ovX -> -uv.
+static const char *name_czech_patmod[][3] = {
+ /* CZG_SMASC */ { "í", "ý", "X" },
+ /* CZG_SFEM */ { "í", "á", "a" },
+ /* CZG_SNEUT */ { "í", "é", "o" },
+ /* CZG_PMASC */ { "í", "é", "y" },
+ /* CZG_PFEM */ { "í", "é", "y" },
+ /* CZG_PNEUT */ { "í", "á", "a" }
+};
+
+// This way the substantives can choose only some adjectives/endings:
+// At least one of these flags must be satisfied:
+typedef enum CzechAllow {
+ CZA_SHORT = 1,
+ CZA_MIDDLE = 2,
+ CZA_LONG = 4,
+ CZA_ALL = ~0
+} CzechAllow;
+// All these flags must be satisfied (in the stem->others direction):
+typedef enum CzechChoose {
+ CZC_NONE = 0, // No requirements.
+ CZC_COLOR = 1,
+ CZC_POSTFIX = 2, // Matched if postfix was inserted.
+ CZC_NOPOSTFIX = 4, // Matched if no postfix was inserted.
+ CZC_ANY = ~0
+} CzechChoose;
+
+typedef struct CzechNameSubst {
+ CzechGender gender;
+ CzechAllow allow;
+ CzechChoose choose;
+ const char *name;
+} CzechNameSubst;
+
+typedef struct CzechNameAdj {
+ CzechPattern pattern;
+ CzechChoose choose;
+ const char *name;
+} CzechNameAdj;
+
+// Some of items which should be common are doubled.
+static const CzechNameAdj name_czech_adj[] = {
+ { CZP_JARNI, CZC_ANY, "Horní" },
+ { CZP_JARNI, CZC_ANY, "Horní" },
+ { CZP_JARNI, CZC_ANY, "Dolní" },
+ { CZP_JARNI, CZC_ANY, "Dolní" },
+ { CZP_JARNI, CZC_ANY, "Přední" },
+ { CZP_JARNI, CZC_ANY, "Zadní" },
+ { CZP_JARNI, CZC_ANY, "Kostelní" },
+ { CZP_JARNI, CZC_ANY, "Havraní" },
+ { CZP_JARNI, CZC_ANY, "Říční" },
+ { CZP_JARNI, CZC_ANY, "Jezerní" },
+ { CZP_MLADY, CZC_ANY, "Velký" },
+ { CZP_MLADY, CZC_ANY, "Velký" },
+ { CZP_MLADY, CZC_ANY, "Malý" },
+ { CZP_MLADY, CZC_ANY, "Malý" },
+ { CZP_MLADY, CZC_ANY, "Vysoký" },
+ { CZP_MLADY, CZC_ANY, "Český" },
+ { CZP_MLADY, CZC_ANY, "Moravský" },
+ { CZP_MLADY, CZC_ANY, "Slovácký" },
+ { CZP_MLADY, CZC_ANY, "Slezský" },
+ { CZP_MLADY, CZC_ANY, "Uherský" },
+ { CZP_MLADY, CZC_ANY, "Starý" },
+ { CZP_MLADY, CZC_ANY, "Starý" },
+ { CZP_MLADY, CZC_ANY, "Nový" },
+ { CZP_MLADY, CZC_ANY, "Nový" },
+ { CZP_MLADY, CZC_ANY, "Mladý" },
+ { CZP_MLADY, CZC_ANY, "Královský" },
+ { CZP_MLADY, CZC_ANY, "Kamenný" },
+ { CZP_MLADY, CZC_ANY, "Cihlový" },
+ { CZP_MLADY, CZC_ANY, "Divný" },
+ { CZP_MLADY, CZC_COLOR, "Červená" },
+ { CZP_MLADY, CZC_COLOR, "Červená" },
+ { CZP_MLADY, CZC_COLOR, "Červená" },
+ { CZP_MLADY, CZC_COLOR, "Zelená" },
+ { CZP_MLADY, CZC_COLOR, "Žlutá" },
+ { CZP_MLADY, CZC_COLOR, "Sivá" },
+ { CZP_MLADY, CZC_COLOR, "Šedá" },
+ { CZP_MLADY, CZC_COLOR, "Bílá" },
+ { CZP_MLADY, CZC_COLOR, "Bílá" },
+ { CZP_MLADY, CZC_COLOR, "Modrá" },
+ { CZP_MLADY, CZC_COLOR, "Růžová" },
+ { CZP_MLADY, CZC_COLOR, "Černá" },
+ { CZP_PRIVL, CZC_ANY, "Králova" },
+ { CZP_PRIVL, CZC_ANY, "Janova" },
+ { CZP_PRIVL, CZC_ANY, "Karlova" },
+ { CZP_PRIVL, CZC_ANY, "Kryštofova" },
+ { CZP_PRIVL, CZC_ANY, "Jiříkova" },
+ { CZP_PRIVL, CZC_ANY, "Petrova" },
+ { CZP_PRIVL, CZC_ANY, "Sudovo" },
+};
+
+// Considered a stem for choose/allow matching purposes.
+static const CzechNameSubst name_czech_subst_full[] = {
+ { CZG_SMASC, CZA_ALL, CZC_COLOR, "Sedlec" },
+ { CZG_SMASC, CZA_ALL, CZC_COLOR, "Brod" },
+ { CZG_SMASC, CZA_ALL, CZC_COLOR, "Brod" },
+ { CZG_SMASC, CZA_ALL, CZC_NONE, "Úval" },
+ { CZG_SMASC, CZA_ALL, CZC_COLOR, "Žďár" },
+ { CZG_SMASC, CZA_ALL, CZC_COLOR, "Smrk" },
+ { CZG_SFEM, CZA_ALL, CZC_COLOR, "Hora" },
+ { CZG_SFEM, CZA_ALL, CZC_COLOR, "Lhota" },
+ { CZG_SFEM, CZA_ALL, CZC_COLOR, "Lhota" },
+ { CZG_SFEM, CZA_ALL, CZC_COLOR, "Hlava" },
+ { CZG_SFEM, CZA_ALL, CZC_COLOR, "Lípa" },
+ { CZG_SNEUT, CZA_ALL, CZC_COLOR, "Pole" },
+ { CZG_SNEUT, CZA_ALL, CZC_COLOR, "Údolí" },
+ { CZG_PMASC, CZA_ALL, CZC_NONE, "Úvaly" },
+ { CZG_PFEM, CZA_ALL, CZC_COLOR, "Luka" },
+ { CZG_PNEUT, CZA_ALL, CZC_COLOR, "Pole" },
+};
+
+// TODO: More stems needed. --pasky
+static const CzechNameSubst name_czech_subst_stem[] = {
+ { CZG_SMASC, CZA_MIDDLE, CZC_COLOR, "Kostel" },
+ { CZG_SMASC, CZA_MIDDLE, CZC_COLOR, "Klášter" },
+ { CZG_SMASC, CZA_SHORT, CZC_COLOR, "Lhot" },
+ { CZG_SFEM, CZA_SHORT, CZC_COLOR, "Lhot" },
+ { CZG_SFEM, CZA_SHORT, CZC_COLOR, "Hur" },
+ { CZG_FREE, CZA_MIDDLE | CZA_LONG, CZC_NONE, "Sedl" },
+ { CZG_FREE, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_COLOR, "Hrad" },
+ { CZG_NFREE, CZA_MIDDLE, CZC_NONE, "Pras" },
+ { CZG_NFREE, CZA_MIDDLE, CZC_NONE, "Baž" },
+ { CZG_NFREE, CZA_MIDDLE, CZC_NONE, "Tes" },
+ { CZG_NFREE, CZA_MIDDLE, CZC_NONE, "Už" },
+ { CZG_NFREE, CZA_MIDDLE | CZA_LONG, CZC_POSTFIX, "Bř" },
+ { CZG_NFREE, CZA_MIDDLE | CZA_LONG, CZC_NONE, "Vod" },
+ { CZG_NFREE, CZA_MIDDLE | CZA_LONG, CZC_NONE, "Jan" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Prach" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Kunr" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Strak" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Vít" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Vyš" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Žat" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Žer" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Střed" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Harv" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Pruh" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Tach" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Písn" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Jin" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Jes" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Jar" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Sok" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Hod" },
+ { CZG_NFREE, CZA_LONG, CZC_NONE, "Net" },
+ { CZG_FREE, CZA_LONG, CZC_NONE, "Praž" },
+ { CZG_FREE, CZA_LONG, CZC_NONE, "Nerat" },
+ { CZG_FREE, CZA_LONG, CZC_NONE, "Kral" },
+ { CZG_FREE, CZA_LONG, CZC_NONE, "Hut" },
+ { CZG_FREE, CZA_LONG, CZC_NOPOSTFIX, "Pan" },
+ { CZG_FREE, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_NOPOSTFIX, "Odstřed" },
+ { CZG_FREE, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_COLOR, "Mrat" },
+ { CZG_FREE, CZA_LONG, CZC_COLOR, "Hlav" },
+ { CZG_FREE, CZA_SHORT | CZA_MIDDLE, CZC_NONE, "Měř" },
+ { CZG_FREE, CZA_MIDDLE | CZA_LONG, CZC_NONE, "Lip" },
+};
+
+// Optional postfix inserted between stem and ending.
+static const char *name_czech_subst_postfix[] = {
+ "av", "an", "at",
+ "ov", "on", "ot",
+ "ev", "en", "et",
+};
+
+// This array must have the both neutral genders at the end!
+static const CzechNameSubst name_czech_subst_ending[] = {
+ { CZG_SMASC, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "ec" },
+ { CZG_SMASC, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "ín" },
+ { CZG_SMASC, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_ANY, "ov" },
+ { CZG_SMASC, CZA_SHORT | CZA_LONG, CZC_ANY, "kov" },
+ { CZG_SMASC, CZA_LONG, CZC_POSTFIX, "ín" },
+ { CZG_SMASC, CZA_LONG, CZC_POSTFIX, "ník" },
+ { CZG_SMASC, CZA_LONG, CZC_ANY, "burk" },
+ { CZG_SFEM, CZA_SHORT, CZC_ANY, "ka" },
+ { CZG_SFEM, CZA_MIDDLE, CZC_ANY, "inka" },
+ { CZG_SFEM, CZA_MIDDLE, CZC_ANY, "ná" },
+ { CZG_SFEM, CZA_LONG, CZC_ANY, "ava" },
+ { CZG_PMASC, CZA_LONG, CZC_POSTFIX, "íky" },
+ { CZG_PMASC, CZA_LONG, CZC_ANY, "upy" },
+ { CZG_PMASC, CZA_LONG, CZC_ANY, "olupy" },
+ { CZG_PFEM, CZA_LONG, CZC_ANY, "avy" },
+ { CZG_PFEM, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_ANY, "ice" },
+ { CZG_PFEM, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_ANY, "ičky" },
+ { CZG_PNEUT, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "na" },
+ { CZG_SNEUT, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "no" },
+ { CZG_SNEUT, CZA_LONG, CZC_ANY, "iště" },
+};
+
+static const char *name_czech_suffix[] = {
+ "nad Cidlinou",
+ "nad Dyjí",
+ "nad Jihlavou",
+ "nad Labem",
+ "nad Lesy",
+ "nad Moravou",
+ "nad Nisou",
+ "nad Odrou",
+ "nad Ostravicí",
+ "nad Sázavou",
+ "nad Vltavou",
+ "pod Pradědem",
+ "pod Radhoštěm",
+ "pod Řípem",
+ "pod Sněžkou",
+ "pod Špičákem",
+ "pod Sedlem",
+ "v Čechách",
+ "na Moravě",
+};
+
+
+
+static const char *name_romanian_real[]= {
+ "Adjud",
+ "Alba Iulia",
+ "Alexandria",
+ "Babadag",
+ "Bacãu",
+ "Baia Mare",
+ "Bãile Herculane",
+ "Bãilesti",
+ "Bârlad",
+ "Bicaz",
+ "Bistrita",
+ "Blaj",
+ "Borsec",
+ "Botosani",
+ "Brãila",
+ "Brasov",
+ "Bucuresti",
+ "Buftea",
+ "Buzãu",
+ "Cãlãrasi",
+ "Caransebes",
+ "Cernavodã",
+ "Cluj-Napoca",
+ "Constanta",
+ "Covasna",
+ "Craiova",
+ "Dej",
+ "Deva",
+ "Dorohoi",
+ "Dr.-Tr. Severin",
+ "Drãgãsani",
+ "Fãgãras",
+ "Fãlticeni",
+ "Fetesti",
+ "Focsani",
+ "Galati",
+ "Gheorgheni",
+ "Giurgiu",
+ "Hârsova",
+ "Hunedoara",
+ "Husi",
+ "Iasi",
+ "Isaccea",
+ "Lugoj",
+ "Mãcin",
+ "Mangalia",
+ "Medgidia",
+ "Medias",
+ "Miercurea Ciuc",
+ "Mizil",
+ "Motru",
+ "Nãsãud",
+ "Nãvodari",
+ "Odobesti",
+ "Oltenita",
+ "Onesti",
+ "Oradea",
+ "Orsova",
+ "Petrosani",
+ "Piatra Neamt",
+ "Pitesti",
+ "Ploiesti",
+ "Predeal",
+ "Râmnicu Vâlcea",
+ "Reghin",
+ "Resita",
+ "Roman",
+ "Rosiorii de Vede",
+ "Satu Mare",
+ "Sebes",
+ "Sfântu Gheorghe",
+ "Sibiu",
+ "Sighisoara",
+ "Sinaia",
+ "Slatina",
+ "Slobozia",
+ "Sovata",
+ "Suceava",
+ "Sulina",
+ "Tãndãrei",
+ "Târgoviste",
+ "Târgu Jiu",
+ "Târgu Mures",
+ "Tecuci",
+ "Timisoara",
+ "Tulcea",
+ "Turda",
+ "Turnu Mãgurele",
+ "Urziceni",
+ "Vaslui",
+ "Vatra Dornei",
+ "Victoria",
+ "Videle",
+ "Zalãu"
+};
+
+static const char *name_slovak_real[] = {
+ "Bratislava",
+ "Banovce nad Bebravou",
+ "Banska Bystrica",
+ "Banska Stiavnica",
+ "Bardejov",
+ "Brezno",
+ "Brezova pod Bradlom",
+ "Bytca",
+ "Cadca",
+ "Cierna nad Tisou",
+ "Detva",
+ "Detva",
+ "Dolny Kubin",
+ "Dolny Kubin",
+ "Dunajska Streda",
+ "Gabcikovo",
+ "Galanta",
+ "Gbely",
+ "Gelnica",
+ "Handlova",
+ "Hlohovec",
+ "Holic",
+ "Humenne",
+ "Hurbanovo",
+ "Kezmarok",
+ "Komarno",
+ "Kosice",
+ "Kremnica",
+ "Krompachy",
+ "Kuty",
+ "Leopoldov",
+ "Levoca",
+ "Liptovsky Mikulas",
+ "Lucenec",
+ "Malacky",
+ "Martin",
+ "Medzilaborce",
+ "Michalovce",
+ "Modra",
+ "Myjava",
+ "Namestovo",
+ "Nitra",
+ "Nova Bana",
+ "Nove Mesto nad Vahom",
+ "Nove Zamky",
+ "Partizanske",
+ "Pezinok",
+ "Piestany",
+ "Poltar",
+ "Poprad",
+ "Povazska Bystrica",
+ "Prievidza",
+ "Puchov",
+ "Revuca",
+ "Rimavska Sobota",
+ "Roznava",
+ "Ruzomberok",
+ "Sabinov",
+ "Sala",
+ "Senec",
+ "Senica",
+ "Sered",
+ "Skalica",
+ "Sladkovicovo",
+ "Smolenice",
+ "Snina",
+ "Stara Lubovna",
+ "Stara Tura",
+ "Strazske",
+ "Stropkov",
+ "Stupava",
+ "Sturovo",
+ "Sulekovo",
+ "Topolcany",
+ "Trebisov",
+ "Trencin",
+ "Trnava",
+ "Turcianske Teplice",
+ "Tvrdosin",
+ "Vrable",
+ "Vranov nad Toplov",
+ "Zahorska Bystrica",
+ "Zdiar",
+ "Ziar nad Hronom",
+ "Zilina",
+ "Zlate Moravce",
+ "Zvolen"
+};
+
+static const char *name_norwegian_1[] = {
+ "Arna",
+ "Aust",
+ "Bjørk",
+ "Bjørn",
+ "Brand",
+ "Bøver",
+ "Drag",
+ "Drø",
+ "Eids",
+ "Egge",
+ "Fager",
+ "Finns",
+ "Flat",
+ "Foll",
+ "Foss",
+ "Fugle",
+ "Furu",
+ "Gaus",
+ "Galte",
+ "Geir",
+ "Gløs",
+ "Gran",
+ "Grind",
+ "Grims",
+ "Grøn",
+ "Grøt",
+ "Gulle",
+ "Haka",
+ "Hammer",
+ "Haug",
+ "Hol",
+ "Hon",
+ "Hop",
+ "Hov",
+ "Jess",
+ "Kabel",
+ "Kjerns",
+ "Kjerring",
+ "Knatte",
+ "Krok",
+ "Køy",
+ "Lang",
+ "Lauv",
+ "Leir",
+ "Lund",
+ "Logn",
+ "Lo",
+ "Lyng",
+ "Løn",
+ "Mesna",
+ "Mel",
+ "Mo",
+ "Nar",
+ "Nitte",
+ "Nord",
+ "Odd",
+ "Ola",
+ "Otte",
+ "Ran",
+ "Rev",
+ "Rog",
+ "Roms",
+ "Rosen",
+ "Sand",
+ "Sau",
+ "Sel",
+ "Sol",
+ "Sjur",
+ "Skår",
+ "Slått",
+ "Stjør",
+ "Stor",
+ "Svart",
+ "Svens",
+ "Svin",
+ "Sylte",
+ "Syn",
+ "Tran",
+ "Vass",
+ "Ved",
+ "Vest",
+ "Vesle",
+ "Vik",
+ "Våg"
+};
+
+static const char *name_norwegian_2[] = {
+ "aker",
+ "anger",
+ "bakken",
+ "bekk",
+ "berg",
+ "botn",
+ "breen",
+ "bu",
+ "bugen",
+ "by",
+ "bygd",
+ "bø",
+ "dal",
+ "egga",
+ "eid",
+ "elv",
+ "enga",
+ "foss",
+ "fjell",
+ "fjord",
+ "foten",
+ "gard",
+ "grend",
+ "hammer",
+ "haug",
+ "havn",
+ "heim",
+ "hella",
+ "hovda",
+ "høa",
+ "høgda",
+ "kampen",
+ "kjølen",
+ "kollen",
+ "kroken",
+ "land",
+ "lia",
+ "mark",
+ "moen",
+ "myr",
+ "nes",
+ "nuten",
+ "osen",
+ "rike",
+ "rud",
+ "sand",
+ "set",
+ "sjøen",
+ "skogen",
+ "slette",
+ "snipa",
+ "stad",
+ "stua",
+ "stulen",
+ "sund",
+ "svingen",
+ "sætra",
+ "tinden",
+ "tun",
+ "vang",
+ "vatn",
+ "veid",
+ "vik",
+ "voll",
+ "våg",
+ "um",
+ "åsen"
+};
+
+static const char *name_norwegian_real[] = {
+ "Alta",
+ "Arendal",
+ "Askim",
+ "Bergen",
+ "Bodø",
+ "Brevik",
+ "Bryne",
+ "Brønnøysund",
+ "Drammen",
+ "Drøbak",
+ "Egersund",
+ "Elverum",
+ "Farsund",
+ "Fauske",
+ "Finnsnes",
+ "Flekkefjord",
+ "Flora",
+ "Fosnavåg",
+ "Fredrikstad",
+ "Førde",
+ "Gjøvik",
+ "Grimstad",
+ "Halden",
+ "Hamar",
+ "Hammerfest",
+ "Harstad",
+ "Haugesund",
+ "Holmestrand",
+ "Horten",
+ "Jørpeland",
+ "Kirkenes",
+ "Kolvereid",
+ "Kongsberg",
+ "Kongsvinger",
+ "Kopervik",
+ "Kragerø",
+ "Kristiansand",
+ "Kristiansund",
+ "Langesund",
+ "Larvik",
+ "Leirvik",
+ "Leknes",
+ "Levanger",
+ "Lillehammer",
+ "Lillesand",
+ "Lillestrøm",
+ "Lyngdal",
+ "Lørenskog",
+ "Mandal",
+ "Mo i Rana",
+ "Molde",
+ "Mosjøen",
+ "Moss",
+ "Mysen",
+ "Måløy",
+ "Namsos",
+ "Narvik",
+ "Notodden",
+ "Odda",
+ "Oslo",
+ "Otta",
+ "Porsgrunn",
+ "Ringerike",
+ "Risør",
+ "Rjukan",
+ "Sandefjord",
+ "Sandnes",
+ "Sandnessjøen",
+ "Sandvika",
+ "Sarpsborg",
+ "Sauda",
+ "Ski",
+ "Skien",
+ "Skudeneshavn",
+ "Sortland",
+ "Stathelle",
+ "Stavanger",
+ "Steinkjer",
+ "Stjørdal",
+ "Stokmarknes",
+ "Stord",
+ "Svelvik",
+ "Svolvær",
+ "Tromsø",
+ "Trondheim",
+ "Tvedestrand",
+ "Tønsberg",
+ "Ulsteinvik",
+ "Vadsø",
+ "Vardø",
+ "Verdalsøra",
+ "Åkrehamn",
+ "Ålesund",
+ "Åndalsnes"
+};
+
+static const char *name_hungarian_1[] = {
+ "Nagy-",
+ "Kis-",
+ "Felső-",
+ "Alsó-",
+ "Új-"
+};
+
+static const char *name_hungarian_2[] = {
+ "Bodrog",
+ "Dráva",
+ "Duna",
+ "Hejő",
+ "Hernád",
+ "Rába",
+ "Sajó",
+ "Szamos",
+ "Tisza",
+ "Zala",
+ "Balaton",
+ "Fertő",
+ "Bakony",
+ "Cserhát",
+ "Bihar",
+ "Hajdú",
+ "Jász",
+ "Kun",
+ "Magyar",
+ "Nógrád",
+ "Nyír",
+ "Somogy",
+ "Székely",
+ "Buda",
+ "Győr",
+ "Pest",
+ "Fehér",
+ "Cserép",
+ "Erdő",
+ "Hegy",
+ "Homok",
+ "Mező",
+ "Puszta",
+ "Sár",
+ "Császár",
+ "Herceg",
+ "Király",
+ "Nemes",
+ "Püspök",
+ "Szent",
+ "Almás",
+ "Szilvás",
+ "Agg",
+ "Aranyos",
+ "Békés",
+ "Egyházas",
+ "Gagy",
+ "Heves",
+ "Kapos",
+ "Tápió",
+ "Torna",
+ "Vas",
+ "Vámos",
+ "Vásáros"
+};
+
+static const char *name_hungarian_3[] = {
+ "apáti",
+ "bába",
+ "bikk",
+ "dob",
+ "fa",
+ "föld",
+ "hegyes",
+ "kak",
+ "kereszt",
+ "kürt",
+ "ladány",
+ "mérges",
+ "szalonta",
+ "telek",
+ "vas",
+ "völgy"
+};
+
+static const char *name_hungarian_4[] = {
+ "alja",
+ "egyháza",
+ "háza",
+ "úr",
+ "vár"
+};
+
+static const char *name_hungarian_real[] = {
+ "Ajka",
+ "Aszód",
+ "Badacsony",
+ "Baja",
+ "Budapest",
+ "Debrecen",
+ "Eger",
+ "Fonyód",
+ "Gödöllő",
+ "Győr",
+ "Gyula",
+ "Karcag",
+ "Kecskemét",
+ "Keszthely",
+ "Kisköre",
+ "Kocsord",
+ "Komárom",
+ "Kőszeg",
+ "Makó",
+ "Mohács",
+ "Miskolc",
+ "Ózd",
+ "Paks",
+ "Pápa",
+ "Pécs",
+ "Polgár",
+ "Sarkad",
+ "Siófok",
+ "Szeged",
+ "Szentes",
+ "Szolnok",
+ "Tihany",
+ "Tokaj",
+ "Vác",
+ "Záhony",
+ "Zirc"
+};
+
+static const char *name_swiss_real[] = {
+ "Aarau",
+ "Aesch",
+ "Altdorf",
+ "Arosa",
+ "Appenzell",
+ "Arbon",
+ "Altstätten",
+ "Baar",
+ "Baden",
+ "Bellinzona",
+ "Brig-Glis",
+ "Bienne",
+ "Bulle",
+ "Binningen",
+ "Burgdorf",
+ "Bern",
+ "Basel",
+ "Bülach",
+ "Carouge",
+ "Cham",
+ "Chiasso",
+ "Chur",
+ "Davos",
+ "Delémont",
+ "Dietikon",
+ "Dübendorf",
+ "Emmen",
+ "Freienbach-Pfäffikon",
+ "Fribourg",
+ "Frauenfeld",
+ "Genève",
+ "Glarus",
+ "Gossau",
+ "Grenchen",
+ "Herisau",
+ "Horgen",
+ "Horw",
+ "Illnau-Effretikon",
+ "Ittigen",
+ "Jona",
+ "Kriens",
+ "Kloten",
+ "Köniz",
+ "Kreuzlingen",
+ "Küsnacht",
+ "Agen",
+ "Lancy",
+ "La Chaux-de-Fonds",
+ "Lenzburg",
+ "Lugano",
+ "Langenthal",
+ "Littau",
+ "Le Locle",
+ "La Neuveville",
+ "Locarno",
+ "Liestal",
+ "La Tour-de-Peilz",
+ "Lausanne",
+ "Lyss",
+ "Luzern",
+ "Martigny",
+ "Münchenstein",
+ "Meyrin",
+ "Montreux",
+ "Monthey",
+ "Morges",
+ "Murten",
+ "Moutier",
+ "Muttenz",
+ "Neuchâtel",
+ "Neuhausen am Rheinfall",
+ "Nyon",
+ "Olten",
+ "Onex",
+ "Opfikon",
+ "Ostermundigen",
+ "Payerne",
+ "Peseux",
+ "Prilly",
+ "Pully",
+ "Rapperswil",
+ "Richterswil",
+ "Regensdorf",
+ "Rheinfelden",
+ "Riehen",
+ "Renens",
+ "Romanshorn",
+ "Rorschach",
+ "Stans",
+ "Schaffhausen",
+ "Steffisburg",
+ "St. Gallen",
+ "Schlieren",
+ "Sierre",
+ "Solothurn",
+ "St. Moritz",
+ "Sion",
+ "Spiez",
+ "Stäfa",
+ "Sursee",
+ "Schwyz",
+ "Thalwil",
+ "Thônex",
+ "Thun",
+ "Uster",
+ "Uzwil",
+ "Vernier",
+ "Volketswil",
+ "Versoix",
+ "Vevey",
+ "Wädenswil",
+ "Wettingen",
+ "Wil",
+ "Wallisellen",
+ "Winterthur",
+ "Wohlen",
+ "Worb",
+ "Wetzikon",
+ "Yverdon-les-Bains",
+ "Zollikon",
+ "Zofingen",
+ "Zürich",
+ "Zug",
+};
+
+static const char *name_danish_1[] = {
+ "Gamle ",
+ "Lille ",
+ "Nye ",
+ "Store ",
+ "Kirke ",
+ "Nørre ",
+ "Vester ",
+ "Sønder ",
+ "Øster ",
+ "Hvide ",
+ "Høje ",
+ "Kongens ",
+};
+
+static const char *name_danish_2[] = {
+ "Ager",
+ "Alle",
+ "Aske",
+ "Balle",
+ "Bede",
+ "Birke",
+ "Bjerring",
+ "Bjæver",
+ "Blommens",
+ "Blok",
+ "Bolder",
+ "Bred",
+ "Charlotten",
+ "Christians",
+ "Danne",
+ "Diana",
+ "Es",
+ "Fredens",
+ "Frederiks",
+ "Fugle",
+ "Fåre",
+ "Gille",
+ "Gis",
+ "Givs",
+ "Glams",
+ "Glo",
+ "Guld",
+ "Had",
+ "Haralds",
+ "Hassel",
+ "Hede",
+ "Helle",
+ "Hessel",
+ "Hjorts",
+ "Hol",
+ "Horn",
+ "Humle",
+ "Høj",
+ "Hør",
+ "Is",
+ "Jyde",
+ "Jægers",
+ "Karls",
+ "Klov",
+ "Kokke",
+ "Kvist",
+ "Lang",
+ "Lange",
+ "Mari",
+ "Nord",
+ "Ny",
+ "Oks",
+ "Ring",
+ "Røde",
+ "Rung",
+ "Rør",
+ "Rud",
+ "Saks",
+ "Salt",
+ "Skam",
+ "Silke",
+ "Skod",
+ "Skæl",
+ "Skær",
+ "Sol",
+ "Svend",
+ "Svine",
+ "Strand",
+ "Stubbe",
+ "Ting",
+ "Tjære",
+ "Tore",
+ "Uger",
+ "Ulf",
+ "Val",
+ "Vand",
+ "Vej",
+ "Vor",
+ "Vær",
+ "Ør",
+ "Ål"
+};
+
+static const char *name_danish_3[] = {
+ "basse",
+ "borg",
+ "berg",
+ "bro",
+ "by",
+ "havn",
+ "strup",
+ "holm",
+ "hus",
+ "købing",
+ "lund",
+ "lunde",
+ "sund",
+ "ovre",
+ "høj",
+ "dal",
+ "sted",
+ "sten",
+ "løse",
+ "rød",
+ "magle",
+ "sø",
+ "bjerg",
+ "bæk",
+ "drup",
+ "lev",
+ "bo",
+ "lyst",
+ "feld",
+ "skov"
+};
+
+static const char *name_turkish_prefix[] = {
+ "Akça",
+ "Altın",
+ "Bahçe",
+ "Boz",
+ "Büyük",
+ "Çay",
+ "Doğu",
+ "Eski",
+ "Güzel",
+ "Kızıl",
+ "Küçük",
+ "Orta",
+ "Sarı",
+ "Sultan",
+ "Ulu",
+ "Yeni"
+};
+
+static const char *name_turkish_middle[] = {
+ "agaç",
+ "ayva",
+ "çam",
+ "elma",
+ "kurt",
+ "pazar",
+ "yalı"
+};
+
+static const char *name_turkish_suffix[] = {
+ "dere",
+ "hisar",
+ "kale",
+ "kaya",
+ "kent",
+ "köy",
+ "ova",
+ "özü",
+ "ören",
+ "pazar",
+ "saray",
+ "tepe",
+ "yer",
+ "yurt"
+};
+
+static const char *name_turkish_real[] = {
+ "Adana",
+ "Adıyaman",
+ "Afyon",
+ "Ağrı",
+ "Amasya",
+ "Antalya",
+ "Artvin",
+ "Balıkesir",
+ "Bilecik",
+ "Bitlis",
+ "Bolu",
+ "Burdur",
+ "Bursa",
+ "Çanakkale",
+ "Çankırı",
+ "Denizli",
+ "Diyarbakır",
+ "Edirne",
+ "Elazığ",
+ "Erzurum",
+ "Eskisehir",
+ "Giresun",
+ "Gümüşhane",
+ "Hatay",
+ "Isparta",
+ "İçel",
+ "İstanbul",
+ "İzmir",
+ "Kars",
+ "Kastamonu",
+ "Kayseri",
+ "Kirklareli",
+ "Kocaeli",
+ "Konya",
+ "Kütahya",
+ "Malatya",
+ "Manisa",
+ "Kahramanmaraş",
+ "Mardin",
+ "Muğla",
+ "Muş",
+ "Nevşehir",
+ "Niğde",
+ "Rize",
+ "Sakarya",
+ "Samsun",
+ "Siirt",
+ "Sinop",
+ "Sivas",
+ "Trabzon",
+ "Şanlıurfa",
+ "Van",
+ "Yozgat",
+ "Zonguldak",
+ "Aksaray",
+ "Bayburt",
+ "Karaman",
+ "Şırnak",
+ "Bartın",
+ "Ardahan",
+ "Iğdır",
+ "Yalova",
+ "Karabük",
+ "Osmaniye",
+ "Düzce"
+};
+
+static const char *name_italian_real[] = {
+ "Roma",
+ "Milano",
+ "Napoli",
+ "Torino",
+ "Venezia",
+ "Firenze",
+ "Palermo",
+ "Genova",
+ "Parma",
+ "Bologna",
+ "Bari",
+ "Cagliari",
+ "Sassari",
+ "Pisa",
+ "Aosta",
+ "Brescia",
+ "Verona",
+ "Bolzano",
+ "Padova",
+ "Udine",
+ "Trieste",
+ "Livorno",
+ "Ancona",
+ "Perugia",
+ "Pescara",
+ "L'Aquila",
+ "Campobasso",
+ "Potenza",
+ "Cosenza",
+ "Reggio Calabria",
+ "Catania",
+ "Caltanisetta",
+ "Agrigento",
+ "La Spezia",
+ "Modena",
+ "Vicenza",
+ "Mantova",
+ "Cremona",
+ "Piacenza",
+ "Reggio Emilia",
+ "Foggia",
+ "Benevento",
+ "Salerno",
+ "Catanzaro",
+ "Lecce",
+ "Como",
+ "Lecco",
+ "Sondrio",
+ "Trento",
+ "Desenzano",
+ "Cuneo",
+ "Asti",
+ "Lodi",
+ "Novara",
+ "Biella",
+ "Vercelli",
+ "Rieti",
+ "Nuoro",
+ "Oristano",
+ "Matera",
+ "Taranto",
+ "Varese",
+ "Bergamo",
+ "Pavia",
+ "Caserta",
+ "Frosinone",
+ "Latina",
+ "Enna",
+ "Ragusa",
+ "Siracusa",
+ "Pordenone",
+ "Imperia",
+ "Verbania",
+ "Alessandria",
+ "Messina",
+ "Siena",
+ "Arezzo",
+ "Grosseto",
+};
+
+static const char *name_italian_pref[] = {
+ "Alpe ",
+ "Borgo ",
+ "Cascina ",
+ "Castel ",
+ "Fonte ",
+ "Forte ",
+ "Malga ",
+ "Pieve ",
+ "Poggio ",
+ "Rocca ",
+ "Villa ",
+ "Villar ",
+};
+
+static const char *name_italian_1m[] = {
+ "Bel",
+ "Borgo",
+ "Bosco",
+ "Campo",
+ "Capo",
+ "Casal",
+ "Castel",
+ "Colle",
+ "Fiume",
+ "Fonte",
+ "Lago",
+ "Mezzo",
+ "Monte",
+ "Mon",
+ "Orto",
+ "Passo",
+ "Prato",
+ "Poggio",
+ "Ponte",
+ "Pozzo",
+ "Sasso",
+ "Tra",
+ "Tre",
+ "Ver",
+ "Vico",
+};
+
+static const char *name_italian_1f[] = {
+ "Acqua",
+ "Bra",
+ "Cala",
+ "Casa",
+ "Chiesa",
+ "Citta",
+ "Civita",
+ "Corte",
+ "Costa",
+ "Croce",
+ "Fontana",
+ "Grotta",
+ "Guardia",
+ "Mezza",
+ "Palma",
+ "Pietra",
+ "Ripa",
+ "Rocca",
+ "Serra",
+ "Torre",
+ "Val",
+ "Valle",
+ "Villa",
+};
+
+static const char *name_italian_2[] = {
+ "bell",
+ "bianc",
+ "cald",
+ "chiar",
+ "cort",
+ "ferrat",
+ "fier",
+ "fredd",
+ "gioios",
+ "grec",
+ "guzz",
+ "lung",
+ "long",
+ "migli",
+ "negr",
+ "ner",
+ "nov",
+ "nuov",
+ "ross",
+ "rotond",
+ "scur",
+ "secc",
+ "sett",
+ "vecchi",
+ "ventos",
+ "vers",
+ "viv",
+};
+
+static const char *name_italian_2i[] = {
+ "",
+ "breve",
+ "brevi",
+ "chiari",
+ "ferro",
+ "fieschi",
+ "fiore",
+ "fonte",
+ "forte",
+ "gate",
+ "leone",
+ "maggiore",
+ "minore",
+ "mole",
+ "monte",
+ "poli",
+ "scuri",
+ "terra",
+ "te",
+ "torrione",
+ "vento",
+ "verde",
+ "versiere",
+};
+
+
+static const char *name_italian_3[] = {
+ " Marittimo",
+ " Marittima",
+ " del Capo",
+ " del Monte",
+ " di Sopra",
+ " di Sotto",
+ " sui Monti",
+ " dei Marmi",
+ " dei Sassi",
+ " delle Fonti",
+ " sui Prati",
+ " a Mare",
+ " Superiore",
+ " Inferiore",
+ " Terme",
+ " Alta",
+ " Bassa",
+ " Brianza",
+ " Vesuviano",
+ " Scrivia",
+ " Ticino",
+};
+
+static const char *name_italian_river1[] = {
+ " del",
+ " sul",
+ " al",
+ " nel",
+};
+
+static const char *name_italian_river2[] = {
+ "l'Adda",
+ "l'Adige",
+ "le Alpi",
+ "l'Arno",
+ " Bormida",
+ " Brenta",
+ "la Dora Baltea",
+ " Lambro",
+ " Mincio",
+ " Naviglio",
+ "l'Oglio",
+ "l'Olona",
+ "l'Ombrone",
+ " Panaro",
+ " Piave",
+ " Po",
+ " Reno",
+ " Scrivia",
+ " Secchia",
+ " Serio",
+ " Tagliamento",
+ " Tanaro",
+ " Taro",
+ " Ticino",
+ " Tevere",
+};
+
+static const char *name_catalan_real[] = {
+ "Barcelona",
+ "Hospitalet",
+ "Cerdanyola",
+ "Martorell",
+ "Badalona",
+ "Tarragona",
+ "Lleida",
+ "Girona",
+ "Sabadell",
+ "Terrassa",
+ "Reus",
+ "Valls",
+ "Vic",
+ "Vielha",
+ "Amposta",
+ "Tortosa",
+ "Berga",
+ "Olot",
+ "Mollerussa",
+ "Banyoles",
+ "Figueres",
+ "Balaguer",
+ "Vilafranca del Penedès",
+ "La seu d'Urgell",
+ "Pont de Suert",
+ "Igualada",
+ "Manresa",
+ "Solsona",
+ "Les borges blanques",
+ "Tremp",
+ "Sort",
+ "Colera",
+ "Portbou",
+ "El Vendrell",
+ "Falset",
+ "Ripoll",
+ "Cervera",
+ "Gandesa",
+ "Mataró",
+ "Montblanc",
+ "Vilanova i la Geltrú",
+ "Tàrrega",
+ "Camprodon",
+ "Campdevànol",
+ "Cambrils",
+ "Begur",
+ "Set Cases",
+ "Palafrugell",
+ "Begues",
+ "El Bruc",
+ "Cadaqués",
+ "Collbató",
+ "Cervelló",
+ "Esparraguera",
+ "Abrera",
+ "Alp",
+ "Das",
+ "Cercs",
+ "Manlleu",
+ "Masnou",
+ "Molins de rei",
+ "Monistrol",
+ "Rocallaura",
+ "Rubí",
+ "Ripollet",
+ "Sitges",
+ "Roses",
+};
+
+static const char *name_catalan_pref[] = {
+ "Pont de ",
+ "Parets de ",
+ "Canet de ",
+ "Castellar de ",
+ "Corbera de ",
+ "Arenys de ",
+ "Calella de ",
+ "La seu de ",
+ "La bisbal de ",
+ "Torroella de ",
+ "Port de ",
+ "Vilafranca de ",
+ "Vilanova de ",
+ "Caldes de ",
+ "La Conca de ",
+ "Olesa de ",
+ "La Roca de ",
+ "Sant Esteve de ",
+ "Sant Andreu de ",
+ "Sant Jordi de ",
+ "Sant Joan de ",
+ "Sant Feliu de ",
+ "Sant Quirze de ",
+ "Sant Sadurní de ",
+ "Santa Coloma de ",
+ "Santa Margarida de ",
+ "Santa Maria de ",
+ "Sant Martí de ",
+ "Sant Pere de ",
+ "Sant Julià de ",
+ "Sant Vicenç de ",
+
+};
+
+static const char *name_catalan_1m[] = {
+ "Torrent",
+ "Cami",
+ "Mont",
+ "Bell",
+ "Puig",
+ "Riu",
+};
+
+static const char *name_catalan_1f[] = {
+ "Aigua",
+ "Selva ",
+ "Vall",
+ "Serra",
+ "Torre",
+ "Riba",
+ "Vall",
+ "Terra",
+};
+
+static const char *name_catalan_2m[] = {
+ "alt",
+ "baix",
+ "fosc",
+ "pelat",
+ "ventós",
+ "negre",
+ "roig",
+ "gris",
+};
+
+static const char *name_catalan_2f[] = {
+ "baixa",
+ "alta",
+ "fosca",
+ "clara",
+ "negra",
+ "roja",
+ "grisa",
+ "freda",
+};
+
+static const char *name_catalan_3[] = {
+ " despí",
+ " desvern",
+ " del camí",
+ " de Mar",
+ " de Dalt",
+ " de Baix",
+ " del Vallès",
+ " de Berguedà",
+ " de Conflent",
+ " de la plana",
+};
+
+static const char *name_catalan_river1[] = {
+ " d'Anoia",
+ " de Ter",
+ " de Llobregat",
+ " d'Ebre",
+ " de Segre",
+ " de Francolí",
+};
diff --git a/src/table/palettes.h b/src/table/palettes.h
new file mode 100644
index 000000000..fc931c7c2
--- /dev/null
+++ b/src/table/palettes.h
@@ -0,0 +1,199 @@
+/* $Id$ */
+
+#define M(r, g, b) { r, g, b }
+static const Colour _palettes[][256] = {
+ /* palette 1 (TTD Windows) */
+ {
+ M( 0, 0, 0), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
+ M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
+ M(212, 0, 212), M(212, 0, 212), M(168, 168, 168), M(184, 184, 184),
+ M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252),
+ M( 52, 60, 72), M( 68, 76, 92), M( 88, 96, 112), M(108, 116, 132),
+ M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220),
+ M( 48, 44, 4), M( 64, 60, 12), M( 80, 76, 20), M( 96, 92, 28),
+ M(120, 120, 64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168),
+ M(100, 100, 100), M(116, 116, 116), M(104, 80, 44), M(124, 104, 72),
+ M(152, 132, 92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176),
+ M(132, 132, 132), M( 88, 4, 16), M(112, 16, 32), M(136, 32, 52),
+ M(160, 56, 76), M(188, 84, 108), M(204, 104, 124), M(220, 132, 144),
+ M(236, 156, 164), M(252, 188, 192), M(252, 212, 0), M(252, 232, 60),
+ M(252, 248, 128), M( 76, 40, 0), M( 96, 60, 8), M(116, 88, 28),
+ M(136, 116, 56), M(156, 136, 80), M(176, 156, 108), M(196, 180, 136),
+ M( 68, 24, 0), M( 96, 44, 4), M(128, 68, 8), M(156, 96, 16),
+ M(184, 120, 24), M(212, 156, 32), M(232, 184, 16), M(252, 212, 0),
+ M(252, 248, 128), M(252, 252, 192), M( 32, 4, 0), M( 64, 20, 8),
+ M( 84, 28, 16), M(108, 44, 28), M(128, 56, 40), M(148, 72, 56),
+ M(168, 92, 76), M(184, 108, 88), M(196, 128, 108), M(212, 148, 128),
+ M( 8, 52, 0), M( 16, 64, 0), M( 32, 80, 4), M( 48, 96, 4),
+ M( 64, 112, 12), M( 84, 132, 20), M(104, 148, 28), M(128, 168, 44),
+ M( 64, 64, 64), M( 44, 68, 32), M( 60, 88, 48), M( 80, 104, 60),
+ M(104, 124, 76), M(128, 148, 92), M(152, 176, 108), M(180, 204, 124),
+ M( 16, 52, 24), M( 32, 72, 44), M( 56, 96, 72), M( 76, 116, 88),
+ M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200),
+ M( 32, 24, 0), M( 56, 28, 0), M( 80, 80, 80), M( 88, 52, 12),
+ M(104, 64, 24), M(124, 84, 44), M(140, 108, 64), M(160, 128, 88),
+ M( 76, 40, 16), M( 96, 52, 24), M(116, 68, 40), M(136, 84, 56),
+ M(164, 96, 64), M(184, 112, 80), M(204, 128, 96), M(212, 148, 112),
+ M(224, 168, 128), M(236, 188, 148), M( 80, 28, 4), M(100, 40, 20),
+ M(120, 56, 40), M(140, 76, 64), M(160, 100, 96), M(184, 136, 136),
+ M( 36, 40, 68), M( 48, 52, 84), M( 64, 64, 100), M( 80, 80, 116),
+ M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224),
+ M( 48, 48, 48), M( 64, 44, 144), M( 88, 64, 172), M(104, 76, 196),
+ M(120, 88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252),
+ M( 0, 24, 108), M( 0, 36, 132), M( 0, 52, 160), M( 0, 72, 184),
+ M( 0, 96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240),
+ M(128, 196, 252), M(188, 224, 252), M( 16, 64, 96), M( 24, 80, 108),
+ M( 40, 96, 120), M( 52, 112, 132), M( 80, 140, 160), M(116, 172, 192),
+ M(156, 204, 220), M(204, 240, 252), M(172, 52, 52), M(212, 52, 52),
+ M(252, 52, 52), M(252, 100, 88), M(252, 144, 124), M(252, 184, 160),
+ M(252, 216, 200), M(252, 244, 236), M( 72, 20, 112), M( 92, 44, 140),
+ M(112, 68, 168), M(140, 100, 196), M(168, 136, 224), M(204, 180, 252),
+ M(204, 180, 252), M(232, 208, 252), M( 60, 0, 0), M( 92, 0, 0),
+ M(128, 0, 0), M(160, 0, 0), M(196, 0, 0), M(224, 0, 0),
+ M(252, 0, 0), M(252, 80, 0), M(252, 108, 0), M(252, 136, 0),
+ M(252, 164, 0), M(252, 192, 0), M(252, 220, 0), M(252, 252, 0),
+ M(204, 136, 8), M(228, 144, 4), M(252, 156, 0), M(252, 176, 48),
+ M(252, 196, 100), M(252, 216, 152), M( 8, 24, 88), M( 12, 36, 104),
+ M( 20, 52, 124), M( 28, 68, 140), M( 40, 92, 164), M( 56, 120, 188),
+ M( 72, 152, 216), M(100, 172, 224), M( 92, 156, 52), M(108, 176, 64),
+ M(124, 200, 76), M(144, 224, 92), M(224, 244, 252), M(204, 240, 252),
+ M(180, 220, 236), M(132, 188, 216), M( 88, 152, 172), M( 16, 16, 16),
+ M( 32, 32, 32), M( 8, 92, 104), M( 16, 100, 112), M( 24, 108, 120),
+ M( 32, 116, 128), M( 44, 124, 140), M( 92, 164, 184), M(116, 180, 196),
+ M(148, 200, 216), M(180, 220, 232), M(216, 244, 252), M( 0, 0, 0),
+ M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
+ M(252, 60, 0), M(252, 80, 0), M(252, 104, 0), M(252, 128, 0),
+ M(252, 148, 0), M(252, 172, 0), M(252, 196, 0), M(252, 0, 0),
+ M(252, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
+ M(252, 228, 0), M(148, 148, 148), M(212, 0, 212), M(212, 0, 212),
+ M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
+ M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(252, 252, 252)
+ },
+
+ /* palette 2 (mixed TTD DOS + TTD Windows palette */
+ {
+ M( 0, 0, 0), M( 16, 16, 16), M( 32, 32, 32), M( 48, 48, 48),
+ M( 65, 64, 65), M( 82, 80, 82), M( 98, 101, 98), M(115, 117, 115),
+ M(131, 133, 131), M(148, 149, 148), M(168, 168, 168), M(184, 184, 184),
+ M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252),
+ M( 52, 60, 72), M( 68, 76, 92), M( 88, 96, 112), M(108, 116, 132),
+ M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220),
+ M( 48, 44, 4), M( 64, 60, 12), M( 80, 76, 20), M( 96, 92, 28),
+ M(120, 120, 64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168),
+ M( 72, 44, 4), M( 88, 60, 20), M(104, 80, 44), M(124, 104, 72),
+ M(152, 132, 92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176),
+ M( 64, 0, 4), M( 88, 4, 16), M(112, 16, 32), M(136, 32, 52),
+ M(160, 56, 76), M(188, 84, 108), M(204, 104, 124), M(220, 132, 144),
+ M(236, 156, 164), M(252, 188, 192), M(252, 212, 0), M(252, 232, 60),
+ M(252, 248, 128), M( 76, 40, 0), M( 96, 60, 8), M(116, 88, 28),
+ M(136, 116, 56), M(156, 136, 80), M(176, 156, 108), M(196, 180, 136),
+ M( 68, 24, 0), M( 96, 44, 4), M(128, 68, 8), M(156, 96, 16),
+ M(184, 120, 24), M(212, 156, 32), M(232, 184, 16), M(252, 212, 0),
+ M(252, 248, 128), M(252, 252, 192), M( 32, 4, 0), M( 64, 20, 8),
+ M( 84, 28, 16), M(108, 44, 28), M(128, 56, 40), M(148, 72, 56),
+ M(168, 92, 76), M(184, 108, 88), M(196, 128, 108), M(212, 148, 128),
+ M( 8, 52, 0), M( 16, 64, 0), M( 32, 80, 4), M( 48, 96, 4),
+ M( 64, 112, 12), M( 84, 132, 20), M(104, 148, 28), M(128, 168, 44),
+ M( 28, 52, 24), M( 44, 68, 32), M( 60, 88, 48), M( 80, 104, 60),
+ M(104, 124, 76), M(128, 148, 92), M(152, 176, 108), M(180, 204, 124),
+ M( 16, 52, 24), M( 32, 72, 44), M( 56, 96, 72), M( 76, 116, 88),
+ M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200),
+ M( 32, 24, 0), M( 56, 28, 0), M( 72, 40, 0), M( 88, 52, 12),
+ M(104, 64, 24), M(124, 84, 44), M(140, 108, 64), M(160, 128, 88),
+ M( 76, 40, 16), M( 96, 52, 24), M(116, 68, 40), M(136, 84, 56),
+ M(164, 96, 64), M(184, 112, 80), M(204, 128, 96), M(212, 148, 112),
+ M(224, 168, 128), M(236, 188, 148), M( 80, 28, 4), M(100, 40, 20),
+ M(120, 56, 40), M(140, 76, 64), M(160, 100, 96), M(184, 136, 136),
+ M( 36, 40, 68), M( 48, 52, 84), M( 64, 64, 100), M( 80, 80, 116),
+ M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224),
+ M( 40, 20, 112), M( 64, 44, 144), M( 88, 64, 172), M(104, 76, 196),
+ M(120, 88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252),
+ M( 0, 24, 108), M( 0, 36, 132), M( 0, 52, 160), M( 0, 72, 184),
+ M( 0, 96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240),
+ M(128, 196, 252), M(188, 224, 252), M( 16, 64, 96), M( 24, 80, 108),
+ M( 40, 96, 120), M( 52, 112, 132), M( 80, 140, 160), M(116, 172, 192),
+ M(156, 204, 220), M(204, 240, 252), M(172, 52, 52), M(212, 52, 52),
+ M(252, 52, 52), M(252, 100, 88), M(252, 144, 124), M(252, 184, 160),
+ M(252, 216, 200), M(252, 244, 236), M( 72, 20, 112), M( 92, 44, 140),
+ M(112, 68, 168), M(140, 100, 196), M(168, 136, 224), M(204, 180, 252),
+ M(204, 180, 252), M(232, 208, 252), M( 60, 0, 0), M( 92, 0, 0),
+ M(128, 0, 0), M(160, 0, 0), M(196, 0, 0), M(224, 0, 0),
+ M(252, 0, 0), M(252, 80, 0), M(252, 108, 0), M(252, 136, 0),
+ M(252, 164, 0), M(252, 192, 0), M(252, 220, 0), M(252, 252, 0),
+ M(204, 136, 8), M(228, 144, 4), M(252, 156, 0), M(252, 176, 48),
+ M(252, 196, 100), M(252, 216, 152), M( 8, 24, 88), M( 12, 36, 104),
+ M( 20, 52, 124), M( 28, 68, 140), M( 40, 92, 164), M( 56, 120, 188),
+ M( 72, 152, 216), M(100, 172, 224), M( 92, 156, 52), M(108, 176, 64),
+ M(124, 200, 76), M(144, 224, 92), M(224, 244, 252), M(204, 240, 252),
+ M(180, 220, 236), M(132, 188, 216), M( 88, 152, 172), M( 16, 16, 16),
+ M( 32, 32, 32), M( 8, 92, 104), M( 16, 100, 112), M( 24, 108, 120),
+ M( 32, 116, 128), M( 44, 124, 140), M( 92, 164, 184), M(116, 180, 196),
+ M(148, 200, 216), M(180, 220, 232), M(216, 244, 252), M( 0, 0, 0),
+ M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
+ M(252, 60, 0), M(252, 80, 0), M(252, 104, 0), M(252, 128, 0),
+ M(252, 148, 0), M(252, 172, 0), M(252, 196, 0), M(252, 0, 0),
+ M(252, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
+ M(252, 228, 0), M(148, 148, 148), M( 16, 101, 115), M( 24, 109, 123),
+ M( 32, 117, 131), M( 41, 125, 139), M( 90, 165, 189), M(115, 182, 197),
+ M(148, 202, 222), M(180, 222, 238), M(222, 246, 255), M(252, 252, 252)
+ }
+};
+
+#define GET_PALETTE(x) _palettes[x]
+
+typedef struct {
+ Colour a[15]; // dark blue water
+ Colour ac[15]; // dark blue water Toyland
+ Colour lighthouse[12]; // lighthouse & stadium
+ Colour oil_ref[21]; // oil refinery
+ Colour e[15]; // ???
+ Colour b[45]; // glittery water
+ Colour bc[45]; // glittery water Toyland
+} ExtraPaletteValues;
+
+static const ExtraPaletteValues _extra_palette_values = {
+ { M( 32, 68, 112), M( 36, 72, 116), M( 40, 76, 120), M( 44, 80, 124),
+ M( 48, 84, 128) },
+ { M( 28, 108, 124), M( 32, 112, 128), M( 36, 116, 132), M( 40, 120, 136),
+ M( 44, 124, 140) },
+ { M(240, 208, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0) },
+ { M(252, 60, 0), M(252, 84, 0), M(252, 108, 0), M(252, 124, 0),
+ M(252, 148, 0), M(252, 172, 0), M(252, 196, 0) },
+ { M( 76, 24, 8), M(108, 44, 24), M(144, 72, 52), M(176, 108, 84),
+ M(212, 148, 128) },
+ { M(216, 244, 252), M(172, 208, 224), M(132, 172, 196), M(100, 132, 168),
+ M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
+ M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
+ M(100, 132, 168), M(132, 172, 196), M(172, 208, 224) },
+ { M(216, 244, 252), M(180, 220, 232), M(148, 200, 216), M(116, 180, 196),
+ M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
+ M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
+ M(116, 180, 196), M(148, 200, 216), M(180, 220, 232) }
+};
+#undef M
+
+// Color table for colors in lang files (e.g. {BLACK})
+typedef struct StringColor {
+ byte text;
+ byte shadow;
+} StringColor;
+
+static const StringColor _string_colormap[] = {
+ { 150, 215 }, // BLUE
+ { 12, 215 }, // SILVER
+ { 189, 215 }, // GOLD
+ { 184, 215 }, // RED
+ { 174, 215 }, // PURPLE
+ { 30, 215 }, // LTBROWN
+ { 195, 215 }, // ORANGE
+ { 209, 215 }, // GREEN
+ { 68, 215 }, // YELLOW
+ { 95, 215 }, // DKGREEN
+ { 79, 215 }, // CREAM
+ { 116, 215 }, // BROWN
+ { 15, 215 }, // WHITE
+ { 152, 215 }, // LTBLUE
+ { 32, 215 }, // GRAY
+ { 133, 215 }, // DKBLUE
+ { 215, 0 }, // BLACK
+};
diff --git a/src/table/road_land.h b/src/table/road_land.h
new file mode 100644
index 000000000..52e013bd9
--- /dev/null
+++ b/src/table/road_land.h
@@ -0,0 +1,281 @@
+/* $Id$ */
+
+#define TILE_SEQ_LINE(img, dx, dy, sx, sy) { dx, dy, 0, sx, sy, 20, img },
+#define TILE_SEQ_END() { 0, 0, 0, 0, 0, 0, 0 }
+
+static const DrawTileSeqStruct _road_depot_NE[] = {
+ TILE_SEQ_LINE(0x584 | PALETTE_MODIFIER_COLOR, 0, 15, 16, 1)
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _road_depot_SE[] = {
+ TILE_SEQ_LINE(0x580, 0, 0, 1, 16)
+ TILE_SEQ_LINE(0x581 | PALETTE_MODIFIER_COLOR, 15, 0, 1, 16)
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _road_depot_SW[] = {
+ TILE_SEQ_LINE(0x582, 0, 0, 16, 1)
+ TILE_SEQ_LINE(0x583 | PALETTE_MODIFIER_COLOR, 0, 15, 16, 1)
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _road_depot_NW[] = {
+ TILE_SEQ_LINE(0x585 | PALETTE_MODIFIER_COLOR, 15, 0, 1, 16)
+ TILE_SEQ_END()
+};
+
+static const DrawTileSprites _road_depot[] = {
+ { 0xA4A, _road_depot_NE },
+ { 0xA4A, _road_depot_SE },
+ { 0xA4A, _road_depot_SW },
+ { 0xA4A, _road_depot_NW }
+};
+
+#undef TILE_SEQ_BEGIN
+#undef TILE_SEQ_LINE
+#undef TILE_SEQ_END
+
+
+static const SpriteID _road_tile_sprites_1[16] = {
+ 0, 0x546, 0x545, 0x53B, 0x544, 0x534, 0x53E, 0x539,
+ 0x543, 0x53C, 0x535, 0x538, 0x53D, 0x537, 0x53A, 0x536
+};
+
+
+
+#define MAKELINE(a, b, c) { a, b, c },
+#define ENDLINE { 0, 0, 0 }
+static const DrawRoadTileStruct _road_display_datas2_0[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_1[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_2[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_3[] = {
+ MAKELINE(0x57f, 1, 8)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_4[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_5[] = {
+ MAKELINE(0x57f, 1, 8)
+ MAKELINE(0x57e, 14, 8)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_6[] = {
+ MAKELINE(0x57e, 8, 1)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_7[] = {
+ MAKELINE(0x57f, 1, 8)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_8[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_9[] = {
+ MAKELINE(0x57f, 8, 14)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_10[] = {
+ MAKELINE(0x57f, 8, 14)
+ MAKELINE(0x57e, 8, 1)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_11[] = {
+ MAKELINE(0x57f, 8, 14)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_12[] = {
+ MAKELINE(0x57e, 8, 1)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_13[] = {
+ MAKELINE(0x57e, 14, 8)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_14[] = {
+ MAKELINE(0x57e, 8, 1)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_15[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_16[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_17[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_18[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_19[] = {
+ MAKELINE(0x1212, 0, 2)
+ MAKELINE(0x1212, 3, 9)
+ MAKELINE(0x1212, 10, 12)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_20[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_21[] = {
+ MAKELINE(0x1212, 0, 2)
+ MAKELINE(0x1212, 0, 10)
+ MAKELINE(0x1212, 12, 2)
+ MAKELINE(0x1212, 12, 10)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_22[] = {
+ MAKELINE(0x1212, 10, 0)
+ MAKELINE(0x1212, 3, 3)
+ MAKELINE(0x1212, 0, 10)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_23[] = {
+ MAKELINE(0x1212, 0, 2)
+ MAKELINE(0x1212, 0, 10)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_24[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_25[] = {
+ MAKELINE(0x1212, 12, 2)
+ MAKELINE(0x1212, 9, 9)
+ MAKELINE(0x1212, 2, 12)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_26[] = {
+ MAKELINE(0x1212, 2, 0)
+ MAKELINE(0x1212, 10, 0)
+ MAKELINE(0x1212, 2, 12)
+ MAKELINE(0x1212, 10, 12)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_27[] = {
+ MAKELINE(0x1212, 2, 12)
+ MAKELINE(0x1212, 10, 12)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_28[] = {
+ MAKELINE(0x1212, 2, 0)
+ MAKELINE(0x1212, 9, 3)
+ MAKELINE(0x1212, 12, 10)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_29[] = {
+ MAKELINE(0x1212, 12, 2)
+ MAKELINE(0x1212, 12, 10)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_30[] = {
+ MAKELINE(0x1212, 2, 0)
+ MAKELINE(0x1212, 10, 0)
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_31[] = {
+ ENDLINE
+};
+
+static const DrawRoadTileStruct _road_display_datas2_32[] = {
+ ENDLINE
+};
+
+#undef MAKELINE
+#undef ENDLINE
+
+static const DrawRoadTileStruct* const _road_display_table_1[] = {
+ _road_display_datas2_32,_road_display_datas2_32,
+ _road_display_datas2_32,_road_display_datas2_32,
+ _road_display_datas2_32,_road_display_datas2_32,
+ _road_display_datas2_32,_road_display_datas2_32,
+ _road_display_datas2_32,_road_display_datas2_32,
+ _road_display_datas2_32,_road_display_datas2_32,
+ _road_display_datas2_32,_road_display_datas2_32,
+ _road_display_datas2_32,_road_display_datas2_32,
+};
+
+static const DrawRoadTileStruct* const _road_display_table_2[] = {
+ _road_display_datas2_0,
+ _road_display_datas2_1,
+ _road_display_datas2_2,
+ _road_display_datas2_3,
+ _road_display_datas2_4,
+ _road_display_datas2_5,
+ _road_display_datas2_6,
+ _road_display_datas2_7,
+ _road_display_datas2_8,
+ _road_display_datas2_9,
+ _road_display_datas2_10,
+ _road_display_datas2_11,
+ _road_display_datas2_12,
+ _road_display_datas2_13,
+ _road_display_datas2_14,
+ _road_display_datas2_15,
+};
+
+static const DrawRoadTileStruct* const _road_display_table_3[] = {
+ _road_display_datas2_16,
+ _road_display_datas2_17,
+ _road_display_datas2_18,
+ _road_display_datas2_19,
+ _road_display_datas2_20,
+ _road_display_datas2_21,
+ _road_display_datas2_22,
+ _road_display_datas2_23,
+
+ _road_display_datas2_24,
+ _road_display_datas2_25,
+ _road_display_datas2_26,
+ _road_display_datas2_27,
+ _road_display_datas2_28,
+ _road_display_datas2_29,
+ _road_display_datas2_30,
+ _road_display_datas2_31,
+};
+
+static const DrawRoadTileStruct* const * const _road_display_table[] = {
+ _road_display_table_1,
+ _road_display_table_1,
+ _road_display_table_1,
+ _road_display_table_2,
+ _road_display_table_1,
+ _road_display_table_3,
+};
diff --git a/src/table/roadveh.h b/src/table/roadveh.h
new file mode 100644
index 000000000..fa8f18e1f
--- /dev/null
+++ b/src/table/roadveh.h
@@ -0,0 +1,1077 @@
+/* $Id$ */
+
+static const RoadDriveEntry _roadveh_drive_data_0[] = {
+ {15, 5},
+ {14, 5},
+ {13, 5},
+ {12, 5},
+ {11, 5},
+ {10, 5},
+ { 9, 5},
+ { 8, 5},
+ { 7, 5},
+ { 6, 5},
+ { 5, 5},
+ { 4, 5},
+ { 3, 5},
+ { 2, 5},
+ { 1, 5},
+ { 0, 5},
+ {0x80, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_1[] = {
+ {5, 0},
+ {5, 1},
+ {5, 2},
+ {5, 3},
+ {5, 4},
+ {5, 5},
+ {5, 6},
+ {5, 7},
+ {5, 8},
+ {5, 9},
+ {5, 10},
+ {5, 11},
+ {5, 12},
+ {5, 13},
+ {5, 14},
+ {5, 15},
+ {0x81, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_2[] = {
+ {5, 0},
+ {5, 1},
+ {5, 2},
+ {4, 3},
+ {3, 4},
+ {2, 5},
+ {1, 5},
+ {0, 5},
+ {0x80, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_3[] = {
+ {15, 5},
+ {14, 5},
+ {13, 5},
+ {12, 5},
+ {11, 5},
+ {10, 5},
+ { 9, 6},
+ { 8, 7},
+ { 7, 8},
+ { 6, 9},
+ { 5, 10},
+ { 5, 11},
+ { 5, 12},
+ { 5, 13},
+ { 5, 14},
+ { 5, 15},
+ {0x81, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_4[] = {
+ { 5, 0},
+ { 5, 1},
+ { 5, 2},
+ { 5, 3},
+ { 5, 4},
+ { 5, 5},
+ { 6, 6},
+ { 7, 7},
+ { 8, 8},
+ { 9, 9},
+ {10, 9},
+ {11, 9},
+ {12, 9},
+ {13, 9},
+ {14, 9},
+ {15, 9},
+ {0x82, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_5[] = {
+ {0, 9},
+ {1, 9},
+ {2, 9},
+ {3, 10},
+ {4, 11},
+ {5, 12},
+ {5, 13},
+ {5, 14},
+ {5, 15},
+ {0x81, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_6[] = {
+ {0, 6},
+ {0, 7},
+ {0, 8},
+ {0, 9},
+ {0x42, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_7[] = {
+ {6, 15},
+ {7, 15},
+ {8, 15},
+ {9, 15},
+ {0x43, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_8[] = {
+ { 0, 9},
+ { 1, 9},
+ { 2, 9},
+ { 3, 9},
+ { 4, 9},
+ { 5, 9},
+ { 6, 9},
+ { 7, 9},
+ { 8, 9},
+ { 9, 9},
+ {10, 9},
+ {11, 9},
+ {12, 9},
+ {13, 9},
+ {14, 9},
+ {15, 9},
+ {0x82, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_9[] = {
+ {9, 15},
+ {9, 14},
+ {9, 13},
+ {9, 12},
+ {9, 11},
+ {9, 10},
+ {9, 9},
+ {9, 8},
+ {9, 7},
+ {9, 6},
+ {9, 5},
+ {9, 4},
+ {9, 3},
+ {9, 2},
+ {9, 1},
+ {9, 0},
+ {0x83, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_10[] = {
+ {0, 9},
+ {1, 9},
+ {2, 9},
+ {3, 9},
+ {4, 9},
+ {5, 9},
+ {6, 8},
+ {7, 7},
+ {8, 6},
+ {9, 5},
+ {9, 4},
+ {9, 3},
+ {9, 2},
+ {9, 1},
+ {9, 0},
+ {0x83, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_11[] = {
+ { 9, 15},
+ { 9, 14},
+ { 9, 13},
+ {10, 12},
+ {11, 11},
+ {12, 10},
+ {13, 9},
+ {14, 9},
+ {15, 9},
+ {0x82, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_12[] = {
+ {15, 5},
+ {14, 5},
+ {13, 5},
+ {12, 4},
+ {11, 3},
+ {10, 2},
+ { 9, 1},
+ { 9, 0},
+ {0x83, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_13[] = {
+ {9, 15},
+ {9, 14},
+ {9, 13},
+ {9, 12},
+ {9, 11},
+ {9, 10},
+ {8, 9},
+ {7, 8},
+ {6, 7},
+ {5, 6},
+ {4, 5},
+ {3, 5},
+ {2, 5},
+ {1, 5},
+ {0, 5},
+ {0x80, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_14[] = {
+ {15, 8},
+ {15, 7},
+ {15, 6},
+ {15, 5},
+ {0x40, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_15[] = {
+ {8, 0},
+ {7, 0},
+ {6, 0},
+ {5, 0},
+ {0x41, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_16[] = {
+ {15, 9},
+ {14, 9},
+ {13, 9},
+ {12, 9},
+ {11, 9},
+ {10, 9},
+ { 9, 9},
+ { 8, 9},
+ { 7, 9},
+ { 6, 9},
+ { 5, 9},
+ { 4, 9},
+ { 3, 9},
+ { 2, 9},
+ { 1, 9},
+ { 0, 9},
+ {0x80, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_17[] = {
+ {9, 0},
+ {9, 1},
+ {9, 2},
+ {9, 3},
+ {9, 4},
+ {9, 5},
+ {9, 6},
+ {9, 7},
+ {9, 8},
+ {9, 9},
+ {9, 10},
+ {9, 11},
+ {9, 12},
+ {9, 13},
+ {9, 14},
+ {9, 15},
+ {0x81, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_18[] = {
+ {9, 0},
+ {9, 1},
+ {9, 2},
+ {9, 3},
+ {9, 4},
+ {9, 5},
+ {8, 6},
+ {7, 7},
+ {6, 8},
+ {5, 9},
+ {4, 9},
+ {3, 9},
+ {2, 9},
+ {1, 9},
+ {0, 9},
+ {0x80, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_19[] = {
+ {15, 9},
+ {14, 9},
+ {13, 9},
+ {12, 10},
+ {11, 11},
+ {10, 12},
+ { 9, 13},
+ { 9, 14},
+ { 9, 15},
+ {0x81, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_20[] = {
+ { 9, 0},
+ { 9, 1},
+ {10, 2},
+ {11, 3},
+ {12, 4},
+ {13, 5},
+ {14, 5},
+ {15, 5},
+ {0x82, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_21[] = {
+ {0, 5},
+ {1, 5},
+ {2, 5},
+ {3, 5},
+ {4, 5},
+ {5, 6},
+ {6, 7},
+ {7, 8},
+ {8, 9},
+ {9, 10},
+ {9, 11},
+ {9, 12},
+ {9, 13},
+ {9, 14},
+ {9, 15},
+ {0x81, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_22[] = {
+ {0, 8},
+ {0, 7},
+ {0, 6},
+ {0, 5},
+ {0x42, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_23[] = {
+ {8, 15},
+ {7, 15},
+ {6, 15},
+ {5, 15},
+ {0x43, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_24[] = {
+ { 0, 5},
+ { 1, 5},
+ { 2, 5},
+ { 3, 5},
+ { 4, 5},
+ { 5, 5},
+ { 6, 5},
+ { 7, 5},
+ { 8, 5},
+ { 9, 5},
+ {10, 5},
+ {11, 5},
+ {12, 5},
+ {13, 5},
+ {14, 5},
+ {15, 5},
+ {0x82, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_25[] = {
+ {5, 15},
+ {5, 14},
+ {5, 13},
+ {5, 12},
+ {5, 11},
+ {5, 10},
+ {5, 9},
+ {5, 8},
+ {5, 7},
+ {5, 6},
+ {5, 5},
+ {5, 4},
+ {5, 3},
+ {5, 2},
+ {5, 1},
+ {5, 0},
+ {0x83, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_26[] = {
+ {0, 5},
+ {1, 5},
+ {2, 5},
+ {3, 4},
+ {4, 3},
+ {5, 2},
+ {5, 1},
+ {5, 0},
+ {0x83, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_27[] = {
+ { 5, 15},
+ { 5, 14},
+ { 5, 13},
+ { 5, 12},
+ { 5, 11},
+ { 5, 10},
+ { 6, 9},
+ { 7, 8},
+ { 8, 7},
+ { 9, 6},
+ {10, 5},
+ {11, 5},
+ {12, 5},
+ {13, 5},
+ {14, 5},
+ {15, 5},
+ {0x82, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_28[] = {
+ {15, 9},
+ {14, 9},
+ {13, 9},
+ {12, 9},
+ {11, 9},
+ {10, 9},
+ { 9, 9},
+ { 8, 8},
+ { 7, 7},
+ { 6, 6},
+ { 5, 5},
+ { 5, 4},
+ { 5, 3},
+ { 5, 2},
+ { 5, 1},
+ { 5, 0},
+ {0x83, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_29[] = {
+ {5, 15},
+ {5, 14},
+ {5, 13},
+ {5, 12},
+ {4, 11},
+ {3, 10},
+ {2, 9},
+ {1, 9},
+ {0, 9},
+ {0x80, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_30[] = {
+ {15, 6},
+ {15, 7},
+ {15, 8},
+ {15, 9},
+ {0x40, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_31[] = {
+ {6, 0},
+ {7, 0},
+ {8, 0},
+ {9, 0},
+ {0x41, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_32[] = {
+ {15, 5},
+ {14, 5},
+ {13, 6},
+ {13, 7},
+ {13, 8},
+ {13, 9},
+ {13, 10},
+ {13, 11},
+ {12, 12},
+ {11, 12},
+ {10, 12},
+ { 9, 12},
+ { 8, 12},
+ { 7, 12},
+ { 6, 12},
+ { 5, 11},
+ { 5, 10},
+ { 5, 9},
+ { 5, 8},
+ { 5, 7},
+ { 5, 6},
+ { 5, 7},
+ { 5, 8},
+ { 5, 9},
+ { 5, 10},
+ { 5, 11},
+ { 6, 12},
+ { 7, 12},
+ { 8, 12},
+ { 9, 12},
+ {10, 12},
+ {11, 12},
+ {12, 12},
+ {13, 11},
+ {13, 10},
+ {14, 9},
+ {15, 9},
+ {0x82, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_33[] = {
+ { 5, 0},
+ { 5, 1},
+ { 6, 2},
+ { 7, 2},
+ { 8, 2},
+ { 9, 2},
+ {10, 2},
+ {11, 2},
+ {12, 3},
+ {12, 4},
+ {12, 5},
+ {12, 6},
+ {12, 7},
+ {12, 8},
+ {12, 9},
+ {11, 10},
+ {10, 10},
+ { 9, 10},
+ { 8, 10},
+ { 7, 10},
+ { 6, 10},
+ { 7, 10},
+ { 8, 10},
+ { 9, 10},
+ {10, 10},
+ {11, 10},
+ {12, 9},
+ {12, 8},
+ {12, 7},
+ {12, 6},
+ {12, 5},
+ {12, 4},
+ {12, 3},
+ {11, 2},
+ {10, 2},
+ { 9, 1},
+ { 9, 0},
+ {0x83, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_34[] = {
+ {15, 5},
+ {14, 5},
+ {13, 6},
+ {13, 7},
+ {13, 8},
+ {13, 9},
+ {13, 10},
+ {13, 11},
+ {12, 12},
+ {11, 12},
+ {10, 12},
+ { 9, 11},
+ { 9, 10},
+ { 9, 9},
+ { 9, 8},
+ { 9, 7},
+ { 9, 6},
+ { 9, 7},
+ { 9, 8},
+ { 9, 9},
+ { 9, 10},
+ { 9, 11},
+ {10, 12},
+ {11, 12},
+ {12, 12},
+ {13, 11},
+ {13, 10},
+ {14, 9},
+ {15, 9},
+ {0x82, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_35[] = {
+ { 5, 0},
+ { 5, 1},
+ { 6, 2},
+ { 7, 2},
+ { 8, 2},
+ { 9, 2},
+ {10, 2},
+ {11, 2},
+ {12, 3},
+ {12, 4},
+ {12, 5},
+ {11, 6},
+ {10, 6},
+ { 9, 6},
+ { 8, 6},
+ { 7, 6},
+ { 6, 6},
+ { 7, 6},
+ { 8, 6},
+ { 9, 6},
+ {10, 6},
+ {11, 6},
+ {12, 5},
+ {12, 4},
+ {12, 3},
+ {11, 2},
+ {10, 2},
+ { 9, 1},
+ { 9, 0},
+ {0x83, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_40[] = {
+ { 0, 9},
+ { 1, 9},
+ { 2, 8},
+ { 2, 7},
+ { 2, 6},
+ { 2, 5},
+ { 2, 4},
+ { 3, 3},
+ { 4, 3},
+ { 5, 3},
+ { 6, 3},
+ { 7, 3},
+ { 8, 3},
+ { 9, 3},
+ {10, 4},
+ {10, 5},
+ {10, 6},
+ {10, 7},
+ {10, 8},
+ {10, 9},
+ {10, 8},
+ {10, 7},
+ {10, 6},
+ {10, 5},
+ {10, 4},
+ { 9, 3},
+ { 8, 3},
+ { 7, 3},
+ { 6, 3},
+ { 5, 3},
+ { 4, 3},
+ { 3, 3},
+ { 2, 4},
+ { 1, 5},
+ { 0, 5},
+ {0x80, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_41[] = {
+ {9, 15},
+ {9, 14},
+ {8, 13},
+ {7, 13},
+ {6, 13},
+ {5, 13},
+ {4, 13},
+ {3, 12},
+ {3, 11},
+ {3, 10},
+ {3, 9},
+ {3, 8},
+ {3, 7},
+ {3, 6},
+ {4, 5},
+ {5, 5},
+ {6, 5},
+ {7, 5},
+ {8, 5},
+ {9, 5},
+ {8, 5},
+ {7, 5},
+ {6, 5},
+ {5, 5},
+ {4, 5},
+ {3, 6},
+ {3, 7},
+ {3, 8},
+ {3, 9},
+ {3, 10},
+ {3, 11},
+ {3, 12},
+ {4, 13},
+ {5, 14},
+ {5, 15},
+ {0x81, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_42[] = {
+ {0, 9},
+ {1, 9},
+ {2, 8},
+ {2, 7},
+ {2, 6},
+ {2, 5},
+ {2, 4},
+ {3, 3},
+ {4, 3},
+ {5, 3},
+ {6, 4},
+ {6, 5},
+ {6, 6},
+ {6, 7},
+ {6, 8},
+ {6, 9},
+ {6, 8},
+ {6, 7},
+ {6, 6},
+ {6, 5},
+ {6, 4},
+ {5, 3},
+ {4, 3},
+ {3, 3},
+ {2, 4},
+ {1, 5},
+ {0, 5},
+ {0x80, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_43[] = {
+ {9, 15},
+ {9, 14},
+ {8, 13},
+ {7, 13},
+ {6, 13},
+ {5, 13},
+ {4, 13},
+ {3, 12},
+ {3, 11},
+ {3, 10},
+ {4, 9},
+ {5, 9},
+ {6, 9},
+ {7, 9},
+ {8, 9},
+ {9, 9},
+ {8, 9},
+ {7, 9},
+ {6, 9},
+ {5, 9},
+ {4, 9},
+ {3, 10},
+ {3, 11},
+ {3, 12},
+ {4, 13},
+ {5, 14},
+ {5, 15},
+ {0x81, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_48[] = {
+ {15, 9},
+ {14, 9},
+ {13, 10},
+ {13, 11},
+ {12, 12},
+ {11, 12},
+ {10, 12},
+ { 9, 12},
+ { 8, 12},
+ { 7, 12},
+ { 6, 12},
+ { 5, 11},
+ { 5, 10},
+ { 5, 9},
+ { 5, 8},
+ { 5, 7},
+ { 5, 6},
+ { 5, 7},
+ { 5, 8},
+ { 5, 9},
+ { 5, 10},
+ { 5, 11},
+ { 6, 12},
+ { 7, 12},
+ { 8, 12},
+ { 9, 12},
+ {10, 12},
+ {11, 12},
+ {12, 12},
+ {13, 11},
+ {13, 10},
+ {13, 9},
+ {13, 8},
+ {13, 7},
+ {13, 6},
+ {14, 5},
+ {15, 5},
+ {0x82, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_49[] = {
+ { 9, 0},
+ { 9, 1},
+ {10, 2},
+ {11, 2},
+ {12, 3},
+ {12, 4},
+ {12, 5},
+ {12, 6},
+ {12, 7},
+ {12, 8},
+ {12, 9},
+ {11, 10},
+ {10, 10},
+ { 9, 10},
+ { 8, 10},
+ { 7, 10},
+ { 6, 10},
+ { 7, 10},
+ { 8, 10},
+ { 9, 10},
+ {10, 10},
+ {11, 10},
+ {12, 9},
+ {12, 8},
+ {12, 7},
+ {12, 6},
+ {12, 5},
+ {12, 4},
+ {12, 3},
+ {11, 2},
+ {10, 2},
+ { 9, 2},
+ { 8, 2},
+ { 7, 2},
+ { 6, 2},
+ { 5, 1},
+ { 5, 0},
+ {0x83, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_50[] = {
+ {15, 9},
+ {14, 9},
+ {13, 10},
+ {13, 11},
+ {12, 12},
+ {11, 12},
+ {10, 12},
+ { 9, 11},
+ { 9, 10},
+ { 9, 9},
+ { 9, 8},
+ { 9, 7},
+ { 9, 6},
+ { 9, 7},
+ { 9, 8},
+ { 9, 9},
+ { 9, 10},
+ { 9, 11},
+ {10, 12},
+ {11, 12},
+ {12, 12},
+ {13, 11},
+ {13, 10},
+ {13, 9},
+ {13, 8},
+ {13, 7},
+ {13, 6},
+ {14, 5},
+ {15, 5},
+ {0x82, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_51[] = {
+ { 9, 0},
+ { 9, 1},
+ {10, 2},
+ {11, 2},
+ {12, 3},
+ {12, 4},
+ {12, 5},
+ {11, 6},
+ {10, 6},
+ { 9, 6},
+ { 8, 6},
+ { 7, 6},
+ { 6, 6},
+ { 7, 6},
+ { 8, 6},
+ { 9, 6},
+ {10, 6},
+ {11, 6},
+ {12, 5},
+ {12, 4},
+ {12, 3},
+ {11, 2},
+ {10, 2},
+ { 9, 2},
+ { 8, 2},
+ { 7, 2},
+ { 6, 2},
+ { 5, 1},
+ { 5, 0},
+ {0x83, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_56[] = {
+ { 0, 5},
+ { 1, 5},
+ { 2, 4},
+ { 3, 3},
+ { 4, 3},
+ { 5, 3},
+ { 6, 3},
+ { 7, 3},
+ { 8, 3},
+ { 9, 3},
+ {10, 4},
+ {10, 5},
+ {10, 6},
+ {10, 7},
+ {10, 8},
+ {10, 9},
+ {10, 8},
+ {10, 7},
+ {10, 6},
+ {10, 5},
+ {10, 4},
+ { 9, 3},
+ { 8, 3},
+ { 7, 3},
+ { 6, 3},
+ { 5, 3},
+ { 4, 3},
+ { 3, 3},
+ { 2, 4},
+ { 2, 5},
+ { 2, 6},
+ { 2, 7},
+ { 2, 8},
+ { 1, 9},
+ { 0, 9},
+ {0x80, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_57[] = {
+ {5, 15},
+ {5, 14},
+ {4, 13},
+ {3, 12},
+ {3, 11},
+ {3, 10},
+ {3, 9},
+ {3, 8},
+ {3, 7},
+ {3, 6},
+ {4, 5},
+ {5, 5},
+ {6, 5},
+ {7, 5},
+ {8, 5},
+ {9, 5},
+ {8, 5},
+ {7, 5},
+ {6, 5},
+ {5, 5},
+ {4, 5},
+ {3, 6},
+ {3, 7},
+ {3, 8},
+ {3, 9},
+ {3, 10},
+ {3, 11},
+ {3, 12},
+ {4, 13},
+ {5, 13},
+ {6, 13},
+ {7, 13},
+ {8, 13},
+ {9, 14},
+ {9, 15},
+ {0x81, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_58[] = {
+ {0, 5},
+ {1, 5},
+ {2, 4},
+ {3, 3},
+ {4, 3},
+ {5, 3},
+ {6, 4},
+ {6, 5},
+ {6, 6},
+ {6, 7},
+ {6, 8},
+ {6, 9},
+ {6, 8},
+ {6, 7},
+ {6, 6},
+ {6, 5},
+ {6, 4},
+ {5, 3},
+ {4, 3},
+ {3, 3},
+ {2, 4},
+ {2, 5},
+ {2, 6},
+ {2, 7},
+ {2, 8},
+ {1, 9},
+ {0, 9},
+ {0x80, 0}
+};
+static const RoadDriveEntry _roadveh_drive_data_59[] = {
+ {5, 15},
+ {5, 14},
+ {4, 13},
+ {3, 12},
+ {3, 11},
+ {3, 10},
+ {4, 9},
+ {5, 9},
+ {6, 9},
+ {7, 9},
+ {8, 9},
+ {9, 9},
+ {8, 9},
+ {7, 9},
+ {6, 9},
+ {5, 9},
+ {4, 9},
+ {3, 10},
+ {3, 11},
+ {3, 12},
+ {4, 13},
+ {5, 13},
+ {6, 13},
+ {7, 13},
+ {8, 13},
+ {9, 14},
+ {9, 15},
+ {0x81, 0}
+};
+
+static const RoadDriveEntry * const _road_drive_data[] = {
+ _roadveh_drive_data_0,
+ _roadveh_drive_data_1,
+ _roadveh_drive_data_2,
+ _roadveh_drive_data_3,
+ _roadveh_drive_data_4,
+ _roadveh_drive_data_5,
+ _roadveh_drive_data_6,
+ _roadveh_drive_data_7,
+ _roadveh_drive_data_8,
+ _roadveh_drive_data_9,
+ _roadveh_drive_data_10,
+ _roadveh_drive_data_11,
+ _roadveh_drive_data_12,
+ _roadveh_drive_data_13,
+ _roadveh_drive_data_14,
+ _roadveh_drive_data_15,
+ _roadveh_drive_data_16,
+ _roadveh_drive_data_17,
+ _roadveh_drive_data_18,
+ _roadveh_drive_data_19,
+ _roadveh_drive_data_20,
+ _roadveh_drive_data_21,
+ _roadveh_drive_data_22,
+ _roadveh_drive_data_23,
+ _roadveh_drive_data_24,
+ _roadveh_drive_data_25,
+ _roadveh_drive_data_26,
+ _roadveh_drive_data_27,
+ _roadveh_drive_data_28,
+ _roadveh_drive_data_29,
+ _roadveh_drive_data_30,
+ _roadveh_drive_data_31,
+ _roadveh_drive_data_32,
+ _roadveh_drive_data_33,
+ _roadveh_drive_data_34,
+ _roadveh_drive_data_35,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ _roadveh_drive_data_40,
+ _roadveh_drive_data_41,
+ _roadveh_drive_data_42,
+ _roadveh_drive_data_43,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ _roadveh_drive_data_48,
+ _roadveh_drive_data_49,
+ _roadveh_drive_data_50,
+ _roadveh_drive_data_51,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ _roadveh_drive_data_56,
+ _roadveh_drive_data_57,
+ _roadveh_drive_data_58,
+ _roadveh_drive_data_59,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+};
diff --git a/src/table/sprites.h b/src/table/sprites.h
new file mode 100644
index 000000000..071c5ddfb
--- /dev/null
+++ b/src/table/sprites.h
@@ -0,0 +1,1397 @@
+/* $Id$ */
+
+#ifndef SPRITES_H
+#define SPRITES_H
+
+/** @file sprites.h
+ * This file contails all sprite-related enums and defines. These consist mainly of
+ * the sprite numbers and a bunch of masks and macros to handle sprites and to get
+ * rid of all the magic numbers in the code.
+ *
+ * @NOTE:
+ * ALL SPRITE NUMBERS BELOW 5126 are in the main files
+ * SPR_CANALS_BASE is in canalsw.grf
+ * SPR_SLOPES_BASE is in trkfoundw.grf
+ * SPR_OPENTTD_BASE is in openttd.grf
+ *
+ * All elements which consist of two elements should
+ * have the same name and then suffixes
+ * _GROUND and _BUILD for building-type sprites
+ * _REAR and _FRONT for transport-type sprites (tiles where vehicles are on)
+ * These sprites are split because of the Z order of the elements
+ * (like some parts of a bridge are behind the vehicle, while others are before)
+ *
+ *
+ * All sprites which are described here are referenced only one to a handful of times
+ * throughout the code. When introducing new sprite enums, use meaningful names.
+ * Don't be lazy and typing, and only use abbrevations when their meaning is clear or
+ * the length of the enum would get out of hand. In that case EXPLAIN THE ABBREVATION
+ * IN THIS FILE, and perhaps add some comments in the code where it is used.
+ * Now, don't whine about this being too much typing work if the enums are like
+ * 30 characters in length. If your editor doen't help you simplifying your work,
+ * get a proper editor. If your Operating Systems don't have any decent editors,
+ * get a proper Operating System.
+ *
+ * @todo Split the "Sprites" enum into smaller chunks and document them
+ */
+
+
+enum Sprites {
+ SPR_SELECT_TILE = 752,
+ SPR_DOT = 774, // corner marker for lower/raise land
+ SPR_DOT_SMALL = 4078,
+ SPR_WHITE_POINT = 4079,
+
+ /* ASCII */
+ SPR_ASCII_SPACE = 2,
+ SPR_ASCII_SPACE_SMALL = 226,
+ SPR_ASCII_SPACE_BIG = 450,
+
+ /* Extra graphic spritenumbers */
+ OPENTTD_SPRITES_COUNT = 116, // number of gfx-sprites in openttd.grf
+ SPR_SIGNALS_BASE = 4896,
+ SPR_CANALS_BASE = SPR_SIGNALS_BASE + 486,
+ SPR_SLOPES_BASE = SPR_CANALS_BASE + 70,
+ SPR_AUTORAIL_BASE = SPR_SLOPES_BASE + 78,
+ SPR_ELRAIL_BASE = SPR_AUTORAIL_BASE + 55,
+ SPR_2CCMAP_BASE = SPR_ELRAIL_BASE + 53,
+ SPR_OPENTTD_BASE = SPR_2CCMAP_BASE + 256,
+
+ SPR_BLOT = SPR_OPENTTD_BASE + 29, // colored circle (mainly used as vehicle profit marker and for sever compatibility)
+
+ SPR_PIN_UP = SPR_OPENTTD_BASE + 55, // pin icon
+ SPR_PIN_DOWN = SPR_OPENTTD_BASE + 56,
+ SPR_BOX_EMPTY = SPR_OPENTTD_BASE + 59,
+ SPR_BOX_CHECKED = SPR_OPENTTD_BASE + 60,
+ SPR_WINDOW_RESIZE = SPR_OPENTTD_BASE + 87, // resize icon
+ SPR_HOUSE_ICON = SPR_OPENTTD_BASE + 94,
+ // arrow icons pointing in all 4 directions
+ SPR_ARROW_DOWN = SPR_OPENTTD_BASE + 88,
+ SPR_ARROW_UP = SPR_OPENTTD_BASE + 89,
+ SPR_ARROW_LEFT = SPR_OPENTTD_BASE + 90,
+ SPR_ARROW_RIGHT = SPR_OPENTTD_BASE + 91,
+
+ SPR_LARGE_SMALL_WINDOW = 682,
+
+ /* Clone vehicles stuff */
+ SPR_CLONE_TRAIN = SPR_OPENTTD_BASE + 92,
+ SPR_CLONE_ROADVEH = SPR_OPENTTD_BASE + 109,
+ SPR_CLONE_SHIP = SPR_OPENTTD_BASE + 111,
+ SPR_CLONE_AIRCRAFT = SPR_OPENTTD_BASE + 113,
+
+ SPR_SELL_TRAIN = SPR_OPENTTD_BASE + 96,
+ SPR_SELL_ROADVEH = SPR_OPENTTD_BASE + 97,
+ SPR_SELL_SHIP = SPR_OPENTTD_BASE + 98,
+ SPR_SELL_AIRCRAFT = SPR_OPENTTD_BASE + 99,
+ SPR_SELL_ALL_TRAIN = SPR_OPENTTD_BASE + 100,
+ SPR_SELL_ALL_ROADVEH = SPR_OPENTTD_BASE + 101,
+ SPR_SELL_ALL_SHIP = SPR_OPENTTD_BASE + 102,
+ SPR_SELL_ALL_AIRCRAFT = SPR_OPENTTD_BASE + 103,
+ SPR_REPLACE_TRAIN = SPR_OPENTTD_BASE + 104,
+ SPR_REPLACE_ROADVEH = SPR_OPENTTD_BASE + 105,
+ SPR_REPLACE_SHIP = SPR_OPENTTD_BASE + 106,
+ SPR_REPLACE_AIRCRAFT = SPR_OPENTTD_BASE + 107,
+ SPR_SELL_CHAIN_TRAIN = SPR_OPENTTD_BASE + 108,
+
+ SPR_SHARED_ORDERS_ICON = SPR_OPENTTD_BASE + 115,
+
+ /* Network GUI sprites */
+ SPR_SQUARE = SPR_OPENTTD_BASE + 20, // colored square (used for newgrf compatibility)
+ SPR_LOCK = SPR_OPENTTD_BASE + 19, // lock icon (for password protected servers)
+ SPR_FLAGS_BASE = SPR_OPENTTD_BASE + 83, // start of the flags block (in same order as enum NetworkLanguage)
+
+ SPR_AIRPORTX_BASE = SPR_OPENTTD_BASE + OPENTTD_SPRITES_COUNT, // The sprites used for other airport angles
+ SPR_NEWAIRPORT_TARMAC = SPR_AIRPORTX_BASE,
+ SPR_NSRUNWAY1 = SPR_AIRPORTX_BASE + 1,
+ SPR_NSRUNWAY2 = SPR_AIRPORTX_BASE + 2,
+ SPR_NSRUNWAY3 = SPR_AIRPORTX_BASE + 3,
+ SPR_NSRUNWAY4 = SPR_AIRPORTX_BASE + 4,
+ SPR_NSRUNWAY_END = SPR_AIRPORTX_BASE + 5,
+ SPR_NEWHANGAR_S = SPR_AIRPORTX_BASE + 6,
+ SPR_NEWHANGAR_S_WALL = SPR_AIRPORTX_BASE + 7,
+ SPR_NEWHANGAR_W = SPR_AIRPORTX_BASE + 8,
+ SPR_NEWHANGAR_W_WALL = SPR_AIRPORTX_BASE + 9,
+ SPR_NEWHANGAR_N = SPR_AIRPORTX_BASE + 10,
+ SPR_NEWHANGAR_E = SPR_AIRPORTX_BASE + 11,
+ SPR_NEWHELIPAD = SPR_AIRPORTX_BASE + 12,
+ SPR_GRASS_RIGHT = SPR_AIRPORTX_BASE + 13,
+ SPR_GRASS_LEFT = SPR_AIRPORTX_BASE + 14,
+
+ /* Manager face sprites */
+ SPR_GRADIENT = 874, // background gradient behind manager face
+
+ /* is itself no foundation sprite, because tileh 0 has no foundation */
+ SPR_FOUNDATION_BASE = 989,
+
+ /* Shadow cell */
+ SPR_SHADOW_CELL = 1004,
+
+ /* Sliced view shadow cells */
+ /* Maybe we have different ones in the future */
+ SPR_MAX_SLICE = SPR_OPENTTD_BASE + 64,
+ SPR_MIN_SLICE = SPR_OPENTTD_BASE + 64,
+
+ /* Unmovables spritenumbers */
+ SPR_UNMOVABLE_TRANSMITTER = 2601,
+ SPR_UNMOVABLE_LIGHTHOUSE = 2602,
+ SPR_TINYHQ_NORTH = 2603,
+ SPR_TINYHQ_EAST = 2604,
+ SPR_TINYHQ_WEST = 2605,
+ SPR_TINYHQ_SOUTH = 2606,
+ SPR_SMALLHQ_NORTH = 2607,
+ SPR_SMALLHQ_EAST = 2608,
+ SPR_SMALLHQ_WEST = 2609,
+ SPR_SMALLHQ_SOUTH = 2610,
+ SPR_MEDIUMHQ_NORTH = 2611,
+ SPR_MEDIUMHQ_NORTH_WALL = 2612,
+ SPR_MEDIUMHQ_EAST = 2613,
+ SPR_MEDIUMHQ_EAST_WALL = 2614,
+ SPR_MEDIUMHQ_WEST = 2615,
+ SPR_MEDIUMHQ_WEST_WALL = 2616, //very tiny piece of wall
+ SPR_MEDIUMHQ_SOUTH = 2617,
+ SPR_LARGEHQ_NORTH_GROUND = 2618,
+ SPR_LARGEHQ_NORTH_BUILD = 2619,
+ SPR_LARGEHQ_EAST_GROUND = 2620,
+ SPR_LARGEHQ_EAST_BUILD = 2621,
+ SPR_LARGEHQ_WEST_GROUND = 2622,
+ SPR_LARGEHQ_WEST_BUILD = 2623,
+ SPR_LARGEHQ_SOUTH = 2624,
+ SPR_HUGEHQ_NORTH_GROUND = 2625,
+ SPR_HUGEHQ_NORTH_BUILD = 2626,
+ SPR_HUGEHQ_EAST_GROUND = 2627,
+ SPR_HUGEHQ_EAST_BUILD = 2628,
+ SPR_HUGEHQ_WEST_GROUND = 2629,
+ SPR_HUGEHQ_WEST_BUILD = 2630,
+ SPR_HUGEHQ_SOUTH = 2631,
+ SPR_CONCRETE_GROUND = 1420,
+ SPR_STATUE_COMPANY = 2632,
+ SPR_BOUGHT_LAND = 4790,
+
+ /* sprites for rail and rail stations*/
+ SPR_RAIL_SNOW_OFFSET = 26,
+ SPR_MONO_SNOW_OFFSET = 26,
+ SPR_MGLV_SNOW_OFFSET = 26,
+
+ SPR_RAIL_SINGLE_Y = 1005,
+ SPR_RAIL_SINGLE_X = 1006,
+ SPR_RAIL_SINGLE_NORTH = 1007,
+ SPR_RAIL_SINGLE_SOUTH = 1008,
+ SPR_RAIL_SINGLE_EAST = 1009,
+ SPR_RAIL_SINGLE_WEST = 1010,
+ SPR_RAIL_TRACK_Y = 1011,
+ SPR_RAIL_TRACK_X = 1012,
+ SPR_RAIL_TRACK_BASE = 1018,
+ SPR_RAIL_TRACK_N_S = 1035,
+ SPR_RAIL_TRACK_Y_SNOW = 1037,
+ SPR_RAIL_TRACK_X_SNOW = 1038,
+ SPR_RAIL_DEPOT_SE_1 = 1063,
+ SPR_RAIL_DEPOT_SE_2 = 1064,
+ SPR_RAIL_DEPOT_SW_1 = 1065,
+ SPR_RAIL_DEPOT_SW_2 = 1066,
+ SPR_RAIL_DEPOT_NE = 1067,
+ SPR_RAIL_DEPOT_NW = 1068,
+ SPR_RAIL_PLATFORM_Y_FRONT = 1069,
+ SPR_RAIL_PLATFORM_X_REAR = 1070,
+ SPR_RAIL_PLATFORM_Y_REAR = 1071,
+ SPR_RAIL_PLATFORM_X_FRONT = 1072,
+ SPR_RAIL_PLATFORM_BUILDING_X = 1073,
+ SPR_RAIL_PLATFORM_BUILDING_Y = 1074,
+ SPR_RAIL_PLATFORM_PILLARS_Y_FRONT = 1075,
+ SPR_RAIL_PLATFORM_PILLARS_X_REAR = 1076,
+ SPR_RAIL_PLATFORM_PILLARS_Y_REAR = 1077,
+ SPR_RAIL_PLATFORM_PILLARS_X_FRONT = 1078,
+ SPR_RAIL_ROOF_STRUCTURE_X_TILE_A = 1079, //First half of the roof structure
+ SPR_RAIL_ROOF_STRUCTURE_Y_TILE_A = 1080,
+ SPR_RAIL_ROOF_STRUCTURE_X_TILE_B = 1081, //Second half of the roof structure
+ SPR_RAIL_ROOF_STRUCTURE_Y_TILE_B = 1082,
+ SPR_RAIL_ROOF_GLASS_X_TILE_A = 1083, //First half of the roof glass
+ SPR_RAIL_ROOF_GLASS_Y_TILE_A = 1084,
+ SPR_RAIL_ROOF_GLASS_X_TILE_B = 1085, //second half of the roof glass
+ SPR_RAIL_ROOF_GLASS_Y_TILE_B = 1086,
+ SPR_MONO_SINGLE_Y = 1087,
+ SPR_MONO_SINGLE_X = 1088,
+ SPR_MONO_SINGLE_NORTH = 1089,
+ SPR_MONO_SINGLE_SOUTH = 1090,
+ SPR_MONO_SINGLE_EAST = 1091,
+ SPR_MONO_SINGLE_WEST = 1092,
+ SPR_MONO_TRACK_Y = 1093,
+ SPR_MONO_TRACK_BASE = 1100,
+ SPR_MONO_TRACK_N_S = 1117,
+ SPR_MGLV_SINGLE_Y = 1169,
+ SPR_MGLV_SINGLE_X = 1170,
+ SPR_MGLV_SINGLE_NORTH = 1171,
+ SPR_MGLV_SINGLE_SOUTH = 1172,
+ SPR_MGLV_SINGLE_EAST = 1173,
+ SPR_MGLV_SINGLE_WEST = 1174,
+ SPR_MGLV_TRACK_Y = 1175,
+ SPR_MGLV_TRACK_BASE = 1182,
+ SPR_MGLV_TRACK_N_S = 1199,
+ SPR_WAYPOINT_X_1 = SPR_OPENTTD_BASE + 15,
+ SPR_WAYPOINT_X_2 = SPR_OPENTTD_BASE + 16,
+ SPR_WAYPOINT_Y_1 = SPR_OPENTTD_BASE + 17,
+ SPR_WAYPOINT_Y_2 = SPR_OPENTTD_BASE + 18,
+ OFFSET_TILEH_IMPOSSIBLE = 0,
+ OFFSET_TILEH_1 = 14,
+ OFFSET_TILEH_2 = 15,
+ OFFSET_TILEH_3 = 22,
+ OFFSET_TILEH_4 = 13,
+ OFFSET_TILEH_6 = 21,
+ OFFSET_TILEH_7 = 17,
+ OFFSET_TILEH_8 = 12,
+ OFFSET_TILEH_9 = 23,
+ OFFSET_TILEH_11 = 18,
+ OFFSET_TILEH_12 = 20,
+ OFFSET_TILEH_13 = 19,
+ OFFSET_TILEH_14 = 16,
+
+ /* Elrail stuff */
+ /* Wires. First identifier is the direction of the track, second is the required placement of the pylon.
+ * "short" denotes a wire that requires a pylon on each end. Third identifier is the direction of the slope
+ * (in positive coordinate direction) */
+ SPR_WIRE_X_SHORT = SPR_ELRAIL_BASE + 3,
+ SPR_WIRE_Y_SHORT = SPR_ELRAIL_BASE + 4,
+ SPR_WIRE_EW_SHORT = SPR_ELRAIL_BASE + 5,
+ SPR_WIRE_NS_SHORT = SPR_ELRAIL_BASE + 6,
+ SPR_WIRE_X_SHORT_DOWN = SPR_ELRAIL_BASE + 7,
+ SPR_WIRE_Y_SHORT_UP = SPR_ELRAIL_BASE + 8,
+ SPR_WIRE_X_SHORT_UP = SPR_ELRAIL_BASE + 9,
+ SPR_WIRE_Y_SHORT_DOWN = SPR_ELRAIL_BASE + 10,
+
+ SPR_WIRE_X_SW = SPR_ELRAIL_BASE + 11,
+ SPR_WIRE_Y_SE = SPR_ELRAIL_BASE + 12,
+ SPR_WIRE_EW_E = SPR_ELRAIL_BASE + 13,
+ SPR_WIRE_NS_S = SPR_ELRAIL_BASE + 14,
+ SPR_WIRE_X_SW_DOWN = SPR_ELRAIL_BASE + 15,
+ SPR_WIRE_Y_SE_UP = SPR_ELRAIL_BASE + 16,
+ SPR_WIRE_X_SW_UP = SPR_ELRAIL_BASE + 17,
+ SPR_WIRE_Y_SE_DOWN = SPR_ELRAIL_BASE + 18,
+
+ SPR_WIRE_X_NE = SPR_ELRAIL_BASE + 19,
+ SPR_WIRE_Y_NW = SPR_ELRAIL_BASE + 20,
+ SPR_WIRE_EW_W = SPR_ELRAIL_BASE + 21,
+ SPR_WIRE_NS_N = SPR_ELRAIL_BASE + 22,
+ SPR_WIRE_X_NE_DOWN = SPR_ELRAIL_BASE + 23,
+ SPR_WIRE_Y_NW_UP = SPR_ELRAIL_BASE + 24,
+ SPR_WIRE_X_NE_UP = SPR_ELRAIL_BASE + 25,
+ SPR_WIRE_Y_NW_DOWN = SPR_ELRAIL_BASE + 26,
+
+ /* Tunnel entries */
+ SPR_WIRE_DEPOT_SW = SPR_ELRAIL_BASE + 27,
+ SPR_WIRE_DEPOT_NW = SPR_ELRAIL_BASE + 28,
+ SPR_WIRE_DEPOT_NE = SPR_ELRAIL_BASE + 29,
+ SPR_WIRE_DEPOT_SE = SPR_ELRAIL_BASE + 30,
+
+
+ /* Pylons, first identifier is the direction of the track, second the placement relative to the track */
+ SPR_PYLON_Y_NE = SPR_ELRAIL_BASE + 31,
+ SPR_PYLON_Y_SW = SPR_ELRAIL_BASE + 32,
+ SPR_PYLON_X_NW = SPR_ELRAIL_BASE + 33,
+ SPR_PYLON_X_SE = SPR_ELRAIL_BASE + 34,
+ SPR_PYLON_EW_N = SPR_ELRAIL_BASE + 35,
+ SPR_PYLON_EW_S = SPR_ELRAIL_BASE + 36,
+ SPR_PYLON_NS_W = SPR_ELRAIL_BASE + 37,
+ SPR_PYLON_NS_E = SPR_ELRAIL_BASE + 38,
+
+ /* sprites for airports and airfields*/
+ /* Small airports are AIRFIELD, everything else is AIRPORT */
+ SPR_HELIPORT = 2633,
+ SPR_AIRPORT_APRON = 2634,
+ SPR_AIRPORT_AIRCRAFT_STAND = 2635,
+ SPR_AIRPORT_TAXIWAY_NS_WEST = 2636,
+ SPR_AIRPORT_TAXIWAY_EW_SOUTH = 2637,
+ SPR_AIRPORT_TAXIWAY_XING_SOUTH = 2638,
+ SPR_AIRPORT_TAXIWAY_XING_WEST = 2639,
+ SPR_AIRPORT_TAXIWAY_NS_CTR = 2640,
+ SPR_AIRPORT_TAXIWAY_XING_EAST = 2641,
+ SPR_AIRPORT_TAXIWAY_NS_EAST = 2642,
+ SPR_AIRPORT_TAXIWAY_EW_NORTH = 2643,
+ SPR_AIRPORT_TAXIWAY_EW_CTR = 2644,
+ SPR_AIRPORT_RUNWAY_EXIT_A = 2645,
+ SPR_AIRPORT_RUNWAY_EXIT_B = 2646,
+ SPR_AIRPORT_RUNWAY_EXIT_C = 2647,
+ SPR_AIRPORT_RUNWAY_EXIT_D = 2648,
+ SPR_AIRPORT_RUNWAY_END = 2649, //We should have different ends
+ SPR_AIRPORT_TERMINAL_A = 2650,
+ SPR_AIRPORT_TOWER = 2651,
+ SPR_AIRPORT_CONCOURSE = 2652,
+ SPR_AIRPORT_TERMINAL_B = 2653,
+ SPR_AIRPORT_TERMINAL_C = 2654,
+ SPR_AIRPORT_HANGAR_FRONT = 2655,
+ SPR_AIRPORT_HANGAR_REAR = 2656,
+ SPR_AIRFIELD_HANGAR_FRONT = 2657,
+ SPR_AIRFIELD_HANGAR_REAR = 2658,
+ SPR_AIRPORT_JETWAY_1 = 2659,
+ SPR_AIRPORT_JETWAY_2 = 2660,
+ SPR_AIRPORT_JETWAY_3 = 2661,
+ SPR_AIRPORT_PASSENGER_TUNNEL = 2662,
+ SPR_AIRPORT_FENCE_Y = 2663,
+ SPR_AIRPORT_FENCE_X = 2664,
+ SPR_AIRFIELD_TERM_A = 2665,
+ SPR_AIRFIELD_TERM_B = 2666,
+ SPR_AIRFIELD_TERM_C_GROUND = 2667,
+ SPR_AIRFIELD_TERM_C_BUILD = 2668,
+ SPR_AIRFIELD_APRON_A = 2669,
+ SPR_AIRFIELD_APRON_B = 2670,
+ SPR_AIRFIELD_APRON_C = 2671,
+ SPR_AIRFIELD_APRON_D = 2672,
+ SPR_AIRFIELD_RUNWAY_NEAR_END = 2673,
+ SPR_AIRFIELD_RUNWAY_MIDDLE = 2674,
+ SPR_AIRFIELD_RUNWAY_FAR_END = 2675,
+ SPR_AIRFIELD_WIND_1 = 2676,
+ SPR_AIRFIELD_WIND_2 = 2677,
+ SPR_AIRFIELD_WIND_3 = 2678,
+ SPR_AIRFIELD_WIND_4 = 2679,
+ SPR_AIRPORT_RADAR_1 = 2680,
+ SPR_AIRPORT_RADAR_2 = 2681,
+ SPR_AIRPORT_RADAR_3 = 2682,
+ SPR_AIRPORT_RADAR_4 = 2683,
+ SPR_AIRPORT_RADAR_5 = 2684,
+ SPR_AIRPORT_RADAR_6 = 2685,
+ SPR_AIRPORT_RADAR_7 = 2686,
+ SPR_AIRPORT_RADAR_8 = 2687,
+ SPR_AIRPORT_RADAR_9 = 2688,
+ SPR_AIRPORT_RADAR_A = 2689,
+ SPR_AIRPORT_RADAR_B = 2690,
+ SPR_AIRPORT_RADAR_C = 2691,
+ SPR_AIRPORT_HELIPAD = SPR_OPENTTD_BASE + 28,
+ SPR_AIRPORT_HELIDEPOT_OFFICE = 2095,
+
+ /* Road Stops */
+ /* Road stops have a ground tile and 3 buildings, one on each side
+ * (except the side where the entry is). These are marked _A _B and _C */
+ SPR_BUS_STOP_NE_GROUND = 2692,
+ SPR_BUS_STOP_SE_GROUND = 2693,
+ SPR_BUS_STOP_SW_GROUND = 2694,
+ SPR_BUS_STOP_NW_GROUND = 2695,
+ SPR_BUS_STOP_NE_BUILD_A = 2696,
+ SPR_BUS_STOP_SE_BUILD_A = 2697,
+ SPR_BUS_STOP_SW_BUILD_A = 2698,
+ SPR_BUS_STOP_NW_BUILD_A = 2699,
+ SPR_BUS_STOP_NE_BUILD_B = 2700,
+ SPR_BUS_STOP_SE_BUILD_B = 2701,
+ SPR_BUS_STOP_SW_BUILD_B = 2702,
+ SPR_BUS_STOP_NW_BUILD_B = 2703,
+ SPR_BUS_STOP_NE_BUILD_C = 2704,
+ SPR_BUS_STOP_SE_BUILD_C = 2705,
+ SPR_BUS_STOP_SW_BUILD_C = 2706,
+ SPR_BUS_STOP_NW_BUILD_C = 2707,
+ SPR_TRUCK_STOP_NE_GROUND = 2708,
+ SPR_TRUCK_STOP_SE_GROUND = 2709,
+ SPR_TRUCK_STOP_SW_GROUND = 2710,
+ SPR_TRUCK_STOP_NW_GROUND = 2711,
+ SPR_TRUCK_STOP_NE_BUILD_A = 2712,
+ SPR_TRUCK_STOP_SE_BUILD_A = 2713,
+ SPR_TRUCK_STOP_SW_BUILD_A = 2714,
+ SPR_TRUCK_STOP_NW_BUILD_A = 2715,
+ SPR_TRUCK_STOP_NE_BUILD_B = 2716,
+ SPR_TRUCK_STOP_SE_BUILD_B = 2717,
+ SPR_TRUCK_STOP_SW_BUILD_B = 2718,
+ SPR_TRUCK_STOP_NW_BUILD_B = 2719,
+ SPR_TRUCK_STOP_NE_BUILD_C = 2720,
+ SPR_TRUCK_STOP_SE_BUILD_C = 2721,
+ SPR_TRUCK_STOP_SW_BUILD_C = 2722,
+ SPR_TRUCK_STOP_NW_BUILD_C = 2723,
+
+ /* Sprites for docks */
+ /* Docks consist of two tiles, the sloped one and the flat one */
+ SPR_DOCK_SLOPE_NE = 2727,
+ SPR_DOCK_SLOPE_SE = 2728,
+ SPR_DOCK_SLOPE_SW = 2729,
+ SPR_DOCK_SLOPE_NW = 2730,
+ SPR_DOCK_FLAT_X = 2731, //for NE and SW
+ SPR_DOCK_FLAT_Y = 2732, //for NW and SE
+ SPR_BUOY = 4076, //XXX this sucks, because it displays wrong stuff on canals
+
+ /* Sprites for road */
+ SPR_ROAD_Y = 1332,
+ SPR_ROAD_X = 1333,
+ SPR_ROAD_Y_SNOW = 1351,
+ SPR_ROAD_X_SNOW = 1352,
+
+ SPR_EXCAVATION_X = 1414,
+ SPR_EXCAVATION_Y = 1415,
+
+ /* Landscape sprites */
+ SPR_FLAT_BARE_LAND = 3924,
+ SPR_FLAT_1_THIRD_GRASS_TILE = 3943,
+ SPR_FLAT_2_THIRD_GRASS_TILE = 3962,
+ SPR_FLAT_GRASS_TILE = 3981,
+ SPR_FLAT_ROUGH_LAND = 4000,
+ SPR_FLAT_ROUGH_LAND_1 = 4019,
+ SPR_FLAT_ROUGH_LAND_2 = 4020,
+ SPR_FLAT_ROUGH_LAND_3 = 4021,
+ SPR_FLAT_ROUGH_LAND_4 = 4022,
+ SPR_FLAT_ROCKY_LAND_1 = 4023,
+ SPR_FLAT_ROCKY_LAND_2 = 4042,
+ SPR_FLAT_WATER_TILE = 4061,
+ SPR_FLAT_1_QUART_SNOWY_TILE = 4493,
+ SPR_FLAT_2_QUART_SNOWY_TILE = 4512,
+ SPR_FLAT_3_QUART_SNOWY_TILE = 4531,
+ SPR_FLAT_SNOWY_TILE = 4550,
+
+ /* Hedge, Farmland-fence sprites */
+ SPR_HEDGE_BUSHES = 4090,
+ SPR_HEDGE_BUSHES_WITH_GATE = 4096,
+ SPR_HEDGE_FENCE = 4102,
+ SPR_HEDGE_BLOOMBUSH_YELLOW = 4108,
+ SPR_HEDGE_BLOOMBUSH_RED = 4114,
+ SPR_HEDGE_STONE = 4120,
+
+ /* Farmland sprites, only flat tiles listed, various stages */
+ SPR_FARMLAND_BARE = 4126,
+ SPR_FARMLAND_STATE_1 = 4145,
+ SPR_FARMLAND_STATE_2 = 4164,
+ SPR_FARMLAND_STATE_3 = 4183,
+ SPR_FARMLAND_STATE_4 = 4202,
+ SPR_FARMLAND_STATE_5 = 4221,
+ SPR_FARMLAND_STATE_6 = 4240,
+ SPR_FARMLAND_STATE_7 = 4259,
+ SPR_FARMLAND_HAYPACKS = 4278,
+
+ /* Shores */
+ SPR_NO_SHORE = 0, //used for tileh which have no shore
+ SPR_SHORE_TILEH_4 = 4062,
+ SPR_SHORE_TILEH_1 = 4063,
+ SPR_SHORE_TILEH_2 = 4064,
+ SPR_SHORE_TILEH_8 = 4065,
+ SPR_SHORE_TILEH_6 = 4066,
+ SPR_SHORE_TILEH_12 = 4067,
+ SPR_SHORE_TILEH_3 = 4068,
+ SPR_SHORE_TILEH_9 = 4069,
+
+ /* Water-related sprites */
+ SPR_SHIP_DEPOT_SE_FRONT = 4070,
+ SPR_SHIP_DEPOT_SW_FRONT = 4071,
+ SPR_SHIP_DEPOT_NW = 4072,
+ SPR_SHIP_DEPOT_NE = 4073,
+ SPR_SHIP_DEPOT_SE_REAR = 4074,
+ SPR_SHIP_DEPOT_SW_REAR = 4075,
+ //here come sloped water sprites
+ SPR_WATER_SLOPE_Y_UP = SPR_CANALS_BASE + 5, //Water flowing negative Y direction
+ SPR_WATER_SLOPE_X_DOWN = SPR_CANALS_BASE + 6, //positive X
+ SPR_WATER_SLOPE_X_UP = SPR_CANALS_BASE + 7, //negative X
+ SPR_WATER_SLOPE_Y_DOWN = SPR_CANALS_BASE + 8, //positive Y
+ //sprites for the shiplifts
+ //there are 4 kinds of shiplifts, each of them is 3 tiles long.
+ //the four kinds are running in the X and Y direction and
+ //are "lowering" either in the "+" or the "-" direction.
+ //the three tiles are the center tile (where the slope is)
+ //and a bottom and a top tile
+ SPR_SHIPLIFT_Y_UP_CENTER_REAR = SPR_CANALS_BASE + 9,
+ SPR_SHIPLIFT_X_DOWN_CENTER_REAR = SPR_CANALS_BASE + 10,
+ SPR_SHIPLIFT_X_UP_CENTER_REAR = SPR_CANALS_BASE + 11,
+ SPR_SHIPLIFT_Y_DOWN_CENTER_REAR = SPR_CANALS_BASE + 12,
+ SPR_SHIPLIFT_Y_UP_CENTER_FRONT = SPR_CANALS_BASE + 13,
+ SPR_SHIPLIFT_X_DOWN_CENTER_FRONT = SPR_CANALS_BASE + 14,
+ SPR_SHIPLIFT_X_UP_CENTER_FRONT = SPR_CANALS_BASE + 15,
+ SPR_SHIPLIFT_Y_DOWN_CENTER_FRONT = SPR_CANALS_BASE + 16,
+ SPR_SHIPLIFT_Y_UP_BOTTOM_REAR = SPR_CANALS_BASE + 17,
+ SPR_SHIPLIFT_X_DOWN_BOTTOM_REAR = SPR_CANALS_BASE + 18,
+ SPR_SHIPLIFT_X_UP_BOTTOM_REAR = SPR_CANALS_BASE + 19,
+ SPR_SHIPLIFT_Y_DOWN_BOTTOM_REAR = SPR_CANALS_BASE + 20,
+ SPR_SHIPLIFT_Y_UP_BOTTOM_FRONT = SPR_CANALS_BASE + 21,
+ SPR_SHIPLIFT_X_DOWN_BOTTOM_FRONT = SPR_CANALS_BASE + 22,
+ SPR_SHIPLIFT_X_UP_BOTTOM_FRONT = SPR_CANALS_BASE + 23,
+ SPR_SHIPLIFT_Y_DOWN_BOTTOM_FRONT = SPR_CANALS_BASE + 24,
+ SPR_SHIPLIFT_Y_UP_TOP_REAR = SPR_CANALS_BASE + 25,
+ SPR_SHIPLIFT_X_DOWN_TOP_REAR = SPR_CANALS_BASE + 26,
+ SPR_SHIPLIFT_X_UP_TOP_REAR = SPR_CANALS_BASE + 27,
+ SPR_SHIPLIFT_Y_DOWN_TOP_REAR = SPR_CANALS_BASE + 28,
+ SPR_SHIPLIFT_Y_UP_TOP_FRONT = SPR_CANALS_BASE + 29,
+ SPR_SHIPLIFT_X_DOWN_TOP_FRONT = SPR_CANALS_BASE + 30,
+ SPR_SHIPLIFT_X_UP_TOP_FRONT = SPR_CANALS_BASE + 31,
+ SPR_SHIPLIFT_Y_DOWN_TOP_FRONT = SPR_CANALS_BASE + 32,
+
+ /* Sprites for tunnels and bridges */
+ SPR_TUNNEL_ENTRY_REAR_RAIL = 2365,
+ SPR_TUNNEL_ENTRY_REAR_MONO = 2373,
+ SPR_TUNNEL_ENTRY_REAR_MAGLEV = 2381,
+ SPR_TUNNEL_ENTRY_REAR_ROAD = 2389,
+
+ /* Level crossings */
+ SPR_CROSSING_OFF_X_RAIL = 1370,
+ SPR_CROSSING_OFF_X_MONO = 1382,
+ SPR_CROSSING_OFF_X_MAGLEV = 1394,
+
+ /* bridge type sprites */
+ SPR_PILLARS_BASE = SPR_OPENTTD_BASE + 30,
+
+ /* Wooden bridge (type 0) */
+ SPR_BTWDN_RAIL_Y_REAR = 2545,
+ SPR_BTWDN_RAIL_X_REAR = 2546,
+ SPR_BTWDN_ROAD_Y_REAR = 2547,
+ SPR_BTWDN_ROAD_X_REAR = 2548,
+ SPR_BTWDN_Y_FRONT = 2549,
+ SPR_BTWDN_X_FRONT = 2550,
+ SPR_BTWDN_Y_PILLAR = 2551,
+ SPR_BTWDN_X_PILLAR = 2552,
+ SPR_BTWDN_MONO_Y_REAR = 4360,
+ SPR_BTWDN_MONO_X_REAR = 4361,
+ SPR_BTWDN_MGLV_Y_REAR = 4400,
+ SPR_BTWDN_MGLV_X_REAR = 4401,
+ /* ramps */
+ SPR_BTWDN_ROAD_RAMP_Y_DOWN = 2529,
+ SPR_BTWDN_ROAD_RAMP_X_DOWN = 2530,
+ SPR_BTWDN_ROAD_RAMP_X_UP = 2531, //for some weird reason the order is swapped
+ SPR_BTWDN_ROAD_RAMP_Y_UP = 2532, //between X and Y.
+ SPR_BTWDN_ROAD_Y_SLOPE_UP = 2533,
+ SPR_BTWDN_ROAD_X_SLOPE_UP = 2534,
+ SPR_BTWDN_ROAD_Y_SLOPE_DOWN = 2535,
+ SPR_BTWDN_ROAD_X_SLOPE_DOWN = 2536,
+ SPR_BTWDN_RAIL_RAMP_Y_DOWN = 2537,
+ SPR_BTWDN_RAIL_RAMP_X_DOWN = 2538,
+ SPR_BTWDN_RAIL_RAMP_X_UP = 2539, //for some weird reason the order is swapped
+ SPR_BTWDN_RAIL_RAMP_Y_UP = 2540, //between X and Y.
+ SPR_BTWDN_RAIL_Y_SLOPE_UP = 2541,
+ SPR_BTWDN_RAIL_X_SLOPE_UP = 2542,
+ SPR_BTWDN_RAIL_Y_SLOPE_DOWN = 2543,
+ SPR_BTWDN_RAIL_X_SLOPE_DOWN = 2544,
+ SPR_BTWDN_MONO_RAMP_Y_DOWN = 4352,
+ SPR_BTWDN_MONO_RAMP_X_DOWN = 4353,
+ SPR_BTWDN_MONO_RAMP_X_UP = 4354, //for some weird reason the order is swapped
+ SPR_BTWDN_MONO_RAMP_Y_UP = 4355, //between X and Y.
+ SPR_BTWDN_MONO_Y_SLOPE_UP = 4356,
+ SPR_BTWDN_MONO_X_SLOPE_UP = 4357,
+ SPR_BTWDN_MONO_Y_SLOPE_DOWN = 4358,
+ SPR_BTWDN_MONO_X_SLOPE_DOWN = 4359,
+ SPR_BTWDN_MGLV_RAMP_Y_DOWN = 4392,
+ SPR_BTWDN_MGLV_RAMP_X_DOWN = 4393,
+ SPR_BTWDN_MGLV_RAMP_X_UP = 4394, //for some weird reason the order is swapped
+ SPR_BTWDN_MGLV_RAMP_Y_UP = 4395, //between X and Y.
+ SPR_BTWDN_MGLV_Y_SLOPE_UP = 4396,
+ SPR_BTWDN_MGLV_X_SLOPE_UP = 4397,
+ SPR_BTWDN_MGLV_Y_SLOPE_DOWN = 4398,
+ SPR_BTWDN_MGLV_X_SLOPE_DOWN = 4399,
+
+ /* Steel Girder with arches */
+ /* BTSGA == Bridge Type Steel Girder Arched */
+ /* This is bridge type number 2 */
+ SPR_BTSGA_RAIL_X_REAR = 2499,
+ SPR_BTSGA_RAIL_Y_REAR = 2500,
+ SPR_BTSGA_ROAD_X_REAR = 2501,
+ SPR_BTSGA_ROAD_Y_REAR = 2502,
+ SPR_BTSGA_X_FRONT = 2503,
+ SPR_BTSGA_Y_FRONT = 2504,
+ SPR_BTSGA_X_PILLAR = 2505,
+ SPR_BTSGA_Y_PILLAR = 2606,
+ SPR_BTSGA_MONO_X_REAR = 4324,
+ SPR_BTSGA_MONO_Y_REAR = 4325,
+ SPR_BTSGA_MGLV_X_REAR = 4364,
+ SPR_BTSGA_MGLV_Y_REAR = 4365,
+
+ /* BTSUS == Suspension bridge */
+ /* TILE_* denotes the different tiles a suspension bridge
+ * can have
+ * TILE_A and TILE_B are the "beginnings" and "ends" of the
+ * suspension system. they have small rectangluar endcaps
+ * TILE_C and TILE_D look almost identical to TILE_A and
+ * TILE_B, but they do not have the "endcaps". They form the
+ * middle part
+ * TILE_E is a condensed configuration of two pillars. while they
+ * are usually 2 pillars apart, they only have 1 pillar separation
+ * here
+ * TILE_F is an extended configuration of pillars. they are
+ * plugged in when pillars should be 3 tiles apart
+ */
+ SPR_BTSUS_ROAD_Y_REAR_TILE_A = 2453,
+ SPR_BTSUS_ROAD_Y_REAR_TILE_B = 2454,
+ SPR_BTSUS_Y_FRONT_TILE_A = 2455,
+ SPR_BTSUS_Y_FRONT_TILE_B = 2456,
+ SPR_BTSUS_ROAD_Y_REAR_TILE_D = 2457,
+ SPR_BTSUS_ROAD_Y_REAR_TILE_C = 2458,
+ SPR_BTSUS_Y_FRONT_TILE_D = 2459,
+ SPR_BTSUS_Y_FRONT_TILE_C = 2460,
+ SPR_BTSUS_ROAD_X_REAR_TILE_A = 2461,
+ SPR_BTSUS_ROAD_X_REAR_TILE_B = 2462,
+ SPR_BTSUS_X_FRONT_TILE_A = 2463,
+ SPR_BTSUS_X_FRONT_TILE_B = 2464,
+ SPR_BTSUS_ROAD_X_TILE_D = 2465,
+ SPR_BTSUS_ROAD_X_TILE_C = 2466,
+ SPR_BTSUS_X_FRONT_TILE_D = 2467,
+ SPR_BTSUS_X_FRONT_TILE_C = 2468,
+ SPR_BTSUS_RAIL_Y_REAR_TILE_A = 2469,
+ SPR_BTSUS_RAIL_Y_REAR_TILE_B = 2470,
+ SPR_BTSUS_RAIL_Y_REAR_TILE_D = 2471,
+ SPR_BTSUS_RAIL_Y_REAR_TILE_C = 2472,
+ SPR_BTSUS_RAIL_X_REAR_TILE_A = 2473,
+ SPR_BTSUS_RAIL_X_REAR_TILE_B = 2474,
+ SPR_BTSUS_RAIL_X_REAR_TILE_D = 2475,
+ SPR_BTSUS_RAIL_X_REAR_TILE_C = 2476,
+ SPR_BTSUS_Y_PILLAR_TILE_A = 2477,
+ SPR_BTSUS_Y_PILLAR_TILE_B = 2478,
+ SPR_BTSUS_Y_PILLAR_TILE_D = 2479,
+ SPR_BTSUS_Y_PILLAR_TILE_C = 2480,
+ SPR_BTSUS_X_PILLAR_TILE_A = 2481,
+ SPR_BTSUS_X_PILLAR_TILE_B = 2482,
+ SPR_BTSUS_X_PILLAR_TILE_D = 2483,
+ SPR_BTSUS_X_PILLAR_TILE_C = 2484,
+ SPR_BTSUS_RAIL_Y_REAR_TILE_E = 2485,
+ SPR_BTSUS_RAIL_X_REAR_TILE_E = 2486,
+ SPR_BTSUS_ROAD_Y_REAR_TILE_E = 2487,
+ SPR_BTSUS_ROAD_X_REAR_TILE_E = 2488,
+ SPR_BTSUS_Y_FRONT_TILE_E = 2489,
+ SPR_BTSUS_X_FRONT_TILE_E = 2490,
+ SPR_BTSUS_Y_PILLAR_TILE_E = 2491,
+ SPR_BTSUS_X_PILLAR_TILE_E = 2492,
+ SPR_BTSUS_RAIL_X_REAR_TILE_F = 2493,
+ SPR_BTSUS_RAIL_Y_REAR_TILE_F = 2494,
+ SPR_BTSUS_ROAD_X_REAR_TILE_F = 2495,
+ SPR_BTSUS_ROAD_Y_REAR_TILE_F = 2496,
+ SPR_BTSUS_X_FRONT = 2497,
+ SPR_BTSUS_Y_FRONT = 2498,
+ SPR_BTSUS_MONO_Y_REAR_TILE_A = 4334,
+ SPR_BTSUS_MONO_Y_REAR_TILE_B = 4335,
+ SPR_BTSUS_MONO_Y_REAR_TILE_D = 4336,
+ SPR_BTSUS_MONO_Y_REAR_TILE_C = 4337,
+ SPR_BTSUS_MONO_X_REAR_TILE_A = 4338,
+ SPR_BTSUS_MONO_X_REAR_TILE_B = 4339,
+ SPR_BTSUS_MONO_X_REAR_TILE_D = 4340,
+ SPR_BTSUS_MONO_X_REAR_TILE_C = 4341,
+ SPR_BTSUS_MONO_Y_REAR_TILE_E = 4342,
+ SPR_BTSUS_MONO_X_REAR_TILE_E = 4343,
+ SPR_BTSUS_MONO_X_REAR_TILE_F = 4344,
+ SPR_BTSUS_MONO_Y_REAR_TILE_F = 4345,
+ SPR_BTSUS_MGLV_Y_REAR_TILE_A = 4374,
+ SPR_BTSUS_MGLV_Y_REAR_TILE_B = 4375,
+ SPR_BTSUS_MGLV_Y_REAR_TILE_D = 4376,
+ SPR_BTSUS_MGLV_Y_REAR_TILE_C = 4377,
+ SPR_BTSUS_MGLV_X_REAR_TILE_A = 4378,
+ SPR_BTSUS_MGLV_X_REAR_TILE_B = 4379,
+ SPR_BTSUS_MGLV_X_REAR_TILE_D = 4380,
+ SPR_BTSUS_MGLV_X_REAR_TILE_C = 4381,
+ SPR_BTSUS_MGLV_Y_REAR_TILE_E = 4382,
+ SPR_BTSUS_MGLV_X_REAR_TILE_E = 4383,
+ SPR_BTSUS_MGLV_X_REAR_TILE_F = 4384,
+ SPR_BTSUS_MGLV_Y_REAR_TILE_F = 4385,
+
+ /* cantilever bridges */
+ /* They have three different kinds of tiles:
+ * END(ing), MID(dle), BEG(ginning) */
+ SPR_BTCAN_RAIL_X_BEG = 2507,
+ SPR_BTCAN_RAIL_X_MID = 2508,
+ SPR_BTCAN_RAIL_X_END = 2509,
+ SPR_BTCAN_RAIL_Y_END = 2510,
+ SPR_BTCAN_RAIL_Y_MID = 2511,
+ SPR_BTCAN_RAIL_Y_BEG = 2512,
+ SPR_BTCAN_ROAD_X_BEG = 2513,
+ SPR_BTCAN_ROAD_X_MID = 2514,
+ SPR_BTCAN_ROAD_X_END = 2515,
+ SPR_BTCAN_ROAD_Y_END = 2516,
+ SPR_BTCAN_ROAD_Y_MID = 2517,
+ SPR_BTCAN_ROAD_Y_BEG = 2518,
+ SPR_BTCAN_X_FRONT_BEG = 2519,
+ SPR_BTCAN_X_FRONT_MID = 2520,
+ SPR_BTCAN_X_FRONT_END = 2521,
+ SPR_BTCAN_Y_FRONT_END = 2522,
+ SPR_BTCAN_Y_FRONT_MID = 2523,
+ SPR_BTCAN_Y_FRONT_BEG = 2524,
+ SPR_BTCAN_X_PILLAR_BEG = 2525,
+ SPR_BTCAN_X_PILLAR_MID = 2526,
+ SPR_BTCAN_Y_PILLAR_MID = 2527,
+ SPR_BTCAN_Y_PILLAR_BEG = 2528,
+ SPR_BTCAN_MONO_X_BEG = 4346,
+ SPR_BTCAN_MONO_X_MID = 4347,
+ SPR_BTCAN_MONO_X_END = 4348,
+ SPR_BTCAN_MONO_Y_END = 4349,
+ SPR_BTCAN_MONO_Y_MID = 4350,
+ SPR_BTCAN_MONO_Y_BEG = 4351,
+ SPR_BTCAN_MGLV_X_BEG = 4386,
+ SPR_BTCAN_MGLV_X_MID = 4387,
+ SPR_BTCAN_MGLV_X_END = 4388,
+ SPR_BTCAN_MGLV_Y_END = 4389,
+ SPR_BTCAN_MGLV_Y_MID = 4390,
+ SPR_BTCAN_MGLV_Y_BEG = 4391,
+
+ /* little concrete bridge */
+ SPR_BTCON_RAIL_X = 2493,
+ SPR_BTCON_RAIL_Y = 2494,
+ SPR_BTCON_ROAD_X = 2495,
+ SPR_BTCON_ROAD_Y = 2496,
+ SPR_BTCON_X_FRONT = 2497,
+ SPR_BTCON_Y_FRONT = 2498,
+ SPR_BTCON_X_PILLAR = 2505,
+ SPR_BTCON_Y_PILLAR = 2506,
+ SPR_BTCON_MONO_X = 4344,
+ SPR_BTCON_MONO_Y = 4345,
+ SPR_BTCON_MGLV_X = 4384,
+ SPR_BTCON_MGLV_Y = 4385,
+
+ /* little steel girder bridge */
+ SPR_BTGIR_RAIL_X = 2553,
+ SPR_BTGIR_RAIL_Y = 2554,
+ SPR_BTGIR_ROAD_X = 2555,
+ SPR_BTGIR_ROAD_Y = 2556,
+ SPR_BTGIR_X_FRONT = 2557,
+ SPR_BTGIR_Y_FRONT = 2558,
+ SPR_BTGIR_X_PILLAR = 2505,
+ SPR_BTGIR_Y_PILLAR = 2506,
+ SPR_BTGIR_MONO_X = 4362,
+ SPR_BTGIR_MONO_Y = 4363,
+ SPR_BTGIR_MGLV_X = 4402,
+ SPR_BTGIR_MGLV_Y = 4403,
+
+ /* tubular bridges */
+ /* tubular bridges have 3 kinds of tiles:
+ * a start tile (with only half a tube on the far side, marked _BEG
+ * a middle tile (full tunnel), marked _MID
+ * and an end tile (half a tube on the near side, maked _END
+ */
+ SPR_BTTUB_X_FRONT_BEG = 2559,
+ SPR_BTTUB_X_FRONT_MID = 2660,
+ SPR_BTTUB_X_FRONT_END = 2561,
+ SPR_BTTUB_Y_FRONT_END = 2562,
+ SPR_BTTUB_Y_FRONT_MID = 2563,
+ SPR_BTTUB_Y_FRONT_BEG = 2564,
+ SPR_BTTUB_X_RAIL_REAR_BEG = 2569,
+ SPR_BTTUB_X_RAIL_REAR_MID = 2570,
+ SPR_BTTUB_X_RAIL_REAR_END = 2571,
+ SPR_BTTUB_Y_RAIL_REAR_BEG = 2572,
+ SPR_BTTUB_Y_RAIL_REAR_MID = 2573,
+ SPR_BTTUB_Y_RAIL_REAR_END = 2574,
+ SPR_BTTUB_X_ROAD_REAR_BEG = 2575,
+ SPR_BTTUB_X_ROAD_REAR_MID = 2576,
+ SPR_BTTUB_X_ROAD_REAR_END = 2577,
+ SPR_BTTUB_Y_ROAD_REAR_BEG = 2578,
+ SPR_BTTUB_Y_ROAD_REAR_MID = 2579,
+ SPR_BTTUB_Y_ROAD_REAR_END = 2580,
+ SPR_BTTUB_X_MONO_REAR_BEG = 2581,
+ SPR_BTTUB_X_MONO_REAR_MID = 2582,
+ SPR_BTTUB_X_MONO_REAR_END = 2583,
+ SPR_BTTUB_Y_MONO_REAR_BEG = 2584,
+ SPR_BTTUB_Y_MONO_REAR_MID = 2585,
+ SPR_BTTUB_Y_MONO_REAR_END = 2586,
+ SPR_BTTUB_X_MGLV_REAR_BEG = 2587,
+ SPR_BTTUB_X_MGLV_REAR_MID = 2588,
+ SPR_BTTUB_X_MGLV_REAR_END = 2589,
+ SPR_BTTUB_Y_MGLV_REAR_BEG = 2590,
+ SPR_BTTUB_Y_MGLV_REAR_MID = 2591,
+ SPR_BTTUB_Y_MGLV_REAR_END = 2592,
+
+
+ /* ramps (for all bridges except wood and tubular?)*/
+ SPR_BTGEN_RAIL_X_SLOPE_DOWN = 2437,
+ SPR_BTGEN_RAIL_X_SLOPE_UP = 2438,
+ SPR_BTGEN_RAIL_Y_SLOPE_DOWN = 2439,
+ SPR_BTGEN_RAIL_Y_SLOPE_UP = 2440,
+ SPR_BTGEN_RAIL_RAMP_X_UP = 2441,
+ SPR_BTGEN_RAIL_RAMP_X_DOWN = 2442,
+ SPR_BTGEN_RAIL_RAMP_Y_UP = 2443,
+ SPR_BTGEN_RAIL_RAMP_Y_DOWN = 2444,
+ SPR_BTGEN_ROAD_X_SLOPE_DOWN = 2445,
+ SPR_BTGEN_ROAD_X_SLOPE_UP = 2446,
+ SPR_BTGEN_ROAD_Y_SLOPE_DOWN = 2447,
+ SPR_BTGEN_ROAD_Y_SLOPE_UP = 2448,
+ SPR_BTGEN_ROAD_RAMP_X_UP = 2449,
+ SPR_BTGEN_ROAD_RAMP_X_DOWN = 2450,
+ SPR_BTGEN_ROAD_RAMP_Y_UP = 2451,
+ SPR_BTGEN_ROAD_RAMP_Y_DOWN = 2452,
+ SPR_BTGEN_MONO_X_SLOPE_DOWN = 4326,
+ SPR_BTGEN_MONO_X_SLOPE_UP = 4327,
+ SPR_BTGEN_MONO_Y_SLOPE_DOWN = 4328,
+ SPR_BTGEN_MONO_Y_SLOPE_UP = 4329,
+ SPR_BTGEN_MONO_RAMP_X_UP = 4330,
+ SPR_BTGEN_MONO_RAMP_X_DOWN = 4331,
+ SPR_BTGEN_MONO_RAMP_Y_UP = 4332,
+ SPR_BTGEN_MONO_RAMP_Y_DOWN = 4333,
+ SPR_BTGEN_MGLV_X_SLOPE_DOWN = 4366,
+ SPR_BTGEN_MGLV_X_SLOPE_UP = 4367,
+ SPR_BTGEN_MGLV_Y_SLOPE_DOWN = 4368,
+ SPR_BTGEN_MGLV_Y_SLOPE_UP = 4369,
+ SPR_BTGEN_MGLV_RAMP_X_UP = 4370,
+ SPR_BTGEN_MGLV_RAMP_X_DOWN = 4371,
+ SPR_BTGEN_MGLV_RAMP_Y_UP = 4372,
+ SPR_BTGEN_MGLV_RAMP_Y_DOWN = 4373,
+
+ /* Vehicle view sprites */
+ SPR_CENTRE_VIEW_VEHICLE = 683,
+ SPR_SEND_TRAIN_TODEPOT = 685,
+ SPR_SEND_ROADVEH_TODEPOT = 686,
+ SPR_SEND_AIRCRAFT_TODEPOT = 687,
+ SPR_SEND_SHIP_TODEPOT = 688,
+
+ SPR_IGNORE_SIGNALS = 689,
+ SPR_SHOW_ORDERS = 690,
+ SPR_SHOW_VEHICLE_DETAILS = 691,
+ SPR_REFIT_VEHICLE = 692,
+ SPR_FORCE_VEHICLE_TURN = 715,
+
+ /* Vehicle sprite-flags (red/green) */
+ SPR_FLAG_VEH_STOPPED = 3090,
+ SPR_FLAG_VEH_RUNNING = 3091,
+
+ SPR_VEH_BUS_SW_VIEW = 3097,
+ SPR_VEH_BUS_SIDE_VIEW = 3098,
+
+ /* Rotor sprite numbers */
+ SPR_ROTOR_STOPPED = 3901,
+ SPR_ROTOR_MOVING_1 = 3902,
+ SPR_ROTOR_MOVING_3 = 3904,
+
+ /* Town/house sprites */
+ SPR_LIFT = 1443,
+
+ //used in town_land.h
+ //CNST1..3 = Those are the different stages of construction
+ //The last 2 hexas correspond to the type of building it represent, if any
+ SPR_CNST1_TALLOFFICE_00 = 1421,
+ SPR_CNST2_TALLOFFICE_00 = 1422,
+ SPR_CNST3_TALLOFFICE_00 = 1423,
+ SPR_GROUND_TALLOFFICE_00 = 1424,
+ SPR_BUILD_TALLOFFICE_00 = 1425, //temperate
+ SPR_CNST1_OFFICE_01 = 1426,
+ SPR_CNST2_OFFICE_01 = 1427,
+ SPR_BUILD_OFFICE_01 = 1428, //temperate
+ SPR_GROUND_OFFICE_01 = 1429,
+ SPR_CNST1_SMLBLCKFLATS_02 = 1430, //Small Block of Flats
+ SPR_CNST2_SMLBLCKFLATS_02 = 1431,
+ SPR_BUILD_SMLBLCKFLATS_02 = 1432, //temperate
+ SPR_GROUND_SMLBLCKFLATS_02 = 1433,
+ SPR_CNST1_TEMPCHURCH = 1434,
+ SPR_CNST2_TEMPCHURCH = 1435,
+ SPR_BUILD_TEMPCHURCH = 1436,
+ SPR_GROUND_TEMPCHURCH = 1437,
+ SPR_CNST1_LARGEOFFICE_04 = 1440,
+ SPR_CNST2_LARGEOFFICE_04 = 1441,
+ SPR_BUILD_LARGEOFFICE_04 = 1442, // temperate, sub-arctic, subtropical
+ SPR_BUILD_LARGEOFFICE_04_SNOW = 4569, // same, with snow
+ // These are in fact two houses for the same houseID. so V1 and V2
+ SPR_CNST1_TOWNHOUSE_06_V1 = 1444,
+ SPR_CNST2_TOWNHOUSE_06_V1 = 1445,
+ SPR_BUILD_TOWNHOUSE_06_V1 = 1446, // 1st variation
+ SPR_GRND_TOWNHOUSE_06_V1 = 1447,
+ SPR_CNST1_TOWNHOUSE_06_V2 = 1501, // used as ground, but is stage1
+ SPR_CNST1_TOWNHOUSE_06_V2_P = 1502, // pipes extensions for previous
+ SPR_CNST2_TOWNHOUSE_06_V2_G = 1503, // Ground of cnst stage 2
+ SPR_CNST2_TOWNHOUSE_06_V2 = 1504, // real cnst stage 2
+ SPR_GRND_TOWNHOUSE_06_V2 = 1505,
+ SPR_BUILD_TOWNHOUSE_06_V2 = 1506, // 2nd variation
+ SPR_CNST1_HOTEL_07_NW = 1448,
+ SPR_CNST2_HOTEL_07_NW = 1449,
+ SPR_BUILD_HOTEL_07_NW = 1450,
+ SPR_CNST1_HOTEL_07_SE = 1451,
+ SPR_CNST2_HOTEL_07_SE = 1452,
+ SPR_BUILD_HOTEL_07_SE = 1453,
+ SPR_STATUE_HORSERIDER_09 = 1454,
+ SPR_FOUNTAIN_0A = 1455,
+ SPR_PARKSTATUE_0B = 1456,
+ SPR_PARKALLEY_0C = 1457,
+ SPR_CNST1_OFFICE_0D = 1458,
+ SPR_CNST2_OFFICE_0D = 1459,
+ SPR_BUILD_OFFICE_0D = 1460,
+ SPR_CNST1_SHOPOFFICE_0E = 1461,
+ SPR_CNST2_SHOPOFFICE_0E = 1462,
+ SPR_BUILD_SHOPOFFICE_0E = 1463,
+ SPR_CNST1_SHOPOFFICE_0F = 1464,
+ SPR_CNST2_SHOPOFFICE_0F = 1465,
+ SPR_BUILD_SHOPOFFICE_0F = 1466,
+
+ /* Easter egg/disaster sprites */
+ SPR_BLIMP = 3905, // Zeppelin
+ SPR_BLIMP_CRASHING = 3906,
+ SPR_BLIMP_CRASHED = 3907,
+ SPR_UFO_SMALL_SCOUT = 3908, // XCOM - UFO Defense
+ SPR_UFO_SMALL_SCOUT_DARKER = 3909,
+ SPR_SUB_SMALL_NE = 3910, // Silent Service
+ SPR_SUB_SMALL_SE = 3911,
+ SPR_SUB_SMALL_SW = 3912,
+ SPR_SUB_SMALL_NW = 3913,
+ SPR_SUB_LARGE_NE = 3914,
+ SPR_SUB_LARGE_SE = 3915,
+ SPR_SUB_LARGE_SW = 3916,
+ SPR_SUB_LARGE_NW = 3917,
+ SPR_F_15 = 3918, // F-15 Strike Eagle
+ SPR_F_15_FIRING = 3919,
+ SPR_UFO_HARVESTER = 3920, // XCOM - UFO Defense
+ SPR_XCOM_SKYRANGER = 3921,
+ SPR_AH_64A = 3922, // Gunship
+ SPR_AH_64A_FIRING = 3923,
+
+ /* main_gui.c */
+ SPR_IMG_TERRAFORM_UP = 694,
+ SPR_IMG_TERRAFORM_DOWN = 695,
+ SPR_IMG_DYNAMITE = 703,
+ SPR_IMG_ROCKS = 4084,
+ SPR_IMG_LIGHTHOUSE_DESERT = 4085, // XXX - is Desert image on the desert-climate
+ SPR_IMG_TRANSMITTER = 4086,
+ SPR_IMG_LEVEL_LAND = SPR_OPENTTD_BASE + 61,
+ SPR_IMG_BUILD_CANAL = SPR_OPENTTD_BASE + 58,
+ SPR_IMG_BUILD_LOCK = SPR_CANALS_BASE + 69,
+ SPR_IMG_PLACE_SIGN = SPR_OPENTTD_BASE + 63,
+ SPR_IMG_PAUSE = 726,
+ SPR_IMG_FASTFORWARD = SPR_OPENTTD_BASE + 54,
+ SPR_IMG_SETTINGS = 751,
+ SPR_IMG_SAVE = 724,
+ SPR_IMG_SMALLMAP = 708,
+ SPR_IMG_TOWN = 4077,
+ SPR_IMG_SUBSIDIES = 679,
+ SPR_IMG_COMPANY_LIST = 1299,
+ SPR_IMG_COMPANY_FINANCE = 737,
+ SPR_IMG_COMPANY_GENERAL = 743,
+ SPR_IMG_GRAPHS = 745,
+ SPR_IMG_COMPANY_LEAGUE = 684,
+ SPR_IMG_SHOW_COUNTOURS = 738,
+ SPR_IMG_SHOW_VEHICLES = 739,
+ SPR_IMG_SHOW_ROUTES = 740,
+ SPR_IMG_INDUSTRY = 741,
+ SPR_IMG_PLANTTREES = 742,
+ SPR_IMG_TRAINLIST = 731,
+ SPR_IMG_TRUCKLIST = 732,
+ SPR_IMG_SHIPLIST = 733,
+ SPR_IMG_AIRPLANESLIST = 734,
+ SPR_IMG_ZOOMIN = 735,
+ SPR_IMG_ZOOMOUT = 736,
+ SPR_IMG_BUILDRAIL = 727,
+ SPR_IMG_BUILDROAD = 728,
+ SPR_IMG_BUILDWATER = 729,
+ SPR_IMG_BUILDAIR = 730,
+ SPR_IMG_LANDSCAPING = 4083,
+ SPR_IMG_MUSIC = 713,
+ SPR_IMG_MESSAGES = 680,
+ SPR_IMG_QUERY = 723,
+ SPR_IMG_SIGN = 4082,
+ SPR_IMG_BUY_LAND = 4791,
+
+ /* OPEN TRANSPORT TYCOON in gamescreen */
+ SPR_OTTD_O = 4842,
+ SPR_OTTD_P = 4841,
+ SPR_OTTD_E = SPR_OPENTTD_BASE + 13,
+ SPR_OTTD_D = SPR_OPENTTD_BASE + 14,
+ SPR_OTTD_N = 4839,
+ SPR_OTTD_T = 4836,
+ SPR_OTTD_R = 4837,
+ SPR_OTTD_A = 4838,
+ SPR_OTTD_S = 4840,
+ SPR_OTTD_Y = 4843,
+ SPR_OTTD_C = 4844,
+
+ SPR_HIGHSCORE_CHART_BEGIN = 4804,
+ SPR_TYCOON_IMG1_BEGIN = 4814,
+ SPR_TYCOON_IMG2_BEGIN = 4824,
+
+ /* Industry sprites */
+ SPR_IT_SUGAR_MINE_SIEVE = 4775,
+ SPR_IT_SUGAR_MINE_CLOUDS = 4784,
+ SPR_IT_SUGAR_MINE_PILE = 4780,
+ SPR_IT_TOFFEE_QUARRY_TOFFEE = 4766,
+ SPR_IT_TOFFEE_QUARRY_SHOVEL = 4767,
+ SPR_IT_BUBBLE_GENERATOR_SPRING = 4746,
+ SPR_IT_BUBBLE_GENERATOR_BUBBLE = 4747,
+ SPR_IT_TOY_FACTORY_STAMP_HOLDER = 4717,
+ SPR_IT_TOY_FACTORY_STAMP = 4718,
+ SPR_IT_TOY_FACTORY_CLAY = 4719,
+ SPR_IT_TOY_FACTORY_ROBOT = 4720,
+ SPR_IT_POWER_PLANT_TRANSFORMERS = 2054,
+
+ /*small icons of cargo available in station waiting*/
+ SPR_CARGO_PASSENGER = 4297,
+ SPR_CARGO_COAL = 4298,
+ SPR_CARGO_MAIL = 4299,
+ SPR_CARGO_OIL = 4300,
+ SPR_CARGO_LIVESTOCK = 4301,
+ SPR_CARGO_GOODS = 4302,
+ SPR_CARGO_GRAIN = 4303,
+ SPR_CARGO_WOOD = 4304,
+ SPR_CARGO_IRON_ORE = 4305,
+ SPR_CARGO_STEEL = 4306,
+ SPR_CARGO_VALUES_GOLD = 4307, /*shared between temperate and arctic*/
+ SPR_CARGO_FRUIT = 4308,
+ SPR_CARGO_COPPER_ORE = 4309,
+ SPR_CARGO_WATERCOLA = 4310, /*shared between desert and toyland*/
+ SPR_CARGO_DIAMONDS = 4311,
+ SPR_CARGO_FOOD = 4312,
+ SPR_CARGO_PAPER = 4313,
+ SPR_CARGO_RUBBER = 4314,
+ SPR_CARGO_CANDY = 4315,
+ SPR_CARGO_SUGAR = 4316,
+ SPR_CARGO_TOYS = 4317,
+ SPR_CARGO_COTTONCANDY = 4318,
+ SPR_CARGO_FIZZYDRINK = 4319,
+ SPR_CARGO_TOFFEE = 4320,
+ SPR_CARGO_BUBBLES = 4321,
+ SPR_CARGO_PLASTIC = 4322,
+ SPR_CARGO_BATTERIES = 4323,
+
+ /* Effect vehicles */
+ SPR_BULLDOZER_NE = 1416,
+ SPR_BULLDOZER_SE = 1417,
+ SPR_BULLDOZER_SW = 1418,
+ SPR_BULLDOZER_NW = 1419,
+
+ SPR_SMOKE_0 = 2040,
+ SPR_SMOKE_1 = 2041,
+ SPR_SMOKE_2 = 2042,
+ SPR_SMOKE_3 = 2043,
+ SPR_SMOKE_4 = 2044,
+
+ SPR_DIESEL_SMOKE_0 = 3073,
+ SPR_DIESEL_SMOKE_1 = 3074,
+ SPR_DIESEL_SMOKE_2 = 3075,
+ SPR_DIESEL_SMOKE_3 = 3076,
+ SPR_DIESEL_SMOKE_4 = 3077,
+ SPR_DIESEL_SMOKE_5 = 3078,
+
+ SPR_STEAM_SMOKE_0 = 3079,
+ SPR_STEAM_SMOKE_1 = 3080,
+ SPR_STEAM_SMOKE_2 = 3081,
+ SPR_STEAM_SMOKE_3 = 3082,
+ SPR_STEAM_SMOKE_4 = 3083,
+
+ SPR_ELECTRIC_SPARK_0 = 3084,
+ SPR_ELECTRIC_SPARK_1 = 3085,
+ SPR_ELECTRIC_SPARK_2 = 3086,
+ SPR_ELECTRIC_SPARK_3 = 3087,
+ SPR_ELECTRIC_SPARK_4 = 3088,
+ SPR_ELECTRIC_SPARK_5 = 3089,
+
+ SPR_CHIMNEY_SMOKE_0 = 3701,
+ SPR_CHIMNEY_SMOKE_1 = 3702,
+ SPR_CHIMNEY_SMOKE_2 = 3703,
+ SPR_CHIMNEY_SMOKE_3 = 3704,
+ SPR_CHIMNEY_SMOKE_4 = 3705,
+ SPR_CHIMNEY_SMOKE_5 = 3706,
+ SPR_CHIMNEY_SMOKE_6 = 3707,
+ SPR_CHIMNEY_SMOKE_7 = 3708,
+
+ SPR_EXPLOSION_LARGE_0 = 3709,
+ SPR_EXPLOSION_LARGE_1 = 3710,
+ SPR_EXPLOSION_LARGE_2 = 3711,
+ SPR_EXPLOSION_LARGE_3 = 3712,
+ SPR_EXPLOSION_LARGE_4 = 3713,
+ SPR_EXPLOSION_LARGE_5 = 3714,
+ SPR_EXPLOSION_LARGE_6 = 3715,
+ SPR_EXPLOSION_LARGE_7 = 3716,
+ SPR_EXPLOSION_LARGE_8 = 3717,
+ SPR_EXPLOSION_LARGE_9 = 3718,
+ SPR_EXPLOSION_LARGE_A = 3719,
+ SPR_EXPLOSION_LARGE_B = 3720,
+ SPR_EXPLOSION_LARGE_C = 3721,
+ SPR_EXPLOSION_LARGE_D = 3722,
+ SPR_EXPLOSION_LARGE_E = 3723,
+ SPR_EXPLOSION_LARGE_F = 3724,
+
+ SPR_EXPLOSION_SMALL_0 = 3725,
+ SPR_EXPLOSION_SMALL_1 = 3726,
+ SPR_EXPLOSION_SMALL_2 = 3727,
+ SPR_EXPLOSION_SMALL_3 = 3728,
+ SPR_EXPLOSION_SMALL_4 = 3729,
+ SPR_EXPLOSION_SMALL_5 = 3730,
+ SPR_EXPLOSION_SMALL_6 = 3731,
+ SPR_EXPLOSION_SMALL_7 = 3732,
+ SPR_EXPLOSION_SMALL_8 = 3733,
+ SPR_EXPLOSION_SMALL_9 = 3734,
+ SPR_EXPLOSION_SMALL_A = 3735,
+ SPR_EXPLOSION_SMALL_B = 3736,
+
+ SPR_BREAKDOWN_SMOKE_0 = 3737,
+ SPR_BREAKDOWN_SMOKE_1 = 3738,
+ SPR_BREAKDOWN_SMOKE_2 = 3739,
+ SPR_BREAKDOWN_SMOKE_3 = 3740,
+
+ SPR_BUBBLE_0 = 4748,
+ SPR_BUBBLE_1 = 4749,
+ SPR_BUBBLE_2 = 4750,
+ SPR_BUBBLE_GENERATE_0 = 4751,
+ SPR_BUBBLE_GENERATE_1 = 4752,
+ SPR_BUBBLE_GENERATE_2 = 4753,
+ SPR_BUBBLE_GENERATE_3 = 4754,
+ SPR_BUBBLE_BURST_0 = 4755,
+ SPR_BUBBLE_BURST_1 = 4756,
+ SPR_BUBBLE_BURST_2 = 4757,
+ SPR_BUBBLE_ABSORB_0 = 4758,
+ SPR_BUBBLE_ABSORB_1 = 4759,
+ SPR_BUBBLE_ABSORB_2 = 4760,
+ SPR_BUBBLE_ABSORB_3 = 4761,
+ SPR_BUBBLE_ABSORB_4 = 4762,
+
+ /* Electrified rail build menu */
+ SPR_BUILD_NS_ELRAIL = SPR_ELRAIL_BASE + 39,
+ SPR_BUILD_X_ELRAIL = SPR_ELRAIL_BASE + 40,
+ SPR_BUILD_EW_ELRAIL = SPR_ELRAIL_BASE + 41,
+ SPR_BUILD_Y_ELRAIL = SPR_ELRAIL_BASE + 42,
+ SPR_BUILD_TUNNEL_ELRAIL = SPR_ELRAIL_BASE + 47,
+
+ /* airport_gui.c */
+ SPR_IMG_AIRPORT = 744,
+
+ /* dock_gui.c */
+ SPR_IMG_SHIP_DEPOT = 748,
+ SPR_IMG_SHIP_DOCK = 746,
+ SPR_IMG_BOUY = 693,
+
+ /* music_gui.c */
+ SPR_IMG_SKIP_TO_PREV = 709,
+ SPR_IMG_SKIP_TO_NEXT = 710,
+ SPR_IMG_STOP_MUSIC = 711,
+ SPR_IMG_PLAY_MUSIC = 712,
+
+ /* road_gui.c */
+ SPR_IMG_ROAD_NW = 1309,
+ SPR_IMG_ROAD_NE = 1310,
+ SPR_IMG_ROAD_DEPOT = 1295,
+ SPR_IMG_BUS_STATION = 749,
+ SPR_IMG_TRUCK_BAY = 750,
+ SPR_IMG_BRIDGE = 2594,
+ SPR_IMG_ROAD_TUNNEL = 2429,
+ SPR_IMG_REMOVE = 714,
+
+ /* rail_gui.c */
+ SPR_IMG_RAIL_NS = 1251,
+ SPR_IMG_RAIL_NE = 1252,
+ SPR_IMG_RAIL_EW = 1253,
+ SPR_IMG_RAIL_NW = 1254,
+ SPR_IMG_AUTORAIL = SPR_OPENTTD_BASE + 0,
+ SPR_IMG_AUTOMONO = SPR_OPENTTD_BASE + 1,
+ SPR_IMG_AUTOMAGLEV = SPR_OPENTTD_BASE + 2,
+
+ SPR_IMG_WAYPOINT = SPR_OPENTTD_BASE + 3,
+
+ SPR_IMG_DEPOT_RAIL = 1294,
+ SPR_IMG_DEPOT_MONO = SPR_OPENTTD_BASE + 9,
+ SPR_IMG_DEPOT_MAGLEV = SPR_OPENTTD_BASE + 10,
+
+ SPR_IMG_RAIL_STATION = 1298,
+ SPR_IMG_RAIL_SIGNALS = 1291,
+
+ SPR_IMG_TUNNEL_RAIL = 2430,
+ SPR_IMG_TUNNEL_MONO = 2431,
+ SPR_IMG_TUNNEL_MAGLEV = 2432,
+
+ SPR_IMG_CONVERT_RAIL = SPR_OPENTTD_BASE + 22,
+ SPR_IMG_CONVERT_MONO = SPR_OPENTTD_BASE + 24,
+ SPR_IMG_CONVERT_MAGLEV = SPR_OPENTTD_BASE + 26,
+
+ /* intro_gui.c, genworld_gui.c */
+ SPR_SELECT_TEMPERATE = 4882,
+ SPR_SELECT_TEMPERATE_PUSHED = 4883,
+ SPR_SELECT_SUB_ARCTIC = 4884,
+ SPR_SELECT_SUB_ARCTIC_PUSHED = 4885,
+ SPR_SELECT_SUB_TROPICAL = 4886,
+ SPR_SELECT_SUB_TROPICAL_PUSHED = 4887,
+ SPR_SELECT_TOYLAND = 4888,
+ SPR_SELECT_TOYLAND_PUSHED = 4889,
+};
+
+/** Cursor sprite numbers */
+typedef enum CursorSprites {
+ /* Terraform */
+ /* Cursors */
+ SPR_CURSOR_MOUSE = 0,
+ SPR_CURSOR_ZZZ = 1,
+ SPR_CURSOR_BOUY = 702,
+ SPR_CURSOR_QUERY = 719,
+ SPR_CURSOR_HQ = 720,
+ SPR_CURSOR_SHIP_DEPOT = 721,
+ SPR_CURSOR_SIGN = 722,
+
+ SPR_CURSOR_TREE = 2010,
+ SPR_CURSOR_BUY_LAND = 4792,
+ SPR_CURSOR_LEVEL_LAND = SPR_OPENTTD_BASE + 62,
+
+ SPR_CURSOR_TOWN = 4080,
+ SPR_CURSOR_INDUSTRY = 4081,
+ SPR_CURSOR_ROCKY_AREA = 4087,
+ SPR_CURSOR_LIGHTHOUSE = 4088,
+ SPR_CURSOR_TRANSMITTER = 4089,
+
+ /* airport cursors */
+ SPR_CURSOR_AIRPORT = 2724,
+
+ /* dock cursors */
+ SPR_CURSOR_DOCK = 3668,
+ SPR_CURSOR_CANAL = SPR_OPENTTD_BASE + 8,
+ SPR_CURSOR_LOCK = SPR_OPENTTD_BASE + 57,
+
+ /* shared road & rail cursors */
+ SPR_CURSOR_BRIDGE = 2593,
+
+ /* rail cursors */
+ SPR_CURSOR_NS_TRACK = 1263,
+ SPR_CURSOR_SWNE_TRACK = 1264,
+ SPR_CURSOR_EW_TRACK = 1265,
+ SPR_CURSOR_NWSE_TRACK = 1266,
+
+ SPR_CURSOR_NS_MONO = 1267,
+ SPR_CURSOR_SWNE_MONO = 1268,
+ SPR_CURSOR_EW_MONO = 1269,
+ SPR_CURSOR_NWSE_MONO = 1270,
+
+ SPR_CURSOR_NS_MAGLEV = 1271,
+ SPR_CURSOR_SWNE_MAGLEV = 1272,
+ SPR_CURSOR_EW_MAGLEV = 1273,
+ SPR_CURSOR_NWSE_MAGLEV = 1274,
+
+ SPR_CURSOR_NS_ELRAIL = SPR_ELRAIL_BASE + 43,
+ SPR_CURSOR_SWNE_ELRAIL = SPR_ELRAIL_BASE + 44,
+ SPR_CURSOR_EW_ELRAIL = SPR_ELRAIL_BASE + 45,
+ SPR_CURSOR_NWSE_ELRAIL = SPR_ELRAIL_BASE + 46,
+
+ SPR_CURSOR_RAIL_STATION = 1300,
+
+ SPR_CURSOR_TUNNEL_RAIL = 2434,
+ SPR_CURSOR_TUNNEL_ELRAIL = SPR_ELRAIL_BASE + 48,
+ SPR_CURSOR_TUNNEL_MONO = 2435,
+ SPR_CURSOR_TUNNEL_MAGLEV = 2436,
+
+ SPR_CURSOR_AUTORAIL = SPR_OPENTTD_BASE + 4,
+ SPR_CURSOR_AUTOMONO = SPR_OPENTTD_BASE + 5,
+ SPR_CURSOR_AUTOMAGLEV = SPR_OPENTTD_BASE + 6,
+
+ SPR_CURSOR_WAYPOINT = SPR_OPENTTD_BASE + 7,
+
+ SPR_CURSOR_RAIL_DEPOT = 1296,
+ SPR_CURSOR_MONO_DEPOT = SPR_OPENTTD_BASE + 11,
+ SPR_CURSOR_MAGLEV_DEPOT = SPR_OPENTTD_BASE + 12,
+
+ SPR_CURSOR_CONVERT_RAIL = SPR_OPENTTD_BASE + 23,
+ SPR_CURSOR_CONVERT_MONO = SPR_OPENTTD_BASE + 25,
+ SPR_CURSOR_CONVERT_MAGLEV = SPR_OPENTTD_BASE + 27,
+
+ /* road cursors */
+ SPR_CURSOR_ROAD_NESW = 1311,
+ SPR_CURSOR_ROAD_NWSE = 1312,
+
+ SPR_CURSOR_ROAD_DEPOT = 1297,
+ SPR_CURSOR_BUS_STATION = 2725,
+ SPR_CURSOR_TRUCK_STATION = 2726,
+ SPR_CURSOR_ROAD_TUNNEL = 2433,
+
+ SPR_CURSOR_CLONE_TRAIN = SPR_OPENTTD_BASE + 93,
+ SPR_CURSOR_CLONE_ROADVEH = SPR_OPENTTD_BASE + 110,
+ SPR_CURSOR_CLONE_SHIP = SPR_OPENTTD_BASE + 112,
+ SPR_CURSOR_CLONE_AIRPLANE = SPR_OPENTTD_BASE + 114,
+} CursorSprite;
+
+/// Animation macro in table/animcursors.h (_animcursors[])
+enum AnimCursors {
+ ANIMCURSOR_DEMOLISH = -1, ///< 704 - 707 - demolish dynamite
+ ANIMCURSOR_LOWERLAND = -2, ///< 699 - 701 - lower land tool
+ ANIMCURSOR_RAISELAND = -3, ///< 696 - 698 - raise land tool
+ ANIMCURSOR_PICKSTATION = -4, ///< 716 - 718 - goto-order icon
+ ANIMCURSOR_BUILDSIGNALS = -5, ///< 1292 - 1293 - build signal
+};
+
+/**
+ * Bitmask setup. For the graphics system, 32 bits are used to define
+ * the sprite to be displayed. This variable contains various information:<p>
+ * <ul><li> SPRITE_WIDTH is the number of bits used for the actual sprite to be displayed.
+ * This always starts at bit 0.</li>
+ * <li> TRANSPARENT_BIT is the bit number which toggles sprite transparency</li>
+ * <li> RECOLOR_BIT toggles the recoloring system</li>
+ * <li> PALETTE_SPRITE_WIDTH and PALETTE_SPRITE_START determine the position and number of
+ * bits used for the recoloring process. For transparency, it must be 0x322.</li>
+ */
+enum SpriteSetup {
+ TRANSPARENT_BIT = 31, ///< toggles transparency in the sprite
+ RECOLOR_BIT = 15, ///< toggles recoloring in the sprite
+ PALETTE_SPRITE_START = 16, ///< number of the first bit of the sprite containing the recolor palette
+ PALETTE_SPRITE_WIDTH = 14, ///< number of bits of the sprite containing the recolor palette
+ SPRITE_WIDTH = 14, ///< number of bits for the sprite number
+};
+
+/**
+ * these masks change the colors of the palette for a sprite.
+ * Apart from this bit, a sprite number is needed to define
+ * the palette used for recoloring. This palette is stored
+ * in the bits marked by PALETTE_SPRITE_MASK.
+ * @note Do not modify this enum. Alter SpriteSetup instead
+ * @see SpriteSetup
+ */
+enum Modifiers {
+ ///when a sprite is to be displayed transparently, this bit needs to be set.
+ PALETTE_MODIFIER_TRANSPARENT = 1 << TRANSPARENT_BIT,
+ ///this bit is set when a recoloring process is in action
+ PALETTE_MODIFIER_COLOR = 1 << RECOLOR_BIT,
+
+ //This is used for the GfxFillRect function
+ ///Used to draw a "grey out" rectangle. @see GfxFillRect
+ PALETTE_MODIFIER_GREYOUT = 1 << TRANSPARENT_BIT,
+ ///Set when a colortable mode is used. @see GfxFillRect
+ USE_COLORTABLE = 1 << RECOLOR_BIT,
+};
+
+/** Masks needed for sprite operations.
+ * @note Do not modify this enum. Alter SpriteSetup instead
+ * @see SpriteSetup */
+enum SpriteMasks {
+ ///Maximum number of sprites that can be loaded at a given time.
+ MAX_SPRITES = 1 << SPRITE_WIDTH,
+ ///The mask to for the main sprite
+ SPRITE_MASK = MAX_SPRITES - 1,
+ ///The mask for the auxiliary sprite (the one that takes care of recoloring)
+ PALETTE_SPRITE_MASK = ((1 << PALETTE_SPRITE_WIDTH) - 1) << PALETTE_SPRITE_START,
+ ///Mask for the auxiliary sprites if it is locate in the LSBs
+ COLORTABLE_MASK = (1 << PALETTE_SPRITE_WIDTH) - 1
+};
+
+assert_compile( (1 << TRANSPARENT_BIT & SPRITE_MASK) == 0 );
+assert_compile( (1 << RECOLOR_BIT & SPRITE_MASK) == 0 );
+assert_compile( TRANSPARENT_BIT != RECOLOR_BIT );
+assert_compile( (1 << TRANSPARENT_BIT & PALETTE_SPRITE_MASK) == 0);
+assert_compile( (1 << RECOLOR_BIT & PALETTE_SPRITE_MASK) == 0 );
+assert_compile( (PALETTE_SPRITE_MASK & SPRITE_MASK) == 0 );
+assert_compile( SPRITE_WIDTH + PALETTE_SPRITE_WIDTH <= 30 );
+
+enum Recoloring {
+ PALETTE_RECOLOR_START = 0x307,
+};
+
+#define PALETTE_RECOLOR_SPRITE(a) (a << PALETTE_SPRITE_START | PALETTE_MODIFIER_COLOR)
+enum PaletteSprites {
+ //note: these numbers are already the modified once the renderer needs.
+ //the actual sprite number is the upper 16 bits of the number
+
+ ///Here a puslating red tile is drawn if you try to build a wrong tunnel or raise/lower land where it is not possible
+ PALETTE_TILE_RED_PULSATING = PALETTE_RECOLOR_SPRITE(0x303),
+ ///makes a square red. is used when removing rails or other stuff
+ PALETTE_SEL_TILE_RED = PALETTE_RECOLOR_SPRITE(0x304),
+ ///This draws a blueish square (catchment areas for example)
+ PALETTE_SEL_TILE_BLUE = PALETTE_RECOLOR_SPRITE(0x305),
+ //0x306 is a real sprite (the little dot you get when you try to raise/lower a corner of the map
+ //here the color switches begin
+ //use this if you add stuff to the value, so that the resulting color
+ //is not a fixed value.
+ //NOTE THAT THE SWITCH 0x8000 is NOT present in _TO_COLORS yet!
+ PALETTE_TO_COLORS = PALETTE_RECOLOR_START << PALETTE_SPRITE_START,
+ PALETTE_TO_DARK_BLUE = PALETTE_RECOLOR_SPRITE(PALETTE_RECOLOR_START),
+ PALETTE_TO_PALE_GREEN = PALETTE_RECOLOR_SPRITE(0x308),
+ PALETTE_TO_PINK = PALETTE_RECOLOR_SPRITE(0x309),
+ PALETTE_TO_YELLOW = PALETTE_RECOLOR_SPRITE(0x30A),
+ PALETTE_TO_RED = PALETTE_RECOLOR_SPRITE(0x30B),
+ PALETTE_TO_LIGHT_BLUE = PALETTE_RECOLOR_SPRITE(0x30C),
+ PALETTE_TO_GREEN = PALETTE_RECOLOR_SPRITE(0x30D),
+ PALETTE_TO_DARK_GREEN = PALETTE_RECOLOR_SPRITE(0x30E),
+ PALETTE_TO_BLUE = PALETTE_RECOLOR_SPRITE(0x30F),
+ PALETTE_TO_CREAM = PALETTE_RECOLOR_SPRITE(0x310),
+ //maybe don't use as player color because it doesn't display in the graphs?
+ PALETTE_TO_MAUVE = PALETTE_RECOLOR_SPRITE(0x311),
+ PALETTE_TO_PURPLE = PALETTE_RECOLOR_SPRITE(0x312),
+ PALETTE_TO_ORANGE = PALETTE_RECOLOR_SPRITE(0x313),
+ PALETTE_TO_BROWN = PALETTE_RECOLOR_SPRITE(0x314),
+ PALETTE_TO_GREY = PALETTE_RECOLOR_SPRITE(0x315),
+ PALETTE_TO_WHITE = PALETTE_RECOLOR_SPRITE(0x316),
+ //sets color to bare land stuff, for rail and road (and crossings)
+ PALETTE_TO_BARE_LAND = PALETTE_RECOLOR_SPRITE(0x317),
+ //XXX is 318-31A really not used?
+ PALETTE_TO_STRUCT_BLUE = PALETTE_RECOLOR_SPRITE(0x31B),
+ //structure color to something brownish (for the cantilever bridges for example)
+ PALETTE_TO_STRUCT_BROWN = PALETTE_RECOLOR_SPRITE(0x31C),
+ PALETTE_TO_STRUCT_WHITE = PALETTE_RECOLOR_SPRITE(0x31D),
+ //sets bridge or structure to red, little concrete one and cantilever use this one for example
+ PALETTE_TO_STRUCT_RED = PALETTE_RECOLOR_SPRITE(0x31E),
+ PALETTE_TO_STRUCT_GREEN = PALETTE_RECOLOR_SPRITE(0x31F),
+ PALETTE_TO_STRUCT_CONCRETE = PALETTE_RECOLOR_SPRITE(0x320), //Sets the suspension bridge to concrete, also other strucutures use it
+ PALETTE_TO_STRUCT_YELLOW = PALETTE_RECOLOR_SPRITE(0x321), //Sets the bridge color to yellow (suspension and tubular)
+ PALETTE_TO_TRANSPARENT = 0x322 << PALETTE_SPRITE_START | PALETTE_MODIFIER_TRANSPARENT, //This sets the sprite to transparent
+ //This is used for changing the tubular bridges to the silicon display, or some grayish color
+ PALETTE_TO_STRUCT_GREY = PALETTE_RECOLOR_SPRITE(0x323),
+ PALETTE_CRASH = PALETTE_RECOLOR_SPRITE(0x324), //this changes stuff to the "crash color"
+ //XXX another place where structures are colored.
+ //I'm not sure which colors these are
+ PALETTE_59E = PALETTE_RECOLOR_SPRITE(0x59E),
+ PALETTE_59F = PALETTE_RECOLOR_SPRITE(0x59F),
+};
+#undef PALETTE_RECOLOR_SPRITE
+
+#define MAKE_TRANSPARENT(img) (img = (img & SPRITE_MASK) | PALETTE_TO_TRANSPARENT)
+
+#endif /* SPRITES_H */
diff --git a/src/table/station_land.h b/src/table/station_land.h
new file mode 100644
index 000000000..1c5864c2a
--- /dev/null
+++ b/src/table/station_land.h
@@ -0,0 +1,1203 @@
+/* $Id$ */
+
+#define TILE_SEQ_END() { 0x80, 0, 0, 0, 0, 0, 0 }
+
+static const DrawTileSeqStruct _station_display_datas_0[] = {
+ { 0, 0, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_REAR | PALETTE_MODIFIER_COLOR },
+ { 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_FRONT | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_1[] = {
+ { 0, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_REAR | PALETTE_MODIFIER_COLOR },
+ { 11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_FRONT | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_2[] = {
+ { 0, 0, 0, 16, 5, 2, SPR_RAIL_PLATFORM_BUILDING_X | PALETTE_MODIFIER_COLOR },
+ { 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_FRONT | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_3[] = {
+ { 0, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_BUILDING_Y | PALETTE_MODIFIER_COLOR },
+ { 11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_FRONT | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_4[] = {
+ { 0, 0, 0, 16, 5, 7, SPR_RAIL_PLATFORM_PILLARS_X_REAR | PALETTE_MODIFIER_COLOR },
+ { 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_FRONT | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_X_TILE_A | PALETTE_MODIFIER_COLOR },
+ { 0, 0,0x80, 0, 0, 0, SPR_RAIL_ROOF_GLASS_X_TILE_A | PALETTE_TO_TRANSPARENT },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_5[] = {
+ { 0, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_PILLARS_Y_REAR | PALETTE_MODIFIER_COLOR },
+ { 11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_FRONT | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_Y_TILE_A | PALETTE_MODIFIER_COLOR },
+ { 0, 0,0x80, 0, 0, 0, SPR_RAIL_ROOF_GLASS_Y_TILE_A | PALETTE_TO_TRANSPARENT },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_6[] = {
+ { 0, 0, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_REAR | PALETTE_MODIFIER_COLOR },
+ { 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_PILLARS_X_FRONT | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_X_TILE_B | PALETTE_MODIFIER_COLOR },
+ { 0, 0,0x80, 0, 0, 0, SPR_RAIL_ROOF_GLASS_X_TILE_B | PALETTE_TO_TRANSPARENT },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_7[] = {
+ { 0, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_REAR | PALETTE_MODIFIER_COLOR },
+ { 11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_PILLARS_Y_FRONT | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_Y_TILE_B | PALETTE_MODIFIER_COLOR },
+ { 0, 0,0x80, 0, 0, 0, SPR_RAIL_ROOF_GLASS_Y_TILE_B | PALETTE_TO_TRANSPARENT },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_8[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_9[] = {
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences north
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_10[] = {
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences west
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_11[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_12[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_13[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_14[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_15[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_16[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_17[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_18[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_19[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_20[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_21[] = {
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_22[] = {
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_23[] = {
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_24[] = {
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_25[] = {
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_26[] = {
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_27[] = {
+ { 2, 0, 0, 11, 16, 40, SPR_AIRPORT_TERMINAL_A | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_28[] = {
+ { 3, 3, 0, 10, 10, 60, SPR_AIRPORT_TOWER | PALETTE_MODIFIER_COLOR },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_29[] = {
+ { 0, 1, 0, 14, 14, 30, SPR_AIRPORT_CONCOURSE | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_30[] = {
+ { 3, 3, 0, 10, 11, 35, SPR_AIRPORT_TERMINAL_B | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_31[] = {
+ { 0, 3, 0, 16, 11, 40, SPR_AIRPORT_TERMINAL_C | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_32[] = {
+ { 14, 0, 0, 2, 16, 28, SPR_AIRPORT_HANGAR_FRONT | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 0, 2, 16, 28, SPR_AIRPORT_HANGAR_REAR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_33[] = {
+ { 7, 11, 0, 3, 3, 14, SPR_AIRPORT_JETWAY_1 },
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_34[] = {
+ { 2, 7, 0, 3, 3, 14, SPR_AIRPORT_JETWAY_2 },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_35[] = {
+ { 3, 2, 0, 3, 3, 14, SPR_AIRPORT_JETWAY_3 },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_36[] = {
+ { 0, 8, 0, 14, 3, 14, SPR_AIRPORT_PASSENGER_TUNNEL },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_37[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_38[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_39[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_1 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_40[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_2 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_41[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_3 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_42[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_4 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_43[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_5 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_44[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_6 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_45[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_7 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_46[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_8 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_47[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_9 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_48[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_A },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_49[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_B },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_50[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_C },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_51[] = {
+ { 7, 7, 0, 2, 2, 70, SPR_UNMOVABLE_TRANSMITTER },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_52[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_53[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_54[] = {
+ { 0, 0, 0, 15, 15, 30, SPR_AIRFIELD_TERM_C_BUILD | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_55[] = {
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_56[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_57[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_58[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ { 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_1 | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_59[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ { 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_2 | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_60[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ { 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_3 | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_61[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ { 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_4 | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_62[] = {
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_63[] = {
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_64[] = {
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_65[] = {
+ { 14, 0, 0, 2, 16, 28, SPR_AIRFIELD_HANGAR_FRONT | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 0, 2, 16, 28, SPR_AIRFIELD_HANGAR_REAR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_66[] = {
+ { 0, 0, 0, 16, 16, 60, SPR_HELIPORT | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_67[] = {
+ { 0, 15, 0, 13, 1, 10, SPR_TRUCK_STOP_NE_BUILD_A | PALETTE_MODIFIER_COLOR },
+ { 13, 0, 0, 3, 16, 10, SPR_TRUCK_STOP_NE_BUILD_B | PALETTE_MODIFIER_COLOR },
+ { 2, 0, 0, 11, 1, 10, SPR_TRUCK_STOP_NE_BUILD_C | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_68[] = {
+ { 15, 3, 0, 1, 13, 10, SPR_TRUCK_STOP_SE_BUILD_A | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 0, 16, 3, 10, SPR_TRUCK_STOP_SE_BUILD_B | PALETTE_MODIFIER_COLOR },
+ { 0, 3, 0, 1, 11, 10, SPR_TRUCK_STOP_SE_BUILD_C | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_69[] = {
+ { 3, 0, 0, 13, 1, 10, SPR_TRUCK_STOP_SW_BUILD_A | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 0, 3, 16, 10, SPR_TRUCK_STOP_SW_BUILD_B | PALETTE_MODIFIER_COLOR },
+ { 3, 15, 0, 11, 1, 10, SPR_TRUCK_STOP_SW_BUILD_C | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_70[] = {
+ { 0, 0, 0, 1, 13, 10, SPR_TRUCK_STOP_NW_BUILD_A | PALETTE_MODIFIER_COLOR },
+ { 0, 13, 0, 16, 3, 10, SPR_TRUCK_STOP_NW_BUILD_B | PALETTE_MODIFIER_COLOR },
+ { 15, 2, 0, 1, 11, 10, SPR_TRUCK_STOP_NW_BUILD_C | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_71[] = {
+ { 2, 0, 0, 11, 1, 10, SPR_BUS_STOP_NE_BUILD_A | PALETTE_MODIFIER_COLOR },
+ { 13, 0, 0, 3, 16, 10, SPR_BUS_STOP_NE_BUILD_B | PALETTE_MODIFIER_COLOR },
+ { 0, 13, 0, 13, 3, 10, SPR_BUS_STOP_NE_BUILD_C | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_72[] = {
+ { 0, 3, 0, 1, 11, 10, SPR_BUS_STOP_SE_BUILD_A | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 0, 16, 3, 10, SPR_BUS_STOP_SE_BUILD_B | PALETTE_MODIFIER_COLOR },
+ { 13, 3, 0, 3, 13, 10, SPR_BUS_STOP_SE_BUILD_C | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_73[] = {
+ { 3, 15, 0, 11, 1, 10, SPR_BUS_STOP_SW_BUILD_A | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 0, 3, 16, 10, SPR_BUS_STOP_SW_BUILD_B | PALETTE_MODIFIER_COLOR },
+ { 3, 0, 0, 13, 3, 10, SPR_BUS_STOP_SW_BUILD_C | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_74[] = {
+ { 15, 2, 0, 1, 11, 10, SPR_BUS_STOP_NW_BUILD_A | PALETTE_MODIFIER_COLOR },
+ { 0, 13, 0, 16, 3, 10, SPR_BUS_STOP_NW_BUILD_B | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 0, 3, 13, 10, SPR_BUS_STOP_NW_BUILD_C | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_75[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_76[] = {
+ { 0, 4, 0, 16, 8, 8, SPR_DOCK_SLOPE_NE },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_77[] = {
+ { 4, 0, 0, 8, 16, 8, SPR_DOCK_SLOPE_SE },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_78[] = {
+ { 0, 4, 0, 16, 8, 8, SPR_DOCK_SLOPE_SW },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_79[] = {
+ { 4, 0, 0, 8, 16, 8, SPR_DOCK_SLOPE_NW },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_80[] = {
+ { 0, 4, 0, 16, 8, 8, SPR_DOCK_FLAT_X },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_81[] = {
+ { 4, 0, 0, 8, 16, 8, SPR_DOCK_FLAT_Y },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _station_display_datas_82[] = {
+ TILE_SEQ_END()
+};
+
+// end of runway
+static const DrawTileSeqStruct _station_display_datas_083[] = {
+ TILE_SEQ_END()
+};
+
+// runway tiles
+static const DrawTileSeqStruct _station_display_datas_084[] = {
+ TILE_SEQ_END()
+};
+
+// control tower with concrete underground and no fence
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_085[] = {
+ { 3, 3, 0, 10, 10, 60, SPR_AIRPORT_TOWER | PALETTE_MODIFIER_COLOR }, // control tower
+ TILE_SEQ_END()
+};
+
+// new airportdepot, facing west
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_086[] = {
+ { 14, 0, 0, 2, 16, 28, SPR_AIRFIELD_HANGAR_FRONT | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 0, 2, 16, 28, SPR_AIRFIELD_HANGAR_REAR },
+ TILE_SEQ_END()
+};
+
+// asphalt tile with fences in north
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_087[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// end of runway
+static const DrawTileSeqStruct _station_display_datas_088[] = {
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences
+ TILE_SEQ_END()
+};
+
+// runway tiles
+static const DrawTileSeqStruct _station_display_datas_089[] = {
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences
+ TILE_SEQ_END()
+};
+
+// turning radar with concrete underground fences on south -- needs 12 tiles
+// concrete underground
+//BEGIN
+static const DrawTileSeqStruct _station_display_datas_090[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_1 }, // turning radar
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, //fences
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_091[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_2 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_092[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_3 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_093[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_4 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_094[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_5 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_095[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_6 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_096[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_7 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_097[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_8 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_098[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_9 },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_099[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_A },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0100[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_B },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0101[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_C },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+//END
+
+// turning radar with concrete underground fences on north -- needs 12 tiles
+// concrete underground
+//BEGIN
+static const DrawTileSeqStruct _station_display_datas_0102[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_1 }, // turning radar
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0103[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_2 },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0104[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_3 },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0105[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_4 },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0106[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_5 },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0107[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_6 },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0108[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_7 },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0109[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_8 },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0110[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_9 },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0111[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_A },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0112[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_B },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0113[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_C },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+//END
+
+// helipad for international airport
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0114[] = {
+ { 10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences bottom
+ TILE_SEQ_END()
+};
+
+// helipad for commuter airport
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0115[] = {
+ { 10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD },
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences left
+ TILE_SEQ_END()
+};
+
+// helipad for continental airport
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0116[] = {
+ { 10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD },
+ TILE_SEQ_END()
+};
+
+// asphalt tile with fences in north and south
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0117[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// runway tiles with 2 corner fences
+static const DrawTileSeqStruct _station_display_datas_0118[] = {
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences west
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences north
+ TILE_SEQ_END()
+};
+
+// runway tiles with 2 corner fences
+static const DrawTileSeqStruct _station_display_datas_0119[] = {
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences west
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// runway tiles with 2 corner fences
+static const DrawTileSeqStruct _station_display_datas_0120[] = {
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences north
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences east
+ TILE_SEQ_END()
+};
+
+// runway tiles with 2 corner fences
+static const DrawTileSeqStruct _station_display_datas_0121[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences east
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// ======== new 2x2 helidepot ========
+// helipad tiles with 2 corner fences top+right
+static const DrawTileSeqStruct _station_display_datas_0122[] = {
+ { 10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD },
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences east
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// tarmac tiles with 2 corner fences bottom+right
+static const DrawTileSeqStruct _station_display_datas_0123[] = {
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences north
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// helidepot office with concrete underground and no fence
+// concrete underground, fences top + left
+static const DrawTileSeqStruct _station_display_datas_0124[] = {
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences left
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences east
+ { 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | PALETTE_MODIFIER_COLOR }, // helidepot office
+ TILE_SEQ_END()
+};
+
+// N/S runway plain
+static const DrawTileSeqStruct _station_display_datas_0125[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences east
+ TILE_SEQ_END()
+};
+
+// N/S runway end
+static const DrawTileSeqStruct _station_display_datas_0126[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences east
+ TILE_SEQ_END()
+};
+
+// N/S runway plain
+static const DrawTileSeqStruct _station_display_datas_0127[] = {
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences bottom
+ TILE_SEQ_END()
+};
+
+// N/S runway end
+static const DrawTileSeqStruct _station_display_datas_0128[] = {
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences bottom
+ TILE_SEQ_END()
+};
+
+// West facing hangar
+static const DrawTileSeqStruct _station_display_datas_0129[] = {
+ { 14, 0, 0, 2, 16, 28, SPR_NEWHANGAR_W | PALETTE_MODIFIER_COLOR },
+ { 0, 0, 0, 2, 16, 28, SPR_NEWHANGAR_W_WALL },
+ TILE_SEQ_END()
+};
+
+// North facing hangar
+static const DrawTileSeqStruct _station_display_datas_0130[] = {
+ { 14, 0, 0, 2, 16, 28, SPR_NEWHANGAR_N | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// East facing hangar
+static const DrawTileSeqStruct _station_display_datas_0131[] = {
+ { 14, 0, 0, 2, 16, 28, SPR_NEWHANGAR_E | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+// helipad for district airport NS
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0132[] = {
+ { 10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences bottom
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences right
+ TILE_SEQ_END()
+};
+
+// helipad for district airport NS
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0133[] = {
+ { 10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// helidepot office with concrete underground and fence north
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0134[] = {
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences north
+ { 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | PALETTE_MODIFIER_COLOR }, // helidepot office
+ TILE_SEQ_END()
+};
+
+// helidepot office with concrete underground and fence east
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0135[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences east
+ { 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | PALETTE_MODIFIER_COLOR }, // helidepot office
+ TILE_SEQ_END()
+};
+
+// helidepot office with concrete underground and fence west
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0136[] = {
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences west
+ { 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | PALETTE_MODIFIER_COLOR }, // helidepot office
+ TILE_SEQ_END()
+};
+
+// helidepot office with concrete underground and fence south
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0137[] = {
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ { 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | PALETTE_MODIFIER_COLOR }, // helidepot office
+ TILE_SEQ_END()
+};
+
+// terminal with fence to east
+static const DrawTileSeqStruct _station_display_datas_0138[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences east
+ TILE_SEQ_END()
+};
+
+// terminal with fence to south
+static const DrawTileSeqStruct _station_display_datas_0139[] = {
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// terminal with fence to north
+static const DrawTileSeqStruct _station_display_datas_0140[] = {
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences west
+ TILE_SEQ_END()
+};
+
+// concrete with fence to east
+static const DrawTileSeqStruct _station_display_datas_0141[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences east
+ TILE_SEQ_END()
+};
+
+// concrete with fence to south
+static const DrawTileSeqStruct _station_display_datas_0142[] = {
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// helipad for district airport EW
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0143[] = {
+ { 10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences west
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences north
+ TILE_SEQ_END()
+};
+
+// helipad for district airport EW
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0144[] = {
+ { 10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences west
+ TILE_SEQ_END()
+};
+
+// turning radar with concrete underground fences on south -- needs 12 tiles
+// concrete underground
+//BEGIN
+static const DrawTileSeqStruct _station_display_datas_0145[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_1 }, // turning radar
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0146[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_2 },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0147[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_3 },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0148[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_4 },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0149[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_5 },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0150[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_6 },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0151[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_7 },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0152[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_8 },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0153[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_9 },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0154[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_A },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0155[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_B },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0156[] = {
+ { 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_C },
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+//END
+
+// helipad for helistation
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0157[] = {
+ { 0, 1, 2, 0, 0, 0, SPR_NEWHELIPAD },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences west
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// helipad for helistation
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0158[] = {
+ { 0, 1, 2, 0, 0, 0, SPR_NEWHELIPAD },
+ { 15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences west
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences north
+ TILE_SEQ_END()
+};
+
+// helipad for helistation
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0159[] = {
+ { 0, 1, 2, 0, 0, 0, SPR_NEWHELIPAD },
+ { 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences north
+ TILE_SEQ_END()
+};
+
+// helidepot office with concrete underground - no fence
+static const DrawTileSeqStruct _station_display_datas_0160[] = {
+ { 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | PALETTE_MODIFIER_COLOR }, // helidepot office
+ TILE_SEQ_END()
+};
+
+// concrete underground
+static const DrawTileSeqStruct _station_display_datas_0161[] = {
+ { 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | PALETTE_MODIFIER_COLOR }, // fences east
+ { 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | PALETTE_MODIFIER_COLOR }, // fences south
+ TILE_SEQ_END()
+};
+
+// half grass half SPR_AIRPORT_APRON
+static const DrawTileSeqStruct _station_display_datas_0162[] = {
+ { 0, 0, 0, 0, 0, 0, SPR_GRASS_LEFT },
+ TILE_SEQ_END()
+};
+
+// half grass half SPR_AIRPORT_APRON
+static const DrawTileSeqStruct _station_display_datas_0163[] = {
+ { 0, 0, 0, 0, 0, 0, SPR_GRASS_RIGHT },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSprites _station_display_datas[] = {
+ { SPR_RAIL_TRACK_X, _station_display_datas_0 },
+ { SPR_RAIL_TRACK_Y, _station_display_datas_1 },
+ { SPR_RAIL_TRACK_X, _station_display_datas_2 },
+ { SPR_RAIL_TRACK_Y, _station_display_datas_3 },
+ { SPR_RAIL_TRACK_X, _station_display_datas_4 },
+ { SPR_RAIL_TRACK_Y, _station_display_datas_5 },
+ { SPR_RAIL_TRACK_X, _station_display_datas_6 },
+ { SPR_RAIL_TRACK_Y, _station_display_datas_7 },
+ { SPR_AIRPORT_APRON, _station_display_datas_8 },
+ { SPR_AIRPORT_APRON, _station_display_datas_9 },
+ { SPR_AIRPORT_APRON, _station_display_datas_10 },
+ { SPR_AIRPORT_AIRCRAFT_STAND, _station_display_datas_11 },
+ { SPR_AIRPORT_TAXIWAY_NS_WEST, _station_display_datas_12 },
+ { SPR_AIRPORT_TAXIWAY_EW_SOUTH, _station_display_datas_13 },
+ { SPR_AIRPORT_TAXIWAY_XING_SOUTH,_station_display_datas_14 },
+ { SPR_AIRPORT_TAXIWAY_XING_WEST, _station_display_datas_15 },
+ { SPR_AIRPORT_TAXIWAY_NS_CTR, _station_display_datas_16 },
+ { SPR_AIRPORT_TAXIWAY_XING_EAST, _station_display_datas_17 },
+ { SPR_AIRPORT_TAXIWAY_NS_EAST, _station_display_datas_18 },
+ { SPR_AIRPORT_TAXIWAY_EW_NORTH, _station_display_datas_19 },
+ { SPR_AIRPORT_TAXIWAY_EW_CTR, _station_display_datas_20 },
+ { SPR_AIRPORT_TAXIWAY_EW_NORTH, _station_display_datas_21 },
+ { SPR_AIRPORT_RUNWAY_EXIT_A, _station_display_datas_22 },
+ { SPR_AIRPORT_RUNWAY_EXIT_B, _station_display_datas_23 },
+ { SPR_AIRPORT_RUNWAY_EXIT_C, _station_display_datas_24 },
+ { SPR_AIRPORT_RUNWAY_EXIT_D, _station_display_datas_25 },
+ { SPR_AIRPORT_RUNWAY_END, _station_display_datas_26 },
+ { SPR_AIRPORT_APRON, _station_display_datas_27 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_28 },
+ { SPR_AIRPORT_APRON, _station_display_datas_29 },
+ { SPR_AIRPORT_APRON, _station_display_datas_30 },
+ { SPR_AIRPORT_APRON, _station_display_datas_31 },
+ { SPR_AIRPORT_APRON, _station_display_datas_32 },
+ { SPR_AIRPORT_AIRCRAFT_STAND, _station_display_datas_33 },
+ { SPR_AIRPORT_AIRCRAFT_STAND, _station_display_datas_34 },
+ { SPR_AIRPORT_APRON, _station_display_datas_35 },
+ { SPR_AIRPORT_APRON, _station_display_datas_36 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_37 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_38 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_39 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_40 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_41 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_42 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_43 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_44 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_45 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_46 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_47 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_48 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_49 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_50 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_51 },
+ { SPR_AIRFIELD_TERM_A, _station_display_datas_52 },
+ { SPR_AIRFIELD_TERM_B, _station_display_datas_53 },
+ { SPR_AIRFIELD_TERM_C_GROUND | PALETTE_MODIFIER_COLOR, _station_display_datas_54 },
+ { SPR_AIRFIELD_APRON_A, _station_display_datas_55 },
+ { SPR_AIRFIELD_APRON_B, _station_display_datas_56 },
+ { SPR_AIRFIELD_APRON_C, _station_display_datas_57 },
+ { SPR_AIRFIELD_APRON_D, _station_display_datas_58 },
+ { SPR_AIRFIELD_APRON_D, _station_display_datas_59 },
+ { SPR_AIRFIELD_APRON_D, _station_display_datas_60 },
+ { SPR_AIRFIELD_APRON_D, _station_display_datas_61 },
+ { SPR_AIRFIELD_RUNWAY_NEAR_END, _station_display_datas_62 },
+ { SPR_AIRFIELD_RUNWAY_MIDDLE, _station_display_datas_63 },
+ { SPR_AIRFIELD_RUNWAY_FAR_END, _station_display_datas_64 },
+ { SPR_AIRPORT_APRON, _station_display_datas_65 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_66 },
+ { SPR_TRUCK_STOP_NE_GROUND | PALETTE_MODIFIER_COLOR, _station_display_datas_67 },
+ { SPR_TRUCK_STOP_SE_GROUND | PALETTE_MODIFIER_COLOR, _station_display_datas_68 },
+ { SPR_TRUCK_STOP_SW_GROUND | PALETTE_MODIFIER_COLOR, _station_display_datas_69 },
+ { SPR_TRUCK_STOP_NW_GROUND | PALETTE_MODIFIER_COLOR, _station_display_datas_70 },
+ { SPR_BUS_STOP_NE_GROUND | PALETTE_MODIFIER_COLOR, _station_display_datas_71 },
+ { SPR_BUS_STOP_SE_GROUND | PALETTE_MODIFIER_COLOR, _station_display_datas_72 },
+ { SPR_BUS_STOP_SW_GROUND | PALETTE_MODIFIER_COLOR, _station_display_datas_73 },
+ { SPR_BUS_STOP_NW_GROUND | PALETTE_MODIFIER_COLOR, _station_display_datas_74 },
+ { SPR_FLAT_WATER_TILE, _station_display_datas_75 },
+ { SPR_SHORE_TILEH_3, _station_display_datas_76 },
+ { SPR_SHORE_TILEH_9, _station_display_datas_77 },
+ { SPR_SHORE_TILEH_12, _station_display_datas_78 },
+ { SPR_SHORE_TILEH_6, _station_display_datas_79 },
+ { SPR_FLAT_WATER_TILE, _station_display_datas_80 },
+ { SPR_FLAT_WATER_TILE, _station_display_datas_81 },
+ { SPR_BUOY, _station_display_datas_82 },
+ { SPR_AIRPORT_RUNWAY_END, _station_display_datas_083 },
+ { SPR_AIRPORT_RUNWAY_EXIT_B, _station_display_datas_084 },
+ { SPR_AIRPORT_APRON, _station_display_datas_085 },
+ { SPR_AIRPORT_APRON, _station_display_datas_086 },
+ { SPR_AIRPORT_APRON, _station_display_datas_087 },
+ { SPR_AIRPORT_RUNWAY_END, _station_display_datas_088 },
+ { SPR_AIRPORT_RUNWAY_EXIT_B, _station_display_datas_089 },
+ { SPR_AIRPORT_APRON, _station_display_datas_090 },
+ { SPR_AIRPORT_APRON, _station_display_datas_091 },
+ { SPR_AIRPORT_APRON, _station_display_datas_092 },
+ { SPR_AIRPORT_APRON, _station_display_datas_093 },
+ { SPR_AIRPORT_APRON, _station_display_datas_094 },
+ { SPR_AIRPORT_APRON, _station_display_datas_095 },
+ { SPR_AIRPORT_APRON, _station_display_datas_096 },
+ { SPR_AIRPORT_APRON, _station_display_datas_097 },
+ { SPR_AIRPORT_APRON, _station_display_datas_098 },
+ { SPR_AIRPORT_APRON, _station_display_datas_099 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0100 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0101 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0102 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0103 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0104 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0105 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0106 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0107 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0108 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0109 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0110 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0111 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0112 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0113 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0114 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0115 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0116 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0117 },
+ { SPR_AIRPORT_RUNWAY_END, _station_display_datas_0118 },
+ { SPR_AIRPORT_RUNWAY_END, _station_display_datas_0119 },
+ { SPR_AIRPORT_RUNWAY_END, _station_display_datas_0120 },
+ { SPR_AIRPORT_RUNWAY_END, _station_display_datas_0121 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0122 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0123 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0124 },
+ { SPR_NSRUNWAY1, _station_display_datas_0125 },
+ { SPR_NSRUNWAY_END, _station_display_datas_0126 },
+ { SPR_NSRUNWAY1, _station_display_datas_0127 },
+ { SPR_NSRUNWAY_END, _station_display_datas_0128 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0129 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0130 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0131 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0132 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0133 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0134 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0135 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0136 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0137 },
+ { SPR_AIRPORT_AIRCRAFT_STAND, _station_display_datas_0138 },
+ { SPR_AIRPORT_AIRCRAFT_STAND, _station_display_datas_0139 },
+ { SPR_AIRPORT_AIRCRAFT_STAND, _station_display_datas_0140 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0141 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0142 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0143 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0144 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0145 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0146 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0147 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0148 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0149 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0150 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0151 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0152 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0153 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0154 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0155 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0156 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0157 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0158 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0159 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0160 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0161 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0162 },
+ { SPR_AIRPORT_APRON, _station_display_datas_0163 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_58 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_59 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_60 },
+ { SPR_FLAT_GRASS_TILE, _station_display_datas_61 },
+};
diff --git a/src/table/town_land.h b/src/table/town_land.h
new file mode 100644
index 000000000..0a634aa44
--- /dev/null
+++ b/src/table/town_land.h
@@ -0,0 +1,2226 @@
+/* $Id$ */
+
+/** @file town_land.h */
+
+enum {
+ HOUSE_TEMP_CHURCH = 0x03,
+ HOUSE_STADIUM = 0x14,
+ HOUSE_MODERN_STADIUM = 0x20,
+ HOUSE_ARCT_CHURCH = 0x3c,
+ HOUSE_SNOW_CHURCH = 0x3d,
+ HOUSE_TROP_CHURCH = 0x53,
+ HOUSE_TOY_CHURCH = 0x5b,
+
+ HOUSE_MAX = 110
+};
+
+/** Writes the data into the Town Tile Drawing Struct
+ * @param s1 The first sprite of the building, mostly the ground sprite
+ * @param s2 The second sprite of the building.
+ * @param sx The x-position of the sprite within the tile
+ * @param xy the y-position of the sprite within the tile
+ * @param w the width of the sprite
+ * @param h the height of the sprite
+ * @param dz the virtual height of the sprite
+ * @param p set to 1 if a lift is present
+ * @see DrawTownTileStruct
+ */
+#define M(s1, s2, sx, sy, w, h, dz, p) {s1, s2, sx, sy, w - 1, h - 1, dz, p}
+
+static const DrawBuildingsTileStruct _town_draw_tile_data[] = {
+ M( 0xf54, 0x58d, 0, 0, 14, 14, 8, 0),
+ M( 0xf54, 0x58e, 0, 0, 14, 14, 60, 0),
+ M( 0xf54, 0x58f, 0, 0, 14, 14, 60, 0),
+ M( 0x590, 0x58f, 0, 0, 14, 14, 60, 0),
+ M( 0xf54, 0x58d, 0, 0, 14, 14, 8, 0),
+ M( 0xf54, 0x58e, 0, 0, 14, 14, 60, 0),
+ M( 0xf54, 0x591, 0, 0, 14, 14, 60, 0),
+ M( 0x590, 0x591, 0, 0, 14, 14, 60, 0),
+ M( 0xf54, 0x58d | PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 8, 0),
+ M( 0xf54, 0x58e | PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0),
+ M( 0xf54, 0x591 | PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0),
+ M( 0x590, 0x591 | PALETTE_TO_STRUCT_WHITE, 0, 0, 14, 14, 60, 0),
+ M( 0xf54, 0x58d | PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 8, 0),
+ M( 0xf54, 0x58e | PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0),
+ M( 0xf54, 0x591 | PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0),
+ M( 0x590, 0x591 | PALETTE_TO_STRUCT_CONCRETE, 0, 0, 14, 14, 60, 0),
+ M( 0xf54, 0x592, 0, 0, 14, 16, 11, 0),
+ M( 0xf54, 0x593, 0, 0, 14, 16, 33, 0),
+ M( 0xf54, 0x594, 0, 0, 14, 16, 33, 0),
+ M( 0x595, 0x594, 0, 0, 14, 16, 33, 0),
+ M( 0xf54, 0x592 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 11, 0),
+ M( 0xf54, 0x593 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0),
+ M( 0xf54, 0x594 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0),
+ M( 0x595, 0x594 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 33, 0),
+ M( 0xf54, 0x592 | PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 11, 0),
+ M( 0xf54, 0x593 | PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0),
+ M( 0xf54, 0x594 | PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0),
+ M( 0x595, 0x594 | PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 33, 0),
+ M( 0xf54, 0x592 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 11, 0),
+ M( 0xf54, 0x593 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0),
+ M( 0xf54, 0x594 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0),
+ M( 0x595, 0x594 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 33, 0),
+ M( 0xf54, 0x596, 0, 0, 12, 12, 6, 0),
+ M( 0xf54, 0x597, 0, 0, 12, 12, 17, 0),
+ M( 0xf54, 0x598, 0, 0, 12, 12, 17, 0),
+ M( 0x599, 0x598, 0, 0, 12, 12, 17, 0),
+ M( 0xf54, 0x596, 0, 0, 12, 12, 6, 0),
+ M( 0xf54, 0x597, 0, 0, 12, 12, 17, 0),
+ M( 0xf54, 0x598, 0, 0, 12, 12, 17, 0),
+ M( 0x599, 0x598, 0, 0, 12, 12, 17, 0),
+ M( 0xf54, 0x596, 0, 0, 12, 12, 6, 0),
+ M( 0xf54, 0x597, 0, 0, 12, 12, 17, 0),
+ M( 0xf54, 0x598, 0, 0, 12, 12, 17, 0),
+ M( 0x599, 0x598, 0, 0, 12, 12, 17, 0),
+ M( 0xf54, 0x596, 0, 0, 12, 12, 6, 0),
+ M( 0xf54, 0x597, 0, 0, 12, 12, 17, 0),
+ M( 0xf54, 0x598, 0, 0, 12, 12, 17, 0),
+ M( 0x599, 0x598, 0, 0, 12, 12, 17, 0),
+ M( 0xf54, 0x59a, 0, 0, 14, 16, 16, 0),
+ M( 0xf54, 0x59b, 0, 0, 14, 16, 22, 0),
+ M( 0xf54, 0x59c, 0, 0, 14, 16, 35, 0),
+ M( 0x59d, 0x59c, 0, 0, 14, 16, 35, 0),
+ M( 0xf54, 0x59a | PALETTE_59E, 0, 0, 14, 16, 16, 0),
+ M( 0xf54, 0x59b | PALETTE_59E, 0, 0, 14, 16, 22, 0),
+ M( 0xf54, 0x59c | PALETTE_59E, 0, 0, 14, 16, 35, 0),
+ M( 0x59d, 0x59c | PALETTE_59E, 0, 0, 14, 16, 35, 0),
+ M( 0xf54, 0x59a | PALETTE_59F, 0, 0, 14, 16, 16, 0),
+ M( 0xf54, 0x59b | PALETTE_59F, 0, 0, 14, 16, 22, 0),
+ M( 0xf54, 0x59c | PALETTE_59F, 0, 0, 14, 16, 35, 0),
+ M( 0x59d, 0x59c | PALETTE_59F, 0, 0, 14, 16, 35, 0),
+ M( 0xf54, 0x59a | PALETTE_59F, 0, 0, 14, 16, 16, 0),
+ M( 0xf54, 0x59b | PALETTE_59F, 0, 0, 14, 16, 22, 0),
+ M( 0xf54, 0x59c | PALETTE_59F, 0, 0, 14, 16, 35, 0),
+ M( 0x59d, 0x59c | PALETTE_59F, 0, 0, 14, 16, 35, 0),
+ M( 0xf54, 0x5a0, 0, 0, 15, 15, 5, 0),
+ M( 0xf54, 0x5a1, 0, 0, 15, 15, 53, 0),
+ M( 0xf54, 0x5a2, 0, 0, 15, 15, 53, 0),
+ M( 0x58c, 0x5a2, 0, 0, 15, 15, 53, 1),
+ M( 0xf54, 0x5a0, 0, 0, 15, 15, 5, 0),
+ M( 0xf54, 0x5a1, 0, 0, 15, 15, 53, 0),
+ M( 0xf54, 0x5a2, 0, 0, 15, 15, 53, 0),
+ M( 0x58c, 0x5a2, 0, 0, 15, 15, 53, 1),
+ M( 0xf54, 0x5a0, 0, 0, 15, 15, 5, 0),
+ M( 0xf54, 0x5a1, 0, 0, 15, 15, 53, 0),
+ M( 0xf54, 0x5a2, 0, 0, 15, 15, 53, 0),
+ M( 0x58c, 0x5a2, 0, 0, 15, 15, 53, 1),
+ M( 0xf54, 0x5a0, 0, 0, 15, 15, 5, 0),
+ M( 0xf54, 0x5a1, 0, 0, 15, 15, 53, 0),
+ M( 0xf54, 0x5a2, 0, 0, 15, 15, 53, 0),
+ M( 0x58c, 0x5a2, 0, 0, 15, 15, 53, 1),
+ M( 0xf54, 0x5a0, 0, 0, 15, 15, 5, 0),
+ M( 0xf54, 0x5a1, 0, 0, 15, 15, 53, 0),
+ M( 0xf54, 0x11d9, 0, 0, 15, 15, 53, 0),
+ M( 0x58c, 0x11d9, 0, 0, 15, 15, 53, 1),
+ M( 0xf54, 0x5a0, 0, 0, 15, 15, 5, 0),
+ M( 0xf54, 0x5a1, 0, 0, 15, 15, 53, 0),
+ M( 0xf54, 0x11d9, 0, 0, 15, 15, 53, 0),
+ M( 0x58c, 0x11d9, 0, 0, 15, 15, 53, 1),
+ M( 0xf54, 0x5a0, 0, 0, 15, 15, 5, 0),
+ M( 0xf54, 0x5a1, 0, 0, 15, 15, 53, 0),
+ M( 0xf54, 0x11d9, 0, 0, 15, 15, 53, 0),
+ M( 0x58c, 0x11d9, 0, 0, 15, 15, 53, 1),
+ M( 0xf54, 0x5a0, 0, 0, 15, 15, 5, 0),
+ M( 0xf54, 0x5a1, 0, 0, 15, 15, 53, 0),
+ M( 0xf54, 0x11d9, 0, 0, 15, 15, 53, 0),
+ M( 0x58c, 0x11d9, 0, 0, 15, 15, 53, 1),
+ M( 0xf54, 0x5a4, 0, 0, 16, 16, 16, 0),
+ M( 0xf54, 0x5a5, 0, 0, 16, 16, 16, 0),
+ M( 0xf54, 0x5a6, 0, 0, 16, 16, 16, 0),
+ M( 0x5a7, 0x5a6, 0, 0, 16, 16, 16, 0),
+ M( 0xf54, 0x5a4, 0, 0, 16, 16, 16, 0),
+ M( 0xf54, 0x5a5, 0, 0, 16, 16, 16, 0),
+ M( 0xf54, 0x5a6, 0, 0, 16, 16, 16, 0),
+ M( 0x5a7, 0x5a6, 0, 0, 16, 16, 16, 0),
+ M( 0x5dd, 0x5de, 0, 0, 16, 16, 16, 0),
+ M( 0x5df, 0x5e0, 0, 0, 16, 16, 16, 0),
+ M( 0x5e1, 0x5e2, 0, 0, 16, 16, 16, 0),
+ M( 0x5e1, 0x5e2, 0, 0, 16, 16, 16, 0),
+ M( 0x5dd, 0x5de, 0, 0, 16, 16, 16, 0),
+ M( 0x5df, 0x5e0, 0, 0, 16, 16, 16, 0),
+ M( 0x5e1, 0x5e2, 0, 0, 16, 16, 16, 0),
+ M( 0x5e1, 0x5e2, 0, 0, 16, 16, 16, 0),
+ M( 0xf54, 0x5a8, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x5a9, 0, 0, 16, 16, 38, 0),
+ M( 0xf54, 0x5aa, 0, 0, 16, 16, 45, 0),
+ M( 0x58c, 0x5aa, 0, 0, 16, 16, 45, 0),
+ M( 0xf54, 0x5a8, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x5a9, 0, 0, 16, 16, 38, 0),
+ M( 0xf54, 0x5aa, 0, 0, 16, 16, 45, 0),
+ M( 0x58c, 0x5aa, 0, 0, 16, 16, 45, 0),
+ M( 0xf54, 0x5a8, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x5a9, 0, 0, 16, 16, 38, 0),
+ M( 0xf54, 0x5aa, 0, 0, 16, 16, 45, 0),
+ M( 0x58c, 0x5aa, 0, 0, 16, 16, 45, 0),
+ M( 0xf54, 0x5a8, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x5a9, 0, 0, 16, 16, 38, 0),
+ M( 0xf54, 0x5aa, 0, 0, 16, 16, 45, 0),
+ M( 0x58c, 0x5aa, 0, 0, 16, 16, 45, 0),
+ M( 0xf54, 0x5ab, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x5ac, 0, 0, 16, 16, 38, 0),
+ M( 0xf54, 0x5ad, 0, 0, 16, 16, 45, 0),
+ M( 0x58c, 0x5ad, 0, 0, 16, 16, 45, 0),
+ M( 0xf54, 0x5ab, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x5ac, 0, 0, 16, 16, 38, 0),
+ M( 0xf54, 0x5ad, 0, 0, 16, 16, 45, 0),
+ M( 0x58c, 0x5ad, 0, 0, 16, 16, 45, 0),
+ M( 0xf54, 0x5ab, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x5ac, 0, 0, 16, 16, 38, 0),
+ M( 0xf54, 0x5ad, 0, 0, 16, 16, 45, 0),
+ M( 0x58c, 0x5ad, 0, 0, 16, 16, 45, 0),
+ M( 0xf54, 0x5ab, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x5ac, 0, 0, 16, 16, 38, 0),
+ M( 0xf54, 0x5ad, 0, 0, 16, 16, 45, 0),
+ M( 0x58c, 0x5ad, 0, 0, 16, 16, 45, 0),
+ M( 0xf54, 0x0, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x0, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x5ae, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x5ae, 6, 5, 3, 6, 8, 0),
+ M( 0xf54, 0x0, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x0, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x5ae, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x5ae, 6, 5, 3, 6, 8, 0),
+ M( 0xf54, 0x0, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x0, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x5ae, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x5ae, 6, 5, 3, 6, 8, 0),
+ M( 0xf54, 0x0, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x0, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x5ae, 6, 5, 3, 6, 8, 0),
+ M( 0x58c, 0x5ae, 6, 5, 3, 6, 8, 0),
+ M( 0xf54, 0x0, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x0, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x5af, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x5af, 3, 3, 9, 9, 8, 0),
+ M( 0xf54, 0x0, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x0, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x5af, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x5af, 3, 3, 9, 9, 8, 0),
+ M( 0xf54, 0x0, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x0, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x5af, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x5af, 3, 3, 9, 9, 8, 0),
+ M( 0xf54, 0x0, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x0, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x5af, 3, 3, 9, 9, 8, 0),
+ M( 0x58c, 0x5af, 3, 3, 9, 9, 8, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b0, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf8d, 0x5b1, 0, 0, 16, 16, 15, 0),
+ M( 0xf54, 0x5b2, 0, 0, 16, 16, 8, 0),
+ M( 0xf54, 0x5b3, 0, 0, 16, 16, 42, 0),
+ M( 0xf54, 0x5b4, 0, 0, 16, 16, 42, 0),
+ M( 0x58c, 0x5b4, 0, 0, 16, 16, 42, 0),
+ M( 0xf54, 0x5b2 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 8, 0),
+ M( 0xf54, 0x5b3 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0),
+ M( 0xf54, 0x5b4 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0),
+ M( 0x58c, 0x5b4 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 42, 0),
+ M( 0xf54, 0x5b2 | PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 8, 0),
+ M( 0xf54, 0x5b3 | PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0),
+ M( 0xf54, 0x5b4 | PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0),
+ M( 0x58c, 0x5b4 | PALETTE_TO_STRUCT_RED, 0, 0, 16, 16, 42, 0),
+ M( 0xf54, 0x5b2 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 8, 0),
+ M( 0xf54, 0x5b3 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0),
+ M( 0xf54, 0x5b4 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0),
+ M( 0x58c, 0x5b4 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 42, 0),
+ M( 0xf54, 0x5b5, 1, 3, 14, 11, 7, 0),
+ M( 0xf54, 0x5b6, 1, 3, 14, 11, 53, 0),
+ M( 0xf54, 0x5b7, 1, 3, 14, 11, 53, 0),
+ M( 0x58c, 0x5b7, 1, 3, 14, 11, 53, 0),
+ M( 0xf54, 0x5b5, 1, 3, 14, 11, 7, 0),
+ M( 0xf54, 0x5b6, 1, 3, 14, 11, 53, 0),
+ M( 0xf54, 0x5b7, 1, 3, 14, 11, 53, 0),
+ M( 0x58c, 0x5b7, 1, 3, 14, 11, 53, 0),
+ M( 0xf54, 0x5b5, 1, 3, 14, 11, 7, 0),
+ M( 0xf54, 0x5b6, 1, 3, 14, 11, 53, 0),
+ M( 0xf54, 0x5b7, 1, 3, 14, 11, 53, 0),
+ M( 0x58c, 0x5b7, 1, 3, 14, 11, 53, 0),
+ M( 0xf54, 0x5b5, 1, 3, 14, 11, 7, 0),
+ M( 0xf54, 0x5b6, 1, 3, 14, 11, 53, 0),
+ M( 0xf54, 0x5b7, 1, 3, 14, 11, 53, 0),
+ M( 0x58c, 0x5b7, 1, 3, 14, 11, 53, 0),
+ M( 0xf54, 0x5b8, 3, 1, 11, 14, 6, 0),
+ M( 0xf54, 0x5b9, 3, 1, 11, 14, 28, 0),
+ M( 0xf54, 0x5ba, 3, 1, 11, 14, 28, 0),
+ M( 0x58c, 0x5ba, 3, 1, 11, 14, 28, 0),
+ M( 0xf54, 0x5b8, 3, 1, 11, 14, 6, 0),
+ M( 0xf54, 0x5b9, 3, 1, 11, 14, 28, 0),
+ M( 0xf54, 0x5ba, 3, 1, 11, 14, 28, 0),
+ M( 0x58c, 0x5ba, 3, 1, 11, 14, 28, 0),
+ M( 0xf54, 0x5b8, 3, 1, 11, 14, 6, 0),
+ M( 0xf54, 0x5b9, 3, 1, 11, 14, 28, 0),
+ M( 0xf54, 0x5ba, 3, 1, 11, 14, 28, 0),
+ M( 0x58c, 0x5ba, 3, 1, 11, 14, 28, 0),
+ M( 0xf54, 0x5b8, 3, 1, 11, 14, 6, 0),
+ M( 0xf54, 0x5b9, 3, 1, 11, 14, 28, 0),
+ M( 0xf54, 0x5ba, 3, 1, 11, 14, 28, 0),
+ M( 0x58c, 0x5ba, 3, 1, 11, 14, 28, 0),
+ M( 0xf54, 0x5bb, 2, 0, 13, 16, 6, 0),
+ M( 0xf54, 0x5bc, 2, 0, 13, 16, 45, 0),
+ M( 0xf54, 0x5bd, 2, 0, 13, 16, 46, 0),
+ M( 0x58c, 0x5bd, 2, 0, 13, 16, 46, 0),
+ M( 0xf54, 0x5bb, 2, 0, 13, 16, 6, 0),
+ M( 0xf54, 0x5bc, 2, 0, 13, 16, 45, 0),
+ M( 0xf54, 0x5bd, 2, 0, 13, 16, 46, 0),
+ M( 0x58c, 0x5bd, 2, 0, 13, 16, 46, 0),
+ M( 0xf54, 0x5bb | PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 6, 0),
+ M( 0xf54, 0x5bc | PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 45, 0),
+ M( 0xf54, 0x5bd | PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 46, 0),
+ M( 0x58c, 0x5bd | PALETTE_TO_STRUCT_BLUE, 2, 0, 13, 16, 46, 0),
+ M( 0xf54, 0x5bb | PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 6, 0),
+ M( 0xf54, 0x5bc | PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 45, 0),
+ M( 0xf54, 0x5bd | PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 46, 0),
+ M( 0x58c, 0x5bd | PALETTE_TO_STRUCT_WHITE, 2, 0, 13, 16, 46, 0),
+ M( 0xf54, 0x5be | PALETTE_TO_RED, 2, 0, 13, 16, 13, 0),
+ M( 0xf54, 0x5bf | PALETTE_TO_RED, 2, 0, 13, 16, 110, 0),
+ M( 0xf54, 0x5c0 | PALETTE_TO_RED, 2, 0, 13, 16, 110, 0),
+ M( 0x58c, 0x5c0 | PALETTE_TO_RED, 2, 0, 13, 16, 110, 0),
+ M( 0xf54, 0x5be | PALETTE_TO_BLUE, 2, 0, 13, 16, 13, 0),
+ M( 0xf54, 0x5bf | PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0),
+ M( 0xf54, 0x5c0 | PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0),
+ M( 0x58c, 0x5c0 | PALETTE_TO_BLUE, 2, 0, 13, 16, 110, 0),
+ M( 0xf54, 0x5be | PALETTE_TO_ORANGE, 2, 0, 13, 16, 13, 0),
+ M( 0xf54, 0x5bf | PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0),
+ M( 0xf54, 0x5c0 | PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0),
+ M( 0x58c, 0x5c0 | PALETTE_TO_ORANGE, 2, 0, 13, 16, 110, 0),
+ M( 0xf54, 0x5be | PALETTE_TO_GREEN, 2, 0, 13, 16, 13, 0),
+ M( 0xf54, 0x5bf | PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0),
+ M( 0xf54, 0x5c0 | PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0),
+ M( 0x58c, 0x5c0 | PALETTE_TO_GREEN, 2, 0, 13, 16, 110, 0),
+ M( 0xf54, 0x5c1, 1, 2, 15, 12, 4, 0),
+ M( 0xf54, 0x5c2, 1, 2, 15, 12, 24, 0),
+ M( 0xf54, 0x5c3, 1, 2, 15, 12, 31, 0),
+ M( 0x58c, 0x5c3, 1, 2, 15, 12, 31, 0),
+ M( 0xf54, 0x5c1, 1, 2, 15, 12, 4, 0),
+ M( 0xf54, 0x5c2, 1, 2, 15, 12, 24, 0),
+ M( 0xf54, 0x5c3, 1, 2, 15, 12, 31, 0),
+ M( 0x58c, 0x5c3, 1, 2, 15, 12, 31, 0),
+ M( 0xf54, 0x5c1, 1, 2, 15, 12, 4, 0),
+ M( 0xf54, 0x5c2, 1, 2, 15, 12, 24, 0),
+ M( 0xf54, 0x5c3, 1, 2, 15, 12, 31, 0),
+ M( 0x58c, 0x5c3, 1, 2, 15, 12, 31, 0),
+ M( 0xf54, 0x5c1, 1, 2, 15, 12, 4, 0),
+ M( 0xf54, 0x5c2, 1, 2, 15, 12, 24, 0),
+ M( 0xf54, 0x5c3, 1, 2, 15, 12, 31, 0),
+ M( 0x58c, 0x5c3, 1, 2, 15, 12, 31, 0),
+ M( 0xf54, 0x5c4, 1, 0, 14, 15, 20, 0),
+ M( 0xf54, 0x5c5, 1, 0, 14, 15, 42, 0),
+ M( 0xf54, 0x5c6, 1, 0, 14, 15, 42, 0),
+ M( 0x58c, 0x5c6, 1, 0, 14, 15, 42, 0),
+ M( 0xf54, 0x5c4, 1, 0, 14, 15, 20, 0),
+ M( 0xf54, 0x5c5, 1, 0, 14, 15, 42, 0),
+ M( 0xf54, 0x5c6, 1, 0, 14, 15, 42, 0),
+ M( 0x58c, 0x5c6, 1, 0, 14, 15, 42, 0),
+ M( 0xf54, 0x5c4, 1, 0, 14, 15, 20, 0),
+ M( 0xf54, 0x5c5, 1, 0, 14, 15, 42, 0),
+ M( 0xf54, 0x5c6, 1, 0, 14, 15, 42, 0),
+ M( 0x58c, 0x5c6, 1, 0, 14, 15, 42, 0),
+ M( 0xf54, 0x5c4, 1, 0, 14, 15, 20, 0),
+ M( 0xf54, 0x5c5, 1, 0, 14, 15, 42, 0),
+ M( 0xf54, 0x5c6, 1, 0, 14, 15, 42, 0),
+ M( 0x58c, 0x5c6, 1, 0, 14, 15, 42, 0),
+ M( 0x5c7, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c7, 0x5cb, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c8, 0x5cc, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5c9, 0x5cd, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0x5ca, 0x5ce, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x5d4, 0, 0, 16, 16, 22, 0),
+ M( 0x5d3, 0x5d4, 0, 0, 16, 16, 22, 0),
+ M( 0x5d3, 0x5d4, 0, 0, 16, 16, 22, 0),
+ M( 0x5d3, 0x5d4, 0, 0, 16, 16, 22, 0),
+ M( 0xf54, 0x5d6, 0, 0, 16, 16, 22, 0),
+ M( 0x5d5, 0x5d6, 0, 0, 16, 16, 22, 0),
+ M( 0x5d5, 0x5d6, 0, 0, 16, 16, 22, 0),
+ M( 0x5d5, 0x5d6, 0, 0, 16, 16, 22, 0),
+ M( 0xf54, 0x5d0, 0, 0, 16, 16, 21, 0),
+ M( 0x5cf, 0x5d0, 0, 0, 16, 16, 21, 0),
+ M( 0x5cf, 0x5d0, 0, 0, 16, 16, 21, 0),
+ M( 0x5cf, 0x5d0, 0, 0, 16, 16, 21, 0),
+ M( 0xf54, 0x5d2, 0, 0, 16, 16, 11, 0),
+ M( 0x5d1, 0x5d2, 0, 0, 16, 16, 11, 0),
+ M( 0x5d1, 0x5d2, 0, 0, 16, 16, 11, 0),
+ M( 0x5d1, 0x5d2, 0, 0, 16, 16, 11, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0x5d7, 0x5d8, 0, 0, 16, 16, 22, 0),
+ M( 0x5d9, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x5da, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x5db, 0x5dc, 0, 0, 16, 16, 22, 0),
+ M( 0x5db, 0x5dc, 0, 0, 16, 16, 22, 0),
+ M( 0x622, 0x623, 0, 0, 16, 16, 22, 0),
+ M( 0x624, 0x625, 0, 0, 16, 16, 22, 0),
+ M( 0x626, 0x627, 0, 0, 16, 16, 22, 0),
+ M( 0x626, 0x627, 0, 0, 16, 16, 22, 0),
+ M( 0x5e3, 0x5e4, 0, 0, 16, 16, 22, 0),
+ M( 0x5e5, 0x5e6, 0, 0, 16, 16, 22, 0),
+ M( 0x5e7, 0x5e8, 0, 0, 16, 16, 22, 0),
+ M( 0x5e7, 0x5e8, 0, 0, 16, 16, 22, 0),
+ M( 0x5e9, 0x5ea, 0, 0, 16, 16, 22, 0),
+ M( 0x5eb, 0x5ec, 0, 0, 16, 16, 22, 0),
+ M( 0x5ed, 0x5ee, 0, 0, 16, 16, 22, 0),
+ M( 0x5ed, 0x5ee, 0, 0, 16, 16, 22, 0),
+ M( 0x5ef, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x5f0, 0x5f1, 0, 0, 16, 16, 22, 0),
+ M( 0x5f2, 0x5f3, 0, 0, 16, 16, 22, 0),
+ M( 0x5f2, 0x5f3, 0, 0, 16, 16, 22, 0),
+ M( 0x5ef, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x5f0, 0x5f1, 0, 0, 16, 16, 22, 0),
+ M( 0x5f2, 0x5f3, 0, 0, 16, 16, 22, 0),
+ M( 0x5f2, 0x5f3, 0, 0, 16, 16, 22, 0),
+ M( 0x5f4, 0x5f5, 0, 0, 16, 16, 22, 0),
+ M( 0x5f6, 0x5f7, 0, 0, 16, 16, 22, 0),
+ M( 0x5f8, 0x5f9, 0, 0, 16, 16, 22, 0),
+ M( 0x5f8, 0x5f9, 0, 0, 16, 16, 22, 0),
+ M( 0x5f4, 0x5f5, 0, 0, 16, 16, 22, 0),
+ M( 0x5f6, 0x5f7, 0, 0, 16, 16, 22, 0),
+ M( 0x5f8, 0x5f9, 0, 0, 16, 16, 22, 0),
+ M( 0x5f8, 0x5f9, 0, 0, 16, 16, 22, 0),
+ M( 0x5fa, 0x5fb, 0, 0, 16, 16, 85, 0),
+ M( 0x5fc, 0x5fd, 0, 0, 16, 16, 85, 0),
+ M( 0x5fe, 0x5ff, 0, 0, 16, 16, 85, 0),
+ M( 0x5fe, 0x5ff, 0, 0, 16, 16, 85, 0),
+ M( 0x5fa, 0x5fb, 0, 0, 16, 16, 85, 0),
+ M( 0x5fc, 0x5fd, 0, 0, 16, 16, 85, 0),
+ M( 0x5fe, 0x5ff, 0, 0, 16, 16, 85, 0),
+ M( 0x5fe, 0x5ff, 0, 0, 16, 16, 85, 0),
+ M( 0x60a, 0x60b, 0, 0, 16, 16, 95, 0),
+ M( 0x60c, 0x60d, 0, 0, 16, 16, 95, 0),
+ M( 0x60e, 0x60f, 0, 0, 16, 16, 95, 0),
+ M( 0x60e, 0x60f, 0, 0, 16, 16, 95, 0),
+ M( 0x60a, 0x60b, 0, 0, 16, 16, 95, 0),
+ M( 0x60c, 0x60d, 0, 0, 16, 16, 95, 0),
+ M( 0x60e, 0x60f, 0, 0, 16, 16, 95, 0),
+ M( 0x60e, 0x60f, 0, 0, 16, 16, 95, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x600, 0x601, 0, 0, 16, 16, 55, 0),
+ M( 0x600, 0x601, 0, 0, 16, 16, 55, 0),
+ M( 0x600, 0x601, 0, 0, 16, 16, 55, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x600 | PALETTE_TO_STRUCT_WHITE, 0x601 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0),
+ M( 0x600 | PALETTE_TO_STRUCT_WHITE, 0x601 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0),
+ M( 0x600 | PALETTE_TO_STRUCT_WHITE, 0x601 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 55, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x602, 0x603, 0, 0, 16, 16, 42, 0),
+ M( 0x602, 0x603, 0, 0, 16, 16, 42, 0),
+ M( 0x602, 0x603, 0, 0, 16, 16, 42, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x602 | PALETTE_TO_STRUCT_CONCRETE, 0x603 | PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0),
+ M( 0x602 | PALETTE_TO_STRUCT_CONCRETE, 0x603 | PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0),
+ M( 0x602 | PALETTE_TO_STRUCT_CONCRETE, 0x603 | PALETTE_TO_STRUCT_CONCRETE, 0, 0, 16, 16, 42, 0),
+ M( 0x604, 0x605, 0, 0, 16, 16, 88, 0),
+ M( 0x606, 0x607, 0, 0, 16, 16, 88, 0),
+ M( 0x608, 0x609, 0, 0, 16, 16, 88, 0),
+ M( 0x608, 0x609, 0, 0, 16, 16, 88, 0),
+ M( 0x604, 0x605, 0, 0, 16, 16, 88, 0),
+ M( 0x606, 0x607, 0, 0, 16, 16, 88, 0),
+ M( 0x608, 0x609, 0, 0, 16, 16, 88, 0),
+ M( 0x608, 0x609, 0, 0, 16, 16, 88, 0),
+ M( 0x604, 0x605, 0, 0, 16, 16, 88, 0),
+ M( 0x606, 0x607, 0, 0, 16, 16, 88, 0),
+ M( 0x608, 0x609, 0, 0, 16, 16, 88, 0),
+ M( 0x608, 0x609, 0, 0, 16, 16, 88, 0),
+ M( 0x604, 0x605, 0, 0, 16, 16, 88, 0),
+ M( 0x606, 0x607, 0, 0, 16, 16, 88, 0),
+ M( 0x608, 0x609, 0, 0, 16, 16, 88, 0),
+ M( 0x608, 0x609, 0, 0, 16, 16, 88, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0x610, 0x611, 0, 0, 16, 16, 40, 0),
+ M( 0x612, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x612, 0x616, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x613, 0x617, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x614, 0x618, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0x615, 0x619, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x61a, 0x61b, 0, 0, 16, 16, 100, 0),
+ M( 0x61a, 0x61b, 0, 0, 16, 16, 100, 0),
+ M( 0x61c, 0x61d, 0, 0, 16, 16, 100, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x61a, 0x61b, 0, 0, 16, 16, 100, 0),
+ M( 0x61a, 0x61b, 0, 0, 16, 16, 100, 0),
+ M( 0x61c, 0x61d, 0, 0, 16, 16, 100, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x61a, 0x61b, 0, 0, 16, 16, 100, 0),
+ M( 0x61a, 0x61b, 0, 0, 16, 16, 100, 0),
+ M( 0x61c, 0x61d, 0, 0, 16, 16, 100, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x61a, 0x61b, 0, 0, 16, 16, 100, 0),
+ M( 0x61a, 0x61b, 0, 0, 16, 16, 100, 0),
+ M( 0x61c, 0x61d, 0, 0, 16, 16, 100, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x61e, 0x61f, 0, 0, 16, 16, 25, 0),
+ M( 0x61e, 0x61f, 0, 0, 16, 16, 25, 0),
+ M( 0x61e, 0x61f, 0, 0, 16, 16, 25, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x61e | PALETTE_TO_STRUCT_WHITE, 0x61f | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0),
+ M( 0x61e | PALETTE_TO_STRUCT_WHITE, 0x61f | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0),
+ M( 0x61e | PALETTE_TO_STRUCT_WHITE, 0x61f | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x620, 0x621, 0, 0, 16, 16, 25, 0),
+ M( 0x620, 0x621, 0, 0, 16, 16, 25, 0),
+ M( 0x620, 0x621, 0, 0, 16, 16, 25, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x620 | PALETTE_TO_CREAM, 0x621 | PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0),
+ M( 0x620 | PALETTE_TO_CREAM, 0x621 | PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0),
+ M( 0x620 | PALETTE_TO_CREAM, 0x621 | PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M(0x11da, 0x11db, 0, 0, 16, 16, 25, 0),
+ M(0x11da, 0x11db, 0, 0, 16, 16, 25, 0),
+ M(0x11da, 0x11db, 0, 0, 16, 16, 25, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x11da | PALETTE_TO_STRUCT_WHITE, 0x11db | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0),
+ M( 0x11da | PALETTE_TO_STRUCT_WHITE, 0x11db | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0),
+ M( 0x11da | PALETTE_TO_STRUCT_WHITE, 0x11db | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 25, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M(0x11dc, 0x11dd, 0, 0, 16, 16, 25, 0),
+ M(0x11dc, 0x11dd, 0, 0, 16, 16, 25, 0),
+ M(0x11dc, 0x11dd, 0, 0, 16, 16, 25, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M( 0x11dc | PALETTE_TO_CREAM, 0x11dd | PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0),
+ M( 0x11dc | PALETTE_TO_CREAM, 0x11dd | PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0),
+ M( 0x11dc | PALETTE_TO_CREAM, 0x11dd | PALETTE_TO_CREAM, 0, 0, 16, 16, 25, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 22, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M(0x1134, 0x1135, 0, 0, 16, 16, 40, 0),
+ M(0x1136, 0x1137, 0, 0, 16, 16, 20, 0),
+ M(0x1136, 0x1137, 0, 0, 16, 16, 20, 0),
+ M(0x113b, 0x113c, 0, 0, 16, 16, 20, 0),
+ M(0x113b, 0x113c, 0, 0, 16, 16, 20, 0),
+ M(0x1136, 0x1137, 0, 0, 16, 16, 20, 0),
+ M(0x1136, 0x1137, 0, 0, 16, 16, 20, 0),
+ M(0x113b, 0x113c, 0, 0, 16, 16, 20, 0),
+ M(0x113b, 0x113c, 0, 0, 16, 16, 20, 0),
+ M(0x1136, 0x1137, 0, 0, 16, 16, 20, 0),
+ M(0x1136, 0x1137, 0, 0, 16, 16, 20, 0),
+ M(0x113b, 0x113c, 0, 0, 16, 16, 20, 0),
+ M(0x113b, 0x113c, 0, 0, 16, 16, 20, 0),
+ M(0x1136, 0x1137, 0, 0, 16, 16, 20, 0),
+ M(0x1136, 0x1137, 0, 0, 16, 16, 20, 0),
+ M(0x113b, 0x113c, 0, 0, 16, 16, 20, 0),
+ M(0x113b, 0x113c, 0, 0, 16, 16, 20, 0),
+ M(0x1138, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1138, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113d, 0x113e, 0, 0, 16, 16, 20, 0),
+ M(0x113d, 0x113e, 0, 0, 16, 16, 20, 0),
+ M(0x1138, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1138, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113d, 0x113e, 0, 0, 16, 16, 20, 0),
+ M(0x113d, 0x113e, 0, 0, 16, 16, 20, 0),
+ M(0x1138, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1138, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113d, 0x113e, 0, 0, 16, 16, 20, 0),
+ M(0x113d, 0x113e, 0, 0, 16, 16, 20, 0),
+ M(0x1138, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1138, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113d, 0x113e, 0, 0, 16, 16, 20, 0),
+ M(0x113d, 0x113e, 0, 0, 16, 16, 20, 0),
+ M(0x1139, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1139, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113f, 0x1140, 0, 0, 16, 16, 20, 0),
+ M(0x113f, 0x1140, 0, 0, 16, 16, 20, 0),
+ M(0x1139, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1139, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113f, 0x1140, 0, 0, 16, 16, 20, 0),
+ M(0x113f, 0x1140, 0, 0, 16, 16, 20, 0),
+ M(0x1139, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1139, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113f, 0x1140, 0, 0, 16, 16, 20, 0),
+ M(0x113f, 0x1140, 0, 0, 16, 16, 20, 0),
+ M(0x1139, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1139, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113f, 0x1140, 0, 0, 16, 16, 20, 0),
+ M(0x113f, 0x1140, 0, 0, 16, 16, 20, 0),
+ M(0x113a, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113a, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1141, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1141, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113a, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113a, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1141, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1141, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113a, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113a, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1141, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1141, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113a, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x113a, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1141, 0x0, 0, 0, 16, 16, 20, 0),
+ M(0x1141, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1144, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1145, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1146, 0, 0, 16, 16, 40, 0),
+ M(0x1142, 0x1146, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1144, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1145, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1146, 0, 0, 16, 16, 40, 0),
+ M(0x1142, 0x1146, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1144, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1145, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1146, 0, 0, 16, 16, 40, 0),
+ M(0x1142, 0x1146, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1144, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1145, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1146, 0, 0, 16, 16, 40, 0),
+ M(0x1142, 0x1146, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1144, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1145, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1146, 0, 0, 16, 16, 40, 0),
+ M(0x1143, 0x1147, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1144, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1145, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1146, 0, 0, 16, 16, 40, 0),
+ M(0x1143, 0x1147, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1144, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1145, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1146, 0, 0, 16, 16, 40, 0),
+ M(0x1143, 0x1147, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1144, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1145, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1146, 0, 0, 16, 16, 40, 0),
+ M(0x1143, 0x1147, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1148, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1149, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114a, 0, 0, 16, 16, 40, 0),
+ M(0x1142, 0x114a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1148, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1149, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114a, 0, 0, 16, 16, 40, 0),
+ M(0x1142, 0x114a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1148, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1149, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114a, 0, 0, 16, 16, 40, 0),
+ M(0x1142, 0x114a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1148, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1149, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114a, 0, 0, 16, 16, 40, 0),
+ M(0x1142, 0x114a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1148, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1149, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114a, 0, 0, 16, 16, 40, 0),
+ M(0x1143, 0x114b, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1148, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1149, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114a, 0, 0, 16, 16, 40, 0),
+ M(0x1143, 0x114b, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1148, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1149, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114a, 0, 0, 16, 16, 40, 0),
+ M(0x1143, 0x114b, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1148, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1149, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114a, 0, 0, 16, 16, 40, 0),
+ M(0x1143, 0x114b, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114e, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114f, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1150, 0, 0, 16, 16, 40, 0),
+ M(0x114c, 0x1150, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114e | PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114f | PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1150 | PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0),
+ M(0x114c, 0x1150 | PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114e | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114f | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1150 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M(0x114c, 0x1150 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114e | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114f | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1150 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0),
+ M(0x114c, 0x1150 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114e, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114f, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1150, 0, 0, 16, 16, 40, 0),
+ M(0x114d, 0x1151, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114e | PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114f | PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1150 | PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0),
+ M(0x114d, 0x1151 | PALETTE_TO_PINK, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114e | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114f | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1150 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M(0x114d, 0x1151 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114e | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x114f | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1150 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0),
+ M(0x114d, 0x1151 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1153, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1154, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1155, 0, 0, 16, 16, 60, 0),
+ M(0x1152, 0x1155, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1153 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1154 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1155 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M(0x1152, 0x1155 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1153 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1154 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1155 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M(0x1152, 0x1155 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1153 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1154 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1155 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M(0x1152, 0x1155 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1153, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1154, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11de, 0, 0, 16, 16, 60, 0),
+ M(0x1152, 0x11de, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1153 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1154 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11de | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M(0x1152, 0x11de | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1153 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1154 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11de | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M(0x1152, 0x11de | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1153 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1154 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11de | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M(0x1152, 0x11de | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1157, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1158, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1159, 0, 0, 16, 16, 60, 0),
+ M(0x1156, 0x1159, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1157 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1158 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1159 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M(0x1156, 0x1159 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1157 | PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1158 | PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1159 | PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0),
+ M(0x1156, 0x1159 | PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1157 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1158 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1159 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M(0x1156, 0x1159 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1157, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1158, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11df, 0, 0, 16, 16, 60, 0),
+ M(0x1156, 0x11df, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1157 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1158 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11df | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M(0x1156, 0x11df | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1157 | PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1158 | PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11df | PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0),
+ M(0x1156, 0x11df | PALETTE_TO_CREAM, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1157 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1158 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11df | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M(0x1156, 0x11df | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115b, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115c, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115d, 0, 0, 16, 16, 60, 0),
+ M(0x115a, 0x115d, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115b | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115c | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115d | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M(0x115a, 0x115d | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115b | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115c | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115d | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M(0x115a, 0x115d | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115b | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115c | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115d | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M(0x115a, 0x115d | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115b, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115c, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e0, 0, 0, 16, 16, 60, 0),
+ M(0x115a, 0x11e0, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115b | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115c | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e0 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M(0x115a, 0x11e0 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115b | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115c | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e0 | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M(0x115a, 0x11e0 | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115b | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x115c | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e0 | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M(0x115a, 0x11e0 | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1160, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1161, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1162, 0, 0, 16, 16, 20, 0),
+ M(0x115e, 0x1162, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1160, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1161, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1162, 0, 0, 16, 16, 20, 0),
+ M(0x115e, 0x1162, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1166, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1167, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1168, 0, 0, 16, 16, 20, 0),
+ M(0x1164, 0x1168, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1166, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1167, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1168, 0, 0, 16, 16, 20, 0),
+ M(0x1164, 0x1168, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1160, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1161, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1162, 0, 0, 16, 16, 20, 0),
+ M(0x115f, 0x1163, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1160, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1161, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1162, 0, 0, 16, 16, 20, 0),
+ M(0x115f, 0x1163, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1166, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1167, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1168, 0, 0, 16, 16, 20, 0),
+ M(0x1165, 0x1169, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1166, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1167, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x1168, 0, 0, 16, 16, 20, 0),
+ M(0x1165, 0x1169, 0, 0, 16, 16, 20, 0),
+ M(0x116b, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116d, 0, 0, 16, 16, 40, 0),
+ M(0x116a, 0x116d, 0, 0, 16, 16, 40, 0),
+ M(0x116b, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116d, 0, 0, 16, 16, 40, 0),
+ M(0x116a, 0x116d, 0, 0, 16, 16, 40, 0),
+ M(0x116b, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116d, 0, 0, 16, 16, 40, 0),
+ M(0x116a, 0x116d, 0, 0, 16, 16, 40, 0),
+ M(0x116b, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116d, 0, 0, 16, 16, 40, 0),
+ M(0x116a, 0x116d, 0, 0, 16, 16, 40, 0),
+ M(0x116b, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e2, 0, 0, 16, 16, 40, 0),
+ M(0x116a, 0x11e2, 0, 0, 16, 16, 40, 0),
+ M(0x116b, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e2, 0, 0, 16, 16, 40, 0),
+ M(0x116a, 0x11e2, 0, 0, 16, 16, 40, 0),
+ M(0x116b, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e2, 0, 0, 16, 16, 40, 0),
+ M(0x116a, 0x11e2, 0, 0, 16, 16, 40, 0),
+ M(0x116b, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x116c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e2, 0, 0, 16, 16, 40, 0),
+ M(0x116a, 0x11e2, 0, 0, 16, 16, 40, 0),
+ M(0x116f, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1170, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1171, 0, 0, 16, 16, 40, 0),
+ M(0x116e, 0x1171, 0, 0, 16, 16, 40, 0),
+ M(0x116f, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1170, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1171, 0, 0, 16, 16, 40, 0),
+ M(0x116e, 0x1171, 0, 0, 16, 16, 40, 0),
+ M(0x116f, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1170, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1171, 0, 0, 16, 16, 40, 0),
+ M(0x116e, 0x1171, 0, 0, 16, 16, 40, 0),
+ M(0x116f, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1170, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1171, 0, 0, 16, 16, 40, 0),
+ M(0x116e, 0x1171, 0, 0, 16, 16, 40, 0),
+ M(0x116f, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1170, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e3, 0, 0, 16, 16, 40, 0),
+ M(0x116e, 0x11e3, 0, 0, 16, 16, 40, 0),
+ M(0x116f, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1170, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e3, 0, 0, 16, 16, 40, 0),
+ M(0x116e, 0x11e3, 0, 0, 16, 16, 40, 0),
+ M(0x116f, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1170, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e3, 0, 0, 16, 16, 40, 0),
+ M(0x116e, 0x11e3, 0, 0, 16, 16, 40, 0),
+ M(0x116f, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1170, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e3, 0, 0, 16, 16, 40, 0),
+ M(0x116e, 0x11e3, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1173, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1174, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1175, 0, 0, 16, 16, 40, 0),
+ M(0x1172, 0x1175, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1173 | PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1174 | PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1175 | PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0),
+ M(0x1172, 0x1175 | PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1173 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1174 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1175 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M(0x1172, 0x1175 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1173 | PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1174 | PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1175 | PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0),
+ M(0x1172, 0x1175 | PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1173, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1174, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1175, 0, 0, 16, 16, 40, 0),
+ M(0x11e4, 0x11e5, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1173 | PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1174 | PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1175 | PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0),
+ M(0x11e4, 0x11e5 | PALETTE_TO_BROWN, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1173 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1174 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1175 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M(0x11e4, 0x11e5 | PALETTE_TO_CREAM, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1173 | PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1174 | PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1175 | PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0),
+ M(0x11e4, 0x11e5 | PALETTE_TO_GREY, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1176, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1176, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1176, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1176, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1176, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1176, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1176 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1176 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1176 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1176 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1176 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1176 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e6, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e6, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e6, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e6, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e6, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e6, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e6 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e6 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e6 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e6 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e6 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11e6 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 60, 0),
+ M(0x1177, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1179, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117b, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117b, 0, 0, 16, 16, 40, 0),
+ M(0x1177, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1179, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117b, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117b, 0, 0, 16, 16, 40, 0),
+ M(0x1177, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1179, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117b, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117b, 0, 0, 16, 16, 40, 0),
+ M(0x1177, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1179, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117b, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117b, 0, 0, 16, 16, 40, 0),
+ M(0x1178, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117c, 0, 0, 16, 16, 40, 0),
+ M(0x1178, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117c, 0, 0, 16, 16, 40, 0),
+ M(0x1178, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117c, 0, 0, 16, 16, 40, 0),
+ M(0x1178, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117c, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117c, 0, 0, 16, 16, 40, 0),
+ M(0x1177, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1179, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e7, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e7, 0, 0, 16, 16, 40, 0),
+ M(0x1177, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1179, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e7, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e7, 0, 0, 16, 16, 40, 0),
+ M(0x1177, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1179, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e7, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e7, 0, 0, 16, 16, 40, 0),
+ M(0x1177, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1179, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e7, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e7, 0, 0, 16, 16, 40, 0),
+ M(0x1178, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e8, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e8, 0, 0, 16, 16, 40, 0),
+ M(0x1178, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e8, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e8, 0, 0, 16, 16, 40, 0),
+ M(0x1178, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e8, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e8, 0, 0, 16, 16, 40, 0),
+ M(0x1178, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117a, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e8, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11e8, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x117d, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117e, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117f, 0, 0, 16, 16, 50, 0),
+ M( 0x58c, 0x117f, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117d, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117e, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117f, 0, 0, 16, 16, 50, 0),
+ M( 0x58c, 0x117f, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117d | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117e | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117f | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0),
+ M( 0x58c, 0x117f | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117d | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117e | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117f | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0),
+ M( 0x58c, 0x117f | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117d, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117e, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x11e1, 0, 0, 16, 16, 50, 0),
+ M( 0x58c, 0x11e1, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117d, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117e, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x11e1, 0, 0, 16, 16, 50, 0),
+ M( 0x58c, 0x11e1, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117d | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117e | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x11e1 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0),
+ M( 0x58c, 0x11e3 | PALETTE_TO_STRUCT_BROWN, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117d | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x117e | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x11e1 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0),
+ M( 0x58c, 0x11e1 | PALETTE_TO_STRUCT_WHITE, 0, 0, 16, 16, 50, 0),
+ M(0x1180, 0x1181, 0, 0, 16, 16, 10, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1184 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M(0x1180, 0x1181, 0, 0, 16, 16, 10, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1184 | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M(0x1180, 0x1181, 0, 0, 16, 16, 10, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1184 | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M(0x1180, 0x1181, 0, 0, 16, 16, 10, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1184 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M(0x1180, 0x1181, 0, 0, 16, 16, 10, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x11e9 | PALETTE_TO_DARK_GREEN, 0, 0, 16, 16, 60, 0),
+ M(0x1180, 0x1181, 0, 0, 16, 16, 10, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x11e9 | PALETTE_TO_ORANGE, 0, 0, 16, 16, 60, 0),
+ M(0x1180, 0x1181, 0, 0, 16, 16, 10, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x11e9 | PALETTE_TO_BROWN, 0, 0, 16, 16, 60, 0),
+ M(0x1180, 0x1181, 0, 0, 16, 16, 10, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x1182 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M(0x1183, 0x11e9 | PALETTE_TO_GREY, 0, 0, 16, 16, 60, 0),
+ M(0x1185, 0x1187, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x118b, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1187, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x118b, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1187, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x118b, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1187, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x118b, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x1188, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118c, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x1188, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118c, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x1188, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118c, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x1188, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118c, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1187, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x11ea, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1187, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x11ea, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1187, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x11ea, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1187, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x1189, 0, 0, 16, 16, 10, 0),
+ M(0x1185, 0x11ea, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x1188, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x11eb, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x1188, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x11eb, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x1188, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x11eb, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x1188, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x118a, 0, 0, 16, 16, 10, 0),
+ M(0x1186, 0x11eb, 0, 0, 16, 16, 10, 0),
+ M( 0xf54, 0x11ec, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ed, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ed, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ee, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ec, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ed, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ed, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ee, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ec, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ed, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ed, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ee, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ec, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ed, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ed, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ee, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ef, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f1, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ef, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f1, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ef, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f1, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ef, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f1, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f2, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f3, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f3, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f4, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f2, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f3, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f3, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f4, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f2, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f3, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f3, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f4, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f2, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f3, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f3, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11f4, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f5, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f5, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f5, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f6, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f6, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f6, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f7, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f7, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f7, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f8, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f8, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f8, 0, 0, 16, 16, 20, 0),
+ M( 0xf54, 0x11f9, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fa, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fa, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fb, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11f9, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fa, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fa, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fb, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11f9, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fa, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fa, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fb, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11f9, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fa, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fa, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x11fb, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x0, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fc, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fd, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fe, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fe, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ff, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fd, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fe, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fe, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ff, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fd, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fe, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fe, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ff, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fd, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fe, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11fe, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x11ff, 0, 0, 16, 16, 40, 0),
+ M( 0xf54, 0x1200, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1201, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1201, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1202, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1200 | PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1201 | PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1201 | PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1202 | PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1200 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1201 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1201 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1202 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1200 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1201 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1201 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1202 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1203, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1204, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1204, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1205, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1203 | PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1204 | PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1204 | PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1205 | PALETTE_TO_PINK, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1203 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1204 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1204 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1205 | PALETTE_TO_YELLOW, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1203 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1204 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1204 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1205 | PALETTE_TO_RED, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x1206, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1208, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1208, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x120a, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1206, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1208, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1208, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x120a, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1206, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1208, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1208, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x120a, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1206, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1208, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1208, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x120a, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1207, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1209, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1209, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x120b, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1207, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1209, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1209, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x120b, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1207, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1209, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1209, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x120b, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1207, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1209, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x1209, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x120b, 0, 0, 16, 16, 80, 0),
+ M( 0xf54, 0x120c, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120d, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120d, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120e, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120c, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120d, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120d, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120e, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120c, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120d, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120d, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120e, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120c, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120d, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120d, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120e, 0, 0, 16, 16, 60, 0),
+ M( 0xf54, 0x120f, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1210, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1210, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1211, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x120f, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1210, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1210, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1211, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x120f, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1210, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1210, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1211, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x120f, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1210, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1210, 0, 0, 16, 16, 50, 0),
+ M( 0xf54, 0x1211, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1213, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1214, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1214, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1215, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1213 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1214 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1214 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1215 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1213 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1214 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1214 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1215 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1213 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1214 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1214 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1215 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1216, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1217, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1217, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1218, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1216, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1217, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1217, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1218, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1216, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1217, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1217, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1218, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1216, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1217, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1217, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1218, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1219, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121b, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1219, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121b, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1219, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121b, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1219, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121b, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121c, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121d, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121d, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121e, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121c, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121d, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121d, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121e, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121c, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121d, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121d, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121e, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121c, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121d, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121d, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121e, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121f, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1220, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1220, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1221, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121f | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1220 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1220 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1221 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x121f | PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1220 | PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1220 | PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1221 | PALETTE_TO_MAUVE, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x121f | PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1220 | PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1220 | PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1221 | PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1222, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1223, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1223, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1224, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1222 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1223 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1223 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1224 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1222 | PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1223 | PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1223 | PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1224 | PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1222 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1223 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1223 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1224 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1225, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1226, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1226, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1227, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1225 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1226 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1226 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1227 | PALETTE_TO_PINK, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1225 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1226 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1226 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1227 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1225 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1226 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1226 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1227 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1228, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1229, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1229, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122a, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1228, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1229, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1229, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122a, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1228, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1229, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1229, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122a, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1228, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1229, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1229, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122b, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122f, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122b, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122f, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122b, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122f, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122b, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x122f, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122c, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122e, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122e, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1230, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122c, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122e, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122e, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1230, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122c, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122e, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122e, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1230, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122c, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122e, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x122e, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1230, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1231, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1232, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1232, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1233, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1231, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1232, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1232, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1233, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1231, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1232, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1232, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1233, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1231, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1232, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1232, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1233, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1234, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1235, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1235, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1236, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1234, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1235, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1235, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1236, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1234, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1235, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1235, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1236, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1234, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1235, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1235, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1236, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1237, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1238, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1238, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1239, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1237, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1238, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1238, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1239, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1237, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1238, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1238, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1239, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1237, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1238, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1238, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1239, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123a, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123b, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123b, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123c, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123a, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123b, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123b, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123c, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123a, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123b, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123b, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123c, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123a, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123b, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123b, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x123c, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123e, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123e, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123f, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123e, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123e, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123f, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123e, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123e, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123f, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123d, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123e, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123e, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x123f, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1240, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1241, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1241, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1242, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1240, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1241, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1241, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1242, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1240, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1241, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1241, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1242, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1240, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1241, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1241, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1242, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1256, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1256, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1256, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1256 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1256 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1256 | PALETTE_TO_PALE_GREEN, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x0, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1256 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1256 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1256 | PALETTE_TO_RED, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1256 | PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1256 | PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x1256 | PALETTE_TO_CREAM, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1257, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1258, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1258, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1259, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1257, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1258, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1258, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1259, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1257, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1258, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1258, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1259, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1257, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1258, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1258, 0, 0, 16, 16, 50, 0),
+ M(0x1243, 0x1259, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x0, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+ M(0x1244, 0x125a, 0, 0, 16, 16, 50, 0),
+};
+#undef M
+// 4 variants * 4 build stages
+assert_compile(lengthof(_town_draw_tile_data) == HOUSE_MAX * 4 * 4);
+
+
+static const StringID _town_tile_names[] = {
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_2010_OFFICE_BLOCK,
+ STR_2011_SMALL_BLOCK_OF_FLATS,
+ STR_2012_CHURCH,
+ STR_2013_LARGE_OFFICE_BLOCK,
+ STR_2013_LARGE_OFFICE_BLOCK,
+ STR_2014_TOWN_HOUSES,
+ STR_2015_HOTEL,
+ STR_2015_HOTEL,
+ STR_2016_STATUE,
+ STR_2017_FOUNTAIN,
+ STR_2018_PARK,
+ STR_2018_PARK,
+ STR_2019_OFFICE_BLOCK,
+ STR_201A_SHOPS_AND_OFFICES,
+ STR_201A_SHOPS_AND_OFFICES,
+ STR_201A_SHOPS_AND_OFFICES,
+ STR_201B_MODERN_OFFICE_BUILDING,
+ STR_201C_WAREHOUSE,
+ STR_201D_OFFICE_BLOCK,
+ STR_201E_STADIUM,
+ STR_201E_STADIUM,
+ STR_201E_STADIUM,
+ STR_201E_STADIUM,
+ STR_201F_OLD_HOUSES,
+ STR_2036_COTTAGES,
+ STR_2037_HOUSES,
+ STR_2038_FLATS,
+ STR_2039_TALL_OFFICE_BLOCK,
+ STR_203A_SHOPS_AND_OFFICES,
+ STR_203B_SHOPS_AND_OFFICES,
+ STR_203C_THEATER,
+ STR_203D_STADIUM,
+ STR_203D_STADIUM,
+ STR_203D_STADIUM,
+ STR_203D_STADIUM,
+ STR_203E_OFFICES,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_2040_CINEMA,
+ STR_2041_SHOPPING_MALL,
+ STR_2041_SHOPPING_MALL,
+ STR_2041_SHOPPING_MALL,
+ STR_2041_SHOPPING_MALL,
+ STR_2038_FLATS,
+ STR_2038_FLATS,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_201A_SHOPS_AND_OFFICES,
+ STR_201A_SHOPS_AND_OFFICES,
+ STR_2012_CHURCH,
+ STR_2012_CHURCH,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_201A_SHOPS_AND_OFFICES,
+ STR_201A_SHOPS_AND_OFFICES,
+ STR_2015_HOTEL,
+ STR_2015_HOTEL,
+ STR_2015_HOTEL,
+ STR_2015_HOTEL,
+ STR_201A_SHOPS_AND_OFFICES,
+ STR_201A_SHOPS_AND_OFFICES,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_2038_FLATS,
+ STR_2012_CHURCH,
+ STR_203F_HOUSES,
+ STR_2038_FLATS,
+ STR_2038_FLATS,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_2038_FLATS,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_2012_CHURCH,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_203F_HOUSES,
+ STR_203F_HOUSES,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_2059_IGLOO,
+ STR_205A_TEPEES,
+ STR_201A_SHOPS_AND_OFFICES,
+ STR_201A_SHOPS_AND_OFFICES,
+ STR_200F_TALL_OFFICE_BLOCK,
+ STR_2016_STATUE,
+ STR_205B_TEAPOT_HOUSE,
+ STR_205C_PIGGY_BANK,
+};
+assert_compile(lengthof(_town_tile_names) == HOUSE_MAX);
+
+static const uint16 _housetype_flags[] = {
+ 0x1010, 0x1018, 0x100E, 0x100F, 0x7010, 0x0810, 0x100F, 0x1014,
+ 0x0000, 0x7018, 0x7010, 0x1004, 0x1008, 0x1018, 0x101C, 0x101C,
+ 0x101C, 0x7010, 0x1010, 0x1010, 0x100F, 0x0000, 0x0000, 0x0000,
+ 0x1003, 0x1001, 0x100F, 0x101C, 0x101C, 0x101C, 0x5014, 0x1018,
+ 0x700F, 0x0000, 0x0000, 0x0000, 0x7018, 0x2003, 0x0803, 0x101C,
+ 0x101E, 0x0000, 0x0000, 0x0000, 0x201C, 0x081C, 0x200F, 0x080F,
+ 0x2007, 0x0807, 0x6018, 0x0818, 0x2018, 0x0818, 0x6018, 0x0818,
+ 0x2001, 0x0801, 0x201E, 0x081E, 0x200F, 0x080F, 0x2007, 0x0807,
+ 0x201C, 0x081C, 0x201C, 0x0000, 0x081C, 0x0000, 0x601C, 0x081C,
+ 0x2018, 0x0818, 0x201C, 0x0000, 0x081C, 0x0000, 0x401E, 0x401E,
+ 0x401E, 0x4001, 0x401C, 0x400E, 0x401E, 0x401C, 0x401C, 0x4018,
+ 0x4000, 0x401C, 0x4018, 0x801F, 0x801F, 0x8003, 0x800F, 0x800F,
+ 0x800F, 0x800F, 0x801C, 0x801F, 0x0000, 0x801C, 0x8001, 0x8001,
+ 0x801C, 0x801C, 0x801C, 0x801C, 0x801F, 0x801F,
+};
+assert_compile(lengthof(_housetype_flags) == HOUSE_MAX);
+
+static const byte _housetype_extra_flags[] = {
+ 0, 0, 0, 0, 32, 32, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 16, 0, 0, 0, 0, 0, 0, 0,
+ 16, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 8, 0, 8, 0, 0, 0,
+ 0, 0, 4, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 8, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+};
+assert_compile(lengthof(_housetype_extra_flags) == HOUSE_MAX);
+
+static const byte _housetype_population[] = {
+ 187, 85, 40, 5, 220, 220, 30, 140,
+ 0, 0, 0, 0, 0, 150, 95, 95,
+ 95, 130, 6, 110, 65, 0, 0, 0,
+ 15, 12, 13, 100, 170, 100, 180, 35,
+ 65, 0, 0, 0, 140, 15, 15, 35,
+ 180, 0, 0, 0, 80, 80, 16, 16,
+ 14, 14, 135, 135, 170, 170, 210, 210,
+ 10, 10, 25, 25, 6, 6, 17, 17,
+ 90, 90, 140, 0, 140, 0, 105, 105,
+ 190, 190, 250, 0, 250, 0, 16, 16,
+ 16, 7, 45, 8, 18, 90, 120, 250,
+ 0, 80, 180, 8, 18, 7, 15, 17,
+ 19, 21, 75, 35, 0, 85, 11, 10,
+ 67, 86, 95, 30, 25, 18,
+};
+assert_compile(lengthof(_housetype_population) == HOUSE_MAX);
+
+static const byte _housetype_mailamount[] = {
+ 70, 55, 20, 2, 85, 85, 12, 22,
+ 22, 0, 0, 0, 0, 65, 48, 48,
+ 48, 50, 10, 55, 5, 5, 5, 5,
+ 6, 7, 8, 35, 50, 40, 64, 23,
+ 5, 5, 5, 5, 65, 6, 6, 23,
+ 5, 5, 5, 5, 20, 20, 6, 6,
+ 6, 6, 60, 60, 70, 70, 80, 80,
+ 5, 5, 20, 20, 2, 2, 7, 7,
+ 45, 45, 25, 25, 25, 25, 50, 50,
+ 75, 75, 60, 60, 60, 60, 6, 6,
+ 5, 4, 15, 3, 7, 24, 25, 80,
+ 80, 23, 90, 3, 5, 3, 6, 6,
+ 6, 6, 20, 9, 0, 18, 3, 3,
+ 22, 23, 28, 10, 8, 7,
+};
+assert_compile(lengthof(_housetype_mailamount) == HOUSE_MAX);
+
+static const byte _housetype_remove_cost[] = {
+ 150, 140, 100, 90, 160, 160, 80, 180,
+ 180, 65, 65, 60, 60, 130, 110, 105,
+ 107, 200, 145, 155, 250, 250, 250, 250,
+ 70, 75, 71, 135, 145, 132, 155, 220,
+ 250, 250, 250, 250, 170, 70, 70, 210,
+ 250, 250, 250, 250, 100, 100, 70, 70,
+ 80, 80, 150, 150, 170, 170, 200, 200,
+ 60, 60, 100, 100, 85, 85, 80, 80,
+ 140, 140, 160, 160, 160, 160, 130, 130,
+ 190, 190, 140, 140, 140, 140, 80, 80,
+ 80, 30, 130, 90, 80, 110, 120, 190,
+ 190, 110, 180, 90, 90, 70, 80, 80,
+ 80, 80, 160, 90, 90, 150, 60, 60,
+ 140, 145, 165, 90, 75, 85,
+};
+assert_compile(lengthof(_housetype_remove_cost) == HOUSE_MAX);
+
+static const uint16 _housetype_remove_ratingmod[] = {
+ 140, 130, 90, 230, 160, 160, 80, 150,
+ 150, 40, 40, 75, 75, 110, 100, 100,
+ 100, 150, 110, 110, 300, 300, 300, 300,
+ 75, 75, 75, 100, 170, 135, 180, 230,
+ 300, 300, 300, 300, 250, 75, 75, 230,
+ 300, 300, 300, 300, 90, 90, 70, 70,
+ 70, 70, 120, 120, 130, 130, 140, 140,
+ 60, 60, 80, 80, 230, 230, 80, 80,
+ 110, 110, 160, 160, 160, 160, 105, 105,
+ 135, 135, 200, 200, 200, 200, 80, 80,
+ 80, 30, 95, 200, 80, 95, 95, 140,
+ 140, 95, 150, 200, 90, 50, 75, 75,
+ 75, 75, 130, 80, 80, 130, 45, 45,
+ 130, 130, 130, 70, 65, 95,
+};
+assert_compile(lengthof(_housetype_remove_ratingmod) == HOUSE_MAX);
+
+
+typedef struct {
+ Year min, max;
+} HousetypeYear;
+
+static const HousetypeYear _housetype_years[] = {
+ { 1963, MAX_YEAR },
+ { 1957, MAX_YEAR },
+ { 1968, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 1975, MAX_YEAR },
+ { 1975, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 1959, MAX_YEAR },
+ { 1959, MAX_YEAR },
+ { 1945, MAX_YEAR },
+ { 1945, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 1935, MAX_YEAR },
+ { 1951, MAX_YEAR },
+ { 1930, 1960 },
+ { 1930, 1960 },
+ { 1930, 1960 },
+ { 1977, MAX_YEAR },
+ { 1983, MAX_YEAR },
+ { 1985, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, 1951 },
+ { 0, 1952 },
+ { 1931, MAX_YEAR },
+ { 1935, MAX_YEAR },
+ { 1963, MAX_YEAR },
+ { 0, 1955 },
+ { 1973, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 1958, MAX_YEAR },
+ { 1958, MAX_YEAR },
+ { 1958, MAX_YEAR },
+ { 1958, MAX_YEAR },
+ { 2000, MAX_YEAR },
+ { 0, 1960 },
+ { 0, 1960 },
+ { 1945, MAX_YEAR },
+ { 1983, MAX_YEAR },
+ { 1983, MAX_YEAR },
+ { 1983, MAX_YEAR },
+ { 1983, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, 1963 },
+ { 0, 1963 },
+ { 1966, MAX_YEAR },
+ { 1966, MAX_YEAR },
+ { 1970, MAX_YEAR },
+ { 1970, MAX_YEAR },
+ { 1974, MAX_YEAR },
+ { 1974, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, 1960 },
+ { 0, 1960 },
+ { 1972, MAX_YEAR },
+ { 1972, MAX_YEAR },
+ { 1972, MAX_YEAR },
+ { 1972, MAX_YEAR },
+ { 1963, MAX_YEAR },
+ { 1963, MAX_YEAR },
+ { 1978, MAX_YEAR },
+ { 1978, MAX_YEAR },
+ { 1967, MAX_YEAR },
+ { 1967, MAX_YEAR },
+ { 1967, MAX_YEAR },
+ { 1967, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 1973, MAX_YEAR },
+ { 1962, MAX_YEAR },
+ { 1984, MAX_YEAR },
+ { 1984, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 1993, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+ { 0, MAX_YEAR },
+};
+assert_compile(lengthof(_housetype_years) == HOUSE_MAX);
+
+static const byte _housetype_cargo_passengers[] = {
+ 8, 8, 8, 2, 10, 10, 4, 6,
+ 6, 2, 2, 2, 2, 8, 6, 6,
+ 6, 10, 6, 6, 4, 4, 4, 4,
+ 3, 3, 3, 7, 8, 6, 8, 8,
+ 4, 4, 4, 4, 8, 3, 3, 8,
+ 8, 8, 8, 8, 5, 5, 3, 3,
+ 3, 3, 8, 8, 9, 9, 10, 10,
+ 2, 2, 3, 3, 2, 2, 3, 3,
+ 6, 6, 6, 6, 6, 6, 7, 7,
+ 9, 9, 7, 7, 7, 7, 3, 3,
+ 3, 3, 6, 2, 3, 6, 6, 8,
+ 8, 6, 8, 2, 6, 3, 3, 3,
+ 3, 3, 8, 4, 4, 8, 3, 3,
+ 8, 8, 8, 4, 3, 3,
+};
+assert_compile(lengthof(_housetype_cargo_passengers) == HOUSE_MAX);
+
+static const byte _housetype_cargo_mail[] = {
+ 3, 3, 3, 0, 4, 4, 1, 1,
+ 1, 0, 0, 0, 0, 2, 2, 2,
+ 2, 3, 3, 2, 0, 0, 0, 0,
+ 1, 1, 1, 2, 3, 2, 3, 2,
+ 0, 0, 0, 0, 3, 1, 1, 2,
+ 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 3, 3, 3, 3, 3, 3,
+ 1, 1, 1, 1, 0, 0, 1, 1,
+ 2, 2, 1, 1, 1, 1, 2, 2,
+ 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 0, 1, 2, 2, 3,
+ 3, 2, 3, 0, 2, 1, 1, 1,
+ 1, 1, 4, 1, 1, 4, 1, 1,
+ 4, 4, 4, 1, 1, 2,
+};
+assert_compile(lengthof(_housetype_cargo_mail) == HOUSE_MAX);
+
+static const byte _housetype_cargo_goods[] = {
+ 4, 4, 1, 0, 6, 6, 0, 2,
+ 2, 0, 0, 0, 0, 4, 3, 3,
+ 3, 6, 8, 6, 0, 0, 0, 0,
+ 0, 0, 0, 2, 3, 3, 3, 2,
+ 0, 0, 0, 0, 2, 0, 0, 2,
+ 3, 3, 3, 3, 0, 0, 0, 0,
+ 0, 0, 4, 4, 4, 4, 5, 5,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 3, 0, 2, 0, 2, 3, 3,
+ 4, 4, 2, 2, 2, 2, 0, 0,
+ 0, 0, 1, 0, 0, 1, 1, 4,
+ 4, 1, 4, 0, 2, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 1,
+ 0, 0, 2, 2, 2, 0
+};
+assert_compile(lengthof(_housetype_cargo_goods) == HOUSE_MAX);
+
+static const byte _housetype_cargo_food[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 2, 2, 2, 2,
+ 2, 2, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 0, 0, 1, 1,
+ 0, 0, 3, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 2,
+ 2, 1, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 4, 0, 0, 0, 4
+};
+assert_compile(lengthof(_housetype_cargo_food) == HOUSE_MAX);
+
+static const byte _house_more_flags[] = {
+ 8, 8, 8, 8, 8, 8, 8, 12,
+ 0, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 15, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 15, 0, 0, 0, 8, 8, 8, 8,
+ 15, 0, 0, 0, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 12, 0, 12, 0, 8, 8,
+ 8, 8, 10, 0, 10, 0, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 10,
+ 0, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 12, 0, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8,
+};
+assert_compile(lengthof(_house_more_flags) == HOUSE_MAX);
diff --git a/src/table/track_land.h b/src/table/track_land.h
new file mode 100644
index 000000000..78031e840
--- /dev/null
+++ b/src/table/track_land.h
@@ -0,0 +1,52 @@
+/* $Id$ */
+
+#define TILE_SEQ_LINE(img, dx, dy, sx, sy) { dx, dy, 0, sx, sy, 23, img },
+#define TILE_SEQ_END() { 0x80, 0, 0, 0, 0, 0, 0 }
+
+
+static const DrawTileSeqStruct _depot_gfx_NE[] = {
+ TILE_SEQ_LINE(SPR_RAIL_DEPOT_NE | PALETTE_MODIFIER_COLOR, 2, 13, 13, 1)
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _depot_gfx_SE[] = {
+ TILE_SEQ_LINE(SPR_RAIL_DEPOT_SE_1 | PALETTE_MODIFIER_COLOR, 2, 2, 1, 13)
+ TILE_SEQ_LINE(SPR_RAIL_DEPOT_SE_2 | PALETTE_MODIFIER_COLOR, 13, 2, 1, 13)
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _depot_gfx_SW[] = {
+ TILE_SEQ_LINE(SPR_RAIL_DEPOT_SW_1 | PALETTE_MODIFIER_COLOR, 2, 2, 13, 1)
+ TILE_SEQ_LINE(SPR_RAIL_DEPOT_SW_2 | PALETTE_MODIFIER_COLOR, 2, 13, 13, 1)
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _depot_gfx_NW[] = {
+ TILE_SEQ_LINE(SPR_RAIL_DEPOT_NW | PALETTE_MODIFIER_COLOR, 13, 2, 1, 13)
+ TILE_SEQ_END()
+};
+
+static const DrawTileSprites _depot_gfx_table[] = {
+ { SPR_FLAT_GRASS_TILE, _depot_gfx_NE },
+ { SPR_RAIL_TRACK_Y, _depot_gfx_SE },
+ { SPR_RAIL_TRACK_X, _depot_gfx_SW },
+ { SPR_FLAT_GRASS_TILE, _depot_gfx_NW }
+};
+
+
+static const DrawTileSeqStruct _waypoint_gfx_X[] = {
+ TILE_SEQ_LINE(PALETTE_MODIFIER_COLOR | SPR_WAYPOINT_X_1, 0, 0, 16, 5)
+ TILE_SEQ_LINE(PALETTE_MODIFIER_COLOR | SPR_WAYPOINT_X_2, 0, 11, 16, 5)
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _waypoint_gfx_Y[] = {
+ TILE_SEQ_LINE(PALETTE_MODIFIER_COLOR | SPR_WAYPOINT_Y_1, 0, 0, 5, 16)
+ TILE_SEQ_LINE(PALETTE_MODIFIER_COLOR | SPR_WAYPOINT_Y_2, 11, 0, 5, 16)
+ TILE_SEQ_END()
+};
+
+static const DrawTileSprites _waypoint_gfx_table[] = {
+ { SPR_RAIL_TRACK_X, _waypoint_gfx_X },
+ { SPR_RAIL_TRACK_Y, _waypoint_gfx_Y }
+};
diff --git a/src/table/train_cmd.h b/src/table/train_cmd.h
new file mode 100644
index 000000000..1bf8e70c8
--- /dev/null
+++ b/src/table/train_cmd.h
@@ -0,0 +1,57 @@
+/* $Id$ */
+
+static const SpriteID _engine_sprite_base[] = {
+0x0B59, 0x0B61, 0x0B69, 0x0BE1, 0x0B71, 0x0B75, 0x0B7D, 0x0B7D,
+0x0B85, 0x0B85, 0x0B8D, 0x0B8D, 0x0BC9, 0x0BD1, 0x0BD9, 0x0BE9,
+0x0BED, 0x0BED, 0x0BF5, 0x0BF9, 0x0B79, 0x0B9D, 0x0B9D, 0x0B95,
+0x0B95, 0x0BA5, 0x0BA9, 0x0BA9, 0x0BC1, 0x0BC5, 0x0BB1, 0x0BB9,
+0x0BB9, 0x0AAD, 0x0AB1, 0x0AB5, 0x0AB9, 0x0ABD, 0x0AC1, 0x0AC9,
+0x0ACD, 0x0AD5, 0x0AD1, 0x0AD9, 0x0AC5, 0x0AD1, 0x0AD5, 0x0AF9,
+0x0AFD, 0x0B05, 0x0AB9, 0x0AC1, 0x0AC9, 0x0AD1, 0x0AD9, 0x0AE1,
+0x0AE5, 0x0AE9, 0x0AF1, 0x0AF9, 0x0B0D, 0x0B11, 0x0B15, 0x0B19,
+0x0B1D, 0x0B21, 0x0B29, 0x0B2D, 0x0B35, 0x0B31, 0x0B39, 0x0B25,
+0x0B31, 0x0B35,
+};
+
+/* For how many directions do we have sprites? (8 or 4; if 4, the other 4
+ * directions are symmetric. */
+static const byte _engine_sprite_and[] = {
+7, 7, 7, 7, 3, 3, 7, 7,
+7, 7, 7, 7, 7, 7, 7, 3,
+7, 7, 3, 7, 3, 7, 7, 7,
+7, 3, 7, 7, 3, 3, 7, 7,
+7, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3,
+3, 3, 3, 3, 3, 3, 3, 3,
+3, 3,
+};
+
+/* Non-zero for multihead trains. */
+static const byte _engine_sprite_add[] = {
+0, 0, 0, 0, 0, 0, 0, 4,
+0, 4, 0, 4, 0, 0, 0, 0,
+0, 4, 0, 0, 0, 0, 4, 0,
+4, 0, 0, 4, 0, 0, 0, 0,
+4, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0, 0, 0, 0, 0, 0, 0,
+0, 0,
+};
+
+
+static const byte _wagon_full_adder[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 44, 0, 0, 0, 0, 24,
+ 24, 24, 24, 0, 0, 32, 32, 0,
+ 4, 4, 4, 4, 4, 4, 4, 0,
+ 0, 4, 4, 4, 0, 44, 0, 0,
+ 0, 0, 24, 24, 24, 24, 0, 0,
+ 32, 32
+};
diff --git a/src/table/tree_land.h b/src/table/tree_land.h
new file mode 100644
index 000000000..9d68681d6
--- /dev/null
+++ b/src/table/tree_land.h
@@ -0,0 +1,228 @@
+/* $Id$ */
+
+#ifndef TREE_LAND_H
+#define TREE_LAND_H
+
+static const SpriteID _tree_sprites_1[] = {
+ SPR_FLAT_1_QUART_SNOWY_TILE,
+ SPR_FLAT_2_QUART_SNOWY_TILE,
+ SPR_FLAT_3_QUART_SNOWY_TILE,
+ SPR_FLAT_SNOWY_TILE
+};
+
+static const byte _tree_base_by_landscape[4] = {0, 12, 20, 32};
+static const byte _tree_count_by_landscape[4] = {12, 8, 12, 9};
+
+typedef struct TreePos {
+ uint8 x;
+ uint8 y;
+} TreePos;
+
+static const TreePos _tree_layout_xy[][4] = {
+ { { 9, 3 }, { 1, 8 }, { 0, 0 }, { 8, 9 } },
+ { { 4, 4 }, { 9, 1 }, { 6, 9 }, { 0, 9 } },
+ { { 9, 1 }, { 0, 9 }, { 6, 6 }, { 3, 0 } },
+ { { 3, 9 }, { 8, 2 }, { 9, 9 }, { 1, 5 } }
+};
+
+static const PalSpriteID _tree_layout_sprite[164+(79-48+1)][4] = {
+ { 0x652, 0x659, 0x660, 0x667}, /* 0 */
+ { 0x652, 0x667, 0x66e, 0x675}, /* 1 */
+ { 0x652, 0x66e, 0x659, 0x675}, /* 2 */
+ { 0x652, 0x652, 0x660, 0x66e}, /* 3 */
+ { 0x660, 0x667, 0x659, 0x652}, /* 4 */
+ { 0x660, 0x675, 0x660, 0x660}, /* 5 */
+ { 0x660, 0x652, 0x652, 0x66e}, /* 6 */
+ { 0x660, 0x675, 0x667, 0x659}, /* 7 */
+ { 0x675, 0x660, 0x675, 0x675}, /* 8 */
+ { 0x675, 0x659, 0x652, 0x652}, /* 9 */
+ { 0x675, 0x66e, 0x652, 0x652}, /* 10 */
+ { 0x675, 0x667, 0x659, 0x667}, /* 11 */
+ { 0x628, 0x652, 0x660, 0x62f}, /* 12 */
+ { 0x628, 0x636, 0x675, 0x644}, /* 13 */
+ { 0x628, 0x652, 0x63d, 0x66e}, /* 14 */
+ { 0x628, 0x667, 0x644, 0x652}, /* 15 */
+ { 0x644, 0x659, 0x660, 0x628}, /* 16 */
+ { 0x644, 0x64b, 0x659, 0x636}, /* 17 */
+ { 0x644, 0x675, 0x652, 0x63d}, /* 18 */
+ { 0x644, 0x63d, 0x66e, 0x652}, /* 19 */
+ { 0x636, 0x636, 0x628, 0x636}, /* 20 */
+ { 0x636, 0x63d, 0x636, 0x636}, /* 21 */
+ { 0x636, 0x64b, 0x636, 0x636}, /* 22 */
+ { 0x636, 0x636, 0x636, 0x636}, /* 23 */
+ { 0x64b, 0x628, 0x62f, 0x636}, /* 24 */
+ { 0x64b, 0x63d, 0x644, 0x636}, /* 25 */
+ { 0x64b, 0x636, 0x63d, 0x628}, /* 26 */
+ { 0x64b, 0x64b, 0x636, 0x63d}, /* 27 */
+ { 0x62f, 0x644, 0x644, 0x636}, /* 28 */
+ { 0x62f, 0x62f, 0x636, 0x628}, /* 29 */
+ { 0x62f, 0x64b, 0x636, 0x636}, /* 30 */
+ { 0x62f, 0x636, 0x62f, 0x636}, /* 31 */
+ { 0x67c, 0x675, 0x683, 0x67c}, /* 32 */
+ { 0x67c, 0x69f, 0x67c, 0x659}, /* 33 */
+ { 0x67c, 0x67c, 0x67c, 0x6a6}, /* 34 */
+ { 0x67c, 0x691, 0x66e, 0x68a}, /* 35 */
+ { 0x68a, 0x68a, 0x698, 0x68a}, /* 36 */
+ { 0x68a, 0x698, 0x683, 0x68a}, /* 37 */
+ { 0x68a, 0x67c, 0x691, 0x68a}, /* 38 */
+ { 0x68a, 0x683, 0x6a6, 0x69f}, /* 39 */
+ { 0x698, 0x68a, 0x698, 0x652}, /* 40 */
+ { 0x698, 0x698, 0x660, 0x667}, /* 41 */
+ { 0x698, 0x67c, 0x6a6, 0x698}, /* 42 */
+ { 0x698, 0x698, 0x698, 0x691}, /* 43 */
+ { 0x6a6, 0x6a6, 0x67c, 0x660}, /* 44 */
+ { 0x6a6, 0x69f, 0x6a6, 0x652}, /* 45 */
+ { 0x6a6, 0x67c, 0x6a6, 0x691}, /* 46 */
+ { 0x6a6, 0x691, 0x69f, 0x6a6}, /* 47 */
+ { 0x6ad, 0x6ad, 0x6ad, 0x6ad}, /* 48 */
+ { 0x6ad, 0x6ad, 0x6c2, 0x6d0}, /* 49 */
+ { 0x6ad, 0x6d7, 0x6ad, 0x6ad}, /* 50 */
+ { 0x6ad, 0x6d0, 0x6c9, 0x6ad}, /* 51 */
+ { 0x6d0, 0x6d0, 0x6d0, 0x6ad}, /* 52 */
+ { 0x6d0, 0x6ad, 0x6d7, 0x6c9}, /* 53 */
+ { 0x6d0, 0x6d7, 0x6d0, 0x6c2}, /* 54 */
+ { 0x6d0, 0x6d0, 0x6d0, 0x6ad}, /* 55 */
+ { 0x6d7, 0x6d7, 0x6d7, 0x6d7}, /* 56 */
+ { 0x6d7, 0x6d7, 0x6ad, 0x6ad}, /* 57 */
+ { 0x6d7, 0x6d0, 0x6d7, 0x6ad}, /* 58 */
+ { 0x6d7, 0x6d7, 0x6d0, 0x6ad}, /* 59 */
+ { 0x6c2, 0x6d0, 0x6c9, 0x6c2}, /* 60 */
+ { 0x6c2, 0x6c9, 0x6c2, 0x6ad}, /* 61 */
+ { 0x6c2, 0x6c2, 0x6c2, 0x6ad}, /* 62 */
+ { 0x6c2, 0x6c2, 0x6c2, 0x6c9}, /* 63 */
+ { 0x6c9, 0x6d0, 0x6b4, 0x6c2}, /* 64 */
+ { 0x6c9, 0x6bb, 0x6de, 0x6d7}, /* 65 */
+ { 0x6c9, 0x6c2, 0x6bb, 0x6b4}, /* 66 */
+ { 0x6c9, 0x6bb, 0x6c2, 0x6de}, /* 67 */
+ { 0x6b4, 0x6b4, 0x6de, 0x6c9}, /* 68 */
+ { 0x6b4, 0x6bb, 0x6bb, 0x6ad}, /* 69 */
+ { 0x6b4, 0x6de, 0x6bb, 0x6b4}, /* 70 */
+ { 0x6b4, 0x6ad, 0x6c2, 0x6de}, /* 71 */
+ { 0x6bb, 0x6d0, 0x6de, 0x6c2}, /* 72 */
+ { 0x6bb, 0x6b4, 0x6bb, 0x6d7}, /* 73 */
+ { 0x6bb, 0x6de, 0x6bb, 0x6b4}, /* 74 */
+ { 0x6bb, 0x6c9, 0x6c2, 0x6de}, /* 75 */
+ { 0x6de, 0x6d7, 0x6de, 0x6c2}, /* 76 */
+ { 0x6de, 0x6bb, 0x6de, 0x6d0}, /* 77 */
+ { 0x6de, 0x6de, 0x6bb, 0x6b4}, /* 78 */
+ { 0x6de, 0x6c9, 0x6c2, 0x6de}, /* 79 */
+ { 0x72b, 0x732, 0x72b, 0x739}, /* 80 */
+ { 0x72b, 0x747, 0x755, 0x72b}, /* 81 */
+ { 0x72b, 0x72b, 0x76a, 0x786}, /* 82 */
+ { 0x72b, 0x74e, 0x72b, 0x72b}, /* 83 */
+ { 0x732, 0x732, 0x72b, 0x739}, /* 84 */
+ { 0x732, 0x747, 0x732, 0x732}, /* 85 */
+ { 0x732, 0x732, 0x755, 0x794}, /* 86 */
+ { 0x732, 0x74e, 0x732, 0x78d}, /* 87 */
+ { 0x747, 0x732, 0x747, 0x740}, /* 88 */
+ { 0x747, 0x747, 0x732, 0x76a}, /* 89 */
+ { 0x747, 0x72b, 0x755, 0x747}, /* 90 */
+ { 0x747, 0x786, 0x732, 0x747}, /* 91 */
+ { 0x74e, 0x74e, 0x72b, 0x794}, /* 92 */
+ { 0x74e, 0x755, 0x732, 0x74e}, /* 93 */
+ { 0x74e, 0x72b, 0x786, 0x747}, /* 94 */
+ { 0x74e, 0x74e, 0x732, 0x794}, /* 95 */
+ { 0x76a, 0x76a, 0x74e, 0x74e}, /* 96 */
+ { 0x76a, 0x794, 0x732, 0x76a}, /* 97 */
+ { 0x76a, 0x732, 0x786, 0x76a}, /* 98 */
+ { 0x76a, 0x786, 0x732, 0x78d}, /* 99 */
+ { 0x78d, 0x78d, 0x74e, 0x794}, /* 100 */
+ { 0x78d, 0x732, 0x739, 0x747}, /* 101 */
+ { 0x78d, 0x732, 0x786, 0x76a}, /* 102 */
+ { 0x78d, 0x786, 0x78d, 0x794}, /* 103 */
+ { 0x786, 0x786, 0x740, 0x732}, /* 104 */
+ { 0x786, 0x786, 0x72b, 0x732}, /* 105 */
+ { 0x786, 0x732, 0x786, 0x786}, /* 106 */
+ { 0x786, 0x786, 0x78d, 0x794}, /* 107 */
+ { 0x778, 0x778, 0x77f, 0x778}, /* 108 */
+ { 0x778, 0x77f, 0x778, 0x77f}, /* 109 */
+ { 0x778, 0x77f, 0x77f, 0x778}, /* 110 */
+ { 0x778, 0x778, 0x778, 0x77f}, /* 111 */
+ { 0x75c, 0x71d, 0x75c, 0x724}, /* 112 */
+ { 0x75c, 0x72b, 0x75c, 0x763}, /* 113 */
+ { 0x75c, 0x75c, 0x771, 0x71d}, /* 114 */
+ { 0x75c, 0x771, 0x75c, 0x75c}, /* 115 */
+ { 0x771, 0x771, 0x75c, 0x71d}, /* 116 */
+ { 0x771, 0x747, 0x75c, 0x771}, /* 117 */
+ { 0x771, 0x75c, 0x771, 0x724}, /* 118 */
+ { 0x771, 0x771, 0x75c, 0x763}, /* 119 */
+ { 0x71d, 0x71d, 0x771, 0x724}, /* 120 */
+ { 0x71d, 0x74e, 0x763, 0x71d}, /* 121 */
+ { 0x71d, 0x724, 0x794, 0x71d}, /* 122 */
+ { 0x71d, 0x71d, 0x75c, 0x78d}, /* 123 */
+ { 0x794, 0x724, 0x75c, 0x794}, /* 124 */
+ { 0x794, 0x794, 0x75c, 0x71d}, /* 125 */
+ { 0x794, 0x724, 0x794, 0x71d}, /* 126 */
+ { 0x794, 0x794, 0x771, 0x78d}, /* 127 */
+ { 0x79b | PALETTE_TO_RED, 0x79b | PALETTE_TO_PALE_GREEN, 0x79b | PALETTE_TO_MAUVE, 0x79b | PALETTE_TO_PURPLE}, /* 128 */
+ { 0x79b, 0x79b | PALETTE_TO_GREY, 0x79b | PALETTE_TO_GREEN, 0x79b | PALETTE_TO_WHITE}, /* 129 */
+ { 0x79b | PALETTE_TO_GREEN, 0x79b | PALETTE_TO_ORANGE, 0x79b | PALETTE_TO_PINK, 0x79b}, /* 130 */
+ { 0x79b | PALETTE_TO_YELLOW, 0x79b | PALETTE_TO_RED, 0x79b | PALETTE_TO_CREAM, 0x79b | PALETTE_TO_RED}, /* 131 */
+ { 0x7a2, 0x7a2 | PALETTE_TO_RED, 0x7a2 | PALETTE_TO_PINK, 0x7a2 | PALETTE_TO_PURPLE}, /* 132 */
+ { 0x7a2 | PALETTE_TO_MAUVE, 0x7a2 | PALETTE_TO_GREEN, 0x7a2 | PALETTE_TO_PINK, 0x7a2 | PALETTE_TO_GREY}, /* 133 */
+ { 0x7a2 | PALETTE_TO_RED, 0x7a2 | PALETTE_TO_PALE_GREEN, 0x7a2 | PALETTE_TO_YELLOW, 0x7a2 | PALETTE_TO_WHITE}, /* 134 */
+ { 0x7a2 | PALETTE_TO_ORANGE, 0x7a2 | PALETTE_TO_MAUVE, 0x7a2 | PALETTE_TO_CREAM, 0x7a2 | PALETTE_TO_BROWN}, /* 135 */
+ { 0x7a9 | PALETTE_TO_RED, 0x7a9, 0x7a9 | PALETTE_TO_ORANGE, 0x7a9 | PALETTE_TO_GREY}, /* 136 */
+ { 0x7a9 | PALETTE_TO_ORANGE, 0x7a9 | PALETTE_TO_GREEN, 0x7a9 | PALETTE_TO_PALE_GREEN, 0x7a9 | PALETTE_TO_MAUVE}, /* 137 */
+ { 0x7a9 | PALETTE_TO_PINK, 0x7a9 | PALETTE_TO_RED, 0x7a9 | PALETTE_TO_GREEN, 0x7a9 | PALETTE_TO_BROWN}, /* 138 */
+ { 0x7a9 | PALETTE_TO_GREEN, 0x7a9, 0x7a9 | PALETTE_TO_RED, 0x7a9 | PALETTE_TO_CREAM}, /* 139 */
+ { 0x7b0, 0x7b0, 0x7b0, 0x7b0}, /* 140 */
+ { 0x7b0, 0x7b0, 0x7b0, 0x7b0}, /* 141 */
+ { 0x7b0, 0x7b0, 0x7b0, 0x7b0}, /* 142 */
+ { 0x7b0, 0x7b0, 0x7b0, 0x7b0}, /* 143 */
+ { 0x7b7 | PALETTE_TO_PINK, 0x7b7 | PALETTE_TO_RED, 0x7b7 | PALETTE_TO_ORANGE, 0x7b7 | PALETTE_TO_MAUVE}, /* 144 */
+ { 0x7b7 | PALETTE_TO_RED, 0x7b7, 0x7b7 | PALETTE_TO_GREY, 0x7b7 | PALETTE_TO_CREAM}, /* 145 */
+ { 0x7b7 | PALETTE_TO_GREEN, 0x7b7 | PALETTE_TO_BROWN, 0x7b7 | PALETTE_TO_PINK, 0x7b7 | PALETTE_TO_RED}, /* 146 */
+ { 0x7b7, 0x7b7 | PALETTE_TO_PALE_GREEN, 0x7b7 | PALETTE_TO_ORANGE, 0x7b7 | PALETTE_TO_RED}, /* 147 */
+ { 0x7be | PALETTE_TO_RED, 0x7be | PALETTE_TO_PINK, 0x7be | PALETTE_TO_GREEN, 0x7be}, /* 148 */
+ { 0x7be | PALETTE_TO_GREEN, 0x7be | PALETTE_TO_BROWN, 0x7be | PALETTE_TO_PURPLE, 0x7be | PALETTE_TO_GREY}, /* 149 */
+ { 0x7be | PALETTE_TO_MAUVE, 0x7be | PALETTE_TO_CREAM, 0x7be | PALETTE_TO_ORANGE, 0x7be | PALETTE_TO_RED}, /* 150 */
+ { 0x7be, 0x7be | PALETTE_TO_RED, 0x7be | PALETTE_TO_PALE_GREEN, 0x7be | PALETTE_TO_PINK}, /* 151 */
+ { 0x7c5 | PALETTE_TO_YELLOW, 0x7c5 | PALETTE_TO_RED, 0x7c5 | PALETTE_TO_WHITE, 0x7c5 | PALETTE_TO_CREAM}, /* 152 */
+ { 0x7c5 | PALETTE_TO_RED, 0x7c5 | PALETTE_TO_PALE_GREEN, 0x7c5 | PALETTE_TO_BROWN, 0x7c5 | PALETTE_TO_YELLOW}, /* 153 */
+ { 0x7c5, 0x7c5 | PALETTE_TO_PURPLE, 0x7c5 | PALETTE_TO_GREEN, 0x7c5 | PALETTE_TO_YELLOW}, /* 154 */
+ { 0x7c5 | PALETTE_TO_PINK, 0x7c5 | PALETTE_TO_CREAM, 0x7c5, 0x7c5 | PALETTE_TO_GREY}, /* 155 */
+ { 0x7cc | PALETTE_TO_YELLOW, 0x7cc | PALETTE_TO_GREY, 0x7cc | PALETTE_TO_PURPLE, 0x7cc | PALETTE_TO_BROWN}, /* 156 */
+ { 0x7cc | PALETTE_TO_GREEN, 0x7cc, 0x7cc | PALETTE_TO_CREAM, 0x7cc | PALETTE_TO_WHITE}, /* 157 */
+ { 0x7cc | PALETTE_TO_RED, 0x7cc | PALETTE_TO_PALE_GREEN, 0x7cc | PALETTE_TO_MAUVE, 0x7cc | PALETTE_TO_RED}, /* 158 */
+ { 0x7cc | PALETTE_TO_PINK, 0x7cc | PALETTE_TO_ORANGE, 0x7cc | PALETTE_TO_GREEN, 0x7cc | PALETTE_TO_YELLOW}, /* 159 */
+ { 0x7d3 | PALETTE_TO_RED, 0x7d3 | PALETTE_TO_PINK, 0x7d3 | PALETTE_TO_BROWN, 0x7d3 | PALETTE_TO_WHITE}, /* 160 */
+ { 0x7d3 | PALETTE_TO_GREEN, 0x7d3 | PALETTE_TO_ORANGE, 0x7d3 | PALETTE_TO_GREY, 0x7d3 | PALETTE_TO_MAUVE}, /* 161 */
+ { 0x7d3 | PALETTE_TO_YELLOW, 0x7d3 | PALETTE_TO_PALE_GREEN, 0x7d3, 0x7d3 | PALETTE_TO_CREAM}, /* 162 */
+ { 0x7d3 | PALETTE_TO_GREY, 0x7d3 | PALETTE_TO_RED, 0x7d3 | PALETTE_TO_WHITE, 0x7d3}, /* 163 */
+ /* the extra things follow */
+ { 0x6e5, 0x6e5, 0x6e5, 0x6e5}, /* 0 */
+ { 0x6e5, 0x6e5, 0x6fa, 0x708}, /* 1 */
+ { 0x6e5, 0x70f, 0x6e5, 0x6e5}, /* 2 */
+ { 0x6e5, 0x708, 0x701, 0x6e5}, /* 3 */
+ { 0x708, 0x708, 0x708, 0x6e5}, /* 4 */
+ { 0x708, 0x6e5, 0x70f, 0x701}, /* 5 */
+ { 0x708, 0x70f, 0x708, 0x6fa}, /* 6 */
+ { 0x708, 0x708, 0x708, 0x6e5}, /* 7 */
+ { 0x70f, 0x70f, 0x70f, 0x70f}, /* 8 */
+ { 0x70f, 0x70f, 0x6e5, 0x6e5}, /* 9 */
+ { 0x70f, 0x708, 0x70f, 0x6e5}, /* 10 */
+ { 0x70f, 0x70f, 0x708, 0x6e5}, /* 11 */
+ { 0x6fa, 0x708, 0x701, 0x6fa}, /* 12 */
+ { 0x6fa, 0x701, 0x6fa, 0x6e5}, /* 13 */
+ { 0x6fa, 0x6fa, 0x6fa, 0x6e5}, /* 14 */
+ { 0x6fa, 0x6fa, 0x6fa, 0x701}, /* 15 */
+ { 0x701, 0x708, 0x6ec, 0x6fa}, /* 16 */
+ { 0x701, 0x6f3, 0x716, 0x70f}, /* 17 */
+ { 0x701, 0x6fa, 0x6f3, 0x6ec}, /* 18 */
+ { 0x701, 0x6f3, 0x6fa, 0x716}, /* 19 */
+ { 0x6ec, 0x6ec, 0x716, 0x701}, /* 20 */
+ { 0x6ec, 0x6f3, 0x6f3, 0x6e5}, /* 21 */
+ { 0x6ec, 0x716, 0x6f3, 0x6ec}, /* 22 */
+ { 0x6ec, 0x6e5, 0x6fa, 0x716}, /* 23 */
+ { 0x6f3, 0x708, 0x716, 0x6fa}, /* 24 */
+ { 0x6f3, 0x6ec, 0x6f3, 0x70f}, /* 25 */
+ { 0x6f3, 0x716, 0x6f3, 0x6ec}, /* 26 */
+ { 0x6f3, 0x701, 0x6fa, 0x716}, /* 27 */
+ { 0x716, 0x70f, 0x716, 0x6fa}, /* 28 */
+ { 0x716, 0x6f3, 0x716, 0x708}, /* 29 */
+ { 0x716, 0x716, 0x6f3, 0x6ec}, /* 30 */
+ { 0x716, 0x701, 0x6fa, 0x716}, /* 31 */
+};
+
+#endif /* TREE_LAND_H */
diff --git a/src/table/unicode.h b/src/table/unicode.h
new file mode 100644
index 000000000..2bbd6624c
--- /dev/null
+++ b/src/table/unicode.h
@@ -0,0 +1,21 @@
+/* $Id$ */
+
+
+typedef struct DefaultUnicodeMapping {
+ WChar code; ///< Unicode value
+ byte key; ///< Character index of sprite
+} DefaultUnicodeMapping;
+
+
+/* Default unicode mapping table for sprite based glyphs.
+ * This table allows us use unicode characters even though the glyphs don't
+ * exist, or are in the wrong place, in the standard sprite fonts.
+ * This is not used for FreeType rendering */
+
+static DefaultUnicodeMapping _default_unicode_map[] = {
+ { 0x010D, 0x63 }, /* Small letter c with caron */
+ { 0x0160, 0xA6 }, /* Capital letter s with caron */
+ { 0x0161, 0xA8 }, /* Small letter s with caron */
+ { 0x017E, 0xB8 }, /* Small letter z with caron */
+ { 0x20AC, 0xA4 }, /* Euro symbol */
+};
diff --git a/src/table/unmovable_land.h b/src/table/unmovable_land.h
new file mode 100644
index 000000000..9b9e7d6cd
--- /dev/null
+++ b/src/table/unmovable_land.h
@@ -0,0 +1,131 @@
+/* $Id$ */
+
+typedef struct DrawTileUnmovableStruct {
+ uint16 image;
+ byte subcoord_x;
+ byte subcoord_y;
+ byte width;
+ byte height;
+ byte z_size;
+ byte unused;
+} DrawTileUnmovableStruct;
+
+#define TILE_SEQ_END() { 0x80, 0, 0, 0, 0, 0, 0 }
+
+static const DrawTileUnmovableStruct _draw_tile_unmovable_data[] = {
+ {0xA29, 7, 7, 2, 2, 70, 0},
+ {0xA2A, 4, 4, 7, 7, 61, 0},
+};
+
+
+static const DrawTileSeqStruct _unmovable_display_datas_0[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_1[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_2[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_3[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_4[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_5[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_6[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_7[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_8[] = {
+ { 0, 0, 0, 16, 16, 20, 0xA34 | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_9[] = {
+ { 0, 0, 0, 16, 16, 20, 0xA36 | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_10[] = {
+ { 0, 0, 0, 16, 16, 20, 0xA38 | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_11[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_12[] = {
+ { 0, 0, 0, 16, 16, 50, 0xA3B | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_13[] = {
+ { 0, 0, 0, 16, 16, 50, 0xA3D | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_14[] = {
+ { 0, 0, 0, 16, 16, 50, 0xA3F | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_15[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_16[] = {
+ { 0, 0, 0, 16, 16, 60, 0xA42 | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_17[] = {
+ { 0, 0, 0, 16, 16, 60, 0xA44 | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_18[] = {
+ { 0, 0, 0, 16, 16, 60, 0xA46 | PALETTE_MODIFIER_COLOR },
+ TILE_SEQ_END()
+};
+
+static const DrawTileSeqStruct _unmovable_display_datas_19[] = {
+ TILE_SEQ_END()
+};
+
+static const DrawTileSprites _unmovable_display_datas[] = {
+ { 0xA2B | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_0 },
+ { 0xA2C | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_1 },
+ { 0xA2D | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_2 },
+ { 0xA2E | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_3 },
+ { 0xA2F | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_4 },
+ { 0xA30 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_5 },
+ { 0xA31 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_6 },
+ { 0xA32 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_7 },
+ { 0xA33 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_8 },
+ { 0xA35 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_9 },
+ { 0xA37 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_10 },
+ { 0xA39 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_11 },
+ { 0xA3A | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_12 },
+ { 0xA3C | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_13 },
+ { 0xA3E | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_14 },
+ { 0xA40 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_15 },
+ { 0xA41 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_16 },
+ { 0xA43 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_17 },
+ { 0xA45 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_18 },
+ { 0xA47 | PALETTE_MODIFIER_COLOR, _unmovable_display_datas_19 },
+};
diff --git a/src/table/water_land.h b/src/table/water_land.h
new file mode 100644
index 000000000..96cef5f39
--- /dev/null
+++ b/src/table/water_land.h
@@ -0,0 +1,151 @@
+/* $Id$ */
+
+typedef struct WaterDrawTileStruct {
+ byte delta_x;
+ byte delta_y;
+ byte delta_z;
+ byte width;
+ byte height;
+ byte unk;
+ SpriteID image;
+} WaterDrawTileStruct;
+
+#define BEGIN(image) { 0, 0, 0, 0, 0, 0, image }
+#define END(y) { 0x80, y, 0, 0, 0, 0, 0 }
+
+static const WaterDrawTileStruct _shipdepot_display_seq_1[] = {
+ BEGIN(0xFDD),
+ { 0, 15, 0, 16, 1, 0x14, 0xFE8 | PALETTE_MODIFIER_COLOR },
+ END(0)
+};
+
+static const WaterDrawTileStruct _shipdepot_display_seq_2[] = {
+ BEGIN(0xFDD),
+ { 0, 0, 0, 16, 1, 0x14, 0xFEA },
+ { 0, 15, 0, 16, 1, 0x14, 0xFE6 | PALETTE_MODIFIER_COLOR },
+ END(0)
+};
+
+static const WaterDrawTileStruct _shipdepot_display_seq_3[] = {
+ BEGIN(0xFDD),
+ { 15, 0, 0, 1, 0x10, 0x14, 0xFE9 | PALETTE_MODIFIER_COLOR },
+ END(0)
+};
+
+static const WaterDrawTileStruct _shipdepot_display_seq_4[] = {
+ BEGIN(0xFDD),
+ { 0, 0, 0, 1, 16, 0x14, 0xFEB },
+ { 15, 0, 0, 1, 16, 0x14, 0xFE7 | PALETTE_MODIFIER_COLOR },
+ END(0)
+};
+
+static const WaterDrawTileStruct* const _shipdepot_display_seq[] = {
+ _shipdepot_display_seq_1,
+ _shipdepot_display_seq_2,
+ _shipdepot_display_seq_3,
+ _shipdepot_display_seq_4,
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_0[] = {
+ BEGIN(SPR_CANALS_BASE + 6),
+ { 0, 0, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 0 + 1 },
+ { 0, 0xF, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 4 + 1 },
+ END(0)
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_1[] = {
+ BEGIN(SPR_CANALS_BASE + 5),
+ { 0, 0, 0, 1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 0 },
+ { 0xF, 0, 0, 1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 4 },
+ END(0)
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_2[] = {
+ BEGIN(SPR_CANALS_BASE + 7),
+ { 0, 0, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 0 + 2 },
+ { 0, 0xF, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 4 + 2 },
+ END(0)
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_3[] = {
+ BEGIN(SPR_CANALS_BASE + 8),
+ { 0, 0, 0, 1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 0 + 3 },
+ { 0xF, 0, 0, 1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 4 + 3 },
+ END(0)
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_0b[] = {
+ BEGIN(0xFDD),
+ { 0, 0, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 8 + 1 },
+ { 0, 0xF, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 12 + 1 },
+ END(0)
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_1b[] = {
+ BEGIN(0xFDD),
+ { 0, 0, 0, 0x1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 8 },
+ { 0xF, 0, 0, 0x1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 12 },
+ END(0)
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_2b[] = {
+ BEGIN(0xFDD),
+ { 0, 0, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 8 + 2 },
+ { 0, 0xF, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 12 + 2 },
+ END(0)
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_3b[] = {
+ BEGIN(0xFDD),
+ { 0, 0, 0, 1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 8 + 3 },
+ { 0xF, 0, 0, 1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 12 + 3 },
+ END(0)
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_0t[] = {
+ BEGIN(0xFDD),
+ { 0, 0, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 16 + 1 },
+ { 0, 0xF, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 20 + 1 },
+ END(8)
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_1t[] = {
+ BEGIN(0xFDD),
+ { 0, 0, 0, 0x1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 16 },
+ { 0xF, 0, 0, 0x1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 20 },
+ END(8)
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_2t[] = {
+ BEGIN(0xFDD),
+ { 0, 0, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 16 + 2 },
+ { 0, 0xF, 0, 0x10, 1, 0x14, SPR_CANALS_BASE + 9 + 20 + 2 },
+ END(8)
+};
+
+static const WaterDrawTileStruct _shiplift_display_seq_3t[] = {
+ BEGIN(0xFDD),
+ { 0, 0, 0, 1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 16 + 3 },
+ { 0xF, 0, 0, 1, 0x10, 0x14, SPR_CANALS_BASE + 9 + 20 + 3 },
+ END(8)
+};
+
+static const WaterDrawTileStruct* const _shiplift_display_seq[] = {
+ _shiplift_display_seq_0,
+ _shiplift_display_seq_1,
+ _shiplift_display_seq_2,
+ _shiplift_display_seq_3,
+
+ _shiplift_display_seq_0b,
+ _shiplift_display_seq_1b,
+ _shiplift_display_seq_2b,
+ _shiplift_display_seq_3b,
+
+ _shiplift_display_seq_0t,
+ _shiplift_display_seq_1t,
+ _shiplift_display_seq_2t,
+ _shiplift_display_seq_3t,
+};
+
+#undef BEGIN
+#undef END