separate properties for addresses and address formats

This commit is contained in:
thrust26 2020-02-08 10:30:02 +01:00
parent 4f100b0fce
commit 7bdc263699
4 changed files with 136 additions and 64 deletions

View File

@ -1176,57 +1176,76 @@ bool Console::parseAdresses(Int32& variation, Int32& player, Int32 scores[])
// n-times 82, ; score addresses player 1 in hex, high to low // n-times 82, ; score addresses player 1 in hex, high to low
// n-times 83, ; score addresses player 2 in hex, high to low // n-times 83, ; score addresses player 2 in hex, high to low
// ... // ...
// Formats:
// 2, ; score addresses per player
// 10, ; score multiplier
// b, ; score format (BCD, HEX)
// b, ; variation format (BCD, HEX)
// 0, ; add to variation
// Addresses
// n*v-times 82, ; score addresses player x in hex, high to low
// 80, ; variation address in hex
// 81, ; player address in hex
// ...
/* /*
Frogger Frogger
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "6" "Cart.Variations" "6"
"Cart.Addresses" "b,0,dd,e6,b,1,2,cc,ce,cd,cf" //"Cart.Addresses" "b,0,dd,e6,b,1,2,cc,ce,cd,cf"
"Cart.Formats" "2,1,b,b,0"
"Cart.Addresses" "cc,ce,cd,cf,dd,e6"
Chopper Command: Chopper Command:
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" //"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
Asteroids Asteroids
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" //"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
*/ */
// TODO:
// - player bits (Asteroids)
// - score swaps (Asteroids)
string formats = myProperties.get(PropType::Cart_Formats);
string addresses = myProperties.get(PropType::Cart_Addresses); string addresses = myProperties.get(PropType::Cart_Addresses);
char format; char scoreFormat;
char varFormat;
Int16 addr; Int16 addr;
Int32 varAdd, numScoreAddr, scoreMult; Int32 varAdd, numScoreAddr, scoreMult;
// Since istringstream swallows whitespace, we have to make the // Since istringstream swallows whitespace, we have to make the
// delimiters be spaces // delimiters be spaces
std::replace(formats.begin(), formats.end(), ',', ' ');
std::replace(formats.begin(), formats.end(), '|', ' ');
std::replace(addresses.begin(), addresses.end(), ',', ' '); std::replace(addresses.begin(), addresses.end(), ',', ' ');
std::replace(addresses.begin(), addresses.end(), '|', ' '); std::replace(addresses.begin(), addresses.end(), '|', ' ');
istringstream buf(addresses); istringstream addrBuf(addresses);
istringstream formatBuf(formats);
// 1. retrieve current variation (0..255) // 1. retrieve formats
if (!(buf >> format && buf >> varAdd && buf >> std::hex >> addr)) if (!(formatBuf >> numScoreAddr))
return false; numScoreAddr = 2;
if (!(formatBuf >> scoreMult))
variation = mySystem->peek(addr); scoreMult = 1;
if (format == 'b') if (!(formatBuf >> scoreFormat))
variation = (variation >> 4) * 10 + variation % 16; scoreFormat = 'b';
variation += varAdd; if (!(formatBuf >> varFormat))
variation = std::min(variation, numVariations()); varFormat = 'b';
if (!(formatBuf >> varAdd))
// 2. retrieve current player (0..3) varAdd = 0;
string playerFormat;
if (!(buf >> std::hex >> addr))
return false;
player = mySystem->peek(addr);
player = std::min(player, numPlayers());
// 3. retrieve current scores for all players
if (!(buf >> format && buf >> std::dec >> scoreMult && buf >> std::hex >> numScoreAddr))
return false;
// 2. retrieve current scores for all players
for (int i = 0; i < numPlayers(); ++i) for (int i = 0; i < numPlayers(); ++i)
{ {
Int32 totalScore = 0; Int32 totalScore = 0;
@ -1235,18 +1254,35 @@ bool Console::parseAdresses(Int32& variation, Int32& player, Int32 scores[])
{ {
Int32 score; Int32 score;
if (!(buf >> std::hex >> addr)) if (!(addrBuf >> std::hex >> addr))
return false; return false;
totalScore *= (format == 'b') ? 100 : 256; totalScore *= (scoreFormat == 'b') ? 100 : 256;
score = mySystem->peek(addr); score = mySystem->peek(addr);
if (format == 'b') if (scoreFormat == 'b')
score = (score >> 4) * 10 + score % 16; score = (score >> 4) * 10 + score % 16;
totalScore += score; totalScore += score;
} }
scores[i] = totalScore * scoreMult; scores[i] = totalScore * scoreMult;
} }
// 3. retrieve current variation (0..255)
if (!(addrBuf >> std::hex >> addr))
return false;
variation = mySystem->peek(addr);
if (varFormat == 'b')
variation = (variation >> 4) * 10 + variation % 16;
variation += varAdd;
variation = std::min(variation, numVariations());
// 4. retrieve current player (0..3)
if (!(addrBuf >> std::hex >> addr))
return false;
player = mySystem->peek(addr);
player = std::min(player, numPlayers() - 1);
return true; return true;
} }

