initial commit

defines properties for Asteroids, Chopper Command and Frooger
add new properties parser
add reading score etc. from RAM
add test hotkeys (CTRL+SHIFT S/V) display current score and variation
This commit is contained in:
thrust26 2020-02-07 23:08:44 +01:00
parent ae43b33c7b
commit 4f100b0fce
9 changed files with 296 additions and 6 deletions

View File

@ -505,6 +505,8 @@ PhysicalKeyboardHandler::EventMappingArray PhysicalKeyboardHandler::DefaultCommo
{Event::Unwind1Menu, KBDK_RIGHT, MOD3}, {Event::Unwind1Menu, KBDK_RIGHT, MOD3},
{Event::Unwind10Menu, KBDK_RIGHT, KBDM_SHIFT | MOD3}, {Event::Unwind10Menu, KBDK_RIGHT, KBDM_SHIFT | MOD3},
{Event::UnwindAllMenu, KBDK_UP, MOD3}, {Event::UnwindAllMenu, KBDK_UP, MOD3},
{Event::ShowScore, KBDK_S, KBDM_SHIFT | KBDM_CTRL},
{Event::ShowVariation, KBDK_V, KBDM_SHIFT | KBDM_CTRL},
#if defined(RETRON77) #if defined(RETRON77)
{Event::ConsoleColorToggle, KBDK_F4}, // back ("COLOR","B/W") {Event::ConsoleColorToggle, KBDK_F4}, // back ("COLOR","B/W")

View File

