(svn r22419) -Change: Always use the DOS palette for drawing.

-Remove: the '-i' option for palette selection.
pull/155/head
frosch 13 years ago
parent 3d0d0729af
commit 74e71380ef

@ -207,10 +207,6 @@ struct GraphicsSet : BaseSet<GraphicsSet, MAX_GFT, DATA_DIR> {
/** All data/functions related with replacing the base graphics. */
class BaseGraphics : public BaseMedia<GraphicsSet> {
public:
/**
* Determine the palette of the current graphics set.
*/
static void DeterminePalette();
};
/** All data of a sounds set. */

@ -165,16 +165,16 @@ inline void Blitter_32bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel
do {
/* Compiler assumes pointer aliasing, can't optimise this on its own */
uint m = *src_n++;
/* Above 217 (PALETTE_ANIM_SIZE_START) is palette animation */
/* Above PALETTE_ANIM_START is palette animation */
*anim++ = m;
*dst++ = (m >= PALETTE_ANIM_SIZE_START) ? this->LookupColourInPalette(m) : src_px->data;
*dst++ = (m >= PALETTE_ANIM_START) ? this->LookupColourInPalette(m) : src_px->data;
src_px++;
} while (--n != 0);
} else {
do {
uint m = *src_n++;
*anim++ = m;
if (m >= PALETTE_ANIM_SIZE_START) {
if (m >= PALETTE_ANIM_START) {
*dst = ComposeColourPANoCheck(this->LookupColourInPalette(m), src_px->a, *dst);
} else {
*dst = ComposeColourRGBANoCheck(src_px->r, src_px->g, src_px->b, src_px->a, *dst);
@ -299,8 +299,6 @@ void Blitter_32bppAnim::CopyFromBuffer(void *video, const void *src, int width,
uint32 *usrc = (uint32 *)src;
uint8 *anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
int count = (_use_palette == PAL_DOS) ? PALETTE_ANIM_SIZE_DOS : PALETTE_ANIM_SIZE_WIN;
for (; height > 0; height--) {
/* We need to keep those for palette animation. */
uint32 *dst_pal = dst;
@ -323,7 +321,7 @@ void Blitter_32bppAnim::CopyFromBuffer(void *video, const void *src, int width,
* palette animation, much cheaper though slightly nastier. */
for (int i = 0; i < width; i++) {
uint colour = *anim_pal;
if (IsInsideBS(colour, PALETTE_ANIM_SIZE_START, count)) {
if (IsInsideBS(colour, PALETTE_ANIM_START, PALETTE_ANIM_SIZE)) {
/* Update this pixel */
*dst_pal = LookupColourInPalette(colour);
}

@ -292,8 +292,8 @@ static void SetColourRemap(TextColour colour)
bool raw_colour = (colour & TC_IS_PALETTE_COLOUR) != 0;
colour &= ~(TC_NO_SHADE | TC_IS_PALETTE_COLOUR);
_string_colourremap[1] = raw_colour ? (byte)colour : _string_colourmap[_use_palette][colour];
_string_colourremap[2] = no_shade ? 0 : (_use_palette == PAL_DOS ? 1 : 215);
_string_colourremap[1] = raw_colour ? (byte)colour : _string_colourmap[colour];
_string_colourremap[2] = no_shade ? 0 : 1;
_colour_remap_ptr = _string_colourremap;
}
@ -1255,7 +1255,7 @@ void DoPaletteAnimations();
void GfxInitPalettes()
{
memcpy(_cur_palette, _palettes[_use_palette], sizeof(_cur_palette));
memcpy(_cur_palette, _palette, sizeof(_cur_palette));
DoPaletteAnimations();
_pal_first_dirty = 0;
@ -1274,12 +1274,7 @@ void DoPaletteAnimations()
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
const Colour *s;
const ExtraPaletteValues *ev = &_extra_palette_values;
/* Amount of colours to be rotated.
* A few more for the DOS palette, because the water colours are
* 245-254 for DOS and 217-226 for Windows. */
const int colour_rotation_amount = (_use_palette == PAL_DOS) ? PALETTE_ANIM_SIZE_DOS : PALETTE_ANIM_SIZE_WIN;
Colour old_val[PALETTE_ANIM_SIZE_DOS];
const int oldval_size = colour_rotation_amount * sizeof(*old_val);
Colour old_val[PALETTE_ANIM_SIZE];
const uint old_tc = palette_animation_counter;
uint i;
uint j;
@ -1288,28 +1283,10 @@ void DoPaletteAnimations()
palette_animation_counter = 0;
}
Colour *palette_pos = &_cur_palette[PALETTE_ANIM_SIZE_START]; // Points to where animations are taking place on the palette
Colour *palette_pos = &_cur_palette[PALETTE_ANIM_START]; // Points to where animations are taking place on the palette
/* Makes a copy of the current anmation palette in old_val,
* so the work on the current palette could be compared, see if there has been any changes */
memcpy(old_val, palette_pos, oldval_size);
/* Dark blue water */
s = (_settings_game.game_creation.landscape == LT_TOYLAND) ? ev->dark_water_toyland : ev->dark_water;
j = EXTR(320, EPV_CYCLES_DARK_WATER);
for (i = 0; i != EPV_CYCLES_DARK_WATER; i++) {
*palette_pos++ = s[j];
j++;
if (j == EPV_CYCLES_DARK_WATER) j = 0;
}
/* Glittery water; jumps over 3 colours each cycle! */
s = (_settings_game.game_creation.landscape == LT_TOYLAND) ? ev->glitter_water_toyland : ev->glitter_water;
j = EXTR(128, EPV_CYCLES_GLITTER_WATER);
for (i = 0; i != EPV_CYCLES_GLITTER_WATER / 3; i++) {
*palette_pos++ = s[j];
j += 3;
if (j >= EPV_CYCLES_GLITTER_WATER) j -= EPV_CYCLES_GLITTER_WATER;
}
memcpy(old_val, palette_pos, sizeof(old_val));
/* Fizzy Drink bubbles animation */
s = ev->fizzy_drink;
@ -1369,34 +1346,31 @@ void DoPaletteAnimations()
if (j == EPV_CYCLES_LIGHTHOUSE) j = 0;
}
/* Animate water for old DOS graphics */
if (_use_palette == PAL_DOS) {
/* Dark blue water DOS */
s = (_settings_game.game_creation.landscape == LT_TOYLAND) ? ev->dark_water_toyland : ev->dark_water;
j = EXTR(320, EPV_CYCLES_DARK_WATER);
for (i = 0; i != EPV_CYCLES_DARK_WATER; i++) {
*palette_pos++ = s[j];
j++;
if (j == EPV_CYCLES_DARK_WATER) j = 0;
}
/* Dark blue water */
s = (_settings_game.game_creation.landscape == LT_TOYLAND) ? ev->dark_water_toyland : ev->dark_water;
j = EXTR(320, EPV_CYCLES_DARK_WATER);
for (i = 0; i != EPV_CYCLES_DARK_WATER; i++) {
*palette_pos++ = s[j];
j++;
if (j == EPV_CYCLES_DARK_WATER) j = 0;
}
/* Glittery water DOS */
s = (_settings_game.game_creation.landscape == LT_TOYLAND) ? ev->glitter_water_toyland : ev->glitter_water;
j = EXTR(128, EPV_CYCLES_GLITTER_WATER);
for (i = 0; i != EPV_CYCLES_GLITTER_WATER / 3; i++) {
*palette_pos++ = s[j];
j += 3;
if (j >= EPV_CYCLES_GLITTER_WATER) j -= EPV_CYCLES_GLITTER_WATER;
}
/* Glittery water */
s = (_settings_game.game_creation.landscape == LT_TOYLAND) ? ev->glitter_water_toyland : ev->glitter_water;
j = EXTR(128, EPV_CYCLES_GLITTER_WATER);
for (i = 0; i != EPV_CYCLES_GLITTER_WATER / 3; i++) {
*palette_pos++ = s[j];
j += 3;
if (j >= EPV_CYCLES_GLITTER_WATER) j -= EPV_CYCLES_GLITTER_WATER;
}
if (blitter != NULL && blitter->UsePaletteAnimation() == Blitter::PALETTE_ANIMATION_NONE) {
palette_animation_counter = old_tc;
} else {
if (memcmp(old_val, &_cur_palette[PALETTE_ANIM_SIZE_START], oldval_size) != 0) {
if (memcmp(old_val, &_cur_palette[PALETTE_ANIM_START], sizeof(old_val)) != 0) {
/* Did we changed anything on the palette? Seems so. Mark it as dirty */
_pal_first_dirty = PALETTE_ANIM_SIZE_START;
_pal_count_dirty = colour_rotation_amount;
_pal_first_dirty = PALETTE_ANIM_START;
_pal_count_dirty = PALETTE_ANIM_SIZE;
}
}
}

@ -180,9 +180,6 @@ extern DrawPixelInfo *_cur_dpi;
*/
extern byte _colour_gradient[COLOUR_END][8];
extern PaletteType _use_palette;
extern bool _palette_remap_grf[];
extern const byte *_palette_remap;
extern const byte *_palette_reverse_remap;
#endif /* GFX_FUNC_H */

@ -234,9 +234,8 @@ DECLARE_ENUM_AS_BIT_SET(TextColour)
/** Defines a few values that are related to animations using palette changes */
enum PaletteAnimationSizes {
PALETTE_ANIM_SIZE_WIN = 28, ///< number of animated colours in Windows palette
PALETTE_ANIM_SIZE_DOS = 38, ///< number of animated colours in DOS palette
PALETTE_ANIM_SIZE_START = 217, ///< Index in the _palettes array from which all animations are taking places (table/palettes.h)
PALETTE_ANIM_SIZE = 28, ///< number of animated colours
PALETTE_ANIM_START = 227, ///< Index in the _palettes array from which all animations are taking places (table/palettes.h)
};
/** Define the operation GfxFillRect performs */

@ -21,16 +21,9 @@
#include "base_media_func.h"
#include "table/sprites.h"
#include "table/palette_convert.h"
/** The currently used palette */
PaletteType _use_palette = PAL_AUTODETECT;
/** Whether the given NewGRFs must get a palette remap or not. */
/** Whether the given NewGRFs must get a palette remap from windows to DOS or not. */
bool _palette_remap_grf[MAX_FILE_SLOTS];
/** Palette map to go from the !_use_palette to the _use_palette */
const byte *_palette_remap = NULL;
/** Palette map to go from the _use_palette to the !_use_palette */
const byte *_palette_reverse_remap = NULL;
#include "table/landscape_sprite.h"
@ -96,10 +89,9 @@ void CheckExternalFiles()
{
if (BaseGraphics::GetUsedSet() == NULL || BaseSounds::GetUsedSet() == NULL) return;
BaseGraphics::DeterminePalette();
const GraphicsSet *used_set = BaseGraphics::GetUsedSet();
DEBUG(grf, 1, "Using the %s base graphics set with the %s palette", used_set->name, _use_palette == PAL_DOS ? "DOS" : "Windows");
DEBUG(grf, 1, "Using the %s base graphics set", used_set->name);
static const size_t ERROR_MESSAGE_LENGTH = 256;
static const size_t MISSING_FILE_MESSAGE_LENGTH = 128;
@ -142,7 +134,7 @@ static void LoadSpriteTables()
uint i = FIRST_GRF_SLOT;
const GraphicsSet *used_set = BaseGraphics::GetUsedSet();
_palette_remap_grf[i] = (_use_palette != used_set->palette);
_palette_remap_grf[i] = (PAL_DOS != used_set->palette);
LoadGrfFile(used_set->files[GFT_BASE].filename, 0, i++);
/*
@ -151,7 +143,7 @@ static void LoadSpriteTables()
* has a few sprites less. However, we do not care about those missing
* sprites as they are not shown anyway (logos in intro game).
*/
_palette_remap_grf[i] = (_use_palette != used_set->palette);
_palette_remap_grf[i] = (PAL_DOS != used_set->palette);
LoadGrfFile(used_set->files[GFT_LOGOS].filename, 4793, i++);
/*
@ -160,7 +152,7 @@ static void LoadSpriteTables()
* and the ground sprites.
*/
if (_settings_game.game_creation.landscape != LT_TEMPERATE) {
_palette_remap_grf[i] = (_use_palette != used_set->palette);
_palette_remap_grf[i] = (PAL_DOS != used_set->palette);
LoadGrfIndexed(
used_set->files[GFT_ARCTIC + _settings_game.game_creation.landscape - 1].filename,
_landscape_spriteindexes[_settings_game.game_creation.landscape - 1],
@ -266,32 +258,6 @@ static const char * const _graphics_file_names[] = { "base", "logos", "arctic",
template <class T, size_t Tnum_files, Subdirectory Tsubdir>
/* static */ const char * const *BaseSet<T, Tnum_files, Tsubdir>::file_names = _graphics_file_names;
/**
* Determine the palette that has to be used.
* - forced palette via command line -> leave it that way
* - otherwise -> palette based on the graphics pack
*/
/* static */ void BaseGraphics::DeterminePalette()
{
assert(BaseGraphics::used_set != NULL);
if (_use_palette >= MAX_PAL) _use_palette = BaseGraphics::used_set->palette;
switch (_use_palette) {
case PAL_DOS:
_palette_remap = _palmap_w2d;
_palette_reverse_remap = _palmap_d2w;
break;
case PAL_WINDOWS:
_palette_remap = _palmap_d2w;
_palette_reverse_remap = _palmap_w2d;
break;
default:
NOT_REACHED();
}
}
template <class Tbase_set>
/* static */ bool BaseMedia<Tbase_set>::DetermineBestSet()
{
@ -307,7 +273,7 @@ template <class Tbase_set>
best->valid_files < c->valid_files ||
(best->valid_files == c->valid_files && (
(best->shortname == c->shortname && best->version < c->version) ||
(best->palette != _use_palette && c->palette == _use_palette)))) {
(best->palette != PAL_DOS && c->palette == PAL_DOS)))) {
best = c;
}
}

@ -315,12 +315,6 @@ StringID MapGRFStringID(uint32 grfid, StringID str)
return TTDPStringIDToOTTDStringIDMapping(str);
}
static inline uint8 MapDOSColour(uint8 colour)
{
extern const byte _palmap_d2w[];
return (_use_palette == PAL_DOS ? colour : _palmap_d2w[colour]);
}
static std::map<uint32, uint32> _grf_id_overrides;
static void SetNewGRFOverride(uint32 source_grfid, uint32 target_grfid)
@ -2192,11 +2186,11 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea
break;
case 0x13: // Colour for station rating bars
cs->rating_colour = MapDOSColour(buf->ReadByte());
cs->rating_colour = buf->ReadByte();
break;
case 0x14: // Colour for cargo graph
cs->legend_colour = MapDOSColour(buf->ReadByte());
cs->legend_colour = buf->ReadByte();
break;
case 0x15: // Freight status
@ -2802,7 +2796,7 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop,
break;
case 0x19: // Map colour
indsp->map_colour = MapDOSColour(buf->ReadByte());
indsp->map_colour = buf->ReadByte();
break;
case 0x1A: // Special industry flags to define special behavior
@ -3301,7 +3295,7 @@ static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteR
break;
case 0x16: // Map colour
rti->map_colour = MapDOSColour(buf->ReadByte());
rti->map_colour = buf->ReadByte();
break;
case 0x17: // Introduction date
@ -7948,7 +7942,7 @@ void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage)
FioOpenFile(file_index, filename);
_file_index = file_index; // XXX
_palette_remap_grf[_file_index] = ((config->palette & GRFP_USE_MASK) != (_use_palette == PAL_WINDOWS));
_palette_remap_grf[_file_index] = (config->palette & GRFP_USE_MASK);
_cur_grfconfig = config;

@ -172,10 +172,6 @@ static void ShowHelp()
" -f = Fork into the background (dedicated only)\n"
#endif
#endif /* ENABLE_NETWORK */
" -i palette = Force to use the DOS (0) or Windows (1) palette\n"
" (defines default setting when adding newgrfs)\n"
" Default value (2) lets OpenTTD use the palette\n"
" specified in graphics set file (see below)\n"
" -I graphics_set = Force the graphics set (see below)\n"
" -S sounds_set = Force the sounds set (see below)\n"
" -M music_set = Force the music set (see below)\n"
@ -356,7 +352,6 @@ static const OptionData _options[] = {
GETOPT_SHORT_VALUE('t'),
GETOPT_SHORT_OPTVAL('d'),
GETOPT_SHORT_NOVAL('e'),
GETOPT_SHORT_OPTVAL('i'),
GETOPT_SHORT_OPTVAL('g'),
GETOPT_SHORT_VALUE('G'),
GETOPT_SHORT_VALUE('c'),
@ -457,13 +452,6 @@ int ttd_main(int argc, char *argv[])
break;
}
case 'e': _switch_mode = SM_EDITOR; break;
case 'i':
/* there is an argument, it is not empty, and it is exactly 1 char long */
if (!StrEmpty(mgo.opt) && mgo.opt[1] == '\0') {
_use_palette = (PaletteType)(mgo.opt[0] - '0');
if (_use_palette <= MAX_PAL) break;
}
usererror("Valid value for '-i' is 0, 1 or 2");
case 'g':
if (mgo.opt != NULL) {
strecpy(_file_to_saveload.name, mgo.opt, lastof(_file_to_saveload.name));

@ -20,6 +20,7 @@
#include "core/math_func.hpp"
#include "table/sprites.h"
#include "table/palette_convert.h"
/* Default of 4MB spritecache */
uint _sprite_cache_size = 4;
@ -237,7 +238,7 @@ static void *ReadSprite(const SpriteCache *sc, SpriteID id, SpriteType sprite_ty
/* The data of index 0 is never used; "literal 00" according to the (New)GRF specs. */
for (int i = 1; i < RECOLOUR_SPRITE_SIZE; i++) {
dest[i] = _palette_remap[dest_tmp[_palette_reverse_remap[i - 1] + 1]];
dest[i] = _palmap_w2d[dest_tmp[_palmap_d2w[i - 1] + 1]];
}
} else {
FioReadBlock(dest, num);

@ -19,6 +19,8 @@
#include "../core/math_func.hpp"
#include "grf.hpp"
extern const byte _palmap_w2d[];
/**
* We found a corrupted sprite. This means that the sprite itself
* contains invalid data or is too small for the given dimensions.
@ -129,7 +131,7 @@ bool SpriteLoaderGrf::LoadSprite(SpriteLoader::Sprite *sprite, uint8 file_slot,
for (int x = 0; x < length; x++) {
switch (sprite_type) {
case ST_NORMAL: data->m = _palette_remap_grf[file_slot] ? _palette_remap[*dest] : *dest; break;
case ST_NORMAL: data->m = _palette_remap_grf[file_slot] ? _palmap_w2d[*dest] : *dest; break;
case ST_FONT: data->m = min(*dest, 2u); break;
default: data->m = *dest; break;
}
@ -154,7 +156,7 @@ bool SpriteLoaderGrf::LoadSprite(SpriteLoader::Sprite *sprite, uint8 file_slot,
for (int i = 0; i < sprite->width * sprite->height; i++) {
switch (sprite_type) {
case ST_NORMAL: sprite->data[i].m = _palette_remap_grf[file_slot] ? _palette_remap[dest[i]] : dest[i]; break;
case ST_NORMAL: sprite->data[i].m = _palette_remap_grf[file_slot] ? _palmap_w2d[dest[i]] : dest[i]; break;
case ST_FONT: sprite->data[i].m = min(dest[i], 2u); break;
default: sprite->data[i].m = dest[i]; break;
}

@ -10,7 +10,7 @@
/** @file palette_convert.h Translation tables from one GRF to another GRF. */
/** Converting from the Windows palette to the DOS palette */
static const byte _palmap_w2d[] = {
extern const byte _palmap_w2d[] = {
0, 1, 2, 3, 4, 5, 6, 7, // 0..7
8, 9, 10, 11, 12, 13, 14, 15, // 8..15
16, 17, 18, 19, 20, 21, 22, 23, // 16..23
@ -46,7 +46,7 @@ static const byte _palmap_w2d[] = {
};
/** Converting from the DOS palette to the Windows palette */
extern const byte _palmap_d2w[] = {
static const byte _palmap_d2w[] = {
0, 215, 216, 136, 88, 106, 32, 33, // 0..7
40, 245, 10, 11, 12, 13, 14, 15, // 8..15
16, 17, 18, 19, 20, 21, 22, 23, // 16..23

@ -13,9 +13,8 @@
#define M(r, g, b) { 0xff << 24 | (r) << 16 | (g) << 8 | (b) }
static const Colour _palettes[][256] = {
/* palette 0 (mixed TTD DOS + TTD Windows palette */
{
static const Colour _palette[256] = {
/* mixed TTD DOS + TTD Windows palette */
{ 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),
@ -80,79 +79,8 @@ static const Colour _palettes[][256] = {
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)
},
/* palette 1 (TTD Windows) */
{
{ 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)
}
};
#define GET_PALETTE(x) _palettes[x]
/** Description of the length of the palette cycle animations */
static const uint EPV_CYCLES_DARK_WATER = 5; ///< length of the dark blue water animation
static const uint EPV_CYCLES_LIGHTHOUSE = 4; ///< length of the lighthouse/stadium animation
@ -207,8 +135,7 @@ static const ExtraPaletteValues _extra_palette_values = {
#undef M
/** Colour mapping for the TextColours. */
static const byte _string_colourmap[][17] = {
{ // DOS palette.
static const byte _string_colourmap[17] = {
150, // TC_BLUE
12, // TC_SILVER
189, // TC_GOLD
@ -226,24 +153,4 @@ static const byte _string_colourmap[][17] = {
6, // TC_GREY
133, // TC_DARK_BLUE
1, // TC_BLACK
},
{ // Windows palette.
150, // TC_BLUE
12, // TC_SILVER
189, // TC_GOLD
184, // TC_RED
174, // TC_PURPLE
30, // TC_LIGHT_BROWN
195, // TC_ORANGE
209, // TC_GREEN
68, // TC_YELLOW
95, // TC_DARK_GREEN
79, // TC_CREAM
116, // TC_BROWN
15, // TC_WHITE
152, // TC_LIGHT_BLUE
32, // TC_GREY
133, // TC_DARK_BLUE
215, // TC_BLACK
}
};

Loading…
Cancel
Save