00001
00002
00005 #include "../core/endian_type.hpp"
00006
00007 #if TTD_ENDIAN == TTD_BIG_ENDIAN
00008 #define M(r, g, b) { 0xff, r, g, b }
00009 #else
00010 #define M(r, g, b) { b, g, r, 0xff }
00011 #endif
00012
00013 static const Colour _palettes[][256] = {
00014
00015 {
00016 { 0, 0, 0, 0 }, M( 16, 16, 16), M( 32, 32, 32), M( 48, 48, 48),
00017 M( 65, 64, 65), M( 82, 80, 82), M( 98, 101, 98), M(115, 117, 115),
00018 M(131, 133, 131), M(148, 149, 148), M(168, 168, 168), M(184, 184, 184),
00019 M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252),
00020 M( 52, 60, 72), M( 68, 76, 92), M( 88, 96, 112), M(108, 116, 132),
00021 M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220),
00022 M( 48, 44, 4), M( 64, 60, 12), M( 80, 76, 20), M( 96, 92, 28),
00023 M(120, 120, 64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168),
00024 M( 72, 44, 4), M( 88, 60, 20), M(104, 80, 44), M(124, 104, 72),
00025 M(152, 132, 92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176),
00026 M( 64, 0, 4), M( 88, 4, 16), M(112, 16, 32), M(136, 32, 52),
00027 M(160, 56, 76), M(188, 84, 108), M(204, 104, 124), M(220, 132, 144),
00028 M(236, 156, 164), M(252, 188, 192), M(252, 212, 0), M(252, 232, 60),
00029 M(252, 248, 128), M( 76, 40, 0), M( 96, 60, 8), M(116, 88, 28),
00030 M(136, 116, 56), M(156, 136, 80), M(176, 156, 108), M(196, 180, 136),
00031 M( 68, 24, 0), M( 96, 44, 4), M(128, 68, 8), M(156, 96, 16),
00032 M(184, 120, 24), M(212, 156, 32), M(232, 184, 16), M(252, 212, 0),
00033 M(252, 248, 128), M(252, 252, 192), M( 32, 4, 0), M( 64, 20, 8),
00034 M( 84, 28, 16), M(108, 44, 28), M(128, 56, 40), M(148, 72, 56),
00035 M(168, 92, 76), M(184, 108, 88), M(196, 128, 108), M(212, 148, 128),
00036 M( 8, 52, 0), M( 16, 64, 0), M( 32, 80, 4), M( 48, 96, 4),
00037 M( 64, 112, 12), M( 84, 132, 20), M(104, 148, 28), M(128, 168, 44),
00038 M( 28, 52, 24), M( 44, 68, 32), M( 60, 88, 48), M( 80, 104, 60),
00039 M(104, 124, 76), M(128, 148, 92), M(152, 176, 108), M(180, 204, 124),
00040 M( 16, 52, 24), M( 32, 72, 44), M( 56, 96, 72), M( 76, 116, 88),
00041 M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200),
00042 M( 32, 24, 0), M( 56, 28, 0), M( 72, 40, 0), M( 88, 52, 12),
00043 M(104, 64, 24), M(124, 84, 44), M(140, 108, 64), M(160, 128, 88),
00044 M( 76, 40, 16), M( 96, 52, 24), M(116, 68, 40), M(136, 84, 56),
00045 M(164, 96, 64), M(184, 112, 80), M(204, 128, 96), M(212, 148, 112),
00046 M(224, 168, 128), M(236, 188, 148), M( 80, 28, 4), M(100, 40, 20),
00047 M(120, 56, 40), M(140, 76, 64), M(160, 100, 96), M(184, 136, 136),
00048 M( 36, 40, 68), M( 48, 52, 84), M( 64, 64, 100), M( 80, 80, 116),
00049 M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224),
00050 M( 40, 20, 112), M( 64, 44, 144), M( 88, 64, 172), M(104, 76, 196),
00051 M(120, 88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252),
00052 M( 0, 24, 108), M( 0, 36, 132), M( 0, 52, 160), M( 0, 72, 184),
00053 M( 0, 96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240),
00054 M(128, 196, 252), M(188, 224, 252), M( 16, 64, 96), M( 24, 80, 108),
00055 M( 40, 96, 120), M( 52, 112, 132), M( 80, 140, 160), M(116, 172, 192),
00056 M(156, 204, 220), M(204, 240, 252), M(172, 52, 52), M(212, 52, 52),
00057 M(252, 52, 52), M(252, 100, 88), M(252, 144, 124), M(252, 184, 160),
00058 M(252, 216, 200), M(252, 244, 236), M( 72, 20, 112), M( 92, 44, 140),
00059 M(112, 68, 168), M(140, 100, 196), M(168, 136, 224), M(204, 180, 252),
00060 M(204, 180, 252), M(232, 208, 252), M( 60, 0, 0), M( 92, 0, 0),
00061 M(128, 0, 0), M(160, 0, 0), M(196, 0, 0), M(224, 0, 0),
00062 M(252, 0, 0), M(252, 80, 0), M(252, 108, 0), M(252, 136, 0),
00063 M(252, 164, 0), M(252, 192, 0), M(252, 220, 0), M(252, 252, 0),
00064 M(204, 136, 8), M(228, 144, 4), M(252, 156, 0), M(252, 176, 48),
00065 M(252, 196, 100), M(252, 216, 152), M( 8, 24, 88), M( 12, 36, 104),
00066 M( 20, 52, 124), M( 28, 68, 140), M( 40, 92, 164), M( 56, 120, 188),
00067 M( 72, 152, 216), M(100, 172, 224), M( 92, 156, 52), M(108, 176, 64),
00068 M(124, 200, 76), M(144, 224, 92), M(224, 244, 252), M(204, 240, 252),
00069 M(180, 220, 236), M(132, 188, 216), M( 88, 152, 172), M( 16, 16, 16),
00070 M( 32, 32, 32), M( 8, 92, 104), M( 16, 100, 112), M( 24, 108, 120),
00071 M( 32, 116, 128), M( 44, 124, 140), M( 92, 164, 184), M(116, 180, 196),
00072 M(148, 200, 216), M(180, 220, 232), M(216, 244, 252), M( 0, 0, 0),
00073 M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
00074 M(252, 60, 0), M(252, 80, 0), M(252, 104, 0), M(252, 128, 0),
00075 M(252, 148, 0), M(252, 172, 0), M(252, 196, 0), M(252, 0, 0),
00076 M(252, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
00077 M(252, 228, 0), M(148, 148, 148), M( 16, 101, 115), M( 24, 109, 123),
00078 M( 32, 117, 131), M( 41, 125, 139), M( 90, 165, 189), M(115, 182, 197),
00079 M(148, 202, 222), M(180, 222, 238), M(222, 246, 255), M(252, 252, 252)
00080 },
00081
00082
00083 {
00084 { 0, 0, 0, 0 }, M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
00085 M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
00086 M(212, 0, 212), M(212, 0, 212), M(168, 168, 168), M(184, 184, 184),
00087 M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252),
00088 M( 52, 60, 72), M( 68, 76, 92), M( 88, 96, 112), M(108, 116, 132),
00089 M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220),
00090 M( 48, 44, 4), M( 64, 60, 12), M( 80, 76, 20), M( 96, 92, 28),
00091 M(120, 120, 64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168),
00092 M(100, 100, 100), M(116, 116, 116), M(104, 80, 44), M(124, 104, 72),
00093 M(152, 132, 92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176),
00094 M(132, 132, 132), M( 88, 4, 16), M(112, 16, 32), M(136, 32, 52),
00095 M(160, 56, 76), M(188, 84, 108), M(204, 104, 124), M(220, 132, 144),
00096 M(236, 156, 164), M(252, 188, 192), M(252, 212, 0), M(252, 232, 60),
00097 M(252, 248, 128), M( 76, 40, 0), M( 96, 60, 8), M(116, 88, 28),
00098 M(136, 116, 56), M(156, 136, 80), M(176, 156, 108), M(196, 180, 136),
00099 M( 68, 24, 0), M( 96, 44, 4), M(128, 68, 8), M(156, 96, 16),
00100 M(184, 120, 24), M(212, 156, 32), M(232, 184, 16), M(252, 212, 0),
00101 M(252, 248, 128), M(252, 252, 192), M( 32, 4, 0), M( 64, 20, 8),
00102 M( 84, 28, 16), M(108, 44, 28), M(128, 56, 40), M(148, 72, 56),
00103 M(168, 92, 76), M(184, 108, 88), M(196, 128, 108), M(212, 148, 128),
00104 M( 8, 52, 0), M( 16, 64, 0), M( 32, 80, 4), M( 48, 96, 4),
00105 M( 64, 112, 12), M( 84, 132, 20), M(104, 148, 28), M(128, 168, 44),
00106 M( 64, 64, 64), M( 44, 68, 32), M( 60, 88, 48), M( 80, 104, 60),
00107 M(104, 124, 76), M(128, 148, 92), M(152, 176, 108), M(180, 204, 124),
00108 M( 16, 52, 24), M( 32, 72, 44), M( 56, 96, 72), M( 76, 116, 88),
00109 M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200),
00110 M( 32, 24, 0), M( 56, 28, 0), M( 80, 80, 80), M( 88, 52, 12),
00111 M(104, 64, 24), M(124, 84, 44), M(140, 108, 64), M(160, 128, 88),
00112 M( 76, 40, 16), M( 96, 52, 24), M(116, 68, 40), M(136, 84, 56),
00113 M(164, 96, 64), M(184, 112, 80), M(204, 128, 96), M(212, 148, 112),
00114 M(224, 168, 128), M(236, 188, 148), M( 80, 28, 4), M(100, 40, 20),
00115 M(120, 56, 40), M(140, 76, 64), M(160, 100, 96), M(184, 136, 136),
00116 M( 36, 40, 68), M( 48, 52, 84), M( 64, 64, 100), M( 80, 80, 116),
00117 M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224),
00118 M( 48, 48, 48), M( 64, 44, 144), M( 88, 64, 172), M(104, 76, 196),
00119 M(120, 88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252),
00120 M( 0, 24, 108), M( 0, 36, 132), M( 0, 52, 160), M( 0, 72, 184),
00121 M( 0, 96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240),
00122 M(128, 196, 252), M(188, 224, 252), M( 16, 64, 96), M( 24, 80, 108),
00123 M( 40, 96, 120), M( 52, 112, 132), M( 80, 140, 160), M(116, 172, 192),
00124 M(156, 204, 220), M(204, 240, 252), M(172, 52, 52), M(212, 52, 52),
00125 M(252, 52, 52), M(252, 100, 88), M(252, 144, 124), M(252, 184, 160),
00126 M(252, 216, 200), M(252, 244, 236), M( 72, 20, 112), M( 92, 44, 140),
00127 M(112, 68, 168), M(140, 100, 196), M(168, 136, 224), M(204, 180, 252),
00128 M(204, 180, 252), M(232, 208, 252), M( 60, 0, 0), M( 92, 0, 0),
00129 M(128, 0, 0), M(160, 0, 0), M(196, 0, 0), M(224, 0, 0),
00130 M(252, 0, 0), M(252, 80, 0), M(252, 108, 0), M(252, 136, 0),
00131 M(252, 164, 0), M(252, 192, 0), M(252, 220, 0), M(252, 252, 0),
00132 M(204, 136, 8), M(228, 144, 4), M(252, 156, 0), M(252, 176, 48),
00133 M(252, 196, 100), M(252, 216, 152), M( 8, 24, 88), M( 12, 36, 104),
00134 M( 20, 52, 124), M( 28, 68, 140), M( 40, 92, 164), M( 56, 120, 188),
00135 M( 72, 152, 216), M(100, 172, 224), M( 92, 156, 52), M(108, 176, 64),
00136 M(124, 200, 76), M(144, 224, 92), M(224, 244, 252), M(204, 240, 252),
00137 M(180, 220, 236), M(132, 188, 216), M( 88, 152, 172), M( 16, 16, 16),
00138 M( 32, 32, 32), M( 8, 92, 104), M( 16, 100, 112), M( 24, 108, 120),
00139 M( 32, 116, 128), M( 44, 124, 140), M( 92, 164, 184), M(116, 180, 196),
00140 M(148, 200, 216), M(180, 220, 232), M(216, 244, 252), M( 0, 0, 0),
00141 M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
00142 M(252, 60, 0), M(252, 80, 0), M(252, 104, 0), M(252, 128, 0),
00143 M(252, 148, 0), M(252, 172, 0), M(252, 196, 0), M(252, 0, 0),
00144 M(252, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
00145 M(252, 228, 0), M(148, 148, 148), M(212, 0, 212), M(212, 0, 212),
00146 M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
00147 M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(252, 252, 252)
00148 }
00149 };
00150
00151 #define GET_PALETTE(x) _palettes[x]
00152
00153 struct ExtraPaletteValues {
00154 Colour dark_water[15];
00155 Colour dark_water_TOY[15];
00156 Colour lighthouse[12];
00157 Colour oil_ref[21];
00158 Colour fizzy_drink[15];
00159 Colour glitter_water[45];
00160 Colour glitter_water_TOY[45];
00161 };
00162
00163 static const ExtraPaletteValues _extra_palette_values = {
00164
00165 { M( 32, 68, 112), M( 36, 72, 116), M( 40, 76, 120), M( 44, 80, 124),
00166 M( 48, 84, 128) },
00167
00168
00169 { M( 28, 108, 124), M( 32, 112, 128), M( 36, 116, 132), M( 40, 120, 136),
00170 M( 44, 124, 140) },
00171
00172
00173 { M(240, 208, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0) },
00174
00175
00176 { M(252, 60, 0), M(252, 84, 0), M(252, 108, 0), M(252, 124, 0),
00177 M(252, 148, 0), M(252, 172, 0), M(252, 196, 0) },
00178
00179
00180 { M( 76, 24, 8), M(108, 44, 24), M(144, 72, 52), M(176, 108, 84),
00181 M(212, 148, 128) },
00182
00183
00184 { M(216, 244, 252), M(172, 208, 224), M(132, 172, 196), M(100, 132, 168),
00185 M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
00186 M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
00187 M(100, 132, 168), M(132, 172, 196), M(172, 208, 224) },
00188
00189
00190 { M(216, 244, 252), M(180, 220, 232), M(148, 200, 216), M(116, 180, 196),
00191 M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
00192 M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
00193 M(116, 180, 196), M(148, 200, 216), M(180, 220, 232) }
00194 };
00195 #undef M
00196
00197
00198 struct StringColour {
00199 byte text;
00200 byte shadow;
00201 };
00202
00203 static const StringColour _string_colourmap[][17] = {
00204 {
00205 { 150, 1 },
00206 { 12, 1 },
00207 { 189, 1 },
00208 { 184, 1 },
00209 { 174, 1 },
00210 { 30, 1 },
00211 { 195, 1 },
00212 { 209, 1 },
00213 { 68, 1 },
00214 { 95, 1 },
00215 { 79, 1 },
00216 { 116, 1 },
00217 { 15, 1 },
00218 { 152, 1 },
00219 { 6, 1 },
00220 { 133, 1 },
00221 { 1, 0 },
00222 },
00223 {
00224 { 150, 215 },
00225 { 12, 215 },
00226 { 189, 215 },
00227 { 184, 215 },
00228 { 174, 215 },
00229 { 30, 215 },
00230 { 195, 215 },
00231 { 209, 215 },
00232 { 68, 215 },
00233 { 95, 215 },
00234 { 79, 215 },
00235 { 116, 215 },
00236 { 15, 215 },
00237 { 152, 215 },
00238 { 32, 215 },
00239 { 133, 215 },
00240 { 215, 0 },
00241 }
00242 };