View File

@ -258,6 +258,7 @@ void Properties::print() const
<< get(PropType::Display_PPBlend) << "|" << get(PropType::Display_PPBlend) << "|"
<< get(PropType::Cart_Players) << "|" << get(PropType::Cart_Players) << "|"
<< get(PropType::Cart_Variations) << "|" << get(PropType::Cart_Variations) << "|"
<< get(PropType::Cart_Formats) << "|"
<< get(PropType::Cart_Addresses) << get(PropType::Cart_Addresses)
<< endl; << endl;
} }
@ -306,6 +307,7 @@ void Properties::printHeader()
<< "Display_PPBlend|" << "Display_PPBlend|"
<< "Cart_Players|" << "Cart_Players|"
<< "Cart_Variations|" << "Cart_Variations|"
<< "Cart_Formats|"
<< "Cart_Addresses" << "Cart_Addresses"
<< endl; << endl;
} }
@ -336,6 +338,7 @@ std::array<string, Properties::NUM_PROPS> Properties::ourDefaultProperties =
"0", // Display.PPBlend "0", // Display.PPBlend
"1", // Cart.Players "1", // Cart.Players
"1", // Cart.Variations "1", // Cart.Variations
"", // Cart.Formats,
"" // Cart.Addresses "" // Cart.Addresses
}; };
@ -365,5 +368,6 @@ std::array<string, Properties::NUM_PROPS> Properties::ourPropertyNames =
"Display.PPBlend", "Display.PPBlend",
"Cart.Players", "Cart.Players",
"Cart.Variations", "Cart.Variations",
"Cart.Formats",
"Cart.Addresses" "Cart.Addresses"
}; };

View File

@ -44,6 +44,7 @@ enum class PropType : uInt8 {
Display_PPBlend, Display_PPBlend,
Cart_Players, Cart_Players,
Cart_Variations, Cart_Variations,
Cart_Formats,
Cart_Addresses, Cart_Addresses,
NumTypes NumTypes
}; };

View File

