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
This commit is contained in:
stephena 2007-06-08 12:36:52 +00:00
parent 28345a3a43
commit 03c533e0b9
4 changed files with 121 additions and 45 deletions

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Cart.cxx,v 1.31 2007-01-14 16:17:51 stephena Exp $
// $Id: Cart.cxx,v 1.32 2007-06-08 12:36:51 stephena Exp $
//============================================================================
#include <cassert>
@ -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
if(isProbablyCV(image, size))
type = "CV";
else
type = "2K";
}
else if(size == 4096)
{
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&)
{

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Cart.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;

View File

@ -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" },

View File

@ -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"