@ -1145,6 +1145,144 @@ void Console::stateChanged(EventHandlerState state)
// only the CompuMate used to care about state changes // only the CompuMate used to care about state changes
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Int32 Console::numVariations()
{
string numVariations = myProperties.get(PropType::Cart_Variations);
return (numVariations == EmptyString) ? 1 : std::min(stoi(numVariations), 256);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Int32 Console::numPlayers()
{
string numPlayers = myProperties.get(PropType::Cart_Players);
return (numPlayers == EmptyString) ? 1 : std::min(stoi(numPlayers), 4);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool Console::parseAdresses(Int32& variation, Int32& player, Int32 scores[])
{
// format:
// b, ; variation format (BCD, HEX)
// 0, ; add to variation
// 80, ; variation address in hex
// 81, ; player address in hex
// b, ; score format (BCD, HEX)
// 10, ; score multiplier
// 2, ; score addresses per player
// n-times 82, ; score addresses player 1 in hex, high to low
// n-times 83, ; score addresses player 2 in hex, high to low
// ...
/*
Frogger
"Cart.Players" "2"
"Cart.Variations" "6"
"Cart.Addresses" "b,0,dd,e6,b,1,2,cc,ce,cd,cf"
Chopper Command:
"Cart.Variations" "4"
"Cart.Players" "2"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
Asteroids
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
*/
string addresses = myProperties.get(PropType::Cart_Addresses);
char format;
Int16 addr;
Int32 varAdd, numScoreAddr, scoreMult;
// Since istringstream swallows whitespace, we have to make the
// delimiters be spaces
std::replace(addresses.begin(), addresses.end(), ',', ' ');
std::replace(addresses.begin(), addresses.end(), '|', ' ');
istringstream buf(addresses);
// 1. retrieve current variation (0..255)
if (!(buf >> format && buf >> varAdd && buf >> std::hex >> addr))
return false;
variation = mySystem->peek(addr);
if (format == 'b')
variation = (variation >> 4) * 10 + variation % 16;
variation += varAdd;
variation = std::min(variation, numVariations());
// 2. retrieve current player (0..3)
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;
for (int i = 0; i < numPlayers(); ++i)
{
Int32 totalScore = 0;
for (int j = 0; j < numScoreAddr; ++j)
{
Int32 score;
if (!(buf >> std::hex >> addr))
return false;
totalScore *= (format == 'b') ? 100 : 256;
score = mySystem->peek(addr);
if (format == 'b')
score = (score >> 4) * 10 + score % 16;
totalScore += score;
}
scores[i] = totalScore * scoreMult;
}
return true;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Int32 Console::variation()
{
Int32 variation, player, scores[4];
if (parseAdresses(variation, player, scores))
return variation;
return -1;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Int32 Console::player()
{
Int32 variation, player, scores[4];
if (parseAdresses(variation, player, scores))
return player;
return -1;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Int32 Console::score()
{
Int32 variation, player, scores[4];
if (parseAdresses(variation, player, scores))
return scores[std::min(player, Int32(3))];
return -1;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PaletteArray Console::ourNTSCPalette = { PaletteArray Console::ourNTSCPalette = {
0x000000, 0, 0x4a4a4a, 0, 0x6f6f6f, 0, 0x8e8e8e, 0, 0x000000, 0, 0x4a4a4a, 0, 0x6f6f6f, 0, 0x8e8e8e, 0,

View File

@ -326,6 +326,16 @@ class Console : public Serializable, public ConsoleIO
*/ */
void setTIAProperties(); void setTIAProperties();
/*
Methods for returning high score related variables
Return -1 if undefined
*/
Int32 numVariations();
Int32 numPlayers();
Int32 variation();
Int32 player();
Int32 score();
private: private:
/** /**
* Define console timing based on current display format * Define console timing based on current display format
@ -442,6 +452,8 @@ class Console : public Serializable, public ConsoleIO
// The audio settings // The audio settings
AudioSettings& myAudioSettings; AudioSettings& myAudioSettings;
bool parseAdresses(Int32& variation, Int32& player, Int32 scores[]);
// Table of RGB values for NTSC, PAL and SECAM // Table of RGB values for NTSC, PAL and SECAM
static PaletteArray ourNTSCPalette; static PaletteArray ourNTSCPalette;
static PaletteArray ourPALPalette; static PaletteArray ourPALPalette;

View File

@ -120,6 +120,7 @@ class Event
ToggleFrameStats, ToggleSAPortOrder, ExitGame, ToggleFrameStats, ToggleSAPortOrder, ExitGame,
// add new events from here to avoid that user remapped events get overwritten // add new events from here to avoid that user remapped events get overwritten
ShowScore, ShowVariation,
LastType LastType
}; };

View File

@ -717,6 +717,24 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated)
if(pressed && !repeated) myOSystem.frameBuffer().tiaSurface().saveSnapShot(); if(pressed && !repeated) myOSystem.frameBuffer().tiaSurface().saveSnapShot();
return; return;
case Event::ShowScore:
if (pressed)
{
ostringstream msg;
msg << "Score: " << myOSystem.console().score();
myOSystem.frameBuffer().showMessage(msg.str());
}
return;
case Event::ShowVariation:
if (pressed)
{
ostringstream msg;
msg << "Variation: " << myOSystem.console().variation();
myOSystem.frameBuffer().showMessage(msg.str());
}
return;
case Event::ExitMode: case Event::ExitMode:
// Special handling for Escape key // Special handling for Escape key
// Basically, exit whichever mode we're currently in // Basically, exit whichever mode we're currently in
@ -1987,7 +2005,9 @@ EventHandler::EmulActionList EventHandler::ourEmulActionList = { {
{ Event::Combo13, "Combo 13", "" }, { Event::Combo13, "Combo 13", "" },
{ Event::Combo14, "Combo 14", "" }, { Event::Combo14, "Combo 14", "" },
{ Event::Combo15, "Combo 15", "" }, { Event::Combo15, "Combo 15", "" },
{ Event::Combo16, "Combo 16", "" } { Event::Combo16, "Combo 16", "" },
{ Event::ShowScore, "Display current score", "" },
{ Event::ShowVariation, "Display current variation", "" },
} }; } };
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -2026,6 +2046,7 @@ const Event::EventSet EventHandler::MiscEvents = {
// Event::MouseButtonLeftValue, Event::MouseButtonRightValue, // Event::MouseButtonLeftValue, Event::MouseButtonRightValue,
Event::HandleMouseControl, Event::ToggleGrabMouse, Event::HandleMouseControl, Event::ToggleGrabMouse,
Event::ToggleSAPortOrder, Event::ToggleSAPortOrder,
Event::ShowScore, Event::ShowVariation,
}; };
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -468,7 +468,7 @@ class EventHandler
#else #else
PNG_SIZE = 0, PNG_SIZE = 0,
#endif #endif
EMUL_ACTIONLIST_SIZE = 144 + PNG_SIZE + COMBO_SIZE, EMUL_ACTIONLIST_SIZE = 144 + 2 + PNG_SIZE + COMBO_SIZE,
MENU_ACTIONLIST_SIZE = 18 MENU_ACTIONLIST_SIZE = 18
; ;

View File

@ -255,7 +255,10 @@ void Properties::print() const
<< get(PropType::Display_Format) << "|" << get(PropType::Display_Format) << "|"
<< get(PropType::Display_VCenter) << "|" << get(PropType::Display_VCenter) << "|"
<< get(PropType::Display_Phosphor) << "|" << get(PropType::Display_Phosphor) << "|"
<< get(PropType::Display_PPBlend) << get(PropType::Display_PPBlend) << "|"
<< get(PropType::Cart_Players) << "|"
<< get(PropType::Cart_Variations) << "|"
<< get(PropType::Cart_Addresses)
<< endl; << endl;
} }
@ -300,7 +303,10 @@ void Properties::printHeader()
<< "Display_Format|" << "Display_Format|"
<< "Display_VCenter|" << "Display_VCenter|"
<< "Display_Phosphor|" << "Display_Phosphor|"
<< "Display_PPBlend" << "Display_PPBlend|"
<< "Cart_Players|"
<< "Cart_Variations|"
<< "Cart_Addresses"
<< endl; << endl;
} }
@ -327,7 +333,10 @@ std::array<string, Properties::NUM_PROPS> Properties::ourDefaultProperties =
"AUTO", // Display.Format "AUTO", // Display.Format
"0", // Display.VCenter "0", // Display.VCenter
"NO", // Display.Phosphor "NO", // Display.Phosphor
"0" // Display.PPBlend "0", // Display.PPBlend
"1", // Cart.Players
"1", // Cart.Variations
"" // Cart.Addresses
}; };
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -353,5 +362,8 @@ std::array<string, Properties::NUM_PROPS> Properties::ourPropertyNames =
"Display.Format", "Display.Format",
"Display.VCenter", "Display.VCenter",
"Display.Phosphor", "Display.Phosphor",
"Display.PPBlend" "Display.PPBlend",
"Cart.Players",
"Cart.Variations",
"Cart.Addresses"
}; };

View File

@ -42,6 +42,9 @@ enum class PropType : uInt8 {
Display_VCenter, Display_VCenter,
Display_Phosphor, Display_Phosphor,
Display_PPBlend, Display_PPBlend,
Cart_Players,
Cart_Variations,
Cart_Addresses,
NumTypes NumTypes
}; };

View File

@ -210,6 +210,10 @@
"Cart.Manufacturer" "Parker Brothers, Ed English, David Lamkins" "Cart.Manufacturer" "Parker Brothers, Ed English, David Lamkins"
"Cart.ModelNo" "931502" "Cart.ModelNo" "931502"
"Cart.Name" "Frogger (1982) (Parker Bros) (PAL)" "Cart.Name" "Frogger (1982) (Parker Bros) (PAL)"
"Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "6"
"Cart.Addresses" "b,0,dd,e6,b,1,2,cc,ce,cd,cf"
"" ""
"Cart.MD5" "02cee0b140d2f1a1efcfb1d482a5c392" "Cart.MD5" "02cee0b140d2f1a1efcfb1d482a5c392"
@ -638,6 +642,10 @@
"Cart.Manufacturer" "Parker Brothers, Ed English, David Lamkins" "Cart.Manufacturer" "Parker Brothers, Ed English, David Lamkins"
"Cart.ModelNo" "PB5300" "Cart.ModelNo" "PB5300"
"Cart.Name" "Frogger (1982) (Parker Bros)" "Cart.Name" "Frogger (1982) (Parker Bros)"
"Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "6"
"Cart.Addresses" "b,0,dd,e6,b,1,2,cc,ce,cd,cf"
"" ""
"Cart.MD5" "082fdc8bd47fef01482ce5883c4ffdb8" "Cart.MD5" "082fdc8bd47fef01482ce5883c4ffdb8"
@ -1501,6 +1509,9 @@
"Cart.Manufacturer" "Activision, Bob Whitehead - Ariola" "Cart.Manufacturer" "Activision, Bob Whitehead - Ariola"
"Cart.ModelNo" "EAX-015, EAX-015-04I - 711 015-725" "Cart.ModelNo" "EAX-015, EAX-015-04I - 711 015-725"
"Cart.Name" "Chopper Command (1982) (Activision) (PAL)" "Cart.Name" "Chopper Command (1982) (Activision) (PAL)"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "11bcf5c752088b5aaf86d6c7a6a11e8d" "Cart.MD5" "11bcf5c752088b5aaf86d6c7a6a11e8d"
@ -2209,6 +2220,9 @@
"Cart.ModelNo" "CX2649, CX2649P" "Cart.ModelNo" "CX2649, CX2649P"
"Cart.Name" "Asteroids (1981) (Atari) (PAL) [a2]" "Cart.Name" "Asteroids (1981) (Atari) (PAL) [a2]"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "19b3b807507653516985ba95da92499d" "Cart.MD5" "19b3b807507653516985ba95da92499d"
@ -2380,6 +2394,9 @@
"Cart.Manufacturer" "Jone Yuan Telephonic Enterprise Co" "Cart.Manufacturer" "Jone Yuan Telephonic Enterprise Co"
"Cart.Name" "Chopper Command (Jone Yuan)" "Cart.Name" "Chopper Command (Jone Yuan)"
"Cart.Note" "2600 Screen Search Console" "Cart.Note" "2600 Screen Search Console"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "1cafa9f3f9a2fce4af6e4b85a2bbd254" "Cart.MD5" "1cafa9f3f9a2fce4af6e4b85a2bbd254"
@ -3138,6 +3155,9 @@
"Cart.Manufacturer" "Activision, Bob Whitehead" "Cart.Manufacturer" "Activision, Bob Whitehead"
"Cart.ModelNo" "AX-015, AX-015-04" "Cart.ModelNo" "AX-015, AX-015-04"
"Cart.Name" "Chopper Command (1982) (Activision) (16K)" "Cart.Name" "Chopper Command (1982) (Activision) (16K)"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "25e73efb9a6edf119114718bd2f646ba" "Cart.MD5" "25e73efb9a6edf119114718bd2f646ba"
@ -3553,6 +3573,9 @@
"Cart.ModelNo" "PGP213" "Cart.ModelNo" "PGP213"
"Cart.Name" "Spy Vs. Spy (4 Game in One) (1983) (BitCorp) (PAL)" "Cart.Name" "Spy Vs. Spy (4 Game in One) (1983) (BitCorp) (PAL)"
"Cart.Note" "AKA Chopper Command" "Cart.Note" "AKA Chopper Command"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "2a9f9001540c55a302befd8e9d54b47b" "Cart.MD5" "2a9f9001540c55a302befd8e9d54b47b"
@ -3877,6 +3900,9 @@
"Controller.Right" "DRIVING" "Controller.Right" "DRIVING"
"Controller.MouseAxis" "58" "Controller.MouseAxis" "58"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "2dcf9ce486393cd36ca0928cd53b96cb" "Cart.MD5" "2dcf9ce486393cd36ca0928cd53b96cb"
@ -4262,6 +4288,9 @@
"Cart.Note" "Hack of Asteroids" "Cart.Note" "Hack of Asteroids"
"Cart.Rarity" "Hack" "Cart.Rarity" "Hack"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "3276c777cbe97cdd2b4a63ffc16b7151" "Cart.MD5" "3276c777cbe97cdd2b4a63ffc16b7151"
@ -4727,6 +4756,9 @@
"Cart.Name" "Pyramid War (1983) (Rainbow Vision) (PAL) [a2]" "Cart.Name" "Pyramid War (1983) (Rainbow Vision) (PAL) [a2]"
"Cart.Note" "AKA Chopper Command" "Cart.Note" "AKA Chopper Command"
"Display.Format" "PAL" "Display.Format" "PAL"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "384db97670817103dd8c0bbdef132445" "Cart.MD5" "384db97670817103dd8c0bbdef132445"
@ -5097,6 +5129,9 @@
"Cart.Manufacturer" "Dismac" "Cart.Manufacturer" "Dismac"
"Cart.Name" "Comando Suicida (Dismac)" "Cart.Name" "Comando Suicida (Dismac)"
"Cart.Note" "AKA Chopper Command" "Cart.Note" "AKA Chopper Command"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "3c7a7b3a0a7e6319b2fa0f923ef6c9af" "Cart.MD5" "3c7a7b3a0a7e6319b2fa0f923ef6c9af"
@ -5270,6 +5305,9 @@
"Cart.Note" "Genesis controller (C is hyperspace)" "Cart.Note" "Genesis controller (C is hyperspace)"
"Cart.Rarity" "Hack of Asteroids" "Cart.Rarity" "Hack of Asteroids"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "3e5ca1afaa27c5da3c54c9942fec528b" "Cart.MD5" "3e5ca1afaa27c5da3c54c9942fec528b"
@ -6022,6 +6060,9 @@
"Cart.Note" "Hack of Asteroids" "Cart.Note" "Hack of Asteroids"
"Cart.Rarity" "Hack" "Cart.Rarity" "Hack"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "47cd61f83457a0890de381e478f5cf5f" "Cart.MD5" "47cd61f83457a0890de381e478f5cf5f"
@ -6879,6 +6920,9 @@
"Cart.Manufacturer" "Activision, Bob Whitehead" "Cart.Manufacturer" "Activision, Bob Whitehead"
"Cart.ModelNo" "AX-015, AX-015-04" "Cart.ModelNo" "AX-015, AX-015-04"
"Cart.Name" "Chopper Command (1982) (Activision) (8K)" "Cart.Name" "Chopper Command (1982) (Activision) (8K)"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "521f4dd1eb84a09b2b19959a41839aad" "Cart.MD5" "521f4dd1eb84a09b2b19959a41839aad"
@ -7677,6 +7721,9 @@
"Cart.Note" "Hack of Asteroids" "Cart.Note" "Hack of Asteroids"
"Cart.Rarity" "Hack" "Cart.Rarity" "Hack"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "5bcc83677d68f7ef74c1b4a0697ba2a8" "Cart.MD5" "5bcc83677d68f7ef74c1b4a0697ba2a8"
@ -7711,6 +7758,9 @@
"Cart.ModelNo" "SS-004" "Cart.ModelNo" "SS-004"
"Cart.Name" "Pyramid War (1983) (Rainbow Vision) (PAL) [a1]" "Cart.Name" "Pyramid War (1983) (Rainbow Vision) (PAL) [a1]"
"Cart.Note" "AKA Chopper Command" "Cart.Note" "AKA Chopper Command"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "5c19f6da638c4c7c1f98d09e63df43e4" "Cart.MD5" "5c19f6da638c4c7c1f98d09e63df43e4"
@ -9458,6 +9508,9 @@
"Cart.ModelNo" "SS-004" "Cart.ModelNo" "SS-004"
"Cart.Name" "Pyramid War (1983) (Rainbow Vision) (PAL)" "Cart.Name" "Pyramid War (1983) (Rainbow Vision) (PAL)"
"Cart.Note" "AKA Chopper Command" "Cart.Note" "AKA Chopper Command"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "6fc27a9233fc69d28d3f190b4ff80f03" "Cart.MD5" "6fc27a9233fc69d28d3f190b4ff80f03"
@ -11366,6 +11419,9 @@
"Cart.Manufacturer" "CCE" "Cart.Manufacturer" "CCE"
"Cart.ModelNo" "C-827" "Cart.ModelNo" "C-827"
"Cart.Name" "Chopper Command (1983) (CCE)" "Cart.Name" "Chopper Command (1983) (CCE)"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "85b1bca93e69f13905107cc802a02470" "Cart.MD5" "85b1bca93e69f13905107cc802a02470"
@ -11927,6 +11983,9 @@
"Cart.Name" "Asteroids (1981) (Atari) (PAL)" "Cart.Name" "Asteroids (1981) (Atari) (PAL)"
"Cart.Rarity" "Common" "Cart.Rarity" "Common"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "8d00a38f4c8f8800f1c237215ac243fc" "Cart.MD5" "8d00a38f4c8f8800f1c237215ac243fc"
@ -11966,6 +12025,9 @@
"Cart.Note" "Hack of Asteroids" "Cart.Note" "Hack of Asteroids"
"Cart.Rarity" "Hack" "Cart.Rarity" "Hack"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "8e0ab801b1705a740b476b7f588c6d16" "Cart.MD5" "8e0ab801b1705a740b476b7f588c6d16"
@ -14070,6 +14132,9 @@
"Cart.ModelNo" "CX2649, CX2649P" "Cart.ModelNo" "CX2649, CX2649P"
"Cart.Name" "Asteroids (1981) (Atari) (PAL) [a1]" "Cart.Name" "Asteroids (1981) (Atari) (PAL) [a1]"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "a97733b0852ee3096300102cb0689175" "Cart.MD5" "a97733b0852ee3096300102cb0689175"
@ -14752,6 +14817,9 @@
"Cart.Name" "Asteroids (1981) (Atari) [a1]" "Cart.Name" "Asteroids (1981) (Atari) [a1]"
"Cart.Rarity" "Common" "Cart.Rarity" "Common"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "b23ebf427713dd0198b7ef47dbd07ef4" "Cart.MD5" "b23ebf427713dd0198b7ef47dbd07ef4"
@ -15326,6 +15394,9 @@
"Cart.Manufacturer" "SuperVision" "Cart.Manufacturer" "SuperVision"
"Cart.ModelNo" "405, 427, 806, 808, 813, 816" "Cart.ModelNo" "405, 427, 806, 808, 813, 816"
"Cart.Name" "Chopper Command (SuperVision) (PAL)" "Cart.Name" "Chopper Command (SuperVision) (PAL)"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "ba257438f8a78862a9e014d831143690" "Cart.MD5" "ba257438f8a78862a9e014d831143690"
@ -15399,6 +15470,9 @@
"Cart.ModelNo" "CX2649, CX2649P" "Cart.ModelNo" "CX2649, CX2649P"
"Cart.Name" "Asteroids (1981) (Atari) (PAL) [no copyright]" "Cart.Name" "Asteroids (1981) (Atari) (PAL) [no copyright]"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "bb579404924c40ca378b4aff6ccf302d" "Cart.MD5" "bb579404924c40ca378b4aff6ccf302d"
@ -15835,6 +15909,9 @@
"Cart.Manufacturer" "Activision, Bob Whitehead" "Cart.Manufacturer" "Activision, Bob Whitehead"
"Cart.ModelNo" "AX-015, AX-015-04" "Cart.ModelNo" "AX-015, AX-015-04"
"Cart.Name" "Chopper Command (1982) (Activision)" "Cart.Name" "Chopper Command (1982) (Activision)"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "c1e6e4e7ef5f146388a090f1c469a2fa" "Cart.MD5" "c1e6e4e7ef5f146388a090f1c469a2fa"
@ -15946,6 +16023,9 @@
"Cart.MD5" "c2c7a11717e255593e54d0acaf653ee5" "Cart.MD5" "c2c7a11717e255593e54d0acaf653ee5"
"Cart.Name" "Chopper Command (208 in 1) (Unknown) (PAL) (Hack)" "Cart.Name" "Chopper Command (208 in 1) (Unknown) (PAL) (Hack)"
"Cart.Rarity" "Hack" "Cart.Rarity" "Hack"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "c2c8eb642765137bb82b83a65232961f" "Cart.MD5" "c2c8eb642765137bb82b83a65232961f"
@ -16780,6 +16860,9 @@
"Cart.Name" "Asteroids (1981) (Atari) [no copyright]" "Cart.Name" "Asteroids (1981) (Atari) [no copyright]"
"Cart.Rarity" "Common" "Cart.Rarity" "Common"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "cccfe9e9a11b1dad04beba46eefb7351" "Cart.MD5" "cccfe9e9a11b1dad04beba46eefb7351"
@ -17595,6 +17678,9 @@
"Cart.ModelNo" "CX2649, 49-75163" "Cart.ModelNo" "CX2649, 49-75163"
"Cart.Name" "Asteroids (1981) (Atari) [a2]" "Cart.Name" "Asteroids (1981) (Atari) [a2]"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "d573089534ca596e64efef474be7b6bc" "Cart.MD5" "d573089534ca596e64efef474be7b6bc"
@ -17983,6 +18069,9 @@
"Cart.MD5" "da66d75e4b47fab99733529743f86f4f" "Cart.MD5" "da66d75e4b47fab99733529743f86f4f"
"Cart.Manufacturer" "Digitel" "Cart.Manufacturer" "Digitel"
"Cart.Name" "Chopper Command (1983) (Digitel)" "Cart.Name" "Chopper Command (1983) (Digitel)"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "da732c57697ad7d7af414998fa527e75" "Cart.MD5" "da732c57697ad7d7af414998fa527e75"
@ -18279,6 +18368,9 @@
"Cart.ModelNo" "CX2649, 49-75163" "Cart.ModelNo" "CX2649, 49-75163"
"Cart.Name" "Asteroids (1981) (Atari)" "Cart.Name" "Asteroids (1981) (Atari)"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "dd8a2124d4eda200df715c698a6ea887" "Cart.MD5" "dd8a2124d4eda200df715c698a6ea887"
@ -18435,6 +18527,9 @@
"Cart.Note" "Hack of Asteroids" "Cart.Note" "Hack of Asteroids"
"Cart.Rarity" "Hack" "Cart.Rarity" "Hack"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"Cart.Players" "2"
"Cart.Variations" "66"
"Cart.Addresses" "h,1,80,c7,b,10,2,bd,be,c0,c1"
"" ""
"Cart.MD5" "df5cc5cccdc140eb7107f5b8adfacda1" "Cart.MD5" "df5cc5cccdc140eb7107f5b8adfacda1"
@ -20717,6 +20812,9 @@
"Cart.Name" "Chopper Command (Jone Yuan) (Hack)" "Cart.Name" "Chopper Command (Jone Yuan) (Hack)"
"Cart.Note" "2600 Screen Search Console" "Cart.Note" "2600 Screen Search Console"
"Cart.Rarity" "Hack" "Cart.Rarity" "Hack"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "f8b2a6a4d73ebff10d805a9b59041986" "Cart.MD5" "f8b2a6a4d73ebff10d805a9b59041986"
@ -21381,6 +21479,9 @@
"Cart.Manufacturer" "CCE" "Cart.Manufacturer" "CCE"
"Cart.ModelNo" "C-827" "Cart.ModelNo" "C-827"
"Cart.Name" "Chopper Command (1983) (CCE) [a]" "Cart.Name" "Chopper Command (1983) (CCE) [a]"
"Cart.Players" "2"
"Cart.Variations" "4"
"Cart.Addresses" "b,1,e0,eb,b,1,3,ec,ee,f0,ed,ef,f1"
"" ""
"Cart.MD5" "ffe51989ba6da2c6ae5a12d277862e16" "Cart.MD5" "ffe51989ba6da2c6ae5a12d277862e16"