From 03c533e0b9e7d8e29eeb391aac19b614b342c3e8 Mon Sep 17 00:00:00 2001 From: stephena Date: Fri, 8 Jun 2007 12:36:52 +0000 Subject: [PATCH] Added bankswitch autodetection for UA Limited (UA), CommaVid (CV) and Activision (FE) carts. Removed most of the pre-defined bankswitching types from the internal database, since auto-detection is now quite accurate. There are only 6 entries out of 2722 where the type needs to be overridden; not bad, I think :) Testing is welcome, because I may have introduced some minor regressions. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1320 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba --- stella/src/emucore/Cart.cxx | 88 ++++++++++++++++++++++++++++----- stella/src/emucore/Cart.hxx | 31 ++++++++++-- stella/src/emucore/DefProps.hxx | 30 +++++------ stella/src/emucore/stella.pro | 17 +------ 4 files changed, 121 insertions(+), 45 deletions(-) diff --git a/stella/src/emucore/Cart.cxx b/stella/src/emucore/Cart.cxx index 38aedb2da..f1d0ba9bd 100644 --- a/stella/src/emucore/Cart.cxx +++ b/stella/src/emucore/Cart.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: Cart.cxx,v 1.31 2007-01-14 16:17:51 stephena Exp $ +// $Id: Cart.cxx,v 1.32 2007-06-08 12:36:51 stephena Exp $ //============================================================================ #include @@ -181,16 +181,20 @@ string Cartridge::autodetectType(const uInt8* image, uInt32 size) else if((size == 2048) || (size == 4096 && memcmp(image, image + 2048, 2048) == 0)) { - // TODO - autodetect CV - type = "2K"; + if(isProbablyCV(image, size)) + type = "CV"; + else + type = "2K"; } else if(size == 4096) { - type = "4K"; + if(isProbablyCV(image, size)) + type = "CV"; + else + type = "4K"; } else if(size == 8192) // 8K { - // TODO - autodetect FE and UA, probably not possible if(isProbablySC(image, size)) type = "F8SC"; else if(memcmp(image, image + 4096, 4096) == 0) @@ -199,6 +203,10 @@ string Cartridge::autodetectType(const uInt8* image, uInt32 size) type = "E0"; else if(isProbably3F(image, size)) type = isProbably3E(image, size) ? "3E" : "3F"; + else if(isProbablyUA(image, size)) + type = "UA"; + else if(isProbablyFE(image, size)) + type = "FE"; else type = "F8"; } @@ -262,15 +270,22 @@ string Cartridge::autodetectType(const uInt8* image, uInt32 size) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int Cartridge::searchForBytes(const uInt8* image, uInt32 size, uInt8 byte1, uInt8 byte2) +int Cartridge::searchForBytes(const uInt8* image, uInt32 imagesize, + const uInt8* signature, uInt32 sigsize) { uInt32 count = 0; - for(uInt32 i = 0; i < size - 1; ++i) + for(uInt32 i = 0; i < imagesize - sigsize; ++i) { - if((image[i] == byte1) && (image[i + 1] == byte2)) + uInt32 matches = 0; + for(uInt32 j = 0; j < sigsize; ++j) { - ++count; + if(image[i+j] == signature[j]) + ++matches; + else + break; } + if(matches == sigsize) + ++count; } return count; @@ -298,13 +313,20 @@ bool Cartridge::isProbablySC(const uInt8* image, uInt32 size) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool Cartridge::isProbably3F(const uInt8* image, uInt32 size) { - return (searchForBytes(image, size, 0x85, 0x3F) > 2); + // 3F cart bankswitching is triggered by storing the bank number + // in address 3F using 'STA $3F' + // We expect it will be present at least 2 times, since there are + // at least two banks + uInt8 signature[] = { 0x85, 0x3F }; // STA $3F + return searchForBytes(image, size, signature, 2) > 2; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool Cartridge::isProbably3E(const uInt8* image, uInt32 size) { - return (searchForBytes(image, size, 0x85, 0x3E) > 2); + // TODO - fix this one, once I find a test ROM + uInt8 signature[] = { 0x85, 0x3E }; + return searchForBytes(image, size, signature, 2) > 2; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -367,6 +389,50 @@ bool Cartridge::isProbablyE7(const uInt8* image, uInt32 size) return (count1 > 0 || count2 > 0); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool Cartridge::isProbablyUA(const uInt8* image, uInt32 size) +{ + // UA cart bankswitching switches to bank 1 by accessing address 0x240 + // using 'STA $240' + uInt8 signature[] = { 0x8D, 0x40, 0x02 }; // STA $240 + return searchForBytes(image, size, signature, 3) > 0; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool Cartridge::isProbablyCV(const uInt8* image, uInt32 size) +{ + // CV RAM access occurs at addresses $f3ff and $f400 + // These signatures are attributed to the MESS project + uInt8 signature[2][3] = { + { 0x9D, 0xFF, 0xF3 }, // STA $F3FF + { 0x99, 0x00, 0xF4 } // STA $F400 + }; + if(searchForBytes(image, size, signature[0], 3) > 0) + return true; + else + return searchForBytes(image, size, signature[1], 3) > 0; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool Cartridge::isProbablyFE(const uInt8* image, uInt32 size) +{ + // FE bankswitching is very weird, but always seems to include a + // 'JSR $xxxx' + // These signatures are attributed to the MESS project + uInt8 signature[4][5] = { + { 0x20, 0x00, 0xD0, 0xC6, 0xC5 }, // JSR $D000; DEC $C5 + { 0x20, 0xC3, 0xF8, 0xA5, 0x82 }, // JSR $F8C3; LDA $82 + { 0xD0, 0xFB, 0x20, 0x73, 0xFE }, // BNE $FB; JSR $FE73 + { 0x20, 0x00, 0xF0, 0x84, 0xD6 } // JSR $F000; STY $D6 + }; + for(uInt32 i = 0; i < 4; ++i) + { + if(searchForBytes(image, size, signature[i], 5) > 0) + return true; + } + return false; +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge::Cartridge(const Cartridge&) { diff --git a/stella/src/emucore/Cart.hxx b/stella/src/emucore/Cart.hxx index 4cae11308..718eb1a9a 100644 --- a/stella/src/emucore/Cart.hxx +++ b/stella/src/emucore/Cart.hxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: Cart.hxx,v 1.17 2007-01-14 16:17:52 stephena Exp $ +// $Id: Cart.hxx,v 1.18 2007-06-08 12:36:51 stephena Exp $ //============================================================================ #ifndef CARTRIDGE_HXX @@ -33,7 +33,7 @@ class Settings; game and handles any bankswitching performed by the cartridge. @author Bradford W. Mott - @version $Id: Cart.hxx,v 1.17 2007-01-14 16:17:52 stephena Exp $ + @version $Id: Cart.hxx,v 1.18 2007-06-08 12:36:51 stephena Exp $ */ class Cartridge : public Device { @@ -134,9 +134,17 @@ class Cartridge : public Device static string autodetectType(const uInt8* image, uInt32 size); /** - Utility method used by isProbably3F and isProbably3E + Search the image for the specified byte signature + + @param image A pointer to the ROM image + @param imagesize The size of the ROM image + @param signature The byte sequence to search for + @param sigsize The number of bytes in the signature + + @return The number of times the signature was found */ - static int searchForBytes(const uInt8* image, uInt32 size, uInt8 byte1, uInt8 byte2); + static int searchForBytes(const uInt8* image, uInt32 imagesize, + const uInt8* signature, uInt32 sigsize); /** Returns true if the image is probably a SuperChip (256 bytes RAM) @@ -163,6 +171,21 @@ class Cartridge : public Device */ static bool isProbablyE7(const uInt8* image, uInt32 size); + /** + Returns true if the image is probably a UA bankswitching cartridge + */ + static bool isProbablyUA(const uInt8* image, uInt32 size); + + /** + Returns true if the image is probably a CV bankswitching cartridge + */ + static bool isProbablyCV(const uInt8* image, uInt32 size); + + /** + Returns true if the image is probably an FE bankswitching cartridge + */ + static bool isProbablyFE(const uInt8* image, uInt32 size); + private: // Contains info about this cartridge in string format static string myAboutString; diff --git a/stella/src/emucore/DefProps.hxx b/stella/src/emucore/DefProps.hxx index bcd75a59b..95e173def 100644 --- a/stella/src/emucore/DefProps.hxx +++ b/stella/src/emucore/DefProps.hxx @@ -237,7 +237,7 @@ static const char* DefProps[2722][21] = { { "14a56b493a8d9d10e94a3e100362e3a2", "Hozer Video Games", "", "Gunfight 2600 - Early Play-kernel (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "14b1e30982962c72f426e2e763eb4274", "Atari", "", "Polo (Atari) (Prototype) [o1]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "14c2548712099c220964d7f044c59fd9", "", "", "Boing! (PD)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, - { "14d365bbfaac3d20c6119591f57acca4", "", "", "Video Life (CommaVid) [h1]", "", "", "", "CV", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, + { "14d365bbfaac3d20c6119591f57acca4", "", "", "Video Life (CommaVid) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, { "14dbb3686dd31964332dc2ef0c55cad0", "", "", "Demo Image Series #15 - Three Marios (PAL) (Non-Interleave) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "152c253478b009c275e18cd731b48561", "", "", "Quest (11-10-2002) (Chris Larkin)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "152e55f88af3ff647e75a3070b7b6842", "Activision", "", "Turmoil (198x) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -801,7 +801,7 @@ static const char* DefProps[2722][21] = { { "493e90602a4434b117c91c95e73828d1", "Telegames", "", "Lock 'N' Chase (1982) (Telegames) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "4947c9de2e28b2f5f3b0c40ce7e56d93", "", "", "3-D Corridor Demo 2 (29-03-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "49571b26f46620a85f93448359324c28", "", "", "Save Our Ship (PAL) [p1][!]", "", "", "", "", "", "", "", "", "", "", "", "NTSC", "38", "", "", "", "" }, - { "497f3d2970c43e5224be99f75e97cbbb", "CommaVid", "", "Video Life (CommaVid)", "", "Extremely Rare", "", "CV", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, + { "497f3d2970c43e5224be99f75e97cbbb", "CommaVid", "", "Video Life (CommaVid)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, { "4999b45be0ab5a85bac1b7c0e551542b", "CCE", "", "Double Dragon (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "4a1a0509bfc1015273a542dfe2040958", "Atari", "CX2628 / 6699842 / 4975117", "Bowling (1978) (Atari) [b1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "4a2fe6f0f6317f006fd6d4b34515448b", "", "", "Warring Worms (Midwest Classic Edition) (08-06-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -862,10 +862,10 @@ static const char* DefProps[2722][21] = { { "4e99ebd65a967cabf350db54405d577c", "Coleco", "2663", "Time Pilot (1983) (Coleco) [b1]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "4f0071946e80ca68edfdccbac86dcce0", "", "", "Virtual Pet Demo 1 (CRACKERS) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "4f2d47792a06da224ba996c489a87939", "", "", "Super Action Pak - Pitf,GPrix,LaserB,Barn (1988) (Activision) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f618c2429138e0280969193ed6c107e", "Activision", "AZ-028", "Robot Tank (1983) (Activision) [!]", "", "Rare", "", "FE", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4f618c2429138e0280969193ed6c107e", "Activision", "AZ-028", "Robot Tank (1983) (Activision) [!]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "4f634893d54e9cabe106e0ec0b7bdcdf", "Retroactive", "", "Qb (2.14) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, { "4f64d6d0694d9b7a1ed7b0cb0b83e759", "20th Century Fox", "11016", "Revenge of the Beefsteak Tomatoes (1983) (20th Century Fox) [!]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f6702c3ba6e0ee2e2868d054b00c064", "Activision", "AZ-033", "Space Shuttle - Journey Into Space (1983) (Activision) (PAL) [!]", "", "Rare", "", "FE", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4f6702c3ba6e0ee2e2868d054b00c064", "Activision", "AZ-033", "Space Shuttle - Journey Into Space (1983) (Activision) (PAL) [!]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "4f781f0476493c50dc578336f1132a67", "Atari", "CX2611", "Indy 500 (1978) (Atari) (PAL) [p1][o1][!]", "Uses Driving Controllers", "Uncommon", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "", "", "", "", "" }, { "4f82d8d78099dd71e8e169646e799d05", "Atari", "", "Miniature Golf (1979) (Atari) (PAL) [p1][o1][!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "4f89b897444e7c3b36aed469b8836839", "", "", "BMX Air Master (1989) (Atari) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1282,7 +1282,7 @@ static const char* DefProps[2722][21] = { { "76c88341017eae660efc6e49c4b6ab40", "", "", "Indiana Pitfall (Pitfall Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "76ee917d817ef9a654bc4783e0273ac4", "Starsoft", "", "Fox & Goat (Starsoft) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "76f53abbbf39a0063f24036d6ee0968a", "Mattel", "MT7045", "Bump 'N' Jump (1983) (Mattel)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76f66ce3b83d7a104a899b4b3354a2f2", "UA", "", "Cat Trax (1983) (UA)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "YES", "", "" }, + { "76f66ce3b83d7a104a899b4b3354a2f2", "UA Limited", "", "Cat Trax (1983) (UA)", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "YES", "", "" }, { "77057d9d14b99e465ea9e29783af0ae3", "Activision", "AG-001", "Dragster (1980) (Activision) [!]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "27", "", "", "", "" }, { "7732e4e4cc2644f163d6650ddcc9d9df", "HES", "", "2 Pak Black - Challenge, Surfing (HES) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "7778ac65d775a079f537e97cbdad541c", "Activision", "AX-021", "Spider Fighter (1983) (Activision) [p1][!]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1463,7 +1463,7 @@ static const char* DefProps[2722][21] = { { "87bea777a34278d29b3b6029833c5422", "Tigervision / Thomas Jentzsch", "", "Polaris (1983) (Tigervision) (NTSC by Thomas Jentzsch)", "", "New Release (Video Format Conversion)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "87e79cd41ce136fd4f72cc6e2c161bee", "", "CX2675", "Ms. Pac-Man (1982) (Atari)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "NO" }, { "87f020daa98d0132e98e43db7d8fea7e", "20th Century Fox", "11001", "Worm War I (1982) (20th Century Fox) [!]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "883258dcd68cefc6cd4d40b1185116dc", "Activision", "AZ-030", "Decathlon (1983) (Activision) (PAL) [!]", "", "Rare", "", "FE", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "883258dcd68cefc6cd4d40b1185116dc", "Activision", "AZ-030", "Decathlon (1983) (Activision) (PAL) [!]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "885b2002fa9d27502d84968d4656c4ca", "CBS Electronics", "4L-2737", "Omega Race (1983) (CBS Electronics) [o1]", "Uses Booster Grip Controller; set right difficulty to 'A' to use Booster-Grip in both ports", "Uncommon", "", "", "", "A", "", "", "BOOSTER-GRIP", "BOOSTER-GRIP", "", "", "", "", "", "", "" }, { "8874b68751fd2ba6d3306a263ae57a7d", "Eric Mooney", "", "Invaders by Erik Mooney (Alpha 1) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8885d0ce11c5b40c3a8a8d9ed28cefef", "Atari", "CX2608 / 4975165", "Super Breakout (1978) (Atari) (PAL) [a1]", "Uses the Paddle Controllers (left only)", "Common", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, @@ -1499,7 +1499,7 @@ static const char* DefProps[2722][21] = { { "8b5b1e3a434ebbdc2c2a49dc68f46360", "", "2451", "Donkey Kong (1983) (CBS Electronics) (PAL) [a1][!]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8b7ca29a55432f886cee3d452fb00481", "Starpath", "AR-4201", "Sword of Saros (1983) (Starpath) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8b81af55cd2ef3c7444d6aec4e3a1c09", "", "", "Dark Mage [b1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, - { "8bbfd951c89cc09c148bfabdefa08bec", "UA Limited", "", "Pleiades (UA Limited)", "", "Prototype", "", "UA", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, + { "8bbfd951c89cc09c148bfabdefa08bec", "UA Limited", "", "Pleiades (UA Limited)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, { "8bc0d2052b4f259e7a50a7c771b45241", "Xonox", "", "Tomarc the Barbarian (1983) (Xonox)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "24", "", "", "", "" }, { "8bd8f65377023bdb7c5fcf46ddda5d31", "Activision", "AG-019", "Sky Jinks (1982) (Activision) [o1]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8bebac614571135933116045204f0f00", "", "", "Missile Command (CX-22 Trackball) (PAL) (2002) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, @@ -1684,7 +1684,7 @@ static const char* DefProps[2722][21] = { { "9efb4e1a15a6cdd286e4bcd7cd94b7b8", "20th Century Fox", "", "Planet of the Apes (20th Century Fox) (Prototype) [!]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "9f2d58dce1b81c6ba201ed103507c025", "", "", "Fu Kung! (V0.02) (2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "9f48eeb47836cf145a15771775f0767a", "Atari", "CX262", "Basic Programming (1978) (Atari)", "Uses Keypad Controllers", "Rare", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "YES", "", "" }, - { "9f59eddf9ba91a7d93bce7ee4b7693bc", "", "", "Montezuma's Revenge - Starring Panama Joe (PAL by Thomas Jentzsch).a26", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "", "" }, + { "9f59eddf9ba91a7d93bce7ee4b7693bc", "", "", "Montezuma's Revenge - Starring Panama Joe (PAL60 by Thomas Jentzsch).a26", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "", "" }, { "9f8fad4badcd7be61bbd2bcaeef3c58f", "Parker Bros", "PB5330", "Reactor (1982) (Parker Bros)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "9f901509f0474bf9760e6ebd80e629cd", "", "CX2623 / 99819 / 75125", "Home Run (1978) [o1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "9f93734c68f6479eb022cab40814142e", "", "", "Push (V0.07) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1822,7 +1822,7 @@ static const char* DefProps[2722][21] = { { "ac26d7d37248d1d8eac5eccacdbef8db", "", "", "Snail Against Squirrel (1983) (Bitcorp) (PAL) [p1][!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ac53b83e1b57a601eeae9d3ce1b4a458", "Retroactive", "", "Qb (2.15) (Retroactive) (NTSC)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, { "ac5f78bae0638cf3f2a0c8d07eb4df69", "", "", "Minesweeper (V.99) (Soren Gust) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac7c2260378975614192ca2bc3d20e0b", "Activision", "AZ-030", "Decathlon (1983) (Activision) [!]", "", "Rare", "", "FE", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ac7c2260378975614192ca2bc3d20e0b", "Activision", "AZ-030", "Decathlon (1983) (Activision) [!]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ac9adbd6de786a242e19d4bec527982b", "Activision", "AX-012", "Ice Hockey (1981) (Activision) (PAL) [!]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "aca09ffea77174b148b96b205109db4d", "Activision", "AG-007", "Tennis (1981) (Activision) [o1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "acaa27d214039d89d7031609aafa55c3", "", "", "Sprite Demo 6 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2003,7 +2003,7 @@ static const char* DefProps[2722][21] = { { "c00734a2233ef683d9b6e622ac97a5c8", "Atari", "CX26133", "A-Team, The (Atari) (Prototype) [!]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c00b65d1bae0aef6a1b5652c9c2156a1", "Atari", "CX2621", "Video Olympics (1978) (Atari) [o1]", "Uses the Paddle Controllers", "Common", "", "", "", "", "", "", "PADDLES", "PADDLES", "YES", "", "", "", "", "", "" }, { "c02e1afa0671e438fd526055c556d231", "", "", "A-Team, The (Atari) (Prototype) (PAL-60) [!]", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "", "" }, - { "c032c2bd7017fdfbba9a105ec50f800e", "Activision", "", "Thwocker (Activision) (Prototype) [!]", "", "Prototype", "", "FE", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c032c2bd7017fdfbba9a105ec50f800e", "Activision", "", "Thwocker (Activision) (Prototype) [!]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c033dc1d7b6fde41b9cadce9638909bb", "", "", "Skeleton (V1.1) (06-09-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c05f367fa4767ceb27abadf0066df7f4", "", "", "TomInv (31-07-2001) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c08d0cee43077d3055febb00e5745c1d", "", "", "Super Hit Pak - RRaid,GPrix,Fishing,SkyJ,Chckrs (Activision) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2110,7 +2110,7 @@ static const char* DefProps[2722][21] = { { "ca7abc774a2fa95014688bc0849eee47", "Atari", "CX26110", "Crystal Castles (1984) (Atari) (PAL) [!]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "cad982c9b45bc5eff34e4ea982d5f1ca", "", "", "Song (17-02-2003) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, { "cae8f83c06831ec7bb6a3c07e98e9342", "Colin Hughes", "", "Tetris 2600 (Colin Hughes) [o1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, - { "cb0b5b8458a13a074e1fe82d3c4e8f3c", "Activision", "AZ-028", "Robot Tank (1983) (Activision) (PAL) [b1]", "", "Rare", "", "FE", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cb0b5b8458a13a074e1fe82d3c4e8f3c", "Activision", "AZ-028", "Robot Tank (1983) (Activision) (PAL) [b1]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "cb24210dc86d92df97b38cf2a51782da", "Ariola", "VG-01", "Missile Control (AKA Raketen-Angriff) (Ariola) (PAL) [!]", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "cb4a7b507372c24f8b9390d22d54a918", "ITT", "", "Peter Penguin (Jagt auf Diamanten-Frisco) (ITT) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "cb8399dc0d409ff1f531ef86b3b34953", "", "", "Demo Image Series #12 - Luigi And Mario (01-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2153,7 +2153,7 @@ static const char* DefProps[2722][21] = { { "cda38714267978b9a8b0b24bee3529ae", "", "", "Space Instigators (V1.6) (17-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "cdb81bf33d830ee4ee0606ee99e84dba", "Starpath", "AR-4300", "Fireball (1982) (Starpath) (PAL)", "Uses the Paddle Controllers", "Rare", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, { "cdc1a5c61d7488eadc9aba36166b253d", "Retroactive", "", "Qb (V0.12) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, - { "cddabfd68363a76cd30bee4e8094c646", "CommaVid", "", "Magicard (CommaVid)", "Uses Keypad Controllers", "", "", "CV", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "24", "", "", "", "" }, + { "cddabfd68363a76cd30bee4e8094c646", "CommaVid", "", "Magicard (CommaVid)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "24", "", "", "", "" }, { "ce17325834bf8b0a0d0d8de08478d436", "", "", "Boring Freeway (Freeway Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ce243747bf34a2de366f846b3f4ca772", "Goliath", "", "Felix Return (Goliath) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "39", "256", "", "", "" }, { "ce4bbe11d682c15a490ae15a4a8716cf", "", "", "Okie Dokie (Older) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2222,7 +2222,7 @@ static const char* DefProps[2722][21] = { { "d34b933660e29c0a0a04004f15d7e160", "", "", "Multi-Color Demo 5 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "d36308387241e98f813646f346e7f9f7", "", "", "Ghostbuster 2 (PAL) (King Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, { "d39e29b03af3c28641084dd1528aae05", "Goliath-Funvision", "", "Spider Kong (AKA Karate) (Goliath-Funvision) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d3bb42228a6cd452c111c1932503cc03", "UA Limited", "", "Funky Fish (UA Limited)", "", "Prototype", "", "UA", "", "", "", "", "", "", "", "", "38", "", "YES", "", "" }, + { "d3bb42228a6cd452c111c1932503cc03", "UA Limited", "", "Funky Fish (UA Limited)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "38", "", "YES", "", "" }, { "d45ebf130ed9070ea8ebd56176e48a38", "Sega", "001-01", "Tac Scan (1983) (Sega) [!]", "Uses the Paddle Controllers (right only)", "Uncommon", "", "", "", "", "", "YES", "PADDLES", "PADDLES", "YES", "", "", "215", "YES", "", "" }, { "d47387658ed450db77c3f189b969cc00", "Playaround", "", "Westward Ho (Playground) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "d4806775693fcaaa24cf00fc00edcdf3", "Atari", "CX26140", "Desert Falcon (1987) (Atari) (PAL) [!]", "", "Common", "", "", "", "", "", "", "", "", "", "", "22", "", "", "", "" }, @@ -2603,7 +2603,7 @@ static const char* DefProps[2722][21] = { { "f5aa6bd10f662199c42e43863a30106c", "", "", "Music Kit (V1.0) - Song Player (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, { "f5d103a9ae36d1d4ee7eef657b75d2b3", "Starpath", "AR-4105", "Frogger Preview (1982) (Starpath)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "31", "", "", "", "" }, { "f613aad84d2163d6b197b220bfec1b7e", "", "", "X-Doom V.27 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f687ec4b69611a7f78bd69b8a567937a", "Activision", "AZ-028", "Robot Tank (1983) (Activision) (PAL) [!]", "", "Rare", "", "FE", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f687ec4b69611a7f78bd69b8a567937a", "Activision", "AZ-028", "Robot Tank (1983) (Activision) (PAL) [!]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "f69a39b215852a0c2764d2a923c1e463", "", "", "Move a Blue Blob Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "f69bb58b815a6bdca548fa4d5e0d5a75", "Atari", "", "Bowling (32-in-1) (Atari) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "f69d4fcf76942fcd9bdf3fd8fde790fb", "CCE", "", "Aquaventure (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "NO" }, @@ -2684,7 +2684,7 @@ static const char* DefProps[2722][21] = { { "fb91da78455d9b1606913fbf8c859772", "", "", "Split Screen (Ballblazer) Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "fb91dfc36cddaa54b09924ae8fd96199", "", "", "Frogger II - Threedeep! (1984) (Parker Bros) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" }, { "fbac6476e7b2b20d246202af81662c88", "Starpath", "AR-4400", "Dragonstomper Preview (1982) (Starpath) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fbb0151ea2108e33b2dbaae14a1831dd", "Activision / Thomas Jentzsch", "", "Robot Tank TV by Thomas Jentzsch (2 Joystick Hack)", "Uses two simultaneous Joystick Controllers, Hack of Robot Tank (Activision)", "New Release (Hack)", "", "FE", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fbb0151ea2108e33b2dbaae14a1831dd", "Activision / Thomas Jentzsch", "", "Robot Tank TV by Thomas Jentzsch (2 Joystick Hack)", "Uses two simultaneous Joystick Controllers, Hack of Robot Tank (Activision)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "fbb4f3debf48dc961b559384467f2057", "", "", "River Raid III (1985) (Digitel-Brazil) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "fbd6102e17a5c02c6e1911381b7203f9", "", "", "Star Fire - Warping!! (10-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "fbe554aa8f759226d251ba6b64a9cce4", "Atari", "CX2681", "Battlezone (1983) (Atari) (PAL) [!]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "NO" }, diff --git a/stella/src/emucore/stella.pro b/stella/src/emucore/stella.pro index 8390e9cef..08e080509 100644 --- a/stella/src/emucore/stella.pro +++ b/stella/src/emucore/stella.pro @@ -1370,7 +1370,6 @@ "Cartridge.MD5" "14d365bbfaac3d20c6119591f57acca4" "Cartridge.Name" "Video Life (CommaVid) [h1]" -"Cartridge.Type" "CV" "Display.Phosphor" "YES" "" @@ -4677,7 +4676,6 @@ "Cartridge.Manufacturer" "CommaVid" "Cartridge.Name" "Video Life (CommaVid)" "Cartridge.Rarity" "Extremely Rare" -"Cartridge.Type" "CV" "Display.Phosphor" "YES" "" @@ -5017,7 +5015,6 @@ "Cartridge.ModelNo" "AZ-028" "Cartridge.Name" "Robot Tank (1983) (Activision) [!]" "Cartridge.Rarity" "Rare" -"Cartridge.Type" "FE" "" "Cartridge.MD5" "4f2d47792a06da224ba996c489a87939" @@ -5047,7 +5044,6 @@ "Cartridge.ModelNo" "AZ-033" "Cartridge.Name" "Space Shuttle - Journey Into Space (1983) (Activision) (PAL) [!]" "Cartridge.Rarity" "Rare" -"Cartridge.Type" "FE" "" "Cartridge.MD5" "4f82d8d78099dd71e8e169646e799d05" @@ -7470,7 +7466,7 @@ "" "Cartridge.MD5" "76f66ce3b83d7a104a899b4b3354a2f2" -"Cartridge.Manufacturer" "UA" +"Cartridge.Manufacturer" "UA Limited" "Cartridge.Name" "Cat Trax (1983) (UA)" "Display.YStart" "30" "Display.Phosphor" "YES" @@ -8549,7 +8545,6 @@ "Cartridge.ModelNo" "AZ-030" "Cartridge.Name" "Decathlon (1983) (Activision) (PAL) [!]" "Cartridge.Rarity" "Rare" -"Cartridge.Type" "FE" "" "Cartridge.MD5" "87e79cd41ce136fd4f72cc6e2c161bee" @@ -8780,7 +8775,6 @@ "Cartridge.Manufacturer" "UA Limited" "Cartridge.Name" "Pleiades (UA Limited)" "Cartridge.Rarity" "Prototype" -"Cartridge.Type" "UA" "Display.Phosphor" "YES" "" @@ -9739,7 +9733,7 @@ "" "Cartridge.MD5" "9f59eddf9ba91a7d93bce7ee4b7693bc" -"Cartridge.Name" "Montezuma's Revenge - Starring Panama Joe (PAL by Thomas Jentzsch).a26" +"Cartridge.Name" "Montezuma's Revenge - Starring Panama Joe (PAL60 by Thomas Jentzsch).a26" "Display.Format" "PAL60" "" @@ -10630,7 +10624,6 @@ "Cartridge.ModelNo" "AZ-030" "Cartridge.Name" "Decathlon (1983) (Activision) [!]" "Cartridge.Rarity" "Rare" -"Cartridge.Type" "FE" "" "Cartridge.MD5" "ac5f78bae0638cf3f2a0c8d07eb4df69" @@ -11745,7 +11738,6 @@ "Cartridge.Manufacturer" "Activision" "Cartridge.Name" "Thwocker (Activision) (Prototype) [!]" "Cartridge.Rarity" "Prototype" -"Cartridge.Type" "FE" "" "Cartridge.MD5" "c126656df6badfa519cc63e681fb3596" @@ -12359,7 +12351,6 @@ "Cartridge.ModelNo" "AZ-028" "Cartridge.Name" "Robot Tank (1983) (Activision) (PAL) [b1]" "Cartridge.Rarity" "Rare" -"Cartridge.Type" "FE" "" "Cartridge.MD5" "cad982c9b45bc5eff34e4ea982d5f1ca" @@ -12596,7 +12587,6 @@ "Cartridge.Manufacturer" "CommaVid" "Cartridge.Name" "Magicard (CommaVid)" "Cartridge.Note" "Uses Keypad Controllers" -"Cartridge.Type" "CV" "Controller.Left" "KEYBOARD" "Controller.Right" "KEYBOARD" "Display.YStart" "24" @@ -12993,7 +12983,6 @@ "Cartridge.Manufacturer" "UA Limited" "Cartridge.Name" "Funky Fish (UA Limited)" "Cartridge.Rarity" "Prototype" -"Cartridge.Type" "UA" "Display.YStart" "38" "Display.Phosphor" "YES" "" @@ -15189,7 +15178,6 @@ "Cartridge.ModelNo" "AZ-028" "Cartridge.Name" "Robot Tank (1983) (Activision) (PAL) [!]" "Cartridge.Rarity" "Rare" -"Cartridge.Type" "FE" "" "Cartridge.MD5" "f613aad84d2163d6b197b220bfec1b7e" @@ -15661,7 +15649,6 @@ "Cartridge.Name" "Robot Tank TV by Thomas Jentzsch (2 Joystick Hack)" "Cartridge.Note" "Uses two simultaneous Joystick Controllers, Hack of Robot Tank (Activision)" "Cartridge.Rarity" "New Release (Hack)" -"Cartridge.Type" "FE" "" "Cartridge.MD5" "fbd6102e17a5c02c6e1911381b7203f9"