@ -213,7 +213,7 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "6" "Cart.Variations" "6"
"Cart.Addresses" "b,0,dd,e6,b,1,2,cc,ce,cd,cf" "Cart.Addresses" "cc,ce,cd,cf,dd,e6"
"" ""
"Cart.MD5" "02cee0b140d2f1a1efcfb1d482a5c392" "Cart.MD5" "02cee0b140d2f1a1efcfb1d482a5c392"
@ -645,7 +645,7 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "6" "Cart.Variations" "6"
"Cart.Addresses" "b,0,dd,e6,b,1,2,cc,ce,cd,cf" "Cart.Addresses" "cc,ce,cd,cf,dd,e6"
"" ""
"Cart.MD5" "082fdc8bd47fef01482ce5883c4ffdb8" "Cart.MD5" "082fdc8bd47fef01482ce5883c4ffdb8"
@ -1511,7 +1511,8 @@
"Cart.Name" "Chopper Command (1982) (Activision) (PAL)" "Cart.Name" "Chopper Command (1982) (Activision) (PAL)"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "11bcf5c752088b5aaf86d6c7a6a11e8d" "Cart.MD5" "11bcf5c752088b5aaf86d6c7a6a11e8d"
@ -2222,7 +2223,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "19b3b807507653516985ba95da92499d" "Cart.MD5" "19b3b807507653516985ba95da92499d"
@ -2396,7 +2398,8 @@
"Cart.Note" "2600 Screen Search Console" "Cart.Note" "2600 Screen Search Console"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "1cafa9f3f9a2fce4af6e4b85a2bbd254" "Cart.MD5" "1cafa9f3f9a2fce4af6e4b85a2bbd254"
@ -3157,7 +3160,8 @@
"Cart.Name" "Chopper Command (1982) (Activision) (16K)" "Cart.Name" "Chopper Command (1982) (Activision) (16K)"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "25e73efb9a6edf119114718bd2f646ba" "Cart.MD5" "25e73efb9a6edf119114718bd2f646ba"
@ -3575,7 +3579,8 @@
"Cart.Note" "AKA Chopper Command" "Cart.Note" "AKA Chopper Command"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "2a9f9001540c55a302befd8e9d54b47b" "Cart.MD5" "2a9f9001540c55a302befd8e9d54b47b"
@ -3902,7 +3907,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "2dcf9ce486393cd36ca0928cd53b96cb" "Cart.MD5" "2dcf9ce486393cd36ca0928cd53b96cb"
@ -4290,7 +4296,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "3276c777cbe97cdd2b4a63ffc16b7151" "Cart.MD5" "3276c777cbe97cdd2b4a63ffc16b7151"
@ -4758,7 +4765,8 @@
"Display.Format" "PAL" "Display.Format" "PAL"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "384db97670817103dd8c0bbdef132445" "Cart.MD5" "384db97670817103dd8c0bbdef132445"
@ -5131,7 +5139,8 @@
"Cart.Note" "AKA Chopper Command" "Cart.Note" "AKA Chopper Command"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "3c7a7b3a0a7e6319b2fa0f923ef6c9af" "Cart.MD5" "3c7a7b3a0a7e6319b2fa0f923ef6c9af"
@ -5307,7 +5316,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "3e5ca1afaa27c5da3c54c9942fec528b" "Cart.MD5" "3e5ca1afaa27c5da3c54c9942fec528b"
@ -6062,7 +6072,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "47cd61f83457a0890de381e478f5cf5f" "Cart.MD5" "47cd61f83457a0890de381e478f5cf5f"
@ -6922,7 +6933,8 @@
"Cart.Name" "Chopper Command (1982) (Activision) (8K)" "Cart.Name" "Chopper Command (1982) (Activision) (8K)"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "521f4dd1eb84a09b2b19959a41839aad" "Cart.MD5" "521f4dd1eb84a09b2b19959a41839aad"
@ -7723,7 +7735,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "5bcc83677d68f7ef74c1b4a0697ba2a8" "Cart.MD5" "5bcc83677d68f7ef74c1b4a0697ba2a8"
@ -7760,7 +7773,8 @@
"Cart.Note" "AKA Chopper Command" "Cart.Note" "AKA Chopper Command"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "5c19f6da638c4c7c1f98d09e63df43e4" "Cart.MD5" "5c19f6da638c4c7c1f98d09e63df43e4"
@ -9510,7 +9524,8 @@
"Cart.Note" "AKA Chopper Command" "Cart.Note" "AKA Chopper Command"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "6fc27a9233fc69d28d3f190b4ff80f03" "Cart.MD5" "6fc27a9233fc69d28d3f190b4ff80f03"
@ -11421,7 +11436,8 @@
"Cart.Name" "Chopper Command (1983) (CCE)" "Cart.Name" "Chopper Command (1983) (CCE)"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "85b1bca93e69f13905107cc802a02470" "Cart.MD5" "85b1bca93e69f13905107cc802a02470"
@ -11985,7 +12001,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "8d00a38f4c8f8800f1c237215ac243fc" "Cart.MD5" "8d00a38f4c8f8800f1c237215ac243fc"
@ -12027,7 +12044,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "8e0ab801b1705a740b476b7f588c6d16" "Cart.MD5" "8e0ab801b1705a740b476b7f588c6d16"
@ -14134,7 +14152,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "a97733b0852ee3096300102cb0689175" "Cart.MD5" "a97733b0852ee3096300102cb0689175"
@ -14819,7 +14838,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "b23ebf427713dd0198b7ef47dbd07ef4" "Cart.MD5" "b23ebf427713dd0198b7ef47dbd07ef4"
@ -15396,7 +15416,8 @@
"Cart.Name" "Chopper Command (SuperVision) (PAL)" "Cart.Name" "Chopper Command (SuperVision) (PAL)"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "ba257438f8a78862a9e014d831143690" "Cart.MD5" "ba257438f8a78862a9e014d831143690"
@ -15472,7 +15493,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "bb579404924c40ca378b4aff6ccf302d" "Cart.MD5" "bb579404924c40ca378b4aff6ccf302d"
@ -15911,7 +15933,8 @@
"Cart.Name" "Chopper Command (1982) (Activision)" "Cart.Name" "Chopper Command (1982) (Activision)"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "c1e6e4e7ef5f146388a090f1c469a2fa" "Cart.MD5" "c1e6e4e7ef5f146388a090f1c469a2fa"
@ -16025,7 +16048,8 @@
"Cart.Rarity" "Hack" "Cart.Rarity" "Hack"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "c2c8eb642765137bb82b83a65232961f" "Cart.MD5" "c2c8eb642765137bb82b83a65232961f"
@ -16862,7 +16886,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "cccfe9e9a11b1dad04beba46eefb7351" "Cart.MD5" "cccfe9e9a11b1dad04beba46eefb7351"
@ -17680,7 +17705,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "d573089534ca596e64efef474be7b6bc" "Cart.MD5" "d573089534ca596e64efef474be7b6bc"
@ -18071,7 +18097,8 @@
"Cart.Name" "Chopper Command (1983) (Digitel)" "Cart.Name" "Chopper Command (1983) (Digitel)"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "da732c57697ad7d7af414998fa527e75" "Cart.MD5" "da732c57697ad7d7af414998fa527e75"
@ -18370,7 +18397,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "dd8a2124d4eda200df715c698a6ea887" "Cart.MD5" "dd8a2124d4eda200df715c698a6ea887"
@ -18529,7 +18557,8 @@
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "66" "Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1" "Cart.Formats" "2,10,b,h,1"
"Cart.Addresses" "bd,be,c0,c1,80,c7"
"" ""
"Cart.MD5" "df5cc5cccdc140eb7107f5b8adfacda1" "Cart.MD5" "df5cc5cccdc140eb7107f5b8adfacda1"
@ -20814,7 +20843,8 @@
"Cart.Rarity" "Hack" "Cart.Rarity" "Hack"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "f8b2a6a4d73ebff10d805a9b59041986" "Cart.MD5" "f8b2a6a4d73ebff10d805a9b59041986"
@ -21481,7 +21511,8 @@
"Cart.Name" "Chopper Command (1983) (CCE) [a]" "Cart.Name" "Chopper Command (1983) (CCE) [a]"
"Cart.Players" "2" "Cart.Players" "2"
"Cart.Variations" "4" "Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1" "Cart.Formats" "3,1,b,b,1"
"Cart.Addresses" "ec,ee,f0,ed,ef,f1,e0,eb"
"" ""
"Cart.MD5" "ffe51989ba6da2c6ae5a12d277862e16" "Cart.MD5" "ffe51989ba6da2c6ae5a12d277862e16"