Tweaked cart autodetection code wrt '3E' bankswitching. Since a '3E' cart

is almost always a '3F' cart as well, it makes sense to only test for it
when we already know the cart is probably '3F'.  As well, the pattern for
a '3F' cart results in a lot less false-positives than '3E'.

Added '-colorloss' commandline argument and 'Ctrl-l' key shortcut.  This
enables or disables the PAL color-loss effect, and will default to off
(similar to z26 functionality).  Still TODO is add a UI entry for it.

Fixed a bug in the calculation of PAL color-loss values; it wasn't actually
giving grayscale data, but something with a greenish tint.

Updated PAL autodetection code to run for 60 test frames instead of 20,
and ignore the first 30.  This helps when loading SuperCharger games,
since the BIOS code always runs at NTSC rates, even if the ROM really
should be PAL.  For now, this means it only works when 'fastscbios' is
enabled, and the BIOS runs in 30 frames or less (vs. needing 250+ frames
for normal speed!).  I'm strongly leaning to just making 'fastscbios'
a non-editable default.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1242 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2006-12-26 17:06:01 +00:00
parent 09c3a38a0d
commit f7b9687d8c
5 changed files with 319 additions and 459 deletions

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Cart.cxx,v 1.24 2006-12-26 00:39:43 stephena Exp $
// $Id: Cart.cxx,v 1.25 2006-12-26 17:06:00 stephena Exp $
//============================================================================
#include <cassert>
@ -162,10 +162,8 @@ string Cartridge::autodetectType(const uInt8* image, uInt32 size)
type = "4K";
else if(isProbablyE0(image, size))
type = "E0";
else if(isProbably3E(image, size))
type = "3E";
else if(isProbably3F(image, size))
type = "3F";
type = isProbably3E(image, size) ? "3E" : "3F";
else
type = "F8";
}
@ -187,10 +185,8 @@ string Cartridge::autodetectType(const uInt8* image, uInt32 size)
type = "F6SC";
else if(isProbablyE7(image, size))
type = "E7";
else if(isProbably3E(image, size))
type = "3E";
else if(isProbably3F(image, size))
type = "3F";
type = isProbably3E(image, size) ? "3E" : "3F";
else
type = "F6";
}
@ -198,39 +194,31 @@ string Cartridge::autodetectType(const uInt8* image, uInt32 size)
{
if(isProbablySC(image, size))
type = "F4SC";
else if(isProbably3E(image, size))
type = "3E";
else if(isProbably3F(image, size))
type = "3F";
type = isProbably3E(image, size) ? "3E" : "3F";
else
type = "F4";
}
else if(size == 65536) // 64K
{
// TODO - autodetect 4A50
if(isProbably3E(image, size))
type = "3E";
else if(isProbably3F(image, size))
type = "3F";
if(isProbably3F(image, size))
type = isProbably3E(image, size) ? "3E" : "3F";
else
type = "MB";
}
else if(size == 131072) // 128K
{
// TODO - autodetect 4A50
if(isProbably3E(image, size))
type = "3E";
else if(isProbably3F(image, size))
type = "3F";
if(isProbably3F(image, size))
type = isProbably3E(image, size) ? "3E" : "3F";
else
type = "MC";
}
else // what else can we do?
{
if(isProbably3E(image, size))
type = "3E";
else if(isProbably3F(image, size))
type = "3F";
if(isProbably3F(image, size))
type = isProbably3E(image, size) ? "3E" : "3F";
else
type = "4K"; // Most common bankswitching type
}

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Console.cxx,v 1.112 2006-12-26 02:09:29 stephena Exp $
// $Id: Console.cxx,v 1.113 2006-12-26 17:06:01 stephena Exp $
//============================================================================
#include <assert.h>
@ -62,9 +62,7 @@ Console::Console(const uInt8* image, uInt32 size, const string& md5,
OSystem* osystem)
: myOSystem(osystem),
myIsValidFlag(false),
myUserPaletteDefined(false),
ourUserNTSCPalette(NULL),
ourUserPALPalette(NULL)
myUserPaletteDefined(false)
{
Cartridge* cartridge = (Cartridge*) NULL;
ostringstream buf;
@ -84,8 +82,10 @@ Console::Console(const uInt8* image, uInt32 size, const string& md5,
// A developer can override properties from the commandline
setDeveloperProperties();
// Load user-defined palette for this ROM
// Load user-defined palette for this ROM and initialize them
// depending on PAL colour-loss effect
loadUserPalette();
setColorLossPalette(myOSystem->settings().getBool("colorloss"));
// Query some info about this console
buf << " Cart Name: " << myProperties.get(Cartridge_Name) << endl
@ -214,16 +214,20 @@ Console::Console(const uInt8* image, uInt32 size, const string& md5,
if(myDisplayFormat == "AUTO-DETECT" ||
myOSystem->settings().getBool("rominfo"))
{
// Run the system for 20 frames, looking for PAL frames
// Run the system for 60 frames, looking for PAL scanline patterns
// We assume the first 30 frames are garbage, and only consider
// the second 30 (useful to get past SuperCharger BIOS)
// Unfortunately, this means we have to always enable 'fastscbios',
// since otherwise the BIOS loading will take over 250 frames!
int palCount = 0;
for(int i = 0; i < 20; ++i)
for(int i = 0; i < 60; ++i)
{
myMediaSource->update();
if(myMediaSource->scanlines() > 290)
if(i >= 30 && myMediaSource->scanlines() > 285)
++palCount;
}
myDisplayFormat = (palCount >= 10) ? "PAL" : "NTSC";
myDisplayFormat = (palCount >= 15) ? "PAL" : "NTSC";
if(myProperties.get(Display_Format) == "AUTO-DETECT")
buf << " Auto-detected display format: " << myDisplayFormat << endl;
}
@ -262,9 +266,6 @@ Console::~Console()
delete mySwitches;
delete myControllers[0];
delete myControllers[1];
delete[] ourUserNTSCPalette;
delete[] ourUserPALPalette;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -298,7 +299,6 @@ void Console::toggleFormat()
myDisplayFormat = "NTSC";
myProperties.set(Display_Format, myDisplayFormat);
mySystem->reset();
initializeVideo();
myOSystem->frameBuffer().showMessage("NTSC Mode");
framerate = 60;
}
@ -308,6 +308,19 @@ void Console::toggleFormat()
myOSystem->sound().setFrameRate(framerate);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Console::toggleColorLoss()
{
bool colorloss = !myOSystem->settings().getBool("colorloss");
myOSystem->settings().setBool("colorloss", colorloss);
setColorLossPalette(colorloss);
setPalette(myOSystem->settings().getString("palette"));
string message = string("PAL color-loss ") +
(colorloss ? "enabled" : "disabled");
myOSystem->frameBuffer().showMessage(message);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Console::togglePalette()
{
@ -709,26 +722,19 @@ void Console::loadUserPalette()
}
// Now that we have valid data, create the user-defined palettes
ourUserNTSCPalette = new uInt32[256];
ourUserPALPalette = new uInt32[256];
uInt8 pixbuf[3]; // Temporary buffer for one 24-bit pixel
for(int i = 0; i < 128; i++) // NTSC palette
{
in.read((char*)pixbuf, 3);
uInt32 pixel = ((int)pixbuf[0] << 16) + ((int)pixbuf[1] << 8) + (int)pixbuf[2];
ourUserNTSCPalette[(i<<1)] = ourUserNTSCPalette[(i<<1)+1] = pixel;
ourUserNTSCPalette[(i<<1)] = pixel;
}
for(int i = 0; i < 128; i++) // PAL palette
{
in.read((char*)pixbuf, 3);
uInt32 pixel1 = ((int)pixbuf[0] << 16) + ((int)pixbuf[1] << 8) + (int)pixbuf[2];
int r = (int)((float)pixbuf[0] * 0.2989);
int g = (int)((float)pixbuf[1] * 0.5870);
int b = (int)((float)pixbuf[2] * 0.1140);
uInt32 pixel2 = (r << 16) + (g << 8) + b;
ourUserPALPalette[(i<<1)] = pixel1;
ourUserPALPalette[(i<<1)+1] = pixel2; // calculated colour-loss effect
uInt32 pixel = ((int)pixbuf[0] << 16) + ((int)pixbuf[1] << 8) + (int)pixbuf[2];
ourUserPALPalette[(i<<1)] = pixel;
}
in.close();
@ -736,413 +742,270 @@ void Console::loadUserPalette()
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
const uInt32 Console::ourNTSCPalette[256] = {
0x000000, 0x000000, 0x4a4a4a, 0x4a4a4a,
0x6f6f6f, 0x6f6f6f, 0x8e8e8e, 0x8e8e8e,
0xaaaaaa, 0xaaaaaa, 0xc0c0c0, 0xc0c0c0,
0xd6d6d6, 0xd6d6d6, 0xececec, 0xececec,
0x484800, 0x484800, 0x69690f, 0x69690f,
0x86861d, 0x86861d, 0xa2a22a, 0xa2a22a,
0xbbbb35, 0xbbbb35, 0xd2d240, 0xd2d240,
0xe8e84a, 0xe8e84a, 0xfcfc54, 0xfcfc54,
0x7c2c00, 0x7c2c00, 0x904811, 0x904811,
0xa26221, 0xa26221, 0xb47a30, 0xb47a30,
0xc3903d, 0xc3903d, 0xd2a44a, 0xd2a44a,
0xdfb755, 0xdfb755, 0xecc860, 0xecc860,
0x901c00, 0x901c00, 0xa33915, 0xa33915,
0xb55328, 0xb55328, 0xc66c3a, 0xc66c3a,
0xd5824a, 0xd5824a, 0xe39759, 0xe39759,
0xf0aa67, 0xf0aa67, 0xfcbc74, 0xfcbc74,
0x940000, 0x940000, 0xa71a1a, 0xa71a1a,
0xb83232, 0xb83232, 0xc84848, 0xc84848,
0xd65c5c, 0xd65c5c, 0xe46f6f, 0xe46f6f,
0xf08080, 0xf08080, 0xfc9090, 0xfc9090,
0x840064, 0x840064, 0x97197a, 0x97197a,
0xa8308f, 0xa8308f, 0xb846a2, 0xb846a2,
0xc659b3, 0xc659b3, 0xd46cc3, 0xd46cc3,
0xe07cd2, 0xe07cd2, 0xec8ce0, 0xec8ce0,
0x500084, 0x500084, 0x68199a, 0x68199a,
0x7d30ad, 0x7d30ad, 0x9246c0, 0x9246c0,
0xa459d0, 0xa459d0, 0xb56ce0, 0xb56ce0,
0xc57cee, 0xc57cee, 0xd48cfc, 0xd48cfc,
0x140090, 0x140090, 0x331aa3, 0x331aa3,
0x4e32b5, 0x4e32b5, 0x6848c6, 0x6848c6,
0x7f5cd5, 0x7f5cd5, 0x956fe3, 0x956fe3,
0xa980f0, 0xa980f0, 0xbc90fc, 0xbc90fc,
0x000094, 0x000094, 0x181aa7, 0x181aa7,
0x2d32b8, 0x2d32b8, 0x4248c8, 0x4248c8,
0x545cd6, 0x545cd6, 0x656fe4, 0x656fe4,
0x7580f0, 0x7580f0, 0x8490fc, 0x8490fc,
0x001c88, 0x001c88, 0x183b9d, 0x183b9d,
0x2d57b0, 0x2d57b0, 0x4272c2, 0x4272c2,
0x548ad2, 0x548ad2, 0x65a0e1, 0x65a0e1,
0x75b5ef, 0x75b5ef, 0x84c8fc, 0x84c8fc,
0x003064, 0x003064, 0x185080, 0x185080,
0x2d6d98, 0x2d6d98, 0x4288b0, 0x4288b0,
0x54a0c5, 0x54a0c5, 0x65b7d9, 0x65b7d9,
0x75cceb, 0x75cceb, 0x84e0fc, 0x84e0fc,
0x004030, 0x004030, 0x18624e, 0x18624e,
0x2d8169, 0x2d8169, 0x429e82, 0x429e82,
0x54b899, 0x54b899, 0x65d1ae, 0x65d1ae,
0x75e7c2, 0x75e7c2, 0x84fcd4, 0x84fcd4,
0x004400, 0x004400, 0x1a661a, 0x1a661a,
0x328432, 0x328432, 0x48a048, 0x48a048,
0x5cba5c, 0x5cba5c, 0x6fd26f, 0x6fd26f,
0x80e880, 0x80e880, 0x90fc90, 0x90fc90,
0x143c00, 0x143c00, 0x355f18, 0x355f18,
0x527e2d, 0x527e2d, 0x6e9c42, 0x6e9c42,
0x87b754, 0x87b754, 0x9ed065, 0x9ed065,
0xb4e775, 0xb4e775, 0xc8fc84, 0xc8fc84,
0x303800, 0x303800, 0x505916, 0x505916,
0x6d762b, 0x6d762b, 0x88923e, 0x88923e,
0xa0ab4f, 0xa0ab4f, 0xb7c25f, 0xb7c25f,
0xccd86e, 0xccd86e, 0xe0ec7c, 0xe0ec7c,
0x482c00, 0x482c00, 0x694d14, 0x694d14,
0x866a26, 0x866a26, 0xa28638, 0xa28638,
0xbb9f47, 0xbb9f47, 0xd2b656, 0xd2b656,
0xe8cc63, 0xe8cc63, 0xfce070, 0xfce070
void Console::setColorLossPalette(bool loss)
{
// Look at all the palettes, since we don't know which one is
// currently active
uInt32* palette[8] = {
&ourNTSCPalette[0], &ourPALPalette[0],
&ourNTSCPalette11[0], &ourPALPalette11[0],
&ourNTSCPaletteZ26[0], &ourPALPaletteZ26[0],
0, 0
};
if(myUserPaletteDefined)
{
palette[6] = &ourUserNTSCPalette[0];
palette[7] = &ourUserPALPalette[0];
}
for(int i = 0; i < 8; ++i)
{
if(palette[i] == 0)
continue;
// If color-loss is enabled, fill the odd numbered palette entries
// with grays values (calculated using the standard RGB -> grayscale
// conversion formula)
for(int j = 0; j < 128; ++j)
{
uInt32 pixel = palette[i][(j<<1)];
if(loss)
{
uInt8 r = (pixel >> 16) & 0xff;
uInt8 g = (pixel >> 8) & 0xff;
uInt8 b = (pixel >> 0) & 0xff;
uInt8 sum = (uInt8) (((float)r * 0.2989) +
((float)g * 0.5870) +
((float)b * 0.1140));
pixel = (sum << 16) + (sum << 8) + sum;
}
palette[i][(j<<1)+1] = pixel;
}
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt32 Console::ourNTSCPalette[256] = {
0x000000, 0, 0x4a4a4a, 0, 0x6f6f6f, 0, 0x8e8e8e, 0,
0xaaaaaa, 0, 0xc0c0c0, 0, 0xd6d6d6, 0, 0xececec, 0,
0x484800, 0, 0x69690f, 0, 0x86861d, 0, 0xa2a22a, 0,
0xbbbb35, 0, 0xd2d240, 0, 0xe8e84a, 0, 0xfcfc54, 0,
0x7c2c00, 0, 0x904811, 0, 0xa26221, 0, 0xb47a30, 0,
0xc3903d, 0, 0xd2a44a, 0, 0xdfb755, 0, 0xecc860, 0,
0x901c00, 0, 0xa33915, 0, 0xb55328, 0, 0xc66c3a, 0,
0xd5824a, 0, 0xe39759, 0, 0xf0aa67, 0, 0xfcbc74, 0,
0x940000, 0, 0xa71a1a, 0, 0xb83232, 0, 0xc84848, 0,
0xd65c5c, 0, 0xe46f6f, 0, 0xf08080, 0, 0xfc9090, 0,
0x840064, 0, 0x97197a, 0, 0xa8308f, 0, 0xb846a2, 0,
0xc659b3, 0, 0xd46cc3, 0, 0xe07cd2, 0, 0xec8ce0, 0,
0x500084, 0, 0x68199a, 0, 0x7d30ad, 0, 0x9246c0, 0,
0xa459d0, 0, 0xb56ce0, 0, 0xc57cee, 0, 0xd48cfc, 0,
0x140090, 0, 0x331aa3, 0, 0x4e32b5, 0, 0x6848c6, 0,
0x7f5cd5, 0, 0x956fe3, 0, 0xa980f0, 0, 0xbc90fc, 0,
0x000094, 0, 0x181aa7, 0, 0x2d32b8, 0, 0x4248c8, 0,
0x545cd6, 0, 0x656fe4, 0, 0x7580f0, 0, 0x8490fc, 0,
0x001c88, 0, 0x183b9d, 0, 0x2d57b0, 0, 0x4272c2, 0,
0x548ad2, 0, 0x65a0e1, 0, 0x75b5ef, 0, 0x84c8fc, 0,
0x003064, 0, 0x185080, 0, 0x2d6d98, 0, 0x4288b0, 0,
0x54a0c5, 0, 0x65b7d9, 0, 0x75cceb, 0, 0x84e0fc, 0,
0x004030, 0, 0x18624e, 0, 0x2d8169, 0, 0x429e82, 0,
0x54b899, 0, 0x65d1ae, 0, 0x75e7c2, 0, 0x84fcd4, 0,
0x004400, 0, 0x1a661a, 0, 0x328432, 0, 0x48a048, 0,
0x5cba5c, 0, 0x6fd26f, 0, 0x80e880, 0, 0x90fc90, 0,
0x143c00, 0, 0x355f18, 0, 0x527e2d, 0, 0x6e9c42, 0,
0x87b754, 0, 0x9ed065, 0, 0xb4e775, 0, 0xc8fc84, 0,
0x303800, 0, 0x505916, 0, 0x6d762b, 0, 0x88923e, 0,
0xa0ab4f, 0, 0xb7c25f, 0, 0xccd86e, 0, 0xe0ec7c, 0,
0x482c00, 0, 0x694d14, 0, 0x866a26, 0, 0xa28638, 0,
0xbb9f47, 0, 0xd2b656, 0, 0xe8cc63, 0, 0xfce070, 0
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
const uInt32 Console::ourPALPalette[256] = {
0x000000, 0x000000, 0x2b2b2b, 0x2a2a2a,
0x525252, 0x515151, 0x767676, 0x757575,
0x979797, 0x969696, 0xb6b6b6, 0xb5b5b5,
0xd2d2d2, 0xd1d1d1, 0xececec, 0xebebeb,
0x000000, 0x000000, 0x2b2b2b, 0x2a2a2a,
0x525252, 0x515151, 0x767676, 0x757575,
0x979797, 0x969696, 0xb6b6b6, 0xb5b5b5,
0xd2d2d2, 0xd1d1d1, 0xececec, 0xebebeb,
0x805800, 0x595959, 0x96711a, 0x727272,
0xab8732, 0x888888, 0xbe9c48, 0x9c9c9c,
0xcfaf5c, 0xafafaf, 0xdfc06f, 0xc0c0c0,
0xeed180, 0xd0d0d0, 0xfce090, 0xdfdfdf,
0x445c00, 0x4a4a4a, 0x5e791a, 0x666666,
0x769332, 0x7f7f7f, 0x8cac48, 0x979797,
0xa0c25c, 0xacacac, 0xb3d76f, 0xc0c0c0,
0xc4ea80, 0xd2d2d2, 0xd4fc90, 0xe3e3e3,
0x703400, 0x404040, 0x89511a, 0x5b5b5b,
0xa06b32, 0x747474, 0xb68448, 0x8c8c8c,
0xc99a5c, 0xa0a0a0, 0xdcaf6f, 0xb5b5b5,
0xecc280, 0xc7c7c7, 0xfcd490, 0xd8d8d8,
0x006414, 0x3c3c3c, 0x1a8035, 0x585858,
0x329852, 0x717171, 0x48b06e, 0x898989,
0x5cc587, 0x9e9e9e, 0x6fd99e, 0xb2b2b2,
0x80ebb4, 0xc4c4c4, 0x90fcc8, 0xd5d5d5,
0x700014, 0x232323, 0x891a35, 0x3e3e3e,
0xa03252, 0x565656, 0xb6486e, 0x6d6d6d,
0xc95c87, 0x818181, 0xdc6f9e, 0x949494,
0xec80b4, 0xa6a6a6, 0xfc90c8, 0xb6b6b6,
0x005c5c, 0x404040, 0x1a7676, 0x5a5a5a,
0x328e8e, 0x727272, 0x48a4a4, 0x888888,
0x5cb8b8, 0x9c9c9c, 0x6fcbcb, 0xafafaf,
0x80dcdc, 0xc0c0c0, 0x90ecec, 0xd0d0d0,
0x70005c, 0x2b2b2b, 0x841a74, 0x434343,
0x963289, 0x595959, 0xa8489e, 0x6e6e6e,
0xb75cb0, 0x808080, 0xc66fc1, 0x929292,
0xd380d1, 0xa2a2a2, 0xe090e0, 0xb1b1b1,
0x003c70, 0x2f2f2f, 0x195a89, 0x4b4b4b,
0x2f75a0, 0x646464, 0x448eb6, 0x7c7c7c,
0x57a5c9, 0x919191, 0x68badc, 0xa5a5a5,
0x79ceec, 0xb7b7b7, 0x88e0fc, 0xc8c8c8,
0x580070, 0x272727, 0x6e1a89, 0x3f3f3f,
0x8332a0, 0x565656, 0x9648b6, 0x6b6b6b,
0xa75cc9, 0x7e7e7e, 0xb76fdc, 0x909090,
0xc680ec, 0xa1a1a1, 0xd490fc, 0xb0b0b0,
0x002070, 0x1f1f1f, 0x193f89, 0x3c3c3c,
0x2f5aa0, 0x555555, 0x4474b6, 0x6d6d6d,
0x578bc9, 0x828282, 0x68a1dc, 0x969696,
0x79b5ec, 0xa9a9a9, 0x88c8fc, 0xbababa,
0x340080, 0x1e1e1e, 0x4a1a96, 0x363636,
0x5f32ab, 0x4d4d4d, 0x7248be, 0x616161,
0x835ccf, 0x747474, 0x936fdf, 0x868686,
0xa280ee, 0x969696, 0xb090fc, 0xa5a5a5,
0x000088, 0x0f0f0f, 0x1a1a9d, 0x282828,
0x3232b0, 0x404040, 0x4848c2, 0x555555,
0x5c5cd2, 0x696969, 0x6f6fe1, 0x7b7b7b,
0x8080ef, 0x8c8c8c, 0x9090fc, 0x9c9c9c,
0x000000, 0x000000, 0x2b2b2b, 0x2a2a2a,
0x525252, 0x515151, 0x767676, 0x757575,
0x979797, 0x969696, 0xb6b6b6, 0xb5b5b5,
0xd2d2d2, 0xd1d1d1, 0xececec, 0xebebeb,
0x000000, 0x000000, 0x2b2b2b, 0x2a2a2a,
0x525252, 0x515151, 0x767676, 0x757575,
0x979797, 0x969696, 0xb6b6b6, 0xb5b5b5,
0xd2d2d2, 0xd1d1d1, 0xececec, 0xebebeb
uInt32 Console::ourPALPalette[256] = {
0x000000, 0, 0x2b2b2b, 0, 0x525252, 0, 0x767676, 0,
0x979797, 0, 0xb6b6b6, 0, 0xd2d2d2, 0, 0xececec, 0,
0x000000, 0, 0x2b2b2b, 0, 0x525252, 0, 0x767676, 0,
0x979797, 0, 0xb6b6b6, 0, 0xd2d2d2, 0, 0xececec, 0,
0x805800, 0, 0x96711a, 0, 0xab8732, 0, 0xbe9c48, 0,
0xcfaf5c, 0, 0xdfc06f, 0, 0xeed180, 0, 0xfce090, 0,
0x445c00, 0, 0x5e791a, 0, 0x769332, 0, 0x8cac48, 0,
0xa0c25c, 0, 0xb3d76f, 0, 0xc4ea80, 0, 0xd4fc90, 0,
0x703400, 0, 0x89511a, 0, 0xa06b32, 0, 0xb68448, 0,
0xc99a5c, 0, 0xdcaf6f, 0, 0xecc280, 0, 0xfcd490, 0,
0x006414, 0, 0x1a8035, 0, 0x329852, 0, 0x48b06e, 0,
0x5cc587, 0, 0x6fd99e, 0, 0x80ebb4, 0, 0x90fcc8, 0,
0x700014, 0, 0x891a35, 0, 0xa03252, 0, 0xb6486e, 0,
0xc95c87, 0, 0xdc6f9e, 0, 0xec80b4, 0, 0xfc90c8, 0,
0x005c5c, 0, 0x1a7676, 0, 0x328e8e, 0, 0x48a4a4, 0,
0x5cb8b8, 0, 0x6fcbcb, 0, 0x80dcdc, 0, 0x90ecec, 0,
0x70005c, 0, 0x841a74, 0, 0x963289, 0, 0xa8489e, 0,
0xb75cb0, 0, 0xc66fc1, 0, 0xd380d1, 0, 0xe090e0, 0,
0x003c70, 0, 0x195a89, 0, 0x2f75a0, 0, 0x448eb6, 0,
0x57a5c9, 0, 0x68badc, 0, 0x79ceec, 0, 0x88e0fc, 0,
0x580070, 0, 0x6e1a89, 0, 0x8332a0, 0, 0x9648b6, 0,
0xa75cc9, 0, 0xb76fdc, 0, 0xc680ec, 0, 0xd490fc, 0,
0x002070, 0, 0x193f89, 0, 0x2f5aa0, 0, 0x4474b6, 0,
0x578bc9, 0, 0x68a1dc, 0, 0x79b5ec, 0, 0x88c8fc, 0,
0x340080, 0, 0x4a1a96, 0, 0x5f32ab, 0, 0x7248be, 0,
0x835ccf, 0, 0x936fdf, 0, 0xa280ee, 0, 0xb090fc, 0,
0x000088, 0, 0x1a1a9d, 0, 0x3232b0, 0, 0x4848c2, 0,
0x5c5cd2, 0, 0x6f6fe1, 0, 0x8080ef, 0, 0x9090fc, 0,
0x000000, 0, 0x2b2b2b, 0, 0x525252, 0, 0x767676, 0,
0x979797, 0, 0xb6b6b6, 0, 0xd2d2d2, 0, 0xececec, 0,
0x000000, 0, 0x2b2b2b, 0, 0x525252, 0, 0x767676, 0,
0x979797, 0, 0xb6b6b6, 0, 0xd2d2d2, 0, 0xececec, 0
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
const uInt32 Console::ourNTSCPalette11[256] = {
0x000000, 0x000000, 0x393939, 0x393939,
0x797979, 0x797979, 0xababab, 0xababab,
0xcdcdcd, 0xcdcdcd, 0xe6e6e6, 0xe6e6e6,
0xf2f2f2, 0xf2f2f2, 0xffffff, 0xffffff,
0x391701, 0x391701, 0x833008, 0x833008,
0xc85f24, 0xc85f24, 0xff911d, 0xff911d,
0xffc51d, 0xffc51d, 0xffd84c, 0xffd84c,
0xfff456, 0xfff456, 0xffff98, 0xffff98,
0x451904, 0x451904, 0x9f241e, 0x9f241e,
0xc85122, 0xc85122, 0xff811e, 0xff811e,
0xff982c, 0xff982c, 0xffc545, 0xffc545,
0xffc66d, 0xffc66d, 0xffe4a1, 0xffe4a1,
0x4a1704, 0x4a1704, 0xb21d17, 0xb21d17,
0xdf251c, 0xdf251c, 0xfa5255, 0xfa5255,
0xff706e, 0xff706e, 0xff8f8f, 0xff8f8f,
0xffabad, 0xffabad, 0xffc7ce, 0xffc7ce,
0x050568, 0x050568, 0x712272, 0x712272,
0xa532a6, 0xa532a6, 0xcd3ecf, 0xcd3ecf,
0xea51eb, 0xea51eb, 0xfe6dff, 0xfe6dff,
0xff87fb, 0xff87fb, 0xffa4ff, 0xffa4ff,
0x280479, 0x280479, 0x590f90, 0x590f90,
0x8839aa, 0x8839aa, 0xc04adc, 0xc04adc,
0xe05eff, 0xe05eff, 0xf27cff, 0xf27cff,
0xff98ff, 0xff98ff, 0xfeabff, 0xfeabff,
0x35088a, 0x35088a, 0x500cd0, 0x500cd0,
0x7945d0, 0x7945d0, 0xa251d9, 0xa251d9,
0xbe60ff, 0xbe60ff, 0xcc77ff, 0xcc77ff,
0xd790ff, 0xd790ff, 0xdfaaff, 0xdfaaff,
0x051e81, 0x051e81, 0x082fca, 0x082fca,
0x444cde, 0x444cde, 0x5a68ff, 0x5a68ff,
0x7183ff, 0x7183ff, 0x90a0ff, 0x90a0ff,
0x9fb2ff, 0x9fb2ff, 0xc0cbff, 0xc0cbff,
0x0c048b, 0x0c048b, 0x382db5, 0x382db5,
0x584fda, 0x584fda, 0x6b64ff, 0x6b64ff,
0x8a84ff, 0x8a84ff, 0x9998ff, 0x9998ff,
0xb1aeff, 0xb1aeff, 0xc0c2ff, 0xc0c2ff,
0x1d295a, 0x1d295a, 0x1d4892, 0x1d4892,
0x1c71c6, 0x1c71c6, 0x489bd9, 0x489bd9,
0x55b6ff, 0x55b6ff, 0x8cd8ff, 0x8cd8ff,
0x9bdfff, 0x9bdfff, 0xc3e9ff, 0xc3e9ff,
0x2f4302, 0x2f4302, 0x446103, 0x446103,
0x3e9421, 0x3e9421, 0x57ab3b, 0x57ab3b,
0x61d070, 0x61d070, 0x72f584, 0x72f584,
0x87ff97, 0x87ff97, 0xadffb6, 0xadffb6,
0x0a4108, 0x0a4108, 0x10680d, 0x10680d,
0x169212, 0x169212, 0x1cb917, 0x1cb917,
0x21d91b, 0x21d91b, 0x6ef040, 0x6ef040,
0x83ff5b, 0x83ff5b, 0xb2ff9a, 0xb2ff9a,
0x04410b, 0x04410b, 0x066611, 0x066611,
0x088817, 0x088817, 0x0baf1d, 0x0baf1d,
0x86d922, 0x86d922, 0x99f927, 0x99f927,
0xb7ff5b, 0xb7ff5b, 0xdcff81, 0xdcff81,
0x02350f, 0x02350f, 0x0c4a1c, 0x0c4a1c,
0x4f7420, 0x4f7420, 0x649228, 0x649228,
0xa1b034, 0xa1b034, 0xb2d241, 0xb2d241,
0xd6e149, 0xd6e149, 0xf2ff53, 0xf2ff53,
0x263001, 0x263001, 0x234005, 0x234005,
0x806931, 0x806931, 0xaf993a, 0xaf993a,
0xd5b543, 0xd5b543, 0xe1cb38, 0xe1cb38,
0xe3e534, 0xe3e534, 0xfbff7d, 0xfbff7d,
0x401a02, 0x401a02, 0x702408, 0x702408,
0xab511f, 0xab511f, 0xbf7730, 0xbf7730,
0xe19344, 0xe19344, 0xf9ad58, 0xf9ad58,
0xffc160, 0xffc160, 0xffcb83, 0xffcb83
uInt32 Console::ourNTSCPalette11[256] = {
0x000000, 0, 0x393939, 0, 0x797979, 0, 0xababab, 0,
0xcdcdcd, 0, 0xe6e6e6, 0, 0xf2f2f2, 0, 0xffffff, 0,
0x391701, 0, 0x833008, 0, 0xc85f24, 0, 0xff911d, 0,
0xffc51d, 0, 0xffd84c, 0, 0xfff456, 0, 0xffff98, 0,
0x451904, 0, 0x9f241e, 0, 0xc85122, 0, 0xff811e, 0,
0xff982c, 0, 0xffc545, 0, 0xffc66d, 0, 0xffe4a1, 0,
0x4a1704, 0, 0xb21d17, 0, 0xdf251c, 0, 0xfa5255, 0,
0xff706e, 0, 0xff8f8f, 0, 0xffabad, 0, 0xffc7ce, 0,
0x050568, 0, 0x712272, 0, 0xa532a6, 0, 0xcd3ecf, 0,
0xea51eb, 0, 0xfe6dff, 0, 0xff87fb, 0, 0xffa4ff, 0,
0x280479, 0, 0x590f90, 0, 0x8839aa, 0, 0xc04adc, 0,
0xe05eff, 0, 0xf27cff, 0, 0xff98ff, 0, 0xfeabff, 0,
0x35088a, 0, 0x500cd0, 0, 0x7945d0, 0, 0xa251d9, 0,
0xbe60ff, 0, 0xcc77ff, 0, 0xd790ff, 0, 0xdfaaff, 0,
0x051e81, 0, 0x082fca, 0, 0x444cde, 0, 0x5a68ff, 0,
0x7183ff, 0, 0x90a0ff, 0, 0x9fb2ff, 0, 0xc0cbff, 0,
0x0c048b, 0, 0x382db5, 0, 0x584fda, 0, 0x6b64ff, 0,
0x8a84ff, 0, 0x9998ff, 0, 0xb1aeff, 0, 0xc0c2ff, 0,
0x1d295a, 0, 0x1d4892, 0, 0x1c71c6, 0, 0x489bd9, 0,
0x55b6ff, 0, 0x8cd8ff, 0, 0x9bdfff, 0, 0xc3e9ff, 0,
0x2f4302, 0, 0x446103, 0, 0x3e9421, 0, 0x57ab3b, 0,
0x61d070, 0, 0x72f584, 0, 0x87ff97, 0, 0xadffb6, 0,
0x0a4108, 0, 0x10680d, 0, 0x169212, 0, 0x1cb917, 0,
0x21d91b, 0, 0x6ef040, 0, 0x83ff5b, 0, 0xb2ff9a, 0,
0x04410b, 0, 0x066611, 0, 0x088817, 0, 0x0baf1d, 0,
0x86d922, 0, 0x99f927, 0, 0xb7ff5b, 0, 0xdcff81, 0,
0x02350f, 0, 0x0c4a1c, 0, 0x4f7420, 0, 0x649228, 0,
0xa1b034, 0, 0xb2d241, 0, 0xd6e149, 0, 0xf2ff53, 0,
0x263001, 0, 0x234005, 0, 0x806931, 0, 0xaf993a, 0,
0xd5b543, 0, 0xe1cb38, 0, 0xe3e534, 0, 0xfbff7d, 0,
0x401a02, 0, 0x702408, 0, 0xab511f, 0, 0xbf7730, 0,
0xe19344, 0, 0xf9ad58, 0, 0xffc160, 0, 0xffcb83, 0
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
const uInt32 Console::ourPALPalette11[256] = {
0x000000, 0x000000, 0x242424, 0x232323,
0x484848, 0x474747, 0x6d6d6d, 0x6c6c6c,
0x919191, 0x909090, 0xb6b6b6, 0xb5b5b5,
0xdadada, 0xd9d9d9, 0xffffff, 0xfefefe,
0x000000, 0x000000, 0x242424, 0x232323,
0x484848, 0x474747, 0x6d6d6d, 0x6c6c6c,
0x919191, 0x909090, 0xb6b6b6, 0xb5b5b5,
0xdadada, 0xd9d9d9, 0xffffff, 0xfefefe,
0x4a3700, 0x363636, 0x705813, 0x575757,
0x8c732a, 0x727272, 0xa68d46, 0x8c8c8c,
0xbea767, 0xa6a6a6, 0xd4c18b, 0xc0c0c0,
0xeadcb3, 0xdbdbdb, 0xfff6de, 0xf5f5f5,
0x284a00, 0x373737, 0x44700f, 0x575757,
0x5c8c21, 0x717171, 0x74a638, 0x8a8a8a,
0x8cbe51, 0xa2a2a2, 0xa6d46e, 0xbababa,
0xc0ea8e, 0xd2d2d2, 0xdbffb0, 0xebebeb,
0x4a1300, 0x212121, 0x70280f, 0x3a3a3a,
0x8c3d21, 0x515151, 0xa65438, 0x696969,
0xbe6d51, 0x828282, 0xd4886e, 0x9b9b9b,
0xeaa58e, 0xb6b6b6, 0xffc4b0, 0xd3d3d3,
0x004a22, 0x2f2f2f, 0x0f703b, 0x4c4c4c,
0x218c52, 0x656565, 0x38a66a, 0x7e7e7e,
0x51be83, 0x969696, 0x6ed49d, 0xafafaf,
0x8eeab8, 0xc8c8c8, 0xb0ffd4, 0xe2e2e2,
0x4a0028, 0x1a1a1a, 0x700f44, 0x323232,
0x8c215c, 0x474747, 0xa63874, 0x5f5f5f,
0xbe518c, 0x787878, 0xd46ea6, 0x929292,
0xea8ec0, 0xafafaf, 0xffb0db, 0xcccccc,
0x00404a, 0x2e2e2e, 0x0f6370, 0x4b4b4b,
0x217e8c, 0x636363, 0x3897a6, 0x7c7c7c,
0x51afbe, 0x949494, 0x6ec7d4, 0xadadad,
0x8edeea, 0xc7c7c7, 0xb0f4ff, 0xe0e0e0,
0x43002c, 0x191919, 0x650f4b, 0x2f2f2f,
0x7e2165, 0x444444, 0x953880, 0x5c5c5c,
0xa6519a, 0x727272, 0xbf6eb7, 0x8e8e8e,
0xd38ed3, 0xaaaaaa, 0xe5b0f1, 0xc7c7c7,
0x001d4a, 0x191919, 0x0f3870, 0x323232,
0x21538c, 0x4a4a4a, 0x386ea6, 0x646464,
0x518dbe, 0x808080, 0x6ea8d4, 0x9b9b9b,
0x8ec8ea, 0xbababa, 0xb0e9ff, 0xdadada,
0x37004a, 0x181818, 0x570f70, 0x2f2f2f,
0x70218c, 0x444444, 0x8938a6, 0x5c5c5c,
0xa151be, 0x757575, 0xba6ed4, 0x909090,
0xd28eea, 0xacacac, 0xeab0ff, 0xcacaca,
0x00184a, 0x161616, 0x0f2e70, 0x2c2c2c,
0x21448c, 0x414141, 0x385ba6, 0x595959,
0x5174be, 0x717171, 0x6e8fd4, 0x8c8c8c,
0x8eabea, 0xa9a9a9, 0xb0c9ff, 0xc7c7c7,
0x13004a, 0x0e0e0e, 0x280f70, 0x212121,
0x3d218c, 0x353535, 0x5438a6, 0x4c4c4c,
0x6d51be, 0x656565, 0x886ed4, 0x818181,
0xa58eea, 0x9f9f9f, 0xc4b0ff, 0xbebebe,
0x00014a, 0x090909, 0x0f1170, 0x1b1b1b,
0x21248c, 0x2e2e2e, 0x383aa6, 0x454545,
0x5153be, 0x5e5e5e, 0x6e70d4, 0x7a7a7a,
0x8e8fea, 0x999999, 0xb0b2ff, 0xbababa,
0x000000, 0x000000, 0x242424, 0x232323,
0x484848, 0x474747, 0x6d6d6d, 0x6c6c6c,
0x919191, 0x909090, 0xb6b6b6, 0xb5b5b5,
0xdadada, 0xd9d9d9, 0xffffff, 0xfefefe,
0x000000, 0x000000, 0x242424, 0x232323,
0x484848, 0x474747, 0x6d6d6d, 0x6c6c6c,
0x919191, 0x909090, 0xb6b6b6, 0xb5b5b5,
0xdadada, 0xd9d9d9, 0xffffff, 0xfefefe
uInt32 Console::ourPALPalette11[256] = {
0x000000, 0, 0x242424, 0, 0x484848, 0, 0x6d6d6d, 0,
0x919191, 0, 0xb6b6b6, 0, 0xdadada, 0, 0xffffff, 0,
0x000000, 0, 0x242424, 0, 0x484848, 0, 0x6d6d6d, 0,
0x919191, 0, 0xb6b6b6, 0, 0xdadada, 0, 0xffffff, 0,
0x4a3700, 0, 0x705813, 0, 0x8c732a, 0, 0xa68d46, 0,
0xbea767, 0, 0xd4c18b, 0, 0xeadcb3, 0, 0xfff6de, 0,
0x284a00, 0, 0x44700f, 0, 0x5c8c21, 0, 0x74a638, 0,
0x8cbe51, 0, 0xa6d46e, 0, 0xc0ea8e, 0, 0xdbffb0, 0,
0x4a1300, 0, 0x70280f, 0, 0x8c3d21, 0, 0xa65438, 0,
0xbe6d51, 0, 0xd4886e, 0, 0xeaa58e, 0, 0xffc4b0, 0,
0x004a22, 0, 0x0f703b, 0, 0x218c52, 0, 0x38a66a, 0,
0x51be83, 0, 0x6ed49d, 0, 0x8eeab8, 0, 0xb0ffd4, 0,
0x4a0028, 0, 0x700f44, 0, 0x8c215c, 0, 0xa63874, 0,
0xbe518c, 0, 0xd46ea6, 0, 0xea8ec0, 0, 0xffb0db, 0,
0x00404a, 0, 0x0f6370, 0, 0x217e8c, 0, 0x3897a6, 0,
0x51afbe, 0, 0x6ec7d4, 0, 0x8edeea, 0, 0xb0f4ff, 0,
0x43002c, 0, 0x650f4b, 0, 0x7e2165, 0, 0x953880, 0,
0xa6519a, 0, 0xbf6eb7, 0, 0xd38ed3, 0, 0xe5b0f1, 0,
0x001d4a, 0, 0x0f3870, 0, 0x21538c, 0, 0x386ea6, 0,
0x518dbe, 0, 0x6ea8d4, 0, 0x8ec8ea, 0, 0xb0e9ff, 0,
0x37004a, 0, 0x570f70, 0, 0x70218c, 0, 0x8938a6, 0,
0xa151be, 0, 0xba6ed4, 0, 0xd28eea, 0, 0xeab0ff, 0,
0x00184a, 0, 0x0f2e70, 0, 0x21448c, 0, 0x385ba6, 0,
0x5174be, 0, 0x6e8fd4, 0, 0x8eabea, 0, 0xb0c9ff, 0,
0x13004a, 0, 0x280f70, 0, 0x3d218c, 0, 0x5438a6, 0,
0x6d51be, 0, 0x886ed4, 0, 0xa58eea, 0, 0xc4b0ff, 0,
0x00014a, 0, 0x0f1170, 0, 0x21248c, 0, 0x383aa6, 0,
0x5153be, 0, 0x6e70d4, 0, 0x8e8fea, 0, 0xb0b2ff, 0,
0x000000, 0, 0x242424, 0, 0x484848, 0, 0x6d6d6d, 0,
0x919191, 0, 0xb6b6b6, 0, 0xdadada, 0, 0xffffff, 0,
0x000000, 0, 0x242424, 0, 0x484848, 0, 0x6d6d6d, 0,
0x919191, 0, 0xb6b6b6, 0, 0xdadada, 0, 0xffffff, 0
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
const uInt32 Console::ourNTSCPaletteZ26[256] = {
0x000000, 0x000000, 0x505050, 0x505050,
0x646464, 0x646464, 0x787878, 0x787878,
0x8c8c8c, 0x8c8c8c, 0xa0a0a0, 0xa0a0a0,
0xb4b4b4, 0xb4b4b4, 0xc8c8c8, 0xc8c8c8,
0x445400, 0x445400, 0x586800, 0x586800,
0x6c7c00, 0x6c7c00, 0x809000, 0x809000,
0x94a414, 0x94a414, 0xa8b828, 0xa8b828,
0xbccc3c, 0xbccc3c, 0xd0e050, 0xd0e050,
0x673900, 0x673900, 0x7b4d00, 0x7b4d00,
0x8f6100, 0x8f6100, 0xa37513, 0xa37513,
0xb78927, 0xb78927, 0xcb9d3b, 0xcb9d3b,
0xdfb14f, 0xdfb14f, 0xf3c563, 0xf3c563,
0x7b2504, 0x7b2504, 0x8f3918, 0x8f3918,
0xa34d2c, 0xa34d2c, 0xb76140, 0xb76140,
0xcb7554, 0xcb7554, 0xdf8968, 0xdf8968,
0xf39d7c, 0xf39d7c, 0xffb190, 0xffb190,
0x7d122c, 0x7d122c, 0x912640, 0x912640,
0xa53a54, 0xa53a54, 0xb94e68, 0xb94e68,
0xcd627c, 0xcd627c, 0xe17690, 0xe17690,
0xf58aa4, 0xf58aa4, 0xff9eb8, 0xff9eb8,
0x730871, 0x730871, 0x871c85, 0x871c85,
0x9b3099, 0x9b3099, 0xaf44ad, 0xaf44ad,
0xc358c1, 0xc358c1, 0xd76cd5, 0xd76cd5,
0xeb80e9, 0xeb80e9, 0xff94fd, 0xff94fd,
0x5d0b92, 0x5d0b92, 0x711fa6, 0x711fa6,
0x8533ba, 0x8533ba, 0x9947ce, 0x9947ce,
0xad5be2, 0xad5be2, 0xc16ff6, 0xc16ff6,
0xd583ff, 0xd583ff, 0xe997ff, 0xe997ff,
0x401599, 0x401599, 0x5429ad, 0x5429ad,
0x683dc1, 0x683dc1, 0x7c51d5, 0x7c51d5,
0x9065e9, 0x9065e9, 0xa479fd, 0xa479fd,
0xb88dff, 0xb88dff, 0xcca1ff, 0xcca1ff,
0x252593, 0x252593, 0x3939a7, 0x3939a7,
0x4d4dbb, 0x4d4dbb, 0x6161cf, 0x6161cf,
0x7575e3, 0x7575e3, 0x8989f7, 0x8989f7,
0x9d9dff, 0x9d9dff, 0xb1b1ff, 0xb1b1ff,
0x0f3480, 0x0f3480, 0x234894, 0x234894,
0x375ca8, 0x375ca8, 0x4b70bc, 0x4b70bc,
0x5f84d0, 0x5f84d0, 0x7398e4, 0x7398e4,
0x87acf8, 0x87acf8, 0x9bc0ff, 0x9bc0ff,
0x04425a, 0x04425a, 0x18566e, 0x18566e,
0x2c6a82, 0x2c6a82, 0x407e96, 0x407e96,
0x5492aa, 0x5492aa, 0x68a6be, 0x68a6be,
0x7cbad2, 0x7cbad2, 0x90cee6, 0x90cee6,
0x044f30, 0x044f30, 0x186344, 0x186344,
0x2c7758, 0x2c7758, 0x408b6c, 0x408b6c,
0x549f80, 0x549f80, 0x68b394, 0x68b394,
0x7cc7a8, 0x7cc7a8, 0x90dbbc, 0x90dbbc,
0x0f550a, 0x0f550a, 0x23691e, 0x23691e,
0x377d32, 0x377d32, 0x4b9146, 0x4b9146,
0x5fa55a, 0x5fa55a, 0x73b96e, 0x73b96e,
0x87cd82, 0x87cd82, 0x9be196, 0x9be196,
0x1f5100, 0x1f5100, 0x336505, 0x336505,
0x477919, 0x477919, 0x5b8d2d, 0x5b8d2d,
0x6fa141, 0x6fa141, 0x83b555, 0x83b555,
0x97c969, 0x97c969, 0xabdd7d, 0xabdd7d,
0x344600, 0x344600, 0x485a00, 0x485a00,
0x5c6e14, 0x5c6e14, 0x708228, 0x708228,
0x84963c, 0x84963c, 0x98aa50, 0x98aa50,
0xacbe64, 0xacbe64, 0xc0d278, 0xc0d278,
0x463e00, 0x463e00, 0x5a5205, 0x5a5205,
0x6e6619, 0x6e6619, 0x827a2d, 0x827a2d,
0x968e41, 0x968e41, 0xaaa255, 0xaaa255,
0xbeb669, 0xbeb669, 0xd2ca7d, 0xd2ca7d
uInt32 Console::ourNTSCPaletteZ26[256] = {
0x000000, 0, 0x505050, 0, 0x646464, 0, 0x787878, 0,
0x8c8c8c, 0, 0xa0a0a0, 0, 0xb4b4b4, 0, 0xc8c8c8, 0,
0x445400, 0, 0x586800, 0, 0x6c7c00, 0, 0x809000, 0,
0x94a414, 0, 0xa8b828, 0, 0xbccc3c, 0, 0xd0e050, 0,
0x673900, 0, 0x7b4d00, 0, 0x8f6100, 0, 0xa37513, 0,
0xb78927, 0, 0xcb9d3b, 0, 0xdfb14f, 0, 0xf3c563, 0,
0x7b2504, 0, 0x8f3918, 0, 0xa34d2c, 0, 0xb76140, 0,
0xcb7554, 0, 0xdf8968, 0, 0xf39d7c, 0, 0xffb190, 0,
0x7d122c, 0, 0x912640, 0, 0xa53a54, 0, 0xb94e68, 0,
0xcd627c, 0, 0xe17690, 0, 0xf58aa4, 0, 0xff9eb8, 0,
0x730871, 0, 0x871c85, 0, 0x9b3099, 0, 0xaf44ad, 0,
0xc358c1, 0, 0xd76cd5, 0, 0xeb80e9, 0, 0xff94fd, 0,
0x5d0b92, 0, 0x711fa6, 0, 0x8533ba, 0, 0x9947ce, 0,
0xad5be2, 0, 0xc16ff6, 0, 0xd583ff, 0, 0xe997ff, 0,
0x401599, 0, 0x5429ad, 0, 0x683dc1, 0, 0x7c51d5, 0,
0x9065e9, 0, 0xa479fd, 0, 0xb88dff, 0, 0xcca1ff, 0,
0x252593, 0, 0x3939a7, 0, 0x4d4dbb, 0, 0x6161cf, 0,
0x7575e3, 0, 0x8989f7, 0, 0x9d9dff, 0, 0xb1b1ff, 0,
0x0f3480, 0, 0x234894, 0, 0x375ca8, 0, 0x4b70bc, 0,
0x5f84d0, 0, 0x7398e4, 0, 0x87acf8, 0, 0x9bc0ff, 0,
0x04425a, 0, 0x18566e, 0, 0x2c6a82, 0, 0x407e96, 0,
0x5492aa, 0, 0x68a6be, 0, 0x7cbad2, 0, 0x90cee6, 0,
0x044f30, 0, 0x186344, 0, 0x2c7758, 0, 0x408b6c, 0,
0x549f80, 0, 0x68b394, 0, 0x7cc7a8, 0, 0x90dbbc, 0,
0x0f550a, 0, 0x23691e, 0, 0x377d32, 0, 0x4b9146, 0,
0x5fa55a, 0, 0x73b96e, 0, 0x87cd82, 0, 0x9be196, 0,
0x1f5100, 0, 0x336505, 0, 0x477919, 0, 0x5b8d2d, 0,
0x6fa141, 0, 0x83b555, 0, 0x97c969, 0, 0xabdd7d, 0,
0x344600, 0, 0x485a00, 0, 0x5c6e14, 0, 0x708228, 0,
0x84963c, 0, 0x98aa50, 0, 0xacbe64, 0, 0xc0d278, 0,
0x463e00, 0, 0x5a5205, 0, 0x6e6619, 0, 0x827a2d, 0,
0x968e41, 0, 0xaaa255, 0, 0xbeb669, 0, 0xd2ca7d, 0
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
const uInt32 Console::ourPALPaletteZ26[256] = {
0x000000, 0x000000, 0x4c4c4c, 0x4b4b4b,
0x606060, 0x5f5f5f, 0x747474, 0x737373,
0x888888, 0x878787, 0x9c9c9c, 0x9b9b9b,
0xb0b0b0, 0xafafaf, 0xc4c4c4, 0xc3c3c3,
0x000000, 0x000000, 0x4c4c4c, 0x4b4b4b,
0x606060, 0x5f5f5f, 0x747474, 0x737373,
0x888888, 0x878787, 0x9c9c9c, 0x9b9b9b,
0xb0b0b0, 0xafafaf, 0xc4c4c4, 0xc3c3c3,
0x533a00, 0x3a3a3a, 0x674e00, 0x4c4c4c,
0x7b6203, 0x5e5e5e, 0x8f7617, 0x727272,
0xa38a2b, 0x868686, 0xb79e3f, 0x9a9a9a,
0xcbb253, 0xaeaeae, 0xdfc667, 0xc2c2c2,
0x1b5800, 0x3b3b3b, 0x2f6c00, 0x4d4d4d,
0x438001, 0x5f5f5f, 0x579415, 0x737373,
0x6ba829, 0x878787, 0x7fbc3d, 0x9b9b9b,
0x93d051, 0xafafaf, 0xa7e465, 0xc3c3c3,
0x6a2900, 0x373737, 0x7e3d12, 0x4b4b4b,
0x925126, 0x5f5f5f, 0xa6653a, 0x737373,
0xba794e, 0x878787, 0xce8d62, 0x9b9b9b,
0xe2a176, 0xafafaf, 0xf6b58a, 0xc3c3c3,
0x075b00, 0x373737, 0x1b6f11, 0x4b4b4b,
0x2f8325, 0x5f5f5f, 0x439739, 0x737373,
0x57ab4d, 0x878787, 0x6bbf61, 0x9b9b9b,
0x7fd375, 0xafafaf, 0x93e789, 0xc3c3c3,
0x741b2f, 0x373737, 0x882f43, 0x4b4b4b,
0x9c4357, 0x5f5f5f, 0xb0576b, 0x737373,
0xc46b7f, 0x878787, 0xd87f93, 0x9b9b9b,
0xec93a7, 0xafafaf, 0xffa7bb, 0xc3c3c3,
0x00572e, 0x383838, 0x106b42, 0x4b4b4b,
0x247f56, 0x5f5f5f, 0x38936a, 0x737373,
0x4ca77e, 0x878787, 0x60bb92, 0x9b9b9b,
0x74cfa6, 0xafafaf, 0x88e3ba, 0xc3c3c3,
0x6d165f, 0x383838, 0x812a73, 0x4c4c4c,
0x953e87, 0x606060, 0xa9529b, 0x747474,
0xbd66af, 0x888888, 0xd17ac3, 0x9c9c9c,
0xe58ed7, 0xb0b0b0, 0xf9a2eb, 0xc4c4c4,
0x014c5e, 0x373737, 0x156072, 0x4b4b4b,
0x297486, 0x5f5f5f, 0x3d889a, 0x737373,
0x519cae, 0x878787, 0x65b0c2, 0x9b9b9b,
0x79c4d6, 0xafafaf, 0x8dd8ea, 0xc3c3c3,
0x5f1588, 0x383838, 0x73299c, 0x4c4c4c,
0x873db0, 0x606060, 0x9b51c4, 0x747474,
0xaf65d8, 0x888888, 0xc379ec, 0x9c9c9c,
0xd78dff, 0xb0b0b0, 0xeba1ff, 0xc1c1c1,
0x123b87, 0x373737, 0x264f9b, 0x4b4b4b,
0x3a63af, 0x5f5f5f, 0x4e77c3, 0x737373,
0x628bd7, 0x878787, 0x769feb, 0x9b9b9b,
0x8ab3ff, 0xafafaf, 0x9ec7ff, 0xc1c1c1,
0x451e9d, 0x383838, 0x5932b1, 0x4c4c4c,
0x6d46c5, 0x606060, 0x815ad9, 0x747474,
0x956eed, 0x888888, 0xa982ff, 0x9b9b9b,
0xbd96ff, 0xadadad, 0xd1aaff, 0xbfbfbf,
0x2a2b9e, 0x373737, 0x3e3fb2, 0x4b4b4b,
0x5253c6, 0x5f5f5f, 0x6667da, 0x737373,
0x7a7bee, 0x878787, 0x8e8fff, 0x9b9b9b,
0xa2a3ff, 0xadadad, 0xb6b7ff, 0xbebebe,
0x000000, 0x000000, 0x4c4c4c, 0x4b4b4b,
0x606060, 0x5f5f5f, 0x747474, 0x737373,
0x888888, 0x878787, 0x9c9c9c, 0x9b9b9b,
0xb0b0b0, 0xafafaf, 0xc4c4c4, 0xc3c3c3,
0x000000, 0x000000, 0x4c4c4c, 0x4b4b4b,
0x606060, 0x5f5f5f, 0x747474, 0x737373,
0x888888, 0x878787, 0x9c9c9c, 0x9b9b9b,
0xb0b0b0, 0xafafaf, 0xc4c4c4, 0xc3c3c3
uInt32 Console::ourPALPaletteZ26[256] = {
0x000000, 0, 0x4c4c4c, 0, 0x606060, 0, 0x747474, 0,
0x888888, 0, 0x9c9c9c, 0, 0xb0b0b0, 0, 0xc4c4c4, 0,
0x000000, 0, 0x4c4c4c, 0, 0x606060, 0, 0x747474, 0,
0x888888, 0, 0x9c9c9c, 0, 0xb0b0b0, 0, 0xc4c4c4, 0,
0x533a00, 0, 0x674e00, 0, 0x7b6203, 0, 0x8f7617, 0,
0xa38a2b, 0, 0xb79e3f, 0, 0xcbb253, 0, 0xdfc667, 0,
0x1b5800, 0, 0x2f6c00, 0, 0x438001, 0, 0x579415, 0,
0x6ba829, 0, 0x7fbc3d, 0, 0x93d051, 0, 0xa7e465, 0,
0x6a2900, 0, 0x7e3d12, 0, 0x925126, 0, 0xa6653a, 0,
0xba794e, 0, 0xce8d62, 0, 0xe2a176, 0, 0xf6b58a, 0,
0x075b00, 0, 0x1b6f11, 0, 0x2f8325, 0, 0x439739, 0,
0x57ab4d, 0, 0x6bbf61, 0, 0x7fd375, 0, 0x93e789, 0,
0x741b2f, 0, 0x882f43, 0, 0x9c4357, 0, 0xb0576b, 0,
0xc46b7f, 0, 0xd87f93, 0, 0xec93a7, 0, 0xffa7bb, 0,
0x00572e, 0, 0x106b42, 0, 0x247f56, 0, 0x38936a, 0,
0x4ca77e, 0, 0x60bb92, 0, 0x74cfa6, 0, 0x88e3ba, 0,
0x6d165f, 0, 0x812a73, 0, 0x953e87, 0, 0xa9529b, 0,
0xbd66af, 0, 0xd17ac3, 0, 0xe58ed7, 0, 0xf9a2eb, 0,
0x014c5e, 0, 0x156072, 0, 0x297486, 0, 0x3d889a, 0,
0x519cae, 0, 0x65b0c2, 0, 0x79c4d6, 0, 0x8dd8ea, 0,
0x5f1588, 0, 0x73299c, 0, 0x873db0, 0, 0x9b51c4, 0,
0xaf65d8, 0, 0xc379ec, 0, 0xd78dff, 0, 0xeba1ff, 0,
0x123b87, 0, 0x264f9b, 0, 0x3a63af, 0, 0x4e77c3, 0,
0x628bd7, 0, 0x769feb, 0, 0x8ab3ff, 0, 0x9ec7ff, 0,
0x451e9d, 0, 0x5932b1, 0, 0x6d46c5, 0, 0x815ad9, 0,
0x956eed, 0, 0xa982ff, 0, 0xbd96ff, 0, 0xd1aaff, 0,
0x2a2b9e, 0, 0x3e3fb2, 0, 0x5253c6, 0, 0x6667da, 0,
0x7a7bee, 0, 0x8e8fff, 0, 0xa2a3ff, 0, 0xb6b7ff, 0,
0x000000, 0, 0x4c4c4c, 0, 0x606060, 0, 0x747474, 0,
0x888888, 0, 0x9c9c9c, 0, 0xb0b0b0, 0, 0xc4c4c4, 0,
0x000000, 0, 0x4c4c4c, 0, 0x606060, 0, 0x747474, 0,
0x888888, 0, 0x9c9c9c, 0, 0xb0b0b0, 0, 0xc4c4c4, 0
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt32 Console::ourUserNTSCPalette[256] = { 0 }; // filled from external file
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt32 Console::ourUserPALPalette[256] = { 0 }; // filled from external file
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Console::Console(const Console& console)
: myOSystem(console.myOSystem)

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Console.hxx,v 1.53 2006-12-26 00:39:43 stephena Exp $
// $Id: Console.hxx,v 1.54 2006-12-26 17:06:01 stephena Exp $
//============================================================================
#ifndef CONSOLE_HXX
@ -38,7 +38,7 @@ class System;
This class represents the entire game console.
@author Bradford W. Mott
@version $Id: Console.hxx,v 1.53 2006-12-26 00:39:43 stephena Exp $
@version $Id: Console.hxx,v 1.54 2006-12-26 17:06:01 stephena Exp $
*/
class Console
{
@ -169,6 +169,11 @@ class Console
*/
void togglePhosphor();
/**
Toggles the PAL color-loss effect.
*/
void toggleColorLoss();
/**
Initialize the basic properties of the console.
TODO - This is a workaround for a bug in the TIA rendering, whereby
@ -246,6 +251,12 @@ class Console
*/
void loadUserPalette();
/**
Loads all defined palettes with PAL color-loss data depending
on 'state'.
*/
void setColorLossPalette(bool state);
/**
Returns a pointer to the palette data for the palette currently defined
by the ROM properties.
@ -292,35 +303,27 @@ class Console
// successfully loaded
bool myUserPaletteDefined;
// User-defined NTSC and PAL RGB values
uInt32* ourUserNTSCPalette;
uInt32* ourUserPALPalette;
// Contains info about this console in string format
string myAboutString;
// The currently defined display format (NTSC/PAL/PAL60)
string myDisplayFormat;
// Table of RGB values for NTSC
static const uInt32 ourNTSCPalette[256];
// Table of RGB values for NTSC and PAL
static uInt32 ourNTSCPalette[256];
static uInt32 ourPALPalette[256];
// Table of RGB values for PAL. NOTE: The odd numbered entries in
// this array are always shades of grey. This is used to implement
// the PAL color loss effect.
static const uInt32 ourPALPalette[256];
// Table of RGB values for NTSC and PAL - Stella 1.1 version
static uInt32 ourNTSCPalette11[256];
static uInt32 ourPALPalette11[256];
// Table of RGB values for NTSC - Stella 1.1 version
static const uInt32 ourNTSCPalette11[256];
// Table of RGB values for NTSC and PAL - Z26 version
static uInt32 ourNTSCPaletteZ26[256];
static uInt32 ourPALPaletteZ26[256];
// Table of RGB values for PAL - Stella 1.1 version
static const uInt32 ourPALPalette11[256];
// Table of RGB values for NTSC - Z26 version
static const uInt32 ourNTSCPaletteZ26[256];
// Table of RGB values for PAL - Z26 version
static const uInt32 ourPALPaletteZ26[256];
// Table of RGB values for NTSC and PAL - user-defined
static uInt32 ourUserNTSCPalette[256];
static uInt32 ourUserPALPalette[256];
};
#endif

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: EventHandler.cxx,v 1.189 2006-12-18 16:44:39 stephena Exp $
// $Id: EventHandler.cxx,v 1.190 2006-12-26 17:06:01 stephena Exp $
//============================================================================
#include <sstream>
@ -574,6 +574,10 @@ void EventHandler::poll(uInt32 time)
myOSystem->console().toggleFormat();
break;
case SDLK_l: // Ctrl-l toggles PAL color-loss effect
myOSystem->console().toggleColorLoss();
break;
case SDLK_p: // Ctrl-p toggles different palettes
myOSystem->console().togglePalette();
break;

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Settings.cxx,v 1.107 2006-12-26 00:39:44 stephena Exp $
// $Id: Settings.cxx,v 1.108 2006-12-26 17:06:01 stephena Exp $
//============================================================================
#include <cassert>
@ -48,6 +48,7 @@ Settings::Settings(OSystem* osystem)
setInternal("center", "true");
setInternal("grabmouse", "false");
setInternal("palette", "standard");
setInternal("colorloss", "false");
setInternal("sound", "true");
setInternal("fragsize", "512");
@ -320,6 +321,7 @@ void Settings::usage()
<< " standard|\n"
<< " z26|\n"
<< " user>\n"
<< " -colorloss <1|0> Enable PAL color-loss effect\n"
<< " -framerate <number> Display the given number of frames per second\n"
<< endl
#ifdef SOUND_SUPPORT