diff --git a/src/common/HighScoreManager.cxx b/src/common/HighScoreManager.cxx index 868ff5830..011f27ff4 100644 --- a/src/common/HighScoreManager.cxx +++ b/src/common/HighScoreManager.cxx @@ -30,6 +30,17 @@ HighScoreManager::HighScoreManager(OSystem& osystem) { } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Int16 HighScoreManager::peek(uInt16 addr) +{ + if (myOSystem.hasConsole()) + { + System& system = myOSystem.console().system(); + return system.peek(addr); + } + return -1; +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Properties& HighScoreManager::properties(Properties& props) const { @@ -46,25 +57,125 @@ Properties& HighScoreManager::properties(Properties& props) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Int32 HighScoreManager::numVariations() +string HighScoreManager::getPropIdx(PropType type, uInt32 idx) const { Properties props; - string numVariations = properties(props).get(PropType::Cart_Variations); + string property = properties(props).get(type); + std::replace(property.begin(), property.end(), ',', ' '); + std::replace(property.begin(), property.end(), '|', ' '); + istringstream buf(property); + string result; - return (numVariations == EmptyString) ? 1 : std::min(BSPF::stringToInt(numVariations), 256); + for (uInt32 i = 0; i <= idx; ++i) + if(!(buf >> result)) + return ""; + + return result; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Int32 HighScoreManager::numPlayers() +uInt32 HighScoreManager::numPlayers() const { - Properties props; - string numPlayers = properties(props).get(PropType::Cart_Players); + string numPlayers = getPropIdx(PropType::Cart_Players); return (numPlayers == EmptyString) ? 1 : std::min(BSPF::stringToInt(numPlayers), 4); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool HighScoreManager::parseAddresses(Int32& variation, Int32& player, Int32 scores[]) +uInt32 HighScoreManager::numVariations() const +{ + string numVariations = getPropIdx(PropType::Cart_Variations); + + return (numVariations == EmptyString) ? 1 : std::min(BSPF::stringToInt(numVariations), 256); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool HighScoreManager::getFormats(Formats& formats) const +{ + formats.numDigits = numDigits(); + formats.trailingZeroes = trailingZeroes(); + formats.scoreBCD = scoreBCD(); + formats.varBCD = varBCD(); + formats.varZeroBased = varZeroBased(); + + return true; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool HighScoreManager::getAddresses(Addresses& addresses) const +{ + addresses.playerAddr = playerAddress(); + addresses.varAddr = varAddress(); + + + return true; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt32 HighScoreManager::numDigits() const +{ + string digits = getPropIdx(PropType::Cart_Formats, 0); + + return digits == EmptyString ? 4 : stoi(digits); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt32 HighScoreManager::trailingZeroes() const +{ + string trailing = getPropIdx(PropType::Cart_Formats, 1); + + return trailing == EmptyString ? 0 : stoi(trailing);} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool HighScoreManager::scoreBCD() const +{ + string bcd = getPropIdx(PropType::Cart_Formats, 2); + + return bcd == EmptyString ? true : bcd == "B"; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool HighScoreManager::varBCD() const +{ + string bcd = getPropIdx(PropType::Cart_Formats, 3); + + return bcd == EmptyString ? true : bcd == "B"; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool HighScoreManager::varZeroBased() const +{ + string zeroBased = getPropIdx(PropType::Cart_Formats, 4); + + return zeroBased == EmptyString ? true : zeroBased != "0"; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt16 HighScoreManager::playerAddress() const +{ + uInt32 idx = numAddrBytes() * numPlayers() + 1; + string addr = getPropIdx(PropType::Cart_Addresses, idx); + + return addr == EmptyString ? 0 : stoi(addr, nullptr, 16); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt16 HighScoreManager::varAddress() const +{ + uInt32 idx = numAddrBytes() * numPlayers(); + string addr = getPropIdx(PropType::Cart_Addresses, idx); + + return addr == EmptyString ? 0 : stoi(addr, nullptr, 16); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt32 HighScoreManager::numAddrBytes(Int32 digits, Int32 trailing) const +{ + return ((digits < 0 ? numDigits() : digits) - (trailing < 0 ? trailingZeroes() : trailing) + 1) / 2; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool HighScoreManager::parseAddresses(uInt32& variation, uInt32& player, uInt32 scores[]) { variation = 1; player = 0; scores[0] = 0; @@ -117,7 +228,7 @@ bool HighScoreManager::parseAddresses(Int32& variation, Int32& player, Int32 sco varAdd = 0; // 2. retrieve current scores for all players - for (int i = 0; i < numPlayers(); ++i) + for (uInt32 i = 0; i < numPlayers(); ++i) { Int32 totalScore = 0; @@ -166,7 +277,7 @@ bool HighScoreManager::parseAddresses(Int32& variation, Int32& player, Int32 sco // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Int32 HighScoreManager::variation() { - Int32 variation, player, scores[4]; + uInt32 variation, player, scores[4]; if (parseAddresses(variation, player, scores)) return variation; @@ -177,7 +288,7 @@ Int32 HighScoreManager::variation() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Int32 HighScoreManager::player() { - Int32 variation, player, scores[4]; + uInt32 variation, player, scores[4]; if (parseAddresses(variation, player, scores)) return player; @@ -188,10 +299,10 @@ Int32 HighScoreManager::player() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Int32 HighScoreManager::score() { - Int32 variation, player, scores[4]; + uInt32 variation, player, scores[4]; if (parseAddresses(variation, player, scores)) - return scores[std::min(player, Int32(3))]; + return scores[std::min(player, uInt32(MAX_PLAYERS))]; return -1; } diff --git a/src/common/HighScoreManager.hxx b/src/common/HighScoreManager.hxx index af2181066..597b538b4 100644 --- a/src/common/HighScoreManager.hxx +++ b/src/common/HighScoreManager.hxx @@ -18,12 +18,33 @@ #ifndef HIGHSCORE_MANAGER_HXX #define HIGHSCORE_MANAGER_HXX +//#include "bspf.hxx" + class OSystem; class HighScoreManager { public: + + static const uInt32 MAX_PLAYERS = 4; + static const uInt32 MAX_SCORE_ADDR = 3; + + struct Formats { + uInt32 numDigits; + uInt32 trailingZeroes; + bool scoreBCD; + bool varBCD; + bool varZeroBased; + }; + + + struct Addresses { + uInt16 scoreAddr[HighScoreManager::MAX_PLAYERS][HighScoreManager::MAX_SCORE_ADDR]; + uInt16 varAddr; + uInt16 playerAddr; + }; + HighScoreManager(OSystem& osystem); virtual ~HighScoreManager() = default; @@ -31,15 +52,33 @@ public: Methods for returning high score related variables Return -1 if undefined */ - Int32 numVariations(); - Int32 numPlayers(); - Int32 variation(); + uInt32 numVariations() const; + uInt32 numPlayers() const; + + bool getFormats(Formats& formats) const; + bool getAddresses(Addresses& addresses) const; + + uInt32 numDigits() const; + uInt32 trailingZeroes() const; + bool scoreBCD() const; + bool varBCD() const; + bool varZeroBased() const; + + uInt16 varAddress() const; + uInt16 playerAddress() const; + + uInt32 numAddrBytes(Int32 digits = -1, Int32 trailing = -1) const; + + // current values Int32 player(); + Int32 variation(); Int32 score(); private: Properties& properties(Properties& props) const; - bool parseAddresses(Int32& variation, Int32& player, Int32 scores[]); + string getPropIdx(PropType type, uInt32 idx = 0) const; + Int16 peek(uInt16 addr); + bool parseAddresses(uInt32& variation, uInt32& player, uInt32 scores[]); private: // Reference to the osystem object diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index 3a75fd1de..c5aea2cdd 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -272,7 +272,7 @@ static const BSPF::array2D DefProps = {{ { "111029770226b319524134193886a10e", "Hozer Video Games", "", "Gunfight 2600 - One Limit Reached! (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "11330eaa5dd2629052fac37cfe1a0b7d", "128-in-1 Junior Console", "", "Human Cannonball (128-in-1 Junior Console) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "113cd09c9771ac278544b7e90efe7df2", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari) [no grid markers]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "114c599454d32f74c728a6e1f71012ba", "Activision, Bob Whitehead - Ariola", "EAX-015, EAX-015-04I - 711 015-725", "Chopper Command (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "114c599454d32f74c728a6e1f71012ba", "Activision, Bob Whitehead - Ariola", "EAX-015, EAX-015-04I - 711 015-725", "Chopper Command (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "11bcf5c752088b5aaf86d6c7a6a11e8d", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "11e7e0d9437ec98fa085284cf16d0eb4", "", "", "Bowling (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "11f9532557e4c9569f4b242164006161", "Chris Walton, Justin Hairgrove, Tony Morse", "", "Hunchy II (2005) (PAL)", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -389,7 +389,7 @@ static const BSPF::array2D DefProps = {{ { "199985cae1c0123ab1aef921daace8be", "", "", "Euchre (Release Candidate 2) (PAL) (01-10-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "199eb0b8dce1408f3f7d46411b715ca9", "Parker Brothers, David Lamkins, Laura Nikolich", "PB5900", "Spider-Man (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "19a9d3f9fa1b1358fb53009444247aaf", "", "", "Blackjack (Unknown) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "", "", "", "" }, - { "19abaf2144b6a7b281c4112cff154904", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "19abaf2144b6a7b281c4112cff154904", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "19b3b807507653516985ba95da92499d", "Joe Gaucher", "", "VCS Draw Demo (Joe Gaucher)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "19d6956ff17a959c48fcd8f4706a848d", "PlayAround - J.H.M.", "202", "Burning Desire (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "19d9b5f8428947eae6f8e97c7f33bf44", "", "", "Fortress (Dual Version) (20-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -417,7 +417,7 @@ static const BSPF::array2D DefProps = {{ { "1c6eb740d3c485766cade566abab8208", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "1c85c0fc480bbd69dc301591b6ecb422", "CCE", "", "Super Box (CCE)", "AKA RealSports Boxing", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "1c8c42d1aee5010b30e7f1992d69216e", "PlayAround - J.H.M.", "205", "Gigolo (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, - { "1cad3b56cc0e6e858554e46d08952861", "Jone Yuan Telephonic Enterprise Co", "", "Chopper Command (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "1cad3b56cc0e6e858554e46d08952861", "Jone Yuan Telephonic Enterprise Co", "", "Chopper Command (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "1cafa9f3f9a2fce4af6e4b85a2bbd254", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2659", "Raiders of the Lost Ark (1982) (Atari) (PAL)", "Console ports are swapped", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "", "", "", "" }, { "1cca2197d95c5a41f2add49a13738055", "Atari, Larry Kaplan - Sears", "CX2664 - 6-99818", "Brain Games (1978) (Atari)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "", "", "", "" }, { "1cf59fc7b11cdbcefe931e41641772f6", "SEGA", "005-01", "Buck Rogers - Planet of Zoom (1983) (SEGA)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, @@ -538,7 +538,7 @@ static const BSPF::array2D DefProps = {{ { "25b52bf8dd215bcbd59c9abdb55c44f8", "Atari - GCC, Betty Ryan Tylko, Doug Macrae", "CX2694, CX2694P", "Pole Position (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "25b6dc012cdba63704ea9535c6987beb", "Avalon Hill, Jean Baer, Bill Hood", "5004002", "Shuttle Orbiter (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "25bb080457351be724aac8a02021aa92", "CBS Electronics", "4L1784, 4L1786, 4L1787, 4L2277", "Zaxxon (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25d4be3309b89583c6b39d9f93bf654f", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "25d4be3309b89583c6b39d9f93bf654f", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "25e73efb9a6edf119114718bd2f646ba", "Atari, Suki Lee", "CX26113", "Miss Piggy's Wedding (1983) (Atari) (Prototype) (4K) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "25f2e760cd7f56b88aac88d63757d41b", "Activision, Bob Whitehead - Ariola", "EAG-002, EAG-002-04I, PAG-002 - 711 002-715", "Boxing (1980) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "25f879ff678130fea615ac418e7943f1", "Activision, Garry Kitchen", "EAX-025", "Keystone Kapers (1983) (Activision) (SECAM)", "", "", "", "", "", "", "", "", "", "", "", "", "", "SECAM", "", "", "", "", "", "", "" }, @@ -605,7 +605,7 @@ static const BSPF::array2D DefProps = {{ { "2a1b454a5c3832b0240111e7fd73de8a", "Tigervision, Bill Hogue", "7-011", "Miner 2049er Volume II (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "2a2f46b3f4000495239cbdad70f17c59", "CommaVid, John Bronstein - Ariola", "CM-003 - 712 003-720", "Cosmic Swarm (1982) (CommaVid) (PAL)", "AKA Angriff der Termiten", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "2a33e21447bf9e13dcfed85077ff6b40", "", "", "Backwards Cannonball v2 (Hack)", "Hack of Human Cannonball", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2a360bc85bf22de438651cf92ffda1de", "Bit Corporation", "PGP213", "Spy Vs. Spy (4 Game in One) (1983) (BitCorp) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "2a360bc85bf22de438651cf92ffda1de", "Bit Corporation", "PGP213", "Spy Vs. Spy (4 Game in One) (1983) (BitCorp) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "2a9f9001540c55a302befd8e9d54b47b", "Atari, Dan Hitchens", "CX2697, CX2697P", "Mario Bros. (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2aa5e56d36c2e58b6f2856109f2099a9", "Atari, Larry Kaplan - Sears", "CX2628 - 6-99842, 49-75117", "Bowling (1979) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2aba6a1b01a5859e96d6a66d2286772f", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -657,7 +657,7 @@ static const BSPF::array2D DefProps = {{ { "2d9e5d8d083b6367eda880e80dfdfaeb", "QDI, Mike Montana, Rich Montana - Selchow & Righter", "87", "Glib (1983) (QDI)", "AKA Video Word Game", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2d9e65959808a6098c16c82a59c9d9dc", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (1 of 3) (1982) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2dbc92688f9ba92a7e086d62be9df79d", "", "", "How to Draw a Playfield (1997) (Jim Crawford) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2dbdca3058035d2b40c734dcf06a86d9", "Thomas Jentzsch", "", "Asteroids DC+ (Thomas Jentzsch) (Hack)", "Uses the Joystick (left) or Steering (right) Controller", "Hack", "", "", "", "", "", "", "", "", "DRIVING", "", "58", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "2dbdca3058035d2b40c734dcf06a86d9", "Thomas Jentzsch", "", "Asteroids DC+ (Thomas Jentzsch) (Hack)", "Uses the Joystick (left) or Steering (right) Controller", "Hack", "", "", "", "", "", "", "", "", "DRIVING", "", "58", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "2dcf9ce486393cd36ca0928cd53b96cb", "Atari - GCC, Mike Feinstein, John Allred", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2de41a11c6767e54a5ee9ebaffec72af", "Gray Games & AtariAge", "", "E.T. Book Cart (PAL60)", "Charles F. Gray & Michael Rideout", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "YES", "55", "", "", "", "" }, { "2dfec1615c49501fefc02165c81955e6", "", "", "Song (05-11-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, @@ -719,7 +719,7 @@ static const BSPF::array2D DefProps = {{ { "3225676f5c0c577aeccfaa7e6bedd765", "CCE", "C-1002", "Pole Position (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "322b29e84455aa41e7cc9af463bffa89", "Atari - Bobco, Robert C. Polaro", "CX2663", "Road Runner (06-25-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "324cb4a749bcac4f3db9da842b85d2f7", "Dennis Debro", "", "Climber 5 (01-05-2003) (Dennis Debro)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "327468d6c19697e65ab702f06502c7ed", "Charles Morgan", "", "Aster-Hawk (2002) (Charles Morgan) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "327468d6c19697e65ab702f06502c7ed", "Charles Morgan", "", "Aster-Hawk (2002) (Charles Morgan) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "3276c777cbe97cdd2b4a63ffc16b7151", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691", "Joust (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "3278158e5c1f7eb5c5d28ccfd7285250", "Dactari - Milmar", "", "Megamania (Dactari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "327fe8cf94f3a45c35a840a453df1235", "", "", "Spice Girls Rule Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -797,7 +797,7 @@ static const BSPF::array2D DefProps = {{ { "37b98344c8e0746c486caf5aaeec892a", "K-Tel Vision", "6", "Spider Maze (1982) (K-Tel Vision) (PAL)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "37e828675d556775ae8285c0caf7d11c", "AtariAge - Fred Quimby", "", "Gingerbread Man (Fred Quimby) (Genesis)", "Genesis controller (C throws cookie)", "New Release", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "", "", "", "" }, { "37f42ab50018497114f6b0f4f01aa9a1", "", "", "Droid Demo 2-M (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37fd7fa52d358f66984948999f1213c5", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (1983) (Rainbow Vision) (PAL) [a2]", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "37fd7fa52d358f66984948999f1213c5", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (1983) (Rainbow Vision) (PAL) [a2]", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "384db97670817103dd8c0bbdef132445", "Atari - Sears", "CX2626 - 6-99829, 49-75116", "Miniature Golf (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "384f5fbf57b5e92ed708935ebf8a8610", "20th Century Fox Video Games, John W.S. Marvin", "11009", "Crypts of Chaos (1983) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3856b9425cc0185ed770376a62af0282", "Kyle Pittman", "", "Yellow Submarine (Kyle Pittman) (Hack)", "Hack of Bermuda Triangle", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -858,7 +858,7 @@ static const BSPF::array2D DefProps = {{ { "3c4223316c835ceaad619651e25df0f9", "", "", "Defender (Genesis)", "Genesis controller (C is smartbomb)", "Hack of Defender", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3c4a6f613ca8ba27ce9e43c6c92a3128", "", "", "Qb (V0.04) (Non-Lax Version) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "3c57748c8286cf9e821ecd064f21aaa9", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c72ddaf41158fdd66e4f1cb90d4fd29", "Dismac", "", "Comando Suicida (Dismac)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "3c72ddaf41158fdd66e4f1cb90d4fd29", "Dismac", "", "Comando Suicida (Dismac)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "3c7a7b3a0a7e6319b2fa0f923ef6c9af", "Atari - Roklan, Joe Gaucher", "", "Racer (1982) (Atari) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "0", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3c7a96978f52b2b15426cdd50f2c4048", "", "", "Overhead Adventure Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3c82e808fe0e6a006dc0c4e714d36209", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -885,7 +885,7 @@ static const BSPF::array2D DefProps = {{ { "3e22c7eaf6459b67388602e4bebbb3a8", "CommaVid, John Bronstein - Ariola", "CM-003 - 712 003-720", "Cosmic Swarm (1982) (CommaVid) (PAL) (4K)", "AKA Angriff der Termiten", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3e33ac10dcf2dff014bc1decf8a9aea4", "Spectravideo - Video Games Industries Corporation, Michael Schwartz - Ralston Purina", "", "Chase the Chuckwagon (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "3e49da621193d2611a4ea152d5d5ca3a", "", "", "Atari Logo Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e4b1137433cc1e617b5508619e13063", "", "", "Asteroids (Genesis)", "Genesis controller (C is hyperspace)", "Hack of Asteroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "3e4b1137433cc1e617b5508619e13063", "", "", "Asteroids (Genesis)", "Genesis controller (C is hyperspace)", "Hack of Asteroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "3e5ca1afaa27c5da3c54c9942fec528b", "", "", "2600 Digital Clock (Demo 2) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3e6dab92009d6034618cb6b7844c5216", "", "", "Ed Invaders (Hack)", "Hack of Pepsi Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3e7d10d0a911afc4b492d06c99863e65", "VGS", "", "Super Tenis (VGS)", "AKA RealSports Tennis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1012,7 +1012,7 @@ static const BSPF::array2D DefProps = {{ { "47aad247cce2534fd70c412cb483c7e0", "Rainbow Vision - Suntek", "SS-010", "Mafia (1983) (Rainbow Vision) (PAL)", "AKA Gangster Alley", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "47abfb993ff14f502f88cf988092e055", "Zellers", "", "Inca Gold (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "47aef18509051bab493589cb2619170b", "", "", "Stell-A-Sketch (Bob Colbert) (PD)", "Uses Driving, Joystick, or Amiga/Atari ST mouse Controllers", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, - { "47b82d47e491ac7fdb5053a88fccc832", "Atari Freak 1, Franklin Cruz", "", "Asteroid 2 (Atari Freak 1) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "47b82d47e491ac7fdb5053a88fccc832", "Atari Freak 1, Franklin Cruz", "", "Asteroid 2 (Atari Freak 1) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "47cd61f83457a0890de381e478f5cf5f", "Imagic, Wilfredo Aguilar, Michael Becker, Rob Fulop", "720111-2A, 13205", "Fathom (1983) (Imagic) (PAL)", "AKA Scuba", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "481d20ec22e7a63e818d5ef9679d548b", "Atari", "CX26163P", "Freeway Rabbit (32 in 1) (1988) (Atari) (PAL)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "481f9a742052801cc5f3defb41cb638e", "Jeffry Johnston", "", "Radial Pong - Version 4 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1152,7 +1152,7 @@ static const BSPF::array2D DefProps = {{ { "51de328e79d919d7234cf19c1cd77fbc", "Atari, Mark R. Hahn", "CX2678", "Dukes of Hazzard (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "51e390424f20e468d2b480030ce95d7b", "Video Game Program", "", "Fire Bird (Video Game Program) (PAL)", "AKA Phoenix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "51f15b39d9f502c2361b6ba6a73464d4", "", "", "Amanda Invaders (PD) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "51f211c8fc879391fee26edfa7d3f11c", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "51f211c8fc879391fee26edfa7d3f11c", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "521f4dd1eb84a09b2b19959a41839aad", "Bit Corporation", "PG206", "Bobby Is Going Home (1983) (BitCorp)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "522b27a8afeb951b5a5a667f8d1a46a1", "Omegamatrix", "", "Millipede (Amiga Mouse) v6.5 (Omegamatrix)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "522c9cf684ecd72db2f85053e6f6f720", "Rainbow Vision - Suntek", "SS-008", "Year 1999, The (1983) (Rainbow Vision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1281,12 +1281,12 @@ static const BSPF::array2D DefProps = {{ { "5bba254e18257e578c245ed96f6b003b", "", "", "Music Effects Demo (21-01-2003) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "5bbab3f3e4b47e3e23f9820765dbb45c", "", "", "Pitfall! (says 1985) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "5bbb75b49b2bccef9c91ff84bb249c80", "Thomas Jentzsch", "", "Missile Control - Atari Trak-Ball Hack v1.15 (NTSC) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5bc9998b7e9a970e31d2cb60e8696cc4", "Jack Kortkamp", "", "Borgwars Asteroids (2003) (Jack Kortkamp) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "5bc9998b7e9a970e31d2cb60e8696cc4", "Jack Kortkamp", "", "Borgwars Asteroids (2003) (Jack Kortkamp) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "5bcc83677d68f7ef74c1b4a0697ba2a8", "Activision, Alan Miller", "AX-012, CAX-012, AX-012-04", "Ice Hockey (1981) (Activision) (16K)", "", "", "", "", "4K", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "5bd79139a0c03b63f6f2cf00a7d385d2", "Marc de Smet", "", "An Exercise In Minimalism (V1) (1999) (Marc de Smet) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "5be03a1fe7b2c114725150be04b38704", "Atari, Alan Miller", "CX2642", "Hunt & Score (1978) (Atari) (PAL)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "5c0227ad63300670a647fcebf595ea37", "Josh", "", "Battle for Naboo (Josh) (Hack)", "Hack of Atlantis", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c0520c00163915a4336e481ca4e7ef4", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (1983) (Rainbow Vision) (PAL) [a1]", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "5c0520c00163915a4336e481ca4e7ef4", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (1983) (Rainbow Vision) (PAL) [a1]", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "5c19f6da638c4c7c1f98d09e63df43e4", "Canal 3 - Intellivision", "", "Cosmic Ark (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "5c1b1aa78b7609d43c5144c3b3b60adf", "", "", "Demo Image Series #8 - Two Marios (Different Interlacing) (27-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "5c3a6d27c026f59a96b7af91e8b1bf26", "PlayAround - J.H.M.", "", "PlayAround Demo (PlayAround) (1982)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1573,7 +1573,7 @@ static const BSPF::array2D DefProps = {{ { "6fa0ac6943e33637d8e77df14962fbfc", "Imagic, Rob Fulop", "", "Cubicolor (1982) (Imagic) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "6fac680fc9a72e0e54255567c72afe34", "", "", "Superman (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "6fbd05b0ad65b2a261fa154b34328a7f", "", "", "Boardgame Demo (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fc0176ccf53d7bce249aeb56d59d414", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (1983) (Rainbow Vision) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "6fc0176ccf53d7bce249aeb56d59d414", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (1983) (Rainbow Vision) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "6fc27a9233fc69d28d3f190b4ff80f03", "", "", "UFO #6 (Charles Morgan) (Hack)", "Hack of Pepsi Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "6fc394dbf21cf541a60e3b3631b817f1", "Imagic, Bob Smith", "720020-2A, IA3611P", "Dragonfire (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "6fd7c7057eeab273b29c7aafc7429a96", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1885,7 +1885,7 @@ static const BSPF::array2D DefProps = {{ { "8556b42aa05f94bc29ff39c39b11bff4", "Atari, Craig Nelson - Sears", "CX2617 - 49-75183", "Backgammon (1979) (Atari)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 80", "", "", "", "", "", "", "", "" }, { "855a42078b14714bcfd490d2cf57e68d", "Atari, Suki Lee", "CX26113", "Miss Piggy's Wedding (1983) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8597f66dd37d9c855663804669d69d7a", "Tigervision, Warren Schwader", "7-003", "Threshold (1982) (Tigervision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85a4133f6dcf4180e36e70ad0fca0921", "CCE", "C-827", "Chopper Command (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "85a4133f6dcf4180e36e70ad0fca0921", "CCE", "C-827", "Chopper Command (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "85b1bca93e69f13905107cc802a02470", "Atari, Craig Nelson", "CX2617, CX2617P", "Backgammon (1979) (Atari) (PAL)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 80", "", "", "", "", "", "", "", "" }, { "85bbefb90e16bf386b304c1e9a1f6084", "Champ Games", "CG-02-P", "Conquest Of Mars (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "", "", "", "" }, { "85e48d68c8d802e3ba9d494a47d6e016", "", "", "Ship Demo (V 15) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1976,14 +1976,14 @@ static const BSPF::array2D DefProps = {{ { "8ccf63141a029603572d1056e772990e", "Thomas Jentzsch", "", "Centipede - Amiga Mouse Hack v1.4 (NTSC) (Full-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8cd26dcf249456fe4aeb8db42d49df74", "Atari - Imagineering, Dan Kichen", "CX26139", "Crossbow (1988) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8ce9126066f2ddd5173e9f1f9ce1494e", "Thomas Jentzsch", "", "Missile Command (Trakball) (2002) (TJ)", "Uses the Trakball Controller", "Homebrew", "", "", "", "", "", "", "", "TRAKBALL", "TRAKBALL", "", "", "", "", "YES", "", "", "", "", "" }, - { "8cf0d333bbe85b9549b1e6b1e2390b8d", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "8cf0d333bbe85b9549b1e6b1e2390b8d", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "8d00a38f4c8f8800f1c237215ac243fc", "", "", "3-D Corridor (Green) (30-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8d1e2a6d2885966e6d86717180938f87", "Thomas Jentzsch", "", "Missile Command (Amiga Mouse) (2002) (TJ)", "Uses Amiga Mouse Controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "8d8b7d7b983f75debbdaac651e814768", "", "", "Demo Image Series #15 - Three Marios (PAL) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8d9a06101ebb0f147936356e645309b8", "", "", "Grid Pattern Demo 2 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8da51e0c4b6b46f7619425119c7d018e", "Atari - Imagineering, David Lubar", "CX26183", "Sentinel (1991) (Atari)", "Uses the Light Gun Controller (left only)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8db152458abaef3cfa7a4e420ddbda59", "", "", "Keystone Kapers (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8df4be9ddc54ac363b13dc57ceaf161a", "Scott Stilphen", "", "Asteroids SS (Scott Stilphen) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "8df4be9ddc54ac363b13dc57ceaf161a", "Scott Stilphen", "", "Asteroids SS (Scott Stilphen) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "8e0ab801b1705a740b476b7f588c6d16", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8e42674972d6805068fc653e014370fd", "", "", "Skeleton (PAL) (15-10-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8e48ea6ea53709b98e6f4bd8aa018908", "CBS Electronics, Stuart Ross", "", "Wings (06-03-1983) (CBS Electronics) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, @@ -2333,7 +2333,7 @@ static const BSPF::array2D DefProps = {{ { "a94528ae05dd051894e945d4d2349b3b", "Genus", "", "River Raid (Genus)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a94b8ca630f467b574b614808d813919", "HES", "773-883", "2 Pak Special - Space Voyage, Fire Alert (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a9531c763077464307086ec9a1fd057d", "Atari, John Dunn - Sears", "CX2631 - 49-75152", "Superman (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a957dbe7d85ea89133346ad56fbda03f", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "a957dbe7d85ea89133346ad56fbda03f", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "a97733b0852ee3096300102cb0689175", "CCE", "C-834", "Fast Eddie (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a9784c24cddb33bd0d14442b97784f3d", "Thomas Jentzsch", "", "Omega Race DC (2003) (TJ) (Omega Race Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a98b649912b6ca19eaf5c2d2faf38562", "", "", "This Planet Sucks (Greg Troutman) (PAL) [!]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2444,7 +2444,7 @@ static const BSPF::array2D DefProps = {{ { "b1d1e083dc9e7d9a5dc1627869d2ade7", "CCE", "C-1004", "Mario's Bros. (1983) (CCE)", "AKA Mario Bros.", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "b1e2d5dc1353af6d56cd2fe7cfe75254", "Atari - Axlon, Steve DeFrisco", "CX26171", "MotoRodeo (1991) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "b1fd0b71de9f6eeb5143a97963674cb6", "", "", "Multi-Color Demo 7 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b227175699e372b8fe10ce243ad6dda5", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [a1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "b227175699e372b8fe10ce243ad6dda5", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [a1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "b23ebf427713dd0198b7ef47dbd07ef4", "Jone Yuan Telephonic Enterprise Co", "", "Sky Diver (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "b24f6a5820a4b7763a3d547e3e07441d", "CCE", "C-823", "Demon Attack (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "b25841173f058380b1771aacd5e7cdf3", "Bit Corporation", "PG205", "Dancing Plate (1982) (BitCorp)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2535,7 +2535,7 @@ static const BSPF::array2D DefProps = {{ { "b9b4612358a0b2c1b4d66bb146767306", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "b9d1e3be30b131324482345959aed5e5", "Activision - Boston Design Center, Rex Bradford", "", "Kabobber (07-25-1983) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "b9f6fa399b8cd386c235983ec45e4355", "Parker Brothers, John Emerson", "931511", "Action Force (1983) (Parker Bros) (PAL)", "AKA G.I. Joe - Cobra Strike", "", "", "", "", "", "", "", "", "", "", "", "01 55", "", "", "", "", "", "", "", "" }, - { "b9f9c0fed0db08c34346317f3957a945", "SuperVision", "405, 427, 806, 808, 813, 816", "Chopper Command (SuperVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "b9f9c0fed0db08c34346317f3957a945", "SuperVision", "405, 427, 806, 808, 813, 816", "Chopper Command (SuperVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "ba257438f8a78862a9e014d831143690", "U.S. Games Corporation - JWDA, Todd Marshall, Robin McDaniel, Henry Will IV", "VC2002", "Squeeze Box (1983) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ba317f83cdfcd58cbc65aac1ccb87bc5", "Thomas Jentzsch", "", "Jammed (2001) (XYPE) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ba3a17efd26db8b4f09c0cf7afdf84d1", "Activision, Larry Miller", "AX-021", "Spider Fighter (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2547,7 +2547,7 @@ static const BSPF::array2D DefProps = {{ { "baf4ce885aa281fd31711da9b9795485", "Atari, Douglas Neubauer", "CX26176", "Radar Lock (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "bb18189021d58362d9e4d317cd2e28b7", "Activision, David Crane - Ariola", "EAG-001, PAG-001, EAG-001-04B, EAG-001-04I - 711 001-715", "Dragster (1980) (Activision) (PAL) (4K)", "AKA Dragster Rennen", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "bb2b83fff97604f74ada565e0b5bae94", "Thomas Jentzsch", "", "Missile Control - Atari Mouse Hack v1.15 (PAL60) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "", "", "", "" }, - { "bb5049e4558daade0f87fed69a244c59", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [no copyright]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "bb5049e4558daade0f87fed69a244c59", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [no copyright]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "bb579404924c40ca378b4aff6ccf302d", "", "", "Lightbulb Lightens, The (PD) (Non Functional)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "bb6a5a2f7b67bee5d1f237f62f1e643f", "", "", "Demo Image Series #5 - Animegirl (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "bb745c893999b0efc96ea9029e3c62ca", "Play Video", "", "Planet Patrol (1982) (Play Video) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2621,7 +2621,7 @@ static const BSPF::array2D DefProps = {{ { "c1b038ce5cb6d85e956c5509b0e0d0d8", "", "", "Rotating Colors Demo 2 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c1b1049b88bcd98437d8872d1d62ba31", "", "", "Demo Image Series #4 - Donald (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c1b7aeabc3ec41556d924c8372a9ba5b", "Atari, Robert C. Polaro", "", "Dukes of Hazard (1980) (Atari) (Prototype)", "AKA Stunt Cycle", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1cb228470a87beb5f36e90ac745da26", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "c1cb228470a87beb5f36e90ac745da26", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "c1e6e4e7ef5f146388a090f1c469a2fa", "Bomb - Onbase", "CA283", "Z-Tack (1983) (Bomb)", "AKA Base Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c1f209d80f0624dada5866ce05dd3399", "Telegames", "", "Deadly Discs (1988) (Telegames) (PAL)", "AKA TRON - Deadly Discs", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c1fdd44efda916414be3527a47752c75", "Parker Brothers, John Emerson", "PB5920", "G.I. Joe - Cobra Strike (1983) (Parker Bros)", "Uses the Paddle (left) and Joystick (right) Controllers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2640,7 +2640,7 @@ static const BSPF::array2D DefProps = {{ { "c2a37f1c7603c5fd97df47d6c562abfa", "Roger Williams", "", "Bar-Score Demo (2001) (Roger Williams)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c2b5c50ccb59816867036d7cf730bf75", "Salu - Avantgarde Software, Michael Buetepage", "460741", "Ghostbusters II (1992) (Salu) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "c2bcd8f2378c3779067f3a551f662bb7", "Activision, Bob Whitehead - Ariola", "EAG-002, EAG-002-04I, PAG-002 - 711 002-715", "Boxing (1980) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c2c7a11717e255593e54d0acaf653ee5", "", "", "Chopper Command (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "c2c7a11717e255593e54d0acaf653ee5", "", "", "Chopper Command (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "c2c8eb642765137bb82b83a65232961f", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (PAL) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c2dea467f4a02fa1f06d66f52bc12e6e", "Thomas Jentzsch", "", "Missile Command Atari Trak-Ball Hack v1.3 (NTSC) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c2fbef02b6eea37d8df3e91107f89950", "Champ Games", "CG-02-N", "Conquest Of Mars (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2771,7 +2771,7 @@ static const BSPF::array2D DefProps = {{ { "ccb56107ff0492232065b85493daa635", "Bit Corporation", "PG206 [demonstration cartridge]", "Bobby Is Going Home (1983) (BitCorp) (PAL) [demo cart]", "AKA Bobby geht Heim", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ccb5fa954fb76f09caae9a8c66462190", "Answer Software Corporation - TY Associates, Mike Wentz", "ASC1001", "Malagai (1983) (Answer Software)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "ccb807eb79b0ed0f5fdc460445ef703a", "", "", "Superman (Stunt_Cycle_Rules!) (Hack)", "Hack of Superman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ccbd36746ed4525821a8083b0d6d2c2c", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [no copyright]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "ccbd36746ed4525821a8083b0d6d2c2c", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [no copyright]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "cccfe9e9a11b1dad04beba46eefb7351", "", "", "Poker Squares (V0.25) (PAL) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ccd6ce508eee4b3fca67212833edcd85", "Otto Versand", "746422", "Hot Wave (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Ram It", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ccd92a269a4c2bd64d58cf2c0114423c", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675", "Ms. Pac-Man (09-20-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2904,7 +2904,7 @@ static const BSPF::array2D DefProps = {{ { "d541b20eae221a8ee321375e5971e766", "Arcadia Corporation, Stephen H. Landrum", "AR-4101", "Communist Mutants from Space (Preview) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "d54cd41ecfd59e4b72d2c086152b9a75", "Amiga - Video Soft - Michael K. Glass, Jerry Lawson", "1110", "Power Play Arcade Video Game Album (1983) (Amiga) (Prototype)", "3-D Ghost Attack only (3-D Genesis & 3-D Havoc missing in ROM)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "d5618464dbdc2981f6aa8b955828eeb4", "CCE", "C-829", "Megamania (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d563ba38151b8204c9f5c9f58e781455", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "d563ba38151b8204c9f5c9f58e781455", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "d573089534ca596e64efef474be7b6bc", "Parker Brothers, John Emerson", "931511", "Action Force (1983) (Parker Bros) (PAL) [a]", "AKA G.I. Joe - Cobra Strike", "", "", "", "", "", "", "", "", "", "", "", "01 55", "", "", "", "", "", "", "", "" }, { "d57913088e0c49ac3a716bf9837b284f", "Activision, Garry Kitchen", "EAZ-032", "Pressure Cooker (1983) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "d57eb282d7540051bc9b5427cf966f03", "Atari Troll", "", "Custer's Viagra (Atari Troll) (Hack)", "Hack of Custer's Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2972,7 +2972,7 @@ static const BSPF::array2D DefProps = {{ { "da4e3396aa2db3bd667f83a1cb9e4a36", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "da5096000db5fdaa8d02db57d9367998", "Digitel", "", "River Raid (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "da6465a34d2e44d26aa9a2a0cd1bce4d", "Absolute Entertainment, Alex DeMeo", "AG-041-04", "Title Match Pro Wrestling (1987) (Absolute) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da66d75e4b47fab99733529743f86f4f", "Digitel", "", "Chopper Command (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "da66d75e4b47fab99733529743f86f4f", "Digitel", "", "Chopper Command (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "da732c57697ad7d7af414998fa527e75", "Atari - Glenn Axworthy", "CX26129", "Midnight Magic (1986) (Atari) (PAL)", "AKA Pinball Wizard", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "" }, { "da79aad11572c80a96e261e4ac6392d0", "Salu - Ubi Soft, Dennis M. Kiss", "460673", "Pick 'n' Pile (1990) (Salu) (PAL)", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "PAL", "", "YES", "", "", "", "", "" }, { "da7a17dcdaa62d6971393c0a6faf202a", "", "", "Flag Capture (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -3020,7 +3020,7 @@ static const BSPF::array2D DefProps = {{ { "dd45e370aceff765f1e72c619efd4399", "Bit Corporation", "PG201", "Sea Monster (1982) (BitCorp)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "dd4f4e0fbd81762533e39e6f5b55bb3a", "Thomas Jentzsch", "", "Turbo WIP (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "dd7598b8bcb81590428900f71b720efb", "Xonox - K-Tel Software - Computer Magic", "99005, 6220, 6250", "Robin Hood (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd7884b4f93cab423ac471aa1935e3df", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "dd7884b4f93cab423ac471aa1935e3df", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "dd8a2124d4eda200df715c698a6ea887", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (3 of 3) (1982) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "dd92d6ad50976f881d86b52d38616118", "SpkSoft", "", "River Raid (SpkSoft) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "dda23757407c4e217f64962c87ad0c82", "Atari Freak 1", "", "Nitemare at Sunshine Bowl-a-Rama (Atari Freak 1) (Hack) [a]", "Hack of Pac-Man Jr.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -3046,7 +3046,7 @@ static const BSPF::array2D DefProps = {{ { "df12953b919844dad2070ed2e70c9fa2", "Amiga - Video Soft", "3135", "S.A.C. Alert (1983) (Amiga) (Prototype) (PAL)", "Uses Joyboard", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "df2745d585238780101df812d00b49f4", "Bit Corporation", "PG202", "Space Tunnel (1982) (BitCorp)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "df3e6a9b6927cf59b7afb626f6fd7eea", "", "", "Tuby Bird (208 in 1) (Unknown) (PAL)", "AKA Dolphin", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df40af244a8d68b492bfba9e97dea4d6", "Franklin Cruz", "", "Asteroids 2 (Franlin Cruz) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "2,10,b,h,1", "bd,be,c0,c1,80,c7" }, + { "df40af244a8d68b492bfba9e97dea4d6", "Franklin Cruz", "", "Asteroids 2 (Franlin Cruz) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "2", "66", "5,1,b,h,0", "bd,be,c0,c1,80,c7" }, { "df5cc5cccdc140eb7107f5b8adfacda1", "Cracker Jack Productions", "", "Lumberman (Cracker Jack) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "df62a658496ac98a3aa4a6ee5719c251", "Atari, Tom Reuterdahl - Sears", "CX2626 - 6-99829, 49-75116", "Miniature Golf (1979) (Atari)", "AKA Arcade Golf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "df6a28a89600affe36d94394ef597214", "Apollo - Games by Apollo, Dan Oliver", "AP-2002", "Space Cavern (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -3423,7 +3423,7 @@ static const BSPF::array2D DefProps = {{ { "f847fb8dba6c6d66d13724dbe5d95c4d", "Absolute Entertainment, David Crane", "AG-042-02, AG-042-04", "Skate Boardin' (1987) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "f8582bc6ca7046adb8e18164e8cecdbc", "", "", "Panda Chase (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "f8648d0c6ad1266434f6c485ff69ec40", "CCE", "", "Oink! (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8811d45a9935cca90c62f924712f8e6", "Jone Yuan Telephonic Enterprise Co", "", "Chopper Command (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "f8811d45a9935cca90c62f924712f8e6", "Jone Yuan Telephonic Enterprise Co", "", "Chopper Command (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "f8b2a6a4d73ebff10d805a9b59041986", "Activision, Larry Kaplan - Ariola", "EAX-006, PAX-006 - 771 006-720", "Bridge (1980) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "f8bfd99163d2c4ec688357786e6fba28", "", "", "Eckhard Stolberg's Scrolling Text Demo 2 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "f8c1c4a41303bd40b0d6c81bfaf8573b", "HES", "773-891", "2 Pak Special - Dungeon Master, Creature Strike (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -3532,7 +3532,7 @@ static const BSPF::array2D DefProps = {{ { "ff87d58125ae517eb7b09a0475a1ccdc", "", "", "SCSIcide (Score Hack 1) (24-02-2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ffb1cd548563158ce33f9d10268187e7", "Erik Eid", "", "Euchre (Beta) (NTSC) (12-09-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ffc0ff4305dd46b4b459885bd1818e2e", "Barry Laws Jr.", "", "Star Wars - The Battle of Alderaan (Star Strike Hack)", "Hack of Star Strike (Mattel)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ffdc0eb3543404eb4c353fbdddfa33b6", "CCE", "C-827", "Chopper Command (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "3,1,b,b,1", "ec,ee,f0,ed,ef,f1,e0,eb" }, + { "ffdc0eb3543404eb4c353fbdddfa33b6", "CCE", "C-827", "Chopper Command (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "2", "4", "6,0,b,b,0", "ec,ee,f0,ed,ef,f1,e0,eb" }, { "ffe51989ba6da2c6ae5a12d277862e16", "Atari - Sears", "CX2627 - 6-99841", "Human Cannonball (1979) (Atari) (4K)", "AKA Cannon Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ffebb0070689b9d322687edd9c0a2bae", "", "", "Spitfire Attack (1983) (Milton Bradley) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" } }}; diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx index e3544930e..762c8f94f 100644 --- a/src/emucore/EventHandler.cxx +++ b/src/emucore/EventHandler.cxx @@ -718,11 +718,12 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) if(pressed && !repeated) myOSystem.frameBuffer().tiaSurface().saveSnapShot(); return; + // Debug only, TODO: remove! case Event::ShowScore: if (pressed) { ostringstream msg; - msg << "Score: " << myOSystem.highScore().score(); + msg << "Score: " << myOSystem.highScores().score(); myOSystem.frameBuffer().showMessage(msg.str()); } return; @@ -731,11 +732,11 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) if (pressed) { ostringstream msg; - msg << "Variation: " << myOSystem.highScore().variation(); + msg << "Variation: " << myOSystem.highScores().variation(); myOSystem.frameBuffer().showMessage(msg.str()); } return; - + case Event::ExitMode: // Special handling for Escape key // Basically, exit whichever mode we're currently in diff --git a/src/emucore/OSystem.hxx b/src/emucore/OSystem.hxx index f29b46702..2524d5acc 100644 --- a/src/emucore/OSystem.hxx +++ b/src/emucore/OSystem.hxx @@ -154,7 +154,7 @@ class OSystem @return The highscore manager object */ - HighScoreManager& highScore() const { return *myHighScoreManager; } + HighScoreManager& highScores() const { return *myHighScoreManager; } /** Get the state manager of the system. diff --git a/src/emucore/stella.pro b/src/emucore/stella.pro index d9293939d..20467fbb1 100644 --- a/src/emucore/stella.pro +++ b/src/emucore/stella.pro @@ -1511,7 +1511,7 @@ "Cart.Name" "Chopper Command (1982) (Activision) (PAL)" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -2223,7 +2223,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -2398,7 +2398,7 @@ "Cart.Note" "2600 Screen Search Console" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -3160,7 +3160,7 @@ "Cart.Name" "Chopper Command (1982) (Activision) (16K)" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -3579,7 +3579,7 @@ "Cart.Note" "AKA Chopper Command" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -3907,7 +3907,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -4296,7 +4296,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -4765,7 +4765,7 @@ "Display.Format" "PAL" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -5139,7 +5139,7 @@ "Cart.Note" "AKA Chopper Command" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -5316,7 +5316,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -6072,7 +6072,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -6933,7 +6933,7 @@ "Cart.Name" "Chopper Command (1982) (Activision) (8K)" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -7735,7 +7735,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -7773,7 +7773,7 @@ "Cart.Note" "AKA Chopper Command" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -9524,7 +9524,7 @@ "Cart.Note" "AKA Chopper Command" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -11436,7 +11436,7 @@ "Cart.Name" "Chopper Command (1983) (CCE)" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -12001,7 +12001,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -12044,7 +12044,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -14152,7 +14152,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -14838,7 +14838,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -15416,7 +15416,7 @@ "Cart.Name" "Chopper Command (SuperVision) (PAL)" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -15493,7 +15493,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -15933,7 +15933,7 @@ "Cart.Name" "Chopper Command (1982) (Activision)" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -16048,7 +16048,7 @@ "Cart.Rarity" "Hack" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -16886,7 +16886,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -17705,7 +17705,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -18097,7 +18097,7 @@ "Cart.Name" "Chopper Command (1983) (Digitel)" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -18397,7 +18397,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -18557,7 +18557,7 @@ "Display.Phosphor" "YES" "Cart.Players" "2" "Cart.Variations" "66" -"Cart.Formats" "2,10,b,h,1" +"Cart.Formats" "5,1,b,h,0" "Cart.Addresses" "bd,be,c0,c1,80,c7" "" @@ -20843,7 +20843,7 @@ "Cart.Rarity" "Hack" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" @@ -21511,7 +21511,7 @@ "Cart.Name" "Chopper Command (1983) (CCE) [a]" "Cart.Players" "2" "Cart.Variations" "4" -"Cart.Formats" "3,1,b,b,1" +"Cart.Formats" "6,0,b,b,0" "Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb" "" diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 4e58eed8b..a88615606 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -40,6 +40,8 @@ #include "TIA.hxx" #include "Switches.hxx" #include "AudioSettings.hxx" +#include "HighScoreManager.hxx" +#include "bspf.hxx" #include "GameInfoDialog.hxx" @@ -375,18 +377,19 @@ GameInfoDialog::GameInfoDialog( EditableWidget::TextFilter fAddr = [](char c) { return (c >= 'a' && c <= 'f') || (c >= '0' && c <= '9'); }; - int rwidth = font.getStringWidth("FF") + 4; + int rwidth = font.getStringWidth("F") + 4; myPlayersAddressLabel = new StaticTextWidget(myTab, font, myPlayers->getRight() + 16, ypos + 1, "Address "); myPlayersAddress = new EditTextWidget(myTab, font, myPlayersAddressLabel->getRight(), ypos - 1, awidth, lineHeight); myPlayersAddress->setTextFilter(fAddr); wid.push_back(myPlayersAddress); - myPlayersAddressVal = new EditTextWidget(myTab, font, myPlayersAddress->getRight() + 2, ypos - 1, rwidth, lineHeight, "56"); + myPlayersAddressVal = new EditTextWidget(myTab, font, myPlayersAddress->getRight() + 2, ypos - 1, rwidth, lineHeight); myPlayersAddressVal->setEditable(false); ypos += lineHeight + VGAP; fwidth = font.getStringWidth("255") + 5; + rwidth = font.getStringWidth("FFF") + 4; myVariationsLabel = new StaticTextWidget(myTab, font, xpos, ypos + 1, lwidth, fontHeight, "Variations"); myVariations = new EditTextWidget(myTab, font, xpos + lwidth, ypos - 1, fwidth, lineHeight); wid.push_back(myVariations); @@ -395,7 +398,7 @@ GameInfoDialog::GameInfoDialog( myVarAddress = new EditTextWidget(myTab, font, myVarAddressLabel->getRight(), ypos - 1, awidth, lineHeight); myVarAddress->setTextFilter(fAddr); wid.push_back(myVarAddress); - myVarAddressVal = new EditTextWidget(myTab, font, myVarAddress->getRight() + 2, ypos - 1, rwidth, lineHeight, "56"); + myVarAddressVal = new EditTextWidget(myTab, font, myVarAddress->getRight() + 2, ypos - 1, rwidth, lineHeight); myVarAddressVal->setEditable(false); myVarFormat = new CheckboxWidget(myTab, font, myVarAddressVal->getRight() + 16, ypos + 1, "BCD", kVarFormatChanged); @@ -424,15 +427,16 @@ GameInfoDialog::GameInfoDialog( wid.push_back(myScoreDigits); items.clear(); + VarList::push_back(items, "0", "0"); VarList::push_back(items, "1", "1"); - VarList::push_back(items, "10", "10"); - VarList::push_back(items, "100", "100"); - pwidth = font.getStringWidth("100"); + VarList::push_back(items, "2", "2"); + VarList::push_back(items, "3", "3"); + pwidth = font.getStringWidth("0"); - myScoreMultLabel = new StaticTextWidget(myTab, font, myScoreDigits->getRight() + 20, ypos + 1, "Multiplier "); - myScoreMult = new PopUpWidget(myTab, font, myScoreMultLabel->getRight(), ypos, pwidth, lineHeight, + myTrailing0sLabel = new StaticTextWidget(myTab, font, myScoreDigits->getRight() + 20, ypos + 1, "0-Digits "); + myTrailing0s = new PopUpWidget(myTab, font, myTrailing0sLabel->getRight(), ypos, pwidth, lineHeight, items, "", 0, kScoreMultChanged); - wid.push_back(myScoreMult); + wid.push_back(myTrailing0s); myScoreFormat = new CheckboxWidget(myTab, font, myVarFormat->getLeft(), ypos + 1, "BCD", kScoreFormatChanged); wid.push_back(myScoreFormat); @@ -443,19 +447,19 @@ GameInfoDialog::GameInfoDialog( myP1Address0 = new EditTextWidget(myTab, font, myP1AddressLabel->getRight(), ypos - 1, awidth, lineHeight); myP1Address0->setTextFilter(fAddr); wid.push_back(myP1Address0); - myP1Address0Val = new EditTextWidget(myTab, font, myP1Address0->getRight() + 2, ypos - 1, rwidth, lineHeight, "12"); + myP1Address0Val = new EditTextWidget(myTab, font, myP1Address0->getRight() + 2, ypos - 1, rwidth, lineHeight); myP1Address0Val->setEditable(false); myP1Address1 = new EditTextWidget(myTab, font, myP1Address0Val->getRight() + 16, ypos - 1, awidth, lineHeight); myP1Address1->setTextFilter(fAddr); wid.push_back(myP1Address1); - myP1Address1Val = new EditTextWidget(myTab, font, myP1Address1->getRight() + 2, ypos - 1, rwidth, lineHeight, "34"); + myP1Address1Val = new EditTextWidget(myTab, font, myP1Address1->getRight() + 2, ypos - 1, rwidth, lineHeight); myP1Address1Val->setEditable(false); myP1Address2 = new EditTextWidget(myTab, font, myP1Address1Val->getRight() + 16, ypos - 1, awidth, lineHeight); myP1Address2->setTextFilter(fAddr); wid.push_back(myP1Address2); - myP1Address2Val = new EditTextWidget(myTab, font, myP1Address2->getRight() + 2, ypos - 1, rwidth, lineHeight, "56"); + myP1Address2Val = new EditTextWidget(myTab, font, myP1Address2->getRight() + 2, ypos - 1, rwidth, lineHeight); myP1Address2Val->setEditable(false); ypos += lineHeight + VGAP; @@ -464,19 +468,19 @@ GameInfoDialog::GameInfoDialog( myP2Address0 = new EditTextWidget(myTab, font, myP2AddressLabel->getRight(), ypos - 1, awidth, lineHeight); myP2Address0->setTextFilter(fAddr); wid.push_back(myP2Address0); - myP2Address0Val = new EditTextWidget(myTab, font, myP2Address0->getRight() + 2, ypos - 1, rwidth, lineHeight, "12"); + myP2Address0Val = new EditTextWidget(myTab, font, myP2Address0->getRight() + 2, ypos - 1, rwidth, lineHeight); myP2Address0Val->setEditable(false); myP2Address1 = new EditTextWidget(myTab, font, myP2Address0Val->getRight() + 16, ypos - 1, awidth, lineHeight); myP2Address1->setTextFilter(fAddr); wid.push_back(myP2Address1); - myP2Address1Val = new EditTextWidget(myTab, font, myP2Address1->getRight() + 2, ypos - 1, rwidth, lineHeight, "34"); + myP2Address1Val = new EditTextWidget(myTab, font, myP2Address1->getRight() + 2, ypos - 1, rwidth, lineHeight); myP2Address1Val->setEditable(false); myP2Address2 = new EditTextWidget(myTab, font, myP2Address1Val->getRight() + 16, ypos - 1, awidth, lineHeight); myP2Address2->setTextFilter(fAddr); wid.push_back(myP2Address2); - myP2Address2Val = new EditTextWidget(myTab, font, myP2Address2->getRight() + 2, ypos - 1, rwidth, lineHeight, "56"); + myP2Address2Val = new EditTextWidget(myTab, font, myP2Address2->getRight() + 2, ypos - 1, rwidth, lineHeight); myP2Address2Val->setEditable(false); ypos += lineHeight + VGAP; @@ -485,19 +489,19 @@ GameInfoDialog::GameInfoDialog( myP3Address0 = new EditTextWidget(myTab, font, myP3AddressLabel->getRight(), ypos - 1, awidth, lineHeight); myP3Address0->setTextFilter(fAddr); wid.push_back(myP3Address0); - myP3Address0Val = new EditTextWidget(myTab, font, myP3Address0->getRight() + 2, ypos - 1, rwidth, lineHeight, ""); + myP3Address0Val = new EditTextWidget(myTab, font, myP3Address0->getRight() + 2, ypos - 1, rwidth, lineHeight); myP3Address0Val->setEditable(false); myP3Address1 = new EditTextWidget(myTab, font, myP3Address0Val->getRight() + 16, ypos - 1, awidth, lineHeight); myP3Address1->setTextFilter(fAddr); wid.push_back(myP3Address1); - myP3Address1Val = new EditTextWidget(myTab, font, myP3Address1->getRight() + 2, ypos - 1, rwidth, lineHeight, ""); + myP3Address1Val = new EditTextWidget(myTab, font, myP3Address1->getRight() + 2, ypos - 1, rwidth, lineHeight); myP3Address1Val->setEditable(false); myP3Address2 = new EditTextWidget(myTab, font, myP3Address1Val->getRight() + 16, ypos - 1, awidth, lineHeight); myP3Address2->setTextFilter(fAddr); wid.push_back(myP3Address2); - myP3Address2Val = new EditTextWidget(myTab, font, myP3Address2->getRight() + 2, ypos - 1, rwidth, lineHeight, ""); + myP3Address2Val = new EditTextWidget(myTab, font, myP3Address2->getRight() + 2, ypos - 1, rwidth, lineHeight); myP3Address2Val->setEditable(false); ypos += lineHeight + VGAP; @@ -506,37 +510,22 @@ GameInfoDialog::GameInfoDialog( myP4Address0 = new EditTextWidget(myTab, font, myP4AddressLabel->getRight(), ypos - 1, awidth, lineHeight); myP4Address0->setTextFilter(fAddr); wid.push_back(myP4Address0); - myP4Address0Val = new EditTextWidget(myTab, font, myP4Address0->getRight() + 2, ypos - 1, rwidth, lineHeight, ""); + myP4Address0Val = new EditTextWidget(myTab, font, myP4Address0->getRight() + 2, ypos - 1, rwidth, lineHeight); myP4Address0Val->setEditable(false); myP4Address1 = new EditTextWidget(myTab, font, myP4Address0Val->getRight() + 16, ypos - 1, awidth, lineHeight); myP4Address1->setTextFilter(fAddr); wid.push_back(myP4Address1); - myP4Address1Val = new EditTextWidget(myTab, font, myP4Address1->getRight() + 2, ypos - 1, rwidth, lineHeight, ""); + myP4Address1Val = new EditTextWidget(myTab, font, myP4Address1->getRight() + 2, ypos - 1, rwidth, lineHeight); myP4Address1Val->setEditable(false); myP4Address2 = new EditTextWidget(myTab, font, myP4Address1Val->getRight() + 16, ypos - 1, awidth, lineHeight); myP4Address2->setTextFilter(fAddr); wid.push_back(myP4Address2); - myP4Address2Val = new EditTextWidget(myTab, font, myP4Address2->getRight() + 2, ypos - 1, rwidth, lineHeight, ""); + myP4Address2Val = new EditTextWidget(myTab, font, myP4Address2->getRight() + 2, ypos - 1, rwidth, lineHeight); myP4Address2Val->setEditable(false); - - /*ypos += lineHeight + VGAP; - fwidth = _w - lwidth - HBORDER * 2 - 22; - new StaticTextWidget(myTab, font, xpos, ypos + 1, lwidth, fontHeight, "Formats"); - myFormats = new EditTextWidget(myTab, font, xpos + lwidth, ypos - 1, - fwidth, lineHeight); - wid.push_back(myVariations); - - ypos += lineHeight + VGAP; - new StaticTextWidget(myTab, font, xpos, ypos + 1, lwidth, fontHeight, "Addresses"); - myAddresses = new EditTextWidget(myTab, font, xpos + lwidth, ypos - 1, - fwidth, lineHeight); - wid.push_back(myVariations);*/ - - - // Add items for tab 3 + // Add items for tab 4 addToFocusList(wid, myTab, tabID); ////////////////////////////////////////////////////////////////////////////// @@ -729,14 +718,35 @@ void GameInfoDialog::loadCartridgeProperties(const Properties& props) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void GameInfoDialog::loadHighScoresProperties(const Properties& props) { - //bool enable = instance().hasConsole() && instance().console().par + HighScoreManager::Formats formats; + HighScoreManager::Addresses addresses; + bool enable = instance().highScores().getFormats(formats); - myHighScores->setState(true); - myPlayers->setSelected(props.get(PropType::Cart_Players)); - myVariations->setText(props.get(PropType::Cart_Variations)); + enable &= instance().highScores().getAddresses(addresses); // make compiler happy + myHighScores->setState(enable); + if (enable) + { + ostringstream ss; + myPlayers->setSelected(instance().highScores().numPlayers()); + myVariations->setText(std::to_string(instance().highScores().numVariations())); + + myScoreDigits->setSelected(formats.numDigits); + myTrailing0s->setSelected(formats.trailingZeroes); + myScoreFormat->setState(formats.scoreBCD); + myVarFormat->setState(formats.varBCD); + myVarZeroBased->setState(formats.varZeroBased); + + ss.str(""); + ss << std::hex << std::right << std::setw(4) << std::setfill('0') << addresses.playerAddr; + myPlayersAddress->setText(ss.str()); + + ss.str(""); + ss << std::hex << std::right << std::setw(4) << std::setfill('0') << addresses.varAddr; + myVarAddress->setText(ss.str()); + } handleHighScoresWidgets(); } @@ -956,7 +966,7 @@ void GameInfoDialog::handleHighScoresWidgets() int players = myPlayers->getSelected() + 1; bool enablePlayers = enable && players > 1; bool enableVars = enable && myVariations->getText() > "1"; - int numAddr = (myScoreDigits->getSelected() - myScoreMult->getSelected() + 2) / 2; + int numAddr = instance().highScores().numAddrBytes(myScoreDigits->getSelected() + 1, myTrailing0s->getSelected()); bool enable1 = enable && numAddr >= 2; bool enable2 = enable && numAddr >= 3; @@ -981,8 +991,8 @@ void GameInfoDialog::handleHighScoresWidgets() myScoreDigitsLabel->setEnabled(enable); myScoreDigits->setEnabled(enable); myScoreFormat->setEnabled(enable); - myScoreMultLabel->setEnabled(enable); - myScoreMult->setEnabled(enable); + myTrailing0sLabel->setEnabled(enable); + myTrailing0s->setEnabled(enable); myP1AddressLabel->setEnabled(enable); myP1Address0->setEnabled(enable); @@ -1034,6 +1044,23 @@ void GameInfoDialog::handleHighScoresWidgets() myP4Address2->setEnabled(enable2); myP4Address2->setEditable(enable2); myP4Address2Val->setEnabled(enable2); + + if (instance().hasConsole()) + { + System& system = instance().console().system(); + uInt16 addr; + uInt8 val; + ostringstream ss; + + addr = stoi(myPlayersAddress->getText(), nullptr, 16); + myPlayersAddressVal->setText(std::to_string(system.peek(addr))); + addr = stoi(myVarAddress->getText(), nullptr, 16); + + val = system.peek(addr) + (myVarZeroBased->getState() ? 1u : 0u); + ss.str(""); + ss << std::dec << val; // std::dec << std::right << std::setw(3) << std::setfill(' ') << val; + myVarAddressVal->setText(ss.str()); + } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/gui/GameInfoDialog.hxx b/src/gui/GameInfoDialog.hxx index bf32707aa..ae4850c7a 100644 --- a/src/gui/GameInfoDialog.hxx +++ b/src/gui/GameInfoDialog.hxx @@ -124,8 +124,8 @@ class GameInfoDialog : public Dialog, public CommandSender StaticTextWidget* myScoresLabel{ nullptr }; StaticTextWidget* myScoreDigitsLabel{ nullptr }; PopUpWidget* myScoreDigits{nullptr}; - StaticTextWidget* myScoreMultLabel{ nullptr }; - PopUpWidget* myScoreMult{nullptr}; + StaticTextWidget* myTrailing0sLabel{ nullptr }; + PopUpWidget* myTrailing0s{nullptr}; CheckboxWidget* myScoreFormat{nullptr}; StaticTextWidget* myP1AddressLabel{nullptr}; EditTextWidget* myP1Address0{nullptr};