From 756a47bcf861b8739ea1e5919d0452ffdf3fe3f7 Mon Sep 17 00:00:00 2001 From: stephena Date: Sat, 14 Jul 2012 18:56:57 +0000 Subject: [PATCH] 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 --- Changes.txt | 14 ++++++- docs/index.html | 4 +- src/emucore/Cart.cxx | 4 +- src/emucore/Console.cxx | 7 ++-- src/emucore/DefProps.hxx | 5 ++- src/emucore/Props.cxx | 48 +++++++++++----------- src/emucore/TIA.cxx | 76 +++++++++++++++++++++-------------- src/emucore/TIA.hxx | 24 +++-------- src/emucore/TIATables.cxx | 26 +++++------- src/emucore/stella.pro | 6 ++- src/gui/GameInfoDialog.cxx | 8 ++-- src/gui/GlobalPropsDialog.cxx | 8 ++-- src/tools/PropSet.pm | 4 +- 13 files changed, 125 insertions(+), 109 deletions(-) diff --git a/Changes.txt b/Changes.txt index 67f3f4872..22eda9028 100644 --- a/Changes.txt +++ b/Changes.txt @@ -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) diff --git a/docs/index.html b/docs/index.html index 90695f787..6bd54177c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3231,7 +3231,7 @@ Ms Pac-Man (Stella extended codes): Cartridge.Type: Indicates the bank-switching type for the game. - The value of this property must be either Auto-detect or one of the following + The value of this property must be either Auto 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 (¹) do not currently have reliable auto-detection, those marked as (²) @@ -3365,7 +3365,7 @@ Ms Pac-Man (Stella extended codes): Display.Format: Indicates the television format the game was designed for. The value - must be Auto-detect, NTSC, PAL, SECAM, NTSC50, + must be Auto, NTSC, PAL, SECAM, NTSC50, PAL60 or SECAM60. diff --git a/src/emucore/Cart.cxx b/src/emucore/Cart.cxx index 822f7ee3c..3da1e60dc 100644 --- a/src/emucore/Cart.cxx +++ b/src/emucore/Cart.cxx @@ -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; diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index 881388cc1..cb6d0b165 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -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"; diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index b370e83b7..070b43cbe 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -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", "" }, diff --git a/src/emucore/Props.cxx b/src/emucore/Props.cxx index b100154b0..3dfa2b928 100644 --- a/src/emucore/Props.cxx +++ b/src/emucore/Props.cxx @@ -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 }; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/TIA.cxx b/src/emucore/TIA.cxx index 32c8cba29..07ba0a829 100644 --- a/src/emucore/TIA.cxx +++ b/src/emucore/TIA.cxx @@ -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; } diff --git a/src/emucore/TIA.hxx b/src/emucore/TIA.hxx index 113e723ac..53824776e 100644 --- a/src/emucore/TIA.hxx +++ b/src/emucore/TIA.hxx @@ -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; diff --git a/src/emucore/TIATables.cxx b/src/emucore/TIATables.cxx index c25076305..a48c37a81 100644 --- a/src/emucore/TIATables.cxx +++ b/src/emucore/TIATables.cxx @@ -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 }; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/stella.pro b/src/emucore/stella.pro index 26f5c6e4b..993db3d01 100644 --- a/src/emucore/stella.pro +++ b/src/emucore/stella.pro @@ -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)" +"" diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 1be7e87a2..d110be446 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -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)); diff --git a/src/gui/GlobalPropsDialog.cxx b/src/gui/GlobalPropsDialog.cxx index 8ca643988..058ead2c2 100644 --- a/src/gui/GlobalPropsDialog.cxx +++ b/src/gui/GlobalPropsDialog.cxx @@ -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", ""); diff --git a/src/tools/PropSet.pm b/src/tools/PropSet.pm index 42a7e4d37..93c74a2c1 100755 --- a/src/tools/PropSet.pm +++ b/src/tools/PropSet.pm @@ -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",