Fixes for 'illegal' VSYNC behaviour wrt 'short' frames.

git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2547 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2012-07-14 18:56:57 +00:00
parent 9a4323eece
commit 756a47bcf8
13 changed files with 125 additions and 109 deletions

View File

@ -12,13 +12,23 @@
Release History
===========================================================================
3.7.2 to 3.8: (xxx xx, 2012)
* Improved handling of 'illegal' VSYNC signals, which sometimes created
'short' frames that caused massive flickering.
* The ROM properties database now uses 'Auto' instead of 'Auto-select'
everywhere. This makes for less typing when running from the
commandline.
-Have fun!
3.7.1 to 3.7.2: (June 10, 2012)
* Fixed bug in handling filenames with the '~' character, as is used
extensively by RomHunter rom-sets.
-Have fun!
3.7 to 3.7.1: (June 8, 2012)

View File

@ -3231,7 +3231,7 @@ Ms Pac-Man (Stella extended codes):
<tr>
<td VALIGN="TOP"><i>Cartridge.Type:</i></td>
<td>Indicates the bank-switching type for the game.
The value of this property must be either <b>Auto-detect</b> or one of the following
The value of this property must be either <b>Auto</b> or one of the following
(for more information about bank-switching see Kevin Horton's 2600 bankswitching
document or the documentation in each cartridges source code file). Types marked
as (&#185;) do not currently have reliable auto-detection, those marked as (&#178;)
@ -3365,7 +3365,7 @@ Ms Pac-Man (Stella extended codes):
<tr>
<td VALIGN="TOP"><i>Display.Format:</i></td>
<td>Indicates the television format the game was designed for. The value
must be <b>Auto-detect</b>, <b>NTSC</b>, <b>PAL</b>, <b>SECAM</b>, <b>NTSC50</b>,
must be <b>Auto</b>, <b>NTSC</b>, <b>PAL</b>, <b>SECAM</b>, <b>NTSC50</b>,
<b>PAL60</b> or <b>SECAM60</b>.</td>
</tr>

View File

@ -74,11 +74,11 @@ Cartridge* Cartridge::create(const uInt8* image, uInt32 size, string& md5,
// See if we should try to auto-detect the cartridge type
// If we ask for extended info, always do an autodetect
string autodetect = "";
if(type == "AUTO-DETECT" || settings.getBool("rominfo"))
if(type == "AUTO" || settings.getBool("rominfo"))
{
const string& detected = autodetectType(image, size);
autodetect = "*";
if(type != "AUTO-DETECT" && type != detected)
if(type != "AUTO" && type != detected)
cerr << "Auto-detection not consistent: " << type << ", " << detected << endl;
type = detected;

View File

@ -112,8 +112,7 @@ Console::Console(OSystem* osystem, Cartridge* cart, const Properties& props)
// Auto-detect NTSC/PAL mode if it's requested
string autodetected = "";
myDisplayFormat = myProperties.get(Display_Format);
if(myDisplayFormat == "AUTO-DETECT" ||
myOSystem->settings().getBool("rominfo"))
if(myDisplayFormat == "AUTO" || myOSystem->settings().getBool("rominfo"))
{
// Run the TIA, looking for PAL scanline patterns
// We turn off the SuperCharger progress bars, otherwise the SC BIOS
@ -125,7 +124,7 @@ Console::Console(OSystem* osystem, Cartridge* cart, const Properties& props)
for(int i = 0; i < 60; ++i)
myTIA->update();
myDisplayFormat = myTIA->isPAL() ? "PAL" : "NTSC";
if(myProperties.get(Display_Format) == "AUTO-DETECT")
if(myProperties.get(Display_Format) == "AUTO")
{
autodetected = "*";
myCurrentFormat = 0;
@ -251,7 +250,7 @@ void Console::toggleFormat(int direction)
myTIA->update();
myDisplayFormat = myTIA->isPAL() ? "PAL" : "NTSC";
message = "Auto-detect mode: " + myDisplayFormat;
saveformat = "AUTO-DETECT";
saveformat = "AUTO";
break;
case 1:
saveformat = myDisplayFormat = "NTSC";

View File

@ -27,7 +27,7 @@
regenerated and the application recompiled.
*/
#define DEF_PROPS_SIZE 3281
#define DEF_PROPS_SIZE 3282
static const char* DefProps[DEF_PROPS_SIZE][21] = {
{ "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
@ -2784,7 +2784,7 @@ static const char* DefProps[DEF_PROPS_SIZE][21] = {
{ "da64f33d0521d5c9958e5d2d4434ff95", "", "", "Star Fire - Return of the Starfield (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "da66d75e4b47fab99733529743f86f4f", "Digitel", "", "Chopper Command (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "da732c57697ad7d7af414998fa527e75", "Atari, Glenn Axworthy", "CX26129", "Midnight Magic (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "da79aad11572c80a96e261e4ac6392d0", "Salu - Ubi Soft, Dennis M. Kiss", "460673", "Pick 'n' Pile (1990) (Salu) (PAL)", "", "", "", "", "", "", "", "YES", "", "", "", "", "PAL", "38", "256", "YES", "" },
{ "da79aad11572c80a96e261e4ac6392d0", "Salu - Ubi Soft, Dennis M. Kiss", "460673", "Pick 'n' Pile (1990) (Salu) (PAL)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "38", "256", "YES", "" },
{ "da7a17dcdaa62d6971393c0a6faf202a", "", "", "Flag Capture (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "dab844deed4c752632b5e786b0f47999", "", "", "Super Challenge Baseball (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "dac38b4dd3da73bb7b2e9d70c61d2b7c", "", "", "Hangman Monkey Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
@ -3256,6 +3256,7 @@ static const char* DefProps[DEF_PROPS_SIZE][21] = {
{ "fb531febf8e155328ec0cd39ef77a122", "", "", "Worm War I (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "fb5c8af97bd8ffe88323656f462645a7", "", "", "Interlace Demo (Glenn Saunders)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "fb833ed50c865a9a505a125fc9d79a7e", "Home Vision - Gem International Corp.", "", "Zoo Fun (1983) (Home Vision) (PAL)", "AKA Panda Chase", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" },
{ "fb884ffd89013331a6f01ae3f6abd214", "Activision, David Crane", "", "Venetian Blinds Demo (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "fb88c400d602fe759ae74ef1716ee84e", "20th Century Fox Video Games, Bill Aspromonte", "11031", "Crash Dive (1983) (20th Century Fox)", "AKA Voyage to the Bottom of the Sea", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" },
{ "fb91da78455d9b1606913fbf8c859772", "", "", "Split Screen (Ballblazer) Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "fb91dfc36cddaa54b09924ae8fd96199", "Parker Brothers, Mark Lesser", "PB5590", "Frogger II (1984) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },

View File

@ -59,8 +59,11 @@ void Properties::set(PropertyType key, const string& value)
switch(key)
{
case Cartridge_Sound:
case Cartridge_Type:
case Display_Format:
if(BSPF_equalsIgnoreCase(myProperties[key], "AUTO-DETECT"))
myProperties[key] = "AUTO";
case Cartridge_Sound:
case Console_LeftDifficulty:
case Console_RightDifficulty:
case Console_TelevisionType:
@ -69,7 +72,6 @@ void Properties::set(PropertyType key, const string& value)
case Controller_Right:
case Controller_SwapPaddles:
case Controller_MouseAxis:
case Display_Format:
case Display_Phosphor:
{
transform(myProperties[key].begin(), myProperties[key].end(),
@ -301,27 +303,27 @@ void Properties::printHeader()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
const char* Properties::ourDefaultProperties[LastPropType] = {
"", // Cartridge.MD5
"", // Cartridge.Manufacturer
"", // Cartridge.ModelNo
"Untitled", // Cartridge.Name
"", // Cartridge.Note
"", // Cartridge.Rarity
"MONO", // Cartridge.Sound
"AUTO-DETECT", // Cartridge.Type
"B", // Console.LeftDifficulty
"B", // Console.RightDifficulty
"COLOR", // Console.TelevisionType
"NO", // Console.SwapPorts
"JOYSTICK", // Controller.Left
"JOYSTICK", // Controller.Right
"NO", // Controller.SwapPaddles
"AUTO", // Controller.MouseAxis
"AUTO-DETECT", // Display.Format
"34", // Display.YStart
"210", // Display.Height
"NO", // Display.Phosphor
"77" // Display.PPBlend
"", // Cartridge.MD5
"", // Cartridge.Manufacturer
"", // Cartridge.ModelNo
"Untitled", // Cartridge.Name
"", // Cartridge.Note
"", // Cartridge.Rarity
"MONO", // Cartridge.Sound
"AUTO", // Cartridge.Type
"B", // Console.LeftDifficulty
"B", // Console.RightDifficulty
"COLOR", // Console.TelevisionType
"NO", // Console.SwapPorts
"JOYSTICK", // Controller.Left
"JOYSTICK", // Controller.Right
"NO", // Controller.SwapPaddles
"AUTO", // Controller.MouseAxis
"AUTO", // Display.Format
"34", // Display.YStart
"210", // Display.Height
"NO", // Display.Phosphor
"77" // Display.PPBlend
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -141,12 +141,12 @@ void TIA::reset()
myFrameCounter = myPALFrameCounter = 0;
myScanlineCountForLastFrame = 0;
myCurrentP0Mask = &TIATables::PxMask[0][0][0][0];
myCurrentP1Mask = &TIATables::PxMask[0][0][0][0];
myCurrentM0Mask = &TIATables::MxMask[0][0][0][0];
myCurrentM1Mask = &TIATables::MxMask[0][0][0][0];
myCurrentBLMask = &TIATables::BLMask[0][0][0];
myCurrentPFMask = TIATables::PFMask[0];
myP0Mask = &TIATables::PxMask[0][0][0][0];
myP1Mask = &TIATables::PxMask[0][0][0][0];
myM0Mask = &TIATables::MxMask[0][0][0][0];
myM1Mask = &TIATables::MxMask[0][0][0][0];
myBLMask = &TIATables::BLMask[0][0][0];
myPFMask = TIATables::PFMask[0];
// Recalculate the size of the display
toggleFixedColors(0);
@ -600,6 +600,18 @@ inline void TIA::startFrame()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
inline void TIA::endFrame()
{
// The TIA may generate frames that are 'invisible' to TV (they complete
// before the first visible scanline)
// Such 'short' frames can't simply be eliminated, since they're running
// code at that point; however, they are not shown at all, otherwise the
// double-buffering of the video output will get confused
if(scanlines() <= myStartScanline)
{
// Skip display of this frame, as if it wasn't generated at all
startFrame();
return;
}
// This stuff should only happen at the end of a frame
// Compute the number of scanlines in the frame
uInt32 previousCount = myScanlineCountForLastFrame;
@ -1024,12 +1036,12 @@ void TIA::updateFrame(Int32 clock)
else
{
// Update masks
myCurrentBLMask = &TIATables::BLMask[myPOSBL & 0x03]
[(myCTRLPF & 0x30) >> 4][160 - (myPOSBL & 0xFC)];
myCurrentP0Mask = &TIATables::PxMask[myPOSP0 & 0x03]
myP0Mask = &TIATables::PxMask[myPOSP0 & 0x03]
[mySuppressP0][myNUSIZ0 & 0x07][160 - (myPOSP0 & 0xFC)];
myCurrentP1Mask = &TIATables::PxMask[myPOSP1 & 0x03]
myP1Mask = &TIATables::PxMask[myPOSP1 & 0x03]
[mySuppressP1][myNUSIZ1 & 0x07][160 - (myPOSP1 & 0xFC)];
myBLMask = &TIATables::BLMask[myPOSBL & 0x03]
[(myCTRLPF & 0x30) >> 4][160 - (myPOSBL & 0xFC)];
// TODO - 08-27-2009: Simulate the weird effects of Cosmic Ark and
// Stay Frosty. The movement itself is well understood, but there
@ -1045,21 +1057,23 @@ void TIA::updateFrame(Int32 clock)
case 3:
// Stretch this missle so it's 2 pixels wide and shifted one
// pixel to the left
myCurrentM0Mask = &TIATables::MxMask[(myPOSM0-1) & 0x03]
[myNUSIZ0 & 0x07][((myNUSIZ0 & 0x30) >> 4)|1][160 - ((myPOSM0-1) & 0xFC)];
myM0Mask = &TIATables::MxMask[(myPOSM0-1) & 0x03]
[myNUSIZ0 & 0x07][((myNUSIZ0 & 0x30) >> 4)|1]
[160 - ((myPOSM0-1) & 0xFC)];
break;
case 2:
// Missle is disabled on this line
myCurrentM0Mask = &TIATables::DisabledMask[0];
myM0Mask = &TIATables::DisabledMask[0];
break;
default:
myCurrentM0Mask = &TIATables::MxMask[myPOSM0 & 0x03]
[myNUSIZ0 & 0x07][(myNUSIZ0 & 0x30) >> 4][160 - (myPOSM0 & 0xFC)];
myM0Mask = &TIATables::MxMask[myPOSM0 & 0x03]
[myNUSIZ0 & 0x07][(myNUSIZ0 & 0x30) >> 4]
[160 - (myPOSM0 & 0xFC)];
break;
}
}
else
myCurrentM0Mask = &TIATables::MxMask[myPOSM0 & 0x03]
myM0Mask = &TIATables::MxMask[myPOSM0 & 0x03]
[myNUSIZ0 & 0x07][(myNUSIZ0 & 0x30) >> 4][160 - (myPOSM0 & 0xFC)];
if(myHMM1mmr)
{
@ -1068,21 +1082,23 @@ void TIA::updateFrame(Int32 clock)
case 3:
// Stretch this missle so it's 2 pixels wide and shifted one
// pixel to the left
myCurrentM1Mask = &TIATables::MxMask[(myPOSM1-1) & 0x03]
[myNUSIZ1 & 0x07][((myNUSIZ1 & 0x30) >> 4)|1][160 - ((myPOSM1-1) & 0xFC)];
myM1Mask = &TIATables::MxMask[(myPOSM1-1) & 0x03]
[myNUSIZ1 & 0x07][((myNUSIZ1 & 0x30) >> 4)|1]
[160 - ((myPOSM1-1) & 0xFC)];
break;
case 2:
// Missle is disabled on this line
myCurrentM1Mask = &TIATables::DisabledMask[0];
myM1Mask = &TIATables::DisabledMask[0];
break;
default:
myCurrentM1Mask = &TIATables::MxMask[myPOSM1 & 0x03]
[myNUSIZ1 & 0x07][(myNUSIZ1 & 0x30) >> 4][160 - (myPOSM1 & 0xFC)];
myM1Mask = &TIATables::MxMask[myPOSM1 & 0x03]
[myNUSIZ1 & 0x07][(myNUSIZ1 & 0x30) >> 4]
[160 - (myPOSM1 & 0xFC)];
break;
}
}
else
myCurrentM1Mask = &TIATables::MxMask[myPOSM1 & 0x03]
myM1Mask = &TIATables::MxMask[myPOSM1 & 0x03]
[myNUSIZ1 & 0x07][(myNUSIZ1 & 0x30) >> 4][160 - (myPOSM1 & 0xFC)];
uInt8 enabledObjects = myEnabledObjects & myDisabledObjects;
@ -1090,21 +1106,21 @@ void TIA::updateFrame(Int32 clock)
for(; myFramePointer < ending; ++myFramePointer, ++hpos)
{
uInt8 enabled = ((enabledObjects & PFBit) &&
(myPF & myCurrentPFMask[hpos])) ? PFBit : 0;
(myPF & myPFMask[hpos])) ? PFBit : 0;
if((enabledObjects & BLBit) && myCurrentBLMask[hpos])
if((enabledObjects & BLBit) && myBLMask[hpos])
enabled |= BLBit;
if((enabledObjects & P1Bit) && (myCurrentGRP1 & myCurrentP1Mask[hpos]))
if((enabledObjects & P1Bit) && (myCurrentGRP1 & myP1Mask[hpos]))
enabled |= P1Bit;
if((enabledObjects & M1Bit) && myCurrentM1Mask[hpos])
if((enabledObjects & M1Bit) && myM1Mask[hpos])
enabled |= M1Bit;
if((enabledObjects & P0Bit) && (myCurrentGRP0 & myCurrentP0Mask[hpos]))
if((enabledObjects & P0Bit) && (myCurrentGRP0 & myP0Mask[hpos]))
enabled |= P0Bit;
if((enabledObjects & M0Bit) && myCurrentM0Mask[hpos])
if((enabledObjects & M0Bit) && myM0Mask[hpos])
enabled |= M0Bit;
myCollision |= TIATables::CollisionMask[enabled];
@ -1130,7 +1146,7 @@ void TIA::updateFrame(Int32 clock)
if(myClocksToEndOfScanLine == 228)
{
// Yes, so set PF mask based on current CTRLPF reflection state
myCurrentPFMask = TIATables::PFMask[myCTRLPF & 0x01];
myPFMask = TIATables::PFMask[myCTRLPF & 0x01];
// TODO - 01-21-99: These should be reset right after the first copy
// of the player has passed. However, for now we'll just reset at the
@ -1460,7 +1476,7 @@ bool TIA::poke(uInt16 addr, uInt8 value)
// Update the playfield mask based on reflection state if
// we're still on the left hand side of the playfield
if(((clock - myClockWhenFrameStarted) % 228) < (68 + 79))
myCurrentPFMask = TIATables::PFMask[myCTRLPF & 0x01];
myPFMask = TIATables::PFMask[myCTRLPF & 0x01];
break;
}

View File

@ -550,24 +550,12 @@ class TIA : public Device
// It's VERY important that the BL, M0, M1, P0 and P1 current
// mask pointers are always on a uInt32 boundary. Otherwise,
// the TIA code will fail on a good number of CPUs.
// Pointer to the currently active mask array for the ball
uInt8* myCurrentBLMask;
// Pointer to the currently active mask array for missle 0
uInt8* myCurrentM0Mask;
// Pointer to the currently active mask array for missle 1
uInt8* myCurrentM1Mask;
// Pointer to the currently active mask array for player 0
uInt8* myCurrentP0Mask;
// Pointer to the currently active mask array for player 1
uInt8* myCurrentP1Mask;
// Pointer to the currently active mask array for the playfield
uInt32* myCurrentPFMask;
const uInt8* myP0Mask;
const uInt8* myM0Mask;
const uInt8* myM1Mask;
const uInt8* myP1Mask;
const uInt8* myBLMask;
const uInt32* myPFMask;
// Audio values; only used by TIADebug
uInt8 myAUDV0, myAUDV1, myAUDC0, myAUDC1, myAUDF0, myAUDF1;

View File

@ -25,9 +25,7 @@
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TIATables::computeAllTables()
{
for(uInt32 i = 0; i < 640; ++i)
DisabledMask[i] = 0;
memset(DisabledMask, 0, 640);
buildCollisionMaskTable();
buildPxMaskTable();
buildMxMaskTable();
@ -102,10 +100,9 @@ void TIATables::buildPxMaskTable()
Int32 x, suppress, nusiz;
// Set the player mask table to all zeros
for(suppress = 0; suppress < 2; ++suppress)
for(nusiz = 0; nusiz < 8; ++nusiz)
for(x = 0; x < 160; ++x)
PxMask[0][suppress][nusiz][x] = 0x00;
for(nusiz = 0; nusiz < 8; ++nusiz)
for(x = 0; x < 160; ++x)
PxMask[0][0][nusiz][x] = PxMask[0][1][nusiz][x] = 0x00;
// Now, compute the player mask table
for(suppress = 0; suppress < 2; ++suppress)
@ -194,15 +191,14 @@ void TIATables::buildPxMaskTable()
// Now, copy data for alignments of 1, 2 and 3
for(uInt32 align = 1; align < 4; ++align)
{
for(suppress = 0; suppress < 2; ++suppress)
for(nusiz = 0; nusiz < 8; ++nusiz)
{
for(nusiz = 0; nusiz < 8; ++nusiz)
for(x = 0; x < 320; ++x)
{
for(x = 0; x < 320; ++x)
{
PxMask[align][suppress][nusiz][x] =
PxMask[0][suppress][nusiz][(x + 320 - align) % 320];
}
PxMask[align][0][nusiz][x] =
PxMask[0][0][nusiz][(x + 320 - align) % 320];
PxMask[align][1][nusiz][x] =
PxMask[0][1][nusiz][(x + 320 - align) % 320];
}
}
}
@ -662,7 +658,7 @@ const Int16 TIATables::PokeDelay[64] = {
0, // HMCLR
0, // CXCLR
// remaining values are undefined TIA write locations
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
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -8051,7 +8051,6 @@
"Cartridge.ModelNo" "460673"
"Cartridge.Name" "Pick 'n' Pile (1990) (Salu) (PAL)"
"Console.SwapPorts" "YES"
"Display.Format" "PAL"
"Display.YStart" "38"
"Display.Height" "256"
"Display.Phosphor" "YES"
@ -19989,3 +19988,8 @@
"Cartridge.Rarity" "Homebrew"
"Display.Phosphor" "YES"
""
"Cartridge.MD5" "fb884ffd89013331a6f01ae3f6abd214"
"Cartridge.Manufacturer" "Activision, David Crane"
"Cartridge.Name" "Venetian Blinds Demo (1982) (Activision) (PAL)"
""

View File

@ -136,7 +136,7 @@ GameInfoDialog::GameInfoDialog(
"Type:", kTextAlignLeft);
pwidth = font.getStringWidth("CM (SpectraVideo CompuMate)");
items.clear();
items.push_back("Auto-detect", "AUTO-DETECT");
items.push_back("Auto-detect", "AUTO" );
items.push_back("0840 (8K ECONObank)", "0840" );
items.push_back("2IN1 Multicart (4-32K)", "2IN1" );
items.push_back("4IN1 Multicart (8-32K)", "4IN1" );
@ -339,7 +339,7 @@ GameInfoDialog::GameInfoDialog(
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
"Format:", kTextAlignLeft);
items.clear();
items.push_back("Auto-detect", "AUTO-DETECT");
items.push_back("Auto-detect", "AUTO");
items.push_back("NTSC", "NTSC");
items.push_back("PAL", "PAL");
items.push_back("SECAM", "SECAM");
@ -455,7 +455,7 @@ void GameInfoDialog::loadView()
myRarity->setEditString(myGameProperties.get(Cartridge_Rarity));
myNote->setEditString(myGameProperties.get(Cartridge_Note));
mySound->setSelected(myGameProperties.get(Cartridge_Sound), "MONO");
myType->setSelected(myGameProperties.get(Cartridge_Type), "AUTO-DETECT");
myType->setSelected(myGameProperties.get(Cartridge_Type), "AUTO");
// Console properties
myLeftDiff->setSelected(myGameProperties.get(Console_LeftDifficulty), "B");
@ -488,7 +488,7 @@ void GameInfoDialog::loadView()
myMouseY->setEnabled(!autoAxis);
// Display properties
myFormat->setSelected(myGameProperties.get(Display_Format), "AUTO-DETECT");
myFormat->setSelected(myGameProperties.get(Display_Format), "AUTO");
myYStart->setEditString(myGameProperties.get(Display_YStart));
myHeight->setEditString(myGameProperties.get(Display_Height));

View File

@ -64,7 +64,7 @@ GlobalPropsDialog::
new StaticTextWidget(this, font, xpos, ypos+1, lwidth, fontHeight,
"Bankswitch type:", kTextAlignLeft);
items.clear();
items.push_back("Auto-detect", "AUTO-DETECT");
items.push_back("Auto-detect", "AUTO" );
items.push_back("0840 (8K ECONObank)", "0840" );
items.push_back("2IN1 Multicart (4-32K)", "2IN1" );
items.push_back("4IN1 Multicart (8-32K)", "4IN1" );
@ -184,7 +184,7 @@ void GlobalPropsDialog::loadConfig()
{
Settings& settings = instance().settings();
myBSType->setSelected(settings.getString("bs"), "AUTO-DETECT");
myBSType->setSelected(settings.getString("bs"), "AUTO");
myLeftDiff->setSelected(settings.getString("ld"), "DEFAULT");
myRightDiff->setSelected(settings.getString("rd"), "DEFAULT");
myTVType->setSelected(settings.getString("tv"), "DEFAULT");
@ -201,7 +201,7 @@ void GlobalPropsDialog::saveConfig()
string s;
s = myBSType->getSelectedTag();
if(s == "AUTO-DETECT") s = "";
if(s == "AUTO") s = "";
settings.setString("bs", s);
s = myLeftDiff->getSelectedTag();
@ -224,7 +224,7 @@ void GlobalPropsDialog::saveConfig()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void GlobalPropsDialog::setDefaults()
{
myBSType->setSelected("AUTO-DETECT", "");
myBSType->setSelected("AUTO", "");
myLeftDiff->setSelected("DEFAULT", "");
myRightDiff->setSelected("DEFAULT", "");
myTVType->setSelected("DEFAULT", "");

View File

@ -57,7 +57,7 @@ my @prop_defaults = (
"",
"",
"MONO",
"AUTO-DETECT",
"AUTO",
"B",
"B",
"COLOR",
@ -66,7 +66,7 @@ my @prop_defaults = (
"JOYSTICK",
"NO",
"AUTO",
"AUTO-DETECT",
"AUTO",
"34",
"210",
"NO",